:root{--bg:#fff;--surface:#f5f5f5;--surface-2:#ebebeb;--text:#111;--text-soft:#6b6b6b;--line:#ddd;--line-strong:#bdbdbd;--primary:#111;--on-primary:#fff;--danger:#b3261e;--ok:#2e7d32;--board-outside:#e6e6e6;--board:#fafafa;--grid:#a6a6a6;--frame:#111;--move:#1f9d55;--range:#d64532;--spell:#7b4fd6;--path:#2f6fd6;--crit:#1f9d55;--fumble:#d64532;--font-display:Inter, system-ui, -apple-system, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111;--surface:#1c1c1c;--surface-2:#262626;--text:#f2f2f2;--text-soft:#9e9e9e;--line:#2e2e2e;--line-strong:#4a4a4a;--primary:#f2f2f2;--on-primary:#111;--danger:#ef6b62;--ok:#66bb6a;--board-outside:#0a0a0a;--board:#1a1a1a;--grid:#4d4d4d;--frame:#f2f2f2;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#111;--surface:#1c1c1c;--surface-2:#262626;--text:#f2f2f2;--text-soft:#9e9e9e;--line:#2e2e2e;--line-strong:#4a4a4a;--primary:#f2f2f2;--on-primary:#111;--danger:#ef6b62;--ok:#66bb6a;--board-outside:#0a0a0a;--board:#1a1a1a;--grid:#4d4d4d;--frame:#f2f2f2;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font:15px/1.5 Inter,system-ui,-apple-system,sans-serif}a{color:inherit}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 8px;font-weight:600;line-height:1.25}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-soft);margin-bottom:12px;font-size:.8rem}p{margin:0 0 10px}code{letter-spacing:.05em;font:600 .95em ui-monospace,SFMono-Regular,Menlo,monospace}.page{max-width:520px;margin:0 auto;padding:20px 16px 48px}.page-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.page-header h1{margin:0}.back{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;align-items:center;gap:4px;padding:6px 12px;font-size:.9rem;font-weight:500;text-decoration:none;display:inline-flex}.title{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:2.6rem;font-weight:700}.subtitle{color:var(--text-soft)}.stack{flex-direction:column;gap:12px;display:flex}.stack-sm{flex-direction:column;gap:8px;display:flex}.stack-sm p{margin:0}.row{align-items:center;gap:8px;display:flex}.grow{flex:1;min-width:0}.home{padding-top:14vh}.menu{border-top:1px solid var(--line);flex-direction:column;margin-top:32px;display:flex}.menu-item{border-bottom:1px solid var(--line);flex-direction:column;padding:16px 4px;text-decoration:none;display:flex}.menu-item:hover strong{text-decoration:underline}.menu-item span{color:var(--text-soft);font-size:.9rem}.card{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:16px}.card+.card{margin-top:12px}.stack>.card+.card{margin-top:0}label{margin-bottom:12px;font-size:.9rem;font-weight:500;display:block}input,select{width:100%;font:inherit;border:1px solid var(--line-strong);background:var(--bg);color:var(--text);border-radius:8px;margin-top:6px;padding:10px 12px;font-weight:400;display:block}input:focus,select:focus{outline:2px solid var(--text);outline-offset:-1px}.code-input{letter-spacing:.4em;text-align:center;text-transform:uppercase;font-size:1.6rem;font-weight:600}fieldset{border:1px solid var(--line);border-radius:8px;margin:0 0 12px;padding:12px}legend{padding:0 6px;font-size:.9rem;font-weight:500}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.4}.button{border:1px solid var(--line-strong);background:var(--bg);color:var(--text);white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:9px 14px;font-weight:500;text-decoration:none;display:inline-flex}.button:hover:not(:disabled){background:var(--surface)}.button.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.button.primary:hover:not(:disabled){background:var(--primary);opacity:.88}.button.small{padding:5px 10px;font-size:.85rem}.button.block{width:100%;padding:12px}.text-button{border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 12px;font-size:.9rem;font-weight:500;text-decoration:none;display:inline-flex}.text-button:hover:not(:disabled){border-color:var(--line-strong);background:var(--surface-2)}.row-buttons{flex-wrap:wrap;align-items:center;gap:4px 18px;margin-top:8px;display:flex}.segmented{background:var(--surface-2);border-radius:9px;gap:2px;margin-bottom:14px;padding:3px;display:flex}.segmented button{color:var(--text-soft);background:0 0;border:0;border-radius:7px;flex-direction:column;flex:1;align-items:center;padding:8px;font-weight:500;display:flex}.segmented button.on{background:var(--bg);color:var(--text);box-shadow:0 1px 2px #0000001f}.segmented small{color:var(--text-soft);font-size:.75rem;font-weight:400}.list{margin:0 0 12px;padding:0;list-style:none}.list li{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 0;display:flex}.list li:last-child{border-bottom:0}.list.compact li{padding:6px 0}.inline-form{gap:8px;margin-bottom:10px;display:flex}.inline-form input{margin:0}.inline-label{align-items:center;gap:10px;margin:0;display:flex}.inline-label select{flex:1;width:auto;margin:0}details.more{margin:4px 0 8px}details.more summary{cursor:pointer;color:var(--text-soft);padding:4px 0;font-size:.9rem}details.more[open] summary{margin-bottom:8px}details.more .text-button{display:block}.label{color:var(--text-soft);font-size:.8rem}.hint{color:var(--text-soft);font-size:.85rem}p.hint{margin:2px 0 8px}.error{color:var(--danger);font-size:.9rem}.ok{color:var(--ok);font-size:.9rem}.status{background:var(--surface);border:1px solid var(--line);cursor:default;border-radius:8px;padding:8px 12px;font-size:.9rem}.status.warn{border-color:var(--line-strong)}.dot{background:var(--danger);border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.dot.on{background:var(--ok)}.badge-dot{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.badge-dot.big{width:14px;height:14px}.badge-dot.dm{background:var(--text)}.me-name{align-items:center;gap:10px;margin:2px 0 6px;font-size:1.5rem;display:flex}.status-line{color:var(--text-soft);align-items:center;gap:8px;margin:0;font-size:.9rem;display:flex}.current-campaign{margin-bottom:12px}.current-campaign strong{font-size:1.1rem}.save-points{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.campaign-list{margin-bottom:12px}.seat-picker{aspect-ratio:4/3;width:100%;max-width:300px;margin:8px auto;position:relative}.seat-picker-table{border:1px solid var(--line-strong);background:var(--surface);color:var(--text-soft);border-radius:6px;place-items:center;font-size:.8rem;display:grid;position:absolute;inset:18%}.seat-pick{border:1px solid var(--line-strong);background:var(--bg);border-radius:50%;width:38px;height:38px;margin:-19px 0 0 -19px;font-weight:600;position:absolute}.seat-pick.selected{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.seat-pick:disabled{opacity:.3;text-decoration:line-through}.seat-picker .seat-top-left{top:8%;left:35%}.seat-picker .seat-top-right{top:8%;left:65%}.seat-picker .seat-right-top{top:37%;left:92%}.seat-picker .seat-right-bottom{top:63%;left:92%}.seat-picker .seat-bottom-right{top:92%;left:65%}.seat-picker .seat-bottom-left{top:92%;left:35%}.seat-picker .seat-left-bottom{top:63%;left:8%}.seat-picker .seat-left-top{top:37%;left:8%}.table-screen{background:var(--bg);height:100%;min-height:480px;position:relative;overflow:hidden}.table-center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:90px;display:flex;position:absolute;inset:0}.table-center .title{margin-bottom:12px;font-size:1.6rem}.qr{width:min(34vmin,280px);height:auto;image-rendering:pixelated;margin:10px 0}.room-code{letter-spacing:.18em;margin:0;font-size:clamp(2.5rem,10vmin,4.5rem);font-weight:700;line-height:1}.join-url{margin:0;font-weight:600}.campaign-title{margin:14px 0 0}.dm-status{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin:12px 0 0;display:flex}.player-count{color:var(--text-soft);margin:4px 0 0}.seat{z-index:1;width:0;height:0;position:absolute}.seat-inner{transform-origin:50%;white-space:nowrap;position:absolute;translate:-50% -50%}.table-screen .seat-top-left{top:36px;left:30%}.table-screen .seat-top-right{top:36px;left:70%}.table-screen .seat-right-top{top:30%;left:calc(100% - 36px)}.table-screen .seat-right-bottom{top:70%;left:calc(100% - 36px)}.table-screen .seat-bottom-right{top:calc(100% - 36px);left:70%}.table-screen .seat-bottom-left{top:calc(100% - 36px);left:30%}.table-screen .seat-left-bottom{top:70%;left:36px}.table-screen .seat-left-top{top:30%;left:36px}.seat-free{color:var(--text-soft);border:1px dashed var(--line-strong);border-radius:999px;padding:5px 14px;font-size:.85rem}.player-badge{background:var(--bg);border:2px solid;border-radius:999px;align-items:center;gap:8px;padding:7px 16px;font-size:1.1rem;font-weight:600;display:inline-flex}.player-badge.away{opacity:.45}.page.join.in-play{max-width:none;height:100%;padding:0}.page.join.in-play>.status{z-index:5;position:fixed;top:56px;left:16px;right:16px}.game-layout{flex-direction:column;height:100dvh;display:flex}.game-bar{padding:8px 12px;padding-top:max(8px, env(safe-area-inset-top));border-bottom:1px solid var(--line);background:var(--bg);align-items:center;gap:8px;display:flex}.game-bar .grow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-menu{background:var(--surface);border-bottom:1px solid var(--line);flex-direction:column;align-items:flex-start;padding:8px 16px;display:flex}.game-body{flex-direction:column;flex:1;min-height:0;display:flex}.panel-top .game-body{flex-direction:column-reverse}.panel-right .game-body{flex-direction:row}.panel-left .game-body{flex-direction:row-reverse}.game-board{flex:1;min-width:0;min-height:0;position:relative}.panel-top .game-controls{border-top:0;border-bottom:1px solid var(--line)}.panel-right .game-controls,.panel-left .game-controls{border-top:0;width:min(380px,42vw);max-height:none;overflow-y:auto}.panel-right .game-controls{border-left:1px solid var(--line)}.panel-left .game-controls{border-right:1px solid var(--line)}.game-controls{padding:10px 12px;padding-bottom:max(10px, env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg);max-height:48dvh;overflow-y:auto}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line-strong);background:var(--bg);border-radius:999px;padding:6px 12px;font-size:.85rem}.chip.on{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.tabs{border-bottom:1px solid var(--line);gap:2px;margin:-2px 0 10px;display:flex;overflow-x:auto}.tabs button{color:var(--text-soft);background:0 0;border:0;border-bottom:2px solid #0000;flex:none;margin-bottom:-1px;padding:6px 10px;font-size:.9rem;font-weight:500}.tabs button.on{color:var(--text);border-bottom-color:var(--text)}.swatches{gap:8px;display:flex}.swatch{border:2px solid var(--bg);outline:1px solid var(--line-strong);border-radius:50%;width:30px;height:30px}.swatch.on{outline:2px solid var(--text)}.table-screen.playing{background:var(--board-outside)}.table-corner{background:var(--bg);border:1px solid var(--line);pointer-events:none;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 10px;font-size:.8rem;display:flex;position:absolute;bottom:12px;left:12px}.table-corner .hint{margin:0;font-size:.75rem}.calibration{text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100%;padding:24px;display:flex}.calibration h1{margin:0}.calibration>p{max-width:620px;margin:0}.calib-card{border:2px solid var(--text);color:var(--text-soft);border-radius:3.2mm;flex:none;place-items:center;font-weight:500;display:grid}.calib-row{flex-direction:column;align-items:center;display:flex}.calib-hex{fill:var(--surface);stroke:var(--text)}.calib-ruler{border:2px solid var(--text);border-top:0;height:14px;position:relative}.calib-ruler span{color:var(--text-soft);white-space:nowrap;font-size:.8rem;position:absolute;top:14px;left:50%;translate:-50%}.calib-controls.active{border:1px solid var(--line-strong);border-radius:8px;padding:12px}.calib-adjust{align-items:center;gap:6px;margin:10px 0 14px;display:flex}.calib-adjust input[type=range]{accent-color:var(--text);border:0;flex:1;margin:0;padding:0}.map-board{touch-action:none;-webkit-user-select:none;user-select:none;background:var(--board-outside);width:100%;height:100%;display:block}.board-bg{fill:var(--board)}.highlight{stroke:none}.highlight.move{fill:var(--move);fill-opacity:.2;stroke:var(--move);stroke-opacity:.25}.highlight.range{fill:var(--range);fill-opacity:.16;stroke:var(--range);stroke-opacity:.25}.highlight.spell{fill:var(--spell);fill-opacity:.1;stroke:var(--spell);stroke-opacity:.2}.highlight.far{fill-opacity:.07;stroke-dasharray:.2 .15}.area{fill:var(--spell);fill-opacity:.38;stroke:var(--spell)}.area.preview{fill-opacity:.25;stroke-dasharray:.12 .08}.area-label{fill:var(--spell);text-anchor:middle;paint-order:stroke;stroke:var(--board);stroke-width:.06px;pointer-events:none;font-family:Inter,system-ui,sans-serif;font-weight:700}.move-line{stroke:var(--path);stroke-linecap:round;stroke-dasharray:.15 .12;pointer-events:none}.move-line.over{stroke:var(--range)}.map-board.aiming{cursor:crosshair}.board-bg{stroke:var(--line-strong);stroke-width:.03px}.scale-bar{align-items:center;gap:6px;display:inline-flex}.scale-line{border:2px solid var(--text);border-top:0;height:6px;display:inline-block}.distance-tag{fill:var(--path)}.distance-tag.over{fill:var(--range)}.distance-text{fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-family:Inter,system-ui,sans-serif;font-weight:600}.token.selected .token-ring{stroke:var(--path)}.token{cursor:default}.token.draggable{cursor:grab}.token.dragging{cursor:grabbing;opacity:.85}.token-ring{fill:var(--board);stroke-width:.06px}.token-body{stroke:#00000040;stroke-width:.02px}.token.selected .token-ring{stroke-width:.1px}.token-label{fill:#fff;text-anchor:middle;pointer-events:none;font:600 .3px Inter,system-ui,sans-serif}.token-monster-mark{fill:none;stroke:#fff;stroke-width:.025px;stroke-dasharray:.06 .05;stroke-opacity:.8}.table-frame .frame{fill:none;stroke:var(--frame);pointer-events:stroke}.table-frame .handle{fill:var(--frame);cursor:move}.table-frame .handle-text{fill:var(--board);pointer-events:none;font-family:Inter,system-ui,sans-serif;font-weight:600}.character-card{border:1px solid var(--line);border-radius:8px;margin:12px 0;padding:12px}.overlay{z-index:50;background:var(--bg);-webkit-overflow-scrolling:touch;position:fixed;inset:0;overflow-y:auto}.overlay-inner{max-width:640px;padding:16px 16px 64px;padding-top:max(16px, env(safe-area-inset-top));margin:0 auto;position:relative}textarea{width:100%;font:inherit;border:1px solid var(--line-strong);background:var(--bg);color:var(--text);resize:vertical;border-radius:8px;margin-top:6px;padding:10px 12px;font-weight:400;display:block}textarea:focus{outline:2px solid var(--text);outline-offset:-1px}.builder-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.builder h2,.editor h3,.builder h3{margin-top:12px}.builder-foot{padding:12px 0 max(4px, env(safe-area-inset-bottom));background:var(--bg);margin-top:16px;position:sticky;bottom:0}.choice-list{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.choice{text-align:left;border:1px solid var(--line-strong);background:var(--bg);border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:12px;display:flex}.choice.on{border-color:var(--text);box-shadow:inset 0 0 0 1px var(--text)}.choice span{font-size:.9rem}.pill-grid{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.pill{border:1px solid var(--line);background:var(--bg);text-align:left;border-radius:6px;padding:5px 9px;font-size:.85rem}.pill.prof{border-color:var(--text);border-width:2px;padding:4px 8px}.pill.on{background:var(--primary);color:var(--on-primary)}.pill strong{margin-left:4px}.ability-table{flex-direction:column;margin:8px 0 12px;display:flex}.ability-line{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 0;display:flex}.ability-line select{width:80px;margin:0}.ability-line .bonus{width:24px;color:var(--text-soft);text-align:right;font-size:.85rem}.ability-line .final{text-align:right;width:28px;font-size:1.1rem}.ability-line .mod{text-align:right;width:28px}.stepper{align-items:center;gap:8px;display:flex}.stepper span{text-align:center;width:22px;font-weight:600}.rolled-sets,.roll-sets{flex-wrap:wrap;gap:10px;display:flex}.rolled-set{border:1px solid var(--line);border-radius:6px;flex-direction:column;align-items:center;min-width:52px;padding:6px;display:flex}.rolled-set strong{font-size:1.2rem}.rolled-set .hint span{margin:0 2px}.dropped{opacity:.5;text-decoration:line-through}.spell-pick{border-bottom:1px solid var(--line);padding:4px 0}.spell-pick:last-child{border-bottom:0}.prose{white-space:pre-line;font-size:.9rem}.grid-2{grid-template-columns:1fr 1fr;gap:0 12px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:0 12px;display:grid}.qty{width:64px;margin:0;padding:6px 8px}.warnings{border:1px solid var(--line-strong);border-left:3px solid var(--text);border-radius:6px;margin:12px 0;padding:10px 12px}.warnings ul{margin:6px 0;padding-left:18px;font-size:.9rem}.link{text-align:left;text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.compact-select{width:auto;margin:0;padding:6px 8px;font-size:.85rem}.sheet{flex-direction:column;gap:10px;display:flex}.box{border:1px solid var(--line-strong);background:var(--bg);border-radius:10px;padding:10px 12px}.field-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);font-size:.66rem;font-weight:600}.center{text-align:center}.field{border-bottom:1px solid var(--line);padding:4px 0}.field-value{min-height:1.4em}.field-grid{grid-template-columns:1fr 1fr;gap:4px 16px;margin-top:6px;display:grid}.sheet-header .row.top{align-items:flex-start;gap:10px}.char-name{font-family:var(--font-display);margin:0;font-size:1.6rem;line-height:1.2}.level-xp{flex-direction:column;align-items:center;gap:2px;display:flex}.circle{border:2px solid var(--text);border-radius:50%;place-items:center;width:40px;height:40px;font-size:1.1rem;font-weight:700;display:grid}.small-box{border:1px solid var(--line-strong);border-radius:6px;place-items:center;min-width:48px;height:32px;padding:0 6px;display:grid}.icon-button{border:1px solid var(--line-strong);background:var(--bg);border-radius:8px;width:34px;height:34px;font-size:1rem}.sheet-grid-2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.big-number{font-size:2.4rem;font-weight:700;line-height:1.1;font-family:var(--font-display)}.tick{color:var(--text-soft);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:5px;font-size:.8rem;display:inline-flex}.tick.on{color:var(--text);font-weight:600}.diamond{border:1.5px solid var(--text);background:0 0;border-radius:1px;flex:none;width:12px;height:12px;padding:0;display:inline-block;transform:rotate(45deg)}button.diamond{cursor:pointer}button.diamond:disabled{cursor:default;opacity:1}.tick.on .diamond,.diamond.on{background:var(--text)}.diamond.big{width:18px;height:18px;margin:4px auto 6px}.diamond.successes.on{background:var(--move);border-color:var(--move)}.diamond.failures.on{background:var(--range);border-color:var(--range)}.diamond.spell-slot{border-color:var(--spell)}.diamond.spell-slot.on{background:var(--spell)}.diamonds{gap:9px;padding:0 4px;display:inline-flex}.hp-box{gap:12px;display:flex}.hp-main{flex-direction:column;flex:1;align-items:center;display:flex}.hp-side{border-left:1px solid var(--line);grid-template-columns:auto;align-content:start;justify-items:center;gap:0;padding-left:12px;display:grid}.hp-side>div:not(.field-label){margin-bottom:4px;font-weight:600}.hp{font-size:1rem}.hp strong{font-size:2.2rem;font-family:var(--font-display)}.hp-edit{flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;margin-top:4px;display:flex}.hp-edit input{text-align:center;width:54px;margin:0;padding:5px 6px}.kv{border-bottom:1px solid var(--line);justify-content:space-between;padding:3px 0;font-size:.9rem;display:flex}.death-row{justify-content:center;align-items:center;gap:10px;padding:8px 0 2px;display:flex}.death-row .field-label{width:70px}.stat-strip{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.stat{border:1px solid var(--line-strong);background:var(--bg);text-align:center;border-radius:10px;flex-direction:column;justify-content:space-between;align-items:center;gap:2px;min-height:62px;padding:6px 4px;display:flex}.stat:disabled{opacity:1}.stat strong{font-size:1.15rem}.stat .field-label{font-size:.6rem;line-height:1.2}.stat.inspiration.on .diamond{background:var(--text)}.sheet-columns{grid-template-columns:1fr;gap:10px;display:grid}.ability-blocks{grid-template-columns:1fr 1fr;align-content:start;gap:10px;display:grid}.ability-block{padding:8px 10px}.ability-top{justify-content:center;align-items:center;gap:10px;margin:4px 0 6px;display:flex}.mod-circle{border:2px solid var(--text);background:var(--bg);width:52px;height:52px;font-size:1.25rem;font-weight:700;font-family:var(--font-display);border-radius:50%}.mod-circle:disabled,.skill-row:disabled,.roll-chip:disabled{opacity:1;cursor:default}.score-box{border:1px solid var(--line-strong);border-radius:6px;flex-direction:column;align-items:center;min-width:44px;padding:2px 6px;font-weight:600;display:flex}.score-box .field-label{font-size:.55rem}.skill-row{text-align:left;background:0 0;border:0;align-items:center;gap:6px;width:100%;padding:2px 0;font-size:.85rem;display:flex}.skill-row strong{width:26px}.skill-row.save{border-bottom:1px solid var(--line);margin-bottom:2px;padding-bottom:4px}.prof-dot{border:1.5px solid var(--text);border-radius:50%;flex:none;width:10px;height:10px}.prof-dot.on{background:var(--text)}.sheet-main{flex-direction:column;gap:10px;min-width:0;display:flex}.attack-table{border-collapse:collapse;width:100%;margin-top:4px;font-size:.85rem}.attack-table th{letter-spacing:.06em;text-transform:uppercase;color:var(--text-soft);text-align:left;border-bottom:1px solid var(--line-strong);padding:4px;font-size:.6rem}.attack-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:5px 4px}.roll-chip{border:1px solid var(--line-strong);background:var(--bg);white-space:nowrap;border-radius:6px;padding:2px 7px;font-size:.85rem}.roll-chip:not(:disabled):hover{background:var(--surface)}.tracker{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:6px 0;display:flex}.tracker-form{margin:8px 0 0}.spell-stats{grid-template-columns:repeat(3,1fr);gap:6px;margin:6px 0;display:grid}.slots{flex-direction:column;gap:6px;margin:6px 0 10px;display:flex}.slot-row{align-items:center;gap:10px;display:flex}.slot-row .field-label{width:56px}.training{flex-wrap:wrap;align-items:center;gap:6px 14px;padding:4px 0 6px;display:flex}.expandable{border-bottom:1px solid var(--line)}.expandable:last-child{border-bottom:0}.expandable-head{text-align:left;background:0 0;border:0;align-items:baseline;gap:8px;width:100%;padding:6px 0;font-size:.9rem;display:flex}.expandable-body{padding:0 0 10px}.detail{margin-bottom:8px}.detail .prose{margin:2px 0 0}@media (width>=760px){.overlay-inner{max-width:980px}.sheet-columns{grid-template-columns:300px 1fr}.ability-blocks{grid-template-columns:1fr}}@media (width<=480px){.stat-strip{grid-template-columns:repeat(3,1fr)}.sheet-grid-2{grid-template-columns:1fr}.attack-table td:nth-child(4),.attack-table th:nth-child(4){display:none}}[data-style=parchment] .box,[data-style=parchment] .stat{background:color-mix(in srgb, var(--bg) 55%, #fffaf0 45%);box-shadow:0 1px 3px #3c28141f}[data-style=parchment] .field-label{font-family:var(--font-display);letter-spacing:.1em}.roll-toast{left:50%;bottom:max(20px, env(safe-area-inset-bottom));z-index:60;background:var(--primary);color:var(--on-primary);border-radius:999px;align-items:center;gap:12px;padding:10px 18px;display:flex;position:fixed;translate:-50%;box-shadow:0 4px 16px #0003}.roll-toast strong{font-size:1.6rem}@media (width<=420px){.grid-3{grid-template-columns:1fr 1fr}}.roll-layer{pointer-events:none;z-index:20;position:absolute;inset:0}.roll-stack{width:0;height:0;position:absolute}.roll-stack-inner{flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;translate:-50% -50%}.roll-bottom{top:calc(100% - 150px);left:50%}.roll-top{top:150px;left:50%}.roll-left{top:50%;left:130px}.roll-right{top:50%;left:calc(100% - 130px)}.roll-card{background:var(--primary);min-width:220px;color:var(--on-primary);text-align:center;border-radius:10px;padding:10px 18px;animation:.25s ease-out roll-in;box-shadow:0 6px 24px #00000040}.roll-card .hint{color:inherit;opacity:.7;font-size:.8rem}.roll-total strong{font-size:2.6rem;line-height:1.1;display:block}.roll-total small,.roll-sets small{opacity:.75}.roll-sets{justify-content:center;margin:4px 0}.roll-sets span{flex-direction:column;align-items:center;display:flex}.roll-sets strong{font-size:1.5rem}@keyframes roll-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}body:has(.overlay){overflow:hidden}.credits{margin-top:40px;font-size:.75rem}.chip.move.on{background:var(--move);border-color:var(--move);color:#fff}.chip.range.on{background:var(--range);border-color:var(--range);color:#fff}.chip.spell.on{background:var(--spell);border-color:var(--spell);color:#fff}.chip.move{border-color:color-mix(in srgb, var(--move) 60%, var(--line-strong))}.chip.range{border-color:color-mix(in srgb, var(--range) 50%, var(--line-strong))}.chip.spell{border-color:color-mix(in srgb, var(--spell) 50%, var(--line-strong))}.chip-meta{opacity:.7;margin-left:4px;font-size:.8em}.chip:disabled{opacity:.45}.actions .label{margin:10px 0 4px}.aim-bar{align-items:center;gap:8px;padding:4px 0;display:flex}.aim-bar strong{color:var(--spell)}.button.important{background:var(--spell);border-color:var(--spell);color:#fff}.roll-card.crit{box-shadow:0 0 0 3px var(--crit), 0 6px 24px #00000040}.roll-card.fumble{box-shadow:0 0 0 3px var(--fumble), 0 6px 24px #00000040}:root[data-style=parchment]{--bg:#f3ead7;--surface:#ebdfc4;--surface-2:#e2d3b2;--text:#2b2118;--text-soft:#6b5b4b;--line:#d6c6a2;--line-strong:#bca983;--primary:#8b2e1f;--on-primary:#fbf6ea;--board-outside:#d9cdb2;--board:#f6efdf;--grid:#9c8a6c;--frame:#8b2e1f;--font-display:Cinzel, Georgia, serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root[data-style=parchment]:not([data-theme=light]){--bg:#1e1a16;--surface:#29231d;--surface-2:#332b23;--text:#efe4cf;--text-soft:#b4a58e;--line:#3d342a;--line-strong:#5a4d3e;--primary:#e0846f;--on-primary:#1e1a16;--board-outside:#15120f;--board:#2b251e;--grid:#6f6252;--frame:#e0846f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-style=parchment][data-theme=dark]{--bg:#1e1a16;--surface:#29231d;--surface-2:#332b23;--text:#efe4cf;--text-soft:#b4a58e;--line:#3d342a;--line-strong:#5a4d3e;--primary:#e0846f;--on-primary:#1e1a16;--board-outside:#15120f;--board:#2b251e;--grid:#6f6252;--frame:#e0846f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-style=parchment] body{background-color:var(--bg);background-image:radial-gradient(at 20% 10%,#ffffff40,#0000 60%),radial-gradient(at 80% 90%,#785a281f,#0000 55%);background-attachment:fixed}[data-style=parchment] .card,[data-style=parchment] .choice,[data-style=parchment] .stat,[data-style=parchment] .ability,[data-style=parchment] .hp-box{background:color-mix(in srgb, var(--bg) 60%, #fffaf0 40%);box-shadow:0 1px 3px #3c28141f}[data-style=parchment] .card{border-radius:12px}[data-style=parchment] h3{letter-spacing:.08em;color:var(--primary)}[data-style=parchment] .title{letter-spacing:.08em;font-weight:700}[data-style=parchment] .menu-item strong,[data-style=parchment] .me-name,[data-style=parchment] .sheet-head h2,[data-style=parchment] .room-code{font-family:var(--font-display)}[data-style=parchment] .segmented button.on{background:var(--primary);color:var(--on-primary)}[data-style=parchment] .pill.prof{border-color:var(--primary)}[data-style=parchment] .token-ring{fill:var(--board)}.map-board.aiming .table-frame,.map-board.aiming .table-frame *{pointer-events:none}.prof-dot.expert{box-shadow:0 0 0 2px var(--bg), 0 0 0 3.5px var(--text)}.senses{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:2px 14px;display:grid}.pool{text-align:center;min-width:52px;font-weight:600}.rests{justify-content:flex-end;margin-top:10px}.head-buttons{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.homebrew .segmented{flex-wrap:wrap}.text-entry{border-bottom:1px solid var(--line);padding:6px 0}label.check{align-items:center;gap:6px;font-weight:400;display:inline-flex}label.check input{width:auto;margin:0}.turn-ring{fill:none;stroke:var(--range);stroke-width:.06px;stroke-dasharray:.12 .08;animation:6s linear infinite turn-spin}@keyframes turn-spin{to{stroke-dashoffset:-2px}}.token.down .token-body,.token.down .token-ring{opacity:.35}.down-cross{stroke:var(--range);stroke-width:.08px;stroke-linecap:round}.condition-label{fill:var(--text);text-anchor:middle;paint-order:stroke;stroke:var(--board);stroke-width:.04px;pointer-events:none;font-family:Inter,system-ui,sans-serif;font-weight:600}.hp-bar-bg{fill:var(--line-strong)}.hp-bar{fill:var(--move)}.combat-bar{border:1px solid var(--line-strong);border-radius:8px;margin-bottom:8px;padding:8px 10px}.combat-bar.my-turn{border-color:var(--range);box-shadow:inset 0 0 0 1px var(--range)}.combat-bar .chip-row{margin-top:6px}.chip.used{background:var(--surface-2);color:var(--text-soft);text-decoration:line-through}.button.important-red{background:var(--range);border-color:var(--range);color:#fff}.attack-label{color:var(--range)}.roll-toast.result{border-radius:12px;max-width:min(92vw,520px);font-size:.9rem}.roll-toast.result .hint{color:inherit;opacity:.75}.initiative-edge{z-index:15;pointer-events:none;position:absolute;left:50%;translate:-50%}.initiative-edge.bottom{bottom:10px}.initiative-edge.top{top:10px;rotate:180deg}.initiative-bar{background:var(--bg);border:1px solid var(--line-strong);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:6px 10px;font-size:.85rem;display:flex;box-shadow:0 2px 10px #0000001f}.initiative-bar .round{margin-right:4px;font-weight:700}.init-chip{border:1px solid var(--line);border-radius:999px;align-items:center;gap:5px;padding:3px 8px;display:inline-flex}.init-chip.current{border-color:var(--range);background:var(--range);color:#fff;font-weight:600}.init-chip.down{opacity:.45;text-decoration:line-through}.init-chip .init{opacity:.7;font-size:.8em}.current-row{background:color-mix(in srgb, var(--range) 10%, transparent)}.down-text{color:var(--range)}.token-status{margin:8px 0}.conditions .pill{padding:3px 7px;font-size:.75rem}.condition-on{background:var(--range)!important;border-color:var(--range)!important;color:#fff!important}.monster-block{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.monster-abilities{grid-template-columns:repeat(6,1fr);gap:4px;margin:6px 0;font-size:.8rem;display:grid}.monster-action{border-bottom:1px solid var(--line);padding:4px 0}.roll-card .outcome{font-size:.95rem}.roll-card .outcome strong,.roll-toast.result strong{font-size:1rem}.roll-layer .roll-card{max-width:340px}.button.danger{color:var(--range);border-color:color-mix(in srgb, var(--range) 50%, var(--line-strong))}.button.danger:hover:not(:disabled){background:color-mix(in srgb, var(--range) 8%, var(--bg))}.button.on{background:var(--surface-2);border-color:var(--text)}.button-row{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.button-row>.button{flex:auto}.icon-btn{border:1px solid var(--line-strong);background:var(--bg);width:38px;height:38px;color:var(--text);cursor:pointer;border-radius:10px;flex:none;place-items:center;font-size:1.05rem;display:inline-grid}.icon-btn:hover,.icon-btn.on{background:var(--surface-2)}.game-bar{gap:6px}.game-bar .title-block{flex-direction:column;min-width:0;line-height:1.2;display:flex}.game-bar .title-block .hint{align-items:center;gap:4px;font-size:.75rem;display:flex}.game-menu{padding:10px 12px}.game-menu .button-row{width:100%;margin:0}.section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);margin:14px 0 6px;font-size:.72rem;font-weight:600}.section-label:first-child{margin-top:2px}.section-toggle{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:8px;width:100%;margin:12px 0 4px;padding:8px 10px;font-size:.85rem;font-weight:600;display:block}.empty-state{text-align:center;border:1px dashed var(--line-strong);border-radius:10px;padding:18px 8px}.empty-state p{margin:6px 0 0}.selected-head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding-bottom:8px;display:flex}.selected-head .hint{margin:0}.tab-bar{background:var(--surface-2);scrollbar-width:none;border-radius:10px;gap:4px;margin:-2px 0 12px;padding:3px;display:flex;overflow-x:auto}.tab-bar button{color:var(--text-soft);white-space:nowrap;background:0 0;border:0;border-radius:8px;flex:1 0 auto;padding:8px 10px;font-size:.85rem;font-weight:600;position:relative}.tab-bar button.on{background:var(--bg);color:var(--text);box-shadow:0 1px 2px #0000001f}.tab-dot{background:var(--range);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}.segmented.small button{padding:6px;font-size:.82rem}p.hint.small{margin:6px 0;font-size:.75rem}.card-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;display:grid}.action-card{text-align:left;border:1px solid var(--line-strong);background:var(--bg);min-height:64px;color:var(--text);cursor:pointer;border-left-width:4px;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:9px 11px;display:flex}.action-card strong{font-size:.92rem;line-height:1.2}.action-card span{color:var(--text-soft);font-size:.8rem;line-height:1.25}.action-card .hint{font-size:.72rem}.action-card.move{border-left-color:var(--move)}.action-card.range{border-left-color:var(--range)}.action-card.spell{border-left-color:var(--spell)}.action-card.rage{border-left-color:var(--range)}.action-card:hover{background:var(--surface)}.action-card.on{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--text)}.action-card.rage.on{background:var(--range);color:#fff}.action-card.rage.on span{color:#fff}.action-bar{border:1px solid var(--line-strong);background:var(--surface);border-left-width:4px;border-radius:10px;margin-bottom:12px;padding:10px 12px}.action-bar.move{border-left-color:var(--move)}.action-bar.range{border-left-color:var(--range)}.action-bar.spell{border-left-color:var(--spell)}.action-bar-title{flex-direction:column;gap:2px;display:flex}.action-bar-title strong{font-size:1.02rem}.action-bar p{margin:6px 0}.action-bar .segmented,.slot-picker{margin:8px 0}.concentration-row{border:1px solid var(--spell);border-radius:8px;margin-bottom:8px;padding:8px 10px}.combat-bar{background:var(--surface);margin-bottom:12px;padding:10px 12px}.use-grid{grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px;display:grid}.use-button{border:1px solid var(--line-strong);background:var(--bg);border-radius:8px;flex-direction:column;align-items:center;padding:8px 4px;font-size:.85rem;font-weight:600;display:flex}.use-button small{color:var(--move);font-size:.72rem;font-weight:400}.use-button.used{background:var(--surface-2);color:var(--text-soft)}.use-button.used small{color:var(--text-soft)}.use-button.option.on{background:var(--path);border-color:var(--path);color:#fff}.combat-bar>.button.block{margin-top:8px}.death-prompt{background:color-mix(in srgb, var(--range) 12%, transparent);border-radius:8px;align-items:center;gap:8px;margin-top:8px;padding:8px;display:flex}.exhaustion{margin:8px 0}.local-highlight .highlight{fill-opacity:.1;stroke-opacity:.9}:root{--paper-grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.36 0 0 0 0 0.26 0 0 0 0 0.13 0 0 0 0.16 0'/></filter><rect width='240' height='240' filter='url(%23g)'/></svg>");--paper-fibres:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='600'><filter id='f'><feTurbulence type='fractalNoise' baseFrequency='0.004 0.06' numOctaves='3' seed='7' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.42 0 0 0 0 0.3 0 0 0 0 0.15 0 0 0 0.22 -0.05'/></filter><rect width='600' height='600' filter='url(%23f)'/></svg>");--paper-stains:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='900' height='900'><filter id='s'><feTurbulence type='fractalNoise' baseFrequency='0.006' numOctaves='4' seed='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.5 0 0 0 0 0.36 0 0 0 0 0.16 0 0 0 0.55 -0.22'/></filter><rect width='900' height='900' filter='url(%23s)'/></svg>")}[data-style=parchment] body{background-image:var(--paper-grain), var(--paper-fibres), var(--paper-stains), radial-gradient(ellipse at 50% 40%, transparent 55%, #6e4b1e2e 100%);background-attachment:fixed}[data-style=parchment] .card,[data-style=parchment] .box,[data-style=parchment] .choice,[data-style=parchment] .stat,[data-style=parchment] .action-card,[data-style=parchment] .action-bar,[data-style=parchment] .combat-bar,[data-style=parchment] .game-bar,[data-style=parchment] .game-controls,[data-style=parchment] .game-menu,[data-style=parchment] .overlay{background-image:var(--paper-grain), var(--paper-fibres)}[data-style=parchment] .game-bar,[data-style=parchment] .game-controls,[data-style=parchment] .overlay{background-color:var(--bg)}[data-style=parchment] .button:not(.primary):not(.important):not(.important-red),[data-style=parchment] .text-button,[data-style=parchment] .icon-btn{background-image:var(--paper-grain)}[data-style=parchment] .map-board{background-image:var(--paper-grain), var(--paper-stains)}.board-tex,.board-vignette{pointer-events:none;display:none}[data-style=parchment] .board-tex,[data-style=parchment] .board-vignette{display:inline}[data-style=parchment] .action-card{border-color:var(--line-strong)}[data-style=parchment] .tab-bar{background-color:var(--surface-2);background-image:var(--paper-grain)}.button.important-red:hover:not(:disabled){background:var(--range);opacity:.88}.button.important:hover:not(:disabled){background:var(--spell);opacity:.88}.roll-toast.result{top:calc(64px + env(safe-area-inset-top));bottom:auto}.step-title{color:var(--text);align-items:center;gap:8px;font-size:.85rem;display:flex}.step-num{background:var(--primary);width:22px;height:22px;color:var(--on-primary);letter-spacing:0;border-radius:50%;place-items:center;font-size:.75rem;display:inline-grid}.button.big{padding:14px;font-size:1.05rem}.start-card{border-color:var(--line-strong)}details.more summary{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;align-items:center;gap:6px;padding:6px 12px;list-style:none;display:inline-flex}details.more summary::-webkit-details-marker{display:none}details.more summary:before{content:"▸"}details.more[open] summary:before{content:"▾"}
