/* ============================================================
   vh-cg.css — loaded ONLY by code-security.html.
   Two product windows in the CodeGuard/VenusHawk app dark theme:
   (A) an AppSec posture dashboard, and (B) an interactive agentic
   "crew" investigation chat console. Every selector is cg- prefixed;
   no shared class is restyled, so no other page is affected.
   ============================================================ */

/* ---------- scoped product palette (deep carbon) ---------- */
.cg-win{--cg-bg:#070709;--cg-panel:#101014;--cg-panel2:#17171C;--cg-code:#0A0A0D;--cg-line:rgba(255,255,255,0.1);--cg-line2:rgba(255,255,255,0.2);--cg-accent:#3B82F6;--cg-accentink:#60A5FA;--cg-mint:#3FEFA8;--cg-mintink:#5CF3B8;--cg-purple:#C69BFF;--cg-crit:#FF5F5F;--cg-high:#FF9A3C;--cg-med:#F7CA3E;--cg-low:#46D98A;--cg-info:#6366F1;--cg-head:#F5F5F8;--cg-txt:#C7C7CE;--cg-mut:#8E8E97}

/* ---------- window frame ---------- */
.cg-win{margin-top:var(--s-6);border:1px solid var(--line-2);border-radius:18px;background:var(--cg-bg);overflow:hidden;color:var(--cg-txt);box-shadow:0 30px 80px -30px rgba(0,0,0,0.85),0 0 70px -34px rgba(59,130,246,0.4)}
.cg-win__chrome{display:flex;align-items:center;gap:0.8rem;padding:0.7rem var(--s-5);border-bottom:1px solid var(--cg-line);background:#0A0A0D;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.1em;text-transform:uppercase;color:var(--cg-mut)}
.cg-dots{display:inline-flex;gap:0.34rem;flex:none}
.cg-dots i{width:9px;height:9px;border-radius:50%}
.cg-dots i:nth-child(1){background:#FE5F57}
.cg-dots i:nth-child(2){background:#FEBC2E}
.cg-dots i:nth-child(3){background:#28C840}
.cg-url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cg-live{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:0.45rem;color:var(--cg-mintink);font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.14em;text-transform:uppercase}
.cg-live::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--cg-mintink);animation:cg-pulse 2.2s ease-out infinite}
.cg-note{margin-top:var(--s-3);font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.16em;text-transform:uppercase;color:var(--txt-mut)}
.cg-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
@keyframes cg-pulse{0%{box-shadow:0 0 0 0 rgba(92,243,184,0.5)}70%{box-shadow:0 0 0 7px rgba(92,243,184,0)}100%{box-shadow:0 0 0 0 rgba(92,243,184,0)}}

/* ==========================================================
   A. AppSec posture dashboard
   ========================================================== */
.cg-hero{position:relative;display:grid;grid-template-columns:1fr auto;gap:var(--s-5);align-items:center;padding:var(--s-5);border-bottom:1px solid var(--cg-line);overflow:hidden}
.cg-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 120% at 8% 0%,rgba(59,130,246,0.09),transparent 60%),radial-gradient(50% 110% at 92% 100%,rgba(198,155,255,0.07),transparent 60%);pointer-events:none}
.cg-hero__copy{position:relative;display:grid;gap:0.55rem}
.cg-eyebrow{display:inline-flex;align-items:center;gap:0.5rem;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.16em;text-transform:uppercase;color:var(--cg-mut)}
.cg-livedot{width:6px;height:6px;border-radius:50%;background:var(--cg-mintink);animation:cg-pulse 2.2s ease-out infinite}
.cg-hero__t{margin:0;font-size:1.25rem;font-weight:600;letter-spacing:-0.02em;color:var(--cg-head);max-width:34ch}
.cg-hero__t em{font-style:normal;color:var(--cg-high)}
.cg-hero__sub{display:flex;flex-wrap:wrap;gap:var(--s-4);font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.12em;text-transform:uppercase;color:var(--cg-mut)}
.cg-hero__sub b{color:var(--cg-head);margin-right:0.35rem;font-size:0.85rem}
.cg-ring{position:relative;z-index:1;display:grid;justify-items:center;gap:0.4rem;width:170px}
.cg-ring__wrap{position:relative;width:120px}
.cg-ring__wrap svg{width:100%;display:block}
.cg-ring__bg{fill:none;stroke:rgba(255,255,255,0.1);stroke-width:5.4}
.cg-ring__v{fill:none;stroke:var(--cg-high);stroke-width:5.4;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset 1.3s var(--ease) 0.1s;filter:drop-shadow(0 0 8px rgba(255,154,60,0.4))}
.cg-ring.is-on .cg-ring__v{stroke-dashoffset:28}
.cg-ring__c{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.cg-ring__n{font-family:var(--font-mono);font-size:1.6rem;font-weight:600;letter-spacing:-0.02em;color:var(--cg-head);line-height:1}
.cg-ring__s{font-family:var(--font-mono);font-size:var(--t-2xs);color:var(--cg-mut)}
.cg-ring__l{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.16em;text-transform:uppercase;color:var(--cg-mut)}

.cg-kpis{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--cg-line)}
.cg-kpi{position:relative;display:grid;gap:0.28rem;align-content:start;padding:var(--s-4) var(--s-5);border-right:1px solid var(--cg-line);min-width:0}
.cg-kpi:last-child{border-right:0}
.cg-kpi::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--cg-accent),transparent 70%);opacity:0.6}
.cg-kpi--hot::before{background:linear-gradient(90deg,var(--cg-crit),transparent 70%)}
.cg-kpi--mint::before{background:linear-gradient(90deg,var(--cg-mint),transparent 70%)}
.cg-kpi--purple::before{background:linear-gradient(90deg,var(--cg-purple),transparent 70%)}
.cg-kpi__l{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.14em;text-transform:uppercase;color:var(--cg-mut)}
.cg-kpi>b{font-family:var(--font-mono);font-size:1.5rem;font-weight:600;letter-spacing:-0.02em;color:var(--cg-head);line-height:1.1;font-variant-numeric:tabular-nums}
.cg-kpi--hot>b{color:#ffb3a6}
.cg-kpi__d{position:absolute;top:calc(var(--s-4) - 0.1rem);right:var(--s-4);font-family:var(--font-mono);font-size:var(--t-2xs);padding:0.1rem 0.42rem;border-radius:100px;border:1px solid}
.cg-bad{color:var(--cg-crit);border-color:rgba(255,95,95,0.32);background:rgba(255,95,95,0.08)}
.cg-up{color:var(--cg-mintink);border-color:rgba(63,239,168,0.32);background:rgba(63,239,168,0.08)}
.cg-kpi__f{font-size:var(--t-2xs);color:var(--cg-mut)}
.cg-spark{width:100%;height:20px;margin-top:0.25rem}
.cg-spark polyline{fill:none;stroke:var(--cg-accent);stroke-width:1.6;opacity:0.75;stroke-dasharray:130;stroke-dashoffset:130}
.cg-kpi--hot .cg-spark polyline{stroke:var(--cg-crit)}
.cg-kpi--mint .cg-spark polyline{stroke:var(--cg-mint)}
.cg-kpi--purple .cg-spark polyline{stroke:var(--cg-purple)}
.cg-app.is-in .cg-spark polyline{animation:cg-draw130 1.2s var(--ease) forwards}
.cg-kpi:nth-child(2) .cg-spark polyline{animation-delay:0.1s}
.cg-kpi:nth-child(3) .cg-spark polyline{animation-delay:0.2s}
.cg-kpi:nth-child(4) .cg-spark polyline{animation-delay:0.3s}
@keyframes cg-draw130{to{stroke-dashoffset:0}}

.cg-grid{display:grid;grid-template-columns:1fr 1.15fr;grid-template-areas:"sev cats" "sev feed" "trend trend"}
.cg-panel{padding:var(--s-4) var(--s-5);border-right:1px solid var(--cg-line);border-bottom:1px solid var(--cg-line);min-width:0}
.cg-panel--sev{grid-area:sev;border-bottom:0;display:flex;flex-direction:column}
.cg-heat{margin-top:auto;padding-top:var(--s-4)}
.cg-heat__h{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.14em;text-transform:uppercase;color:var(--cg-mut);margin-bottom:0.5rem}
.cg-heat__grid{display:grid;grid-template-columns:repeat(13,1fr);gap:3px}
.cg-heat__grid i{aspect-ratio:1;border-radius:2px;background:rgba(59,130,246,0.05);transition:background 0.7s var(--ease)}
@media (prefers-reduced-motion:reduce){.cg-heat__grid i{transition:none}}
.cg-panel--cats{grid-area:cats;border-right:0}
.cg-panel--feed{grid-area:feed;border-right:0;border-bottom:0;position:relative}
.cg-panel--trend{grid-area:trend;border-right:0;border-bottom:0;border-top:1px solid var(--cg-line)}
.cg-panel__h{display:flex;justify-content:space-between;align-items:center;gap:0.6rem;flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.14em;text-transform:uppercase;color:#B4B4BC;margin-bottom:var(--s-3)}
.cg-panel__m{color:var(--cg-mut);letter-spacing:0.1em}

.cg-donutwrap{display:grid;grid-template-columns:auto 1fr;gap:var(--s-4);align-items:center}
.cg-donut{position:relative;width:130px;flex:none}
.cg-donut svg{width:100%;display:block}
.cg-donut circle{fill:none;stroke-width:6.5;transition:opacity 0.3s var(--ease),stroke-width 0.3s var(--ease)}
.cg-app.is-in .cg-donut circle{animation:cg-seg 1s var(--ease) both}
.cg-donut circle:nth-of-type(2){animation-delay:0.09s}
.cg-donut circle:nth-of-type(3){animation-delay:0.18s}
.cg-donut circle:nth-of-type(4){animation-delay:0.27s}
.cg-donut circle:nth-of-type(5){animation-delay:0.36s}
@keyframes cg-seg{from{stroke-dasharray:0 100}}
.cg-donut[data-hl] circle{opacity:0.22}
.cg-donut[data-hl="a"] circle[data-k="a"],.cg-donut[data-hl="b"] circle[data-k="b"],.cg-donut[data-hl="c"] circle[data-k="c"],.cg-donut[data-hl="d"] circle[data-k="d"],.cg-donut[data-hl="e"] circle[data-k="e"]{opacity:1;stroke-width:8.4}
.cg-donut__c{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:0.1rem}
.cg-donut__c b{font-family:var(--font-mono);font-size:0.95rem;color:var(--cg-head)}
.cg-donut__c span{font-family:var(--font-mono);font-size:0.55rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--cg-mut)}
.cg-legend{list-style:none;margin:0;padding:0;display:grid;gap:0.4rem}
.cg-legend li{display:grid;grid-template-columns:10px 1fr auto auto;gap:0.55rem;align-items:center;font-size:0.82rem;color:var(--cg-txt);border-radius:6px;padding:0.1rem 0.25rem}
.cg-legend li[data-k]{cursor:default}
.cg-legend li:hover{background:rgba(255,255,255,0.05)}
.cg-legend i{width:9px;height:9px;border-radius:3px}
.cg-legend b{font-family:var(--font-mono);font-weight:500;color:var(--cg-head)}
.cg-legend .cg-pct{font-family:var(--font-mono);color:var(--cg-mut);font-size:var(--t-2xs)}

.cg-bars{display:grid;gap:0.6rem}
.cg-bar{display:grid;grid-template-columns:104px 1fr 32px;gap:0.6rem;align-items:center;font-size:0.8rem;color:var(--cg-txt)}
.cg-bar__t{height:8px;border-radius:100px;background:rgba(255,255,255,0.09);overflow:hidden}
.cg-bar__t i{display:block;height:100%;width:0;border-radius:100px;background:linear-gradient(90deg,var(--cg-accent),var(--cg-purple));transition:width 0.9s var(--ease)}
.cg-app.is-in .cg-bar__t i{width:var(--w)}
.cg-app.is-in .cg-bar:nth-child(2) .cg-bar__t i{transition-delay:0.08s}
.cg-app.is-in .cg-bar:nth-child(3) .cg-bar__t i{transition-delay:0.16s}
.cg-app.is-in .cg-bar:nth-child(4) .cg-bar__t i{transition-delay:0.24s}
.cg-app.is-in .cg-bar:nth-child(5) .cg-bar__t i{transition-delay:0.32s}
.cg-app.is-in .cg-bar:nth-child(6) .cg-bar__t i{transition-delay:0.4s}
.cg-bar b{font-family:var(--font-mono);font-weight:500;color:var(--cg-head);text-align:right}

.cg-feed{list-style:none;margin:0;padding:0;display:grid;gap:0.45rem;align-content:start;min-height:210px}
.cg-feed li{display:grid;grid-template-columns:auto 1fr auto;gap:0.6rem;align-items:baseline;font-size:0.83rem;color:var(--cg-txt);padding:0.42rem 0.5rem;border-radius:8px;background:rgba(255,255,255,0.03)}
.cg-feed li.is-new{animation:cg-slide 0.45s var(--ease)}
.cg-feed__tx{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cg-feed__tx .r{font-family:var(--font-mono);color:var(--cg-accentink)}
.cg-sevdot{width:8px;height:8px;border-radius:50%;align-self:center}
.cg-when{font-family:var(--font-mono);font-size:var(--t-2xs);color:var(--cg-mut);white-space:nowrap}
@keyframes cg-slide{from{opacity:0;transform:translateY(-9px)}}

.cg-trend svg{width:100%;height:auto;display:block}
.cg-trend__fill{opacity:0}
.cg-app.is-in .cg-trend__fill{animation:cg-fadein 0.9s var(--ease) 0.9s forwards}
.cg-trend__line{fill:none;stroke:var(--cg-accent);stroke-width:1.8;stroke-linejoin:round;stroke-dasharray:400;stroke-dashoffset:400}
.cg-app.is-in .cg-trend__line{animation:cg-draw400 1.6s var(--ease) 0.2s forwards}
.cg-trend__ax{font-family:var(--font-mono);font-size:4.2px;letter-spacing:0.08em;fill:var(--cg-mut)}
.cg-trend__gl{stroke:rgba(255,255,255,0.08);stroke-width:0.5}
@keyframes cg-draw400{to{stroke-dashoffset:0}}
@keyframes cg-fadein{to{opacity:1}}

/* ==========================================================
   B. Agentic crew chat console
   ========================================================== */
.cg-chat__head{display:flex;align-items:center;gap:0.7rem;padding:0.7rem var(--s-5);border-bottom:1px solid var(--cg-line);background:#0A0A0D}
.cg-avatar{flex:none;width:26px;height:26px;border-radius:8px;display:grid;place-content:center;font-family:var(--font-mono);font-weight:600;font-size:0.8rem;color:#cfe0ff;background:linear-gradient(135deg,rgba(59,130,246,0.4),rgba(198,155,255,0.35));border:1px solid rgba(59,130,246,0.4)}
.cg-repo{font-family:var(--font-mono);font-size:0.82rem;color:var(--cg-head)}
.cg-repo small{color:var(--cg-mut);margin-left:0.4rem}
.cg-crewstate{margin-left:auto;display:inline-flex;align-items:center;gap:0.45rem;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.12em;text-transform:uppercase;color:var(--cg-mut)}
.cg-crewstate::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--cg-mut)}
.cg-chat.is-running .cg-crewstate{color:var(--cg-mintink)}
.cg-chat.is-running .cg-crewstate::before{background:var(--cg-mintink);animation:cg-pulse 1.6s ease-out infinite}
.cg-model{flex:none;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.06em;color:#a9b7cd;border:1px solid var(--cg-line);border-radius:100px;padding:0.14rem 0.5rem}

.cg-thread{padding:var(--s-4) var(--s-5);display:grid;gap:var(--s-4);align-content:start;max-height:600px;overflow-y:auto;scroll-behavior:smooth}
.cg-thread::-webkit-scrollbar{width:8px}
.cg-thread::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.12);border-radius:8px}

/* user message */
.cg-umsg{justify-self:end;max-width:82%;padding:0.6rem 0.85rem;border-radius:14px 14px 4px 14px;background:rgba(59,130,246,0.12);border:1px solid rgba(59,130,246,0.28);color:#e8eefb;font-size:0.9rem;line-height:1.5}

/* crew run panel: phase pipeline + budget */
.cg-crew{border:1px solid var(--cg-line);border-radius:12px;background:var(--cg-panel);overflow:hidden}
.cg-crew__h{display:flex;align-items:center;gap:0.6rem;flex-wrap:wrap;padding:0.6rem 0.85rem;border-bottom:1px solid var(--cg-line);font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.1em;text-transform:uppercase;color:#B4B4BC}
.cg-crew__budget{margin-left:auto;display:flex;align-items:center;gap:0.5rem;color:var(--cg-mut)}
.cg-crew__meter{width:70px;height:5px;border-radius:100px;background:rgba(255,255,255,0.1);overflow:hidden}
.cg-crew__meter i{display:block;height:100%;width:2%;border-radius:100px;background:linear-gradient(90deg,var(--cg-accent),var(--cg-mint));transition:width 0.5s linear}
.cg-phases{display:flex;flex-wrap:wrap;gap:0.4rem;padding:0.7rem 0.85rem}
.cg-phase{display:inline-flex;align-items:center;gap:0.4rem;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.04em;color:var(--cg-mut);border:1px solid var(--cg-line);border-radius:100px;padding:0.2rem 0.55rem;transition:color 0.25s,border-color 0.25s,background 0.25s}
.cg-phase__d{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,0.2);flex:none}
.cg-phase[data-s="active"]{color:#cfe0ff;border-color:rgba(59,130,246,0.5);background:rgba(59,130,246,0.08)}
.cg-phase[data-s="active"] .cg-phase__d{background:var(--cg-accentink);animation:cg-pulse 1.2s ease-out infinite}
.cg-phase[data-s="done"]{color:#8fe9c4;border-color:rgba(63,239,168,0.3)}
.cg-phase[data-s="done"] .cg-phase__d{background:var(--cg-mintink)}

/* thinking trace */
.cg-think{border:1px solid var(--cg-line);border-radius:12px;background:rgba(255,255,255,0.02);overflow:hidden}
.cg-think__h{display:flex;align-items:center;gap:0.55rem;padding:0.6rem 0.85rem;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.08em;color:#B4B4BC}
.cg-pixel{display:grid;grid-template-columns:repeat(3,3px);grid-auto-rows:3px;gap:1.5px;flex:none}
.cg-pixel i{width:3px;height:3px;border-radius:1px;background:rgba(96,165,250,0.25)}
.cg-chat.is-running .cg-pixel i{animation:cg-pix 1.1s steps(1) infinite}
.cg-pixel i:nth-child(1){animation-delay:0s}.cg-pixel i:nth-child(2){animation-delay:.1s}.cg-pixel i:nth-child(3){animation-delay:.2s}.cg-pixel i:nth-child(4){animation-delay:.3s}.cg-pixel i:nth-child(5){animation-delay:.15s}.cg-pixel i:nth-child(6){animation-delay:.25s}.cg-pixel i:nth-child(7){animation-delay:.35s}.cg-pixel i:nth-child(8){animation-delay:.2s}.cg-pixel i:nth-child(9){animation-delay:.05s}
@keyframes cg-pix{0%,100%{background:rgba(96,165,250,0.25)}40%{background:var(--cg-accentink)}}
.cg-think__label{background:linear-gradient(90deg,#7a8699,#e8eefb,#7a8699);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.cg-chat.is-running .cg-think__label{animation:cg-shimmer 2s linear infinite}
@keyframes cg-shimmer{to{background-position:-200% 0}}
.cg-timer{margin-left:auto;font-family:var(--font-mono);color:var(--cg-mut)}
.cg-trace{list-style:none;margin:0;padding:0 0.85rem 0.7rem 1.5rem;display:grid;gap:0.4rem;position:relative}
.cg-trace::before{content:"";position:absolute;left:1rem;top:0.1rem;bottom:0.7rem;width:1px;background:var(--cg-line)}
.cg-trace li{position:relative;display:grid;grid-template-columns:auto 1fr;gap:0.55rem;align-items:baseline;font-size:0.8rem;color:var(--cg-txt);animation:cg-trfade 0.35s var(--ease)}
.cg-trace li .cg-tmark{position:absolute;left:-0.87rem;top:0.28rem;width:11px;height:11px;border-radius:50%;background:var(--cg-bg);border:1.5px solid var(--cg-line2);display:grid;place-content:center}
.cg-trace li[data-t="tool"] .cg-tmark{border-color:rgba(59,130,246,0.5)}
.cg-trace li.is-active .cg-tmark{border-color:transparent;border-top-color:var(--cg-accentink);border-right-color:var(--cg-accentink);animation:cg-spin 0.8s linear infinite}
.cg-trace li.is-done .cg-tmark{border-color:rgba(63,239,168,0.6);background:rgba(63,239,168,0.12)}
.cg-trace li.is-done .cg-tmark::after{content:"";width:4px;height:4px;border-radius:50%;background:var(--cg-mintink)}
.cg-trace__tx{font-family:var(--font-mono);min-width:0}
.cg-trace__tx .k{color:#9cc0ff;text-transform:uppercase;font-size:var(--t-2xs);letter-spacing:0.06em;margin-right:0.4rem}
.cg-trace__tx .a{color:var(--cg-head)}
.cg-trace__tx .m{color:var(--cg-mut);margin-left:0.4rem;font-size:var(--t-2xs)}
@keyframes cg-spin{to{transform:rotate(360deg)}}
@keyframes cg-trfade{from{opacity:0;transform:translateY(4px)}}

/* tool result card */
.cg-toolres{border:1px solid var(--cg-line);border-radius:10px;overflow:hidden;background:var(--cg-code)}
.cg-toolres__bar{display:flex;align-items:center;gap:0.5rem;padding:0.45rem 0.75rem;border-bottom:1px solid var(--cg-line);font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.04em;color:var(--cg-mut)}
.cg-toolres__bar .p{color:#9cc0ff;border:1px solid rgba(59,130,246,0.35);background:rgba(59,130,246,0.08);border-radius:5px;padding:0.05rem 0.3rem}
.cg-toolres pre{margin:0;padding:0.6rem 0.75rem;overflow-x:auto;font-family:var(--font-mono);font-size:0.72rem;line-height:1.6;color:var(--cg-txt)}
.cg-toolres .ln{display:inline-block;width:1.6em;color:var(--cg-mut);opacity:0.6;user-select:none}
.cg-toolres .cc{color:var(--cg-mut)}
.cg-toolres .ck{color:#c4b5fd}
.cg-toolres .cs{color:#8fe9c4}
.cg-toolres .hot{background:rgba(255,95,95,0.1);display:block;margin:0 -0.75rem;padding:0 0.75rem}

/* assistant prose */
.cg-amsg{font-size:0.9rem;line-height:1.6;color:var(--cg-txt)}
.cg-amsg b{color:var(--cg-head);font-weight:600}
.cg-amsg code{font-family:var(--font-mono);font-size:0.82em;color:#8fe9c4;background:rgba(63,239,168,0.08);border:1px solid rgba(63,239,168,0.15);border-radius:5px;padding:0.02em 0.32em}
.cg-caret{display:inline-block;width:6px;height:0.95em;background:var(--cg-accentink);vertical-align:-0.15em;margin-left:1px;animation:cg-blink 0.85s steps(1) infinite}
@keyframes cg-blink{50%{opacity:0}}

/* live finding card */
.cg-finding{border:1px solid var(--cg-line);border-left:2px solid var(--cg-crit);border-radius:10px;overflow:hidden;background:var(--cg-panel)}
.cg-finding__head{display:flex;flex-wrap:wrap;align-items:center;gap:0.55rem;padding:0.65rem 0.85rem}
.cg-sev{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.08em;text-transform:uppercase;padding:0.16rem 0.45rem;border-radius:6px;border:1px solid}
.cg-sev--crit{color:#ffb3a6;border-color:rgba(255,95,95,0.45);background:rgba(255,95,95,0.12)}
.cg-sev--high{color:#ffc487;border-color:rgba(255,154,60,0.42);background:rgba(255,154,60,0.1)}
.cg-finding__name{font-weight:600;color:var(--cg-head);font-size:0.9rem}
.cg-finding__loc{font-family:var(--font-mono);font-size:var(--t-2xs);color:var(--cg-mut);margin-left:auto}
.cg-finding__body{padding:0 0.85rem 0.85rem;display:grid;gap:var(--s-3)}
.cg-chips{display:flex;flex-wrap:wrap;gap:0.4rem}
.cg-chip{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.04em;text-transform:uppercase;padding:0.13rem 0.4rem;border-radius:6px;border:1px solid var(--cg-line);color:var(--cg-txt)}
.cg-chip--cwe{color:#dcc4ff;border-color:rgba(198,155,255,0.4);background:rgba(198,155,255,0.08)}
.cg-chip--reach{color:#8fe9c4;border-color:rgba(63,239,168,0.35);background:rgba(63,239,168,0.08)}
.cg-path{display:grid;grid-template-columns:1fr auto 1fr;gap:0.6rem;align-items:center}
.cg-node{border:1px solid var(--cg-line);border-radius:8px;padding:0.5rem 0.6rem;background:var(--cg-code);min-width:0}
.cg-node__k{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.1em;text-transform:uppercase;color:var(--cg-mut);display:block;margin-bottom:0.2rem}
.cg-node--src{border-color:rgba(255,154,60,0.3)}
.cg-node--src .cg-node__k{color:#ffc487}
.cg-node--sink{border-color:rgba(255,95,95,0.35)}
.cg-node--sink .cg-node__k{color:#ffb3a6}
.cg-node code{font-family:var(--font-mono);font-size:0.72rem;color:var(--cg-txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.cg-path__arrow{display:grid;justify-items:center;gap:0.15rem;font-family:var(--font-mono);font-size:0.5rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--cg-mut)}
.cg-path__arrow svg{width:22px;height:8px}
.cg-diff{border:1px solid var(--cg-line);border-radius:8px;overflow:hidden;background:var(--cg-code)}
.cg-diff__h{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.08em;text-transform:uppercase;color:var(--cg-mut);padding:0.4rem 0.7rem;border-bottom:1px solid var(--cg-line)}
.cg-diff pre{margin:0;padding:0.5rem 0.7rem;font-family:var(--font-mono);font-size:0.72rem;line-height:1.65;overflow-x:auto}
.cg-diff .del{color:#ffb3a6;background:rgba(255,95,95,0.08);display:block;margin:0 -0.7rem;padding:0 0.7rem}
.cg-diff .add{color:#8fe9c4;background:rgba(63,239,168,0.08);display:block;margin:0 -0.7rem;padding:0 0.7rem}
.cg-finding__acts{display:flex;flex-wrap:wrap;gap:0.5rem}
.cg-fact{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.05em;text-transform:uppercase;padding:0.3rem 0.6rem;border-radius:8px;border:1px solid var(--cg-line);color:var(--cg-txt);background:none;cursor:pointer;transition:border-color 0.2s,color 0.2s}
.cg-fact--pr{color:#cfe0ff;border-color:rgba(59,130,246,0.4);background:rgba(59,130,246,0.08)}
.cg-fact:hover{border-color:var(--cg-line2);color:var(--cg-head)}

/* follow-ups + composer */
.cg-followups{display:grid;gap:0.4rem}
.cg-followups__l{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.1em;text-transform:uppercase;color:var(--cg-mut)}
.cg-followups__row{display:flex;flex-wrap:wrap;gap:0.4rem}
.cg-composer{border-top:1px solid var(--cg-line);background:#0A0A0D;padding:0.7rem var(--s-5) var(--s-4)}
.cg-prompts{display:flex;flex-wrap:wrap;gap:0.4rem;margin-bottom:0.6rem}
.cg-prompts__l{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.1em;text-transform:uppercase;color:var(--cg-mut);align-self:center;margin-right:0.15rem}
.cg-prompt{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.03em;color:#a9b7cd;border:1px solid var(--cg-line);border-radius:100px;padding:0.24rem 0.6rem;background:rgba(255,255,255,0.02);cursor:pointer;transition:border-color 0.2s,color 0.2s,background 0.2s}
.cg-prompt:hover{border-color:rgba(59,130,246,0.5);color:#cfe0ff;background:rgba(59,130,246,0.07)}
.cg-prompt:disabled{opacity:0.45;cursor:default}
.cg-inputrow{display:flex;align-items:center;gap:0.6rem;border:1px solid var(--cg-line);border-radius:12px;background:var(--cg-panel);padding:0.55rem 0.7rem}
.cg-input{flex:1;min-width:0;font-family:var(--font-sans);font-size:0.85rem;color:var(--cg-mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cg-send{flex:none;width:30px;height:30px;border-radius:8px;display:grid;place-content:center;border:0;background:var(--cg-accent);color:#fff;cursor:pointer;transition:background 0.2s,transform 0.2s}
.cg-send:hover{background:var(--cg-accentink);transform:translateY(-1px)}
.cg-send svg{width:15px;height:15px}
.cg-kbd{flex:none;font-family:var(--font-mono);font-size:var(--t-2xs);color:var(--cg-mut);border:1px solid var(--cg-line);border-radius:5px;padding:0.05rem 0.3rem}

/* ==========================================================
   C. Threat-model build window (dark, animated, functional)
   ========================================================== */
.cg-tm__head{display:flex;align-items:center;gap:0.6rem;width:100%;text-align:left;padding:0.75rem var(--s-5);background:#0A0A0D;border:0;border-bottom:1px solid var(--cg-line);cursor:pointer;color:var(--cg-txt);font:inherit}
.cg-tm__spark{width:16px;height:16px;flex:none;color:var(--cg-high);filter:drop-shadow(0 0 5px rgba(255,154,60,0.5))}
.cg-chat.is-running .cg-tm__spark,.cg-tm.is-building .cg-tm__spark{animation:cg-sparkspin 1.6s linear infinite}
@keyframes cg-sparkspin{to{transform:rotate(360deg)}}
.cg-tm__title{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.12em;text-transform:uppercase;color:#B4B4BC}
.cg-tm__files{margin-left:auto;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.1em;text-transform:uppercase;color:var(--cg-mut)}
.cg-tm__chev{width:16px;height:16px;flex:none;color:var(--cg-mut);transition:transform 0.3s var(--ease)}
.cg-tm.is-collapsed .cg-tm__chev{transform:rotate(-90deg)}
.cg-tm__body{display:grid;grid-template-rows:1fr;transition:grid-template-rows 0.4s var(--ease),opacity 0.3s var(--ease)}
.cg-tm.is-collapsed .cg-tm__body{grid-template-rows:0fr;opacity:0}
.cg-tm__bodyin{overflow:hidden;min-height:0}

/* build trace */
.cg-tm__build{padding:0.85rem var(--s-5);display:grid;gap:0.5rem}
.cg-tmstep{display:grid;grid-template-columns:auto 1fr auto;gap:0.7rem;align-items:center;font-size:0.85rem;color:var(--cg-mut);opacity:0.5;transition:opacity 0.4s var(--ease),color 0.4s var(--ease)}
.cg-tmstep.is-done{opacity:1;color:var(--cg-txt)}
.cg-tmstep__ic{position:relative;width:18px;height:18px;flex:none;border-radius:50%;border:1.6px solid var(--cg-line2);display:grid;place-content:center}
.cg-tmstep.is-active .cg-tmstep__ic{border-color:transparent;border-top-color:var(--cg-accentink);border-right-color:var(--cg-accentink);animation:cg-spin 0.8s linear infinite}
.cg-tmstep.is-done .cg-tmstep__ic{border-color:rgba(63,239,168,0.6);background:rgba(63,239,168,0.12)}
.cg-tmstep__ic svg{width:11px;height:11px;color:var(--cg-mintink);opacity:0;transition:opacity 0.2s}
.cg-tmstep.is-done .cg-tmstep__ic svg{opacity:1}
.cg-tmstep__meta{font-family:var(--font-mono);font-size:var(--t-2xs);color:var(--cg-mut)}
.cg-tmstep.is-done .cg-tmstep__meta{color:var(--cg-accentink)}

/* stack logos */
.cg-tm__stack{display:flex;flex-wrap:wrap;gap:0.5rem;padding:0.4rem var(--s-5) 0.9rem}
.cg-tech{display:inline-flex;align-items:center;gap:0.5rem;padding:0.4rem 0.7rem;border:1px solid var(--cg-line);border-radius:10px;background:rgba(255,255,255,0.02);font-family:var(--font-mono);font-size:0.8rem;color:var(--cg-head);opacity:0;transform:translateY(6px) scale(0.96)}
.cg-tm.is-in .cg-tech{animation:cg-pop 0.5s var(--ease-overshoot,cubic-bezier(0.34,1.56,0.64,1)) forwards}
.cg-tm.is-in .cg-tech:nth-child(2){animation-delay:0.08s}
.cg-tm.is-in .cg-tech:nth-child(3){animation-delay:0.16s}
.cg-tm.is-in .cg-tech:nth-child(4){animation-delay:0.24s}
.cg-tech svg{width:20px;height:20px;flex:none}
.cg-tech:hover{border-color:var(--cg-line2);transform:translateY(-2px)}
@keyframes cg-pop{to{opacity:1;transform:none}}

/* threat-model table */
.cg-tm__table{border-top:1px solid var(--cg-line)}
.cg-tmrow{display:grid;grid-template-columns:150px 1fr;gap:0.8rem;padding:0.6rem var(--s-5);border-bottom:1px solid var(--cg-line);opacity:0;transform:translateX(-6px)}
.cg-tmrow:last-child{border-bottom:0}
.cg-tm.is-in .cg-tmrow{animation:cg-rowin 0.5s var(--ease) forwards}
.cg-tm.is-in .cg-tmrow:nth-child(1){animation-delay:0.3s}
.cg-tm.is-in .cg-tmrow:nth-child(2){animation-delay:0.4s}
.cg-tm.is-in .cg-tmrow:nth-child(3){animation-delay:0.5s}
.cg-tm.is-in .cg-tmrow:nth-child(4){animation-delay:0.6s}
@keyframes cg-rowin{to{opacity:1;transform:none}}
.cg-tmrow dt{margin:0;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.1em;text-transform:uppercase;color:var(--cg-mut);align-self:center}
.cg-tmrow dd{margin:0;font-size:0.86rem;color:var(--cg-txt);display:flex;flex-wrap:wrap;gap:0.4rem;align-items:center}
.cg-fc{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.04em;text-transform:uppercase;padding:0.16rem 0.45rem;border-radius:100px;border:1px solid}
.cg-fc--crit{color:#ffb3a6;border-color:rgba(255,95,95,0.4);background:rgba(255,95,95,0.09)}
.cg-fc--high{color:#ffc487;border-color:rgba(255,154,60,0.4);background:rgba(255,154,60,0.09)}
.cg-fc--blue{color:#9cc0ff;border-color:rgba(59,130,246,0.4);background:rgba(59,130,246,0.09)}
.cg-tmrow dd .b{color:var(--cg-head);font-family:var(--font-mono)}

@media (max-width:640px){
 .cg-tmrow{grid-template-columns:1fr;gap:0.25rem}
}
@media (prefers-reduced-motion:reduce){
 .cg-tm__spark{animation:none}
 .cg-tmstep,.cg-tm.is-in .cg-tech,.cg-tm.is-in .cg-tmrow{animation:none;opacity:1;transform:none}
 .cg-tm__body{transition:none}
 .cg-tm__chev,.cg-tech{transition:none}
}

/* ---------- responsive ---------- */
@media (max-width:900px){
 .cg-hero{grid-template-columns:1fr;justify-items:start}
 .cg-ring{justify-self:center}
 .cg-kpis{grid-template-columns:repeat(2,1fr)}
 .cg-kpi{border-bottom:1px solid var(--cg-line)}
 .cg-kpi:nth-child(2n){border-right:0}
 .cg-grid{grid-template-columns:1fr;grid-template-areas:"sev" "cats" "feed" "trend"}
 .cg-panel{border-right:0}
 .cg-panel--sev{border-bottom:1px solid var(--cg-line)}
 .cg-panel--cats{border-bottom:1px solid var(--cg-line)}
 .cg-feed{min-height:0}
}
@media (max-width:640px){
 .cg-url,.cg-model{display:none}
 .cg-donutwrap{grid-template-columns:1fr;justify-items:center}
 .cg-bar{grid-template-columns:92px 1fr 30px}
 .cg-path{grid-template-columns:1fr;gap:0.4rem}
 .cg-path__arrow{transform:rotate(90deg)}
 .cg-finding__loc{margin-left:0;width:100%}
 .cg-thread{max-height:none}
}

/* ---------- reduced motion ---------- */
/* live hero monitor — crew worker grid */
.cg-mon{position:relative;z-index:1;display:grid;gap:0.55rem;width:238px;padding:var(--s-4);border:1px solid var(--cg-line);border-radius:12px;background:rgba(59,130,246,0.04)}
.cg-mon__top{display:flex;justify-content:space-between;align-items:baseline;gap:0.5rem}
.cg-mon__l{font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.14em;text-transform:uppercase;color:var(--cg-mut)}
.cg-mon__n{font-family:var(--font-mono);font-size:1.7rem;font-weight:600;line-height:1;color:var(--cg-head)}
.cg-mon__n small{font-size:0.55em;color:var(--cg-mut)}
.cg-mon__viz{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:1fr;gap:2.5px;height:52px}
.cg-mon__viz i{border-radius:1.5px;background:rgba(255,255,255,0.06);transition:background 0.35s var(--ease),box-shadow 0.35s var(--ease)}
.cg-mon__viz i.hunt{background:var(--cg-accentink);box-shadow:0 0 5px rgba(96,165,250,0.85)}
.cg-mon__viz i.done{background:var(--cg-mintink);box-shadow:0 0 5px rgba(92,243,184,0.85)}
.cg-mon__pill{justify-self:start;display:inline-flex;align-items:center;gap:0.4rem;font-family:var(--font-mono);font-size:var(--t-2xs);letter-spacing:0.12em;text-transform:uppercase;color:var(--cg-mintink);border:1px solid rgba(63,239,168,0.32);background:rgba(63,239,168,0.08);border-radius:100px;padding:0.2rem 0.55rem}
.cg-mon__pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--cg-mintink);animation:cg-pulse 1.8s ease-out infinite}
.cg-mon__foot{font-family:var(--font-mono);font-size:var(--t-2xs);color:var(--cg-mut)}
@media (max-width:900px){.cg-mon{width:auto;justify-self:stretch}}
@media (prefers-reduced-motion:reduce){.cg-mon__viz i,.cg-mon__pill::before{transition:none;animation:none}}

@media (prefers-reduced-motion:reduce){
 .cg-live::before,.cg-livedot,.cg-crewstate::before,.cg-phase__d,.cg-pixel i,.cg-think__label{animation:none}
 .cg-ring__v{transition:none;stroke-dashoffset:28}
 .cg-spark polyline{animation:none!important;stroke-dashoffset:0}
 .cg-app.is-in .cg-donut circle,.cg-donut circle{animation:none}
 .cg-app.is-in .cg-bar__t i,.cg-bar__t i{transition:none;width:var(--w)}
 .cg-trend__line{animation:none!important;stroke-dashoffset:0}
 .cg-trend__fill{animation:none!important;opacity:1}
 .cg-feed li.is-new,.cg-trace li{animation:none}
 .cg-trace li.is-active .cg-tmark{animation:none;border-color:var(--cg-accentink)}
 .cg-caret{animation:none;display:none}
 .cg-crew__meter i,.cg-phase,.cg-send,.cg-prompt,.cg-fact{transition:none}
 .cg-thread{scroll-behavior:auto}
}
