/* ============================================================
   contract·foundry — dashboard UI
   Reuses the launch-dash design system (electric-violet, near-black
   surfaces, Geist-style type) so the two read as siblings.
   ============================================================ */

*,*::before,*::after { box-sizing: border-box; }
[hidden] { display: none !important; }

:root {
  --bg:#08090C; --bg-2:#0B0D12; --panel:#0F1117; --panel-elev:#14171F; --panel-pop:#1B1F2A;
  --line:rgba(255,255,255,.06); --line-2:rgba(255,255,255,.10); --line-strong:rgba(255,255,255,.16);
  --fg:#E4E6EC; --fg-strong:#FAFAFC; --fg-dim:#8E94A3; --fg-faint:#5A6072;
  --accent:#8B5CF6; --accent-2:#A78BFA; --accent-3:#6D28D9; --accent-ink:#FAFAFC;
  --accent-soft:rgba(139,92,246,.12); --accent-tint:rgba(139,92,246,.18);
  --accent-line:rgba(139,92,246,.45); --accent-glow:rgba(139,92,246,.35);
  --info:#60A5FA; --info-soft:rgba(96,165,250,.10); --info-line:rgba(96,165,250,.40);
  --success:#34D399; --success-soft:rgba(52,211,153,.10); --success-line:rgba(52,211,153,.40);
  --warn:#FBBF24; --warn-soft:rgba(251,191,36,.10); --warn-line:rgba(251,191,36,.40);
  --danger:#F87171; --danger-soft:rgba(248,113,113,.10); --danger-line:rgba(248,113,113,.42);
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;
  --r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-pill:999px;
  --font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --font-display:"Space Grotesk","Inter",system-ui,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --shadow-md:0 6px 18px -6px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.025) inset;
  --shadow-lg:0 24px 60px -24px rgba(0,0,0,.7),0 2px 12px -4px rgba(0,0,0,.4),0 1px 0 rgba(255,255,255,.04) inset;
  --shadow-accent:0 8px 28px -8px var(--accent-glow);
  --ease:cubic-bezier(.16,1,.3,1); --d2:180ms;
  color-scheme: dark;
}

html,body { height:100%; }
body {
  margin:0; min-height:100vh; position:relative;
  background:
    radial-gradient(900px 600px at 88% -10%, rgba(139,92,246,.10), transparent 60%),
    radial-gradient(700px 500px at 10% 110%, rgba(96,165,250,.06), transparent 60%),
    var(--bg);
  color:var(--fg); font-family:var(--font-sans); font-size:14px; line-height:1.55;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  letter-spacing:-.005em;
}
body::before {
  content:""; position:fixed; inset:0; pointer-events:none; z-index:0; opacity:.4; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .025 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}
#topbar,main,#toast,#gate { position:relative; z-index:1; }

h1,h2,h3,h4 { font-family:var(--font-display); color:var(--fg-strong); letter-spacing:-.02em; margin:0; font-weight:600; }
h1 { font-size:26px; line-height:1.2; }
h2 { font-size:17px; margin:0 0 var(--s3); }
h3 { font-size:11px; color:var(--fg-dim); text-transform:uppercase; letter-spacing:.14em; font-weight:600; margin:0 0 var(--s3); }
a { color:var(--accent-2); text-decoration:none; }
a:hover { text-decoration:underline; }
code,kbd { font-family:var(--font-mono); }

/* ---- brand ---- */
.brand { display:inline-flex; align-items:center; gap:var(--s2); font-family:var(--font-display); font-weight:600; color:var(--fg-strong); }
.brand-mark { display:inline-flex; filter:drop-shadow(0 4px 10px var(--accent-glow)); }
.brand-word { font-size:15px; letter-spacing:-.01em; }
.brand-dot { color:var(--accent-2); }
.brand-lg .brand-word { font-size:22px; }

/* ---- gate ---- */
.gate { position:fixed; inset:0; display:grid; place-items:center; padding:var(--s4); z-index:50; }
.gate-aura { position:absolute; inset:0; background:radial-gradient(500px 360px at 50% 30%, var(--accent-soft), transparent 70%); pointer-events:none; }
.gatebox { width:min(380px,92vw); background:linear-gradient(180deg,var(--panel-elev),var(--panel)); border:1px solid var(--line-2); border-radius:var(--r-xl); padding:var(--s6) var(--s5) var(--s5); box-shadow:var(--shadow-lg); position:relative; }
.gatebox .brand-lg { justify-content:center; margin-bottom:var(--s5); }
.gate-label { display:block; font-size:11px; text-transform:uppercase; letter-spacing:.12em; color:var(--fg-dim); margin-bottom:var(--s2); }
.gate-foot { margin-top:var(--s5); text-align:center; font-size:11.5px; color:var(--fg-faint); }
.err { color:var(--danger); font-size:12.5px; margin-top:var(--s2); min-height:16px; }

/* ---- inputs / buttons ---- */
.input {
  width:100%; background:var(--bg-2); border:1px solid var(--line-2); border-radius:var(--r-md);
  color:var(--fg); font:14px/1.4 var(--font-sans); padding:10px 12px; outline:none; transition:border-color var(--d2),box-shadow var(--d2);
}
.input:focus { border-color:var(--accent-line); box-shadow:0 0 0 3px var(--accent-soft); }
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:6px; cursor:pointer;
  background:var(--panel-elev); color:var(--fg); border:1px solid var(--line-2); border-radius:var(--r-md);
  font:600 13px var(--font-sans); padding:8px 14px; transition:all var(--d2); white-space:nowrap;
}
.btn:hover { border-color:var(--line-strong); background:var(--panel-pop); }
.btn-accent { background:linear-gradient(180deg,var(--accent-2),var(--accent)); border-color:transparent; color:var(--accent-ink); box-shadow:var(--shadow-accent); }
.btn-accent:hover { background:linear-gradient(180deg,var(--accent-2),var(--accent-3)); }
.btn:disabled { opacity:.5; cursor:not-allowed; box-shadow:none; }
.btn-block { width:100%; margin-top:var(--s4); padding:11px; }
.btn-sm { padding:5px 10px; font-size:12px; }
.ghost { background:transparent; border:1px solid var(--line-2); color:var(--fg-dim); border-radius:var(--r-md); font:600 12.5px var(--font-sans); padding:6px 12px; cursor:pointer; transition:all var(--d2); }
.ghost:hover { color:var(--fg); border-color:var(--line-strong); }
.icon-btn { display:inline-grid; place-items:center; width:30px; height:30px; padding:0; border-radius:var(--r-md); background:transparent; border:1px solid var(--line-2); color:var(--fg-faint); cursor:pointer; transition:all var(--d2); }
.icon-btn:hover { color:var(--fg); border-color:var(--line-strong); }
.icon-btn.on.star { color:var(--warn); border-color:var(--warn-line); }
.icon-btn.on.arch { color:var(--accent-2); border-color:var(--accent-line); }
.icon-btn svg { width:16px; height:16px; }

/* ---- topbar ---- */
#topbar {
  display:flex; align-items:center; gap:var(--s5); padding:0 var(--s5); height:54px;
  border-bottom:1px solid var(--line); background:rgba(11,13,18,.72); backdrop-filter:blur(12px);
  position:sticky; top:0; z-index:20;
}
#topbar nav { display:flex; gap:2px; margin-right:auto; }
.tab { background:transparent; border:0; color:var(--fg-dim); font:600 13.5px var(--font-sans); padding:8px 14px; border-radius:var(--r-md); cursor:pointer; transition:all var(--d2); }
.tab:hover { color:var(--fg); background:var(--panel); }
.tab.active { color:var(--fg-strong); background:var(--accent-soft); box-shadow:inset 0 0 0 1px var(--accent-line); }

/* ---- layout ---- */
main { max-width:1180px; margin:0 auto; padding:var(--s6) var(--s5) 80px; }
.view-head { display:flex; align-items:flex-end; justify-content:space-between; gap:var(--s4); margin-bottom:var(--s5); flex-wrap:wrap; }
.view-head .sub { color:var(--fg-dim); font-size:13px; margin-top:4px; }
.muted { color:var(--fg-dim); }
.faint { color:var(--fg-faint); }

/* ---- cards / panels ---- */
.panel { background:linear-gradient(180deg,var(--panel-elev),var(--panel)); border:1px solid var(--line); border-radius:var(--r-lg); padding:var(--s5); box-shadow:var(--shadow-md); }
.grid { display:grid; gap:var(--s4); }
.stat-grid { grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
.stat { background:var(--panel); border:1px solid var(--line); border-radius:var(--r-lg); padding:var(--s4) var(--s5); }
.stat .k { font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--fg-dim); }
.stat .v { font-family:var(--font-display); font-size:28px; font-weight:600; color:var(--fg-strong); margin-top:6px; letter-spacing:-.02em; }
.stat .v small { font-size:14px; color:var(--fg-dim); font-weight:500; }
.stat.good .v { color:var(--success); }
.stat.bad .v { color:var(--danger); }
.stat.accent .v { color:var(--accent-2); }

/* ---- badges / pills ---- */
.badge { display:inline-flex; align-items:center; gap:5px; padding:3px 10px; border-radius:var(--r-pill); font-size:11.5px; font-weight:600; line-height:1; border:1px solid transparent; }
.badge svg { width:12px; height:12px; }
.badge.pass { background:var(--success-soft); color:var(--success); border-color:var(--success-line); }
.badge.rej { background:var(--danger-soft); color:var(--danger); border-color:var(--danger-line); }
.badge.pend { background:var(--warn-soft); color:var(--warn); border-color:var(--warn-line); }
.badge.info { background:var(--info-soft); color:var(--info); border-color:var(--info-line); }
.pill { display:inline-flex; align-items:center; gap:5px; background:var(--panel-pop); border:1px solid var(--line-2); border-radius:var(--r-pill); padding:3px 10px; font-size:12px; color:var(--fg-dim); font-family:var(--font-mono); }
.pill b { color:var(--fg); font-weight:600; }
.tags { display:flex; flex-wrap:wrap; gap:6px; }

/* ---- launch grid ---- */
.toolbar { display:flex; align-items:center; gap:var(--s2); margin-bottom:var(--s4); flex-wrap:wrap; }
.toolbar .spacer { margin-left:auto; }
.search { min-width:200px; flex:0 1 260px; }
.chip { background:var(--panel); border:1px solid var(--line-2); color:var(--fg-dim); border-radius:var(--r-pill); padding:5px 12px; font:600 12.5px var(--font-sans); cursor:pointer; transition:all var(--d2); }
.chip:hover { color:var(--fg); border-color:var(--line-strong); }
.chip.active { color:var(--fg-strong); background:var(--accent-soft); border-color:var(--accent-line); }
.daterange { gap:6px; }
.date-in { width:auto; padding:5px 8px; font-size:12.5px; color-scheme:dark; }
.date-in::-webkit-calendar-picker-indicator { filter:invert(.6); cursor:pointer; }

.cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(310px,1fr)); gap:var(--s4); }
.card { background:linear-gradient(180deg,var(--panel-elev),var(--panel)); border:1px solid var(--line); border-radius:var(--r-lg); padding:var(--s4) var(--s4) var(--s3); cursor:pointer; transition:transform var(--d2),border-color var(--d2),box-shadow var(--d2); position:relative; overflow:hidden; }
.card:hover { transform:translateY(-2px); border-color:var(--line-strong); box-shadow:var(--shadow-md); }
.card.starred { border-color:var(--warn-line); }
.card.archived { opacity:.5; }
.card .ct { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--s2); }
.card .name { font-family:var(--font-display); font-size:16px; font-weight:600; color:var(--fg-strong); }
.card .sym { font-family:var(--font-mono); font-size:12px; color:var(--accent-2); }
.card .cat { font-size:12px; color:var(--fg-dim); margin:6px 0 10px; }
.card .crow { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:8px; }
.card .id { font-family:var(--font-mono); font-size:11px; color:var(--fg-faint); margin-top:10px; }
.card .star-flag { position:absolute; top:0; right:0; color:var(--warn); }

/* ---- detail ---- */
.detail-head { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--s4); margin-bottom:var(--s4); flex-wrap:wrap; }
.detail-title { display:flex; align-items:baseline; gap:var(--s3); flex-wrap:wrap; }
.detail-title h1 { font-size:24px; }
.detail-title .sym { font-family:var(--font-mono); color:var(--accent-2); font-size:15px; }
.back { font-size:13px; color:var(--fg-dim); margin-bottom:var(--s4); display:inline-flex; cursor:pointer; background:none; border:0; padding:0; font-family:var(--font-sans); }
.back:hover { color:var(--fg); }
.subtabs { display:flex; gap:2px; border-bottom:1px solid var(--line); margin:var(--s4) 0 var(--s5); flex-wrap:wrap; }
.subtab { background:none; border:0; border-bottom:2px solid transparent; color:var(--fg-dim); font:600 13px var(--font-sans); padding:9px 14px; cursor:pointer; margin-bottom:-1px; transition:all var(--d2); }
.subtab:hover { color:var(--fg); }
.subtab.active { color:var(--fg-strong); border-bottom-color:var(--accent); }

/* ---- tables ---- */
table { border-collapse:collapse; width:100%; font-size:13px; }
th,td { text-align:left; padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:top; }
th { color:var(--fg-dim); font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:.08em; }
td.n { color:var(--fg-faint); font-family:var(--font-mono); width:36px; }
td.act { color:var(--accent-2); font-weight:600; white-space:nowrap; }
tr:last-child td { border-bottom:0; }
.tbl-wrap { background:var(--panel); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; }

/* ---- code ---- */
pre.code { background:#0A0C11; border:1px solid var(--line-2); border-radius:var(--r-lg); padding:var(--s4); overflow:auto; font:12.5px/1.6 var(--font-mono); color:#C6CBD9; margin:0; }
pre.code .kw { color:#C792EA; } pre.code .ty { color:#82AAFF; } pre.code .str { color:#C3E88D; }
pre.code .num { color:#F78C6C; } pre.code .com { color:#5A6072; font-style:italic; }
.file-head { display:flex; align-items:center; justify-content:space-between; font-family:var(--font-mono); font-size:12px; color:var(--fg-dim); margin:var(--s4) 0 var(--s2); }
.file-head:first-child { margin-top:0; }

/* ---- markdown ---- */
.md { font-size:14px; line-height:1.7; color:var(--fg); }
.md h1 { font-size:22px; margin:0 0 var(--s3); }
.md h2 { font-size:16px; margin:var(--s5) 0 var(--s2); color:var(--fg-strong); }
.md h3 { font-size:12px; margin:var(--s4) 0 var(--s2); }
.md p { margin:0 0 var(--s3); }
.md ul { margin:0 0 var(--s3); padding-left:20px; }
.md li { margin:3px 0; }
.md code { background:var(--panel-pop); border:1px solid var(--line-2); border-radius:4px; padding:1px 5px; font-size:12.5px; color:var(--accent-2); }
.md strong { color:var(--fg-strong); }
.md table { margin:var(--s3) 0; }
.md a { color:var(--accent-2); }
.md hr { border:0; border-top:1px solid var(--line); margin:var(--s4) 0; }

/* ---- misc ---- */
.row { display:flex; align-items:center; gap:var(--s2); }
.spread { display:flex; align-items:center; justify-content:space-between; gap:var(--s3); }
.kv { display:grid; grid-template-columns:max-content 1fr; gap:6px var(--s4); font-size:13px; }
.kv dt { color:var(--fg-dim); }
.kv dd { margin:0; color:var(--fg); }
.empty { text-align:center; padding:var(--s7) var(--s4); color:var(--fg-faint); }
.loading { color:var(--fg-dim); padding:var(--s5); }
.sec { margin-bottom:var(--s5); }
.sec:last-child { margin-bottom:0; }
.finding { border:1px solid var(--line-2); border-radius:var(--r-md); padding:var(--s3) var(--s4); margin-bottom:var(--s2); }
.finding.warn { border-left:3px solid var(--warn); }
.finding.blocker { border-left:3px solid var(--danger); }
.finding .fid { font-family:var(--font-mono); font-size:12px; color:var(--fg-strong); margin-bottom:3px; }

/* ---- launch wizard ---- */
.mono { font-family:var(--font-mono); font-size:12.5px; }
.lw-form { display:flex; flex-wrap:wrap; gap:var(--s3); align-items:flex-end; margin:var(--s2) 0; }
.lw-field { display:flex; flex-direction:column; gap:4px; }
.lw-label { font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--fg-dim); }
.lw-field .input, .lw-field select { width:auto; min-width:120px; }
.lw-act { margin-top:var(--s3); margin-right:var(--s2); }
.lw-danger { border-color:var(--danger-line); color:var(--danger); }
.lw-danger:hover { background:var(--danger-soft); border-color:var(--danger); color:var(--danger); }
.lp-box { background:var(--panel); border:1px solid var(--line); border-radius:var(--r-md); padding:var(--s4); }
.lw-steps { display:flex; flex-direction:column; gap:2px; }
.lw-step { display:flex; align-items:center; gap:var(--s3); padding:7px 10px; border-radius:var(--r-md); font-size:13px; }
.lw-step.done { background:var(--success-soft); }
.lw-step .lw-mark { display:inline-grid; place-items:center; width:18px; color:var(--fg-faint); }
.lw-step.done .lw-mark { color:var(--success); }
.lw-txh { margin-left:auto; }
.lw-log { background:#0A0C11; border:1px solid var(--line-2); border-radius:var(--r-md); padding:var(--s3); height:240px; overflow:auto; font:12px/1.6 var(--font-mono); color:var(--fg-dim); }
.lw-log .lw-ok { color:var(--success); }
.lw-log .lw-err { color:var(--danger); }
.lw-log .lw-tx { color:var(--info); }
.lw-log .faint { color:var(--fg-faint); }
.lw-log a { color:var(--info); }

/* ---- toast ---- */
#toast { position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(12px); opacity:0; pointer-events:none; transition:all var(--d2); background:var(--panel-pop); border:1px solid var(--line-strong); color:var(--fg); padding:10px 16px; border-radius:var(--r-md); font-size:13px; box-shadow:var(--shadow-lg); z-index:60; }
#toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
#toast.bad { border-color:var(--danger-line); }

@media (max-width:640px){ #topbar{gap:var(--s3);padding:0 var(--s3);} main{padding:var(--s4) var(--s3) 60px;} .brand-word{display:none;} }

/* ============================================================
   funder — additions (live log terminal, wallets, actions)
   ============================================================ */

/* ---- action grid ---- */
.actions { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:var(--s2); }
.act-btn { display:flex; flex-direction:column; align-items:flex-start; gap:2px; text-align:left; background:var(--panel); border:1px solid var(--line-2); border-radius:var(--r-md); padding:10px 12px; cursor:pointer; transition:all var(--d2); color:var(--fg); }
.act-btn:hover { border-color:var(--line-strong); background:var(--panel-pop); transform:translateY(-1px); }
.act-btn:disabled { opacity:.45; cursor:not-allowed; transform:none; }
.act-btn .at { font:600 13.5px var(--font-sans); color:var(--fg-strong); }
.act-btn .ad { font-size:11.5px; color:var(--fg-dim); }
.act-btn.danger .at { color:var(--danger); }
.act-btn.live { border-color:var(--accent-line); }
.act-btn.live .at { color:var(--accent-2); }
.act-btn.busy { position:relative; }

/* ---- live log terminal ---- */
.term-wrap { position:sticky; top:70px; }
.term-head { display:flex; align-items:center; gap:var(--s2); margin-bottom:var(--s2); }
.term-head .dot { width:8px; height:8px; border-radius:50%; background:var(--fg-faint); }
.term-head .dot.live { background:var(--success); box-shadow:0 0 8px var(--success); animation:pulse 1.4s var(--ease) infinite; }
.term-head .dot.run { background:var(--warn); box-shadow:0 0 8px var(--warn); animation:pulse 1s var(--ease) infinite; }
@keyframes pulse { 50%{opacity:.4;} }
.term {
  background:#070809; border:1px solid var(--line-2); border-radius:var(--r-lg);
  font:12.5px/1.55 var(--font-mono); color:#C6CBD9; padding:var(--s3) var(--s4);
  height:min(62vh,720px); overflow-y:auto; white-space:pre-wrap; word-break:break-word;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.02);
}
.term .l { display:block; }
.term .l-head { color:var(--accent-2); font-weight:600; }
.term .l-ok { color:var(--success); }
.term .l-warn { color:var(--warn); }
.term .l-err { color:var(--danger); }
.term .l-info { color:var(--info); }
.term .l-send { color:var(--accent-2); }
.term .l-tx { color:var(--fg-faint); }
.term .l-sys { color:var(--fg-faint); font-style:italic; }
.term .l-dim { color:var(--fg-dim); }
.term-empty { color:var(--fg-faint); }

/* ---- two-column session layout ---- */
.sess-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--s5); align-items:start; }
@media (max-width:980px){ .sess-grid { grid-template-columns:1fr; } .term-wrap{position:static;} }

/* ---- wallet / key tables ---- */
.mono { font-family:var(--font-mono); font-size:12px; }
.addr { font-family:var(--font-mono); font-size:12px; color:var(--fg-dim); }
.key-cell { font-family:var(--font-mono); font-size:11.5px; color:var(--warn); word-break:break-all; }
.wtype { font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--fg-faint); }
.wtype.source { color:var(--info); }
.wtype.hop { color:var(--accent-2); }
.wtype.end { color:var(--success); }

/* ---- form ---- */
.form-grid { display:grid; gap:var(--s4); }
.field { display:flex; flex-direction:column; gap:6px; }
.field label { font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--fg-dim); }
.field .hint { font-size:11.5px; color:var(--fg-faint); }
textarea.input { resize:vertical; min-height:84px; font-family:var(--font-mono); font-size:12.5px; }
select.input { appearance:none; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%238E94A3' stroke-width='1.6'><path d='M2 4l4 4 4-4'/></svg>"); background-repeat:no-repeat; background-position:right 12px center; padding-right:30px; }
.row-wrap { display:flex; gap:var(--s3); flex-wrap:wrap; }
.row-wrap > * { flex:1 1 120px; }

/* ---- confirm bar (typed EXECUTE/CANCEL/SWEEP) ---- */
.confirm { display:flex; align-items:center; gap:var(--s2); margin-top:var(--s3); padding:var(--s3); border:1px dashed var(--accent-line); border-radius:var(--r-md); background:var(--accent-soft); flex-wrap:wrap; }
.confirm.danger { border-color:var(--danger-line); background:var(--danger-soft); }
.confirm .ci { flex:1 1 200px; }
.confirm-msg { font-size:12.5px; color:var(--fg); margin-bottom:var(--s2); }

/* ---- warning banner ---- */
.banner { display:flex; gap:var(--s2); align-items:flex-start; padding:var(--s3) var(--s4); border-radius:var(--r-md); font-size:12.5px; margin-bottom:var(--s4); }
.banner.warn { background:var(--warn-soft); border:1px solid var(--warn-line); color:var(--warn); }
.banner.danger { background:var(--danger-soft); border:1px solid var(--danger-line); color:var(--danger); }
.banner.info { background:var(--info-soft); border:1px solid var(--info-line); color:var(--info); }

/* topology mini */
.topo { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-family:var(--font-mono); font-size:12px; color:var(--fg-dim); }
.topo .node { background:var(--panel-pop); border:1px solid var(--line-2); border-radius:var(--r-pill); padding:2px 9px; color:var(--fg); }
.topo .arr { color:var(--fg-faint); }
