@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Chakra+Petch:wght@500;600;700&family=Teko:wght@500;600;700&display=swap');
:root {
  --bg:#0b0b0a; --surface-1:#161614; --surface-2:#22221f; --surface-3:#2c2c28;
  --border:#32322e; --border-2:#54544e;
  --hair:rgba(255,255,255,.08); --hair-strong:rgba(255,255,255,.14);
  --fg:#f2f0ea; --fg-muted:#acaaa2; --fg-subtle:#8a8880;
  --accent:#ae0000; --accent-hi:#c40606; --accent-hover:#cc0000; --accent-fg:#fff; --accent-text:#f04444;
  --good:#22c55e; --warn:#f59e0b; --bad:#f43f5e;
  /* relationship hues: status + stat palette only, red stays "act/warning" */
  --rel-ally:#22c55e; --rel-friendly:#38bdf8; --rel-neutral:#8a8880; --rel-rival:#fb923c; --rel-hostile:#f04444;
  --radius:3px; --radius-sm:2px;
  --font-body:'Barlow',system-ui,sans-serif; --font-display:'Teko','Impact',sans-serif; --font-label:'Chakra Petch',ui-sans-serif,system-ui,sans-serif;
  --ease-out:cubic-bezier(.23,1,.32,1); --ease-in-out:cubic-bezier(.77,0,.175,1); --ease-drawer:cubic-bezier(.32,.72,0,1);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font:400 14px/1.5 var(--font-body);-webkit-font-smoothing:antialiased}
body{min-height:100vh;display:flex;flex-direction:column}
body::before{content:'';position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(120% 75% at 50% -12%,rgba(174,0,0,.11),transparent 60%),radial-gradient(120% 120% at 50% 120%,rgba(0,0,0,.55),transparent 68%),linear-gradient(180deg,#0e0e0d,#090908)}
body::after{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.5;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:46px 46px;mask-image:radial-gradient(120% 80% at 50% 0%,#000 25%,transparent 78%);-webkit-mask-image:radial-gradient(120% 80% at 50% 0%,#000 25%,transparent 78%)}
h1,h2,h3{text-wrap:balance;margin:0}
a{color:var(--accent-text);text-decoration:none}
a:hover{text-decoration:underline}
:where(a,button,input,select,textarea,summary):focus-visible{outline:2px solid var(--accent-text);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.h1{font:600 48px/1 var(--font-display);text-transform:uppercase;letter-spacing:.04em}
.h2{font:600 28px/1 var(--font-display);text-transform:uppercase;letter-spacing:.04em}
.eyebrow{font:600 11px var(--font-label);text-transform:uppercase;letter-spacing:.13em;color:var(--fg-subtle)}
.muted{color:var(--fg-muted)} .subtle{color:var(--fg-subtle)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--radius-sm);border:1px solid transparent;font:600 13px var(--font-label);text-transform:uppercase;letter-spacing:.09em;cursor:pointer;background:none;color:var(--fg);transition:color 160ms var(--ease-out),background-color 160ms var(--ease-out),border-color 160ms var(--ease-out),transform 160ms var(--ease-out);text-decoration:none!important;white-space:nowrap}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:linear-gradient(#c40606,#ae0000);color:var(--accent-fg);box-shadow:0 1px 0 rgba(255,255,255,.18) inset}
.btn-primary:hover:not(:disabled){background:var(--accent-hover)}
.btn-ghost{border-color:var(--border-2);color:var(--fg)}
.btn-ghost:hover:not(:disabled){border-color:var(--fg-muted);background:var(--surface-2)}
.btn-ghost.on{border-color:var(--accent);color:var(--accent-text);box-shadow:0 0 12px rgba(174,0,0,.25)}
.btn-sm{height:30px;padding:0 10px;font-size:11px}
.btn-good{border-color:rgba(34,197,94,.6);color:var(--good)} .btn-good:hover:not(:disabled){background:rgba(34,197,94,.12)}
@media (prefers-reduced-motion:no-preference){.btn:active:not(:disabled){transform:scale(.97)}.pop-in{animation:pop-in 180ms var(--ease-out);transform-origin:top}.reveal{animation:rise 240ms var(--ease-out) both;animation-delay:calc(var(--i,0)*28ms)}}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.card-link:hover{transform:translateY(-1px)}}
@keyframes pop-in{from{opacity:0;transform:scale(.97) translateY(-4px)}}
@keyframes rise{from{opacity:0;transform:translateY(8px)}}
html[data-input-method="keyboard"] :is(.btn,.pop-in,.reveal,.card-link){transition:none;animation:none;transform:none}
html[data-inactive="true"] *{animation-play-state:paused}

/* inputs */
label.lbl{display:block;margin:0 0 4px;font:600 11px var(--font-label);text-transform:uppercase;letter-spacing:.1em;color:var(--fg-muted)}
.input,select,textarea{width:100%;height:40px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:rgba(0,0,0,.28);color:var(--fg);font:400 14px var(--font-body);transition:border-color 150ms var(--ease-out),box-shadow 150ms var(--ease-out)}
textarea{height:auto;min-height:140px;padding:10px 12px;resize:vertical;line-height:1.5}
.input::placeholder,textarea::placeholder{color:var(--fg-subtle)}
.input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-text);box-shadow:0 0 0 3px rgba(240,68,68,.15)}
select{background:var(--surface-2)}
.field{margin-bottom:12px}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.row>.grow{flex:1;min-width:140px}

/* panels */
.panel{border:1px solid var(--border);background:var(--surface-1);border-radius:var(--radius);box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 22px 44px -26px rgba(0,0,0,.85)}
.panel>header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}
.panel>header h3{font:600 12px var(--font-label);text-transform:uppercase;letter-spacing:.13em;color:var(--fg-muted);position:relative;padding-top:8px}
.panel>header h3::before{content:'';position:absolute;top:0;left:0;width:36px;height:2px;background:var(--accent)}
.panel .body{padding:16px}
.panel .list>*+*{border-top:1px solid var(--border)}
.stack>*+*{margin-top:16px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);font:500 12px var(--font-label);color:var(--fg-muted);white-space:nowrap}
.tag{font:600 10px var(--font-label);text-transform:uppercase;letter-spacing:.08em;padding:2px 6px;border-radius:2px;border:1px solid var(--border-2);color:var(--fg-muted)}
.tag.red{border-color:rgba(174,0,0,.6);color:var(--accent-text);background:rgba(174,0,0,.15)}
.tag.lead{border-color:rgba(245,158,11,.6);color:var(--warn)}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:var(--c,var(--fg-subtle))}
.dot.live{background:var(--accent-text);box-shadow:0 0 8px var(--accent-text)}
@media (prefers-reduced-motion:no-preference){.dot.live{animation:pulse 1.2s var(--ease-in-out) infinite}}
@keyframes pulse{50%{opacity:.5;transform:scale(.82)}}

/* header / footer */
.skip-link{position:fixed;left:1rem;top:.75rem;z-index:100;transform:translateY(-200%)}
.skip-link:focus-visible{transform:translateY(0)}
header.site{position:sticky;top:0;z-index:20;height:64px;display:flex;align-items:center;gap:28px;padding:0 20px;background:var(--bg);border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:10px;font:600 30px/1 var(--font-display);letter-spacing:.05em;text-transform:uppercase;color:var(--fg)!important;text-decoration:none!important}
.brand svg{filter:drop-shadow(0 4px 12px rgba(174,0,0,.45))}
.brand small{font:600 11px var(--font-label);letter-spacing:.13em;color:var(--fg-subtle);margin-left:4px}
nav.main{display:flex;gap:24px;flex:1;white-space:nowrap}
.who{white-space:nowrap}
nav.main a{font:600 14px var(--font-label);text-transform:uppercase;letter-spacing:.15em;color:var(--fg-muted);padding:20px 0;position:relative;text-decoration:none}
nav.main a:hover{color:var(--fg)}
nav.main a[aria-current="page"]{color:var(--fg)}
nav.main a[aria-current="page"]::after{content:'';position:absolute;left:0;right:0;bottom:14px;height:2px;background:var(--accent)}
nav.main .badge{background:var(--accent);color:#fff;border-radius:2px;font-size:10px;padding:1px 5px;margin-left:6px;letter-spacing:0}
.who{display:flex;align-items:center;gap:12px;font:500 13px var(--font-label);color:var(--fg-muted)}
.who b{color:var(--fg)}
main{flex:1;width:100%}
footer.site{border-top:4px solid var(--accent);margin-top:48px;padding:20px;color:var(--fg-subtle);font-size:12px}
footer.site .slogan{font:500 20px var(--font-display);text-transform:uppercase;color:var(--fg-muted);letter-spacing:.05em}

.banner{border-top:2px solid var(--accent);border-bottom:1px solid var(--border);background:linear-gradient(90deg,rgba(174,0,0,.14),transparent 55%),var(--surface-1);padding:24px 20px;min-height:140px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.wrap{max-width:1536px;margin:0 auto;padding:20px}

/* web view */
.webview{display:grid;grid-template-columns:1fr 340px;gap:16px;padding:16px 20px;max-width:1700px;margin:0 auto}
.graph{position:relative;height:calc(100vh - 150px);min-height:520px;overflow:hidden;background:rgba(0,0,0,.25)}
.graph svg{width:100%;height:100%;display:block;cursor:grab;touch-action:none}
.graph svg.panning{cursor:grabbing}
.graph .tools{position:absolute;top:10px;left:10px;display:flex;gap:6px;flex-wrap:wrap;z-index:2}
.graph .legend{position:absolute;bottom:10px;left:10px;display:flex;gap:12px;flex-wrap:wrap;padding:8px 12px;background:rgba(11,11,10,.78);border:1px solid var(--hair-strong);border-radius:var(--radius-sm);font:500 11px var(--font-label);text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted);z-index:2}
.graph .legend i{display:inline-block;width:18px;height:0;border-top:3px solid var(--c);vertical-align:middle;margin-right:5px}
.graph .legend .lg{background:none;border:0;padding:0;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}
.graph .legend .lg[aria-pressed="false"]{opacity:.4;text-decoration:line-through}
.node{cursor:pointer}
.node circle.body{fill:var(--surface-2);stroke:var(--border-2);stroke-width:2;transition:stroke 160ms var(--ease-out),fill 160ms var(--ease-out)}
.node:hover circle.body,.node.sel circle.body{stroke:var(--accent-text);fill:#2a1514}
.node text{font:600 11px var(--font-label);text-transform:uppercase;letter-spacing:.05em;fill:var(--fg);text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:#0b0b0a;stroke-width:3px}
.node text.sid{font-size:9px;fill:var(--fg-subtle);stroke-width:2px}
.node .pend{fill:var(--accent);stroke:#0b0b0a;stroke-width:2}
.node .pendt{font:700 9px var(--font-label);fill:#fff;stroke:none}
.edge{stroke-width:2.5;fill:none;cursor:pointer}
.edge-hit{stroke:transparent;stroke-width:14;fill:none;cursor:pointer}
.hull{stroke-linejoin:round;stroke-width:56;opacity:.13}
.hull-line{fill:none;stroke-dasharray:6 6;stroke-width:1.5;opacity:.7}
.hull-label{font:600 13px var(--font-label);text-transform:uppercase;letter-spacing:.13em;text-anchor:middle;pointer-events:none}
.side>*+*{margin-top:16px}
.roster .item{padding:10px 16px;display:flex;flex-direction:column;gap:4px}
.roster .item .name{font:600 13px var(--font-label);text-transform:uppercase;letter-spacing:.06em;display:flex;gap:8px;align-items:center}
.pick{margin:4px 4px 0 0;cursor:pointer}
.standby{text-align:center;padding:36px 16px;color:var(--fg-muted)}
.standby .t{font:600 12px var(--font-label);text-transform:uppercase;letter-spacing:.1em;margin:8px 0 4px}
.standby .b{font-size:12px;color:var(--fg-subtle);max-width:260px;margin:0 auto}
.standby.dashed{border:2px dashed var(--border);border-radius:var(--radius)}
.inspector{border-left:2px solid var(--accent)}

/* dossier */
.dossier{display:grid;grid-template-columns:1fr 360px;gap:16px}
dl.kv{display:grid;grid-template-columns:130px 1fr;gap:10px 14px;margin:0}
dl.kv dt{font:600 11px var(--font-label);text-transform:uppercase;letter-spacing:.1em;color:var(--fg-subtle);padding-top:2px}
dl.kv dd{margin:0;white-space:pre-wrap}
table.t{width:100%;border-collapse:collapse}
table.t th{font:600 11px var(--font-label);text-transform:uppercase;letter-spacing:.1em;color:var(--fg-subtle);text-align:left;padding:8px 12px;border-bottom:1px solid var(--border)}
table.t td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}
tr.rep{cursor:pointer} tr.rep:hover td{background:var(--surface-2)}
.repnum{font:600 20px var(--font-display);letter-spacing:.05em;color:var(--accent-text)}
.relrow{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px}

/* report */
.reportbody{white-space:pre-wrap;word-break:break-word;font-size:15px;line-height:1.65}
mark.hl{background:rgba(240,68,68,.28);color:var(--fg);outline:1px solid rgba(240,68,68,.7);padding:1px 2px;border-radius:2px}
mark.hl-dim{background:rgba(245,158,11,.14);color:inherit;border-radius:2px;padding:1px 2px}
.shots{display:flex;gap:10px;flex-wrap:wrap}
.shots a img,.shots img{max-height:220px;max-width:100%;border:1px solid var(--border-2);border-radius:var(--radius-sm);display:block}
.thumb{position:relative}
.thumb button{position:absolute;top:4px;right:4px}
.sug{border-left:2px solid var(--accent);padding:14px 16px}
.sug .quote{margin:10px 0;padding:8px 12px;background:rgba(0,0,0,.3);border:1px solid var(--border);border-radius:var(--radius-sm);font-style:italic;color:var(--fg-muted)}
.sug .acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sug.done{opacity:.6;border-left-color:var(--border-2)}
.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:12px;color:var(--fg-subtle);font-size:12px}
.dropzone.over{border-color:var(--accent-text)}

/* audit */
.act{font:600 10px var(--font-label);text-transform:uppercase;letter-spacing:.06em}
details.diff pre{margin:6px 0 0;padding:8px;background:rgba(0,0,0,.35);border:1px solid var(--border);border-radius:2px;white-space:pre-wrap;font:12px ui-monospace,Consolas,monospace;color:var(--fg-muted)}
details summary{cursor:pointer;color:var(--fg-subtle);font-size:12px}

/* dialog / toast / auth */
dialog{background:var(--surface-1);color:var(--fg);border:1px solid var(--border);border-radius:12px;padding:0;width:min(560px,94vw);box-shadow:0 24px 80px #0009}
dialog::backdrop{background:#000a}
dialog[open]{animation:pop-in 200ms var(--ease-out)}
dialog form>header{padding:16px 20px;border-bottom:1px solid var(--border)}
dialog form>.body{padding:16px 20px;max-height:70vh;overflow:auto}
dialog form>footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}
#toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:50}
.toast{background:var(--surface-2);border:1px solid var(--border-2);border-left:3px solid var(--accent);padding:10px 14px;border-radius:var(--radius-sm);max-width:380px;animation:pop-in 180ms var(--ease-out)}
.toast.err{border-left-color:var(--bad)}
.auth{max-width:420px;margin:8vh auto}
.auth .tabs{display:flex;border-bottom:1px solid var(--border)}
.auth .tabs button{flex:1;background:none;border:0;border-bottom:2px solid transparent;color:var(--fg-muted);padding:14px;font:600 13px var(--font-label);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;margin-bottom:-1px}
.auth .tabs button[aria-selected="true"]{color:var(--fg);border-bottom-color:var(--accent-text)}
.err-text{color:var(--bad);font-size:13px;min-height:18px}

@media (max-width:1000px){.webview,.dossier{grid-template-columns:1fr}.graph{height:70vh}header.site{gap:14px;overflow-x:auto}.h1{font-size:38px}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* org tabs */
.orgtabs{display:flex;gap:28px;padding:0 20px;border-bottom:1px solid var(--border);background:var(--bg);overflow-x:auto}
.orgtabs a{font:600 14px var(--font-label);text-transform:uppercase;letter-spacing:.15em;color:var(--fg-muted);padding:14px 0;position:relative;text-decoration:none;white-space:nowrap}
.orgtabs a:hover{color:var(--fg)}
.orgtabs a[aria-current="page"]{color:var(--fg)}
.orgtabs a[aria-current="page"]::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent)}
.orgtabs .count{font:600 11px var(--font-label);background:var(--surface-2);border-radius:2px;padding:1px 6px;margin-left:4px;letter-spacing:0}

/* inline edit */
dl.kv dd{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
dl.kv dd .val{flex:1;min-width:0;white-space:pre-wrap}
dl.kv dd>input,dl.kv dd>select,dl.kv dd>textarea{flex-basis:100%}
.edit-btn{opacity:.55;transition:opacity 160ms var(--ease-out)}
dl.kv dd:hover .edit-btn,.edit-btn:focus-visible{opacity:1}
.linkrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 16px}
.linkrow .grow{flex:1;min-width:100px}
.linknote{flex-basis:100%;padding-left:16px;font-size:12px}
.chip .x{background:none;border:0;color:var(--fg-subtle);cursor:pointer;font:inherit;padding:0 2px}
.chip .x:hover{color:var(--accent-text)}

/* confidence tags: status hues, red stays reserved for action */
.tag.conf-confirmed{border-color:rgba(34,197,94,.6);color:var(--good)}
.tag.conf-probable{border-color:rgba(56,189,248,.6);color:#38bdf8}
.tag.conf-unconfirmed{color:var(--fg-muted)}
.tag.conf-rumour{border-color:rgba(245,158,11,.6);color:var(--warn);border-style:dashed}

/* home org + locked nodes on the web */
.node.home circle.body{stroke:var(--accent-text);stroke-width:3;fill:#2a1514}
.node .locked{font-size:11px;stroke:none;text-anchor:middle}

/* narrower windows: keep the header on one row */
@media (max-width:1250px){header.site{gap:14px;padding:0 12px}header.site .brand small{display:none}nav.main{gap:14px}nav.main a{font-size:12px;letter-spacing:.1em}.who{gap:8px}.who .tag:nth-of-type(2){display:none}}

/* org logo + tags */
.bannerhead{display:flex;gap:18px;align-items:flex-end}
.orglogo{width:84px;height:84px;object-fit:cover;border:1px solid var(--border-2);border-radius:var(--radius-sm);background:var(--surface-2)}
.tagchip{color:var(--fg);background:var(--surface-2);text-transform:none}

/* org chart */
.chart{position:relative;display:flex;flex-direction:column;gap:28px;padding:8px 4px 16px;overflow-x:auto}
.chart-lines{position:absolute;left:0;top:0;pointer-events:none;z-index:0}
.tier{position:relative;z-index:1}
.tier-label{font:600 11px var(--font-label);text-transform:uppercase;letter-spacing:.13em;color:var(--fg-subtle);margin-bottom:8px;position:relative;padding-left:12px}
.tier-label::before{content:'';position:absolute;left:0;top:50%;width:6px;height:2px;background:var(--accent)}
.tier-row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.mcard{display:flex;flex-direction:column;gap:2px;min-width:120px;padding:10px 14px;background:var(--surface-2);border:1px solid var(--border-2);border-left:3px solid var(--accent);border-radius:var(--radius-sm);text-align:left}
.mcard b{font:600 13px var(--font-label);text-transform:uppercase;letter-spacing:.06em}
.mcard span{font-size:12px;color:var(--fg-muted)}
