/* Angels Ops Deck — Sovereign design language.
   Palette lifted from the Sovereign dashboard so the two products read as one
   family: violet ground, gold signature, Georgia headings, and depth carried by
   soft deep shadows rather than hard borders. Every surface below is driven by
   these tokens, so the whole platform re-themes from this block alone. */
#ops{
  --bg:#0D0920;--bg2:#120C29;--surface:#161030;--surface-2:#1D1640;--raise:#241C4D;
  --ink:#F3F0FF;--ink-soft:#A79FC8;--ink-faint:#7A7099;--line:#2A2150;--line-soft:#221A44;
  --accent:#D4AF37;--accent-ink:#E8C766;--accent-soft:#2A2213;--gold:#D4AF37;--gold-soft:#2A2213;
  --good:#34D399;--good-soft:#0F2E24;--warn:#E9A23B;--warn-soft:#2E2213;
  --bad:#F0757A;--bad-soft:#33161F;--violet:#9E8CE0;--blue:#6E9BFF;
  /* depth, not outlines — the shadow does the separating */
  --glow:0 14px 40px -18px rgba(0,0,0,.75);
  --lift:0 22px 60px -24px rgba(0,0,0,.85);
  /* Apple's type voice: one family throughout, weight and tracking doing the
     work instead of a second typeface. SF Pro on a Mac, Segoe UI on Windows —
     -apple-system resolves to whichever the machine actually has. */
  --serif:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI Variable Display","Segoe UI",Roboto,Helvetica,sans-serif;
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI Variable Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,"Cascadia Mono",monospace;
}
#ops.light{
  --bg:#FBFAFD;--bg2:#F4F2F9;--surface:#FFFFFF;--surface-2:#F7F5FB;--raise:#FFFFFF;
  --ink:#14111F;--ink-soft:#5B5670;--ink-faint:#8C86A3;--line:#E4E0EC;--line-soft:#EFECF5;
  --accent:#8A6D1F;--accent-ink:#6E5518;--accent-soft:#F6EFDC;--gold:#8A6D1F;--gold-soft:#F6ECD9;
  --good:#0F8A5F;--good-soft:#E4F3EC;--warn:#B4741B;--warn-soft:#F8EEDD;
  --bad:#B03A45;--bad-soft:#F8E5E7;--violet:#5B4B8A;--blue:#3B62C4;
  --glow:0 10px 34px -18px rgba(20,17,31,.45);
  --lift:0 18px 48px -22px rgba(20,17,31,.35);
}
*{box-sizing:border-box;}
body{margin:0;}
#ops *{box-sizing:border-box;}
/* Two soft washes rather than one flat fill — this is what gives the dark theme
   its sense of space instead of looking like a black rectangle. */
#ops{background:
    radial-gradient(1100px 620px at 82% -12%,color-mix(in srgb,var(--violet) 16%,transparent),transparent 62%),
    radial-gradient(900px 520px at 8% 4%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 58%),
    var(--bg);
  background-attachment:fixed;
  color:var(--ink);font-family:var(--sans);line-height:1.65;min-height:100vh;display:block;
  -webkit-font-smoothing:antialiased;}
#ops a{color:inherit;text-decoration:none;}

/* Top navigation. Labelled, because an icon you have to hover to identify is a
   quiz, not a menu. Laid out like PASS so nobody has to relearn where things are. */
.rail{background:var(--bg2);border-bottom:1px solid var(--line);display:flex;align-items:center;
  gap:2px;padding:0 clamp(12px,2vw,22px);position:sticky;top:0;z-index:20;
  width:100%;min-height:52px;flex-wrap:wrap;}
.rail a{display:inline-flex;align-items:center;justify-content:flex-start;gap:7px;
  width:auto;min-width:0;height:auto;flex:0 0 auto;border-radius:0;
  border:0;background:transparent;color:var(--ink-faint);font-size:.82rem;font-weight:600;
  padding:15px 11px;line-height:1;white-space:nowrap;
  border-bottom:2px solid transparent;transition:color .12s;}
.rail a .ico{font-size:1rem;line-height:1;}
.rail a:hover{background:transparent;color:var(--ink);border-bottom-color:var(--line);}
.rail a.on{background:transparent;color:var(--accent-ink);box-shadow:none;
  border-bottom-color:var(--accent);}
.rail .sp{flex:1;}
@media(max-width:900px){
  .rail{gap:0;}
  .rail a{padding:11px 9px;font-size:.76rem;}
  .rail a .ico{display:none;}
}
.rail .logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(150deg,var(--accent),var(--accent-ink));display:flex;align-items:center;justify-content:center;font-size:1.05rem;margin:0 14px 0 0;padding:0;box-shadow:0 6px 16px -6px var(--accent);border-bottom:0;flex:0 0 auto;}
.rail .logo:hover{border-bottom:0;}
/* The old icon-only vertical rail lived here. Its 42x42 fixed square forced the
   labelled top-bar items into a box far too small for their text, so they
   overlapped. Removed — the top-bar rules earlier in this file are the live ones. */

.main{min-width:0;padding:0 0 80px;}
/* The nav is the sticky element now, so the status strip sits under it rather
   than competing for the same top:0. */
/* The nav is the sticky element now, so the status strip sits under it rather
   than competing for the same top:0. min-width:0 on the status lets it shrink
   instead of pushing the theme button and avatar off the right edge. */
.topbar{position:static;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:10px clamp(18px,3vw,34px);background:color-mix(in srgb,var(--bg) 82%,transparent);
  border-bottom:1px solid var(--line);}
.topbar .status{min-width:0;overflow:hidden;}
.topbar .tbtn,.topbar .who{flex:0 0 auto;}
.status{display:flex;align-items:center;gap:10px;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-family:var(--mono);flex-wrap:wrap;}
.status .dot{width:8px;height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 0 4px var(--good-soft);animation:opulse 2.4s infinite;}
@keyframes opulse{50%{opacity:.5;}}
.status b{color:var(--good);}
.status .date{color:var(--ink-faint);border-left:1px solid var(--line);padding-left:10px;margin-left:2px;}
.topbar .spacer{flex:1;}
.tbtn{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:999px;padding:7px 14px;font-size:.78rem;cursor:pointer;display:inline-flex;gap:7px;align-items:center;text-decoration:none;}
.tbtn:hover{border-color:var(--accent);color:var(--accent-ink);}
.who{width:34px;height:34px;border-radius:50%;background:var(--raise);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;color:var(--accent-ink);}

.canvas{padding:clamp(18px,3vw,32px) clamp(18px,3vw,34px);max-width:none;width:100%;}
.back{display:inline-block;color:var(--ink-soft);font-size:.85rem;margin-bottom:12px;}
.back:hover{color:var(--accent-ink);}
h1.deck{font-family:var(--serif);font-weight:600;font-size:clamp(1.7rem,3.4vw,2.4rem);letter-spacing:-.01em;margin:2px 0 3px;}
.deck-sub{color:var(--ink-soft);margin:0 0 22px;font-size:.95rem;}

.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:30px;}
@media(max-width:900px){.stats{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){.stats{grid-template-columns:repeat(2,1fr);}}
.stat{background:var(--surface);padding:15px 16px;}
.stat .n{font-family:var(--serif);font-size:1.7rem;font-weight:600;line-height:1;font-variant-numeric:tabular-nums;}
.stat .k{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-top:8px;}
.stat .d{font-size:.72rem;margin-top:4px;font-variant-numeric:tabular-nums;}
.d.up{color:var(--good);} .d.dn{color:var(--bad);} .d.fl{color:var(--warn);}

.eyebrow{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent-ink);margin:34px 0 4px;}
.eyebrow .ln{height:1px;flex:1;background:linear-gradient(90deg,var(--line),transparent);}
h2.st{font-family:var(--serif);font-weight:600;font-size:clamp(1.3rem,2.6vw,1.7rem);margin:0 0 16px;letter-spacing:-.01em;}

.review{display:grid;gap:9px;}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:13px;padding:13px 16px;box-shadow:var(--glow);}
.item .kind{font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:5px 9px;border-radius:6px;white-space:nowrap;}
.k-approve{background:var(--accent-soft);color:var(--accent-ink);} .k-sign{background:var(--gold-soft);color:var(--gold);}
.k-attention{background:var(--bad-soft);color:var(--bad);} .k-send{background:var(--good-soft);color:var(--good);}
.k-file{background:var(--surface-2);color:var(--ink-soft);} .k-renew{background:var(--warn-soft);color:var(--warn);}
.item.attention{border-left-color:var(--bad);} .item.send{border-left-color:var(--good);} .item.renew{border-left-color:var(--warn);} .item.sign{border-left-color:var(--gold);}
.item .txt{font-size:.92rem;}.item .txt b{font-weight:600;}
.item .txt small{display:block;color:var(--ink-faint);font-size:.78rem;margin-top:2px;}
.item .act{border:1px solid var(--line);background:var(--raise);color:var(--ink);border-radius:8px;padding:7px 13px;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none;}
.item .act.primary{background:var(--accent);border-color:var(--accent);color:#04211E;} #ops.light .item .act.primary{color:#fff;}
.item .act:hover{border-color:var(--accent);}
.empty{background:var(--surface);border:1px dashed var(--line);border-radius:13px;padding:18px;color:var(--ink-soft);font-size:.9rem;}

.clientgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:12px;}
.ccard{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:15px 16px;box-shadow:var(--glow);display:flex;flex-direction:column;gap:9px;}
.ccard .top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.ccard .nm{font-family:var(--serif);font-size:1.12rem;font-weight:600;}
.cchip{font-size:.6rem;font-family:var(--mono);font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 8px;border-radius:6px;white-space:nowrap;}
.c-active{background:var(--good-soft);color:var(--good);} .c-new{background:var(--accent-soft);color:var(--accent-ink);}
.c-on_hold{background:var(--warn-soft);color:var(--warn);} .c-archived{background:var(--surface-2);color:var(--ink-faint);}
.ccard.arch{opacity:.72;}
.ccard .meta{font-size:.78rem;color:var(--ink-soft);display:grid;gap:3px;}
.ccard .meta span b{color:var(--ink);font-weight:600;}
.ccard .pkg{font-size:.72rem;font-family:var(--mono);color:var(--accent-ink);background:var(--accent-soft);border-radius:6px;padding:4px 8px;display:inline-block;width:fit-content;}
.ccard .foot{display:flex;justify-content:space-between;font-size:.72rem;color:var(--ink-faint);border-top:1px solid var(--line-soft);padding-top:8px;}
.ccard .foot .rev.due{color:var(--warn);font-weight:600;}

.filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;}
.filters a{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-size:.82rem;color:var(--ink-soft);text-decoration:none;}
.filters a.on{background:var(--accent);color:#04211E;border-color:var(--accent);} #ops.light .filters a.on{color:#fff;}

/* client detail */
.chead{display:flex;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap;}
.cavatar{width:56px;height:56px;border-radius:16px;background:linear-gradient(150deg,var(--accent),var(--accent-ink));color:#04211E;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:600;font-size:1.4rem;}
#ops.light .cavatar{color:#fff;}
.chead h1{font-family:var(--serif);font-weight:600;font-size:clamp(1.6rem,3vw,2.1rem);margin:0;}
.chead .csub{color:var(--ink-soft);font-size:.9rem;margin-top:2px;}
.cols{display:grid;grid-template-columns:320px 1fr;gap:18px;align-items:start;}
@media(max-width:820px){.cols{grid-template-columns:1fr;}}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:var(--glow);margin-bottom:16px;}
.panel h3{font-family:var(--serif);font-size:1.1rem;margin:0 0 12px;}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:.86rem;}
.kv dt{color:var(--ink-faint);} .kv dd{margin:0;color:var(--ink);}
.markers{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px;}
.marker{font-size:.68rem;font-family:var(--mono);padding:4px 9px;border-radius:6px;border:1px solid var(--line);color:var(--ink-soft);}
.marker.on{background:var(--good-soft);color:var(--good);border-color:transparent;}
.section{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;background:var(--surface-2);}
.section h4{margin:0 0 6px;font-size:.95rem;color:var(--accent-ink);}
.section .row{font-size:.85rem;margin:3px 0;} .section .row b{color:var(--ink-faint);font-weight:600;}
.risk{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px;background:var(--surface-2);}
.rlvl{font-size:.62rem;font-family:var(--mono);font-weight:700;text-transform:uppercase;padding:4px 9px;border-radius:6px;}
.rlvl.low{background:var(--good-soft);color:var(--good);} .rlvl.medium{background:var(--warn-soft);color:var(--warn);} .rlvl.high{background:var(--bad-soft);color:var(--bad);}
.aidraft{background:linear-gradient(100deg,var(--accent-soft),transparent);border:1px solid var(--line);border-radius:12px;padding:13px 16px;font-size:.86rem;color:var(--ink-soft);margin-bottom:14px;}
.aidraft b{color:var(--accent-ink);font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;}
.notebox{margin-top:34px;padding:14px 18px;border:1px dashed var(--line);border-radius:13px;background:var(--surface);font-size:.82rem;color:var(--ink-soft);}
.notebox b{color:var(--ink);}

/* ============================================================
   ROTA BOARD — the weekly client x day grid (rostering module)
   ============================================================ */
#ops .weeknav{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px;}
#ops .weeknav .wk{font-family:var(--serif);font-size:1.05rem;font-weight:600;}
#ops .weeknav .wk small{color:var(--ink-faint);font-weight:400;font-family:var(--sans);}
#ops .weeknav .wk em{color:var(--accent-ink);font-style:normal;font-size:.85rem;}

#ops .agentbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:linear-gradient(100deg,var(--accent-soft),transparent);border:1px solid var(--line);border-radius:12px;padding:11px 16px;margin-bottom:14px;font-size:.85rem;}
#ops .agentbar .ai{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);font-weight:700;}
#ops .agentbar .flag{font-weight:600;color:var(--ink-soft);}
#ops .agentbar .flag.warn{color:var(--warn);}
#ops .agentbar .flag.bad{color:var(--bad);}
#ops .agentbar .flag.good{color:var(--good);}
#ops .agentbar form{margin:0;}
#ops .agentbar .act{border:0;}

#ops .boardwrap{overflow-x:auto;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--glow);}
#ops table.board{border-collapse:collapse;width:100%;min-width:980px;font-size:.8rem;}
#ops table.board th,#ops table.board td{border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);padding:0;vertical-align:top;}
#ops table.board thead th{background:var(--surface-2);padding:11px 13px;text-align:left;font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);position:sticky;top:0;z-index:2;}
#ops table.board thead th.istoday{color:var(--accent-ink);}
#ops table.board thead th em{font-style:normal;color:var(--accent);}
#ops table.board tbody th{background:var(--surface);text-align:left;padding:12px 13px;position:sticky;left:0;z-index:1;min-width:170px;box-shadow:1px 0 0 var(--line-soft);}
#ops table.board td.istoday{background:color-mix(in srgb,var(--accent-soft) 40%,transparent);}
#ops .cli{font-weight:600;display:block;}
#ops .cli small{display:block;color:var(--ink-faint);font-weight:400;font-size:.7rem;margin-top:2px;}
#ops .daycell{padding:6px;display:flex;flex-direction:column;gap:5px;min-width:132px;}

#ops .visit{display:block;border-radius:8px;padding:6px 8px;border:1px solid var(--line);border-left:3px solid var(--ink-faint);background:var(--surface-2);}
#ops .visit:hover{border-color:var(--accent);}
#ops .visit .t{font-family:var(--mono);font-size:.68rem;color:var(--ink-soft);}
#ops .visit .c{font-weight:600;font-size:.76rem;margin-top:1px;}
#ops .visit .st{font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;margin-top:3px;color:var(--ink-faint);font-family:var(--mono);}
#ops .visit.done{border-left-color:var(--good);}
#ops .visit.done .st{color:var(--good);}
#ops .visit.live{border-left-color:var(--accent);}
#ops .visit.live .st{color:var(--accent-ink);}
#ops .visit.sched{border-left-color:var(--ink-faint);}
#ops .visit.proposed{border-left-color:var(--warn);border-style:dashed;}
#ops .visit.proposed .st{color:var(--warn);}
#ops .visit.gap{border:1px dashed var(--bad);border-left:3px solid var(--bad);background:var(--bad-soft);}
#ops .visit.gap .t{color:var(--bad);}
#ops .visit.gap .fill{font-size:.7rem;color:var(--bad);font-weight:600;margin-top:2px;}
#ops .visit.dbl::after{content:"2 carers";display:inline-block;font-size:.55rem;font-family:var(--mono);color:var(--gold);letter-spacing:.05em;margin-top:2px;}

#ops .legend{display:flex;gap:16px;flex-wrap:wrap;margin:12px 2px 0;font-size:.72rem;color:var(--ink-faint);}
#ops .legend span{display:inline-flex;align-items:center;gap:6px;}
#ops .legend .sw{width:12px;height:12px;border-radius:3px;border:1px solid var(--line);background:var(--surface-2);border-left:3px solid var(--ink-faint);}
#ops .legend .sw.done{border-left-color:var(--good);}
#ops .legend .sw.live{border-left-color:var(--accent);}
#ops .legend .sw.proposed{border-left-color:var(--warn);border-style:dashed;}
#ops .legend .sw.gap{border:1px dashed var(--bad);border-left:3px solid var(--bad);background:var(--bad-soft);}
#ops .legend .sw.dblkey{border-left-color:var(--gold);}

/* notes, messages and the booking form */
#ops .note{margin-top:34px;padding:15px 18px;border:1px dashed var(--line);border-radius:13px;background:var(--surface);font-size:.82rem;color:var(--ink-soft);}
#ops .note b{color:var(--ink);}
#ops .warn-note{margin:0 0 16px;border-color:var(--warn);background:var(--warn-soft);color:var(--ink);}
#ops .msgs{margin-bottom:14px;}
#ops .msg{background:var(--good-soft);color:var(--good);border:1px solid var(--good);border-radius:10px;padding:9px 14px;font-size:.83rem;font-weight:600;}
#ops .crumb{margin:0 0 6px;font-size:.8rem;}
#ops .crumb a{color:var(--accent-ink);}
#ops .form{display:grid;gap:14px;max-width:560px;}
#ops .form label{display:grid;gap:6px;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);}
#ops .form input,#ops .form select{background:var(--bg2);border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:10px 12px;font-size:.92rem;font-family:var(--sans);text-transform:none;letter-spacing:0;}
#ops .form input:focus,#ops .form select:focus{outline:0;border-color:var(--accent);}
#ops .chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
#ops .chips-label{font-size:.72rem;color:var(--ink-faint);}
#ops .chip{border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);border-radius:999px;padding:5px 11px;font-size:.76rem;cursor:pointer;}
#ops .chip:hover{border-color:var(--accent);color:var(--accent-ink);}
#ops .actions{display:flex;gap:10px;align-items:center;}
#ops .hint{font-size:.78rem;color:var(--warn);margin:0;}
#ops .item.send{border-left-color:var(--good);}
#ops .item.renew{border-left-color:var(--warn);}
#ops .item.sign{border-left-color:var(--gold);}
#ops .k-send{background:var(--good-soft);color:var(--good);}
#ops .k-renew{background:var(--warn-soft);color:var(--warn);}
#ops .k-sign{background:var(--gold-soft);color:var(--gold);}

/* ============================================================
   DECK LAYOUT · JOURNAL · TABS · FORMS
   ============================================================ */
#ops .deckcols{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:26px;align-items:start;}
@media(max-width:1100px){#ops .deckcols{grid-template-columns:1fr;}}
#ops .badge{display:inline-block;background:var(--accent);color:#04211E;border-radius:999px;padding:2px 9px;font-size:.6rem;font-family:var(--mono);letter-spacing:.06em;vertical-align:middle;font-weight:700;}
#ops.light .badge{color:#fff;}
#ops .headspace{flex:1;}
#ops .panelhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;}
#ops .panelhead h3,#ops .panelhead h4{margin:0;}
#ops .row-line{display:flex;justify-content:space-between;gap:14px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:.85rem;}
#ops .row-line:last-child{border-bottom:0;}
#ops .row-line small{display:block;color:var(--ink-faint);font-size:.72rem;}
#ops .lead{font-size:.92rem;color:var(--ink-soft);margin:0 0 10px;}
#ops .signline{font-size:.8rem;color:var(--ink-faint);}
#ops .warn-txt{color:var(--warn);} #ops .bad-txt{color:var(--bad);}
#ops .flagbar{background:var(--warn-soft);border:1px solid var(--warn);border-radius:11px;padding:10px 14px;font-size:.83rem;margin-bottom:16px;}
#ops .flagbar b{color:var(--warn);text-transform:uppercase;letter-spacing:.08em;font-size:.66rem;font-family:var(--mono);margin-right:8px;}
#ops .searchbox{margin:0;}
#ops .searchbox input{background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:999px;padding:7px 14px;font-size:.8rem;min-width:180px;}
#ops .searchbox input:focus{outline:0;border-color:var(--accent);}

/* tabs on the client record */
#ops .tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:18px 0 20px;}
#ops .tabs a{padding:9px 15px;font-size:.85rem;color:var(--ink-soft);border-bottom:2px solid transparent;margin-bottom:-1px;}
#ops .tabs a:hover{color:var(--ink);}
#ops .tabs a.on{color:var(--accent-ink);border-bottom-color:var(--accent);font-weight:600;}
#ops .tabs a em{color:var(--warn);font-style:normal;}
#ops .section-panel{padding-top:12px;}

/* the office journal */
#ops .jpanel{padding:14px 16px;}
#ops .jform textarea{width:100%;background:var(--bg2);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:10px 12px;font-size:.9rem;font-family:var(--sans);resize:vertical;}
#ops .jform textarea:focus{outline:0;border-color:var(--accent);}
#ops .jrow{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-top:8px;}
#ops .jrow select,#ops .jrow input[type=date]{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);border-radius:8px;padding:6px 9px;font-size:.76rem;max-width:190px;}
#ops .jrow .pin{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;color:var(--ink-soft);}
#ops .jrow button{margin-left:auto;}
#ops .jfeed{display:grid;gap:9px;margin-top:14px;}
#ops .jfeed.wide{margin-top:0;}
#ops .jentry{background:var(--surface-2);border:1px solid var(--line);border-left:3px solid var(--ink-faint);border-radius:11px;padding:11px 14px;}
#ops .jentry.k-handover{border-left-color:var(--accent);}
#ops .jentry.k-message{border-left-color:var(--violet,#9E8CE0);}
#ops .jentry.k-reminder{border-left-color:var(--warn);}
#ops .jentry.k-alert{border-left-color:var(--bad);background:var(--bad-soft);}
#ops .jentry.overdue{border-left-color:var(--bad);}
#ops .jentry.closed{opacity:.6;}
#ops .jmeta{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-bottom:6px;}
#ops .jkind{font-family:var(--mono);font-size:.58rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent-soft);padding:3px 8px;border-radius:5px;}
#ops .jtag{font-size:.68rem;color:var(--ink-faint);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:2px 9px;}
#ops .jtag.client{color:var(--accent-ink);border-color:var(--accent-soft);}
#ops .jtag.due.warn{color:var(--warn);border-color:var(--warn);}
#ops .jtag.due.bad{color:var(--bad);border-color:var(--bad);}
#ops .jtag.done{color:var(--good);border-color:var(--good);}
#ops .jbody{font-size:.88rem;line-height:1.5;}
#ops .jfoot{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:9px;padding-top:8px;border-top:1px solid var(--line-soft);font-size:.72rem;color:var(--ink-faint);}
#ops .jfoot form{margin:0;}
#ops .jspace{flex:1;}
#ops .jseen{cursor:help;}
#ops .jseen.unseen{color:var(--warn);}
#ops .jmore{margin:14px 0 0;}
#ops .linkbtn{background:none;border:0;color:var(--accent-ink);font-size:.74rem;cursor:pointer;padding:0;font-family:var(--sans);}
#ops .linkbtn:hover{text-decoration:underline;}
#ops .linkbtn.strong{font-weight:700;}

/* forms */
#ops .bigform{display:grid;gap:16px;}
#ops .fieldgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;}
#ops .fieldgrid label{display:grid;gap:5px;align-content:start;}
#ops .fieldgrid label.checkfield{grid-template-columns:auto 1fr;align-items:center;gap:8px;}
#ops .flabel{font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);}
#ops .fieldgrid input[type=text],#ops .fieldgrid input[type=date],#ops .fieldgrid input[type=time],
#ops .fieldgrid input[type=number],#ops .fieldgrid select,#ops .fieldgrid textarea{
  width:100%;background:var(--bg2);border:1px solid var(--line);color:var(--ink);border-radius:9px;
  padding:9px 11px;font-size:.9rem;font-family:var(--sans);}
#ops .fieldgrid input:focus,#ops .fieldgrid select:focus,#ops .fieldgrid textarea:focus{outline:0;border-color:var(--accent);}
#ops .fieldgrid small{font-size:.7rem;color:var(--ink-faint);}
#ops .fieldgrid small.err{color:var(--bad);}
#ops .fieldgrid label.haserr input,#ops .fieldgrid label.haserr select{border-color:var(--bad);}
#ops .fieldgrid ul{list-style:none;margin:0;padding:0;display:flex;gap:10px;flex-wrap:wrap;}
#ops .fieldgrid ul label{display:inline-flex;flex-direction:row;align-items:center;gap:5px;font-size:.8rem;}
#ops .actions.sticky{position:sticky;bottom:0;background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(8px);padding:12px 0;border-top:1px solid var(--line);}
#ops .act.danger{border-color:var(--bad);color:var(--bad);margin-left:auto;}
#ops .act.danger:hover{background:var(--bad-soft);}
#ops .hint-soft{font-size:.76rem;color:var(--ink-faint);margin:10px 0 0;}

/* ============================================================
   GOVERNANCE REGISTERS
   ============================================================ */
#ops .regcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin-bottom:6px;}
#ops .regcard{display:flex;flex-direction:column;}
#ops .regcard .lead{flex:1;font-size:.85rem;}
#ops .regnums{display:flex;gap:16px;flex-wrap:wrap;font-size:.76rem;color:var(--ink-soft);
  border-top:1px solid var(--line-soft);padding-top:10px;margin-top:6px;}
#ops .regnums b{font-family:var(--serif);font-size:1.15rem;color:var(--ink);margin-right:3px;}
#ops table.board.reg{min-width:1040px;}
#ops table.board.reg td.pad{padding:10px 13px;font-size:.8rem;vertical-align:top;}
#ops table.board.reg td.nowrap{white-space:nowrap;}
#ops table.board.reg tr.rowbad td{background:color-mix(in srgb,var(--bad-soft) 55%,transparent);}
#ops .reflink{font-family:var(--mono);font-size:.74rem;color:var(--accent-ink);}
#ops .reflink:hover{text-decoration:underline;}
#ops .ink-faint{color:var(--ink-faint);}
#ops .jtag.sev-moderate{color:var(--warn);border-color:var(--warn);}
#ops .jtag.sev-severe,#ops .jtag.sev-death{color:var(--bad);border-color:var(--bad);}
#ops .dutylist{margin:8px 0 0;padding-left:18px;font-size:.83rem;}
#ops .dutylist li{margin-bottom:4px;}

/* audit actions */
#ops .actionrow{display:flex;gap:11px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line-soft);}
#ops .actionrow:last-child{border-bottom:0;}
#ops .actionrow.done{opacity:.6;}
#ops .actionrow.overdue .actiontxt>div{color:var(--bad);}
#ops .tickform{margin:0;}
#ops .tick{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--surface-2);
  color:var(--ink-faint);cursor:pointer;font-size:.85rem;line-height:1;display:flex;align-items:center;justify-content:center;}
#ops .actionrow.done .tick{border-color:var(--good);color:var(--good);}
#ops .tick:hover{border-color:var(--accent);color:var(--accent-ink);}
#ops .actiontxt{flex:1;font-size:.86rem;}
#ops .actiontxt small{display:block;color:var(--ink-faint);font-size:.73rem;margin-top:3px;}
#ops .good-txt{color:var(--good);}
#ops .checkfield.inline{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:.82rem;color:var(--ink-soft);}
#ops table.board.reg td.pad small{display:block;color:var(--ink-faint);font-size:.7rem;margin-top:2px;}

/* visit notes, MAR chart */
#ops .notecard{border:1px solid var(--line);border-left:3px solid var(--line);border-radius:11px;padding:11px 14px;margin-bottom:9px;background:var(--surface-2);}
#ops .notecard.flagged{border-left-color:var(--warn);}
#ops .notecard p{margin:6px 0 0;font-size:.87rem;}
#ops .noteheader{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;font-size:.78rem;color:var(--ink-faint);}
#ops .noteheader b{color:var(--ink);font-size:.85rem;}
#ops .noteheader .linkbtn{margin-left:auto;}
#ops .noteflags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
#ops table.board.mar{min-width:1100px;}
#ops table.board.mar tbody th{min-width:230px;padding:10px 12px;}
#ops table.board.mar tbody th .linkbtn{display:inline-block;margin-top:4px;}
#ops .marcell{display:flex;gap:3px;flex-wrap:wrap;padding:8px 6px;justify-content:center;}
#ops .pill{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;font-size:.7rem;font-family:var(--mono);font-weight:700;border:1px solid var(--line);}
#ops .pill.ok{background:var(--good-soft);color:var(--good);border-color:var(--good);}
#ops .pill.bad{background:var(--bad-soft);color:var(--bad);border-color:var(--bad);}
#ops .pill.blank{color:var(--ink-faint);border-style:dashed;}
#ops .row-line.rowbad{background:color-mix(in srgb,var(--bad-soft) 45%,transparent);border-radius:8px;padding-left:8px;padding-right:8px;}

/* ── Morning brief ─────────────────────────────────────────────────────────
   The deck used to be a wall of equal-weight stat boxes, which made an
   unfilled visit look the same as a headcount. This gives urgency its own
   shape: alerts read as sentences you can act on, everything else recedes. */
.briefhead{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:22px;}
.briefnums{display:flex;gap:22px;flex-wrap:wrap;font-size:.78rem;color:var(--ink-faint);}
.briefnums b{display:block;font-family:var(--serif);font-size:1.5rem;font-weight:600;color:var(--ink);line-height:1.1;}
.briefnums .live b{color:var(--accent-ink);}

.brief{margin:0 0 30px;}
.briefbar{display:flex;align-items:center;gap:12px;margin:0 0 12px;}
.briefbar .ln{flex:1;height:1px;background:var(--line);}
.briefbar .muted{font-size:.74rem;}

/* an alert is a full-width row, not a card in a grid — it should read as a line
   of text you can scan, with the action always in the same place on the right */
.alert{display:flex;align-items:center;gap:16px;padding:14px 18px;border:1px solid var(--line);
  border-left:3px solid var(--ink-faint);border-radius:12px;background:var(--surface);
  margin-bottom:8px;text-decoration:none;color:inherit;transition:border-color .12s,transform .12s;}
.alert:hover{border-color:var(--accent);transform:translateX(2px);}
.alert .aico{font-size:1.2rem;flex:0 0 auto;line-height:1;}
.alert .abody{flex:1;min-width:0;}
.alert .abody b{display:block;font-size:.92rem;font-weight:600;}
.alert .abody small{display:block;color:var(--ink-faint);font-size:.78rem;margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.alert .ago{flex:0 0 auto;font-size:.78rem;font-weight:600;color:var(--accent-ink);white-space:nowrap;}
.alert.bad{border-left-color:var(--bad);background:var(--bad-soft);}
.alert.warn{border-left-color:var(--warn);}
.alert.soft{border-left-color:var(--line);}
.alert.good{border-left-color:var(--good);}
.alert.good .ago{display:none;}

/* small numbers that support a story, rather than six boxes competing */
.tiles{display:flex;gap:26px;flex-wrap:wrap;padding:14px 18px;border:1px solid var(--line);
  border-radius:12px;background:var(--surface);margin-bottom:10px;}
.tile b{display:block;font-family:var(--serif);font-size:1.6rem;font-weight:600;line-height:1.1;}
.tile span{font-size:.74rem;color:var(--ink-faint);}
.tile.warn b{color:var(--warn);}

/* yesterday's flagged notes — a readable feed, not a table */
.feed{border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:hidden;}
.feeditem{display:flex;gap:16px;padding:12px 18px;border-bottom:1px solid var(--line-soft);
  text-decoration:none;color:inherit;align-items:flex-start;}
.feeditem:last-child{border-bottom:0;}
.feeditem:hover{background:var(--surface-2);}
.feeditem .fwho{flex:0 0 165px;font-weight:600;font-size:.84rem;}
.feeditem .fwho small{display:block;color:var(--ink-faint);font-weight:400;font-size:.72rem;margin-top:2px;}
.feeditem .ftxt{flex:1;min-width:0;font-size:.82rem;color:var(--ink-soft);line-height:1.5;}
.feeditem .ftags{display:block;margin-top:6px;}

.cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media(max-width:820px){.cols{grid-template-columns:1fr;}}
.cols .panel h3{margin:0 0 10px;font-size:.9rem;}
.cols .panel .muted{font-size:.74rem;margin-top:10px;}

/* ══ SOVEREIGN PASS ══════════════════════════════════════════════════════
   Three changes, in order of how much they matter:
   1. DEPTH — surfaces float on shadow, not outlines. A hairline border says
      "edge of a box"; a soft shadow says "this sits above that", which is what
      actually reads as space.
   2. DE-BOXED — sections are separated by air and a rule, not by nesting a
      card inside a card inside a panel. Content sits on the page.
   3. APPLE TYPE — one family, tight tracking on display sizes, weight doing
      the hierarchy. No serif/sans mixing.
   ═══════════════════════════════════════════════════════════════════════ */

/* --- type ------------------------------------------------------------- */
#ops h1.deck{font-family:var(--serif);font-weight:700;letter-spacing:-.028em;
  font-size:clamp(1.9rem,3.6vw,2.6rem);line-height:1.08;margin:2px 0 6px;}
#ops h2.st{font-family:var(--serif);font-weight:650;letter-spacing:-.02em;line-height:1.15;}
#ops h3,#ops h4{font-family:var(--serif);font-weight:640;letter-spacing:-.012em;}
#ops .deck-sub{font-size:1rem;color:var(--ink-soft);max-width:70ch;line-height:1.6;}
#ops .eyebrow{font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gold);}
#ops .briefnums b{font-family:var(--serif);font-weight:680;letter-spacing:-.03em;}
#ops .stat .n,#ops .tile b{font-family:var(--serif);font-weight:680;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;}

/* --- depth: surfaces float, they don't outline ------------------------- */
#ops .panel,#ops .alert,#ops .tiles,#ops .feed,#ops .item,#ops .stats,#ops figure{
  border-color:color-mix(in srgb,var(--line) 55%,transparent);
  box-shadow:var(--glow);
  background-image:linear-gradient(180deg,color-mix(in srgb,#fff 3%,transparent),transparent 42%);
}
#ops .panel:hover,#ops .item:hover{box-shadow:var(--lift);}
#ops .alert{border-radius:16px;padding:16px 20px;transition:box-shadow .18s,transform .18s;}
#ops .alert:hover{box-shadow:var(--lift);transform:translateY(-1px);}
#ops .item{border-radius:16px;}
#ops .panel{border-radius:18px;}

/* --- de-boxing: air and a rule, not nested cards ----------------------- */
#ops .brief{margin-bottom:clamp(2rem,4vw,3rem);}
#ops .briefbar{margin-bottom:14px;}
#ops .briefbar .ln{background:linear-gradient(90deg,var(--line),transparent);}
/* the stat strip stops being six walled cells */
#ops .stats{background:transparent;border:0;box-shadow:none;gap:0;border-radius:0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
#ops .stat{background:transparent;border-right:1px solid var(--line-soft);}
#ops .stat:last-child{border-right:0;}
/* the numbers row on the brief head — pure type, no container at all */
#ops .briefnums{gap:28px;}
/* tiles: numbers on the page, separated by space */
#ops .tiles{background:transparent;border:0;box-shadow:none;padding:2px 0 6px;gap:34px;}
/* the feed reads as a list, not stacked cards */
#ops .feed{border-radius:16px;}
#ops .feeditem{border-bottom-color:color-mix(in srgb,var(--line) 45%,transparent);}

/* --- controls ---------------------------------------------------------- */
#ops .act.primary{background:var(--accent);border-color:var(--accent);color:#1A1405;font-weight:650;}
#ops .tbtn,#ops .act{border-radius:10px;}
#ops .cchip,#ops .jtag,#ops .chip{border-radius:999px;}
#ops .rail{background:color-mix(in srgb,var(--bg2) 88%,transparent);
  backdrop-filter:saturate(140%) blur(14px);border-bottom-color:var(--line-soft);}
#ops .topbar{background:transparent;border-bottom-color:var(--line-soft);}

/* ── Journal: a shared book that reads like a conversation ────────────────
   The problem this solves is social, not technical: someone does a thing and
   nobody else knows. So the entry has to be quick to write, obvious who it is
   for, and visibly done once done. */
#ops .jcompose{display:flex;gap:12px;align-items:flex-start;}
#ops .jcompose textarea{flex:1;min-height:64px;resize:vertical;border-radius:14px;
  border:1px solid var(--line);background:var(--surface-2);color:var(--ink);
  padding:12px 14px;font:inherit;line-height:1.5;}
#ops .jcompose textarea:focus{outline:0;border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);}
#ops .javatar{width:38px;height:38px;flex:0 0 auto;border-radius:50%;
  background:linear-gradient(150deg,var(--accent),var(--accent-ink));
  color:#1A1405;display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:.9rem;}
#ops .javatar.sm{width:32px;height:32px;font-size:.78rem;
  background:var(--raise);color:var(--accent-ink);border:1px solid var(--line);}

#ops .jopts{margin:10px 0 0 50px;}
#ops .jopts summary{cursor:pointer;font-size:.8rem;color:var(--ink-faint);
  list-style:none;padding:4px 0;}
#ops .jopts summary::-webkit-details-marker{display:none;}
#ops .jopts summary:before{content:"+ ";color:var(--accent);}
#ops .jopts[open] summary:before{content:"− ";}
#ops .jopts .jrow{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;}
#ops .jopts label{display:flex;flex-direction:column;gap:4px;font-size:.72rem;
  color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;}
#ops .jopts label.pin{flex-direction:row;align-items:center;gap:7px;text-transform:none;
  letter-spacing:0;font-size:.8rem;align-self:flex-end;padding-bottom:8px;}
#ops .jopts select,#ops .jopts input[type=date]{background:var(--surface-2);color:var(--ink);
  border:1px solid var(--line);border-radius:9px;padding:7px 10px;font:inherit;font-size:.82rem;}
#ops .jhint{font-size:.75rem;color:var(--ink-faint);margin:10px 0 0;max-width:70ch;}
#ops .jsend{display:flex;justify-content:flex-end;margin-top:12px;}

/* one entry = one message in a thread */
#ops .jentry{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line-soft);
  background:transparent;border-radius:0;}
#ops .jentry:last-child{border-bottom:0;}
#ops .jmain{flex:1;min-width:0;}
#ops .jhead{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:.84rem;}
#ops .jwhen{color:var(--ink-faint);font-size:.74rem;}
#ops .jkind{font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;padding:3px 8px;border-radius:999px;
  background:var(--surface-2);color:var(--ink-soft);}
#ops .jkind.k-alert{background:var(--bad-soft);color:var(--bad);}
#ops .jkind.k-reminder{background:var(--warn-soft);color:var(--warn);}
#ops .jbody{margin:5px 0 0;font-size:.93rem;line-height:1.6;}
#ops .jlinks{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
#ops .jlinks .jtag.client{background:color-mix(in srgb,var(--blue) 16%,transparent);color:var(--blue);}
#ops .jlinks .jtag.staff{background:color-mix(in srgb,var(--violet) 18%,transparent);color:var(--violet);}
#ops .jlinks .jtag.for{background:var(--accent-soft);color:var(--accent-ink);}
#ops .jfoot{display:flex;align-items:center;gap:12px;margin-top:9px;font-size:.74rem;
  color:var(--ink-faint);flex-wrap:wrap;}
#ops .jfoot .jspace{flex:1;}
#ops .jseen.unseen{color:var(--warn);}
#ops .jdone{color:var(--good);font-weight:600;}
/* a done entry recedes but stays readable — the record matters, the urgency doesn't */
#ops .jentry.closed{opacity:.62;}
#ops .jentry.closed .jbody{text-decoration:none;}
#ops .jentry.overdue .jmain{border-left:2px solid var(--bad);padding-left:12px;margin-left:-2px;}

/* verdict block — Yesterday reads as a sentence, not a scoreboard */
#ops .verdict{border-left:2px solid var(--accent);padding:2px 0 2px 16px;}
#ops .verdict p{margin:0 0 6px;font-size:.95rem;line-height:1.6;max-width:78ch;}
#ops .verdict .muted{font-size:.82rem;}
#ops .good-txt{color:var(--good);} #ops .warn-txt{color:var(--warn);}
#ops .navbadge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;
  height:18px;padding:0 5px;margin-left:6px;border-radius:999px;background:var(--accent);
  color:#1A1405;font-size:.65rem;font-weight:800;line-height:1;}
#ops .justdone{font-size:.72rem;color:var(--good);font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;margin:14px 0 -4px;}
