:root{--bg: #071127;--bg2: #14274a;--text: #eef5ff;--muted: #a9bad9;--line: rgba(130, 194, 255, .35);--glass-bg: linear-gradient(140deg, rgba(255, 255, 255, .2), rgba(196, 225, 255, .08));--glass-edge: rgba(220, 238, 255, .38);--glass-shadow: 0 18px 38px rgba(6, 16, 38, .35)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;touch-action:manipulation}html,body{width:100%;height:100%;margin:0;background:radial-gradient(circle at 20% 12%,#1d3f75 0%,var(--bg) 44%),linear-gradient(160deg,#050b18 0%,var(--bg) 45%,var(--bg2) 100%);color:var(--text);font-family:SF Pro Display,PingFang SC,Avenir Next,sans-serif;overflow:hidden}body{min-height:100dvh}canvas{display:block}#confettiCanvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:90}.screen{position:fixed;inset:0;z-index:10;opacity:0;pointer-events:none;transform:scale(1.02);transition:opacity .38s ease,transform .38s ease}.screen.is-active{opacity:1;pointer-events:auto;transform:scale(1)}.cake-screen{z-index:25;background:radial-gradient(circle at 50% 24%,#3a6db575,#040814c7 62%)}.cake-screen:after{content:"";position:absolute;inset:-20% -45%;pointer-events:none;opacity:0;background:linear-gradient(90deg,#ade4ff00,#ade4ff42,#ade4ff00);filter:blur(8px);transform:translate(-120%) skew(-12deg)}body.auto-breeze .cake-screen.is-active:after{animation:autoBreezeSweep 1.15s ease-in-out infinite}.cake-canvas{position:absolute;inset:0}.overlay{position:absolute;left:calc(env(safe-area-inset-left) + 12px);right:calc(env(safe-area-inset-right) + 12px);border:1px solid var(--glass-edge);border-radius:16px;background:var(--glass-bg);box-shadow:var(--glass-shadow),inset 0 1px #ffffff57;backdrop-filter:blur(14px) saturate(1.12);-webkit-backdrop-filter:blur(14px) saturate(1.12);padding:12px;overflow:hidden}.overlay:before{content:"";position:absolute;inset:0;background:linear-gradient(130deg,#ffffff38,#fff0 42%);pointer-events:none}.overlay h1,.overlay h2,.overlay p{margin:0}.overlay-top{top:calc(env(safe-area-inset-top) + 10px)}.cake-title-deco{position:absolute;left:50%;top:38%;transform:translate(-50%);z-index:32;display:grid;justify-items:center;pointer-events:none;filter:drop-shadow(0 10px 20px rgba(0,0,0,.32));animation:cakeTitleFloat 4.8s ease-in-out infinite}.cake-title-deco h1{margin:0;font-size:clamp(1.26rem,5.9vw,2.12rem);letter-spacing:.06em;color:transparent;background:linear-gradient(180deg,#fff4b0,#ffc15a 36%,#ff7f3f 64%,#ff4b2e);-webkit-background-clip:text;background-clip:text;text-shadow:0 0 10px rgba(255,210,120,.46),0 0 20px rgba(255,130,48,.36),0 0 34px rgba(255,74,36,.26);animation:flameTextFlicker 1.8s ease-in-out infinite}.subtitle{margin-top:5px;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,218,150,.4);background:linear-gradient(145deg,#ffcb623d,#ff7a4e1f);color:#fff3c8;font-size:clamp(.78rem,3vw,.95rem);letter-spacing:.16em;box-shadow:0 0 14px #ffac5c38,inset 0 1px #ffffff52}.cake-status-overlay{left:max(calc(env(safe-area-inset-left) + 12px),50% - 220px);right:max(calc(env(safe-area-inset-right) + 12px),50% - 220px);padding:8px 10px;background:linear-gradient(140deg,#ffffff29,#c4e1ff0f);border-color:#e1eeff3d;backdrop-filter:blur(12px) saturate(1.08);-webkit-backdrop-filter:blur(12px) saturate(1.08)}.cake-status-overlay .status{margin-top:0;text-align:center;font-size:.78rem;opacity:.92}.status{margin-top:7px;color:#d4e8ff;font-size:.86rem;line-height:1.4}@keyframes cakeTitleFloat{0%{transform:translate(-50%) translateZ(0)}50%{transform:translate(-50%) translate3d(0,-5px,0)}to{transform:translate(-50%) translateZ(0)}}@keyframes flameTextFlicker{0%{filter:brightness(.95) saturate(1);text-shadow:0 0 8px rgba(255,210,120,.42),0 0 16px rgba(255,130,48,.32),0 0 28px rgba(255,74,36,.2)}50%{filter:brightness(1.06) saturate(1.12);text-shadow:0 0 12px rgba(255,225,152,.5),0 0 24px rgba(255,146,54,.42),0 0 36px rgba(255,86,46,.32)}to{filter:brightness(.98) saturate(1.04);text-shadow:0 0 9px rgba(255,214,122,.44),0 0 18px rgba(255,132,50,.34),0 0 30px rgba(255,82,42,.24)}}@keyframes autoBreezeSweep{0%{opacity:0;transform:translate(-120%) skew(-12deg)}15%{opacity:.3}50%{opacity:.18;transform:translate(0) skew(-8deg)}to{opacity:0;transform:translate(120%) skew(-12deg)}}.tiny-manual{position:absolute;right:calc(env(safe-area-inset-right) + 12px);bottom:calc(env(safe-area-inset-bottom) + 12px);height:29px;padding:0 10px;border-radius:999px;border:1px solid rgba(255,232,192,.44);background:#1216238f;color:#ffe9c0;font-size:.73rem;letter-spacing:.02em;z-index:34;opacity:.8}.tiny-manual:active{transform:scale(.97)}.btn{height:42px;border:1px solid var(--line);border-radius:12px;background:#0c2043b8;color:var(--text);font-size:.85rem;font-weight:650}.btn:active{transform:scale(.98)}.btn-primary{background:linear-gradient(140deg,#23bfa2ed,#2079cde6);border-color:#8ff7d380}.gallery-screen{z-index:30;background:radial-gradient(circle at 15% 10%,rgba(114,86,60,.42),transparent 30%),radial-gradient(circle at 86% 86%,rgba(36,67,105,.38),transparent 32%),linear-gradient(166deg,#130f10,#201920 55%,#131425)}.gallery-top{z-index:35;padding:8px 10px;background:linear-gradient(140deg,#ffffff24,#a4d1ff0f);border-color:#d6ecff47;backdrop-filter:blur(16px) saturate(1.18);-webkit-backdrop-filter:blur(16px) saturate(1.18)}.gallery-top h2{display:none}.gallery-top .status{margin-top:0;text-align:center;font-size:.74rem;opacity:.74}body.camera-on .gallery-top .status{opacity:.52}.gesture-loading{position:fixed;inset:0;z-index:99;display:grid;place-items:center;background:radial-gradient(circle at 50% 30%,#122334ad,#02060ed6 64%);backdrop-filter:blur(8px) saturate(1.05);-webkit-backdrop-filter:blur(8px) saturate(1.05);opacity:0;pointer-events:none;transition:opacity .22s ease}.gesture-loading.is-visible{opacity:1;pointer-events:auto}.gesture-loading>p,.gesture-loading>.gesture-spinner{grid-area:1 / 1}.gesture-loading p{margin:58px 0 0;padding:8px 14px;border-radius:999px;border:1px solid rgba(224,241,255,.26);background:linear-gradient(140deg,#0c1b2da8,#090e188f);box-shadow:0 12px 24px #00000042}.gesture-loading p{font-size:.82rem;letter-spacing:.04em;color:#e5f3ff;text-align:center}.gesture-spinner{width:34px;height:34px;border-radius:999px;border:2px solid rgba(180,219,255,.28);border-top-color:#f7fdfff2;animation:gestureSpinner .9s linear infinite}@keyframes gestureSpinner{to{transform:rotate(360deg)}}.overlay-bottom{bottom:calc(env(safe-area-inset-bottom) + 10px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.gallery-bottom{z-index:35}.photo-deck{position:absolute;left:50%;top:56%;width:min(92vw,500px);aspect-ratio:3 / 4;transform:translate(-50%,-50%);perspective:1700px;transform-style:preserve-3d;user-select:none;touch-action:none;--pinch-open-scale: 1;--pinch-open-lift: 0px}.table-scatter{position:absolute;inset:-8% -8% -12%;z-index:1;pointer-events:none}.scatter-photo{position:absolute;width:31%;margin:0;border-radius:12px;overflow:hidden;border:1px solid rgba(255,240,224,.18);box-shadow:0 10px 30px #00000057;opacity:.68;transform-style:preserve-3d;filter:saturate(.86) brightness(.86)}.scatter-photo img{width:100%;aspect-ratio:3 / 4;object-fit:cover;display:block}.scatter-photo:nth-child(1){left:2%;top:10%;transform:rotate(-16deg) rotateX(36deg) translateZ(-230px) scale(.72)}.scatter-photo:nth-child(2){right:4%;top:8%;transform:rotate(14deg) rotateX(34deg) translateZ(-210px) scale(.7)}.scatter-photo:nth-child(3){left:-4%;top:47%;transform:rotate(-12deg) rotateX(42deg) translateZ(-270px) scale(.66)}.scatter-photo:nth-child(4){right:-2%;top:48%;transform:rotate(12deg) rotateX(40deg) translateZ(-255px) scale(.66)}.scatter-photo:nth-child(5){left:13%;bottom:-1%;transform:rotate(-9deg) rotateX(42deg) translateZ(-300px) scale(.62)}.scatter-photo:nth-child(6){right:12%;bottom:0;transform:rotate(8deg) rotateX(42deg) translateZ(-290px) scale(.62)}.photo-card{position:absolute;inset:0;margin:0;border-radius:16px;border:1px solid rgba(245,236,255,.44);overflow:hidden;background:linear-gradient(150deg,#ffffff26,#0b101ce6);box-shadow:0 34px 62px #0000007a;transform-origin:center center;backface-visibility:hidden;z-index:4;will-change:transform;transform:translateZ(0)}.photo-card:before{content:"";position:absolute;inset:0;background:linear-gradient(125deg,#ffffff47,#fff0 42%);pointer-events:none;z-index:2}.photo-card img{width:100%;aspect-ratio:3 / 4;object-fit:cover;display:block;pointer-events:none}.photo-card p{position:absolute;left:10px;bottom:8px;margin:0;padding:4px 9px;border-radius:999px;background:linear-gradient(150deg,#ffffff47,#adcdff1f);border:1px solid rgba(255,255,255,.3);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#f5f9ff;font-size:.8rem;z-index:3}.photo-card.current{z-index:4;transform:translate(0) translateY(-3%) rotateY(0) rotateX(-1.5deg) rotate(0) translateZ(124px) scale(1.06)}.photo-deck.pinch-armed .photo-card.current{transform:translate(0) translateY(calc(-3% - var(--pinch-open-lift))) rotateY(0) rotateX(-1.5deg) rotate(0) translateZ(124px) scale(calc(1.06 * var(--pinch-open-scale)))}.photo-card.incoming{z-index:3;transform:translate(30%) translateY(20%) rotateY(-30deg) rotateX(32deg) rotate(6deg) translateZ(-260px) scale(.58);opacity:.72}.photo-deck.shift-next .table-scatter{animation:tableShiftNext .86s ease forwards}.photo-deck.shift-prev .table-scatter{animation:tableShiftPrev .86s ease forwards}.photo-deck.flip-next .photo-card.current{animation:putDownNext .86s cubic-bezier(.22,.73,.15,1) forwards;transform:translateZ(0);will-change:transform}.photo-deck.flip-next .photo-card.incoming{animation:pickUpNext .86s cubic-bezier(.22,.73,.15,1) forwards;transform:translateZ(0);will-change:transform}.photo-deck.flip-prev .photo-card.current{animation:putDownPrev .86s cubic-bezier(.22,.73,.15,1) forwards;transform:translateZ(0);will-change:transform}.photo-deck.flip-prev .photo-card.incoming{animation:pickUpPrev .86s cubic-bezier(.22,.73,.15,1) forwards;transform:translateZ(0);will-change:transform}@keyframes tableShiftNext{0%{transform:translateZ(0)}50%{transform:translate3d(-10px,5px,0)}to{transform:translateZ(0)}}@keyframes tableShiftPrev{0%{transform:translateZ(0)}50%{transform:translate3d(10px,5px,0)}to{transform:translateZ(0)}}@keyframes putDownNext{0%{transform:translate(0) translateY(-3%) rotateY(0) rotateX(-1.5deg) rotate(0) translateZ(124px) scale(1.06);opacity:1}42%{transform:translate(-12%) translateY(4%) rotateY(14deg) rotateX(10deg) rotate(-2deg) translateZ(12px) scale(.94);opacity:.96}to{transform:translate(-34%) translateY(23%) rotateY(44deg) rotateX(34deg) rotate(-9deg) translateZ(-250px) scale(.56);opacity:.6}}@keyframes pickUpNext{0%{transform:translate(30%) translateY(20%) rotateY(-30deg) rotateX(32deg) rotate(6deg) translateZ(-260px) scale(.58);opacity:.7}46%{transform:translate(9%) translateY(3%) rotateY(-9deg) rotateX(8deg) rotate(2deg) translateZ(36px) scale(.88);opacity:.98}to{transform:translate(0) translateY(-3%) rotateY(0) rotateX(-1.5deg) rotate(0) translateZ(124px) scale(1.06);opacity:1}}@keyframes putDownPrev{0%{transform:translate(0) translateY(-3%) rotateY(0) rotateX(-1.5deg) rotate(0) translateZ(124px) scale(1.06);opacity:1}42%{transform:translate(12%) translateY(4%) rotateY(-14deg) rotateX(10deg) rotate(2deg) translateZ(12px) scale(.94);opacity:.96}to{transform:translate(34%) translateY(23%) rotateY(-44deg) rotateX(34deg) rotate(9deg) translateZ(-250px) scale(.56);opacity:.6}}@keyframes pickUpPrev{0%{transform:translate(-30%) translateY(20%) rotateY(30deg) rotateX(32deg) rotate(-6deg) translateZ(-260px) scale(.58);opacity:.7}46%{transform:translate(-9%) translateY(3%) rotateY(9deg) rotateX(8deg) rotate(-2deg) translateZ(36px) scale(.88);opacity:.98}to{transform:translate(0) translateY(-3%) rotateY(0) rotateX(-1.5deg) rotate(0) translateZ(124px) scale(1.06);opacity:1}}.virtual-hand{position:absolute;width:80px;height:90px;right:-34px;top:42%;border-radius:22px 22px 22px 30px;background:linear-gradient(170deg,#ffe1c873,#f5af9033);border:1px solid rgba(255,219,196,.36);filter:blur(.2px);opacity:0;transform:rotate(-18deg) translateZ(0);pointer-events:none}.virtual-hand:before,.virtual-hand:after{content:"";position:absolute;background:inherit;border:1px solid rgba(255,219,196,.3)}.virtual-hand:before{width:26px;height:52px;left:-16px;top:24px;border-radius:20px;transform:rotate(26deg)}.virtual-hand:after{width:16px;height:22px;left:14px;top:-12px;border-radius:10px;box-shadow:17px 0 #ffe1c842,33px 0 #ffe1c833}.photo-deck.flip-next .virtual-hand{animation:handMoveNext .86s ease forwards}.photo-deck.flip-prev .virtual-hand{animation:handMovePrev .86s ease forwards}@keyframes handMoveNext{0%{opacity:0;transform:rotate(-18deg) translate3d(34px,12px,0) scale(.9)}30%{opacity:1}to{opacity:0;transform:rotate(-8deg) translate3d(-180px,-20px,0) scale(1.04)}}@keyframes handMovePrev{0%{opacity:0;transform:rotate(18deg) translate3d(-34px,12px,0) scale(.9)}30%{opacity:1}to{opacity:0;transform:rotate(8deg) translate3d(180px,-20px,0) scale(1.04)}}.photo-dots{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 78px);transform:translate(-50%);display:flex;gap:8px;z-index:36}body.photo-fullscreen .gallery-top,body.photo-fullscreen .photo-dots,body.photo-fullscreen .camera-layer,body.photo-fullscreen .virtual-hand{opacity:0;pointer-events:none}.fullscreen-viewer{position:absolute;inset:0;z-index:55;display:grid;place-items:center;padding:calc(env(safe-area-inset-top) + 12px) calc(env(safe-area-inset-right) + 12px) calc(env(safe-area-inset-bottom) + 12px) calc(env(safe-area-inset-left) + 12px);pointer-events:none;opacity:0;--fs-dim: 1;background:radial-gradient(circle at 50% 30%,#a4d8ff33,#02070feb 58%);backdrop-filter:blur(16px) saturate(1.12);-webkit-backdrop-filter:blur(16px) saturate(1.12);transition:opacity .24s ease}.fullscreen-viewer.is-open{opacity:1;pointer-events:auto}.fullscreen-photo{position:relative;width:80vw;height:80dvh;max-width:80vw;max-height:80dvh;margin:0;border-radius:22px;overflow:hidden;border:1px solid rgba(235,246,255,.45);box-shadow:0 30px 60px #00000073,inset 0 1px #ffffff6b;background:linear-gradient(150deg,#fff3,#0f1522e6)}#fullscreenImage{width:100%;height:100%;object-fit:contain;display:block;transform-origin:center center;transform:scale(1);opacity:var(--fs-dim);transition:transform .18s ease,opacity .18s ease}#fullscreenCaption{position:absolute;left:12px;bottom:12px;margin:0;padding:4px 10px;border-radius:999px;background:linear-gradient(150deg,#ffffff57,#aacdff24);border:1px solid rgba(255,255,255,.34);color:#f4f8ff;font-size:.78rem;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.photo-dots span{width:7px;height:7px;border-radius:999px;background:#dde5ff4d;transition:transform .18s ease,background .18s ease}.photo-dots span.active{transform:scale(1.3);background:#fff}.camera-layer{position:absolute;right:calc(env(safe-area-inset-right) + 10px);bottom:calc(env(safe-area-inset-bottom) + 124px);width:108px;height:148px;border-radius:12px;overflow:hidden;border:1px solid rgba(231,246,255,.5);background:linear-gradient(140deg,#ffffff3d,#9fcaff14);box-shadow:0 16px 28px #0000005c,inset 0 1px #ffffff73;backdrop-filter:blur(10px) saturate(1.1);-webkit-backdrop-filter:blur(10px) saturate(1.1);z-index:36;opacity:0;pointer-events:none}body.camera-on .camera-layer{opacity:.86}#cameraFeed{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.hand-cursor{position:absolute;left:0;top:0;width:24px;height:24px;border-radius:50%;border:2px solid rgba(125,255,212,.9);box-shadow:0 0 10px #7dffd4cc;background:#7dffd42e;transform:translate3d(-999px,-999px,0);pointer-events:none;z-index:37}body.low-performance .overlay{backdrop-filter:none;-webkit-backdrop-filter:none}@media(max-width:430px){.overlay-bottom{grid-template-columns:1fr}.photo-dots{bottom:calc(env(safe-area-inset-bottom) + 152px)}}@media(prefers-reduced-motion:reduce){*{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}}
