@charset "UTF-8";
:root{--ink:#4c382c;--ink-soft:#796758;--cocoa:#5b4031;--gold:#a18a65;--paper:#f2ecdf;--line:rgba(112,87,62,.22);--wash:rgba(255,253,245,.55);--serif:'Cormorant Garamond','Noto Serif TC',Georgia,serif;--cjk:'Noto Serif TC','Songti TC','PMingLiU',serif;--script:'Pinyon Script','Snell Roundhand','Apple Chancery','Brush Script MT',cursive;--sans:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans TC',sans-serif;--ease:cubic-bezier(.22,.8,.25,1);color-scheme:light;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:#e6ded1;color:var(--ink);font-family:var(--cjk);font-weight:400;line-height:1.7;height:100svh;overflow:hidden}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{color:inherit}button{cursor:pointer}a{color:inherit;text-underline-offset:4px}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--cocoa);outline-offset:5px}button{border:0}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}p,h1,h2,h3{margin:0}h1,h2,h3{font-weight:400}img{max-width:100%;display:block}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}
.language-button{position:fixed;top:max(33px,env(safe-area-inset-top));right:max(38px,calc((100vw - 1120px)/2 + 25px));z-index:100;height:40px;min-width:84px;padding:0 12px;border:1px solid rgba(91,64,49,.3);border-radius:3px;background:rgba(246,240,228,.84);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--sans);font-size:.875rem;letter-spacing:.05em;transition:background .2s}.language-button:hover{background:#fff8e9}.language-active{font-weight:650;color:var(--cocoa)}.language-button span:not(.language-active){color:var(--ink-soft)}.language-divider{font-weight:300;opacity:.6}
.cover{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;flex-direction:column;isolation:isolate;overflow:hidden;cursor:pointer;background:#e9e1d4;transition:opacity .75s ease,visibility .75s}.cover:before{content:'';position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(237,230,215,.4),rgba(249,246,237,.72) 50%,rgba(231,224,210,.5)),var(--art-main-card-v9-webp) center/100% 100%;opacity:.66}.cover:after{content:'';position:absolute;inset:18px;border:1px solid rgba(91,64,49,.16);pointer-events:none;z-index:-1}.cover-corner{position:absolute;top:30px;left:42px;font-family:var(--serif);font-size:24px;letter-spacing:4px}.cover-corner span{font-style:italic;font-size:17px}.cover-intro{display:flex;align-items:center;gap:18px;font-size:.875rem;letter-spacing:.3em;margin:10px 0 24px;transition:opacity .3s}.fine-line{display:block;width:36px;height:1px;background:var(--gold);opacity:.5}.envelope-button{position:relative;display:block;padding:0;width:min(390px,74vw,calc((100svh - 200px)*.75));aspect-ratio:3/4;background:transparent;overflow:visible;isolation:isolate}.envelope-button:disabled{opacity:1}.envelope-scene{display:block;position:absolute;inset:0;isolation:isolate;transform-style:flat;transform:rotate(-1.3deg)}.envelope-button:hover .envelope-scene{transform:rotate(0deg) translateY(-4px)}.envelope-back{position:absolute;inset:0;z-index:0;background:#d9cbb7;box-shadow:inset 0 0 0 1px #c9b9a2,0 22px 22px rgba(64,43,24,.17)}.envelope-pocket{position:absolute;inset:50% 0 0;z-index:6;background:var(--art-olive-botanical-webp) bottom/100% 200%;box-shadow:0 -1px 1px rgba(76,56,44,.16);display:flex;align-items:flex-end;justify-content:center;padding-bottom:17%}.envelope-recipient{font-size:.875rem;letter-spacing:.28em;text-shadow:0 1px 5px var(--paper)}.envelope-flap{position:absolute;top:0;left:0;width:100%;height:50%;z-index:8;transform-origin:center top;transform:perspective(1400px) rotateX(0deg);transform-style:flat;backface-visibility:visible;-webkit-backface-visibility:visible;background:#d9cbb7;will-change:transform}.flap-front,.flap-back{position:absolute;inset:0;display:flex;align-items:center;flex-direction:column;justify-content:center}.flap-front{z-index:2;background:#e4d7c2 var(--art-olive-botanical-webp) top/100% 200%;box-shadow:0 1px 1px rgba(61,41,28,.4)}.flap-back{z-index:1;background:#d9cbb7;box-shadow:inset 0 0 0 1px rgba(93,68,40,.12)}.envelope-flap.is-inside .flap-front{visibility:hidden}.cover-names{font-family:var(--script);font-size:clamp(46px,5.2vw,69px);line-height:1.2;position:relative;top:-.05em;text-shadow:0 2px 12px #eaddc4}.cover-date{font-family:var(--serif);font-size:.75rem;letter-spacing:.18em;margin-top:7px;text-shadow:0 1px 5px #eaddc4}.envelope-seal{position:absolute;z-index:12;left:36%;top:39.5%;width:28%;aspect-ratio:1;transform:rotate(3deg);filter:drop-shadow(1px 5px 3px rgba(41,22,10,.35));transition:transform .35s var(--ease),filter .35s}.seal-art{display:block;position:relative;aspect-ratio:1;width:100%}.seal-art img{position:absolute;width:128%;height:128%;max-width:none;left:-14%;top:-12%;clip-path:polygon(47% 10.8%,52% 11%,58% 13.1%,63% 16.2%,69% 20.2%,74% 23.5%,79% 27.5%,83% 32.5%,87% 38.5%,89% 43%,88% 49%,86% 55%,84.8% 62%,81% 70%,77% 75%,74% 80%,69% 84.6%,64% 86.8%,56% 87%,49% 87%,42% 86%,36% 84%,31% 81%,26% 78%,22% 75%,18% 71%,15% 67%,12% 61%,10.2% 55%,10.3% 50%,12.3% 43%,15.5% 37%,19.5% 32%,23.5% 28%,28.5% 23%,32.5% 20%,37.5% 15%,41% 12%)}.envelope-button:hover .envelope-seal{transform:rotate(-3deg) translateY(-3px);filter:drop-shadow(2px 8px 4px rgba(41,22,10,.28))}.seal-glint{position:absolute;inset:10%;border-radius:50%;background:linear-gradient(115deg,transparent 38%,rgba(255,232,198,.28) 48%,transparent 57%);background-size:300% 100%;background-position:150% 0;mix-blend-mode:screen;animation:glint 5s 1s infinite;pointer-events:none}.inner-letter{position:absolute;inset:5% 6% 7%;z-index:3;background:var(--art-main-card-v9-webp) center/100% 100%;box-shadow:0 0 15px rgba(62,41,23,.14);display:flex;align-items:center;flex-direction:column;padding-top:24%;opacity:1;transform:translateY(0);transform-origin:center center;will-change:transform}.inner-letter-overline{font-family:var(--serif);font-style:italic;font-size:1.4rem}.inner-letter-names{font-family:var(--script);font-size:clamp(40px,5vw,64px);line-height:1.5}.inner-letter-date{font-family:var(--serif);font-size:1rem;letter-spacing:.22em}.cover-instruction{display:flex;align-items:center;gap:10px;margin-top:27px;font-size:.875rem;letter-spacing:.15em;transition:opacity .3s}.touch-mark{width:6px;height:6px;border-radius:50%;background:var(--cocoa);box-shadow:0 0 0 5px rgba(91,64,49,.07);animation:invitation-pulse 2.8s ease-in-out infinite}.cover-footer{font-family:var(--serif);font-size:.75rem;letter-spacing:.17em;color:var(--ink-soft);margin-top:11px}.cover-footer span{padding:0 10px}.cover.is-opening{pointer-events:none}.is-opening .cover-intro,.is-opening .cover-instruction,.is-opening .cover-footer,.is-opening .cover-corner{opacity:0;transition:opacity .3s}.is-opening .envelope-seal{animation:seal-release 1s var(--ease) forwards}.is-opening .seal-glint{animation:none}.cover.is-revealing{opacity:0;visibility:hidden}
@keyframes glint{0%,60%{background-position:150% 0}90%,100%{background-position:-50% 0}}@keyframes invitation-pulse{50%{box-shadow:0 0 0 8px rgba(91,64,49,0)}}@keyframes seal-release{0%{transform:rotate(3deg)}25%{transform:translateY(-8px) translateZ(30px) rotate(-7deg) scale(1.07);filter:drop-shadow(6px 16px 10px rgba(41,22,10,.2))}52%{opacity:1}100%{transform:translate(36px,-45px) translateZ(140px) rotate(18deg) scale(1.2);opacity:0;filter:drop-shadow(15px 28px 16px rgba(41,22,10,0))}}
.invitation{position:relative;width:min(1120px,calc(100% - 56px));height:calc(100svh - 48px);margin:24px auto;display:grid;grid-template-rows:70px minmax(0,1fr) auto;isolation:isolate;box-shadow:0 12px 55px rgba(65,43,23,.11),0 0 0 1px rgba(119,93,62,.19);opacity:0;transform:translateY(18px) scale(.985);transition:opacity 1s var(--ease),transform 1.2s var(--ease)}.invitation.is-visible{opacity:1;transform:none}.paper-background{position:absolute;inset:0;z-index:-2;background:linear-gradient(rgba(248,244,235,.1),rgba(248,244,235,.1)),var(--art-main-card-v9-webp) center/100% 100%}.invitation:after{content:'';position:absolute;inset:10px;border:1px solid rgba(115,89,59,.17);z-index:-1;pointer-events:none}.app-header{display:flex;align-items:center;justify-content:space-between;padding:0 32px;margin-right:114px;border-bottom:1px solid var(--line);position:relative}.wordmark{display:flex;align-items:center;gap:6px;font-family:var(--serif);font-size:24px;letter-spacing:2px;background:transparent;padding:6px 0}.wordmark>span:first-child{font-style:italic;font-size:19px}.replay-icon{font-size:18px;letter-spacing:0;color:var(--ink-soft);margin-left:6px;opacity:.55;transition:opacity .2s}.wordmark:hover .replay-icon{opacity:1}.header-date{font-family:var(--serif);font-size:.875rem;letter-spacing:.16em}.header-edition{font-size:.75rem;letter-spacing:.18em;color:var(--ink-soft)}.page-scroll{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#bba88d transparent;scroll-behavior:smooth}.pages{min-height:100%;padding:28px 58px 32px}.page{width:100%;max-width:860px;margin:0 auto;animation:page-enter .48s var(--ease) both}.page-home{max-width:800px}.section-header{text-align:center;margin:0 auto 30px}.eyebrow{font-family:var(--sans);color:var(--ink-soft);font-size:.75rem;letter-spacing:.22em;text-transform:uppercase}.section-header h1{font-size:clamp(1.6rem,3.3vw,2.05rem);letter-spacing:.12em;line-height:1.5;margin:8px 0 7px}.section-header .english-script{font-family:var(--script);font-size:2rem;letter-spacing:.03em;color:var(--gold);line-height:1.35;margin-top:-4px}.section-header .lead{margin:12px auto 0;font-size:1rem;color:var(--ink-soft);max-width:590px;line-height:1.85}.fine-divider{display:flex;align-items:center;justify-content:center;gap:12px;margin:22px auto}.fine-divider:before,.fine-divider:after{content:'';width:48px;height:1px;background:var(--line)}.fine-divider svg{width:16px;height:16px;stroke:var(--gold)}.sample-note{font-family:var(--sans);font-size:.8125rem;line-height:1.7;color:var(--ink-soft);display:flex;align-items:center;gap:7px;justify-content:center;margin:18px 0 0}.sample-note svg{width:16px;height:16px;flex-shrink:0}.navigation-wrap{background:linear-gradient(180deg,rgba(244,237,224,.68),rgba(242,233,218,.96));backdrop-filter:blur(14px);border-top:1px solid var(--line);z-index:10;padding:0 18px max(12px,env(safe-area-inset-bottom));box-shadow:0 -7px 28px rgba(62,46,25,.025)}.navigation-hint{height:34px;display:flex;align-items:center;justify-content:center;gap:9px;font-family:var(--sans);font-size:.8125rem;letter-spacing:.06em;color:var(--ink-soft);transition:color .4s}.navigation-hint>span:last-child{font-size:16px;animation:hint-down 1.8s ease-in-out 3}.navigation-hint.has-explored>span:last-child{display:none}.navigation-hint.has-explored{color:#87745e}.tab-bar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;max-width:940px;margin:0 auto}.tab{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:9px 3px 8px;min-height:65px;border-radius:4px;background:transparent;font-family:var(--sans);font-size:.875rem;line-height:1.35;letter-spacing:.06em;color:var(--ink-soft);transition:background .25s,color .25s,box-shadow .25s}.tab svg{width:21px;height:21px}.tab:hover{background:rgba(114,87,55,.07);color:var(--ink)}.tab[aria-selected=true]{background:var(--cocoa);color:#faf3e8;box-shadow:0 3px 10px rgba(62,37,17,.16)}.tab[aria-selected=true]:before{content:'';position:absolute;top:5px;right:9px;width:3px;height:3px;border-radius:50%;background:#ddc5a1}.tab:focus-visible{outline-offset:2px}@keyframes page-enter{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes hint-down{50%{transform:translateY(3px)}}
.home-content{text-align:center;display:flex;align-items:center;flex-direction:column;padding:4px 0 0}.home-overline{font-size:.875rem;letter-spacing:.3em;color:var(--ink-soft);margin-bottom:3px}.save-date{font-family:var(--serif);font-style:italic;font-size:clamp(1.6rem,3vw,2rem);letter-spacing:.02em;color:var(--gold)}.names{font-family:var(--script);font-weight:400;font-size:clamp(4.5rem,9vw,6.8rem);line-height:1.42;letter-spacing:0;margin:0 -10px;color:#533a2d;position:relative}.names .ampersand{font-size:.72em;display:inline-block;margin:0 .06em}.home-message{font-size:1rem;letter-spacing:.13em;margin-top:0;color:var(--ink-soft)}.date-lockup{display:flex;align-items:center;justify-content:center;gap:30px;margin:23px 0 20px;width:100%;max-width:580px}.date-side{width:110px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px 0;font-size:.875rem;letter-spacing:.14em}.date-middle{font-family:var(--serif);font-size:2rem;letter-spacing:.08em;line-height:1.1}.date-middle span{display:block;font-size:.875rem;letter-spacing:.26em;line-height:1.6;margin-top:7px}.home-seal{width:65px;margin:2px auto 13px;filter:drop-shadow(1px 3px 2px rgba(55,31,15,.23));transform:rotate(-8deg)}.home-location{font-size:1.05rem;letter-spacing:.05em}.home-city{font-size:.8125rem;letter-spacing:.16em;color:var(--ink-soft);margin-top:2px}.countdown-wrap{margin-top:23px;padding-top:15px;border-top:1px solid var(--line);width:min(420px,100%)}.countdown-label{font-size:.75rem;letter-spacing:.16em;color:var(--ink-soft);margin-bottom:10px}.countdown{display:grid;grid-template-columns:repeat(4,1fr)}.countdown-unit{position:relative}.countdown-unit:not(:last-child):after{content:':';position:absolute;right:-2px;top:0;color:#b3a28d;font-family:var(--serif);font-size:1.9rem;font-weight:400}.countdown-value{font-family:var(--serif);font-size:2.35rem;line-height:1.2;font-variant-numeric:tabular-nums;font-weight:500}.countdown-unit small{display:block;font-family:var(--sans);font-size:.75rem;letter-spacing:.14em;color:var(--ink-soft);margin-top:3px}.home-bottom{font-family:var(--serif);font-style:italic;color:var(--gold);font-size:1.15rem;margin-top:17px}
.timeline{position:relative;width:min(660px,100%);margin:0 auto;padding:6px 0 4px}.timeline:before{content:'';position:absolute;width:1px;top:20px;bottom:35px;left:50%;background:linear-gradient(transparent,#a58f70 6%,#a58f70 94%,transparent)}.timeline-event{position:relative;width:50%;padding:0 40px 28px 0;text-align:right;min-height:120px}.timeline-event:nth-child(even){margin-left:50%;padding:0 0 28px 40px;text-align:left}.timeline-marker{position:absolute;right:-17px;top:3px;width:34px;height:34px;display:grid;place-items:center;border:1px solid #b6a17f;border-radius:50%;background:#ece3d4;box-shadow:0 0 0 6px rgba(239,231,216,.65)}.timeline-marker svg{width:17px;height:17px;color:var(--cocoa)}.timeline-event:nth-child(even) .timeline-marker{left:-17px;right:auto}.timeline-time{font-family:var(--serif);font-size:1.65rem;letter-spacing:.07em;color:#947957;line-height:1.35}.timeline-event h2{font-size:1.0625rem;letter-spacing:.08em;margin:5px 0}.timeline-event p{font-family:var(--sans);font-size:.875rem;line-height:1.7;color:var(--ink-soft)}.timeline-ending{text-align:center;font-family:var(--script);font-size:2rem;color:var(--gold);margin-top:-5px}
.swatches{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:20px;margin:30px auto 34px;max-width:720px}.swatch{text-align:center}.swatch-color{height:88px;width:100%;max-width:88px;aspect-ratio:1;border-radius:50% 50% 8% 8%;margin:0 auto 12px;background:var(--swatch);box-shadow:inset 0 0 0 1px rgba(45,32,19,.08),0 4px 8px rgba(56,37,13,.05);transform:rotate(var(--rotation,0deg))}.swatch-name{font-size:.875rem}.swatch-hex{font-family:var(--sans);font-size:.75rem;color:var(--ink-soft);letter-spacing:.03em;margin-top:3px}.dress-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.dress-card{padding:24px 21px 23px;background:var(--wash);border:1px solid var(--line);border-radius:3px;position:relative}.dress-card:before{content:'';position:absolute;inset:5px;border:1px solid rgba(112,87,62,.1);pointer-events:none}.dress-card>svg{color:var(--gold);width:25px;height:25px;margin-bottom:9px}.dress-card h2{font-size:1.125rem;letter-spacing:.1em;margin-bottom:10px}.dress-card p{font-family:var(--sans);font-size:.9375rem;color:var(--ink-soft);line-height:1.85}.dress-card.avoid{background:rgba(117,72,51,.035)}.dress-footnote{text-align:center;font-family:var(--sans);font-size:.875rem;margin:24px auto 0;color:var(--ink-soft);max-width:580px}
.venue-layout{display:grid;grid-template-columns:1fr 1.05fr;gap:45px;align-items:center;margin:25px auto 20px;max-width:770px}.venue-art{min-height:335px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;isolation:isolate;border-radius:48% 48% 2px 2px;overflow:hidden;border:1px solid var(--line);background:#ded2bb}.venue-art:before{content:'';position:absolute;inset:0;z-index:-2;background:var(--art-olive-botanical-webp) center/cover;filter:contrast(.9)}.venue-art:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent,rgba(237,227,207,.8) 45%,rgba(237,227,207,.4))}.venue-art-title{font-size:3.2rem;letter-spacing:.06em;text-shadow:0 2px 14px #eee4d0}.venue-art-type{font-family:var(--serif);font-size:.875rem;letter-spacing:.18em}.venue-art-date{font-family:var(--serif);font-size:1.25rem;letter-spacing:.1em;margin-top:60px}.venue-address-tag{display:flex;align-items:center;gap:7px;font-size:.875rem;letter-spacing:.08em;color:var(--gold);margin-bottom:13px}.venue-info h2{font-size:1.45rem;letter-spacing:.03em;line-height:1.5}.venue-address{font-size:1rem;line-height:1.9;margin:16px 0 23px;color:var(--ink-soft)}.venue-detail{border-top:1px solid var(--line);padding-top:18px;margin-bottom:23px;display:flex;align-items:center;gap:12px}.venue-detail p{font-size:.9375rem}.venue-detail small{display:block;font-family:var(--sans);color:var(--ink-soft);font-size:.8125rem;margin-top:3px}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:12px 22px;background:var(--cocoa);color:#fff8ec;border:1px solid var(--cocoa);border-radius:3px;font-family:var(--sans);font-size:.9375rem;font-weight:400;letter-spacing:.06em;text-decoration:none;transition:background .2s,transform .2s;line-height:1.5}.primary-button:hover{background:#443023;transform:translateY(-1px)}.primary-button svg{width:18px;height:18px}.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 14px;border:1px solid var(--line);background:rgba(251,247,236,.6);border-radius:3px;font-family:var(--sans);font-size:.875rem;text-decoration:none}.secondary-button:hover{background:#faf3e5}.secondary-button svg{width:17px;height:17px}.venue-actions{display:flex;flex-direction:column;align-items:stretch;gap:10px}.venue-note{font-family:var(--sans);font-size:.8125rem;line-height:1.7;margin-top:14px;color:var(--ink-soft)}
.gallery-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:22px;max-width:760px;margin:auto}.photo-placeholder{position:relative;background:rgba(250,247,238,.58);border:1px solid var(--line);padding:10px;display:flex;flex-direction:column;box-shadow:0 6px 15px rgba(66,40,14,.04);transform:rotate(-1.5deg)}.photo-placeholder:nth-child(2){transform:rotate(1.7deg);margin-top:28px}.placeholder-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:230px;border:1px solid rgba(130,106,78,.2);background:linear-gradient(130deg,rgba(210,198,177,.2),rgba(247,239,224,.15));color:#9f8e75;gap:12px}.placeholder-inner svg{width:34px;height:34px;stroke-width:1}.placeholder-number{font-family:var(--serif);font-style:italic;font-size:2rem;color:#ae997a}.placeholder-inner p{font-size:.875rem;letter-spacing:.08em}.photo-caption{padding:12px 5px 4px;text-align:center;font-family:var(--serif);font-size:1rem;letter-spacing:.08em}.video-placeholder{max-width:760px;margin:24px auto 0;border:1px solid var(--line);background:rgba(112,88,60,.045);min-height:125px;padding:22px;display:flex;align-items:center;justify-content:center;gap:21px}.video-symbol{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);color:var(--gold)}.video-symbol svg{width:18px;height:18px}.video-placeholder h2{font-size:1.0625rem;letter-spacing:.06em}.video-placeholder p{font-family:var(--sans);font-size:.875rem;color:var(--ink-soft);margin-top:4px}
.form-container{max-width:610px;margin:0 auto}.demo-banner{display:flex;align-items:flex-start;gap:9px;font-family:var(--sans);font-size:.8125rem;line-height:1.65;padding:11px 14px;margin-bottom:22px;border:1px solid rgba(139,110,71,.24);background:rgba(188,161,113,.08);border-radius:3px;color:var(--ink-soft)}.demo-banner svg{width:17px;height:17px;margin-top:2px}.field{margin-bottom:21px}.field-label,fieldset legend{display:block;font-size:.9375rem;letter-spacing:.04em;margin-bottom:8px}.required-mark{color:#9b5d44;font-family:var(--sans);margin-left:4px}.field-hint{font-family:var(--sans);font-size:.8125rem;line-height:1.65;color:var(--ink-soft);margin-top:7px}.text-input,select,textarea{display:block;width:100%;min-height:48px;border:1px solid #bcae99;background:rgba(255,253,247,.68);border-radius:3px;color:var(--ink);padding:11px 13px;font-family:var(--sans);font-size:1rem;line-height:1.5;transition:border-color .2s,box-shadow .2s}.text-input::placeholder,textarea::placeholder{color:#958673;font-weight:400}.text-input:focus,select:focus,textarea:focus{border-color:var(--cocoa);outline:0;box-shadow:0 0 0 3px rgba(116,79,45,.1)}textarea{min-height:105px;resize:vertical}fieldset{border:0;padding:0;margin:0 0 21px;min-width:0}.attendance-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.radio-card{position:relative;min-height:54px;padding:12px;display:flex;align-items:center;gap:9px;border:1px solid #bcae99;border-radius:3px;background:rgba(255,253,247,.5);font-family:var(--sans);font-size:.9375rem;cursor:pointer}.radio-card:has(input:checked){border-color:var(--cocoa);background:rgba(108,71,36,.07);box-shadow:inset 0 0 0 1px var(--cocoa)}.radio-card input{accent-color:var(--cocoa);width:17px;height:17px;flex-shrink:0;margin:0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-submit{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:7px}.form-submit .primary-button{width:100%}.error-message{font-family:var(--sans);font-size:.875rem;color:#983e31;line-height:1.7;margin:8px 0 16px}.field-error{border-color:#983e31!important}.success-card{text-align:center;padding:25px 25px 28px;border:1px solid var(--line);background:rgba(251,247,238,.65)}.success-icon{display:grid;place-items:center;width:50px;height:50px;border:1px solid #8c9279;border-radius:50%;margin:0 auto 15px;color:#697250}.success-card h2{font-size:1.4rem;letter-spacing:.05em}.success-card>p{font-family:var(--sans);font-size:.9375rem;line-height:1.8;color:var(--ink-soft);margin-top:12px}.response-summary{margin:22px 0;text-align:left;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;display:grid;grid-template-columns:110px 1fr;gap:8px 12px;font-family:var(--sans);font-size:.9375rem;overflow-wrap:anywhere}.response-summary dt{color:var(--ink-soft)}.response-summary dd{margin:0;white-space:pre-wrap}.success-card .secondary-button{margin-top:4px}
.upload-container{max-width:680px;margin:auto}.drop-zone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 20px;border:1px dashed #a28b6d;background:rgba(255,251,239,.4);border-radius:3px;cursor:pointer;transition:background .2s,border-color .2s}.drop-zone:hover,.drop-zone.is-dragging{background:rgba(255,251,239,.85);border-color:var(--cocoa)}.drop-zone:focus-within{outline:2px solid var(--cocoa);outline-offset:4px}.drop-zone>svg{width:31px;height:31px;margin-bottom:12px;color:var(--gold)}.drop-zone strong{font-weight:400;font-size:1rem}.drop-zone span{display:block;font-family:var(--sans);font-size:.8125rem;color:var(--ink-soft);margin-top:7px}.drop-zone input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.photo-preview-heading{display:flex;justify-content:space-between;align-items:center;font-family:var(--sans);font-size:.875rem;margin:24px 0 12px}.photo-preview-heading small{font-size:.8125rem;color:var(--ink-soft)}.photo-preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}.photo-preview{position:relative;border:1px solid var(--line);background:rgba(255,250,237,.7);padding:5px;min-width:0}.photo-preview img{width:100%;aspect-ratio:1;object-fit:cover;background:#e3d7c3}.photo-preview p{font-family:var(--sans);font-size:.75rem;padding:6px 3px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.remove-photo{position:absolute;top:10px;right:10px;width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:rgba(253,248,236,.94);box-shadow:0 2px 5px rgba(0,0,0,.12)}.remove-photo svg{width:16px;height:16px}.upload-action{margin-top:20px}.upload-action .primary-button{width:100%}.upload-progress{margin-top:14px}progress{display:block;width:100%;height:5px;border:0;border-radius:4px;background:#d6c8b2;overflow:hidden}progress::-webkit-progress-bar{background:#d6c8b2}progress::-webkit-progress-value{background:var(--cocoa);transition:width .2s}progress::-moz-progress-bar{background:var(--cocoa)}.progress-caption{display:flex;justify-content:space-between;font-family:var(--sans);font-size:.8125rem;color:var(--ink-soft);margin-top:5px}.upload-success{display:flex;align-items:flex-start;gap:11px;margin-top:18px;padding:17px;background:rgba(113,124,90,.07);border:1px solid rgba(99,116,73,.22);border-radius:3px}.upload-success svg{color:#65744c;flex-shrink:0;margin-top:1px}.upload-success p{font-family:var(--sans);font-size:.9375rem;line-height:1.7;overflow-wrap:anywhere}.upload-success small{display:block;font-size:.8125rem;color:var(--ink-soft);margin-top:4px}.toast{position:fixed;bottom:145px;left:50%;transform:translate(-50%,12px);padding:12px 22px;background:var(--cocoa);color:#fff6e6;border-radius:4px;font-family:var(--sans);font-size:.875rem;box-shadow:0 8px 28px rgba(54,31,11,.2);z-index:120;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;max-width:calc(100vw - 36px);text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}.noscript-note{position:fixed;z-index:300;inset:auto 15px 20px;background:var(--paper);padding:15px;border:1px solid var(--cocoa);text-align:center}
@media(min-width:1200px) and (min-height:850px){.invitation{height:calc(100svh - 72px);margin:36px auto}.language-button{top:51px}.pages{padding-top:40px}.home-content{padding-top:15px}.home-overline{margin-bottom:8px}.date-lockup{margin:27px 0 23px}.home-seal{width:74px;margin:3px auto 18px}.countdown-wrap{margin-top:30px}.home-bottom{margin-top:24px}.cover-intro{margin-bottom:30px}.envelope-button{width:min(435px,calc((100svh - 230px)*.75))}}
@media(max-width:760px){.invitation{width:100%;height:100svh;margin:0;grid-template-rows:65px minmax(0,1fr) auto;box-shadow:none}.invitation:after{inset:7px}.language-button{top:max(14px,env(safe-area-inset-top));right:17px;height:35px;min-width:74px;padding:0 9px;gap:6px}.app-header{padding:0 20px;margin-right:102px}.header-date{font-size:.8125rem;letter-spacing:.11em}.header-edition{display:none}.wordmark{font-size:22px}.wordmark .replay-icon{font-size:16px;margin-left:1px}.pages{padding:27px 26px 30px}.paper-background{background-size:auto,100% 100%}.section-header{margin-bottom:25px}.section-header h1{font-size:1.65rem;letter-spacing:.1em}.section-header .english-script{font-size:1.85rem}.section-header .lead{font-size:.9375rem;line-height:1.8;max-width:440px}.navigation-wrap{padding:0 7px max(8px,env(safe-area-inset-bottom))}.tab-bar{gap:2px}.navigation-hint{height:33px;font-size:.75rem;letter-spacing:.035em;gap:6px}.tab{min-height:60px;padding:8px 1px 7px;gap:5px;font-size:.875rem;letter-spacing:0;border-radius:3px}.tab svg{width:20px;height:20px}.tab[aria-selected=true]:before{right:5px;top:5px;width:2px;height:2px}.cover-corner{left:25px;top:19px;font-size:22px}.cover:after{inset:9px}.cover-intro{font-size:.8125rem;letter-spacing:.18em;margin-bottom:23px}.fine-line{width:24px}.envelope-button{width:min(360px,80vw,calc((100svh - 195px)*.75))}.cover-names{font-size:clamp(48px,13vw,64px)}.cover-instruction{font-size:.875rem;letter-spacing:.1em;margin-top:27px}.envelope-recipient{font-size:.8125rem}.cover-date{font-size:.75rem;letter-spacing:.12em}.cover-footer{font-size:.75rem}.home-content{padding:0}.home-overline{font-size:.8125rem;letter-spacing:.21em}.save-date{font-size:1.65rem}.names{font-size:5.2rem;line-height:1.44}.home-message{font-size:.9375rem;letter-spacing:.06em}.date-lockup{gap:18px;margin:21px 0 18px}.date-side{width:86px;font-size:.8125rem;letter-spacing:.08em;padding:7px 0}.date-middle{font-size:1.85rem}.date-middle span{font-size:.8125rem}.home-seal{width:58px;margin-bottom:10px}.home-location{font-size:1rem}.home-city{font-size:.75rem}.countdown-wrap{margin-top:20px;max-width:330px;padding-top:13px}.countdown-value{font-size:2.1rem}.countdown-label{margin-bottom:9px}.home-bottom{margin-top:14px;font-size:1.0625rem}.timeline-event{padding-right:28px;min-height:125px}.timeline-event:nth-child(even){padding-left:28px}.timeline-marker{width:30px;height:30px;right:-15px}.timeline-event:nth-child(even) .timeline-marker{left:-15px}.timeline-marker svg{width:15px;height:15px}.timeline-event h2{font-size:1rem;letter-spacing:.035em}.timeline-event p{font-size:.875rem;line-height:1.7}.timeline-time{font-size:1.6rem}.swatches{gap:12px;margin:22px auto 28px}.swatch-color{height:auto;width:100%;margin-bottom:10px}.swatch-name{font-size:.875rem;white-space:nowrap}.swatch-hex{display:none}.dress-cards{grid-template-columns:1fr;gap:12px}.dress-card{padding:19px 20px 19px 60px}.dress-card>svg{position:absolute;top:22px;left:20px;width:22px;height:22px}.dress-card h2{font-size:1.0625rem;margin-bottom:6px}.dress-card p{font-size:.9375rem;line-height:1.8}.dress-footnote{font-size:.875rem;margin-top:20px}.venue-layout{gap:25px;grid-template-columns:1fr;max-width:450px}.venue-art{min-height:210px;max-width:290px;width:100%;margin:0 auto;border-radius:145px 145px 2px 2px}.venue-art-title{font-size:2.7rem}.venue-art-type{font-size:.8125rem}.venue-art-date{margin-top:22px;font-size:1.125rem}.venue-info{text-align:center}.venue-address-tag{justify-content:center}.venue-info h2{font-size:1.35rem}.venue-address{margin:12px 0 18px;font-size:1rem}.venue-detail{justify-content:center;text-align:left;padding-top:16px;margin-bottom:20px}.venue-actions{max-width:360px;margin:auto}.venue-note{max-width:360px;margin:13px auto 0}.gallery-grid{gap:14px}.photo-placeholder{padding:7px}.placeholder-inner{min-height:200px;padding:10px;gap:10px}.placeholder-inner p{font-size:.8125rem;letter-spacing:.03em;text-align:center}.placeholder-inner svg{width:25px;height:25px}.placeholder-number{font-size:1.7rem}.photo-caption{font-size:.875rem;letter-spacing:.03em;padding:10px 0 4px}.photo-placeholder:nth-child(2){margin-top:20px}.video-placeholder{margin-top:22px;padding:20px 16px;gap:13px;min-height:120px}.video-placeholder h2{font-size:1rem}.video-placeholder p{font-size:.8125rem}.video-symbol{width:40px;height:40px;flex-shrink:0}.form-row{gap:12px}.radio-card{font-size:.875rem;padding:12px 10px;gap:7px}.field-label,fieldset legend{font-size:.9375rem}.demo-banner{padding:10px 12px;font-size:.8125rem}.success-card{padding:23px 18px}.response-summary{grid-template-columns:90px 1fr;font-size:.875rem}.photo-preview-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.drop-zone{padding:26px 16px}.drop-zone span{font-size:.8125rem}.photo-preview-heading{font-size:.8125rem}.toast{bottom:120px}.sample-note{font-size:.8125rem;align-items:flex-start;text-align:left;max-width:500px;margin-left:auto;margin-right:auto}.sample-note svg{margin-top:2px}.form-submit .field-hint{text-align:center}}
@media(max-width:374px){.pages{padding:23px 19px 28px}.header-date{font-size:.75rem;letter-spacing:.035em}.wordmark{font-size:20px;gap:4px}.names{font-size:4.7rem}.home-message{font-size:.875rem}.date-lockup{gap:12px}.tab{font-size:.8125rem}.swatches{gap:9px}.swatch-name{font-size:.8125rem}.form-row{grid-template-columns:1fr;gap:0}.attendance-options{grid-template-columns:1fr;gap:8px}.timeline-event{padding-right:23px}.timeline-event:nth-child(even){padding-left:23px}.timeline-event p{font-size:.8125rem}.gallery-grid{gap:10px}.placeholder-inner{min-height:185px}.video-placeholder{gap:10px}}
@media(max-height:690px) and (min-width:761px){.invitation{margin:12px auto;height:calc(100svh - 24px);grid-template-rows:60px minmax(0,1fr) auto}.language-button{top:24px}.pages{padding-top:20px}.envelope-button{width:calc((100svh - 160px)*.75)}.cover-intro{margin-bottom:15px}.cover-instruction{margin-top:18px}.cover-footer{margin-top:6px}}
.home-content{padding-top:0}.save-date{line-height:1.25}.names{font-size:clamp(4.5rem,8vw,6rem);line-height:1.15;margin-top:8px;margin-bottom:8px}.date-lockup{margin-top:18px;margin-bottom:15px}.home-seal{width:54px;margin:2px auto 10px}.countdown-wrap{margin-top:17px;padding-top:12px}.home-bottom{margin-top:12px;line-height:1.5}
@media(max-width:760px){.names{font-size:5.1rem;line-height:1.2}.home-seal{width:50px}.date-lockup{margin-top:17px;margin-bottom:13px}.home-bottom{font-size:1.0625rem}.envelope-recipient{max-width:88%;font-size:.75rem;letter-spacing:.14em;text-align:center}.cover-intro{max-width:88%;text-align:center}.swatches{column-gap:8px}.swatch-name{font-size:.875rem;white-space:normal;line-height:1.5}}
@media(max-width:374px){.names{font-size:4.5rem}.swatch-name{font-size:.8125rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.envelope-button:hover .envelope-scene{transform:rotate(-1.3deg)}.is-opening .envelope-seal{animation:none!important}.cover.is-revealing{opacity:0;visibility:hidden}}

/* Floating chapter navigation: the paper remains one stationary surface. */
.invitation{grid-template-rows:70px minmax(0,1fr)}
.navigation-wrap{position:absolute;left:22px;right:22px;bottom:max(18px,env(safe-area-inset-bottom));padding:0 8px 8px;border:1px solid rgba(255,253,245,.7);border-radius:28px;background:rgba(246,241,230,.89);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 10px 32px rgba(71,49,29,.15),0 2px 7px rgba(71,49,29,.07)}
.navigation-hint{height:31px;text-align:center;padding:0 6px}
.tab-bar{position:relative;gap:0;padding:6px;isolation:isolate}
.tab-indicator{position:absolute;left:6px;top:6px;bottom:6px;width:calc((100% - 12px)/7);border-radius:18px;background:var(--cocoa);box-shadow:0 3px 10px rgba(62,37,17,.16);transform:translateX(calc(var(--active-index,0)*100%));transition:transform .32s var(--ease);z-index:0;pointer-events:none}
.tab{z-index:1;border-radius:18px;letter-spacing:0}
.tab[aria-selected=true],.tab[aria-selected=true]:hover{background:transparent;box-shadow:none}
.tab[aria-selected=true]:before{display:none}
.tab-bar.is-dragging .tab-indicator{transition:none}
.page-scroll{touch-action:pan-y pinch-zoom;padding-bottom:calc(var(--nav-height,110px) + 38px)}
.page{animation:chapter-enter .35s var(--ease) both}
.page.is-dragging{animation:none;transition:none;user-select:none}
@keyframes chapter-enter{from{opacity:0;transform:translateX(var(--page-enter-x,0px))}to{opacity:1;transform:translateX(0)}}
.home-mv-placeholder{width:min(420px,100%);aspect-ratio:16/9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;margin:8px auto 3px;border:1px dashed rgba(112,87,62,.4);border-radius:5px;background:rgba(255,251,242,.25)}
.home-mv-placeholder .video-symbol{width:38px;height:38px}
.home-mv-placeholder p{font-size:.9375rem;letter-spacing:.08em}
.home-mv-placeholder small{font-family:var(--sans);font-size:.8125rem;color:var(--ink-soft)}
@media(max-width:760px){.invitation{grid-template-rows:65px minmax(0,1fr)}.navigation-wrap{left:12px;right:12px;bottom:max(14px,env(safe-area-inset-bottom));border-radius:24px;padding:0 3px 5px}.navigation-hint{font-size:.75rem;height:29px;letter-spacing:0}.tab-bar{padding:4px}.tab-indicator{left:4px;top:4px;bottom:4px;width:calc((100% - 8px)/7);border-radius:16px}.tab{font-size:.8125rem;min-height:61px;padding:8px 0;white-space:nowrap;border-radius:16px}.page-scroll{padding-bottom:calc(var(--nav-height,105px) + max(30px,env(safe-area-inset-bottom)))}.home-mv-placeholder{max-width:340px}}
@media(max-height:690px) and (min-width:761px){.invitation{grid-template-rows:60px minmax(0,1fr)}}

/* Compact invitation cards, with a stationary paper and a slim floating dock. */
.cover:before{background:#e9e1d4;opacity:1}
.is-opening .envelope-seal{animation:none;transition:none}
h1[tabindex="-1"]:focus{outline:none}
.invitation{grid-template-rows:56px minmax(0,1fr)}
.page-scroll{padding-bottom:0;margin-bottom:calc(var(--nav-height,56px) + max(28px,env(safe-area-inset-bottom)));scroll-behavior:auto}
.pages{position:relative;min-height:100%;padding:16px 36px 20px}
.page{animation:chapter-enter .26s var(--ease) both}
.page.is-dragging,.page.swipe-preview{animation:none;will-change:transform;user-select:none}
.page.swipe-preview{position:absolute;margin:0;pointer-events:none}
.navigation-wrap{left:max(14px,calc((100% - 760px)/2));right:max(14px,calc((100% - 760px)/2));bottom:max(14px,env(safe-area-inset-bottom));padding:5px;border-radius:40px;background:rgba(248,244,235,.94);box-shadow:0 7px 22px rgba(71,49,29,.14),inset 0 1px 0 #fffaf0}
.navigation-hint{position:absolute;bottom:calc(100% + 8px);left:0;right:0;height:auto;font-size:.6875rem;letter-spacing:.04em;pointer-events:none}
.navigation-hint.has-explored{display:none}
.navigation-hint>span:last-child{display:none}
.tab-bar{display:flex;padding:0;gap:0;max-width:none}
.tab{flex:1 1 0;min-width:0;min-height:44px;padding:0 2px;flex-direction:row;gap:5px;font-size:.75rem;letter-spacing:0;border-radius:30px;white-space:nowrap}
.tab[aria-selected=true]{flex:2.25 1 0}
.tab span{display:none}.tab[aria-selected=true] span{display:inline}
.tab svg{width:19px;height:19px}
.tab-indicator{left:0;top:0;bottom:0;border-radius:30px;transition:transform .26s var(--ease),width .26s var(--ease);background:linear-gradient(115deg,#ac9270,#93764f)}
.tab[aria-selected=true]{color:#fffaf0}
.tab-bar.is-dragging .tab-indicator{transition:none}
.section-header{margin-bottom:18px}.section-header .eyebrow,.section-header .lead{display:none}
.section-header h1{font-size:1.65rem;margin:0 0 3px;line-height:1.4}
.section-header .english-script{font-size:1.65rem;margin:0;line-height:1.2}
.home-content{padding:0}.names{font-size:clamp(4rem,7.5vw,5.5rem);line-height:1.2;margin:0 0 8px}
.home-mv-placeholder{width:min(320px,100%,calc((100svh - 405px)*1.7778));min-width:200px;max-width:100%;aspect-ratio:16/9;margin:0 auto 4px;gap:4px}
.home-mv-placeholder .video-symbol{width:30px;height:30px}.home-mv-placeholder p{font-size:.875rem}.home-mv-placeholder small{font-size:.75rem}
.date-lockup{margin:12px 0 8px;gap:20px}.date-side{padding:5px 0}.date-middle{font-size:1.8rem}.date-middle span{margin-top:2px}
.home-location{font-size:1.05rem}.home-city{font-size:.75rem;line-height:1.5}
.countdown-wrap{margin-top:12px;padding-top:10px;width:min(350px,100%)}.countdown-label{margin-bottom:5px;font-size:.6875rem}.countdown-value{font-size:2rem}.countdown-unit small{margin-top:0}
.timeline{max-width:600px;padding:0}.timeline-event{min-height:0;padding:0 32px 15px 0}.timeline-event:nth-child(even){padding:0 0 15px 32px}
.timeline-event .timeline-time{font-size:1.45rem;line-height:1.15}.timeline-event h2{font-size:1rem;margin:2px 0;line-height:1.4}.timeline-event p:not(.timeline-time){font-size:.8125rem;line-height:1.4}
.timeline-marker{width:28px;height:28px;right:-14px}.timeline-event:nth-child(even) .timeline-marker{left:-14px}.timeline-marker svg{width:15px;height:15px}.timeline-ending{font-size:1.5rem;line-height:1.3;margin:0}.sample-note{margin-top:12px;line-height:1.45;font-size:.75rem}
.swatches{grid-template-columns:repeat(6,minmax(0,1fr));gap:15px;margin:22px auto;max-width:620px}
.swatch-color{position:relative;width:100%;height:auto;max-width:76px;aspect-ratio:1.16;border-radius:62% 38% 55% 45% / 48% 65% 35% 52%;margin:0 auto 7px;background:linear-gradient(145deg,rgba(255,255,255,.25),transparent 40%,rgba(0,0,0,.09)),var(--swatch);box-shadow:inset 2px 3px 3px rgba(255,255,255,.26),inset -2px -3px 3px rgba(50,32,20,.15),1px 3px 3px rgba(70,50,25,.12)}
.swatch:nth-child(2n) .swatch-color{border-radius:44% 56% 38% 62% / 66% 43% 57% 34%;transform:rotate(-12deg)}
.swatch:nth-child(3n) .swatch-color{border-radius:54% 46% 66% 34% / 38% 55% 45% 62%;transform:rotate(10deg)}
.swatch-name{font-size:.8125rem;line-height:1.4}.swatch-hex{display:none}
.dress-cards{gap:12px}.dress-card{padding:18px 16px;border-radius:10px}.dress-card:before{display:none}.dress-card>svg{width:27px;height:27px;margin-bottom:6px}.dress-card h2{font-size:1rem;margin-bottom:5px}.dress-card p{font-size:.875rem;line-height:1.6}.dress-footnote{font-size:.8125rem;margin-top:12px}
.venue-layout{gap:25px;margin:0 auto;max-width:700px}.venue-art{min-height:260px}.venue-address-tag{margin-bottom:5px}.venue-address{margin:9px 0 12px;line-height:1.6}.venue-detail{padding-top:10px;margin-bottom:12px}.venue-note{font-size:.75rem;line-height:1.5;margin-top:10px}.venue-actions{gap:8px}
.gallery-grid{max-width:610px}.placeholder-inner{min-height:clamp(170px,33svh,300px)}
.demo-banner{margin-bottom:12px;padding:8px 10px;font-size:.75rem;line-height:1.45}
.field,fieldset{margin-bottom:10px}.field-label,fieldset legend{margin-bottom:4px;font-size:.875rem}
.text-input,select,textarea{min-height:42px;padding:8px 10px;font-size:1rem}.radio-card{min-height:44px;padding:8px;font-size:.875rem}
textarea{min-height:62px;height:62px}.form-row{grid-template-columns:1fr 1fr;gap:10px}.attendance-options{grid-template-columns:1fr 1fr;gap:8px}
#attendance-details>.field-hint{margin:0 0 8px!important;font-size:.75rem;line-height:1.35}
.form-submit{margin-top:4px;gap:2px}.form-submit .field-hint{margin-top:2px;font-size:.75rem}.primary-button{min-height:44px;padding:9px 16px}.secondary-button{padding:8px 12px}
.drop-zone{padding:19px 14px}.drop-zone>svg{margin-bottom:6px}.drop-zone span{font-size:.75rem;margin-top:4px}.upload-action{margin-top:12px}
.photo-preview-heading{margin:10px 0 6px}.photo-preview-grid{max-height:150px;overflow-y:auto;overscroll-behavior:contain;margin-bottom:10px}.photo-preview img{height:75px;aspect-ratio:auto}.remove-photo{width:32px;height:32px;top:6px;right:6px}
@media(max-width:760px){
 .invitation{grid-template-rows:56px minmax(0,1fr)}.language-button{top:max(11px,env(safe-area-inset-top))}.app-header{padding-left:18px}.pages{padding:14px 24px 16px}
 .names{font-size:clamp(3.8rem,17vw,5rem)}.home-mv-placeholder{width:min(300px,100%,calc((100svh - 405px)*1.7778))}
 .swatches{grid-template-columns:repeat(3,1fr);max-width:290px;gap:12px 23px;margin:14px auto 18px}.swatch-color{max-width:61px;aspect-ratio:1.35}.swatch-name{font-size:.8125rem}
 .dress-cards{grid-template-columns:1fr;gap:8px}.dress-card{padding:10px 12px 10px 50px}.dress-card>svg{position:absolute;top:14px;left:14px;width:23px;height:23px}.dress-card h2{font-size:.9375rem;margin-bottom:2px}.dress-card p{font-size:.8125rem;line-height:1.5}.dress-footnote{margin-top:8px}
 .venue-layout{grid-template-columns:1fr;gap:12px}.venue-art{min-height:110px;max-width:100%;border-radius:60px 60px 3px 3px}.venue-art-title{font-size:2rem}.venue-art-date{display:none}.venue-art-type{font-size:.75rem}.venue-info h2{font-size:1.25rem}.venue-address-tag{display:none}.venue-detail{padding-top:8px;margin-bottom:10px}.venue-detail p{font-size:.875rem}.venue-detail small{font-size:.75rem}.venue-address{font-size:.875rem}.venue-actions{flex-direction:row;max-width:none}.venue-actions>*{flex:1;white-space:nowrap;font-size:.8125rem;padding:9px 8px}
 .section-header{margin-bottom:14px}.section-header h1{font-size:1.5rem}.section-header .english-script{font-size:1.5rem}
 .gallery-grid{gap:14px}.photo-caption{font-size:.8125rem;line-height:1.5}
}
@media(max-height:700px){.pages{padding-top:10px}.names{font-size:3.8rem}.home-mv-placeholder{min-width:180px}.date-lockup{margin-top:8px;margin-bottom:5px}.countdown-wrap{margin-top:8px;padding-top:6px}.timeline-event{padding-bottom:10px}.timeline-event:nth-child(even){padding-bottom:10px}.section-header{margin-bottom:10px}.swatches{margin:10px auto 12px;row-gap:8px}.sample-note{margin-top:8px}.dress-card{padding-top:8px;padding-bottom:8px}.demo-banner{margin-bottom:8px}.field,fieldset{margin-bottom:8px}}
@media(prefers-reduced-motion:reduce){.page,.tab-indicator{animation:none!important;transition:none!important}.is-opening .envelope-seal{animation:none!important;opacity:0}}

/* Reference invitation: a short-lived, gently floating navigation cue. */
.navigation-hint{bottom:calc(100% + 12px);height:auto;padding:0 8px;z-index:12;display:flex;justify-content:center;color:#fff;font-family:var(--cjk)}
.navigation-hint>span:first-child{position:relative;display:block;max-width:100%;padding:9px 17px;background:rgba(107,70,54,.94);border-radius:999px;font-size:.8125rem;font-weight:400;letter-spacing:.08em;line-height:1.5;box-shadow:0 10px 20px -12px rgba(0,0,0,.9);animation:nav-cue-bob 2.2s ease-in-out infinite}
.navigation-hint>span:first-child:after{content:'';position:absolute;left:50%;bottom:-5px;width:10px;height:10px;transform:translateX(-50%) rotate(45deg);background:#73503e}
@keyframes nav-cue-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@media(prefers-reduced-motion:reduce){.navigation-hint>span:first-child{animation:none}}
.photo-save-state{display:block;font-family:var(--sans);font-size:.75rem;color:var(--ink-soft);padding:0 3px 4px}

/* V14 — hand-poured antique bronze wax; V13 stationery and timing retained. */
:root{--ink:#424738;--ink-soft:#69705f;--cocoa:#586347;--gold:#8a8f74;--paper:#f0f0e6;--line:rgba(89,99,69,.22);--wash:#fbfcf480;--backdrop:#e2e4da;--scene-w:min(700px,94vw,calc((100svh - 96px)*.90));--scene-h:calc(var(--scene-w)*120/175);color-scheme:light}
body{background:var(--backdrop);height:100svh;color:var(--ink)}
.language-button{top:max(21px,env(safe-area-inset-top));right:max(24px,calc((100vw - 1100px)/2));height:34px;min-width:76px;border:1px solid #89957965;border-radius:30px;background:#f1f3eab8;box-shadow:inset 0 1px #fff9;font-size:.8125rem;z-index:100}
.language-button:hover{background:#f8f9f0}
.cover{display:block;background:var(--backdrop);transition:none;cursor:default;perspective:1800px}
.cover:before{background:var(--backdrop);opacity:1}
.cover:after{inset:18px;border-color:#939e8140}
.cover-corner{top:24px;left:max(28px,calc((100vw - 1100px)/2));color:#606b50;font-size:25px;letter-spacing:3px}
.cover-intro{position:absolute;top:calc(50% - var(--scene-h)/2 - 66px);left:0;right:0;justify-content:center;margin:0;font-size:.8125rem;letter-spacing:.24em;gap:18px;color:#5e694f}
.fine-line{background:#8e997e;width:33px}
.envelope-button{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:var(--scene-w);height:var(--scene-h);aspect-ratio:175/120;margin:0;perspective:1800px;outline-offset:20px;isolation:isolate}
.envelope-button:hover .envelope-scene{transform:none}
.envelope-scene{inset:0;transform:none;transform-origin:50% 50%;transform-style:flat;will-change:transform;isolation:isolate}
.envelope-back{inset:0;z-index:0;background:#657045;border-radius:1px;box-shadow:inset 0 0 0 1px #7d866333,0 3px 4px #333e2630,0 22px 34px -16px #2a392852}
.envelope-back:after{content:'';position:absolute;inset:0;background:var(--art-olive-botanical-webp) center/100% 100%;opacity:.16;mix-blend-mode:multiply}
.envelope-pocket{inset:0;z-index:6;display:block;padding:0;background:none;box-shadow:none;filter:drop-shadow(0 -1px .8px #2b331d45)}
.pocket-sides,.pocket-fold{position:absolute;inset:0;display:block;background:linear-gradient(#979d742e,#979d742e),#697449 var(--art-olive-botanical-webp) center/100% 100%}
.pocket-sides{clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%)}
.pocket-sides:after{content:'';position:absolute;inset:0;background:linear-gradient(40deg,#1d261425,transparent 45%,#ffffed0c 55%,transparent);border:1px solid #ffffed0f}
.pocket-fold{clip-path:polygon(0 100%,0 96%,50% 49%,100% 96%,100% 100%);background-position:bottom;background-size:100% 160%;filter:brightness(1.025);box-shadow:inset 0 -1px #3d482e88}
.envelope-flap{height:68%;background:none;box-shadow:none;z-index:8;transform-origin:50% 0;transform-style:flat;filter:drop-shadow(0 2px 1px #28351b6b) drop-shadow(0 6px 5px #28351b25);will-change:transform}
.flap-front,.flap-back{inset:0;box-shadow:none;-webkit-mask:var(--art-flap-mask-svg) center/100% 100% no-repeat;mask:var(--art-flap-mask-svg) center/100% 100% no-repeat}
.flap-front{background:linear-gradient(#979d742e,#979d742e),#6c754d var(--art-olive-botanical-webp) center top/100% 151%;filter:brightness(1.035)}
.flap-back{background:#737c53;box-shadow:inset 0 1px 4px #26331c28}
.flap-back:after{content:'';position:absolute;inset:0;background:var(--art-paper-grain-svg);opacity:.18}
.envelope-flap.is-inside .flap-front{visibility:hidden}
.envelope-seal{left:42%;top:48%;width:16%;z-index:12;transform:none;transition:none;filter:drop-shadow(.35px .7px .45px #31221257) drop-shadow(1px 3px 2px #35432840)}
.envelope-seal .seal-art{filter:none;opacity:1}
/* The new wax has a real alpha silhouette; no polygon cuts its handmade rim. */
.seal-art img{clip-path:none;object-fit:contain}
.envelope-button:hover .envelope-seal{transform:none;filter:drop-shadow(.35px .7px .45px #31221257) drop-shadow(1px 3px 2px #35432840)}
.seal-glint{display:none}
.inner-letter{left:18.4%;top:-21.4291667%;right:auto;bottom:auto;width:63.2%;height:auto;aspect-ratio:100/155;display:block;padding:0;background:none;box-shadow:none;opacity:1;transform:rotate(-90deg);z-index:3;transform-origin:50% 50%;transform-style:flat;will-change:transform}
.suite-main{position:absolute;inset:0;display:block;z-index:2;background:#e5e7dc;box-shadow:1px 1px 0 #f6f6ec,-1px -1px 0 #c2c8b5,0 4px 9px #2f3a2228,0 16px 23px -16px #34402566;isolation:isolate;transform-origin:50% 50%;will-change:transform}
.main-paper-art{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.card-copy{position:absolute;inset:23% 19% 23%;display:flex;flex-direction:column;align-items:center;text-align:center;z-index:2;color:#545944;line-height:1.3;font-family:var(--serif);text-shadow:0 .5px #fffff599}
.printed-prelude{font-size:calc(var(--scene-w)*.019);font-style:italic;white-space:nowrap}
.printed-names{font-family:var(--script);font-size:calc(var(--scene-w)*.089);line-height:1.45;margin:2% -20% 6%;white-space:nowrap}
.printed-invitation{font-size:calc(var(--scene-w)*.020);line-height:1.5}
.printed-date{font-size:calc(var(--scene-w)*.020);margin-top:auto;letter-spacing:.03em;white-space:nowrap}
.printed-venue{font-size:calc(var(--scene-w)*.025);margin-top:8%;white-space:nowrap}
.printed-close{font-family:var(--script);font-size:calc(var(--scene-w)*.035);margin-top:8%;white-space:nowrap}
.card-aura{position:absolute;inset:-14%;z-index:0;background:radial-gradient(ellipse,#fffdeac9 12%,#fcffe960 48%,transparent 73%);filter:blur(15px);opacity:0;pointer-events:none}
.paper-light{position:absolute;inset:0;z-index:3;background:linear-gradient(125deg,#fffff8aa,transparent 45%,#fafde990);mix-blend-mode:screen;opacity:0;pointer-events:none}
.cover-instruction{position:absolute;left:0;right:0;top:calc(50% + var(--scene-h)/2 + 38px);justify-content:center;font-size:.8125rem;letter-spacing:.12em;margin:0;color:#626e51}
.touch-mark{width:5px;height:5px;background:#6e7b5c;box-shadow:0 0 0 5px #68785a0b;animation:none}
.cover-footer{position:absolute;top:calc(50% + var(--scene-h)/2 + 69px);left:0;right:0;text-align:center;margin:0;letter-spacing:.17em;font-size:.75rem;color:#7c866d}
.is-opening .cover-intro,.is-opening .cover-instruction,.is-opening .cover-footer,.is-opening .cover-corner{opacity:0;transition:opacity .6s}
.is-opening .envelope-seal{animation:none;transition:none}
/* Each hinge carries a complete bird. The upright bird's upper neck covers
   the bowed head, leaving its beak visible. Below this crossing, the curved
   bird remains in front, with its lower neck joined to its wing. */
.waistband{position:absolute;left:-1.5%;top:29%;width:103%;aspect-ratio:100/62;z-index:5;transform-style:flat;--head-region:polygon(59% 0,100% 0,100% 36%,69% 36%,63% 33%,59% 29%)}
.band-leaf,.band-neck,.band-shadow{position:absolute;top:0;bottom:0;width:80%;transform-style:flat;pointer-events:none}
.band-left,.band-neck,.shadow-left{left:0;--swan-mask:var(--art-swan-left-v11-webp);--swan-x:-5%;--swan-y:4.032258%;--swan-width:96.25%;--fold-origin:1.875% 68.951613%;--reverse-fill:linear-gradient(95deg,#cecec3 0%,#e2e1d6 24%,#f1efe5 60%,#faf8ef 100%);--surface-shade:linear-gradient(95deg,#4b4e4240,transparent 78%)}
.band-right,.shadow-right{right:0;--swan-mask:var(--art-swan-right-v13-webp);--swan-x:12.5%;--swan-y:9.677419%;--swan-width:92.5%;--fold-origin:98.125% 68.951613%;--reverse-fill:linear-gradient(265deg,#d4d2c5 0%,#eeece2 27%,#fffdf4 72%,#f7f5eb 100%);--surface-shade:linear-gradient(265deg,#4b4e422d,transparent 78%)}
.band-left{z-index:3}.band-right{z-index:4}.band-neck{z-index:5}
.leaf-plane,.shadow-plane{position:absolute;inset:0;transform-origin:var(--fold-origin);transform-style:flat;will-change:transform}
.leaf-face,.neck-pass{position:absolute;inset:0;display:block;backface-visibility:visible;-webkit-backface-visibility:visible;transform:none;filter:none}
.swan-art,.swan-reverse,.swan-edge,.swan-shading,.swan-silhouette{position:absolute;left:var(--swan-x);top:var(--swan-y);width:var(--swan-width);height:auto;aspect-ratio:3/2;max-width:none;object-fit:fill;transform:none}
.swan-reverse,.swan-edge,.swan-shading,.swan-silhouette{-webkit-mask:var(--swan-mask) center/100% 100% no-repeat;mask:var(--swan-mask) center/100% 100% no-repeat}
.swan-art{filter:drop-shadow(.3px 1px .7px #625b453d) drop-shadow(.6px 2.2px 1.7px #555b3e19)}
.swan-edge{background:#b6b3a3;transform:translate(.25px,1.1px)}
.swan-reverse{background:var(--reverse-fill);filter:drop-shadow(-.35px -.35px 0 #fffff4b3)}
.swan-shading{background:var(--surface-shade);opacity:var(--front-shade,0)}
.neck-pass .swan-art,.neck-pass .swan-shading{clip-path:var(--head-region)}
.neck-pass .swan-art{filter:drop-shadow(.35px 1.1px .65px #6359444a)}
.belt-paper{position:absolute;top:56.048387%;width:63.75%;height:25.806452%;display:block;background:linear-gradient(180deg,#fffdf4,#efede3 78%,#d9d8cb);box-shadow:0 .6px .6px #6266533d,inset 0 .6px #fffffa;transform:none}
.band-left .belt-paper,.shadow-left .belt-paper{left:0}
.band-right .belt-paper,.shadow-right .belt-paper{right:0}
.leaf-back .belt-paper{background:var(--reverse-fill);box-shadow:0 1px 0 #b8b5a5,inset 0 .5px #fffff0}
.band-shadow{z-index:0;opacity:var(--cast-opacity,.17);filter:blur(var(--cast-blur,.65px));transform:translate(var(--cast-x,.5px),var(--cast-y,1px));will-change:transform,filter,opacity}
.band-shadow .swan-silhouette,.band-shadow .belt-paper{background:#43483b;box-shadow:none}
.band-crease{position:absolute;top:55.322581%;height:27.258065%;width:2.3%;z-index:2;opacity:var(--crease-opacity,0);background:linear-gradient(90deg,transparent,#46503c55 40%,#fffff09c 58%,transparent);pointer-events:none}
.crease-left{left:.5%}.crease-right{right:.5%;transform:scaleX(-1)}
.transition-light{position:fixed;inset:0;z-index:110;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 48%,#f8f7ee 0%,#f3f3e9 48%,#e9ecdf 100%);will-change:opacity}

/* One stationary sheet fills the viewport; tabs change only its readable content. */
:root{--ink:#424d38;--ink-soft:#536442;--cocoa:#586849;--page-gutter:clamp(28px,12vw,100px)}
.invitation{position:fixed;inset:0;width:100%;height:var(--app-height,100svh);margin:0;box-shadow:none;grid-template-rows:clamp(60px,8.5svh,76px) minmax(0,1fr);background:#e5e7dc;transform:none;transition:none;opacity:0;isolation:isolate}
.invitation.is-visible{transform:none;opacity:1}.invitation:after{display:none}
.paper-background{position:absolute;inset:0;z-index:-2;overflow:hidden;background:#e5e7dc;pointer-events:none}
.paper-art{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;object-position:center;display:block;opacity:.8}
.paper-art-wide{display:none}
.app-header{width:min(1100px,calc(100% - 40px));padding:0 91px 0 0;margin:0 auto;border:0;opacity:0;transition:opacity 1.1s ease;min-width:0;z-index:4}
.has-navigation .app-header{opacity:1}
.wordmark{color:#586849;letter-spacing:2px;font-size:24px;gap:6px}.replay-icon{opacity:.65}
.header-date{font-size:.8125rem;letter-spacing:.08em;color:#586849}.header-edition{font-size:.75rem;letter-spacing:.11em;color:#667658}
.language-button{top:max(17px,env(safe-area-inset-top));background:#f5f5eaad;border-color:#929d7d70;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.page-scroll{margin-bottom:calc(var(--nav-height,54px) + max(24px,env(safe-area-inset-bottom)));padding:0;scrollbar-color:#acb89b transparent;scrollbar-width:thin;scroll-behavior:auto;overflow-y:auto;overflow-x:hidden;touch-action:pan-y pinch-zoom;scroll-padding:20px}
.pages{padding:clamp(22px,5svh,52px) var(--page-gutter) clamp(16px,2.8svh,30px);min-height:100%;display:grid;align-items:center;position:relative}
.page{position:relative;isolation:isolate;width:100%;max-width:680px;min-height:0;margin:0 auto;padding:0;background:none;box-shadow:none;animation:chapter-enter .42s var(--ease) both}
.page:before,.page:after{content:none}
.page-home{width:min(460px,100%);aspect-ratio:auto;min-height:0;padding:0;align-self:center;background:none;box-shadow:none}
.home-content{position:static;inset:auto;display:grid;justify-items:center;align-content:center;text-align:center;padding:0;row-gap:clamp(11px,1.75svh,20px)}
.home-content>*{max-width:100%;min-width:0;margin:0}
.names{font-family:var(--script);font-weight:400;font-size:clamp(3.7rem,15vw,5.2rem);line-height:1.15;letter-spacing:0;color:#4d5a40;margin:0;white-space:normal;text-shadow:0 1px #fff9}
.names .ampersand{font-size:.72em;margin:0 .04em}
.home-mv-placeholder{width:245px;max-width:100%;min-width:0;height:auto;min-height:86px;aspect-ratio:auto;display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;align-items:center;justify-content:center;column-gap:11px;row-gap:0;margin:0;padding:16px 20px;border:1px solid #8b967750;border-radius:1px;background:#eff2e340;box-shadow:inset 0 1px #fff9}
.home-mv-placeholder .video-symbol{grid-row:1/3;width:28px;height:28px;border-color:#919e7d99;color:#778565}
.home-mv-placeholder .video-symbol svg{width:10px;height:10px}
.home-mv-placeholder p{font-size:.9375rem;line-height:1.55;letter-spacing:.01em;align-self:end;color:#526346}
.home-mv-placeholder small{font-size:.75rem;line-height:1.65;align-self:start;color:#718160}
.date-lockup{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:18px;margin:3px 0 0;width:100%;max-width:308px}
.date-side{width:auto;padding:6px 0;font-size:.875rem;letter-spacing:.035em;border-color:#87937160;white-space:normal;overflow-wrap:anywhere;color:#57664a}
.date-middle{font-size:2.4rem;line-height:1.06;letter-spacing:.065em;color:#4d5b40}
.date-middle span{font-size:.875rem;letter-spacing:.22em;margin-top:3px;line-height:1.45}
.home-place{margin:0}.home-location{font-size:1.125rem;line-height:1.6;letter-spacing:.01em;white-space:normal;color:#4b5a3e}
.home-city{font-size:.8125rem;line-height:1.6;letter-spacing:.15em;margin-top:2px;color:#718160}
.countdown-wrap{width:100%;max-width:330px;margin:4px 0 0;padding-top:12px;border-top:1px solid #89967550}
.countdown-label{font-size:.75rem;line-height:1.6;letter-spacing:.015em;margin-bottom:7px;color:#6d7b5c}
.countdown{width:100%;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:4px}.countdown-unit{min-width:0;overflow-wrap:anywhere}
.countdown-value{font-size:2.1rem;line-height:1.1;font-weight:400;color:#566a44}
.countdown-unit:not(:last-child):after{font-size:1.2rem;line-height:1.7;color:#9ba88b}
.countdown-unit small{font-size:.75rem;letter-spacing:.06em;margin-top:3px;color:#6f805d}
.section-header{margin-bottom:22px}
.section-header h1{font-size:1.5rem;letter-spacing:.06em;line-height:1.5;margin:0 0 4px;color:#515d42}
.section-header .english-script{font-size:1.7rem;line-height:1.3;margin:0;color:#8a9478}
.section-header .eyebrow,.section-header .lead{display:none}
.timeline{max-width:430px;padding:0}
.timeline:before{background:#a6b394;top:12px;bottom:38px}
.timeline-event{padding:0 29px 19px 0;min-height:0}
.timeline-event:nth-child(even){padding:0 0 19px 29px}
.timeline-event .timeline-time{font:1.6rem/1.2 var(--serif);color:#7c8a64;letter-spacing:.04em}
.timeline-event h2{font-size:1rem;line-height:1.5;letter-spacing:.015em;margin:3px 0}
.timeline-event p:not(.timeline-time){font-size:.875rem;line-height:1.55;color:#788369}
.timeline-marker{width:26px;height:26px;right:-13px;background:#eff2e4;border-color:#a8b794;box-shadow:0 0 0 5px #f0f1e7}
.timeline-event:nth-child(even) .timeline-marker{left:-13px}.timeline-marker svg{width:13px;height:13px}
.timeline-ending{font-size:1.5rem;line-height:1.4;color:#8b9879;margin-top:3px}
.sample-note{font-size:.75rem;line-height:1.65;margin-top:14px;color:#7e8a6c}
.swatches{gap:10px;max-width:370px;margin:22px auto 26px}
.swatch-name{font-size:.8125rem;line-height:1.5;color:#6c785b}
.swatch-color{max-width:57px}
.dress-cards{grid-template-columns:1fr;gap:0}
.dress-card,.dress-card.avoid{border:0;border-bottom:1px solid #a6b49240;border-radius:0;background:transparent;padding:14px 8px 14px 43px;position:relative}
.dress-card:before{display:none}.dress-card>svg{position:absolute;left:7px;top:18px;width:23px;height:23px;color:#889772}
.dress-card h2{font-size:.9375rem;letter-spacing:.05em;margin-bottom:4px}.dress-card p{font-size:.875rem;line-height:1.65;color:#748265}
.dress-footnote{margin-top:14px;font-size:.8125rem;color:#7a866b}
.venue-layout{grid-template-columns:1fr;gap:17px;max-width:400px;margin:0 auto}
.venue-art{min-height:118px;border-radius:65% 65% 1px 1px/80% 80% 1px 1px;background:#69764c;border-color:#7c8c6025;color:#f3f3e8;box-shadow:inset 0 0 0 5px #e0e5cd20}
.venue-art:before{background:var(--art-olive-botanical-webp) center/cover;filter:none;opacity:.52}
.venue-art:after{background:#30462325}
.venue-art-title{font-size:2.1rem;text-shadow:none;line-height:1.4}.venue-art-type{font-size:.8125rem;letter-spacing:.18em}.venue-art-date,.venue-address-tag{display:none}
.venue-info{text-align:center}.venue-info h2{font-size:1.25rem;letter-spacing:.015em}.venue-address{font-size:.9375rem;line-height:1.75;margin:10px 0 14px;color:#71805e}
.venue-detail{justify-content:center;text-align:left;margin-bottom:15px;border-color:#afbd9e4d;padding-top:12px}.venue-detail p{font-size:.875rem}.venue-detail small{font-size:.8125rem}
.venue-actions{flex-direction:row;gap:8px;max-width:none}.venue-actions>*{flex:1;font-size:.875rem;min-height:44px;padding:10px 8px;white-space:nowrap}.venue-note{font-size:.75rem;line-height:1.7;margin-top:13px;color:#859174}
.gallery-grid{gap:16px}.photo-placeholder{background:#f4f6eb;border-color:#adba9b;box-shadow:0 3px 8px #4a632b0e}.placeholder-inner{background:linear-gradient(135deg,#e1e7d6,#cdd7be);min-height:230px;color:#7b8b65}.placeholder-inner p{font-size:.875rem;text-align:center}.photo-caption{font-size:.8125rem;color:#7e8d6a}
.demo-banner{font-size:.8125rem;line-height:1.65;padding:9px 11px;margin-bottom:17px;border-color:#a8b99566;background:#dbe5ce33;color:#72835d;border-radius:2px}
.field,fieldset{margin-bottom:16px}.field-label,fieldset legend{font-size:.9375rem;line-height:1.6;margin-bottom:6px;color:#576747}
.text-input,select,textarea{min-height:47px;padding:10px 12px;border:1px solid #abb99b;background:#fffff99e;border-radius:2px;font-size:1rem;color:#4d5e3e}.text-input::placeholder,textarea::placeholder{color:#8a957b}
.text-input:focus,select:focus,textarea:focus{border-color:#859c6b;box-shadow:0 0 0 3px #9aaf7c1a}
.radio-card{min-height:47px;border-color:#abb99b;border-radius:2px;background:#fffff880;font-size:.9375rem;padding:10px}.radio-card:has(input:checked){background:#d8e3c44d;border-color:#7b9560;box-shadow:inset 0 0 0 1px #7b9560}.radio-card input{accent-color:#788d5e}
.field-hint{font-size:.8125rem;line-height:1.65;color:#7d8c6a}#attendance-details>.field-hint{font-size:.8125rem;line-height:1.65;margin-bottom:14px!important}
.form-row{gap:12px}.attendance-options{gap:10px}textarea{height:92px;min-height:92px}
.primary-button{background:#677c4e;border:1px solid #677c4e;color:#fffff7;min-height:46px;border-radius:3px;box-shadow:0 2px 4px #40562914}.primary-button:hover{background:#53673e}
.secondary-button{border-color:#94a67b;background:#f3f6e980;color:#677b4e;border-radius:3px;min-height:44px}.secondary-button:hover{background:#e2ecd680}
.form-submit{gap:5px;margin-top:18px}.form-submit .field-hint{font-size:.75rem}
.drop-zone{background:#dde8ce26;border-color:#a2b78a;padding:24px 15px}.drop-zone:hover,.drop-zone.is-dragging{background:#dbe7ce77;border-color:#829a64}.drop-zone strong{font-size:.9375rem}.drop-zone span{font-size:.8125rem;line-height:1.6;margin-top:6px}.drop-zone>svg{color:#8aa36f}
.photo-preview-grid{max-height:230px}.photo-preview img{height:92px}.photo-save-state{font-size:.75rem}.remove-photo{width:32px;height:32px}
.success-card{background:#f5f9ee;border-color:#b1c39b}.response-summary{border-color:#b7c79f88}.upload-success{background:#e7efdc;border-color:#a6ba90}
.navigation-wrap{position:fixed;left:max(14px,calc((100% - 604px)/2));right:max(14px,calc((100% - 604px)/2));bottom:max(17px,env(safe-area-inset-bottom));padding:5px;border:1px solid #ffffff9e;border-radius:40px;background:#f5f7eede;box-shadow:0 7px 23px #40532c1e,inset 0 1px #fff;opacity:0;visibility:hidden;transform:translateY(17px);pointer-events:none;transition:opacity .85s ease,transform 1.05s cubic-bezier(.16,1,.3,1),visibility .85s;z-index:30}
.has-navigation .navigation-wrap{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}
.tab-bar{display:flex;padding:0;gap:0}.tab{min-height:43px;font-size:.8125rem;color:#61744c;border-radius:30px;letter-spacing:0}.tab svg{width:19px;height:19px}.tab:hover{background:#c3d2ab2b;color:#536442}
.tab[aria-selected=true]{color:#fffff5;background:transparent;box-shadow:none}.tab[aria-selected=true]:before{display:none}.tab-indicator{background:linear-gradient(120deg,#65794f,#536b3f);box-shadow:0 1px 3px #455b3029;border-radius:30px}
.navigation-hint>span:first-child{background:#6b8054ed;color:#fffff7;font-size:.8125rem;letter-spacing:.04em;font-family:var(--cjk);padding:9px 16px;box-shadow:0 5px 10px #50673520}
.navigation-hint>span:first-child:after{background:#6b8054}.toast{background:#667d4d;color:#fffff5}

.navigation-wrap{position:absolute;left:max(14px,calc((100% - 604px)/2));right:max(14px,calc((100% - 604px)/2));bottom:max(16px,env(safe-area-inset-bottom));background:#f5f7ede6;border-color:#fffef8d9;box-shadow:0 7px 24px #4f5e3b25,inset 0 1px #fffdf5}
.tab{min-height:44px;font-size:.875rem}.tab svg{width:19px;height:19px}
.page :is(.field,.form-container,.upload-container,.venue-info){min-width:0}
.page :is(p,label,legend,h1,h2,dd){overflow-wrap:anywhere}
.section-header{margin-bottom:22px}.section-header h1{font-size:1.65rem;line-height:1.45;color:#45563a}.section-header .english-script{font-size:1.85rem;color:#788b62}
.timeline{max-width:460px}.timeline-event:not(:last-child){margin-bottom:-24px}.timeline-event p:not(.timeline-time){color:#617350}.timeline-ending{margin-top:8px}
.swatches{grid-template-columns:repeat(6,minmax(0,1fr));max-width:430px;gap:10px;margin:22px auto 24px}.swatch-name{color:#5f7050}.swatch-color{max-width:61px}
.dress-cards{max-width:440px;margin:auto}.dress-card p{color:#5c6f4c}.dress-footnote,.sample-note{color:#6c7b5e}
.venue-layout{max-width:480px}.venue-art{max-width:100%}.venue-info h2{color:#4d623e}
.venue-address{color:#566b45}.venue-note{color:#6c7d5c}.venue-detail{color:#61744e}
.form-container,.upload-container{max-width:510px;margin:0 auto}.demo-banner{color:#62784f;background:#eff3e68c}
.field-label,fieldset legend{color:#4e633d}.field-hint{color:#6e805c}
.text-input,select,textarea{background:#fafbf2bf}.radio-card{background:#f9fbf082}.secondary-button{background:#f7f9efb3}
.gallery-grid{max-width:590px;margin:auto}.photo-placeholder{background:#f2f5e89e}.placeholder-inner{min-height:260px}
/* Quiet typography still needs enough contrast on the textured sage sheet. */
.page :is(.home-mv-placeholder small,.home-city,.countdown-label,.countdown-unit small,.sample-note,.dress-footnote,.swatch-name,.dress-card p,.venue-note,.venue-detail,.field-hint,.photo-caption,.photo-save-state,.drop-zone span){color:var(--ink-soft)}
.timeline-event p:not(.timeline-time){color:var(--ink-soft)}
.timeline-event .timeline-time,.timeline-ending,.section-header .english-script{color:#5f7050}
.demo-banner{color:#536442}.text-input::placeholder,textarea::placeholder{color:#637252}
@media(min-aspect-ratio:1/1){.paper-art-portrait{display:none}.paper-art-wide{display:block}.pages{padding-top:clamp(22px,4svh,50px)}.page-home{width:min(460px,100%)}.home-content{row-gap:13px}.home-mv-placeholder{min-height:80px}.page-gallery{max-width:760px}.page-dress{max-width:640px}.dress-cards{grid-template-columns:repeat(3,1fr);gap:14px;max-width:640px}.dress-card,.dress-card.avoid{padding:13px 8px 13px 37px}.dress-card>svg{left:5px}.swatches{max-width:570px}.venue-layout{max-width:630px;grid-template-columns:.75fr 1.25fr;gap:28px}.venue-art{min-height:240px}.venue-actions{flex-direction:column}.venue-info{text-align:left}.venue-detail{justify-content:flex-start}.gallery-grid{max-width:620px}}
@media(max-width:760px){
 .cover:after{inset:10px}.cover-corner{left:22px;top:20px;font-size:24px}.language-button{right:18px;top:max(16px,env(safe-area-inset-top));height:32px;min-width:73px}
 .cover-intro{font-size:.8125rem;gap:13px;letter-spacing:.15em;top:calc(50% - var(--scene-h)/2 - 56px);max-width:none}.fine-line{width:24px}.cover-instruction{top:calc(50% + var(--scene-h)/2 + 28px);font-size:.8125rem;letter-spacing:.07em}.cover-footer{top:calc(50% + var(--scene-h)/2 + 57px)}
 .app-header{width:calc(100% - 36px);padding:0 86px 0 0}.wordmark{font-size:22px}.header-date{font-size:.75rem;letter-spacing:.04em}.header-edition{display:none}
 .pages{padding-top:clamp(24px,5svh,42px);padding-bottom:22px}.page-home{width:100%;max-width:380px}.names{font-size:clamp(3.6rem,15vw,4.6rem)}
 .home-content{row-gap:13px}.home-mv-placeholder{width:225px;min-height:78px;padding:12px 17px;column-gap:9px}.home-mv-placeholder p{font-size:.875rem}.date-lockup{gap:15px;max-width:300px}.date-side{font-size:.8125rem}.date-middle{font-size:2.25rem}.date-middle span{font-size:.8125rem}.home-location{font-size:1.0625rem}.home-city{font-size:.8125rem}.countdown-value{font-size:2rem}
 .section-header{margin-bottom:22px}.section-header h1{font-size:1.5rem}.section-header .english-script{font-size:1.8rem}
 .timeline-event{padding:0 26px 18px 0}.timeline-event:nth-child(even){padding:0 0 18px 26px}.timeline-event:not(:last-child){margin-bottom:-28px}.timeline-event h2{font-size:.9375rem;line-height:1.5}.timeline-event .timeline-time{font-size:1.5rem}.timeline-event p:not(.timeline-time){font-size:.8125rem;line-height:1.6}.timeline-ending{font-size:1.35rem;margin-top:5px}
 .swatches{gap:6px;max-width:340px;margin:18px auto 22px}.swatch-color{max-width:52px}.swatch-name{font-size:.75rem;line-height:1.5}
 .dress-cards{grid-template-columns:1fr;gap:0}.dress-card,.dress-card.avoid{padding:12px 0 12px 36px}.dress-card>svg{left:1px;top:15px;width:22px;height:22px}.dress-card p{font-size:.875rem;line-height:1.6}.dress-footnote{font-size:.8125rem}
 .venue-layout{grid-template-columns:1fr;gap:15px}.venue-art{min-height:118px}.venue-info{text-align:center}.venue-detail{justify-content:center}.venue-actions{flex-direction:column;gap:8px}.venue-info h2{font-size:1.25rem}.venue-address{font-size:.9375rem;line-height:1.7}.venue-note{font-size:.75rem}
 .gallery-grid{gap:14px}.placeholder-inner{min-height:230px}.photo-caption{font-size:.8125rem}
 .field-label,fieldset legend{font-size:.9375rem}.field,fieldset{margin-bottom:15px}.radio-card{font-size:.9375rem}.demo-banner{font-size:.8125rem}.form-row,.attendance-options{gap:10px}
 .navigation-wrap{left:14px;right:14px;bottom:max(15px,env(safe-area-inset-bottom));padding:5px}.tab{min-height:44px;font-size:.8125rem;gap:4px}.tab svg{width:18px;height:18px}.navigation-hint>span:first-child{font-size:.75rem;padding:8px 13px}
}
@media(max-width:430px){.form-row,.attendance-options{grid-template-columns:1fr}.gallery-grid{grid-template-columns:1fr}.photo-placeholder:nth-child(2){margin-top:0}}
@media(max-width:359px){:root{--page-gutter:26px}.header-date{display:none}.names{font-size:3.4rem}.home-mv-placeholder{width:210px;min-height:70px}.home-content{row-gap:12px}.date-lockup{gap:10px}.home-location{font-size:1rem}.countdown-value{font-size:1.8rem}.swatches{grid-template-columns:repeat(3,1fr);max-width:245px;gap:13px 18px}.swatch-name{font-size:.8125rem}.section-header h1{font-size:1.4rem}}
@media(max-height:650px){.pages{align-items:start;padding-top:20px;padding-bottom:20px}.page-home{min-height:0;aspect-ratio:auto;align-self:start}.home-content{row-gap:10px}.names{font-size:3.5rem}.home-mv-placeholder{min-height:66px;padding:9px 16px}.date-middle{font-size:2.05rem}.countdown-value{font-size:1.8rem}.countdown-wrap{padding-top:9px}.cover-intro{top:calc(50% - var(--scene-h)/2 - 40px)}.cover-instruction{top:calc(50% + var(--scene-h)/2 + 20px)}.cover-footer{top:calc(50% + var(--scene-h)/2 + 46px)}}
/* The return action shares exactly the same quiet paper pill as language. */
.language-button,.back-button{top:max(17px,env(safe-area-inset-top));height:34px;min-width:76px;padding:0 12px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid #929d7d70;border-radius:30px;background:#f5f5eaad;box-shadow:inset 0 1px #fff9;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);font-family:var(--sans);font-size:.8125rem;font-weight:400;line-height:1;letter-spacing:.05em;color:#586849;transition:background .2s}
.back-button{position:fixed;left:max(24px,calc((100vw - 1100px)/2));right:auto;white-space:nowrap}
.language-button:hover,.back-button:hover{background:#f8f9f0}
.back-button:focus-visible{outline:2px solid #7d8e67;outline-offset:4px}
@media(max-width:760px){.language-button,.back-button{top:max(16px,env(safe-area-inset-top));height:32px;min-width:73px;padding:0 9px;gap:6px}.back-button{left:18px}}
@media(prefers-reduced-motion:reduce){.navigation-wrap,.app-header{transition:none}.card-aura,.paper-light,.transition-light{display:none}.page{animation:none}.band-leaf,.band-shadow,.leaf-plane,.shadow-plane,.envelope-scene,.inner-letter{will-change:auto}}

