*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#000;--surface:#161616;--border:#2a2a2a;--accent:#c8a96e;--text:#e0e0e0;--muted:#777}html,body{background:var(--bg);height:100%;color:var(--text);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:none;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;overflow:hidden}canvas#scene{touch-action:none;cursor:grab;width:100vw;height:100vh;display:block}canvas#scene.dragging{cursor:grabbing}canvas#scene.pointing{cursor:pointer}.material-icons{vertical-align:middle;font-size:1.1em}.hud-top{padding:max(14px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 14px max(16px, env(safe-area-inset-left));pointer-events:none;z-index:10;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.hud-top>*{pointer-events:auto}.brand{border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000b8;border-radius:999px;align-items:center;gap:10px;padding:6px 14px 6px 6px;display:flex}.brand img{width:30px;height:30px}.brand .name{letter-spacing:.02em;font-size:.85rem;font-weight:700}.brand .room{color:var(--accent);border-left:1px solid var(--border);padding-left:10px;font-size:.8rem;font-weight:600}.pill-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;font:inherit;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000b8;border-radius:999px;align-items:center;gap:.35rem;padding:.45rem 1rem;font-size:.85rem;text-decoration:none;transition:all .2s;display:inline-flex}.pill-btn:hover{border-color:var(--accent);color:var(--accent)}.hud-right{align-items:center;gap:8px;display:flex}.version{font-variant-numeric:tabular-nums;color:#ffffff47;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:5;font-size:.62rem;position:fixed;bottom:3px;left:50%;transform:translate(-50%)}.fps{font-variant-numeric:tabular-nums;color:var(--muted);border:1px solid var(--border);text-align:center;background:#000000b8;border-radius:999px;min-width:4.8em;padding:.35rem .7rem;font-size:.72rem}.help{border:1px solid var(--border);color:var(--muted);z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000b8;border-radius:12px;padding:10px 14px;font-size:.75rem;line-height:1.7;position:fixed;bottom:16px;left:16px}.help kbd{text-align:center;min-width:1.6em;color:var(--text);font:inherit;border:1px solid #444;border-bottom-width:2px;border-radius:4px;padding:0 4px;font-size:.7rem;display:inline-block}.prompt{opacity:0;border:1px solid var(--accent);z-index:10;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000d1;border-radius:999px;align-items:center;gap:12px;max-width:min(560px,100vw - 32px);padding:8px 8px 8px 16px;transition:opacity .2s,transform .2s;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%,20px)}.prompt.show{opacity:1;pointer-events:auto;transform:translate(-50%)}.prompt .ptxt{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.8rem;overflow:hidden}.prompt .ptxt b{color:var(--accent);margin-right:6px;font-weight:600}.prompt button{background:var(--accent);color:#000;font:inherit;cursor:pointer;border:0;border-radius:999px;flex-shrink:0;padding:6px 14px;font-size:.8rem;font-weight:700}.prompt kbd{font:inherit;border:1px solid #0006;border-radius:4px;margin-right:4px;padding:0 5px}.fun-badge{letter-spacing:.06em;text-transform:uppercase;color:#000;background:var(--accent);border-radius:999px;padding:.35rem .8rem;font-size:.72rem;font-weight:700;display:none}body.fun .fun-badge{display:inline-block}.toast{opacity:0;border:1px solid var(--accent);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;z-index:20;pointer-events:none;background:#000000d1;border-radius:999px;padding:12px 26px;font-size:1.1rem;font-weight:800;transition:opacity .3s,transform .3s;position:fixed;top:22%;left:50%;transform:translate(-50%,-10px)}.toast.show{opacity:1;transform:translate(-50%)}.loading{z-index:50;background:#000;flex-direction:column;justify-content:center;align-items:center;gap:18px;transition:opacity .6s;display:flex;position:fixed;inset:0}.loading.done{opacity:0;pointer-events:none}.loading img{width:72px;height:72px}.loading .bar{background:var(--border);border-radius:3px;width:220px;height:3px;overflow:hidden}.loading .bar div{background:var(--accent);width:0;height:100%;transition:width .2s}.loading .ltxt{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem}.modal{z-index:40;--fr:16px;--mat:clamp(14px, 3.2vw, 38px);background:radial-gradient(70% 60% at 50% 38%,#f3efe7 0%,#dcd8d0 55%,#a9a49b 100%);justify-content:center;align-items:center;padding:24px 16px;display:none;position:fixed;inset:0}.modal.open{display:flex}.modal-inner{align-items:center;gap:44px;width:100%;max-width:1100px;max-height:100%;display:flex}.modal-img{flex:auto;justify-content:center;min-width:0;display:flex}.painting{max-width:100%;padding:var(--mat);border:var(--fr) solid #151413;background:#f6f4ef;display:inline-block;box-shadow:inset 0 0 0 1px #00000014,inset 0 2px 6px #0000001f,0 0 0 1px #2a2826,0 28px 50px -12px #281e148c,0 10px 18px #281e1440}.painting.gold{border-image:linear-gradient(135deg,#e4cf9a,#b08a4a 30%,#e9d7a6 55%,#9c7535 80%,#d8bd84) 1}.painting img{max-width:100%;max-height:calc(100vh - 48px - 2 * (var(--fr) + var(--mat)));object-fit:contain;display:block;box-shadow:0 0 0 1px #0000001f}.modal-card{color:#1a1a1a;background:#faf8f3;flex:0 0 300px;padding:26px 26px 18px;box-shadow:inset 0 1px #fff9,0 8px 18px #281e1438,0 1px 3px #281e1433}.modal-card .mdate{letter-spacing:.12em;text-transform:uppercase;color:#7a7468;font-size:.72rem;font-weight:600}.modal-card h2{margin:12px 0 18px;font-size:1.3rem;font-weight:700;line-height:1.25}.modal-card .mtags{color:#8a6a30;justify-content:space-between;gap:12px;margin-bottom:14px;font-size:.74rem;font-weight:500;display:flex}.modal-card .mtags .ms{color:#b8563a;white-space:nowrap}.modal-card .mlinks{border-top:1px solid #e4dfd3;padding-top:10px}.modal-card .mlinks:empty{display:none}.modal-card .mlinks a{color:#8a6a30;align-items:center;gap:6px;padding:4px 0;font-size:.82rem;font-weight:600;text-decoration:none;display:flex}.modal-card .mlinks a:hover{text-decoration:underline}.modal-nav{border-top:1px solid #e4dfd3;justify-content:space-between;margin-top:14px;padding-top:12px;display:flex}.modal-nav button{font:inherit;color:#5a5448;cursor:pointer;background:0 0;border:0;align-items:center;gap:2px;font-size:.78rem;display:inline-flex}.modal-nav button:hover{color:#000}.modal-close{z-index:41;color:#f6f4ef;background:#1c1b1a;position:fixed;top:14px;right:16px}.touch{display:none}@media (pointer:coarse){.touch{display:block}.help{display:none}.prompt{bottom:calc(170px + env(safe-area-inset-bottom))}.prompt kbd{display:none}.music{bottom:auto;top:calc(64px + env(safe-area-inset-top))}}.joy{left:max(24px, env(safe-area-inset-left));bottom:max(24px, env(safe-area-inset-bottom));z-index:10;touch-action:none;background:#00000073;border:1px solid #ffffff2e;border-radius:50%;width:120px;height:120px;position:fixed}.joy .knob{background:#c8a96ed9;border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;position:absolute;top:50%;left:50%}.jump-btn{right:max(24px, env(safe-area-inset-right));bottom:max(32px, env(safe-area-inset-bottom));width:64px;height:64px;color:var(--text);z-index:10;touch-action:none;background:#0000008c;border:1px solid #ffffff2e;border-radius:50%;font-size:1.6rem;position:fixed}@media (width<=720px){.brand .name,.hud-right .lbl{display:none}.hud-right .pill-btn{padding:.45rem .62rem}.modal-inner{flex-direction:column;overflow-y:auto}.modal{--fr:10px}.modal-inner{gap:24px}.painting img{max-height:50vh}.modal-card{flex:none;width:100%}.prompt{bottom:170px}}
