:root{color:#fff8e7;font-synthesis:none;text-rendering:optimizelegibility;--gold:#e9bd68;--gold-bright:#ffe2a4;--gold-dim:#8b6531;--ink:#080603;--panel:#18120ac2;--line:#e9bd6833;background:#080603;font-family:Inter,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif}*{box-sizing:border-box}html{background:#080603;min-width:320px;min-height:100%}body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,input:focus-visible{outline:2px solid var(--gold-bright);outline-offset:3px}::selection{color:#160e04;background:var(--gold-bright)}#root{min-height:100vh}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{background:radial-gradient(circle at 50% 18%,#a9732824,#0000 34%),linear-gradient(145deg,#050403 0%,#100b05 52%,#050403 100%);min-height:100vh;position:relative;overflow:hidden}.app-shell:before,.app-shell:after{z-index:0;pointer-events:none;content:"";position:fixed;inset:0}.app-shell:before{opacity:.38;background-image:radial-gradient(circle at 8% 18%,#ffe2a4b3 0 1px,#0000 1.5px),radial-gradient(circle at 28% 78%,#e9bd6873 0 1px,#0000 1.4px),radial-gradient(circle at 58% 24%,#e9bd6866 0 1px,#0000 1.5px),radial-gradient(circle at 82% 66%,#ffe2a480 0 1px,#0000 1.4px);background-size:170px 170px,210px 210px,250px 250px,190px 190px;animation:18s linear infinite alternate dust-drift}.app-shell:after{border:1px solid #e9bd6814;box-shadow:inset 0 0 160px #000000db}.entry-screen,.experience-screen{z-index:1;min-height:100vh;position:relative}.entry-screen{place-items:center;padding:clamp(28px,5vw,72px);display:grid}.ambient-orb{aspect-ratio:1;filter:blur(18px);opacity:.3;background:radial-gradient(circle,#d3993d47,#0000 68%);border-radius:50%;width:min(34vw,520px);animation:8s ease-in-out infinite alternate orb-breathe;position:absolute}.ambient-orb-left{bottom:-18vw;left:-10vw}.ambient-orb-right{animation-delay:-4s;top:-16vw;right:-8vw}.glass-card{text-align:center;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(145deg,#271d0fd1,#0a0805e6),#0c0905d1;border:1px solid #e9bd6842;border-radius:32px;width:min(680px,100%);padding:clamp(38px,5vw,70px);position:relative;overflow:hidden;box-shadow:0 34px 100px #00000085,inset 0 1px #ffeac01a}.glass-card:before{content:"";background:linear-gradient(90deg, transparent, var(--gold-bright), transparent);width:64%;height:1px;position:absolute;top:0;left:18%}.eyebrow{color:var(--gold);letter-spacing:.22em;text-transform:uppercase;margin:0 0 16px;font-size:12px;font-weight:700}.glass-card h1,.scene-header h1{color:#fff8e7;text-shadow:0 8px 30px #dc9f3d2e;margin:0;font-family:Georgia,Noto Serif SC,Songti SC,serif;font-size:clamp(34px,4.2vw,58px);font-weight:500;line-height:1.18}.default-name-row{justify-content:center;align-items:center;gap:18px;margin-top:34px;font-size:20px;display:flex}.gold-button,.outline-button,.text-button{border:0;transition:transform .18s,box-shadow .18s,border-color .18s,opacity .18s}.gold-button{color:#1b1004;background:linear-gradient(135deg,#ffe8b1,#d99d3c 62%,#f3cb78);border-radius:999px;min-height:48px;padding:0 26px;font-weight:750;box-shadow:0 12px 34px #da9d3c3d}.gold-button:hover:not(:disabled),.outline-button:hover:not(:disabled){transform:translateY(-2px)}.gold-button:hover:not(:disabled){box-shadow:0 16px 40px #da9d3c57}.gold-button:disabled,.outline-button:disabled{opacity:.48}.entry-divider{color:#fff8e761;grid-template-columns:1fr auto 1fr;align-items:center;gap:15px;margin:34px 0 22px;font-size:12px;display:grid}.entry-divider span{background:linear-gradient(90deg, transparent, var(--line));height:1px}.entry-divider span:last-child{background:linear-gradient(90deg, var(--line), transparent)}.entry-divider b{font-weight:500}.entry-helper{color:#fff8e794;margin:0 0 18px;font-size:14px;line-height:1.8}.name-form{grid-template-columns:minmax(0,1fr) auto;gap:12px;display:grid}.name-form input,.debug-inline-input input{color:#fff8e7;background:#0000004d;border:1px solid #e9bd683d;min-width:0}.name-form input{border-radius:15px;height:50px;padding:0 18px}.name-form input::placeholder,.debug-inline-input input::placeholder{color:#fff8e752}.outline-button{min-height:48px;color:var(--gold-bright);background:#e9bd680f;border:1px solid #e9bd686b;border-radius:15px;padding:0 22px}.permission-card{width:min(720px,100%)}.permission-lead{color:#fff8e7bf;margin:24px 0 20px;font-size:17px}.privacy-list{text-align:left;gap:10px;margin:0 auto 30px;padding:0;list-style:none;display:grid}.privacy-list li{color:#fff8e7b8;background:#ffffff06;border:1px solid #e9bd681a;border-radius:15px;align-items:center;gap:14px;padding:14px 16px;display:flex}.privacy-list span{color:var(--gold);font-family:Georgia,serif;font-size:12px}.permission-button{min-width:210px}.text-button{color:#fff8e785;background:0 0;margin:18px auto 0;display:block}.text-button:hover{color:var(--gold-bright)}.error-card p:not(.eyebrow){color:#fff8e7b3;margin:24px 0 30px}.error-actions{justify-content:center;gap:12px;display:flex}.experience-screen{padding:clamp(24px,3vw,48px);transition:background 1.2s}.scene-backdrop,.scene-grid{pointer-events:none;position:absolute;inset:0}.scene-backdrop{opacity:.58;background:radial-gradient(at 50% 78%,#b5741c33,#0000 36%),radial-gradient(circle at 50% 28%,#ffdb9714,#0000 28%);transition:opacity 1.2s,background 1.2s}.stage-two .scene-backdrop{opacity:.86;background:radial-gradient(at 70% 60%,#b8751838,#0000 30%),radial-gradient(circle at 25% 28%,#ffde971a,#0000 24%),linear-gradient(125deg,#030303,#120c04 58%,#050403)}.scene-grid{opacity:.16;background-image:linear-gradient(#e9bd6814 1px,#0000 1px),linear-gradient(90deg,#e9bd6814 1px,#0000 1px);background-size:72px 72px;-webkit-mask-image:linear-gradient(#0000,#000 35%,#0000 92%);mask-image:linear-gradient(#0000,#000 35%,#0000 92%)}.scene-header{z-index:3;justify-content:space-between;align-items:flex-start;gap:24px;width:min(1220px,100%);margin:0 auto;display:flex;position:relative}.scene-header h1{font-size:clamp(28px,3.1vw,48px)}.scene-header .birthday-title{color:var(--gold-bright);letter-spacing:.1em}.stage-name{color:#fff8e7b8;letter-spacing:.12em;margin:7px 0 0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(20px,2vw,30px)}.state-pill{color:#fff2d2c7;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#120d079e;border:1px solid #e9bd6833;border-radius:999px;flex:none;padding:9px 14px;font-size:12px}.scene-content{z-index:2;grid-template-columns:minmax(440px,1.1fr) minmax(300px,.9fr);align-items:center;gap:clamp(32px,5vw,80px);width:min(1160px,100%);min-height:calc(100vh - 160px);margin:0 auto;display:grid;position:relative}.cake-stage{place-items:center;min-height:min(62vh,590px);transition:transform 1.2s cubic-bezier(.22,1,.36,1);display:grid;position:relative}.stage-two .cake-stage{transform:translate(12%)scale(.86)}.is-transitioning .cake-stage{animation:1.4s cubic-bezier(.22,1,.36,1) both cake-transition}.placeholder-cake{filter:drop-shadow(0 30px 35px #0000007a);width:clamp(250px,25vw,370px);height:clamp(300px,35vw,450px);animation:4s ease-in-out infinite cake-float;position:relative}.cake-shadow{filter:blur(18px);background:#000000a6;border-radius:50%;width:64%;height:8%;position:absolute;bottom:16%}.cake-layer,.cake-plate,.candle{position:absolute;left:50%;transform:translate(-50%)}.cake-layer{background:linear-gradient(90deg,#53300e33,#0000 24%,#ffedc91a 56%,#45270c40),linear-gradient(#b8752c,#643710);border:1px solid #ffe2a44d;box-shadow:inset 0 12px 24px #ffe1a829,0 18px 28px #00000042}.cake-top{border-radius:50% 50% 20% 20%/20% 20% 18% 18%;width:70%;height:28%;bottom:31%}.cake-top:before{content:"";background:linear-gradient(#fff2cf,#d6a151);border:1px solid #fff8e06b;border-radius:50%;height:24%;position:absolute;inset:-3% -1% auto}.cake-bottom{background:linear-gradient(90deg,#361e0747,#0000 28%,#ffedc91a 58%,#3a1f0847),linear-gradient(#d4933d,#754313);border-radius:50% 50% 18% 18%/22% 22% 16% 16%;width:88%;height:31%;bottom:9%}.cake-bottom:before{content:"";background:linear-gradient(#f6d89d,#b87329);border:1px solid #fff8e06b;border-radius:50%;height:24%;position:absolute;inset:-4% -1% auto}.icing{z-index:2;background:linear-gradient(#f9e4b7,#dba555);border-radius:0 0 999px 999px;width:12%;height:22%;position:absolute;top:11%}.icing-one{left:13%}.icing-two{height:30%;left:43%}.icing-three{height:18%;right:12%}.cake-plate{background:linear-gradient(#d7a654,#6d4216);border:1px solid #ffe09959;border-radius:50%;width:106%;height:9%;bottom:3%;box-shadow:0 0 30px #de9e3a2e}.candle{z-index:4;background:repeating-linear-gradient(135deg,#f5e4bd 0 12px,#c99545 12px 20px);border-radius:8px 8px 4px 4px;width:7%;min-width:20px;height:31%;bottom:58%;box-shadow:inset -5px 0 8px #45240538}.wick{background:#302116;width:2px;height:14%;position:absolute;top:-13%;left:50%;transform:translate(-50%)}.flame{aspect-ratio:.68;transform-origin:50% 80%;background:radial-gradient(circle at 65% 65%,#fff9cf 0 20%,#ffd36a 36%,#e7781f 72%);border-radius:65% 15% 65% 65%;width:clamp(18px,2vw,28px);animation:.7s ease-in-out infinite alternate flame-flicker;position:absolute;bottom:105%;left:50%;transform:translate(-50%)rotate(45deg);box-shadow:0 0 18px #ffb237,0 0 48px #ffa62ca6}.spark{top:var(--spark-y);left:var(--spark-x);aspect-ratio:1;background:#fff4bf;border-radius:50%;width:18px;transition:top .32s,left .32s;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 12px 4px #ffcf66,0 0 35px 12px #ff991f8c}.spark:before,.spark:after,.spark span{content:"";background:linear-gradient(90deg,#0000,#ffe19b,#0000);width:42px;height:2px;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.spark:after{transform:translate(-50%,-50%)rotate(90deg)}.spark span{transform:translate(-50%,-50%)rotate(45deg)}.loading-ring{z-index:7;aspect-ratio:1;border:2px solid #e9bd6829;border-top-color:var(--gold-bright);border-radius:50%;width:74px;animation:1s linear infinite spin;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fist-charge{top:var(--fist-y);left:var(--fist-x);aspect-ratio:1;color:#fff4c9;background:radial-gradient(circle, #070502e6 57%, transparent 59%), conic-gradient(var(--gold-bright) var(--fist-progress), #e9bd6829 0);border-radius:50%;place-items:center;width:86px;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 34px #e9bd6859}.fist-charge span{font-size:13px;font-weight:750}.scene-copy{z-index:4;max-width:510px;position:relative}.scene-copy>p:first-child{color:#fff8e7b8;margin:0 0 22px;font-size:clamp(18px,1.7vw,24px);line-height:1.8}.scene-copy h2{color:var(--gold-bright);margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(26px,2.8vw,42px);font-weight:500;line-height:1.55}.scene-copy h2 small{color:#fff8e78f;margin-top:8px;font-family:inherit;font-size:.48em;display:block}.progress-track{background:#ffffff14;border-radius:999px;width:min(360px,100%);height:8px;overflow:hidden}.progress-track span{border-radius:inherit;background:linear-gradient(90deg,#c57d27,#ffe0a0);height:100%;transition:width .32s;display:block;box-shadow:0 0 18px #ffca6f80}.debug-hint{color:#fff8e761!important;margin-top:22px!important;font-size:13px!important}.stage-two-status{flex-wrap:wrap;gap:9px;display:flex}.stage-two-status span{color:#fff1d2b8;background:#140d059e;border:1px solid #e9bd682b;border-radius:999px;padding:8px 12px;font-size:12px}.placeholder-confetti{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.placeholder-confetti i{--offset:calc((var(--piece) * 53) % 100);top:-8%;left:calc(var(--offset) * 1%);background:hsl(calc(34 + var(--piece) * 2) 76% calc(55% + (var(--piece) % 3) * 8%));width:7px;height:18px;animation:confetti-fall calc(3s + (var(--piece) % 5) * .35s) linear infinite;animation-delay:calc(var(--piece) * -.17s);border-radius:2px;position:absolute}.placeholder-blessings{z-index:5;pointer-events:none;position:absolute;top:42%;left:62%}.placeholder-blessings span{color:#281704;background:linear-gradient(135deg,#fff1c9,#dba244);border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;animation:2.8s ease-in-out infinite alternate blessing-rise;display:block;box-shadow:0 16px 40px #00000061,0 0 30px #e9bd6838}.placeholder-blessings.is-global{grid-template-columns:repeat(4,minmax(150px,1fr));gap:18px;display:grid;inset:16% 8% auto}.placeholder-blessings.is-global span{transform:rotate(calc((var(--index,0) - 3) * 2deg));animation-delay:calc(var(--index,0) * -.16s)}.audio-notice{z-index:30;color:#fff8e7d1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#140e07f0;border:1px solid #e9bd6838;border-radius:14px;align-items:center;gap:14px;max-width:min(480px,100vw - 48px);padding:13px 15px 13px 18px;font-size:13px;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 18px 50px #0000006b}.audio-notice button{color:var(--gold-bright);background:#e9bd681a;border:0;border-radius:8px;flex:none;padding:6px 9px}.debug-mode{padding-right:330px}.debug-panel-loading{z-index:40;max-width:300px;color:var(--gold-bright);pointer-events:none;background:#0c0905e6;border:1px solid #e9bd683d;border-radius:12px;padding:10px 14px;font-size:12px;position:fixed;top:14px;right:14px}.debug-panel{z-index:40;color:#f8ecd2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0c0905f0;border:1px solid #e9bd6842;border-radius:18px;width:300px;transition:width .22s,bottom .22s;position:fixed;top:14px;bottom:14px;right:14px;overflow:hidden;box-shadow:0 20px 70px #00000085}.debug-panel.is-collapsed{bottom:auto}.debug-panel-heading{border-bottom:1px solid #e9bd681f;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex}.debug-panel-heading p{color:var(--gold);letter-spacing:.16em;margin:0 0 3px;font-size:10px;font-weight:750}.debug-panel-heading strong{font-size:14px}.debug-panel-heading button{color:var(--gold-bright);background:0 0;border:1px solid #e9bd6833;border-radius:9px;padding:6px 9px;font-size:12px}.debug-panel-body{scrollbar-color:#e9bd684d transparent;height:calc(100% - 68px);padding:12px;overflow-y:auto}.debug-facts{gap:6px;margin:0 0 10px;display:grid}.debug-facts div{background:#ffffff09;border-radius:8px;grid-template-columns:72px 1fr;gap:8px;padding:7px 8px;font-size:11px;display:grid}.debug-facts dt{color:#fff8e76b}.debug-facts dd{overflow-wrap:anywhere;margin:0}.debug-event-payload{color:#d7c49e;white-space:pre-wrap;background:#0000004d;border:1px solid #e9bd6814;border-radius:8px;max-height:130px;padding:8px;font-size:10px;overflow:auto}.debug-group{border-top:1px solid #e9bd681a;gap:6px;padding:12px 0;display:grid}.debug-group h2{color:var(--gold);letter-spacing:.08em;margin:0 0 3px;font-size:11px}.debug-group>button,.debug-inline-input button{color:#fff8e7d1;text-align:left;background:#e9bd680e;border:1px solid #e9bd681f;border-radius:8px;min-height:34px;padding:7px 9px;font-size:11px}.debug-group button:hover:not(:disabled){color:#fff7e5;background:#e9bd681c;border-color:#e9bd6859}.debug-group button:disabled{opacity:.32}.debug-inline-input{grid-template-columns:78px 1fr;gap:6px;display:grid}.debug-inline-input input{border-radius:8px;width:100%;padding:6px 8px;font-size:11px}@keyframes dust-drift{0%{transform:translate(-8px,-6px)}to{transform:translate(12px,10px)}}@keyframes orb-breathe{0%{opacity:.22;transform:scale(.88)}to{opacity:.38;transform:scale(1.12)}}@keyframes cake-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes flame-flicker{0%{transform:translate(-50%)rotate(41deg)scale(.92,1.06)}to{transform:translate(-50%)rotate(49deg)scale(1.08,.93)}}@keyframes spin{to{transform:translate(-50%,-50%)rotate(360deg)}}@keyframes confetti-fall{0%{transform:translateY(-10vh)rotate(0)}to{transform:translateY(115vh)rotate(720deg)}}@keyframes cake-transition{0%{transform:translate(0)scale(1)}to{transform:translate(12%)scale(.86)}}@keyframes blessing-rise{0%{transform:translateY(4px)rotate(-1deg)}to{transform:translateY(-8px)rotate(1deg)}}@media (width<=1100px){.debug-mode{padding-right:292px}.debug-panel{width:266px}.scene-content{grid-template-columns:minmax(360px,1fr) minmax(260px,.75fr);gap:24px}.stage-two .cake-stage{transform:translate(4%)scale(.82)}}@media (width<=820px),(height<=680px){.entry-screen{padding:24px}.glass-card{padding:34px 26px}.scene-content{grid-template-columns:1fr;align-content:center;min-height:calc(100vh - 130px)}.cake-stage{min-height:390px}.scene-copy{text-align:center;max-width:none}.progress-track{margin-inline:auto}.stage-two .cake-stage{transform:scale(.78)}}@media (width<=680px){.name-form{grid-template-columns:1fr}.default-name-row,.error-actions{flex-direction:column}.debug-mode{padding-bottom:80px;padding-right:0}.debug-panel{width:auto;max-height:68vh;inset:auto 10px 10px}.scene-header{align-items:flex-start}.state-pill{white-space:normal;max-width:120px}.placeholder-blessings.is-global{grid-template-columns:repeat(2,minmax(120px,1fr))}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.three-experience-screen{background:radial-gradient(circle at 50% 74%,#804a0f29,#0000 34%),#060403;transition:background-color 2.8s;overflow:hidden}.three-experience-screen.is-stage-two{background-color:#020201}.three-experience-screen.is-stage-two .scene-backdrop{opacity:.88;background:radial-gradient(at 31% 72%,#cd892533,#0000 30%),radial-gradient(circle at 76% 38%,#ffda871f,#0000 24%),linear-gradient(118deg,#020201 12%,#0d0803 58%,#020201)}.three-experience-screen.is-stage-two .scene-grid{opacity:.1}.three-scene-header{pointer-events:none}.first-stage-heading,.first-stage-copy{transition:opacity .85s,transform 1.2s cubic-bezier(.22,1,.36,1),filter .85s}.first-stage-heading.is-leaving,.first-stage-copy.is-leaving{opacity:0;filter:blur(8px);pointer-events:none;transform:translateY(-14px)}.three-scene-content{z-index:2;grid-template-columns:minmax(460px,1.35fr) minmax(270px,.65fr);align-items:center;gap:clamp(20px,3vw,52px);width:min(1280px,100%);min-height:calc(100vh - 150px);margin:0 auto;display:grid;position:relative}.three-stage-shell{background:radial-gradient(circle at 50% 70%,#d68b261f,#0000 32%),linear-gradient(#100a05d1,#050403fa);border:1px solid #ecbe651a;border-radius:32px;min-width:0;height:min(72vh,720px);min-height:460px;position:relative;overflow:hidden;box-shadow:inset 0 0 80px #f6c45a09,0 32px 80px #0000006b}.three-scene-host,.css-cake-fallback{position:absolute;inset:0}.three-scene-host{z-index:1}.three-cake-canvas{outline:none;width:100%;height:100%;display:block}.css-cake-fallback{z-index:2;place-items:center;display:grid}.css-cake-fallback .placeholder-cake{width:clamp(230px,29vw,350px);height:clamp(290px,37vw,430px)}.css-cake-fallback .cake-shadow{bottom:13%;left:18%}.three-loading-ring{z-index:4;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.webgl-fallback-notice{z-index:5;color:#fff3d7c7;text-align:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#080604c7;border:1px solid #ebbc6029;border-radius:12px;margin:0;padding:10px 14px;font-size:12px;position:absolute;bottom:16px;left:18px;right:18px}.three-scene-copy{z-index:7;color:#fff5ded1;align-content:center;min-height:320px;display:grid;position:relative}.three-scene-copy>p:first-child{margin:0 0 20px;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(18px,1.8vw,27px);line-height:1.8}.three-scene-copy .debug-hint{margin-top:16px}.wish-received{color:#ffe3a0;letter-spacing:.08em;text-shadow:0 0 18px #ffb8426b,0 8px 30px #0006;margin:4px 0 0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(30px,3vw,50px);animation:.9s cubic-bezier(.22,1,.36,1) both wish-arrive}.celebration-message{pointer-events:none;gap:7px;width:min(520px,100%);padding:20px 0;display:grid}.celebration-message p{color:#fff0c2;opacity:0;text-shadow:0 0 10px #ffd171ad,0 0 32px #cd842261;animation:celebration-line .9s cubic-bezier(.22, 1, .36, 1) var(--line-delay) forwards;margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(20px,2.2vw,34px);line-height:1.45}.celebration-message p:last-child{color:#ffe8b4c2;letter-spacing:.08em;margin-top:8px;font-size:clamp(14px,1.35vw,20px)}.stage-four-copy{z-index:7;color:#fff0bd;text-align:center;pointer-events:none;opacity:0;filter:blur(12px);gap:12px;width:min(42vw,620px);transition:opacity 1.1s .42s,filter 1.2s .42s,transform 1.6s cubic-bezier(.22,1,.36,1) .36s;display:grid;position:fixed;top:48%;right:clamp(58px,8vw,150px);transform:translate(28px,-42%)}.stage-four-copy.is-visible{opacity:1;filter:blur();transform:translateY(-50%)}.stage-four-title,.stage-four-name,.stage-four-basic-prompt{margin:0}.stage-four-title{color:#f8d477;letter-spacing:.16em;text-indent:.16em;text-shadow:0 0 18px #ffd36f75,0 12px 42px #00000094;font-family:Georgia,Times New Roman,serif;font-size:clamp(38px,5vw,78px);font-weight:500;line-height:1.04}.stage-four-name{color:#ffe49a;letter-spacing:.14em;text-indent:.14em;text-shadow:0 0 22px #e8a6366b;font-family:Georgia,Noto Serif SC,Songti SC,serif;font-size:clamp(26px,3vw,46px)}.stage-four-basic-prompt{color:#fff2d2ad;letter-spacing:.08em;margin-top:18px;font-size:clamp(14px,1.25vw,19px);line-height:1.8}.celebration-canvas-host{pointer-events:none;display:contents}.celebration-canvas{pointer-events:none;opacity:0;width:100%;height:100%;transition:opacity .18s;display:block;position:fixed;inset:0}.celebration-canvas-host.is-active .celebration-canvas{opacity:1}.celebration-canvas-back{z-index:1}.celebration-canvas-front{z-index:6}@keyframes wish-arrive{0%{opacity:0;filter:blur(6px);transform:translateY(20px)scale(.96)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes celebration-line{0%{opacity:0;filter:blur(8px);transform:translateY(22px)}to{opacity:1;filter:blur();transform:translateY(0)}}@media (width<=1100px){.three-scene-content{grid-template-columns:minmax(390px,1.2fr) minmax(250px,.8fr)}.three-stage-shell{height:min(68vh,640px)}}@media (width<=820px),(height<=680px){.three-experience-screen{overflow:auto}.three-scene-content{grid-template-columns:1fr;align-content:center;gap:18px;min-height:calc(100vh - 120px);padding-block:18px}.three-stage-shell{height:min(54vh,480px);min-height:360px}.three-scene-copy{text-align:center;min-height:150px}.three-scene-copy>p:first-child{margin-bottom:12px}.three-scene-copy .progress-track,.celebration-message{margin-inline:auto}.stage-four-copy{width:min(52vw,520px);top:23%;right:8vw}}@media (width<=560px){.three-experience-screen{padding:18px}.three-stage-shell{border-radius:22px;min-height:330px}.three-scene-header h1{font-size:26px}.stage-four-copy{width:auto;top:20%;left:18px;right:18px}.stage-four-title{font-size:clamp(30px,10vw,48px)}}.camera-interaction-panel{z-index:18;color:#fff8e7e6;pointer-events:none;width:clamp(280px,24vw,360px);font-size:12px;position:fixed;bottom:clamp(20px,2vw,32px);left:clamp(20px,2vw,32px)}.camera-panel-frame{aspect-ratio:16/9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:radial-gradient(circle at 50% 45%,#67461829,#0000 58%),#030303e0;border:1px solid #e8bb5bad;border-radius:16px;position:relative;overflow:hidden;box-shadow:0 18px 48px #0000007a,0 0 24px #dea63d2e,inset 0 0 22px #ffd1700f}.camera-preview-host{background:#030303;position:absolute;inset:0;overflow:hidden}.camera-preview-video{object-fit:cover;transform-origin:50%;filter:brightness(.78)contrast(1.06)saturate(.82);width:100%;height:100%;display:block;position:absolute;inset:0;transform:scaleX(-1)}.hand-landmark-overlay{z-index:2;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.camera-preview-placeholder{z-index:1;color:#ffe8b4a3;text-align:center;letter-spacing:.08em;background:linear-gradient(135deg,#0a0805f5,#020202fa);place-items:center;padding:18px;display:grid;position:absolute;inset:0}.camera-panel-status{z-index:3;color:#fff6ddf0;white-space:nowrap;text-overflow:ellipsis;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#050403b3;border:1px solid #efc76f38;border-radius:10px;align-items:center;gap:8px;min-height:30px;padding:7px 10px;line-height:1.35;display:flex;position:absolute;bottom:9px;left:10px;right:10px;overflow:hidden;box-shadow:0 8px 22px #0000004d}.camera-panel-status>span:last-child{text-overflow:ellipsis;overflow:hidden}.camera-status-dot{background:#7e7362;border-radius:50%;flex:none;width:8px;height:8px;box-shadow:0 0 #7e736200}.camera-status-dot.is-active{background:#7cf4d3;box-shadow:0 0 12px #7cf4d3cc}.camera-debug-metrics{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#040404d6;border:1px solid #e8bb5b52;border-radius:12px;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 10px;margin:8px 0 0;padding:9px 11px;display:grid;box-shadow:0 12px 30px #00000052}.camera-debug-metrics div{min-width:0}.camera-debug-metrics dt{color:#e7c67ead;letter-spacing:.05em;font-size:10px}.camera-debug-metrics dd{color:#ffe9b1;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;overflow:hidden}@media (width<=720px){.camera-interaction-panel{width:min(320px,100vw - 24px);bottom:12px;left:12px}}@media (height<=720px) and (width>=721px){.camera-interaction-panel{width:clamp(250px,22vw,310px);bottom:16px;left:16px}.camera-debug-metrics{grid-template-columns:repeat(3,minmax(0,1fr));font-size:10px}}@media (width<=560px),(height<=560px){.camera-panel-frame{border-radius:13px}.camera-panel-status{min-height:27px;padding:6px 8px;font-size:11px;bottom:7px;left:7px;right:7px}.camera-debug-metrics{max-height:112px;overflow:auto}}.permission-status{color:#ffd27ed1;max-width:560px;margin:0 auto 18px;font-size:13px;line-height:1.7}.stage-four-heading{z-index:8;color:#f4c968;text-align:center;pointer-events:none;opacity:0;filter:blur(10px);gap:5px;width:min(820px,68vw);transition:opacity 1.05s .36s,filter 1.15s .36s,transform 1.35s cubic-bezier(.22,1,.36,1) .32s;display:grid;position:fixed;top:clamp(30px,5vh,58px);left:50%;transform:translate(-50%,-12px)}.stage-four-heading.is-visible{opacity:1;filter:blur();transform:translate(-50%)}.stage-four-heading .stage-four-title,.stage-four-heading .stage-four-name{margin:0}.stage-four-fist-prompt{z-index:8;color:#ffe29bd1;letter-spacing:.18em;text-align:center;text-indent:.18em;pointer-events:none;opacity:0;justify-items:center;gap:12px;max-width:min(260px,22vw);margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(18px,1.65vw,28px);line-height:1.35;transition:opacity .8s .72s,transform 1s .72s;display:grid;position:fixed;top:52%;right:clamp(34px,5vw,96px);transform:translate(18px,-50%)}.stage-four-fist-prompt.is-visible{opacity:1;transform:translateY(-50%)}.stage-five-round-count{color:#ffeec28f;letter-spacing:.12em;text-align:center;text-indent:0;margin-top:10px;font-family:system-ui,sans-serif;font-size:.55em;display:block}.stage-four-clear-button{pointer-events:auto;color:#ffefc2e6;letter-spacing:.08em;text-indent:0;cursor:pointer;background:#0f0903b8;border:1px solid #f6c86775;border-radius:999px;min-width:148px;padding:9px 16px;font:600 clamp(12px,.8vw,14px)/1.2 system-ui,sans-serif;transition:color .16s,border-color .16s,background .16s,opacity .16s,transform .16s;box-shadow:0 5px 18px #00000042,inset 0 0 14px #ffbe4214}.stage-four-clear-button:hover:not(:disabled){color:#fff4ce;background:#301b06d6;border-color:#ffdc81c7;transform:translateY(-1px)}.stage-four-clear-button:focus-visible{outline-offset:4px;outline:2px solid #ffe088eb}.stage-four-clear-button:disabled{opacity:.48;cursor:wait}.three-experience-screen.is-stage-two .three-scene-content{width:min(900px,68vw);min-height:calc(100vh - 86px);padding-top:clamp(76px,9vh,112px);display:block}.three-experience-screen.is-stage-two .stage-four-stage-frame{background:radial-gradient(circle at 50% 72%,#bd751921,#0000 34%),linear-gradient(#0c0804bd,#020201f5);border-color:#e2b14e21;width:min(820px,64vw);height:min(64vh,660px);min-height:440px;margin-inline:auto}.three-experience-screen.is-stage-two .first-stage-copy{min-height:0;position:absolute;inset:0}.fist-charge-feedback{--fist-x:50%;--fist-y:50%;--fist-progress:0deg;z-index:24;top:var(--fist-y);left:var(--fist-x);aspect-ratio:1;color:#ffe7a0;font-variant-numeric:tabular-nums;pointer-events:none;background:conic-gradient(from -90deg, #ffd76f 0deg var(--fist-progress), #edbe5e29 var(--fist-progress) 360deg);border-radius:50%;place-items:center;width:clamp(72px,6vw,104px);font-size:clamp(12px,1vw,16px);transition:top 70ms linear,left 70ms linear,filter .16s;display:grid;position:fixed;transform:translate(-50%,-50%);box-shadow:0 0 26px #e7ab3757,inset 0 0 16px #ffe1981f}.fist-charge-feedback:before{content:"";border-radius:inherit;background:#070503bd;border:1px solid #ffe29b6b;position:absolute;inset:6px;box-shadow:inset 0 0 18px #d994262e}.fist-charge-feedback span{border-radius:inherit;border:1px solid #ffd3703d;animation:.72s ease-in-out infinite alternate fist-feedback-pulse;position:absolute;inset:-8px}.fist-charge-feedback strong{z-index:1;letter-spacing:.04em;font-weight:600;position:relative}.fist-charge-feedback.is-complete{color:#fff4c7;filter:brightness(1.15);box-shadow:0 0 34px #ffc74a8f,inset 0 0 20px #ffe7a92e}@keyframes fist-feedback-pulse{0%{opacity:.45;transform:scale(.96)}to{opacity:.9;transform:scale(1.06)}}@media (height<=820px) and (width>=1000px){.stage-four-heading{top:22px}.stage-four-heading .stage-four-title{font-size:clamp(34px,4.2vw,58px)}.stage-four-heading .stage-four-name{font-size:clamp(22px,2.5vw,34px)}.three-experience-screen.is-stage-two .three-scene-content{width:min(820px,64vw);min-height:calc(100vh - 58px);padding-top:58px;transform:translate(38px)}.three-experience-screen.is-stage-two .stage-four-stage-frame{width:min(780px,61vw);height:calc(100vh - 178px);min-height:430px}.stage-four-fist-prompt{right:3vw}}@media (width<=999px){.stage-four-heading{width:min(720px,78vw)}.three-experience-screen.is-stage-two .three-scene-content{width:min(760px,78vw);padding-top:86px}.three-experience-screen.is-stage-two .stage-four-stage-frame{width:100%}.stage-four-fist-prompt{top:auto;bottom:9vh;right:5vw;transform:translate(18px)}.stage-four-fist-prompt.is-visible{transform:translate(0,0)}}@media (prefers-reduced-motion:reduce){.fist-charge-feedback span{animation:none}}.blessing-overlay{z-index:7;pointer-events:none;opacity:0;transition:opacity .26s;position:fixed;inset:0}.blessing-overlay.is-visible{opacity:1}.blessing-overlay-wash{z-index:0;pointer-events:none;background:radial-gradient(circle at 50% 52%,#2f1c070a,#0302011a 72%,#0003);position:absolute;inset:0}.blessing-overlay-global .blessing-overlay-wash{background:radial-gradient(circle,#975f161c,#0402012e 76%)}.blessing-overlay-cards{z-index:1;position:absolute;inset:0}.blessing-safe-zones{z-index:2;pointer-events:none;position:absolute;inset:0}.blessing-safe-zone{box-sizing:border-box;background:#ffbe3a0b;border:1px dashed #ffd369b8;border-radius:10px;position:absolute;box-shadow:inset 0 0 20px #ffbe3a0a}.blessing-safe-zone span{color:#ffe8a9e6;letter-spacing:.04em;background:#080502b8;border:1px solid #ffd36947;border-radius:999px;padding:2px 6px;font-size:10px;line-height:1.2;position:absolute;top:5px;left:7px}.blessing-card{box-sizing:border-box;width:var(--blessing-card-width,clamp(280px, 20vw, 340px));max-width:calc(100vw - 32px);height:var(--blessing-card-height,64px);color:#fff8df;will-change:transform, opacity;background:linear-gradient(145deg,#1c1107f0,#080502e0);border:1px solid #ffdb85c2;border-radius:16px;place-items:center;padding:12px 18px 12px 36px;transition:opacity .26s,transform .62s cubic-bezier(.2,.78,.22,1);display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 10px 28px #0000006b,0 0 22px #ffbb3f29,inset 0 1px #fff6c124}.blessing-card-local{z-index:2}.blessing-card-global{z-index:1;background:linear-gradient(145deg,#371f07f0,#0d0702d6);border-color:#ffe697b8;padding:11px 17px 11px 34px;box-shadow:0 9px 24px #0000005c,0 0 26px #ffbb3f33,inset 0 1px #fff6c129}.blessing-card p{width:100%;color:inherit;text-align:center;text-wrap:balance;overflow-wrap:break-word;word-break:normal;margin:0;font-size:clamp(13px,.92vw,16px);line-height:1.34}.blessing-card-text-medium p{font-size:clamp(12.5px,.86vw,15px)}.blessing-card-text-long p{letter-spacing:-.01em;font-size:clamp(12px,.8vw,14px)}.blessing-card-mark{color:#ffd46b;text-shadow:0 0 12px #ffce5cb8;font-size:14px;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.blessing-card-enter-left{animation:blessing-enter-left .52s cubic-bezier(.16, .88, .28, 1) var(--blessing-entry-delay,0s) both}.blessing-card-enter-right{animation:blessing-enter-right .52s cubic-bezier(.16, .88, .28, 1) var(--blessing-entry-delay,0s) both}.blessing-card-enter-top{animation:blessing-enter-top .52s cubic-bezier(.16, .88, .28, 1) var(--blessing-entry-delay,0s) both}.blessing-card-enter-bottom{animation:blessing-enter-bottom .52s cubic-bezier(.16, .88, .28, 1) var(--blessing-entry-delay,0s) both}.blessing-card-exiting.blessing-card-exit-left{opacity:0;transform:translate(-145%,-50%)scale(.86)}.blessing-card-exiting.blessing-card-exit-right{opacity:0;transform:translate(45%,-50%)scale(.86)}@keyframes blessing-enter-left{0%{opacity:0;transform:translate(-145%,-50%)scale(.86)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes blessing-enter-right{0%{opacity:0;transform:translate(45%,-50%)scale(.86)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes blessing-enter-top{0%{opacity:0;transform:translate(-50%,-145%)scale(.86)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes blessing-enter-bottom{0%{opacity:0;transform:translate(-50%,45%)scale(.86)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@media (prefers-reduced-motion:reduce){.blessing-overlay,.blessing-card{transition-duration:1ms}.blessing-card-enter-left,.blessing-card-enter-right,.blessing-card-enter-top,.blessing-card-enter-bottom{animation:none}}
