:root{--ink: #fff8ec;--ink-soft: rgba(255, 248, 236, .72);--glass: rgba(34, 26, 18, .46);--glass-strong: rgba(34, 26, 18, .68);--line: rgba(255, 236, 200, .18);--gold: #e9c27a;--son: #b5432f;--font: "Be Vietnam Pro", system-ui, sans-serif;--serif: "Lora", Georgia, serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#2a2118;color:var(--ink);font-family:var(--font);-webkit-tap-highlight-color:transparent;user-select:none;touch-action:none}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none}#hud{position:fixed;inset:0;pointer-events:none}#hud .pill,#hud button{pointer-events:auto}.pill{position:absolute;display:flex;align-items:center;gap:10px;padding:8px 14px;border-radius:999px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:14px}.zone-pill{top:max(14px,env(safe-area-inset-top));left:14px;max-width:calc(100% - 172px);white-space:nowrap}.zone-pill .zone{overflow:hidden;text-overflow:ellipsis;min-width:0}.zone-pill .brand,.zone-pill .sep,.zone-pill .count{flex:none}@media (max-width: 480px){.zone-pill .brand,.zone-pill .sep{display:none}}.zone-pill .brand{font-family:var(--serif);font-weight:600;font-size:16px;color:var(--gold)}.zone-pill .sep{width:1px;height:16px;background:var(--line)}.top-right{position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;display:flex;gap:8px}.icon-btn{width:40px;height:40px;border-radius:999px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--ink);display:grid;place-items:center;cursor:pointer;padding:0}.icon-btn svg{width:20px;height:20px}.menu-btn{position:absolute;right:14px;bottom:max(20px,env(safe-area-inset-bottom));width:48px;height:48px}.fade{position:absolute;inset:0;background:#1d1610;opacity:0;transition:opacity .4s ease;pointer-events:none}.fade.on{opacity:1}.hint{position:absolute;left:50%;bottom:max(28px,env(safe-area-inset-bottom));transform:translate(-50%);padding:10px 18px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--line);font-size:14px;color:var(--ink-soft);white-space:nowrap;transition:opacity .8s ease}.toast{position:absolute;top:calc(max(14px,env(safe-area-inset-top)) + 96px);left:50%;transform:translate(-50%);padding:8px 16px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--line);font-size:14px;opacity:0;transition:opacity .4s ease;white-space:nowrap}.toast.show{opacity:1}.action-bar{position:absolute;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;gap:6px;padding:6px;border-radius:22px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.action-bar button{min-width:64px;padding:8px 10px 6px;border:0;border-radius:16px;background:transparent;color:var(--ink);font-family:var(--font);font-size:12px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer}.action-bar button:hover,.action-bar button:active{background:#ffecc81f}.action-bar svg{width:22px;height:22px}.name-tag{position:absolute;transform:translate(-50%,-100%);padding:2px 9px;border-radius:999px;background:#221a128c;font-size:12px;color:var(--ink);white-space:nowrap;pointer-events:none}.name-tag.me{color:var(--gold)}#loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:radial-gradient(circle at 50% 40%,#3b2d1f,#1d1610 70%);transition:opacity .9s ease;z-index:10}#loading.done{opacity:0;pointer-events:none}.loading-mark{font-family:var(--serif);font-size:34px;font-weight:600;color:var(--gold);letter-spacing:.02em}.loading-text{font-size:14px;color:var(--ink-soft)}.loading-bar{width:140px;height:2px;border-radius:2px;background:var(--line);overflow:hidden}.loading-bar span{display:block;width:40%;height:100%;background:var(--gold);animation:load 1.4s ease-in-out infinite}@keyframes load{0%{transform:translate(-100%)}to{transform:translate(260%)}}.zone-pill .count{color:var(--ink-soft);font-size:13px}.chat-bar{position:absolute;left:14px;right:74px;bottom:max(20px,env(safe-area-inset-bottom));max-width:560px;margin:0 auto;display:flex;align-items:center;gap:4px;padding:4px;border-radius:999px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);pointer-events:auto}.chat-bar input{flex:1;min-width:0;height:38px;padding:0 12px;border:0;border-radius:999px;background:#fff8ec1a;color:var(--ink);font-family:var(--font);font-size:15px;outline:none;user-select:text}.chat-bar input::placeholder{color:var(--ink-soft)}.chat-icon{flex:none;width:38px;height:38px;border:0;border-radius:999px;background:transparent;color:var(--ink);display:grid;place-items:center;cursor:pointer;padding:0}.chat-icon:hover,.chat-icon:active{background:#ffecc824}.chat-icon svg{width:21px;height:21px}.emotes{display:flex;gap:0}.chat-bar.quiet{right:auto;left:50%;transform:translate(-50%)}.chat-bar.quiet input,.chat-bar.quiet>.chat-icon,.chat-bar.quiet .emotes button:not([data-emote=chap]){display:none}@media (max-width: 520px){.emotes button:not([data-emote=chap]){width:32px}}.chat-log{position:absolute;left:14px;bottom:calc(max(20px,env(safe-area-inset-bottom)) + 56px);width:min(340px,calc(100% - 28px));max-height:34vh;overflow-y:auto;display:none;flex-direction:column;gap:4px;padding:10px 12px;border-radius:16px;background:var(--glass-strong);border:1px solid var(--line);font-size:13px;line-height:1.4;pointer-events:auto;user-select:text}.chat-log.open{display:flex}.chat-log b{color:var(--gold);font-weight:600}.chat-log .warn:after{content:" · cẩn thận lừa đảo";color:#f3a07a}.action-bar{bottom:calc(max(20px,env(safe-area-inset-bottom)) + 56px)}.bubble{position:absolute;transform:translate(-50%,-100%);max-width:220px;padding:7px 11px;border-radius:14px;background:#fffaf0f0;color:#2b2118;font-size:13px;line-height:1.35;display:none;flex-direction:column;gap:3px;pointer-events:none;box-shadow:0 2px 10px #00000040;word-break:break-word}.bubble:after{content:"";position:absolute;left:50%;bottom:-6px;transform:translate(-50%);border:6px solid transparent;border-bottom:0;border-top-color:#fffaf0f0}.bubble small{color:#a3401f;font-size:11px}.bubble.emote{padding:6px;color:#b5432f}.bubble.emote svg{width:22px;height:22px}.peer-card{position:absolute;left:50%;bottom:calc(max(20px,env(safe-area-inset-bottom)) + 60px);transform:translate(-50%);display:none;flex-direction:column;gap:2px;min-width:200px;padding:10px;border-radius:18px;background:var(--glass-strong);border:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);pointer-events:auto}.peer-card.open{display:flex}.peer-name{padding:2px 10px 8px;font-family:var(--serif);font-size:16px;color:var(--gold)}.peer-card button{text-align:left;padding:10px 12px;border:0;border-radius:12px;background:transparent;color:var(--ink);font-family:var(--font);font-size:14px;cursor:pointer}.peer-card button:hover{background:#ffecc81f}.peer-card button.danger{color:#f3a07a}.banner{position:absolute;top:calc(max(14px,env(safe-area-inset-top)) + 50px);left:50%;transform:translate(-50%,-8px);padding:7px 16px;border-radius:999px;background:#782814b8;border:1px solid rgba(240,190,110,.4);color:#ffe6b8;font-size:13px;white-space:nowrap;opacity:0;transition:opacity .6s ease,transform .6s ease;pointer-events:none}.banner.show{opacity:1;transform:translate(-50%)}.sheet{position:absolute;left:50%;bottom:calc(max(20px,env(safe-area-inset-bottom)) + 60px);transform:translate(-50%,16px);width:min(380px,calc(100% - 24px));max-height:calc(100% - 140px);overflow-y:auto;padding:18px 18px 16px;border-radius:22px;background:#261c14eb;border:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);display:none;flex-direction:column;gap:12px;pointer-events:auto;opacity:0;transition:opacity .3s ease,transform .3s ease}.sheet.open{display:flex;opacity:1;transform:translate(-50%)}.sheet-title{font-family:var(--serif);font-size:19px;color:var(--gold);display:flex;align-items:center;gap:8px}.sheet-sub{margin:0;font-size:13px;color:var(--ink-soft)}.sheet-sub b{color:var(--ink);font-weight:500}.sheet-close{position:absolute;top:10px;right:12px;width:32px;height:32px;border:0;border-radius:999px;background:#ffecc814;color:var(--ink);font-size:20px;line-height:1;cursor:pointer}.primary,.ghost{height:44px;border-radius:999px;font-family:var(--font);font-size:15px;font-weight:500;cursor:pointer;padding:0 20px}.primary{border:0;background:linear-gradient(180deg,#d9a14a,#b8782c);color:#2a1a0c}.primary:disabled{opacity:.5}.ghost{border:1px solid var(--line);background:transparent;color:var(--ink)}.donate .qr{align-self:center;width:min(240px,70vw);aspect-ratio:1;border-radius:14px;background:#fff;padding:8px;object-fit:contain}.donate .acct{display:flex;flex-direction:column;gap:6px;font-size:13px}.donate .acct div{display:flex;align-items:center;gap:8px}.donate .acct span{width:96px;flex:none;color:var(--ink-soft)}.donate .acct b{color:var(--ink);font-weight:500;overflow-wrap:anywhere}.donate .acct .copy{height:28px;padding:0 12px;font-size:12px;margin-left:auto}.donate .warn{font-size:12px}.dot{display:inline-block;width:12px;height:12px;border-radius:999px}.dot.vang{background:#ffc35a;box-shadow:0 0 10px #ffb02e}.dot.hong{background:#ff8fb0;box-shadow:0 0 10px #ff5c8a}.lantern .choice{display:flex;gap:8px}.lantern .choice button{flex:1;height:42px;border-radius:14px;border:1px solid var(--line);background:transparent;color:var(--ink);font-family:var(--font);font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}.lantern .choice button.on{background:#ffecc824;border-color:var(--gold)}.lantern textarea{width:100%;resize:none;padding:10px 12px;border-radius:14px;border:1px solid var(--line);background:#fff8ec14;color:var(--ink);font-family:var(--font);font-size:15px;outline:none;user-select:text}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips button{padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--ink-soft);font-family:var(--font);font-size:12px;cursor:pointer}.lantern .wish{margin:0;font-family:var(--serif);font-size:18px;line-height:1.5;color:var(--ink)}.tube{align-self:center;position:relative;width:76px;height:120px;margin:26px 0 4px;border-radius:10px 10px 14px 14px;background:linear-gradient(90deg,#6e1a10,#a8321f 45%,#6e1a10);border:2px solid #d9a845}.tube .sticks{position:absolute;left:8px;right:8px;top:-30px;display:flex;justify-content:space-between}.tube .sticks i{display:block;width:4px;height:52px;border-radius:2px;background:#d8b878}.tube .sticks i:nth-child(odd){height:44px;margin-top:8px}.tube.shaking{animation:shake .18s ease-in-out 8}@keyframes shake{0%,to{transform:rotate(-9deg)}50%{transform:rotate(9deg) translateY(-4px)}}.paper{padding:18px 16px;border-radius:10px;background:linear-gradient(180deg,#b8321f,#8e2414);border:2px solid #e3b65a;color:#fff1d0;text-align:center;display:flex;flex-direction:column;gap:10px}.paper-head{font-family:var(--serif);font-size:18px;color:#ffd98a}.poem{font-family:var(--serif);font-size:16px;line-height:1.6}.poem div:nth-child(odd){padding-left:1.2em}.meaning{font-size:13px;line-height:1.5;color:#ffe9c9}.match:not(:empty){font-size:12px;color:#ffd98a}.beads{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:space-between;padding:max(24px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 50%,#3c2818db,#140e09f5);pointer-events:auto;z-index:5}.beads.open{display:flex}.beads-top{text-align:center;display:flex;flex-direction:column;gap:6px}.beads-count{font-family:var(--serif);font-size:22px;color:var(--gold)}.beads-mantra{font-size:14px;color:var(--ink-soft);letter-spacing:.04em}.strand{position:relative;flex:1;width:100%;touch-action:none;cursor:grab}.strand:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent,#8a5a2a 20%,#8a5a2a 80%,transparent)}.strand i{position:absolute;left:calc(50% - 26px);top:calc(50% - 26px);width:52px;height:52px;border-radius:999px;background:radial-gradient(circle at 35% 30%,#c98a4a,#7a4520 60%,#4a2610);box-shadow:0 4px 10px #00000073,inset 0 -3px 6px #0000004d;transition:transform .25s ease,opacity .25s ease}.strand i.current{box-shadow:0 0 0 3px #e9c27a8c,0 4px 14px #00000080}.strand.step i{animation:nudge .25s ease}@keyframes nudge{0%{margin-top:64px}to{margin-top:0}}.beads-bottom{display:flex;gap:10px}.beads-hint{position:absolute;bottom:calc(max(24px,env(safe-area-inset-bottom)) + 60px);font-size:12px;color:var(--ink-soft)}.joystick{position:fixed;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:999px;border:1px solid rgba(255,236,200,.35);background:radial-gradient(circle,#261c1426,#261c1473);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:5}.joystick.on{opacity:1}.joystick-knob{position:absolute;left:50%;top:50%;width:52px;height:52px;border-radius:999px;background:#ffe4b4d9;box-shadow:0 2px 10px #00000059;transform:translate(-50%,-50%)}.settings{width:min(400px,calc(100% - 24px));max-height:min(60vh,calc(100% - 140px));gap:10px}:is(.settings,.merit,.journal) .tabs{display:flex;gap:4px;padding:3px;border-radius:999px;background:#ffecc812}:is(.settings,.merit,.journal) .tabs button,:is(.settings,.merit,.journal) .seg button{flex:1;min-height:36px;border:0;border-radius:999px;background:transparent;color:var(--ink-soft);font-family:var(--font);font-size:13px;cursor:pointer}:is(.settings,.merit,.journal) .tabs button.on{background:#e9c27a33;color:var(--gold);font-weight:600}:is(.settings,.merit,.journal) .tab-body{display:flex;flex-direction:column;gap:10px}.settings .field-label{font-size:12px;color:var(--ink-soft);display:flex;justify-content:space-between;margin-top:2px}.settings .pick-name{color:var(--gold)}.settings .name-row{display:flex;gap:8px}.settings .name-row input{flex:1;min-width:0;height:44px;padding:0 14px;border-radius:14px;border:1px solid var(--line);background:#ffecc80f;color:var(--ink);font-family:var(--serif);font-size:17px;outline:none;user-select:text}.settings .name-row input:focus{border-color:var(--gold)}.settings .ghost.small{height:44px;padding:0 14px;font-size:13px;white-space:nowrap;border-radius:14px}:is(.settings,.merit,.journal) .seg{display:flex;gap:6px}:is(.settings,.merit,.journal) .seg button{border:1px solid var(--line);border-radius:14px;color:var(--ink);font-size:14px}:is(.settings,.merit,.journal) .seg button.on{background:#e9c27a29;border-color:var(--gold);color:var(--gold)}:is(.settings,.merit,.journal) .seg.tall button{display:flex;flex-direction:column;gap:2px;padding:8px 6px}:is(.settings,.merit,.journal) .seg.tall small{font-size:11px;color:var(--ink-soft);line-height:1.3}.settings .swatches{display:flex;gap:10px;flex-wrap:wrap}.settings .swatch{width:36px;height:36px;border-radius:999px;border:2px solid transparent;background:var(--c);box-shadow:inset 0 -6px 10px #00000040,0 0 0 1px var(--line);cursor:pointer}.settings .swatch.on{border-color:var(--gold);box-shadow:inset 0 -6px 10px #00000040,0 0 0 3px #e9c27a4d}.settings .toggle{display:flex;align-items:center;gap:12px;padding:8px 0;cursor:pointer}.settings .toggle span{flex:1;display:flex;flex-direction:column;gap:2px}.settings .toggle b{font-weight:500;font-size:14px}.settings .toggle small{font-size:12px;color:var(--ink-soft)}.settings .toggle input{position:absolute;opacity:0;pointer-events:none}.settings .toggle i{flex:none;width:44px;height:26px;border-radius:999px;background:#ffecc829;position:relative;transition:background .2s}.settings .toggle i:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:999px;background:var(--ink);transition:transform .2s}.settings .toggle input:checked+i{background:#c48a3a}.settings .toggle input:checked+i:after{transform:translate(18px)}.settings .toggle input:focus-visible+i{outline:2px solid var(--gold);outline-offset:2px}.settings input[type=range]{width:100%;accent-color:#d9a14a}.settings .stats{display:flex;gap:8px}.settings .stats div{flex:1;padding:10px 6px;border-radius:14px;background:#ffecc80f;display:flex;flex-direction:column;align-items:center;gap:2px}.settings .stats b{font-family:var(--serif);font-size:22px;color:var(--gold);font-weight:500}.settings .stats span{font-size:12px;color:var(--ink-soft)}.settings .primary{margin-top:4px}@media (min-width: 760px){.settings{inset:70px 16px auto auto;transform:translate(16px);max-height:calc(100% - 160px)}.settings.open{transform:none}}.emote-toggle{display:none}.joystick.idle{opacity:.4;transition:opacity .3s ease}.joystick.idle .joystick-knob{background:#ffe4b48c}.touch .chat-bar{left:calc(14px + env(safe-area-inset-left));right:calc(74px + env(safe-area-inset-right));max-width:none}.touch .chat-bar input{height:42px;font-size:16px}.touch .chat-icon{width:42px;height:42px}.touch .chat-bar:not(.typing) .send{display:none}.touch .chat-bar.typing .emote-toggle{display:none}.touch .chat-bar:not(.quiet) .emote-toggle{display:grid}.touch .chat-bar:not(.quiet) .emotes{position:absolute;right:0;bottom:calc(100% + 8px);display:none;gap:4px;padding:5px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.touch .chat-bar:not(.quiet) .emotes.open{display:flex}.touch .emotes button:not([data-emote=chap]){width:44px}.touch .emotes .chat-icon{width:44px;height:44px}.touch .menu-btn{right:calc(14px + env(safe-area-inset-right))}.touch .zone-pill{left:calc(14px + env(safe-area-inset-left))}.touch .top-right{right:calc(14px + env(safe-area-inset-right))}.touch .action-bar{left:auto;right:calc(12px + env(safe-area-inset-right));bottom:calc(max(20px,env(safe-area-inset-bottom)) + 62px);transform:none;flex-direction:column-reverse;gap:10px;padding:0;background:none;border:0;backdrop-filter:none;-webkit-backdrop-filter:none}.touch .action-bar button{width:64px;min-width:0;padding:0;gap:3px;font-size:11px;line-height:1.15;text-align:center;text-shadow:0 1px 3px rgba(0,0,0,.8)}.touch .action-bar button:hover,.touch .action-bar button:active{background:none}.touch .action-bar svg{width:52px;height:52px;padding:14px;border-radius:999px;background:var(--glass-strong);border:1px solid rgba(233,194,122,.45);box-sizing:border-box}.touch .action-bar button:active svg{background:#e9c27a59;transform:scale(.94)}@media (max-height: 500px){.touch .action-bar{flex-direction:row-reverse;bottom:calc(max(14px,env(safe-area-inset-bottom)) + 58px)}.touch .action-bar svg{width:46px;height:46px;padding:12px}.touch .chat-bar{bottom:max(10px,env(safe-area-inset-bottom));max-width:460px}.touch .menu-btn{bottom:max(10px,env(safe-area-inset-bottom))}.toast{top:calc(max(10px,env(safe-area-inset-top)) + 54px)}.banner{top:calc(max(10px,env(safe-area-inset-top)) + 48px)}.sheet{max-height:calc(100% - 80px);bottom:max(10px,env(safe-area-inset-bottom))}.sheet.settings{top:max(10px,env(safe-area-inset-top));bottom:auto;max-height:calc(100% - 20px)}}@media (max-width: 520px){.toast{white-space:normal;text-align:center;width:max-content;max-width:calc(100% - 40px);border-radius:16px}.banner{white-space:normal;text-align:center;max-width:calc(100% - 40px);border-radius:16px}}.guide{position:absolute;inset:0;display:none;pointer-events:auto;background:#140e0959}.guide.open{display:block}.guide-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(340px,calc(100% - 32px));padding:18px;border-radius:22px;background:#261c14f2;border:1px solid rgba(233,194,122,.4);box-shadow:0 10px 40px #0006;display:flex;flex-direction:column;gap:8px}.guide-card p{margin:0;font-size:15px;line-height:1.5;color:var(--ink)}.guide-step{font-size:12px;color:var(--ink-soft)}.guide-foot{display:flex;align-items:center;gap:8px;margin-top:6px}.guide-dots{flex:1;display:flex;gap:6px}.guide-dots i{width:6px;height:6px;border-radius:999px;background:var(--line)}.guide-dots i.on{background:var(--gold);width:16px}.primary.small,.ghost.small{height:40px;padding:0 16px;font-size:14px}.touch .guide[data-at=left] .guide-card{left:calc(16px + env(safe-area-inset-left));top:auto;bottom:260px;transform:none}.touch .guide[data-at=right] .guide-card{inset:auto 92px 150px auto;transform:none;width:min(300px,calc(100% - 110px))}.touch .guide[data-at=top] .guide-card{left:auto;right:14px;top:calc(max(14px,env(safe-area-inset-top)) + 58px);transform:none}@media (max-height: 500px){.touch .guide .guide-card{transform:translateY(-50%)!important;inset:50% auto auto 50%!important;translate:-50% 0}}.loading-quote{max-width:300px;margin-top:10px;text-align:center;font-family:var(--serif);font-size:15px;line-height:1.5;color:var(--ink-soft);font-style:italic;padding:0 20px}.merit-row{position:absolute;top:calc(max(14px,env(safe-area-inset-top)) + 48px);left:calc(14px + env(safe-area-inset-left));display:flex;align-items:center;gap:10px;pointer-events:none}.merit-pill{position:relative;padding:6px 12px 6px 10px;gap:6px;color:var(--ink);font-family:var(--font);font-size:13px;cursor:pointer}.merit-pill svg{width:18px;height:18px;color:var(--gold)}.merit-pill b{color:var(--gold);font-weight:600;font-size:14px}.merit-pill span{color:var(--ink-soft)}.merit-pill.ready:after{content:"";width:8px;height:8px;border-radius:999px;background:#ff7a59;box-shadow:0 0 8px #ff7a59}.merit-float{display:flex;flex-direction:column;gap:1px;opacity:0;pointer-events:none;text-shadow:0 1px 4px rgba(0,0,0,.8)}.merit-float b{color:#ffd98a;font-size:15px}.merit-float span{color:var(--ink);font-size:12px}.merit-float.show{animation:merit-up 2.4s ease forwards}@keyframes merit-up{0%{opacity:0;transform:translateY(8px)}12%,75%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.sheet.merit{width:min(420px,calc(100% - 24px));gap:10px}.merit-head{display:flex;gap:14px;align-items:center}.merit-total{display:flex;flex-direction:column;align-items:center;padding:8px 12px;border-radius:16px;background:#e9c27a1a}.merit-total b{font-family:var(--serif);font-size:26px;color:var(--gold);font-weight:600;line-height:1.1}.merit-total span{font-size:11px;color:var(--ink-soft)}.merit-level{flex:1;display:flex;flex-direction:column;gap:5px}.merit-level>div:first-child{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.merit-level b{font-family:var(--serif);font-size:17px;color:var(--ink)}.merit-level span,.merit-level small{font-size:12px;color:var(--ink-soft)}.merit .bar{height:6px;border-radius:999px;background:#ffecc81a;overflow:hidden}.merit .bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#c48a3a,#f0cd84)}.quest{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:#ffecc80d;border:1px solid transparent}.quest.ready{border-color:#e9c27a8c;background:#e9c27a1a}.quest.claimed{opacity:.55}.q-text{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0}.q-text b{font-weight:500;font-size:14px}.q-text small{font-size:11px;color:var(--ink-soft)}.q-reward{color:var(--gold);font-size:13px;white-space:nowrap}.q-done{color:var(--ink-soft);font-size:12px;white-space:nowrap}.quest .primary.small{height:36px;padding:0 12px;font-size:13px;white-space:nowrap}.rank-list{display:flex;flex-direction:column;gap:2px}.rank-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px}.rank-row.me{background:#e9c27a24;outline:1px solid rgba(233,194,122,.4)}.rank-n{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:999px;font-size:13px;color:var(--ink-soft)}.rank-row.top1 .rank-n{background:#e9c27a;color:#2a1a0c;font-weight:600}.rank-row.top2 .rank-n{background:#cfc6b8;color:#2a1a0c;font-weight:600}.rank-row.top3 .rank-n{background:#c48a5a;color:#2a1a0c;font-weight:600}.rank-name{flex:1;min-width:0;display:flex;flex-direction:column}.rank-name b{font-weight:500;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-name small{font-size:11px;color:var(--ink-soft)}.rank-merit{font-family:var(--serif);color:var(--gold);font-size:15px}.rank-gap{text-align:center;color:var(--ink-soft);line-height:1}@media (max-height: 500px){.merit-row{top:calc(max(10px,env(safe-area-inset-top)) + 46px)}}@media (max-width: 520px){.banner{top:calc(max(14px,env(safe-area-inset-top)) + 96px)}.toast{top:calc(max(14px,env(safe-area-inset-top)) + 140px)}}body:has(.sheet.open,.guide.open,.beads.open) .joystick.idle{opacity:0}.sheet.profile,.sheet.friends{width:min(400px,calc(100% - 24px));gap:10px}.card-head{display:flex;gap:14px;align-items:center;padding:10px;border-radius:18px;background:linear-gradient(135deg,#e9c27a29,#b5432f1f)}.avatar{width:64px;height:64px;flex:none;border-radius:999px;overflow:hidden;box-shadow:0 0 0 2px #e9c27ab3,0 4px 14px #00000059}.avatar svg{width:100%;height:100%;display:block}.card-who{min-width:0;display:flex;flex-direction:column;gap:2px}.card-who b{font-family:var(--serif);font-size:20px;color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-who span{font-size:13px;color:var(--ink-soft)}.card-who em{font-style:normal;color:var(--gold)}.card-who small{font-size:12px;color:var(--ink-soft)}.card-who small.on{color:#9fd58a}.card-bio{margin:0;font-family:var(--serif);font-size:15px;line-height:1.5;color:var(--ink);padding:0 4px}.profile .stats,.settings .stats{display:flex;gap:6px}.profile .stats div{flex:1;min-width:0;padding:8px 4px;border-radius:14px;background:#ffecc80f;display:flex;flex-direction:column;align-items:center;gap:1px}.profile .stats b{font-family:var(--serif);font-size:18px;color:var(--gold);font-weight:600}.profile .stats span{font-size:11px;color:var(--ink-soft);text-align:center}.profile .field-label,.friends .field-label{font-size:12px;color:var(--ink-soft);margin-top:2px}.wish-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.wish-chips::-webkit-scrollbar{display:none}.wish-chips button{flex:none;height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:#ffecc80f;color:var(--ink);font-family:var(--font);font-size:13px;cursor:pointer}.wish-chips button:active{background:#e9c27a40}:is(.profile,.friends) .name-row{display:flex;gap:8px}:is(.profile,.friends) .name-row input{flex:1;min-width:0;height:44px;padding:0 14px;border-radius:14px;border:1px solid var(--line);background:#ffecc80f;color:var(--ink);font-family:var(--font);font-size:16px;outline:none;user-select:text}:is(.profile,.friends) .name-row input:focus{border-color:var(--gold)}:is(.profile,.friends) .ghost.small,:is(.profile,.friends) .primary.small{height:44px;border-radius:14px;white-space:nowrap}.card-main{display:flex;gap:8px}.card-main button{flex:1;padding:0 10px}.card-main .primary{flex:1.4}.card-main small{color:var(--ink-soft);font-size:12px}.card-main button:disabled{opacity:.45}.card-more{display:flex;flex-wrap:wrap;gap:4px 14px;justify-content:center;border-top:1px solid var(--line);padding-top:8px}.card-more button{border:0;background:none;color:var(--ink-soft);font-family:var(--font);font-size:13px;padding:6px 2px;cursor:pointer}.card-more button.danger{color:#f3a07a}.settings textarea{width:100%;box-sizing:border-box;padding:10px 14px;border-radius:14px;border:1px solid var(--line);background:#ffecc80f;color:var(--ink);font-family:var(--font);font-size:16px;resize:none;outline:none;user-select:text}.settings textarea:focus{border-color:var(--gold)}.friends-pill{position:relative;padding:6px 12px 6px 10px;gap:6px;color:var(--ink);font-family:var(--font);font-size:13px;cursor:pointer}.friends-pill svg{width:18px;height:18px;color:var(--gold)}.friends-pill b{color:var(--ink);font-weight:600}.friends-pill.ready:after{content:"";width:8px;height:8px;border-radius:999px;background:#ff7a59;box-shadow:0 0 8px #ff7a59}.friends .tabs{display:flex;gap:4px;padding:3px;border-radius:999px;background:#ffecc812}.friends .tabs button{flex:1;min-height:36px;border:0;border-radius:999px;background:transparent;color:var(--ink-soft);font-family:var(--font);font-size:13px;cursor:pointer}.friends .tabs button.on{background:#e9c27a33;color:var(--gold);font-weight:600}.friend-list{display:flex;flex-direction:column;gap:4px}.friend-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:14px;background:#ffecc80d;cursor:pointer}.friend-row .ghost.small,.friend-row .primary.small{height:36px;padding:0 12px;font-size:13px}.f-dot{width:10px;height:10px;flex:none;border-radius:999px;background:#ffecc840}.f-dot.on{background:#8fd16f;box-shadow:0 0 8px #8fd16f}.f-name{flex:1;min-width:0;display:flex;flex-direction:column}.f-name b{font-weight:500;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.f-name small{font-size:11px;color:var(--ink-soft)}.talk-head{display:flex;align-items:center;gap:10px;padding-right:40px}.talk-head .ghost.small{height:34px;padding:0 12px;font-size:13px}.talk-head b{font-family:var(--serif);font-size:17px}.talk-head small{font-size:12px;color:var(--ink-soft)}.talk-head small.on{color:#9fd58a}.dm-list{display:flex;flex-direction:column;gap:6px;min-height:120px;max-height:40vh;overflow-y:auto;padding:4px 2px;user-select:text}.dm{align-self:flex-start;max-width:80%;display:flex;flex-direction:column;gap:2px}.dm span{padding:8px 12px;border-radius:16px 16px 16px 4px;background:#ffecc81a;font-size:14px;line-height:1.4;word-break:break-word}.dm.mine{align-self:flex-end}.dm.mine span{border-radius:16px 16px 4px;background:linear-gradient(180deg,#d9a14a,#b8782c);color:#2a1a0c}.dm small{font-size:11px;color:#f3a07a}.sheet.journal{width:min(420px,calc(100% - 24px));gap:10px}.journal .card-head{margin-top:2px}.level-bar{display:flex;flex-direction:column;gap:5px}.level-bar .bar,.journal .bar{height:7px;border-radius:999px;background:#ffecc81a;overflow:hidden}.level-bar .bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#c48a3a,#f0cd84)}.level-bar small{font-size:12px;color:var(--ink-soft)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.stat-grid div{padding:10px 12px;border-radius:14px;background:#ffecc80f;display:flex;flex-direction:column;gap:2px}.stat-grid b{font-family:var(--serif);font-size:21px;color:var(--gold);font-weight:600}.stat-grid span{font-size:12px;color:var(--ink-soft)}.title-list{display:flex;flex-direction:column;gap:6px}.title-row{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:1px 10px;text-align:left;padding:10px 12px;border-radius:14px;border:1px solid transparent;background:#ffecc80d;color:var(--ink);font-family:var(--font);cursor:pointer}.title-row b{font-weight:500;font-size:14px}.title-row small{grid-column:1;font-size:12px;color:var(--ink-soft)}.title-row span{grid-column:2;grid-row:1 / 3;align-self:center;font-size:12px;color:var(--ink-soft)}.title-row.got span{color:var(--gold)}.title-row.on{border-color:#e9c27a99;background:#e9c27a1f}.title-row:disabled{opacity:.5;cursor:default}.acct-box{display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center;padding:12px 14px;border-radius:16px;background:#e9c27a1a;border:1px solid rgba(233,194,122,.35)}.acct-box b{font-size:15px;font-weight:600}.acct-box small{grid-column:1;font-size:12px;color:var(--ink-soft);line-height:1.4}.acct-box button{grid-column:2;grid-row:1 / 3;height:38px!important}.acct-box.ok{background:#8fd16f1a;border-color:#8fd16f59}.journal form{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:16px;background:#ffecc80d}.journal form input,.journal .code-box{height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:#ffecc80f;color:var(--ink);font-family:var(--font);font-size:16px;outline:none;user-select:text}.journal form input:focus{border-color:var(--gold)}.journal .code-box{font-family:ui-monospace,monospace;font-size:14px;letter-spacing:.02em}.form-err{margin:0;min-height:0;font-size:13px;color:#f3a07a}.form-err:empty{display:none}.journal .field-label{font-size:12px;color:var(--ink-soft);display:flex;justify-content:space-between}.journal .pick-name{color:#f3a07a}.journal .card-main button{height:44px}.acct-links{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 16px;border-top:1px solid var(--line);padding-top:8px}.acct-links button{border:0;background:none;color:var(--ink-soft);font-family:var(--font);font-size:13px;padding:6px 2px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.acct-links .danger{color:#f3a07a}@media (min-height: 501px){.touch .sheet:not(.settings){max-height:calc(100% - 180px)}}.menu-bar{position:absolute;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;gap:6px;pointer-events:auto;max-width:calc(100% - 28px);overflow-x:auto;scrollbar-width:none}.menu-bar button,.menu-grid .grid button{position:relative;display:flex;align-items:center;gap:7px;height:42px;padding:0 14px;border-radius:14px;border:1px solid var(--line);background:var(--glass-strong);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--ink);font-family:var(--font);font-size:13px;white-space:nowrap;cursor:pointer}.menu-bar button:hover{border-color:#e9c27a8c}.menu-bar svg{width:18px;height:18px;color:var(--gold);flex:none}.menu-bar .badge,.menu-grid .badge,.menu-btn .badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:999px;background:#e5533a;color:#fff;font-size:11px;font-style:normal;font-weight:600;line-height:18px;text-align:center;display:none}.menu-btn{position:absolute;right:14px;bottom:max(20px,env(safe-area-inset-bottom));width:48px;height:48px;display:none}.menu-btn svg{width:22px;height:22px}html:not(.touch) .chat-bar{bottom:calc(max(14px,env(safe-area-inset-bottom)) + 52px);right:14px}html:not(.touch) .action-bar{bottom:calc(max(14px,env(safe-area-inset-bottom)) + 108px)}html:not(.touch) .chat-log{bottom:calc(max(14px,env(safe-area-inset-bottom)) + 108px)}html:not(.touch) .sheet:not(.settings){bottom:calc(max(14px,env(safe-area-inset-bottom)) + 112px);max-height:calc(100% - 200px)}.touch .menu-bar{display:none}.touch .menu-btn{display:grid;right:calc(14px + env(safe-area-inset-right))}.menu-grid .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.menu-grid .grid button{flex-direction:column;justify-content:center;gap:6px;height:76px;padding:6px 2px;border-radius:16px;background:#ffecc80f;font-size:12px;white-space:normal;text-align:center;line-height:1.2}.menu-grid .grid svg{width:24px;height:24px;color:var(--gold)}.menu-grid .badge{top:4px;right:8px}.sheet.map{width:min(440px,calc(100% - 24px));gap:8px}.map svg{width:100%;height:auto;max-height:calc(100vh - 290px);border-radius:16px;background:#2b2219;touch-action:manipulation}.touch .map svg{max-height:calc(100vh - 330px)}.m-ground{fill:#4f5a3a}.m-garden{fill:#5f7444}.m-water{fill:#3f6f86}.m-stone{fill:#b3a891}.m-terrace{fill:#c9bc9f}.m-wood{fill:#8a5a33}.m-roof{fill:#7d3a2a}.m-hall{fill:#a3452f;stroke:#e9c27a;stroke-width:.8}.m-gold{fill:#e9c27a}.m-place{cursor:pointer}.m-place circle{fill:#e9c27a}.m-place rect{fill:#261c14d9;stroke:#e9c27a99;stroke-width:.5}.m-place text{fill:#fff3dc;font-size:4.6px;font-family:var(--font);text-anchor:middle}.m-place:hover rect,.m-place:active rect{fill:#c48a3af2}.m-dots circle{fill:#f3ead8;stroke:#2b2219;stroke-width:.6}.m-dots circle.friend{fill:#8fd16f}.m-me circle{fill:#f0c35a;stroke:#2b2219;stroke-width:.8}.m-me path{fill:#f0c35a;stroke:#2b2219;stroke-width:.6}.m-legend{display:flex;gap:14px;justify-content:center;font-size:12px;color:var(--ink-soft)}.m-legend span{display:flex;align-items:center;gap:5px}.m-legend i{width:10px;height:10px;border-radius:999px;background:#f3ead8}.m-legend i.me{background:#f0c35a}.m-legend i.friend{background:#8fd16f}.sheet.bag{width:min(420px,calc(100% - 24px));gap:10px}.bag-today{display:flex;gap:6px}.bag-today div{flex:1;padding:8px 6px;border-radius:14px;background:#e9c27a1a;display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px}.bag-today b{font-family:var(--serif);font-size:20px;color:var(--gold)}.bag-today span{font-size:11px;color:var(--ink-soft);line-height:1.3}.bag .tabs{display:flex;gap:4px;padding:3px;border-radius:999px;background:#ffecc812}.bag .tabs button{flex:1;min-height:36px;border:0;border-radius:999px;background:transparent;color:var(--ink-soft);font-family:var(--font);font-size:12px;cursor:pointer}.bag .tabs button.on{background:#e9c27a33;color:var(--gold);font-weight:600}.bag-list{display:flex;flex-direction:column;gap:6px}.bag-item{display:flex;flex-direction:column;gap:3px;text-align:left;padding:10px 12px;border-radius:14px;border:0;background:#ffecc80d;color:var(--ink);font-family:var(--font)}button.bag-item{cursor:pointer}button.bag-item:hover{background:#e9c27a1f}.bag-item b{font-size:14px;font-weight:500;color:var(--gold)}.bag-item span{font-family:var(--serif);font-size:14px;line-height:1.45}.bag-item small{font-size:11px;color:var(--ink-soft)}.showcase{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:20px;background:#ffecc80d;border:1px solid var(--line)}.stage{position:relative;height:min(300px,38vh);border-radius:16px;overflow:hidden;background:radial-gradient(circle at 50% 42%,#7a5530,#4a321e 45%,#2a1c12)}.stage canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.stage canvas:active{cursor:grabbing}.stage-hint{position:absolute;left:0;right:0;bottom:8px;text-align:center;font-size:11px;color:#fff0d7b3;pointer-events:none}.pose-row{display:flex;gap:8px;align-items:center}.pose-row .seg{flex:1;display:flex;gap:4px;padding:3px;border-radius:999px;background:#ffecc812}.pose-row .seg button{flex:1;height:34px;border:0;border-radius:999px;background:transparent;color:var(--ink-soft);font-family:var(--font);font-size:13px;cursor:pointer}.pose-row .seg button.on{background:linear-gradient(180deg,#d9a14a,#b8782c);color:#2a1a0c;font-weight:600}.pose-row .ghost.small{height:40px;border-radius:999px;padding:0 14px;font-size:13px}.worn{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.worn button{display:flex;align-items:center;gap:6px;padding:6px;border:0;border-radius:12px;background:transparent;color:var(--ink);font-family:var(--font);font-size:12px;text-align:left;cursor:pointer;min-width:0}.worn button:hover{background:#ffecc812}.worn svg,.gear-item svg{width:34px;height:34px;flex:none;border-radius:10px;background:#00000040;padding:2px;box-sizing:border-box}.worn span{display:flex;flex-direction:column;min-width:0;line-height:1.25}.worn small{font-size:10px;color:var(--ink-soft)}.gear-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:6px}.gear-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px 8px;border-radius:14px;border:1px solid transparent;background:#ffecc80d;color:var(--ink);font-family:var(--font);cursor:pointer;text-align:center}.gear-item svg{width:44px;height:44px}.gear-item b{font-size:12px;font-weight:500;line-height:1.25}.gear-item small{font-size:10px;color:var(--ink-soft)}.gear-item.on{border-color:#e9c27ab3;background:#e9c27a24}.gear-item.on small{color:var(--gold)}.gear-item.locked{opacity:.5;cursor:default}.gear-item.locked svg{filter:grayscale(.8)}.journal .tabs button{font-size:12px}.pose-row .seg button,.journal .tabs button{white-space:nowrap;font-size:12px}.pose-row .ghost.small{padding:0 12px;white-space:nowrap}.worn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.worn span,.worn small{overflow:hidden;text-overflow:ellipsis}
