.page.page-keeper { max-width: none; padding: 12px 16px; }
body:has(.page-keeper) .site-footer { display: none; }
.page-keeper > .stack { gap: 8px; max-width: 2160px; margin: 0 auto; }
.page-keeper .path { margin-bottom: 0; }
.keeper-hub { --keeper-left: 240px; --keeper-right: 300px; --keeper-height: calc(100dvh - 150px); min-width: 0; color: var(--text); }
.keeper-toolbar, .keeper-pane-controls, .keeper-pane-heading, .keeper-section-head, .keeper-player-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.keeper-toolbar { margin-bottom: 8px; min-height: 36px; flex-wrap: wrap; }
.keeper-pane-controls { flex-wrap: wrap; }
.keeper-connection, .keeper-caption { font-size: .8rem; color: var(--subtext1); }
.keeper-frame { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; min-height: 0; }
.keeper-pane, .keeper-tabpanel { min-width: 0; min-height: 0; border: 1px solid var(--surface2); border-radius: 10px; background: var(--mantle); }
.keeper-pane { padding: 12px; display: flex; flex-direction: column; gap: 12px; }
.keeper-pane-heading h2, .keeper-section h2 { margin: 0; font-family: "Chakra Petch", var(--font-sans); font-size: 1.15rem; line-height: 1.3; }
.keeper-scroll { min-width: 0; min-height: 0; overflow: auto; scrollbar-gutter: stable; overscroll-behavior: contain; }
.keeper-left { max-height: 55vh; }
.keeper-player-list { display: flex; flex-direction: column; gap: 10px; }
.keeper-quickcard { position: relative; width: 100%; flex-shrink: 0; display: flex; flex-direction: column; gap: 8px; text-align: left; border: 1px solid var(--field-border); border-radius: 6px; padding: 12px; background: var(--base); color: var(--text); cursor: pointer; font: inherit; }
.keeper-quickcard[aria-pressed="true"] { border-color: var(--text); box-shadow: inset 3px 0 var(--mauve); }
.keeper-quickcard:focus-visible, .keeper-tab:focus-visible, .keeper-resizer:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; }
.keeper-quickcard:disabled { cursor: default; border-style: dashed; }
.keeper-card-name { font-weight: 600; padding-right: 24px; overflow-wrap: anywhere; }
.keeper-card-race { font-size: .8rem; color: var(--subtext1); }
.keeper-card-penalty { position: absolute; top: 12px; right: 12px; font-family: "IBM Plex Mono", monospace; }
.keeper-monitors { display: flex; flex-wrap: wrap; gap: 4px 6px; font: .72rem "IBM Plex Sans Condensed", var(--font-sans); }
.keeper-shock { color: color-mix(in srgb, var(--sapphire) 25%, var(--text)); }
.keeper-trauma { color: color-mix(in srgb, var(--red) 25%, var(--text)); }
.keeper-rot { color: color-mix(in srgb, var(--green) 25%, var(--text)); }
.keeper-card-calculated { color: color-mix(in srgb, var(--yellow) 25%, var(--text)); font-size: .8rem; }
.keeper-center { min-width: 0; min-height: 0; display: flex; flex-direction: column; gap: 8px; }
.keeper-tabs { display: flex; align-items: stretch; gap: 4px; overflow-x: auto; flex-shrink: 0; padding: 3px; scrollbar-width: thin; }
.keeper-tab { flex-shrink: 0; white-space: nowrap; border: 1px solid transparent; border-radius: 6px; background: transparent; color: var(--text); padding: 8px 10px; font: inherit; font-size: .9rem; cursor: pointer; }
.keeper-tab[aria-selected="true"] { background: var(--surface0); border-color: var(--field-border); box-shadow: inset 0 -3px var(--mauve); }
.keeper-tab:hover { background: var(--surface0); }
.keeper-tabpanel { flex: 1; overflow: auto; padding: 12px; }
.keeper-tabpanel p { max-width: 65ch; }
.keeper-section, .keeper-reference-workspace { display: flex; flex-direction: column; gap: 12px; min-height: 0; height: 100%; }
.keeper-section label { display: grid; gap: 4px; }
.keeper-section input, .keeper-section select, .keeper-player-toolbar select { min-width: 0; width: 100%; font: inherit; color: var(--text); background: var(--base); border: 1px solid var(--field-border); border-radius: 6px; padding: 8px; }
.keeper-section :disabled { border-style: dashed; }
.keeper-npc-controls { display: flex; gap: 8px; align-items: center; }
.keeper-npc-controls select { flex: 1; }
.keeper-npc-list { flex: 1; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); gap: 12px; align-content: start; }
.keeper-npc-card { padding: 16px; border: 1px solid var(--field-border); border-radius: 10px; background: var(--base); }
.keeper-npc-card h3 { margin: 0 0 12px; overflow-wrap: anywhere; }
.keeper-npc-facts { display: grid; gap: 8px; margin-bottom: 16px; font-size: .9rem; }
.keeper-npc-facts p { margin: 0; }
.keeper-npc-form { padding: 12px; border: 1px solid var(--field-border); border-radius: 8px; }
.keeper-npc-form .actions { margin-top: 8px; }
.npc-sheet .masthead { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; }
.npc-sheet .masthead h1 { position: static; max-width: none; margin: 0; }
.npc-sheet .mast-state { position: static; }
.npc-sheet .tabs { grid-column: 1 / -1; justify-content: flex-start; }
.npc-sheet-actions { display: flex; gap: 8px; margin-bottom: 12px; }
.npc-details { display: grid; gap: 12px; margin-bottom: 16px; }
.npc-details summary { padding: 10px; cursor: pointer; border: 1px solid var(--field); border-radius: 6px; color: var(--bone); background: var(--panel); }
.npc-name { display: grid; gap: 4px; }
.npc-name input { width: 100%; padding: 8px; font: inherit; color: var(--bone); background: var(--well); border: 1px solid var(--field); border-radius: 6px; }
.npc-sheet .dying:not(.live) .dy-name { opacity: 1; color: var(--bone-dim); }
.keeper-bestiary { overflow: hidden; gap: 10px; }
.keeper-bestiary > .keeper-section-head { flex-shrink: 0; }
.bestiary-toolbar { display: flex; gap: 8px; align-items: center; justify-content: space-between; flex-shrink: 0; }
.bestiary-toolbar select { width: auto; max-width: 220px; padding: 5px 8px; font-size: .85rem; }
.bestiary-workspace { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(150px,25%) minmax(0,1fr); gap: 12px; }
.bestiary-roster { display: flex; flex-direction: column; gap: 8px; padding: 2px 6px 2px 2px; }
.keeper-bestiary .bestiary-roster-card { width: 100%; display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; text-align: left; padding: 10px; white-space: normal; overflow-wrap: anywhere; }
.bestiary-roster-card[aria-pressed="true"] { background: var(--surface0); box-shadow: inset 3px 0 var(--mauve); }
.bestiary-roster-stats { display: flex; gap: 4px 8px; flex-wrap: wrap; justify-content: space-between; font: .75rem "IBM Plex Sans Condensed",var(--font-sans); }
.bestiary-roster-stats strong { white-space: nowrap; }
.bestiary-roster-effects { font-size: .75rem; color: var(--subtext1); max-height: 3em; overflow: hidden; }
.bestiary-roster-card .keeper-caption, .bestiary-roster-effects, .bestiary-result .keeper-caption { color: var(--text); }
.bestiary-message { padding: 6px 10px; display: flex; align-items: center; flex-wrap: wrap; gap: 8px; border: 1px solid var(--field-border); border-radius: 6px; font-size: .85rem; }
.bestiary-message p { margin: 0; }
.bestiary-inspector { padding-right: 2px; }
.creature-card summary, .bestiary-dialog summary, .bestiary-book summary { cursor: pointer; color: var(--text); font-weight: 600; padding: 6px 0; }
.bestiary-search { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; margin: 8px 0; }
.bestiary-preview { min-width: 0; font-size: .9rem; padding-right: 6px; }
.bestiary-preview > h3 { margin-top: 0; overflow-wrap: anywhere; }
.bestiary-dialog { width: min(760px,calc(100vw - 32px)); height: min(720px,calc(100dvh - 32px)); max-height: calc(100dvh - 32px); overflow: hidden; padding: 18px; color: var(--text); background: var(--mantle); border: 1px solid var(--field-border); border-radius: 10px; }
.bestiary-dialog[open] { display: grid; grid-template-rows: auto auto auto minmax(0,1fr) auto; }
.bestiary-dialog:not([open]) { display: none; }
.bestiary-dialog::backdrop { background: rgb(0 0 0 / .55); }
.bestiary-browser-content { display: grid; grid-template-columns: minmax(160px,30%) minmax(0,1fr); grid-template-rows: minmax(0,1fr); gap: 16px; min-height: 0; overflow: hidden; }
.bestiary-results { display: flex; flex-direction: column; gap: 6px; padding: 2px 8px 2px 2px; border-right: 1px solid var(--surface2); }
.bestiary-dialog .bestiary-result { display: flex; flex-direction: column; flex-shrink: 0; gap: 4px; text-align: left; white-space: normal; overflow-wrap: anywhere; padding: 10px; }
.bestiary-result[aria-pressed="true"] { background: var(--surface0); box-shadow: inset 3px 0 var(--mauve); }
.bestiary-add-footer { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; border-top: 1px solid var(--surface2); padding-top: 12px; }
.bestiary-add-footer label { grid-template-columns: auto 65px; align-items: center; }
.bestiary-add-footer > button { margin-left: auto; }
.bestiary-add-footer .keeper-caption { flex: 1 1 180px; min-width: 0; overflow-wrap: anywhere; }
.creature-card { min-width: 0; padding: 4px 6px 16px; }
.creature-heading { position: sticky; top: 0; z-index: 1; background: var(--mantle); padding: 6px 0; }
.creature-card h3 { margin: 0; overflow-wrap: anywhere; font: 600 1.1rem "Chakra Petch",var(--font-sans); }
.creature-card h4 { margin: 0; font-size: .9rem; }
.creature-tdp { white-space: nowrap; font-family: "IBM Plex Mono",monospace; background: var(--surface0); padding: 4px 8px; border-radius: 6px; }
.creature-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 8px 0; }
.creature-listed-stats { font-size: .8rem; color: var(--subtext1); margin: 4px 0; }
.creature-status { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 6px 0; }
.creature-fields { display: grid; gap: 10px; }
.creature-fields > .keeper-tabpanel { padding: 4px 0; background: transparent; border: 0; overflow: visible; }
.creature-fields > .keeper-tabs { padding: 3px 0; border-bottom: 1px solid var(--surface2); }
.creature-fields .keeper-tab { font-size: .8rem; padding: 6px 8px; }
.creature-fields label { font-size: .85rem; color: var(--text); }
.creature-fields textarea { resize: vertical; min-height: 60px; width: 100%; font: inherit; color: var(--text); background: var(--mantle); border: 1px solid var(--field-border); border-radius: 6px; padding: 8px; }
.creature-tracks { display: grid; gap: 10px; }
.creature-track { --track-color: var(--text); }
.creature-track.keeper-shock { --track-color: var(--sapphire); }
.creature-track.keeper-trauma { --track-color: var(--red); }
.creature-track.keeper-rot { --track-color: var(--green); }
.creature-track .keeper-section-head { flex-wrap: wrap; }
.creature-track-value input { width: 55px; padding: 3px 6px; }
.creature-boxes { display: flex; flex-wrap: wrap; gap: 3px; margin: 5px 0 0; }
.creature-boxes button { flex: 1; min-width: 10px; height: 18px; border: 1px solid var(--field-border); background: var(--base); border-radius: 3px; cursor: pointer; }
.creature-boxes button[aria-pressed="true"] { background: var(--track-color); }
.creature-boxes button.threshold { border-bottom-width: 3px; }
.creature-track-settings { color: var(--text); }
.creature-track-settings label { margin-bottom: 6px; }
.creature-resources { display: flex; flex-wrap: wrap; gap: 12px; border-top: 1px solid var(--surface2); padding-top: 10px; }
.creature-resources label { grid-template-columns: auto 60px; align-items: center; }
.creature-resources input { padding: 4px 6px; }
.creature-notes, .creature-settings { display: grid; gap: 12px; }
.creature-effects { font-size: .8rem; margin: 0; overflow-wrap: anywhere; }
.creature-book-text { white-space: pre-wrap; overflow-wrap: anywhere; font-size: .9rem; line-height: 1.5; color: var(--text); }
.creature-review, .creature-problem { padding: 10px; border: 1px solid var(--field-border); border-radius: 6px; color: var(--text); font-size: .85rem; }
.creature-problem { margin: 8px 0; }
.creature-reference { margin: 10px 0; }
.creature-reference > section { margin-bottom: 16px; }
.bestiary-book { max-width: 85ch; }
.bestiary-book h1 { margin-bottom: 8px; }
@media (max-width: 650px) { .bestiary-workspace, .bestiary-browser-content { grid-template-columns: minmax(0,1fr); } .bestiary-roster { max-height: 150px; } .bestiary-results { max-height: 160px; border-right: 0; } }
.keeper-empty { border: 1px dashed var(--surface2); border-radius: 8px; background: var(--base); padding: 20px 16px; color: var(--subtext1); }
.keeper-empty h3 { color: var(--text); font-size: 1rem; margin: 0 0 8px; }
.keeper-empty p { margin: 0; font-size: .9rem; }
.keeper-right { display: grid; grid-template-rows: minmax(240px, 1fr) minmax(220px, 1fr); gap: 12px; min-height: 0; min-width: 0; }
.keeper-right .keeper-scroll { flex: 1; }
.keeper-turn-controls { display: flex; gap: 8px; }
.keeper-turn-controls > button { flex: 1; }
.keeper-dice-input { display: flex; gap: 8px; }
.keeper-dice-input input { min-width: 0; width: 100%; padding: 8px; color: var(--text); background: var(--base); border: 1px dashed var(--field-border); border-radius: 6px; font: inherit; }
.keeper-caption { margin: 0; }
.keeper-roster-problem { padding: 8px 12px; border: 1px solid var(--danger); margin-bottom: 8px; border-radius: 6px; }
.keeper-roster-problem p { margin: 0 0 8px; }
.keeper-player-workspace { display: flex; flex-direction: column; gap: 12px; height: 100%; min-height: 0; }
.keeper-player-toolbar { flex-wrap: wrap; }
.keeper-player-toolbar select { flex: 1; width: auto; max-width: 350px; }
.keeper-player-toolbar a { white-space: nowrap; }
.keeper-player-content { flex: 1; min-height: 0; min-width: 0; display: flex; }
.keeper-party-details { box-sizing: border-box; position: fixed; inset: auto; left: var(--keeper-detail-left, 8px); top: var(--keeper-detail-top, 8px); width: min(320px, calc(100vw - 16px)); max-height: calc(100dvh - 16px); overflow: auto; margin: 0; padding: 16px; border: 1px solid var(--field-border); border-radius: 10px; color: var(--text); background: var(--mantle); box-shadow: 0 8px 28px #0004; }
.keeper-party-details:popover-open { display: flex; flex-direction: column; gap: 12px; }
.keeper-party-details h3, .keeper-party-details p { margin: 0; }
.keeper-party-details h3 { font-size: 1.05rem; overflow-wrap: anywhere; }
.keeper-detail-monitors { display: flex; flex-wrap: wrap; gap: 8px; font-size: .8rem; }
.keeper-detail-stats { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; margin: 0; font-size: .85rem; }
.keeper-detail-stats dt { color: var(--subtext1); }
.keeper-detail-stats dd { margin: 0; text-align: right; }
.keeper-embedded { flex: 1; min-height: 0; min-width: 0; }
.keeper-embedded > .sheet { width: var(--keeper-sheet-width, 1000px); max-width: none; margin: 0; padding: 12px; zoom: var(--keeper-sheet-scale, 1); }
.keeper-embedded .masthead { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; }
.keeper-embedded .masthead h1 { position: static; max-width: none; margin: 0; font-size: 24px; }
.keeper-embedded .mast-state { position: static; margin: 0; }
.keeper-embedded .tabs { grid-column: 1 / -1; justify-content: flex-start; }
.keeper-embedded .tabs button.apart { position: static; margin-left: auto; }
.keeper-embedded .core-main, .keeper-embedded .core-band { grid-template-columns: 20rem minmax(0, 1fr); }
.keeper-embedded .core-main > .col-right { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.keeper-embedded .core-band > .panel:last-child { grid-column: 1 / -1; }
.keeper-embedded :is(.eq-main, .cast-top, .cast-mid) { grid-template-columns: minmax(0, 1fr); }
.keeper-campaign-roster { height: 100%; }
.keeper-campaign-roster > .card { border: 0; padding: 0; box-shadow: none; background: transparent; }
.keeper-campaign-roster .roster { grid-template-columns: minmax(0, 1fr); }
.keeper-reference-workspace > .keeper-tabpanel { background: var(--base); }
.keeper-reference-workspace > .keeper-tabs { flex-wrap: wrap; overflow: visible; }
.keeper-reference-workspace > .keeper-tabs .keeper-tab { white-space: normal; text-align: left; }
.keeper-resizer { display: none; }
@media (min-width: 1100px) {
  .keeper-hub { height: var(--keeper-height); min-height: 440px; display: flex; flex-direction: column; }
  .keeper-frame { flex: 1; grid-template-columns: minmax(208px, var(--keeper-left)) 8px minmax(420px, 1fr) 8px minmax(264px, var(--keeper-right)); grid-template-rows: minmax(0, 1fr); gap: 4px; }
  .keeper-left { max-height: none; }
  .keeper-left-hidden .keeper-frame { grid-template-columns: 0 0 minmax(420px, 1fr) 8px minmax(264px, var(--keeper-right)); }
  .keeper-right-hidden .keeper-frame { grid-template-columns: minmax(208px, var(--keeper-left)) 8px minmax(420px, 1fr) 0 0; }
  .keeper-left-hidden.keeper-right-hidden .keeper-frame { grid-template-columns: 0 0 minmax(420px, 1fr) 0 0; }
  .keeper-left { grid-column: 1; }
  .keeper-resizer[data-side="left"] { grid-column: 2; }
  .keeper-center { grid-column: 3; grid-row: 1; }
  .keeper-resizer[data-side="right"] { grid-column: 4; }
  .keeper-right { grid-column: 5; grid-row: 1; grid-template-rows: repeat(2, minmax(0, 1fr)); }
  .keeper-resizer { display: block; min-height: 0; cursor: col-resize; touch-action: none; border-radius: 4px; background: var(--surface0); border-left: 1px solid var(--field-border); }
  .keeper-resizer:hover { background: var(--surface2); }
  .keeper-tabpanel { overflow: hidden; }
  .keeper-reference-workspace > .keeper-tabpanel { overflow: auto; }
}
@media (max-width: 1099px) {
  .keeper-player-toolbar { align-items: stretch; }
  .keeper-tabpanel { max-height: 75vh; }
  .keeper-right { max-height: 80vh; }
}
.initiative-footer { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.initiative-footer p { margin:0; flex:1; max-width:none; }
.initiative-local-notice { margin:0; }
.initiative-group { display:flex; flex-direction:column; gap:8px; flex-shrink:0; }
.initiative-group + .initiative-group { border-top:1px solid var(--field-border); padding-top:10px; margin-top:4px; }
.initiative-group h3 { font-size:.85rem; margin:0; }
.initiative-group p { margin:0; }
.initiative-order.initiative-editable-order li { grid-template-columns:1.7rem minmax(0,1fr) auto 4.7rem; }
.initiative-tie-controls { display:flex; gap:4px; }
.initiative-tie-controls button { min-width:0; padding:3px 9px; }
.initiative-setup, .initiative-running { display:flex; flex-direction:column; gap:12px; min-height:0; flex:1; }
.initiative-setup > p, .initiative-running > p { margin:0; }
.initiative-columns, .initiative-entry { display:grid; grid-template-columns:minmax(0,1fr) 7rem 2.5rem; gap:8px; align-items:center; }
.initiative-columns { font-weight:600; }
.initiative-rows { flex:1; display:flex; flex-direction:column; gap:8px; padding:2px 4px 6px 2px; }
.initiative-entry { flex-shrink:0; }
.initiative-entry input { width:100%; min-width:0; }
.initiative-entry button { min-width:0; }
.initiative-footer { flex-shrink:0; padding-top:10px; border-top:1px solid var(--surface2); }
.initiative-tracker-body { display:flex; flex-direction:column; gap:8px; min-height:0; flex:1; }
.initiative-current { display:flex; flex-direction:column; gap:3px; min-width:0; }
.initiative-current strong { font-size:1rem; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.initiative-tracker-body .initiative-order { padding:2px 0; font-size:.85rem; }
.initiative-order { margin:0; padding:2px 8px; list-style:none; min-height:0; flex:1; }
.initiative-order li { display:grid; grid-template-columns:1.7rem minmax(0,1fr) auto; gap:8px; align-items:center; border:1px solid transparent; border-radius:6px; padding:7px 8px; }
.initiative-order .initiative-active { border-color:var(--text); background:var(--surface0); font-weight:700; }
.initiative-name { overflow-wrap:anywhere; }
.initiative-position { font-variant-numeric:tabular-nums; }
.initiative-problem { border:1px solid var(--text); border-radius:6px; padding:10px; flex-shrink:0; }
.initiative-problem p { margin:0 0 8px; }
.initiative-problem button { margin:0 8px 4px 0; }
.bestiary-progress { margin:0; flex-shrink:0; }
