:root{--lacquer: #8e1b13;--lacquer-deep: #5e120c;--gold: #d9b45f;--gold-soft: #e9d29a;--paper: #f3ebd9;--paper-dim: #e4d8bf;--ink: #2a1d14;--ink-soft: #5d4b3b;--smoke: rgba(30, 20, 14, .62);--glass: rgba(36, 24, 16, .58);--glass-line: rgba(233, 210, 154, .22);--font-ui: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--font-title: "Lora", "Times New Roman", serif;--radius-pill: 999px;--radius-card: 18px;--ease: cubic-bezier(.16, 1, .3, 1);--fast: .16s;--gutter: max(16px, env(safe-area-inset-left))}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#1c130d;color:var(--paper);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:3px}[hidden]{display:none!important}#stage{position:fixed;top:0;right:0;bottom:0;left:0;touch-action:none}#stage canvas{display:block;width:100%;height:100%}.gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px var(--gutter);background:radial-gradient(120% 80% at 50% 0%,rgba(217,180,95,.22),transparent 60%),linear-gradient(180deg,#1c130d8c,#1c130deb);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:opacity .6s var(--ease)}.gate.is-leaving{opacity:0;pointer-events:none}.gate-card{width:min(420px,100%);text-align:center;padding:40px 28px 28px;border-radius:28px 28px 18px 18px;background:linear-gradient(180deg,#f6efdf,var(--paper));color:var(--ink);box-shadow:0 30px 80px #00000073,inset 0 0 0 1px #8e1b131f;position:relative}.gate-card:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border-radius:22px 22px 12px 12px;border:1px solid rgba(142,27,19,.18);pointer-events:none}.gate-mark{width:44px;height:44px;fill:none;stroke:var(--lacquer);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.gate-kicker{margin:10px 0 0;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--lacquer)}.gate-card h1{margin:6px 0 10px;font-family:var(--font-title);font-weight:600;font-size:clamp(40px,9vw,56px);letter-spacing:.02em;color:var(--ink)}#farewell-title{font-size:clamp(34px,7vw,44px);text-wrap:balance}.gate-lede{margin:0 auto 24px;max-width:30ch;color:var(--ink-soft);line-height:1.65;font-size:15px}.gate-form{display:grid;gap:8px;text-align:left}.gate-form label{font-size:12px;color:var(--ink-soft);padding-left:4px}.gate-form input{font:inherit;font-size:16px;padding:12px 14px;border-radius:12px;border:1px solid var(--paper-dim);background:#fffaf0;color:var(--ink)}.gate button[type=submit],#farewell-return{margin-top:8px;padding:14px 18px;border:0;border-radius:12px;background:linear-gradient(180deg,#a3261b,var(--lacquer));color:#fff6e3;font-weight:600;letter-spacing:.04em;box-shadow:0 8px 18px #8e1b1359,inset 0 1px #ffffff2e;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.gate button[type=submit]:hover,#farewell-return:hover{transform:translateY(-1px);box-shadow:0 12px 24px #8e1b1366}.gate button[type=submit]:active,#farewell-return:active{transform:translateY(1px)}.gate button:disabled{opacity:.6;cursor:progress}#farewell-return{width:100%}.gate-room{margin:16px 0 0;font-size:12px;color:var(--ink-soft);min-height:1.4em}.hud{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none}.hud>*{pointer-events:auto}.hud-top{position:absolute;top:max(14px,env(safe-area-inset-top));left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;align-items:center;gap:12px;pointer-events:none}.hud-top>*{pointer-events:auto}.chip{display:inline-flex;align-items:center;gap:10px;min-height:40px;padding:0 14px 0 12px;border:1px solid var(--glass-line);border-radius:var(--radius-pill);background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:13px;white-space:nowrap;min-width:0;transition:background var(--fast) var(--ease)}.chip:hover{background:#3c2618b3}.chip-dot{width:8px;height:8px;border-radius:50%;background:#8fbf7a;box-shadow:0 0 0 4px #8fbf7a2e}.chip.is-offline .chip-dot{background:#c9a24a;box-shadow:0 0 0 4px #c9a24a2e}.chip-count{color:var(--gold-soft);font-variant-numeric:tabular-nums}#room-label{font-family:var(--font-title);font-size:15px}.hud-tools{display:flex;gap:8px}.icon-btn{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background var(--fast) var(--ease),transform var(--fast) var(--ease)}.icon-btn:hover{background:#3c2618bf}.icon-btn:active{transform:scale(.94)}.icon-btn svg{width:20px;height:20px;fill:none;stroke:var(--paper);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.icon-btn.small{width:32px;height:32px}.icon-btn.small svg{width:16px;height:16px}#btn-sound[aria-pressed=false] .wave{opacity:0}#btn-sound[aria-pressed=false]{color:var(--gold)}.hint{position:absolute;bottom:calc(max(16px,env(safe-area-inset-bottom)) + 74px);left:50%;transform:translate(-50%);margin:0;padding:6px 14px;border-radius:var(--radius-pill);background:#140d0966;font-size:12px;color:#f3ebd9d1;white-space:nowrap;transition:opacity 1.2s var(--ease);pointer-events:none}.hint.is-faded{opacity:0}.toasts{position:absolute;top:34%;left:50%;transform:translate(-50%);display:grid;gap:8px;justify-items:center;pointer-events:none;width:min(92vw,420px)}.toast{padding:10px 18px;border-radius:var(--radius-pill);background:#f3ebd9eb;color:var(--ink);font-size:14px;text-align:center;box-shadow:0 10px 30px #0000004d;animation:toast-in .4s var(--ease),toast-out .5s var(--ease) forwards;animation-delay:0s,var(--life, 3.2s)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px) scale(.98)}}@keyframes toast-out{to{opacity:0;transform:translateY(-6px)}}.hover-tip{position:fixed;left:0;top:0;padding:6px 12px;border-radius:var(--radius-pill);background:#f3ebd9f2;color:var(--ink);font-size:13px;font-weight:500;white-space:nowrap;pointer-events:none;box-shadow:0 8px 20px #0000004d;z-index:15}.ceremony{position:absolute;left:var(--gutter);bottom:calc(max(16px,env(safe-area-inset-bottom)) + 74px);display:flex;align-items:center;gap:12px;max-width:min(480px,calc(100vw - 32px));padding:10px 10px 10px 14px;border-radius:16px;background:var(--glass);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ceremony strong{display:block;font-family:var(--font-title);font-weight:500;font-size:15px;white-space:nowrap}.ceremony small{display:block;font-size:12px;color:#f3ebd9b8}.ceremony-bell{width:10px;height:10px;border-radius:50%;background:var(--gold);opacity:.45;flex:none}.ceremony.is-live .ceremony-bell{opacity:1;animation:breathe 2.4s ease-in-out infinite}.ceremony-buttons{margin-left:auto;display:flex;gap:6px}.ceremony-buttons button{padding:8px 12px;border-radius:10px;border:1px solid var(--glass-line);background:transparent;font-size:12px;white-space:nowrap;transition:background var(--fast) var(--ease)}.ceremony-buttons button:hover{background:#f3ebd91a}.ceremony-buttons button[aria-pressed=true]{background:var(--gold);color:var(--ink);border-color:var(--gold)}@keyframes breathe{50%{transform:scale(1.5);opacity:.5}}.actions{position:absolute;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;gap:6px;padding:6px;border-radius:20px;background:#1e140ea8;border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 16px 40px #00000059}.actions button{display:flex;align-items:center;gap:7px;min-height:46px;padding:0 12px;white-space:nowrap;border:0;border-radius:14px;background:transparent;font-size:14px;font-weight:500;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.actions button:hover{background:#f3ebd91a}.actions button:active,.actions button[aria-expanded=true],.actions button.is-on{background:linear-gradient(180deg,#a3261b,var(--lacquer));color:#fff6e3}.actions button:disabled{opacity:.45;cursor:default}.actions kbd{font:500 11px var(--font-ui);padding:1px 6px;border-radius:5px;border:1px solid rgba(243,235,217,.25);color:#f3ebd9a6}.beads{position:absolute;right:var(--gutter);top:50%;transform:translateY(-50%);width:168px;padding:12px 12px 16px;border-radius:var(--radius-card);background:linear-gradient(180deg,#f3ebd9f0,#e4d8bff0);color:var(--ink);box-shadow:0 24px 60px #0006;text-align:center}.beads header{display:flex;justify-content:space-between;align-items:center;padding-left:6px}.beads h2{margin:0;font-family:var(--font-title);font-weight:600;font-size:17px}.beads .icon-btn{background:transparent;border-color:#2a1d1426;-webkit-backdrop-filter:none;backdrop-filter:none}.beads .icon-btn svg{stroke:var(--ink)}#beads-canvas{display:block;width:100%;height:300px;margin:6px 0 8px;touch-action:none;cursor:grab;border-radius:12px}#beads-canvas:active{cursor:grabbing}.beads-count{margin:0;font-family:var(--font-title);font-size:18px;font-variant-numeric:tabular-nums}.beads-total{margin:2px 0 0;font-size:12px;color:var(--ink-soft)}.sheet{width:min(420px,calc(100vw - 32px));padding:18px 18px 20px;border:0;border-radius:20px;background:var(--paper);color:var(--ink);box-shadow:0 30px 80px #00000080}.sheet::backdrop{background:#140d0973;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sheet header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.sheet h2{margin:0;font-family:var(--font-title);font-weight:600;font-size:20px}.sheet .icon-btn{background:transparent;border-color:#2a1d1426;-webkit-backdrop-filter:none;backdrop-filter:none}.sheet .icon-btn svg{stroke:var(--ink)}.sheet-note{margin:10px 0 0;font-size:13px;color:var(--ink-soft);line-height:1.55}.sheet-row{display:flex;gap:8px;margin-top:12px}.sheet-row button{flex:1;padding:11px 12px;border-radius:12px;border:1px solid rgba(142,27,19,.25);background:#fffaf0;font-weight:500}.sheet-row button:first-child{background:var(--lacquer);color:#fff6e3;border-color:var(--lacquer)}#capture-image{display:block;width:100%;border-radius:12px;aspect-ratio:16 / 10;object-fit:cover;background:var(--paper-dim)}.rooms-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px}.rooms-list button{width:100%;display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-radius:12px;border:1px solid rgba(42,29,20,.12);background:#fffaf0;text-align:left;transition:border-color var(--fast) var(--ease),transform var(--fast) var(--ease)}.rooms-list button:hover:not(:disabled){border-color:var(--lacquer);transform:translate(2px)}.rooms-list button[aria-current=true]{border-color:var(--lacquer);background:#fbecd9}.rooms-list button:disabled{opacity:.5;cursor:not-allowed}.rooms-list strong{font-family:var(--font-title);font-weight:500;font-size:16px}.rooms-list small{color:var(--ink-soft);font-variant-numeric:tabular-nums}.offer-form{display:grid;gap:14px}.offer-form fieldset{border:0;margin:0;padding:0;display:grid;gap:8px}.offer-form legend{font-size:12px;color:var(--ink-soft);margin-bottom:6px;padding:0}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips button{padding:8px 12px;border-radius:var(--radius-pill);border:1px solid rgba(42,29,20,.15);background:#fffaf0;font-size:13px;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease)}.chips button:hover{border-color:var(--lacquer)}.chips button[aria-pressed=true]{background:var(--lacquer);border-color:var(--lacquer);color:#fff6e3}#offer-amount{font:inherit;font-size:16px;padding:11px 14px;border-radius:12px;border:1px solid var(--paper-dim);background:#fffaf0;color:var(--ink)}#offer-amount[aria-invalid=true]{border-color:#b3261e}.offer-hint{margin:0;font-size:12px;color:var(--ink-soft)}.offer-hint.is-error{color:#b3261e}.offer-submit{padding:13px 16px;border:0;border-radius:12px;background:linear-gradient(180deg,#a3261b,var(--lacquer));color:#fff6e3;font-weight:600;box-shadow:0 8px 18px #8e1b134d}.offer-submit:active{transform:translateY(1px)}.guided-start{width:100%;margin-top:8px;padding:11px 14px;border-radius:12px;border:1px solid var(--lacquer);background:#fffaf0;color:var(--lacquer);font-weight:600}.guided{position:absolute;top:calc(max(14px,env(safe-area-inset-top)) + 96px);left:50%;transform:translate(-50%);width:min(460px,calc(100vw - 32px));padding:14px 16px;border-radius:16px;background:#1e140eb3;border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.guided-steps{list-style:none;margin:0;padding:0;display:flex;gap:4px}.guided-steps li{flex:1;padding:6px 4px;border-radius:8px;font-size:11px;text-align:center;color:#f3ebd980;background:#f3ebd90f}.guided-steps li.is-done{color:var(--gold-soft)}.guided-steps li.is-current{background:var(--gold);color:var(--ink);font-weight:600}.guided-note{margin:10px 0;font-family:var(--font-title);font-size:15px;line-height:1.55;color:var(--paper);white-space:pre-line}.guided-buttons{display:flex;gap:8px;justify-content:flex-end}.guided-buttons button{padding:6px 12px;border-radius:var(--radius-pill);border:1px solid var(--glass-line);background:transparent;font-size:12px}body.is-meditating .guided{opacity:.35;transition:opacity 2s var(--ease)}body.is-meditating .guided:hover{opacity:1}.daily-saying{margin:-6px 0 20px;padding:12px 16px;border-left:3px solid var(--gold);background:#d9b45f1f;border-radius:0 12px 12px 0;text-align:left}.daily-saying blockquote{margin:0;font-family:var(--font-title);font-style:italic;font-size:15px;line-height:1.55;color:var(--ink)}.daily-saying figcaption{margin-top:6px;font-size:11px;color:var(--ink-soft);letter-spacing:.02em}.hud-left{display:grid;gap:6px;justify-items:start;pointer-events:auto}.lunar-date{margin:0;padding:4px 12px;border-radius:var(--radius-pill);background:#140d0973;font-family:var(--font-title);font-size:13px;color:#f3ebd9e6}.lunar-date strong{color:var(--gold);font-weight:600}.lunar-short{display:none}.meditate-durations{margin:14px 0}.meditation{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;align-content:center;gap:18px;pointer-events:none}.meditation>*{pointer-events:auto}.breath{width:180px;height:180px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#e9d29a52,#e9d29a0f 70%);border:1px solid rgba(233,210,154,.45);animation:breathe-cycle 10s ease-in-out infinite;pointer-events:none}.breath span{font-family:var(--font-title);font-size:18px;color:var(--gold-soft);letter-spacing:.04em}@keyframes breathe-cycle{0%{transform:scale(.62)}40%{transform:scale(1)}to{transform:scale(.62)}}.meditation-time{margin:0;font-family:var(--font-title);font-size:22px;color:var(--paper);font-variant-numeric:tabular-nums}#meditation-stop{padding:7px 16px;border-radius:var(--radius-pill);border:1px solid var(--glass-line);background:var(--glass);font-size:13px}body.is-meditating .hud-top,body.is-meditating .actions,body.is-meditating .ceremony,body.is-meditating .hint,body.is-meditating .toasts{opacity:.12;transition:opacity 2s var(--ease)}body.is-meditating .hud-top:hover,body.is-meditating .actions:hover{opacity:1}@media(prefers-reduced-motion:reduce){.breath{animation:none}}.gate-tabs{display:flex;gap:4px;padding:4px;margin:0 0 14px;border-radius:12px;background:var(--paper-dim)}.gate-tabs button{flex:1;padding:8px 6px;border:0;border-radius:9px;background:transparent;font-size:13px;color:var(--ink-soft);transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.gate-tabs button[aria-selected=true]{background:#fffaf0;color:var(--ink);font-weight:600;box-shadow:0 2px 6px #2a1d141f}.gate-form>div{display:grid;gap:8px}.name-row{display:flex;gap:8px}.name-row input{flex:1;min-width:0}.reroll{flex:none;width:48px;border-radius:12px;border:1px solid var(--paper-dim);background:#fffaf0;display:grid;place-items:center;transition:transform var(--fast) var(--ease),border-color var(--fast) var(--ease)}.reroll:hover{border-color:var(--lacquer)}.reroll:active{transform:rotate(-20deg) scale(.94)}.reroll svg{width:22px;height:22px;fill:none;stroke:var(--lacquer);stroke-width:1.6}.reroll svg circle{fill:var(--lacquer);stroke:none}.gate-error{margin:2px 0 0;padding:8px 10px;border-radius:10px;background:#fbe3df;color:#8e1b13;font-size:13px}.gate-signed-in{margin:0;font-size:13px;color:var(--ink-soft)}.gate-signed-in button{border:0;background:none;color:var(--lacquer);text-decoration:underline;font-size:13px;padding:0 0 0 4px}.sheet-wide{width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto}.pray-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.pray-fields label,.pray-text-label{display:grid;gap:4px;font-size:12px;color:var(--ink-soft)}.pray-fields input,#pray-text{font:inherit;font-size:14px;padding:9px 11px;border-radius:10px;border:1px solid var(--paper-dim);background:#fffaf0;color:var(--ink)}#pray-text{font-family:var(--font-title);font-size:15px;line-height:1.6;resize:vertical}.prayer-reading{position:absolute;left:50%;bottom:calc(max(16px,env(safe-area-inset-bottom)) + 150px);transform:translate(-50%);width:min(640px,calc(100vw - 32px));text-align:center;pointer-events:auto}.prayer-reading p{margin:0 0 10px;padding:14px 20px;border-radius:16px;background:#1e140e9e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-family:var(--font-title);font-size:clamp(16px,2.2vw,20px);line-height:1.55;color:var(--gold-soft);animation:line-in .7s var(--ease)}.prayer-reading button{padding:6px 14px;border-radius:var(--radius-pill);border:1px solid var(--glass-line);background:var(--glass);font-size:12px}@keyframes line-in{0%{opacity:0;transform:translateY(6px)}}.leaderboard-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:4px;counter-reset:rank}.leaderboard-list li{counter-increment:rank;display:grid;grid-template-columns:34px 1fr auto;align-items:center;padding:9px 12px;border-radius:10px;background:#fffaf0;font-size:14px}.leaderboard-list li:before{content:counter(rank);font-family:var(--font-title);font-weight:600;color:var(--ink-soft)}.leaderboard-list li:nth-child(1):before{color:#b8860b}.leaderboard-list li:nth-child(-n+3){background:#fbefd6}.leaderboard-list li.is-me{outline:2px solid var(--lacquer)}.leaderboard-list .value{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.leaderboard-list .empty{grid-template-columns:1fr;color:var(--ink-soft)}.leaderboard-list .empty:before{content:none}.my-stats{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:6px}.my-stats div{padding:8px 10px;border-radius:10px;background:var(--paper-dim);font-size:12px;color:var(--ink-soft)}.my-stats strong{display:block;font-family:var(--font-title);font-size:16px;color:var(--ink)}@media(max-width:640px){.pray-fields{grid-template-columns:1fr}}.credits{margin-top:14px;font-size:12px;color:var(--ink-soft)}.credits summary{cursor:pointer;font-weight:500;color:var(--ink)}.credits ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.credits a{color:var(--lacquer)}.slider{display:grid;gap:6px;margin-top:14px;font-size:14px}.slider input{width:100%;accent-color:var(--lacquer)}@media(max-width:640px){.actions{width:calc(100vw - 24px);display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.actions button{justify-content:center;min-height:40px;padding:0 4px;font-size:12px}.actions kbd{display:none}.ceremony{bottom:calc(max(16px,env(safe-area-inset-bottom)) + 112px)}.ceremony-buttons{flex-direction:column}.beads{top:auto;bottom:calc(max(16px,env(safe-area-inset-bottom)) + 190px);transform:none;width:140px}#beads-canvas{height:180px}.hint{white-space:normal;text-align:center;width:calc(100vw - 32px);bottom:calc(max(16px,env(safe-area-inset-bottom)) + 222px)}.prayer-reading{bottom:calc(max(16px,env(safe-area-inset-bottom)) + 190px)}.chip{padding:0 10px;gap:7px}.chip-unit{display:none}.hud-top{align-items:flex-start}.hud-tools{gap:4px}.icon-btn{width:34px;height:34px}.icon-btn svg{width:18px;height:18px}.lunar-long{display:none}.lunar-short{display:inline}.lunar-date{font-size:12px}.guided{top:calc(max(14px,env(safe-area-inset-top)) + 84px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}
