@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)),url('/assets/letter-paper.jpeg') 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:url('/assets/envelope-paper.png') 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 url('/assets/envelope-paper.png') 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:url('/assets/letter-paper.jpeg') 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)),url('/assets/letter-paper.jpeg') 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:url('/assets/envelope-paper.png') 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}
