/* Dovakarn server control - the launcher's look: deep night-blue, warm gold, square edges.
   Sovngarde (SIL OFL 1.1, Paul James Miller) carries headings; Oswald (SIL OFL 1.1, The Oswald
   Project Authors) carries everything read at length. See fonts/OFL.txt for both licences. */
@font-face{font-family:Sovngarde;src:url('./fonts/Sovngarde-Light.ttf') format('truetype');font-weight:100 500;font-style:normal;font-display:block}
@font-face{font-family:Sovngarde;src:url('./fonts/Sovngarde-Bold.ttf') format('truetype');font-weight:600 900;font-style:normal;font-display:block}
@font-face{font-family:'EB Garamond';src:url('./fonts/EBGaramond-Variable.ttf') format('truetype-variations');font-weight:400 800;font-style:normal;font-display:block}

:root{
  color-scheme:dark;
  --bg:#090e14;--panel-top:#141c21;--panel-bot:#0b1015;--well:#070b0e;
  --line:#353f44;--line2:#232b2f;
  --ink:#e8e4da;--muted:#9aa4a6;--faint:#818e92;
  --gold:#d9b25f;--gold-ink:#f2dfae;--gold-bright:#ffdf85;--gold-border:#9c8757;--gold-dim:#b9a579;
  --ok:#8fc98a;--warn:#e6b06a;--bad:#e0876f;--bad-ink:#eca08c;
  font:21px/1.6 'EB Garamond',Georgia,serif;font-weight:500;letter-spacing:.15px;
}
*{box-sizing:border-box}
body{margin:0;color:var(--ink);background:var(--bg);background-image:radial-gradient(ellipse 90% 60% at 18% -8%,#16202800 0%,#0d141b66 45%,#090e1400 100%),linear-gradient(180deg,#0c1219,#090e14 340px);background-repeat:no-repeat}
code,pre,.kbd,.logs{font-family:Consolas,monospace}

/* Type. Sovngarde speaks only in titles; Oswald does the reading. */
h1,h2,h3,p{margin-top:0}
h1{font:400 34px/1.2 Sovngarde,Georgia,serif;letter-spacing:.5px;color:var(--gold-ink);margin-bottom:4px}
h2{font:400 26px/1.25 Sovngarde,Georgia,serif;letter-spacing:.4px;color:var(--gold-ink);margin-bottom:14px}
h3{font:600 17px/1.4 'EB Garamond',Georgia,serif;letter-spacing:2.5px;text-transform:uppercase;color:#cfc6ae;margin-bottom:10px}
p{margin-bottom:14px}
small,.muted{color:var(--muted);font-weight:500}
small{font-size:17px;letter-spacing:.25px}
a{color:var(--gold-bright);text-decoration-color:#9c875788;text-underline-offset:3px}
.eyebrow{text-transform:uppercase;letter-spacing:3.5px;font-size:14px;font-weight:500;color:var(--gold-dim);margin-bottom:6px}
.error{color:var(--bad-ink)}
.hidden{display:none!important}
.kbd{overflow-wrap:anywhere;color:var(--gold-ink);font-size:16px}
.block{display:block}.spaced{margin-top:18px}.full{width:100%}

/* Buttons: quiet gold-tinged frames; the one primary action wears the launcher's gold. */
button{font:600 18px/1.3 'EB Garamond',Georgia,serif;letter-spacing:.8px;cursor:pointer;color:#e6ddc4;background:#caa24010;border:1px solid #4b544f;padding:9px 15px;transition:background .18s,border-color .18s,color .18s,box-shadow .18s,transform .12s}
button:hover:not(:disabled){background:#caa24028;border-color:var(--gold-border);color:var(--gold-bright)}
button:disabled{opacity:.45;cursor:not-allowed}
button:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--gold-bright);outline-offset:3px}
.primary{border:1px solid #ffdf86;background:linear-gradient(110deg,#f2d58b,#d5ac53 55%,#c29a45);color:#141719;font-weight:500;letter-spacing:1.5px;box-shadow:inset 0 1px #fff0bd,0 0 18px #d5a43526,0 5px 20px #0007}
.primary:hover:not(:disabled){background:linear-gradient(110deg,#ffe9aa,#f2ce78 55%,#dfb659);border-color:#fff0bb;color:#141719}
.primary:active:not(:disabled){background:linear-gradient(110deg,#dfbb6c,#cda14b);box-shadow:inset 0 2px 8px #67431b66}
.danger{color:var(--bad-ink);border-color:#6b4a42;background:#3a231e33}
.danger:hover:not(:disabled){background:#4b2b24;border-color:#a3604f;color:#ffd9c9}
.chip{padding:6px 12px;font-size:16px}
button.link{background:none;border:0;padding:2px 0;color:#d9c48f;text-decoration:underline;text-underline-offset:3px;font-size:inherit;letter-spacing:.4px}
button.link:hover{color:var(--gold-bright);background:none}

/* Fields. */
input,select,textarea{font:500 20px/1.4 'EB Garamond',Georgia,serif;letter-spacing:.2px;background:var(--well);border:1px solid #3d4a50;color:var(--ink);padding:10px 12px;width:100%;transition:border-color .18s}
input:focus,select:focus,textarea:focus{outline:2px solid var(--gold-bright);outline-offset:1px;border-color:var(--gold-border)}
input:disabled,select:disabled,textarea:disabled{opacity:.5;background:#0d1318;cursor:not-allowed}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--gold)}
input[type=range]{accent-color:var(--gold);padding:0;height:25px;cursor:pointer;border:0;background:none}
label{display:block;font-size:15px;font-weight:600;letter-spacing:1.8px;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
label input,label select,label textarea{margin-top:6px;letter-spacing:.3px;text-transform:none}
fieldset{border:0;padding:0;margin:0;min-width:0}
fieldset.bare legend{padding:0;font-weight:500;color:var(--ink);margin-bottom:6px;letter-spacing:1px}
.editor fieldset{display:grid;gap:20px}
.editor fieldset:disabled{opacity:.8}
.input-reset{display:flex;gap:8px}.input-reset input{min-width:0}.input-reset button{font-size:15px;padding:7px 10px;flex-shrink:0}
.short-input{max-width:145px;display:block;margin:8px 0}
.short-select{width:auto;min-width:180px}
.form{display:grid;gap:16px}

/* Shell: sidebar carved like the launcher's settings drawer. */
.shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;min-width:0;border-right:1px solid var(--line2);padding:26px 0 22px;display:flex;flex-direction:column;background:linear-gradient(180deg,#0d141b,#090e14 70%)}
.brand{display:flex;align-items:center;gap:13px;margin:0 22px 8px;padding-bottom:18px;border-bottom:1px solid #bbb18e2e}
.sigil{font:400 26px/44px Sovngarde,Georgia,serif;color:var(--gold);border:1px solid var(--gold-border);width:42px;height:48px;text-align:center;flex-shrink:0;background:#caa2400f;box-shadow:inset 0 0 14px #d9b25f14}
.brand strong{font:400 21px Sovngarde,Georgia,serif;letter-spacing:4px;color:#d8d5cd;display:block}
.brand small{display:block;font-size:12px;letter-spacing:2.5px;text-transform:uppercase;color:var(--faint)}
.nav{display:flex;flex-direction:column;gap:1px;padding:14px 0}
.nav button{border:0;border-left:3px solid transparent;background:none;text-align:left;color:var(--muted);padding:10px 21px;font-size:16px;letter-spacing:2px;text-transform:uppercase;transition:background .18s,color .18s,border-color .18s,padding-left .18s}
.nav button:hover{padding-left:25px}
.nav button:hover{background:#caa24010;color:#e8dcc0;border-left-color:#9c875755}
.nav button.active{border-left-color:var(--gold);background:#caa24014;color:var(--gold-bright)}
.nav button span{display:inline-block;width:26px;color:var(--gold-dim)}
.nav button.active span{color:var(--gold-bright)}
.sidebar footer{margin-top:auto;padding:18px 24px 0;font-size:15px;letter-spacing:.5px;color:var(--faint);border-top:1px solid var(--line2)}
.sidebar footer .pill{margin-bottom:10px}
.owner{color:var(--gold-ink);letter-spacing:1px;margin:2px 0 10px}
.sidebar footer p{font-size:14px;letter-spacing:1.5px;text-transform:uppercase;color:#5f6b70}
.sidebar footer button{width:100%;margin-top:4px}

.main{padding:32px 42px;max-width:1650px;width:100%;margin:auto;min-width:0}
.topline{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:28px;padding-bottom:18px;border-bottom:1px solid #bbb18e24}
.topline p{margin:0;font-size:18px}
.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.between{justify-content:space-between}

/* Pills: status words with a lit dot. */
.pill{border:1px solid #4b544f;padding:4px 11px;font-size:14px;font-weight:600;letter-spacing:2px;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px;color:#c9c3b2;background:#0b101580}
.dot{background:currentColor;width:5px;height:5px;flex-shrink:0;box-shadow:0 0 8px currentColor;border-radius:50%}
.pill.good{color:var(--ok);border-color:#4e6350}
.pill.warn{color:var(--warn);border-color:#6d5a3c}
.pill.bad{color:var(--bad);border-color:#6b4a42}
.pill.staff{color:var(--gold-ink);border-color:#6b5a36}

/* Panels and stat cards. */
.card,.panel{background:linear-gradient(160deg,var(--panel-top),var(--panel-bot) 75%);border:1px solid var(--line);padding:24px;box-shadow:0 10px 34px #0006}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px}
.card{border-top:1px solid var(--gold-border)}
.card>small:first-child{letter-spacing:2.5px;color:var(--gold-dim);font-size:13px}
.card .value{font:400 40px/1.1 Sovngarde,Georgia,serif;letter-spacing:.5px;color:var(--gold-ink);margin:10px 0 8px}
.grid2{display:grid;grid-template-columns:1.2fr 1fr;gap:22px}
.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.grid.three{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.stack{display:grid;gap:20px}
.summary-card{background:#0d141b;border:1px solid var(--line);padding:18px}
.section-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px}
.section-heading h2{margin:0}
.sticky{position:sticky;top:20px;align-self:start}

/* Notices carry the launcher's gold-edged strip. */
.notice{background:#0b1015e0;border:1px solid #665f4a;border-left:3px solid var(--gold);padding:14px 18px;color:#e3d9b7;font-size:18px;margin-bottom:22px;box-shadow:0 8px 26px #0006}
.notice.subtle,.subtle{background:#0c1218;border-color:#39434a;border-left-color:#5d686e;color:#b9c0bd}
.notice.row{margin-bottom:22px}

/* Toolbar + search rows. */
.toolbar{display:flex;gap:12px;margin:0 0 20px}
.toolbar input{flex:1}
.toolbar select{width:230px}

/* Tables: ledger lines, no boxes-within-boxes. */
.table-wrap{overflow:auto;border:1px solid var(--line);background:#0b1015b3}
table{width:100%;border-collapse:collapse;font-size:18px}
th{text-align:left;color:var(--gold-dim);font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:2px;background:#10171d;padding:11px 16px;border-bottom:1px solid var(--gold-border);position:sticky;top:0;z-index:1}
td{padding:13px 16px;border-top:1px solid var(--line2);transition:background .15s}
tr:first-child td{border-top:0}
tr:hover td{background:#11181f}tr.item:hover{cursor:pointer}
td strong{display:block;font-weight:500;letter-spacing:.4px}
td small{font-size:15px}
td.number{font-variant-numeric:tabular-nums}
.empty{text-align:center;padding:40px 20px;color:var(--muted)}
.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:16px;color:var(--muted);font-size:17px}

/* Activity ledger. */
.activity{display:grid;gap:0}
.event{padding:14px 0;border-bottom:1px solid var(--line2)}
.event:last-child{border:0}
.event-title{display:flex;gap:10px;justify-content:space-between;font-size:15px}
.event-title strong{letter-spacing:2px;text-transform:uppercase;font-weight:500;color:var(--gold-dim)}
.event time{font-size:15px;white-space:nowrap;color:var(--faint)}
.event p{margin:6px 0 0;font-size:18px}
.event pre{font-size:14px;color:var(--muted);overflow:auto;white-space:pre-wrap;word-break:break-word;margin-bottom:0}

/* Editors. */
.editor{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px}
.editor h2{margin-top:4px}
.editor .stack{min-width:0}
.field-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.field small{font-size:15px;letter-spacing:.3px}
.editor .field label{margin-bottom:7px}
.editor .field small{display:block;margin-top:5px}
.effect{border-top:1px solid var(--line2);padding-top:15px;margin-top:15px}
.effect .field-grid{grid-template-columns:repeat(3,1fr)}
.effect>strong{letter-spacing:.5px;font-weight:500;color:var(--gold-ink)}
.actions{display:flex;gap:10px;align-items:center;margin-top:20px}

/* Sign-in: the launcher's dark card, centred. */
.auth{max-width:460px;margin:9vh auto;padding:0 20px}
.auth .brand{justify-content:center;margin:0 0 25px;border-bottom:0}
.auth .panel{padding:30px;border-color:var(--gold-border)}
.auth h1{font-size:30px}
.auth p{color:var(--muted);font-size:18px}
.auth>p.muted{text-align:center;font-size:15px;letter-spacing:1px;margin-top:16px}

#toast{position:fixed;bottom:28px;right:30px;max-width:480px;padding:14px 20px;background:linear-gradient(110deg,#f2d58b,#d5ac53);color:#141719;font-weight:400;letter-spacing:.4px;z-index:5;box-shadow:0 8px 40px #000a;display:none;border:1px solid #ffdf86}
#toast.error{background:#4b2b24;color:#ffd9c9;border-color:#a3604f}

dialog{width:min(700px,95vw);border:1px solid var(--gold-border);padding:28px;background:linear-gradient(160deg,#141c21f8,#0b1015fa);color:var(--ink);max-height:90vh;overflow:auto;box-shadow:0 24px 80px #000c}
dialog::backdrop{background:#05080bcc;backdrop-filter:blur(6px)}
dialog.wide{width:min(1020px,95vw)}
dialog h2{font-size:27px}
dialog h3{margin:14px 0 6px}
.pick-list{margin-top:16px;max-height:400px;overflow:auto;display:grid;gap:5px}
.pick-list button{text-align:left;letter-spacing:.3px}
.pick-list strong{letter-spacing:.4px;font-weight:500}
.pick-list small{display:block}
.check-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.check-list label{display:flex;gap:8px;text-transform:none;letter-spacing:.3px;font-size:17px;align-items:center}

.logs{max-height:480px;overflow:auto;background:#060a0d;border:1px solid var(--line2);padding:18px;font:13px/1.65 Consolas,monospace;white-space:pre-wrap;word-break:break-word}
.loading{padding:80px;text-align:center;color:var(--muted);letter-spacing:2px;text-transform:uppercase;font-size:16px}
.technical .logs{max-height:260px}
details{border-top:1px solid var(--line2);padding-top:14px;margin-top:16px}
summary{cursor:pointer;color:#d9c48f;font-size:16px;letter-spacing:1px;padding:4px 0}
summary:hover{color:var(--gold-bright)}
details[open]>summary{margin-bottom:14px}
.steps{padding-left:22px;margin:18px 0}
.steps li{padding-left:5px;margin-bottom:14px}
.steps li::marker{color:var(--gold)}

/* Choice cards (radio blocks). */
.choice-grid{display:grid;gap:10px;margin:18px 0 24px}
.choice-card{display:flex;align-items:flex-start;gap:12px;padding:16px;border:1px solid var(--line);background:#0d141b;cursor:pointer;margin:0;font-size:18px;text-transform:none;letter-spacing:.3px}
.choice-card input{width:auto;margin-top:5px}
.choice-card:has(input:checked){border-color:var(--gold-border);background:#caa24012;box-shadow:inset 0 0 0 1px #d9b25f33}
.choice-card strong{display:block;color:var(--gold-ink);font-size:19px;font-weight:400;letter-spacing:.5px}
.choice-card small{display:block;margin-top:4px}
.permission-choice{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);text-transform:none;letter-spacing:.3px;font-size:17px}
.permission-choice input{width:auto;margin-top:4px}
.permission-choice strong,.permission-choice small{display:block}
.permission-choice strong{font-weight:400;color:var(--gold-ink)}

/* Recipe steps. */
.recipe-step{display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;margin:24px 0}
.step-number{width:28px;height:28px;border:1px solid var(--gold-border);background:#caa24014;color:var(--gold-bright);text-align:center;line-height:26px;font-weight:500;transform:rotate(45deg)}
.step-number{display:grid;place-items:center}
.recipe-step h3{margin:2px 0 14px}
.help-text{font-size:17px;color:var(--muted);line-height:1.6;letter-spacing:.3px}
.help-text.wide{max-width:none}
.recipe-row{display:grid;grid-template-columns:minmax(100px,1fr) 100px auto;gap:10px;align-items:center;margin-top:10px;background:#0d141b;border:1px solid var(--line2);padding:12px}
.recipe-row strong{font-size:18px;font-weight:400;letter-spacing:.4px}
.recipe-row button{font-size:15px;padding:9px}
.quantity-label{margin:0;font-size:14px}
.quantity-label input{margin-top:4px}
.recipe-preview{border:1px solid var(--gold-border);background:#caa2400d;padding:18px;margin-top:22px}
.recipe-preview small{color:var(--gold-dim);letter-spacing:2.5px;font-size:13px}
.recipe-preview p{margin:8px 0 0;line-height:1.7}
.recipe-original{padding:12px;background:#0d141b;border:1px solid var(--line2);font-size:17px;margin-bottom:10px}
.empty-materials{border:1px dashed #52604b;padding:18px;color:var(--muted);font-size:18px}
.skill-options{margin-bottom:12px;gap:8px}

/* Tool hero: the page's one banner, in launcher gold and night-blue. */
.tool-hero{display:flex;align-items:center;gap:22px;padding:26px 30px;margin-bottom:24px;border:1px solid var(--gold-border);background:radial-gradient(ellipse at 8% 0%,#d9b25f1c,transparent 60%),linear-gradient(110deg,#141c21,#0b1015);box-shadow:0 12px 40px #0007}
.tool-hero h2{font-size:30px;margin-bottom:8px}
.tool-hero p{color:#b9c0bd;margin:0;max-width:730px;font-size:18px}
.tool-hero>.pill{margin-left:auto;flex-shrink:0}
.tool-hero-icon{display:grid;place-items:center;flex-shrink:0;width:66px;height:76px;border:1px solid var(--gold-border);background:#caa2400f;font-size:36px;color:var(--gold-ink);box-shadow:inset 0 0 18px #d9b25f14}

/* Balance + world tools. */
.balance-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(260px,1fr);gap:22px;align-items:start}
.balance-layout>form{min-width:0}
.difficulty-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:26px}
.difficulty-presets button{text-align:left;padding:14px 12px;min-width:0}
.difficulty-presets strong,.difficulty-presets small{display:block;text-transform:none;letter-spacing:.4px}
.difficulty-presets strong{font-size:18px;font-weight:400;color:var(--gold-ink)}
.difficulty-presets small{font-size:15px;margin-top:5px}
.difficulty-presets button.selected{background:#caa24018;border-color:var(--gold);box-shadow:inset 0 0 0 1px #d9b25f44}
.damage-control{border-top:1px solid var(--line2);padding:24px 0}
.damage-control h3{margin-bottom:4px}
.damage-control .help-text{margin-bottom:12px;max-width:400px}
.damage-control>.row{flex-wrap:nowrap;align-items:flex-start}
.percent-input{display:flex;align-items:center;gap:6px;min-width:107px}
.percent-input input{width:90px;text-align:right;font-size:26px;font-weight:400;padding:8px}
.percent-input span{color:var(--gold);font-size:22px}
.range-labels{display:flex;justify-content:space-between;font-size:14px;color:var(--muted);letter-spacing:.5px}
.damage-example{padding:16px 20px;border:1px solid var(--gold-border);background:#caa2400d}
.damage-example>.eyebrow{display:block;color:var(--muted);letter-spacing:1.5px}
.damage-example .row{gap:30px}
.damage-example strong{font:400 26px Sovngarde,Georgia,serif;color:var(--gold-ink);margin-left:8px}
.enemy-rule{display:flex;gap:15px;align-items:center;padding:17px 0;border-top:1px solid var(--line2)}
.enemy-rule:first-child{border-top:0}
.enemy-token,.placement-icon{display:grid;place-items:center;width:46px;height:46px;flex-shrink:0;border:1px solid var(--line);background:#0d141b;color:var(--gold-dim);font-size:22px}
.enemy-name{flex:1}
.enemy-name strong,.enemy-name small,.placement-description strong,.placement-description small{display:block}
.enemy-name strong,.placement-description strong{font-weight:400;letter-spacing:.4px;color:var(--gold-ink)}
.enemy-name small,.placement-description small{margin-top:4px}
.build-step{display:grid;grid-template-columns:30px minmax(0,1fr);gap:12px;margin:26px 0}
.build-step small{font-size:16px;display:block;margin-top:6px}
.object-choice{display:flex;align-items:center;gap:14px;text-align:left;width:100%;padding:20px;border-style:dashed;border-color:#748462;background:#0d141b;text-transform:none;letter-spacing:.3px}
.object-choice>span:nth-child(2){flex:1;min-width:0}
.object-choice>span:last-child{font-size:16px;color:var(--gold-dim);white-space:nowrap}
.object-choice strong,.object-choice small{display:block}
.object-choice strong{font-size:18px;font-weight:400;color:var(--gold-ink)}
.object-choice.chosen{border-style:solid;border-color:var(--gold)}
.object-choice-icon{color:var(--gold);font-size:24px}
.placement-card{display:flex;align-items:center;gap:16px;padding:20px 0;border-top:1px solid var(--line2)}
.placement-card:first-child{border-top:0}
.placement-description{flex:1;min-width:0}
.placement-location{font-size:15px;color:var(--gold-dim);display:block;margin-top:7px;letter-spacing:.5px}
.nudge-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.nudge-cross,.nudge-height{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.nudge-cross button:first-child{grid-column:1/-1}
.nudge-cross button:last-child{grid-column:1/-1}
.inventory-actions{display:flex;gap:6px;flex-wrap:wrap}
.inventory-actions button{font-size:15px;padding:7px 10px}
.inventory-note{font-size:17px;border-left:2px solid var(--gold);padding-left:12px;margin:14px 0}
.player-help{background:radial-gradient(ellipse at 8% 0%,#d9b25f14,transparent 60%),linear-gradient(110deg,#141c21,#0b1015);border-color:var(--gold-border)}
.tool-actions{display:flex;gap:10px;flex-wrap:wrap}
.tool-actions .danger{margin-left:auto}
.quick-actions{display:flex;gap:10px;flex-wrap:wrap}

/* Game loot. */
.dungeon-catalog-results{max-height:300px;overflow:auto}
.loot-top{margin:4px 0 14px;gap:16px}
.loot-tabs button{border:1px solid transparent;border-bottom:2px solid transparent;background:none;letter-spacing:2px;text-transform:uppercase;font-size:16px;color:var(--muted)}
.loot-tabs button:hover{color:#e8dcc0;background:none;border-color:transparent}
.loot-tabs button.active{color:var(--gold-bright);border-bottom-color:var(--gold);background:none}
.inline-label{display:inline;margin:0 8px 0 0;font-size:15px}
.loot-top .short-input{display:inline-block;margin:0;width:110px}
.check-row{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:18px;margin:14px 0 4px;text-transform:none;letter-spacing:.3px}
.check-row input{width:auto}
.usage{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.usage li strong{display:block;font-weight:400;color:var(--gold-ink);letter-spacing:.4px}
.usage small{line-height:1.7}
#loot-entries input{max-width:130px}
.try-results{margin:14px 0 0;padding-left:26px;font-size:17px;color:var(--ink)}
.try-results li{margin-bottom:6px}

/* Player accounts. */
.avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#141c22;border:1px solid var(--line)}
.avatar.large{width:96px;height:96px;border-color:var(--gold-border)}
.avatar-empty{display:grid;place-items:center;color:var(--gold);font-weight:500;font-size:19px}
.avatar-empty.large{font-size:40px;font-family:Sovngarde,Georgia,serif}
.account-cell{display:flex;align-items:center;gap:12px;min-width:0}
.account-cell small{display:block}
.account-number{color:#e0bd6c;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:1px}
.account-hero{display:flex;align-items:center;gap:24px}
.account-hero h2{margin-bottom:6px}
.account-hero-text{min-width:0}
.account-hero-text p{margin-bottom:10px}
.role-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.role-chip{--role:#8d9a90;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);padding:3px 11px;font-size:14px;letter-spacing:1px;color:var(--ink);background:#0d141b}
.role-chip i{width:9px;height:9px;border-radius:50%;background:var(--role);flex-shrink:0}
.online-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 8px #8fc98a66;margin-left:4px;vertical-align:middle}
.status-strip{margin-bottom:14px}

@media(max-width:1150px){.balance-layout{grid-template-columns:minmax(0,1fr)}.balance-layout>aside{grid-template-columns:1fr 1fr}.tool-hero>.pill{display:none}}
@media(max-width:1100px){.editor,.grid2{grid-template-columns:1fr}.sticky{position:static}.main{padding:28px 24px}.cards{gap:10px}.card{padding:18px}}
@media(max-width:760px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:16px 0 0}
  .brand{margin-bottom:8px}
  .nav{flex-direction:row;overflow:auto;gap:2px;padding:8px 12px}
  .nav button{white-space:nowrap;padding:10px;border-left:0;border-bottom:3px solid transparent}
  .nav button.active{border-left:0;border-bottom-color:var(--gold)}
  .sidebar footer{display:none}
  .cards{grid-template-columns:1fr}
  .main{padding:22px 16px}
  .topline{align-items:flex-start;flex-wrap:wrap}
  .topline>div{min-width:0}
  .topline .row{justify-content:flex-end}
  .toolbar{flex-wrap:wrap}
  .toolbar select{width:100%}
  .toolbar button{flex-shrink:0}
  .field-grid{grid-template-columns:1fr}
  .editor .effect .field-grid{grid-template-columns:1fr}
  .event-title{display:block}
  .check-list{grid-template-columns:1fr}
  .recipe-step{grid-template-columns:25px minmax(0,1fr);gap:8px}
  .step-number{width:24px;height:24px;line-height:22px}
  .recipe-row{grid-template-columns:1fr 84px}
  .recipe-row button{grid-column:1/-1}
  .choice-card{padding:12px}
  .tool-hero{padding:22px 18px;gap:15px}
  .tool-hero-icon{width:43px;height:56px;font-size:26px}
  .tool-hero h2{font-size:26px}
  .tool-hero p{font-size:17px}
  .difficulty-presets{grid-template-columns:1fr}
  .difficulty-presets button{display:flex;gap:12px;justify-content:space-between}
  .difficulty-presets small{margin:0}
  .balance-layout>aside{grid-template-columns:1fr}
  .damage-control>.row{flex-wrap:wrap}
  .percent-input input{width:100px}
  .enemy-rule,.placement-card{flex-wrap:wrap}
  .enemy-rule>.row,.placement-card>.row{width:100%;padding-left:61px}
  .section-heading{gap:12px;flex-wrap:wrap}
  .section-heading p{margin:12px 0 0}
  .object-choice{padding:14px;gap:10px}
  .object-choice>span:last-child{display:none}
  .nudge-grid{grid-template-columns:1fr}
  .tool-actions .danger{margin-left:0}
  .account-hero{flex-direction:column;align-items:flex-start;gap:14px}
  .avatar.large{width:72px;height:72px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---- Life: entrances, pulses and the new furniture. ---- */

/* Page content rises in, panel by panel. */
@keyframes dv-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes dv-fade{from{opacity:0}to{opacity:1}}
@keyframes dv-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}
@keyframes dv-shimmer{from{background-position:-400px 0}to{background-position:400px 0}}
@keyframes dv-toast{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes dv-modal{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
#content>*{animation:dv-rise .4s cubic-bezier(.2,.7,.3,1) both}
#content>*:nth-child(2){animation-delay:.05s}
#content>*:nth-child(3){animation-delay:.1s}
#content>*:nth-child(4){animation-delay:.15s}
#content>*:nth-child(5){animation-delay:.2s}
#content>*:nth-child(n+6){animation-delay:.24s}
.topline{animation:dv-fade .35s ease both}
.sidebar{animation:dv-fade .3s ease both}
.cards .card{animation:dv-rise .45s cubic-bezier(.2,.7,.3,1) both}
.cards .card:nth-child(2){animation-delay:.07s}
.cards .card:nth-child(3){animation-delay:.14s}
.pill.good .dot,.side-status.up .dot{animation:dv-pulse 2.6s ease-in-out infinite}
button:hover:not(:disabled){transform:translateY(-1px)}
button:active:not(:disabled){transform:none}
.primary:hover:not(:disabled){box-shadow:inset 0 1px #fff9df,0 0 30px #efc35255,0 7px 24px #0008}
dialog[open]{animation:dv-modal .22s cubic-bezier(.2,.7,.3,1)}
#toast{animation:dv-toast .25s cubic-bezier(.2,.7,.3,1)}
summary{transition:color .15s}
details>summary::marker{color:var(--gold-dim)}

/* Loading shimmer instead of a bare word. */
.loading{position:relative;color:transparent!important;min-height:120px;overflow:hidden;user-select:none}
.loading::before,.loading::after{content:'';position:absolute;left:12%;right:12%;height:16px;background:linear-gradient(90deg,#10171d 0%,#1b252d 40%,#10171d 80%);background-size:800px 100%;animation:dv-shimmer 1.4s linear infinite}
.loading::before{top:calc(50% - 22px)}
.loading::after{top:calc(50% + 6px);left:22%;right:22%;animation-delay:.2s}

/* The sidebar's pulse. */
.side-status{display:flex;align-items:center;gap:9px;margin:14px 22px 0;padding:9px 12px;border:1px solid var(--line2);background:#0b1015b3;font-size:15px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}
.side-status .dot{width:6px;height:6px;border-radius:50%;background:#6d7478;box-shadow:none}
.side-status.up{color:#cfc6ae;border-color:#4e6350}
.side-status.up .dot{background:var(--ok);box-shadow:0 0 10px #8fc98a88}

/* Ctrl+K: the palette. */
.kbd-hint{font-size:14px;letter-spacing:2px;color:var(--muted);border-color:var(--line2);background:#0b101580;padding:8px 12px}
.kbd-hint:hover:not(:disabled){color:var(--gold-bright)}
.palette{position:fixed;inset:0;z-index:40;background:#05080bd0;backdrop-filter:blur(6px);display:flex;align-items:flex-start;justify-content:center;padding:12vh 20px 20px;animation:dv-fade .15s ease}
.palette-box{width:min(640px,100%);border:1px solid var(--gold-border);background:linear-gradient(160deg,#141c21fa,#0b1015fc);box-shadow:0 30px 90px #000d;animation:dv-modal .18s cubic-bezier(.2,.7,.3,1)}
.palette-box input{border:0;border-bottom:1px solid var(--line);background:transparent;font-size:23px;padding:16px 18px}
.palette-box input:focus{outline:none;border-bottom-color:var(--gold)}
.palette-results{max-height:46vh;overflow:auto;padding:8px}
.palette-row{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;text-align:left;border:1px solid transparent;background:none;padding:10px 12px;letter-spacing:.3px;text-transform:none;font-size:19px;font-weight:500}
.palette-row:hover,.palette-row.active{background:#caa24014;border-color:#9c875755;color:var(--gold-bright);transform:none}
.palette-row small{font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(--gold-dim);flex-shrink:0}
.palette-empty{padding:26px;text-align:center;color:var(--muted)}
.palette-foot{display:flex;gap:20px;padding:10px 18px;border-top:1px solid var(--line2);font-size:14px;color:var(--faint);letter-spacing:.5px}
.kbd-key{border:1px solid var(--line);padding:1px 7px;color:var(--gold-ink);font-size:13px}

/* Event details as facts. */
.fact-grid{margin:0 0 10px;display:grid;gap:0}
.fact-grid>div{display:flex;justify-content:space-between;gap:16px;padding:6px 0;border-bottom:1px solid var(--line2)}
.fact-grid>div:last-child{border-bottom:0}
.fact-grid dt{font-size:14px;letter-spacing:1.8px;text-transform:uppercase;color:var(--muted);flex-shrink:0}
.fact-grid dd{margin:0;text-align:right;font-size:18px;color:var(--ink);overflow-wrap:anywhere}
.technical details{border-top:0;margin-top:4px}
.technical details summary{font-size:14px;letter-spacing:1px;color:var(--faint)}

/* Tables that scroll keep their header in sight. */
.table-wrap{max-height:72vh}

@media(prefers-reduced-motion:reduce){
  #content>*,.topline,.sidebar,.cards .card,dialog[open],#toast,.palette,.palette-box{animation:none!important}
  .pill.good .dot,.side-status.up .dot{animation:none}
  .loading::before,.loading::after{animation:none}
  button:hover:not(:disabled){transform:none}
}
