/* Pharos admin: navigation, dialogs, search and the redesigned screens.
   Tokens come from partials/tokens.blade.php, so light and dark need no
   separate rules here. */

/* ---------- sidebar ---------- */
.navlist{display:flex;flex-direction:column;gap:2px}
.navgroup .nav-parent{width:100%;text-align:left}
.navgroup .chev{margin-left:auto;opacity:.55;transition:transform .18s var(--ease);flex:none}
.navgroup.open .chev{transform:rotate(90deg)}
.navgroup .navkids{margin:2px 0 6px 21px;padding-left:12px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:1px}
.navgroup .navkids[hidden]{display:none}
.nav.nav-sub{padding:7px 12px;font-size:13.5px}
.nav.nav-sub[aria-current="page"]::before{left:-13px;top:7px;bottom:7px}
.navgroup.has-current>.nav-parent{color:var(--ink);font-weight:600}
.navgroup.has-current>.nav-parent svg{opacity:1}
@media(prefers-reduced-motion:reduce){.navgroup .chev{transition:none}}
.navsearch{display:flex;align-items:center;gap:10px;margin:0 4px 4px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;
  background:var(--bg-tint);color:var(--ink-3);font-size:13px;text-align:left;transition:border-color .15s var(--ease),color .15s var(--ease)}
.navsearch:hover{border-color:var(--brand);color:var(--ink)}
.navsearch span{flex:1}
kbd{font-family:var(--mono);font-size:10.5px;padding:1px 6px;border:1px solid var(--line);border-bottom-width:2px;border-radius:6px;background:var(--card);color:var(--ink-3);white-space:nowrap}
.topsearch{margin-left:auto;width:40px;height:40px;border:1px solid var(--line);border-radius:10px;display:grid;place-items:center;color:var(--ink-2)}
@media(min-width:901px){.topsearch{display:none}}

/* ---------- breadcrumb ---------- */
.crumbs ol{list-style:none;margin:0 0 4px;padding:0;display:flex;flex-wrap:wrap;gap:2px 0;font-size:12.5px;color:var(--ink-3)}
.crumbs li{display:inline-flex;align-items:center;min-width:0;overflow-wrap:anywhere}
.crumbs li+li::before{content:"\203A";margin:0 8px;color:var(--ink-3);opacity:.7}
.crumbs li[aria-current]{color:var(--ink-2);font-weight:600}

/* ---------- dialogs and drawers (pharos-ui.js) ---------- */
html.pui-locked{overflow:hidden}
.pui-modal{position:fixed;inset:0;z-index:90}
.pui-modal[hidden]{display:none}
.pui-scrim{position:absolute;inset:0;background:rgba(10,23,41,.45)}
.pui-sheet{position:relative;margin:10vh auto 0;width:min(640px,calc(100% - 32px));max-height:80vh;display:flex;flex-direction:column;
  background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 60px rgba(0,0,0,.28);overflow:hidden;
  animation:pui-in .18s var(--ease)}
.pui-drawer{position:absolute;top:0;right:0;bottom:0;width:min(580px,100vw);display:flex;flex-direction:column;background:var(--card);color:var(--ink);
  box-shadow:-20px 0 50px rgba(0,0,0,.2);animation:pui-slide .22s var(--ease)}
.pui-drawer>header{display:flex;align-items:center;gap:10px;padding:18px 22px;border-bottom:1px solid var(--line)}
.pui-drawer>header h2{font-size:17px;min-width:0;overflow-wrap:anywhere}
.pui-drawer>header .pui-x{margin-left:auto}
.pui-drawer>.bd{padding:20px 22px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:18px}
.pui-drawer>footer{padding:14px 22px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.pui-x{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;font-size:20px;line-height:1;color:var(--ink-3)}
.pui-x:hover{background:var(--bg-tint);color:var(--ink)}
@keyframes pui-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes pui-slide{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.pui-sheet,.pui-drawer{animation:none}}
@media(max-width:620px){.pui-sheet{margin-top:12px;max-height:calc(100dvh - 24px)}}
.pui-tip{position:fixed;z-index:95;pointer-events:none;background:var(--tip);color:var(--tip-ink);font-size:12px;line-height:1.45;padding:8px 10px;border-radius:9px;
  box-shadow:0 8px 24px rgba(0,0,0,.2);opacity:0;transform:translateY(4px);transition:opacity .1s,transform .1s;max-width:240px}
.pui-tip.on{opacity:1;transform:none}
.pui-tip b{display:block;font-weight:700}

/* ---------- search palette (pharos-search.js) ---------- */
.search-modal{--st:var(--ink-3);--st-ink:var(--ink-3);--st-soft:var(--bg-tint)}
.search-modal .st-ok{--st:var(--green);--st-ink:var(--green-ink);--st-soft:var(--green-soft)}
.search-modal .st-w{--st:var(--amber);--st-ink:var(--amber-ink);--st-soft:var(--amber-soft)}
.search-modal .st-p{--st:var(--orange);--st-ink:var(--orange-ink);--st-soft:var(--orange-soft)}
.search-modal .st-b{--st:var(--red);--st-ink:var(--red-ink);--st-soft:var(--red-soft)}
.search-modal .st-m{--st:var(--blue);--st-ink:var(--blue-ink);--st-soft:var(--blue-soft)}
.search-modal .st-off{--st:var(--ink-3);--st-ink:var(--ink-2);--st-soft:var(--bg-tint)}
.search-modal .pui-scrim{background:rgba(8,16,30,.38);-webkit-backdrop-filter:blur(8px) saturate(115%);backdrop-filter:blur(8px) saturate(115%);animation:search-fade .18s var(--ease)}
.search-sheet{width:min(720px,calc(100% - 32px));margin-top:11vh;max-height:min(660px,78vh);border-radius:20px;
  box-shadow:0 40px 90px -24px rgba(8,16,30,.5),0 12px 28px -12px rgba(8,16,30,.22),0 0 0 1px rgba(255,255,255,.04)}
@keyframes search-fade{from{opacity:0}to{opacity:1}}

.search-field{position:relative;display:flex;align-items:center;gap:14px;padding:18px 20px;border-bottom:1px solid var(--line)}
.search-glyph{display:grid;place-items:center;color:var(--brand);flex:none}
.search-field input{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:19px;font-weight:500;letter-spacing:-.01em;color:var(--ink);padding:4px 0;box-shadow:none}
.search-field input::placeholder{color:var(--ink-3);opacity:1}
.search-field input:focus,.search-field input:focus-visible{outline:none;box-shadow:none}
.search-esc{flex:none;display:inline-flex;align-items:center;border-radius:8px;color:var(--ink-3)}
.search-esc kbd{font-size:11px;padding:3px 8px}
.search-esc span{display:none}
.search-esc:hover kbd{color:var(--ink);border-color:var(--ink-3)}
.search-bar{position:absolute;left:0;right:0;bottom:-1px;height:2px;overflow:hidden;opacity:0;transition:opacity .15s}
.search-bar::after{content:"";position:absolute;inset:0;width:40%;background:linear-gradient(90deg,transparent,var(--brand),transparent);animation:search-slide 1s var(--ease) infinite}
.search-modal.is-busy .search-bar{opacity:1}
@keyframes search-slide{from{transform:translateX(-100%)}to{transform:translateX(250%)}}

.search-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 10px 10px;scroll-padding:40px 0 8px}
.search-results[hidden]{display:none}
.search-group+.search-group{margin-top:4px}
.search-hd{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;padding:14px 10px 7px;background:var(--card);
  font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3)}
.search-count{font-size:10px;letter-spacing:0;padding:0 6px;border-radius:999px;background:var(--bg-tint);border:1px solid var(--line);line-height:16px}

.search-row{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:54px;padding:8px 10px;
  border-radius:12px;color:var(--ink);text-decoration:none;cursor:pointer}
.search-row::before{content:"";position:absolute;left:-10px;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--brand);opacity:0}
.search-row[aria-selected=true]{background:var(--brand-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand) 22%,transparent)}
.search-row[aria-selected=true]::before{opacity:1}
.search-row:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.search-ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--bg-tint);border:1px solid var(--line);color:var(--ink-2)}
.search-ico--pages,.search-ico--action,.search-ico--screen{background:var(--brand-soft);color:var(--brand);border-color:color-mix(in srgb,var(--brand) 18%,transparent)}
.search-ico--incidents{background:var(--red-soft);color:var(--red-ink);border-color:transparent}
.search-ico--maintenance{background:var(--blue-soft);color:var(--blue-ink);border-color:transparent}
.search-ico--components,.search-ico--services{background:var(--green-soft);color:var(--green-ink);border-color:transparent}
.search-ico--recent{color:var(--ink-3)}
.search-row[aria-selected=true] .search-ico{background:var(--card)}
.search-main{min-width:0;display:flex;flex-direction:column;gap:4px}
.search-title{font-size:14.5px;font-weight:600;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-title mark{background:color-mix(in srgb,var(--brand) 16%,transparent);color:inherit;border-radius:4px;padding:0 1px;box-shadow:inset 0 -2px 0 color-mix(in srgb,var(--brand) 55%,transparent)}
.search-sub{display:flex;align-items:center;gap:6px 8px;min-width:0;overflow:hidden;white-space:nowrap;font-size:12px;color:var(--ink-3);line-height:1.3}
.search-sub .page-tag{padding:1px 8px;font-size:10px;flex:none}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .search-modal .page-tag{background:color-mix(in srgb,var(--tag-ink) 26%,transparent);color:color-mix(in srgb,var(--tag-ink) 40%,#fff)}}
:root[data-theme="dark"] .search-modal .page-tag{background:color-mix(in srgb,var(--tag-ink) 26%,transparent);color:color-mix(in srgb,var(--tag-ink) 40%,#fff)}
.search-page{color:var(--ink-2);font-weight:550;overflow:hidden;text-overflow:ellipsis}
.search-pill{display:inline-flex;align-items:center;gap:5px;flex:none;font-size:11px;font-weight:650;padding:1px 8px;border-radius:999px;background:var(--st-soft);color:var(--st-ink)}
.search-pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--st)}
.search-meta,.search-ctx{overflow:hidden;text-overflow:ellipsis}
.search-meta+.search-ctx::before,.search-pill+.search-ctx::before,.search-page+.search-ctx::before{content:"\00B7";margin-right:8px;opacity:.7}
.search-hint{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--brand);opacity:0}
.search-hint .search-ico{width:22px;height:22px;border-radius:6px;background:var(--card);border:1px solid var(--line);color:var(--ink-2)}
.search-hint .search-ico svg{width:13px;height:13px}
.search-row[aria-selected=true] .search-hint{opacity:1}

.search-state{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:28px 24px 14px;color:var(--ink-3);font-size:13px}
.search-state[hidden]{display:none}
.search-state>.search-ico{width:44px;height:44px;border-radius:14px;margin-bottom:6px}
.search-state>.search-ico svg{width:20px;height:20px}
.search-state b{color:var(--ink);font-size:15px;font-weight:650;overflow-wrap:anywhere}
.search-state span{max-width:46ch}
.search-state.is-error>.search-ico{background:var(--red-soft);color:var(--red-ink);border-color:transparent}
.search-retry{margin-top:10px}
.search-state.is-loading{align-items:stretch;gap:2px;padding:14px 10px}
.search-skel{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;align-items:center;padding:10px}
.search-skel i,.search-skel span{display:block;border-radius:10px;height:34px;
  background:linear-gradient(90deg,var(--bg-tint) 0%,color-mix(in srgb,var(--ink-3) 22%,var(--bg-tint)) 50%,var(--bg-tint) 100%);background-size:200% 100%;animation:search-shimmer 1.2s linear infinite}
.search-skel span{height:12px;border-radius:6px;width:62%}
.search-skel:nth-child(2) span{width:48%}.search-skel:nth-child(3) span{width:70%}.search-skel:nth-child(4) span{width:40%}
@keyframes search-shimmer{from{background-position:100% 0}to{background-position:-100% 0}}

.search-foot{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;padding:11px 18px;border-top:1px solid var(--line);background:var(--bg-tint);font-size:12px;color:var(--ink-3)}
.search-keys{display:flex;flex-wrap:wrap;gap:6px 14px;margin-right:auto}
.search-keys span{display:inline-flex;align-items:center;gap:5px}
.search-keys kbd+kbd{margin-left:-2px}
.search-clear{font-size:12px;font-weight:600;color:var(--brand);padding:4px 8px;border-radius:8px}
.search-clear:hover{background:var(--brand-soft)}
.search-clear[hidden]{display:none}
.search-scope{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}
.search-scope-k{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase}
.search-clear:not([hidden])+.search-scope .search-scope-k{display:none}
.search-scope .page-tag{padding:1px 8px;font-size:10px}
.search-scope-name{color:var(--ink-2);font-weight:600;max-width:22ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-esc:focus-visible,.search-clear:focus-visible,.search-retry:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

@media(max-width:620px){
  .search-sheet{width:100%;margin:0;height:100dvh;max-height:none;border-radius:0;border:0}
  .search-field{padding:10px 12px 10px 16px;gap:12px}
  .search-field input{font-size:17px}
  .search-esc{min-height:44px;padding:0 8px}
  .search-esc kbd{display:none}
  .search-esc span{display:inline;font-size:15px;font-weight:600;color:var(--brand)}
  .search-body{padding:0 8px 8px}
  .search-row{min-height:60px;grid-template-columns:36px minmax(0,1fr);padding:10px}
  .search-ico{width:36px;height:36px}
  .search-hint{display:none}
  .search-sub{flex-wrap:wrap;white-space:normal}
  .search-keys{display:none}
  .search-foot{padding:10px 16px calc(10px + env(safe-area-inset-bottom))}
  .search-scope{flex:1}
}
@media(prefers-reduced-motion:reduce){
  .search-modal .pui-scrim,.search-bar::after,.search-skel i,.search-skel span{animation:none}
}

/* ---------- Overview ---------- */
.ov{display:flex;flex-direction:column;gap:18px}
.ov-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:center;
  padding:26px 28px;border-radius:18px;border:1px solid var(--line);background:var(--card)}
.ov-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 140% at 0% 0%,var(--st-soft) 0%,transparent 55%);pointer-events:none}
.ov-hero::after{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--st)}
.ov-hero>*{position:relative;min-width:0}
.ov-state{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--st-ink);
  background:var(--st-soft);border:1px solid color-mix(in srgb,var(--st) 35%,transparent);padding:4px 10px;border-radius:999px}
.ov-pulse{width:8px;height:8px;border-radius:50%;background:var(--st);animation:ovp 2s infinite}
@keyframes ovp{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--st) 60%,transparent)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}
@media(prefers-reduced-motion:reduce){.ov-pulse{animation:none}}
.ov-hero h2{font-size:clamp(24px,2.4vw,32px);letter-spacing:-.03em;margin:12px 0 6px;line-height:1.1}
.ov-hero p{color:var(--ink-2);max-width:62ch}
.ov-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;font-size:13px;color:var(--ink-3)}
.ov-meta b{color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.ov-ring{display:grid;place-items:center;position:relative;width:148px;height:148px}
.ov-ring svg{transform:rotate(-90deg)}
.ov-ring .c{position:absolute;text-align:center}
.ov-ring .c b{display:block;font-size:30px;letter-spacing:-.03em;line-height:1}
.ov-ring .c span{font-size:11.5px;color:var(--ink-3)}
.ov-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.ov-kpi{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px 14px;display:flex;flex-direction:column;gap:4px;min-width:0;
  transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
.ov-kpi:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(16,24,40,.08)}
@media(prefers-reduced-motion:reduce){.ov-kpi:hover{transform:none}}
.ov-kpi .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3)}
.ov-kpi .v{font-size:28px;font-weight:750;letter-spacing:-.03em;line-height:1.15;font-variant-numeric:tabular-nums}
.ov-kpi .v small{font-size:15px;color:var(--ink-3);font-weight:600;letter-spacing:0}
.ov-kpi .n{font-size:12.5px;color:var(--ink-3)}
.ov-kpi .n b{color:var(--ink)}
.ov-kpi svg{display:block;margin-top:6px}
.ov-onoff{font-size:11.5px;font-weight:700;padding:1px 8px;border-radius:999px;margin-right:4px}
.ov-onoff.on{background:var(--green-soft);color:var(--green-ink)}.ov-onoff.off{background:var(--bg-tint);color:var(--ink-3);border:1px solid var(--line)}
.ov-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:18px;align-items:start}
.ov-col{display:flex;flex-direction:column;gap:18px;min-width:0}
.ov-card{background:var(--card);border:1px solid var(--line);border-radius:16px;min-width:0}
.ov-card>header{display:flex;align-items:baseline;gap:10px;padding:16px 20px 0;flex-wrap:wrap}
.ov-card>header h3{font-size:15px}
.ov-card>header .hint{margin-left:auto;font-size:12px;color:var(--ink-3)}
.ov-card>header .hint.link{color:var(--brand);font-weight:600;text-decoration:none}
.ov-card>header .hint.link:hover{text-decoration:underline}
.ov-card>.bd{padding:14px 20px 18px}
.ov-days{display:grid;grid-template-columns:repeat(90,minmax(0,1fr));gap:2px;height:46px}
.ov-days i,.ov-mini i{display:block;border-radius:3px;background:var(--green);transition:opacity .12s,transform .12s}
.ov-days i:hover,.ov-mini i:hover{transform:scaleY(1.12);opacity:.85}
@media(prefers-reduced-motion:reduce){.ov-days i,.ov-mini i{transition:none}}
.ov-axis{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-top:7px}
.ov-legend{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:12px;color:var(--ink-3);margin-top:12px}
.ov-legend span{display:inline-flex;align-items:center;gap:6px}
.ov-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.s-ok{background:var(--green)!important}.s-w{background:var(--amber)!important}.s-p{background:var(--orange)!important}
.s-b{background:var(--red)!important}.s-m{background:var(--blue)!important}.s-n,.s-unknown{background:var(--unknown)!important}
.ov-grp{font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3);margin:14px 0 4px}
.ov-grp:first-child{margin-top:0}
.ov-row{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1.1fr) 64px;gap:14px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.ov-grp+.ov-row{border-top:0}
.ov-name{display:flex;align-items:center;gap:9px;min-width:0}
.ov-name a{text-decoration:none;min-width:0;overflow:hidden}
.ov-name a:hover strong{color:var(--brand)}
.ov-name strong{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.ov-dot{width:9px;height:9px;border-radius:50%;flex:none}
.ov-src{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line);border-radius:5px;padding:0 5px;flex:none}
.ov-mini{display:grid;grid-template-columns:repeat(30,minmax(0,1fr));gap:2px;height:22px}
.ov-pct{font-family:var(--mono);font-size:12px;text-align:right;color:var(--ink-2);white-space:nowrap}
.ov-row .ov-lbl{font-size:11.5px;color:var(--orange-ink);white-space:nowrap}
.ov-inc h4{font-size:15.5px;margin:10px 0 6px;letter-spacing:-.01em}
.ov-inc h4 a{text-decoration:none}.ov-inc h4 a:hover{color:var(--brand)}
.ov-pills{display:flex;flex-wrap:wrap;gap:6px}
.ov-pill{font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--bg-tint);color:var(--ink-2);border:1px solid var(--line)}
.ov-pill.st{background:var(--orange-soft);color:var(--orange-ink);border-color:transparent}
.ov-tl{list-style:none;margin:16px 0 0;padding:0;position:relative}
.ov-tl::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line);border-radius:2px}
.ov-tl li{position:relative;padding:0 0 14px 24px}
.ov-tl li:last-child{padding-bottom:0}
.ov-tl li::before{content:"";position:absolute;left:0;top:5px;width:12px;height:12px;border-radius:50%;background:var(--card);border:2px solid var(--brand)}
.ov-tl li:first-child::before{background:var(--brand)}
.ov-tl .t{font-size:12px;color:var(--ink-3)}
.ov-tl .t b{color:var(--ink);font-weight:600;margin-right:6px}
.ov-tl p{font-size:13px;color:var(--ink-2);margin-top:2px;overflow-wrap:anywhere}
.ov-past{display:flex;align-items:center;gap:10px;margin-top:16px;padding-top:14px;border-top:1px dashed var(--line);font-size:13px;flex-wrap:wrap}
.ov-past .ok{color:var(--green-ink);font-weight:600;margin-left:auto;font-size:12px}
.ov-health{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ov-health li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line);font-size:13.5px}
.ov-health li:first-child{border-top:0;padding-top:0}
.ov-health .ic{width:20px;height:20px;border-radius:6px;display:grid;place-items:center;font-size:12px;font-weight:800}
.ov-health .ic.good{background:var(--green-soft);color:var(--green-ink)}
.ov-health .ic.warn{background:var(--amber-soft);color:var(--amber-ink)}
.ov-health .ic.off{background:var(--bg-tint);color:var(--ink-3)}
.ov-health .t,.ov-health .d{display:block}
.ov-health .d{font-size:12px;color:var(--ink-3);overflow-wrap:anywhere}
.ov-health a{font-size:12px;color:var(--brand);text-decoration:none;font-weight:600;white-space:nowrap}
.ov-health a:hover{text-decoration:underline}
.ov-ready{border-color:color-mix(in srgb,var(--brand) 40%,var(--line));background:linear-gradient(135deg,var(--brand-soft),var(--card) 60%)}
.ov-steps{list-style:none;margin:0;padding:0;counter-reset:s;display:flex;flex-direction:column;gap:14px}
.ov-steps li{counter-increment:s;display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:14px;align-items:center}
.ov-steps li::before{content:counter(s);width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:700;background:var(--brand-soft);color:var(--brand);border:1px solid color-mix(in srgb,var(--brand) 30%,transparent)}
.ov-steps li.done::before{content:"\2713";background:var(--green-soft);color:var(--green-ink);border-color:transparent}
.ov-steps li.done h4{color:var(--ink-3);text-decoration:line-through}
.ov-steps h4{font-size:14px;margin:0 0 2px}
.ov-steps p{font-size:12.5px;color:var(--ink-3);overflow-wrap:anywhere}
@media(max-width:1100px){.ov-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ov-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:620px){.ov-hero{grid-template-columns:minmax(0,1fr);padding:20px}.ov-ring{justify-self:start;width:120px;height:120px}
  .ov-ring svg{width:120px;height:120px}.ov-ring .c b{font-size:22px}
  .ov-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ov-kpi{padding:14px}.ov-kpi .v{font-size:23px}
  .ov-row{grid-template-columns:minmax(0,1fr) 64px}.ov-mini{grid-column:1/-1;order:3}
  .ov-days{gap:1px;height:38px}.ov-days i{border-radius:2px}
  .ov-steps li{grid-template-columns:30px minmax(0,1fr)}.ov-steps li>a,.ov-steps li>.sub{grid-column:2;justify-self:start}}

/* ---------- page status dots (page selector, Status pages) ---------- */
.pdot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block;margin-top:6px}
.page-state{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-3);margin-top:5px}
.page-state .pdot{margin-top:0}
.page-switcher .page-options .nav{gap:9px}

/* ---------- Status pages as cards ---------- */
.pg-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:16px}
.pg-card{display:flex;flex-direction:column;gap:14px;padding:18px 20px;background:var(--card);border:1px solid var(--line);border-radius:16px;
  box-shadow:var(--shadow-sm);transition:border-color .15s var(--ease),box-shadow .15s var(--ease);min-width:0}
.pg-card:hover{border-color:color-mix(in srgb,var(--brand) 40%,var(--line));box-shadow:0 10px 28px rgba(16,24,40,.07)}
.pg-card.archived{background:var(--bg-tint);box-shadow:none}
.pg-card>header{display:flex;align-items:flex-start;gap:12px;justify-content:space-between}
.pg-title{min-width:0}
.pg-title h3{font-size:16.5px;letter-spacing:-.02em;overflow-wrap:anywhere}
.pg-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.pg-tags .pill{padding:2px 9px;font-size:11px}
.pg-live{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--ink-2);white-space:nowrap;padding:4px 10px;border-radius:999px;background:var(--bg-tint);border:1px solid var(--line)}
.pg-live .pdot{margin:0}
.pg-url{font-size:12.5px;color:var(--ink-3);overflow-wrap:anywhere}
.pg-url a{color:var(--ink-2)}
.pg-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;margin:0;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pg-stats div{min-width:0}
.pg-stats dt{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.pg-stats dd{margin:4px 0 0;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pg-stats dd.hot{color:var(--orange-ink)}
.pg-stats .pill{padding:1px 8px;font-size:10.5px}
.pg-card>footer{justify-content:flex-start;flex-wrap:wrap}
.pg-card>footer form{margin:0}
/* Delete sits apart from the safe actions, icon only so five of them still fit one row. */
.pg-card>footer{gap:6px}
.pg-card>footer .pg-del{margin-left:auto}
.rowacts .pg-del button{display:inline-flex;align-items:center;padding:6px 7px;color:var(--red-ink);border-color:color-mix(in srgb,var(--red) 35%,var(--line))}
.rowacts .pg-del button:hover{background:color-mix(in srgb,var(--red) 9%,transparent);border-color:var(--red)}
.rowacts a.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.rowacts a.primary:hover{filter:brightness(1.07);background:var(--brand);color:var(--brand-ink)}
.pill.off{color:var(--ink-3);background:var(--bg-tint);border:1px solid var(--line)}
@media(max-width:520px){.pg-card>header{flex-direction:column}}

/* ---------- shared form and card pieces (also used by the ops screens) ---------- */
.ix-card{background:var(--card);border:1px solid var(--line);border-radius:16px;min-width:0}
.ix-card>header{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ix-card>header h3{font-size:15px}
.ix-card>header .hint{margin-left:auto;font-size:12px;color:var(--ink-3)}
.ix-card>.bd{padding:18px 20px}
.ix-input{width:100%;font:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg-tint);color:var(--ink)}
.ix-input:focus{outline:2px solid var(--brand);outline-offset:1px;background:var(--card)}
.ix-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ix-lbl{font-size:12px;font-weight:600;color:var(--ink-2);margin:0 0 6px;display:block}
.ix-chips{display:flex;flex-wrap:wrap;gap:6px}
.ix-chip{font:inherit;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.ix-chip:hover{border-color:var(--brand)}
.ix-chip[aria-pressed="true"]{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.ix-note{display:flex;gap:10px;padding:11px 13px;border-radius:10px;background:var(--bg-tint);font-size:12.5px;color:var(--ink-2);line-height:1.5}
.ix-more{border:1px solid var(--line);border-radius:12px;margin-top:12px;background:var(--card)}
.ix-more summary{cursor:pointer;padding:11px 14px;font-size:13px;font-weight:600;color:var(--ink-2);list-style:none;display:flex;align-items:center;gap:8px}
.ix-more summary::-webkit-details-marker{display:none}
.ix-more summary::before{content:"\203A";font-size:16px;transition:transform .15s;color:var(--ink-3)}
.ix-more[open] summary::before{transform:rotate(90deg)}
.ix-more>div{padding:0 14px 14px;font-size:13px;color:var(--ink-2);display:flex;flex-direction:column;gap:8px}
.ix-state{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.ix-state.ok{background:var(--green-soft);color:var(--green-ink)}.ix-state.off{background:var(--bg-tint);color:var(--ink-3)}
@media(max-width:760px){.ix-row{grid-template-columns:minmax(0,1fr)}}

/* ---------- Users ---------- */
.pp-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.pp-kpi{border:1px solid var(--line);border-radius:14px;background:var(--card);padding:14px 16px;min-width:0}
.pp-kpi .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3)}
.pp-kpi .v{font-size:24px;font-weight:750;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.pp-kpi .n{font-size:12px;color:var(--ink-3)}
.pp-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}
.pp-search{flex:1;min-width:180px;max-width:320px}
.pp-user{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1.6fr) 150px auto;gap:16px;align-items:center;padding:14px 18px;border-top:1px solid var(--line)}
.pp-user[hidden]{display:none}
#pp-list .pp-user:first-child{border-top:0}
.pp-who{display:flex;align-items:center;gap:12px;min-width:0}
.pp-av{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:14px;color:#fff;flex:none}
.pp-who b{display:block;font-size:14px}
.pp-who>span:last-child{min-width:0}
.pp-who>span:last-child>span{font-size:12.5px;color:var(--ink-3);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-who b .pp-tag{margin-left:6px;vertical-align:1px}
.pp-badges{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.pp-acc{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:3px 9px 3px 4px;border-radius:999px;border:1px solid var(--line);background:var(--card);max-width:100%;overflow-wrap:anywhere}
.pp-acc .page-tag{margin:0}
.pp-acc em{font-style:normal;color:var(--ink-3);white-space:nowrap}
.pp-meta{font-size:12px;color:var(--ink-3);line-height:1.7}
.pp-meta b{color:var(--ink-2);font-weight:600}
.pp-act{display:flex;gap:6px;align-items:center;justify-content:flex-end}
.pp-act .btn{padding:6px 12px;font-size:12.5px}
.pp-tag{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;white-space:nowrap;display:inline-block}
.pp-tag.admin{background:var(--brand-soft);color:var(--brand)}
.pp-tag.user{background:var(--bg-tint);color:var(--ink-2)}
.pp-tag.f2a{background:var(--green-soft);color:var(--green-ink)}
.pp-tag.no2a{background:var(--amber-soft);color:var(--amber-ink)}
.pp-more{position:relative}
.pp-more>summary{list-style:none;cursor:pointer;width:32px;height:32px;border:1px solid var(--line);border-radius:9px;display:grid;place-items:center;color:var(--ink-3);font-weight:700}
.pp-more>summary::-webkit-details-marker{display:none}
.pp-more>summary:hover{color:var(--ink);background:var(--bg-tint)}
.pp-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:20;min-width:210px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-md)}
.pp-menu form{margin:0}
.pp-menu button{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:8px;font-size:13px;color:var(--ink-2)}
.pp-menu button:hover{background:var(--bg-tint);color:var(--ink)}
.pp-menu button.danger{color:var(--red-ink)}
.pp-fieldset{border:0;margin:0;padding:0;min-width:0}
.pp-role{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pp-role label{display:flex;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;cursor:pointer}
.pp-role label:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
.pp-role input{accent-color:var(--brand);margin-top:3px}
.pp-role b{display:block;font-size:13.5px}.pp-role small{font-size:12px;color:var(--ink-3);line-height:1.4}
.pp-matrix{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.pp-mrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;border-top:1px solid var(--line)}
.pp-allnote+.pp-mrow,.pp-mrow:first-child{border-top:0}
.pp-mrow b{font-size:13.5px;overflow-wrap:anywhere}
.pp-seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.pp-seg label{position:relative;display:flex}
.pp-seg input{position:absolute;opacity:0;width:1px;height:1px}
.pp-seg span{font-size:12px;font-weight:600;padding:6px 10px;color:var(--ink-3);border-right:1px solid var(--line);background:var(--card);cursor:pointer;white-space:nowrap;flex:1;text-align:center}
.pp-seg label:last-child span{border-right:0}
.pp-seg input:checked+span{background:var(--brand-soft);color:var(--brand)}
.pp-seg input:focus-visible+span{outline:2px solid var(--brand);outline-offset:-2px}
.pp-allnote{display:none;font-size:12.5px;color:var(--brand);padding:10px 14px;background:var(--brand-soft)}
.pp-fieldset:has(input[name=role][value=admin]:checked)+.pp-fieldset .pp-allnote{display:block}
.pp-fieldset:has(input[name=role][value=admin]:checked)+.pp-fieldset .pp-seg{opacity:.4;pointer-events:none}
.pp-rolesbox{margin-top:18px}
.pp-roles{width:100%;font-size:12.5px}
.pp-roles th,.pp-roles td{padding:8px 10px;text-align:center;position:static}
.pp-roles td:first-child,.pp-roles th:first-child{text-align:left}
.pp-roles td{border-top:1px solid var(--line)}
.pp-roles .y{color:var(--green-ink);font-weight:700}.pp-roles .x{color:var(--ink-3)}
@media(max-width:1100px){.pp-user{grid-template-columns:minmax(0,1fr) auto}.pp-user .pp-badges,.pp-user .pp-meta{grid-column:1/-1}}
@media(max-width:700px){.pp-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.pp-role{grid-template-columns:minmax(0,1fr)}
  .pp-mrow{grid-template-columns:minmax(0,1fr)}.pp-seg{width:100%}.pp-seg label{flex:1}.pp-seg span{padding:7px 4px}
  .pp-user{padding:14px}.pp-search{max-width:none}}
#pp-empty[hidden]{display:none}
.pui-drawer .sub{font-size:12px;color:var(--ink-3);line-height:1.5}
.pui-drawer .check{font-size:13px}

/* ---------- Profile ---------- */
.pf-hero{display:flex;align-items:center;gap:20px;padding:24px 26px;border:1px solid var(--line);border-radius:18px;
  background:radial-gradient(120% 160% at 100% 0%,var(--brand-soft) 0%,transparent 60%),var(--card);margin-bottom:18px;flex-wrap:wrap}
.pf-hero .pp-av{width:68px;height:68px;font-size:26px;box-shadow:0 0 0 4px var(--card),0 0 0 5px var(--line)}
.pf-hero h2{font-size:24px;letter-spacing:-.03em;overflow-wrap:anywhere}
.pf-hero p{color:var(--ink-3);font-size:13.5px;overflow-wrap:anywhere}
.pf-hero .pp-badges{margin-top:8px}
.pf-hero .right{margin-left:auto;display:flex;gap:18px;flex-wrap:wrap}
.pf-stat{text-align:right}.pf-stat b{display:block;font-size:15px}.pf-stat span{font-size:11.5px;color:var(--ink-3)}
.pf-codes{margin-bottom:18px}
.pf-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
.pf-col{display:flex;flex-direction:column;gap:18px;min-width:0}
.pf-help{font-size:12px;color:var(--ink-3);margin-top:8px}
.pf-sec{display:flex;gap:14px;align-items:flex-start;padding:14px 0;border-top:1px solid var(--line)}
.pf-sec:first-child{border-top:0;padding-top:0}
.pf-sec .ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none}
.pf-sec .ic.good{background:var(--green-soft);color:var(--green-ink)}.pf-sec .ic.warn{background:var(--amber-soft);color:var(--amber-ink)}.pf-sec .ic.n{background:var(--bg-tint);color:var(--ink-2)}
.pf-sec b{display:block;font-size:14px}.pf-sec p{font-size:12.5px;color:var(--ink-3);margin:2px 0 8px;overflow-wrap:anywhere}
.pf-sec form,.pf-setup{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.pf-sec form .btn{align-self:flex-start;margin-top:8px}
.pf-sec .ix-more{margin-top:8px}
.pf-sess{list-style:none;margin:0;padding:0}
.pf-sess li{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line);font-size:13px}
.pf-sess li:first-child{border-top:0;padding-top:0}
.pf-sess .ic{color:var(--ink-3);display:grid;place-items:center}
.pf-sess b{display:block;font-weight:600}
.pf-sess .d{display:block;font-size:12px;color:var(--ink-3)}
.pf-sess form{margin:0}
.btn.pf-small{padding:5px 10px;font-size:12px}
.ix-card>header form.hint{margin-left:auto}
.pf-pref{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.pf-pref:first-child{border-top:0;padding-top:0}
.pf-pref b{display:block;font-size:13.5px}.pf-pref>span:first-child>span{display:block;font-size:12px;color:var(--ink-3)}
.pf-pref form{margin:0}
.pf-prefctl{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.pf-prefctl .btn{padding:6px 12px;font-size:12.5px}
.pf-prefs{margin:0}.pf-prefs .pf-pref:first-of-type{border-top:0;padding-top:0}
.pf-pref label b{cursor:pointer}.pf-pref .pf-zone-now{display:block;margin-top:4px;font-size:12px;color:var(--ink-2)}.pf-pref .err{display:block;margin-top:4px}
.pf-tzctl select{width:auto;min-width:220px;max-width:300px}
.pf-prefsave{border-top:0;padding-top:0}
@media(max-width:1100px){.pf-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:700px){.pf-hero{padding:20px}.pf-hero .right{margin-left:0}.pf-stat{text-align:left}.pf-pref{grid-template-columns:minmax(0,1fr)}.pf-prefctl{justify-content:flex-start}.pf-tzctl,.pf-tzctl select{width:100%;max-width:none;min-width:0}.pf-prefsave>span:first-child{display:none}}
.ov .sub{font-size:13px;color:var(--ink-3)}
.ov-steps .sub{font-size:12px}
@media(max-width:900px){.navsearch kbd{display:none}}
