:root{--bg: #07070e;--panel: #0d0e1a;--panel-2: #13152a;--panel-3: #1b1e3a;--line: #252a4d;--line-2: #343a6b;--text: #eef1ff;--muted: #9aa1cf;--faint: #646b98;--accent: #22c3ff;--accent-strong: #6fd8ff;--accent-ink: #031019;--accent-2: #b847ff;--accent-3: #3d6bff;--glow: 0 0 14px rgba(34, 195, 255, .35);--danger: #d64541;--ok: #6fbf73;--lvl-critical: #f2c94c;--lvl-special: #57d0a0;--lvl-success: #8fc27f;--lvl-failure: #a79c88;--lvl-fumble: #ef5b57;--radius: 8px;--font: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--display: "Chakra Petch", Inter, system-ui, sans-serif;--pixel: Silkscreen, "Chakra Petch", monospace;--left-w: 290px;--right-w: 340px;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 var(--font);overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}[hidden]{display:none!important}h3,h4{margin:0}kbd{font:600 11px var(--font);background:var(--panel-3);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:4px;padding:0 5px}input:not([type=checkbox]):not([type=range]):not([type=color]),select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 8px;min-width:0;width:100%}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input[type=number]{font-variant-numeric:tabular-nums}.sheet input[type=number],.init-list input[type=number],.inspector input[type=number]{appearance:textfield;-moz-appearance:textfield}.sheet input[type=number]::-webkit-inner-spin-button,.init-list input[type=number]::-webkit-inner-spin-button,.inspector input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=color]{width:36px;height:30px;padding:2px;border:1px solid var(--line);border-radius:6px;background:var(--bg);cursor:pointer}input[type=range]{width:100%;accent-color:var(--accent)}input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;margin:0}textarea{resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px solid var(--line-2);border-radius:6px;background:var(--panel-3);cursor:pointer;white-space:nowrap;font-weight:500;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:#262b52;border-color:#46509a}.btn:disabled{opacity:.45;cursor:default}.btn.small{padding:3px 9px;font-size:13px}.btn.ghost{background:transparent}.btn.ghost:hover:not(:disabled){background:var(--panel-3)}.btn.accent{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600;box-shadow:var(--glow)}.btn.accent:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong)}.btn.danger{color:#ffb3ae;border-color:#6b2f2c;background:#3a1d1b}.btn.danger:hover:not(:disabled){background:#522522;border-color:#8a3b37}summary.btn{list-style:none}summary.btn::-webkit-details-marker{display:none}.icon-btn{display:inline-grid;place-items:center;width:28px;height:28px;flex:none;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;color:var(--muted)}.icon-btn:hover:not(:disabled){background:var(--panel-3);color:var(--text);border-color:var(--line)}.icon-btn:disabled{opacity:.35;cursor:default}.row{display:flex;gap:8px;align-items:flex-end}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between;align-items:center}.row.end{justify-content:flex-end}.btn-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.btn-row.end{justify-content:flex-end}.spacer{flex:1}.field{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.field>span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.field.narrow{flex:none}.field.inline{flex-direction:row;align-items:center;gap:6px;flex:none}.field.inline input{width:64px!important}.check{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none}.check.small{font-size:12px;color:var(--muted)}.hint{color:var(--muted);font-size:12px;margin:8px 0 0}.muted{color:var(--muted)}.empty{color:var(--faint);font-size:13px;padding:6px 2px;list-style:none;margin:0}.range-row{display:flex;gap:8px;align-items:center}.range-row input[type=number]{width:70px!important;flex:none}.topbar{height:52px;display:flex;align-items:center;gap:10px;padding:0 10px;background:linear-gradient(#0f1020,#0a0b16);border-bottom:1px solid var(--line);position:relative;z-index:20}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--accent) 25%,var(--accent-2) 75%,transparent);opacity:.7}.brand{display:flex;align-items:center;gap:8px;flex:none}.brand-logo{width:34px;height:34px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(34,195,255,.45))}.brand-name{font:400 18px var(--pixel);letter-spacing:.04em;white-space:nowrap;color:#fff;text-shadow:-1.5px 0 rgba(34,195,255,.85),1.5px 0 rgba(184,71,255,.85)}.brand-name span{font:600 12px var(--font);color:var(--muted);text-shadow:none;margin-left:4px;letter-spacing:.02em}.scene-name{max-width:260px;background:transparent!important;border-color:transparent!important;font-weight:600}.scene-name:hover,.scene-name:focus{border-color:var(--line)!important;background:var(--bg)!important}.topbar-actions{display:flex;gap:6px;align-items:center}.mode-badge{font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);border-radius:99px;padding:2px 10px}.menu{position:relative}.menu-list{position:absolute;right:0;top:calc(100% + 6px);min-width:230px;padding:6px;background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:0 12px 30px #00000080;display:flex;flex-direction:column}.menu-list button{text-align:left;padding:7px 10px;border:0;border-radius:5px;background:none;cursor:pointer}.menu-list button:hover{background:var(--panel-3)}.menu-list hr{border:0;border-top:1px solid var(--line);margin:5px 0;width:100%}.danger-text{color:#ff9f99}.layout{height:calc(100% - 52px);display:grid;grid-template-columns:var(--left-w) minmax(0,1fr) var(--right-w);transition:grid-template-columns .18s ease}body.left-collapsed{--left-w: 0px}body.right-collapsed{--right-w: 0px}body.player-view .layout{grid-template-columns:minmax(0,1fr) var(--right-w)}body.player-view .gm-only{display:none!important}body:not(.player-view) .player-only{display:none!important}body.player-view .panel-toggle[data-toggle=left]{display:none}body.online .local-only,body:not(.online) .online-only,body.readonly .interactive{display:none!important}.panel{background:var(--panel);overflow:hidden;min-width:0;display:flex;flex-direction:column}.panel-left{border-right:1px solid var(--line)}.panel-right{border-left:1px solid var(--line)}body.left-collapsed .panel-left,body.right-collapsed .panel-right{border:0}.panel-title{font:700 15px var(--display);letter-spacing:.02em}.panel-title small{font:400 12px var(--font);color:var(--muted)}.tabs{display:flex;border-bottom:1px solid var(--line);flex:none}.tabs button{flex:1;padding:10px 6px;background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);cursor:pointer;font-weight:600;font-size:13px}.tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.tabs button:hover{color:var(--text)}.tab-panel{padding:12px;overflow-y:auto;flex:1;min-width:var(--left-w)}.list-title{margin:16px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.group{padding:12px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:9px}.group:first-child{padding-top:0}.group:last-child{border-bottom:0}.group h4{font:700 14px var(--display);color:var(--accent)}.group p{margin:0}.char-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.char-item{display:flex;align-items:center;gap:10px;padding:6px 6px 6px 8px;border:1px solid transparent;border-radius:var(--radius);background:var(--panel-2);cursor:pointer}.char-item:hover{border-color:var(--line-2);background:var(--panel-3)}.char-item:active{cursor:grabbing}.avatar{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5);background-size:cover;background-position:center;border:2px solid rgba(0,0,0,.4)}.char-meta{display:flex;flex-direction:column;min-width:0;flex:1}.char-meta strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.char-sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status{font-weight:600}.st-ok{color:var(--ok)}.st-hurt{color:#e0a83a}.st-out{color:#f08a4b}.st-dying{color:var(--danger)}table.ref{width:100%;border-collapse:collapse;font-size:13px}table.ref td{padding:4px 6px 4px 0;border-bottom:1px solid var(--line);vertical-align:top}table.ref tr:last-child td{border-bottom:0}table.ref.compact td:nth-child(odd){color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.stage{position:relative;overflow:hidden;min-width:0;background:radial-gradient(circle at 50% 40%,rgba(255,255,255,.03),transparent 60%),repeating-linear-gradient(45deg,#08080f 0 12px,#0a0a14 12px 24px)}#map{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:default}#map[data-tool=measure],#map[data-tool=draw],#map[data-tool=fog-reveal],#map[data-tool=fog-hide],#map[data-tool=ping],#map[data-tool=wall],#map[data-tool=door]{cursor:crosshair}#map[data-tool=erase]{cursor:cell}#map.pan-ready{cursor:grab!important}#map.panning{cursor:grabbing!important}.toolbar{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;gap:3px;align-items:center;padding:5px;background:#0d0e1aeb;backdrop-filter:blur(6px);border:1px solid var(--line-2);border-radius:10px;box-shadow:0 8px 24px #00000073;z-index:5}.tool{width:36px;height:36px;border-radius:7px;border:1px solid transparent;background:transparent;cursor:pointer;font-size:16px;line-height:1;color:var(--text);display:grid;place-items:center}.tool:hover{background:var(--panel-3)}.tool[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);box-shadow:var(--glow)}.tool-color{width:30px!important;height:26px!important;margin:2px 0}.tool-sep{width:24px;height:1px;background:var(--line-2);margin:3px 0}.stage-hint{position:absolute;right:12px;bottom:10px;font-size:11.5px;color:var(--muted);background:#07070ebf;padding:3px 9px;border-radius:99px;pointer-events:none}.inspector{position:absolute;right:12px;top:12px;width:min(380px,calc(100% - 80px));padding:10px 12px;display:flex;flex-direction:column;gap:9px;background:#0d0e1af5;backdrop-filter:blur(6px);border:1px solid var(--line-2);border-radius:10px;box-shadow:0 10px 30px #00000080;z-index:6}.insp-head{display:flex;gap:6px;align-items:center}.insp-name{font-weight:600}.insp-hp{display:flex;gap:6px;align-items:center}.insp-hp>span{min-width:76px}.insp-hp input{width:70px!important}.combat-hud{position:absolute;right:12px;bottom:36px;width:min(560px,calc(100% - 24px));padding:10px 12px;display:flex;flex-direction:column;gap:9px;background:#0d0e1af5;backdrop-filter:blur(6px);border:1px solid #6b2f2c;border-radius:10px;box-shadow:0 10px 30px #00000080;z-index:6}.hud-head{display:flex;align-items:center;gap:10px}.hud-attacker{display:flex;align-items:center;gap:7px;min-width:0;flex:none;max-width:40%}.hud-attacker strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hud-attacker .muted{font-size:12px;white-space:nowrap}.hud-dot{width:12px;height:12px;border-radius:50%;flex:none;border:2px solid rgba(0,0,0,.4)}.hud-arrow{color:var(--faint);font-size:18px}.hud-target{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:4px 4px 4px 9px;border-radius:8px;background:#2c1714;border:1px solid #6b2f2c}.hud-target>div{display:flex;flex-direction:column;min-width:0;flex:1}.hud-target strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hud-target .muted{font-size:12px}.hud-target.empty{color:var(--muted);font-size:13px;background:var(--panel-2);border-style:dashed;border-color:var(--line-2);padding:8px 10px}.hud-reticle{color:#ff4d4d;font-size:20px;line-height:1}.hud-weapons{display:flex;flex-wrap:wrap;gap:6px}.hud-weapons p{margin:0;font-size:13px}.hud-weapon{display:grid;grid-template-columns:auto auto;gap:0 10px;align-items:baseline;text-align:left;padding:6px 10px;border-radius:8px;cursor:pointer;background:var(--panel-3);border:1px solid var(--line-2)}.hud-weapon:hover:not(:disabled){background:#4a2420;border-color:#c0504d}.hud-weapon:disabled{opacity:.45;cursor:not-allowed}.hud-weapon.too-far{border-style:dashed}.hud-wname{font-weight:600}.hud-wpct{font-weight:700;color:var(--accent-strong);text-align:right;font-variant-numeric:tabular-nums}.hud-wmeta{grid-column:1 / -1;font-size:11.5px;color:var(--muted);font-family:ui-monospace,Consolas,monospace}.hud-weapon.too-far .hud-wmeta{color:#e0a83a}.hud-options{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.hud-options select{width:auto!important;padding:3px 6px!important}.msg-attack{border-left:3px solid #c0504d}.atk-head{font-size:13.5px}.atk-sub{font-size:12px;margin-bottom:4px}.atk-row{display:flex;align-items:baseline;gap:8px;margin-top:3px}.atk-k{width:58px;flex:none;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.atk-v{display:inline-flex;align-items:baseline;gap:6px;flex-wrap:wrap}.d100.small{font-size:19px}.atk-note{font-size:12px;color:var(--muted);font-style:italic;margin-top:3px}.atk-outcome{margin-top:6px;font-weight:700;letter-spacing:.02em}.atk-hit{color:#ff8f7a}.atk-miss{color:var(--lvl-failure)}.atk-defended{color:var(--lvl-special)}.atk-fumble{color:var(--lvl-fumble)}.atk-final{margin-top:5px}.atk-final b{font:700 18px var(--display);color:#ff8f7a}.atk-hp{margin-top:2px;font-variant-numeric:tabular-nums}.atk-flag{margin-top:3px;font-weight:700;color:var(--lvl-fumble)}.panel-right>section{min-width:var(--right-w)}.init-panel{padding:12px;border-bottom:1px solid var(--line);flex:none;max-height:42%;display:flex;flex-direction:column;gap:8px}.init-panel>div{overflow-y:auto;display:flex;flex-direction:column;gap:8px}.init-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.init-round{font-weight:600;color:var(--accent)}.init-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.init-item{display:flex;align-items:center;gap:8px;padding:3px 4px 3px 8px;border-radius:6px;background:var(--panel-2);border:1px solid transparent}.init-item.current{border-color:var(--accent);background:#22c3ff1f}.init-item.down .init-name{text-decoration:line-through;color:var(--faint)}.init-dot{width:10px;height:10px;border-radius:50%;flex:none}.init-name{flex:1;text-align:left;background:none;border:0;padding:2px 0;cursor:pointer;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.init-name:hover{color:var(--accent-strong)}.init-hp{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.init-dex{width:52px!important;text-align:center;padding:2px 4px!important;font-variant-numeric:tabular-nums}span.init-dex{color:var(--muted)}.init-tools{justify-content:flex-start}.chat-panel{flex:1;display:flex;flex-direction:column;min-height:0}.chat-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px 6px;gap:8px}.author{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.author input{width:110px!important;padding:3px 7px!important}.chat-log{flex:1;overflow-y:auto;padding:4px 12px 12px;display:flex;flex-direction:column;gap:7px}.msg{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:7px 10px;font-size:13px;animation:msg-in .2s ease}@keyframes msg-in{0%{opacity:0;transform:translateY(4px)}}.msg.gm-only{border-style:dashed;border-color:#5a3a8a;background:#160f26}.msg-system{color:var(--muted);font-style:italic}.msg.msg-system{background:transparent;border-color:transparent;padding:2px 4px}.msg-meta{display:flex;gap:8px;align-items:baseline;margin-bottom:2px}.msg-author{font-weight:600;color:var(--accent)}.msg-time{margin-left:auto;color:var(--faint);font-size:11px;font-variant-numeric:tabular-nums}.msg-text{white-space:pre-wrap;overflow-wrap:anywhere}.msg-label{font-weight:600}.tag{font-size:11px;font-weight:600;color:var(--muted);border:1px solid var(--line-2);border-radius:4px;padding:0 5px;margin-left:4px}.tag-gm{color:#d39bff;border-color:#5a3a8a}.roll-line{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:4px;font-variant-numeric:tabular-nums}.dice-group{display:inline-flex;align-items:center;gap:4px;color:var(--muted)}.dice{display:inline-flex;gap:3px}.die{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 4px;border-radius:5px;background:var(--panel-3);border:1px solid var(--line-2);color:var(--text);font-weight:600;font-size:12px}.die-max{border-color:#8a7330;color:var(--lvl-critical)}.die-min{color:#e48a85}.eq{color:var(--faint)}.roll-total{font:700 22px var(--display);color:var(--accent-strong);margin-left:4px}.check-line{display:flex;align-items:baseline;gap:8px;margin-top:4px;flex-wrap:wrap}.d100{font:700 26px/1 var(--display);font-variant-numeric:tabular-nums}.thresholds{font-size:11px;color:var(--faint);margin-top:2px;font-variant-numeric:tabular-nums}.lvl{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.03em;padding:1px 8px;border-radius:99px;border:1px solid currentColor}.lvl-critical{color:var(--lvl-critical);background:#f2c94c1f}.lvl-special{color:var(--lvl-special);background:#57d0a01a}.lvl-success{color:var(--lvl-success)}.lvl-failure{color:var(--lvl-failure)}.lvl-fumble{color:var(--lvl-fumble);background:#ef5b571f}.loc{margin-top:5px}.dmg{margin-top:6px;padding:6px 8px;background:var(--bg);border-radius:6px;border:1px solid var(--line)}.dmg-head{display:flex;align-items:center;justify-content:space-between;font-weight:600}.dmg-total{font:700 22px var(--display);color:#ff8f7a}.dmg-part{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:12px;margin-top:3px}.dmg-note{margin-top:4px;font-size:12px;color:#e4c27a}.dice-tray{border-top:1px solid var(--line);padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px;background:#0a0b17}.quick-dice{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.quick-dice button{padding:6px 0;border-radius:6px;border:1px solid var(--line-2);background:var(--panel-3);cursor:pointer;font-weight:600;font-size:12.5px}.quick-dice button:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.quick-dice .d100-btn{color:var(--accent-strong)}.tray-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.inline-form{display:flex;gap:4px}.inline-form input{width:58px!important;padding:3px 6px!important}.chat-form{display:flex;gap:6px}.window{position:fixed;max-height:calc(100vh - 70px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 20px 60px #0009;overflow:hidden}.win-header{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 14px;background:linear-gradient(#171a33,#111329);border-bottom:1px solid var(--line);cursor:move;user-select:none;touch-action:none}.win-title{flex:1;font:700 15px var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.win-body{overflow-y:auto;padding:0}.sheet{display:flex;flex-direction:column}.sheet-section{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:10px}.sheet-section h3{font:700 13px var(--font);text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}.sheet-head{display:flex;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--panel-2)}.portrait{width:84px;height:84px;flex:none;border-radius:10px;border:2px solid var(--line-2);cursor:pointer;background-size:cover!important;background-position:center!important;font:700 34px var(--display);color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.5)}.portrait:hover{border-color:var(--accent)}.sheet-id{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}.name-input{font:700 20px var(--display)!important;padding:4px 8px!important}.char-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.char-box{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px}.char-box label{font-weight:700;font-size:12px;color:var(--muted);letter-spacing:.04em;cursor:help}.char-box input{text-align:center;font:700 18px var(--display)!important;padding:2px!important}.mini-roll{width:100%;font-size:11.5px;padding:2px 0;border-radius:4px;border:1px solid var(--line-2);background:var(--panel-3);cursor:pointer;text-align:center;font-variant-numeric:tabular-nums}.mini-roll:hover:not(.disabled){background:var(--accent);color:var(--accent-ink)}.mini-roll.disabled{color:var(--faint);cursor:default;border-color:transparent;background:none}.derived{display:grid;grid-template-columns:minmax(200px,1.6fr) minmax(130px,1.1fr) repeat(3,minmax(0,.7fr));gap:8px}.stat{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:5px;min-width:0}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.stat-value{display:flex;align-items:center;gap:4px;white-space:nowrap}.stat-input{width:56px!important;text-align:center;font:700 17px var(--display)!important;padding:2px!important}.stat .max{color:var(--muted);font-variant-numeric:tabular-nums}.stat-big{font:700 18px var(--display)}.stat-sub{font-size:12px;color:var(--muted)}.dmg-apply{display:flex;gap:4px}.dmg-apply input{width:58px!important;padding:2px 6px!important}.sticky-roll{position:sticky;top:0;z-index:2;background:#0d0e1af7;border-bottom:1px solid var(--line);padding:8px 16px}.roll-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.segmented{display:inline-flex;border:1px solid var(--line-2);border-radius:7px;overflow:hidden}.segmented button{border:0;background:transparent;padding:4px 10px;cursor:pointer;font-size:13px;color:var(--muted)}.segmented button+button{border-left:1px solid var(--line-2)}.segmented button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}.weapon-table{width:100%;border-collapse:collapse;font-size:13px}.weapon-table th{text-align:left;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:0 4px 4px}.weapon-table td{padding:3px 4px;vertical-align:middle}.weapon-table input,.weapon-table select{padding:3px 6px!important}.weapon-table td.pct{font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent-strong);text-align:center}.weapon-table td.actions{white-space:nowrap;display:flex;gap:3px;align-items:center}.weapon-table td:nth-child(5) select{min-width:108px}.dmg-input{min-width:92px;font-family:ui-monospace,Consolas,monospace!important;font-size:12.5px!important}.range-input{width:74px!important}.add-select{margin-top:8px;width:auto!important}.skills{display:grid;grid-template-columns:1fr 1fr;gap:4px 18px}.skill-col{display:flex;flex-direction:column;gap:1px}.skill-col h4{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:4px 0}.skill{display:flex;align-items:center;gap:6px;padding:1px 2px;border-radius:5px}.skill:hover{background:var(--panel-2)}.skill-name{flex:1;text-align:left;background:none;border:0;padding:3px 0;cursor:pointer;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-name:hover{color:var(--accent-strong);text-decoration:underline;text-underline-offset:3px}.skill-base{font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;min-width:40px;text-align:right}.skill-val{width:54px!important;text-align:center;padding:2px 4px!important;font-variant-numeric:tabular-nums}.skill-val.trained{color:var(--accent-strong);font-weight:700}.skill-del{width:22px;height:22px;opacity:0;font-size:11px}.skill:hover .skill-del,.skill-del:focus-visible{opacity:1}.filter{max-width:240px}.add-skill{margin-top:8px;align-items:center}.add-skill input[type=number]{width:70px!important;flex:none}.add-skill select{width:auto!important}.notes{min-height:80px}.sheet-foot{display:flex;gap:8px;flex-wrap:wrap;padding:12px 16px 16px}.dialog{background:var(--panel);color:var(--text);border:1px solid var(--line-2);border-radius:12px;padding:18px;width:min(420px,calc(100vw - 32px));box-shadow:0 20px 60px #0009}.dialog::backdrop{background:#0000008c}.dialog form{display:flex;flex-direction:column;gap:12px}.dialog h3{font:700 18px var(--display)}.toast{position:fixed;left:50%;top:64px;transform:translate(-50%,-20px);background:var(--panel-3);border:1px solid var(--line-2);border-radius:8px;padding:9px 16px;box-shadow:0 10px 30px #00000080;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:10000;max-width:calc(100vw - 32px)}.toast.show{opacity:1;transform:translate(-50%)}.toast.error{border-color:#8a3b37;color:#ffc2bd}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--faint);flex:none}.dot.on{background:var(--ok);box-shadow:0 0 0 3px #6fbf7326}.net-status{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums;padding:3px 10px;border:1px solid var(--line);border-radius:99px}.net-status[data-status=online] .dot{background:var(--ok)}.net-status[data-status=connecting] .dot{background:#e0a83a}.net-status[data-status=offline] .dot{background:var(--danger)}.net-status[data-status=offline]{color:#ffb3ae;border-color:#6b2f2c}.badge{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:var(--danger);color:#fff;font-size:11px;font-weight:700}.menu-note{margin:4px 8px;font-size:13px}.lobby{position:fixed;inset:0;z-index:9000;display:grid;place-items:center;padding:16px;overflow-y:auto;background:radial-gradient(ellipse at 30% 0%,rgba(34,195,255,.14),transparent 55%),radial-gradient(ellipse at 75% 100%,rgba(184,71,255,.12),transparent 55%),repeating-linear-gradient(45deg,#08080f 0 12px,#0a0a14 12px 24px)}.lobby-card{width:min(640px,100%);background:var(--panel);border:1px solid var(--line-2);border-radius:14px;padding:24px;display:flex;flex-direction:column;gap:14px;box-shadow:0 30px 80px #0009}.lobby-card>div{display:flex;flex-direction:column;gap:14px}.lobby-brand{align-items:center;gap:6px!important;text-align:center}.lobby-logo{width:min(220px,60vw);height:auto;filter:drop-shadow(0 0 18px rgba(34,195,255,.3))}.lobby-brand h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.lobby-brand p{margin:2px 0 0}.lobby-conn:empty{display:none}.lobby-conn{margin:0}.lobby-error{margin:0;padding:8px 12px;border-radius:8px;background:#3a1d1b;border:1px solid #6b2f2c;color:#ffc2bd}#lobby-takeover{align-self:flex-start}.lobby-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.lobby-option{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}.lobby-option h2,.wait-title{margin:0;font:700 18px var(--display)}.lobby-option p{margin:0;font-size:13px;flex:1}.wait-title{display:flex;align-items:center;gap:10px;color:var(--accent)}#lobby-wait p{margin:0}#lobby-leave{align-self:flex-start}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner,.msg{animation:none}}.lobby-people{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.lobby-people li{display:flex;align-items:center;gap:8px}.lobby-panel{padding:14px 16px 18px;display:flex;flex-direction:column;gap:10px}.lobby-panel h4{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-top:6px}.lobby-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.lobby-row{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;background:var(--panel-2);border:1px solid var(--line)}.lobby-row.wrap{flex-wrap:wrap}.lobby-row strong{min-width:70px}.lobby-row select{width:auto!important;flex:1;min-width:120px}.chips{display:inline-flex;flex-wrap:wrap;gap:4px;flex:1}.chip{display:inline-flex;align-items:center;gap:4px;padding:1px 4px 1px 9px;border-radius:99px;font-size:12.5px;background:#22c3ff1f;border:1px solid #2a6d93}.chip button{border:0;background:none;color:var(--muted);cursor:pointer;padding:0 3px;border-radius:50%}.chip button:hover{color:#fff;background:#ffffff1a}body.player-view .chat-log{padding-bottom:16px}body.player-view .toolbar{top:auto;bottom:12px}@media (max-width: 900px){.layout{grid-template-columns:minmax(0,1fr)!important;position:relative}.panel{position:absolute;top:0;bottom:0;z-index:15;box-shadow:0 0 40px #0009}.panel-left{left:0;width:min(300px,88vw);--left-w: min(300px, 88vw)}.panel-right{right:0;width:min(360px,92vw);--right-w: min(360px, 92vw)}body.left-collapsed .panel-left,body.right-collapsed .panel-right{display:none}.brand-name span,.topbar-actions .btn:not(summary){display:none}.scene-name{max-width:140px}.stage-hint{display:none}.char-grid{grid-template-columns:repeat(4,1fr)}.lobby-options{grid-template-columns:1fr}.combat-hud{bottom:12px}.hud-head{flex-wrap:wrap}.hud-attacker{max-width:none}.net-status{padding:3px 7px}.derived{grid-template-columns:1fr 1fr}.skills{grid-template-columns:1fr}.weapon-table thead{display:none}.weapon-table tr{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:6px 0;border-bottom:1px solid var(--line)}.weapon-table td.actions{grid-column:1 / -1}}.dice3d{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:8000}.dice3d[hidden]{display:none}.small{font-size:12px}.item-list,.spell-list{display:flex;flex-direction:column;gap:3px}.item-row,.spell-row{display:flex;align-items:center;gap:8px;padding:2px;border-radius:6px}.item-row:hover,.spell-row:hover{background:var(--panel-2)}.item-cat{width:22px;height:22px;flex:none;display:inline-grid;place-items:center;border-radius:5px;font:700 11px var(--font);background:var(--panel-3);color:var(--muted)}.item-cat.cat-weapon{background:#4a2420;color:#ffb3ae}.item-cat.cat-armor{background:#22364a;color:#a9cdf0}.item-cat.cat-gear{background:#33301f;color:#e3d39a}.item-name{flex:1 1 180px;min-width:0;padding:3px 6px!important}.item-desc{flex:1 1 140px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-qty{width:58px!important;flex:none;text-align:center;padding:3px 4px!important}.spell-row .skill-name{flex:none;max-width:45%}.spell-meta{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library{display:flex;flex-direction:column;gap:10px;padding:12px 16px 16px}.lib-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.lib-toolbar .filter{flex:1;max-width:none;min-width:160px}.chips{display:flex;flex-wrap:wrap;gap:5px}.chip{border:1px solid var(--line-2);background:transparent;color:var(--muted);border-radius:999px;padding:3px 11px;font-size:12.5px;cursor:pointer}.chip:hover{color:var(--text);border-color:var(--muted)}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.lib-target{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px}.lib-target select{width:auto!important;min-width:180px}.lib-list{display:flex;flex-direction:column;gap:6px}.lib-row{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}.lib-row:hover{border-color:var(--line-2)}.lib-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.lib-name{font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.lib-meta{font-size:12px;color:var(--muted)}.lib-desc{font-size:12.5px;color:var(--text);opacity:.85}.lib-actions{display:flex;gap:2px;align-items:center;flex:none}.lib-actions .btn{margin-right:4px}.lib-empty{padding:20px 0;text-align:center}.lib-form{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:14px 18px;padding:14px 16px 16px}.lib-form-grid{display:flex;flex-direction:column;gap:10px;min-width:0}.lib-form-side{display:flex;flex-direction:column;gap:8px}.lib-form-side h4{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.lib-preview{padding:12px;border:1px dashed var(--line-2);border-radius:8px;background:var(--panel-2);display:flex;flex-direction:column;gap:4px}.lib-group{display:flex;flex-direction:column;gap:10px;padding:10px;border-radius:8px;background:var(--panel-2);border:1px solid var(--line)}.lib-group[hidden],.field[hidden]{display:none}.lib-group .hint{margin:0}.lib-form textarea{resize:vertical}.form-error{grid-column:1 / -1;margin:0;color:#ffb3ae;font-size:13px}.form-error[hidden]{display:none}.lib-form-foot{grid-column:1 / -1}.creator{display:flex;flex-direction:column;min-height:0}.cr-steps{display:flex;gap:4px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--panel-2);overflow-x:auto}.cr-steps button{display:flex;align-items:center;gap:7px;flex:1;min-width:0;border:1px solid transparent;background:transparent;color:var(--muted);padding:5px 8px;border-radius:7px;cursor:pointer;font-size:12.5px;white-space:nowrap}.cr-steps button:hover{color:var(--text);background:var(--panel-3)}.cr-steps button.on{color:var(--text);border-color:var(--accent);background:#22c3ff1f;font-weight:600}.cr-num{width:22px;height:22px;flex:none;display:inline-grid;place-items:center;border-radius:50%;background:var(--panel-3);font-weight:700;font-size:12px}.cr-steps button.on .cr-num{background:var(--accent);color:var(--accent-ink)}.cr-steps button.done .cr-num{background:#2f4a2c;color:var(--ok)}.cr-step-label{overflow:hidden;text-overflow:ellipsis}.cr-body{padding:14px 16px;display:flex;flex-direction:column;gap:12px}.cr-foot{display:flex;gap:8px;align-items:center;padding:10px 16px 14px;border-top:1px solid var(--line);position:sticky;bottom:0;background:var(--panel)}.cr-plan{margin:4px 0 0;padding-left:20px;color:var(--muted);font-size:13px;line-height:1.7}.cr-method{align-items:center}.cr-method select{width:auto!important}.cr-sub{font-size:10.5px;color:var(--muted);text-align:center;line-height:1.2}.cr-derived{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.cr-pools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;position:sticky;top:0;z-index:2;margin:-6px -16px 0;padding:6px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.pool{display:inline-flex;align-items:baseline;gap:6px;padding:5px 10px;border-radius:8px;background:var(--panel-2);border:1px solid var(--line);font-variant-numeric:tabular-nums;align-self:flex-start}.pool b{font:700 17px var(--display);color:var(--ok)}.pool.over{border-color:#8a3b37}.pool.over b{color:var(--danger)}.pool-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.cr-skills{display:grid;grid-template-columns:1fr 1fr;gap:2px 18px}.cr-skill{display:flex;align-items:center;gap:6px;padding:1px 4px;border-radius:6px}.cr-skill:hover{background:var(--panel-2)}.cr-skill.prof .cr-skill-name{color:var(--accent-strong);font-weight:600}.cr-skill-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.star{width:24px;height:24px;flex:none;border:0;background:none;cursor:pointer;color:var(--faint);font-size:16px;border-radius:5px}.star:hover{background:var(--panel-3);color:var(--accent)}.star[aria-pressed=true]{color:var(--accent)}.cr-pts{width:60px!important;text-align:center;padding:2px 4px!important;flex:none}.cr-total{min-width:42px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.cr-skill.over .cr-total{color:var(--danger)}.cr-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}.cr-col{display:flex;flex-direction:column;gap:8px;min-width:0}.cr-col h4{font:700 13px var(--font);text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.cr-col .filter{max-width:none}.cr-pick,.cr-chosen{display:flex;flex-direction:column;gap:4px;max-height:240px;overflow-y:auto;padding-right:2px}.cr-pick-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;background:var(--panel-2);border:1px solid var(--line)}.cr-pick-row>div{flex:1;min-width:0}.cr-pick-row .lib-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cr-summary{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:10px;background:var(--panel-2);border:1px solid var(--line)}.cr-summary h4{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-top:4px}.cr-sum-head{display:flex;align-items:center;gap:12px}.cr-sum-head .avatar{width:46px;height:46px;font-size:20px}.cr-sum-name{font:700 20px var(--display)}.cr-sum-chars{display:flex;flex-wrap:wrap;gap:6px 14px;font-variant-numeric:tabular-nums}.cr-sum-chars b{color:var(--muted);font-weight:600;font-size:12px}.cr-sum-skills{display:flex;flex-wrap:wrap;gap:4px}.cr-sum-skills span{padding:2px 8px;border-radius:999px;background:var(--panel-3);font-size:12.5px}.cr-sum-skills span.prof{background:#22c3ff29;color:var(--accent-strong)}.cr-issues{margin:0;padding:10px 14px 10px 30px;border-radius:8px;background:#3a1d1b;border:1px solid #6b2f2c;color:#ffcfc9;font-size:13px}.cr-ok{margin:0;color:var(--ok)}@media (max-width: 900px){.lib-form,.cr-cols,.cr-skills{grid-template-columns:1fr}.cr-derived{grid-template-columns:1fr 1fr}.cr-step-label{display:none}.cr-steps button.on .cr-step-label{display:inline}.lib-row{flex-direction:column}}.icon-btn .fa-solid,.icon-btn .fa-regular{font-size:13px}.hint .fa-solid{color:var(--text);margin:0 1px}.menu-list button .fa-solid{width:18px;margin-right:6px;text-align:center;color:var(--muted)}.menu-list button.danger-text .fa-solid{color:inherit}.hud-reticle .fa-solid{font-size:17px}.star .fa-star{font-size:14px}.lib-name .fa-wand-sparkles,.spell-row .fa-wand-sparkles{color:var(--accent-2);margin-right:2px}.atk-head .fa-solid{color:#ff8f7a;margin-right:2px}
