/* Session controls use the current theme's surfaces and stay readable at any zoom. */
.neutral-portrait{display:block;width:100%;height:100%;border-radius:50%;background:var(--theme-raised,#dce3cf)}
.token-name,#tokenBeacon>span{display:none!important}
.slot-dot{padding:0;line-height:1;overflow:hidden;position:relative;min-width:25px;width:25px;height:28px}
.slot-dot svg{display:block;width:16px;height:19px;flex-shrink:0}
.slot-dot.available{color:var(--theme-accent-text,#3c593c);background:color-mix(in srgb,var(--theme-accent,#61794f) 24%,var(--white));border-color:var(--theme-accent,#61794f)}
.slot-dot.available svg{fill:color-mix(in srgb,currentColor 25%,transparent)}
.slot-dot.spent{color:var(--muted);background:var(--paper);opacity:.48}
.slot-dot.spent::after{content:"";position:absolute;width:21px;height:1.5px;background:currentColor;transform:rotate(-45deg)}
.slots-config-grid select{width:100%;font-size:12px;min-height:34px;color:var(--ink);background:var(--white);border:1px solid var(--line);border-radius:5px}
.session-resources{margin:16px 0}.temp-hp-button{width:100%;display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:7px;background:var(--theme-raised,#edf2e3);font-size:13px}.temp-hp-button strong{font-size:17px;font-weight:500}.rest-buttons{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.rest-buttons .button{flex:1;padding:8px 6px;white-space:normal;font-size:12px}
.log-item{font-size:14px;line-height:1.65;gap:10px}.log-item time{font-size:11px}.recent-log{gap:16px}.history-roll-detail{font-size:13px;line-height:1.7}.roll-strip,.roll-strip>span>small{font-size:12px}.roll-strip>small{font-size:11px}.roll-strip{max-height:96px}
.preset-description{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.6;margin-bottom:18px}.preset-summary{font-size:16px}.combat-config,.rest-config{margin:16px 0;padding-top:12px;border-top:1px solid var(--line)}.combat-config summary,.rest-config summary{font-size:13px;margin-bottom:13px;cursor:pointer}.combat-effects{max-height:190px;overflow:auto}.combat-effect{display:flex;flex-direction:column;gap:8px;margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--white);font-size:12px}.combat-effect>strong{font-weight:550}.combat-effect .roll-mode-picker{margin:0}
.scene-curtain{position:absolute;inset:0;z-index:100;background:#101311;color:#eeeede;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;pointer-events:auto}.scene-curtain strong{font-size:22px;font-weight:500}.scene-curtain span{font-size:14px}.scene-closed>.board,.scene-closed>.map-tools,.scene-closed>.map-badge,.scene-closed>.map-hint,.scene-closed>.initiative-window,.scene-closed>.map-zoom,.scene-closed>.player-banner{visibility:hidden}
.fog-brush-controls{position:absolute;z-index:14;bottom:57px;left:12px;display:flex;gap:4px;align-items:center;flex-wrap:wrap;max-width:calc(100% - 24px);padding:6px;border:1px solid var(--line);border-radius:8px;background:var(--white);color:var(--ink);box-shadow:0 2px 8px #00000015}.fog-brush-controls button{padding:7px 8px;border-radius:5px;font-size:11px;min-height:30px}.fog-brush-controls button[aria-pressed=true]{background:var(--theme-wash,#e0e8d5);color:var(--ink);outline:1px solid var(--theme-accent,#61794f)}.fog-brush-controls label{display:flex;align-items:center;gap:5px;font-size:11px}.fog-brush-controls input{width:70px;accent-color:var(--accent)}
#curtainButton{font-size:11px;min-height:32px;padding:6px 9px;margin-left:8px}#curtainButton[aria-pressed=true]{background:var(--theme-wash,#e0e8d5);outline:1px solid var(--accent)}.stage-heading{flex-wrap:wrap;gap:8px}.stage-heading>div:first-child{margin-right:auto}
html[data-theme="dust"] .brand-symbol .dust-brand-logo{width:53px;height:66px;top:58%}
@media(max-width:650px){#curtainButton{font-size:10px;min-height:30px}.stage-heading{gap:5px}#curtainButton svg{width:13px;height:13px}.scene-curtain strong{font-size:18px}.fog-brush-controls{bottom:48px}.fog-brush-controls label{flex:1}.fog-brush-controls input{width:60px}.log-item{font-size:13px}}

.fog-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}

#roomCapacity{margin-left:auto;margin-right:12px;white-space:nowrap}
.room-save-status{margin:0 20px 10px;padding:10px 14px;border:1px solid var(--line);border-radius:8px;background:var(--theme-wash,#edf2e3);color:var(--ink);font-size:13px}
.room-save-status[data-error=true]{border-color:var(--danger,#a44d38);background:var(--white)}
.room-save-status strong{display:block;font-size:14px}.room-save-status p{margin:5px 0;line-height:1.5}.room-save-status>div{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:650px){#roomCapacity{font-size:10px;white-space:normal}.room-save-status{margin:0 10px 8px;padding:8px 10px}}

html[data-theme="dust"] .landing-brand .dust-brand-logo{transform:scale(1.2)}

/* Token outlines are measured in screen pixels, capped for tiny map markers. */
.token{--token-rim:min(calc(5px * var(--inverse-zoom,1)),calc(var(--token-size,50px) * .18));--token-edge:min(calc(1px * var(--inverse-zoom,1)),calc(var(--token-size,50px) * .035));--token-select:min(calc(2px * var(--inverse-zoom,1)),calc(var(--token-size,50px) * .06));}
.token.has-portrait{border-width:var(--token-rim);border-color:var(--token-color);background:var(--token-color);box-shadow:0 0 0 var(--token-edge) #f6f2e9,0 0 0 calc(var(--token-edge) * 2) #18241e;}
.token.is-empty{border-width:0;background:var(--token-color);box-shadow:0 0 0 var(--token-edge) #f6f2e9,0 0 0 calc(var(--token-edge) * 2) #18241e;}
.token.is-empty .token-front,.token.is-empty .neutral-portrait{background:var(--token-color);}
.token.has-portrait.selected,.token.is-empty.selected{box-shadow:0 0 0 var(--token-edge) #f6f2e9,0 0 0 calc(var(--token-edge) * 2) #18241e,0 0 0 calc(var(--token-edge) * 2 + var(--token-select)) #f6f2e9,0 0 0 calc(var(--token-edge) * 2 + var(--token-select) * 2) var(--token-color);}
.personal-notes-area{font-size:14px;line-height:1.6;min-height:230px;resize:vertical;max-height:55dvh;}
.personal-notes-footer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;}
#personalNotesStatus{font-size:12px;color:var(--muted);margin-right:auto;}
#personalNotesStatus[data-state="error"]{color:var(--theme-danger-text,#a45149);}
.note-conflict-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.initiative-handle button.round-label{border:1px solid var(--line);border-radius:5px;color:inherit;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px;}
.initiative-handle button.round-label:disabled{cursor:default;text-decoration:none;opacity:1;}
.combat-resource{border:1px solid var(--line);border-radius:9px;padding:12px;margin-top:12px;font-size:12px;line-height:1.5;background:var(--theme-surface);}
.combat-resource-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px;}
.combat-resource-heading strong{font-size:12px;font-weight:600;}
.combat-resource .text-button{font-size:11px;}
.combat-resource .button{font-size:11px;min-height:34px;white-space:normal;}
.combat-resource .small{margin:6px 0;}
.death-save-row{display:flex;align-items:center;justify-content:space-between;margin:8px 0;gap:12px;}
.death-pips{display:inline-flex;gap:7px;}
.death-pips i{width:13px;height:13px;border:1.5px solid currentColor;border-radius:50%;}
.death-save-row.success{color:var(--theme-accent-text);}
.death-save-row.failure{color:var(--theme-danger-text,#a45149);}
.death-pips i.filled{background:currentColor;}
.death-roll-button{width:100%;margin-top:6px;}
.death-critical{font-size:10px;margin-top:12px;line-height:1.5;}
.death-state-result{font-weight:600;margin:8px 0;}
.concentration-resource.is-active{border-color:var(--theme-gold-line,var(--line));}
.concentration-spell{font-size:13px;margin:4px 0 10px;overflow-wrap:anywhere;}
.concentration-check{padding:10px 0;border-top:1px solid var(--line);}
.concentration-check>span{display:block;margin-bottom:6px;}
.concentration-check .button{width:100%;margin-top:6px;}
.concentration-public{padding:8px 0;font-size:12px;color:var(--theme-gold-text);}
.token-concentration{position:absolute;left:-8px;top:-8px;width:17px;height:17px;border:1.5px solid var(--theme-gold-text,#846d35);border-radius:5px;background:var(--theme-surface,#fffdf0);color:var(--theme-gold-text,#846d35);display:grid;place-items:center;font-size:10px;font-weight:700;line-height:1;transform:scale(var(--inverse-zoom,1));transform-origin:bottom right;pointer-events:none;}
.natural-result{font-weight:750;}
.natural-20{color:var(--theme-gold-text,#846d35);}
.natural-1{color:var(--theme-danger-text,#a45149);}
.natural-caption{font-weight:650;}
.secret-preset-mark{display:inline-block;margin-left:6px;padding:2px 5px;border:1px solid var(--line);border-radius:4px;font-size:9px;font-weight:500;color:var(--muted);vertical-align:middle;}
.secret-preset-notice{padding:8px 10px;border:1px solid var(--line);border-radius:6px;color:var(--muted);font-size:12px;}
.preset-privacy{padding:10px 0;font-size:13px;}
/* Large canvas documents load only inside this editor. */
.canvas-preview-button>img{width:100%;aspect-ratio:1.6;object-fit:contain;background:#fffdf4;border-radius:6px;display:block;}
.table-canvas-preview{width:100%;height:100%;object-fit:fill;pointer-events:none;}
.canvas-dialog{width:min(1240px,96vw);max-width:96vw;}
.canvas-dialog .dialog-shell{padding:18px;max-height:94dvh;}
.canvas-dialog #dialogBody{overflow:auto;}
.canvas-workbench{display:flex;flex-direction:column;gap:9px;min-width:0;background:var(--theme-surface,#fafbf4);color:var(--ink);}
.canvas-main-tools,.canvas-bottom-tools,.canvas-photo-tools,.canvas-recovery{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.canvas-main-tools{position:sticky;top:0;z-index:3;background:var(--theme-surface,#fafbf4);padding:4px 0;}
.canvas-workbench button{border:1px solid var(--line);border-radius:6px;background:var(--theme-raised,#f1f5e8);color:inherit;padding:7px 10px;font-size:12px;min-height:32px;}
.canvas-workbench button[aria-pressed=true]{background:var(--theme-accent,#728563);color:var(--theme-button-text,#fffdf4);border-color:var(--theme-accent,#728563);}
.canvas-workbench button:disabled{opacity:.4;cursor:default;}
.canvas-color-label,.canvas-width-label{display:flex;align-items:center;gap:5px;font-size:11px;padding:0 5px;}
.canvas-color-label input{width:25px;height:28px;border:0;padding:0;}
.canvas-width-label input{width:75px;accent-color:var(--theme-accent);}
.canvas-width-label output{min-width:20px;}
.canvas-viewport{position:relative;width:100%;height:55dvh;min-height:250px;overflow:hidden;background:var(--theme-wash,#e1e7d7);border:1px solid var(--line);border-radius:9px;touch-action:none;outline:none;}
.canvas-viewport:focus-visible{outline:2px solid var(--theme-accent);outline-offset:2px;}
.canvas-viewport.is-drop-target{outline:3px solid var(--theme-accent);}
.canvas-viewport>canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.canvas-loading{position:absolute;inset:0;display:grid;place-items:center;font-size:14px;}
.canvas-bottom-tools{font-size:11px;}
.canvas-bottom-tools [data-canvas-status]{margin-left:auto;max-width:65%;line-height:1.5;}
.canvas-bottom-tools [data-error=true]{color:var(--theme-danger-text,#a45149);}
.canvas-photo-tools{padding:8px;border:1px solid var(--line);border-radius:7px;font-size:12px;}
.canvas-photo-tools[hidden],.canvas-recovery[hidden]{display:none!important;}
.canvas-photo-tools small{color:var(--muted);}
.canvas-recovery{padding:10px;border:1px solid var(--theme-danger-text,#a45149);border-radius:7px;font-size:12px;}
.canvas-properties{border-top:1px solid var(--line);padding:9px 0;font-size:12px;}
.canvas-properties>summary{cursor:pointer;padding:5px 0;}
.canvas-properties .field{margin-top:12px;}
.canvas-workbench:fullscreen{padding:16px;width:100%;height:100%;overflow:auto;}
.canvas-workbench:fullscreen .canvas-viewport{flex:1;height:auto;min-height:200px;}
.canvas-workbench:fullscreen .canvas-properties{flex-shrink:0;}
.canvas-fullscreen{position:fixed!important;inset:0!important;width:100vw!important;max-width:none!important;max-height:none!important;height:100dvh!important;}
.canvas-fullscreen .dialog-shell{max-height:100dvh;}
@media(max-width:600px){.canvas-dialog .dialog-shell{padding:12px;}.canvas-viewport{height:54dvh;min-height:220px;}.canvas-main-tools{gap:4px;}.canvas-workbench button{font-size:11px;padding:6px 8px;}.canvas-bottom-tools [data-canvas-status]{max-width:100%;margin-left:0;flex-basis:100%;}.canvas-width-label input{width:60px;}}
.canvas-fullscreen .dialog-shell{height:100dvh;display:flex;flex-direction:column;}
.canvas-fullscreen #dialogBody{flex:1;min-height:0;}
.canvas-fullscreen .canvas-workbench{height:100%;}
.canvas-fullscreen .canvas-viewport{flex:1;height:auto;min-height:200px;}
