:root{
    --paper:#EDEBE2;        /* 한지 아이보리 */
    --paper-2:#F6F4EC;      /* 밝은 패널 */
    --paper-3:#E6E5D9;      /* 살짝 가라앉은 톤 */
    --mist:#E0E3D7;         /* 옅은 연녹빛 */
    --ink:#33322B;          /* 따뜻한 먹색 */
    --ink-soft:#6E6D60;     /* 흐린 먹색 */
    --ink-faint:#9A998C;
    --celadon:#8C9A86;      /* 청자/세이지 — 시그니처 */
    --celadon-deep:#5C6A53;
    --celadon-mute:#A7B3A0;
    --sand:#B29A71;         /* 가는 금빛 포인트 */
    --line:#D7D3C5;         /* 헤어라인 */
    --shadow:rgba(60,62,48,.12);
    --card-max:460px;
    --ease:cubic-bezier(.2,.74,.2,1);
    --font-disp:'Italiana','Cormorant Garamond',serif;
    --font-en:'EB Garamond',serif;
    --font-kr:'Gowun Batang','Nanum Myeongjo',serif;
    --font-ui:'Gowun Dodum','Apple SD Gothic Neo',sans-serif;
  }
  *{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
  html{scroll-behavior:smooth}
  body{
    font-family:var(--font-kr);
    color:var(--ink);
    background:#cfccc0;
    line-height:1.85;
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
  }
  img{display:block;width:100%;height:100%;object-fit:cover}

  /* ===== 카드 컨테이너 ===== */
  .frame{
    max-width:var(--card-max);
    margin:0 auto;
    background:var(--paper);
    position:relative;
    overflow:hidden;
    box-shadow:0 0 60px rgba(40,42,30,.35);
  }
  /* 종이 질감 (아주 옅게) */
  .frame::before{
    content:"";position:absolute;inset:0;pointer-events:none;z-index:1;mix-blend-mode:multiply;opacity:.5;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
  }

  /* ===== 시그니처: 인연의 덩굴 ===== */
  .vine{position:absolute;left:19px;top:0;bottom:0;width:30px;z-index:1;pointer-events:none}
  .vine-track{position:absolute;left:14px;top:0;bottom:0;width:1px;background:linear-gradient(var(--line),var(--line));opacity:.55}
  .vine-grow{position:absolute;left:14px;top:0;width:1px;height:0;
    background:linear-gradient(var(--celadon),var(--celadon-deep));
    box-shadow:0 0 6px rgba(140,154,134,.6)}
  .leaf{position:absolute;left:7px;width:15px;height:15px;opacity:0;transform:scale(.2) rotate(-30deg);
    transform-origin:50% 50%;transition:opacity .9s var(--ease),transform 1s var(--ease)}
  .leaf svg{width:100%;height:100%;display:block}
  .leaf.lit{opacity:.9;transform:scale(1) rotate(0)}
  .leaf:nth-child(even){left:9px;transform:scale(.2) rotate(30deg) scaleX(-1)}
  .leaf:nth-child(even).lit{transform:scale(1) rotate(0) scaleX(-1)}

  /* ===== 공통 텍스트 ===== */
  .eyebrow{font-family:var(--font-disp);letter-spacing:.42em;font-size:12px;color:var(--celadon-deep);
    text-transform:uppercase;text-indent:.42em;margin-bottom:10px}
  .eyebrow-kr{font-family:var(--font-ui);letter-spacing:.34em;font-size:11px;color:var(--ink-faint);
    text-indent:.34em;margin-bottom:30px}
  .ko-title{font-size:21px;letter-spacing:.02em;line-height:1.7}
  .en-num{font-family:var(--font-en);font-variant-numeric:lining-nums;letter-spacing:.04em}

  .section{position:relative;z-index:2;padding:58px 30px 60px 48px}
  .section.center{text-align:center}
  .divider{width:1px;height:46px;margin:0 auto;background:linear-gradient(var(--celadon),transparent)}
  .rule{width:46px;height:1px;margin:22px auto;opacity:.9;border-radius:1px;
    background:linear-gradient(90deg,rgba(178,154,113,0) 0%,var(--sand) 30%,#EBDDBE 50%,var(--sand) 70%,rgba(178,154,113,0) 100%);
    background-size:220% 100%;animation:ruleShimmer 5s ease-in-out infinite}
  @keyframes ruleShimmer{0%,100%{background-position:130% 0}50%{background-position:-30% 0}}

  /* ===== 리빌 애니메이션 ===== */
  .reveal{opacity:0;transform:translateY(24px);filter:blur(5px);
    transition:opacity 1.1s ease,transform 1.1s var(--ease),filter 1.1s ease}
  .reveal.in{opacity:1;transform:none;filter:none}
  .reveal.d1{transition-delay:.12s}.reveal.d2{transition-delay:.24s}
  .reveal.d3{transition-delay:.36s}.reveal.d4{transition-delay:.48s}
  .ph{position:relative;overflow:hidden;clip-path:inset(0 0 100% 0);
    transition:clip-path 1.25s var(--ease)}
  .ph.in{clip-path:inset(0 0 0 0)}
  .ph img{transform:scale(1.14);transition:transform 1.6s var(--ease)}
  .ph.in img{transform:scale(1)}

  /* ===== 배경음악 버튼 ===== */
  .bgm-dock{position:fixed;top:0;left:50%;transform:translateX(-50%);width:100%;max-width:var(--card-max);
    height:0;pointer-events:none;z-index:50}
  .bgm-btn{position:absolute;top:14px;right:14px;width:42px;height:42px;border-radius:50%;
    border:1px solid var(--line);background:rgba(246,244,236,.78);backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;
    cursor:pointer;pointer-events:auto;color:var(--celadon-deep);
    box-shadow:0 4px 14px rgba(40,42,30,.14);transition:background .3s ease,transform .25s ease}
  .bgm-btn:active{transform:scale(.92)}
  .bgm-btn svg{width:18px;height:18px}
  .bgm-btn .ic-on{display:none}
  .bgm-btn.playing .ic-on{display:block}
  .bgm-btn.playing .ic-off{display:none}
  .bgm-btn.playing::after{content:"";position:absolute;inset:-4px;border-radius:50%;
    border:1px solid var(--celadon);opacity:0;animation:bgmpulse 2.4s ease-out infinite}
  @keyframes bgmpulse{0%{transform:scale(.88);opacity:.55}100%{transform:scale(1.28);opacity:0}}

  /* ===== 오프닝 (입장 화면) ===== */
  body.intro-lock{overflow:hidden}
  .intro{position:fixed;inset:0;z-index:200;background:radial-gradient(120% 90% at 50% 18%,#F6F4EC 0%,var(--paper) 58%,#E4E2D6 100%);
    display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
    overflow:hidden;transition:opacity 1.2s var(--ease),transform 1.2s var(--ease);will-change:opacity,transform}
  .intro.gone{opacity:0;transform:scale(1.06);pointer-events:none}
  .intro-inner{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;padding:0 28px}
  .intro-kicker{font-family:var(--font-disp);letter-spacing:.46em;text-indent:.46em;font-size:12px;
    color:var(--celadon-deep);opacity:0;animation:introUp 1.4s var(--ease) .3s forwards}
  .intro-names{display:flex;flex-direction:column;gap:8px;margin-top:24px;font-family:var(--font-kr);
    font-size:30px;letter-spacing:.22em;text-indent:.22em;color:var(--ink);line-height:1.2}
  .intro-names span{opacity:0;animation:introUp 1.3s var(--ease) forwards}
  .intro-names span:first-child{animation-delay:.55s}
  .intro-names span:last-child{animation-delay:1.0s}
  .intro-names em{font-family:var(--font-en);font-style:italic;font-size:17px;color:var(--celadon-deep);
    letter-spacing:.02em;opacity:0;animation:introFade 1s ease .8s forwards}
  .intro-line{width:0;height:1px;background:linear-gradient(90deg,transparent,var(--celadon),transparent);
    margin:28px 0 18px;animation:introLine 1.3s var(--ease) 1.45s forwards}
  .intro-date{font-family:var(--font-en);font-size:14px;letter-spacing:.32em;text-indent:.32em;
    color:var(--ink-soft);opacity:0;animation:introUp 1.2s ease 1.65s forwards}
  .intro-skip{position:absolute;bottom:38px;font-family:var(--font-ui);font-size:11px;letter-spacing:.2em;
    color:var(--ink-faint);opacity:0;animation:introBlink 2.8s ease 2.2s infinite}
  .intro-petals{position:absolute;inset:0;z-index:2;pointer-events:none}
  /* 피어나는 고리 */
  .intro-ring{position:absolute;top:50%;left:50%;width:230px;height:230px;z-index:1;
    margin:-115px 0 0 -115px;border:1px solid var(--celadon-mute);border-radius:50%;
    opacity:0;animation:introRing 3.4s var(--ease) .2s infinite}
  @keyframes introRing{0%{opacity:0;transform:scale(.55)}28%{opacity:.5}100%{opacity:0;transform:scale(1.25)}}
  @keyframes introUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
  @keyframes introFade{to{opacity:1}}
  @keyframes introLine{to{width:64px}}
  @keyframes introBlink{0%,100%{opacity:0}50%{opacity:.85}}

  /* ===== 표지 ===== */
  .cover{position:relative;z-index:2;background:var(--paper);min-height:100svh;
    display:flex;flex-direction:column;justify-content:center;align-items:center;padding:46px 0 58px}
  .cover-kicker{font-family:var(--font-disp);letter-spacing:.44em;text-indent:.44em;font-size:12px;
    color:var(--celadon-deep);margin-bottom:26px;opacity:0;animation:fadeDown 1.4s ease .3s forwards}
  .cover-photo-full{width:100%;overflow:hidden;background:var(--mist);
    opacity:0;animation:coverFade 1.7s var(--ease) .5s forwards}
  .cover-photo-full img{width:100%;height:auto;display:block;transform-origin:50% 42%;
    animation:kenburns 20s ease-in-out 1.8s infinite alternate}
  @keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.08)}}
  .cover-caption{display:flex;flex-direction:column;align-items:center;text-align:center;padding:36px 30px 0}
  .cover-name-en{font-family:var(--font-en);font-style:italic;font-size:14.5px;letter-spacing:.05em;
    color:var(--ink-faint);margin-bottom:16px;opacity:0;animation:fadeUp 1.2s ease 1.0s forwards}
  .cover-names{display:flex;flex-direction:column;align-items:center;gap:9px;
    font-family:var(--font-kr);color:var(--ink);line-height:1.18}
  .cover-names .cn{font-size:32px;letter-spacing:.24em;text-indent:.24em;font-weight:400;
    opacity:0;animation:riseIn 1.3s var(--ease) 1.15s forwards}
  .cover-names .cn.b{animation-delay:1.45s}
  .cover-names .cn-amp{font-family:var(--font-en);font-style:italic;font-size:18px;color:var(--celadon-deep);
    letter-spacing:.02em;margin:1px 0;opacity:0;animation:fadeIn 1s ease 1.35s forwards}
  .cover-line{width:0;height:1px;background:var(--celadon);margin:22px 0 16px;
    animation:drawLine 1.3s var(--ease) 1.95s forwards}
  .cover-date{font-family:var(--font-en);font-size:15px;letter-spacing:.3em;text-indent:.3em;color:var(--ink-soft);
    opacity:0;animation:fadeUp 1.2s ease 2.1s forwards}
  .cover-venue{font-family:var(--font-ui);font-size:11.5px;letter-spacing:.14em;color:var(--ink-faint);
    margin-top:10px;opacity:0;animation:fadeUp 1.2s ease 2.3s forwards}
  .scrollcue{position:absolute;left:50%;bottom:18px;z-index:5;transform:translateX(-50%);
    opacity:0;animation:fadeIn 1s ease 2.9s forwards}
  .scrollcue span{display:block;width:1px;height:36px;margin:0 auto;
    background:linear-gradient(rgba(140,154,134,0),rgba(92,106,83,.85));
    animation:cueMove 2.1s ease-in-out infinite}
  @keyframes cueMove{0%{transform:scaleY(.2);transform-origin:top;opacity:.3}
    50%{transform:scaleY(1);opacity:1}100%{transform:scaleY(.2);transform-origin:bottom;opacity:.3}}
  @keyframes fadeDown{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
  @keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
  @keyframes fadeIn{to{opacity:1}}
  @keyframes coverFade{from{opacity:0;transform:translateY(12px) scale(1.012)}to{opacity:1;transform:none}}
  @keyframes riseIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
  @keyframes drawLine{to{width:54px}}

  /* 꽃잎 */
  .petals{position:absolute;inset:0;z-index:3;overflow:hidden;pointer-events:none}
  .petal{position:absolute;top:-8%;border-radius:60% 40% 60% 40%/60% 40% 60% 40%;
    background:rgba(245,243,233,.82);opacity:0;will-change:transform;
    animation:petalFall linear infinite}
  @keyframes petalFall{
    0%{opacity:0;transform:translateY(-10vh) translateX(0) rotate(0)}
    8%{opacity:.85}
    92%{opacity:.7}
    100%{opacity:0;transform:translateY(112vh) translateX(40px) rotate(360deg)}}

  /* ===== 인사말 ===== */
  .greet-line{font-family:var(--font-kr);font-size:19px;color:var(--ink);line-height:2.05;letter-spacing:.01em}
  .greet-body{font-size:15.5px;color:var(--ink-soft);line-height:2.25;letter-spacing:.005em;
    max-width:340px;margin:0 auto}
  .parents{display:inline-grid;grid-template-columns:auto auto;gap:14px 14px;margin-top:32px;
    font-family:var(--font-kr);font-size:15.5px;color:var(--ink);text-align:left;align-items:baseline}
  .parents .nm-line{letter-spacing:.02em;white-space:nowrap}
  .parents .nm{color:var(--celadon-deep)}
  .parents .rel{font-family:var(--font-ui);font-size:12px;color:var(--ink-faint);letter-spacing:.08em;
    white-space:nowrap;justify-self:start}
  .parents .child{font-weight:700}

  /* ===== 신랑신부 카드 ===== */
  .people{display:flex;flex-direction:column;gap:30px;margin-top:8px}
  .person{display:flex;flex-direction:column;align-items:center;text-align:center}
  .person .ph{width:166px;height:218px;border-radius:200px 200px 6px 6px;
    box-shadow:0 16px 34px var(--shadow);margin-bottom:22px}
  .person .role{font-family:var(--font-disp);letter-spacing:.3em;font-size:12px;
    color:var(--celadon-deep);text-indent:.3em;margin-bottom:4px}
  .person .pname{font-size:23px;letter-spacing:.05em}
  .person .pen{font-family:var(--font-en);font-style:italic;font-size:14px;color:var(--ink-faint);margin-top:2px}
  .person .pnote{font-size:13.5px;color:var(--ink-soft);margin-top:12px;line-height:1.9;max-width:230px}
  .contact{margin-top:16px;display:flex;gap:9px}
  .contact a{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:12px;
    letter-spacing:.04em;color:var(--celadon-deep);border:1px solid var(--line);background:var(--paper-2);
    padding:8px 15px;border-radius:40px;transition:all .35s ease}
  .contact a:active{background:var(--celadon);color:#fff;border-color:var(--celadon)}
  .contact svg{width:13px;height:13px}

  /* ===== 갤러리 (정렬형: 세로=2장 나란히 / 가로=한 줄 전체, 잘림 없음) ===== */
  .gallery{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:6px}
  .gcell{position:relative;overflow:hidden;border-radius:3px;background:var(--mist);cursor:pointer;
    aspect-ratio:2 / 3}                      /* 세로 사진: 한 칸(2:3) */
  .gcell.gwide{grid-column:1 / -1;aspect-ratio:3 / 2}  /* 가로 사진: 두 칸 전체(3:2) */
  .gcell img{display:block;width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
  .gcell:active img{transform:scale(1.03)}
  @keyframes gcellIn{from{opacity:0;transform:translateY(10px) scale(1.02)}to{opacity:1;transform:none}}
  .gcell.in img{animation:gcellIn .8s var(--ease)}
  .ghint{margin-top:20px;font-family:var(--font-ui);font-size:11px;letter-spacing:.16em;
    color:var(--ink-faint);text-align:center}

  /* 라이트박스 */
  .lightbox{position:fixed;inset:0;z-index:60;background:rgba(28,29,23,.94);
    display:none;align-items:center;justify-content:center;opacity:0;transition:opacity .4s ease}
  .lightbox.open{display:flex;opacity:1}
  .lb-img{max-width:92vw;max-height:82vh;width:auto;height:auto;border-radius:4px;
    box-shadow:0 20px 60px rgba(0,0,0,.5);transition:opacity .3s ease}
  .lb-img img{width:auto;height:auto;max-width:92vw;max-height:82vh;object-fit:contain}
  .lb-btn{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border:none;
    background:rgba(255,255,255,.08);color:#fff;border-radius:50%;font-size:20px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
  .lb-prev{left:14px}.lb-next{right:14px}
  .lb-close{position:absolute;top:18px;right:18px;width:42px;height:42px;border:none;
    background:rgba(255,255,255,.08);color:#fff;border-radius:50%;font-size:17px;cursor:pointer}
  .lb-count{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.8);
    font-family:var(--font-en);letter-spacing:.2em;font-size:13px}

  /* ===== 그날 (D-day & 캘린더) ===== */
  .day-wrap{background:var(--paper-2);border:1px solid var(--line);border-radius:8px;
    padding:34px 24px 30px;box-shadow:0 10px 30px var(--shadow)}
  .day-date{font-family:var(--font-en);font-size:30px;letter-spacing:.14em;color:var(--ink);text-indent:.14em}
  .day-sub{font-family:var(--font-ui);font-size:13px;letter-spacing:.14em;color:var(--ink-soft);margin-top:8px}
  .cal{margin:28px auto 4px;max-width:300px}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
  .cal-h{font-family:var(--font-ui);font-size:11px;color:var(--ink-faint);padding:7px 0;letter-spacing:.05em}
  .cal-h.sun{color:#b87f7f}
  .cal-d{font-family:var(--font-en);font-size:14.5px;color:var(--ink);padding:8px 0;position:relative}
  .cal-d.sun{color:#bb8585}
  .cal-d.off{color:transparent}
  .cal-mark{position:relative}
  .cal-mark .ring{position:absolute;inset:2px;border-radius:50%;border:1.5px solid var(--celadon);
    transform:scale(.4);opacity:0;transition:transform .9s var(--ease) .3s,opacity .7s ease .3s}
  .cal.in .cal-mark .ring{transform:scale(1);opacity:1}
  .cal-mark .num{position:relative;z-index:2;color:var(--celadon-deep);font-weight:500}
  .cal-mark .heart{position:absolute;top:-7px;left:50%;transform:translateX(-50%);font-size:8px;
    color:var(--celadon);opacity:0;transition:opacity .6s ease 1.1s;animation:beat 1.8s ease-in-out 1.4s infinite}
  .cal.in .cal-mark .heart{opacity:1}
  @keyframes beat{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.35)}}

  .countdown{display:flex;justify-content:center;gap:10px;margin-top:30px}
  .cd-unit{min-width:58px;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:13px 6px}
  .cd-num{font-family:var(--font-en);font-size:25px;color:var(--celadon-deep);line-height:1}
  .cd-lab{font-family:var(--font-ui);font-size:10px;letter-spacing:.1em;color:var(--ink-faint);margin-top:7px}
  .cd-msg{margin-top:20px;font-size:14.5px;color:var(--ink-soft)}
  .cd-msg b{color:var(--celadon-deep);font-weight:700;font-family:var(--font-kr)}

  /* ===== 오시는 길 ===== */
  .loc-card{background:var(--paper-2);border:1px solid var(--line);border-radius:8px;
    padding:30px 24px;box-shadow:0 10px 30px var(--shadow);text-align:center}
  .loc-name{font-size:19px;letter-spacing:.02em;color:var(--ink)}
  .loc-hall{font-family:var(--font-ui);font-size:12.5px;letter-spacing:.1em;color:var(--celadon-deep);margin-top:6px}
  .loc-route{margin:22px auto 4px;width:54px;height:54px}
  .loc-addr{font-size:14px;color:var(--ink-soft);margin-top:18px;line-height:1.8}
  .copybtn{margin-top:12px;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-ui);
    font-size:11.5px;letter-spacing:.05em;color:var(--ink-soft);background:transparent;border:1px solid var(--line);
    padding:7px 14px;border-radius:30px;cursor:pointer;transition:all .3s ease}
  .copybtn:active{background:var(--celadon);color:#fff;border-color:var(--celadon)}
  .copybtn svg{width:12px;height:12px}
  .navbtns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:24px}
  .navbtns a{font-family:var(--font-ui);font-size:12px;letter-spacing:.03em;color:var(--ink);
    background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:13px 4px;
    display:flex;flex-direction:column;align-items:center;gap:6px;transition:all .3s ease}
  .navbtns a:active{transform:translateY(1px);border-color:var(--celadon)}
  .navbtns .svc{width:23px;height:23px;display:block}
  .transit{margin-top:24px;text-align:left;border-top:1px solid var(--line);padding-top:20px}
  .transit .row{display:flex;gap:12px;font-size:13px;color:var(--ink-soft);line-height:1.7;margin-bottom:11px}
  .transit .row:last-child{margin-bottom:0}
  .transit .tag{flex:0 0 50px;font-family:var(--font-ui);font-size:11px;letter-spacing:.06em;
    color:var(--celadon-deep);padding-top:2px}
  .telbtn{margin-top:22px;display:inline-flex;align-items:center;gap:8px;font-family:var(--font-ui);
    font-size:13px;letter-spacing:.06em;color:var(--celadon-deep);border:1px solid var(--celadon-mute);
    background:var(--paper);padding:11px 22px;border-radius:40px;transition:all .3s ease}
  .telbtn:active{background:var(--celadon);color:#fff}

  /* ===== 마음 전하실 곳 ===== */
  .gift-note{font-size:14.5px;color:var(--ink-soft);line-height:2.05;max-width:320px;margin:0 auto 30px}
  .acc{max-width:340px;margin:0 auto;display:flex;flex-direction:column;gap:10px}
  .acc-item{border:1px solid var(--line);border-radius:8px;background:var(--paper-2);overflow:hidden}
  .acc-head{display:flex;align-items:center;justify-content:space-between;width:100%;border:none;
    background:transparent;padding:16px 20px;cursor:pointer;font-family:var(--font-kr);font-size:15px;
    color:var(--ink);letter-spacing:.04em}
  .acc-head .side{display:flex;align-items:center;gap:10px}
  .acc-head .dot{width:6px;height:6px;border-radius:50%;background:var(--celadon)}
  .acc-head .chev{font-family:var(--font-ui);font-size:12px;color:var(--ink-faint);transition:transform .4s ease}
  .acc-item.open .acc-head .chev{transform:rotate(180deg)}
  .acc-body{max-height:0;overflow:hidden;transition:max-height .45s var(--ease)}
  .acc-row{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;
    border-top:1px solid var(--line)}
  .acc-row .info{text-align:left}
  .acc-row .bank{font-family:var(--font-ui);font-size:11.5px;color:var(--ink-faint);letter-spacing:.04em}
  .acc-row .rel{display:inline-block;font-size:10px;color:var(--celadon-deep);background:var(--mist);
    border-radius:20px;padding:1px 8px;margin-right:7px;vertical-align:1px}
  .acc-row .acct{font-family:var(--font-en);font-size:15px;color:var(--ink);letter-spacing:.03em;margin-top:3px}
  .acc-row .holder{font-size:12.5px;color:var(--ink-soft);margin-top:3px}
  .acc-btns{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:90px}
  .acc-copy{font-family:var(--font-ui);font-size:11px;letter-spacing:.04em;color:var(--celadon-deep);
    border:1px solid var(--line);background:var(--paper);padding:7px 12px;border-radius:30px;cursor:pointer;
    transition:all .3s ease}
  .acc-copy:active{background:var(--celadon);color:#fff}
  /* 간편송금 버튼 (카카오페이 / 토스) */
  .acc-pay{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-family:var(--font-ui);
    font-size:11px;letter-spacing:.02em;padding:7px 12px;border-radius:30px;border:none;cursor:pointer;
    text-decoration:none;transition:transform .2s ease,filter .2s ease}
  .acc-pay:active{transform:translateY(1px);filter:brightness(.96)}
  .acc-pay svg{width:14px;height:14px;display:block}
  .acc-pay.kakao{background:#FEE500;color:#3B1E1E}
  .acc-pay.toss{background:#0064FF;color:#fff;font-weight:700}

  /* ===== 마무리 ===== */
  .closing{position:relative;height:96vh;height:96svh;min-height:560px;overflow:hidden;z-index:2}
  .closing-photo{position:absolute;inset:0;z-index:1}
  .closing-scrim{position:absolute;inset:0;z-index:2;
    background:linear-gradient(180deg,rgba(33,35,27,.34) 0%,rgba(33,35,27,.06) 30%,rgba(33,35,27,.34) 62%,rgba(31,33,25,.8) 100%)}
  .closing-inner{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;
    align-items:center;justify-content:flex-end;text-align:center;color:#F4F2EA;padding:40px 36px 56px;gap:15px}
  .closing-eyebrow{font-family:var(--font-disp);letter-spacing:.4em;font-size:12px;text-indent:.4em;
    color:rgba(244,242,234,.9)}
  .closing-msg{font-family:var(--font-kr);font-size:17px;line-height:2.1;letter-spacing:.02em;
    text-shadow:0 2px 16px rgba(20,22,16,.5);max-width:300px}
  .closing-names{font-family:var(--font-kr);font-size:27px;letter-spacing:.14em;text-indent:.14em;margin-top:8px;
    text-shadow:0 2px 16px rgba(20,22,16,.5)}
  .closing-date{font-family:var(--font-en);font-size:14px;letter-spacing:.28em;text-indent:.28em;
    color:rgba(244,242,234,.88)}

  /* ===== 푸터 ===== */
  .footer{background:var(--paper-3);text-align:center;padding:40px 30px 50px;position:relative;z-index:2}
  .footer-mark{font-family:var(--font-kr);font-size:15px;letter-spacing:.1em;color:var(--ink);text-indent:.1em}
  .footer-mark .hh{color:var(--celadon);font-size:13px;margin:0 5px}
  .footer-date{font-family:var(--font-en);font-size:12px;letter-spacing:.24em;color:var(--ink-faint);margin-top:8px}
  .share{margin-top:26px;display:flex;justify-content:center;gap:10px}
  .share button{font-family:var(--font-ui);font-size:12px;letter-spacing:.04em;color:var(--ink-soft);
    background:var(--paper-2);border:1px solid var(--line);padding:10px 18px;border-radius:40px;cursor:pointer;
    display:inline-flex;align-items:center;gap:7px;transition:all .3s ease}
  .share button:active{background:var(--celadon);color:#fff;border-color:var(--celadon)}
  .share svg{width:13px;height:13px}
  .footer-credit{margin-top:30px;font-family:var(--font-ui);font-size:10px;letter-spacing:.1em;color:var(--ink-faint)}

  .toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%) translateY(20px);z-index:80;
    background:rgba(40,42,32,.94);color:#F4F2EA;font-family:var(--font-ui);font-size:13px;letter-spacing:.04em;
    padding:12px 22px;border-radius:40px;opacity:0;transition:all .35s var(--ease);pointer-events:none}
  .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

  @media (max-width:430px){
    .section{padding:48px 22px 50px 42px}
    .cover-names .cn{font-size:28px}
    .person .ph{width:150px;height:198px}
    .people{gap:26px}
    .greet-body{font-size:15px}
  }

  @media (prefers-reduced-motion:reduce){
    *{animation-duration:.001s !important;animation-delay:0s !important;transition-duration:.001s !important}
    .reveal{opacity:1;transform:none;filter:none}
    .ph{clip-path:none}.ph img{transform:none}
    .petals{display:none}
    .cover-kicker,.cover-photo-full,.cover-name-en,.cover-names .cn,.cover-names .cn-amp,.cover-date,.cover-venue,.scrollcue{opacity:1}
    .cover-line{width:54px}
    .cover-photo-full img{animation:none;transform:none}
    .rule{animation:none;background:var(--sand);background-size:auto}
    .intro-ring{display:none}
    .intro-kicker,.intro-names span,.intro-names em,.intro-date{opacity:1}
    .intro-line{width:64px}
  }
