/* ============ DESIGN TOKENS (copy into tokens.css) ============ */
:root{
  --bg-base:#0B0F17; --bg-surface:#111726; --bg-raised:#18202F; --bg-inset:#0D1220;
  --border:#232D40; --border-strong:#31405C;
  --text-primary:#E6EAF2; --text-secondary:#98A2B8; --text-muted:#5C677D;
  --accent:#3B82F6; --accent-hover:#60A5FA;
  --ok:#22C55E; --warn:#F59E0B; --err:#EF4444; --info:#38BDF8; --neutral:#8B93A7; --readonly:#A78BFA;
  --accent-soft-text:#BFDBFE; --info-soft-text:#7DD3FC; --ok-soft-text:#86EFAC;
  --topology-grid:#1B2436; --chart-inactive:#3A4358; --auth-glow:#172554;
  --terminal-bg:#05080E; --terminal-fg:#CFD8E8; --terminal-border:#25334A;
  --terminal-note-bg:#080D16; --terminal-note-text:#64748B;
  --font-ui:'Inter',system-ui,sans-serif; --font-mono:'JetBrains Mono',monospace;
  --font-sans:var(--font-ui); --bg-card:var(--bg-surface); --bg:var(--bg-inset); --text:var(--text-primary);
  --r-card:10px; --r-ctl:8px;
  --shadow-pop:0 12px 32px rgba(0,0,0,.45);
}
html[data-theme="light"]{
  --bg-base:#F3F6FA; --bg-surface:#FFFFFF; --bg-raised:#EEF3F8; --bg-inset:#F7F9FC;
  --border:#D9E2EE; --border-strong:#B9C7D8;
  --text-primary:#172033; --text-secondary:#526079; --text-muted:#667085;
  --accent:#2563EB; --accent-hover:#1D4ED8;
  --ok:#15803D; --warn:#B45309; --err:#DC2626; --info:#0369A1; --neutral:#64748B; --readonly:#7C3AED;
  --accent-soft-text:#1D4ED8; --info-soft-text:#0369A1; --ok-soft-text:#15803D;
  --topology-grid:#DCE5F0; --chart-inactive:#CBD5E1; --auth-glow:#DBEAFE;
  --terminal-bg:#F8FAFC; --terminal-fg:#1E293B; --terminal-border:#CBD5E1;
  --terminal-note-bg:#F1F5F9; --terminal-note-text:#64748B;
  --shadow-pop:0 12px 32px rgba(37,57,88,.18);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}html{color-scheme:dark}html[data-theme="light"]{color-scheme:light}
body{background:var(--bg-base);color:var(--text-primary);font:13px/1.5 var(--font-ui);-webkit-font-smoothing:antialiased}
.mono{font-family:var(--font-mono)}
a{color:var(--accent);text-decoration:none}

/* ============ AUTHENTICATION ============ */
body.auth-locked .shell{display:none}
body.auth-pending .auth-wall{display:none}
body.auth-pending .shell{display:none}
html.auth-session-hint body.auth-pending .shell{display:grid}
body:not(.auth-locked):not(.auth-pending) .auth-wall{display:none}
.auth-wall{position:fixed;inset:0;display:grid;place-items:center;padding:24px;
           background:radial-gradient(circle at 50% 15%,var(--auth-glow) 0,transparent 38%),var(--bg-base);
           z-index:200}
.auth-card{width:min(420px,100%);padding:28px;background:var(--bg-surface);
           border:1px solid var(--border-strong);border-radius:14px;box-shadow:var(--shadow-pop)}
.auth-brand{display:flex;align-items:center;gap:12px;padding-bottom:22px;
            margin-bottom:22px;border-bottom:1px solid var(--border)}
.auth-brand h1{font-size:15px;font-weight:600}.auth-brand p{font-size:11.5px;color:var(--text-muted)}
.auth-card h2{font-size:21px;margin-bottom:4px}.auth-copy{color:var(--text-secondary);margin-bottom:18px}
.auth-submit{width:100%;justify-content:center;margin-top:16px;padding:9px 14px}
.auth-error{min-height:19px;color:var(--err);font-size:11.5px;margin-top:8px}
.auth-note{padding:10px 12px;margin:12px 0;border-radius:8px;background:var(--bg-inset);
           color:var(--text-secondary);font-size:11.5px;border:1px solid var(--border)}
.identity-button{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
                 border:0;background:none;color:var(--text-secondary);font:500 11.5px var(--font-ui);
                 cursor:pointer}
.identity-button:hover{color:var(--text-primary)}

/* ============ APP SHELL ============ */
.shell{display:grid;grid-template-columns:232px 1fr;height:100vh}
.sidebar{background:var(--bg-surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto}
.brand{display:flex;align-items:center;gap:10px;padding:16px 16px 14px;border-bottom:1px solid var(--border)}
.brand-mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#1D4ED8,#3B82F6);display:grid;place-items:center;flex:none}
.brand-mark svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:1.6}
.brand h1{font-size:13px;font-weight:600;letter-spacing:.2px}
.brand p{font-size:11px;color:var(--text-muted)}
.nav{padding:10px 8px;flex:1}
.nav-group{margin-bottom:14px}
.nav-group>span{display:block;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);padding:4px 10px 6px}
.nav-item{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:7px;color:var(--text-secondary);cursor:pointer;font-weight:500;font-size:12.5px;border:none;background:none;width:100%;text-align:left}
.nav-item svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;flex:none}
.nav-item:hover{background:var(--bg-raised);color:var(--text-primary)}
.nav-item.active{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-soft-text)}
.nav-item .pbadge{margin-left:auto}
[data-rbac-hidden="true"]{display:none!important}
.pbadge{font-size:10px;font-weight:600;color:var(--neutral);border:1px solid var(--border);border-radius:999px;padding:1px 7px;letter-spacing:.02em}
.killswitch{margin:8px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--bg-inset)}
.killswitch .row{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--text-secondary);padding:2px 0}
.killswitch .row strong{color:var(--text-primary);font-weight:600}
.powered-by{display:flex;align-items:center;gap:9px;width:calc(100% - 16px);margin:0 8px 10px;padding:9px 10px;flex:none;border:1px solid transparent;border-radius:var(--r-ctl);background:transparent;color:var(--text-secondary);font:inherit;text-align:left;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}
.powered-by:hover{border-color:var(--border);background:var(--bg-raised);color:var(--text-primary)}
.powered-by:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}
.powered-by-mark{display:grid;place-items:center;width:28px;height:28px;flex:none;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-hover)}
.powered-by-mark svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.powered-by-copy{display:flex;min-width:0;flex:1;flex-direction:column;line-height:1.25}
.powered-by-copy>span{color:var(--text-muted);font-size:9.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.powered-by-copy>strong{overflow:hidden;margin-top:2px;color:var(--text-secondary);font-size:10.5px;font-weight:600;letter-spacing:.025em;text-overflow:ellipsis;white-space:nowrap}
.powered-by:hover .powered-by-copy>strong{color:var(--text-primary)}
.powered-by-arrow{width:13px;height:13px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s ease}
.powered-by:hover .powered-by-arrow{transform:translateX(2px)}

.powered-roster{display:flex;flex-direction:column;gap:14px}
.powered-roster-head{display:flex;align-items:center;gap:13px;padding:14px;border:1px solid var(--border);border-radius:10px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--bg-inset)),var(--bg-inset))}
.powered-roster-emblem{display:grid;place-items:center;width:40px;height:40px;flex:none;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--border));border-radius:11px;background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent-hover)}
.powered-roster-emblem svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.powered-roster-head strong{display:block;font-size:13px;letter-spacing:.025em}
.powered-roster-head p{margin-top:2px;color:var(--text-muted);font-size:11px}
.powered-roster-list{display:grid;gap:7px;list-style:none}
.powered-roster-member{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:10px;min-height:44px;padding:7px 10px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset)}
.powered-roster-index{display:grid;place-items:center;width:27px;height:27px;border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-hover);font:600 9.5px var(--font-mono)}
.powered-roster-member-text{overflow-wrap:anywhere;color:var(--text-primary);font-size:12.5px;font-weight:500;line-height:1.4}
.powered-roster-loading,.powered-roster-empty,.powered-roster-error{padding:24px 16px;border:1px dashed var(--border);border-radius:9px;background:var(--bg-inset);color:var(--text-muted);font-size:11.5px;text-align:center}
.powered-roster-error{border-color:color-mix(in srgb,var(--err) 45%,var(--border));color:var(--err)}

/* topbar */
.main{display:flex;flex-direction:column;min-width:0}
.topbar{height:56px;flex:none;display:flex;align-items:center;gap:14px;padding:0 20px;border-bottom:1px solid var(--border);background:var(--bg-surface)}
.crumb{font-size:12.5px;color:var(--text-muted)}
.crumb b{color:var(--text-primary);font-weight:600}
.search{flex:1;max-width:420px;display:flex;align-items:center;gap:8px;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-ctl);padding:6px 10px;color:var(--text-muted);font-size:12px}
.global-search{position:relative;transition:border-color .15s ease,box-shadow .15s ease}
.global-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}
.global-search>input{min-width:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--text-primary);font-size:12px;line-height:18px}
.global-search>input:focus{border:0;outline:0}
.global-search>input::placeholder{color:var(--text-muted);opacity:1}
.global-search>input::-webkit-search-cancel-button{filter:invert(.75);cursor:pointer}
.search kbd{margin-left:auto;font-family:var(--font-mono);font-size:10px;border:1px solid var(--border);border-radius:4px;padding:0 5px;color:var(--text-muted)}
.search-results{position:absolute;top:calc(100% + 9px);left:0;width:min(560px,calc(100vw - 40px));max-height:min(520px,70vh);overflow-y:auto;z-index:90;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:10px;box-shadow:var(--shadow-pop)}
.search-results[hidden]{display:none}
.search-result{display:grid;grid-template-columns:78px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}
.search-result:last-of-type{border-bottom:0}
.search-result:hover,.search-result.active{background:color-mix(in srgb,var(--accent) 10%,var(--bg-surface))}
.search-result.active{box-shadow:inset 3px 0 0 var(--accent)}
.search-result-type{justify-self:start;padding:2px 7px;border:1px solid var(--border);border-radius:999px;color:var(--text-muted);font-size:9.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.search-result-copy{min-width:0}
.search-result-title{overflow:hidden;color:var(--text-primary);font-size:12.5px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}
.search-result-meta{margin-top:3px;overflow:hidden;color:var(--text-muted);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}
.search-result-state{color:var(--text-secondary);font:10.5px var(--font-mono);white-space:nowrap}
.search-result mark{border-radius:2px;background:color-mix(in srgb,var(--accent) 24%,transparent);color:inherit}
.search-message{padding:22px 16px;text-align:center;color:var(--text-muted);font-size:11.5px;line-height:1.55}
.search-summary{padding:7px 12px;border-top:1px solid var(--border);background:var(--bg-inset);color:var(--text-muted);font-size:10px}
.search-summary kbd{margin:0 2px;padding:0 4px}
.tutorial-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:30px;flex:none;padding:0 11px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--accent) 10%,var(--bg-inset));color:var(--accent-soft-text);font:600 10.5px var(--font-ui);transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
.tutorial-button:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--bg-inset));color:var(--text-primary)}
.tutorial-button:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}
.tutorial-button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:1180px){.tutorial-button{width:30px;padding:0}.tutorial-button span{display:none}}
@media(max-width:900px){.topbar{padding:0 12px}.crumb{display:none}.global-search{max-width:none}.top-right>.lamp-row{display:none}}
.top-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.avatar{width:28px;height:28px;border-radius:999px;background:var(--bg-raised);border:1px solid var(--border-strong);display:grid;place-items:center;font-size:11px;font-weight:600}
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:68px;height:30px;padding:0 9px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);color:var(--text-secondary);font:600 10.5px var(--font-ui);cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
.theme-toggle:hover{border-color:var(--border-strong);background:var(--bg-raised);color:var(--text-primary)}
.theme-toggle:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}
.theme-icon{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.theme-icon-moon{display:none}html[data-theme="light"] .theme-icon-sun{display:none}html[data-theme="light"] .theme-icon-moon{display:block}
@media(max-width:1180px){.theme-toggle{min-width:30px;width:30px;padding:0}.theme-toggle span{display:none}}

/* badges */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:2.5px 9px;border-radius:999px;white-space:nowrap}
.badge .dot{width:6px;height:6px;border-radius:999px;background:currentColor}
.status-button{border:0;font-family:inherit;line-height:inherit;cursor:pointer;transition:filter .15s ease,box-shadow .15s ease}
.status-button:hover{filter:brightness(1.18)}
.status-button:focus-visible{outline:0;box-shadow:0 0 0 2px var(--bg-base),0 0 0 4px var(--accent)}
.b-ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}
.b-warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}
.b-err{color:var(--err);background:color-mix(in srgb,var(--err) 12%,transparent)}
.b-info{color:var(--info);background:color-mix(in srgb,var(--info) 12%,transparent)}
.b-neutral{color:var(--neutral);background:color-mix(in srgb,var(--neutral) 12%,transparent)}
.b-ro{color:var(--readonly);background:color-mix(in srgb,var(--readonly) 13%,transparent)}
.pulse .dot{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
.runtime-services-intro{margin-bottom:13px;color:var(--text-secondary);font-size:12px;line-height:1.55}
.runtime-services-list{display:flex;flex-direction:column;gap:10px}
.runtime-service-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;padding:13px 14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset)}
.runtime-service-main{min-width:0}.runtime-service-title{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.runtime-service-title b{font-size:12.5px}.runtime-service-meta{display:flex;flex-wrap:wrap;gap:5px 12px;color:var(--text-muted);font:10px var(--font-mono)}
.runtime-service-meta span{overflow-wrap:anywhere}.runtime-service-action{align-self:center}
.runtime-service-warning{margin:12px 0 0;padding:10px 12px;border:1px solid color-mix(in srgb,var(--warn) 35%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--warn) 8%,transparent);color:var(--warn);font-size:11px;line-height:1.5}
.runtime-service-note{margin-top:11px;color:var(--text-muted);font-size:10.5px;line-height:1.5}
.runtime-service-row.is-focused{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.runtime-service-purpose{margin-bottom:6px;color:var(--text-secondary);font-size:11px;line-height:1.5}
.runtime-service-backlog{margin-bottom:6px;color:var(--text-muted);font-size:10.5px;line-height:1.5}
.runtime-service-backlog.is-blocked{color:var(--warn);font-weight:600}
.top-services{display:flex;align-items:center;min-width:0;flex:none}
.workers-status{width:206px;max-width:206px;justify-content:flex-start;overflow:hidden;padding:3px 9px 3px 8px;color:var(--text-primary)}
.workers-status.b-ok>.dot{flex:none;background:var(--ok)}
.workers-alert{display:grid;place-items:center;width:14px;height:14px;flex:none;border-radius:999px;background:var(--err);color:#fff;font:800 10px/1 var(--font-ui)}
.workers-summary{flex:none;font-size:10.5px;letter-spacing:.025em}
.workers-rotation{height:14px;min-width:0;flex:1;overflow:hidden;font-size:9.5px;line-height:14px;text-align:left}
.workers-rotation-entry{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;animation:workers-roll-in .28s ease-out both}
.workers-rotation-entry.is-running .workers-rotation-state{color:var(--ok)}
.workers-rotation-entry.is-neutral .workers-rotation-state{color:var(--neutral)}
.workers-rotation-entry.is-attention .workers-rotation-state{color:var(--err)}
.workers-rotation-name{color:var(--text-secondary)}
.workers-rotation-state{font-weight:700}
@keyframes workers-roll-in{from{opacity:0;transform:translateY(75%)}to{opacity:1;transform:translateY(0)}}

/* Activity feed: filters + pagination (Automation hub, Change Requests) */
.feed-filters{display:flex;flex-direction:column;gap:9px;padding:13px 16px;border-bottom:1px solid var(--border)}
.feed-search{display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);color:var(--text-muted)}
.feed-search:focus-within{border-color:var(--accent)}
.feed-search input{flex:1;min-width:0;padding:8px 0;border:0;background:transparent;color:var(--text-primary);font:12.5px var(--font-sans);outline:0}
.feed-search input::placeholder{color:var(--text-muted)}
.feed-search input::-webkit-search-cancel-button{filter:invert(.6)}
.feed-clear{padding:4px 10px;font-size:11px}
.feed-filter-group{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.feed-filter-label{min-width:62px;color:var(--text-muted);font:10px/1.6 var(--font-mono);text-transform:uppercase;letter-spacing:.06em}
.feed-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg-inset);color:var(--text-secondary);font:11px var(--font-sans);cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}
.feed-chip:hover{border-color:var(--text-muted);color:var(--text-primary)}
.feed-chip.is-active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--text-primary)}
.feed-chip-n{padding:0 5px;border-radius:999px;background:color-mix(in srgb,var(--text-muted) 22%,transparent);color:var(--text-muted);font:9.5px var(--font-mono)}
.feed-chip.is-active .feed-chip-n{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--text-primary)}
.feed-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 16px;border-top:1px solid var(--border);color:var(--text-muted);font-size:11px}
.feed-pager:empty{display:none}
.feed-pager-controls{display:flex;align-items:center;gap:9px}
.feed-pager-controls .btn{padding:4px 11px;font-size:11px}
.feed-pager-controls .btn:disabled{opacity:.4;cursor:not-allowed}
.feed-page{font-family:var(--font-mono);font-size:10.5px}
.feed-size{display:flex;align-items:center;gap:5px}
.feed-size select{padding:3px 6px;border:1px solid var(--border);border-radius:6px;background:var(--bg-inset);color:var(--text-secondary);font:11px var(--font-sans)}
@media(max-width:650px){.feed-filter-label{min-width:0}.feed-pager{justify-content:flex-start}}
@media(max-width:650px){.runtime-service-row{grid-template-columns:1fr}.runtime-service-action{justify-self:start}}

/* ---------------------------------------------------------------------------
   Live status lights.

   Motion is reserved for one meaning: this state is being actively confirmed
   by a probe that is still running. A device that is DOWN does not blink —
   its state is not in doubt, and animating everything would make the page
   move constantly while telling the reader nothing. Blinking must stay rare
   enough to be worth noticing.
--------------------------------------------------------------------------- */
.lamp{position:relative;display:inline-block;width:8px;height:8px;border-radius:999px;
      background:var(--lamp-c,var(--neutral));flex:none}
.lamp::after{content:"";position:absolute;inset:-3px;border-radius:999px;
             background:var(--lamp-c,var(--neutral));opacity:0}
/* Live: a slow halo, like a heartbeat monitor. */
.lamp.live::after{animation:halo 2.4s ease-out infinite}
.lamp.live{box-shadow:0 0 5px var(--lamp-c)}
/* Probing: faster, because something is happening right now. */
.lamp.busy::after{animation:halo .9s ease-out infinite}
/* Overdue: the light dims and brightens rather than haloing, so "we have not
   heard from this recently" reads differently from "this is up". */
.lamp.overdue{animation:dim 1.8s ease-in-out infinite}
@keyframes halo{0%{opacity:.5;transform:scale(.6)}100%{opacity:0;transform:scale(1.7)}}
@keyframes dim{50%{opacity:.3}}

.lamp-row{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}

/* A countdown that ticks is itself a liveness signal: if it freezes, the
   reader learns the page has stopped updating without being told. */
.countdown{font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.countdown.due{color:var(--warn)}

/* Motion is decoration here, never the only carrier of meaning — every lamp
   is paired with a text label, so switching it off loses nothing. */
@media (prefers-reduced-motion:reduce){
  .pulse .dot,.lamp.live::after,.lamp.busy::after,.lamp.overdue,.workers-rotation-entry{animation:none}
  .lamp.live::after,.lamp.busy::after{opacity:.25}
}

/* collapsible inventory sections */
.sect{border:1px solid var(--border);border-radius:var(--r-ctl);margin-bottom:8px;overflow:hidden}
.sect>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:9px;
              padding:9px 12px;background:var(--bg-inset);font-size:12.5px;font-weight:600}
.sect>summary::-webkit-details-marker{display:none}
.sect>summary::before{content:"";width:0;height:0;border:4px solid transparent;
                      border-left-color:var(--text-muted);transition:transform .15s;flex:none}
.sect[open]>summary::before{transform:rotate(90deg) translateX(-2px)}
.sect .sect-body{padding:10px 12px;border-top:1px solid var(--border)}
.sect .sect-count{margin-left:auto;font:600 11px var(--font-mono);color:var(--text-muted)}
.sect .sect-cmd{font:11px var(--font-mono);color:var(--text-muted);font-weight:400}
.raw-capture{background:var(--bg-inset);border-radius:6px;padding:9px;overflow:auto;
             max-height:280px;font:11px/1.5 var(--font-mono);color:var(--text-secondary);
             white-space:pre;margin:0}
.inventory-subhead{display:flex;align-items:center;justify-content:space-between;gap:12px;
                   margin:18px 0 9px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.inventory-subhead:first-of-type{margin-top:12px}
.inventory-subhead>div{display:flex;flex-direction:column;gap:2px}
.inventory-subhead b{font-size:13px;color:var(--text-primary)}
.inventory-subhead span{font-size:11px;color:var(--text-muted)}
.inventory-config-head{margin-top:24px}
.configuration-evidence{display:flex;align-items:center;flex-wrap:wrap;gap:7px;
                        margin-bottom:9px;font-size:11px;color:var(--text-muted)}
.inventory-provenance{margin-bottom:10px;padding:8px 11px;border:1px solid var(--border);
                      border-radius:var(--r-ctl);background:var(--bg-inset);
                      color:var(--text-muted);font:10.5px/1.55 var(--font-mono)}
.configuration-evidence code,.config-section-meta code,.inventory-absent code{
    font:10.5px var(--font-mono);color:var(--text-secondary);word-break:break-all}
.config-section-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
                     margin-bottom:8px;font-size:11px;color:var(--text-muted)}
.config-identifiers{color:var(--info)}
.config-raw{max-height:480px;tab-size:4}
.inventory-absent{display:flex;align-items:center;gap:8px;flex-wrap:wrap;
                  color:var(--text-muted);font-size:11.5px}
.inventory-config-empty p{font-size:11.5px;margin-top:5px;max-width:470px}

/* content */
.content{flex:1;overflow-y:auto;padding:24px;scrollbar-color:var(--border-strong) transparent}
.page{max-width:1600px;margin:0 auto;display:none}
.page.active{display:block}
#page-health{max-width:none;width:100%}
#page-health>.card{width:100%;overflow:hidden}
#health-matrix{overflow-x:auto}
#page-elements{max-width:none;width:100%}
.elements-table-card{width:100%;overflow:hidden}
.table-scroll{width:100%;overflow-x:auto;scrollbar-color:var(--border-strong) transparent}
.elements-table{min-width:1680px}
.elements-table th:last-child,.elements-table td:last-child{padding-right:16px}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px}
.page-head h2{font-size:20px;font-weight:600;letter-spacing:-.01em}
.page-head p{color:var(--text-secondary);font-size:12.5px;margin-top:3px}
.actions{display:flex;gap:8px;flex:none;flex-wrap:wrap;justify-content:flex-end}
.elements-lifecycle-filter{display:inline-flex;align-items:center;gap:7px;margin:0;padding:6px 10px;
                           border:1px solid var(--border);border-radius:var(--r-ctl);
                           background:var(--bg-inset);color:var(--text-secondary);font-size:11px;cursor:pointer}
.elements-lifecycle-filter:hover{border-color:var(--border-strong);color:var(--text-primary)}
.elements-lifecycle-filter input{width:auto;margin:0;accent-color:var(--accent)}
.elements-lifecycle-filter b{display:grid;place-items:center;min-width:20px;height:18px;padding:0 5px;
                             border-radius:999px;background:color-mix(in srgb,var(--err) 12%,transparent);
                             color:var(--err);font:700 9.5px var(--font-mono)}
.element-row-unenrolled td{background:color-mix(in srgb,var(--err) 3%,var(--bg-surface));color:var(--text-muted)}
.element-row-unenrolled:hover td{background:color-mix(in srgb,var(--err) 6%,var(--bg-surface))}
.element-lifecycle-name{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.element-lifecycle-name .badge{font-size:8.5px}
.historical-state{display:flex;flex-direction:column;align-items:flex-start;gap:3px;color:var(--text-muted);font-size:9.5px}
.lifecycle-exclusion{display:inline-flex;padding:4px 7px;border:1px solid color-mix(in srgb,var(--err) 35%,var(--border));
                     border-radius:6px;color:var(--err);font-size:10px;white-space:nowrap}
.lifecycle-retained{color:var(--text-muted);font-size:9.5px;white-space:nowrap}
.manual-sync-summary{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
                     margin:-4px 0 12px;padding:10px 14px;border:1px solid var(--border);
                     border-radius:var(--r-ctl);background:var(--bg-surface);
                     color:var(--text-secondary);font-size:11.5px}
.manual-sync-summary[hidden]{display:none}
#manual-sync-cancel-btn[hidden]{display:none}
.manual-sync-summary .manual-sync-title{color:var(--text-primary);font-weight:600}
.manual-sync-summary .manual-sync-note{margin-left:auto;color:var(--text-muted)}
.manual-sync-cell{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:330px}
.manual-sync-primary{display:flex;align-items:center;gap:8px}
.manual-sync-steps{display:inline-flex;align-items:center;gap:3px}
.manual-sync-step{display:inline-grid;place-items:center;width:21px;height:21px;
                  border:1px solid var(--border);border-radius:5px;background:var(--bg-inset);
                  color:var(--text-muted);font:700 9px var(--font-mono)}
.manual-sync-step.ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--border));color:var(--ok)}
.manual-sync-step.running{border-color:var(--info);color:var(--info);animation:pulse 1.2s ease-in-out infinite}
.manual-sync-step.failed{border-color:var(--err);color:var(--err)}
.manual-sync-step.incomplete{border-color:var(--warn);color:var(--warn)}
.manual-sync-age{color:var(--text-muted);font:10px var(--font-mono)}
.manual-sync-reason{max-width:325px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
                    color:var(--warn);font-size:10px;line-height:1.3}
.element-sync-actions{display:flex;align-items:center;gap:7px;min-width:142px;flex-wrap:wrap}
.element-sync-btn{padding:5px 10px;font-size:11px;min-width:58px;justify-content:center}
.batch-recovery-intro{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.batch-recovery-scan{padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);color:var(--text-secondary);font-size:11.5px;margin-bottom:10px}
.batch-recovery-scan.loading{color:var(--info)}
.batch-recovery-toolbar{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border:1px solid var(--border);border-bottom:0;border-radius:7px 7px 0 0;background:var(--bg-raised);font-size:11.5px}
.batch-recovery-toolbar label{display:flex;align-items:center;gap:7px;margin:0}.batch-recovery-toolbar input{width:auto;margin:0}
.batch-recovery-toolbar-actions{display:flex;align-items:center;gap:10px}.batch-recovery-toolbar-actions .btn{padding:5px 9px;font-size:10.5px}
.batch-recovery-table-wrap{max-height:330px;overflow:auto;border:1px solid var(--border);border-radius:0 0 7px 7px}
.batch-recovery-table{min-width:1180px;font-size:11px}.batch-recovery-table th{position:sticky;top:0;z-index:1;background:var(--bg-raised)}
.batch-recovery-table td:first-child input{width:auto}.batch-recovery-table td small{display:block;margin-top:3px;color:var(--text-muted)}
.batch-recovery-table .fingerprint{width:230px;max-width:230px;white-space:normal;overflow-wrap:anywhere;word-break:break-all;line-height:1.45;color:var(--text-muted)}
.batch-recovery-table .fingerprint.changed{color:var(--err)}
.batch-recovery-reasons{display:flex;flex-wrap:wrap;gap:4px;max-width:230px}.batch-recovery-reasons .badge{font-size:8.5px}
.batch-recovery-unavailable-note{margin-top:8px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--warn) 30%,var(--border));border-radius:7px;background:color-mix(in srgb,var(--warn) 6%,transparent);color:var(--text-secondary)}
.batch-recovery-form{margin-top:12px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}
.batch-recovery-form>label{margin-top:9px}.batch-recovery-form>label:first-child{margin-top:0}
.batch-recovery-credential-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.batch-recovery-credential-grid label{margin:8px 0 0}
#batch-recovery-progress{margin-top:10px}.batch-recovery-progress{border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);overflow:hidden}.batch-recovery-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--bg-raised)}.batch-recovery-progress-head b,.batch-recovery-progress-head small{display:block}.batch-recovery-progress-head small{margin-top:3px;color:var(--text-muted);font-size:10.5px}.batch-recovery-progress-track{height:4px;background:var(--border)}.batch-recovery-progress-track span{display:block;height:100%;min-width:0;background:var(--info);transition:width .35s ease}.batch-recovery-log-note{padding:7px 12px;border-bottom:1px solid var(--border);color:var(--text-muted);font-size:10px}.batch-recovery-log{list-style:none;margin:0;padding:5px 0;max-height:220px;overflow:auto;font:10.5px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.batch-recovery-log li{display:grid;grid-template-columns:72px 105px 120px minmax(0,1fr);align-items:start;gap:8px;padding:5px 12px;border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent);color:var(--text-secondary)}.batch-recovery-log li:last-child{border-bottom:0}.batch-recovery-log li.running{background:color-mix(in srgb,var(--info) 4%,transparent)}.batch-recovery-log li.failed{background:color-mix(in srgb,var(--err) 5%,transparent);color:var(--err)}.batch-recovery-log time{color:var(--text-muted)}.batch-recovery-log .badge{font-family:inherit;font-size:8.5px;justify-self:start}.batch-recovery-log .empty-log{display:block;color:var(--text-muted);padding:12px}.batch-recovery-generated{padding:10px 12px;border-top:1px solid var(--border)}.batch-recovery-generated details{margin-top:7px;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:7px;font:600 12.5px var(--font-ui);padding:7px 14px;border-radius:var(--r-ctl);border:1px solid transparent;cursor:pointer}
.btn[hidden]{display:none}
.btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-hover)}
.btn:disabled{opacity:.42;cursor:not-allowed;pointer-events:none}
.btn-ghost{background:transparent;color:var(--text-secondary);border-color:var(--border)}
.btn-ghost:hover{color:var(--text-primary);border-color:var(--border-strong);background:var(--bg-raised)}
.btn-danger{background:color-mix(in srgb,var(--err) 16%,transparent);color:var(--err);border-color:color-mix(in srgb,var(--err) 40%,transparent)}

/* cards & grids */
.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-card)}
.card-h{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--border)}
.card-h h3{font-size:13px;font-weight:600}
.card-h .sub{font-size:11.5px;color:var(--text-muted)}
.grid-kpi{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:16px}
.kpi{position:relative;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-card);padding:14px 16px 12px;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--kc,var(--accent))}
.kpi .lbl{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}
.kpi .val{font-size:28px;font-weight:600;line-height:1.15;margin-top:4px;font-variant-numeric:tabular-nums}
.kpi .sub{font-size:11.5px;color:var(--text-secondary);margin-top:2px}
.grid-2{display:grid;grid-template-columns:2fr 1fr;gap:16px}
.template-layout{grid-template-columns:minmax(340px,.9fr) minmax(0,2.1fr)}
.template-layout>.card{min-width:0}
.template-layout #tpl-meta{grid-template-columns:84px minmax(0,1fr);gap:10px 16px}

/* table */
table{width:100%;border-collapse:collapse;font-size:12.5px}
thead th{position:sticky;top:0;background:var(--bg-raised);color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:9px 14px;border-bottom:1px solid var(--border);white-space:nowrap}
tbody td{padding:10px 14px;border-bottom:1px solid var(--border);height:40px;white-space:nowrap;font-variant-numeric:tabular-nums}
tbody tr:hover{background:var(--bg-raised);cursor:pointer}
tbody tr:last-child td{border-bottom:none}
.t-muted{color:var(--text-muted)} .t-sec{color:var(--text-secondary)}
.toolbar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border)}
.chip{font-size:11.5px;font-weight:500;color:var(--text-secondary);border:1px solid var(--border);border-radius:999px;padding:3px 11px;cursor:pointer}
.chip.on{color:var(--accent-soft-text);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}

/* timeline */
.tl{list-style:none;padding:4px 0}
.tl li{position:relative;padding:0 0 4px 30px}
.tl li::before{content:"";position:absolute;left:9px;top:22px;bottom:-2px;width:2px;background:var(--border)}
.tl li:last-child::before{display:none}
.tl .tld{position:absolute;left:3px;top:7px;width:14px;height:14px;border-radius:999px;border:3px solid var(--bg-surface)}
.tl .h{display:flex;align-items:center;gap:10px;padding:4px 0}
.tl .h b{font-size:12.5px;font-weight:600}
.tl .h time{margin-left:auto;color:var(--text-muted);font-size:11.5px}
.evid{margin:6px 0 10px;background:var(--bg-inset);border:1px solid var(--border);border-radius:8px;font-family:var(--font-mono);font-size:11.5px}
.evid .eh{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--border);color:var(--text-muted);font-size:10.5px}
.evid .eh .cp{margin-left:auto;cursor:pointer;color:var(--accent);font-family:var(--font-ui);font-weight:600}
.evid pre{padding:10px 12px;overflow-x:auto;color:var(--text-secondary);line-height:1.6}

/* topology */
.topo-wrap{position:relative;height:calc(100vh - 210px);min-height:520px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden;
  background-image:radial-gradient(circle,var(--topology-grid) 1px,transparent 1px);background-size:26px 26px}
.topology-loading{position:absolute;inset:0;z-index:12;display:grid;place-items:center;padding:24px;background:color-mix(in srgb,var(--bg-surface) 90%,transparent);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.topology-loading[hidden]{display:none}
.topology-loading-panel{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px 16px;width:min(440px,100%);padding:19px 20px 18px;border:1px solid var(--border-strong);border-radius:12px;background:color-mix(in srgb,var(--bg-raised) 96%,transparent);box-shadow:var(--shadow-pop)}
.topology-loading-icon{grid-row:1;width:48px;height:48px;overflow:visible;color:var(--accent);filter:drop-shadow(0 0 8px color-mix(in srgb,var(--accent) 32%,transparent))}
.topology-loading-icon path{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round;opacity:.65;stroke-dasharray:5 4;animation:topology-loading-path 1.4s linear infinite}
.topology-loading-icon circle{fill:var(--bg-raised);stroke:currentColor;stroke-width:2.5;transform-box:fill-box;transform-origin:center;animation:topology-loading-node 1.2s ease-in-out infinite}
.topology-loading-icon circle:nth-of-type(2){animation-delay:.16s}.topology-loading-icon circle:nth-of-type(3){animation-delay:.32s}
.topology-loading-copy{display:flex;min-width:0;flex-direction:column;align-self:center;gap:4px}
.topology-loading-copy strong{color:var(--text-primary);font-size:14px;font-weight:650}.topology-loading-copy span{overflow:hidden;color:var(--text-secondary);font-size:11.5px;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}
.topology-loading-progress-row{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) 38px;align-items:center;gap:10px}
.topology-loading-track{position:relative;height:7px;overflow:hidden;border-radius:999px;background:color-mix(in srgb,var(--border-strong) 58%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 72%,transparent)}
.topology-loading-track>span{position:absolute;inset:0 auto 0 0;min-width:8px;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 72%,#38BDF8),var(--accent));box-shadow:0 0 10px color-mix(in srgb,var(--accent) 38%,transparent);transition:width .28s ease}
.topology-loading-track>span::after{content:"";position:absolute;inset:0;width:42%;background:linear-gradient(90deg,transparent,color-mix(in srgb,#fff 52%,transparent),transparent);transform:translateX(-130%);animation:topology-loading-shimmer 1.15s ease-in-out infinite}
.topology-loading-percent{color:var(--text-secondary);font:650 10.5px var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}
.topology-loading.is-complete .topology-loading-icon{color:var(--ok)}.topology-loading.is-complete .topology-loading-track>span{background:var(--ok);box-shadow:0 0 10px color-mix(in srgb,var(--ok) 34%,transparent)}
.topology-loading.is-error .topology-loading-icon{color:var(--err)}.topology-loading.is-error .topology-loading-track>span{background:var(--err);box-shadow:0 0 10px color-mix(in srgb,var(--err) 34%,transparent)}
@keyframes topology-loading-path{to{stroke-dashoffset:-18}}
@keyframes topology-loading-node{0%,100%{transform:scale(.84);opacity:.68}50%{transform:scale(1.12);opacity:1}}
@keyframes topology-loading-shimmer{0%{transform:translateX(-130%)}65%,100%{transform:translateX(260%)}}
.topo-tools{position:absolute;top:14px;left:14px;display:flex;gap:8px;z-index:2}
.legend{position:absolute;bottom:14px;left:14px;right:14px;display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;background:color-mix(in srgb,var(--bg-surface) 88%,transparent);border:1px solid var(--border);border-radius:8px;padding:8px 14px;font-size:11.5px;color:var(--text-secondary);z-index:2}
.legend i{width:9px;height:9px;border-radius:999px;display:inline-block;margin-right:6px}
.node-lbl{font:500 11px var(--font-mono);fill:var(--text-secondary)}
.topo-meta{position:absolute;top:14px;left:14px;display:flex;gap:10px;align-items:center;padding:6px 10px;border:1px solid var(--border);border-radius:7px;background:color-mix(in srgb,var(--bg-surface) 90%,transparent);color:var(--text-secondary);font-size:10.5px;pointer-events:none;z-index:2}
.topo-meta b{color:var(--text-primary)}.topology-meta-warn{color:var(--warn)}
.topo-empty{position:absolute;top:58px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:3px;width:min(560px,calc(100% - 32px));padding:12px 15px;border:1px solid color-mix(in srgb,var(--warn) 42%,var(--border));border-radius:9px;background:color-mix(in srgb,var(--bg-surface) 94%,transparent);box-shadow:var(--shadow-pop);text-align:center;pointer-events:none;z-index:2}
.topo-empty[hidden]{display:none}.topo-empty b{font-size:12.5px}.topo-empty span{color:var(--text-secondary);font-size:11.5px}
.topo-link-key{display:inline-flex;align-items:center;gap:6px}.topo-line{display:inline-block;width:25px;height:0;border-top:2px solid var(--text-secondary)}
.topo-line.medium{border-top-style:dashed}.topo-line.low{border-top-style:dotted}
.topology-label-picker{position:relative}
.topology-label-picker>.btn.active{border-color:color-mix(in srgb,var(--accent) 65%,var(--border));color:var(--accent-soft-text);background:color-mix(in srgb,var(--accent) 10%,transparent)}
.topology-label-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--bg-raised);color:var(--text-muted);font:700 10px var(--font-mono)}
.topology-label-picker>.btn.active .topology-label-count{background:color-mix(in srgb,var(--accent) 18%,var(--bg-raised));color:var(--accent-soft-text)}
.topology-label-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:30;width:285px;padding:7px;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:9px;box-shadow:var(--shadow-pop)}
.topology-label-menu[hidden]{display:none}
.topology-label-menu-title{padding:5px 7px 7px;color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
label.topology-label-option{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:9px;margin:0;padding:8px 7px;border-radius:7px;cursor:pointer}
label.topology-label-option:hover{background:var(--bg-raised)}
.topology-label-option input{width:14px;height:14px;margin-top:2px;accent-color:var(--accent)}
.topology-label-option span{display:flex;min-width:0;flex-direction:column;gap:1px}
.topology-label-option b{color:var(--text-primary);font-size:11.5px;font-weight:600}
.topology-label-option small{color:var(--text-muted);font-size:10px;line-height:1.4}
.topology-connect-line{position:absolute;inset:0;z-index:4;width:100%;height:100%;overflow:visible;pointer-events:none}
.topology-connect-line[hidden],.topology-connect-target[hidden],.topology-connect-handle[hidden],.topology-connect-hint[hidden]{display:none}
.topology-connect-line line{fill:none;stroke:var(--err);stroke-width:2.5;stroke-dasharray:none;stroke-linecap:round;opacity:.96;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--err) 52%,transparent))}
.topology-connect-line.valid line{stroke:var(--err);stroke-width:2.8;stroke-dasharray:none}
.topology-connect-target{position:absolute;z-index:5;width:44px;height:44px;border:2px solid var(--ok);border-radius:999px;background:color-mix(in srgb,var(--ok) 9%,transparent);box-shadow:0 0 0 6px color-mix(in srgb,var(--ok) 9%,transparent),0 0 18px color-mix(in srgb,var(--ok) 34%,transparent);transform:translate(-50%,-50%);pointer-events:none}
.topology-connect-handle{position:absolute;z-index:7;display:grid;place-items:center;width:30px;height:30px;padding:0;border:1px solid color-mix(in srgb,var(--info) 70%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--bg-raised) 92%,transparent);color:var(--info-soft-text);box-shadow:var(--shadow-pop),0 0 0 3px color-mix(in srgb,var(--info) 10%,transparent);transform:translate(-50%,-50%);transform-origin:center;cursor:grab;touch-action:none;transition:transform .12s ease,border-color .12s ease,background-color .12s ease,color .12s ease}
.topology-connect-handle:hover,.topology-connect-handle:focus-visible{border-color:var(--info);background:color-mix(in srgb,var(--info) 16%,var(--bg-raised));color:var(--info-soft-text);transform:translate(-50%,-50%) scale(1.13);outline:none}
.topology-connect-handle.dragging{cursor:grabbing;border-color:var(--ok);background:color-mix(in srgb,var(--ok) 15%,var(--bg-raised));color:var(--ok-soft-text);transform:translate(-50%,-50%) scale(1.13)}
.topology-connect-handle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.topology-connect-hint{position:absolute;z-index:8;max-width:330px;padding:7px 10px;border:1px solid var(--border-strong);border-radius:7px;background:color-mix(in srgb,var(--bg-surface) 94%,transparent);box-shadow:var(--shadow-pop);color:var(--text-secondary);font-size:10.5px;line-height:1.35;pointer-events:none;transform:translate(12px,12px)}
.topology-connect-hint.valid{border-color:color-mix(in srgb,var(--ok) 58%,var(--border));color:var(--ok-soft-text)}
@media(max-width:560px){.topology-loading{padding:14px}.topology-loading-panel{grid-template-columns:40px minmax(0,1fr);padding:16px}.topology-loading-icon{width:40px;height:40px}}
@media(prefers-reduced-motion:reduce){.topology-connect-handle,.topology-loading-track>span{transition:none}.topology-loading-icon path,.topology-loading-icon circle,.topology-loading-track>span::after{animation:none}}

.topology-detail-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.topology-detail-grid,.topology-endpoint-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin-bottom:12px}
.topology-detail-card,.topology-endpoint{min-width:0;padding:13px 14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset);margin-bottom:12px}
.topology-detail-grid>.topology-detail-card,.topology-endpoint-grid>.topology-endpoint{margin-bottom:0}
.topology-detail-card h4,.topology-endpoint h5{margin:0 0 10px;font-size:12px;color:var(--text-primary)}
.topology-endpoint-title{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:9px;border-bottom:1px solid var(--border)}
.topology-endpoint-title span{display:inline-grid;place-items:center;min-width:47px;padding:2px 7px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-soft-text);font-size:10px;font-weight:700}
.topology-endpoint-title b{font-size:13px}.topology-endpoint h5{margin-top:13px}
.topology-value-list{display:flex;flex-wrap:wrap;gap:4px}.topology-value-list code{display:inline-block;padding:2px 5px;border:1px solid var(--border);border-radius:4px;background:var(--bg-raised);color:var(--text-primary);font:10.5px/1.4 var(--font-mono);overflow-wrap:anywhere}
.topology-locator-list{display:flex;flex-direction:column;gap:7px}.topology-locator{padding:8px 9px;border:1px solid var(--border);border-radius:7px;background:var(--bg-surface)}
.topology-locator>div{display:flex;align-items:center;gap:7px;margin-bottom:3px}.topology-locator code{display:block;color:var(--text-secondary);font:10.5px var(--font-mono);overflow-wrap:anywhere}.topology-locator small{display:block;margin-top:3px;color:var(--text-muted);font:10px var(--font-mono)}
.topology-lag-member-section{margin-top:13px}.topology-lag-member-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:9px;margin-bottom:7px}.topology-lag-member-heading h5{margin:0}
.topology-lag-member-evidence{display:flex;justify-content:flex-end;align-items:center;gap:5px;flex-wrap:wrap;color:var(--text-muted);font-size:9px}.topology-lag-member-evidence .badge{padding:2px 6px;font-size:8.5px}
.topology-lag-members{display:flex;flex-direction:column;gap:6px}.topology-lag-members-empty{margin:0;font-size:10.5px;line-height:1.45}
.topology-lag-member{display:grid;grid-template-columns:minmax(125px,1fr) auto;gap:4px 10px;padding:8px 9px;border:1px solid var(--border);border-radius:7px;background:var(--bg-surface)}
.topology-lag-member-name{display:flex;align-items:center;gap:6px;min-width:0}.topology-lag-member-name code{color:var(--accent-soft-text);font:10.5px var(--font-mono);overflow-wrap:anywhere}.topology-lag-member-name span{color:var(--text-muted);font:9.5px var(--font-mono)}
.topology-lag-member-state{display:flex;align-items:center;gap:8px;font-size:9.5px}.topology-lag-member-state .lamp-row{gap:4px}.topology-lag-member-state .lamp{width:7px;height:7px}
.topology-lag-member-meta{grid-column:1/-1;display:flex;align-items:center;gap:5px 10px;flex-wrap:wrap;color:var(--text-muted);font-size:9.5px}.topology-lag-member-meta code{font:9.5px var(--font-mono)}
.topology-lag-member-description{grid-column:1/-1;color:var(--text-secondary);font-size:10px;overflow-wrap:anywhere}
.topology-table-wrap{max-height:330px;overflow:auto}.topology-table-wrap table{font-size:11.5px}.topology-table-wrap td{vertical-align:top}
.topology-link-label{margin:-2px 0 12px;padding:8px 10px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--text-primary);font:11.5px var(--font-mono)}
.topology-evidence-list{display:flex;flex-direction:column;gap:8px}.topology-evidence-item{padding:9px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-surface)}
.topology-evidence-item>div{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.topology-evidence-item p{margin-top:5px;color:var(--text-secondary);font-size:11.5px;overflow-wrap:anywhere}.topology-evidence-item small{display:block;margin-top:4px;color:var(--text-muted);font:10px var(--font-mono)}
.topology-warning-list{display:flex;flex-direction:column;gap:5px;margin-top:10px;color:var(--warn);font-size:11px}
.topology-modal-tabs{display:flex;gap:2px;margin:-4px 0 14px;border-bottom:1px solid var(--border)}
.topology-modal-tab{padding:8px 11px;border:0;border-bottom:2px solid transparent;background:none;color:var(--text-muted);font:600 12px var(--font-ui);cursor:pointer}
.topology-modal-tab:hover{color:var(--text-primary)}.topology-modal-tab.on{border-bottom-color:var(--accent);color:var(--text-primary)}
.topology-modal-panel[hidden]{display:none}
.topology-traffic-panel{min-height:430px}
.topology-traffic-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.topology-traffic-window-picker,.topology-traffic-metric-picker{display:inline-flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}
.topology-traffic-window-picker button,.topology-traffic-metric-picker button{padding:6px 10px;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font:700 10.5px var(--font-ui);cursor:pointer}
.topology-traffic-window-picker button:hover,.topology-traffic-metric-picker button:hover{color:var(--text-primary)}
.topology-traffic-window-picker button.on,.topology-traffic-metric-picker button.on{background:color-mix(in srgb,var(--info) 16%,var(--bg-card));color:var(--accent-soft-text)}
.topology-traffic-provenance{display:flex;align-items:center;gap:6px 14px;flex-wrap:wrap;margin-bottom:11px;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);color:var(--text-secondary);font-size:10px}
.topology-traffic-provenance b{margin-right:3px;color:var(--text-muted);font-weight:600}
.topology-traffic-state{display:flex;min-height:260px;align-items:center;justify-content:center;flex-direction:column;gap:7px;padding:30px;border:1px dashed var(--border-strong);border-radius:9px;background:var(--bg-inset);color:var(--text-secondary);text-align:center}
.topology-traffic-state[hidden],.topology-traffic-content[hidden],.topology-traffic-chart-empty[hidden]{display:none}
.topology-link-accessibility{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.topology-traffic-state b{color:var(--text-primary);font-size:12.5px}.topology-traffic-state span{max-width:650px;font-size:11px;line-height:1.55}.topology-traffic-state small{max-width:650px;color:var(--text-muted);font-size:10px;line-height:1.5}
.topology-traffic-state.error{border-color:color-mix(in srgb,var(--err) 46%,var(--border));color:var(--err)}.topology-traffic-state.empty{border-color:color-mix(in srgb,var(--neutral) 42%,var(--border))}
.topology-traffic-state .spinner{width:17px;height:17px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:999px;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.topology-traffic-state .spinner{animation:none}}
.topology-traffic-inline-warning{margin-bottom:10px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--warn) 40%,var(--border));border-radius:7px;background:color-mix(in srgb,var(--warn) 7%,transparent);color:var(--warn);font-size:10.5px}
.topology-traffic-summary{display:flex;min-width:0;flex-direction:column;gap:14px}.topology-traffic-endpoint{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset)}
.topology-traffic-endpoint-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--accent) 6%,var(--bg-surface))}
.topology-traffic-endpoint-head>div{display:flex;align-items:center;gap:7px;min-width:0}.topology-traffic-endpoint-head span{padding:2px 6px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-soft-text);font-size:9.5px;font-weight:700}.topology-traffic-endpoint-head b{min-width:0;font-size:11.5px;overflow-wrap:anywhere}.topology-traffic-endpoint-head small{color:var(--text-muted);font-size:9.5px;white-space:nowrap}
.topology-traffic-entity-list{display:flex;min-width:0;flex-direction:column;gap:12px;padding:11px}.topology-traffic-entity{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--bg-surface)}
.topology-traffic-entity-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-raised) 55%,transparent)}
.topology-traffic-entity-head>div:first-child{display:flex;align-items:center;gap:7px;min-width:0}.topology-traffic-entity-head h5{min-width:0;margin:0;color:var(--text-primary);font-size:11.5px;overflow-wrap:anywhere}
.topology-traffic-kind{display:inline-block;margin-right:5px;padding:1px 5px;border-radius:999px;font-size:8.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase}.topology-traffic-kind.lag{background:color-mix(in srgb,var(--info) 15%,transparent);color:var(--accent-soft-text)}.topology-traffic-kind.interface,.topology-traffic-kind.member{background:color-mix(in srgb,var(--neutral) 16%,transparent);color:var(--text-secondary)}
.topology-traffic-state-pair{display:flex;align-items:center;gap:7px}.topology-traffic-state-pair .lamp-row{gap:3px;font-size:9px}.topology-traffic-state-pair .lamp{width:7px;height:7px}
.topology-traffic-identity{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;border-bottom:1px solid var(--border);background:var(--border)}
.topology-traffic-identity>div{display:flex;min-width:0;align-items:center;gap:6px;padding:7px 9px;background:var(--bg-inset)}.topology-traffic-identity span,.topology-traffic-latest span{color:var(--text-muted);font-size:9px}.topology-traffic-identity code{min-width:0;color:var(--text-secondary);font:9.5px var(--font-mono);overflow-wrap:anywhere}.topology-traffic-identity b{color:var(--text-secondary);font-size:9.5px;font-weight:500}.topology-traffic-identity .badge{margin-left:auto;padding:2px 5px;font-size:8px}
.topology-traffic-latest{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;border-bottom:1px solid var(--border);background:var(--border)}
.topology-traffic-latest>div{display:flex;min-width:0;flex-direction:column;gap:3px;padding:8px 9px;background:var(--bg-surface)}.topology-traffic-latest b{color:var(--text-primary);font:9.5px/1.4 var(--font-mono);overflow-wrap:anywhere}.topology-traffic-latest i{color:var(--text-muted);font-style:normal}
.topology-traffic-chart-card{position:relative;min-width:0;padding:9px 9px 3px;background:var(--bg-inset)}
.topology-traffic-metric-picker{max-width:100%;margin:0 0 5px 2px;flex-wrap:wrap}.topology-traffic-chart{width:100%;height:285px;min-height:240px}
.topology-traffic-chart-empty{position:absolute;inset:72px 9px 9px;display:grid;place-items:center;padding:18px;border-radius:7px;background:var(--bg-inset);color:var(--text-muted);font-size:11px;text-align:center}
.topology-traffic-endpoint-body{display:flex;min-width:0;flex-direction:column;background:var(--bg-inset)}
.topology-traffic-interface-list{display:flex;min-width:0;flex-direction:column;margin:11px 11px 0;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--bg-surface)}
.topology-traffic-interface-row{position:relative;min-width:0;background:var(--bg-surface);transition:background-color .15s ease,box-shadow .15s ease}
.topology-traffic-interface-row+.topology-traffic-interface-row{border-top:1px solid var(--border)}
.topology-traffic-interface-row:hover{background:color-mix(in srgb,var(--info) 3%,var(--bg-surface))}
.topology-traffic-interface-row.on,.topology-traffic-interface-row.highlighted{background:color-mix(in srgb,var(--info) 6%,var(--bg-surface));box-shadow:inset 3px 0 0 color-mix(in srgb,var(--info) 76%,transparent)}
.topology-traffic-interface-row.muted{opacity:.64}
.topology-traffic-interface-row .topology-traffic-entity-head{padding:8px 10px;background:transparent}
.topology-traffic-interface-row .topology-traffic-identity{border-bottom:0}
.topology-traffic-interface-row .topology-traffic-latest{border-top:1px solid var(--border);border-bottom:0}
.topology-traffic-series-selector{display:flex;min-width:0;align-items:center;gap:6px;margin:10px 11px 0;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:color-mix(in srgb,var(--bg-raised) 48%,var(--bg-inset));flex-wrap:wrap}
.topology-traffic-series-selector>span,.topology-traffic-series-selector>strong{flex:none;padding-top:5px;color:var(--text-muted);font-size:9.5px;font-weight:700;letter-spacing:.025em;text-transform:uppercase}
.topology-traffic-series-selector>div{display:flex;min-width:0;align-items:center;gap:6px;flex:1;flex-wrap:wrap}
.topology-traffic-series-chip{--series-color:var(--neutral);display:inline-flex;min-width:0;align-items:center;gap:6px;padding:5px 9px;border:1px solid var(--border);border-radius:999px;background:var(--bg-inset);color:var(--text-secondary);font:650 9.5px/1.2 var(--font-ui);cursor:pointer;transition:opacity .15s ease,border-color .15s ease,background-color .15s ease,color .15s ease,box-shadow .15s ease}
.topology-traffic-series-chip::before{content:"";width:7px;height:7px;flex:none;border-radius:999px;background:var(--series-color);box-shadow:0 0 0 2px color-mix(in srgb,var(--series-color) 14%,transparent)}
.topology-traffic-series-chip>i{display:none}.topology-traffic-series-chip>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topology-traffic-series-chip>small{color:var(--text-muted);font-size:8px;font-weight:700;text-transform:uppercase}
.topology-traffic-series-chip.all{--series-color:var(--info)}
.topology-traffic-series-chip.lag{--series-color:#38BDF8}
.topology-traffic-series-chip.member{--series-color:#A78BFA}
.topology-traffic-series-chip:hover{border-color:color-mix(in srgb,var(--series-color) 55%,var(--border-strong));color:var(--text-primary)}
.topology-traffic-series-chip.on,.topology-traffic-series-chip[aria-pressed="true"]{border-color:color-mix(in srgb,var(--series-color) 68%,var(--border));background:color-mix(in srgb,var(--series-color) 13%,var(--bg-inset));color:var(--text-primary);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--series-color) 12%,transparent)}
.topology-traffic-series-chip.muted,.topology-traffic-series-chip[aria-pressed="false"]{opacity:.52}
.topology-traffic-series-chip.muted:hover,.topology-traffic-series-chip[aria-pressed="false"]:hover{opacity:.88}
.topology-traffic-series-chip:focus-visible{outline:2px solid color-mix(in srgb,var(--series-color) 72%,white);outline-offset:2px}
.topology-traffic-series-chip:disabled{cursor:not-allowed;filter:saturate(.35);opacity:.42}
.topology-traffic-endpoint-body>.topology-traffic-chart-card{margin-top:10px;padding:10px 11px 5px;border-top:1px solid var(--border)}
.topology-traffic-chart-controls{display:flex;min-width:0;align-items:flex-start;gap:7px 10px;margin-bottom:5px;flex-wrap:wrap}
.topology-traffic-chart-controls .topology-traffic-metric-picker{flex:none;margin:0}
.topology-traffic-chart-controls .topology-traffic-series-selector{min-height:35px;margin:0;padding:3px;flex:1 1 360px;background:var(--bg-inset)}
.topology-traffic-chart-controls .topology-traffic-series-chip{padding:6px 9px}
.topology-traffic-direction-key{display:inline-flex;min-height:35px;align-items:center;gap:10px;padding:0 7px;color:var(--text-muted);font-size:9px;white-space:nowrap}
.topology-traffic-direction-key span{display:inline-flex;align-items:center;gap:5px}.topology-traffic-direction-key i{display:block;width:18px;border-top:2px solid var(--text-secondary)}.topology-traffic-direction-key i.out{border-top-style:dashed}
.topology-traffic-endpoint-body>.topology-traffic-chart-card .topology-traffic-chart{height:330px;min-height:275px}
.topology-traffic-endpoint-body>.topology-traffic-chart-card .topology-traffic-chart-empty{inset:74px 11px 10px}
.settings-traffic-cadence-form{display:grid;grid-template-columns:minmax(150px,.55fr) minmax(260px,1.45fr) auto;align-items:end;gap:10px}
.settings-traffic-cadence-form label{margin:0}.settings-traffic-cadence-form input{margin:4px 0 0}
.settings-traffic-cadence-presets{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px}
.settings-traffic-cadence-presets .btn{padding:5px 9px;font-size:10px}
.topology-terminal-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.topology-terminal-head{display:flex;min-width:0;flex:1;align-items:center;justify-content:space-between;gap:18px;margin:0}
.topology-terminal-head h4{font-size:13px}.topology-terminal-head p{max-width:760px;margin-top:2px;color:var(--text-secondary);font-size:10.5px;line-height:1.35}
.topology-terminal-head code{color:var(--accent-soft-text);font:11px var(--font-mono)}
.topology-terminal-mode-picker{display:inline-flex;flex:none;gap:3px;margin:0;padding:3px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}
.topology-terminal-mode-picker button{padding:6px 10px;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font-size:11px;font-weight:700;cursor:pointer}
.topology-terminal-mode-picker button.on{background:color-mix(in srgb,var(--info) 16%,var(--bg-card));color:var(--accent-soft-text)}
.topology-terminal-mode-picker button:disabled{cursor:not-allowed;opacity:.55}
.topology-terminal-status{display:inline-flex;align-items:center;gap:6px;flex:none;padding:3px 9px;border-radius:999px;background:color-mix(in srgb,var(--neutral) 12%,transparent);color:var(--neutral);font-size:10.5px;font-weight:700;white-space:nowrap}
.topology-terminal-status::before{content:"";width:6px;height:6px;border-radius:999px;background:currentColor}
.topology-terminal-status.connecting{background:color-mix(in srgb,var(--info) 12%,transparent);color:var(--info)}
.topology-terminal-status.connected{background:color-mix(in srgb,var(--ok) 12%,transparent);color:var(--ok)}
.topology-terminal-status.error{background:color-mix(in srgb,var(--err) 12%,transparent);color:var(--err)}
.topology-terminal-admin-login{margin:0 0 8px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--warn) 40%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--warn) 7%,transparent)}
.topology-terminal-admin-warning{display:flex;align-items:baseline;gap:7px;color:var(--warn);font-size:10px;line-height:1.35}.topology-terminal-admin-warning b{flex:none;font-size:11px}.topology-terminal-admin-warning span{color:var(--text-secondary)}
.topology-terminal-credential-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:7px}.topology-terminal-credential-grid label{margin:0;color:var(--text-secondary);font-size:10px}.topology-terminal-credential-grid input{margin:3px 0 0;font:11.5px var(--font-mono)}
.topology-terminal-admin-login small{display:block;margin-top:5px;color:var(--text-muted);font-size:9px;line-height:1.35}
.topology-terminal-admin-login[hidden],.topology-terminal-xterm-shell[hidden],#topology-terminal-read-only[hidden]{display:none}
.topology-terminal-actions{display:flex;align-items:center;gap:8px;margin-bottom:8px}.topology-terminal-actions>.t-muted{margin-left:auto;font-size:10.5px}
.topology-terminal-output{height:clamp(440px,52vh,660px);margin:0;padding:13px 14px;overflow:auto;border:1px solid var(--terminal-border);border-radius:8px;background:var(--terminal-bg);color:var(--terminal-fg);font:11.5px/1.55 var(--font-mono);tab-size:4;white-space:pre}
.topology-terminal-xterm-shell{display:grid;grid-template-rows:minmax(0,1fr) auto;height:clamp(440px,52vh,660px);min-height:280px;overflow:hidden;border:1px solid var(--terminal-border);border-radius:8px;background:var(--terminal-bg);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 4%,transparent)}
.topology-terminal-xterm{position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--terminal-bg)}
.topology-terminal-xterm>.xterm{height:100%;padding:10px 12px}
.topology-terminal-xterm .xterm-viewport{background:var(--terminal-bg)!important;scrollbar-color:var(--border-strong) var(--terminal-bg)}
.topology-terminal-xterm .xterm-screen{isolation:isolate}
.topology-terminal-xterm:focus-within{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent)}
.topology-terminal-xterm-note{padding:6px 10px;border-top:1px solid var(--terminal-border);background:var(--terminal-note-bg);color:var(--terminal-note-text);font:9.5px/1.4 var(--font-mono)}
.topology-terminal-shortcuts{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:9px 0}
.topology-terminal-shortcuts button{padding:4px 7px;border:1px solid var(--border);border-radius:5px;background:var(--bg-inset);color:var(--text-muted);font:10px var(--font-mono);cursor:pointer}
.topology-terminal-shortcuts button:hover{border-color:var(--border-strong);color:var(--text-primary)}
.topology-terminal-form{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px}
.topology-terminal-form>span{color:var(--ok);font:700 13px var(--font-mono)}
.topology-terminal-form input{margin:0;font:11.5px var(--font-mono)}
@media(max-width:900px){.topology-detail-grid,.topology-endpoint-grid,.topology-terminal-credential-grid,.batch-recovery-intro,.batch-recovery-credential-grid{grid-template-columns:1fr}.topology-terminal-toolbar{align-items:stretch;flex-direction:column}.topology-terminal-head{align-items:flex-start}.topology-terminal-admin-warning{align-items:flex-start;flex-direction:column;gap:2px}.topology-terminal-output,.topology-terminal-xterm-shell{height:340px}.topo-meta{right:14px;flex-wrap:wrap}.legend{font-size:10.5px}.topology-traffic-toolbar{align-items:stretch;flex-direction:column}.topology-traffic-window-picker{width:max-content;max-width:100%;flex-wrap:wrap}.topology-traffic-metric-picker{display:grid;grid-template-columns:1fr 1fr}.topology-traffic-identity,.topology-traffic-latest{grid-template-columns:repeat(2,minmax(0,1fr))}.topology-traffic-chart{height:265px}.settings-traffic-cadence-form{grid-template-columns:1fr}}
@media(max-width:560px){.topology-traffic-endpoint-head,.topology-traffic-entity-head{align-items:flex-start;flex-direction:column}.topology-traffic-identity,.topology-traffic-latest{grid-template-columns:1fr}.topology-traffic-entity-list{padding:7px}.topology-traffic-chart{height:250px}.topology-traffic-window-picker{display:grid;width:100%;grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){
  .topology-traffic-chart-controls{display:grid;grid-template-columns:minmax(0,1fr) auto}
  .topology-traffic-chart-controls .topology-traffic-metric-picker{grid-column:1/-1;width:max-content;max-width:100%}
  .topology-traffic-chart-controls .topology-traffic-series-selector{min-height:0}
  .topology-traffic-endpoint-body>.topology-traffic-chart-card .topology-traffic-chart{height:300px}
}
@media(max-width:560px){
  .topology-traffic-interface-list{margin:7px 7px 0}
  .topology-traffic-chart-controls{display:flex;align-items:stretch;flex-direction:column}
  .topology-traffic-chart-controls .topology-traffic-metric-picker{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr))}
  .topology-traffic-chart-controls .topology-traffic-series-selector{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));flex-basis:auto}
  .topology-traffic-series-chip{justify-content:center}
  .topology-traffic-direction-key{align-self:flex-start;padding-left:3px}
  .topology-traffic-endpoint-body>.topology-traffic-chart-card{margin-top:8px;padding:8px 7px 3px}
  .topology-traffic-endpoint-body>.topology-traffic-chart-card .topology-traffic-chart{height:270px;min-height:235px}
}

/* inspector drawer */
.inspector{position:fixed;top:0;right:0;width:80vw;max-width:100vw;height:100vh;background:var(--bg-surface);border-left:1px solid var(--border-strong);box-shadow:var(--shadow-pop);z-index:50;transform:translateX(100%);transition:transform .22s ease;display:flex;flex-direction:column}
.inspector.open{transform:translateX(0)}
.insp-h{padding:16px 18px;border-bottom:1px solid var(--border)}
.insp-h .r1{display:flex;align-items:center;gap:10px}
.insp-h h3{font-size:16px;font-weight:600}
.insp-state-reason{max-width:420px;overflow:hidden;text-overflow:ellipsis;
                   color:var(--warn);font-size:11.5px;font-weight:500;white-space:nowrap}
.insp-state-reason.error{color:var(--err)}
.state-reason-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.state-reason-summary{color:var(--warn);font-size:12px;font-weight:600}
.state-reason-summary.error{color:var(--err)}
.state-reason-evidence{display:block;margin-top:5px;max-width:760px;color:var(--text-muted);
                       font:10.5px/1.55 var(--font-mono);overflow-wrap:anywhere}
.insp-x{margin-left:auto;background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer}
.insp-tabs{display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--border)}
.insp-tab{padding:9px 12px;font-size:12px;font-weight:600;color:var(--text-muted);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent}
.insp-tab.on{color:var(--text-primary);border-bottom-color:var(--accent)}
.insp-b{flex:1;overflow-y:auto;padding:16px 18px}
.insp-f{padding:14px 18px;border-top:1px solid var(--border);display:flex;gap:8px}
.lifecycle-banner{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:14px;
                  padding:14px 16px;border:1px solid color-mix(in srgb,var(--err) 42%,var(--border));
                  border-radius:9px;background:color-mix(in srgb,var(--err) 7%,var(--bg-inset));
                  color:var(--text-secondary);font-size:11.5px;line-height:1.55}
.lifecycle-banner>div:first-child{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.lifecycle-banner p{margin:0}
.lifecycle-banner b{color:var(--text-primary)}
.lifecycle-facts{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:7px;width:100%;margin:4px 0}
.lifecycle-facts>span{display:flex;min-width:0;flex-direction:column;padding:8px 9px;border:1px solid var(--border);
                      border-radius:7px;background:var(--bg-surface)}
.lifecycle-facts small{color:var(--text-muted);font-size:9px;text-transform:uppercase;letter-spacing:.04em}
.lifecycle-facts b{overflow:hidden;margin-top:2px;font:600 10.5px var(--font-mono);text-overflow:ellipsis;white-space:nowrap}
.lifecycle-blockers{margin:13px 0 0;padding-left:20px;color:var(--text-secondary);font-size:11.5px;line-height:1.65}
.lifecycle-blockers b{color:var(--err);font:600 10.5px var(--font-mono)}
.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 12px;font-size:12.5px}
.kv dt{color:var(--text-muted)} .kv dd{font-weight:500}
.tpl-meta-key{color:var(--text-muted)}
.tpl-meta-value{font-weight:500;min-width:0;overflow-wrap:anywhere}
.tpl-notes{grid-column:1/-1;margin-top:8px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--warn) 32%,var(--border));border-radius:var(--r-ctl);background:color-mix(in srgb,var(--warn) 7%,var(--bg-inset))}
.tpl-notes-title{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.tpl-notes-title>div{display:flex;flex-direction:column;gap:1px}
.tpl-notes-title strong{font-size:12px;color:var(--text-primary)}
.tpl-notes-title small{font-size:10.5px;color:var(--text-muted)}
.tpl-notes-icon{display:grid;place-items:center;width:22px;height:22px;border-radius:999px;background:color-mix(in srgb,var(--warn) 16%,transparent);border:1px solid color-mix(in srgb,var(--warn) 55%,var(--border));color:var(--warn);font-weight:700}
.tpl-notes ul{padding-left:18px;color:var(--text-secondary);font-size:11.5px;line-height:1.55}
.tpl-notes li+li{margin-top:7px}
@media(max-width:900px){.template-layout{grid-template-columns:1fr}}
.template-workspace{display:grid;grid-template-columns:310px minmax(0,1fr);gap:16px;align-items:start}
.template-library{position:sticky;top:0;overflow:hidden}
.template-filter{padding:12px;border-bottom:1px solid var(--border)}
.template-list{display:flex;flex-direction:column;gap:7px;padding:10px;max-height:560px;overflow:auto}
.template-list-group{display:flex;flex-direction:column;gap:7px}.template-list-group+.template-list-group{margin-top:7px;padding-top:10px;border-top:1px solid var(--border)}
.template-list-group>header{display:flex;flex-direction:column;gap:2px;padding:0 2px}.template-list-group>header b{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary)}.template-list-group>header small{font-size:9.5px;color:var(--text-muted)}
.template-list-item{display:flex;flex-direction:column;gap:7px;width:100%;padding:12px;text-align:left;color:var(--text-primary);background:var(--bg-inset);border:1px solid var(--border);border-radius:8px;cursor:pointer}
.template-list-item:hover{border-color:var(--border-strong);background:var(--bg-raised)}
.template-list-item.selected{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--bg-inset))}
.template-list-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;font-size:12.5px}
.template-list-meta{display:flex;gap:5px;flex-wrap:wrap}
.template-list-meta span{font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);border:1px solid var(--border);border-radius:99px;padding:2px 6px}
.template-list-item small{font-size:10.5px;line-height:1.45;color:var(--text-muted)}
.template-coming{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-top:1px solid var(--border);background:var(--bg-inset)}
.template-coming b{font-size:11px}.template-coming span{font-size:10.5px;line-height:1.45;color:var(--text-muted)}
.template-main{display:grid;grid-template-columns:minmax(390px,.78fr) minmax(460px,1.22fr);gap:16px;align-items:start;min-width:0}
.template-main>.card{min-width:0}
.template-usage{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:11px 16px;border-bottom:1px solid var(--border);background:var(--bg-inset)}
.template-usage>div{display:flex;min-width:0;flex-direction:column;gap:2px}.template-usage span{font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.template-usage b{font:600 13px var(--font-mono);color:var(--text-primary)}.template-usage small{grid-column:1/-1;color:var(--text-muted);font-size:9.5px;line-height:1.45}
.template-editor{padding:14px 16px}
.template-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}
.template-field{margin:0;font-weight:600}
.template-field-wide{grid-column:1/-1}
.template-section-title{grid-column:1/-1;margin:14px 0 2px;padding-top:11px;border-top:1px solid var(--border);font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}
.template-toggle{display:flex;align-items:flex-start;gap:9px;margin-top:13px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}
.template-toggle input{width:auto;margin-top:2px}
.template-toggle span{display:flex;flex-direction:column;gap:2px}
.template-toggle b{font-size:11.5px}.template-toggle small{font-size:10.5px;line-height:1.4;color:var(--text-muted);font-weight:400}
.template-editor-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border);font-size:10.5px;color:var(--text-muted)}
.tpl-confirm-list{max-height:230px;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}
.tpl-confirm-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;padding:8px 10px;border-bottom:1px solid var(--border);font-size:11.5px}
.tpl-confirm-row:last-child{border-bottom:none}
.tpl-confirm-row span{color:var(--text-muted);text-transform:capitalize}.tpl-confirm-row code{color:var(--text-secondary);overflow-wrap:anywhere}
.template-preview{margin:12px 16px;min-width:0;overflow:hidden}
.template-preview pre{width:100%;max-width:100%;max-height:640px;overflow:auto;white-space:pre}
@media(max-width:1350px){.template-main{grid-template-columns:1fr}}
@media(max-width:900px){.template-workspace{grid-template-columns:1fr}.template-library{position:static}.template-editor-grid{grid-template-columns:1fr}.template-field-wide,.template-section-title{grid-column:auto}.template-usage{grid-template-columns:1fr 1fr}}

.operations-kpis{margin-bottom:16px}.operations-kpis .kpi{min-width:0}

/* Central automation creation workspace */
.automation-hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(330px,.8fr);gap:22px;align-items:center;margin-bottom:16px;padding:22px 24px;border:1px solid color-mix(in srgb,var(--accent) 38%,var(--border));border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--bg-surface)),var(--bg-surface))}
.automation-hero h3{margin:11px 0 6px;font-size:22px}.automation-hero p{max-width:760px;color:var(--text-secondary);font-size:12.5px;line-height:1.55}
.automation-safety{display:grid;grid-template-columns:1fr 1fr;gap:8px}.automation-safety span{padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:color-mix(in srgb,var(--bg-inset) 82%,transparent);color:var(--text-secondary);font:600 10.5px var(--font-mono)}
.automation-domain-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
.automation-domain-card{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:1fr auto;gap:12px 13px;min-height:208px;padding:17px;border:1px solid var(--border);border-radius:10px;background:var(--bg-surface)}
.automation-domain-card.featured{border-color:color-mix(in srgb,var(--accent) 52%,var(--border));background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 8%,var(--bg-surface)),var(--bg-surface))}
.automation-domain-card h3{margin:8px 0 5px;font-size:15px}.automation-domain-card p{color:var(--text-muted);font-size:11.5px;line-height:1.5}
.automation-domain-card>.btn{grid-column:1/-1;justify-content:center;align-self:end}.automation-domain-icon{display:grid;place-items:center;width:38px;height:38px;border:1px solid color-mix(in srgb,var(--accent) 48%,var(--border));border-radius:9px;background:color-mix(in srgb,var(--accent) 12%,var(--bg-inset));color:var(--info);font:700 11px var(--font-mono)}
.automation-history-card{overflow:hidden}.automation-create-grid{display:grid;grid-template-columns:minmax(300px,.85fr) minmax(0,1.15fr);gap:20px}
.automation-create-notice{display:block;background:color-mix(in srgb,var(--info) 10%,transparent);color:var(--info);line-height:1.5}.automation-create-notice b{display:block;margin-bottom:3px}
.automation-target-head{display:flex;align-items:flex-end;justify-content:space-between;gap:8px}.automation-target-head>label{margin-bottom:7px}.automation-target-head>div{display:flex;gap:5px}.automation-target-head .btn{padding:4px 9px;font-size:10.5px}
.automation-target-list{display:flex;flex-direction:column;gap:6px;max-height:390px;overflow:auto;padding-right:3px}.automation-target-option{display:flex;align-items:center;gap:10px;margin:0;padding:9px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);cursor:pointer}.automation-target-option:has(input:checked){border-color:color-mix(in srgb,var(--accent) 60%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--bg-inset))}.automation-target-option input{width:auto}.automation-target-option span{display:flex;flex-direction:column;gap:2px}.automation-target-option b{font-size:11.5px;color:var(--text-primary)}.automation-target-option small{font-size:10px;color:var(--text-muted);font-weight:400}
.automation-route-note{margin-top:6px;color:var(--text-muted);font-size:10.5px;line-height:1.45}
.automation-template-warning,.automation-mop-notice{display:block;margin-top:10px;background:color-mix(in srgb,var(--warn) 10%,transparent);color:var(--warn);line-height:1.5}.automation-mop-section{margin-top:12px}
.service-id-status{min-height:17px;margin:5px 1px 0;font-size:10.5px;line-height:1.45;color:var(--text-muted)}.service-id-status.checking{color:var(--text-muted)}.service-id-status.available{color:var(--ok)}.service-id-status.error{color:var(--err)}.service-id-use{margin-left:5px;padding:1px 5px;border:1px solid currentColor;border-radius:4px;background:transparent;color:inherit;font:600 9.5px var(--font-ui);cursor:pointer}
.domain-automation-loading{display:flex;min-height:220px;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center}.domain-automation-loading>b{font-size:14px}.domain-automation-loading>span:last-child{font-size:11px;color:var(--text-muted)}
.domain-automation-stepper{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px}.domain-automation-step{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;color:var(--text-muted);font-size:11px}.domain-automation-step>span{display:grid;place-items:center;width:21px;height:21px;flex:none;border:1px solid var(--border-strong);border-radius:50%;font:700 10px var(--font-mono)}.domain-automation-step.current{border-color:color-mix(in srgb,var(--accent) 60%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--bg-surface));color:var(--text-primary)}.domain-automation-step.current>span{border-color:var(--accent);color:var(--accent)}.domain-automation-step.done{border-color:color-mix(in srgb,var(--ok) 45%,var(--border));background:color-mix(in srgb,var(--ok) 7%,var(--bg-surface));color:var(--ok)}.domain-automation-step.done>span{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}.domain-automation-step.terminal-warning{border-color:color-mix(in srgb,var(--warn) 50%,var(--border));background:color-mix(in srgb,var(--warn) 7%,var(--bg-surface));color:var(--warn)}.domain-automation-step.terminal-warning>span{border-color:var(--warn);color:var(--warn)}.domain-automation-step.terminal-error{border-color:color-mix(in srgb,var(--err) 50%,var(--border));background:color-mix(in srgb,var(--err) 7%,var(--bg-surface));color:var(--err)}.domain-automation-step.terminal-error>span{border-color:var(--err);color:var(--err)}
.domain-automation-intent-banner{display:flex;align-items:center;gap:9px;margin-bottom:12px;background:color-mix(in srgb,var(--info) 9%,transparent);color:var(--text-secondary);line-height:1.45}.domain-automation-intent-banner b{color:var(--info);white-space:nowrap}.domain-automation-blocker,.domain-automation-warning{display:block;margin:10px 0;line-height:1.5}.domain-automation-blocker{background:color-mix(in srgb,var(--err) 10%,transparent);color:var(--err)}.domain-automation-warning{background:color-mix(in srgb,var(--warn) 10%,transparent);color:var(--warn)}.domain-automation-blocker b,.domain-automation-warning b{display:block;margin-bottom:2px}
/* `.banner` is flex and is declared after `.domain-automation-warning`, so it
   wins `display` on equal specificity and turns every inline child into its
   own column. These notices are prose with names and values inside them, so
   they set their own block flow rather than relying on child count. */
.domain-igp-notice{display:block;margin:10px 0 0;padding:9px 11px;border-radius:var(--r-card);font-size:11px;font-weight:500;line-height:1.55}.domain-igp-notice b{font-weight:700}.domain-igp-notice>b:first-child{display:block;margin-bottom:3px;font-size:11.5px}.domain-igp-notice .mono{font-family:var(--font-mono)}.domain-igp-notice.is-blocker{background:color-mix(in srgb,var(--err) 10%,transparent);color:var(--err)}.domain-igp-notice.is-warning{background:color-mix(in srgb,var(--warn) 10%,transparent);color:var(--warn)}
.domain-resource-evidence{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:7px;margin-bottom:14px}.domain-resource-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}.domain-resource-card>div{display:flex;min-width:0;flex-direction:column}.domain-resource-card b{font-size:11.5px}.domain-resource-card span:not(.badge),.domain-resource-card small{overflow:hidden;color:var(--text-muted);font-size:9.5px;text-overflow:ellipsis;white-space:nowrap}.domain-resource-card small{grid-column:1/-1}
.domain-automation-common{display:grid;grid-template-columns:minmax(220px,.45fr) minmax(0,1fr);gap:12px;align-items:end;margin-bottom:14px;padding:11px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.domain-automation-common label{margin:0}.domain-field-help{color:var(--text-muted);font-size:10.5px;line-height:1.45}.domain-automation-grid{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(0,1.25fr);gap:14px}.domain-automation-grid>section,.domain-config-layout>section,.domain-config-endpoint{padding:13px 14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-surface)}.domain-automation-grid h4,.domain-config-layout h4{margin:0 0 5px;font-size:12.5px}.domain-automation-grid section>p,.domain-section-head p{margin:0 0 10px;color:var(--text-muted);font-size:10.5px;line-height:1.45}
.domain-choice-list,.domain-endpoint-list{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow:auto}.domain-choice-card,.domain-member-option{display:flex;align-items:center;gap:9px;margin:0;padding:8px 9px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);cursor:pointer}.domain-choice-card.selected,.domain-member-option.selected{border-color:color-mix(in srgb,var(--accent) 62%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--bg-inset))}.domain-choice-card input,.domain-member-option input{width:auto}.domain-choice-card>span,.domain-member-option>span{display:flex;min-width:0;flex-direction:column}.domain-choice-card b,.domain-member-option b{font-size:11px}.domain-choice-card small,.domain-member-option small{overflow:hidden;color:var(--text-muted);font-size:9.5px;text-overflow:ellipsis;white-space:nowrap}
.domain-endpoint-card{position:relative;display:grid;grid-template-columns:28px repeat(2,minmax(120px,1fr));gap:8px;align-items:end;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.domain-endpoint-card-stacked{grid-template-columns:28px repeat(3,minmax(110px,1fr))}.domain-endpoint-card label{margin:0}.domain-endpoint-index{display:grid;place-items:center;width:25px;height:25px;align-self:center;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--border));border-radius:50%;color:var(--info);font:700 10px var(--font-mono)}.domain-resource-note{grid-column:2/-1;padding:8px;border:1px dashed var(--border);border-radius:6px;color:var(--text-muted);font-size:10px}.domain-resource-note.error{border-color:color-mix(in srgb,var(--err) 50%,var(--border));color:var(--err)}.domain-endpoint-attachment{grid-column:2/-1;display:flex;min-width:0;flex-direction:column;gap:6px}.domain-endpoint-attachment>span{color:var(--text-secondary);font-size:10.5px}.domain-endpoint-attachment .domain-member-grid{max-height:150px}
.domain-config-layout{display:flex;flex-direction:column;gap:12px}.domain-field-grid{display:grid;grid-template-columns:repeat(3,minmax(130px,1fr));gap:8px}.domain-field-grid label{margin:0}.domain-config-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.domain-config-endpoint{min-width:0}.domain-config-endpoint>label{margin-top:8px}.domain-toggle{display:flex;align-items:center;gap:8px;padding:7px 8px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}.domain-toggle input{width:auto}.domain-toggle span{display:flex;flex-direction:column}.domain-toggle b{font-size:10.5px}.domain-toggle small{color:var(--text-muted);font-size:9.5px}.domain-member-grid,.domain-family-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;max-height:210px;overflow:auto}.domain-family-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:9px}.domain-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.domain-segment-list{display:flex;flex-direction:column;gap:6px}.domain-segment-row{display:grid;grid-template-columns:25px 74px minmax(190px,1fr) minmax(190px,.7fr) auto;gap:6px;align-items:end;padding:8px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}.domain-segment-row label{margin:0}.domain-segment-order{display:grid;place-items:center;width:23px;height:23px;align-self:center;border-radius:50%;background:color-mix(in srgb,var(--accent) 13%,var(--bg-raised));color:var(--info);font:700 10px var(--font-mono)}.domain-segment-actions{display:flex;gap:3px}.domain-segment-actions .btn{padding:6px 8px}.domain-segment-structure{display:block;color:var(--text-muted);font:9px var(--font-mono);margin-top:3px}
.sr-path-tools{border-color:color-mix(in srgb,var(--info) 45%,var(--border))!important}.sr-path-actions{display:flex;flex-wrap:wrap;gap:6px}.sr-path-summary{display:grid;gap:7px}.sr-path-summary>div{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}.sr-path-summary small{color:var(--text-muted)}.sr-path-line{height:4px;border-radius:4px}.sr-path-line.primary{background:#ff3ca6}.sr-path-line.backup{background:#f5a400}.sr-backup-policy>.domain-plan-confirm{margin-bottom:12px}.sr-topology-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(270px,.65fr);gap:12px;min-height:560px}.sr-topology-canvas{display:flex;min-width:0;flex-direction:column;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset);overflow:hidden}.sr-topology-canvas svg{width:100%;min-height:500px;flex:1}.sr-topology-link{stroke:color-mix(in srgb,var(--ok) 42%,var(--border));stroke-width:1.5;opacity:.7}.sr-topology-link.primary{stroke:#ff3ca6;stroke-width:6;opacity:1}.sr-topology-link.backup{stroke:#f5a400;stroke-width:5;opacity:1}.sr-topology-node circle{fill:var(--text-muted);stroke:var(--bg-surface);stroke-width:3}.sr-topology-node.active circle{fill:var(--info)}.sr-topology-node text{fill:var(--text-secondary);font:600 11px var(--font-sans);paint-order:stroke;stroke:var(--bg-inset);stroke-width:4px;stroke-linejoin:round}.sr-topology-legend{display:flex;gap:15px;padding:9px 12px;border-top:1px solid var(--border);color:var(--text-muted);font-size:10px}.sr-topology-legend span:before{display:inline-block;width:18px;height:3px;margin-right:6px;border-radius:3px;background:var(--border-strong);vertical-align:middle;content:""}.sr-topology-legend .primary:before{background:#ff3ca6}.sr-topology-legend .backup:before{background:#f5a400}.sr-topology-paths{display:flex;flex-direction:column;gap:10px}.sr-topology-path{padding:11px;border:1px solid var(--border);border-left:4px solid var(--border);border-radius:8px;background:var(--bg-surface)}.sr-topology-path.primary{border-left-color:#ff3ca6}.sr-topology-path.backup{border-left-color:#f5a400}.sr-topology-path h4{margin:0 0 8px}.sr-topology-path>div{display:grid;grid-template-columns:22px minmax(70px,.65fr) minmax(0,1fr);gap:6px;align-items:center;padding:6px 0;border-top:1px solid var(--border)}.sr-topology-path>div span{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--bg-inset);font:700 9px var(--font-mono)}.sr-topology-path code{overflow:hidden;color:var(--text-muted);font-size:9px;text-overflow:ellipsis}
.domain-name-validation{display:block;margin-top:4px;color:var(--text-muted);font-size:9.5px;line-height:1.3}.domain-name-validation.available{color:var(--ok)}.domain-name-validation.error{color:var(--err)}
.domain-derived-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px;padding:8px 9px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);font-size:10.5px}.domain-derived-row span{color:var(--text-muted)}.domain-plan-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-bottom:12px}.domain-plan-summary>div{display:flex;min-width:0;flex-direction:column;gap:3px;padding:9px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}.domain-plan-summary span{color:var(--text-muted);font-size:9.5px;text-transform:uppercase}.domain-plan-summary b{overflow:hidden;font-size:11px;text-overflow:ellipsis}
.domain-review-targets{display:flex;flex-direction:column;gap:8px;max-height:500px;overflow:auto}.domain-review-target{padding:10px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg-surface)}.domain-review-target-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}.domain-review-target-head>div{display:flex;flex-direction:column}.domain-review-target-head b{font-size:12px}.domain-review-target-head span:not(.badge){color:var(--text-muted);font:9.5px var(--font-mono)}.domain-review-target details{margin-top:6px}.domain-review-target summary{cursor:pointer;color:var(--text-secondary);font-size:10.5px}.domain-review-target pre,.domain-check-columns pre,.domain-preview-raw{max-height:230px;overflow:auto;padding:8px;border-radius:6px;background:var(--bg-inset);white-space:pre-wrap;font:10px/1.45 var(--font-mono);color:var(--text-secondary)}.domain-check-columns{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:7px}.domain-check-columns b{font-size:10px}.domain-plan-confirm{display:flex;align-items:flex-start;gap:9px;margin-top:13px;padding:11px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.domain-plan-confirm input{width:auto}.domain-plan-confirm span{display:flex;flex-direction:column}.domain-plan-confirm b{font-size:11.5px}.domain-plan-confirm small{margin-top:2px;color:var(--text-muted);font-size:10px}.domain-plan-created{text-align:left}.domain-plan-created>span{margin-bottom:10px}.domain-plan-created h3{margin:8px 0 13px;font-size:15px}.domain-plan-created details{margin-top:12px}.domain-approval-links{margin-top:12px}.domain-approval-links h4{margin:0 0 6px}.domain-approval-links a{color:var(--accent);font-size:10px}.domain-approval-note{margin-top:12px;padding:12px;border:1px solid var(--border);border-radius:9px;background:color-mix(in srgb,var(--bg-inset) 82%,var(--bg-surface));transition:border-color .15s ease,background .15s ease}.domain-approval-note:focus-within{border-color:color-mix(in srgb,var(--accent) 70%,var(--border));background:var(--bg-inset);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}.domain-approval-note-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.domain-approval-note-head label{display:flex;flex-direction:column;gap:2px;margin:0}.domain-approval-note-head b{color:var(--text-primary);font-size:11.5px}.domain-approval-note-head small{color:var(--text-muted);font-size:10px;font-weight:400}.domain-approval-note-head>span{flex:none;color:var(--text-muted);font:9.5px var(--font-mono)}.domain-approval-note textarea{display:block;width:100%;min-height:76px;margin-top:9px;padding:9px 11px;resize:vertical;border:1px solid var(--border-strong);border-radius:7px;outline:none;background:var(--bg-base);color:var(--text-primary);font:11.5px/1.5 var(--font-ui);caret-color:var(--accent);transition:border-color .15s ease,box-shadow .15s ease}.domain-approval-note textarea::placeholder{color:var(--text-muted);opacity:.8}.domain-approval-note textarea:hover{border-color:color-mix(in srgb,var(--text-secondary) 45%,var(--border))}.domain-approval-note textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}
@media(max-width:1100px){.automation-domain-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.automation-hero,.automation-create-grid,.domain-automation-grid,.sr-topology-layout{grid-template-columns:1fr}.domain-config-pair{grid-template-columns:1fr}.domain-field-grid{grid-template-columns:1fr 1fr}.domain-endpoint-card,.domain-endpoint-card-stacked{grid-template-columns:28px 1fr 1fr}.domain-resource-note{grid-column:2/-1}}
@media(max-width:680px){.automation-domain-grid{grid-template-columns:1fr}.automation-safety,.domain-config-pair,.domain-field-grid,.domain-plan-summary,.domain-check-columns{grid-template-columns:1fr}.automation-hero{padding:17px}.domain-automation-stepper{grid-template-columns:1fr 1fr}.domain-automation-common{grid-template-columns:1fr}.domain-endpoint-card,.domain-endpoint-card-stacked{grid-template-columns:28px 1fr}.domain-endpoint-card label,.domain-resource-note{grid-column:2}.domain-member-grid,.domain-family-grid{grid-template-columns:1fr}.domain-segment-row{grid-template-columns:25px 65px 1fr}.domain-segment-actions{grid-column:2/-1}}

/* Contextual multi-endpoint service creation */
.service-table-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin-bottom:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}
.service-table-actions>div{display:flex;flex-direction:column;gap:2px}.service-table-actions span,.service-endpoint-head span,.service-plan-endpoint span{font-size:10.5px;color:var(--text-muted)}
.service-table-actions>.service-action-buttons{flex-direction:row;gap:7px}.inventory-detail-row{cursor:pointer}.inventory-detail-row:hover td{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.service-create-grid{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:20px}.service-create-fields{min-width:0}
.service-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.service-field-wide{grid-column:1/-1}
.input-static{width:100%;padding:8px 10px;border:1px solid color-mix(in srgb,var(--info) 45%,var(--border));border-radius:var(--r-ctl);background:color-mix(in srgb,var(--info) 8%,var(--bg-inset));color:var(--info);font:600 12.5px var(--font-ui)}
.service-endpoint-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.service-endpoint-head>div:first-child{display:flex;flex-direction:column}.service-endpoint-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}.service-resource-refresh-status{margin:0 0 9px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;color:var(--text-muted);font-size:10.5px;line-height:1.4}.service-resource-refresh-status.running{color:var(--info);border-color:color-mix(in srgb,var(--info) 35%,var(--border));background:color-mix(in srgb,var(--info) 7%,transparent)}.service-resource-refresh-status.available{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 35%,var(--border));background:color-mix(in srgb,var(--ok) 7%,transparent)}.service-resource-refresh-status.error{color:var(--err);border-color:color-mix(in srgb,var(--err) 35%,var(--border));background:color-mix(in srgb,var(--err) 7%,transparent)}
.service-endpoints{display:flex;flex-direction:column;gap:7px;max-height:430px;overflow:auto}
.service-endpoint-card{flex:0 0 auto;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);overflow:hidden}
.service-endpoint-row{display:grid;grid-template-columns:28px minmax(145px,1.4fr) minmax(105px,1fr) 72px 34px;align-items:end;gap:7px;padding:9px}
.service-endpoint-row label{margin-top:0}.service-endpoint-index{display:grid;place-items:center;width:24px;height:24px;margin-bottom:5px;border-radius:99px;background:var(--bg-raised);font:600 10px var(--font-mono)}
.service-endpoint-access-resource{grid-column:2/4}.service-endpoint-vlan{grid-column:4/5}
.service-endpoint-vprn-fields{grid-column:2/-1;display:grid;grid-template-columns:minmax(120px,1.2fr) minmax(120px,1fr) 74px;gap:7px}
.service-access-profile{margin:0 9px 9px 44px;padding:9px 10px;border:1px solid color-mix(in srgb,var(--info) 35%,var(--border));border-radius:7px;background:color-mix(in srgb,var(--info) 5%,var(--bg-base))}.service-access-profile-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.service-access-profile-head b{font-size:10.5px}.service-access-profile-head span{color:var(--text-muted);font-size:9.5px}.service-access-profile-grid{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));align-items:end;gap:7px}.service-access-profile-grid label{margin-top:0}.service-access-sap .input-static{padding:7px 9px;font-size:10.5px}
.service-bindings{display:flex;flex-wrap:wrap;gap:6px;padding:0 9px 9px 44px}.service-binding-row{display:flex;align-items:center;gap:7px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-base);font-size:10.5px;color:var(--text-secondary)}.service-binding-row input{width:88px}.service-binding-vc{font-family:var(--font-mono);color:var(--text-muted)}
.service-vprn-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.service-resource-warning{margin:0 9px 9px 44px;padding:6px 8px;border-radius:6px;background:color-mix(in srgb,var(--warn) 10%,transparent);color:var(--warn);font-size:10.5px}
.service-endpoint-remove{grid-column:5;grid-row:1;width:32px;margin-bottom:1px}.service-plan-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px}
.service-plan-summary>div{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}
.service-plan-summary span{font-size:10px;color:var(--text-muted);text-transform:uppercase}.service-plan-endpoints{display:flex;flex-direction:column;gap:8px;max-height:390px;overflow:auto}
.service-plan-endpoint{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px}.service-plan-endpoint>div{display:flex;flex-direction:column}
.service-plan-endpoint details{grid-column:1/-1}.service-plan-endpoint summary{cursor:pointer;font-size:10.5px;color:var(--text-secondary)}.service-plan-endpoint pre{max-height:180px;overflow:auto;white-space:pre-wrap;font:10px/1.45 var(--font-mono);color:var(--text-secondary)}
@media(max-width:1000px){.service-create-grid{grid-template-columns:1fr}.service-plan-summary{grid-template-columns:1fr 1fr}.service-access-profile-grid{grid-template-columns:1fr 1fr}}

/* misc */
.empty{display:grid;place-items:center;text-align:center;padding:64px 20px;color:var(--text-secondary)}
.empty .ic{width:44px;height:44px;border-radius:12px;background:var(--bg-raised);border:1px solid var(--border);display:grid;place-items:center;margin:0 auto 14px}
.empty .ic svg{width:20px;height:20px;stroke:var(--text-muted);fill:none;stroke-width:1.6}
.matrix td.cell{text-align:center}
.mdot{display:inline-block;width:12px;height:12px;border-radius:4px}
.banner{display:flex;align-items:center;gap:10px;padding:11px 16px;border-radius:var(--r-card);margin-bottom:16px;font-weight:600;font-size:12.5px}
.stepper{display:flex;gap:0;margin:4px 0 20px}
.step{flex:1;text-align:center;position:relative;padding-top:22px;font-size:11.5px;color:var(--text-muted);font-weight:600}
.step::before{content:"";position:absolute;top:7px;left:50%;width:100%;height:2px;background:var(--border)}
.step:last-child::before{display:none}
.step i{position:absolute;top:0;left:50%;transform:translateX(-50%);width:15px;height:15px;border-radius:999px;background:var(--bg-raised);border:2px solid var(--border-strong);z-index:1}
.step.done i{background:var(--ok);border-color:var(--ok)}
.step.cur i{background:var(--bg-surface);border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 25%,transparent)}
.step.done{color:var(--text-secondary)} .step.cur{color:var(--text-primary)}
.note{font-size:11.5px;color:var(--text-muted);padding:10px 2px}
input,select{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--r-ctl);color:var(--text-primary);font:12.5px var(--font-ui);padding:8px 10px;width:100%}
input:focus,select:focus{outline:none;border-color:var(--accent)}
label{display:block;font-size:11.5px;font-weight:600;color:var(--text-secondary);margin:12px 0 5px}
.user-permission-delta{display:flex;gap:6px;margin-top:5px;color:var(--text-muted);font:9.5px var(--font-mono)}.user-permission-delta span:first-child{color:var(--ok)}.user-permission-delta span:nth-child(2){color:var(--warn)}
.user-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.user-edit-grid label:last-child{grid-column:1/-1}.user-edit-grid input,.user-edit-grid select{margin-top:5px}
.permission-override-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}.permission-override-head h4{margin:0 0 3px;font-size:12.5px}.permission-override-head p{max-width:590px;margin:0;color:var(--text-muted);font-size:10.5px;line-height:1.45}.permission-override-head>span{flex:none;padding:4px 7px;border-radius:999px;background:var(--bg-raised);color:var(--text-secondary);font:9.5px var(--font-mono)}
.permission-override-list{display:flex;max-height:390px;flex-direction:column;gap:6px;margin-top:10px;overflow:auto}.permission-override-row{display:grid;grid-template-columns:minmax(0,1fr) 190px;align-items:center;gap:14px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.permission-override-row>div:first-child{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:3px 8px}.permission-override-row b{font-size:11px}.permission-override-row code{color:var(--text-muted);font:9px var(--font-mono)}.permission-override-row small{grid-column:1/-1;color:var(--text-muted);font-size:9.5px;line-height:1.35}.permission-override-row>div:last-child{display:flex;flex-direction:column;gap:4px}.permission-override-row>div:last-child span{color:var(--text-muted);font-size:9px}.permission-override-row select{padding:6px 8px;font-size:10.5px}
.group-permission-list{display:flex;max-height:430px;flex-direction:column;gap:6px;margin-top:10px;overflow:auto}.group-permission-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);cursor:pointer}.group-permission-row input{width:auto;margin:0}.group-permission-row>span:nth-child(2){display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:3px 8px}.group-permission-row b{font-size:11px}.group-permission-row code{color:var(--text-muted);font:9px var(--font-mono)}.group-permission-row small{grid-column:1/-1;color:var(--text-muted);font-size:9.5px;line-height:1.35}.group-permission-row:has(input:checked){border-color:color-mix(in srgb,var(--info) 42%,var(--border));background:color-mix(in srgb,var(--info) 7%,var(--bg-inset))}
.group-default-table{table-layout:fixed}.group-default-table th:first-child{width:18%}.group-default-table th:nth-child(2){width:34%}.group-default-table th:nth-child(4){width:118px}.group-default-table td{height:auto;vertical-align:top;white-space:normal;overflow-wrap:anywhere}.group-default-table td:last-child{vertical-align:middle;text-align:right}
.self-account-card{margin-top:16px}.self-account-layout{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(360px,1.1fr);gap:24px;padding:18px}.self-account-profile{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.self-account-profile label:first-child,.self-account-profile .self-account-actions,.self-account-profile .note{grid-column:1/-1}.self-account-profile input{margin-top:5px}.self-account-profile input:disabled{color:var(--text-secondary);background:var(--bg-raised)}.self-account-actions{justify-content:flex-start;margin-top:4px}.self-account-access{padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-inset)}.self-account-access h4{margin:0 0 5px;font-size:13px}.self-account-access p{margin:0 0 12px;font-size:10.5px;line-height:1.45}.self-account-permissions,.self-account-denials{display:flex;flex-wrap:wrap;gap:6px}.self-account-denials{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.self-account-denials b{width:100%;font-size:10.5px}
@media(max-width:850px){.self-account-layout{grid-template-columns:1fr}.self-account-profile{grid-template-columns:1fr}}
@media(max-width:650px){.user-edit-grid,.permission-override-row{grid-template-columns:1fr}.permission-override-head{flex-direction:column}.permission-override-list{max-height:none}}

/* Governed template type builder */
.template-type-layout{display:grid;grid-template-columns:minmax(260px,.7fr) minmax(0,1.3fr);gap:20px}
.template-type-heading h4{margin:0}.template-type-heading p{margin:4px 0 12px;color:var(--muted);font-size:11px}
.template-type-catalog{display:flex;flex-direction:column;gap:8px;max-height:680px;overflow:auto}
.template-type-item{border:1px solid var(--border);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:5px}
.template-type-item>div{display:flex;align-items:center;justify-content:space-between;gap:8px}
.template-type-item small{color:var(--muted)}.template-type-item .btn{align-self:flex-start;margin-top:4px}
.template-type-ai{border:1px solid var(--border);border-radius:8px;padding:10px;margin:12px 0}
.template-type-ai summary{cursor:pointer;font-weight:700;margin-bottom:8px}
.template-type-ai textarea{display:block;width:100%;min-height:112px;resize:vertical}
.template-type-ai .btn{margin-top:8px}
.template-type-form{display:flex;flex-direction:column;gap:8px}
.template-type-two,.template-type-three{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.template-type-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.template-type-form textarea{width:100%;resize:vertical}
@media(max-width:980px){.template-type-layout{grid-template-columns:1fr}.template-type-two,.template-type-three{grid-template-columns:1fr}}

/* MOP run detail */
#modal-body:has(#mop-history-reason)>.banner{
  margin-bottom:20px;
  padding:14px 16px;
  border:1px solid color-mix(in srgb,var(--warn) 28%,var(--border));
  line-height:1.55;
}
#modal-body label[for="mop-history-reason"],
#modal-body label[for="mop-history-confirm"]{
  margin:0 0 7px;
  color:var(--text-primary);
  font-size:11.5px;
  font-weight:650;
  letter-spacing:.01em;
}
#modal-body label[for="mop-history-confirm"]{
  margin-top:2px;
}
#modal-body label[for="mop-history-confirm"] .mono{
  display:inline-flex;
  align-items:center;
  margin:0 3px;
  padding:2px 7px;
  border:1px solid color-mix(in srgb,var(--err) 28%,var(--border));
  border-radius:6px;
  background:color-mix(in srgb,var(--err) 7%,var(--bg-inset));
  color:var(--err);
  font-size:10px;
  letter-spacing:.02em;
  vertical-align:1px;
}
#mop-history-reason,
#mop-history-confirm{
  display:block;
  width:100%;
  border:1px solid var(--border-strong);
  border-radius:9px;
  outline:none;
  background:color-mix(in srgb,var(--bg-inset) 86%,var(--bg-surface));
  color:var(--text-primary);
  caret-color:var(--accent);
  transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;
}
#mop-history-reason{
  min-height:112px;
  max-height:280px;
  margin:0 0 19px;
  padding:11px 13px;
  resize:vertical;
  font:12.5px/1.55 var(--font-ui);
}
#mop-history-confirm{
  min-height:42px;
  padding:9px 12px;
  font:12px var(--font-mono);
  letter-spacing:.015em;
}
#mop-history-reason:hover,
#mop-history-confirm:hover{
  border-color:color-mix(in srgb,var(--text-secondary) 54%,var(--border));
  background:var(--bg-inset);
}
#mop-history-reason:focus,
#mop-history-confirm:focus{
  border-color:var(--accent);
  background:var(--bg-inset);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent);
}
#mop-history-confirm::placeholder{
  color:var(--text-muted);
  opacity:.78;
}

.mop-compose-rail{display:flex;align-items:center;gap:10px;margin:-2px 0 20px;padding:12px 14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset)}
.mop-compose-rail-step{display:flex;align-items:center;gap:8px;white-space:nowrap;color:var(--text-muted)}
.mop-compose-rail-step span{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--border-strong);border-radius:99px;background:var(--bg-raised);font:600 10px var(--font-mono)}
.mop-compose-rail-step b{font-size:11.5px}.mop-compose-rail-step.current{color:var(--text-primary)}.mop-compose-rail-step.current span{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--bg-raised));color:var(--accent)}.mop-compose-rail-step.done{color:var(--ok)}.mop-compose-rail-step.done span{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 15%,var(--bg-raised));color:var(--ok)}
.mop-compose-rail-line{height:1px;min-width:26px;flex:1;background:var(--border)}.mop-compose-body{min-height:430px}.mop-compose-info{display:block;border:1px solid color-mix(in srgb,var(--info) 28%,var(--border));background:color-mix(in srgb,var(--info) 8%,var(--bg-raised));color:var(--text-secondary);line-height:1.55}.mop-compose-info b{display:block;color:var(--info);margin-bottom:2px}
.mop-type-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}.mop-type-card{position:relative;display:flex;min-width:0;flex-direction:column;gap:3px;padding:11px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.mop-type-card b{font-size:11.5px}.mop-type-card span{overflow:hidden;color:var(--text-muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.mop-type-card em{position:absolute;top:10px;right:10px;color:var(--info);font-size:9.5px;font-style:normal}
.mop-compose-head{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:18px 0 8px}.mop-compose-head h4{margin:0}.mop-compose-head p{margin:3px 0 0;color:var(--text-muted);font-size:10.5px}.mop-plan-list{display:flex;max-height:360px;flex-direction:column;gap:7px;overflow:auto}.mop-plan-choice{display:grid;grid-template-columns:auto 28px minmax(0,1fr) auto;align-items:center;gap:10px;margin:0;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);cursor:pointer}.mop-plan-choice:hover{border-color:var(--text-muted)}.mop-plan-choice.selected{border-color:color-mix(in srgb,var(--accent) 65%,var(--border));background:color-mix(in srgb,var(--accent) 7%,var(--bg-inset))}.mop-plan-choice input{width:14px;height:14px;accent-color:var(--accent)}.mop-plan-choice>span:nth-of-type(2){display:flex;min-width:0;flex-direction:column;gap:2px}.mop-plan-choice small,.mop-plan-choice code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mop-plan-choice small{color:var(--text-secondary);font-size:10.5px}.mop-plan-choice code{color:var(--text-muted);font-size:9.5px}.mop-plan-choice>em{color:var(--text-muted);font-size:9.5px;font-style:normal}.mop-plan-order{display:grid!important;place-items:center;width:25px;height:25px;border-radius:99px;background:var(--bg-raised);color:var(--text-muted);font:600 10px var(--font-mono)}.mop-plan-choice.selected .mop-plan-order{background:var(--accent);color:#fff}
.mop-order-list{display:flex;flex-direction:column;gap:8px}.mop-order-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset)}.mop-order-row>span{display:grid;place-items:center;width:30px;height:30px;border-radius:99px;background:color-mix(in srgb,var(--accent) 16%,var(--bg-raised));color:var(--accent);font:700 11px var(--font-mono)}.mop-order-row>div:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:3px}.mop-order-row small{color:var(--text-muted)}.mop-order-actions{display:flex;gap:6px}.mop-order-actions .btn{padding:5px 9px}
.mop-review-summary{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:12px}.mop-review-summary>*{padding:5px 9px;border:1px solid var(--border);border-radius:99px;background:var(--bg-inset);font-size:10.5px}.mop-review-summary b{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));color:var(--accent)}.mop-component-review{display:flex;max-height:510px;flex-direction:column;gap:10px;overflow:auto}.mop-component-card{border:1px solid var(--border);border-radius:9px;background:var(--bg-inset);overflow:hidden}.mop-component-card>header{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-raised)}.mop-component-card>header>span{display:grid;place-items:center;width:25px;height:25px;border-radius:99px;background:var(--accent);color:#fff;font:700 10px var(--font-mono)}.mop-component-card>header>div{display:flex;min-width:0;flex-direction:column}.mop-component-card header small,.mop-component-card header em{color:var(--text-muted);font-size:9.5px;font-style:normal}.mop-component-card>div{padding:8px 10px}.mop-review-target{margin-top:6px;border:1px solid var(--border);border-radius:7px;background:var(--bg-base);overflow:hidden}.mop-review-target:first-child{margin-top:0}.mop-review-target summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;cursor:pointer}.mop-review-target summary code{color:var(--text-muted);font-size:9.5px}.mop-review-target h5{margin:9px 10px 4px;color:var(--text-muted);font-size:9px;letter-spacing:.04em;text-transform:uppercase}.mop-review-target pre{max-height:190px;margin:0 10px 10px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-inset);color:var(--text-secondary);font:10px/1.5 var(--font-mono);overflow:auto;white-space:pre-wrap}
.mop-govern-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:20px}.mop-govern-grid>div{padding:14px 16px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset)}.mop-govern-grid h4{margin-top:0}.mop-govern-grid .domain-plan-confirm{margin-top:18px}
.mop-mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.mop-mode-tabs button{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset);color:var(--text-secondary);text-align:left;cursor:pointer}.mop-mode-tabs button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,var(--bg-inset));color:var(--text-primary)}.mop-mode-tabs small{color:var(--text-muted);font-size:10px}
.mop-preset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.mop-preset-card{display:flex;min-height:88px;flex-direction:column;gap:5px;padding:13px 15px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset);color:var(--text-primary);text-align:left;cursor:pointer}.mop-preset-card:hover{border-color:var(--accent)}.mop-preset-card span{color:var(--text-secondary);font-size:11px}.mop-preset-card small{margin-top:auto;color:var(--info);font:9.5px var(--font-mono)}
.mop-blueprint-sequence{display:flex;flex-direction:column;gap:7px;margin-top:12px}.mop-blueprint-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.mop-blueprint-row>span{display:grid;place-items:center;width:28px;height:28px;border-radius:99px;background:color-mix(in srgb,var(--accent) 18%,var(--bg-raised));color:var(--accent);font:700 10px var(--font-mono)}.mop-blueprint-row>div:nth-child(2){display:flex;flex-direction:column;gap:2px}.mop-blueprint-row small{color:var(--text-muted);font-size:9.5px}.mop-blueprint-add{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.mop-config-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:12px;margin-top:14px}.mop-config-layout>nav{display:flex;flex-direction:column;gap:6px}.mop-config-layout>nav button{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);color:var(--text-secondary);text-align:left;cursor:pointer}.mop-config-layout>nav button.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,var(--bg-inset));color:var(--text-primary)}.mop-config-layout>nav span{display:grid;place-items:center;width:24px;height:24px;border-radius:99px;background:var(--bg-raised);font:700 9px var(--font-mono)}.mop-config-layout>nav b{overflow:hidden;font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.mop-config-layout>section{min-width:0;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset);overflow:hidden}.mop-config-layout>section>header{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--border);background:var(--bg-raised)}.mop-config-layout>section>header span{color:var(--info);font:9.5px var(--font-mono)}.mop-config-layout>section>header h4{margin:0}.mop-config-layout>section>footer{display:flex;justify-content:flex-end;gap:7px;padding:10px 14px;border-top:1px solid var(--border)}.mop-config-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:8px 14px 16px}.mop-config-form>div{min-width:0}.mop-config-form label{margin-top:10px}
.mop-run-stepper{margin:2px 0 18px}
.mop-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.mop-ready-value{font-size:19px!important;margin-top:9px!important}
.mop-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.mop-card-body{padding:14px 16px}
.mop-signatures{display:flex;flex-direction:column;gap:7px}
.mop-signature{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:9px 11px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);font-size:11.5px}
.mop-signature time{color:var(--text-muted)}
.mop-signature small{grid-column:1/-1;color:var(--text-secondary)}
.mop-approval-form{display:grid;grid-template-columns:1fr 1.5fr auto auto;align-items:end;gap:8px;margin-top:12px}
.mop-approval-form label{margin-top:0}
.mop-intent{display:grid;grid-template-columns:auto 1fr;gap:10px;margin-top:12px;align-items:center;font-size:11px;color:var(--text-muted)}
.mop-intent code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:10.5px var(--font-mono);color:var(--text-secondary)}
.mop-gates{display:grid;grid-template-columns:1fr;gap:8px}
.mop-gate{display:flex;align-items:flex-start;gap:9px;padding:8px 10px;border-radius:7px;border:1px solid var(--border);background:var(--bg-inset)}
.mop-gate-dot{width:9px;height:9px;border-radius:99px;margin-top:4px;background:var(--neutral);flex:none}
.mop-gate.ok .mop-gate-dot{background:var(--ok)}
.mop-gate.blocked .mop-gate-dot{background:var(--warn)}
.mop-gate b{display:block;font-size:11.5px}.mop-gate small{display:block;color:var(--text-muted);font-size:10.5px;margin-top:1px}
.mop-execute-row{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:11px}
.mop-criteria-grid{grid-template-columns:1fr 1fr}
.mop-criteria{padding-left:18px;color:var(--text-secondary);font-size:11.5px}.mop-criteria li+li{margin-top:5px}
.mop-target-card{margin-bottom:14px;overflow:hidden}
.mop-target-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid var(--border)}
.mop-target-name{font-weight:600}.mop-target-name .mono{font-size:10.5px;margin-left:6px}.mop-target-sub{font-size:10.5px;color:var(--text-muted);margin-top:2px}
.mop-target-gates{display:flex;gap:6px;flex-wrap:wrap;padding:8px 16px;background:var(--bg-inset);border-bottom:1px solid var(--border)}
.mop-mini-gate{font-size:9.5px;padding:2px 7px;border:1px solid var(--border);border-radius:99px;color:var(--text-muted)}
.mop-mini-gate.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 42%,var(--border))}.mop-mini-gate.blocked{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 42%,var(--border))}
.mop-step-cells{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:6px;padding:10px 16px;border-bottom:1px solid var(--border)}
.mop-step-cell{display:flex;align-items:center;gap:6px;padding:5px 7px;border-radius:6px;background:var(--bg-raised);border:1px solid var(--border);color:var(--text-muted)}
.mop-step-cell span{display:grid;place-items:center;width:18px;height:18px;border-radius:99px;background:var(--bg-inset);font:600 9px var(--font-mono)}.mop-step-cell small{font-size:9.5px;text-transform:uppercase}
.mop-step-cell.running{color:var(--info);border-color:var(--info)}.mop-step-cell.passed{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 55%,var(--border))}.mop-step-cell.failed,.mop-step-cell.unknown,.mop-step-cell.aborted{color:var(--err);border-color:var(--err)}
.mop-step-row{display:grid;grid-template-columns:28px 60px minmax(0,1fr) 50px auto;align-items:start;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border)}.mop-step-row:last-child{border-bottom:none}
.mop-step-index{font:600 10px var(--font-mono);color:var(--text-muted);padding-top:3px}.mop-kind{justify-content:center;min-width:56px}.mop-step-title{font-size:12.5px}.mop-step-meta{font-size:10px;color:var(--text-muted);margin-top:2px;overflow-wrap:anywhere}.mop-step-time{font:10.5px var(--font-mono);color:var(--text-muted);padding-top:3px;text-align:right}
.mop-evidence{margin-top:6px;border:1px solid var(--border);border-radius:6px;background:var(--bg-inset);overflow:hidden}.mop-evidence summary{cursor:pointer;padding:5px 8px;color:var(--text-secondary);font-size:10px}.mop-evidence pre{padding:7px 9px;border-top:1px solid var(--border);font:10px/1.5 var(--font-mono);color:var(--text-secondary);white-space:pre-wrap;max-height:160px;overflow:auto}.mop-change-link{display:inline-block;font-size:10.5px;margin-top:5px}
.mop-composition-card,.mop-ai-review-card{margin-bottom:14px}.mop-run-sequence{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px;padding:13px 16px}.mop-run-sequence>div{display:grid;grid-template-columns:28px minmax(0,1fr);align-items:start;gap:8px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.mop-run-sequence>div>span{display:grid;place-items:center;width:24px;height:24px;border-radius:99px;background:color-mix(in srgb,var(--accent) 16%,var(--bg-raised));color:var(--accent);font:700 10px var(--font-mono)}.mop-run-sequence section{display:flex;min-width:0;flex-direction:column;gap:2px}.mop-run-sequence small,.mop-run-sequence code{overflow:hidden;color:var(--text-muted);font-size:9.5px;text-overflow:ellipsis;white-space:nowrap}.mop-ai-finding{position:relative;display:flex;flex-direction:column;gap:2px;margin-top:7px;padding:8px 10px 8px 13px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}.mop-ai-finding:before{content:"";position:absolute;top:0;bottom:0;left:0;width:3px;background:var(--neutral)}.mop-ai-finding.high:before,.mop-ai-finding.critical:before{background:var(--err)}.mop-ai-finding.medium:before{background:var(--warn)}.mop-ai-finding.low:before{background:var(--info)}.mop-ai-finding b{font-size:11px}.mop-ai-finding span{color:var(--text-secondary);font-size:10.5px}.mop-ai-finding em{color:var(--text-muted);font-size:9px;font-style:normal}.mop-ai-output{min-height:100px;margin-top:12px}.mop-ai-result{padding:12px 14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-inset)}.mop-ai-result-head{display:flex;align-items:center;gap:8px}.mop-ai-result-head small{margin-left:auto;color:var(--text-muted)}
@media(max-width:1000px){.mop-control-grid{grid-template-columns:1fr}.mop-kpis{grid-template-columns:repeat(2,1fr)}.mop-approval-form{grid-template-columns:1fr 1fr}.mop-step-row{grid-template-columns:24px 54px minmax(0,1fr) auto}.mop-step-time{display:none}.mop-type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mop-govern-grid{grid-template-columns:1fr}.mop-compose-rail-step b{display:none}.mop-config-layout{grid-template-columns:1fr}.mop-config-layout>nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.mop-config-form{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.mop-type-grid,.mop-preset-grid,.mop-mode-tabs{grid-template-columns:1fr}.mop-compose-head,.mop-order-row{align-items:stretch}.mop-compose-head{flex-direction:column}.mop-order-row{grid-template-columns:30px minmax(0,1fr)}.mop-order-actions{grid-column:1/-1}.mop-plan-choice{grid-template-columns:auto 28px minmax(0,1fr)}.mop-plan-choice>em{display:none}.mop-config-layout>nav,.mop-config-form{grid-template-columns:1fr}.mop-blueprint-row{grid-template-columns:30px minmax(0,1fr)}.mop-blueprint-row .mop-order-actions{grid-column:1/-1}}
.sr-topology-link.unresolved{stroke-dasharray:12 8;opacity:.8}
.sr-topology-legend .unresolved:before{height:1px;border-radius:0;background:transparent;border-top:2px dashed var(--warn)}
</style>

/* Breakout picker inside a free-connector member option. Scoped tight so it
   does not inherit the full-width form-control sizing used elsewhere. */
.domain-breakout-select{width:auto;margin-top:4px;padding:2px 6px;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text);font-size:10px}
.domain-member-option.locked{opacity:.38;cursor:not-allowed}.domain-member-option.locked input{cursor:not-allowed}
.domain-derived-row.paired{border-color:color-mix(in srgb,var(--ok) 38%,var(--border))}
.domain-member-option.disabled{opacity:.4;cursor:not-allowed}.domain-member-option.disabled input{cursor:not-allowed}
/* Per-neighbour overrides. This was a bare browser <summary> and read as page
   furniture rather than a control, so the one path that changes a single
   session without bouncing every peer in the group looked like it did not
   exist. Same chevron idiom as `.sect`, sized for a form row. */
.domain-neighbor-scope{margin-top:9px;border:1px solid var(--border);border-radius:var(--r-ctl);
                       background:var(--bg-inset);overflow:hidden}
.domain-neighbor-scope>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;
                               padding:8px 10px;font-size:11px;font-weight:600;color:var(--text-secondary);
                               transition:background .15s,color .15s;user-select:none}
.domain-neighbor-scope>summary::-webkit-details-marker{display:none}
.domain-neighbor-scope>summary::before{content:"";width:0;height:0;border:4px solid transparent;
                                       border-left-color:var(--text-muted);transition:transform .15s;flex:none}
.domain-neighbor-scope[open]>summary::before{transform:rotate(90deg) translateX(-2px)}
.domain-neighbor-scope>summary:hover{background:color-mix(in srgb,var(--accent) 8%,var(--bg-inset));
                                     color:var(--text-primary)}
.domain-neighbor-scope>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.domain-neighbor-scope[open]>summary{border-bottom:1px solid var(--border)}
/* "scoped to this one object" — the whole point of the section. */
.domain-neighbor-scope>summary::after{content:"only this neighbour";margin-left:auto;padding:1px 7px;
                                      border:1px solid color-mix(in srgb,var(--accent) 40%,var(--border));
                                      border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,transparent);
                                      color:var(--accent);font-size:9px;font-weight:600;letter-spacing:.02em}
.domain-neighbor-scope-body{padding:10px}
.domain-neighbor-scope-body h5{margin:10px 0 5px;font-size:10px;color:var(--text-muted);
                               text-transform:uppercase;letter-spacing:.04em}
.domain-neighbor-scope-body h5:first-child{margin-top:0}
.domain-bgp-tree{margin-top:8px}.domain-bgp-tree>b{display:block;margin-bottom:2px;font-size:10.5px}.domain-bgp-tree .domain-derived-row{margin-top:4px}.domain-bgp-tree .domain-derived-row .mono{color:var(--text)}.domain-bgp-tree .domain-derived-row .mono:first-child{flex:0 0 auto}
.domain-member-unavailable{margin-top:8px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset)}.domain-member-unavailable summary{padding:6px 9px;color:var(--text-muted);cursor:pointer;font-size:10px}.domain-member-unavailable[open] summary{border-bottom:1px solid var(--border)}.domain-member-unavailable ul{display:grid;max-height:170px;margin:0;padding:6px 9px;overflow:auto;gap:3px;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none}.domain-member-unavailable li{display:flex;min-width:0;flex-direction:column}.domain-member-unavailable li span{font-size:10px}.domain-member-unavailable li small{overflow:hidden;color:var(--text-muted);font-size:9.5px;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:680px){.domain-member-unavailable ul{grid-template-columns:1fr}}

/* Service endpoint withdrawal: select some or all nodes to remove */
.service-withdraw{margin-top:14px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--warn) 30%,var(--border));border-radius:9px;background:color-mix(in srgb,var(--warn) 5%,transparent)}
.service-withdraw:empty{display:none}
.withdraw-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.withdraw-head b{font-size:12.5px}
.withdraw-head .btn{padding:4px 10px;font-size:11px}
.withdraw-rows{display:flex;flex-direction:column;gap:6px}
.withdraw-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);cursor:pointer}
.withdraw-row:hover{border-color:var(--text-muted)}
.withdraw-row.is-disabled{opacity:.55;cursor:not-allowed}
.withdraw-row input{accent-color:var(--err);width:14px;height:14px}
.withdraw-host{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:12px}
.withdraw-host span{font-size:10.5px}
.withdraw-note{margin:10px 0;color:var(--text-secondary);font-size:11px;line-height:1.5}
.service-withdraw .btn-danger{background:var(--err);border-color:var(--err);color:#fff}
.service-withdraw .btn:disabled{opacity:.45;cursor:not-allowed}
.withdraw-confirm p{margin:0 0 11px;color:var(--text-secondary);font-size:12.5px;line-height:1.6}
.withdraw-confirm label{display:block;margin:13px 0 6px;color:var(--text-secondary);font-size:11px}
.withdraw-confirm input{width:100%;padding:8px 11px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);color:var(--text-primary);font:12.5px var(--font-mono)}
.withdraw-confirm input:focus{outline:0;border-color:var(--err)}

/* Routing configured inside a VPRN, offered from the service that owns it. */
.service-vprn-routing{margin-top:12px;padding:10px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}
.service-vprn-head{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
.service-vprn-head b{font-size:11.5px}
.service-vprn-head span{color:var(--text-muted);font-size:10px}
.service-vprn-card{margin-top:6px;border:1px solid var(--border);border-radius:7px;overflow:hidden}
.service-vprn-toggle{display:flex;width:100%;align-items:baseline;gap:8px;padding:7px 9px;border:0;background:transparent;color:var(--text);cursor:pointer;font-size:11px;text-align:left}
.service-vprn-toggle.open{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.service-vprn-toggle small{color:var(--text-muted);font-size:9.5px}
.service-vprn-body{padding:8px 9px;border-top:1px solid var(--border)}
.service-vprn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:7px}
.service-vprn-grid input[readonly]{color:var(--text-secondary);cursor:not-allowed}
.service-plan-routing{grid-column:1/-1;display:flex;flex-direction:column;gap:3px;margin-top:7px;padding:7px 9px;border-left:2px solid var(--info);background:color-mix(in srgb,var(--info) 6%,transparent)}
.service-plan-routing b{font-size:10px;color:var(--info);text-transform:uppercase;letter-spacing:.04em}
.service-plan-routing span{font:10.5px var(--font-mono);color:var(--text-secondary)}

/* Configuration backup and governed restore */
.backup-page-head{align-items:flex-start}.backup-actions{align-items:flex-end;flex-wrap:wrap}
.backup-method-control{display:flex;flex-direction:column;gap:4px;margin:0;color:var(--text-muted);font-size:10px;font-weight:600;letter-spacing:.035em;text-transform:uppercase}
.backup-method-control select{width:226px;min-height:32px;padding:6px 9px;color:var(--text-primary);font-size:11px;letter-spacing:0;text-transform:none}
.backup-safety-banner{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:start;gap:11px;margin-bottom:14px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--ok) 30%,var(--border));border-radius:var(--r-card);background:linear-gradient(110deg,color-mix(in srgb,var(--ok) 8%,var(--bg-surface)),var(--bg-surface))}
.backup-safety-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:color-mix(in srgb,var(--ok) 17%,transparent);color:var(--ok);font-weight:700}
.backup-safety-banner b{font-size:12.5px}.backup-safety-banner p{margin-top:3px;color:var(--text-secondary);font-size:11px}
.backup-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.backup-kpi{display:flex;min-height:94px;flex-direction:column;padding:13px 15px;border:1px solid var(--border);border-radius:var(--r-card);background:var(--bg-surface)}
.backup-kpi span{color:var(--text-secondary);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.045em}.backup-kpi b{margin-top:5px;font-size:24px;line-height:1.1}.backup-kpi small{margin-top:auto;color:var(--text-muted);font-size:10px}
.backup-device-card{margin-bottom:14px}.backup-card-heading>div{display:flex;align-items:baseline;gap:9px}.backup-check-cell{width:40px;text-align:center!important}
.backup-schedule-card{margin-bottom:14px}.backup-schedule-card .card-h{gap:12px}.backup-schedule-targets{display:flex;max-width:330px;flex-wrap:wrap;gap:4px}.backup-schedule-targets .badge{font-size:9px}.backup-schedule-cadence{display:flex;flex-direction:column;gap:2px}.backup-schedule-cadence small{color:var(--text-muted);font-size:9.5px}.backup-schedule-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.backup-schedule-form label{margin:0}.backup-schedule-form .wide{grid-column:1/-1}.backup-schedule-target-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:230px;overflow:auto;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}.backup-schedule-target-list label{display:flex;align-items:center;gap:7px;padding:6px 7px;border-radius:6px;color:var(--text-secondary);font-size:10.5px}.backup-schedule-target-list label:has(input:checked){background:color-mix(in srgb,var(--accent) 9%,transparent);color:var(--text-primary)}.backup-schedule-target-list input{width:14px;height:14px;flex:none;margin:0;accent-color:var(--accent)}.backup-schedule-target-list label>span{display:flex;min-width:0;flex-direction:column;gap:1px}.backup-schedule-target-list label b{overflow:hidden;font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.backup-schedule-target-list label small{display:block;color:var(--text-muted);font-size:9px;font-weight:400}
.backup-device-table input[type="checkbox"]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}
.backup-device-row.selected{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.backup-device-name{display:flex;flex-direction:column;gap:1px}.backup-device-name b{font-size:12px}.backup-device-name span{font-size:10px}
.backup-access-stack,.backup-operation-stack{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.backup-cell-meta{display:block;margin-top:3px;color:var(--text-muted);font-size:9.5px}
.backup-latest{display:flex;flex-direction:column;gap:2px}.backup-latest strong{font-size:11px;font-weight:600}.backup-latest code{color:var(--text-muted);font-size:9.5px}.backup-latest span{color:var(--text-muted);font-size:9.5px}
.backup-inline-actions{display:flex;gap:5px;white-space:nowrap}.backup-inline-actions .btn{padding:4px 8px;font-size:10px}
.backup-activity-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.backup-activity-grid .card{min-width:0}.backup-activity-grid table{min-width:620px}
.backup-diff-summary{white-space:nowrap}.backup-diff-summary .plus{color:var(--ok)}.backup-diff-summary .minus{color:var(--err)}
.backup-restore-list{display:grid;gap:7px;margin:12px 0}.backup-restore-target{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset)}
.backup-restore-target b{display:block;font-size:11.5px}.backup-restore-target small{display:block;color:var(--text-muted);font-size:9.5px}.backup-restore-target code{align-self:center;color:var(--text-muted);font-size:9px}
.backup-mode-choice{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.backup-mode-choice label{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;margin:0;padding:10px 11px;border:1px solid var(--border);border-radius:8px;background:var(--bg-inset);cursor:pointer}
.backup-mode-choice label:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--bg-inset))}.backup-mode-choice input{margin-top:3px;accent-color:var(--accent)}.backup-mode-choice b{display:block;font-size:11px}.backup-mode-choice small{display:block;margin-top:2px;color:var(--text-muted);font-size:9.5px;line-height:1.45}
.backup-approval-diff{margin-top:7px;border:1px solid var(--border);border-radius:7px;background:var(--bg-inset);overflow:hidden}.backup-approval-diff summary{padding:7px 9px;color:var(--text-secondary);font-size:10px;cursor:pointer}.backup-approval-diff pre{max-height:180px;overflow:auto;padding:9px;border-top:1px solid var(--border);color:var(--text-secondary);font:9.5px/1.5 var(--font-mono);white-space:pre-wrap}
@media(max-width:1100px){.backup-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.backup-activity-grid{grid-template-columns:1fr}}
@media(max-width:700px){.backup-kpis{grid-template-columns:1fr 1fr}.backup-actions{align-items:stretch}.backup-method-control,.backup-method-control select{width:100%}.backup-mode-choice,.backup-schedule-form{grid-template-columns:1fr}.backup-schedule-form .wide{grid-column:auto}.backup-schedule-target-list{grid-template-columns:1fr}}
