@import url("https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400..700&family=Newsreader:ital,opsz,wght@0,6..72,400..600;1,6..72,400..600&display=swap");
/* Management wears the desk's own identity (David, 2026-10-21): the desks'
   paper, rules, type and square corners; the bar and its accent come from the
   desk (adapter.brand, adapter.accent), set on :root by the page at load. */
:root{
  --paper:#EEEFEA; --card:#FFFFFF; --card-2:#F7F8F4; --card-3:#EFF1EB;
  --ink:#1B211C; --ink-2:#5E665D; --ink-3:#8A9188;
  --rule:#D3D6CE; --rule-2:#B9BDB2;
  --red:#CD3642; --red-soft:#FFF2F3; --red-line:#EFC4C8;
  --green:#037F52; --green-soft:#EEF8F4; --green-line:#BFE3D4;
  --amber-soft:#FFF3C9; --amber-line:#9A6700; --amber-edge:#E0B200;
  --blue:#1F73B7;
  --brand:#161A15; --accent:#FFCE1B; --accent-ink:#1B211C;
  --bar-text:#EEEFEA; --bar-dim:#A9AFA4;
  --shadow:0 1px 0 rgba(27,33,28,.06), 0 8px 24px -18px rgba(27,33,28,.5);
  --f-display:"Bahnschrift SemiCondensed","Bahnschrift","Avenir Next Condensed","Arial Narrow","Franklin Gothic Medium",sans-serif;
  --f-text:"Segoe UI Variable Text","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
  --f-mono:Consolas,"SF Mono",Menlo,"DejaVu Sans Mono","Liberation Mono",monospace;
  /* the names the screens were written against */
  --line:var(--rule); --muted:var(--ink-2); --good:var(--green); --warn:var(--amber-line); --bad:var(--red); --hold:var(--amber-soft); --radius:2px;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-text);font-size:13.5px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--blue)}
:focus-visible{outline:2.5px solid var(--blue);outline-offset:2px;border-radius:2px}
button,input,select,textarea{font:inherit;color:inherit}
button,a.button{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.07em;font-size:12.5px;font-weight:600;line-height:1.15;
  padding:6px 12px;border:1.5px solid var(--rule-2);border-radius:var(--radius);background:transparent;color:var(--ink);cursor:pointer;text-decoration:none;display:inline-block}
button:hover,a.button:hover{background:var(--card-2)}
button.primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}
button.primary:hover{filter:brightness(.9);background:var(--ink)}
button.danger{border-color:var(--red);color:var(--red)}
button.danger:hover{background:var(--red-soft)}
button:disabled{opacity:.5;cursor:default}
input,select,textarea{padding:6px 8px;border:1px solid var(--rule-2);border-radius:var(--radius);background:var(--card);width:100%}
label{display:block;margin:8px 0 4px;color:var(--ink-3);font-family:var(--f-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
label input,label select,label textarea{margin-top:4px;text-transform:none;letter-spacing:0;font-family:var(--f-text);font-size:13.5px;font-weight:400;color:var(--ink)}
.topbar{background:var(--brand);color:var(--bar-text);border-bottom:3px solid var(--accent);padding:0 16px;position:sticky;top:0;z-index:40}
.topbar-in{display:flex;align-items:center;justify-content:space-between;gap:16px;height:52px;max-width:1240px;margin:0 auto}
.topbar h1{display:flex;align-items:center;gap:10px;margin:0;font-family:var(--f-display);font-size:20px;letter-spacing:.055em;text-transform:uppercase;font-weight:600}
.topbar h1 .crumb-back{font-size:13px;letter-spacing:.07em;font-weight:600;text-decoration:none;color:var(--bar-dim)}
.topbar h1 .crumb-back:hover{color:var(--bar-text)}
.topbar h1 .crumb-sep{color:var(--bar-dim);font-weight:400}
.topbar h1,.topbar h1 a{white-space:nowrap}
.topbar .who{font-family:var(--f-mono);font-size:11px;letter-spacing:.03em;color:var(--bar-dim)}
.topbar a{color:var(--bar-text)}
@media (max-width:600px){.topbar .who #who,.topbar .who .who-sep{display:none}.topbar .who{white-space:nowrap}.topbar h1{font-size:16px}}
.layout{display:grid;grid-template-columns:200px 1fr;gap:24px;max-width:1240px;margin:0 auto;padding:20px 16px}
nav.side a{display:block;padding:7px 10px;border-left:3px solid transparent;color:var(--ink-2);text-decoration:none;font-family:var(--f-display);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}
nav.side a:hover{color:var(--ink);background:var(--card-3)}
nav.side a.on{color:var(--ink);background:var(--card);border-left-color:var(--accent)}
nav.side .n{float:right;color:var(--ink-3);font-family:var(--f-mono)}
main{min-width:0}
h2{font-family:var(--f-display);font-size:22px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;margin:0 0 8px}
h3{font-family:var(--f-display);font-size:14px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;margin:18px 0 8px}
.sub{color:var(--ink-2);margin:0 0 16px;max-width:80ch}
.card{background:var(--card);border:1px solid var(--rule);border-radius:3px;box-shadow:var(--shadow);padding:14px 16px;margin-bottom:16px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:16px}
.tile{background:var(--card);border:1px solid var(--rule);border-radius:3px;padding:10px 12px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow)}
.tile .v{font-family:var(--f-display);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums}
.tile .l{color:var(--ink-2);font-size:12px}
.tile .n{color:var(--ink-3);font-size:12px;margin-top:2px}
.tile.quiet .v{color:var(--ink-3)}
ul.plain{list-style:none;padding:0;margin:0}
ul.plain li{padding:4px 0;border-top:1px solid var(--rule)}
td.num.bad{color:var(--red);font-weight:600}
table{border-collapse:collapse;width:100%}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--rule);vertical-align:top}
th{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);font-weight:600;border-bottom:1.5px solid var(--rule-2);white-space:nowrap}
td.num,th.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.pill{display:inline-block;padding:1px 7px;border-radius:2px;font-family:var(--f-mono);font-size:11px;letter-spacing:.02em;border:1px solid var(--rule-2);background:var(--card-2);color:var(--ink-2)}
.pill.on{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
.pill.gated{background:var(--card-3);color:var(--ink-3)}
.presets{display:inline-flex;gap:6px;align-self:flex-end}
details.wording>summary{cursor:pointer;list-style:none}
details.wording>summary h3{display:inline;margin:0}
details.wording>summary::before{content:"\25B8";display:inline-block;width:16px;color:var(--ink-3)}
details.wording[open]>summary::before{content:"\25BE"}
.wording h4{margin:14px 0 4px;font-family:var(--f-display);text-transform:uppercase;letter-spacing:.06em;font-size:12px;color:var(--ink-2)}
.wording .builtin{white-space:normal;background:var(--card-2);padding:8px 10px;border:1px solid var(--rule)}
.wording-editor label{display:block;margin:4px 0}
.wording-editor input[data-subject],.wording-editor textarea{width:100%;font-family:var(--f-text)}
.wording-editor .actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}
.wording-editor .actions label.inline{display:inline-flex;gap:6px;align-items:center;margin:0 0 0 auto}
.wording-editor .preview{margin-top:8px;padding:8px 10px;border:1px dashed var(--rule-2);background:var(--card-2)}
.wording-editor .preview pre{white-space:pre-wrap;font-family:var(--f-text);margin:4px 0 0}
table.placeholders td:first-child{white-space:nowrap}
.presets button.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.pill.bad{background:var(--red-soft);border-color:var(--red-line);color:var(--red)}
.pill.warn{background:var(--amber-soft);border-color:var(--amber-edge);color:var(--amber-line)}
.muted{color:var(--ink-2)}
.why{background:var(--amber-soft);border:1px solid var(--amber-edge);border-left:4px solid var(--amber-edge);border-radius:2px;padding:9px 12px;margin:8px 0 16px}
.err{color:var(--red);margin:8px 0}
.row{display:flex;gap:10px;align-items:end;flex-wrap:wrap}
.row>*{flex:1 1 160px}
.row>.fit{flex:0 0 auto}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px}
.kv dt{color:var(--ink-3);font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding-top:2px}
.kv dd{margin:0}
.states{display:flex;gap:4px;flex-wrap:wrap;font-size:12px}
.states span{padding:2px 7px;border:1px solid var(--rule-2);border-radius:2px;color:var(--ink-3);font-family:var(--f-mono);font-size:11px}
.states span.here{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.event{padding:6px 0;border-bottom:1px dashed var(--rule)}
.event .t{color:var(--ink-3);font-size:12px;font-family:var(--f-mono)}
pre{white-space:pre-wrap;background:var(--card-3);padding:8px;border-radius:2px;font-family:var(--f-mono);font-size:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
table.rules td.rule-v{white-space:nowrap;font-family:var(--f-mono);font-variant-numeric:tabular-nums}
table.rules td.rule-ctl{min-width:140px}
table.rules td.rule-ctl textarea{min-height:34px}
table.rules code{background:var(--card-3);padding:0 3px;font-size:12px}
tr.drawer>td{background:var(--card-2);padding:8px 14px 12px}
tr.drawer table{font-size:13px}
.login .card{max-width:380px;margin:12vh auto;border-top:3px solid var(--accent)}
.login h1{font-family:var(--f-display);font-size:22px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;margin:0 0 6px}
.login button{width:100%;margin-top:14px;background:var(--ink);color:var(--paper);border-color:var(--ink)}
.login .note{color:var(--ink-2);font-size:13px}
.login .note code{background:var(--card-3);padding:1px 4px}
@media (max-width:760px){.layout{grid-template-columns:1fr}.grid2{grid-template-columns:1fr}nav.side{display:flex;flex-wrap:wrap;gap:4px}nav.side a{border-left:0;border-bottom:3px solid transparent}nav.side a.on{border-bottom-color:var(--accent)}}
table.clients td{min-width:110px}
table.clients .add{display:flex;gap:4px;margin-top:6px}
table.clients .add input{min-width:0}
tr.contacts-row > td{padding:0 0 8px 0;background:var(--card-2)}
tr.contacts-row details > summary{cursor:pointer;padding:6px 10px;font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2)}
.contacts-body{padding:0 10px}
table.contacts input{min-width:0;width:100%}
table.contacts .kinds{display:flex;flex-wrap:wrap;gap:2px 10px;font-family:var(--f-mono);font-size:11px}
table.contacts .kinds label{white-space:nowrap}
table.clients label{margin:0 0 4px}
.chip{display:inline-block;padding:1px 6px;margin:0 2px 3px 0;border:1px solid var(--line);border-radius:2px;background:var(--card-2);font-size:13px}
.chip .x{padding:0 4px;border:0;background:none;color:var(--muted);line-height:1}
table.steps td [data-f=title]{min-width:200px}
table.steps td select{min-width:110px}
nav.side a[hidden]{display:none}
.why.confirm-here{margin-top:8px}
table.cov td{min-width:150px}
table.cov td.cov-scope{min-width:170px}
table.cov .cov-who{display:block;line-height:1.7}
table.cov .cov-x{padding:0 5px;margin-left:2px;border:0;background:none;color:var(--muted);font-size:15px;line-height:1}
table.cov .cov-x:hover{color:var(--bad)}
table.cov select.cov-add{display:block;margin-top:4px;font-size:12px;padding:2px 4px;color:var(--muted)}
.cov-steps h3{margin-top:0}
.cov-steps ol{margin:6px 0 0;padding-left:20px}
.cov-steps li{margin:4px 0}
.cov-new{margin-top:12px}
.cov-new>*{flex:0 1 220px}
.cov-scroll{overflow-x:auto}
table.pw td,table.pw th{white-space:nowrap}
table.pw td.pw-word{font-family:var(--f-mono);font-size:13px}
table.pw input[type=number]{width:80px}
table.pw tr.pw-ask td{background:var(--hold)}
.pw-scroll{overflow-x:auto}
.pw-panel h3{display:flex;align-items:center;gap:8px;margin-top:0}
.pw-panel .pw-add{margin-left:auto}
.pw-panel.pw-here{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.pw-alias{margin:4px 0 10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pw-alias input{width:210px}
.pw-x{padding:0 4px;border:0;background:none;color:var(--muted)}
.pill.klass-emergency{background:var(--red-soft);border-color:var(--red-line);color:var(--red)}
.pill.klass-urgent{background:var(--amber-soft);border-color:var(--amber-edge);color:var(--amber-line)}
/* the small x buttons are marks, not words */
.chip .x,table.cov .cov-x,.pw-x{font-family:var(--f-text);text-transform:none;letter-spacing:0;font-size:15px;font-weight:400}
table.cov select.cov-add{font-family:var(--f-text)}

/* ROA theme over deskadmin's console. deskadmin is vendored and untouched;
   this is appended after its stylesheet by deskbase, so it only has to
   restate the tokens and the few rules that carry the old identity
   (condensed uppercase display type, square corners, paper tint). */
:root{
  --paper:#F3F4F6; --card:#FFFFFF; --card-2:#F8F9FB; --card-3:#EEF0F3;
  --ink:#111827; --ink-2:#4B5563; --ink-3:#8B94A5;
  --rule:rgba(17,24,39,.08); --rule-2:rgba(17,24,39,.16);
  --red:#B42318; --red-soft:#FDECEC; --red-line:#F3C2C2;
  --green:#1A7F4F; --green-soft:#E8F6EE; --green-line:#BFE3D4;
  --amber-soft:#FFF4D6; --amber-line:#9A6700; --amber-edge:#E0B200;
  --blue:#1F5FBF;
  --shadow:0 1px 2px rgba(17,24,39,.04);
  --f-display:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-text:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-mono:ui-monospace,"SF Mono",Consolas,Menlo,monospace;
  --f-serif:"Newsreader",Georgia,"Times New Roman",serif;
  --line:var(--rule); --muted:var(--ink-2); --radius:8px;
}
html,body{font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss03"}
a{color:var(--blue)}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:4px}
button,a.button{text-transform:none;letter-spacing:.005em;font-size:13px;font-weight:600;line-height:1.2;padding:8px 14px;border:1px solid var(--rule-2);border-radius:var(--radius);background:var(--card);
  transition:background-color .15s cubic-bezier(.2,.8,.2,1),border-color .15s cubic-bezier(.2,.8,.2,1),transform .15s cubic-bezier(.2,.8,.2,1)}
button:hover,a.button:hover{background:var(--card-2);border-color:var(--ink-3)}
button:active,a.button:active{transform:scale(.985)}
button.primary{background:var(--ink);border-color:var(--ink);color:#fff}
button.primary:hover{background:#2A3243;border-color:#2A3243;filter:none}
button.danger{border-color:var(--red-line);color:var(--red)}
input,select,textarea{padding:8px 10px;border:1px solid var(--rule-2);border-radius:var(--radius);transition:border-color .15s,box-shadow .15s}
input:hover,select:hover,textarea:hover{border-color:var(--ink-3)}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 3px rgba(31,95,191,.15)}
label{font-family:var(--f-text);font-size:12px;text-transform:none;letter-spacing:0;font-weight:500;color:var(--ink-2)}
label input,label select,label textarea{font-size:14px}
.topbar{border-bottom:0;box-shadow:inset 0 2px 0 var(--accent),0 1px 0 rgba(255,255,255,.06),0 8px 24px -20px rgba(0,0,0,.5)}
.topbar-in{height:60px}
.topbar h1{font-family:var(--f-serif);text-transform:none;letter-spacing:-.01em;font-size:21px;font-weight:500}
.topbar h1 .crumb-back{font-family:var(--f-text);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:rgba(255,255,255,.7)}
.topbar .who{font-family:var(--f-text);font-size:13px;letter-spacing:0;color:rgba(255,255,255,.72)}
.topbar a{color:#fff}
.layout{padding:28px 24px 64px;gap:32px}
nav.side a{text-transform:none;letter-spacing:0;font-size:13.5px;font-weight:500;border-left:0;border-radius:var(--radius);margin-bottom:2px;transition:background-color .15s,color .15s}
nav.side a.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow),inset 0 0 0 1px var(--rule)}
nav.side a.on::before{content:"";display:inline-block;width:6px;height:6px;margin-right:9px;border-radius:50%;background:var(--accent);vertical-align:1px}
h2{font-family:var(--f-serif);text-transform:none;letter-spacing:-.012em;font-size:26px;font-weight:500;margin:0 0 6px}
h3{text-transform:none;letter-spacing:-.005em;font-size:14px;font-weight:600;color:var(--ink)}
.card,.tile{border-radius:12px;border-color:var(--rule);padding:18px 20px}
.tile .v{font-family:var(--f-text);font-size:28px;letter-spacing:-.025em}
.tile .l{font-size:12px;color:var(--ink-3)}
th{font-family:var(--f-text);font-size:11px;letter-spacing:.07em;color:var(--ink-3);background:var(--card-2);border-bottom:1px solid var(--rule)}
th,td{padding:10px 12px}
tbody tr:hover td{background:var(--card-2)}
td.num,th.num{font-family:var(--f-text)}
.pill{border-radius:999px;font-family:var(--f-text);font-size:11.5px;font-weight:600;padding:2px 9px;letter-spacing:.01em}
.kv dt,.event .t,.states span,table.pw td.pw-word,tr.contacts-row details>summary,.wording h4{font-family:var(--f-text);text-transform:none;letter-spacing:0;font-size:12px}
.states span{border-radius:999px}
.why{border-radius:var(--radius)}
pre{border-radius:var(--radius)}
.login .card{max-width:400px;margin:14vh auto;padding:32px;border-top:1px solid var(--rule);border-radius:16px;box-shadow:0 0 0 1px rgba(17,24,39,.02),0 24px 64px -32px rgba(17,24,39,.35)}
.login h1{font-family:var(--f-serif);text-transform:none;letter-spacing:-.015em;font-size:30px;font-weight:500;margin:0 0 4px}
.login .sub{margin-bottom:20px}
.login label{margin:14px 0 0}
.login button{margin-top:20px;background:var(--ink);border-color:var(--ink);color:#fff;font-size:14px}
.login button:hover{background:#2A3243;border-color:#2A3243}
.login .note{margin-top:18px;font-size:12.5px;color:var(--ink-3)}
@media (max-width:760px){nav.side a{border-bottom:0}nav.side a.on{border-bottom-color:transparent}.layout{padding:20px 16px 56px}}

/* ROA sizing */
.login input{min-height:44px;padding:10px 12px;font-size:16px}
.login button{min-height:44px;font-size:14px}
nav.side a{display:flex;align-items:center;min-height:44px;padding:7px 12px}
nav.side .n{float:none;margin-left:auto}
.topbar .who,.topbar .who a{font-size:13px}
.topbar .who a{display:inline-flex;align-items:center;min-height:44px}
th{font-size:11.5px}
