@import url("https://fonts.googleapis.com/css2?family=Italiana&family=Source+Sans+3&display=swap");
/* Every theme supplies its own tokens and composition; shared rules cover accessibility. */
html{scroll-padding-top:24px}body{background:var(--stage,#eee7d6)}
.heirloom{--space:clamp(20px,4vw,60px);--shadow:0 24px 70px #0003;--ease:cubic-bezier(.19,1,.22,1);color:var(--text);background:var(--stage);font-family:var(--body),Georgia,serif;overflow:clip}
.heirloom *{box-sizing:border-box}.heirloom [hidden]{display:none!important}.heirloom h1,.heirloom h2,.heirloom h3{font-family:var(--display),Georgia,serif;font-weight:400;overflow-wrap:anywhere}.heirloom h1{font-size:clamp(2.6rem,6vw,6.8rem);line-height:1.06;margin:20px 0}.heirloom h2{font-size:clamp(1.8rem,3.5vw,3.5rem);line-height:1.18}.heirloom h3{font-size:1.6rem}.heirloom p{line-height:1.8;overflow-wrap:anywhere}.heirloom section{padding:var(--space);min-width:0;text-align:left;scroll-margin-top:24px}.heirloom .eyebrow,.heirloom .kicker{color:var(--muted);font:11px/1.7 var(--body),sans-serif;letter-spacing:.16em;text-transform:uppercase}.heirloom a{color:inherit;overflow-wrap:anywhere}.heirloom button,.heirloom .button,.heirloom summary,.heirloom nav a{min-height:44px;min-width:44px}.heirloom .button{background:var(--text);color:var(--paper);border-radius:0}.heirloom .button.outline{background:transparent;color:var(--text)}.heirloom button{cursor:pointer;font:14px var(--body);padding:12px 18px;border:1px solid currentColor;background:var(--paper);color:var(--text)}.heirloom :focus-visible{outline:3px solid var(--text);outline-offset:5px}.heirloom .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.heirloom label,.heirloom input,.heirloom textarea,.heirloom select{font-family:var(--body);color:var(--text)}.heirloom input,.heirloom textarea,.heirloom select{background:var(--paper);min-height:44px}.heirloom .long-copy{margin:25px 0;max-width:65ch}.heirloom .photo-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.heirloom img{max-width:100%;display:block}.heirloom .photo-gallery img{width:100%;height:clamp(180px,27vw,350px);object-fit:cover}.heirloom .schedule{grid-template-columns:1fr;margin:25px 0}.heirloom #countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;text-align:center}.heirloom #countdown b{font-size:clamp(24px,3.2vw,48px)}.heirloom #countdown span{font-size:9px;letter-spacing:.04em}.heirloom .honeypot{position:fixed;left:-9999px;width:1px;height:1px;overflow:hidden}.heirloom .replay-row{padding:25px var(--space);text-align:center}.heirloom .replay-row button{background:transparent}.heirloom .cover-photo{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--secondary)}
.heirloom-cover{position:fixed;inset:0;z-index:100;min-height:100vh;min-height:100svh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(ellipse at 50% 30%,var(--stage),var(--dark));overflow:auto;perspective:1600px}.heirloom-cover:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 100px #0004}.cover-object{position:relative;width:min(86vw,600px);min-height:340px;aspect-ratio:1.45;box-shadow:var(--shadow);isolation:isolate;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;background:var(--secondary);border:1px solid #fff3;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:35px}.cover-object:after{content:"";position:absolute;inset:8px;pointer-events:none;border:1px solid var(--metal);opacity:.6}.cover-name{position:relative;z-index:2;font:clamp(1.6rem,4vw,3rem)/1.2 var(--display);text-align:center;margin:0 0 24px;max-width:95%;overflow-wrap:anywhere}.cover-hint{position:relative;z-index:3;margin:18px 0 0;font:12px var(--body);text-align:center}.fastening{z-index:4;position:relative;flex-shrink:0;width:88px;height:88px;padding:0!important;border:0!important;background:none!important;border-radius:50%;filter:none;color:var(--paper)!important}.seal-face{position:absolute;inset:0;border-radius:48% 52% 45% 55%;background:radial-gradient(circle at 35% 28%,var(--seal-light),var(--seal) 65%,var(--dark));box-shadow:inset 3px 4px 3px #fff4,inset -4px -4px 6px #0005,0 10px 18px #0005;display:grid;place-items:center;font:30px var(--display);text-shadow:1px 2px 1px #0009;border:5px double #fff3}.seal-left,.seal-right{position:absolute;inset:0;opacity:0;border-radius:50%;background:var(--seal);box-shadow:inset 0 0 12px #fff5;pointer-events:none}.seal-left{clip-path:polygon(0 0,55% 0,43% 30%,58% 50%,42% 75%,50% 100%,0 100%)}.seal-right{clip-path:polygon(55% 0,100% 0,100% 100%,50% 100%,42% 75%,58% 50%,43% 30%)}.fastening:focus-visible{outline:3px solid var(--paper)}.grain{position:absolute;inset:0;pointer-events:none;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' opacity='.22' filter='url("%23n")' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}.ornament-svg{width:120px;height:70px;display:block;color:var(--metal)}.ornament-svg path{fill:none;stroke:currentColor;stroke-width:1.4}.heirloom .title-word{display:inline-block}.is-open .title-word{animation:word-rise 900ms var(--ease) both;animation-delay:calc(var(--word)*80ms)}.heirloom .revealed{animation:paper-rise 900ms var(--ease) both}.heirloom .revealed .ornament-svg{animation:line-rise 1.2s var(--ease) both;transform-origin:left}.ambient{position:absolute;inset:0;pointer-events:none;overflow:hidden}.ambient i{position:absolute;left:calc(var(--n)*17%);top:calc(var(--n)*13%);width:4px;height:4px;border-radius:50%;background:var(--metal);opacity:.3;animation:dust 9s ease-in-out infinite;animation-delay:calc(var(--n)*-1.3s)}.is-opening .cover-hint{opacity:0}.is-opening .cover-object{animation:object-out 2.4s var(--ease) both}.is-opening .fastening{pointer-events:none}@keyframes object-out{0%,65%{opacity:1}100%{opacity:0;transform:translate3d(0,-28px,0) scale(.96)}}@keyframes word-rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes paper-rise{from{opacity:.4;transform:translateY(22px)}to{opacity:1;transform:none}}@keyframes line-rise{from{opacity:0;transform:scaleX(.15)}to{opacity:1;transform:scaleX(1)}}@keyframes dust{50%{transform:translate3d(12px,-30px,0);opacity:.1}}
@supports not (overflow:clip){.heirloom{overflow:hidden}}
@media(max-width:760px){.heirloom .form-grid{grid-template-columns:1fr}.cover-object{padding:24px;min-height:320px}.heirloom-cover{padding:16px}.heirloom section{padding:26px 20px}.heirloom h1{font-size:clamp(2.6rem,11vw,4.2rem)}.heirloom .photo-gallery{gap:10px}}@media(max-height:480px) and (orientation:landscape){.heirloom-cover{align-items:flex-start}.cover-object{min-height:290px;max-width:550px;margin:auto}.cover-name{font-size:1.6rem;margin:0 0 12px}.fastening{width:68px;height:68px}.cover-hint{margin:12px 0}}
@media(prefers-reduced-motion:reduce){.heirloom *{animation:none!important;transition:none!important;scroll-behavior:auto!important}.ambient{display:none}.is-opening .cover-object{opacity:1;transform:none}}

.heirloom:not(.is-opening) .seal-face{animation:seal-pulse 3s ease-in-out infinite}@keyframes seal-pulse{50%{transform:scale(1.035)}}
.theme-scroll{--text:#174b51;--paper:#f5eee2;--metal:#8c693f;--muted:#174b51;--secondary:#c3d6ce;--dark:#0d3037;--stage:#f5eee2;--seal:#174b51;--seal-light:#8c693f;--display:"Italiana";--body:"Source Sans 3";--motion:2400ms}
/* VENETIAN: long vellum scroll becomes an editorial correspondence suite. */
.theme-scroll .cover-object{color:#174b51;background:#f5eee2;width:min(78vw,460px);min-height:450px;aspect-ratio:.85;border-radius:20px 20px 8px 8px}.theme-scroll .scroll-top,.theme-scroll .scroll-bottom{position:absolute;left:-15px;right:-15px;height:38px;background:linear-gradient(#8c693f,#e5d6b8 20%,#fff9e9 50%,#b9a783);border-radius:24px;box-shadow:0 10px 20px #0004;z-index:3}.scroll-top{top:-14px}.scroll-bottom{bottom:-14px}.ribbon-tail{position:absolute;top:50%;height:34px;left:-12px;right:-12px;background:#174b51;box-shadow:0 5px 8px #0003}.theme-scroll .cover-name{margin-top:0}.theme-scroll .cover-hint{margin-top:30px}.theme-scroll.is-opening .scroll-top{animation:roll-up 1.6s var(--ease) both}.theme-scroll.is-opening .scroll-bottom{animation:roll-down 1.6s var(--ease) both}.theme-scroll.is-opening .ribbon-tail{animation:ribbon-away 1s both}.theme-scroll .heirloom-intro{display:grid;grid-template-columns:1fr .9fr;gap:50px;align-items:center;max-width:1400px;margin:auto;padding:75px 6%}.theme-scroll .intro-portrait{margin:0;border:15px solid #fff9ef;box-shadow:var(--shadow);transform:rotate(3deg)}.correspondence-masthead{padding:30px 5%;border-bottom:3px double #174b51;display:flex;align-items:baseline;justify-content:space-between}.correspondence-masthead span{font:clamp(1.4rem,4vw,3.2rem) Italiana}.correspondence-masthead small{letter-spacing:.15em;font-size:10px}.correspondence-grid{max-width:1450px;margin:auto;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:25px;padding:35px 5% 80px}.correspondence-grid section{grid-column:span 6;background:#fffaf0;border:1px solid #c3d6ce;box-shadow:8px 8px 0 #c3d6ce88}.correspondence-grid .story{grid-column:span 8;background:#ffffff66}.correspondence-grid .countdown-wrap{grid-column:span 4;border-radius:50% 50% 0 0}.correspondence-grid .itinerary{grid-column:span 4}.correspondence-grid #celebration{grid-column:span 8;border-left:8px solid #174b51}.correspondence-grid .reply{grid-column:span 8;background:#c3d6ce}.correspondence-grid .photo-gallery{grid-column:span 12;grid-template-columns:repeat(3,minmax(0,1fr));background:none;border:none;box-shadow:none}.theme-scroll .cover-object:before{content:"";position:absolute;left:20px;bottom:40px;width:30px;height:110px;background:#617959;clip-path:polygon(50% 100%,40% 55%,0 40%,30% 10%,50% 40%,75% 0,100% 35%,60% 55%);opacity:.5;transform:rotate(-20deg)}@keyframes roll-up{from{transform:translateY(175px)}to{transform:translateY(-40px)}}@keyframes roll-down{from{transform:translateY(-175px)}to{transform:translateY(40px)}}@keyframes ribbon-away{to{opacity:0;transform:translateX(140px) rotate(12deg)}}@media(max-width:800px){.correspondence-grid{display:block;padding:20px}.correspondence-grid section{margin-bottom:25px}.theme-scroll .heirloom-intro{grid-template-columns:1fr;padding:45px 20px}.theme-scroll .intro-portrait{max-width:350px;margin:auto}.correspondence-masthead{display:block}.correspondence-grid .photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-height:480px){.theme-scroll .cover-object{min-height:300px;aspect-ratio:1.5}}
/* Final contrast audit: small schedule labels use full-strength body ink. */
.heirloom .schedule b{color:var(--text)}

/* Full-viewport envelope; one physical stationery card visible at a time. */
.heirloom.physical-suite{--envelope:var(--text);--envelope-light:var(--secondary)}
.physical-suite .heirloom-cover{padding:0;overflow:hidden;background:var(--envelope);perspective:1800px}
.physical-suite .heirloom-cover:after{box-shadow:inset 0 0 80px #0003;z-index:7}
.physical-suite .cover-object{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:0!important;max-width:none!important;aspect-ratio:auto!important;margin:0!important;padding:0!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;transform:none!important;isolation:auto}
.physical-suite .cover-object:after,.physical-suite .envelope-fold,.physical-suite .scroll-top,.physical-suite .scroll-bottom,.physical-suite .ribbon-tail,.physical-suite .box-lid,.physical-suite .box-card,.physical-suite .airmail-edge,.physical-suite .postmark,.physical-suite .twine,.physical-suite .typed-line,.physical-suite .book-front,.physical-suite .book-spine{display:none}
.physical-suite .cover-object .grain{z-index:4;opacity:.3}
.physical-envelope-back{position:absolute;inset:6px;background:var(--envelope);border:1px solid #fff2;box-shadow:inset 0 0 55px #0004}
.physical-envelope-pocket{position:absolute;inset:8px;background:linear-gradient(35deg,#0002,transparent 46%,#fff1),var(--envelope);clip-path:polygon(0 18%,50% 62%,100% 18%,100% 100%,0 100%);z-index:2;box-shadow:inset 0 -5px 18px #0005}
.physical-envelope-folds{position:absolute;inset:8px;z-index:3;pointer-events:none;background:linear-gradient(38deg,transparent 49.8%,#0003 50%,transparent 50.2%),linear-gradient(-38deg,transparent 49.8%,#0003 50%,transparent 50.2%);opacity:.55;clip-path:polygon(0 18%,50% 62%,100% 18%,100% 100%,0 100%)}
.physical-envelope-flap{position:absolute;left:8px;right:8px;top:8px;height:61%;background:linear-gradient(160deg,#ffffff16,transparent 45%,#0003),var(--envelope);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top center;z-index:5;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.emerging-letter{position:absolute;z-index:1;left:50%;top:7%;width:min(84vw,780px);min-height:84%;padding:clamp(28px,6vw,85px);background:var(--paper);color:var(--text);border:12px double var(--metal);box-shadow:0 18px 40px #0004;text-align:center;transform:translate3d(-50%,100vh,0);opacity:0;display:flex;flex-direction:column;justify-content:center}
.emerging-letter p{font:clamp(2.2rem,6vw,5rem)/1.1 var(--display);margin:20px 0;overflow-wrap:anywhere}.emerging-letter small{font:12px var(--body);letter-spacing:.2em}.emerging-letter .ornament-svg{margin:0 auto}
.physical-suite .cover-name{position:absolute;left:10%;right:10%;top:12%;margin:0!important;font-size:clamp(1.5rem,4vw,3rem);color:var(--paper);z-index:6;text-shadow:0 2px 4px #0004}
.physical-suite .fastening{position:absolute;left:50%;top:60%;transform:translate(-50%,-50%);z-index:6}
.physical-suite .cover-hint{position:absolute;top:calc(60% + 65px);left:15%;right:15%;margin:0;color:var(--paper);z-index:6;font-size:13px}
.physical-suite .pearl-chain{inset:6% 10% auto;z-index:6}.physical-suite .ambient{z-index:8}
.physical-suite.is-opening .cover-object{animation:envelope-labels-away 1.6s .45s both!important}
.physical-suite.is-opening .physical-envelope-flap{animation:viewport-flap 1.2s .15s var(--ease) both}
.physical-suite.is-opening .emerging-letter{animation:letter-emerge 2.4s .4s var(--ease) both}
.physical-suite.is-opening .physical-envelope-pocket,.physical-suite.is-opening .physical-envelope-folds,.physical-suite.is-opening .physical-envelope-back{animation:envelope-lower 1.6s 1.3s var(--ease) both}
.physical-suite.is-opening .heirloom-cover:after{opacity:0;transition:opacity 1s 1s}
@keyframes viewport-flap{to{transform:rotateX(175deg);opacity:.25}}
@keyframes letter-emerge{0%{opacity:1;transform:translate3d(-50%,65vh,0) scale(.92)}55%{opacity:1;transform:translate3d(-50%,-10vh,0) scale(.95)}100%{opacity:1;transform:translate3d(-50%,0,0) scale(1)}}
@keyframes envelope-lower{to{transform:translate3d(0,105vh,0);opacity:0}}
@keyframes envelope-labels-away{to{opacity:0}}
body.physical-invitation .event-nav,body.physical-invitation .event-footer{display:none}
.suite-ready{padding:clamp(18px,4vw,55px) 16px 22px;min-height:100vh;min-height:100svh;background:radial-gradient(ellipse at top,var(--secondary),var(--stage) 70%);position:relative}
.suite-header{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:900px;margin:0 auto 22px;font:12px var(--body);color:var(--text)}
.suite-header p{margin:0;letter-spacing:.12em}.suite-header button{background:transparent!important;padding:9px 12px}
.suite-stage{position:relative;max-width:900px;margin:0 auto;perspective:1400px;isolation:isolate;padding:0 8px 20px}
.suite-stage:before,.suite-stage:after{content:"";position:absolute;inset:8px 14px 20px;background:var(--paper);border:1px solid var(--metal);box-shadow:0 9px 18px #0002;z-index:-1;transform:rotate(-1.3deg)}
.suite-stage:after{transform:rotate(1.5deg);inset:15px 10px 17px}
.suite-page{background:var(--paper);color:var(--text);box-shadow:0 20px 65px #0003;border:1px solid var(--metal);min-width:0;min-height:72svh;position:relative;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.suite-page>section{width:100%!important;max-width:none!important;min-height:0!important;margin:0!important;transform:none!important;box-shadow:none!important;border:0!important;background:transparent!important;flex:none!important;grid-column:auto!important;padding:clamp(28px,5vw,60px)!important;color:var(--text)!important;overflow:visible!important}
.suite-page>section:before{display:none!important}.suite-page .heirloom-intro{min-height:72svh!important;display:flex!important;flex-direction:column!important;justify-content:center!important;text-align:center!important;gap:25px!important}
.suite-page .heirloom-intro .kicker,.suite-page .heirloom-intro .button{color:var(--text)!important}.suite-page .heirloom-intro:before{display:none}.suite-page .intro-portrait{width:min(70%,340px);margin:0 auto!important;flex:none;transform:none!important}
.suite-page .heirloom-intro .ornament-svg{margin:auto}.suite-page .intro-copy{max-width:100%;min-width:0}.suite-page h1{font-size:clamp(2.4rem,6vw,5.6rem)}
.suite-page .photo-gallery{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;overflow:visible!important}.suite-page .photo-gallery img{width:100%!important;max-width:100%;height:clamp(160px,28vw,320px)!important;flex:none!important}
.suite-page .reply{border-top:0}.suite-page .schedule{display:grid!important;grid-template-columns:1fr!important}.suite-page #countdown{max-width:650px;margin:30px auto}.suite-page .intro-date{border-top:1px solid var(--metal);padding-top:20px}
.suite-page.is-arriving{animation:card-from-envelope .65s var(--ease) both}
@keyframes card-from-envelope{from{opacity:.4;transform:translate3d(0,25px,0) rotateX(4deg)}to{opacity:1;transform:none}}
.suite-navigation{display:flex;justify-content:space-between;align-items:center;gap:12px;max-width:880px;margin:25px auto 0}.suite-navigation span{font:12px var(--body);text-align:center}.suite-navigation button{max-width:40%;background:var(--paper)}.suite-navigation button:disabled{opacity:.4;cursor:default}
.suite-index{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:900px;margin:18px auto}.suite-index button{font-size:12px;max-width:100%;background:transparent;padding:10px 13px}.suite-index button[aria-current="page"]{background:var(--text);color:var(--paper)}
/* Same interaction, five different stationery construction treatments. */
.theme-wax .suite-page{border:9px double #9a793e;border-radius:2px}.theme-wax .suite-page:after{content:"";position:absolute;inset:12px;border:1px solid #9a793e66;pointer-events:none}
.theme-scroll .suite-page{border-radius:40px 40px 3px 3px;border-top:14px solid #c3d6ce}.theme-scroll .suite-page:after{content:"";position:absolute;left:15px;right:15px;bottom:15px;height:3px;background:#8c693f;pointer-events:none}
.theme-box .suite-page{border:12px solid #b9c3a5;outline:1px solid #93613d}.theme-box .suite-page .itinerary{border-top:2px dashed #93613d!important}
.theme-telegram .suite-page{border:10px solid #d8bca0;background:repeating-linear-gradient(#fcf0d9 0 35px,#cfb99b22 36px)}.theme-telegram .suite-page .story{font-style:italic}
.theme-book .suite-page{border:10px double #87652d;background:linear-gradient(135deg,#fff8eb,#f6ead7)}.theme-book .suite-page .eyebrow{border-bottom:1px solid #87652d;padding-bottom:12px;display:inline-block}
@media(max-width:420px){.suite-ready{padding:18px 10px}.suite-stage{padding:0 3px 18px}.suite-page>section{padding:25px 18px!important}.suite-page .form-grid{grid-template-columns:1fr}.suite-header{gap:10px}.suite-navigation button{font-size:12px;padding:12px}.suite-index{gap:5px}.suite-index button{font-size:11px;padding:10px}.physical-suite .fastening{width:80px;height:80px}.emerging-letter{border-width:7px}}
@media(max-height:480px) and (orientation:landscape){.physical-suite .cover-name{top:9%;font-size:1.3rem}.physical-suite .fastening{width:62px;height:62px}.physical-suite .cover-hint{top:calc(60% + 42px);font-size:11px}.emerging-letter p{font-size:2rem}.emerging-letter{padding:20px}.suite-page{min-height:90svh}}
@media(prefers-reduced-motion:reduce){.physical-suite.is-opening *{animation:none!important;transition:none!important}.suite-page.is-arriving{animation:none!important}}

/* Keep fastening coordinates stable while the full-envelope animation owns motion. */
.physical-suite.is-opening .cover-name,.physical-suite.is-opening .fastening{animation:none!important}

/* Explicit viewport geometry for the first-screen cover. */
.physical-suite .heirloom-cover{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100vh!important;height:100dvh!important;min-height:0!important;max-width:none!important;margin:0!important;z-index:1000!important}

/* Clear fastening: highest envelope layer, large target, visible label. */
.physical-suite .cover-object{z-index:20!important;pointer-events:none}
.physical-suite .fastening{pointer-events:auto!important;z-index:30!important;width:108px!important;height:108px!important;top:59%!important;overflow:visible}
.physical-suite .fastening .seal-face{border:6px double #f7ebd3!important;box-shadow:inset 3px 4px 5px #fff7,inset -4px -5px 8px #0005,0 0 0 7px #fff3,0 14px 28px #0007}
.physical-suite .seal-action{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%);min-width:170px;padding:10px 16px;border:1px solid #f7ebd377;border-radius:30px;background:#191b1be8;color:#fff9ec;font:12px/1.5 var(--body);letter-spacing:.08em;white-space:nowrap;box-shadow:0 6px 18px #0003;pointer-events:none}
.physical-suite .cover-hint{top:calc(59% + 126px)!important;margin:0!important}.physical-suite .fastening:focus-visible{outline:4px solid #fff9ec;outline-offset:12px}.physical-suite.is-opening .seal-action{opacity:0}
/* Card-specific ornament layer never intercepts forms or text. */
.suite-page{--card-edge:var(--metal);overflow:hidden}
.suite-page>section{position:relative;z-index:2}.card-ornaments{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden;color:var(--card-edge)}
.card-ornaments .corner-art{position:absolute;width:clamp(70px,15vw,135px);height:clamp(70px,15vw,135px);opacity:.4;overflow:visible}.corner-art path{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.corner-art .petal-fill{fill:currentColor;stroke:none;opacity:.15}
.corner-art.nw{top:5px;left:5px}.corner-art.se{bottom:5px;right:5px;transform:rotate(180deg)}
.card-ornaments .floating-star{position:absolute;right:12%;top:7%;font-size:24px;color:var(--card-edge);opacity:.35;animation:star-orbit 8s ease-in-out infinite}.card-ornaments .floating-star:nth-child(4){right:auto;left:7%;top:auto;bottom:8%;font-size:14px;animation-delay:-3s}
.card-ornaments .petal{position:absolute;width:12px;height:20px;border-radius:80% 10% 80% 10%;background:var(--card-edge);opacity:.16;left:calc(var(--petal)*18%);top:0;animation:petal-travel 12s linear infinite;animation-delay:calc(var(--petal)*-2s)}
.card-ornaments .pearl-border{position:absolute;left:20px;right:20px;top:17px;display:flex;justify-content:space-between;gap:8px}.pearl-border i{width:12px;height:12px;flex:none;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff,#e8dcca 60%,#ad9d80);box-shadow:1px 3px 4px #0002;animation:pearl-glimmer 5s ease-in-out infinite;animation-delay:calc(var(--pearl)*-.2s)}
.card-ornaments .lace-rail{position:absolute;top:0;bottom:0;left:0;width:15px;background:radial-gradient(circle at 0 10px,transparent 5px,var(--card-edge) 6px,transparent 7px);background-size:15px 20px;opacity:.45}.lace-rail.right{left:auto;right:0;transform:scaleX(-1)}
/* Seven independent paper constructions within each theme. */
.suite-page[data-card-kind="invitation"]{border:12px double var(--metal);background:linear-gradient(120deg,#fff9ed,var(--paper))}.suite-page[data-card-kind="invitation"] .intro-date{font-style:italic}
.suite-page[data-card-kind="date"]{border-radius:45% 45% 5px 5px;border-width:6px;border-style:double;background:radial-gradient(ellipse at top,#fffdf5,var(--paper))}.suite-page[data-card-kind="date"]>section{padding-top:90px!important;text-align:center!important}.suite-page[data-card-kind="date"] #countdown{padding:30px 12px;border:1px solid var(--metal);border-radius:100px;background:#ffffff55}
.suite-page[data-card-kind="story"]{border-left:16px solid var(--secondary);background:repeating-linear-gradient(var(--paper) 0 35px,#aa937315 36px)}.suite-page[data-card-kind="story"] .long-copy{font-style:italic;line-height:2}
.suite-page[data-card-kind="venue"]{border:10px double var(--secondary);background:repeating-linear-gradient(0deg,transparent 0 49px,#9885640b 50px),repeating-linear-gradient(90deg,transparent 0 49px,#9885640b 50px),var(--paper)}
.suite-page[data-card-kind="itinerary"]{border:0;border-left:2px dashed var(--metal);border-right:2px dashed var(--metal);border-radius:20px;background:var(--paper)}.suite-page[data-card-kind="itinerary"] .schedule article{padding:18px;border:1px solid var(--secondary);background:#ffffff70;position:relative}.suite-page[data-card-kind="itinerary"] .schedule article:after{content:"✦";position:absolute;right:14px;top:14px;color:var(--metal)}
.suite-page[data-card-kind="gallery"]{background:#242426;border:10px solid #242426;color:#fff9ed}.suite-page[data-card-kind="gallery"]>section{color:#fff9ed!important}.suite-page[data-card-kind="gallery"] .photo-gallery img{border:8px solid #fffbef;border-bottom:30px solid #fffbef;box-shadow:0 10px 25px #0004}.suite-page[data-card-kind="gallery"] .card-ornaments{color:#d9c59f}.suite-page[data-card-kind="gallery"] .photo-gallery{padding:35px!important;gap:25px!important}
.suite-page[data-card-kind="reply"]{border:10px double var(--metal);background:linear-gradient(135deg,#fff9ec,var(--paper))}.suite-page[data-card-kind="reply"] .reply>h2{font-size:clamp(2.3rem,5vw,4rem)}.suite-page[data-card-kind="reply"] form{padding:25px;background:#fffdf788;border:1px solid var(--secondary);box-shadow:0 8px 18px #0001}
.suite-page[data-card-kind="note"]{border:1px solid var(--metal);border-top:18px solid var(--secondary);background:var(--paper)}
/* Theme-exclusive flowers, embroidery and geometric embellishment. */
.theme-wax .suite-page .corner-art{stroke-width:2}.theme-wax .suite-page .lace-rail{width:18px}.theme-scroll .suite-page[data-card-kind="story"]{border-radius:25px 25px 0 0;background:linear-gradient(#ffffff66,#c3d6ce44),var(--paper)}.theme-scroll .suite-page .petal{border-radius:90% 15%;background:#66816b}
.theme-box .suite-page[data-card-kind="venue"]{border:12px solid #b9c3a5;outline:1px solid #93613d}.theme-box .suite-page .floating-star{font-size:32px}.theme-telegram .suite-page[data-card-kind="reply"]{border:10px solid transparent;border-image:repeating-linear-gradient(135deg,#743f2d 0 10px,#fcf0d9 10px 20px,#b98a69 20px 30px) 10}
.theme-book .suite-page[data-card-kind="invitation"]{border:14px double #87652d;background:linear-gradient(130deg,#fff8eb,#ead9bb)}.theme-book .suite-page .corner-art{opacity:.55}
.suite-page.is-arriving{animation:ornate-card-rise 1s var(--ease) both}.suite-page.is-arriving[data-card-kind="story"]{animation:ornate-page-turn 1.1s var(--ease) both;transform-origin:left}.suite-page.is-arriving[data-card-kind="date"]{animation:ornate-watch-settle 1.1s var(--ease) both}.suite-page.is-arriving[data-card-kind="gallery"]{animation:ornate-photo-slide .9s var(--ease) both}.suite-page.is-arriving .corner-art.nw{animation:ornament-unfold 1.5s var(--ease) both;transform-origin:top left}
@keyframes ornate-card-rise{from{opacity:.2;transform:translate3d(0,45px,0) rotateX(7deg)}to{opacity:1;transform:none}}@keyframes ornate-page-turn{from{opacity:.3;transform:rotateY(13deg) translateX(12px)}to{opacity:1;transform:none}}@keyframes ornate-watch-settle{0%{opacity:.2;transform:translateY(30px) rotate(-2deg) scale(.97)}70%{opacity:1;transform:translateY(-4px) rotate(.4deg)}100%{transform:none}}@keyframes ornate-photo-slide{from{opacity:.3;transform:translateX(35px) rotate(1deg)}to{opacity:1;transform:none}}@keyframes ornament-unfold{from{opacity:0;transform:scale(.4) rotate(-15deg)}to{opacity:.4;transform:none}}@keyframes star-orbit{50%{transform:translateY(-12px) rotate(35deg);opacity:.15}}@keyframes pearl-glimmer{50%{opacity:.65;transform:translateY(2px)}}@keyframes petal-travel{from{transform:translate3d(0,-30px,0) rotate(0)}to{transform:translate3d(30px,600px,0) rotate(180deg)}}
@media(max-width:420px){.physical-suite .fastening{width:94px!important;height:94px!important}.physical-suite .cover-hint{top:calc(59% + 116px)!important}.pearl-border i:nth-child(even){display:none}.suite-page[data-card-kind="gallery"] .photo-gallery{padding:24px 18px!important;gap:15px!important}.suite-page[data-card-kind="reply"] form{padding:14px}.suite-page[data-card-kind="date"]>section{padding-top:65px!important}}
@media(max-height:480px) and (orientation:landscape){.physical-suite .fastening{width:66px!important;height:66px!important}.physical-suite .seal-action{top:calc(100% + 8px);font-size:10px;padding:7px 12px}.physical-suite .cover-hint{display:none}}
@media(prefers-reduced-motion:reduce){.card-ornaments *,.suite-page.is-arriving{animation:none!important}.card-ornaments .petal{display:none}}

/* Hold the emerged letter, then fade the entire cover rather than removing it abruptly. */
.physical-suite.is-opening .heirloom-cover{animation:full-envelope-dissolve 5s linear both}
@keyframes full-envelope-dissolve{0%,76%{opacity:1}100%{opacity:0}}
.card-ornaments .bouquet-art{position:absolute;width:clamp(110px,22vw,210px);height:auto;opacity:.3;pointer-events:none;animation:bouquet-sway 9s ease-in-out infinite;transform-origin:bottom left}.bouquet-art.top{top:0;right:0}.bouquet-art.bottom{bottom:0;left:0;transform:rotate(180deg);animation-name:bouquet-sway-inverse}.bouquet-art path{fill:none;stroke:currentColor;stroke-width:1.5}.bouquet-art .blossom{fill:currentColor;stroke:none;opacity:.22}
.card-ornaments .gilded-frame{position:absolute;inset:22px;border:1px solid currentColor;opacity:.18;pointer-events:none}.card-ornaments .gilded-frame:after{content:"";position:absolute;inset:6px;border:1px dashed currentColor}.card-ornaments .ribbon-bow{position:absolute;right:25px;bottom:22px;width:90px;height:60px;opacity:.25;animation:bow-settle 7s ease-in-out infinite}.ribbon-bow:before,.ribbon-bow:after{content:"";position:absolute;width:45px;height:35px;border:5px double currentColor;border-radius:60% 10% 60% 10%;transform:rotate(25deg)}.ribbon-bow:after{left:40px;transform:scaleX(-1) rotate(25deg)}
.suite-page.motion-rest .card-ornaments *{animation-play-state:paused!important}
@keyframes bouquet-sway{50%{transform:rotate(3deg) translateY(-4px)}}@keyframes bouquet-sway-inverse{0%,100%{transform:rotate(180deg)}50%{transform:rotate(177deg) translateY(4px)}}@keyframes bow-settle{50%{transform:rotate(-4deg) scale(1.035)}}
/* 1: Celtic cabinet. Guests choose actual miniature keepsakes before opening a card. */
.keepsake-overview{max-width:1180px;margin:30px auto 65px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px;padding:35px 25px;perspective:1400px}
.heirloom .keepsake-miniature{min-height:280px;background:linear-gradient(135deg,#fffaf0,var(--paper));border:10px double var(--metal);box-shadow:12px 20px 35px #0003;display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:20px;padding:28px 20px;transform:rotate(var(--tilt));transition:transform .6s var(--ease)}
.keepsake-miniature:hover,.keepsake-miniature:focus-visible{transform:translateY(-14px) rotate(0) scale(1.03)}.miniature-emblem{font-size:75px;color:var(--metal);animation:miniature-shimmer 6s ease-in-out infinite;animation-delay:calc(var(--card-number)*-.7s)}.miniature-title{font:clamp(1.3rem,2.3vw,2rem)/1.25 var(--display);overflow-wrap:anywhere}.keepsake-miniature small{letter-spacing:.2em}.suite-back{max-width:220px}.theme-wax[data-card-view="overview"] .suite-ready{background:radial-gradient(ellipse at top,#525a52,#252a27);color:#f2ead7}.theme-wax[data-card-view="overview"] .suite-header{color:#f2ead7}.theme-wax[data-card-view="detail"] .suite-page.is-arriving{animation:cabinet-unfold 1.3s var(--ease) both}
/* 2: Venice. A continuous horizontal ribbon of fully usable letter cards. */
.theme-scroll .suite-stage{display:flex;max-width:100%;gap:45px;overflow-x:auto;scroll-snap-type:x proximity;overscroll-behavior-x:contain;padding:35px max(25px,calc((100vw - 850px)/2)) 70px;scrollbar-color:#174b51 #c3d6ce;align-items:flex-start}
.theme-scroll .suite-stage:before,.theme-scroll .suite-stage:after{display:none}.theme-scroll .suite-page{flex:0 0 min(86vw,850px);scroll-snap-align:center;min-height:80svh;transform:rotate(-.4deg)}.theme-scroll .suite-page:nth-child(even){transform:rotate(.4deg);margin-top:28px}.theme-scroll .suite-page .bouquet-art{opacity:.5}.theme-scroll .suite-navigation{position:sticky;bottom:10px;z-index:5;background:#f5eee2ed;padding:10px 16px;border:1px solid #8c693f;box-shadow:0 6px 25px #0002}.theme-scroll .suite-ready{padding-left:0;padding-right:0}.theme-scroll .suite-header{padding:0 22px}.theme-scroll .suite-page.is-arriving{animation:venetian-letter-drift 1.4s var(--ease) both}
/* 3: Villa. Perspective carousel, selectable side-card previews and arch ornament. */
.theme-box .suite-stage{max-width:780px;perspective:1800px}.theme-box .suite-stage:before{transform:translateX(-40px) rotateY(12deg) rotateZ(-4deg);background:#b9c3a5}.theme-box .suite-stage:after{transform:translateX(40px) rotateY(-12deg) rotateZ(4deg);background:#b9c3a5}.theme-box .suite-page.is-arriving{animation:villa-carousel-turn 1.35s var(--ease) both;transform-origin:center}.carousel-preview{position:absolute!important;top:25%;width:105px!important;height:280px;border:8px double #93613d!important;background:linear-gradient(#e6e4d4,#b9c3a5)!important;box-shadow:0 20px 35px #0003;z-index:-1;font-size:28px!important}.carousel-preview.previous{left:-88px;transform:rotateY(35deg) rotate(-5deg)}.carousel-preview.next{right:-88px;transform:rotateY(-35deg) rotate(5deg)}.carousel-preview:disabled{opacity:.3;cursor:default}
/* 4: Parlour. A real two-page diary composition, rather than the shared card deck. */
.theme-telegram .suite-stage{max-width:1380px;display:grid;grid-template-columns:.75fr 1fr;gap:0;padding:18px;background:#743f2d;border-radius:12px;box-shadow:0 30px 65px #41271f55}
.theme-telegram .suite-stage:before,.theme-telegram .suite-stage:after{display:none}.diary-facing{grid-column:1;grid-row:1;background:linear-gradient(90deg,#fcf0d9 85%,#d8bca0);padding:55px 30px;text-align:center;display:flex;flex-direction:column;justify-content:center;min-width:0;border-right:8px double #a27753;color:#743f2d}.diary-facing h2{font:clamp(2.5rem,5vw,5rem)/1.1 "Pinyon Script",Georgia;overflow-wrap:anywhere}.diary-bouquet{font-size:130px;color:#8b5639;animation:diary-flower-breathe 8s ease-in-out infinite}.theme-telegram .suite-page{grid-column:2;grid-row:1;box-shadow:none;border-left:0;min-height:80svh}.theme-telegram .suite-page.is-arriving{animation:parlour-page-turn 1.5s var(--ease) both;transform-origin:left}
/* 5: Deco. A fan of archive folios that can be selected or keyboard browsed. */
.theme-book .keepsake-overview{display:flex;max-width:100%;overflow-x:auto;padding:55px 8% 95px;gap:0;scroll-snap-type:x proximity;align-items:center;min-height:65svh}
.theme-book .keepsake-miniature{flex:0 0 255px;min-height:380px;margin-left:-55px;border:14px double #87652d;background:linear-gradient(150deg,#fff8eb,#ead9bb);scroll-snap-align:center;transform:rotate(var(--tilt)) translateY(calc(var(--card-number)*2px));position:relative;transition:transform .7s var(--ease);z-index:1}
.theme-book .keepsake-miniature:first-child{margin-left:0}.theme-book .keepsake-miniature:hover,.theme-book .keepsake-miniature:focus-visible{transform:translateY(-35px) rotate(0);z-index:3}.theme-book[data-card-view="overview"] .suite-ready{background:radial-gradient(ellipse at top,#74344a,#2d101a)}.theme-book[data-card-view="overview"] .suite-header{color:#f6ead7}.theme-book[data-card-view="detail"] .suite-page.is-arriving{animation:archive-folio-lift 1.4s var(--ease) both}
@keyframes miniature-shimmer{50%{opacity:.65;transform:translateY(-5px) rotate(5deg)}}@keyframes cabinet-unfold{from{opacity:.2;transform:translateY(70px) rotateX(15deg) scale(.95)}to{opacity:1;transform:none}}@keyframes venetian-letter-drift{from{opacity:.5;transform:translateY(35px) rotate(-2deg)}to{opacity:1;transform:none}}@keyframes villa-carousel-turn{from{opacity:.25;transform:translateX(calc(var(--direction)*70px)) rotateY(calc(var(--direction)*-18deg)) scale(.94)}to{opacity:1;transform:none}}@keyframes parlour-page-turn{from{opacity:.4;transform:rotateY(-22deg)}to{opacity:1;transform:none}}@keyframes archive-folio-lift{from{opacity:.25;transform:translateY(70px) rotate(-5deg) scale(.9)}to{opacity:1;transform:none}}@keyframes diary-flower-breathe{50%{transform:rotate(4deg) scale(1.04)}}
@media(max-width:1000px){.carousel-preview{display:none}.theme-box .suite-stage{max-width:90%}.theme-telegram .suite-stage{grid-template-columns:.55fr 1fr}.diary-facing{padding:35px 20px}.diary-bouquet{font-size:90px}}
@media(max-width:650px){.keepsake-overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding:25px 15px}.heirloom .keepsake-miniature{min-height:230px;padding:20px 12px;border-width:7px}.miniature-emblem{font-size:50px}.suite-header{flex-wrap:wrap}.suite-back{font-size:11px!important}.theme-telegram .suite-stage{display:block;padding:10px}.diary-facing{min-height:150px;padding:20px;border-right:0;border-bottom:5px double #a27753;display:grid;grid-template-columns:70px 1fr;gap:10px;align-items:center}.diary-facing h2{font-size:2.6rem;margin:0}.diary-facing p{grid-column:2;margin:0;font-size:11px}.diary-bouquet{font-size:65px;grid-row:1/3}.theme-telegram .suite-page{min-height:65svh}.theme-scroll .suite-page{flex-basis:90vw}.theme-scroll .suite-stage{gap:22px;padding:20px 5vw 45px}.theme-box .suite-stage{max-width:100%}.theme-book .keepsake-miniature{min-height:340px;flex-basis:230px;margin-left:-45px}.card-ornaments .bouquet-art{width:125px}}
@media(max-width:350px){.keepsake-overview{grid-template-columns:1fr}.heirloom .keepsake-miniature{min-height:210px}.theme-book .keepsake-overview{display:flex}}
@media(prefers-reduced-motion:reduce){.physical-suite.is-opening .heirloom-cover{animation:none!important}.heirloom .keepsake-miniature,.theme-scroll .suite-page{transform:none!important;transition:none!important}.miniature-emblem,.diary-bouquet,.card-ornaments *,.suite-page.is-arriving{animation:none!important}}

.theme-wax[data-card-view="overview"] .suite-header button,.theme-book[data-card-view="overview"] .suite-header button{color:var(--paper);border-color:var(--paper)}
