/* =========================================================
   Daewoong & Megumi Wedding Invitation
   深緑×生成りのボタニカル基調／ハロウィンはワンポイント
   モバイルファースト（〜767px基準、768px〜でPC調整）
   ========================================================= */

:root{
  --green:#2F4A3C;
  --green-dark:#22362C;
  --bg:#F7F3EA;
  --bg-alt:#EFE9DB;
  --pumpkin:#C8742F;
  --gold:#A98E5B;
  --white:#FDFCF8;
  --serif-en:"Cormorant Garamond",serif;
  --serif-ja:"Shippori Mincho",serif;
  --sans-ja:"Zen Kaku Gothic New",sans-serif;
  --sec-pad:96px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:64px}
body{background:var(--bg);color:var(--green-dark);font-family:var(--sans-ja);font-size:15px;line-height:1.9;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
main{overflow-x:clip}

.pc-only{display:none}
.sp-only{display:inline}
@media(min-width:768px){
  .pc-only{display:inline}
  .sp-only{display:none}
  :root{--sec-pad:128px}
}

/* ---------- オープニング ---------- */
.opening{position:fixed;inset:0;z-index:100;background:var(--green-dark);display:flex;align-items:center;justify-content:center;transition:opacity .8s ease,visibility .8s}
.opening.is-done{opacity:0;visibility:hidden;pointer-events:none}
.opening__video{width:100%;height:100%;object-fit:cover}
.opening__anim{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px}
.opening__arch{width:min(70vw,260px);opacity:0;animation:op-fade 1.2s ease .3s forwards}
.opening__line{opacity:0;animation:op-fade 1.2s ease forwards}
.opening__line--en{font-family:var(--serif-en);font-size:clamp(30px,8vw,52px);color:var(--bg);letter-spacing:.06em;margin-top:20px;animation-delay:1s}
.opening__line--en .op-amp{font-style:italic;color:var(--pumpkin)}
.opening__line--ja{font-family:var(--serif-ja);font-size:13px;letter-spacing:.3em;color:var(--gold);margin-top:18px;animation-delay:1.9s}
.opening__line--inv{font-family:var(--serif-en);font-size:11px;letter-spacing:.5em;text-transform:uppercase;color:var(--bg);opacity:0;margin-top:30px;animation-delay:2.7s}
@keyframes op-fade{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.opening__skip{position:absolute;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));background:rgba(247,243,234,.14);color:var(--bg);border:1px solid rgba(247,243,234,.45);font-family:var(--sans-ja);font-size:12px;letter-spacing:.14em;padding:10px 18px;border-radius:3px;cursor:pointer;transition:background .3s}
.opening__skip:hover{background:rgba(247,243,234,.3)}

/* ---------- ナビ ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;background:rgba(247,243,234,.92);backdrop-filter:blur(8px);border-bottom:1px solid rgba(169,142,91,.3);transform:translateY(-110%);transition:transform .45s ease}
.nav.is-visible{transform:none}
.nav__logo{font-family:var(--serif-en);font-size:17px;letter-spacing:.14em;color:var(--green);text-decoration:none;white-space:nowrap}
.nav__links{display:flex;gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.nav__links a{font-size:12px;letter-spacing:.06em;text-decoration:none;padding:7px 10px;border-radius:3px;white-space:nowrap;transition:color .3s}
.nav__links a:hover{color:var(--pumpkin)}
.nav__rsvp{background:var(--green);color:var(--bg) !important}
.nav__rsvp:hover{background:var(--pumpkin)}
@media(min-width:768px){
  .nav{padding:12px 32px}
  .nav__links a{font-size:13px;padding:8px 14px}
}

/* ---------- Hero ---------- */
.hero{min-height:100svh;display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px 20px 56px;position:relative;overflow:hidden}
.hero::before,.hero::after{content:"";position:absolute;width:300px;height:300px;background-repeat:no-repeat;background-size:contain;opacity:.4;pointer-events:none;z-index:0}
.hero::before{top:-40px;left:-70px;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><g fill="none" stroke="%232F4A3C" stroke-width="1.2" opacity="0.35"><path d="M10 190 C 60 140, 40 80, 90 30"/><path d="M30 195 C 80 150, 70 90, 120 45"/><ellipse cx="55" cy="120" rx="10" ry="4" transform="rotate(-50 55 120)" fill="%232F4A3C" opacity="0.25" stroke="none"/><ellipse cx="80" cy="80" rx="10" ry="4" transform="rotate(-45 80 80)" fill="%232F4A3C" opacity="0.25" stroke="none"/></g></svg>')}
.hero::after{bottom:-50px;right:-70px;transform:rotate(180deg);background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><g fill="none" stroke="%232F4A3C" stroke-width="1.2" opacity="0.35"><path d="M10 190 C 60 140, 40 80, 90 30"/><path d="M30 195 C 80 150, 70 90, 120 45"/><ellipse cx="55" cy="120" rx="10" ry="4" transform="rotate(-50 55 120)" fill="%232F4A3C" opacity="0.25" stroke="none"/><ellipse cx="80" cy="80" rx="10" ry="4" transform="rotate(-45 80 80)" fill="%232F4A3C" opacity="0.25" stroke="none"/></g></svg>')}
@media(min-width:1024px){
  .hero::before,.hero::after{width:420px;height:420px}
}

/* -- 写真エリア -- */
.hero__photo-wrap{position:relative;z-index:1;width:100%;max-width:380px;margin:28px auto 0}
.hero__photo-frame{position:relative;aspect-ratio:3/4;border-radius:4px;overflow:hidden;box-shadow:0 8px 40px rgba(47,74,60,.18)}
/* 写真表示時の共通スタイル */
.hero__photo-frame img{width:100%;height:100%;object-fit:cover;display:block}
/* プレースホルダー（写真が来るまで） */
.hero__photo-placeholder{width:100%;height:100%;background:linear-gradient(165deg,#c8d6c0 0%,#a8bfa0 30%,#8ba382 60%,#6b8c62 100%);display:flex;align-items:center;justify-content:center;font-family:var(--serif-en);font-size:15px;letter-spacing:.3em;text-transform:uppercase;color:rgba(247,243,234,.8);line-height:2;text-align:center}
/* 写真の出現アニメーション（clip-pathマスクが開く演出） */
.hero__photo-frame{clip-path:inset(8% 8% 8% 8%);transition:clip-path 1.6s cubic-bezier(.25,.46,.45,.94)}
.hero__photo-frame.is-revealed{clip-path:inset(0 0 0 0)}

/* ボタニカルフレーム装飾（写真の角に重なる葉） */
.hero__frame-deco{position:absolute;width:80px;height:80px;z-index:2;pointer-events:none;opacity:0;transition:opacity 1s ease 1.2s}
.hero__frame-deco.is-revealed{opacity:1}
.hero__frame-deco--tl{top:-6px;left:-6px}
.hero__frame-deco--br{bottom:-6px;right:-6px}

@media(min-width:768px){
  .hero{flex-direction:row;gap:56px;padding:80px 48px 80px;justify-content:center;min-height:100svh;text-align:left}
  .hero__photo-wrap{max-width:400px;margin:0;flex-shrink:0}
  .hero__text{max-width:440px}
  .hero__text .eyebrow{text-align:left}
  .hero__frame-deco{width:100px;height:100px}
}
@media(min-width:1200px){
  .hero{gap:80px;padding:100px 72px 100px}
  .hero__photo-wrap{max-width:460px}
}

/* -- テキストエリア -- */
.hero__text{position:relative;z-index:1;margin-top:36px}
@media(min-width:768px){.hero__text{margin-top:0}}

.eyebrow{font-family:var(--serif-en);font-size:13px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);margin-bottom:22px}
.arch{width:min(68vw,260px);margin-bottom:20px}
@media(min-width:768px){.arch{margin-left:0}}
.names{font-family:var(--serif-en);font-weight:400;font-size:clamp(38px,10vw,68px);line-height:1.12;letter-spacing:.04em;color:var(--green)}
.names .amp{display:block;font-style:italic;font-size:.42em;color:var(--pumpkin);margin:.14em 0}
.sub-ja{font-family:var(--serif-ja);font-size:14px;letter-spacing:.22em;margin-top:22px}
.date-block{margin-top:28px;display:flex;align-items:center;gap:16px;font-family:var(--serif-en)}
@media(min-width:768px){.date-block{justify-content:flex-start}}
.date-block .rule{width:44px;height:1px;background:var(--gold)}
.date-main{font-size:clamp(19px,5vw,25px);letter-spacing:.22em;color:var(--green)}
.date-day{font-size:.62em;letter-spacing:.3em}
.venue{margin-top:12px;font-size:12.5px;letter-spacing:.14em}
.venue small{display:block;margin-top:5px;letter-spacing:.1em;opacity:.75;font-size:11px}
.countdown{margin-top:32px;display:flex;gap:22px;font-family:var(--serif-en)}
.countdown div{display:flex;flex-direction:column;align-items:center}
.countdown b{font-size:clamp(24px,6.5vw,34px);font-weight:500;color:var(--green)}
.countdown span{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-top:4px}
.scroll-note{margin-top:36px;font-size:10px;letter-spacing:.34em;color:var(--gold);font-family:var(--serif-en)}
@media(min-width:768px){
  .names .amp{display:inline;margin:0 .16em}
  .sub-ja{font-size:16px}
  .scroll-note{display:none}
}

/* ---------- 共通セクション ---------- */
.section{padding:var(--sec-pad) 24px}
.section--alt{background:var(--bg-alt)}
.section--green{background:var(--green-dark);color:var(--bg)}
.container{max-width:960px;margin:0 auto}
.container--narrow{max-width:640px}
.sec-en{font-family:var(--serif-en);font-size:12px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);text-align:center}
.sec-en--light{color:var(--gold)}
.sec-ttl{font-family:var(--serif-ja);font-weight:500;font-size:clamp(22px,5.6vw,30px);letter-spacing:.18em;text-align:center;margin:10px 0 48px;color:var(--green)}
.sec-ttl--light{color:var(--bg)}
.sec-ttl::after{content:"";display:block;width:36px;height:1px;background:var(--gold);margin:22px auto 0}

/* CTAボタン */
.cta{display:inline-block;background:var(--green);color:var(--bg);text-decoration:none;font-size:14px;letter-spacing:.24em;padding:16px 42px;border-radius:4px;border:none;cursor:pointer;font-family:var(--sans-ja);transition:background .3s}
.cta:hover{background:var(--pumpkin)}
.cta--submit{display:block;width:100%;margin-top:28px}
.hero .cta{margin-top:44px}

/* ---------- Greeting ---------- */
.greeting-body{font-family:var(--serif-ja);text-align:center;font-size:14.5px;letter-spacing:.1em;line-height:2.35}
.greeting-body p{margin-bottom:2.2em}
.greeting-sign{margin-top:3em}
.greeting-sign span{display:block;font-family:var(--serif-en);font-size:20px;letter-spacing:.1em;margin-top:14px;color:var(--green)}
@media(min-width:768px){.greeting-body{font-size:16px}}

/* ---------- Profile ---------- */
.profile-grid{display:grid;gap:48px;max-width:760px;margin:0 auto}
@media(min-width:768px){.profile-grid{grid-template-columns:1fr 1fr;gap:56px}}
.profile-card{text-align:center}
.profile-photo{aspect-ratio:4/5;max-width:280px;margin:0 auto;background:linear-gradient(160deg,#E4DCC8,#D5CBAF);border:1px solid var(--gold);border-radius:2px;display:flex;align-items:center;justify-content:center;position:relative}
.profile-photo::after{content:"";position:absolute;inset:8px;border:1px solid rgba(169,142,91,.5)}
.profile-photo__note{font-family:var(--serif-en);font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);line-height:2}
.profile-name{font-family:var(--serif-en);font-weight:500;font-size:26px;letter-spacing:.08em;color:var(--green);margin-top:24px}
.profile-name span{display:block;font-family:var(--sans-ja);font-size:11px;letter-spacing:.3em;color:var(--gold);margin-top:4px}
.profile-text{margin-top:14px;font-size:13.5px;text-align:left}
.profile-note{text-align:center;font-size:11.5px;color:var(--gold);margin-top:40px}

/* ---------- Information ---------- */
.info-date{text-align:center;margin-bottom:40px}
.info-date__en{font-family:var(--serif-en);font-size:clamp(26px,7vw,36px);letter-spacing:.16em;color:var(--green)}
.info-date__en span{font-size:.5em;letter-spacing:.3em;font-style:italic;color:var(--pumpkin)}
.info-date__ja{font-family:var(--serif-ja);font-size:13px;letter-spacing:.26em;margin-top:8px}
.timeline{max-width:400px;margin:0 auto;border-top:1px solid rgba(169,142,91,.45)}
.timeline__row{display:flex;align-items:baseline;gap:24px;padding:20px 8px;border-bottom:1px solid rgba(169,142,91,.45)}
.timeline__row dt{font-family:var(--serif-en);font-size:22px;letter-spacing:.1em;color:var(--green);min-width:74px}
.timeline__row dd{font-size:14.5px;letter-spacing:.1em}
.badge-tbd{display:inline-block;font-size:10px;letter-spacing:.08em;color:var(--pumpkin);border:1px solid currentColor;border-radius:3px;padding:1px 7px;margin-left:8px;vertical-align:middle}
.info-venue{text-align:center;margin-top:44px}
.info-venue__name{font-family:var(--serif-en);font-size:19px;letter-spacing:.14em;color:var(--green)}
.info-venue__sub{font-size:13.5px;margin-top:12px;text-align:left}
@media(min-width:768px){.info-venue__sub{text-align:center}}

/* ---------- Access ---------- */
.access-card{background:var(--white);border:1px solid rgba(169,142,91,.4);border-radius:3px;padding:32px 24px;text-align:center}
.access-name{font-family:var(--serif-ja);font-size:17px;letter-spacing:.14em;color:var(--green)}
.access-addr{font-size:13.5px;margin:14px 0 22px;letter-spacing:.06em}
.btn-line{display:inline-block;font-size:13px;letter-spacing:.16em;text-decoration:none;color:var(--green);border:1px solid var(--green);border-radius:3px;padding:12px 30px;transition:all .3s}
.btn-line:hover{background:var(--green);color:var(--bg)}
.access-list{list-style:none;margin-top:36px;border-top:1px solid rgba(169,142,91,.45)}
.access-list li{padding:14px 6px;border-bottom:1px solid rgba(169,142,91,.45);font-size:13.5px;letter-spacing:.04em}
.access-list b{color:var(--green);font-weight:700}
.access-note{font-size:12px;color:rgba(34,54,44,.75);margin-top:24px}

/* ---------- フォーム ---------- */
.rsvp-lead{text-align:center;font-size:14.5px;letter-spacing:.08em;margin-bottom:36px}
.rsvp-lead b{color:var(--pumpkin);font-weight:700}
.demo-banner{max-width:640px;margin:0 auto 28px;background:#FBEFDF;border:1px solid var(--pumpkin);color:#8A4E1D;font-size:12px;line-height:1.7;padding:12px 16px;border-radius:3px}
.form{background:var(--white);border:1px solid rgba(169,142,91,.4);border-radius:3px;padding:32px 22px}
.form--card{max-width:640px;margin:0 auto 56px}
@media(min-width:768px){.form{padding:44px 48px}}
.form-row{margin-bottom:24px}
.form-row label,.form-label{display:block;font-size:13px;font-weight:700;letter-spacing:.1em;margin-bottom:8px;color:var(--green)}
.form-row label em,.form-label em{font-style:normal;font-size:10px;color:#fff;background:var(--pumpkin);border-radius:2px;padding:1px 6px;margin-left:8px;vertical-align:middle;letter-spacing:.06em}
input[type="text"],input[type="email"],input[type="tel"],textarea{width:100%;font-family:var(--sans-ja);font-size:16px;color:var(--green-dark);background:var(--bg);border:1px solid rgba(169,142,91,.55);border-radius:3px;padding:12px 14px;transition:border-color .3s}
input[type="text"]:focus,input[type="email"]:focus,input[type="tel"]:focus,textarea:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}
input::placeholder,textarea::placeholder{color:rgba(34,54,44,.38)}
textarea{resize:vertical}
.radio-group{display:flex;gap:12px}
.radio-card{flex:1;position:relative;cursor:pointer}
.radio-card input{position:absolute;opacity:0}
.radio-card span{display:block;text-align:center;font-family:var(--serif-ja);font-size:15px;letter-spacing:.2em;padding:16px 8px;border:1px solid rgba(169,142,91,.55);border-radius:3px;background:var(--bg);transition:all .25s}
.radio-card input:checked + span{background:var(--green);border-color:var(--green);color:var(--bg)}
.radio-card input:focus-visible + span{outline:2px solid var(--pumpkin);outline-offset:2px}
.check-row{display:flex;gap:10px;align-items:flex-start;font-size:12px;line-height:1.8;cursor:pointer;margin-top:4px}
.check-row input{margin-top:5px;accent-color:var(--green);width:16px;height:16px;flex-shrink:0}
.form-status{margin-top:16px;font-size:13px;text-align:center;letter-spacing:.06em;min-height:1.5em}
.form-status.is-ok{color:var(--green);font-weight:700}
.form-status.is-err{color:#A63A2A;font-weight:700}

/* ---------- Message Board ---------- */
.board-lead,.music-lead{text-align:center;font-size:13.5px;letter-spacing:.06em;margin-bottom:44px}
.board-list{display:grid;gap:18px;max-width:760px;margin:0 auto}
@media(min-width:768px){.board-list{grid-template-columns:1fr 1fr;gap:22px}}
.board-card{background:rgba(247,243,234,.07);border:1px solid rgba(169,142,91,.5);border-radius:3px;padding:22px 20px;opacity:0;transform:translateY(10px);animation:card-in .7s ease forwards}
@keyframes card-in{to{opacity:1;transform:none}}
.board-card__msg{font-size:13.5px;line-height:2;word-break:break-word}
.board-card__name{font-family:var(--serif-en);font-size:13px;letter-spacing:.14em;color:var(--gold);margin-top:14px;text-align:right}
.board-card__name::before{content:"— "}
.board-empty{text-align:center;font-size:13px;color:var(--gold);letter-spacing:.08em}
.board-empty--dark{color:var(--gold)}

/* ---------- Music Request ---------- */
.music-list{display:grid;gap:18px;max-width:760px;margin:0 auto}
@media(min-width:768px){.music-list{grid-template-columns:1fr 1fr;gap:22px}}
.music-card{background:var(--white);border:1px solid rgba(169,142,91,.45);border-left:3px solid var(--pumpkin);border-radius:3px;padding:20px;opacity:0;transform:translateY(10px);animation:card-in .7s ease forwards}
.music-card__song{font-weight:700;font-size:14.5px;color:var(--green);letter-spacing:.04em}
.music-card__song::before{content:"♪";color:var(--pumpkin);margin-right:8px}
.music-card__episode{font-size:12.5px;margin-top:8px;line-height:1.9;word-break:break-word}
.music-card__handle{font-size:11.5px;color:var(--gold);margin-top:10px;text-align:right}
.music-card__handle::before{content:"リクエスト："}

/* ---------- Footer ---------- */
.footer{background:var(--green-dark);color:var(--bg);text-align:center;padding:72px 24px calc(56px + env(safe-area-inset-bottom))}
.footer__mark{width:52px;margin:0 auto 18px}
.footer__names{font-family:var(--serif-en);font-size:24px;letter-spacing:.1em}
.footer__date{font-family:var(--serif-en);font-size:12px;letter-spacing:.28em;color:var(--gold);margin-top:10px}
.footer__note{font-size:11px;opacity:.65;margin-top:26px;letter-spacing:.08em}

/* ---------- スクロール表示アニメーション ---------- */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .9s ease,transform .9s ease}
.reveal.is-in{opacity:1;transform:none}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  .board-card,.music-card{animation:none;opacity:1;transform:none}
  .opening{display:none}
}

/* ---------- 言語切り替え（JP | KR） ---------- */
.lang-switch{position:fixed;top:10px;right:12px;z-index:60;display:flex;align-items:center;gap:2px;background:rgba(247,243,234,.9);backdrop-filter:blur(6px);border:1px solid rgba(169,142,91,.45);border-radius:999px;padding:4px 6px;font-family:var(--serif-en)}
.lang-switch__btn{background:none;border:none;cursor:pointer;font-family:var(--serif-en);font-size:12px;letter-spacing:.14em;color:var(--green-dark);opacity:.55;padding:5px 9px;border-radius:999px;transition:all .25s}
.lang-switch__btn.is-active{opacity:1;background:var(--green);color:var(--bg)}
.lang-switch__btn:not(.is-active):hover{opacity:.9;color:var(--pumpkin)}
.lang-switch__btn:focus-visible{outline:2px solid var(--pumpkin);outline-offset:2px}
.lang-switch__sep{color:var(--gold);font-size:11px}
.nav{padding-right:118px}
@media(min-width:768px){
  .lang-switch{top:12px;right:20px}
  .nav{padding-right:140px}
}

/* ---------- 韓国語表示時の調整 ---------- */
html[lang="ko"] body{font-family:"Noto Sans KR",var(--sans-ja)}
html[lang="ko"] .sec-ttl,
html[lang="ko"] .greeting-body,
html[lang="ko"] .sub-ja,
html[lang="ko"] .opening__line--ja,
html[lang="ko"] .info-date__ja,
html[lang="ko"] .access-name,
html[lang="ko"] .radio-card span{font-family:"Noto Serif KR",var(--serif-ja)}
html[lang="ko"] .sub-ja{letter-spacing:.14em}
html[lang="ko"] .sec-ttl{letter-spacing:.1em}
html[lang="ko"] .greeting-body{letter-spacing:.02em;line-height:2.2}
html[lang="ko"] .opening__line--ja{letter-spacing:.16em}
html[lang="ko"] input,
html[lang="ko"] textarea,
html[lang="ko"] .cta,
html[lang="ko"] .nav__links a,
html[lang="ko"] .lang-switch__btn{font-family:"Noto Sans KR",var(--sans-ja)}

/* ---------- Gift（ご祝儀・口座案内） ---------- */
.gift-lead{text-align:center;font-family:var(--serif-ja);font-size:14.5px;letter-spacing:.08em;line-height:2.2;margin-bottom:40px}
html[lang="ko"] .gift-lead{font-family:"Noto Serif KR",var(--serif-ja);letter-spacing:.02em}
.gift-cards{display:grid;gap:20px;max-width:520px;margin:0 auto}
@media(min-width:768px){.gift-cards{grid-template-columns:1fr 1fr;max-width:640px;gap:24px}}
.gift-card{background:var(--white);border:1px solid rgba(169,142,91,.4);border-radius:3px;padding:28px 22px;text-align:center}
.gift-card__label{font-family:var(--serif-ja);font-size:13px;letter-spacing:.22em;color:var(--gold);margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid rgba(169,142,91,.35)}
html[lang="ko"] .gift-card__label{font-family:"Noto Serif KR",var(--serif-ja);letter-spacing:.08em}
.gift-card__info{text-align:left}
.gift-card__info div{display:flex;gap:14px;padding:8px 0;border-bottom:1px solid rgba(169,142,91,.2)}
.gift-card__info div:last-child{border-bottom:none}
.gift-card__info dt{font-size:12px;letter-spacing:.06em;color:var(--gold);min-width:68px;flex-shrink:0;padding-top:1px}
.gift-card__info dd{font-size:14.5px;letter-spacing:.04em;color:var(--green-dark);font-weight:500;word-break:break-all}
.gift-note{text-align:center;font-size:12px;color:rgba(34,54,44,.7);margin-top:32px;line-height:2}

/* ---------- ファイルアップロード & 3列ラジオ ---------- */
.radio-group--3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.file-label{display:inline-block;cursor:pointer;font-size:13px;letter-spacing:.12em;color:var(--green);border:1px dashed var(--gold);border-radius:3px;padding:14px 24px;text-align:center;transition:all .3s;margin-top:6px}
.file-label:hover{background:var(--bg-alt);border-color:var(--green)}
.form-hint{font-size:12px;color:rgba(34,54,44,.65);margin:-4px 0 8px;line-height:1.7}
.photo-preview{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.photo-preview__item{position:relative;width:72px;height:72px;border-radius:3px;overflow:hidden;border:1px solid rgba(169,142,91,.4)}
.photo-preview__item img{width:100%;height:100%;object-fit:cover}
.photo-preview__remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:rgba(34,54,44,.8);color:#fff;border:none;font-size:12px;line-height:20px;text-align:center;cursor:pointer;padding:0}

/* ---------- 追加ゲスト ---------- */
.check-row--toggle{margin-bottom:12px}
.extra-guests{margin-top:8px}
.extra-guest-card{background:var(--bg);border:1px solid rgba(169,142,91,.4);border-radius:3px;padding:18px 16px;margin-bottom:14px;position:relative}
.extra-guest-card__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.extra-guest-card__title{font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--green)}
.extra-guest-card__remove{background:none;border:none;cursor:pointer;font-size:18px;color:rgba(34,54,44,.5);padding:2px 6px;line-height:1;transition:color .2s}
.extra-guest-card__remove:hover{color:#A63A2A}
.extra-guest-card .form-row{margin-bottom:14px}
.extra-guest-card .form-row:last-child{margin-bottom:0}
.extra-guest-card .form-row label{font-size:12px}
.extra-guest-card input,.extra-guest-card textarea{font-size:15px;padding:10px 12px}
.extra-guest-row{display:grid;grid-template-columns:1fr 80px;gap:10px}
@media(min-width:768px){.extra-guest-row{grid-template-columns:1fr 100px}}
.btn-add{display:block;width:100%;background:none;border:1px dashed var(--gold);border-radius:3px;padding:12px;font-family:var(--sans-ja);font-size:13px;letter-spacing:.1em;color:var(--green);cursor:pointer;transition:all .25s}
.btn-add:hover{background:var(--bg-alt);border-color:var(--green)}
html[lang="ko"] .btn-add{font-family:"Noto Sans KR",var(--sans-ja)}

/* ---------- Hero テキスト中央揃え ---------- */
.hero__text{display:flex;flex-direction:column;align-items:center}
