:root{--cream:#f3e6cf;--cream-dim:#f3e6cfb8;--gold:#e8b45a;--amber:#ffb347;--ink:#0b1026;--serif:"Fraunces", "Playfair Display", Georgia, serif;--sans:"DM Sans", "Inter", system-ui, sans-serif;--dev:"Tiro Devanagari Hindi", serif}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--cream);font-family:var(--sans);-webkit-tap-highlight-color:transparent;margin:0;overflow:hidden}body{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none}#scene{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}.landing{padding:max(24px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));background:radial-gradient(ellipse at 50% 70%, #0b102659 0%, #0b1026b3 70%, #0b1026eb 100%), url(/poster.jpg) center / cover no-repeat var(--ink);z-index:10;flex-direction:column;justify-content:center;align-items:center;transition:opacity 1.4s;display:flex;position:fixed;inset:0}.landing--out{opacity:0;pointer-events:none}.landing__inner{text-align:center;max-width:520px;animation:1.6s both rise}.landing__dev{font-family:var(--dev);color:var(--gold);letter-spacing:.04em;opacity:.9;margin:0 0 6px;font-size:1.05rem}.landing__title{font-family:var(--serif);letter-spacing:-.01em;color:var(--cream);text-shadow:0 2px 40px #ff8c2b40;margin:0;font-size:clamp(2.9rem,11vw,5.4rem);font-weight:300;line-height:1}.landing__sub{font-family:var(--serif);color:var(--cream-dim);margin:14px 0 28px;font-size:clamp(1.15rem,4vw,1.5rem);font-style:italic;font-weight:300}.landing__memory{color:#f3e6cf80;letter-spacing:.06em;margin:6px 0 28px;font-size:.85rem}.landing__count{color:#f3e6cf80;letter-spacing:.04em;margin:20px 0 0;font-size:.8rem}.landing__count span{color:var(--gold);font-variant-numeric:tabular-nums}.landing__footer{bottom:max(18px, env(safe-area-inset-bottom));color:#f3e6cf61;letter-spacing:.04em;text-align:center;margin:0;padding:0 16px;font-size:.72rem;position:absolute}.btn{font-family:var(--sans);letter-spacing:.02em;cursor:pointer;border:0;border-radius:999px;padding:15px 34px;font-size:1rem;transition:transform .2s,box-shadow .3s}.btn:active{transform:scale(.97)}.btn--primary{color:#2b1608;background:linear-gradient(#ffbf5a,#e8923a);font-weight:500;box-shadow:0 8px 32px #ffa03c59,inset 0 1px #ffffff59}.btn--primary:hover{box-shadow:0 10px 42px #ffa03c80,inset 0 1px #ffffff59}.hud{pointer-events:none;z-index:5;transition:opacity .8s;position:fixed;inset:0}.hud--hidden{opacity:0}.hud__hint{left:50%;bottom:calc(max(26px, env(safe-area-inset-bottom)) + 8px);font-family:var(--serif);color:var(--cream-dim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;text-overflow:ellipsis;background:#0b102659;border-radius:999px;max-width:92vw;padding:8px 16px;font-size:.95rem;font-style:italic;position:absolute;overflow:hidden;transform:translate(-50%)}.hud__count{top:max(14px, env(safe-area-inset-top));color:var(--gold);font-variant-numeric:tabular-nums;font-size:.8rem;position:absolute;right:16px}.joystick{pointer-events:none;opacity:0;z-index:6;width:120px;height:120px;margin:-60px 0 0 -60px;transition:opacity .15s;position:fixed;top:0;left:0}.joystick--on{opacity:1}.joystick__base{background:#f3e6cf14;border:1px solid #f3e6cf40;border-radius:50%;width:100%;height:100%;position:relative}.joystick__knob{background:#ffb3478c;border-radius:50%;width:48px;height:48px;margin:-24px 0 0 -24px;position:absolute;top:50%;left:50%;box-shadow:0 0 18px #ffb34780}.fps{color:#9fe;z-index:20;pointer-events:none;white-space:pre;background:#00000073;border-radius:4px;padding:4px 6px;font:11px/1.4 ui-monospace,monospace;position:fixed;top:8px;left:8px}.noscript{text-align:center;background:var(--ink);z-index:100;place-content:center;padding:24px;display:grid;position:fixed;inset:0}.noscript h1{font-family:var(--serif);margin:0 0 12px;font-size:3rem;font-weight:300}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.landing__inner{animation:none}}.minimap{pointer-events:auto;cursor:pointer;left:12px;top:max(14px, env(safe-area-inset-top));opacity:.85;border-radius:8px;width:104px;height:150px;position:absolute}.fps{top:auto;bottom:8px}.wlabel{pointer-events:auto;cursor:pointer;font-family:var(--serif);color:var(--cream);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;opacity:0;will-change:transform;background:#0b102673;border:1px solid #e8b45a59;border-radius:999px;padding:6px 14px;font-size:1.05rem;font-style:italic;transition:opacity .25s;position:absolute;top:0;left:0}.wlabel:after{content:"";background:#0b102699;border-bottom:1px solid #e8b45a59;border-right:1px solid #e8b45a59;width:8px;height:8px;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)rotate(45deg)}.hud__hint{transition:transform .35s cubic-bezier(.2,1.4,.4,1)}.hud__hint--pop{transform:translate(-50%)scale(1.08)}.tray{left:50%;bottom:calc(max(26px, env(safe-area-inset-bottom)) + 54px);z-index:7;scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:none;justify-content:safe center;gap:8px;max-width:calc(100vw - 24px);padding:4px 6px;transition:opacity .4s,transform .4s cubic-bezier(.2,1.3,.4,1);display:flex;position:fixed;overflow:auto hidden;transform:translate(-50%)}.tray::-webkit-scrollbar{display:none}.tray__btn{flex:none}.tray--hidden{opacity:0;pointer-events:none;transform:translate(-50%)translateY(16px)}.tray__btn{font-family:var(--sans);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:62px;color:var(--cream-dim);cursor:pointer;background:#0b102680;border:1px solid #f3e6cf38;border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:7px 0 6px;transition:transform .15s,background .2s,border-color .2s;display:flex}.tray__btn:active{transform:scale(.94)}.tray__btn--on{color:var(--cream);background:#ffb34747;border-color:#ffb347cc;box-shadow:0 0 18px #ffb34759}.tray__ico{font-size:1.35rem;line-height:1}.tray__name{letter-spacing:.03em;font-size:.62rem}@media (max-width:420px){.tray{gap:6px}.tray__btn{width:56px}}.flash{opacity:0;pointer-events:none;z-index:8;background:#fff4dc;position:fixed;inset:0}.flash--on{opacity:.92}.flash--off{opacity:0;transition:opacity .45s ease-out}.photo-btn{right:14px;bottom:calc(max(26px, env(safe-area-inset-bottom)) + 8px);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;pointer-events:auto;opacity:0;background:#0b102680;border:1px solid #f3e6cf4d;border-radius:50%;width:48px;height:48px;font-size:1.3rem;transition:opacity .4s,transform .15s;position:absolute}.photo-btn--on{opacity:1}.photo-btn:active{transform:scale(.94)}.photo-btn--pulse{border-color:#ffb347e6;animation:1.6s ease-in-out infinite pulse}.photo-btn--arming{animation:2.2s linear arming}@keyframes arming{0%{box-shadow:0 0 0 4px #ffb347e6}to{box-shadow:0 0 0 26px #ffb34700}}@keyframes pulse{0%,to{box-shadow:0 0 #ffb34780}50%{box-shadow:0 0 0 14px #ffb34700}}.photo{z-index:30;opacity:0;pointer-events:none;background:#0b1026eb;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:16px;transition:opacity .3s;display:flex;position:fixed;inset:0}.photo--on{opacity:1;pointer-events:auto}.photo img{aspect-ratio:9/16;object-fit:contain;border-radius:6px;max-width:calc(100vw - 32px);max-height:calc(100vh - 120px);box-shadow:0 20px 60px #0009}.photo__row{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.btn--ghost{color:var(--cream);background:#f3e6cf14;border:1px solid #f3e6cf4d}.photo .btn{padding:12px 22px;font-size:.95rem;text-decoration:none}.title{font-family:var(--serif);color:var(--cream);text-shadow:0 2px 40px #ff8c2b59;opacity:0;pointer-events:none;z-index:9;white-space:nowrap;font-size:clamp(2.4rem,9vw,5rem);font-style:italic;font-weight:300;transition:opacity 1.4s;position:fixed;top:42%;left:50%;transform:translate(-50%,-50%)}.title--on{opacity:1}.guide{aspect-ratio:9/16;pointer-events:none;opacity:0;z-index:6;border:1px solid #e8b45a73;border-radius:4px;max-width:92vw;height:86vh;transition:opacity .5s;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0b10264d}.guide--on{opacity:1}.guide:before{content:"📷 Shot";font-family:var(--sans);letter-spacing:.08em;color:#e8b45ae6;white-space:nowrap;font-size:.72rem;position:absolute;top:-26px;left:50%;transform:translate(-50%)}.guide:after{content:"";border-top:1px dashed #e8b45a4d;position:absolute;top:66.6%;left:0;right:0}.invite{flex-wrap:wrap;justify-content:center;gap:8px;margin:18px 0 0;display:flex}.invite__btn{font-family:var(--sans);letter-spacing:.03em;color:var(--cream-dim);cursor:pointer;background:#f3e6cf12;border:1px solid #f3e6cf38;border-radius:999px;padding:8px 14px;font-size:.78rem;text-decoration:none}.invite__btn:hover{background:#f3e6cf24}.invite__note{color:#f3e6cf8c;flex-basis:100%;min-height:1em;margin:4px 0 0;font-size:.72rem}.landing__return{color:#ffb347bf;letter-spacing:.04em;margin:14px 0 0;font-size:.72rem}.send-btn{top:max(14px, env(safe-area-inset-top));font-family:var(--sans);letter-spacing:.02em;color:#2b1608;cursor:pointer;pointer-events:auto;opacity:0;white-space:nowrap;background:linear-gradient(#ffbf5a,#e8923a);border:0;border-radius:999px;padding:9px 16px;font-size:.82rem;transition:opacity .4s,transform .15s;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #ffa03c59}.send-btn--on{opacity:1}.send-btn:active{transform:translate(-50%)scale(.97)}.send{z-index:31;opacity:0;pointer-events:none;background:#0b1026db;justify-content:center;align-items:center;padding:16px;transition:opacity .25s;display:flex;position:fixed;inset:0}.send--on{opacity:1;pointer-events:auto}.send__card{background:#150f2a;border:1px solid #f3e6cf26;border-radius:18px;width:min(440px,100%);padding:22px 22px 16px;box-shadow:0 24px 80px #0009}.send__title{font-family:var(--serif);color:var(--cream);margin:0 0 12px;font-size:1.8rem;font-style:italic;font-weight:300}.send__sub{color:var(--cream-dim);margin:0 0 12px;font-size:.85rem}.send__label{font-family:var(--sans);color:var(--cream-dim);letter-spacing:.03em;margin:0 0 12px;font-size:.78rem;display:block}.send__label span{opacity:.6}.send input{width:100%;font-family:var(--sans);color:var(--cream);background:#f3e6cf0f;border:1px solid #f3e6cf38;border-radius:10px;outline:none;margin-top:6px;padding:11px 12px;font-size:1rem;display:block}.send input:focus{border-color:#ffb347cc}.send__row{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.send .btn{padding:11px 18px;font-size:.9rem;text-decoration:none}.send__status{color:#ffb347e6;min-height:1em;margin:10px 0 0;font-size:.78rem}.wlabel--card{flex-direction:column;align-items:center;gap:2px;padding:10px 18px;display:flex}.wlabel__name{color:var(--gold);font-size:1.15rem}.wlabel__msg{color:var(--cream-dim);white-space:normal;text-align:center;max-width:70vw;font-size:.9rem;font-style:italic}.wlabel--slow{transition:opacity 1.4s}.wlabel__arrow{color:#f3e6cf80;margin:0 4px}.landing--personal .landing__dev{font-family:var(--serif);color:#f3e6cf99;letter-spacing:.08em;font-size:.95rem;font-style:italic}.landing--personal .landing__title{font-size:clamp(1.9rem,7.5vw,3.4rem);line-height:1.15}.landing--personal .landing__inner{background:radial-gradient(#0b10268c 0%,#0b102600 70%);padding:32px 24px}.hud__audio{left:12px;top:calc(max(14px, env(safe-area-inset-top)) + 160px);pointer-events:auto;gap:6px;display:flex;position:absolute}.hud__round{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);width:36px;height:36px;color:var(--cream-dim);font-family:var(--sans);cursor:pointer;background:#0b102680;border:1px solid #f3e6cf40;border-radius:999px;font-size:.78rem}.hud__round--wide{white-space:nowrap;width:auto;padding:0 10px}.toy-card{color:#2b1608;text-align:center;opacity:0;pointer-events:none;z-index:12;background:#f3e6cf;border-radius:14px;width:min(340px,86vw);padding:18px 20px;transition:opacity .6s,transform .6s cubic-bezier(.2,1.3,.4,1);position:fixed;top:30%;left:50%;transform:translate(-50%,-50%)scale(.96);box-shadow:0 20px 60px #00000080}.toy-card--on{opacity:1;transform:translate(-50%,-50%)scale(1)}.toy-card__title{font-family:var(--serif);font-size:1.25rem;font-style:italic}.toy-card__name{font-family:var(--sans);margin:6px 0 4px;font-weight:600}.toy-card__line{opacity:.8;font-size:.85rem}.modal{z-index:31;opacity:0;pointer-events:none;background:#0b1026db;justify-content:center;align-items:center;padding:16px;transition:opacity .25s;display:flex;position:fixed;inset:0}.modal--on{opacity:1;pointer-events:auto}.modal__card{background:#150f2a;border:1px solid #f3e6cf26;border-radius:18px;width:min(420px,100%);padding:22px;box-shadow:0 24px 80px #0009}.modal__card--wide{width:min(460px,100%)}.modal .btn{padding:11px 18px;font-size:.9rem;text-decoration:none}.pick{font-family:var(--sans);color:var(--cream-dim);cursor:pointer;background:#f3e6cf0f;border:1px solid #f3e6cf38;border-radius:12px;padding:12px 16px;font-size:.9rem}.pick.is-on{color:var(--cream);background:#ffb3472e;border-color:#ffb347e6}.kandil__shapes,.rangoli__styles{flex-wrap:wrap;gap:8px;margin:0 0 14px;display:flex}.kandil__papers,.kandil__ribs,.rangoli__colors{flex-wrap:wrap;gap:8px;margin:0 0 12px;display:flex}.swatch{cursor:pointer;border:2px solid #f3e6cf33;border-radius:50%;width:34px;height:34px}.swatch.is-on{border-color:#fff;box-shadow:0 0 0 2px #ffb347cc}.rangoli__canvas{aspect-ratio:1;touch-action:none;cursor:crosshair;background:#1c1230;border-radius:12px;width:min(360px,100%);margin:0 auto 12px;display:block}.loader[hidden]{display:none}.loader{z-index:50;background:var(--ink);flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .8s;display:flex;position:fixed;inset:0}.loader--out{opacity:0;pointer-events:none}.loader__flame{fill:#ffb347;opacity:.9;transform-origin:100px 104px;animation:1.1s ease-in-out infinite alternate flicker}.loader__bowl-outline{fill:none;stroke:#f3e6cf59;stroke-width:2px}.loader__bowl{fill:#c2643a;transition:none}.loader__text{font-family:var(--serif);color:#f3e6cf99;letter-spacing:.04em;margin:0;font-size:.95rem;font-style:italic;font-weight:300}@keyframes flicker{0%{transform:scale(.96,.98)rotate(-1.5deg)}to{transform:scale(1.04,1.03)rotate(1.5deg)}}.landing__footer a{color:inherit;text-underline-offset:3px;text-decoration:underline}
