:root{--gold:#e7b96c;--gold-bright:#ffd88c;--cream:#fff0d7;--font-display:'Cormorant Garamond',Georgia,serif;--font-ui:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#17121c;color:var(--cream);font-family:var(--font-ui)}button,input{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gold-bright);outline-offset:4px}
.experience{position:relative;width:100%;height:100%;height:100svh;min-height:520px;overflow:hidden;isolation:isolate;background:radial-gradient(ellipse at 50% 72%,#483044 0,#281e2b 47%,#17121c 100%)}
.scene-host{position:absolute;inset:0;z-index:0;overflow:hidden}.webgl-canvas{display:block;width:100%;height:100%;touch-action:manipulation}.scene-vignette{position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(10,7,14,.55),transparent 22%,transparent 66%,rgba(8,6,10,.46)),radial-gradient(ellipse at center,transparent 40%,rgba(8,6,11,.3) 100%)}
.topbar{position:absolute;z-index:5;top:0;left:0;right:0;height:83px;padding:18px clamp(20px,4vw,62px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,234,205,.08);background:linear-gradient(180deg,rgba(18,13,20,.42),transparent)}.brand{display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(230,185,113,.7);border-radius:15px 5px 15px 5px;color:#f0c77f;font-family:var(--font-display);font-size:21px;font-weight:700;letter-spacing:-2px;box-shadow:0 0 24px rgba(241,181,91,.13)}.brand-wording{display:flex;flex-direction:column;gap:3px}.brand-wording strong{font-size:11px;letter-spacing:.19em;font-weight:700}.brand-wording small{font-size:7px;letter-spacing:.22em;color:rgba(255,235,207,.53)}.topbar-right{display:flex;align-items:center;gap:18px}.occasion-pill{font-size:8px;letter-spacing:.17em;color:rgba(255,234,207,.67)}.live-dot{display:inline-block;width:6px;height:6px;margin-right:7px;border-radius:50%;background:#e6bc78;box-shadow:0 0 10px #e6bc78}.sound-toggle{width:36px;height:36px;display:grid;place-items:center;border:1px solid rgba(255,232,196,.18);border-radius:50%;background:rgba(12,9,15,.25);color:#f4d9ad}.sound-toggle svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.sound-on{display:none}.sound-toggle.is-on .sound-on{display:block}.sound-toggle.is-on .sound-off{display:none}
.top-note{position:absolute;z-index:4;top:105px;left:50%;transform:translateX(-50%);width:max-content;max-width:90%;font-size:8px;letter-spacing:.32em;text-align:center;color:rgba(255,226,185,.73);text-shadow:0 1px 15px #1a1018;transition:opacity .6s}.top-note.faded{opacity:0}
.intro-copy{position:absolute;z-index:4;top:18%;left:50%;width:min(620px,90%);transform:translateX(-50%);text-align:center;transition:opacity .75s,transform .75s;pointer-events:none}.intro-copy.hidden{opacity:0;transform:translate(-50%,-15px)}.eyebrow,.panel-kicker{margin:0;color:#e8bd7b;font-size:8px;font-weight:600;letter-spacing:.29em}.intro-copy h1{margin:9px 0 0;font-family:var(--font-display);font-size:clamp(58px,7.4vw,96px);font-weight:500;line-height:.80;letter-spacing:-.025em;color:#fff0d7;text-shadow:0 0 25px rgba(255,208,132,.22)}.intro-copy h1 em,.send-panel h2 em,.share-panel h2 em{color:var(--gold-bright);font-weight:500}.intro-subtitle{font-size:12px;color:rgba(255,240,218,.72);letter-spacing:.035em}
.stage-hint{position:absolute;z-index:4;left:50%;bottom:13.5%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;color:#f7dfb5;font-size:11px;letter-spacing:.04em;text-shadow:0 1px 12px #21131a;white-space:nowrap;transition:opacity .5s,transform .5s}.stage-hint.hidden{opacity:0;transform:translate(-50%,8px);pointer-events:none}.hint-icon{color:var(--gold-bright);font-size:17px;filter:drop-shadow(0 0 8px #ffc36d)}
.main-actions{position:absolute;z-index:4;bottom:6.5%;left:50%;transform:translateX(-50%);transition:opacity .5s,transform .5s}.main-actions.hidden{opacity:0;transform:translate(-50%,10px);pointer-events:none}.gold-button{display:inline-flex;align-items:center;justify-content:center;gap:13px;min-width:210px;padding:15px 25px;border:1px solid rgba(255,238,192,.92);border-radius:99px;color:#332113;background:linear-gradient(110deg,#e6ad58,#ffdc91 52%,#e7b665);font-size:12px;font-weight:700;letter-spacing:.015em;box-shadow:0 0 0 5px rgba(237,190,111,.09),0 8px 36px rgba(255,184,87,.28),inset 0 1px 0 rgba(255,255,255,.65);transition:transform .25s,box-shadow .25s,filter .25s}.gold-button:hover{transform:translateY(-2px);filter:brightness(1.06);box-shadow:0 0 0 7px rgba(237,190,111,.11),0 12px 45px rgba(255,184,87,.35)}.button-spark{font-size:17px}.button-arrow{font-size:16px;margin-left:4px}
.celebration-title{position:absolute;z-index:4;top:12.5%;left:50%;width:min(760px,92%);transform:translate(-50%,-12px);text-align:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity 1.25s,transform 1.25s,visibility 1.25s}.celebration-title.visible{opacity:1;visibility:visible;transform:translate(-50%,0)}.title-kicker{margin:0 0 3px;font-size:8px;letter-spacing:.34em;color:rgba(255,229,190,.80)}.celebration-title h2{margin:0;font-family:var(--font-display);font-size:clamp(50px,7.5vw,102px);font-weight:600;line-height:.95;letter-spacing:.015em;color:#fff0cd;text-shadow:0 0 9px rgba(255,231,175,.95),0 0 28px rgba(255,190,99,.75),0 0 65px rgba(255,169,74,.44)}.title-recipient{margin:9px 0 0;color:#f4d29b;font-family:var(--font-display);font-size:clamp(18px,2.3vw,27px);letter-spacing:.06em;text-shadow:0 0 16px rgba(255,196,113,.65)}.title-ornament{display:flex;justify-content:center;align-items:center;gap:9px;margin:10px auto 0;color:#ffcf7c;font-size:11px;opacity:.85}.title-ornament span{width:39px;height:1px;background:linear-gradient(90deg,transparent,#dba958)}.title-ornament span:last-child{transform:rotate(180deg)}
.lantern-prompt{position:absolute;z-index:5;left:50%;top:59%;transform:translate(-50%,-50%) scale(.9);opacity:0;visibility:hidden;transition:opacity .65s,transform .65s,visibility .65s}.lantern-prompt.visible{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)}.lantern-prompt button{position:relative;padding:12px 24px;border:1px solid rgba(255,229,170,.7);border-radius:99px;background:linear-gradient(100deg,#d99e4a,#f4c16b);color:#352214;font-weight:700;font-size:12px;box-shadow:0 0 0 7px rgba(244,193,107,.13),0 0 34px rgba(255,186,91,.46)}.lantern-prompt button span{margin-right:7px;font-size:16px}.prompt-orbit{position:absolute;inset:-13px;border:1px solid rgba(255,224,163,.35);border-radius:99px;animation:pulse 2s infinite}@keyframes pulse{0%,100%{transform:scale(.96);opacity:.45}50%{transform:scale(1.08);opacity:0}}
.send-panel,.share-panel{position:absolute;z-index:7;left:50%;bottom:6%;transform:translate(-50%,18px);width:min(460px,calc(100% - 36px));padding:24px 30px 19px;text-align:center;border:1px solid rgba(236,194,130,.2);border-radius:24px;background:linear-gradient(145deg,rgba(24,17,24,.83),rgba(12,10,16,.88));box-shadow:0 18px 65px rgba(0,0,0,.35),inset 0 1px rgba(255,255,255,.05);backdrop-filter:blur(18px);opacity:0;visibility:hidden;transition:opacity .45s,transform .45s,visibility .45s}.send-panel.visible,.share-panel.visible{opacity:1;visibility:visible;transform:translate(-50%,0)}.send-panel h2,.share-panel h2{margin:7px 0 16px;font-family:var(--font-display);font-size:clamp(31px,4vw,43px);font-weight:500;line-height:1;color:#fff1d8}.send-panel label{display:block;text-align:left;margin:0 auto 7px;width:min(360px,100%);font-size:11px;color:#d6c1a1}.send-panel input{width:min(360px,100%);height:48px;border:0;border-bottom:1px solid rgba(234,183,102,.8);border-radius:0;background:rgba(255,255,255,.035);padding:0 13px;color:#fff2d7;font-size:16px;text-align:center;outline:none}.send-panel input::placeholder{color:rgba(255,239,215,.36)}.send-panel input:focus{border-color:#ffda91;box-shadow:0 4px 0 -3px #ffda91}.input-error{height:14px;margin:5px 0 0;color:#ffb0a1;font-size:10px;opacity:0}.input-error.visible{opacity:1}.panel-button{width:min(360px,100%);margin-top:14px;padding:14px}.text-button{display:block;margin:12px auto 0;border:0;background:transparent;color:rgba(255,236,209,.67);font-size:11px;letter-spacing:.035em}.text-button:hover{color:#ffda91}.share-description{max-width:330px;margin:-6px auto 18px;color:rgba(255,236,209,.72);font-size:12px;line-height:1.6}.share-button{width:min(360px,100%);padding:15px}.share-icon{font-size:17px}.watch-again{position:absolute;z-index:5;left:50%;bottom:3.8%;transform:translate(-50%,12px);border:0;background:transparent;color:rgba(255,234,206,.77);font-size:11px;opacity:0;visibility:hidden;transition:opacity .5s,transform .5s}.watch-again.visible{opacity:1;visibility:visible;transform:translate(-50%,0)}
.footer-brand{position:absolute;z-index:3;right:clamp(18px,4vw,64px);bottom:21px;display:flex;gap:18px;color:rgba(255,230,195,.46);font-size:7px;letter-spacing:.17em;pointer-events:none}.footer-brand b{color:#e8b45f}.footer-brand span+span{opacity:.65}
.share-modal{position:absolute;inset:0;z-index:12;display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}.share-modal.visible{opacity:1;visibility:visible}.modal-backdrop{position:absolute;inset:0;background:rgba(5,4,8,.7);backdrop-filter:blur(8px)}.share-modal-card{position:relative;width:min(410px,calc(100% - 34px));padding:32px 27px 28px;text-align:center;border:1px solid rgba(230,185,113,.3);border-radius:22px;background:linear-gradient(145deg,#29202a,#15111a);box-shadow:0 25px 85px rgba(0,0,0,.5)}.modal-close{position:absolute;right:15px;top:12px;border:0;background:none;color:#d8c2a1;font-size:25px}.modal-emblem{display:grid;place-items:center;width:42px;height:42px;margin:0 auto 14px;border:1px solid rgba(237,190,116,.45);border-radius:50%;color:#ffcf7b;font-size:19px}.share-modal-card h2{margin:7px 0 15px;font-family:var(--font-display);font-size:43px;font-weight:500;color:#fff0d4}.share-option{display:flex;align-items:center;gap:13px;width:100%;margin-top:10px;padding:14px 16px;border:1px solid rgba(255,236,205,.15);border-radius:12px;background:rgba(255,255,255,.045);color:#fff0d4;text-decoration:none;font-size:12px;text-align:left}.share-option>span{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:rgba(237,190,112,.13);color:#ffd58b;font-size:18px}.share-option b{margin-left:auto;color:#e6b870;font-size:16px}.whatsapp-option{border-color:rgba(92,193,127,.25)}
.loading-screen{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:13px;background:radial-gradient(ellipse at 50% 55%,#352432,#17111a 66%);transition:opacity .8s,visibility .8s}.loading-screen.done{opacity:0;visibility:hidden;pointer-events:none}.loader-mark{width:54px;height:54px;display:grid;place-items:center;border:1px solid rgba(235,189,117,.7);border-radius:16px 5px 16px 5px;color:#f0c77f;font-family:var(--font-display);font-size:23px;font-weight:700;letter-spacing:-2px;box-shadow:0 0 35px rgba(241,181,91,.16)}.loader-line{width:135px;height:2px;background:rgba(255,235,199,.13);overflow:hidden}.loader-line span{display:block;width:40%;height:100%;background:#efbd70;animation:loading 1.1s ease-in-out infinite}@keyframes loading{0%{transform:translateX(-110%)}100%{transform:translateX(360%)}}.loading-screen p{font-size:8px;letter-spacing:.28em;color:rgba(255,231,192,.64)}.webgl-fallback[hidden]{display:none!important}.webgl-fallback{position:absolute;z-index:15;inset:0;display:grid;place-items:center;padding:30px;text-align:center;background:#17121c;color:#fff0d4;font-size:14px;line-height:1.7}
@media(max-width:700px){.topbar{height:67px;padding:12px 17px}.occasion-pill{display:none}.brand-mark{width:35px;height:35px}.top-note{top:82px;font-size:7px;letter-spacing:.24em}.intro-copy{top:18%}.intro-copy h1{font-size:clamp(51px,13vw,72px)}.intro-subtitle{font-size:10px}.stage-hint{bottom:15%;font-size:10px}.main-actions{bottom:7%}.gold-button{min-width:195px;padding:14px 20px}.celebration-title{top:10.5%}.title-kicker{font-size:7px;letter-spacing:.20em}.celebration-title h2{font-size:clamp(45px,13vw,72px)}.title-recipient{font-size:18px}.lantern-prompt{top:59%}.send-panel,.share-panel{bottom:5.5%;padding:21px 19px 17px}.send-panel h2,.share-panel h2{font-size:34px}.footer-brand{bottom:10px;left:0;right:0;justify-content:center;font-size:7px;gap:9px}.footer-brand span+span{display:none}.watch-again{bottom:2.5%}.scene-vignette{background:linear-gradient(180deg,rgba(12,9,15,.50),transparent 24%,transparent 68%,rgba(9,7,11,.65))}}
@media(max-height:650px) and (min-width:701px){.intro-copy{top:12%}.celebration-title{top:7%}.send-panel,.share-panel{bottom:3%;padding:17px 25px 13px}.send-panel h2,.share-panel h2{font-size:34px;margin-bottom:12px}.send-panel input{height:41px}.panel-button{margin-top:8px;padding:12px}.text-button{margin-top:7px}.stage-hint{bottom:12%}.main-actions{bottom:4.5%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* UA DESIGN refinement: quiet opening screen, warm reveal and compact mobile controls. */
.intro-copy{display:none!important}
#experience{background:radial-gradient(ellipse at 50% 58%,#433044 0,#271d2c 49%,#17121c 100%)}
.share-panel,.send-panel{z-index:8}
.gold-button:focus-visible,.sound-toggle:focus-visible,.lantern-prompt button:focus-visible{outline:2px solid #ffe4a9;outline-offset:4px}
@media(max-width:700px){.top-note{letter-spacing:.18em}.footer-brand{bottom:8px}.send-panel,.share-panel{max-height:82svh;overflow:auto}}


/* Cinematic interaction polish */
.webgl-canvas{cursor:default;touch-action:manipulation;outline:none;transition:filter .18s ease}
.webgl-canvas.tap-feedback{filter:brightness(1.07)}
.experience-progress{position:absolute;z-index:4;top:126px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;padding:8px 13px;border:1px solid rgba(240,204,148,.15);border-radius:30px;background:rgba(21,15,23,.23);backdrop-filter:blur(7px);pointer-events:none;white-space:nowrap;transition:opacity .45s}
.progress-step{display:flex;align-items:center;gap:6px;color:rgba(255,231,198,.43);font:600 7px/1 'DM Sans',Arial,sans-serif;letter-spacing:.18em;transition:color .45s,opacity .45s}
.progress-step i{display:block;width:5px;height:5px;border:1px solid rgba(239,192,121,.42);border-radius:50%;background:transparent;box-shadow:0 0 0 0 rgba(238,187,111,0);transition:all .45s}
.progress-step.active{color:#f3d39f}.progress-step.active i{width:7px;height:7px;background:#f2c779;border-color:#ffe4a8;box-shadow:0 0 12px 3px rgba(249,186,94,.26)}
.progress-step.complete{color:rgba(241,198,131,.75)}.progress-step.complete i{background:#bf9454;border-color:#e3bc79;box-shadow:0 0 8px rgba(229,175,92,.26)}
.progress-line{width:17px;height:1px;background:linear-gradient(90deg,rgba(219,171,105,.35),rgba(219,171,105,.12));transition:background .45s}
.gold-button,.sound-toggle,.text-button,.share-option,.watch-again,.lantern-prompt button{cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none}
.gold-button:active,.lantern-prompt button:active{transform:translateY(1px) scale(.975);filter:brightness(1.1)}
.sound-toggle{transition:transform .25s,border-color .25s,background .25s}.sound-toggle:active{transform:scale(.92)}
.share-option{transition:transform .2s,border-color .2s,background .2s}.share-option:active{transform:scale(.985);background:rgba(255,255,255,.09)}
@media(max-width:700px){.experience-progress{top:103px;gap:6px;padding:7px 10px}.progress-step{font-size:6px;letter-spacing:.13em;gap:5px}.progress-line{width:10px}}
@media(max-width:380px){.experience-progress{gap:4px;padding:7px 8px}.progress-step{font-size:5.5px;letter-spacing:.1em}.progress-line{width:7px}}
@media(prefers-reduced-motion:reduce){.webgl-canvas,.progress-step,.progress-step i{transition:none!important}}


/* Object-anchored prompt: follows the diya / lantern as the camera moves. */
.scene-tap-callout{position:absolute;z-index:6;left:50%;top:50%;display:flex;align-items:center;gap:8px;padding:10px 17px;border:1px solid rgba(255,226,172,.78);border-radius:99px;background:linear-gradient(110deg,rgba(217,158,74,.96),rgba(246,199,116,.96));color:#372315;font:700 11px/1 'DM Sans',Arial,sans-serif;letter-spacing:.035em;box-shadow:0 0 0 7px rgba(245,193,105,.12),0 0 34px rgba(255,185,92,.55),0 8px 24px rgba(0,0,0,.28);opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,-135%) scale(.9);transition:opacity .35s,visibility .35s,transform .35s;white-space:nowrap}
.scene-tap-callout.visible{opacity:1;visibility:visible;transform:translate(-50%,-145%) scale(1);animation:callout-float 2.1s ease-in-out infinite}
.scene-tap-callout i{position:absolute;left:50%;bottom:-13px;width:1px;height:14px;background:linear-gradient(rgba(255,223,164,.8),rgba(255,223,164,0));transform:translateX(-50%)}
.tap-callout-icon{font-size:14px;line-height:1}
@keyframes callout-float{0%,100%{filter:brightness(1);margin-top:0}50%{filter:brightness(1.12);margin-top:-4px}}
@media(prefers-reduced-motion:reduce){.scene-tap-callout.visible{animation:none}}


/* Clean cinematic view: keep the 3D scene and one contextual action; remove duplicated overlay copy. */
.top-note,.experience-progress,.intro-copy,.stage-hint,.scene-tap-callout,.watch-again,.footer-brand,.occasion-pill{display:none!important}
.brand-wording small{display:none!important}
/* The final name/share action is the only persistent bottom CTA. */
.main-actions.final-action{bottom:4.2%}
@media(max-width:700px){.main-actions.final-action{bottom:calc(3.2% + env(safe-area-inset-bottom))}}

/* Keep functional forms compact; remove secondary copy and duplicate back/edit actions. */
.send-panel>.panel-kicker,.send-panel>h2,#cancel-send,.share-panel>.panel-kicker,.share-panel>h2,.share-panel>.share-description,#edit-name,.share-modal-card>.panel-kicker,.share-modal-card>.share-description{display:none!important}
.send-panel{padding-top:22px}
.share-panel{padding-top:22px}


/* Primary Diwali wish: restore one elegant greeting, not the old repeated labels. */
.celebration-title{display:block!important;top:11.5%;width:min(760px,92%);padding:0 12px;}
.celebration-title .title-kicker,.celebration-title .title-ornament{display:none!important;}
.celebration-title h2{font-size:clamp(44px,6.1vw,82px);line-height:.98;margin:0 0 5px;}
.celebration-title .title-recipient{margin:2px 0 0;font-size:clamp(17px,2.1vw,24px);letter-spacing:.025em;}
.title-from{margin:5px 0 0;color:#ffe2ae;font-family:var(--font-display);font-size:clamp(16px,1.8vw,21px);font-style:italic;letter-spacing:.035em;text-shadow:0 0 14px rgba(255,196,113,.5);opacity:0;transform:translateY(5px);transition:opacity .7s,transform .7s;}
.title-from.visible{opacity:1;transform:translateY(0);}
@media(max-width:700px){.celebration-title{top:10.5%;}.celebration-title h2{font-size:clamp(42px,11vw,68px);}.celebration-title .title-recipient{font-size:17px;}.title-from{font-size:16px;}}
