/* ch-bridge.css — The Bridge (CEO Command Center) premium design system.
   Dark, sovereign, calm. CH green. WCAG AA contrast. 8pt rhythm. */
:root{
  --bg:#05080b; --bg2:#0a1014; --surface:#0e1620; --surface2:#121d29;
  --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.14);
  --ink:#eaf2f0; --ink-dim:#aebcbd; --ink-faint:#8597a0;
  --green:#3DDC97; --green-bright:#7BE0C6; --green-deep:#0F6B4A;
  --warn:#F4B740; --bad:#FF6B6B; --good:#3DDC97; --info:#5BA8FF;
  --r:16px; --r-sm:10px; --sp:8px;
  --shadow:0 1px 0 rgba(255,255,255,.04) inset, 0 18px 40px -24px rgba(0,0,0,.8);
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  background:
    radial-gradient(1200px 700px at 50% -200px, rgba(61,220,151,.10), transparent 60%),
    radial-gradient(900px 600px at 90% 10%, rgba(91,168,255,.06), transparent 55%),
    var(--bg);
  color:var(--ink); font-family:var(--font); -webkit-font-smoothing:antialiased;
  line-height:1.5; min-height:100vh;
}
a{color:var(--green-bright);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1360px;margin:0 auto;padding:24px 28px 80px}

/* top bar */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:16px 0 8px;border-bottom:1px solid var(--line);margin-bottom:8px}
.brand{display:flex;align-items:center;gap:12px;font-weight:700;letter-spacing:.14em;font-size:13px;color:var(--ink)}
.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 16px var(--green)}
.topbar .meta{font-size:12px;color:var(--ink-faint);display:flex;gap:18px;align-items:center}
.freshness{display:inline-flex;align-items:center;gap:7px}
.freshness .pulse{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green);animation:pulse 2.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.crumbs{font-size:12px;color:var(--ink-faint);margin:14px 0 2px}
.crumbs a{color:var(--ink-dim)}

/* hero orb + axes */
.hero{position:relative;width:440px;height:440px;margin:26px auto 8px}
.hero img.orb{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:290px;height:290px;
  filter:drop-shadow(0 0 70px rgba(61,220,151,.40))}
.hero .score{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}
.hero .score .lbl{font-size:12px;letter-spacing:.18em;color:var(--green-bright);font-weight:600}
.hero .score .val{font-size:46px;font-weight:800;color:#fff;line-height:1.05;margin-top:4px}
.hero .score .sub{font-size:11px;color:var(--ink-faint);margin-top:2px}
.axis{position:absolute;transform:translate(-50%,-50%);font-size:12px;font-weight:700;color:var(--green-bright);
  letter-spacing:.1em;padding:3px 7px;border-radius:999px;background:rgba(5,8,11,.55);border:1px solid rgba(61,220,151,.22);
  backdrop-filter:blur(2px)}
.axis small{display:block;color:var(--ink-faint);font-weight:500;font-size:10px;letter-spacing:0}

/* live ops strip */
.ops{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:18px 0 28px}
.ops .kpi{background:linear-gradient(180deg,var(--surface),var(--bg2));border:1px solid var(--line);
  border-radius:var(--r-sm);padding:16px 16px 14px;position:relative;overflow:hidden}
.ops .kpi .k{font-size:11px;letter-spacing:.1em;color:var(--ink-faint);text-transform:uppercase}
.ops .kpi .v{font-size:30px;font-weight:750;margin-top:6px;color:#fff}
.ops .kpi .d{font-size:11px;margin-top:4px;color:var(--ink-faint)}
.ops .kpi.ok::after,.ops .kpi.warn::after,.ops .kpi.bad::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}
.ops .kpi.ok::after{background:var(--good)} .ops .kpi.warn::after{background:var(--warn)} .ops .kpi.bad::after{background:var(--bad)}

/* section heading */
.sec-h{display:flex;align-items:baseline;justify-content:space-between;margin:30px 0 12px}
.sec-h h2{font-size:15px;letter-spacing:.04em;margin:0;color:var(--ink)}
.sec-h .hint{font-size:12px;color:var(--ink-faint)}

/* directory grid */
.dir{display:grid;grid-template-columns:repeat(auto-fill,minmax(246px,1fr));gap:18px}
.card{display:block;background:linear-gradient(180deg,var(--surface),var(--bg2));border:1px solid rgba(61,220,151,.16);
  border-radius:var(--r);padding:20px;box-shadow:var(--shadow);transition:transform .14s ease,border-color .14s ease,box-shadow .14s}
.card:hover{transform:translateY(-3px);border-color:rgba(61,220,151,.5);text-decoration:none;box-shadow:0 18px 46px -22px rgba(61,220,151,.25)}
.card .ct{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.card .ct h3{margin:0;font-size:15px;color:var(--ink);letter-spacing:.02em}
.card .big{font-size:34px;font-weight:780;color:#fff;line-height:1}
.card .big small{font-size:14px;color:var(--ink-dim);font-weight:600}
.card .row{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-dim);padding:6px 0;border-top:1px solid var(--line)}
.card .row b{color:var(--ink);font-weight:650}
.card .go{margin-top:14px;font-size:12px;color:var(--green-bright);display:flex;align-items:center;gap:6px}

/* status pill */
.pill{font-size:10px;font-weight:700;letter-spacing:.08em;padding:3px 9px;border-radius:999px;text-transform:uppercase}
.pill.live{background:rgba(61,220,151,.14);color:var(--green-bright);border:1px solid rgba(61,220,151,.4)}
.pill.partial{background:rgba(244,183,64,.12);color:var(--warn);border:1px solid rgba(244,183,64,.4)}
.pill.wiring{background:rgba(133,151,160,.12);color:var(--ink-dim);border:1px solid var(--line2)}
.pill.thin{background:rgba(244,183,64,.12);color:var(--warn);border:1px solid rgba(244,183,64,.4)}

/* domain detail tables */
.panel{background:linear-gradient(180deg,var(--surface),var(--bg2));border:1px solid var(--line);
  border-radius:var(--r);padding:22px;margin-bottom:18px}
table.t{width:100%;border-collapse:collapse;font-size:13px}
table.t th{text-align:left;color:var(--ink-faint);font-weight:600;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;padding:8px 10px;border-bottom:1px solid var(--line2)}
table.t td{padding:9px 10px;border-bottom:1px solid var(--line);color:var(--ink-dim)}
table.t tr:hover td{background:rgba(255,255,255,.02)}
.wiring-note{font-size:13px;color:var(--ink-faint);font-style:italic;margin-top:6px}
.empty{color:var(--ink-faint);font-size:13px}

/* companions dock */
.dock{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:10px;z-index:40}
.comp{display:flex;align-items:center;gap:10px;background:linear-gradient(180deg,var(--surface2),var(--surface));
  border:1px solid var(--line2);border-radius:999px;padding:9px 16px 9px 10px;cursor:pointer;box-shadow:var(--shadow);
  transition:transform .12s}
.comp:hover{transform:translateX(-4px);border-color:var(--green)}
.comp .av{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:14px;
  background:radial-gradient(circle at 35% 30%,var(--green-bright),var(--green-deep));color:#04130c;font-weight:800}
.comp .nm{font-size:13px;color:var(--ink);font-weight:600;line-height:1.1}
.comp .nm small{display:block;color:var(--ink-faint);font-weight:500;font-size:11px}

/* companion panel */
.cpanel{position:fixed;right:18px;bottom:18px;width:380px;max-width:calc(100vw - 36px);height:520px;max-height:calc(100vh - 36px);
  background:linear-gradient(180deg,var(--surface2),var(--bg2));border:1px solid var(--line2);border-radius:18px;
  box-shadow:0 30px 80px -30px #000;display:none;flex-direction:column;z-index:50;overflow:hidden}
.cpanel.open{display:flex}
.cpanel header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.cpanel header .x{margin-left:auto;cursor:pointer;color:var(--ink-faint);font-size:18px;background:none;border:none}
.cpanel .body{flex:1;overflow:auto;padding:16px;font-size:14px;color:var(--ink-dim)}
.cpanel .msg{margin-bottom:12px}.cpanel .msg.ai{color:var(--ink)}
.cpanel .ask{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}
.cpanel .ask input{flex:1;background:var(--bg);border:1px solid var(--line2);border-radius:10px;color:var(--ink);padding:10px 12px;font-size:13px}
.cpanel .ask button{background:var(--green);color:#04130c;border:none;border-radius:10px;padding:0 16px;font-weight:700;cursor:pointer}
/* chat box: draggable (unpin), resizable, expandable; X returns it to the pinned corner */
.cpanel header{cursor:move;user-select:none}
.cpanel header .expand{margin-left:auto;cursor:pointer;color:var(--ink-faint);background:none;border:none;font-size:15px;line-height:1}
.cpanel header .x{margin-left:8px}
.cpanel.big{width:min(660px,calc(100vw - 36px));height:min(88vh,900px)}
.cpanel .grip{position:absolute;left:0;top:0;width:18px;height:18px;cursor:nwse-resize;z-index:3}
.cpanel .grip::before{content:"";position:absolute;left:4px;top:4px;width:9px;height:9px;border-left:2px solid var(--line2);border-top:2px solid var(--green)}

footer.fm{margin-top:48px;padding-top:18px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;font-size:12px;color:var(--ink-faint)}
:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px;border-radius:6px}
/* constellation filament data-pulse */
.constel-dot{animation:dotpulse 3.2s ease-in-out infinite}
@keyframes dotpulse{0%,100%{opacity:.35;r:3}50%{opacity:1;r:4.5}}
@media (prefers-reduced-motion:reduce){.constel-dot{animation:none;opacity:.8}}
/* click-to-read detail modal */
table.t tbody tr[data-detail]:hover td{background:rgba(61,220,151,.06)}
.detail-ov{position:fixed;inset:0;background:rgba(2,5,8,.74);display:none;z-index:60;align-items:center;justify-content:center;padding:24px}
.detail-ov.open{display:flex}
.detail-card{background:linear-gradient(180deg,var(--surface2),var(--bg2));border:1px solid var(--line2);border-radius:16px;max-width:660px;width:100%;max-height:84vh;overflow:auto;box-shadow:0 30px 80px -30px #000}
.detail-card header{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface2);z-index:1}
.detail-card header h3{margin:0;font-size:15px;color:var(--ink)}
.detail-card header .x{margin-left:auto;cursor:pointer;background:none;border:none;color:var(--ink-faint);font-size:18px}
.detail-card .kv{display:flex;gap:14px;padding:11px 18px;border-bottom:1px solid var(--line);font-size:13px}
.detail-card .kv .k{color:var(--ink-faint);min-width:150px;text-transform:capitalize}
.detail-card .kv .v{color:var(--ink);flex:1;word-break:break-word}
.det-actions{padding:16px 18px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.det-actions button{cursor:pointer;border-radius:10px;padding:10px 16px;font-size:13px;font-weight:600;border:1px solid var(--line2)}
.det-actions .act-iris{background:rgba(46,213,160,.10);color:var(--green-bright);border-color:rgba(46,213,160,.35)}
.det-actions .act-iris:hover{background:rgba(46,213,160,.18)}
.det-actions .act-appr{background:linear-gradient(180deg,#13241c,#0d1a14);color:#eafff5}
.det-actions .act-appr:hover{border-color:var(--green-bright)}
.det-actions .act-note{flex-basis:100%;margin:2px 0 0;font-size:11.5px;color:var(--ink-faint);line-height:1.5}
.det-actions .act-note.ok{color:var(--green-bright)} .det-actions .act-note.warn{color:#e8c37a}
.det-actions .act-note code{color:var(--green-bright)}

/* ---- D2: Approval Dossier modal (all classes d- prefixed; lifted from cmo-command-center.html). */
.d-ov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.66);z-index:60;padding:32px 20px;overflow:auto}
.d-ov.d-open{display:block}
.d-modal{max-width:920px;margin:0 auto;background:#06180e;border:1px solid rgba(61,220,151,.35);border-radius:16px;padding:22px 26px;color:var(--ink, #cfeede)}
.d-hdr{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid rgba(61,220,151,.25);padding-bottom:14px;margin-bottom:8px;gap:14px}
.d-hdr-left{flex:1;min-width:0}
.d-hdr-right{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.d-id{color:var(--ink-dim, #7fb89e);font-size:11px;letter-spacing:1px}
.d-title{font-size:18px;font-weight:800;color:#fff;margin-top:2px;word-break:break-word}
.d-sub{color:var(--ink-dim, #7fb89e);font-size:12px;margin-top:8px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.d-sub-text{color:var(--ink-dim, #7fb89e)}
.d-pill{font-size:11px;background:rgba(230,180,60,.15);color:#e6b43c;border-radius:20px;padding:4px 11px;border:1px solid rgba(230,180,60,.4);font-weight:700;letter-spacing:.05em}
.d-close{cursor:pointer;background:transparent;border:1px solid rgba(127,184,150,.25);color:var(--ink-dim, #7fb89e);font:inherit;font-size:12px;border-radius:8px;padding:6px 10px}
.d-close:hover{color:#fff;border-color:var(--green-bright)}
.d-chainpill{cursor:pointer;background:rgba(61,220,151,.08);color:var(--green-bright);border:1px solid rgba(61,220,151,.3);border-radius:20px;padding:3px 10px;font:inherit;font-size:11px;font-weight:600}
.d-chainpill[data-state="verifying"]{opacity:.65;cursor:wait}
.d-chainpill[data-state="verified"]{background:rgba(61,220,151,.18);color:#7CFFC4;border-color:rgba(124,255,196,.5)}
.d-chainpill[data-state="failed"]{background:rgba(255,90,90,.15);color:#ff9d9d;border-color:rgba(255,90,90,.5)}
.d-body{min-height:80px}
.d-loading{padding:42px;text-align:center;color:var(--ink-dim, #7fb89e);font-size:13px}
.d-err{padding:32px;text-align:center}
.d-err-title{color:#e6b43c;font-weight:800;font-size:15px;margin-bottom:6px}
.d-err-msg{color:var(--ink, #cfeede);font-size:13px;margin-bottom:14px}
.d-err-btn{cursor:pointer;background:transparent;color:var(--green-bright);border:1px solid rgba(61,220,151,.4);border-radius:10px;padding:8px 16px;font:inherit;font-weight:600}
.d-sec{margin:16px 0}
.d-sech{color:var(--green-bright);font-size:12px;letter-spacing:1px;font-weight:700;margin-bottom:8px;text-transform:uppercase}
.d-sech-warn{color:#e6b43c}
.d-byline{color:var(--ink-dim, #7fb89e);font-size:11px;font-weight:400;text-transform:none;letter-spacing:0;margin-left:8px}
.d-doc{color:var(--ink, #cfeede);line-height:1.7;font-size:14px}
.d-warn{color:#e6b43c}
.d-arts{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.d-art{color:var(--green-bright);text-decoration:none;font-size:12px;background:rgba(61,220,151,.08);border:1px solid rgba(61,220,151,.2);border-radius:7px;padding:5px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.d-art-muted{color:var(--ink-dim, #7fb89e);background:transparent}
.d-diffsum{color:var(--ink-dim, #7fb89e);font-size:12px;margin-top:6px}
.d-steplist{margin:8px 0 0;padding-left:22px}
.d-steplist li{margin:6px 0;color:var(--ink, #cfeede);font-size:13px}
.d-stepargs{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:var(--ink-dim, #7fb89e)}
.d-stepverify{font-size:11px;color:var(--ink-dim, #7fb89e);margin-top:2px}
.d-impactgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.d-ig-k{color:var(--ink-dim, #7fb89e);font-size:11px}
.d-ig-v{color:#fff;font-weight:600;font-size:13px;word-break:break-word}
.d-sec.d-legal{background:rgba(120,160,255,.05);border:1px solid rgba(140,170,255,.25);border-radius:12px;padding:14px 16px}
.d-sec.d-legal .d-sech{color:#9db8ff}
.d-sec.d-why{background:rgba(61,220,151,.04);border-radius:12px;padding:14px 16px}
.d-prov{display:flex;flex-direction:column;gap:0}
.d-pstep{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.d-pnum{width:24px;height:24px;border-radius:50%;background:var(--green-bright);color:#04130c;font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.d-pbody b{color:#fff}
.d-pbody{color:var(--ink, #cfeede);font-size:13px;line-height:1.55}
.d-flist{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.d-frole{font-size:10px;color:var(--green-bright);background:rgba(61,220,151,.1);border-radius:5px;padding:2px 6px}
.d-frole.d-warn{color:#e6b43c;background:rgba(230,180,60,.12)}
.d-reasons{margin:6px 0 0;padding-left:22px}
.d-reasons li{margin:4px 0;color:var(--ink, #cfeede);font-size:13px}
.d-reasons li.d-warn{color:#e6b43c}
.d-signbar{margin-top:22px;padding-top:18px;border-top:1px solid rgba(61,220,151,.2);display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.d-readfirst{color:#e6b43c;font-size:12px;flex:1;min-width:200px}
.d-signbtn{cursor:pointer;background:var(--green-bright);color:#04130c;border:none;border-radius:10px;padding:12px 20px;font:inherit;font-weight:800}
.d-signbtn:hover{filter:brightness(1.06)}
.d-sendback{cursor:pointer;background:transparent;color:#e6b43c;border:1px solid rgba(230,180,60,.5);border-radius:10px;padding:12px 18px;font:inherit;font-weight:700}
.d-sendback:hover{background:rgba(230,180,60,.08)}
.d-stamp{margin-top:10px;font-size:10px;color:#5f8a76;text-align:center}
.d-act-note{padding:14px 16px;margin:0;font-size:13px;color:var(--ink-dim, #7fb89e);line-height:1.55}
.d-act-note.ok{color:var(--green-bright)}
.d-act-note.ok a{color:var(--green-bright)}
.d-act-note.warn{color:#e6b43c}
.d-ov button:focus-visible,.d-ov a:focus-visible{outline:2px solid var(--green-bright);outline-offset:2px}
@media (max-width:640px){
  .d-ov{padding:8px}
  .d-modal{padding:14px}
  .d-hdr{flex-direction:column;align-items:stretch}
  .d-hdr-right{text-align:left;align-items:flex-start}
  .d-impactgrid{grid-template-columns:1fr}
  .d-signbar{flex-direction:column;align-items:stretch}
  .d-signbtn{order:-1}
}
