:root{color-scheme:dark;--bg:#101614;--panel:#17211d;--edge:#355642;--accent:#8cce7d;--text:#eef5ee;--muted:#a8b9aa}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px system-ui,sans-serif}header{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:#132119;border-bottom:1px solid var(--edge)}h1{font-size:20px;margin:0}h2{font-size:16px;margin:0 0 12px}.header-actions{display:flex;gap:10px;align-items:center}.tab-panel{display:grid;grid-template-columns:245px 1fr;height:calc(100vh - 98px);min-height:0}aside,article,.sheet{padding:18px}aside,article,#tabs,.subtabs,.category-tabs{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}aside,article{overflow-y:auto}aside{border-right:1px solid var(--edge);background:#131b17}.player,.character,.tab,.subtab{display:block;width:100%;border:0;background:transparent;color:var(--text);text-align:left;border-radius:6px;padding:9px 10px;cursor:pointer}.player:hover,.character:hover,.tab:hover,.subtab:hover,.active{background:#294034}.character{background:var(--panel);margin:7px 0;border:1px solid var(--edge)}.summary,#status,.modified{color:var(--muted);font-size:12px}.modified{display:inline-block;margin-top:4px;font-variant-numeric:tabular-nums}.tab,.subtab{display:inline-block;width:auto;margin:7px 0 0 7px;border:1px solid var(--edge)}#tabs{height:40px;border-bottom:1px solid var(--edge);overflow:auto;white-space:nowrap}.subtabs,.category-tabs{overflow:auto;white-space:nowrap;margin-bottom:8px}.subtab,.category-tab{margin:0 6px 0 0}.category-tab{display:inline-block;width:auto;border:1px solid var(--edge);background:#17211d;color:var(--text);border-radius:7px;padding:7px 10px;cursor:pointer}.sheet{display:none;max-width:1200px}.sheet.active{display:block}.identity{padding:15px;background:var(--panel);border:1px solid var(--edge);border-radius:8px;margin-bottom:15px;min-height:88px;grid-column:1/-1}.identity h2{font-size:23px}.portrait{float:right;width:112px;max-height:150px;object-fit:cover;border-radius:6px;border:1px solid var(--edge);margin:0 0 8px 14px}.assignment{clear:both;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center;margin-top:12px}.assignment label{display:grid;gap:4px;font-size:12px;color:var(--muted)}.assignment input,.browser-tools input,.browser-tools select{background:#101614;color:var(--text);border:1px solid var(--edge);border-radius:5px;padding:7px}.assignment button,.roll-actions button,#rescan{background:#294034;color:var(--text);border:1px solid var(--edge);border-radius:5px;padding:7px 10px}.assignment small,.assignment-note,.caveat{grid-column:1/-1;color:var(--muted);font-size:12px;margin:0}.browser-tools{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.browser-tools label{display:grid;gap:3px;color:var(--muted);font-size:12px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.section{border:1px solid var(--edge);border-radius:8px;background:var(--panel);padding:12px}.wide{grid-column:1/-1}.section h3{margin:0 0 8px;color:var(--accent);font-size:15px}.row,.quick,.ledger-row{display:grid;grid-template-columns:1fr auto;gap:10px;padding:4px 0;border-bottom:1px solid #29382e}.row:last-child,.quick:last-child,.ledger-row:last-child{border:0}.row small,.quick small,.ledger-row small{display:block;color:var(--muted);font-size:12px}.row em{color:var(--muted);font-style:normal;font-weight:500}.pool{margin-left:5px}.die{border:0;border-radius:5px;background:#294034;color:var(--accent);cursor:pointer;font-size:14px;padding:1px 5px}.groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:10px}.group{padding:7px 9px;border-left:2px solid #426b50;background:#142019}.group h4{margin:0 0 4px;color:var(--muted);font-size:12px;text-transform:uppercase}.ledger-table{max-height:260px;overflow:auto}#roller-modal[hidden]{display:none}#roller-modal{position:fixed;inset:0;background:#000a;z-index:10;display:grid;place-items:center;padding:16px}.roller-card{position:relative;width:min(360px,100%);padding:18px;background:var(--panel);border:1px solid var(--accent);border-radius:10px;box-shadow:0 12px 35px #000}.roller-card h3{margin:0 26px 8px 0;color:var(--accent)}.close-roll{position:absolute;right:9px;top:8px;border:0;background:transparent;color:var(--text);font-size:25px;cursor:pointer}.dice-result{font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.roll-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}@media(max-width:650px){.tab-panel{grid-template-rows:minmax(130px,35vh) minmax(0,1fr);grid-template-columns:1fr}aside{border-right:0;border-bottom:1px solid var(--edge)}article{min-height:0}.browser-tools{display:grid;grid-template-columns:1fr 1fr}.browser-tools label:first-child{grid-column:1/-1}.sheet{padding:12px}.grid{grid-template-columns:1fr}.ledger-row{grid-template-columns:1fr}}
.top-panel{display:block;max-width:1200px;padding:18px}.top-panel[hidden]{display:none}.condition{display:grid;grid-template-columns:110px 1fr auto;gap:6px;align-items:center;padding:7px 0;border-bottom:1px solid #29382e}.box,.fire,.row button{border:1px solid var(--edge);background:#17211d;color:var(--text);border-radius:4px;margin:1px;cursor:pointer}.box.filled{background:#984a4a;color:white}.fire{background:#294034;padding:4px 8px}
.box.overflow{border-color:#927747;color:#dac27a}.box.dead-box{border-color:#b34848;color:#ffabab;font-size:10px}.box.dead-box.filled{background:#7d2020}.reflecting-choice{display:block;margin:12px 0 0;padding-top:10px;border-top:1px solid #29382e}.reflecting-choice label,.reflecting-choice small{display:block}.reflecting-choice small{margin:5px 0 0 24px;color:var(--muted);font-size:12px}
.tracker-character{padding:10px 0;border-bottom:1px solid #29382e}.tracker-character:last-child{border-bottom:0}.tracker-header{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.tracker-character h3{margin:0;color:var(--accent);font-size:15px;white-space:nowrap}.tracker-status{display:flex;align-items:center;gap:6px;min-width:0}.tracker-conscious{white-space:nowrap;font-size:12px}.tracker-monitors{display:grid;gap:1px;min-width:0}.compact-condition{grid-template-columns:62px 1fr auto;padding:2px 0;font-size:12px}.compact-condition .box{width:17px;height:17px;padding:0;font-size:10px}.compact-condition .dead-box{font-size:7px}.compact-condition small{font-size:10px;white-space:nowrap}.tracker-edge{display:grid;grid-template-columns:auto auto auto;gap:3px;align-items:center;font-size:12px;white-space:nowrap;margin-left:auto}.tracker-edge button,.edge-state button{border:1px solid var(--edge);border-radius:4px;background:#294034;color:var(--text);cursor:pointer;padding:2px 6px}.tracker-initiatives{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 360px}.tracker-init{display:grid;grid-template-columns:auto minmax(105px,1fr);gap:4px;align-items:center;min-width:0;font-size:12px;white-space:nowrap}.tracker-init .initiative-actions{display:inline-flex;gap:3px;align-items:center}.tracker-init-readout{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px;align-items:baseline;min-width:0}.tracker-init-readout small{color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis}.initiative-actions{display:inline-flex;gap:4px;align-items:center;justify-self:end}.tracker-init button{width:auto;white-space:nowrap;padding:3px 6px;font-size:11px}@media(max-width:850px){.tracker-initiatives{order:3;flex-basis:100%;margin-left:0}.tracker-edge{margin-left:0}}@media(max-width:560px){.tracker-initiatives{display:grid;grid-template-columns:1fr}.tracker-init{grid-template-columns:auto minmax(0,1fr)}}
/* Authentication overlays deliberately share the compact mobile-first visual
   language of the roller dialog. */
.auth-modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:1rem;background:#07100ee8}.auth-modal[hidden]{display:none!important}.auth-card{display:grid;gap:.75rem;width:min(24rem,100%);padding:1.25rem;border:1px solid #486d60;border-radius:.7rem;background:#10201b;box-shadow:0 1rem 3rem #000}.auth-card label{display:grid;gap:.3rem}.auth-card input{padding:.55rem}.error{min-height:1.2rem;color:#ff9d9d}.header-actions{display:flex;align-items:center;gap:.5rem}.header-actions button{white-space:nowrap}
.tracker-name{display:grid;align-self:center;line-height:1.05}.tracker-name small{color:var(--muted);font-size:10px;font-weight:500;margin-top:2px}
/* Keep initiative on its own compact row. Its action pair stays immediately
   before the matching readout, while fixed readout columns align each mode. */
.tracker-header{align-items:center}.tracker-initiatives{order:4;flex:0 0 100%;margin:5px 0 0;padding-left:2px;gap:12px}.tracker-init{grid-template-columns:auto minmax(132px,1fr)}
@media(max-width:560px){.tracker-initiatives{gap:4px}.tracker-init{grid-template-columns:auto minmax(0,1fr)}}
/* Shared roster measurement keeps the name, condition, Edge, and initiative
   columns vertically aligned without adding blank character-row space. */
.tracker-character{border-bottom:2px solid #4b6955}.tracker-header{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.tracker-name{flex:0 0 var(--tracker-name-width,max-content)}.tracker-edge{justify-self:auto}.tracker-initiatives{padding-left:0}
@media(max-width:560px){.tracker-name{flex:0 1 auto}.tracker-edge{justify-self:auto}.tracker-initiatives{padding-left:0}}

/* Keep the health cluster together: name → state → monitors → Edge.  The
   tracker markup keeps Edge after initiatives for keyboard flow, so flex order
   places it visually at the monitor's right edge without changing behavior. */
.tracker-header .tracker-name{order:1}
.tracker-header .tracker-status{order:2;min-width:var(--tracker-status-width,max-content)}
.tracker-header .tracker-edge{order:3;margin-left:2px}
.tracker-header .tracker-initiatives{order:5}
.tracker-remove{order:4;margin-left:auto}.tracker-remove button{border:1px solid var(--edge);border-radius:4px;background:#5b2525;color:#fff;cursor:pointer;padding:3px 8px;font-size:12px}.tracker-remove button:hover{background:#793131}
@media(max-width:850px){.tracker-remove{margin-left:0}}

/* Overview action area: future conversion controls share this position. */
.sheet-actions{float:right;display:flex;gap:8px;align-items:center;margin:0 0 8px 14px}
.sheet-inactive{display:inline-flex;gap:6px;align-items:center;padding:7px 10px;border:1px solid var(--edge);border-radius:5px;background:#294034;color:var(--text);cursor:pointer;font-size:13px;white-space:nowrap}
.sheet-inactive input{accent-color:var(--accent)}
.user-actions{display:flex;gap:6px;align-items:center}.danger{background:#5b2525;color:#fff;border:1px solid #a34a4a;border-radius:5px;padding:6px 9px;cursor:pointer}.danger:hover{background:#793131}
.temporary-password{display:grid;gap:.45rem;padding:.8rem;border:1px solid var(--accent);border-radius:.5rem;background:#172b20}.temporary-password strong{color:var(--accent)}.temporary-password p{margin:0;color:var(--text);font-size:.9rem}.temporary-password-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem}.temporary-password-copy input{min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.temporary-password-copy button{padding:.55rem .8rem;border:1px solid var(--edge);border-radius:5px;background:#294034;color:var(--text);cursor:pointer}.temporary-password-copy button:hover{background:#426b50}
.spell-centering-option{display:block;margin:8px 0 0}

/* A shared-draft Save is atomic.  Keep the editor visibly and physically
   locked until its response settles so no post-snapshot keystroke can be
   silently discarded by the successful-save cleanup. */
.besm-sheet.saving{opacity:.72;cursor:progress}
.besm-sheet.saving input,.besm-sheet.saving select,.besm-sheet.saving textarea,.besm-sheet.saving button{pointer-events:none;cursor:progress}
.besm-save-lock{margin:0 0 10px;padding:8px 10px;border:1px solid var(--accent);border-radius:6px;background:#203326;color:var(--accent);font-size:13px}
