@font-face{font-family:Naskh;src:url('assets/fonts/naskh.ttf') format('truetype');font-display:swap}@font-face{font-family:Nastaliq;src:url('assets/fonts/nastaliq.ttf') format('truetype');font-display:swap}
:root{color-scheme:light;--ink:#392d20;--gold:#86602c;--paper:#f5ecdc;--serif:Georgia,'Times New Roman',serif;--ui:Georgia,'Times New Roman',serif}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#d3c1a1;color:var(--ink);font-family:var(--serif)}body{background-image:linear-gradient(#ead9b345,#46321e52),url('assets/garden-henna-ceramic.webp');background-size:cover;background-position:center;background-attachment:fixed}button,select{font:inherit;color:inherit}button,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,select:focus-visible{outline:2px solid #713b1a;outline-offset:4px}button:disabled{cursor:default}button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.35}button{touch-action:manipulation}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.experience{position:relative;width:100%;max-width:600px;height:100svh;min-height:650px;margin:auto;isolation:isolate;overflow:hidden;box-shadow:0 0 100px #35281855}.garden{position:absolute;inset:0;z-index:-3;transition:filter 2.3s ease,transform 2.3s ease;will-change:filter}.garden>img,.garden>canvas{position:absolute;width:100%;height:100%;inset:0;object-fit:cover}.garden>canvas{pointer-events:none}.atmosphere{position:absolute;inset:0;z-index:-2;pointer-events:none;background:linear-gradient(180deg,transparent 7%,#fff4da3b 22%,transparent 45%,#261c1000 68%,#25160b33);transition:background 1.8s,opacity 1.8s;opacity:1}.welcome{position:absolute;inset:0;transition:opacity .65s ease,transform .8s ease;z-index:3}.welcome-title{position:absolute;top:17%;left:7%;right:7%;text-align:center;color:#49351e;text-shadow:0 1px 18px #fff2cb,0 1px 2px #ffeed3}.eyebrow{font-size:14px;letter-spacing:.26em;margin:0 0 17px}.welcome-title h1{font-size:clamp(36px,8.8vw,49px);line-height:1.03;font-weight:400;letter-spacing:-.04em;margin:0}.welcome-title h1 span{font-style:italic;font-size:.73em;color:#815a2c}.language-panel{position:absolute;bottom:max(23px,env(safe-area-inset-bottom));left:20px;right:20px;padding:22px 18px 18px;background:linear-gradient(135deg,#fff9edf5,#f4ead7ed);border:1px solid #fdf3dce6;box-shadow:0 9px 36px #3d27163b,inset 0 0 0 4px #fff9ef33;border-radius:4px;backdrop-filter:blur(8px)}.greeting-block{text-align:center;height:76px;transition:opacity .2s;display:flex;flex-direction:column;justify-content:flex-start}.greeting-block.fading{opacity:0}.greeting{margin:0 0 6px;font-size:clamp(23px,5.5vw,30px);line-height:1.2;color:#704e28}.language-prompt{font-size:14px;line-height:1.5;margin:0}.greeting:lang(fa),.language-prompt:lang(fa){font-family:Naskh,serif}.greeting:lang(fa){font-size:29px}.language-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.language-grid button{border:1px solid #ad8c5754;border-radius:2px;background:#fffaf175;min-height:48px;display:flex;align-items:center;gap:12px;text-align:start;padding:8px 13px;font-size:16px;box-shadow:0 1px 3px #53422208;transition:background .18s,border-color .18s,transform .18s}.language-grid button:hover{background:#fffaf9;border-color:#987344}.language-grid button:active{transform:translateY(1px)}.language-grid button>span:first-child{font-family:system-ui;font-size:19px;line-height:1}.language-grid button[lang=fa]{font-family:Naskh,serif;font-size:20px}
.invitation{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;opacity:0;pointer-events:none;transition:opacity .3s}.toolbar{width:100%;display:flex;align-items:center;justify-content:space-between;height:66px;flex:none;padding:max(12px,env(safe-area-inset-top)) 22px 7px;opacity:0;transition:opacity .8s .2s}.subtle-button{display:flex;gap:7px;align-items:center;border:0;background:#fff9ecd9;border-radius:2px;padding:9px 12px;font-size:14px;min-height:42px;box-shadow:0 2px 8px #2619080d}.subtle-button>span:first-child{font-size:25px;line-height:.6}.language-select select{font-size:14px;min-height:42px;border:1px solid #99836155;border-radius:2px;padding:8px 24px 8px 11px;background:#fff9ece0;max-width:170px}.card-stage{flex:1;min-height:0;width:100%;display:grid;place-items:center;perspective:1400px;position:relative}.physical-card{position:relative;width:min(100%,calc((100svh - 205px)*.6666667),500px);aspect-ratio:2/3;container-type:inline-size;transform-style:preserve-3d;transform:translate3d(0,0,0);filter:drop-shadow(6px 12px 9px #34220d45);will-change:transform;isolation:isolate}.paper-art,.paper-edge{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.paper-edge{filter:brightness(.64) sepia(.3);transform:translate3d(.8px,1.2px,-.7px)}.paper-art{transform:translateZ(.1px)}.paper-light{position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,#fff9df20,transparent 47%,#70411b0a);mask:url('assets/invitation-approved-34.webp') center/100% 100% no-repeat;transform:translateZ(.5px);mix-blend-mode:soft-light}.printed-copy{position:absolute;left:17%;top:29.5%;width:43%;font:3.17cqw/1.25 var(--serif);color:#40372d;text-align:left;transform:translateZ(.3px);text-shadow:0 .2px .2px #7d613822}.printed-copy p{margin:0}.printed-copy .card-category{font-size:3.28cqw;letter-spacing:.035em;text-transform:uppercase;color:#94621f;margin-bottom:2.5cqw}.printed-copy .card-names{font-size:6.1cqw;line-height:1.08;color:#85551d;letter-spacing:-.035em;margin-bottom:4.1cqw}.card-names .join{margin-inline-start:.2em}.printed-copy .card-verse{white-space:pre-line;margin-bottom:3.3cqw}.printed-copy .card-message{margin-bottom:2.3cqw}.printed-rule{display:block;width:5cqw;height:1px;background:#a98859b5;margin:2.7cqw 0}.printed-copy .card-date{line-height:1.23}.printed-copy .card-time{margin-top:1.2cqw}.printed-copy .card-venue{font-size:4cqw;color:#94621f;line-height:1.3}.printed-copy .card-address{font-size:3cqw;line-height:1.3}.printed-copy[lang=fa]{font-family:Naskh,serif;font-size:3.9cqw;line-height:1.5;text-align:right;left:16%;width:42%}.printed-copy[lang=fa] .card-category{font-size:4.1cqw;letter-spacing:0}.printed-copy[lang=fa] .card-names{font-family:Naskh,serif;font-size:6.5cqw;line-height:1.4;margin-bottom:2cqw}.printed-copy[lang=fa] .card-verse,.printed-copy[lang=fa] .card-message{margin-bottom:1.2cqw}.printed-copy[lang=fa] .printed-rule{margin:1.5cqw 0 1.5cqw auto}.printed-copy[lang=fa] .card-venue,.printed-copy[lang=fa] .card-address{font-family:var(--serif);text-align:left}.printed-copy[lang=fr],.printed-copy[lang=nl],.printed-copy[lang=tg]{font-size:2.99cqw}.printed-copy[lang=tg] .card-names{font-size:5.5cqw}.contact-shadow{position:absolute;bottom:5%;width:54%;height:3%;background:#43291238;border-radius:50%;filter:blur(12px);opacity:0;transform:scaleX(.8);pointer-events:none}.invitation-footer{width:100%;display:flex;align-items:center;flex-direction:column;padding:0 18px max(15px,env(safe-area-inset-bottom));flex:none;opacity:0;transition:opacity 1s}.read-button{border:1px solid #a4844f88;background:linear-gradient(130deg,#fff9efee,#efe1c9ee);box-shadow:0 3px 10px #5c412720;display:flex;align-items:center;justify-content:center;gap:11px;padding:11px 22px;min-height:45px;border-radius:2px;font-size:16px;color:#61451f}.read-button:hover{background:#fff9ef}.garden-poem{font-family:Nastaliq,Naskh,serif;font-size:17px;line-height:2;color:#362513;text-shadow:0 0 14px #fff4e3,0 1px 3px #fff4e3;margin:13px 0 0;display:grid;grid-template-columns:1fr 1fr;column-gap:23px;text-align:center;direction:rtl}.garden-poem span{display:block}.garden-poem span:nth-child(3){grid-row:2;grid-column:1}.garden-poem span:nth-child(4){grid-row:2;grid-column:2}
.experience[data-state=opening] .welcome,.experience[data-state=open] .welcome{opacity:0;pointer-events:none;transform:translateY(-10px)}.experience[data-state=opening] .invitation,.experience[data-state=open] .invitation{opacity:1;pointer-events:auto}.experience[data-state=open] .toolbar,.experience[data-state=open] .invitation-footer{opacity:1}.experience[data-state=opening] .garden,.experience[data-state=open] .garden{filter:blur(3px) saturate(.87)}.experience[data-state=opening] .atmosphere,.experience[data-state=open] .atmosphere{background:linear-gradient(180deg,#fff5e350,#fff7e982 35%,#fff6e485)}
.reader{position:fixed;border:1px solid #bc9e67a3;border-radius:3px;width:min(91vw,500px);max-height:88svh;padding:0;color:var(--ink);background:#f8efe0;box-shadow:0 20px 100px #32251285;overscroll-behavior:contain}.reader::backdrop{background:#2f261b63;backdrop-filter:blur(6px)}.reader[open]{animation:reader-in .3s ease}.reader-close{position:sticky;top:0;display:flex;align-items:center;justify-content:center;margin:8px 8px -50px auto;z-index:2;width:44px;height:44px;border:1px solid #aa8a5350;border-radius:50%;font-family:var(--serif);font-size:29px;background:#fff8efed;color:#61451f}.reader-paper{padding:51px clamp(23px,7vw,46px) 38px;text-align:center;background-image:url('assets/invitation-approved-34.webp');background-size:850% auto;background-position:33% 43%;font-family:var(--serif);font-size:18px;line-height:1.6}.reader-paper p{margin:0 0 24px}.reader-paper .reader-category{color:var(--gold);font-size:14px;text-transform:uppercase;letter-spacing:.12em;margin-bottom:23px}.reader-paper h2{font-weight:400;font-size:clamp(30px,8vw,42px);line-height:1.1;color:#82561f;margin:0 0 30px;letter-spacing:-.025em}.reader-paper h2>span{display:block}.reader-paper h2 .reader-join{font-style:italic;font-size:.66em;line-height:1.6}.reader-paper .reader-verse{font-style:normal;white-space:pre-line;font-size:20px}.reader-rule{height:1px;width:36px;background:#a98244;margin:25px auto}.reader-date{color:#725026;font-size:20px}.reader-paper address{font-style:normal;line-height:1.8}.reader-paper address strong{font-weight:400;font-size:23px;color:#85551d}.reader-paper address span{font-size:16px;unicode-bidi:isolate;display:inline-block}.reader-paper .reader-closing{margin-top:30px;font-style:italic}.reader-poem{font-family:Nastaliq,Naskh,serif;font-size:24px;line-height:2.25;margin:0 0 18px}.reader-poem span{display:block}.reader-paper .poem-translation{font-size:16px;line-height:1.7;white-space:pre-line;margin:0;color:#735e43}.reader-paper[lang=fa]{font-family:Naskh,serif;font-size:21px;line-height:1.9}.reader-paper[lang=fa] .reader-category{font-size:20px;letter-spacing:0}.reader-paper[lang=fa] h2{line-height:1.6}.reader-paper[lang=fa] .reader-verse,.reader-paper[lang=fa] .reader-date{font-size:24px}.reader-paper[lang=fa] address{font-family:var(--serif)}.no-script{position:fixed;inset:5%;z-index:10;padding:30px;background:#fff8eb;overflow:auto}.no-script p{line-height:1.7}.no-script~*{display:none}
@keyframes reader-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:700px){.experience{border-inline:1px solid #f6e6c533}.welcome-title{top:16%}.language-panel{left:38px;right:38px;bottom:30px;padding:24px}.welcome-title h1{font-size:46px}.language-grid button{min-height:52px}.printed-copy{line-height:1.28}}
@media(max-height:720px){.experience{min-height:600px}.welcome-title{top:14%}.welcome-title h1{font-size:35px}.eyebrow{margin-bottom:12px}.language-panel{bottom:16px;padding:16px}.greeting-block{height:65px}.language-grid{gap:7px}.language-grid button{min-height:44px}.physical-card{width:min(96%,calc((100svh - 175px)*.6666667))}.toolbar{height:57px;padding-top:8px}.garden-poem{font-size:15px;line-height:1.8;margin-top:8px}.invitation-footer{padding-bottom:10px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.garden canvas{display:none}}
/* Preserve the printed proportions while keeping the embossed doorway clear. */
.printed-copy{top:28%;width:44%;font-size:2.86cqw;line-height:1.2}
.printed-copy .card-category{font-size:3.25cqw;margin-bottom:2cqw}
.printed-copy .card-names{font-size:6cqw;margin-bottom:3cqw}
.printed-copy .card-verse{margin-bottom:2.6cqw}
.printed-copy .card-message{margin-bottom:1.6cqw}
.printed-copy .printed-rule{margin:2.1cqw 0}
.printed-copy .card-time{margin-top:.6cqw}
.printed-copy .card-venue{font-size:3.8cqw}
.printed-copy .card-address{font-size:2.75cqw}
.printed-copy[lang=fr],.printed-copy[lang=nl],.printed-copy[lang=tg]{font-size:2.8cqw}
.printed-copy[lang=fa]{font-size:3.65cqw;line-height:1.42}
.printed-copy[lang=fa] .card-category{margin-bottom:1.2cqw}
.printed-copy[lang=fa] .card-names{font-size:6.1cqw;line-height:1.3;margin-bottom:1.4cqw}
.printed-copy[lang=fa] .printed-rule{margin:1.1cqw 0 1.1cqw auto}
@media(min-width:700px){.printed-copy{line-height:1.2}}
.printed-copy[lang=fa]{top:26.7%;font-size:3.4cqw;line-height:1.4}
.read-button:lang(fa),.subtle-button:lang(fa){font-family:Naskh,serif}
.read-button:lang(fa){font-size:19px;line-height:1.35}
/* A continuous garden → resting card → presentation sequence. */
.experience[data-state=garden] .welcome,.experience[data-state=presenting] .welcome{opacity:0;pointer-events:none;transform:translateY(-10px)}
.experience[data-state=presenting] .invitation{opacity:1;pointer-events:none}
.card-stage{perspective-origin:50% 100%}
/* Fine invitation typography, with full Tajik Cyrillic and Persian coverage. */
@font-face{font-family:InvitationSerif;src:url('assets/fonts/cormorant.ttf') format('truetype');font-display:swap;font-style:normal;font-weight:400}
.reader-paper{font-family:InvitationSerif,Georgia,serif;font-size:23px;line-height:1.45;letter-spacing:.005em;color:#493720}
.reader-paper .reader-category{font-family:InvitationSerif,Georgia,serif;font-size:17px;letter-spacing:.15em}
.reader-paper h2{font-family:InvitationSerif,Georgia,serif;font-size:clamp(39px,10.5vw,52px);font-weight:400;line-height:1.03;letter-spacing:-.025em;color:#8b5c24}
.reader-paper h2 .reader-join{font-family:InvitationSerif,Georgia,serif;font-size:.59em;font-style:normal;line-height:1.35}
.reader-paper .reader-verse{font-size:25px;line-height:1.35;color:#78532a}
.reader-paper .reader-date{font-size:25px;line-height:1.4}
.reader-paper address{font-family:InvitationSerif,Georgia,serif}
.reader-paper address strong{font-size:29px}
.reader-paper address span{font-size:20px}
.reader-paper .reader-closing{font-style:normal;font-size:23px}
.reader-paper .poem-translation{font-family:InvitationSerif,Georgia,serif;font-size:20px;line-height:1.5}
.reader-paper[lang=fa]{font-family:Nastaliq,Naskh,serif;font-size:23px;line-height:2.35;letter-spacing:0}
.reader-paper[lang=fa] .reader-category{font-family:Nastaliq,Naskh,serif;font-size:23px;line-height:2;letter-spacing:0;margin-bottom:18px}
.reader-paper[lang=fa] h2{font-family:Nastaliq,Naskh,serif;font-size:39px;line-height:1.95;letter-spacing:0;margin-bottom:22px}
.reader-paper[lang=fa] h2 .reader-join{font-family:Nastaliq,Naskh,serif;font-size:.56em;line-height:1.7}
.reader-paper[lang=fa] .reader-verse,.reader-paper[lang=fa] .reader-date{font-family:Nastaliq,Naskh,serif;font-size:25px;line-height:2.3}
.reader-paper[lang=fa] address{font-family:InvitationSerif,Georgia,serif;line-height:1.6}
.reader-paper[lang=fa] .reader-closing{font-size:23px;line-height:2.3}
/* The photographed dove and paper share the beak anchor until release. */
.dove{position:absolute;top:0;left:0;z-index:5;pointer-events:none;opacity:0;transform-origin:94.6% 58.7%;filter:drop-shadow(0 2px 2px #59442420);will-change:transform}
.experience[data-state=delivery] .welcome{opacity:0;pointer-events:none;transform:translateY(-10px)}
.experience[data-state=delivery] .invitation{opacity:1;pointer-events:none;transition:none}
.experience[data-state=delivery] .card-stage,.experience[data-state=opening] .card-stage{perspective:none}
@media(prefers-reduced-motion:reduce){.dove{display:none}}
/* Photographed paper cylinder follows the opening edge of the real invitation. */
.paper-roll{position:absolute;left:0;top:0;z-index:4;opacity:0;pointer-events:none;transform-origin:50.3% 50.9%;will-change:transform;width:140px;height:70px;filter:drop-shadow(1px 3px 2px #39230c45)}
.paper-roll img{width:100%;height:100%;display:block;object-fit:contain}
.roll-cord{position:absolute;left:0;top:0;z-index:4;opacity:0;pointer-events:none;width:52px;height:70px;transform-origin:50.9% 16.3%;will-change:transform}
.roll-cord img{position:absolute;width:100%;height:100%;object-fit:fill;inset:0;transform-origin:50% 54%}
.dove{filter:none}
@media(prefers-reduced-motion:reduce){.paper-roll,.roll-cord{display:none}}
/* Flight belongs to the photographed garden, below its foreground and light. */
.dove{z-index:-2}
.experience[data-state=garden] .paper-roll,.experience[data-state=delivery] .paper-roll,.roll-cord{z-index:-2}
.garden-occlusion{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;transition:filter 2.3s ease}
.atmosphere{z-index:0}
.invitation{z-index:1}
.experience[data-state=opening] .garden-occlusion,.experience[data-state=open] .garden-occlusion{filter:blur(3px) saturate(.87)}
.garden-occlusion{opacity:0}
.experience[data-state=delivery] .garden-occlusion,.experience[data-state=opening] .garden-occlusion{opacity:1}
/* Arrival inside the approved palace photograph. */
.palace-scene{position:absolute;inset:0;z-index:2;overflow:hidden;opacity:0;pointer-events:none;background:#e7d6b9}
.palace-scene::before,.palace-scene::after{display:none}
.palace-frame{position:absolute;left:50%;bottom:0;transform:translateX(-50%);container-type:inline-size}
.palace-frame>img{position:absolute;inset:0;width:100%;height:100%;display:block}
.palace-copy{--copy-fit:1;position:absolute;left:25.4%;top:41.1%;width:30.4%;font:calc(1.96cqw * var(--copy-fit))/1.24 Georgia,'Times New Roman',serif;color:#44372b;text-align:left;text-shadow:0 .12px .2px #6a4b3026}
.palace-copy p{margin:0}
.palace-copy .card-category{font-size:calc(2.13cqw * var(--copy-fit));color:#906024;letter-spacing:.025em;text-transform:uppercase;margin-bottom:calc(1.7cqw * var(--copy-fit))}
.palace-copy .card-names{font-size:calc(4.25cqw * var(--copy-fit));line-height:1.04;letter-spacing:-.04em;color:#8e5c20;margin-bottom:calc(2.2cqw * var(--copy-fit))}
.palace-copy .join{margin-inline-start:.15em}
.palace-copy .card-verse{white-space:pre-line;margin-bottom:calc(1.9cqw * var(--copy-fit))}
.palace-copy .card-message{margin-bottom:calc(.8cqw * var(--copy-fit))}
.palace-copy .printed-rule{display:block;width:3.2cqw;height:.7px;background:#a47a47a6;margin:calc(1.2cqw * var(--copy-fit)) 0}
.palace-copy .card-time{margin-top:calc(.55cqw * var(--copy-fit))}
.palace-copy .card-venue{color:#8e5c20;font-size:calc(2.75cqw * var(--copy-fit));line-height:1.25}
.palace-copy .card-address{font-size:calc(1.9cqw * var(--copy-fit));line-height:1.3;white-space:nowrap}
.palace-copy[lang=tg]{font-size:calc(1.91cqw * var(--copy-fit))}
.palace-copy[lang=tg] .card-names{font-size:calc(3.85cqw * var(--copy-fit))}
.palace-copy[lang=fa]{font-family:Naskh,serif;font-size:calc(2.2cqw * var(--copy-fit));line-height:1.6;text-align:right}
.palace-copy[lang=fa] .card-category{font-family:Naskh,serif;font-size:calc(2.2cqw * var(--copy-fit));letter-spacing:0;margin-bottom:calc(.35cqw * var(--copy-fit))}
.palace-copy[lang=fa] .card-names{font-family:Nastaliq,Naskh,serif;font-size:calc(5.85cqw * var(--copy-fit));line-height:1.65;letter-spacing:0;margin-bottom:calc(.5cqw * var(--copy-fit));padding-top:calc(.8cqw * var(--copy-fit))}
.palace-copy[lang=fa] .join{font-size:.62em}
.palace-copy[lang=fa] .card-verse{margin-bottom:calc(.85cqw * var(--copy-fit))}
.palace-copy[lang=fa] .card-message{margin-bottom:0}
.palace-copy[lang=fa] .card-date br{display:none}
.palace-copy[lang=fa] .printed-rule{margin:calc(.8cqw * var(--copy-fit)) 0 calc(.8cqw * var(--copy-fit)) auto}
.palace-copy[lang=fa] .card-venue,.palace-copy[lang=fa] .card-address{font-family:Georgia,'Times New Roman',serif;text-align:left}
.experience[data-place=palace] .palace-scene{opacity:1}
.experience[data-place=palace] .card-stage{visibility:hidden}
.experience[data-place=palace] .invitation{z-index:4}
.experience[data-place=palace] .invitation-footer{position:absolute;bottom:0;padding-bottom:max(12px,env(safe-area-inset-bottom))}
.experience[data-place=palace] .garden-poem{font-size:15px;line-height:1.7;margin-top:7px}
.experience[data-place=palace] .read-button{background:#fff8e8e8;backdrop-filter:blur(7px)}
.experience[data-place=palace] .toolbar{position:relative;z-index:2}
.arrival-glow,.arrival-glints,.eyelids{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}
.arrival-glow{z-index:20;background:radial-gradient(ellipse at 50% 49%,#fffefa 12%,#fff8e6 38%,#fff5d5dc 68%,#ffefd1c7)}
.arrival-glints{z-index:21}
.eyelids{z-index:22;background:transparent;isolation:isolate;overflow:hidden;contain:paint}
.eyelid,.eye-darkness{position:absolute;inset:0;display:block;opacity:0;will-change:opacity}
.upper-lid{background:linear-gradient(to bottom,#110d0b 0%,#110d0bf0 14%,#110d0b99 35%,#110d0b2e 60%,transparent 88%)}
.lower-lid{background:linear-gradient(to top,#110d0b 0%,#110d0be6 12%,#110d0b80 30%,#110d0b21 56%,transparent 82%)}
.eye-darkness{background:#110d0b}
@media(prefers-reduced-motion:reduce){.arrival-glow,.arrival-glints,.eyelids{display:none}}

/* Dari invitation text uses the same calligraphic family in every presentation. */
.printed-copy[lang=fa]{--dari-fit:1;top:26.7%;font-family:Nastaliq,Naskh,serif;font-size:calc(3.65cqw * var(--dari-fit));line-height:1.9;letter-spacing:0}
.printed-copy[lang=fa] .card-category{font-size:calc(3.8cqw * var(--dari-fit));line-height:1.8;margin-bottom:calc(.9cqw * var(--dari-fit))}
.printed-copy[lang=fa] .card-names{font-family:Nastaliq,Naskh,serif;font-size:calc(6.6cqw * var(--dari-fit));line-height:1.7;letter-spacing:0;margin-bottom:calc(.9cqw * var(--dari-fit))}
.printed-copy[lang=fa] .card-verse{margin-bottom:calc(1.1cqw * var(--dari-fit))}
.printed-copy[lang=fa] .card-message{margin-bottom:0}
.printed-copy[lang=fa] .card-date{line-height:1.9}
.printed-copy[lang=fa] .card-date br{display:none}
.printed-copy[lang=fa] .card-time{margin-top:calc(.5cqw * var(--dari-fit))}
.printed-copy[lang=fa] .printed-rule{margin:calc(1cqw * var(--dari-fit)) 0 calc(1cqw * var(--dari-fit)) auto}
.printed-copy[lang=fa] .card-venue{font-size:calc(3.8cqw * var(--dari-fit))}
.printed-copy[lang=fa] .card-address{font-size:calc(2.75cqw * var(--dari-fit))}
.palace-copy[lang=fa]{font-family:Nastaliq,Naskh,serif;font-size:calc(2.65cqw * var(--copy-fit));line-height:1.9}
.palace-copy[lang=fa] .card-category{font-family:Nastaliq,Naskh,serif;font-size:calc(2.65cqw * var(--copy-fit));line-height:1.8;margin-bottom:calc(.5cqw * var(--copy-fit))}
.palace-copy[lang=fa] .card-names{font-size:calc(5.5cqw * var(--copy-fit));line-height:1.7;padding-top:0;margin-bottom:calc(.7cqw * var(--copy-fit))}
.palace-copy[lang=fa] .card-verse{margin-bottom:calc(1cqw * var(--copy-fit))}
.palace-copy[lang=fa] .card-date,.palace-copy[lang=fa] .card-time{font-size:calc(2.45cqw * var(--copy-fit));line-height:1.9}

/* Fine optical glass: compact text-sized surfaces with feathered edges. */
.experience{height:100dvh;border:0;box-shadow:none}
.welcome-title,.language-panel{background:none;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.welcome-title{top:16%;left:20px;right:20px;padding:0;border-radius:0;text-shadow:none;display:flex;flex-direction:column;align-items:center}
.welcome-title h1,.welcome-title .eyebrow,.greeting-block,.language-grid button,.subtle-button,.language-select,.read-button,.reader-close{position:relative;isolation:isolate;background:transparent;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;color:#332619;text-shadow:0 1px 2px #fff9edc9}
.welcome-title h1::before,.welcome-title .eyebrow::before,.greeting-block::before,.language-grid button::before,.subtle-button::before,.language-select::before,.read-button::before,.reader-close::before{content:'';position:absolute;inset:2px -2px;z-index:-1;pointer-events:none;border-radius:inherit;background:linear-gradient(135deg,#fffef76b 0%,#fffdf02e 42%,#f7ead247 74%,#ffffff52 100%);-webkit-backdrop-filter:blur(13px) saturate(1.35) brightness(1.12);backdrop-filter:blur(13px) saturate(1.35) brightness(1.12);-webkit-mask-image:linear-gradient(90deg,transparent,#000 10px,#000 calc(100% - 10px),transparent),linear-gradient(0deg,transparent,#000 7px,#000 calc(100% - 7px),transparent);mask-image:linear-gradient(90deg,transparent,#000 10px,#000 calc(100% - 10px),transparent),linear-gradient(0deg,transparent,#000 7px,#000 calc(100% - 7px),transparent);-webkit-mask-composite:source-in;mask-composite:intersect}
.welcome-title h1::after,.greeting-block::after,.language-grid button::after,.subtle-button::after,.language-select::after,.read-button::after{content:'';position:absolute;inset:5px 13px;z-index:-1;pointer-events:none;border-radius:inherit;background:linear-gradient(180deg,#ffffffe0 0,transparent 1px,transparent calc(100% - 1px),#fff9e440 100%);-webkit-mask-image:linear-gradient(90deg,transparent,#000 35%,#000 65%,transparent);mask-image:linear-gradient(90deg,transparent,#000 35%,#000 65%,transparent);opacity:.5}
.welcome-title h1{width:max-content;max-width:100%;padding:7px 14px 10px;border-radius:25px;font-size:clamp(34px,8.8vw,44px);line-height:1.05}
.welcome-title .eyebrow{width:max-content;font-size:12px;letter-spacing:.25em;margin:0 0 8px;padding:5px 13px;border-radius:999px}
.welcome-title h1 span{color:#67471f}
.language-panel{left:20px;right:20px;bottom:max(28px,env(safe-area-inset-bottom));padding:0;border-radius:0;display:flex;flex-direction:column;align-items:center}
.greeting-block{width:min(264px,100%);height:68px;justify-content:center;border-radius:24px;padding:7px 11px;margin:0 0 10px}
.greeting{font-size:22px;line-height:1.2;margin-bottom:4px;color:#443019}
.greeting:lang(fa){font-size:26px}
.language-prompt{font-size:13px;line-height:1.5;color:#443322}
.language-grid{width:min(264px,100%);grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}
.language-grid button{border-radius:999px;min-height:44px;justify-content:center;padding:7px 8px;font-size:15px;gap:8px;transition:transform .2s}
.language-grid button::before{inset:4px -2px}
.language-grid button::after{inset:7px 13px}
.language-grid button>span:first-child{font-size:18px}
.language-grid button[lang=fa]{font-size:18px}
.language-grid button:hover,.subtle-button:hover,.read-button:hover{background:transparent;box-shadow:none}
.language-grid button:hover::before,.subtle-button:hover::before,.read-button:hover::before{background:linear-gradient(135deg,#fffef78c,#fffdf052,#ffffff73)}
.language-grid button:active,.subtle-button:active,.read-button:active{transform:scale(.97)}
.toolbar{padding-inline:14px;padding-top:max(10px,env(safe-area-inset-top))}
.subtle-button,.language-select{border-radius:999px}
.subtle-button{min-height:44px;padding:8px 12px;font-size:14px}
.language-select select{background:transparent;border:0;border-radius:999px;min-height:44px;padding:8px 27px 8px 13px;font-size:14px;color:#332619;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.language-select option{background:#fcf5e9;color:#382818}
.read-button{border-radius:999px;min-height:44px;padding:9px 16px;gap:8px;font-size:15px;line-height:1.35}
.read-button svg{flex:none;width:18px;height:18px}
.experience[data-place=palace] .invitation-footer{display:flex;align-items:center;left:12px;right:12px;width:auto;bottom:max(18px,env(safe-area-inset-bottom));padding:0}
.experience[data-place=palace] .read-button{width:max-content;max-width:100%;height:auto;background:transparent;min-height:44px;padding:9px 16px;font-size:15px;-webkit-backdrop-filter:none;backdrop-filter:none}
.experience[data-place=palace] .read-button:lang(fa){font-size:17px;line-height:1.45}
.reader{border:0;border-radius:26px;background:#fff9eddb;-webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);box-shadow:0 18px 70px #21170f38;scrollbar-width:thin;scrollbar-color:#8d704c66 transparent}
.reader::backdrop{background:#261b142e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.reader-paper{background:none}
.reader-close{border-radius:50%}
.reader::-webkit-scrollbar{width:6px}
.reader::-webkit-scrollbar-thumb{background:#8d704c66;border-radius:999px}
.reader::-webkit-scrollbar-track{background:transparent}
@media(max-height:720px){.welcome-title{top:13%}.welcome-title h1{font-size:34px}.language-panel{bottom:max(20px,env(safe-area-inset-bottom))}.greeting-block{margin-bottom:7px}.language-grid{gap:5px 12px}.experience[data-place=palace] .invitation-footer{bottom:max(14px,env(safe-area-inset-bottom))}}
@media(max-width:350px){.language-panel{left:16px;right:16px}.welcome-title{left:16px;right:16px}.welcome-title h1{font-size:32px}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.welcome-title h1::before,.welcome-title .eyebrow::before,.greeting-block::before,.language-grid button::before,.subtle-button::before,.language-select::before,.read-button::before{background:#fff9edcc}}

/* Photo-local breeze, behind real text and the existing water layer. */
.photo-breeze{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;opacity:0}
.photo-breeze.is-ready{opacity:1}
.palace-frame>.photo-breeze{z-index:0}
.palace-copy{z-index:1}
@media(prefers-reduced-motion:reduce){.photo-breeze{display:none}}

.welcome-title h1{font-size:clamp(21px,6.4vw,34px);white-space:nowrap;padding:8px 12px;line-height:1.18}

/* Names begin below the gold arch; all headings share the same inset paper area. */
.palace-copy{top:44.6%;height:28.8%;display:flex;flex-direction:column;justify-content:space-between}
.palace-copy>p,.palace-copy>div{flex:none}
.palace-copy .card-category,.palace-copy[lang=fa] .card-category{position:absolute;top:-7cqw;left:3cqw;width:24.4cqw;height:4.8cqw;display:flex;align-items:center;justify-content:center;text-align:center;margin:0;white-space:nowrap}
.palace-copy .card-names{margin-bottom:0}
.palace-copy .card-verse{margin-bottom:calc(2cqw * var(--copy-fit))}
.palace-copy .card-message{margin-bottom:0}
.palace-copy .printed-rule{margin:0 0 calc(1.25cqw * var(--copy-fit))}
.palace-copy[lang=fa] .card-names{margin:0}
.palace-copy[lang=fa] .card-verse{margin-bottom:calc(1cqw * var(--copy-fit))}
.palace-copy[lang=fa] .printed-rule{margin:0 0 calc(.8cqw * var(--copy-fit)) auto}

/* Larger language choices, raised together above the lower photo edge. */
.language-panel{bottom:max(64px,calc(env(safe-area-inset-bottom) + 36px))}
.greeting-block{width:min(300px,100%);height:76px;padding:8px 12px;margin-bottom:12px}
.greeting{font-size:24px}
.greeting:lang(fa){font-size:28px}
.language-prompt{font-size:15px}
.language-grid{width:min(354px,100%);grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 9px}
.language-grid button{flex-direction:column;gap:6px;min-height:86px;padding:9px 3px;font-size:clamp(16px,4.35vw,18px);line-height:1.2;border-radius:25px}
.language-grid button>span:first-child{font-size:clamp(36px,10.25vw,42px);line-height:1.05;white-space:nowrap;letter-spacing:-.025em}
.language-grid button[lang=fa]{font-size:clamp(20px,5.4vw,22px);line-height:1.2}
@media(max-height:720px){.language-panel{bottom:max(46px,calc(env(safe-area-inset-bottom) + 26px))}.greeting-block{height:70px;margin-bottom:9px}.language-grid button{min-height:80px}}
@media(max-width:350px){.language-grid{gap:8px 6px}.language-grid button{padding-inline:2px}}

/* Gold letterpress: a restrained recessed edge and paper-colored relief light. */
.palace-copy .card-category,.printed-copy .card-category{color:#976724;font-weight:400;text-shadow:0 -.035cqw .02cqw #63421370,0 .06cqw .02cqw #fffbea,0 .015cqw .04cqw #c59d5860}
.printed-copy .card-category{width:calc(100% - 6cqw);margin-inline:3cqw;text-align:center}

/* One unbroken name line on the physical invitation in every language. */
.printed-copy .card-names,.palace-copy .card-names{--name-fit:1;white-space:nowrap;letter-spacing:-.025em}
.printed-copy .card-names,.printed-copy[lang=tg] .card-names{font-size:calc(6cqw * var(--name-fit));line-height:1.12}
.palace-copy .card-names,.palace-copy[lang=tg] .card-names{font-size:calc(4.25cqw * var(--name-fit));line-height:1.12}
.printed-copy[lang=fa] .card-names{font-size:calc(6.6cqw * var(--name-fit));line-height:1.7;letter-spacing:0}
.palace-copy[lang=fa] .card-names{font-size:calc(5.5cqw * var(--name-fit));line-height:1.7;letter-spacing:0}
.card-names .join{margin-inline:.18em}
.reader-paper h2{--name-fit:1;white-space:nowrap;font-size:calc(clamp(39px,10.5vw,52px) * var(--name-fit))}
.reader-paper[lang=fa] h2{font-size:calc(39px * var(--name-fit))}
.reader-paper h2>span{display:inline}
.reader-paper h2 .reader-join{margin-inline:.22em}

/* Calligraphic welcome names only; invitation typography is unchanged. */
@font-face{font-family:WeddingSignature;src:url('assets/fonts/great-vibes.ttf') format('truetype');font-display:swap;font-style:normal;font-weight:400}
.welcome-title h1{font-family:WeddingSignature,InvitationSerif,Georgia,serif;font-size:clamp(27px,8.3vw,45px);font-weight:400;letter-spacing:0;line-height:1.4;padding:7px 16px 5px;white-space:nowrap;color:#68471f;text-shadow:0 1px 1px #fff6e9b3}
.welcome-title h1 span{font-family:inherit;font-style:normal;font-size:.86em;color:inherit;margin-inline:.1em}

/* Softly rounded glass: clip the blurred layer itself as well as its host. */
.welcome-title h1,.welcome-title .eyebrow,.greeting-block,.language-grid button,.subtle-button,.language-select,.read-button{border-radius:999px}
.welcome-title h1::before,.welcome-title .eyebrow::before,.greeting-block::before,.language-grid button::before,.subtle-button::before,.language-select::before,.read-button::before,.reader-close::before{border-radius:999px;clip-path:inset(0 round 999px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent),linear-gradient(0deg,transparent,#000 9px,#000 calc(100% - 9px),transparent);mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent),linear-gradient(0deg,transparent,#000 9px,#000 calc(100% - 9px),transparent)}
.welcome-title h1::after,.greeting-block::after,.language-grid button::after,.subtle-button::after,.language-select::after,.read-button::after{border-radius:999px;clip-path:inset(0 round 999px);opacity:.3}

/* Center the Dari text in the marked paper column, clear of the calligraphy. */
.palace-copy[lang=fa]{left:24.2%;width:30.4%;text-align:center}
.palace-copy[lang=fa] .card-category{left:3cqw}
.palace-copy[lang=fa] .card-names,.palace-copy[lang=fa] .palace-prose,.palace-copy[lang=fa] .palace-date-block{text-align:center}
.palace-copy[lang=fa] .printed-rule{margin-inline:auto}

/* A discreet music control remains available through the whole presentation. */
.music-toggle{position:absolute;right:12px;bottom:max(14px,env(safe-area-inset-bottom));z-index:8;width:44px;height:44px;display:grid;place-items:center;border:1px solid #fff9e54d;border-radius:50%;color:#634720;background:#fff5df70;box-shadow:0 2px 12px #38251012,inset 0 1px 1px #fff9ed7a;-webkit-backdrop-filter:blur(13px) saturate(1.15);backdrop-filter:blur(13px) saturate(1.15)}
.music-toggle[hidden]{display:none}.music-toggle svg{width:21px;height:21px;stroke-linecap:round;stroke-linejoin:round}.music-toggle[aria-pressed=true] .music-slash,.music-toggle[aria-pressed=false] .music-waves{display:none}.music-toggle:active{transform:scale(.96)}

.music-toggle #musicLabel{display:none}.experience[data-state=welcome] .music-toggle{width:auto;min-width:44px;display:flex;gap:8px;padding:0 13px;border-radius:999px}.experience[data-state=welcome] .music-toggle #musicLabel{display:inline;font-size:15px;line-height:1.2}

.reader-paper .music-credit{margin:30px 0 0;font-family:InvitationSerif,Georgia,serif;font-size:14px;line-height:1.6;letter-spacing:0;color:#735e43}.music-credit a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
