:root{--paper:#faf3e6;--ink:#574335;--soft:#7b6753;--gold:#9c7845;--rose:#945d4e;--line:#c5a77c;--glow:0 0 10px #faf3e6,0 0 3px #faf3e6;--serif:'Noto Serif Devanagari',serif;--sans:'Noto Sans Devanagari',sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#e8e0d1;color:var(--ink);font:16px/1.85 var(--serif);-webkit-font-smoothing:antialiased}body.intro-active{overflow:hidden}
h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400}em{font-style:normal;color:var(--rose)}a{color:inherit;text-decoration:none}img,video{display:block;max-width:100%;height:auto}[hidden]{display:none!important}
button,textarea{font:inherit}button{cursor:pointer}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid var(--rose);outline-offset:5px}::selection{background:#dacaaf;color:#4a382b}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:fixed;top:-100px;left:15px;z-index:100;background:var(--paper);padding:12px;border:1px solid var(--gold)}.skip-link:focus{top:15px}
.reading-progress{position:fixed;top:0;left:0;right:0;z-index:80;height:2px;background:#aa8056;transform:scaleX(0);transform-origin:left}
.invitation-scroll{width:100%;max-width:600px;margin:0 auto;background:var(--paper);box-shadow:0 0 90px #6b492a16;overflow:hidden}

/* Hero: the video's final courtyard frame, with the invitation inside the arch. */
.hero{position:relative;isolation:isolate;min-height:100vh;min-height:100svh;display:flex;overflow:hidden;background:var(--paper)}
.painted-world{position:absolute;inset:0;z-index:-1}.painted-world img,.intro-video{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.hero.drift .painted-world{transform:scale(1.04);transition:transform 18s cubic-bezier(.2,.2,.3,1)}
.hero-content{width:70%;margin:auto;padding:max(120px,16svh) 0 max(104px,15svh);text-align:center;text-shadow:var(--glow)}
.invocation{font-size:14px;color:#8d663b}
.ganesha-painting{width:132px;margin:4px auto 2px;mix-blend-mode:multiply;mask-image:radial-gradient(ellipse 68% 66% at 50% 50%,#000 61%,transparent 82%)}
.shloka{font-size:12.5px;line-height:1.85;color:#7f6349;white-space:nowrap}
.hero h1{color:var(--rose);font-size:50px;line-height:1.45;letter-spacing:-.04em;margin-top:10px}.hero h1>span{display:block;color:var(--gold);font-size:18px;line-height:1.7;letter-spacing:0}
.hero-home{font-size:22px;margin-top:2px}
.hero-date{font-size:13.5px;color:#735b43;margin-top:8px}.hero-date>span{padding:0 5px}
.scroll-cue{display:inline-flex;flex-direction:column;align-items:center;font-size:12.5px;color:#866c4d;margin-top:10px;padding:4px 12px;min-height:44px}.scroll-cue>span{font-size:20px;line-height:1;animation:scroll-invitation 2.5s ease-in-out infinite}
.enter-copy{transition:opacity 1.2s ease,transform 1.4s cubic-bezier(.2,.7,.2,1)}.intro-boot .enter-copy,.intro-active .enter-copy{opacity:0;transform:translateY(14px)}
.hero h1.enter-copy{transition-delay:.15s}.hero-home.enter-copy{transition-delay:.25s}.hero-date.enter-copy{transition-delay:.35s}.scroll-cue.enter-copy{transition-delay:.5s}

/* Opening clip */
.entrance{position:absolute;inset:0;z-index:12;background:var(--paper) url('assets/intro-poster.webp') center/cover;transition:opacity 1.2s ease}.entrance.fading{opacity:0;pointer-events:none}
.intro-video{position:absolute;inset:0}
.open-doors{position:absolute;left:50%;bottom:16%;transform:translateX(-50%);min-height:48px;padding:10px 26px;border:1px solid #bc9a67;border-radius:30px;background:#fff7e8e0;color:#7c5a37;font-size:16px;box-shadow:0 6px 24px #6a452326;animation:door-call 2.4s ease-in-out infinite}
.entrance-skip{position:fixed;z-index:36;top:max(14px,env(safe-area-inset-top));right:max(14px,calc((100vw - 600px)/2 + 14px));display:none;align-items:center;min-height:44px;padding:9px 16px;border:1px solid #bc9a67;border-radius:30px;background:#fff7e8c9;backdrop-filter:blur(6px);color:#7c5a37;font-size:13px;white-space:nowrap}.entrance-skip span{margin-left:8px}
.intro-active .entrance-skip{display:inline-flex}.intro-boot .sound-toggle,.intro-active .sound-toggle{opacity:0;pointer-events:none}

/* Paper sections */
.paper-section{position:relative;background:var(--paper);text-align:center}
.paper-divider{display:flex;align-items:center;justify-content:center;gap:15px;width:170px;margin:20px auto;color:var(--gold);font-size:24px;line-height:1.3}.paper-divider>span{height:1px;width:44px;background:linear-gradient(90deg,transparent,#be9d6a80)}.paper-divider>span:last-child{transform:rotate(180deg)}
.eyebrow{font-size:13.5px;color:#947547}
.body-copy{font-size:16px;line-height:1.95;color:var(--soft)}
.small-label{font-size:13px;color:#8a755b;line-height:1.6;margin-bottom:4px}
.family{padding:46px 24px 40px}
.family h2,.homecoming h2{font-size:30px;line-height:1.6;margin:8px 0 12px;letter-spacing:-.02em}
.elders{display:grid;grid-template-columns:1fr 1fr;gap:16px}.elders h3{font-size:19px;line-height:1.6;color:#71523c}
.hosts{margin-top:24px;padding-top:22px;border-top:1px solid #c2a47d40}.hosts h3{font-size:23px;line-height:1.65;color:var(--rose)}.hosts .name{white-space:nowrap}.hosts .and{font-size:14px;color:#9a805e;padding:0 3px}#hero-title:focus{outline:none}
.family-name{font-size:14.5px;color:#8a7053;margin-top:6px}
.ceremony{padding:38px 0 18px;border-top:1px solid #c2a47d33}
.date-block time{display:block}.date-number{display:block;font-size:84px;line-height:1.25;color:#9a654e;letter-spacing:-.04em;margin-top:2px}.month{display:block;font-size:18px;color:#69513b}
.start-time{font-size:15px;color:var(--rose);margin-top:4px}
.havan-scene{position:relative;margin:14px auto 0;max-width:520px}.havan-scene>img{width:100%;mix-blend-mode:multiply;mask-image:linear-gradient(transparent,#000 8%,#000 92%,transparent)}.havan-scene figcaption{font-size:13.5px;color:#977544;margin:2px 0 6px}
.flame-light{position:absolute;left:37%;top:28%;width:23%;height:38%;background:radial-gradient(ellipse,#fba43033,transparent 70%);mix-blend-mode:multiply;opacity:.3;animation:flame-breathe 3s ease-in-out infinite alternate;pointer-events:none}
.program{max-width:380px;padding:0 24px;margin:0 auto;list-style:none}.program li{padding:14px 0 16px;position:relative}.program li+li:before{content:'';position:absolute;top:0;left:calc(50% - 24px);width:48px;height:1px;background:#c2a47d70}
.program h3{font-size:21px;line-height:1.7;color:#76533e}.program p{font-size:15px;line-height:1.8;color:#826f58}.program .event-time{font-size:13.5px;color:var(--rose)}

/* Closing courtyard */
.homecoming{position:relative;isolation:isolate;display:flex;min-height:760px;text-align:center;overflow:hidden}
.homecoming-art{position:absolute;inset:0;z-index:-1}.homecoming-art img{width:100%;height:100%;object-fit:cover}
.homecoming-content{width:72%;margin:0 auto;padding:150px 0 120px;text-shadow:var(--glow)}
.homecoming .body-copy{font-size:15px}
.venue h3{font-size:27px;color:var(--rose);line-height:1.6}.venue-address{white-space:pre-line;font-size:15px;line-height:1.8;margin-top:8px;overflow-wrap:anywhere}.closing-date{font-size:14.5px;color:#846444;margin:8px 0 14px}
.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;padding:10px 18px;border:1px solid #b48c58;background:#faf3e699;font-size:14px;color:#77553b;line-height:1.6;transition:background .3s,transform .3s}.button:hover{background:#efdfc3;transform:translateY(-2px)}.button svg{width:17px;height:17px}
.closing-actions{padding:30px 24px 4px}.signature{font-size:15px;color:var(--rose);margin-top:18px}
footer{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 26px;background:var(--paper);padding:22px 22px 40px;text-align:center;font-size:13px;color:#8c7559}footer>p{width:100%;font-size:14.5px}footer button,footer a{font:inherit;min-height:44px;padding:8px 0;color:inherit;background:none;border:0}footer button>span{font-family:var(--sans);font-size:17px;margin-right:5px}

/* Floating controls */
.sound-toggle{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));right:max(14px,calc((100vw - 600px)/2 + 18px));z-index:35;display:flex;align-items:center;gap:9px;min-height:44px;padding:8px 14px;background:#faf3e6e8;backdrop-filter:blur(8px);border:1px solid #bb9b6b7a;border-radius:30px;font-family:var(--sans);font-size:13px;color:#795b3c;box-shadow:0 4px 20px #6a452315;transition:opacity .6s}
.sound-bars{display:flex;align-items:center;gap:3px;height:17px}.sound-bars i{display:block;width:2px;height:7px;background:currentColor}.sound-bars i:nth-child(2){height:16px}.sound-bars i:nth-child(3){height:11px}
.sound-toggle[aria-pressed=true] i{animation:soundwave .9s ease-in-out infinite alternate}.sound-toggle[aria-pressed=true] i:nth-child(2){animation-delay:-.5s}.sound-toggle[aria-pressed=true] i:nth-child(3){animation-delay:-.2s}.sound-toggle[aria-pressed=true] i:nth-child(4){animation-delay:-.7s}
.motion-ready .reveal{opacity:0;transform:translateY(22px);transition:opacity 1s ease,transform 1.2s cubic-bezier(.2,.7,.2,1)}.motion-ready .reveal.visible{opacity:1;transform:none}
.status-message{position:fixed;bottom:80px;left:50%;transform:translate(-50%,15px);z-index:90;max-width:calc(100vw - 30px);width:max-content;background:var(--paper);color:var(--ink);border:1px solid #bc9f73;padding:13px 20px;box-shadow:0 8px 30px #54381d21;font-size:14px;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s}.status-message.show{opacity:1;transform:translate(-50%,0)}
dialog{width:460px;max-width:calc(100% - 32px);border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:35px 25px}dialog::backdrop{background:#4b3b2b8c;backdrop-filter:blur(4px)}dialog h2{font-size:26px;margin-bottom:10px}dialog p{font-size:15px}dialog textarea{display:block;width:100%;margin:18px 0;background:#fff8;border:1px solid var(--line);padding:12px;resize:vertical;font-size:16px;color:var(--ink)}.dialog-close{position:absolute;right:4px;top:4px;min-width:44px;min-height:44px;font-size:26px;color:var(--ink);background:none;border:0}
@keyframes soundwave{to{transform:scaleY(.35)}}@keyframes scroll-invitation{50%{transform:translateY(5px)}}@keyframes flame-breathe{to{opacity:.6;transform:scale(1.04)}}@keyframes door-call{50%{box-shadow:0 6px 30px #b48c5866}}

@media(min-width:601px){body{padding:24px 0}.hero{min-height:min(1000px,calc(100svh - 48px))}.hero-content{padding-top:170px;padding-bottom:140px}.ganesha-painting{width:160px}.shloka{font-size:14px}.hero h1{font-size:62px}.hero h1>span{font-size:21px}.hero-home{font-size:26px}.hero-date{font-size:15.5px}.invocation{font-size:16px}
 .family{padding:56px 48px 48px}.family h2,.homecoming h2{font-size:36px}.body-copy{font-size:17.5px}.elders h3{font-size:22px}.hosts h3{font-size:27px}.small-label{font-size:14px}
 .date-number{font-size:100px}.month{font-size:21px}.program h3{font-size:23px}.program p{font-size:16px}
 .homecoming{min-height:960px}.homecoming-content{padding-top:200px}.homecoming .body-copy{font-size:17px}.venue h3{font-size:32px}}
@media(max-width:360px){.hero-content{width:76%}.ganesha-painting{width:118px}.shloka{font-size:11.5px}.hero h1{font-size:44px}.hero-home{font-size:20px}.hero-date{font-size:12.5px}.family h2,.homecoming h2{font-size:26px}.elders{gap:10px}.elders h3{font-size:17px}.small-label{font-size:12px}.hosts h3{font-size:21px}.body-copy{font-size:14.5px}.homecoming-content{width:80%;padding-top:130px}.homecoming .body-copy{font-size:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.entrance{display:none!important}.motion-ready .reveal,.intro-active .enter-copy,.intro-boot .enter-copy{opacity:1;transform:none}.hero.drift .painted-world{transform:none}}
