:root{--bg:#0f1114;--bg-panel:#181b21;--bg-elevated:#1f232b;--bg-hover:#262b34;--border:#2c313b;--border-strong:#3b4150;--text:#e8e9ec;--text-muted:#9aa1ad;--text-faint:#6b7280;--accent:#f2b544;--accent-strong:#ffcf6b;--accent-text:#1a1204;--info:#5cc8ff;--danger:#ff6b6b;--success:#7ee081;--radius:8px;--radius-sm:5px;--shadow:0 10px 30px #00000073;--font:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:15px;--focus:0 0 0 2px #f2b54459;--cat-creature:#f28b82;--cat-spell:#8ab4f8;--cat-item:#e6c07b;--cat-feat:#9ed36a;--cat-rule:#c58af9;--cat-class:#f6ad55;--cat-background:#4fd1c5;--cat-other:#9aa1ad;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.4;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{box-shadow:var(--focus);outline:none}a{color:var(--info)}a.btn{color:var(--text);text-decoration:none}a.btn.ghost{color:var(--text-muted)}::selection{background:#f2b54459}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:7px 12px;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--bg-hover);border-color:#4a5164}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.btn.primary:hover{background:var(--accent-strong)}.btn.danger{color:var(--danger);border-color:#ff6b6b80}.btn.danger:hover{background:#ff6b6b1f}.btn.ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--bg-hover);color:var(--text)}.btn.small{padding:4px 8px;font-size:12px}.btn.icon{width:32px;height:32px;padding:6px}.input,select.input,textarea.input{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg);width:100%;color:var(--text);outline:none;padding:7px 10px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #f2b54433}.input.small{padding:4px 8px;font-size:12px}label.field{color:var(--text-muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.small{font-size:12px}.mono{font-family:var(--mono)}.stack{flex-direction:column;gap:10px;display:flex}.section{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:12px;display:flex}.section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.error{color:var(--danger);font-size:13px}.hint{color:var(--text-faint);font-size:12px}.badge{background:var(--bg-hover);color:var(--text-muted);border-radius:999px;padding:1px 7px;font-size:11px;display:inline-block}.badge.gm{color:var(--accent);background:#f2b5442e}.dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;display:inline-block}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:22px;height:22px}.swatch.active{border-color:#fff}.checkbox{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.checkbox input{accent-color:var(--accent)}.page,.admin-page{overscroll-behavior:contain;height:100%;overflow-y:auto}.page{padding:32px 16px 60px;padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right))}.page-inner{flex-direction:column;gap:24px;max-width:760px;margin:0 auto;display:flex}.brand{letter-spacing:.02em;align-items:center;gap:10px;font-size:20px;font-weight:700;display:flex}.brand svg{width:28px;height:28px}.disclaimer h2{font-size:var(--fs-lg);margin:0}.disclaimer p{font-size:var(--fs-md);margin:0;line-height:1.55}.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:12px;padding:16px;display:flex}.card h2{margin:0;font-size:16px}.game-list{flex-direction:column;gap:8px;display:flex}.game-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;transition:border-color .12s;display:flex}.game-card:hover,.game-card:focus-visible{border-color:var(--accent);outline:none}.game-card .game-main{flex-direction:column;flex:1;gap:4px;min-width:180px;display:flex}.game-card .name{font-size:15px;font-weight:600}.game-card .meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12px;display:flex}.game-card .actions{flex-wrap:wrap;justify-content:flex-end;gap:4px;margin-left:auto;display:flex}.game-card .actions .btn.danger{color:var(--danger,#ff6b6b)}.home .page-inner.wide{max-width:1100px}.home-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.home-head .who{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.home-grid{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:24px;display:grid}@media (width<=900px){.home-grid{grid-template-columns:1fr}}.home-main,.home-side{flex-direction:column;gap:24px;min-width:0;display:flex}.card-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.card-head h2{margin:0}.card-head .badge{font-size:11px}.card-head .menu-tabs{margin-left:auto}.home-library .lib{min-height:120px}.game{grid-template-rows:44px 1fr;grid-template-columns:minmax(0,1fr);height:100%;display:grid}.topbar{background:var(--bg-panel);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:0 12px;display:flex;overflow:hidden}.topbar>*{white-space:nowrap;flex:none}.topbar .title{text-overflow:ellipsis;flex:0 auto;min-width:4em;font-weight:600;overflow:hidden}.topbar .scene-name{color:var(--text-muted);text-overflow:ellipsis;flex:0 3 auto;min-width:4em;overflow:hidden}.topbar .grow{flex:1 1 0}.topbar .status{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:flex}.game-body{min-height:0;display:flex}.toolbar{background:var(--bg-panel);border-right:1px solid var(--border);flex-direction:column;align-items:center;gap:4px;width:48px;padding:8px 0;display:flex}.toolbar .tool{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:flex}.toolbar .tool:hover{background:var(--bg-hover);color:var(--text)}.toolbar .tool:disabled{opacity:.35;cursor:default;background:0 0}.toolbar .tool.active{color:var(--accent);background:#f2b54429;border-color:#f2b54480}.toolbar .tool.on{color:var(--info)}.toolbar .tool svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.toolbar .sep{background:var(--border-strong);width:24px;height:1px;margin:6px 0}.map-area{background:var(--bg);flex:1;min-width:0;position:relative;overflow:hidden}.map-area canvas{touch-action:none;width:100%;height:100%;display:block}.map-area.cursor-grab canvas{cursor:grab}.map-area.cursor-grabbing canvas{cursor:grabbing}.map-area.cursor-pointer canvas{cursor:pointer}.map-area.cursor-crosshair canvas{cursor:crosshair}.map-empty{color:var(--text-muted);pointer-events:none;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px;display:flex;position:absolute;inset:0}.drop-overlay{border:2px dashed var(--accent);border-radius:var(--radius);color:var(--accent);pointer-events:none;background:#f2b54414;justify-content:center;align-items:center;font-weight:600;display:flex;position:absolute;inset:12px}.map-hint{max-width:calc(100% - 24px);color:var(--text-muted);border-radius:var(--radius-sm);pointer-events:none;background:#0f1114bf;padding:4px 8px;font-size:12px;position:absolute;bottom:10px;left:12px}.dock{background:var(--bg-panel);border-left:1px solid var(--border);flex-direction:column;width:340px;min-height:0;display:flex;position:relative}.dock.collapsed{width:40px}.dock-resize{cursor:col-resize;z-index:3;width:6px;position:absolute;top:0;bottom:0;left:-3px}.dock-resize:hover,.dock-resize:active{background:#f2b54459}.dock-tabs{border-bottom:1px solid var(--border);flex-shrink:0;align-items:stretch;padding:0 2px;display:flex}.dock-tabs button{min-width:0;height:40px;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:0 0;border:none;border-bottom:2px solid #0000;flex:1 1 0;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.dock-tabs button svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.dock-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);background:#f2b5440f}.dock-tabs button:hover{color:var(--text);background:var(--bg-hover)}.dock-tabs button.dock-collapse{flex:0 0 26px;font-size:14px}.dock-tabs .unread,.phone-tabs .unread,.phone-more-item .unread{background:var(--danger);color:#fff;border-radius:8px;min-width:15px;height:15px;padding:0 4px;font-size:10px;font-weight:600;line-height:15px;position:absolute;top:4px;right:3px}.dock-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.dock-head{align-items:center;gap:8px;padding:8px 12px 0;display:flex}.dock-head-title{font-size:var(--fs-md);letter-spacing:.01em;font-weight:600}.dock-toggle{border:none;border-bottom:1px solid var(--border);width:100%;color:var(--text-muted);cursor:pointer;background:0 0;padding:8px 0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chat{flex-direction:column;height:100%;min-height:0;display:flex}.chat-messages{flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px 12px;display:flex;overflow-y:auto}.msg-group{--speaker:var(--border-strong);font-size:13px;font-family:var(--chat-font,inherit);border-left:3px solid var(--speaker);border-radius:0 var(--radius-sm) var(--radius-sm) 0;grid-template-columns:30px minmax(0,1fr);gap:4px 8px;padding:4px 6px 4px 0;display:grid}.msg-group.mine{background:#ffffff06}.msg-group.from-gm .who .badge.gm{letter-spacing:.06em;padding:0 5px;font-size:9px}.msg-group.font-caps .body,.msg-group.font-caps .who .name{font-variant:small-caps}.msg-group .portrait{border:2px solid var(--speaker);background:var(--bg-elevated);border-radius:50%;flex:none;justify-content:center;align-items:center;width:30px;height:30px;margin-top:1px;margin-left:6px;display:flex;overflow:hidden}.msg-group .portrait img{object-fit:cover;width:100%;height:100%;display:block}.msg-group .portrait .letter{color:var(--speaker);font-size:13px;font-weight:700;font-family:var(--font,inherit)}.msg-stack{flex-direction:column;gap:3px;min-width:0;display:flex}.msg{flex-direction:column;gap:2px;display:flex;position:relative}.msg-actions{background:var(--bg-panel);border-radius:var(--radius-sm);gap:2px;display:none;position:absolute;top:0;right:0}.msg-actions .btn{padding:1px 6px;font-size:11px}.msg:hover .msg-actions,.msg:focus-within .msg-actions{display:flex}@media (hover:none){.msg-actions{background:0 0;align-self:flex-end;display:flex;position:static}}.msg .apply-hp{gap:4px;display:none}.msg:hover .apply-hp,.msg:focus-within .apply-hp{display:flex}@media (hover:none){.msg .apply-hp{display:flex}}.apply-hp .btn{font-size:12px;font-family:var(--mono);padding:1px 8px}.apply-hp .hurt{color:var(--danger)}.apply-hp .heal{color:var(--success)}.msg .body.blind-roll{color:var(--text-muted);font-style:italic}.msg .body.blind-roll .formula{font-family:var(--mono);font-style:normal}.msg-group .who{color:var(--text-muted);flex-wrap:wrap;align-items:baseline;gap:6px;font-size:12px;display:flex}.msg-group .who .name{color:var(--chat-name,var(--text));font-size:13px;font-weight:700}.msg-group .who .via{color:var(--text-faint);font-size:11px}.msg-group .who .via:before{content:"· "}.msg-group .who .time{margin-left:auto;font-size:11px}.msg .body{white-space:pre-wrap;word-break:break-word;color:var(--chat-text,var(--text))}.msg .body.action{color:var(--chat-action,var(--text-muted));font-style:italic}.msg .body.action .actor{font-weight:600}.msg-group.type-system{border-left-color:#0000}.msg-group.type-system .portrait{visibility:hidden}.msg.type-system .body{color:var(--text-faint);font-style:italic}.msg-group.whisper{border-left-style:dashed;border-left-color:var(--accent)}.msg.whisper .body{font-style:italic}.msg-group .whisper-to{color:var(--accent);font-size:11px}.chat-filters{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:4px;padding:6px 10px;display:flex;overflow-x:auto}.chat-filters .chip.active{border-color:var(--accent);color:var(--text);background:#f2b5441a}.dice-bar .speak-as{max-width:160px;margin-left:auto}.roll{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font,inherit);flex-direction:column;gap:4px;padding:6px 8px;display:flex}.roll.secret{border-color:#f2b54466}.roll .formula{font-family:var(--mono);color:var(--text-muted);font-size:12px}.roll .kind{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);flex:none;font-size:10px}.roll .label{font-weight:600}.roll .target{color:var(--text-muted);font-size:12px}.roll .stamp{text-transform:uppercase;letter-spacing:.08em;border:1px solid;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:700}.roll .stamp.crit,.roll .stamp.pass{color:var(--success)}.roll .stamp.fumble,.roll .stamp.fail{color:var(--danger)}.roll.outcome-crit{border-color:var(--success);box-shadow:inset 3px 0 0 var(--success)}.roll.outcome-fumble{border-color:var(--danger);box-shadow:inset 3px 0 0 var(--danger)}.roll.outcome-pass{box-shadow:inset 3px 0 0 var(--success)}.roll.outcome-fail{box-shadow:inset 3px 0 0 var(--danger)}.roll .follow-up{border-top:1px dashed var(--border);flex-direction:column;gap:3px;padding-top:4px;display:flex}.roll .follow-up .total{font-size:16px}.roll.tpl-damage .total{font-size:24px}.roll.compact{padding:4px 8px}.roll .compact-line{flex-wrap:wrap;align-items:baseline;gap:8px}.roll .compact-line .kind{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-size:10px}.roll .compact-line .total{margin-left:auto;font-size:16px}.roll .compact-line .follow-total{color:var(--text-muted);font-size:12px}.chat-style{flex-direction:column;gap:8px;display:flex}.chat-style-color{flex-direction:column;gap:4px;display:flex}.chat-style .swatches{align-items:center}.chat-style .swatch.none{background:var(--bg);color:var(--text-muted);justify-content:center;align-items:center;font-size:12px;display:inline-flex}.chat-style input[type=color]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;width:26px;height:22px;padding:0}.chat-style-preview{border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 8px 6px 10px}.roll .dice{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.roll .die{background:var(--bg);border:1px solid var(--border-strong);min-width:24px;height:24px;font-family:var(--mono);border-radius:5px;justify-content:center;align-items:center;padding:0 6px;font-size:12px;display:inline-flex}.roll .die.dropped{opacity:.4;text-decoration:line-through}.roll .die.max{border-color:var(--success);color:var(--success)}.roll .die.min{border-color:var(--danger);color:var(--danger)}.roll .die.exploded{border-color:var(--accent)}.roll .op{color:var(--text-faint);font-family:var(--mono);font-size:12px}.roll .total{color:var(--accent);font-size:20px;font-weight:700}.chat-input{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:6px;padding:8px;display:flex}.dice-bar{flex-wrap:wrap;gap:4px;display:flex}.dice-bar .btn{font-size:12px;font-family:var(--mono);padding:3px 7px}.dice-tray{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elevated);flex-direction:column;gap:4px;padding:6px;display:flex}.dice-tray .tray-row{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.dice-tray .tray-die{font-family:var(--mono);font-weight:600}.dice-tray .tray-mod{align-items:center;gap:2px;display:inline-flex}.dice-tray .tray-mod .value{text-align:center;min-width:28px;font-family:var(--mono)}.dice-tray .tray-num{width:52px}.dice-tray .tray-successes{color:var(--text-muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}.dice-tray .btn.active{color:var(--accent);background:#f2b54429;border-color:#f2b54499}.dice-bar .btn.secret-on,.dice-bar .roll-mode.secret-on{border-color:var(--accent);color:var(--accent)}.dice-bar .roll-mode{width:auto;max-width:130px;font-size:12px}.macro-bar{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:6px;padding:6px 8px 0;display:flex}.macro-bar+.chat-input{border-top:none}.macro-row{flex-wrap:wrap;gap:4px;max-height:64px;display:flex;overflow-y:auto}.macro-row .macro{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.macro-row .macro.editing{border-style:dashed}.macro-row .btn.active{color:var(--accent);background:#f2b54429;border-color:#f2b54499}.macro-edit,.macro-ask{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elevated);flex-direction:column;gap:4px;padding:6px;display:flex}.macro-edit textarea{resize:vertical;font-family:var(--mono);min-height:52px;font-size:12px}.macro-edit .hint{font-size:11px}.macro-question{align-items:center;gap:6px;font-size:12px;display:flex}.macro-question span{min-width:60px;color:var(--text-muted)}.macro-question input{flex:1}.asset-grid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;display:grid}.asset{aspect-ratio:1;border-radius:var(--radius-sm);border:2px solid var(--border);background:var(--bg);cursor:grab;position:relative;overflow:hidden}.asset img{object-fit:cover;width:100%;height:100%;display:block}.asset.active{border-color:var(--accent)}.asset .del{color:#fff;cursor:pointer;background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;display:none;position:absolute;top:2px;right:2px}.asset:hover .del{display:flex}.track{border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border);align-items:center;gap:6px;padding:6px 8px;display:flex}.track.playing{border-color:var(--accent)}.track.paused{border-color:var(--border-strong);border-style:dashed}.track .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.scene-item{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;align-items:center;gap:6px;padding:6px 8px;display:flex}.scene-item:hover{background:var(--bg-hover)}.scene-item.active{background:#f2b54414;border-color:#f2b54480}.scene-item .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.scene-item .who{flex:none;align-items:center;gap:3px;display:inline-flex}.scene-item .who .dot{width:8px;height:8px}.badge.party{color:var(--success);background:#5ec88c2e}.topbar .scene-name .apart{color:var(--text-muted);font-size:12px}.hint.apart{color:var(--accent)}.hint.invite-local{color:var(--accent);margin-top:6px}.member{align-items:center;gap:8px;padding:4px 0;display:flex}.member .name{flex:1}.member.offline{opacity:.55}.ctx-menu{z-index:20;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);width:260px;max-height:calc(100% - 16px);box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:10px;display:flex;position:absolute;overflow:auto}.ctx-menu .title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:11px}.ctx-menu .bar-row{grid-template-columns:1fr 52px 52px 24px;align-items:center;gap:4px;display:grid}.token-menu{gap:10px;width:580px;max-width:calc(100% - 16px);padding:10px 12px 12px}.token-menu.gm{width:760px}.token-menu .menu-head{align-items:center;gap:8px;display:flex}.token-menu .menu-head .title{flex:none}.token-menu .menu-head input{font-weight:600}.token-menu .menu-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:start;gap:12px;display:grid}.token-menu .menu-group{flex-direction:column;gap:8px;min-width:0;display:flex}.token-menu .menu-group .title{border-bottom:1px solid var(--border);padding-bottom:4px}.token-menu .menu-group .title+.title{margin-top:4px}.token-menu .bar-group{flex-direction:column;gap:4px;display:flex}.token-menu .bar-row{grid-template-columns:minmax(0,1fr) auto}.token-menu .bar-tools{flex:none;gap:2px;display:flex}.token-menu .bar-values{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:4px;padding-left:6px;display:grid}.token-menu .bar-values .input{width:100%;min-width:0}.token-menu .bar-row .btn.bound{color:var(--accent)}.token-menu .bar-bind{border-left:2px solid #f2b54480;grid-template-columns:1fr 1fr;gap:4px;padding-left:6px;display:grid}.token-menu .bar-row .input,.token-menu .bar-values .input{padding-left:5px;padding-right:5px}.token-menu .bar-values input[type=number]{appearance:textfield}.token-menu .bar-values input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.token-menu .bar-values input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.token-menu .self-start{align-self:flex-start}.token-menu .emotes{flex-wrap:wrap;gap:3px;display:flex}.token-menu .btn.emote{padding:1px 5px;font-size:15px;line-height:1.3}.token-menu .btn.emote.active{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 2px #f2b54459}.token-menu .menu-foot{justify-content:flex-end;align-items:center;gap:10px;display:flex}.token-menu .menu-foot .hint{color:var(--text-muted);font-size:11px}.toasts{z-index:100;pointer-events:none;flex-direction:column;align-items:center;gap:6px;width:fit-content;max-width:calc(100% - 32px);margin:0 auto;display:flex;position:fixed;bottom:16px;left:0;right:0}@media (width<=640px),(height<=500px) and (pointer:coarse){.toasts{bottom:auto;top:calc(52px + env(safe-area-inset-top))}}.toast{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:8px 14px;font-size:13px}.toast.error{border-color:var(--danger)}.overlay{z-index:50;background:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.overlay .card{width:100%;max-width:420px}.overlay .card.dungeon-card{max-width:780px;max-height:calc(100% - 32px);overflow:auto}.dungeon-body{grid-template-columns:230px minmax(0,1fr);align-items:start;gap:16px;display:grid}@media (width<=680px){.dungeon-body{grid-template-columns:1fr}}.dungeon-controls{flex-direction:column;gap:10px;display:flex}.dungeon-preview{flex-direction:column;gap:8px;min-width:0;display:flex}.dungeon-preview canvas{border:1px solid var(--border);border-radius:var(--radius-sm);background:#121317;width:100%;height:auto;display:block}.dungeon-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.kbd{border:1px solid var(--border-strong);background:var(--bg);font-family:var(--mono);border-radius:4px;padding:1px 6px;font-size:11px;display:inline-block}.shortcuts{grid-template-columns:max-content 1fr;align-items:start;gap:6px 12px;font-size:13px;display:grid}.shortcuts .kbd{white-space:nowrap;justify-self:start}.overlay .card.shortcuts-card{max-width:640px;max-height:calc(100vh - 32px);overflow:auto}@media (width<=900px){.dock{z-index:10;width:min(340px,90vw);box-shadow:var(--shadow);position:absolute;top:0;bottom:0;right:0}.dock.collapsed{width:36px;box-shadow:none}.game-body{position:relative}.map-hint{max-width:calc(100% - 60px)}}.calib-banner{z-index:15;background:var(--bg-panel);border:1px solid var(--accent);border-radius:var(--radius);max-width:calc(100% - 24px);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 12px;font-size:13px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.calib-banner .calib-text{flex:260px;min-width:0}.calib-banner .calib-text strong{color:var(--accent)}.calib-banner label{white-space:nowrap;color:var(--text-muted)}.preview-banner{border-color:var(--info)}.turn-banner.below{top:64px}.turn-banner .calib-text{flex:0 auto}.draw-bar{z-index:15;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);max-width:calc(100% - 24px);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex;position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.draw-bar .draw-group{gap:2px;display:flex}.draw-bar .field.inline{flex-direction:row;align-items:center;gap:6px}.effect-picker{gap:8px;width:300px}.pin-icons{grid-template-columns:repeat(9,1fr);gap:2px;display:grid}.pin-icons .btn{padding:3px 0;font-size:14px}.pin-icons .btn.active,.picture-menu .btn.active{background:#f2b54429;border-color:#f2b54499}.picture-picker{gap:8px;width:340px;max-width:calc(100vw - 16px)}.picture-picker-library{max-height:320px;overflow-y:auto}.status-timers{flex-direction:column;gap:4px;display:flex}.status-timer{align-items:center;gap:6px;font-size:12px;display:flex}.status-timer select{width:auto;max-width:150px}.effect-picker .effect-shapes{grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.effect-picker .effect-shapes .btn{flex-direction:column;align-items:center;gap:2px;padding:6px 2px;font-size:11px;display:flex}.effect-picker .effect-looks{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.effect-picker .effect-look{justify-content:flex-start;gap:6px;padding:4px 6px;font-size:12px}.effect-picker .effect-look .dot{border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 6px}.effect-picker .btn.active{color:var(--accent);background:#f2b54429;border-color:#f2b54499}.effect-picker input[type=color]{height:28px;padding:2px}.topbar .sound-chip{border:1px solid var(--border-strong);background:var(--bg-elevated);max-width:220px;height:26px;color:var(--text);cursor:pointer;border-radius:13px;align-items:center;gap:6px;padding:0 10px;font-size:12px;display:inline-flex}.topbar .sound-chip .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar .sound-chip.blocked{border-color:var(--accent);color:var(--accent)}.topbar .sound-chip.muted{color:var(--text-muted)}.now-playing{z-index:40;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);width:300px;max-width:calc(100vw - 24px);box-shadow:var(--shadow);flex-direction:column;gap:6px;padding:10px 12px;animation:.16s ease-out np-in;display:flex;position:fixed;top:52px;left:50%;transform:translate(-50%)}.game.phone .now-playing{top:calc(52px + env(safe-area-inset-top,0px))}.now-playing .np-note{color:var(--text-muted);font-size:16px}.now-playing .np-note.on{color:var(--accent)}.now-playing .np-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.now-playing .np-slider{color:var(--text-muted);grid-template-columns:92px 1fr;align-items:center;gap:8px;font-size:12px;display:grid}.now-playing .np-table{border-top:1px solid var(--border);align-items:center;gap:6px;padding-top:6px;display:flex}.now-playing .np-table .np-slider{flex:1}@keyframes np-in{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}.light-presets{flex-wrap:wrap;gap:4px;display:flex}.light-presets .btn.active{color:var(--accent);background:#f2b54429;border-color:#f2b54499}.map-menu{gap:4px;padding:6px}.map-menu .btn{justify-content:flex-start}.draw-bar .tool{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:flex}.draw-bar .tool:hover{background:var(--bg-hover);color:var(--text)}.draw-bar .tool.active{color:var(--accent);background:#f2b54429;border-color:#f2b54480}.draw-bar .tool svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.draw-bar .sep{background:var(--border-strong);width:1px;height:22px}.draw-bar .swatch{width:18px;height:18px}.draw-bar .checkbox.small{gap:5px;font-size:12px}.draw-bar .hint{font-size:11px}.init-entry{border-radius:var(--radius-sm);border:1px solid #0000;align-items:center;gap:8px;padding:5px 6px;display:flex}.init-entry.has-token{cursor:pointer}.init-entry.has-token:hover{background:var(--bg-hover)}.init-entry.current{background:#f2b5441a;border-color:#f2b54499}.init-marker{width:14px;color:var(--accent);text-align:center;font-size:12px}.init-value{text-align:center;width:54px}.init-entry .badge.init-value{min-width:34px;font-size:12px}.init-name,.init-roll-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.init-formula{font-family:var(--mono);color:var(--text-faint);margin-left:6px;font-size:11px}.init-bonus{width:60px}.preview-banner .calib-text strong{color:var(--info)}.sheet-window.creator-window{height:min(860px,100vh - 64px)}.creator-frame{background:#0b0a09;border:0;flex:1;width:100%;min-height:0}.creator-row{gap:6px;margin-top:6px}.sheet-window{z-index:40;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);width:min(820px,92vw);min-width:320px;height:min(680px,85vh);min-height:240px;box-shadow:var(--shadow);resize:both;flex-direction:column;display:flex;position:fixed;overflow:hidden}.sheet-picker{flex-shrink:1;width:auto;min-width:0;max-width:190px}.sheet-header{border-bottom:1px solid var(--border);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;align-items:center;gap:8px;padding:6px 8px 6px 12px;display:flex}.sheet-body{flex:1;min-height:0;display:flex;position:relative}.sheet-frame{background:#181b21;border:0;flex:1;width:100%;min-height:0}.sheet-drop-layer{z-index:2;position:absolute;inset:0;box-shadow:inset 0 0 0 2px #f2b5448c}.note-tree{flex-direction:column;gap:2px;display:flex}.note-item{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;align-items:center;gap:6px;min-height:28px;padding:3px 8px;display:flex}.note-item:hover{background:var(--bg-hover)}.note-item.active{background:#f2b54414;border-color:#f2b54480}.note-item .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.note-item.folder .name{font-weight:600}.note-item .note-icon{width:12px;color:var(--text-faint);text-align:center;flex-shrink:0;font-size:11px}.note-item .btn.small.ghost{height:22px;padding:0 6px}.note-window{z-index:41;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);width:min(720px,92vw);min-width:320px;height:min(600px,85vh);min-height:240px;box-shadow:var(--shadow);resize:both;flex-direction:column;display:flex;position:fixed;overflow:hidden}.note-window .note-title{font-weight:600}.note-tools{border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.note-tools label.row{gap:6px}.note-tools select.input.small{width:auto}.note-tools .checkbox.small{gap:4px;margin-right:8px;font-size:12px}.note-editor{resize:none;background:var(--bg);width:100%;min-height:0;color:var(--text);font:14px/1.5 var(--font);border:0;outline:none;flex:1;padding:14px 16px}.note-body{word-break:break-word;flex:1;min-height:0;padding:14px 18px;line-height:1.5;overflow:auto}.note-body h1{margin:12px 0 6px;font-size:20px}.note-body h2{margin:12px 0 6px;font-size:17px}.note-body h3{margin:10px 0 4px;font-size:15px}.note-body h1:first-child,.note-body h2:first-child,.note-body h3:first-child{margin-top:0}.note-body p{margin:0 0 10px}.note-body ul,.note-body ol{margin:0 0 10px;padding-left:22px}.note-body blockquote{border-left:3px solid var(--accent);color:var(--text-muted);margin:0 0 10px;padding:4px 12px}.note-body code{font-family:var(--mono);background:var(--bg);border-radius:3px;padding:1px 4px;font-size:12px}.note-body img{border-radius:var(--radius-sm);max-width:100%;margin:6px 0;display:block}.note-body table:not(.entry-facts),.spec-text table{border-collapse:collapse;font-size:var(--fs-sm);max-width:100%;margin:0 0 12px;display:block;overflow-x:auto}.note-body table:not(.entry-facts) :is(th,td),.spec-text :is(th,td){border:1px solid var(--border);text-align:left;vertical-align:top;padding:4px 8px}.note-body table:not(.entry-facts) th,.spec-text th{background:var(--bg-elevated);font-weight:600}.note-body hr{border:0;border-top:1px solid var(--border);margin:12px 0}.note-body .task.done{color:var(--success)}.token-group{flex-direction:column;gap:6px;display:flex}.cue-list{flex-direction:column;gap:4px;display:flex}.cue-row .checkbox{font-size:12px}.cue-row .faint{margin-left:2px}.account-gate .btn.ghost.small{align-self:flex-start}.account-doors .doors{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (width<=520px){.account-doors .doors{grid-template-columns:1fr}}.door{text-align:left;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text);cursor:pointer;font:inherit;flex-direction:column;align-items:flex-start;gap:6px;min-height:96px;padding:16px;display:flex}.door:hover,.door:focus-visible{border-color:var(--accent);background:#f2b54414;outline:none}.door-title{font-size:16px;font-weight:650}.door-text{color:var(--text-muted);font-size:13px}.card.notice{border-color:var(--accent);flex-direction:row;align-items:center;gap:16px}.card.notice>div{flex:1;font-size:13px}.modal-backdrop{z-index:60;background:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{width:min(420px,100%)}.entry-list{flex-direction:column;gap:2px;display:flex}.folder-row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:5px 8px;font-size:13px;display:flex}.folder-row:hover,.folder-row:focus-visible{background:var(--bg-elevated);outline:none}.folder-row .chevron{width:12px;color:var(--text-muted);flex:none;font-size:11px}.folder-row .name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.folder-row .tools{opacity:.55;gap:2px;margin-left:auto;display:flex}.folder-row:hover .tools,.folder-row:focus-within .tools{opacity:1}.folder-children{border-left:1px solid var(--border);flex-direction:column;gap:2px;margin-left:9px;padding-left:6px;display:flex}.folder-menu{flex-wrap:wrap;gap:4px;padding:2px 8px 6px 26px;display:flex}.scope-row{align-items:center}.scope-row .faint{text-transform:uppercase;letter-spacing:.06em;font-size:10px}.entry-item{border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-md);align-items:center;gap:8px;min-height:34px;padding:4px 8px 4px 6px;display:flex}.entry-item:hover{background:var(--bg-elevated)}.entry-item:focus-visible{background:var(--bg-elevated);box-shadow:var(--focus)}.entry-item.active{background:var(--bg-elevated);box-shadow:inset 2px 0 0 var(--accent)}.entry-item .cat-mark{background:var(--cat-other);opacity:.85;border-radius:2px;flex:none;width:3px;height:22px}.entry-item .entry-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.entry-item .name{overflow-wrap:anywhere;font-weight:600;line-height:1.25}.entry-item .meta{font-size:var(--fs-xs);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:4px 8px;line-height:1.2;display:flex}.entry-item .meta .badge{padding:0 6px;font-size:10px;line-height:15px}.entry-item .meta .path{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.entry-item .shared-mark{color:var(--accent);opacity:.9;flex:none;font-size:10px}.entry-item .place{opacity:.6;flex:none;padding:0 6px;font-size:15px;line-height:1.3}.entry-item:hover .place,.entry-item.active .place,.entry-item:focus-within .place{opacity:1}.cat-creature .cat-mark{background:var(--cat-creature)}.cat-spell .cat-mark{background:var(--cat-spell)}.cat-item .cat-mark{background:var(--cat-item)}.cat-feat .cat-mark{background:var(--cat-feat)}.cat-rule .cat-mark{background:var(--cat-rule)}.cat-class .cat-mark{background:var(--cat-class)}.cat-background .cat-mark{background:var(--cat-background)}.chips{gap:4px}.chip{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border-radius:10px;max-width:160px;padding:2px 9px;font-size:11px;overflow:hidden}.chip:hover{color:var(--text);border-color:var(--border-strong)}.chip.active{border-color:var(--accent);color:var(--accent)}.chip.cat-creature{border-color:color-mix(in srgb, var(--cat-creature) 45%, transparent)}.chip.cat-spell{border-color:color-mix(in srgb, var(--cat-spell) 45%, transparent)}.chip.cat-item{border-color:color-mix(in srgb, var(--cat-item) 45%, transparent)}.chip.cat-feat{border-color:color-mix(in srgb, var(--cat-feat) 45%, transparent)}.chip.cat-rule{border-color:color-mix(in srgb, var(--cat-rule) 45%, transparent)}.compendium .compendium-search,.compendium .compendium-filters{gap:6px}.compendium .compendium-filters .input.small{min-width:0}.compendium .compendium-tools{gap:2px;margin-top:-4px}.compendium .compendium-tools .btn.small.ghost{font-size:var(--fs-xs);padding:2px 6px}.recent-row{gap:4px}.crumbs{font-size:var(--fs-sm);flex-wrap:wrap;align-items:center;gap:2px;padding:2px 4px;display:flex}.crumb{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;font-size:inherit;background:0 0;border:0;padding:2px 4px}.crumb:hover{background:var(--bg-hover);color:var(--text)}.crumb.current{color:var(--text);cursor:default;font-weight:600}.crumb-sep{color:var(--text-faint);padding:0 1px}.folder-children.flat{margin-left:0;padding-left:8px}.folder-row .tools .btn.small.ghost{height:20px;padding:0 5px;line-height:1}.entry-window{width:min(560px,92vw)}.entry-facts{border-collapse:collapse;margin:4px 0 10px;font-size:13px}.entry-facts th{text-align:left;color:var(--text-muted);white-space:nowrap;vertical-align:top;padding:2px 10px 2px 0;font-weight:600}.entry-facts td{padding:2px 0}.entry-meta{margin-bottom:6px}.entry-edit{flex-direction:column;gap:8px;padding:10px 12px;display:flex;overflow:auto}.entry-edit .note-editor{min-height:180px}.note-body a.wiki,.entry-view a.wiki{color:var(--accent);cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.modal-wide{width:min(560px,100%);max-height:90vh;overflow:auto}.pack-list{flex-direction:column;gap:6px;display:flex}.pack-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);align-items:center;gap:10px;padding:8px 10px;display:flex}.admin{flex-direction:column;gap:18px;max-width:1040px;margin:0 auto;padding:24px 16px 48px;display:flex}.admin h1{margin:0;font-size:22px}.admin h2{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 8px;font-size:14px}.admin .notice{border-color:var(--accent);flex-direction:column;align-items:flex-start;gap:6px;display:flex}.admin .kbd.big{-webkit-user-select:all;user-select:all;padding:4px 8px;font-size:16px}.reset-link .reset-link-value{-webkit-user-select:all;user-select:all;word-break:break-all;padding:8px 10px;font-size:13px;line-height:1.4;display:block}.reset-link h2{margin:0;font-size:16px}.quick-link-notice{border-radius:var(--radius-sm);background:#f2b54412;border:1px solid #f2b54480;flex-direction:column;gap:6px;padding:10px 12px;font-size:13px;display:flex}.quick-link-notice p{color:var(--text-muted);margin:0}.quick-link-notice strong{color:var(--accent)}.admin .reach{flex-direction:column;gap:10px;display:flex}.admin .reach>p{margin:0}.reach-ways{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;display:grid}.reach-way{text-align:left;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:inherit;font:inherit;cursor:pointer;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.reach-way:hover{border-color:var(--border-strong);background:var(--bg-hover)}.reach-way[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.reach-way-title{align-items:center;gap:6px;font-weight:600;display:flex}.reach-way-cost{color:var(--accent);font-size:12px}.reach-way-text{color:var(--text-muted);font-size:12px;line-height:1.4}.reach-panel{border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:10px;padding:12px;display:flex}.reach-steps{flex-direction:column;gap:10px;margin:0;padding-left:20px;font-size:13px;line-height:1.45;display:flex}.reach-steps li>.row,.reach-steps li>.reach-status{margin-top:6px}.reach-status{flex-direction:column;gap:6px;display:flex}.reach-status .reach-url{-webkit-user-select:all;user-select:all;word-break:break-all}.reach-check{border-radius:var(--radius-sm);padding:6px 10px;font-size:13px}.reach-check.ok{color:var(--success);background:#7ee08114}.reach-form{flex-direction:column;gap:8px;display:flex}.reach-form textarea{resize:vertical;word-break:break-all;min-height:44px}.ts-check .grow{font-size:13px}.reach-nudge .btn{flex:none}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;display:grid}.stat{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.stat .label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:10px}.stat .value{margin:2px 0;font-size:20px;font-weight:700}.admin-table{border-collapse:collapse;width:100%;font-size:13px}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:6px 8px}.admin-table th{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:11px;font-weight:600}.admin-table .actions{text-align:right;white-space:nowrap}.admin-table .actions .btn+.btn{margin-left:4px}.admin-table .dot{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:4px;display:inline-block}@media (width<=720px){.admin-table th:nth-child(5),.admin-table td:nth-child(5){display:none}}.sheet-window.app{width:min(1180px,96vw);height:min(900px,92vh)}.app-sheet{flex:1;min-height:0;display:flex;position:relative}.app-sheet-frame{background:#f4f1ea;border:0;flex:1;width:100%;min-height:0}.app-sheet-notice{text-align:center;background:var(--bg-panel);color:var(--text-muted);justify-content:center;align-items:center;padding:24px;font-size:14px;display:flex;position:absolute;inset:0}.app-sheet-notice .kbd{margin-top:8px;display:inline-block}.roll .note{color:var(--text-muted);margin-top:4px;font-size:12px}.roll .detail{white-space:pre-line;overflow-wrap:anywhere;max-height:9.8em;margin-top:4px;font-size:12px;line-height:1.4;overflow-y:auto}.roll.compact .detail{max-height:2.8em}.app-sheet-tools{z-index:3;gap:6px;display:flex;position:absolute;top:8px;right:14px}.app-sheet-dialog{z-index:4;background:#080a0e8c;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.app-sheet-dialog .card{flex-direction:column;gap:8px;width:min(440px,92%);display:flex}.app-sheet-dialog h3{margin:0 0 4px}.pack-notice{padding:10px 12px;font-size:13px}.panel-section{border-bottom:1px solid var(--border)}.panel-section:last-child{border-bottom:0}.panel-section-head{flex-wrap:wrap;align-items:center;gap:6px;padding:6px 12px 6px 6px;display:flex}.panel-section-toggle{border-radius:var(--radius-sm);min-width:0;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;flex:1 1 0;align-items:center;gap:6px;padding:4px 6px;display:flex}.panel-section-toggle:hover{background:var(--bg-hover)}.panel-section-toggle .chevron{width:10px;color:var(--text-faint);flex:none;font-size:10px}.panel-section-toggle .section-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.panel-section-toggle .badge{padding:0 6px;font-size:10px}.panel-section-actions{flex:none;align-items:center;gap:4px;display:flex}.panel-section-body{flex-direction:column;gap:8px;padding:2px 12px 12px;display:flex}.panel-section.closed .panel-section-head{padding-bottom:6px}.tip-toggle{border:1px solid var(--border-strong);width:18px;height:18px;color:var(--text-faint);cursor:pointer;background:0 0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;font-size:11px;line-height:1;display:inline-flex}.tip-toggle:hover,.tip-toggle[aria-expanded=true]{color:var(--accent);border-color:var(--accent)}.tip-body{flex-basis:100%;min-width:0;padding:4px 6px 2px}.lib{border-radius:var(--radius-sm);flex-direction:column;gap:8px;display:flex;position:relative}.lib.drop-over{outline:2px dashed var(--accent);outline-offset:3px}.lib-group{flex-direction:column;gap:2px;display:flex}.lib-group>.folder-row .name{font-weight:700}.folder-row.drop-over{outline:2px dashed var(--accent);outline-offset:-2px}.lib-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:4px;padding:2px 0;display:grid}.lib-item{cursor:grab;border-radius:var(--radius-sm);border:2px solid #0000;flex-direction:column;gap:2px;min-width:0;padding:3px;display:flex;position:relative}.lib-item:hover{background:var(--bg-elevated)}.lib-item.active{border-color:var(--accent)}.lib-item.busy{opacity:.6}.lib-item .thumb{aspect-ratio:1;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--border);justify-content:center;align-items:center;display:flex;overflow:hidden}.lib-item .thumb img{object-fit:contain;width:100%;height:100%;display:block}.lib-item.map .thumb img{object-fit:cover}.lib-item .name{text-align:center;white-space:nowrap;text-overflow:ellipsis;color:var(--text-muted);font-size:11px;line-height:1.2;overflow:hidden}.lib-item.hidden .thumb{opacity:.45}.lib-item .more{color:#fff;cursor:pointer;background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;padding:0;font-size:12px;line-height:1;display:none;position:absolute;top:5px;right:5px}.lib-item:hover .more,.lib-item:focus-within .more{display:flex}.lib-item .mark{color:#fff;text-transform:uppercase;letter-spacing:.04em;pointer-events:none;background:#000000b3;border-radius:6px;padding:0 4px;font-size:9px;position:absolute;top:6px;left:6px}.lib-progress{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);flex-direction:column;gap:4px;padding:6px 8px;font-size:12px;display:flex}.lib-progress progress{width:100%;height:6px;accent-color:var(--accent)}.lib-results{flex-direction:column;gap:4px;display:flex}.lib-preview{z-index:70;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);width:240px;box-shadow:var(--shadow);pointer-events:none;flex-direction:column;gap:4px;padding:8px;display:flex;position:fixed}.lib-preview img{object-fit:contain;border-radius:var(--radius-sm);background:var(--bg);width:100%;max-height:224px;display:block}.lib-preview .name{text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.lib-menu{z-index:71;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:2px;min-width:170px;padding:6px;display:flex;position:fixed}.lib-menu .btn{text-align:left;justify-content:flex-start}.scene-item .token-thumb{object-fit:cover;border:1px solid var(--border);background:var(--bg);border-radius:50%;flex:none;width:22px;height:22px}.scene-item .btn.place.active{color:var(--accent);border-color:var(--accent)}.menu-tabs{flex:none;gap:2px;display:flex}.menu-tabs .tab{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;padding:3px 9px;font-size:12px}.menu-tabs .tab:hover{background:var(--bg-hover);color:var(--text)}.menu-tabs .tab.active{background:var(--bg-elevated);border-color:var(--border-strong);color:var(--text);font-weight:600}.token-menu .menu-notes,.token-menu .menu-rolls{flex-direction:column;gap:8px;display:flex}.token-menu .menu-notes textarea{resize:vertical;font:inherit;font-size:13px;line-height:1.4}.token-menu .quick-roll{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);align-items:flex-start;gap:8px;padding:6px 8px;display:flex}.token-menu .quick-roll.editing{border-color:var(--accent)}.token-menu .quick-roll-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.token-menu .quick-roll-head{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.token-menu .quick-roll-head .name{font-weight:600}.token-menu .quick-roll-head .formula{font-family:var(--mono,ui-monospace, monospace);color:var(--text-muted);font-size:12px}.token-menu .quick-roll .effect{color:var(--text-muted);font-size:12px}.token-menu .quick-roll .tools{opacity:.7;flex:none;gap:2px;display:flex}.token-menu .quick-roll:hover .tools{opacity:1}.token-menu .quick-roll-form{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);flex-direction:column;gap:6px;padding:8px;display:flex}.token-menu .quick-roll-slot{border:1px solid var(--border-strong);background:var(--bg);width:26px;height:26px;color:var(--text);font:700 var(--fs-md)/1 var(--font);cursor:pointer;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.token-menu .quick-roll-slot:hover,.token-menu .quick-roll-slot.active{border-color:var(--accent)}.token-menu .quick-roll-slot.none{color:var(--text-faint);cursor:default;border-style:dashed}.icon-picker{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.icon-picker .icon-choice{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elevated);width:28px;height:28px;color:var(--text);font:700 var(--fs-md)/1 var(--font);cursor:pointer;place-items:center;padding:0;display:grid}.icon-picker .icon-choice:hover{border-color:var(--border-strong);background:var(--bg-hover)}.icon-picker .icon-choice.active{border-color:var(--accent);box-shadow:var(--focus)}.quick-actions{z-index:15;pointer-events:none;width:0;height:0;position:absolute}.quick-action{pointer-events:auto;border:1.5px solid var(--border-strong);color:#f1f2f4;font:700 13px/1 var(--font);cursor:pointer;background:#0a0c10e6;border-radius:50%;place-items:center;padding:0;animation:.12s ease-out quick-action-in;display:grid;position:absolute;box-shadow:0 2px 6px #00000073}.quick-action.has-icon{font-size:15px}.quick-action.from-sheet{border-color:var(--accent)}.quick-roll-slot.from-sheet{border-color:var(--accent);color:var(--accent)}.quick-action:hover,.quick-action:focus-visible{border-color:var(--accent);background:#181c24f5;outline:none;transform:scale(1.12)}.quick-action:active{transform:scale(.94)}@keyframes quick-action-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.drag-badge{background:var(--accent);color:#1a1a1a;white-space:nowrap;border-radius:12px;padding:4px 10px;font-size:12px;font-weight:600;position:absolute;top:-1000px;left:-1000px}.folder-row.dragging,.lib-item.dragging,.note-item.dragging,.scene-item.dragging{opacity:.45}.folder-row.drop-root,.note-item.drop-root{border:1px dashed var(--border-strong);color:var(--text-muted);cursor:default;margin-top:4px;font-style:italic}.folder-row.drop-root.drop-over,.note-item.drop-over{outline:2px dashed var(--accent);outline-offset:-2px;background:#f2b54414}.note-item.selected,.lib-item.selected{border-color:var(--accent);background:#f2b54424}.note-selection{align-items:center;padding:2px 8px 6px}.lib.dragging .lib-item .zoom,.lib.dragging .lib-item .more{display:none}.lib-item .check{color:#fff;pointer-events:none;background:#0000008c;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;line-height:1;display:flex;position:absolute;top:5px;left:5px;box-shadow:0 0 0 1px #0006}.lib-item.selected .check{background:var(--accent);border-color:var(--accent);color:#1a1a1a}.lib-item .mark{top:auto;bottom:20px}.lib-item .zoom{color:#fff;cursor:zoom-in;background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;padding:0;font-size:12px;line-height:1;display:none;position:absolute;bottom:20px;right:5px}.lib-item:hover .zoom,.lib-item:focus-within .zoom{display:flex}.lib-selection{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elevated);align-items:center;padding:6px 8px}.lib-selection .count{font-size:12px;font-weight:600}.lib[data-category=map] .lib-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.lib-item.map .thumb{aspect-ratio:4/3}.lib-preview.map img{max-height:60vh}.lib-viewer{z-index:90;background:#000000b8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.lib-viewer-body{background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);max-width:96vw;max-height:94vh;box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:10px 12px 12px;display:flex}.lib-viewer-head{align-items:center;gap:8px;min-width:0;display:flex}.lib-viewer-head .name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.lib-viewer-head .meta{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.lib-viewer-stage{align-items:center;gap:6px;min-height:0;display:flex}.lib-viewer-stage img{object-fit:contain;border-radius:var(--radius-sm);background:var(--bg);max-width:calc(96vw - 120px);max-height:calc(94vh - 110px);display:block}.lib-viewer-stage .nav{flex:none;padding:4px 10px;font-size:26px;line-height:1}.lib-viewer-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.game.phone{-webkit-tap-highlight-color:transparent;height:100dvh;height:var(--app-height,100dvh);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);grid-template-rows:auto minmax(0,1fr) auto}.game.phone .topbar{height:calc(44px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 10px 0;gap:8px}.phone-content{min-height:0;display:flex;position:relative;overflow:hidden}.phone-content [hidden]{display:none!important}.phone-map{flex:1;min-width:0;display:flex;position:relative}.phone-screen{background:var(--bg-panel);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.phone-head{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:6px 8px;display:flex}.phone-head-title{font-size:var(--fs-md);font-weight:600}.phone-more{overflow:auto}.phone-more-item{border:none;border-bottom:1px solid var(--border);min-height:52px;color:var(--text);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:14px;padding:0 16px;font-size:15px;display:flex}.phone-more-item:active{background:var(--bg-hover)}.phone-more-item svg,.phone-tabs button svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:22px;height:22px}.phone-more-item svg{color:var(--text-muted)}.phone-window{z-index:30;position:absolute;inset:0}.phone-window .sheet-window,.phone-window .note-window{min-width:0;min-height:0;box-shadow:none;resize:none;border:0;border-radius:0;position:absolute;width:auto!important;height:auto!important;inset:0!important}.phone-window .sheet-header{cursor:default}.phone-tabs{background:var(--bg-panel);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);display:flex}.phone-tabs button{min-width:0;height:56px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:3px;font-size:11px;display:flex;position:relative}.phone-tabs button.active{color:var(--accent)}.phone-tabs .unread{top:5px;right:calc(50% - 22px)}.game.phone.keyboard .phone-tabs{display:none}.chat-peek{z-index:35;pointer-events:none;flex-direction:column;gap:6px;display:flex;position:absolute;top:8px;left:8px;right:8px}.chat-peek-item{pointer-events:auto;text-align:left;min-width:0;color:var(--text);background:var(--bg-panel);border:1px solid var(--border-strong);border-left:3px solid var(--speaker,var(--accent));border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;align-items:center;gap:8px;padding:6px 10px;font-size:13px;animation:.18s ease-out peek-in;display:flex}.chat-peek-item .who{color:var(--speaker,var(--text));text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;font-weight:600;overflow:hidden}.chat-peek-item .text{-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0;display:-webkit-box;overflow:hidden}.chat-peek-item .roll{background:0 0;border:0;flex:1;min-width:0;margin:0;padding:0}@keyframes peek-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media (orientation:landscape){.phone-tabs button{flex-direction:row;gap:6px;height:44px;font-size:12px}.phone-tabs .unread{top:3px;left:calc(50% + 2px);right:auto}}.phone-more-item .unread{position:static}.toolbar.compact{z-index:12;border:1px solid var(--border-strong);border-radius:var(--radius);width:fit-content;max-width:calc(100% - 16px);box-shadow:var(--shadow);flex-direction:column;align-items:stretch;gap:4px;margin:0 auto;padding:4px;position:absolute;bottom:8px;left:0;right:0}.toolbar-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:2px;display:flex}.toolbar-extra{border-bottom:1px solid var(--border);padding-bottom:4px}.toolbar.compact .tool{width:40px;height:40px}.toolbar.compact .sep{width:1px;height:24px;margin:0 4px}.game.phone .map-hint{text-align:center;width:fit-content;max-width:calc(100% - 16px);margin:0 auto;font-size:11px;bottom:64px;left:0;right:0}:is(.phone-map:has(.toolbar-more[aria-expanded=true]) .touch-stack,.map-area:has(.draw-bar) .map-hint){display:none}.game.phone .draw-bar,.game.phone .touch-stack{bottom:64px}.game.phone .ctx-menu{max-width:none;max-height:none;box-shadow:none;border:0;border-radius:0;width:auto!important;inset:0!important}@media (hover:none){.lib-item .more,.lib-item .zoom{display:flex}.folder-row .tools,.entry-item .place,.token-menu .quick-roll .tools{opacity:1}.kbd-hint{display:none}}@media (pointer:coarse){.btn{min-height:36px}.btn.small,.input.small{min-height:32px}.input{min-height:36px}.toolbar:not(.compact){width:52px}.toolbar:not(.compact) .tool{width:44px;height:44px}.dock-tabs button{height:44px}}.touch-stack{z-index:14;pointer-events:none;flex-direction:column;align-items:center;gap:6px;width:fit-content;max-width:calc(100% - 16px);margin:0 auto;display:flex;position:absolute;bottom:10px;left:0;right:0}.touch-stack>*{pointer-events:auto}.touch-stack .map-hint{pointer-events:none;max-width:none;margin:0;position:static}.tool-options{background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:center;gap:6px;padding:6px;display:flex}.token-bar{background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;align-items:stretch;gap:4px;max-width:100%;padding:6px 6px 4px;display:flex}.token-bar-head{text-align:center;white-space:nowrap;text-overflow:ellipsis;padding:0 6px;font-size:12px;overflow:hidden}.token-bar-row{flex-wrap:wrap;justify-content:center;gap:2px;display:flex}.token-bar-row.reactions{border-bottom:1px solid var(--border);gap:4px;padding-bottom:4px}.token-bar .tool{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:flex}.token-bar .tool svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.token-bar .tool.active{color:var(--accent);background:#f2b54429;border-color:#f2b54480}.token-bar .tool.danger{color:var(--danger)}.drag-readout{z-index:16;border:1px solid var(--border-strong);color:#e8f6ff;white-space:nowrap;pointer-events:none;background:#0a0c10e0;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:600;position:absolute;transform:translate(-50%,calc(-100% - 44px))}.spec-sheet{background:var(--bg-panel);min-height:0;font-size:var(--fs-md);--gap:10px;flex-direction:column;flex:1;display:flex;overflow:auto}.spec-sheet.compact{--gap:6px}.spec-tabs{z-index:2;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-shrink:0;gap:2px;padding:6px 10px 0;display:flex;position:sticky;top:0;overflow-x:auto}.spec-tab{border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-bottom:0;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.spec-tab:hover{color:var(--text);background:var(--bg-hover)}.spec-tab.active{color:var(--text);background:var(--bg-elevated);border-color:var(--border)}.spec-flow{align-content:flex-start;align-items:flex-start;gap:var(--gap);flex-wrap:wrap;min-width:0;display:flex;container-type:inline-size}.spec-item{min-width:0;position:relative}.spec-item.f-full{flex:0 0 100%}.spec-item.f-half{flex:0 0 calc((100% - var(--gap)) / 2)}.spec-item.f-third{flex:0 0 calc((100% - 2 * var(--gap)) / 3)}.spec-item.f-quarter{flex:0 0 calc((100% - 3 * var(--gap)) / 4)}.spec-item.f-grow{flex:170px}.spec-item.f-fit{flex:none}.spec-item.f-fit>.spec-field.number .spec-input{width:76px}.spec-item.f-fit>.spec-field .spec-value{min-width:52px}.spec-row:not(:has(>.spec-item:not(.f-fit))){align-items:center}@container (width<=520px){.spec-item.f-half,.spec-item.f-third{flex-basis:100%}.spec-item.f-quarter{flex-basis:calc((100% - var(--gap)) / 2)}}.spec-page{padding:14px 16px 22px}.spec-heading{margin:4px 0 0}.spec-heading.l1{font-size:19px;font-weight:700}.spec-heading.l2{font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700}.spec-heading.l3{font-size:var(--fs-sm);color:var(--text-muted);font-weight:600}.spec-divider{border:0;border-top:1px solid var(--border);width:100%;margin:2px 0}.spec-text{color:var(--text-muted);word-break:break-word;line-height:1.5}.spec-text p,.spec-text ul,.spec-text ol{margin:0 0 6px}.spec-text ul,.spec-text ol{padding-left:20px}.spec-text>:last-child{margin-bottom:0}.spec-text img{border-radius:var(--radius-sm);max-width:100%}.spec-section{border:1px solid var(--border);border-radius:var(--radius);background:#ffffff04;padding:8px 12px 12px}.spec-section.shut{padding-bottom:8px}.spec-section-head{font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;font-weight:700}.spec-section.shut .spec-section-head{margin-bottom:0}.spec-fold{all:unset;cursor:pointer;align-items:center;gap:6px;display:inline-flex}.spec-fold:focus-visible{box-shadow:var(--focus);border-radius:3px}.spec-columns{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:start;gap:12px;display:grid}.spec-label{font-size:var(--fs-xs);color:var(--text-muted);align-items:center;gap:4px;display:inline-flex}.spec-field{flex-direction:column;gap:3px;min-width:0;display:flex}.spec-field.checkbox{flex-direction:row-reverse;justify-content:flex-end;align-items:center;gap:8px}.spec-field.checkbox .spec-label{font-size:var(--fs-md);color:var(--text)}.spec-input{min-width:0}textarea.spec-input{resize:vertical;min-height:54px;line-height:1.4}.spec-value{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);font-variant-numeric:tabular-nums;min-height:26px;color:var(--text);white-space:pre-wrap;padding:4px 8px;display:block}.spec-check{width:16px;height:16px;accent-color:var(--accent);margin:0}.spec-error{color:var(--danger);cursor:help;font-size:12px}.spec-stat{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);text-align:center;flex-direction:column;align-items:center;gap:3px;min-width:96px;max-width:150px;padding:7px 6px 8px;display:flex}.spec-item:not(.f-fit)>.spec-stat{max-width:none}.spec-stat-label{font-size:var(--fs-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.spec-stat-label.roll{all:unset;cursor:pointer;font-size:var(--fs-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:4px;max-width:100%;font-weight:600;display:inline-flex}.spec-stat-label.roll .text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.spec-stat-label .spec-die{opacity:.75;flex-shrink:0}.spec-stat-label.roll:hover{color:var(--accent)}.spec-stat-label.roll:focus-visible{box-shadow:var(--focus);border-radius:3px}.spec-stat-big{font-variant-numeric:tabular-nums;font-size:24px;font-weight:700;line-height:1.1}.spec-stat-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.spec-stat .spec-stat-input{text-align:center;width:58px;padding:2px 4px}.spec-stat-big-input .spec-stat-input{width:70px;font-size:20px;font-weight:700}.spec-stat-sub{font-size:var(--fs-xs);color:var(--text-muted)}.spec-stat-sub output{color:var(--text);font-weight:600}.spec-resource{flex-direction:column;gap:5px;min-width:0;display:flex}.spec-resource-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.spec-resource-values{align-items:center;gap:4px;display:inline-flex}.spec-num{text-align:center;width:56px}.spec-num-out{text-align:center;font-variant-numeric:tabular-nums;min-width:40px;font-weight:600}.spec-bar{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:7px;overflow:hidden}.spec-bar>span{background:var(--accent);height:100%;transition:width .2s;display:block}.spec-temp{font-size:var(--fs-xs);color:var(--text-muted);align-items:center;gap:6px;display:inline-flex}.spec-track{flex-direction:column;gap:4px;display:flex}.spec-track-boxes{flex-wrap:wrap;gap:4px;display:flex}.spec-box{border:1px solid var(--border-strong);background:var(--bg);cursor:pointer;border-radius:3px;width:18px;height:18px;padding:0}.spec-track.pips .spec-box{border-radius:50%}.spec-box.on{background:var(--accent);border-color:var(--accent)}.spec-box:disabled{cursor:default}.spec-roll{align-self:flex-start}.spec-die{vertical-align:-1px;display:inline-block}.spec-with-hint{align-items:center;gap:6px;min-width:0;display:flex}.spec-with-hint>.spec-input{flex:1}.spec-hint{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.spec-list{flex-direction:column;gap:4px;min-width:0;display:flex}.spec-list-head{font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);align-items:baseline;gap:8px;font-weight:700;display:flex}.spec-list-row{align-items:center;gap:6px;display:grid}.spec-list-row.header{font-size:var(--fs-xs);color:var(--text-faint);padding:0 1px}.spec-list-row.header span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.spec-cell{min-width:0}.spec-cell .spec-value{min-height:26px}.spec-list.table .spec-roll{white-space:nowrap;text-overflow:ellipsis;place-self:center start;max-width:100%;overflow:hidden}.spec-list.cards .spec-list-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));padding:8px 34px 8px 10px;position:relative}.spec-list.cards .spec-remove{position:absolute;top:4px;right:4px}.spec-card-field{flex-direction:column;gap:3px;min-width:0;display:flex}.spec-card-field.longtext{grid-column:1/-1}.spec-remove{padding:2px 6px}.spec-add,.btn.start{align-self:flex-start}.spec-list-empty{padding:2px 0}.spec-action{border-bottom:1px solid var(--border);flex-direction:column;gap:6px;padding:2px 0 4px;display:flex}.spec-action:last-of-type{border-bottom:none}.spec-action-line{align-items:center;gap:6px;min-width:0;display:flex}.spec-action-use{all:unset;cursor:pointer;border-radius:var(--radius-sm);flex:0 auto;align-items:center;gap:6px;min-width:0;padding:3px 4px;font-weight:600;display:inline-flex}.spec-action-use .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.spec-action-use .spec-die{opacity:.8;flex-shrink:0}.spec-action-use:hover{color:var(--accent);background:var(--bg-elevated)}.spec-action-use:focus-visible{box-shadow:var(--focus)}.spec-action-mark{opacity:.7;text-align:center;flex-shrink:0;width:12px;font-size:12px}.spec-action-cost{font-size:var(--fs-xs);background:var(--bg-elevated);border:1px solid var(--border-strong);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:1px 6px;font-weight:700}.spec-action-sum{min-width:0;font-size:var(--fs-xs);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;text-align:right;flex:1 1 0;overflow:hidden}.spec-action-star,.spec-action-gear{flex-shrink:0;padding:2px 6px}.spec-action-star.on{color:var(--accent)}.spec-action-edit{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px 8px;padding:8px 10px;display:grid}.spec-action-field{flex-direction:column;gap:3px;min-width:0;display:flex}.spec-action-field.wide{grid-column:1/-1}.spec-action-foot{grid-column:1/-1;justify-content:space-between;gap:6px;display:flex}.spec-sheet.dragging [data-drop-list],.spec-sheet.dragging [data-drop-field]{outline-offset:3px;border-radius:var(--radius-sm);outline:1px dashed #f2b54473}.spec-sheet .drop,.spec-sheet.dragging .drop{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.spec-design{outline:none;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.design-bar{background:var(--bg-elevated);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;display:flex}.design-scope{flex-direction:column;gap:2px;min-width:0;display:flex}.design-scope-name{font-weight:600;font-size:var(--fs-md)}.seg{border:1px solid var(--border-strong);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.seg>button{color:var(--text-muted);font-size:var(--fs-sm);cursor:pointer;background:0 0;border:0;padding:4px 10px}.seg>button+button{border-left:1px solid var(--border-strong)}.seg>button.on{background:var(--accent);color:var(--accent-text);font-weight:600}.design-status{font-size:var(--fs-xs);color:var(--text-faint);text-align:right;min-width:58px}.design-status.pending,.design-status.saving{color:var(--accent)}.design-status.failed{color:var(--danger)}.design-problems-wrap{position:relative}.design-problems{z-index:40;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);width:320px;max-height:300px;box-shadow:var(--shadow);flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0;overflow:auto}.design-problem{all:unset;cursor:pointer;border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--text);padding:6px 8px}.design-problem:hover,.design-problem:focus-visible{background:var(--bg-hover)}.spec-design-main{flex:1;min-height:0;display:flex}.spec-sheet.design{min-width:0}.spec-sheet.design .spec-page{padding-top:22px;padding-bottom:60px}.spec-tab.add{color:var(--accent);font-weight:700}.spec-tab.selected{box-shadow:inset 0 -2px 0 var(--accent)}.design-block{outline-offset:3px;border-radius:var(--radius-sm);outline:1px dashed #0000}.design-block:hover{outline-color:var(--border-strong)}.design-block:focus{outline-style:solid}.design-block:focus-visible{box-shadow:var(--focus);outline-color:var(--accent)}.design-block.selected{outline:2px solid var(--accent);z-index:2}.design-block.has-problems{outline:1px dashed var(--danger)}.design-block.selected.has-problems{outline:2px solid var(--danger)}.design-block.personal{outline-color:#5cc8ff73}.design-block.locked>:not(.design-chrome){opacity:.72}.design-block.dragged{opacity:.35}.design-chrome{z-index:5;pointer-events:none;justify-content:space-between;align-items:center;gap:6px;width:max-content;min-width:calc(100% + 6px);height:18px;display:none;position:absolute;top:-21px;left:-3px}.design-block:hover>.design-chrome,.design-block.selected>.design-chrome,.design-block:focus-within>.design-chrome,.design-block.has-problems>.design-chrome{display:flex}.design-block:has(.design-block:hover):not(.selected)>.design-chrome{display:none}.design-handle{pointer-events:auto;max-width:260px;height:18px;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border-strong);white-space:nowrap;text-overflow:ellipsis;cursor:grab;-webkit-user-select:none;user-select:none;border-radius:4px;align-items:center;gap:4px;padding:0 6px 0 3px;font-size:10.5px;line-height:18px;display:inline-flex;overflow:hidden}.design-handle.locked{cursor:pointer}.design-handle .grip{color:var(--text-faint);font-size:12px}.design-block.selected>.design-chrome .design-handle{color:var(--accent-text);background:var(--accent);border-color:var(--accent)}.design-block.selected>.design-chrome .design-handle .grip{color:var(--accent-text)}.design-tools{pointer-events:auto;gap:2px;display:inline-flex}.design-tools>button{border:1px solid var(--border-strong);background:var(--bg-elevated);width:20px;height:18px;color:var(--text-muted);cursor:pointer;border-radius:4px;padding:0;font-size:12px;line-height:1}.design-tools>button:hover{color:var(--text);background:var(--bg-hover)}.design-block.drop-before:before{content:"";z-index:6;background:var(--accent);border-radius:2px;width:3px;position:absolute;top:0;bottom:0;left:-7px}.design-block.f-full.drop-before:before{width:auto;height:3px;inset:-7px 0 auto}.spec-sheet.design .design-flow.empty{outline:1px dashed var(--border);outline-offset:-1px;border-radius:var(--radius-sm);min-height:44px;padding:6px}.design-flow{position:relative}.flow-end{z-index:4;opacity:0;pointer-events:none;transition:opacity .1s;position:absolute;bottom:-13px;right:0}.spec-page.design-flow>.flow-end,.design-flow.empty>.flow-end{flex:none;align-self:center;position:relative;bottom:auto;right:auto}.design-flow:hover>.flow-end,.design-flow.empty>.flow-end,.spec-page.design-flow>.flow-end,.flow-end.open,.flow-end.drop,.flow-end:focus-within{opacity:1;pointer-events:auto}.design-flow:not(.spec-page):not(.empty)>.flow-end .design-add{background:var(--bg-panel);font-size:var(--fs-xs);padding:0 6px}.flow-end.drop .design-add{color:var(--accent);border-color:var(--accent);border-style:solid}.design-add{all:unset;cursor:pointer;font-size:var(--fs-sm);color:var(--text-faint);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);padding:3px 8px}.design-add:hover,.design-add:focus-visible{color:var(--accent);border-color:var(--accent)}.design-palette{z-index:30;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);width:290px;box-shadow:var(--shadow);cursor:default;pointer-events:auto;flex-direction:column;gap:6px;padding:8px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.design-chrome>.design-palette{top:22px;left:auto;right:0}.design-palette-list{flex-direction:column;max-height:300px;display:flex;overflow:auto}.design-palette-item{all:unset;cursor:pointer;border-radius:var(--radius-sm);flex-direction:column;gap:1px;padding:5px 8px;display:flex}.design-palette-item .name{font-size:var(--fs-md);color:var(--text);font-weight:600}.design-palette-item .hint{font-size:var(--fs-xs);color:var(--text-muted)}.design-palette-item.active{background:var(--bg-hover)}.design-palette-item.active .name{color:var(--accent)}.spec-side{border-left:1px solid var(--border);background:var(--bg-panel);flex-direction:column;flex:0 0 300px;width:300px;min-height:0;display:flex}.spec-side-tabs{border-bottom:1px solid var(--border);gap:2px;padding:6px 8px 0;display:flex}.spec-side-tabs>button{border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--text-muted);cursor:pointer;font-size:var(--fs-sm);background:0 0;border:1px solid #0000;border-bottom:0;flex:1;padding:6px 8px}.spec-side-tabs>button.on{color:var(--text);background:var(--bg-elevated);border-color:var(--border);font-weight:600}.spec-side-body{min-height:0;font-size:var(--fs-sm);flex:1;padding:10px 12px 24px;overflow:auto}.block-palette{flex-direction:column;gap:10px;display:flex}.block-group{flex-direction:column;gap:3px;display:flex}.block-item{all:unset;-webkit-user-drag:element;-webkit-user-select:none;user-select:none;box-sizing:border-box;cursor:grab;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);grid-template-columns:14px 1fr;column-gap:6px;padding:5px 8px;display:grid}.block-item:hover,.block-item:focus-visible{border-color:var(--accent)}.block-item .grip{color:var(--text-faint);grid-row:span 2;align-self:center}.block-item .name{font-size:var(--fs-md);color:var(--text);font-weight:600}.block-item .hint{font-size:var(--fs-xs);color:var(--text-muted)}.spec-inspector{font-size:var(--fs-sm)}.insp{flex-direction:column;gap:10px;display:flex}.insp-title{font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700}.insp-field{flex-direction:column;gap:3px;display:flex}.insp-label{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.insp-hint{font-size:var(--fs-xs);color:var(--text-faint);line-height:1.35}.insp-hint b{color:var(--text);font-weight:600}.insp-error{font-size:var(--fs-xs);color:var(--danger);line-height:1.35}.insp-check{font-size:var(--fs-sm);color:var(--text);cursor:pointer;align-items:center;gap:6px;display:flex}.insp-check.small{font-size:var(--fs-xs);color:var(--text-muted)}.insp-check input{accent-color:var(--accent)}.insp-group{border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:6px;padding:8px;display:flex}.insp-sub{border-left:2px solid var(--border);flex-direction:column;gap:5px;padding:6px 0 6px 8px;display:flex}.insp-row{gap:4px}.insp-column{flex-direction:column;gap:4px;display:flex}.insp-column.open{border-bottom:1px solid var(--border);padding-bottom:6px}.insp-cats{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 8px;display:grid}.insp-actions{border-top:1px solid var(--border);gap:6px;padding-top:6px;display:flex}.insp-advanced>summary{cursor:pointer;font-size:var(--fs-xs);color:var(--text-muted);padding:2px 0;font-weight:600}.insp-advanced[open]>summary{margin-bottom:8px}.insp-formula{flex-direction:column;gap:3px;display:flex;position:relative}.insp-suggest{z-index:30;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);flex-direction:column;padding:4px;display:flex;position:absolute;top:100%;left:0;right:0}.insp-suggest>button{all:unset;cursor:pointer;font-size:var(--fs-xs);border-radius:3px;justify-content:space-between;gap:8px;padding:4px 6px;display:flex}.insp-suggest>button .faint{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.insp-suggest>button.active{background:var(--bg-hover);color:var(--accent)}.input.invalid{border-color:var(--danger)}input[type=color]{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg);width:40px;height:26px;padding:0 2px}
