:root{--ui-bg: #090D12;--ui-surface: #0E141C;--ui-surface-raised: #131B25;--ui-hover: #192331;--ui-veil: rgba(9, 13, 18, .85);--ui-veil-strong: rgba(14, 20, 28, .975);--ui-sunken: #070A0E;--ui-sky: #102B3B;--ui-sky-high: #173E50;--ui-land: #173B32;--ui-land-high: #245344;--ui-path: #6B6250;--ui-border: rgba(255, 255, 255, .07);--ui-border-strong: rgba(255, 255, 255, .14);--ui-focus: #3B82F6;--ui-primary: #3B82F6;--ui-primary-strong: #2563EB;--ui-primary-soft: rgba(59, 130, 246, .1);--ui-primary-soft-2: rgba(59, 130, 246, .18);--ui-accent-2: #38BDF8;--ui-text: #F8FAFC;--ui-text-muted: #94A3B8;--ui-text-faint: #64748B;--ui-hp: #EF4444;--ui-hp-lag: rgba(252, 165, 165, .6);--ui-mp: #3B82F6;--ui-mp-lag: rgba(147, 197, 253, .55);--ui-fp: #22C55E;--ui-fp-lag: rgba(134, 239, 172, .55);--ui-exp: #8B5CF6;--ui-cast: #38BDF8;--ui-good: #4ADE80;--ui-bad: #F87171;--ui-warn: #FBBF24;--ui-rare: #A78BFA;--ui-coin: #FBBF24;--plate-player: #38BDF8;--plate-npc: #FBBF24;--plate-monster: #F8FAFC;--plate-monster-aggro: #ff3b3b;--plate-loot: #4ADE80;--plate-target: #FFFFFF;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--hud-edge: 12px;--map-size: clamp(170px, 12vw, 220px);--shadow-panel: 0 8px 24px rgba(0, 0, 0, .2);--shadow-popup: 0 16px 40px rgba(0, 0, 0, .45), 0 0 0 1px rgba(255, 255, 255, .04);--font-ui: -apple-system, "SF Pro Text", "Inter", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--text-xs: 10px;--text-sm: 11px;--text-md: 13px;--text-lg: 15px;--motion-fast: .1s;--motion: .16s;--motion-slow: .22s;--ease: cubic-bezier(.2, .6, .2, 1);--ui-scale: 1}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--ui-bg);color:var(--ui-text);font-family:var(--font-ui);font-size:var(--text-md);overflow:hidden;user-select:none;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit}input{font-family:var(--font-ui)}#app{position:relative;width:100%;height:100%;overflow:hidden}#viewport{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#world-layer{position:absolute;inset:0;z-index:1;pointer-events:none}#game-ui{position:absolute;left:0;top:0;pointer-events:none;z-index:2;zoom:var(--ui-scale);width:100%;height:100%}#hud-layer,#window-layer,#drag-layer,#tooltip-layer,#notification-layer,#modal-layer{position:absolute;inset:0;pointer-events:none}#hud-layer{z-index:1}#window-layer{z-index:2}#notification-layer{z-index:3}#drag-layer{z-index:4}#tooltip-layer{z-index:5}#modal-layer{z-index:6}#game-ui .window,#game-ui .hud-panel,#game-ui .ctx-menu,#game-ui .modal-scrim,#game-ui .rail-button,#game-ui .map-button{pointer-events:auto}#world-layer .nameplates{pointer-events:none}.hidden{display:none!important}.ui-title{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text)}.ui-section-title{font-size:var(--text-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-muted)}.ui-body{font-size:var(--text-md);color:var(--ui-text)}.ui-small{font-size:var(--text-sm);color:var(--ui-text)}.ui-value{font-size:var(--text-md);font-weight:600;color:var(--ui-text);font-variant-numeric:tabular-nums}.ui-muted{font-size:var(--text-sm);color:var(--ui-text-muted)}.ui-tooltip-title{font-size:var(--text-md);font-weight:600;color:var(--ui-text)}.ui-tooltip-stat{font-size:var(--text-sm);color:var(--ui-good)}#loading{position:absolute;inset:0;z-index:10;display:grid;place-items:center;background:var(--ui-bg)}#loading.hidden{display:none!important}.loading-inner{text-align:center}.loading-inner:before{content:"";display:block;width:22px;height:22px;margin:0 auto var(--space-4);border:2px solid rgba(255,255,255,.1);border-top-color:var(--ui-primary);border-radius:var(--radius-full);animation:loading-spin .8s linear infinite}@keyframes loading-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.loading-inner:before{animation:none}}.loading-inner .what{font-size:var(--text-md);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text)}.loading-inner .detail{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--ui-text-muted)}#loading.fading{opacity:0;transition:opacity .22s var(--ease);pointer-events:none}.loading-inner{width:min(460px,84vw);text-align:left}.load-world{font-size:22px;font-weight:600;letter-spacing:.04em;text-align:center;color:var(--ui-text)}.load-character{margin-top:2px;font-size:var(--text-sm);text-align:center;color:var(--ui-text-muted)}.load-steps{margin:var(--space-4) 0 var(--space-3);padding:0;list-style:none;display:flex;flex-direction:column;gap:3px}.load-step{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ui-text-faint)}.load-mark{width:12px;height:12px;flex:none;border:1px solid var(--ui-border-strong);border-radius:var(--radius-full)}.load-step.active{color:var(--ui-text)}.load-step.active .load-mark{border-color:var(--ui-primary);box-shadow:0 0 0 3px var(--ui-primary-soft)}.load-step.done{color:var(--ui-text-muted)}.load-step.done .load-mark{border-color:var(--ui-good);background:linear-gradient(45deg,transparent 44%,var(--ui-good) 44%,var(--ui-good) 56%,transparent 56%),linear-gradient(-45deg,transparent 44%,var(--ui-good) 44%,var(--ui-good) 56%,transparent 56%)}.load-bar.hidden{display:none}.load-bar{height:4px;border-radius:var(--radius-full);background:var(--ui-sunken);overflow:hidden}.load-fill{height:100%;width:0;border-radius:var(--radius-full);background:var(--ui-primary);transition:width .2s var(--ease)}.load-pct{margin-top:var(--space-1);font-size:var(--text-xs);font-variant-numeric:tabular-nums;text-align:right;color:var(--ui-text-faint)}.load-detail{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--ui-text-muted)}.load-tip{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--ui-border);font-size:var(--text-sm);line-height:1.5;color:var(--ui-text-muted)}.load-tip:empty{display:none}#perf{position:absolute;right:12px;bottom:12px;z-index:9;max-width:620px;padding:8px 10px;background:#070a0ee0;border:1px solid var(--ui-border);border-radius:var(--radius-sm);color:var(--ui-text-muted);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;line-height:1.45;white-space:pre;pointer-events:none}.window{position:absolute;min-width:120px;background:var(--ui-veil-strong);border:1px solid var(--ui-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);color:var(--ui-text);overflow:hidden}.window.focused,.window.dragging{border-color:var(--ui-border-strong)}.window.dragging{box-shadow:var(--shadow-popup)}.window.hidden{display:none}.titlebar{position:relative;height:40px;display:flex;align-items:center;justify-content:flex-start;padding:0 var(--space-4);border-bottom:1px solid var(--ui-border);cursor:grab;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text)}.titlebar.dragging{cursor:grabbing}.titlebar:empty{display:none}.titlebar .close{position:absolute;right:var(--space-2);top:50%;transform:translateY(-50%);width:28px;height:28px;display:grid;place-items:center;padding:0;background:none;border:0;border-radius:var(--radius-sm);color:var(--ui-text-muted);font-size:14px;line-height:1;letter-spacing:0;text-transform:none;cursor:pointer;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.titlebar .close:hover{background:var(--ui-hover);color:var(--ui-text)}.titlebar .close:active{background:var(--ui-surface)}.window-body{position:relative;z-index:1;padding:0}.tabs{position:relative;z-index:2;display:flex;gap:var(--space-1);padding:0 var(--space-2);border-bottom:1px solid var(--ui-border)}.tab{height:32px;min-width:74px;padding:0 var(--space-3);background:none;border:0;border-bottom:2px solid transparent;color:var(--ui-text-muted);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:color var(--motion-fast) var(--ease)}.tab:hover{color:var(--ui-text)}.tab.active{color:var(--ui-text);border-bottom-color:var(--ui-primary)}.tab.compact{min-width:46px;padding:0 var(--space-2)}.win-section{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-3) 0 var(--space-2);font-size:var(--text-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-muted)}.win-section:after{content:"";flex:1;height:1px;background:var(--ui-border)}.win-footer{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:#0000002e;border-top:1px solid var(--ui-border)}.modal-scrim{position:absolute;inset:0;display:grid;place-items:center;background:#090d1299}.modal-scrim.hidden{display:none}.modal-scrim .window{position:relative;left:auto;top:auto;transform:none;width:380px;box-shadow:var(--shadow-popup)}.modal-text{padding:var(--space-4);font-size:var(--text-md);line-height:1.5;color:var(--ui-text)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-2);padding:0 var(--space-4) var(--space-4)}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:0 var(--space-4);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-md);color:var(--ui-text);font-size:var(--text-md);font-weight:500;cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.btn:hover{background:var(--ui-hover);border-color:var(--ui-border-strong)}.btn:active{background:var(--ui-surface)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--ui-primary);border-color:transparent;color:var(--ui-text)}.btn.primary:hover{background:var(--ui-primary-strong);border-color:transparent}.btn.primary:active{background:var(--ui-primary-strong)}.btn.danger{color:var(--ui-bad)}.btn.danger:hover{border-color:var(--ui-bad);background:var(--ui-surface-raised)}.btn.small{min-height:26px;padding:0 var(--space-3);font-size:var(--text-sm)}.rail-button,.map-button{width:32px;height:32px;display:grid;place-items:center;padding:0;background:var(--ui-veil);border:1px solid var(--ui-border-strong);border-radius:var(--radius-full);color:var(--ui-text-muted);cursor:pointer;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.rail-button:hover,.map-button:hover{background:var(--ui-hover);color:var(--ui-text)}.rail-button:active,.map-button:active{background:var(--ui-surface)}.rail-button svg,.map-button svg{width:17px;height:17px;fill:currentColor}.islot{position:relative;width:52px;height:52px;display:grid;place-items:center;background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}.islot.empty{cursor:default}.islot:hover{border-color:var(--ui-border-strong)}.islot:not(.empty):hover{border-color:var(--ui-border-strong);background:var(--ui-hover)}.islot.selected{border-color:var(--ui-primary)}.islot.locked{background:repeating-linear-gradient(45deg,var(--ui-sunken) 0 6px,rgba(255,255,255,.03) 6px 12px);cursor:not-allowed}.islot.locked:hover{border-color:var(--ui-border)}.islot.unusable:not(.empty){opacity:.42;border-color:var(--ui-border);cursor:not-allowed}.islot.unusable:not(.empty):hover{opacity:.62;background:var(--ui-sunken);border-color:var(--ui-border)}.islot.unusable:not(.empty):after{content:"";position:absolute;inset:auto 3px 3px auto;width:8px;height:8px;border-radius:50%;background:var(--ui-bad);opacity:.9}.islot .icon-img,.islot .icon-wrap{width:44px;height:44px;object-fit:contain;image-rendering:auto;pointer-events:none}.icon-img{display:block;width:100%;height:100%;object-fit:contain}.icon-fallback{font-size:15px;font-weight:600;color:var(--ui-text-faint)}.islot-count{position:absolute;right:3px;bottom:2px;font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ui-text);text-shadow:0 1px 2px rgba(0,0,0,.8);pointer-events:none}.islot-refine{position:absolute;left:3px;top:2px;font-size:var(--text-xs);font-weight:600;color:var(--ui-warn);text-shadow:0 1px 2px rgba(0,0,0,.8);pointer-events:none}.islot-worn{position:absolute;left:3px;bottom:2px;font-size:var(--text-xs);font-weight:600;color:var(--ui-accent-2);text-shadow:0 1px 2px rgba(0,0,0,.8);pointer-events:none}.islot.worn{border-color:#38bdf873}.slot-glyph{width:26px;height:26px;color:#ffffff1f;pointer-events:none}.islot:hover .slot-glyph{color:#ffffff38}.islot.dragging{opacity:.32}.islot.valid-target{border-color:var(--ui-primary);background:var(--ui-primary-soft)}.islot.invalid-target{opacity:.38}.islot.valid-target.drop-hover{border-color:var(--ui-primary);background:var(--ui-primary-soft-2)}.islot.invalid-target.drop-hover{border-color:var(--ui-bad);opacity:.6}.drag-ghost{position:fixed;z-index:1;width:52px;height:52px;margin:-26px 0 0 -26px;opacity:.9;border-color:var(--ui-primary);box-shadow:var(--shadow-popup);pointer-events:none}.islot .cd{position:absolute;inset:0;border-radius:inherit;background:conic-gradient(rgba(9,13,18,.75) var(--cd, 0%),rgba(0,0,0,0) 0);pointer-events:none}.islot.disabled .icon-img,.islot.disabled .icon-wrap{filter:grayscale(.85) brightness(.55)}.islot.no-resource:after{content:"";position:absolute;inset:0;border-radius:inherit;background:#3b82f629;pointer-events:none}.islot.out-of-range:after{content:"";position:absolute;inset:0;border-radius:inherit;background:#ef444429;pointer-events:none}.rpgbar{position:relative;height:12px;min-width:40px}.bar-track{position:absolute;inset:0;overflow:hidden;background:var(--ui-sunken);border:1px solid rgba(255,255,255,.05);border-radius:var(--radius-full)}.bar-lag,.bar-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:inherit}.bar-lag{transition:width var(--motion-slow) var(--ease) .12s}.bar-fill{transition:width var(--motion) var(--ease)}.bar-gloss{display:none}.rpgbar.hp .bar-fill{background:var(--ui-hp)}.rpgbar.hp .bar-lag{background:var(--ui-hp-lag)}.rpgbar.mp .bar-fill{background:var(--ui-mp)}.rpgbar.mp .bar-lag{background:var(--ui-mp-lag)}.rpgbar.fp .bar-fill{background:var(--ui-fp)}.rpgbar.fp .bar-lag{background:var(--ui-fp-lag)}.rpgbar.exp .bar-fill{background:var(--ui-exp)}.rpgbar.exp .bar-lag{background:var(--ui-mp-lag)}.rpgbar.cast .bar-fill{background:var(--ui-cast)}.rpgbar.cast .bar-lag{background:var(--ui-mp-lag)}.rpgbar>b,.rpgbar>em{position:absolute;top:50%;transform:translateY(-50%);z-index:2;font-style:normal;white-space:nowrap;line-height:1;font-size:var(--text-xs);color:var(--ui-text-muted)}.rpgbar>em{left:var(--space-2);font-weight:500;letter-spacing:.04em;text-transform:uppercase}.rpgbar>b{right:var(--space-2);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ui-text)}.rpgbar>em:empty,.rpgbar>b:empty{display:none}.rpgbar.mirror .bar-lag,.rpgbar.mirror .bar-fill{left:auto;right:0}.rpgbar.mirror>em{left:auto;right:var(--space-2)}.rpgbar.mirror>b{right:auto;left:var(--space-2)}.rpgbar.big{height:14px}.rpgbar.slim{height:7px}.rpgbar.thin{height:5px}.rpgbar.slim>em,.rpgbar.slim>b,.rpgbar.thin>em,.rpgbar.thin>b{display:none}.rpgbar.hair{height:3px;overflow:visible}.rpgbar.hair>em{display:none}.rpgbar.hair>b{display:block;top:calc(100% + 3px);right:0;transform:none;font-size:var(--text-xs);color:var(--ui-text-faint)}.rpgbar.low .bar-fill{animation:bar-critical 1.15s ease-in-out infinite}@keyframes bar-critical{0%,to{opacity:1}50%{opacity:.55}}@media(prefers-reduced-motion:reduce){.rpgbar.low .bar-fill{animation:none}.bar-lag,.bar-fill{transition:none}}.castbar{display:flex;align-items:center;gap:var(--space-2)}.castbar.hidden{display:none}.castbar .cast-icon{width:30px;height:30px;display:grid;place-items:center;background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-sm)}.castbar .cast-icon .icon-img,.castbar .cast-icon .icon-wrap{width:26px;height:26px}.castbar .rpgbar{flex:1}.castbar .cast-name{position:relative;z-index:2;font-size:var(--text-sm);font-weight:600;color:var(--ui-text)}.castbar .cast-time{min-width:56px;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ui-text-muted);text-align:right}.buff-row{display:flex;gap:var(--space-1)}.status-icon{position:relative;width:26px;height:26px;display:grid;place-items:center;background:var(--ui-surface-raised);border:1px solid var(--ui-good);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--ui-text)}.status-icon.debuff{border-color:var(--ui-bad)}.status-icon>img,.status-icon>.icon-fallback{width:100%;height:100%;object-fit:cover;border-radius:calc(var(--radius-sm) - 1px)}.status-sweep{position:absolute;inset:0;pointer-events:none;border-radius:calc(var(--radius-sm) - 1px);background:conic-gradient(rgba(0,0,0,.62) var(--status-elapsed, 0deg),transparent var(--status-elapsed, 0deg))}.status-icon.debuff .status-sweep{background:conic-gradient(rgba(60,0,0,.62) var(--status-elapsed, 0deg),transparent var(--status-elapsed, 0deg))}.status-stacks.hidden{display:none}.status-stacks{position:absolute;right:1px;bottom:0;font-size:var(--text-xs);font-weight:600;color:var(--ui-text);text-shadow:0 1px 2px rgba(0,0,0,.8)}.status-time{position:absolute;left:0;right:0;bottom:-12px;text-align:center;font-size:var(--text-xs);color:var(--ui-text-muted)}.portrait-mount{position:relative;flex:none;width:52px;height:60px;overflow:visible}.portrait-frame{position:relative;width:100%;height:100%;border-radius:var(--radius-md);overflow:hidden}.portrait-frame:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px var(--ui-border-strong),inset 0 0 0 1px var(--ui-bg),0 0 0 999px var(--ui-bg);pointer-events:none}.portrait{position:relative;width:100%;height:100%;overflow:hidden;border-radius:inherit;display:grid;place-items:center;background:var(--ui-sunken)}.portrait.live{background:none}.portrait.live .initial,.portrait.live .portrait-render{display:none}.portrait img,.portrait .portrait-render{width:100%;height:100%;object-fit:cover}.portrait .initial{font-size:18px;font-weight:600;color:var(--ui-text-faint)}.portrait-mount.hostile .portrait-frame:after{box-shadow:inset 0 0 0 1px var(--ui-bad),inset 0 0 0 1px var(--ui-bg),0 0 0 999px var(--ui-bg)}.portrait-mount.faded{opacity:.45;filter:grayscale(.7)}.portrait-mount .badge{position:absolute;z-index:2;min-width:22px;height:18px;padding:0 5px;display:grid;place-items:center;background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ui-text)}.portrait-mount .badge.lv{left:-6px;bottom:-6px}.portrait-mount .badge.mark{right:-6px;top:-6px;min-width:18px;padding:0 3px;color:var(--ui-text-muted)}.portrait-mount .badge svg{width:11px;height:11px;fill:currentColor}.portrait-mount:not(.hostile) .badge.rank{display:none}.portrait-mount .badge.rank{left:50%;bottom:-8px;transform:translate(-50%);min-width:18px;height:16px;padding:0 2px;border-color:var(--ui-bad);color:var(--ui-bad)}.name-plate{position:absolute;left:50%;top:calc(100% - 6px);transform:translate(-50%);min-width:calc(100% + 16px);max-width:calc(100% + 54px);padding:2px 10px 3px;display:flex;flex-direction:column;align-items:center;gap:1px;background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-sm);pointer-events:none}.name-plate .pname{font-size:var(--text-sm);font-weight:600;line-height:1.2;white-space:nowrap;color:var(--ui-text)}.name-plate .plv{font-size:var(--text-xs);line-height:1.2;color:var(--ui-text-muted)}.conn-dot{position:absolute;right:-5px;bottom:-5px;z-index:3;width:9px;height:9px;border-radius:var(--radius-full);background:var(--ui-good);border:1px solid var(--ui-bg);pointer-events:auto}.conn-dot.bad{background:var(--ui-bad)}.tooltip{position:fixed;z-index:1;min-width:200px;max-width:280px;padding:var(--space-3);background:var(--ui-surface-raised);border:1px solid var(--ui-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-popup);color:var(--ui-text);font-size:var(--text-sm);line-height:1.5;pointer-events:none;animation:tip-in var(--motion-fast) var(--ease)}@keyframes tip-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.tooltip{animation:none}}.tooltip h3{margin:0 0 var(--space-2);font-size:var(--text-md);font-weight:600;color:var(--ui-text)}.tooltip h3.rare{color:var(--ui-accent-2)}.tooltip h3.unique{color:var(--ui-rare)}.tooltip h3.legendary{color:var(--ui-warn)}.tooltip p{margin:2px 0;color:var(--ui-text)}.tooltip .tip-kind{display:flex;justify-content:space-between;gap:var(--space-3);margin:0 0 6px;color:var(--ui-text-muted)}.tooltip .tip-row{display:flex;justify-content:space-between;gap:var(--space-3)}.tooltip .tip-row .k{color:var(--ui-text-muted)}.tooltip .tip-row .v{color:var(--ui-text);font-weight:600;font-variant-numeric:tabular-nums}.tooltip .tip-row.req .k,.tooltip .tip-row.req .v{color:var(--ui-bad)}.tooltip .tip-row .v .req-detail{margin-left:var(--space-2);font-weight:400;color:var(--ui-text-muted)}.tooltip .tip-row .v .req-mark{margin-left:var(--space-2);font-weight:700}.tooltip .tip-row .v .req-mark.ok{color:var(--ui-good)}.tooltip .tip-row .v .req-mark.no{color:var(--ui-bad)}.tooltip .tip-stats{margin:var(--space-2) 0 0}.tooltip .tip-stat{display:flex;gap:6px;color:var(--ui-good)}.tooltip .tip-stat .v{order:-1;font-weight:600}.tooltip .tip-stat.down{color:var(--ui-bad)}.tooltip .price{margin-top:var(--space-2);color:var(--ui-coin)}.tooltip .muted,.tooltip .flavour{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--ui-border);color:var(--ui-text-muted);font-style:italic}*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.12) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#fff3}::-webkit-scrollbar-corner{background:transparent}#notification-layer .notice{position:absolute;left:50%;top:27%;transform:translate(-50%);width:min(720px,62vw);display:flex;flex-direction:column;align-items:center;text-align:center}#notification-layer .notice.hidden{display:none}.notice-rule{width:64px;height:2px;margin:0 auto;border-radius:var(--radius-full);background:#ffffff29}.notice-rule i{display:none}.notice-text{margin:var(--space-3) 0;font-size:28px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ui-text);text-shadow:0 1px 2px rgba(0,0,0,.8)}.notice-detail{margin:0 0 var(--space-3);font-size:var(--text-lg);color:var(--ui-text-muted);text-shadow:0 1px 2px rgba(0,0,0,.8)}.notice.level-up .notice-text{order:2;font-size:40px}.notice.level-up .notice-detail{order:1;margin:var(--space-3) 0 2px;font-size:var(--text-lg);color:var(--ui-text)}.notice-gains{order:3;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2);margin:0 0 var(--space-3)}.notice-gains span{padding:2px var(--space-3);border:1px solid var(--ui-border);border-radius:var(--radius-sm);background:var(--ui-veil);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ui-text);text-shadow:0 1px 2px rgba(0,0,0,.8)}.notice.level-up{animation:notice-rise .22s cubic-bezier(.2,.9,.3,1)}@keyframes notice-rise{0%{opacity:0;transform:translate(-50%,8px) scale(.97)}to{opacity:1;transform:translate(-50%) scale(1)}}@media(prefers-reduced-motion:reduce){.notice.level-up{animation:none}}.notice.level-up .notice-rule{background:var(--ui-exp)}.notice.level-up .notice-rule:first-child{order:0}.notice.level-up .notice-rule:last-child{order:3}.notice.good .notice-text{color:var(--ui-good)}.notice.bad .notice-text{color:var(--ui-bad)}.notice.item .notice-text{color:var(--ui-rare)}#notification-layer .notice{animation:notice-in .26s var(--ease)}@keyframes notice-in{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}#toast-stack{position:absolute;left:50%;bottom:300px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.toast{padding:6px var(--space-3);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-left:2px solid var(--ui-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-popup);color:var(--ui-text);font-size:var(--text-md);animation:toast-in .18s var(--ease)}.toast.good{border-left-color:var(--ui-good)}.toast.bad{border-left-color:var(--ui-bad)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){#notification-layer .notice,.toast{animation:none}}.ctx-menu{position:absolute;z-index:1;min-width:168px;padding:var(--space-1) 0;background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-md);box-shadow:var(--shadow-popup);overflow:hidden}.ctx-menu.hidden{display:none}.ctx-title{padding:6px var(--space-3);margin-bottom:3px;border-bottom:1px solid var(--ui-border);font-size:var(--text-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctx-item{display:flex;align-items:center;width:100%;height:32px;padding:0 var(--space-3);background:none;border:0;text-align:left;color:var(--ui-text);font-size:var(--text-md);cursor:pointer;transition:background var(--motion-fast) var(--ease)}.ctx-item:hover{background:var(--ui-hover)}.ctx-item:disabled{color:var(--ui-text-faint);cursor:default}.ctx-item:disabled:hover{background:none}#shop-debug{position:fixed;inset:0;z-index:9000;pointer-events:none}#shop-debug.hidden{display:none}#shop-debug .shop-debug-npc,#shop-debug .shop-debug-shop{position:fixed;border:2px solid;border-radius:2px}#shop-debug .shop-debug-npc{border-color:var(--ui-good);box-shadow:0 0 0 1px #0009}#shop-debug .shop-debug-shop{border-color:var(--ui-primary);box-shadow:0 0 0 1px #0009}#shop-debug .shop-debug-label{position:fixed;left:12px;bottom:12px;margin:0;padding:var(--space-2) var(--space-3);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:var(--text-xs);line-height:1.5;color:var(--ui-text);background:#070a0ee0;border:1px solid var(--ui-border);border-radius:var(--radius-sm);white-space:pre}.update-scrim{position:absolute;inset:auto 16px 16px auto;display:flex;pointer-events:auto;z-index:1}.update-scrim.hidden{display:none}.update-scrim.blocking{position:fixed;inset:0;align-items:center;justify-content:center;background:#090d12c7;backdrop-filter:blur(2px)}.update-window{min-width:280px;max-width:420px;background:var(--ui-veil-strong);border:1px solid var(--ui-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-window, 0 12px 32px rgba(0, 0, 0, .45));overflow:hidden}.update-bar{padding:10px 14px;font-weight:600;font-size:13px;letter-spacing:.02em;background:var(--ui-surface-raised);border-bottom:1px solid var(--ui-border)}.update-body{padding:14px}.update-message{margin:0 0 10px;font-size:13px;line-height:1.45}.update-detail{margin:0 0 12px;font-size:11px;opacity:.6;font-family:ui-monospace,monospace;word-break:break-all}.update-detail.hidden{display:none}.update-actions{display:flex;gap:8px;justify-content:flex-end}.update-actions button{padding:6px 14px;font:inherit;font-size:12px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid var(--ui-border-strong);background:var(--ui-surface-raised);color:var(--ui-text)}.update-actions .update-primary{border-color:var(--ui-primary);background:var(--ui-primary);color:var(--ui-text);font-weight:600}.update-actions button:hover{filter:brightness(1.15)}.hud-panel{position:absolute;background:none;border:0;border-radius:0;box-shadow:none;overflow:visible}#player{left:var(--hud-edge);top:var(--hud-edge);width:312px}#player .unit{display:flex;align-items:flex-start;gap:var(--space-2)}#player .portrait-mount{width:68px;height:76px;margin-top:2px}#player .unit-bars{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:var(--space-2) var(--space-3) var(--space-3);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-lg)}#player .unit-bars>.rpgbar{width:100%}#player .rpgbar>b{color:var(--ui-text-muted)}.bar-link{display:none}#player .name-plate{position:static;transform:none;min-width:0;max-width:100%;padding:0 0 1px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:none;border:0;box-shadow:none;clip-path:none;pointer-events:none}#player .pname{font-size:var(--text-md);font-weight:600;line-height:1.1;color:var(--ui-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}#player .plv{font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;line-height:1;color:var(--ui-text-muted)}#statusicons{margin:var(--space-2) 0 0 78px}#statusicons:empty{margin:0}.castbar{padding:var(--space-1) var(--space-2);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-md)}.castbar .cast-icon{width:24px;height:24px;flex:none;overflow:hidden}.castbar .cast-icon .icon-img,.castbar .cast-icon .icon-wrap{width:20px;height:20px}.castbar .rpgbar{height:14px}.castbar .rpgbar>em,.castbar .rpgbar>b{display:none}.castbar .cast-name{position:absolute;z-index:2;left:var(--space-2);top:50%;transform:translateY(-50%);line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.8);white-space:nowrap}#playercast{position:absolute;left:50%;bottom:218px;transform:translate(-50%);width:360px}.status-overlay.hud-panel{width:max-content;min-width:96px}.status-overlay .window-body{display:flex;flex-direction:column;gap:2px;padding:5px 8px;border:1px solid var(--ui-border);border-radius:var(--radius-md);background:var(--ui-veil);color:var(--ui-text-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;line-height:1.25}.status-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.status-label{color:var(--ui-text-faint)}.status-value{color:var(--ui-text);text-align:right}.status-overlay [data-band=good]{color:var(--ui-good)}.status-overlay [data-band=ok]{color:var(--ui-text)}.status-overlay [data-band=warn]{color:var(--ui-warn)}.status-overlay [data-band=bad]{color:var(--ui-bad)}.status-overlay.hud-panel{cursor:grab}.status-overlay.hud-panel.dragging{cursor:grabbing}#target{left:50%;top:calc(var(--hud-edge) + 4px);width:336px;transform:translate(-50%)}#target .unit{display:flex;align-items:flex-start;gap:var(--space-2);cursor:pointer}#target .portrait-mount{width:42px;height:48px;order:2;margin-top:2px}#target .badge.rank{display:none}#target .unit-bars{flex:1;min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:var(--space-2) var(--space-3);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-lg)}#target .unit-bars>.rpgbar{width:100%}#target .rpgbar>em{display:none}.target-name{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--text-md);font-weight:600;line-height:1.2;color:var(--ui-text);white-space:nowrap;overflow:hidden}.target-name .lv{order:2;margin-left:auto;flex:none;font-size:var(--text-sm);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ui-text-muted)}.target-name .lv:empty{display:none}.target-foot{display:flex;align-items:center;gap:var(--space-2);min-height:14px}.target-rank{padding:1px 6px;background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-full);font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;line-height:1.3;color:var(--ui-text-muted)}.target-rank.empty{display:none}.target-rank.elite{color:var(--ui-warn)}.target-rank.boss{color:var(--ui-bad)}.target-dist{font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ui-text-faint)}#target.npc .unit-bars{gap:2px}#target.boss{width:480px}#target.boss .unit-bars{padding:var(--space-3) var(--space-4)}#target.boss .portrait-mount{display:none}#target.boss .target-name{justify-content:center;font-size:var(--text-lg);font-weight:700;letter-spacing:.02em}#target.boss .target-name .lv{margin-left:var(--space-2)}#target.boss .rpgbar.hp{height:14px}#target.boss .target-foot{justify-content:center}#targetcast{margin-top:var(--space-2)}#party{left:var(--hud-edge);top:150px;width:264px;display:flex;flex-direction:column;gap:var(--space-2)}.party-member{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--motion-fast) var(--ease)}.party-member:hover{border-color:var(--ui-border-strong)}.party-member .portrait-mount{width:36px;height:40px}.party-member .unit-bars{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.party-member .unit-bars>.rpgbar{width:100%}.party-member .member-name{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;color:var(--ui-text)}.party-member .member-state{font-size:var(--text-xs);font-weight:400;font-variant-numeric:tabular-nums;color:var(--ui-text-faint)}.party-member.leader .member-name{color:var(--ui-text)}.party-member.away,.party-member.dead{opacity:.45;filter:grayscale(.7)}#bottomhud{left:50%;bottom:var(--space-2);transform:translate(-50%);width:clamp(500px,34vw,580px)}.vitals-row{position:relative;display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.vitals-row .rpgbar{flex:1;min-width:0}.vitals-row .rpgbar>em{display:none}.vitals-row .rpgbar>b{color:var(--ui-text-muted)}#bottomhud .portrait-mount{width:66px;height:66px;flex:none;z-index:2}#bottomhud .portrait-mount .badge.lv{left:50%;top:auto;bottom:-6px;transform:translate(-50%)}.vitals-fp{display:flex;justify-content:center;margin-top:4px}.vitals-fp .rpgbar{width:160px}.vitals-fp .rpgbar>em,.vitals-fp .rpgbar>b{display:none}.hotbar{display:grid;grid-template-columns:repeat(10,1fr);gap:var(--space-1);margin-top:var(--space-2)}.hotbar .islot{width:auto;height:auto;aspect-ratio:1;background:var(--ui-veil)}.hotbar .islot:not(.empty){background:var(--ui-sunken)}.hotbar .islot .icon-img,.hotbar .islot .icon-wrap{width:76%;height:76%}.hotbar .islot small{position:absolute;left:4px;top:3px;z-index:1;font-size:9px;font-weight:600;line-height:1;color:var(--ui-text-faint);text-shadow:0 1px 2px rgba(0,0,0,.8);pointer-events:none}.hotbar .islot:hover small{color:var(--ui-text-muted)}.exp-row{margin-top:var(--space-2)}.exp-row .rpgbar{width:100%}.exp-row .rpgbar>b,.exp-row .rpgbar>em{display:none}#chat{left:var(--hud-edge);bottom:var(--hud-edge);width:clamp(360px,26vw,496px);background:color-mix(in srgb,var(--ui-veil) 88%,transparent);border:1px solid var(--ui-border);border-radius:var(--radius-lg);transition:background var(--motion) var(--ease),border-color var(--motion) var(--ease)}#chat:hover,#chat:focus-within{background:var(--ui-veil-strong);border-color:var(--ui-border-strong)}#chat .tabs{padding:0 var(--space-2)}#chat .tab{height:28px;min-width:0;padding:0 var(--space-3)}#chat .window-body{z-index:3}.chat-log{height:176px;overflow-y:auto;padding:var(--space-2) var(--space-3);font-size:12px;line-height:1.55;color:var(--ui-text)}.chat-log .line{margin:1px 0;word-break:break-word}.chat-log .from{color:var(--ui-text-muted);font-weight:600}.chat-log .from.party{color:var(--ui-accent-2)}.chat-log .from.whisper{color:var(--ui-rare)}.chat-log .system{color:var(--ui-text-muted)}.chat-log .party{color:var(--ui-accent-2)}.chat-log .whisper{color:var(--ui-rare)}.chat-log .good{color:var(--ui-good)}.chat-log .bad{color:var(--ui-bad)}.chat-input-row{position:relative;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-top:1px solid var(--ui-border)}.chat-input-row input{flex:1;min-width:0;height:28px;padding:0 var(--space-2);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-sm);color:var(--ui-text);font-size:var(--text-sm);outline:none;transition:border-color var(--motion-fast) var(--ease)}.chat-input-row input::placeholder{color:var(--ui-text-faint)}.chat-input-row input:focus{border-color:var(--ui-focus)}.chat-rail{position:absolute;left:calc(100% + var(--space-2));bottom:44px;display:flex;flex-direction:column;gap:var(--space-1)}.chat-rail .rail-button{width:28px;height:28px}.chat-rail .rail-button svg{width:13px;height:13px}.start-button{flex:none;min-width:76px;height:32px;padding:0 var(--space-3);background:var(--ui-veil);border:1px solid var(--ui-border-strong);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-muted);cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.start-button:hover{background:var(--ui-hover);color:var(--ui-text)}.start-button:active{background:var(--ui-surface)}.start-button.open{border-color:var(--ui-primary);color:var(--ui-text)}.start-menu{position:absolute;left:0;bottom:calc(100% + var(--space-2));z-index:3;width:240px;padding:var(--space-1);background:var(--ui-surface-raised);border:1px solid var(--ui-border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-popup);transform-origin:12% 100%;animation:start-menu-in var(--motion) var(--ease);pointer-events:auto}.start-menu.hidden{display:none}@keyframes start-menu-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.start-menu{animation:none}}.start-menu .start-head{display:none}.start-menu .start-body{display:flex;flex-direction:column}.start-item{width:100%;height:40px;display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-3);background:none;border:0;border-radius:var(--radius-md);font-size:var(--text-md);color:var(--ui-text);text-align:left;cursor:pointer;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.start-item:hover:not(:disabled){background:var(--ui-primary-soft);color:var(--ui-text)}.start-item:active:not(:disabled){background:var(--ui-primary-soft-2)}.start-item:disabled{opacity:.4;cursor:default}.start-item .ui-icon{width:16px;height:16px;flex:none;fill:currentColor;color:var(--ui-text-muted);transition:color var(--motion-fast) var(--ease)}.start-item:hover:not(:disabled) .ui-icon{color:var(--ui-text)}.start-item .start-key{margin-left:auto;font-size:var(--text-sm);letter-spacing:0;color:var(--ui-text-faint)}.start-menu .start-sep{height:1px;margin:var(--space-1) var(--space-2);background:var(--ui-border)}.start-item.leave,.start-item.leave .ui-icon{color:var(--ui-bad)}.start-item.leave:hover:not(:disabled){background:color-mix(in srgb,var(--ui-bad) 10%,transparent);color:var(--ui-bad)}.start-item.leave:hover:not(:disabled) .ui-icon{color:var(--ui-bad)}.pickup-feed{position:absolute;z-index:3;display:flex;flex-direction:column;gap:4px;pointer-events:none}.pickup-feed.at-left{left:16px;top:50%;transform:translateY(-50%)}.pickup-feed.at-right{right:16px;top:50%;transform:translateY(-50%);align-items:flex-end}.pickup-feed.at-top-left{left:16px;top:76px}.pickup-feed.at-top-right{right:16px;top:76px;align-items:flex-end}.pickup-feed.at-bottom-left{left:16px;bottom:148px}.pickup-feed.at-bottom-right{right:16px;bottom:148px;align-items:flex-end}.pickup-row{display:flex;align-items:center;gap:8px;max-width:260px;padding:4px 10px 4px 4px;border:1px solid var(--ui-border);border-radius:999px;background:var(--ui-veil-strong);box-shadow:0 2px 8px #00000059;animation:pickup-in .18s ease-out}.pickup-row img,.pickup-row .slot-icon{width:26px;height:26px;flex:none;border-radius:50%}.pickup-name{min-width:0;overflow:hidden;color:var(--ui-text);font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap}.pickup-count{flex:none;color:var(--ui-coin);font-size:var(--text-md);font-weight:700;font-variant-numeric:tabular-nums}@keyframes pickup-in{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.pickup-feed.at-right .pickup-row,.pickup-feed.at-top-right .pickup-row,.pickup-feed.at-bottom-right .pickup-row{flex-direction:row-reverse;padding:4px 4px 4px 10px;animation-name:pickup-in-right}@keyframes pickup-in-right{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@media(prefers-reduced-motion:reduce){.pickup-row{animation:none}}#map{right:var(--hud-edge);top:var(--hud-edge);width:var(--map-size)}.map-label{padding-bottom:var(--space-2);text-align:center;font-size:var(--text-sm);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ui-text);text-shadow:0 1px 2px rgba(0,0,0,.8)}.map-ring{position:relative;width:100%;aspect-ratio:1;border-radius:var(--radius-full);border:1px solid var(--ui-border-strong);background:var(--ui-veil)}.map-face{position:absolute;inset:0;border-radius:var(--radius-full);overflow:hidden;background:var(--ui-sunken)}.map-face canvas{position:absolute;inset:0;width:100%;height:100%}.map-rail{position:absolute;right:calc(100% + var(--space-2));top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:var(--space-1);pointer-events:none}.map-rail .rail-button{background:var(--ui-surface-raised);border-color:var(--ui-border);color:var(--ui-text)}.map-rail .rail-button:hover{background:var(--ui-hover);border-color:var(--ui-border-strong)}.map-rail .rail-button:active{background:var(--ui-primary-soft-2);color:var(--ui-text)}.map-rail .rail-button svg{width:14px;height:14px}.map-coords{padding-top:var(--space-2);text-align:center;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ui-text-muted);text-shadow:0 1px 2px rgba(0,0,0,.8)}#quest{right:var(--hud-edge);top:calc(var(--map-size) + 76px);width:calc(var(--map-size) + 24px);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-lg);box-shadow:none}#quest .titlebar{height:32px;gap:var(--space-2);padding:0 var(--space-2);background:none;border-bottom:1px solid var(--ui-border);font-size:var(--text-sm);letter-spacing:.08em;color:var(--ui-text-muted)}#quest .titlebar .close{width:22px;height:22px;font-size:12px}.quest-count{padding:1px 7px;background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;letter-spacing:0;line-height:1.4;color:var(--ui-text-muted)}.quest-collapse{width:20px;height:20px;flex:none;display:grid;place-items:center;padding:0;background:none;border:0;border-radius:var(--radius-sm);color:var(--ui-text-muted);cursor:pointer;transition:color var(--motion-fast) var(--ease)}.quest-collapse:hover{color:var(--ui-text)}.quest-collapse .ui-icon{width:12px;height:12px;fill:currentColor;transition:transform var(--motion) var(--ease)}#quest.collapsed .quest-collapse .ui-icon{transform:rotate(-90deg)}#quest.collapsed .window-body{display:none}.quest-body{max-height:260px;overflow-y:auto;padding:var(--space-2) var(--space-3) var(--space-3)}.quest-row{margin-bottom:var(--space-2)}.quest-row:last-child{margin-bottom:0}.quest-row .title{font-size:12px;font-weight:600;color:var(--ui-text)}.quest-row .desc{margin-top:2px;font-size:var(--text-sm);line-height:1.45;color:var(--ui-text-muted)}.quest-objective{display:flex;align-items:baseline;gap:var(--space-2);margin-top:3px;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ui-text)}.quest-objective .mark{flex:none;width:12px;text-align:center;color:var(--ui-primary)}.quest-objective.done{color:var(--ui-text-muted)}.quest-objective.done .mark{color:var(--ui-good)}.quest-objective.failing,.quest-objective.failing .mark{color:var(--ui-bad)}.quest-track{display:flex;align-items:baseline;gap:var(--space-2);font-variant-numeric:tabular-nums}.quest-track-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quest-track-count{flex:none;color:var(--ui-text)}.quest-track.met,.quest-track.met .quest-track-count{color:var(--ui-good)}.quest-ready{color:var(--ui-good);font-weight:600}#quest .quest-row.state-complete .title{color:var(--ui-good)}.nameplates{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.interact-prompt{position:absolute;left:50%;bottom:188px;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-2);padding:6px var(--space-3);background:var(--ui-veil-strong);border:1px solid var(--ui-border);border-radius:var(--radius-md);pointer-events:none}.interact-prompt.hidden{display:none}.prompt-key{width:28px;height:28px;display:grid;place-items:center;background:var(--ui-surface-raised);border:1px solid var(--ui-border-strong);border-radius:var(--radius-sm);font-size:12px;font-weight:700;line-height:1;color:var(--ui-text)}.prompt-text{font-size:12px;color:var(--ui-text);white-space:nowrap}.death-scrim{background:var(--ui-veil);animation:death-in var(--motion-slow) ease-out}@keyframes death-in{0%{opacity:0}to{opacity:1}}.death-panel{width:360px;padding:var(--space-6) var(--space-6) var(--space-5);display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center;background:var(--ui-surface-raised);border:1px solid var(--ui-border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-popup);animation:death-panel-in var(--motion-slow) var(--ease)}@keyframes death-panel-in{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.death-scrim,.death-panel{animation:none}}.death-rule{display:none}.death-title{margin:0;font-size:20px;font-weight:700;letter-spacing:.24em;text-transform:uppercase;color:var(--ui-text)}.death-text{margin:0;font-size:12px;color:var(--ui-text-muted)}.death-buttons{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.death-buttons .btn{min-width:128px}.death-buttons .btn:focus-visible{outline:2px solid var(--ui-focus);outline-offset:2px}.npc-say{position:absolute;left:var(--npc-say-x, 30%);bottom:27%;transform:translate(-50%);width:min(420px,40vw);padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-1);background:var(--ui-veil-strong);border:1px solid var(--ui-border-strong);border-left:2px solid var(--ui-accent-2);border-radius:var(--radius-md);box-shadow:var(--shadow-popup);pointer-events:none;animation:npc-say-in var(--motion) var(--ease)}@keyframes npc-say-in{0%{transform:translate(-50%) translateY(6px);opacity:0}to{transform:translate(-50%);opacity:1}}.npc-say-head{display:flex;align-items:center;gap:var(--space-2)}.npc-say-who{font-size:var(--text-sm);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-accent-2)}.npc-say-line{font-size:var(--text-md);line-height:1.45;color:var(--ui-text)}.npc-say-speaker{display:flex;align-items:flex-end;gap:2px;height:9px}.npc-say-wave{width:2px;height:3px;background:var(--ui-text-faint);border-radius:var(--radius-full)}.npc-say-speaker.on .npc-say-wave{background:var(--ui-accent-2);animation:npc-say-wave .62s var(--ease) infinite}.npc-say-speaker.on .npc-say-wave:nth-child(2){animation-delay:.13s}.npc-say-speaker.on .npc-say-wave:nth-child(3){animation-delay:.26s}@keyframes npc-say-wave{0%,to{height:3px}50%{height:9px}}@media(prefers-reduced-motion:reduce){.npc-say,.npc-say-speaker.on .npc-say-wave{animation:none}}@media(max-width:1200px){.npc-say{width:min(420px,62vw);bottom:34%}}.npc-say-choices{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-2);pointer-events:auto}.npc-say-choice{display:flex;align-items:center;min-height:30px;padding:var(--space-1) var(--space-3);text-align:left;background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-sm);color:var(--ui-text);font-size:var(--text-sm);cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.npc-say-choice:hover{background:var(--ui-hover);border-color:var(--ui-accent-2)}.npc-say-choice:disabled{color:var(--ui-text-faint);border-style:dashed;cursor:default}.npc-say-choice:disabled:hover{background:var(--ui-veil);border-color:var(--ui-border)}#inventory{right:96px;top:132px;width:512px}#inventory .window-body{padding:var(--space-4)}.bag-scroll{max-height:calc(var(--bag-visible-rows, 9) * 60px);overflow-y:auto;overflow-x:hidden;padding-right:var(--space-1)}.bag-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:var(--space-1)}.bag-grid>.islot{width:auto;height:auto;aspect-ratio:1}.inv-footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--ui-border)}.inv-cap-group{display:flex;align-items:center;gap:var(--space-2);min-width:0;color:var(--ui-text-muted)}.cap-bag{width:15px;height:15px;flex:none;color:var(--ui-text-faint)}.inv-capacity{font-size:var(--text-sm);color:var(--ui-text-muted);font-variant-numeric:tabular-nums}.inv-capacity .cap-used{font-size:var(--text-md);font-weight:600;color:var(--ui-text)}.inv-capacity.full .cap-used{color:var(--ui-bad)}.inv-purse{justify-self:end;display:flex;align-items:center;gap:var(--space-2)}.money-coin{width:15px;height:15px;flex:none;color:var(--ui-coin)}.money-amount{font-size:var(--text-md);font-weight:600;color:var(--ui-text);font-variant-numeric:tabular-nums}.money-unit{font-size:var(--text-sm);color:var(--ui-text-muted)}.money{display:inline-flex;align-items:baseline;gap:var(--space-2);white-space:nowrap}.money-part{display:inline-flex;align-items:baseline;gap:3px}.money .coin{width:13px;height:13px;flex:none;align-self:center;filter:drop-shadow(0 0 1px rgb(0 0 0 / .55))}.money-value{font-size:var(--text-md);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ui-text)}.money-unit,.money .money-unit{font-size:10px;font-style:normal;font-weight:500;letter-spacing:.08em;color:var(--ui-text-faint)}.money.compact{gap:var(--space-1)}.money.compact .money-value{font-size:var(--text-sm)}.drag-ghost{background:var(--ui-surface-raised);transform:scale(.96)}.islot.invalid-target{opacity:.5;border-color:var(--ui-bad);background:#f871710f}#character{right:640px;top:132px;width:668px;background:transparent}#character .titlebar{background:var(--ui-veil-strong);border-radius:var(--radius-lg) var(--radius-lg) 0 0}#character .window-body{padding:0}.char-content{display:grid;grid-template-columns:1fr 214px;gap:0;align-items:stretch}.char-left{display:flex;flex-direction:column;min-width:0}.char-right{min-width:0;background:var(--ui-veil-strong);border-left:1px solid var(--ui-border);border-radius:0 0 var(--radius-lg) 0;padding:var(--space-3) var(--space-4)}.eq-summary{grid-column:1 / -1;padding:var(--space-3) var(--space-4);background:var(--ui-veil-strong);border-bottom:1px solid var(--ui-border)}.eq-name{font-size:var(--text-lg);font-weight:600;color:var(--ui-text)}.eq-job{margin-top:2px;font-size:var(--text-sm);color:var(--ui-text-muted)}.eq-doll{position:relative;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"l1 head r1" "l2 prev r2" "l3 prev r3" "l4 prev r4" "l5 prev r5";gap:var(--space-2);justify-items:center;min-height:360px;padding:var(--space-2);border:12px solid var(--ui-veil-strong)}.eq-preview{position:absolute;inset:0;z-index:0;display:grid;place-items:center;background:var(--ui-sunken)}.eq-preview:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px var(--ui-border);pointer-events:none}.eq-doll>.islot{position:relative;z-index:1}.eq-preview.live{background:none}.eq-preview.live .initial,.eq-preview.live .portrait-render{display:none}.eq-preview .portrait-render{position:relative;z-index:1;max-width:100%;max-height:300px;object-fit:contain}.eq-preview .initial{font-size:44px;font-weight:600;color:var(--ui-text-faint)}.eq-body-row{grid-area:prev;align-self:end;z-index:2;display:flex;gap:var(--space-2);margin-bottom:var(--space-2)}.eq-fashion-block{flex:1;padding:var(--space-3) var(--space-4);background:var(--ui-veil-strong);border-top:1px solid var(--ui-border);border-radius:0 0 0 var(--radius-lg)}.eq-fashion{display:flex;gap:var(--space-2)}.islot.fashion:not(.empty){border-color:#a78bfa73}.islot.fashion:not(.empty):hover{border-color:var(--ui-rare)}.char-stats{font-size:var(--text-sm)}.stat-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);min-height:28px;padding:0 var(--space-1);border-bottom:1px solid var(--ui-border);border-radius:var(--radius-sm)}.stat-row:hover{background:var(--ui-hover)}.stat-row .k{font-size:12px;color:var(--ui-text-muted)}.stat-row .v{font-size:var(--text-md);font-weight:600;color:var(--ui-text);font-variant-numeric:tabular-nums}.stat-row.primary .k{color:var(--ui-text)}.stat-plus{flex:0 0 auto;width:20px;height:20px;padding:0;border:1px solid var(--ui-border);border-radius:var(--radius-sm);background:var(--ui-surface);color:var(--ui-text);font-size:13px;font-weight:700;line-height:1;cursor:pointer}.stat-plus:hover{background:var(--ui-hover);border-color:var(--ui-primary)}.stat-row.job-choices{flex-wrap:wrap;justify-content:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-1)}.job-choice{padding:var(--space-1) var(--space-3);border:1px solid var(--ui-primary);border-radius:var(--radius-sm);background:var(--ui-surface);color:var(--ui-text);font-size:var(--text-sm);font-weight:600;cursor:pointer}.job-choice:hover{background:var(--ui-primary);color:var(--ui-bg)}#shop{width:min(640px,calc(50vw / var(--ui-scale)));min-width:420px}.shop-body{display:grid;grid-template-columns:128px 1fr;min-height:0}.categories{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-2) var(--space-3) var(--space-3);border-right:1px solid var(--ui-border);align-content:start}.cat{padding:6px 10px;background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-md);text-align:left;color:var(--ui-text-muted);font-size:var(--text-sm);cursor:pointer;transition:background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.cat:hover{background:var(--ui-hover);color:var(--ui-text)}.cat.active{background:var(--ui-primary-soft-2);border-color:var(--ui-primary);color:var(--ui-text)}.products{display:flex;flex-direction:column;min-height:0;padding:var(--space-3)}.product-list{display:grid;grid-template-columns:1fr;gap:var(--space-1);align-content:start;max-height:470px;overflow-y:auto;padding-right:var(--space-1)}.product{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:var(--space-3);min-height:46px;padding:var(--space-1) var(--space-2);background:var(--ui-surface);border:1px solid var(--ui-border);border-left:2px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.product:hover{background:var(--ui-hover);border-color:var(--ui-border-strong);border-left-color:transparent}.product.selected,.product.selected:hover{background:var(--ui-primary-soft);border-color:var(--ui-border);border-left-color:var(--ui-primary)}.product-icon{width:36px;height:36px;display:grid;place-items:center;background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-sm)}.product-icon .icon-img,.product-icon .icon-wrap{width:32px;height:32px}.product-name{font-size:12px;line-height:1.35;color:var(--ui-text)}.product-sub{margin-top:2px;display:flex;align-items:center;gap:5px;font-size:var(--text-xs);color:var(--ui-text-muted);font-variant-numeric:tabular-nums}.product-sub .money-coin{width:11px;height:11px}.product-price{display:flex;align-items:center;gap:4px;font-size:var(--text-sm);font-weight:600;color:var(--ui-text-muted)}.product-price.short{color:var(--ui-bad)}.shop-footer{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--ui-border)}.shop-footer .purse{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ui-text-muted)}.shop-footer .purse b{font-size:var(--text-md);font-weight:600;color:var(--ui-text);font-variant-numeric:tabular-nums}.shop-qty{width:62px;height:32px;padding:0 var(--space-2);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-md);color:var(--ui-text);font-size:var(--text-md);font-variant-numeric:tabular-nums;text-align:center;outline:none;transition:border-color var(--motion-fast) var(--ease)}.shop-qty:focus{border-color:var(--ui-focus)}#skills{left:50%;top:58px;width:min(1180px,calc(96vw / var(--ui-scale)));transform:translate(-50%);overflow:hidden;background:radial-gradient(circle at 22% 15%,color-mix(in srgb,var(--ui-primary) 8%,transparent),transparent 30%),var(--ui-surface)}#skills .window-body{padding:0}#skills>.tabs{padding:0 var(--space-4);background:color-mix(in srgb,var(--ui-sunken) 88%,transparent);border-bottom:1px solid var(--ui-border)}#skills>.tabs .tab{min-width:116px;padding-block:13px;letter-spacing:.02em}.skilltree{color:var(--ui-text)}.skilltree-summary{min-height:76px;padding:var(--space-3) var(--space-4);display:grid;grid-template-columns:minmax(180px,1fr) minmax(140px,200px) auto;align-items:center;gap:var(--space-4);border-bottom:1px solid var(--ui-border);background:color-mix(in srgb,var(--ui-surface-raised) 62%,transparent)}.skill-summary-identity,.skill-summary-progress,.skill-summary-points{display:flex}.skill-summary-identity{flex-direction:column;gap:2px;min-width:0}.skill-summary-identity strong,.skill-summary-level{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-summary-kicker,.skill-summary-progress span,.skill-summary-points span{font-size:10px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--ui-text-faint)}.skill-summary-identity strong{font-size:var(--text-lg)}.skill-summary-level{font-size:var(--text-xs);color:var(--ui-text-muted)}.skill-summary-progress{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center}.skill-summary-progress strong{font-size:var(--text-xs);font-variant-numeric:tabular-nums}.skill-progress-track{grid-column:1 / -1;height:3px;overflow:hidden;background:var(--ui-border);border-radius:99px}.skill-progress-fill{display:block;height:100%;background:linear-gradient(90deg,var(--ui-primary),var(--ui-accent-2));box-shadow:0 0 8px var(--ui-primary)}.skill-summary-points{justify-self:end;align-items:center;gap:var(--space-2)}.skill-summary-points strong{min-width:44px;padding:8px 10px;text-align:center;font-size:var(--text-lg);font-variant-numeric:tabular-nums;color:var(--ui-text);background:color-mix(in srgb,var(--ui-primary) 18%,var(--ui-surface));border:1px solid color-mix(in srgb,var(--ui-primary) 65%,var(--ui-border));border-radius:var(--radius-md);box-shadow:0 0 16px color-mix(in srgb,var(--ui-primary) 18%,transparent)}.skilltree-body{display:grid;grid-template-columns:minmax(0,1fr) 356px;grid-template-rows:minmax(0,1fr);min-height:446px;max-height:min(570px,calc((100vh - 190px) / var(--ui-scale)))}.skilltree-scroll{position:relative;overflow:auto;min-width:0;min-height:0;background-color:#080d16;background-image:linear-gradient(color-mix(in srgb,var(--ui-primary) 5%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--ui-primary) 5%,transparent) 1px,transparent 1px),radial-gradient(circle at 40% 40%,color-mix(in srgb,var(--ui-primary) 7%,transparent),transparent 45%);background-size:48px 48px,48px 48px,auto;border-right:1px solid var(--ui-border);scrollbar-color:var(--ui-border-strong) transparent}.skilltree-canvas{position:relative;min-width:100%}.skilltree-links{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible}.skilltree-links .link{fill:none;stroke-width:2.25;stroke-linecap:round}.skilltree-links .link.met{stroke:var(--ui-primary);opacity:.92;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-primary) 40%,transparent))}.skilltree-links .link.completed{stroke:var(--ui-accent-2);opacity:1;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--ui-accent-2) 45%,transparent))}.skilltree-links .link.unmet{stroke:var(--ui-border-strong);stroke-dasharray:6 8;opacity:.52}.skill-node{position:absolute;z-index:1;width:150px;height:118px;transform:translate(-50%,-26px);display:flex;flex-direction:column;align-items:center;padding:0 6px 4px;border:0;border-radius:var(--radius-md);cursor:pointer;outline:none}.skill-node:before{content:"";position:absolute;left:50%;top:-4px;width:60px;height:60px;transform:translate(-50%) rotate(45deg);border:1px solid transparent;border-radius:13px;pointer-events:none;transition:border-color var(--motion-fast) var(--ease),box-shadow var(--motion-fast) var(--ease)}.skill-node:hover:before,.skill-node:focus-visible:before{border-color:var(--ui-text-muted)}.skill-node:focus-visible:before{box-shadow:0 0 0 3px color-mix(in srgb,var(--ui-primary) 30%,transparent)}.skill-node.selected:before{border-color:var(--ui-accent-2);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-accent-2) 28%,transparent),0 0 18px color-mix(in srgb,var(--ui-accent-2) 22%,transparent)}.skill-diamond{width:52px;height:52px;flex:0 0 52px;padding:0;overflow:hidden;transform:rotate(45deg);border:2px solid var(--ui-border-strong);border-radius:11px;background:var(--ui-surface-raised);box-shadow:inset 0 0 18px color-mix(in srgb,var(--ui-primary) 5%,transparent)}.skill-diamond-content{width:52px;height:52px;transform:rotate(-45deg) scale(1.05);display:grid;place-items:center}.skill-diamond-content>*,.skill-diamond-content img,.skill-diamond-content .icon-fallback{width:46px;height:46px;object-fit:cover}.skill-node.locked .skill-diamond{border-color:var(--ui-border);filter:grayscale(1);opacity:.46}.skill-node.available .skill-diamond{border-color:#70a0ff;box-shadow:inset 0 0 18px color-mix(in srgb,var(--ui-primary) 14%,transparent),0 0 12px color-mix(in srgb,var(--ui-primary) 26%,transparent);animation:skill-available-pulse 2.4s ease-in-out infinite}.skill-node.learned .skill-diamond{border-color:var(--ui-primary);box-shadow:inset 0 0 16px color-mix(in srgb,var(--ui-primary) 16%,transparent)}.skill-node.maxed .skill-diamond{border-color:var(--ui-accent-2);box-shadow:inset 0 0 16px color-mix(in srgb,var(--ui-accent-2) 16%,transparent),0 0 10px color-mix(in srgb,var(--ui-accent-2) 22%,transparent)}.skill-state-glyph{position:absolute;top:42px;left:calc(50% + 15px);min-width:17px;height:17px;display:grid;place-items:center;padding:0 3px;border:1px solid var(--ui-border-strong);border-radius:99px;background:var(--ui-surface-raised);color:var(--ui-text-muted);font-size:10px;font-weight:800}.maxed .skill-state-glyph{color:var(--ui-accent-2);border-color:var(--ui-accent-2)}.available .skill-state-glyph,.learned .skill-state-glyph{color:var(--ui-primary);border-color:var(--ui-primary)}.skill-node .skill-mark{position:absolute;top:2px;right:19px;padding:2px 4px;border-radius:4px;background:var(--ui-veil-strong);color:var(--ui-text-faint);font-size:8px;font-weight:700;letter-spacing:.08em}.skill-node-label{max-width:142px;margin-top:15px;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;padding:2px 5px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ui-surface) 76%,transparent)}.skill-node .skill-name{max-width:100%;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere;line-height:1.2;font-size:var(--text-sm);color:var(--ui-text)}.skill-node .skill-rank{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--ui-text-muted)}.skill-node .skill-badge{font-size:9px;color:var(--ui-text-faint)}.skill-node.locked .skill-name,.skill-node.locked .skill-rank,.skill-node.locked .skill-badge{color:color-mix(in srgb,var(--ui-text-faint) 65%,transparent)}@keyframes skill-available-pulse{0%,to{box-shadow:inset 0 0 18px color-mix(in srgb,var(--ui-primary) 12%,transparent),0 0 8px color-mix(in srgb,var(--ui-primary) 18%,transparent)}50%{box-shadow:inset 0 0 18px color-mix(in srgb,var(--ui-primary) 18%,transparent),0 0 15px color-mix(in srgb,var(--ui-primary) 36%,transparent)}}.skill-node.just-learned .skill-diamond{animation:skill-learned .52s var(--ease)}@keyframes skill-learned{0%{box-shadow:0 0 0 0 var(--ui-accent-2)}70%{box-shadow:0 0 0 12px transparent}to{box-shadow:0 0 0 0 transparent}}.skill-detail{min-width:0;min-height:0;overflow-y:auto;padding:var(--space-4);background:color-mix(in srgb,var(--ui-surface) 92%,#080d16);scrollbar-color:var(--ui-border-strong) transparent}.skill-detail-body{display:flex;flex-direction:column;gap:var(--space-3)}.skill-detail-topline{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}.skill-state-pill{width:fit-content;padding:3px 7px;border:1px solid var(--ui-border-strong);border-radius:4px;color:var(--ui-text-muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.skill-state-pill.available,.skill-state-pill.learned{color:#8bb0ff;border-color:color-mix(in srgb,var(--ui-primary) 70%,var(--ui-border))}.skill-state-pill.maxed{color:var(--ui-accent-2);border-color:var(--ui-accent-2)}.skill-detail-kind{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-faint)}.skill-detail-head{display:flex;align-items:center;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--ui-border)}.skill-detail-icon{width:56px;height:56px;padding:5px;flex:0 0 auto;border:1px solid color-mix(in srgb,var(--ui-primary) 70%,var(--ui-border));border-radius:var(--radius-md);background:color-mix(in srgb,var(--ui-primary) 8%,var(--ui-surface-raised))}.skill-detail-icon>*,.skill-detail-icon img,.skill-detail-icon .icon-fallback{width:100%;height:100%;object-fit:cover}.skill-detail-name{margin:0;font-size:var(--text-lg);line-height:1.15}.skill-detail-rank,.skill-detail-description{margin:3px 0 0;color:var(--ui-text-muted);font-size:var(--text-sm);line-height:1.5}.skill-quick-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--ui-border);border-radius:var(--radius-md);overflow:hidden}.skill-quick-stat{min-width:0;padding:9px 6px;display:flex;flex-direction:column;gap:3px;text-align:center;border-right:1px solid var(--ui-border)}.skill-quick-stat:last-child{border-right:0}.skill-quick-stat span{font-size:9px;text-transform:uppercase;color:var(--ui-text-faint)}.skill-quick-stat strong{overflow:hidden;text-overflow:ellipsis;font-size:var(--text-xs);font-variant-numeric:tabular-nums}.skill-detail h3{margin:0 0 var(--space-2);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ui-text-faint)}.skill-rank-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.skill-rank-card{min-width:0;min-height:92px;padding:var(--space-2);border:1px solid var(--ui-border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--ui-sunken) 75%,transparent)}.skill-rank-card:last-child{border-color:color-mix(in srgb,var(--ui-primary) 42%,var(--ui-border));background:color-mix(in srgb,var(--ui-primary) 6%,var(--ui-sunken))}.skill-rank-card h4{margin:0 0 7px;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ui-text-faint)}.skill-rank-card p{margin:3px 0;display:flex;justify-content:space-between;gap:5px;font-size:10px;color:var(--ui-text-muted)}.skill-rank-card p strong{color:var(--ui-text);font-variant-numeric:tabular-nums}.skill-rank-card p.changed strong{color:#8bb0ff}.skill-rank-card .skill-rank-empty{display:block}.skill-requirements{padding-top:var(--space-2);border-top:1px solid var(--ui-border)}.skill-requirement{display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:6px;padding:7px 8px;margin-top:4px;border:1px solid var(--ui-border);border-radius:var(--radius-sm);color:var(--ui-text-muted);font-size:var(--text-xs)}.skill-requirement .mark,.skill-requirement>strong{font-size:9px;text-transform:uppercase}.skill-requirement.met .mark,.skill-requirement.met>strong{color:var(--ui-good)}.skill-requirement.unmet .mark,.skill-requirement.unmet>strong{color:var(--ui-bad)}.skill-requirement-link{min-width:0;padding:0;justify-content:flex-start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;background:transparent;color:inherit;font:inherit;text-align:left}.skill-detail-actions{display:flex;flex-direction:column;gap:var(--space-2)}.skill-detail-actions>button{width:100%;min-height:42px}.skill-refusal{margin:0;padding:var(--space-2);border:1px solid color-mix(in srgb,var(--ui-bad) 55%,var(--ui-border));border-radius:var(--radius-sm);color:var(--ui-bad);font-size:var(--text-xs)}.skilltip{max-width:300px;display:flex;flex-direction:column;gap:4px}.skilltip-name{font-size:var(--text-md);font-weight:700}.skilltip-kind,.skilltip-rankline,.skilltip-mini{font-size:var(--text-xs);color:var(--ui-text-muted)}.skilltip-desc{margin:3px 0;font-size:var(--text-sm);line-height:1.4;color:var(--ui-text-muted)}.skill-footer{min-height:36px;padding:8px var(--space-4);display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);border-top:1px solid var(--ui-border);background:var(--ui-sunken);font-size:9px;color:var(--ui-text-faint)}.skill-legend{display:flex;flex-wrap:wrap;gap:var(--space-3)}.skill-legend span:before{content:"";width:6px;height:6px;display:inline-block;margin-right:5px;border-radius:50%;background:var(--ui-border-strong)}.skill-legend .maxed:before{background:var(--ui-accent-2)}.skill-legend .learned:before{background:var(--ui-primary)}.skill-legend .available:before{background:#8bb0ff;box-shadow:0 0 6px #8bb0ff}@media(prefers-reduced-motion:reduce){.skill-node.available .skill-diamond,.skill-node.just-learned .skill-diamond{animation:none}.skill-node:before{transition:none}}@media(max-width:980px){#skills{top:34px;width:min(760px,calc(96vw / var(--ui-scale)))}.skilltree-summary{grid-template-columns:1fr auto}.skill-summary-progress{display:none}.skilltree-body{grid-template-columns:minmax(0,1fr);max-height:min(620px,calc((100vh - 170px) / var(--ui-scale)));overflow-y:auto}.skilltree-scroll{min-height:330px;max-height:390px;border-right:0;border-bottom:1px solid var(--ui-border)}.skill-detail{overflow:visible}}@media(max-width:620px){#skills>.tabs .tab{min-width:0;flex:1}.skilltree-summary{padding-inline:var(--space-3)}.skill-summary-level{display:none}.skill-rank-cards{grid-template-columns:1fr}.skill-scroll-hint{display:none}}#loot{right:264px;top:300px;width:306px}.loot-status{padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--ui-border);font-size:var(--text-xs);color:var(--ui-text-muted);text-align:center;font-variant-numeric:tabular-nums}.loot-status.warn{color:var(--ui-warn)}.loot-list{max-height:320px;overflow-y:auto;padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-1)}.loot-row{display:grid;grid-template-columns:20px 32px 1fr;align-items:center;gap:var(--space-2);min-height:40px;padding:var(--space-1) var(--space-2);background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--radius-md);cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.loot-row:hover{background:var(--ui-hover);border-color:var(--ui-border-strong)}.loot-row.far{opacity:.5;cursor:default}.loot-row.far:hover{background:var(--ui-surface);border-color:var(--ui-border)}.loot-icon{width:32px;height:32px;display:grid;place-items:center;background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-sm)}.loot-icon .icon-img,.loot-icon .icon-wrap{width:26px;height:26px}.loot-icon .money-coin{width:20px;height:20px}.loot-mid{min-width:0}.loot-name{font-size:12px;line-height:1.35;color:var(--ui-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loot-sub{font-size:var(--text-xs);color:var(--ui-text-muted)}.loot-check{display:grid;place-items:center;cursor:pointer}.loot-row.far .loot-check{cursor:default}.loot-check input{width:14px;height:14px;accent-color:var(--ui-primary);cursor:inherit}.loot-empty{padding:var(--space-4);font-size:var(--text-sm);color:var(--ui-text-muted);text-align:center}.loot-footer{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-2) var(--space-3) var(--space-3);border-top:1px solid var(--ui-border)}#settings{width:min(980px,calc(100vw / var(--ui-scale) - 40px));height:min(760px,calc(100vh / var(--ui-scale) - 40px));display:flex;flex-direction:column}#settings .window-body{flex:1;min-height:0;overflow:hidden}.settings-shell{height:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.settings-toolbar{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--ui-border)}.settings-search{width:min(440px,100%);height:32px;padding:0 var(--space-3);color:var(--ui-text);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-sm);font:var(--text-sm) var(--font-ui)}.settings-search:focus-visible,.settings-select:focus-visible,.keybind-button:focus-visible{outline:2px solid var(--ui-focus);outline-offset:1px}.settings-main{min-height:0;display:grid;grid-template-columns:172px minmax(0,1fr)}.settings-nav{min-height:0;padding:var(--space-3) var(--space-2);overflow-y:auto;background:#0000001f;border-right:1px solid var(--ui-border)}.settings-nav button{width:100%;min-height:32px;padding:0 var(--space-3);color:var(--ui-text-muted);background:none;border:0;border-left:2px solid transparent;border-radius:var(--radius-sm);font:var(--text-sm) var(--font-ui);text-align:left;cursor:pointer}.settings-nav button:hover{color:var(--ui-text);background:var(--ui-hover)}.settings-nav button.active{color:var(--ui-text);background:var(--ui-primary-soft-2);border-left-color:var(--ui-primary)}.settings-content{min-width:0;min-height:0;padding:0 var(--space-5) var(--space-5);overflow-y:auto;scrollbar-gutter:stable}.settings-page{width:100%}.settings-group{padding-top:var(--space-5)}.settings-group-title,.settings-result-category{margin:0;padding:0 0 var(--space-2);color:var(--ui-text);border-bottom:1px solid var(--ui-border);font-size:var(--text-md);font-weight:650}.settings-result-category{position:sticky;top:0;z-index:1;padding-top:var(--space-3);background:var(--ui-surface);color:var(--ui-primary)}.setting-row{min-height:64px;display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,42%);gap:var(--space-5);align-items:center;padding:var(--space-3) 0;border-bottom:1px solid rgba(255,255,255,.055)}.setting-copy{min-width:0}.setting-label{color:var(--ui-text);font-size:var(--text-sm);font-weight:600}.setting-description,.settings-note,.setting-cost{margin:3px 0 0;color:var(--ui-text-faint);font-size:var(--text-xs);line-height:1.45}.setting-cost{color:var(--ui-text-muted)}.setting-control{min-width:0;display:flex;justify-content:flex-end}.setting-control>*{max-width:100%}.setting-restart{display:inline-block;margin-left:var(--space-2);padding:1px 5px;color:var(--ui-warn);background:#f59e0b1a;border-radius:var(--radius-sm);font-size:10px;font-weight:500}.settings-select{width:100%;min-width:180px;height:30px;padding:0 var(--space-2);color:var(--ui-text);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-sm);font:var(--text-sm) var(--font-ui)}.settings-inline{width:100%;display:grid;grid-template-columns:minmax(140px,1fr) auto;gap:var(--space-2)}.settings-slider{width:100%;display:grid;grid-template-columns:minmax(100px,1fr) 58px;gap:var(--space-3);align-items:center}.settings-slider input{width:100%;accent-color:var(--ui-primary)}.settings-slider-value{color:var(--ui-text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;text-align:right}.settings-toggle{display:inline-flex;cursor:pointer}.settings-toggle input{position:absolute;opacity:0;pointer-events:none}.settings-toggle-track{width:38px;height:20px;position:relative;background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:999px;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.settings-toggle-track:after{content:"";width:14px;height:14px;position:absolute;left:2px;top:2px;background:var(--ui-text-muted);border-radius:50%;transition:transform var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}.settings-toggle input:checked+.settings-toggle-track{background:var(--ui-primary-soft-2);border-color:var(--ui-primary)}.settings-toggle input:checked+.settings-toggle-track:after{transform:translate(18px);background:var(--ui-primary)}.settings-segments{display:flex;gap:2px;padding:2px;background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-sm)}.settings-segments .btn{min-width:48px;min-height:26px;padding:0 var(--space-2);background:none;border:0}.settings-segments .btn.active{color:var(--ui-text);background:var(--ui-primary-soft-2)}.settings-note{padding:var(--space-3);border-bottom:1px solid rgba(255,255,255,.055)}.settings-note.warning{color:var(--ui-warn);background:#f59e0b0f}.settings-note.restart{color:var(--ui-text-muted);background:#3b82f60f}.graphics-info{margin-top:var(--space-3);padding:var(--space-3);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-sm)}.settings-readonly{display:flex;justify-content:space-between;gap:var(--space-4);padding:4px 0;color:var(--ui-text-muted);font-size:var(--text-xs)}.settings-readonly strong{color:var(--ui-text);font-weight:500;font-variant-numeric:tabular-nums;text-align:right}.keybind-pair{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.keybind-button{min-width:0;height:30px;padding:0 var(--space-2);overflow:hidden;color:var(--ui-text);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-sm);font:var(--text-xs) var(--font-ui);text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.keybind-button:hover{background:var(--ui-hover);border-color:var(--ui-primary)}.settings-conflict{position:sticky;top:0;z-index:2;display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;margin:var(--space-3) 0 0;padding:var(--space-3);color:var(--ui-warn);background:var(--ui-surface);border:1px solid var(--ui-warn);border-radius:var(--radius-sm);font-size:var(--text-xs)}.settings-conflict span{flex:1 1 260px}.settings-footer{display:flex;gap:var(--space-2);align-items:center;padding:var(--space-3) var(--space-4);background:var(--ui-surface);border-top:1px solid var(--ui-border)}.settings-status{flex:1;color:var(--ui-text-faint);font-size:var(--text-xs);text-align:right}.settings-status.dirty{color:var(--ui-warn)}.settings-empty{padding:var(--space-6) 0;color:var(--ui-text-faint);text-align:center}@media(max-width:760px){#settings{width:calc(100vw / var(--ui-scale) - 16px);height:calc(100vh / var(--ui-scale) - 16px)}.settings-main{grid-template-columns:116px minmax(0,1fr)}.settings-content{padding-right:var(--space-3);padding-left:var(--space-3)}.setting-row{grid-template-columns:1fr;gap:var(--space-2)}.setting-control{justify-content:stretch}.setting-control>*{width:100%}.settings-footer .settings-status,.settings-footer .btn:first-child{display:none}}#login{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:var(--ui-sky);pointer-events:auto}#login:before,#login:after{content:"";position:absolute;pointer-events:none}#login:before{inset:7% 8% auto auto;width:34vw;height:34vw;max-width:560px;max-height:560px;border:1px solid rgba(255,255,255,.07);border-radius:50%;box-shadow:0 0 0 80px #ffffff05,0 0 0 180px #ffffff03}#login:after{left:-8vw;right:-8vw;bottom:-25vh;height:48vh;border-radius:50% 50% 0 0;background:var(--ui-land);transform:rotate(-2deg)}.login-card{z-index:1;width:min(460px,calc(100vw - 2 * var(--space-5)));background:var(--ui-veil-strong);box-shadow:var(--shadow-popup);border:1px solid var(--ui-border-strong);overflow:hidden}.login-card:has(.create-preview-columns){width:min(900px,calc(100vw - 2 * var(--space-5)))}.login-card .titlebar{height:44px;padding:0 var(--space-5);background:var(--ui-surface);border-bottom:1px solid var(--ui-border);font-size:var(--text-md);font-weight:600;letter-spacing:0;text-transform:none}.login-body{padding:var(--space-5) var(--space-6) var(--space-6)}.login-intro{margin:var(--space-2) 0 var(--space-5)}.login-kicker,.char-scene-kicker{display:block;margin-bottom:var(--space-2);color:var(--ui-accent-2);font-size:var(--text-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase}.login-intro h2{margin:0;font-size:26px;letter-spacing:-.02em}.login-intro p{margin:var(--space-2) 0 0;color:var(--ui-text-muted);line-height:1.55}.login-mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-1);padding:var(--space-1);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-md)}.login-mode-tabs .btn{border-color:transparent;background:transparent;color:var(--ui-text-muted)}.login-mode-tabs .btn.active{background:var(--ui-surface-raised);color:var(--ui-text);border-color:var(--ui-border)}.login-body label{display:block;margin:var(--space-4) 0 var(--space-1);font-size:var(--text-sm);font-weight:500;color:var(--ui-text-muted)}.login-body label:first-child,.login-form label:first-child{margin-top:var(--space-1)}.login-body input{width:100%;height:44px;padding:0 var(--space-3);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-md);color:var(--ui-text);font-size:var(--text-md);outline:none;transition:border-color var(--motion-fast) var(--ease)}.login-body input:focus{border-color:var(--ui-focus)}.login-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-4)}.login-form>.login-actions .primary{width:100%;min-height:42px}.login-error{margin-top:var(--space-3);min-height:16px;font-size:var(--text-sm);color:var(--ui-bad)}.login-note{margin-top:var(--space-3);font-size:var(--text-xs);line-height:1.5;color:var(--ui-text-faint)}.char-list{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-1);max-height:400px;overflow-y:auto}.char-row{display:flex;align-items:center;width:100%;min-height:66px;padding:var(--space-2) var(--space-3);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-md);text-align:left;cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.char-slot-number{flex:none;width:28px;color:var(--ui-text-faint);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.char-row>div{flex:1;min-width:0}.char-row-arrow{color:var(--ui-text-faint);font-size:24px}.char-row.selected .char-row-arrow{color:var(--ui-accent-2)}.char-row:hover{background:var(--ui-hover);border-color:var(--ui-border-strong)}.char-row.selected,.char-row.selected:hover{background:var(--ui-primary-soft);border-color:var(--ui-primary)}.char-row .nm{font-size:var(--text-md);font-weight:600;color:var(--ui-text)}.char-row .meta{margin-top:2px;font-size:var(--text-sm);color:var(--ui-text-muted)}.char-columns{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(310px,.75fr);min-height:min(650px,calc(100vh - 120px));align-items:stretch}.char-world{position:relative;min-height:560px;overflow:hidden;background:var(--ui-sky-high);border-right:1px solid var(--ui-border)}.char-world:before{content:"";position:absolute;left:-12%;right:-12%;bottom:-14%;height:48%;background:var(--ui-land-high);border-radius:50% 50% 0 0;transform:rotate(-3deg)}.char-world:after{content:"";position:absolute;left:45%;bottom:-15%;width:22%;height:58%;background:var(--ui-path);border-radius:50% 50% 0 0;transform:perspective(220px) rotateX(36deg) rotate(8deg);opacity:.65}.char-world .char-stage{position:absolute;inset:0;z-index:1;border:0;background:transparent}.char-world .char-stage:before,.char-world .char-stage:after{display:none}.char-scene-copy,.char-scene-hint{position:absolute;z-index:2}.char-scene-copy{left:var(--space-6);bottom:var(--space-6)}.char-scene-name{font-size:32px;font-weight:700;letter-spacing:-.025em}.char-scene-meta{margin-top:var(--space-1);color:var(--ui-text-muted)}.char-scene-hint{right:var(--space-4);top:var(--space-4);padding:6px 9px;color:var(--ui-text-muted);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-full);font-size:var(--text-xs)}.char-select-panel{display:flex;flex-direction:column;min-width:0;padding:var(--space-5);background:var(--ui-surface)}.char-select-heading{margin:var(--space-5) 0 var(--space-2);font-size:var(--text-lg);font-weight:700}.char-select-panel .login-actions{margin-top:auto;flex-wrap:wrap}.char-stage{position:absolute;inset:0;z-index:0;pointer-events:auto;cursor:pointer}.preview-frame{position:fixed;inset:0;z-index:0;pointer-events:none}.preview-canvas{position:absolute;inset:0;z-index:0;width:100%;height:100%;pointer-events:none}.login-classes{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--space-2);margin-top:var(--space-1)}.login-class{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);text-align:left;font:inherit;color:var(--ui-text);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .12s ease,background .12s ease}.login-class:hover{border-color:var(--ui-border-strong)}.login-class.on{border-color:var(--ui-primary);background:var(--ui-surface-active, var(--ui-surface-raised));box-shadow:inset 0 0 0 1px var(--ui-primary)}.login-class:focus-visible{outline:2px solid var(--ui-focus);outline-offset:2px}.login-class-name{font-size:var(--text-md);font-weight:600;letter-spacing:.01em}.login-class-desc{font-size:var(--text-sm);line-height:1.45;color:var(--ui-text-muted)}.login-classabout:not(:empty){margin-top:var(--space-3);padding:var(--space-3);border:1px solid var(--ui-border);border-radius:var(--radius-sm);background:var(--ui-surface-raised)}.login-desc{margin:0;font-size:var(--text-sm);line-height:1.5;color:var(--ui-text-muted)}.login-starterhead{font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ui-text-faint)}.login-starter{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-2)}.login-starter-row{display:grid;grid-template-columns:28px 1fr auto auto;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}.login-starter-row .icon-img,.login-starter-row .icon-fallback{width:28px;height:28px}.login-starter-row .qty{color:var(--ui-text-muted);font-variant-numeric:tabular-nums}.login-starter-row .mode{font-size:var(--text-xs);letter-spacing:.03em;text-transform:uppercase;color:var(--ui-text-faint)}.login-starter-row .mode.worn{color:var(--ui-accent-2)}.create-progress{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:12px;color:var(--ui-text-muted);font-size:11px}.create-progress span{padding:6px 4px;border-bottom:2px solid var(--ui-border);text-align:center}.create-progress span.active,.create-progress span.done{color:var(--ui-text);border-bottom-color:var(--ui-accent-2)}.create-step{min-height:430px}#login.login-stage .create-progress{position:absolute;left:50%;top:var(--space-5);z-index:2;transform:translate(-50%);grid-template-columns:repeat(4,auto);gap:0;margin:0;padding:4px 6px;background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-full);backdrop-filter:blur(8px);pointer-events:auto;white-space:nowrap}#login.login-stage .create-progress span{padding:4px 12px;border-bottom:0;border-radius:var(--radius-full)}#login.login-stage .create-progress span.active{color:var(--ui-text);background:var(--ui-primary-soft-2)}#login.login-stage .create-progress span.done{color:var(--ui-text-muted)}#login.login-stage .create-step{min-height:0}.create-step h3{margin:0 0 12px;font-size:15px}.create-name-state{min-height:18px;margin-top:7px;color:var(--ui-text-muted);font-size:11px}.create-name-state.good{color:var(--ui-good)}.create-preview-columns{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);gap:14px;align-items:center}.create-preview-columns>.char-stage{min-width:0;min-height:400px;background:var(--ui-sky-high)}.create-preview-columns>.login-actions{min-width:0;flex-direction:column;align-items:stretch;margin:0}.create-preview-columns>.login-actions .btn{min-height:46px}@media(max-width:560px){.create-preview-columns{grid-template-columns:minmax(0,1fr)}}.create-summary{display:grid;gap:8px;min-width:0;color:var(--ui-text-muted);font-size:12px;overflow-wrap:anywhere}.create-actions{margin-top:12px}#login.login-stage{display:block;background:none;z-index:10;pointer-events:none}#login.login-stage:before,#login.login-stage:after{display:none}#login.login-stage .login-card{position:absolute;inset:0;width:auto;max-width:none;background:none;border:0;box-shadow:none;border-radius:0;overflow:visible}#login.login-stage .login-card>.titlebar{display:none}#login.login-stage .login-card>.window-body{position:absolute;inset:0}#login.login-stage .login-body{position:absolute;inset:0;padding:0}#login.login-stage .stage-crumb,#login.login-stage .stage-hint,#login.login-stage .stage-empty,#login.login-stage .stage-actions,#login.login-stage .create-panel,#login.login-stage .login-error{pointer-events:auto}.stage-crumb .select-crumb{margin:0;padding:0;border-bottom:0}.stage-crumb{position:absolute;left:var(--space-5);top:var(--space-5);z-index:2;padding:7px 12px;background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-full);backdrop-filter:blur(6px)}.stage-hint{position:absolute;left:50%;top:var(--space-5);z-index:2;transform:translate(-50%);padding:6px 12px;color:var(--ui-text-muted);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-full);font-size:var(--text-xs);white-space:nowrap}.stage-empty{position:absolute;left:50%;top:38%;z-index:2;transform:translate(-50%);padding:10px 16px;background:var(--ui-veil-strong);border:1px solid var(--ui-border-strong);border-radius:var(--radius-md);font-size:var(--text-md);text-align:center}.stage-actions{position:absolute;left:50%;bottom:var(--space-6);z-index:2;transform:translate(-50%);display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-full);backdrop-filter:blur(8px)}#login.login-stage .login-error:not(:empty){position:absolute;left:50%;bottom:calc(var(--space-6) + 62px);z-index:2;transform:translate(-50%);padding:8px 14px;background:var(--ui-veil-strong);border:1px solid var(--ui-bad);border-radius:var(--radius-md);white-space:nowrap}.char-plates{position:absolute;inset:0;pointer-events:none}.char-plate{position:absolute;left:0;top:0;margin:-14px 0 0;translate:-50% -100%;will-change:transform;pointer-events:auto;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:0 8px;align-items:center;padding:7px 13px 8px;background:var(--ui-veil-strong);border:1px solid var(--ui-border);border-radius:var(--radius-md);box-shadow:var(--shadow-popup);backdrop-filter:blur(6px);color:var(--ui-text);font:inherit;text-align:left;cursor:pointer;white-space:nowrap;transition:border-color .12s,box-shadow .12s,background .12s}.char-plate:hover{border-color:var(--ui-border-strong)}.char-plate.selected{border-color:var(--ui-text);background:var(--ui-surface)}.char-plate-slot{grid-row:1 / span 2;font-variant-numeric:tabular-nums;font-size:var(--text-lg);font-weight:700;color:var(--ui-text-faint)}.char-plate.selected .char-plate-slot{color:var(--ui-primary)}.char-plate-name{font-size:var(--text-md);font-weight:700;letter-spacing:-.01em}.char-plate-meta{color:var(--ui-text-muted);font-size:var(--text-xs)}.create-panel{position:absolute;right:var(--space-5);top:50%;z-index:2;transform:translateY(-50%);width:min(400px,calc(100vw - 2 * var(--space-5)));max-height:calc(100vh - 160px);overflow-y:auto;padding:var(--space-5);background:var(--ui-veil-strong);border:1px solid var(--ui-border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-popup);backdrop-filter:blur(10px)}#login.login-stage .create-actions{flex-wrap:wrap;justify-content:center}#server-select{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:var(--ui-bg);pointer-events:auto}.select-card{width:min(760px,calc(100vw - 2 * var(--space-5)))}.select-card .titlebar{height:44px;font-size:var(--text-lg);font-weight:600;letter-spacing:0;text-transform:none}.select-card>.window-body{padding:var(--space-4) var(--space-5) var(--space-5)}.select-intro{margin:0 0 var(--space-4)}.select-heading{margin:var(--space-4) 0 var(--space-2)}.select-heading:first-of-type{margin-top:0}.select-heading{margin-bottom:var(--space-2);font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-faint)}.select-realms{display:flex;flex-wrap:wrap;gap:var(--space-2)}.realm-pill{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4) var(--space-2) var(--space-3);color:var(--ui-text);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-full);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}.realm-pill:hover:not(.disabled){border-color:var(--ui-border-strong)}.realm-pill.selected{border-color:var(--ui-primary);background:var(--ui-primary-soft)}.realm-pill.disabled{opacity:.55;cursor:not-allowed}.realm-pill-text{display:flex;flex-direction:column;line-height:1.25}.realm-meta{color:var(--ui-text-muted);font-size:var(--text-xs)}.realm-dot{width:8px;height:8px;flex:0 0 auto;border-radius:50%}.realm-dot.online{background:var(--ui-good);box-shadow:0 0 0 3px color-mix(in srgb,var(--ui-good) 22%,transparent)}.realm-dot.offline{background:var(--ui-text-faint)}.realm-name{font-weight:600}.select-channels{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:var(--space-2);max-height:min(340px,calc(40vh / var(--ui-scale)));overflow-y:auto;padding-right:var(--space-1)}.channel-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);color:var(--ui-text);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-md);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}.channel-card:hover:not(.disabled){background:var(--ui-hover);border-color:var(--ui-border-strong)}.channel-card.selected{background:var(--ui-primary-soft-2);border-color:var(--ui-primary)}.channel-card.disabled{opacity:.45;cursor:default}.channel-card.disabled:hover{background:var(--ui-surface-raised)}.channel-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.channel-name{font-size:var(--text-md);font-weight:600;color:var(--ui-text)}.channel-count{font-size:var(--text-md);font-variant-numeric:tabular-nums;color:var(--ui-text-muted)}.channel-bar{height:6px;background:var(--ui-sunken);border-radius:var(--radius-full);overflow:hidden}.channel-bar-fill{height:100%;border-radius:var(--radius-full);transition:width var(--motion-slow) var(--ease)}.channel-bar-fill.good{background:var(--ui-good)}.channel-bar-fill.warn{background:var(--ui-warn)}.channel-bar-fill.bad{background:var(--ui-bad)}.channel-bar-fill.muted{background:var(--ui-text-faint)}.channel-chips{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-2)}.chip{padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:#ffffff0d;color:var(--ui-text-muted)}.chip.good{color:var(--ui-good)}.chip.warn{color:var(--ui-warn)}.chip.bad{color:var(--ui-bad)}.chip.recommended{background:var(--ui-primary-soft-2);color:var(--ui-primary)}.select-crumb{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--ui-border);font-size:var(--text-sm);color:var(--ui-text-muted)}.select-crumb b{font-weight:600;color:var(--ui-text)}.select-crumb .sep{color:var(--ui-text-faint)}.quest-split{display:grid;grid-template-columns:minmax(230px,.82fr) minmax(0,1.45fr);min-height:470px;max-height:min(680px,calc(100vh - 150px));background:var(--ui-surface)}.quest-list{display:flex;flex-direction:column;gap:var(--space-1);max-height:inherit;overflow-y:auto;padding:var(--space-3);background:var(--ui-sunken);border-right:1px solid var(--ui-border)}.quest-list .quest-row{display:grid;grid-template-columns:14px minmax(0,1fr) auto;grid-template-areas:"dot name state" ". body body";gap:2px var(--space-2);margin:0;padding:var(--space-3);background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--radius-md);cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.quest-list .quest-row:hover{background:var(--ui-hover)}.quest-list .quest-row.selected{background:var(--ui-primary-soft);border-color:var(--ui-primary);box-shadow:inset 3px 0 0 var(--ui-primary)}.quest-dot{grid-area:dot;align-self:center;justify-self:center;width:8px;height:8px;border-radius:50%;background:var(--ui-text-faint)}.quest-row.state-taken .quest-dot{background:var(--ui-primary)}.quest-row.state-complete .quest-dot{background:var(--ui-good)}.quest-row.state-available .quest-dot{border:1px solid var(--ui-text-muted);background:transparent}.quest-name{grid-area:name;font-size:var(--text-md);font-weight:600;color:var(--ui-text)}.quest-row-state{grid-area:state;align-self:center;font-size:var(--text-xs);color:var(--ui-text-faint)}.quest-row.state-complete .quest-row-state{color:var(--ui-good)}.quest-row-body{grid-area:body;display:flex;flex-direction:column;gap:2px}.quest-summary,.quest-locked{font-size:var(--text-sm);line-height:1.4;color:var(--ui-text-muted)}.quest-locked{color:var(--ui-warn, var(--ui-text-muted))}.quest-detail{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;padding:var(--space-5);overflow-y:auto;background:var(--ui-surface-raised)}.quest-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--ui-border)}.quest-detail-eyebrow{margin-bottom:var(--space-1);font-size:var(--text-xs);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ui-accent-2)}.quest-detail-title{font-size:22px;font-weight:700;letter-spacing:.04em;color:var(--ui-text)}.quest-state{flex:none;padding:5px 9px;border:1px solid var(--ui-border-strong);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:700;color:var(--ui-text-muted);background:var(--ui-surface)}.quest-state.state-complete{border-color:var(--ui-good);color:var(--ui-good)}.quest-state.state-taken{border-color:var(--ui-primary);color:var(--ui-accent-2)}.quest-detail-meta{font-size:var(--text-sm);color:var(--ui-text-muted)}.quest-detail-text{font-size:var(--text-md);line-height:1.5;color:var(--ui-text)}.quest-completion{color:var(--ui-good)}.quest-heading{margin-bottom:var(--space-1);font-size:var(--text-sm);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-text-muted)}.quest-objectives,.quest-reward{padding:var(--space-3);background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--radius-sm)}.quest-detail .quest-objective.met{color:var(--ui-good)}.quest-objective-text{flex:1;min-width:0}.quest-objective{display:grid;gap:6px;padding:7px 0}.quest-objective-copy{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:var(--space-2)}.quest-objective-check{display:grid;place-items:center;width:16px;height:16px;border:1px solid var(--ui-border-strong);border-radius:50%;font-size:10px;color:var(--ui-good)}.quest-objective.met .quest-objective-check{border-color:var(--ui-good);background:#4ade8014}.quest-objective-track{height:3px;margin-left:26px;overflow:hidden;background:var(--ui-sunken);border-radius:var(--radius-full)}.quest-objective-fill{display:block;height:100%;background:var(--ui-primary);border-radius:inherit;transition:width var(--motion-slow) var(--ease)}.quest-objective.met .quest-objective-fill{background:var(--ui-good)}.quest-objective-count{flex:none}.quest-reward-line{font-size:var(--text-md);color:var(--ui-text)}.quest-actions{display:flex;gap:var(--space-2);margin-top:auto;padding-top:var(--space-2)}.quest-action{flex:1;min-height:38px;padding:0 var(--space-3);background:var(--ui-veil);border:1px solid var(--ui-border);border-radius:var(--radius-sm);color:var(--ui-text);font-size:var(--text-md);cursor:pointer;transition:background var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.quest-action:hover{background:var(--ui-hover);border-color:var(--ui-accent-2)}.quest-action.primary{border-color:transparent;background:var(--ui-primary);color:var(--ui-text);font-weight:600}.quest-action.primary:hover{background:var(--ui-primary-strong);border-color:transparent}.quest-empty{padding:var(--space-3);font-size:var(--text-md);color:var(--ui-text-muted)}.quest-footer{padding:var(--space-2) var(--space-4);border-top:1px solid var(--ui-border);font-size:var(--text-sm);color:var(--ui-text-muted)}.quest-step{position:relative;padding:var(--space-3) 0 var(--space-3) var(--space-1);border-top:1px solid var(--ui-border)}.quest-step:first-of-type{border-top:0;padding-top:0}.quest-step-head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.quest-step-mark{flex:none;display:grid;place-items:center;width:18px;height:18px;border:1px solid var(--ui-border-strong);border-radius:50%;font-size:var(--text-sm);color:var(--ui-text-muted)}.quest-step-title{font-size:var(--text-sm);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ui-text-muted)}.quest-step.is-current .quest-step-mark{border-color:var(--ui-accent-2);color:var(--ui-accent-2)}.quest-step.is-current .quest-step-title{color:var(--ui-text)}.quest-step.is-done .quest-step-mark{border-color:var(--ui-good);color:var(--ui-good)}.quest-step.is-ahead{opacity:.55}.quest-step-briefing{margin-bottom:var(--space-1);font-size:var(--text-sm);line-height:1.45;color:var(--ui-text-muted)}.quest-step-reward{margin-top:2px;font-size:var(--text-sm);color:var(--ui-good)}.quest-choice{display:grid;gap:2px;margin-top:6px;padding:6px 8px;border:1px solid var(--ui-border);border-radius:4px;background:var(--ui-sunken)}.quest-choice-name{font-weight:600}.quest-choice-facts{font-size:var(--text-sm);color:var(--ui-text-muted)}.quest-choice-reward{font-size:var(--text-sm);color:var(--ui-good)}.quest-choice button{margin-top:4px;justify-self:start}.quest-objective.optional,.quest-track.optional{color:var(--ui-text-muted)}.quest-objective.optional.met,.quest-track.optional.met{color:var(--ui-good)}.quest-leg{font-size:var(--text-sm);letter-spacing:.04em;text-transform:uppercase;color:var(--ui-text-muted)}.quest-reward-total{border-color:var(--ui-primary-soft);background:var(--ui-primary-soft-2)}.quest-reward-total .quest-reward-line{color:var(--ui-good);font-weight:600}.quest-turnin{display:flex;align-items:center;gap:var(--space-1);margin-top:var(--space-1);padding:var(--space-3);color:var(--ui-text);border-left:2px solid var(--ui-primary);background:var(--ui-veil);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--text-md);font-weight:600}.quest-row-step{color:var(--ui-text-faint);font-size:var(--text-sm);letter-spacing:.02em}#teleport .window-body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);min-height:0}.tp-panes{display:grid;grid-template-columns:320px 1fr;gap:var(--space-4);min-height:0}.tp-left,.tp-right{display:flex;flex-direction:column;gap:var(--space-3);min-height:0}.tp-search{width:100%;box-sizing:border-box;padding:var(--space-2) var(--space-3);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-md);color:var(--ui-text);font:inherit;font-size:var(--text-md);transition:border-color var(--motion-fast) var(--ease)}.tp-search::placeholder{color:var(--ui-text-faint)}.tp-search:focus{outline:none;border-color:var(--ui-focus)}.tp-search::-webkit-search-cancel-button{filter:invert(1);opacity:.4}.tp-list{flex:1;min-height:0;overflow-y:auto;padding-right:var(--space-1);display:flex;flex-direction:column;gap:1px;max-height:min(520px,calc(100vh - 260px))}.tp-group{padding:var(--space-4) var(--space-2) var(--space-1);color:var(--ui-text-faint);font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase}.tp-group:first-child{padding-top:var(--space-1)}.tp-row{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--ui-text);font:inherit;text-align:left;cursor:pointer;transition:background-color var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.tp-row:hover{background:var(--ui-hover)}.tp-row.on{background:var(--ui-primary-soft-2);border-color:var(--ui-primary)}.tp-row:focus-visible{outline:none;border-color:var(--ui-focus)}.tp-row.off{opacity:.45}.tp-row.off:hover{background:transparent}.tp-row-text{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.tp-name{font-size:var(--text-md);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-sub{color:var(--ui-text-muted);font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-level{flex:none;padding:2px var(--space-2);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-full);color:var(--ui-text-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;white-space:nowrap}.tp-row.on .tp-level{border-color:var(--ui-border-strong);color:var(--ui-text)}.tp-badge{flex:none;padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);white-space:nowrap}.tp-badge.here{background:var(--ui-primary-soft-2);color:var(--ui-accent-2)}.tp-badge.warn{background:var(--ui-sunken);color:var(--ui-text-faint)}.tp-row.here .tp-name{color:var(--ui-accent-2)}.tp-empty{padding:var(--space-5) var(--space-3);color:var(--ui-text-faint);font-size:var(--text-md);text-align:center}.tp-detail{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-lg)}.tp-head{display:flex;flex-direction:column;gap:var(--space-1)}.tp-head h3{margin:0;font-size:var(--text-lg);font-weight:600;letter-spacing:.01em}.tp-art{height:132px;border-radius:var(--radius-md);background-color:var(--ui-sunken);background-image:var(--tp-art);background-size:cover;background-position:center;border:1px solid var(--ui-border)}.tp-desc{margin:0;color:var(--ui-text-muted);font-size:var(--text-md);line-height:1.55}.tp-desc.long{color:var(--ui-text-faint);font-size:var(--text-sm)}.tp-facts{display:flex;flex-direction:column;gap:var(--space-1);margin-top:auto;padding-top:var(--space-3);border-top:1px solid var(--ui-border)}.tp-fact{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);padding:var(--space-1) 0}.tp-key{color:var(--ui-text-muted);font-size:var(--text-sm)}.tp-value{color:var(--ui-text);font-size:var(--text-md);font-variant-numeric:tabular-nums;text-align:right}.tp-value.req{color:var(--ui-warn)}.tp-note{padding:var(--space-2) var(--space-3);background:var(--ui-sunken);border-radius:var(--radius-md);color:var(--ui-text-muted);font-size:var(--text-sm)}.tp-travel-state{min-height:var(--text-lg);color:var(--ui-text-muted);font-size:var(--text-sm)}.tp-travel-state.active{color:var(--ui-accent-2)}.tp-travel-state.failed{color:var(--ui-bad)}.tp-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.tp-count{color:var(--ui-text-faint);font-size:var(--text-sm);font-variant-numeric:tabular-nums}@media(max-width:900px){#teleport{width:min(560px,calc(100vw / var(--ui-scale) - 2 * var(--space-4)))}.tp-panes{grid-template-columns:1fr}.tp-list{max-height:min(280px,calc(100vh - 420px))}.tp-art{height:96px}}#admin .window-body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);min-height:0}.ad-head{display:flex;align-items:baseline;justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap}.ad-build{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;order:-1;color:var(--ui-text-faint);font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--text-xs)}.ad-role{padding:2px var(--space-2);background:var(--ui-primary-soft-2);border-radius:var(--radius-full);color:var(--ui-accent-2);font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.ad-panes{display:grid;grid-template-columns:280px 1fr;gap:var(--space-4);min-height:0}.ad-left,.ad-detail{display:flex;flex-direction:column;gap:var(--space-3);min-height:0}.ad-input{box-sizing:border-box;padding:var(--space-2) var(--space-3);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-md);color:var(--ui-text);font:inherit;font-size:var(--text-md);transition:border-color var(--motion-fast) var(--ease)}.ad-input::placeholder{color:var(--ui-text-faint)}.ad-input:focus{outline:none;border-color:var(--ui-focus)}.ad-number{width:7ch;text-align:right;font-variant-numeric:tabular-nums}.ad-select{padding:var(--space-2) var(--space-3);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-md);color:var(--ui-text);font:inherit;font-size:var(--text-md)}.ad-list{flex:1;min-height:0;overflow-y:auto;padding-right:var(--space-1);display:flex;flex-direction:column;gap:1px;max-height:min(420px,calc(100vh - 300px))}.ad-row{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--ui-text);font:inherit;text-align:left;cursor:pointer;transition:background-color var(--motion-fast) var(--ease),border-color var(--motion-fast) var(--ease)}.ad-row:hover{background:var(--ui-hover)}.ad-row.on{background:var(--ui-primary-soft-2);border-color:var(--ui-primary)}.ad-row:focus-visible{outline:none;border-color:var(--ui-focus)}.ad-row.off{opacity:.45}.ad-row-text{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.ad-name{font-size:var(--text-md);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ad-sub{color:var(--ui-text-muted);font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ad-level{flex:none;padding:2px var(--space-2);background:var(--ui-sunken);border:1px solid var(--ui-border);border-radius:var(--radius-full);color:var(--ui-text-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.ad-badge{flex:none;padding:2px var(--space-2);background:var(--ui-primary-soft-2);border-radius:var(--radius-full);color:var(--ui-accent-2);font-size:var(--text-xs);white-space:nowrap}.ad-empty{padding:var(--space-4) var(--space-3);color:var(--ui-text-faint);font-size:var(--text-sm);text-align:center}.ad-detail{overflow-y:auto;padding:var(--space-4);background:var(--ui-surface-raised);border:1px solid var(--ui-border);border-radius:var(--radius-lg);max-height:min(480px,calc(100vh - 260px))}.ad-detail-head{display:flex;flex-direction:column;gap:var(--space-1)}.ad-detail-head h3{margin:0;font-size:var(--text-lg);font-weight:600}.ad-facts{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2) 0;border-top:1px solid var(--ui-border);border-bottom:1px solid var(--ui-border)}.ad-fact{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4)}.ad-key{color:var(--ui-text-muted);font-size:var(--text-sm)}.ad-value{color:var(--ui-text);font-size:var(--text-md);font-variant-numeric:tabular-nums}.ad-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.ad-group{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--ui-border)}.ad-group h4{margin:0;color:var(--ui-text-muted);font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase}.ad-row-fields{display:flex;gap:var(--space-2)}.ad-row-fields .ad-input:not(.ad-number){flex:1;min-width:0}.ad-hits{display:flex;flex-direction:column;gap:1px;max-height:160px;overflow-y:auto}.ad-hit{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:var(--space-1) var(--space-2);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--ui-text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer}.ad-hit:hover{background:var(--ui-hover)}.ad-hit.on{background:var(--ui-primary-soft-2);border-color:var(--ui-primary)}.ad-hit-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ad-hit-id{flex:none;color:var(--ui-text-faint);font-variant-numeric:tabular-nums}.ad-money{display:flex;gap:var(--space-3)}.ad-coin{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--ui-text-faint);font-size:var(--text-xs);font-weight:600}.ad-status{padding:var(--space-2) var(--space-3);background:var(--ui-sunken);border-radius:var(--radius-md);color:var(--ui-text-muted);font-size:var(--text-sm)}@media(max-width:900px){#admin{width:min(560px,calc(100vw / var(--ui-scale) - 2 * var(--space-4)))}.ad-panes{grid-template-columns:1fr}.ad-list{max-height:min(220px,calc(100vh - 460px))}}@media(max-width:1500px){#inventory{left:16px;top:96px}#character{left:auto;right:16px;top:96px;width:620px}#skills{left:16px;top:96px}#loot{right:16px;top:380px}}@media(max-width:1400px){.chat-log{height:150px}.chat-rail{left:auto;right:0;bottom:calc(100% + var(--space-1));flex-direction:row}#character{width:580px}.eq-doll{min-height:300px}}@media(max-width:1300px){#player{width:310px}#target{width:276px}#target.boss{width:330px}.chat-log{height:128px}#inventory{width:496px}#character{width:540px}.char-content{grid-template-columns:1fr 178px}#shop{width:580px}.product-list{max-height:360px}.skill-grid,.product-list{max-height:340px}}@media(max-height:800px){.quest-body{max-height:150px}.loot-list{max-height:210px}.bag-scroll{max-height:calc(min(var(--bag-visible-rows, 9),7)*60px)}.eq-doll{min-height:264px}#inventory,#character,#skills{top:74px}}:root[data-device=phone],:root[data-device=tablet]{--vw: calc(1vw / var(--ui-scale));--vh: calc(1vh / var(--ui-scale))}[data-input=touch] .titlebar .close,[data-input=touch] .rpgbutton,[data-input=touch] .start-item,[data-input=touch] .char-row,[data-input=touch] #chat .tab,[data-input=touch] .map-rail .rail-button{min-height:40px}[data-input=touch] .titlebar .close{min-width:40px}[data-input=touch] #tooltip-layer{display:none}[data-input=touch] #chat{opacity:1}[data-device=tablet] #window-layer .window{max-width:calc(94 * var(--vw));max-height:calc(92 * var(--vh))}[data-device=tablet] #window-layer .window>.window-body{overflow-y:auto;max-height:calc(92 * var(--vh) - 44px)}[data-device=tablet] #character,[data-device=tablet] #inventory,[data-device=tablet] #shop,[data-device=tablet] #skills{width:min(94 * var(--vw),620px)}:root[data-device=phone]{--hud-edge: 6px;--map-size: 84px;--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}[data-device=phone] #hud-layer .window{min-width:0}[data-device=phone] #player{left:calc(var(--hud-edge) + var(--safe-left));width:min(54 * var(--vw),236px)}[data-device=phone] #player .portrait-mount{width:52px;height:58px}[data-device=phone] #target{left:calc(var(--hud-edge) + var(--safe-left));top:calc(var(--hud-edge) + 72px);transform:none;width:min(60 * var(--vw),260px)}[data-device=phone] #target.boss{width:min(72 * var(--vw),300px)}[data-device=phone] #map{right:calc(var(--hud-edge) + var(--safe-right))}[data-device=phone] .map-rail{right:0;left:auto;top:calc(100% + var(--space-1));transform:none;flex-direction:row}[data-device=phone] #quest{top:calc(var(--map-size) + 122px);width:calc(var(--map-size) + 96px)}[data-device=phone] #bottomhud{width:calc(96 * var(--vw));bottom:calc(var(--space-1) + var(--safe-bottom))}[data-device=phone] #bottomhud .portrait-mount{width:52px;height:52px}[data-device=phone] .vitals-fp .rpgbar{width:96px}[data-device=phone] #chat{left:calc(var(--hud-edge) + var(--safe-left));bottom:calc(var(--hud-edge) + var(--safe-bottom) + 124px);width:calc(96 * var(--vw) - 78px)}[data-device=phone] .chat-log{height:84px}[data-device=phone] .chat-rail{left:auto;right:var(--space-1);top:var(--space-1);bottom:auto;flex-direction:row}[data-device=phone] .start-menu{width:min(80 * var(--vw),260px)}[data-device=phone] #window-layer .window{inset:50% auto auto 50%!important;transform:translate(-50%,-50%)!important;width:min(96 * var(--vw),560px)!important;max-width:calc(96 * var(--vw));max-height:calc(90 * var(--vh))}[data-device=phone] #window-layer .window>.window-body{overflow-y:auto;max-height:calc(90 * var(--vh) - 44px)}[data-device=phone] .login-card,[data-device=phone] .login-card:has(.create-preview-columns),[data-device=phone] .login-card:has(.char-columns),[data-device=phone] .server-select-card{width:min(96 * var(--vw),420px);max-height:calc(94 * var(--vh))}[data-device=phone] .login-card>.window-body,[data-device=phone] .server-select-card>.window-body{overflow-y:auto;max-height:calc(94 * var(--vh) - 48px)}[data-device=phone] .char-list{max-height:calc(38 * var(--vh))}[data-device=phone] .char-columns{grid-template-columns:minmax(0,1fr);min-height:auto}[data-device=phone] .char-world{min-height:calc(36 * var(--vh));border-right:0;border-bottom:1px solid var(--ui-border)}[data-device=phone] .char-world .char-stage{height:auto;min-height:0}[data-device=phone] .char-scene-name{font-size:24px}[data-device=phone] .char-scene-hint{display:none}[data-device=phone] .quest-split{grid-template-columns:minmax(0,1fr);max-height:none}[data-device=phone] .quest-list{max-height:calc(28 * var(--vh));border-right:0;border-bottom:1px solid var(--ui-border)}[data-device=phone] .quest-detail{overflow:visible}[data-input=touch] .login-body input,[data-input=touch] .char-name-input{height:44px;font-size:16px}[data-device=phone] .char-stage{height:calc(30 * var(--vh));min-height:160px}.touch-controls{position:absolute;right:calc(var(--hud-edge) + env(safe-area-inset-right,0px));bottom:calc(var(--hud-edge) + 88px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:var(--space-2);pointer-events:auto}.touch-controls.hidden{display:none}.touch-button{width:52px;height:52px;display:grid;place-items:center;padding:0;border:1px solid var(--ui-border);border-radius:var(--radius-full);background:var(--ui-veil-strong);color:var(--ui-text);box-shadow:var(--shadow-popup);opacity:.82}.touch-button:active{background:var(--ui-primary-soft);opacity:1;transform:scale(.94)}.touch-button .ui-icon{width:24px;height:24px}.touch-jump{width:62px;height:62px}.touch-jump .ui-icon{width:26px;height:26px}.chat-collapsed .chat-log{display:none}[data-device=phone] .touch-controls{bottom:calc(var(--hud-edge) + 124px + env(safe-area-inset-bottom,0px))}[data-device=phone] .settings-main{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}[data-device=phone] .settings-nav{display:flex;gap:var(--space-1);overflow-x:auto;overflow-y:hidden;padding:var(--space-2);border-right:0;border-bottom:1px solid var(--ui-border)}[data-device=phone] .settings-nav button{width:auto;white-space:nowrap;border-left:0;border-bottom:2px solid transparent}[data-device=phone] .settings-nav button.active{border-bottom-color:var(--ui-primary)}[data-device=phone] .setting-control{flex-wrap:wrap;justify-content:flex-start;gap:var(--space-2)}@media(max-height:480px){[data-device=phone] #bottomhud{width:min(calc(96 * var(--vw)),560px)}[data-device=phone] #chat{width:calc(56 * var(--vw));bottom:calc(var(--hud-edge) + var(--safe-bottom) + 172px)}[data-device=phone] .chat-log{height:30px}[data-device=phone] #quest{top:var(--hud-edge);right:calc(var(--map-size) + 2 * var(--hud-edge) + var(--safe-right));max-height:calc(100 * var(--vh) - 240px)}[data-device=phone] #quest .window-body{overflow-y:auto}[data-device=phone] .touch-controls{display:grid;grid-template-columns:repeat(2,auto);justify-items:center;align-items:center}}
