/* IP Lab /lab — a responsive evidence workspace.
   GeoTheme owns brand atmosphere; semantic verdict colors remain independent. */
:root {
  --bg: #070b12;
  --bg1: #0d1622;
  --bg2: #070b12;
  --card: #101822;
  --card2: #0b121b;
  --border: #26313d;
  --text: #ecece8;
  --muted: #9eaab8;
  --accent: var(--geo-accent, #d9c398);
  --accentText: #10141a;
  --success: var(--status-success, #75d8ae);
  --warning: var(--status-warning, #e7bd72);
  --danger: var(--status-danger, #f08b95);
  --info: #a5c8ed;
  --line: var(--border);
  --ink: var(--text);
  --soft: var(--card2);
  --good: var(--success);
  --warn: var(--warning);
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --radius-sm: 6px;
  --radius-md: 9px;
  --radius-lg: 14px;
  --radius-pill: 999px;
  --font-xs: 11px;
  --font-sm: 13px;
  --font-body: 14px;
  --font-title: 20px;
  --motion-fast: 130ms;
  --motion-base: 200ms;
  --lab-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, monospace;
  font-family: var(--font-sans, "Inter", "Noto Sans SC", system-ui, sans-serif);
  font-synthesis: none;
  color-scheme: dark;
}
/* Existing saved appearance preferences remain usable. GeoTheme only supplies
   the accent and atmosphere; it never replaces these semantic status colors. */
body[data-theme="violet"] { --bg1:#1b142b; --bg2:#0a0811; --bg:#0a0811; --card:#171421; --card2:#0f0c17; --border:#352d43; }
body[data-theme="rose"] { --bg1:#251821; --bg2:#100a0e; --bg:#100a0e; --card:#20151c; --card2:#140d12; --border:#3a2a33; }
body[data-theme="forest"] { --bg1:#10231f; --bg2:#070e0b; --bg:#070e0b; --card:#111e18; --card2:#0b1410; --border:#293c33; }
body[data-theme="graphite"] { --bg1:#1b1e22; --bg2:#090b0e; --bg:#090b0e; --card:#15191e; --card2:#0e1116; --border:#303943; }
body[data-theme="light"] {
  --bg:#f1f1ed; --bg1:#e7e8e3; --bg2:#f1f1ed; --card:#fcfcf8;
  --card2:#e9ece8; --border:#ced4cf; --text:#172321; --muted:#52655e;
  --accent:#496b57; --accentText:#fff; --success:#176146; --warning:#815713;
  --danger:#aa3345; --info:#285f96; color-scheme:light;
}
.geo-controls { color:var(--text); }
.geo-controls select { background:var(--card2); color:var(--text); border-color:var(--border); }
.geo-controls small,.geo-control-note { color:var(--muted); }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
html { scroll-behavior:smooth; scrollbar-width:thin; scrollbar-color:var(--border) var(--bg); }
body {
  margin:0; min-height:100dvh; color:var(--text); background:var(--bg);
  font-size:var(--font-body); line-height:1.6; -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body::before {
  position:fixed; inset:0; z-index:-1; content:""; pointer-events:none;
  background:radial-gradient(ellipse at 86% -10%, color-mix(in srgb, var(--geo-secondary, #7eaea5) 8%, transparent), transparent 47%);
}
h1,h2,h3,h4,p { margin:0; }
h1,h2,h3 { font-weight:560; letter-spacing:-.035em; }
h2 { font-size:var(--font-title); line-height:1.35; }
h3 { font-size:16px; line-height:1.4; }
a { color:inherit; text-decoration:none; }
button,input,select { font:inherit; }
button,input,select,summary { touch-action:manipulation; }
button {
  min-height:44px; padding:10px 15px; border:1px solid transparent;
  border-radius:var(--radius-md); color:var(--text); background:var(--card2);
  font-weight:560; line-height:1.4; cursor:pointer; -webkit-tap-highlight-color:transparent;
  transition:color var(--motion-fast), background-color var(--motion-fast), border-color var(--motion-fast);
}
button:disabled { opacity:.44; cursor:default; }
button:not(:disabled):active { background:color-mix(in srgb, var(--accent) 14%, var(--card2)); }
input,select {
  min-width:0; width:100%; min-height:44px; padding:10px 12px;
  border:1px solid var(--border); border-radius:var(--radius-md);
  color:var(--text); background:var(--card2); line-height:1.4;
}
input::placeholder { color:var(--muted); opacity:.82; }
input[type="search"] { -webkit-appearance:none; }
input[type="number"], code, .ip, .counter, .rank-score, .healthring { font-variant-numeric:tabular-nums; }
code, .ip, .scan-current code { font-family:var(--lab-mono); }
input:focus,select:focus { border-color:var(--accent); }
:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
small,label,.hint,.muted,.counter { color:var(--muted); }
.primary,.wide { color:var(--accentText); background:var(--accent); border-color:var(--accent); font-weight:650; }
.primary:not(:disabled):active,.wide:not(:disabled):active { color:var(--accentText); background:color-mix(in srgb, var(--accent) 90%, white); }
.wide { width:100%; }
.ghost,.secondary { background:transparent; border-color:var(--border); }
.mini { min-height:40px; padding:8px 11px; font-size:12px; }
.textbutton { padding:8px 11px; color:var(--accent); background:transparent; white-space:normal; }
.iconbutton { display:grid; place-items:center; width:44px; flex:0 0 44px; padding:10px; border-color:var(--border); background:transparent; }
.row,.customline,.herohead,.pageheading { display:flex; align-items:center; justify-content:space-between; gap:14px; min-width:0; }
.row>div,.pageheading>div { min-width:0; }
.card { min-width:0; padding:24px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--card); }
.eyebrow,.section-label>span { display:block; margin-bottom:10px; color:var(--accent); font:11px/1.4 var(--lab-mono); letter-spacing:.1em; text-transform:uppercase; }
.counter { font-size:12px; line-height:1.5; }
.hint { margin-top:12px; font-size:12px; line-height:1.8; }
.compact { margin-top:8px; }
.subhead { margin:24px 0 12px; }
.ok,.fresh,.routehit { color:var(--success); }
.warn,.seen,.routewarn { color:var(--warning); }
.bad { color:var(--danger); }
.nowrap { white-space:nowrap; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
/* Website shell and navigation — no fixed bottom controls. */
.lab-shell { width:min(100%, 1440px); margin:auto; padding:0 clamp(20px, 4vw, 64px) max(28px, env(safe-area-inset-bottom)); }
.lab-header { display:flex; align-items:center; gap:28px; min-height:100px; border-bottom:1px solid var(--border); }
.lab-brand { display:flex; align-items:center; gap:12px; flex:0 0 auto; }
.lab-brandmark { display:block; width:29px; height:29px; flex:0 0 29px; fill:none; stroke:var(--accent); stroke-width:1.5; }
.lab-brand>b { font-size:22px; }
.lab-brand>span:last-child>b { display:block; font-size:19px; font-weight:650; letter-spacing:-.03em; }
.lab-brand small { display:block; margin-top:3px; font:8px/1.4 var(--lab-mono); letter-spacing:.16em; color:var(--muted); }
.lab-header-context { display:flex; align-items:center; gap:12px; color:var(--muted); font-size:12px; }
.context-line { width:30px; height:1px; background:var(--border); }
.alpha-tag { font:9px/1.3 var(--lab-mono); padding:4px 6px; border:1px solid var(--border); border-radius:3px; color:var(--accent); }
.lab-header-actions { display:flex; align-items:center; gap:22px; margin-left:auto; }
.header-home { color:var(--muted); font-size:12px; }
.header-home>span { display:inline-block; margin-left:6px; }
.scanbtn { display:flex; align-items:center; gap:9px; min-height:42px; padding:9px 14px; border-color:var(--border); background:transparent; }
.scanbtn b { font-size:12px; font-weight:560; }
.scanicon { display:grid; width:17px; height:17px; }
.scanicon svg,.navicon svg,.backicon svg,.summary-icon svg,.empty-icon svg { width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.workspace-menu { border-bottom:1px solid var(--border); }
.workspace-menu>summary { display:none; min-height:50px; list-style:none; cursor:pointer; }
.workspace-menu>summary::-webkit-details-marker { display:none; }
.workspace-nav { display:flex; gap:28px; align-items:center; min-height:67px; }
.workspace-nav .navitem { display:flex; align-items:center; gap:8px; min-height:67px; padding:10px 1px; border-radius:0; background:transparent; color:var(--muted); position:relative; }
.workspace-nav .navitem b { font-size:13px; font-weight:500; }
.workspace-nav .navicon { display:grid; width:17px; height:17px; opacity:.8; }
.workspace-nav .navitem.active { color:var(--text); }
.workspace-nav .navitem.active::after { content:""; position:absolute; bottom:-1px; left:0; right:0; height:2px; background:var(--accent); }
.workspace-pages { padding-top:40px; min-height:64dvh; }
.page { display:none; }
.page.active { display:block; animation:workspace-reveal .22s ease-out; }
.pageheading { align-items:flex-end; justify-content:flex-start; margin-bottom:28px; }
.pageheading>div { flex:1; }
.pageheading h2 { font-size:clamp(26px, 2.4vw, 40px); line-height:1.16; font-weight:490; letter-spacing:-.045em; }
.pageheading p { margin-top:12px; color:var(--muted); font-size:13px; }
.section-index { color:var(--border); font:54px/1 var(--lab-mono); letter-spacing:-.07em; }
.lab-footer { display:flex; flex-wrap:wrap; align-items:center; gap:20px; margin-top:70px; padding-top:24px; border-top:1px solid var(--border); color:var(--muted); font-size:11px; }
.lab-footer>a { font-size:14px; color:var(--text); }
.lab-footer>a>span { margin-left:7px; font-size:10px; color:var(--muted); }
.lab-footer>p { margin-left:auto; }
.footer-build { font:9px/1.4 var(--lab-mono); letter-spacing:.08em; }
@keyframes workspace-reveal { from{opacity:.65;transform:translateY(5px)} to{opacity:1;transform:none} }
/* Current exit: large identity, parallel evidence, uncluttered hierarchy. */
.home-layout { display:grid; grid-template-columns:minmax(0, .9fr) minmax(0, 1.1fr); gap:24px; align-items:stretch; }
.home-identity { position:relative; display:flex; flex-direction:column; padding:32px; background:var(--card); min-height:420px; }
.herohead { margin-bottom:42px; }
.status { display:flex; align-items:center; gap:8px; min-width:0; color:var(--muted); font-size:12px; }
.status #dot { flex:0 0 6px; width:6px; height:6px; border-radius:50%; background:var(--warning); }
.livebadge { color:var(--muted); font:9px/1.4 var(--lab-mono); letter-spacing:.14em; }
.home-place { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.home-place small { display:block; margin-bottom:8px; font-size:11px; color:var(--muted); }
.home-place h2 { font-size:clamp(24px, 2.6vw, 36px); letter-spacing:-.035em; line-height:1.25; }
.typebadge { flex:0 0 auto; margin-top:25px; padding:5px 8px; border:1px solid var(--border); border-radius:4px; font-size:11px; font-weight:500; }
.typebadge.residential,.identitybadge.residential { color:var(--success); }
.typebadge.mobile,.identitybadge.mobile { color:var(--info); }
.typebadge.datacenter,.identitybadge.datacenter { color:var(--danger); }
.typebadge.business { color:var(--text); }
.typebadge.unknown,.identitybadge.unknown { color:var(--muted); }
.iplabel { margin-top:30px; font-size:11px; color:var(--muted); }
.ip { margin-top:8px; font-size:clamp(25px, 2.8vw, 42px); line-height:1.22; letter-spacing:-.065em; font-weight:460; overflow-wrap:anywhere; }
.home-provider { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:16px; font-size:13px; color:var(--muted); }
.home-provider b { color:var(--text); font-weight:500; }
.home-provider span:last-child { font:11px/1.6 var(--lab-mono); }
.identity-location-note { margin-top:auto; padding-top:40px; max-width:32em; font-size:11px; color:var(--muted); line-height:1.8; }
.home-analysis { min-width:0; padding:8px 0 0; }
.section-label { margin-bottom:19px; }
.section-label h3 { font-size:21px; }
.home-signal-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.signal-tile { min-width:0; min-height:88px; padding:18px 20px; border-bottom:1px solid var(--border); background:transparent; }
.signal-tile:nth-child(2n+1) { border-right:1px solid var(--border); }
.signal-tile:nth-last-child(-n+2) { border-bottom:0; }
.signal-tile small { display:block; font-size:11px; color:var(--muted); }
.signal-tile b { display:block; margin-top:7px; font-size:16px; line-height:1.4; font-weight:530; overflow-wrap:anywhere; }
.signal-tile.tone-good b { color:var(--success); }
.signal-tile.tone-watch b { color:var(--warning); }
.signal-tile.tone-bad b { color:var(--danger); }
.signal-tile.tone-neutral b { color:var(--muted); }
.homeverdict { display:flex; align-items:center; gap:10px; padding:17px 0; border-bottom:1px solid var(--border); }
.verdictdot { flex:0 0 5px; width:5px; height:5px; background:var(--muted); border-radius:50%; }
.homeverdict>div { flex:1; min-width:0; }
.homeverdict small { display:block; color:var(--muted); font-size:10px; }
.homeverdict b { display:block; margin-top:2px; font-size:16px; font-weight:500; }
.homeverdict em { max-width:48%; font-style:normal; font-size:15px; color:var(--muted); font-family:var(--lab-mono); font-weight:400; overflow-wrap:anywhere; text-align:right; }
.homeverdict.great .verdictdot,.homeverdict.good .verdictdot { background:var(--success); }
.homeverdict.great b,.homeverdict.good b { color:var(--success); }
.homeverdict.watch .verdictdot { background:var(--warning); }
.homeverdict.watch b { color:var(--warning); }
.homeverdict.risk .verdictdot { background:var(--danger); }
.homeverdict.risk b { color:var(--danger); }
.home-usecases { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); margin-top:17px; gap:12px; }
.home-usecases>div { min-width:0; padding-right:8px; }
.home-usecases>div+div { border-left:1px solid var(--border); padding-left:12px; }
.home-usecases span { display:none; }
.home-usecases small { display:block; font-size:11px; white-space:nowrap; }
.home-usecases b { display:block; margin-top:5px; font-size:12px; font-weight:500; }
.use-good,.ai-good { color:var(--success); }
.use-watch,.ai-watch { color:var(--warning); }
.use-bad,.ai-bad { color:var(--danger); }
.use-neutral,.ai-neutral { color:var(--muted); }
.usecase-note { margin-top:12px; color:var(--muted); font-size:10px; line-height:1.8; white-space:normal; overflow-wrap:anywhere; }
.ai-readiness { margin-top:12px; border-bottom:1px solid var(--border); }
.ai-readiness>summary { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:44px; padding:10px 0; cursor:pointer; font-size:12px; list-style:none; }
.ai-readiness>summary::-webkit-details-marker { display:none; }
.ai-readiness>summary>span::after { content:" +"; color:var(--muted); }
.ai-readiness[open]>summary>span::after { content:" −"; }
.ai-readiness>summary>b { font-size:11px; font-weight:500; }
.ai-service-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; padding:10px 0 14px; }
.ai-service-grid>div { min-width:0; padding:12px 8px; background:var(--card2); border:1px solid var(--border); border-radius:6px; }
.ai-logo { display:block; font-size:10px; font-weight:600; color:var(--text); }
.ai-service-grid small { display:block; margin-top:6px; font-size:10px; }
.ai-service-grid b { display:block; margin-top:4px; font-size:11px; font-weight:500; }
.ai-readiness>p { color:var(--muted); font-size:11px; line-height:1.8; margin-bottom:14px; }
.home-evidence { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; margin-top:16px; font-size:11px; color:var(--muted); }
.heroactions { display:flex; gap:12px; margin-top:20px; }
.heroactions .primary { flex:1; }
.heroactions .ghost { flex:0 0 auto; padding-inline:20px; font-size:12px; }
.home-support { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:24px; }
.controller-summary,.home-next { display:flex; align-items:center; gap:16px; padding:19px 0; border-top:1px solid var(--border); min-width:0; }
.summary-icon { display:grid; place-items:center; width:24px; height:24px; flex:0 0 24px; color:var(--accent); }
.summary-copy { flex:1; min-width:0; }
.summary-copy b { font-size:13px; font-weight:560; }
.summary-copy .counter { font-size:11px; }
.summary-copy p { max-width:100%; margin-top:4px; font-size:12px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.summary-copy small { display:block; margin-top:3px; font-size:10px; }
.home-next { justify-content:space-between; }
.home-next>div { min-width:0; }
.home-next b { font-size:13px; font-weight:560; }
.home-next p { max-width:29em; margin-top:5px; color:var(--muted); font-size:12px; }
/* Shared disclosure, evidence and data primitives. */
.disclosure { border-top:1px solid var(--border); min-width:0; }
.disclosure>summary { display:flex; justify-content:space-between; align-items:center; gap:12px; min-height:65px; padding:17px 0; cursor:pointer; list-style:none; }
.disclosure>summary::-webkit-details-marker { display:none; }
.disclosure>summary b { display:block; font-size:14px; font-weight:550; }
.disclosure>summary small { display:block; margin-top:4px; color:var(--muted); font-size:11px; line-height:1.6; }
.disclosure-icon { flex:0 0 20px; color:var(--muted); font-size:19px; transition:transform var(--motion-base); }
.disclosure[open]>summary>.disclosure-icon { transform:rotate(45deg); }
.disclosure-body { padding:0 0 18px; }
.disclosure-body>.card { padding:18px 0; border:0; border-radius:0; background:transparent; }
.disclosure-body>.card+.card { border-top:1px solid var(--border); }
.picker,.healthtags,.identitytags,.reviewtags,.breakdown,.rawfields,.chips { display:flex; flex-wrap:wrap; gap:6px; }
.identitytags,.reviewtags,.healthtags { margin-top:15px; }
.healthtags span,.identitytags .attr,.reviewtags span,.chips span { padding:4px 7px; font-size:11px; line-height:1.5; color:var(--muted); border:1px solid var(--border); border-radius:4px; background:transparent; }
.identitytags .native,.identitytags .residential,.identitytags .isp,.identitytags .clean,.healthtags .good,.reviewtags .good { color:var(--success); }
.identitytags .broadcast,.identitytags .anycast,.identitytags .warning,.healthtags .caution,.reviewtags .warn { color:var(--warning); }
.identitytags .datacenter,.identitytags .proxy,.identitytags .abuse,.identitytags .tor,.healthtags .danger { color:var(--danger); }
.identitytags .mobile { color:var(--info); }
.identitybadge,.reviewgrade { padding:4px 8px; border:1px solid var(--border); border-radius:4px; background:transparent; font-size:11px; font-weight:560; white-space:nowrap; }
.reviewgrade.great,.reviewgrade.good,.attrtext-native,.attrtext-residential { color:var(--success); }
.reviewgrade.watch,.identitybadge.proxy,.attrtext-broadcast,.attrtext-anycast { color:var(--warning); }
.reviewgrade.risk,.attrtext-datacenter,.attrtext-proxy { color:var(--danger); }
.reviewgrade.unknown,.reviewgrade.pending { color:var(--muted); }
.attrtext-mobile { color:var(--info); }
.identitygrid,.reviewgrid,.signals,.stats,.pool,.stackgrid,.familyprofiles,.privacygrid,.controllerresult { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 20px; margin-top:16px; }
.identitygrid>div,.reviewgrid>div,.signal,.stat,.poolitem,.stack,.familyprofile,.privacygrid>div,.controllerresult>div { min-width:0; padding:13px 0; border-top:1px solid var(--border); }
.identitygrid span,.reviewgrid span,.signal span,.poolitem span,.stack span,.familyprofile>span,.privacygrid span,.controllerresult span { display:block; font-size:11px; color:var(--muted); }
.identitygrid b,.reviewgrid b,.signal b,.poolitem b,.stack b,.familyprofile>b,.privacygrid b,.controllerresult b { display:block; margin-top:5px; font-size:13px; line-height:1.6; font-weight:500; overflow-wrap:anywhere; }
.familyprofile>small,.privacygrid small,.stat small { display:block; margin-top:5px; font-size:11px; line-height:1.7; color:var(--muted); overflow-wrap:anywhere; }
.privacycompare,.verdict { padding:15px 0; margin-top:12px; border-top:1px solid var(--border); }
.privacycompare>span,.verdict>span { display:block; font-size:11px; color:var(--muted); }
.privacycompare b,.verdict b { display:block; margin-top:5px; font-size:13px; font-weight:500; overflow-wrap:anywhere; }
.privacycompare small,.verdict p { display:block; margin-top:6px; color:var(--muted); font-size:12px; line-height:1.8; }
.source { min-width:0; padding:13px 0; border-top:1px solid var(--border); font-size:12px; }
.source>b { font-size:12px; font-weight:550; }
.sourcehead { display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
.sourcehead>b { font-size:13px; font-weight:550; }
.sourcedetail { margin-top:5px; color:var(--muted); font-size:11px; line-height:1.8; overflow-wrap:anywhere; }
/* Node task & list: desktop two-column, serial controls remain prominent. */
.connection-notice { display:flex; align-items:center; gap:14px; justify-content:space-between; margin-bottom:24px; padding:14px 16px; border:1px solid var(--border); border-radius:8px; color:var(--muted); font-size:12px; background:var(--card2); }
.connection-notice>span { min-width:0; }
.node-workspace { display:grid; grid-template-columns:minmax(0, 1.3fr) minmax(300px, .85fr); gap:24px; align-items:start; }
.node-workspace>#batchLab { grid-column:2; grid-row:1; }
.node-workspace>#nodeBrowser { grid-column:1; grid-row:1; }
.node-workspace:has(#nodeBrowser[hidden])>#batchLab { grid-column:1 / -1; max-width:700px; }
.scan-task { position:sticky; top:24px; padding:24px; border-top:2px solid var(--accent); }
.scan-task>.row h3 { margin-top:3px; font-size:23px; }
.scan-task>.row>.counter { align-self:flex-start; padding:5px 8px; border:1px solid var(--border); border-radius:4px; }
.scan-options { display:grid; grid-template-columns:1fr 70px; align-items:end; gap:14px; margin-top:24px; }
.scan-options label { font-size:11px; }
.scan-options select,.scan-options input { display:block; margin-top:7px; font-size:12px; }
.deep-profile-label,.deep-profile-hint { grid-column:1 / -1; }
.deep-profile-hint { margin:0; }
.scan-progress { margin-top:25px; padding-top:20px; border-top:1px solid var(--border); }
.scan-progress .row b { font-size:13px; font-weight:500; }
progress { display:block; width:100%; height:5px; margin:16px 0 19px; border:0; border-radius:3px; background:var(--border); color:var(--accent); overflow:hidden; appearance:none; }
progress::-webkit-progress-bar { background:var(--border); }
progress::-webkit-progress-value { background:var(--accent); transition:width .25s; }
progress::-moz-progress-bar { background:var(--accent); }
.scan-current { display:grid; grid-template-columns:68px minmax(0,1fr); gap:10px; align-items:baseline; font-size:12px; }
.scan-current>span { color:var(--muted); font-size:11px; }
.scan-current>b { font-weight:500; overflow-wrap:anywhere; }
.scan-current code { overflow-wrap:anywhere; }
.controlleractions { display:grid; grid-template-columns:1fr auto; gap:10px; margin-top:18px; }
.scan-task>.disclosure { margin-top:22px; }
.scan-task>.disclosure>summary { min-height:52px; padding:12px 0; }
.scan-task>.disclosure>summary b { font-size:12px; }
.recovery-button { width:100%; margin-top:12px; border-color:var(--warning); color:var(--warning); }
.scan-task.task-active { border-color:var(--accent); }
.scan-task.task-restore { border-color:var(--warning); }
.scan-task.task-restore .scan-progress .row b { color:var(--warning); }
.nodebrowser { min-width:0; padding:0; }
.nodebrowser>.row h3 { font-size:23px; }
.groupchips { display:flex; gap:8px; overflow-x:auto; padding:20px 0 14px; scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
.groupchip { flex:0 0 auto; min-height:42px; padding:8px 11px; border:1px solid var(--border); border-radius:5px; background:transparent; font-size:12px; }
.groupchip small { margin-left:7px; font-size:10px; }
.groupchip.active { color:var(--accent); border-color:var(--accent); background:color-mix(in srgb, var(--accent) 6%, var(--card2)); }
.nodefilters { display:grid; grid-template-columns:1fr 130px; gap:10px; margin-bottom:16px; }
.nodefilters select { font-size:12px; }
.groupdetail { border:1px solid var(--border); border-radius:10px; overflow:hidden; background:var(--card); }
.groupdetailhead { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding:16px 18px; border-bottom:1px solid var(--border); background:var(--card2); }
.groupdetailhead>div { min-width:0; }
.groupdetailhead b { display:block; font-size:13px; font-weight:550; overflow-wrap:anywhere; }
.groupdetailhead span { display:block; margin-top:4px; color:var(--muted); font-size:11px; overflow-wrap:anywhere; }
.nodelist { max-height:min(580px, 67dvh); overflow-y:auto; overscroll-behavior-y:contain; contain:layout style; }
.nodeitem { position:relative; display:flex; width:100%; min-height:58px; align-items:center; justify-content:space-between; gap:14px; padding:14px 18px; border:0; border-bottom:1px solid var(--border); border-radius:0; background:transparent; text-align:left; font-size:13px; }
.nodeitem:last-child { border-bottom:0; }
.nodeitem>span { min-width:0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; line-height:1.6; overflow:hidden; overflow-wrap:anywhere; }
.nodeitem>b { flex:0 0 auto; font-size:10px; color:var(--accent); font-weight:550; }
.nodeitem.current { background:color-mix(in srgb, var(--accent) 7%, var(--card2)); }
.nodeitem.current::before { position:absolute; left:0; top:15px; bottom:15px; width:2px; content:""; background:var(--accent); }
.switchpanel { margin-top:22px; padding:20px; border:1px solid var(--border); border-left:2px solid var(--accent); border-radius:9px; background:var(--card); }
.switchpanel h3 { font-size:18px; overflow-wrap:anywhere; }
.switchresult,.routeresult,.routediag { margin-top:14px; padding:14px; border:1px solid var(--border); border-radius:6px; background:var(--card2); line-height:1.8; overflow-wrap:anywhere; }
.switchresult b,.switchresult span,.routeresult b,.routeresult span,.routediag>b,.routediag>span { display:block; }
.switchresult span,.routeresult span,.routediag>span { margin-top:5px; color:var(--muted); font-size:12px; }
.results-window { max-height:340px; overflow-y:auto; overscroll-behavior-y:contain; }
.diagrow { padding:10px 0; border-top:1px solid var(--border); }
.diagrow>strong { display:block; font-size:12px; font-weight:550; overflow-wrap:anywhere; }
.diagrow>small { display:block; margin-top:5px; font-size:11px; color:var(--muted); overflow-wrap:anywhere; }
.eventlog { padding-top:12px; max-height:300px; overflow-y:auto; font:11px/1.8 var(--lab-mono); color:var(--muted); overflow-wrap:anywhere; }
/* Rankings as an analytical list, not an endless deck of cards. */
.ranking-summary { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:23px 0; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
.ranking-summary b { display:block; font-size:18px; font-weight:500; }
.ranking-summary p { margin-top:7px; color:var(--muted); font-size:12px; }
.rank-scan-cta { flex:0 0 auto; padding:9px 13px; border:1px solid var(--border); border-radius:6px; font-size:12px; }
.ranking-filters { margin-top:20px; }
.ranking-tabs-wrap { position:relative; min-width:0; }
.ranking-tabs { display:flex; gap:7px; overflow-x:auto; padding-bottom:13px; scrollbar-width:thin; scrollbar-color:var(--border) transparent; scroll-snap-type:x proximity; overscroll-behavior-inline:contain; }
.ranking-tabs>button { flex:0 0 auto; min-height:40px; padding:8px 13px; border:1px solid var(--border); border-radius:5px; background:transparent; font-size:12px; scroll-snap-align:start; }
.ranking-tabs>button.active { background:var(--accent); border-color:var(--accent); color:var(--accentText); }
.ranking-tabs>button[data-category="failed"] { color:var(--danger); }
.ranking-tabs>button[data-category="failed"].active { background:color-mix(in srgb, var(--danger) 9%, var(--card)); border-color:var(--danger); }
.ranking-tabs-hint { display:none; margin:0 0 12px; text-align:right; color:var(--muted); font-size:10px; }
.rank-controls { display:grid; grid-template-columns:minmax(0,1fr) 140px 150px; gap:12px; margin-bottom:19px; }
.rank-controls select { font-size:12px; }
.rank-note { margin:9px 0 18px; color:var(--muted); font-size:11px; line-height:1.8; max-width:85em; }
.rank-selection-actions { display:flex; flex-wrap:wrap; align-items:center; gap:9px; padding:12px 0; margin-bottom:14px; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
.rank-selection-actions>span { margin-right:auto; font-size:11px; color:var(--muted); }
.rank-selection-actions button { min-height:40px; font-size:12px; padding:8px 10px; }
.ranking-list { display:grid; grid-template-columns:1fr; gap:0; }
.ranking-card,.rank-card { padding:20px 0 13px; border:0; border-bottom:1px solid var(--border); border-radius:0; background:transparent; }
.ranking-card.rank-1 { border-top:1px solid color-mix(in srgb, var(--accent) 45%, var(--border)); }
.rank-open { display:grid; grid-template-columns:44px minmax(0,1fr) 110px; gap:18px; width:100%; align-items:start; padding:0; border:0; border-radius:0; background:transparent; text-align:left; }
.rank-open:not(:disabled):active { background:transparent; }
.rank-medal { display:block; padding-top:3px; color:var(--muted); font:17px/1.2 var(--lab-mono); }
.rank-podium .rank-medal { color:var(--accent); }
.rank-main { display:block; min-width:0; }
.rank-main>strong { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; overflow-wrap:anywhere; font-size:17px; font-weight:500; line-height:1.5; }
.rank-meta { display:block; margin-top:5px; color:var(--muted); font-size:11px; font-weight:400; line-height:1.7; overflow-wrap:anywhere; }
.rank-snapshot { font:11px/1.7 var(--lab-mono); }
.rank-score { display:flex; flex-direction:column; align-items:flex-end; gap:3px; text-align:right; min-width:0; }
.rank-score>strong { color:var(--text); font:38px/1.1 var(--lab-mono); letter-spacing:-.06em; font-weight:400; }
.rank-score>span { font-size:11px; line-height:1.5; }
.rank-score>.rank-meta { margin-top:0; font-size:10px; }
.rank-score.provisional>strong { font-size:30px; color:var(--muted); }
.rank-badges { display:flex; flex-wrap:wrap; gap:6px; margin-top:11px; }
.rank-badges>span { padding:3px 6px; border:1px solid var(--border); border-radius:4px; background:transparent; color:var(--muted); font-size:10px; font-weight:400; }
.rank-badges>.ok,.rank-badges>.congestion-good { color:var(--success); }
.rank-badges>.warn,.rank-badges>.congestion-watch { color:var(--warning); }
.rank-badges>.bad,.rank-badges>.congestion-bad { color:var(--danger); }
.rank-actions { display:flex; align-items:center; gap:20px; margin-top:7px; padding-left:62px; }
.rank-selection { display:inline-flex; align-items:center; gap:8px; min-height:40px; font-size:11px; color:var(--muted); cursor:pointer; }
.rank-selection input[type="checkbox"] { width:16px; min-height:16px; height:16px; margin:0; accent-color:var(--accent); border-radius:3px; }
.rank-time { margin-left:auto; margin-top:0; }
.rank-deep { min-height:40px; font-size:12px; padding:8px 10px; }
.rank-pagination { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-top:24px; }
.rank-pagination>span { color:var(--muted); font-size:12px; }
.empty-state,.records-empty { display:grid; justify-items:center; gap:10px; padding:48px 24px; border:1px solid var(--border); border-radius:10px; background:var(--card2); color:var(--muted); text-align:center; }
.empty-state { margin-top:18px; }
.empty-state .empty-icon { display:block; width:32px; height:32px; margin-bottom:3px; color:var(--accent); }
.empty-state h3,.records-empty>b { color:var(--text); font-size:17px; font-weight:500; }
.empty-state p,.records-empty>p { max-width:34em; font-size:12px; line-height:1.8; }
/* Reports: summary, reasoning and original evidence remain distinct. */
.report-back { background:transparent; border-radius:6px; }
.backicon { display:grid; width:20px; height:20px; }
.report-summary { margin-bottom:24px; padding:28px; border:1px solid var(--border); border-top:2px solid var(--accent); border-radius:12px; background:var(--card); }
.score-overview { display:flex; align-items:flex-start; gap:24px; justify-content:space-between; }
.score-overview>div:first-child { min-width:0; flex:1; }
.score-overview h2 { margin-top:5px; font-size:clamp(24px, 2.4vw, 33px); font-weight:500; line-height:1.4; overflow-wrap:anywhere; }
.score-overview p { margin-top:8px; color:var(--muted); font:12px/1.6 var(--lab-mono); overflow-wrap:anywhere; }
.report-summary .rank-score { flex:0 0 auto; }
.report-summary .rank-score>strong { font-size:52px; color:var(--accent); }
.report-summary>.hint { margin-top:19px; max-width:73em; }
.dimension-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0 24px; margin-top:24px; border-top:1px solid var(--border); }
.dimension { min-width:0; padding:16px 0; border-bottom:1px solid var(--border); }
.dimension>span { display:block; color:var(--muted); font-size:11px; }
.dimension>b,.dimension>strong { display:block; margin-top:6px; font-size:14px; font-weight:500; overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }
.report-routing-identity { margin-top:22px; padding:0; border-top:1px solid var(--border); }
.report-routing-identity>.dimension-grid { grid-template-columns:1fr 1fr; border-top:0; margin-top:0; }
.report-source-health { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 24px; margin-top:20px; }
.report-source-health>.source { display:flex; align-items:baseline; justify-content:space-between; gap:10px; font-size:11px; }
.report-source-health>.source>b { flex:0 0 auto; }
.report-source-health>.source>span { text-align:right; font-size:10px; overflow-wrap:anywhere; }
.evidence-raw { margin-top:17px; border-top:1px solid var(--border); }
.evidence-raw>summary { min-height:44px; padding:12px 0; color:var(--muted); font-size:12px; cursor:pointer; }
.evidence-raw pre { margin:5px 0 0; padding:16px; max-height:360px; overflow-y:auto; border:1px solid var(--border); border-radius:6px; background:var(--card2); color:var(--muted); font:11px/1.8 var(--lab-mono); white-space:pre-wrap; overflow-wrap:anywhere; }
.report-overview { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:24px; margin-bottom:24px; }
.reviewcard,.scorecard { min-width:0; padding:24px; }
.reviewhero { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-top:24px; }
.reviewhero>div { min-width:0; flex:1; }
.reviewhero small { color:var(--muted); font-size:10px; }
.reviewhero b { display:block; margin-top:6px; font-size:19px; font-weight:500; line-height:1.6; }
.reviewhero strong { font:37px/1.2 var(--lab-mono); color:var(--accent); font-weight:400; }
.reviewtext { margin-top:16px; color:var(--muted); font-size:12px; line-height:1.9; }
.healthring { --score:0%; --ring:var(--muted); position:relative; display:flex; align-items:baseline; justify-content:center; flex:0 0 76px; width:76px; height:76px; padding-top:26px; border-radius:50%; background:conic-gradient(var(--ring) var(--score, 0%), var(--border) 0); }
.healthring::after { position:absolute; inset:4px; border-radius:50%; background:var(--card); content:""; }
.healthring b,.healthring small { position:relative; z-index:1; }
.healthring b { font:22px/1 var(--lab-mono); font-weight:400; }
.healthring small { margin-left:2px; color:var(--muted); font-size:9px; }
.healthring.level-great,.healthring.level-good { --ring:var(--success); }
.healthring.level-watch { --ring:var(--warning); }
.healthring.level-risk { --ring:var(--danger); }
.healthlegend { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin-top:18px; }
.healthlegend>span { font-size:9px; color:var(--muted); text-align:center; }
.healthlegend .lgreat,.healthlegend .lgood { color:var(--success); }
.healthlegend .lwatch { color:var(--warning); }
.healthlegend .lrisk { color:var(--danger); }
.scoreexplain,.rawbox { margin-top:15px; padding:15px; border:1px solid var(--border); border-radius:6px; background:var(--card2); }
.scoreexplain>.row>span,.rawbox>.row>span { color:var(--muted); font-size:11px; }
.scoreexplain>.row>b,.rawbox>.row>b { font-size:11px; font-weight:500; overflow-wrap:anywhere; }
.breakdown,.rawfields { margin-top:12px; }
.breakdown>span,.rawfields>span { padding:5px 7px; border:1px solid var(--border); border-radius:4px; font-size:10px; overflow-wrap:anywhere; }
.breakdown .minus,.rawfields .yes { color:var(--warning); }
.breakdown .major,.rawfields .danger { color:var(--danger); }
.breakdown .base,.rawfields .no { color:var(--success); }
.report-sections { display:grid; grid-template-columns:1fr 1fr; gap:0 28px; align-items:start; }
.report-sections>.disclosure { min-width:0; }
.report-sections>#rawEvidenceSection { grid-column:1 / -1; }
.factgroup { margin-bottom:9px; border:1px solid var(--border); border-radius:7px; overflow:hidden; }
.factgroup>summary { display:flex; align-items:center; gap:12px; min-height:48px; padding:13px 15px; cursor:pointer; list-style:none; }
.factgroup>summary::-webkit-details-marker { display:none; }
.factgroup>summary>b { flex:1; font-size:13px; font-weight:500; }
.factgroup>summary>span { color:var(--muted); font-size:10px; }
.factgroup>summary::after { content:"+"; color:var(--muted); }
.factgroup[open]>summary::after { content:"−"; }
.factgrid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px 24px; }
.factgrid.inner { padding:0 15px 15px; }
.fact { min-width:0; padding:12px 0; border-top:1px solid var(--border); }
.fact>span { display:block; font-size:10px; color:var(--muted); }
.fact>b { display:block; margin-top:6px; font-size:12px; font-weight:500; overflow-wrap:anywhere; }
.evidenceboard { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:16px; }
.v4ev { min-width:0; padding:16px; border:1px solid var(--border); border-radius:7px; background:var(--card2); }
.v4evhead { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.v4evhead>b { font-size:13px; font-weight:500; }
.v4evhead>em { font-size:11px; font-style:normal; }
.evyes { color:var(--success); }
.evno { color:var(--warning); }
.evmix { color:var(--danger); }
.evunknown { color:var(--muted); }
.v4ev>small { display:block; margin-top:5px; font-size:10px; color:var(--muted); }
.v4votes { display:flex; flex-wrap:wrap; gap:8px; margin-top:11px; }
.v4votes>span { display:inline-flex; align-items:center; gap:6px; padding:4px 6px; border:1px solid var(--border); border-radius:4px; font-size:10px; }
.v4votes i { width:5px; height:5px; border-radius:50%; background:var(--muted); }
.v4votes i.yes { background:var(--success); }
.v4votes i.no { background:var(--warning); }
/* Historical records and local settings. */
.records-layout { display:grid; grid-template-columns:minmax(250px,.75fr) minmax(0,1.5fr); gap:24px; align-items:start; }
.records-stats-card .stats { grid-template-columns:1fr; margin-top:20px; }
.stat b { display:block; font-size:15px; font-weight:500; overflow-wrap:anywhere; }
.stat small:first-of-type { margin-top:9px; color:var(--text); }
.records-history-card>.row>div { display:flex; gap:10px; }
.records-history-card .mini { font-size:11px; }
.records-transfer-hint { margin-top:16px; }
#search { margin-top:16px; }
#history { margin-top:18px; }
.entry { padding:18px 0; border-bottom:1px solid var(--border); }
.entrytop { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.entrytop>b { min-width:0; font-size:14px; font-weight:500; overflow-wrap:anywhere; }
.entry small { display:block; margin-top:6px; font-size:11px; line-height:1.8; overflow-wrap:anywhere; }
.delete { flex:0 0 40px; width:40px; min-height:40px; margin-top:-9px; padding:7px; color:var(--muted); background:transparent; font-size:20px; }
.delete:not(:disabled):active { color:var(--danger); background:color-mix(in srgb, var(--danger) 8%, var(--card2)); }
.records-empty { padding:35px 20px; }
.records-empty-orb { width:26px; height:26px; border:1px solid var(--accent); border-radius:50%; opacity:.7; }
.records-empty .ghost { margin-top:7px; }
.settings-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:22px 28px; align-items:start; }
.settings-layout>.controllercard { grid-column:1; grid-row:1 / 3; }
.settings-layout>.theme-card { grid-column:2; }
.settings-layout>.settings-disclosure { padding:0 22px; border:1px solid var(--border); border-radius:10px; background:var(--card2); }
.settings-layout>#mihomoDiagnostics { grid-column:1 / -1; }
.settings-disclosure>.disclosure-body { padding-bottom:22px; }
.fieldlabel { display:block; margin:20px 0 8px; color:var(--text); font-size:12px; font-weight:500; }
.controllercard>.hint { max-width:50em; }
.controllerguide { margin-top:20px; padding:18px; border:1px solid var(--border); border-radius:7px; background:var(--card2); }
.guidehead { display:flex; align-items:center; justify-content:space-between; gap:14px; }
.guidebadge { color:var(--accent); font-size:11px; white-space:nowrap; }
.controllerguide>p { margin-top:12px; color:var(--muted); font-size:12px; line-height:1.8; }
.controllerguide ol { padding:0; margin:17px 0; list-style:none; counter-reset:guide; }
.controllerguide li { counter-increment:guide; display:grid; grid-template-columns:24px minmax(0,1fr); gap:4px 12px; padding:10px 0; }
.controllerguide li::before { content:counter(guide); grid-row:span 2; color:var(--accent); font:12px/1.7 var(--lab-mono); }
.controllerguide li>b { font-size:13px; font-weight:500; }
.controllerguide li>span { color:var(--muted); font-size:11px; line-height:1.8; }
.theme-picker { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; margin-top:22px; max-width:330px; }
.theme-picker>button { position:relative; aspect-ratio:1; min-height:36px; padding:0; border:1px solid var(--border); border-radius:7px; }
.theme-picker>button.active { outline:1px solid var(--accent); outline-offset:4px; }
.theme-picker [data-theme="midnight"] { background:#142331; }
.theme-picker [data-theme="violet"] { background:#362441; }
.theme-picker [data-theme="rose"] { background:#502b3d; }
.theme-picker [data-theme="forest"] { background:#233d31; }
.theme-picker [data-theme="graphite"] { background:#343a43; }
.theme-picker [data-theme="light"] { background:#e2e6df; }
.motion-preference { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:26px; padding-top:20px; border-top:1px solid var(--border); }
.motion-preference>div { min-width:0; }
.motion-preference b { display:block; font-size:13px; font-weight:500; }
.motion-preference small { display:block; margin-top:5px; max-width:27em; font-size:11px; line-height:1.8; color:var(--muted); }
.motion-preference select { flex:0 0 130px; font-size:12px; }
.settings-disclosure label { display:block; font-size:12px; }
.settings-disclosure label>select { margin-top:7px; }
.settings-disclosure .controlleractions { display:flex; flex-wrap:wrap; }
.settings-disclosure .controlleractions>button { flex:1; min-width:130px; font-size:12px; }
.routepanel { padding:18px 0; border-bottom:1px solid var(--border); }
.routepanel>.wide { margin-top:16px; width:auto; min-width:180px; }
.routepanel h3 { font-size:19px; }
#providerHealth { margin-top:18px; }
#providerHealth .source { display:flex; justify-content:space-between; gap:15px; }
.picker { margin-top:13px; }
.picker button { min-height:40px; padding:8px 10px; border:1px solid var(--border); background:transparent; font-size:12px; }
.picker button.active { color:var(--accentText); border-color:var(--accent); background:var(--accent); }
.customline { margin:12px 0; }
.customline>input { flex:1; }
.customline>button { flex:0 0 auto; }
.preview { margin:17px 0; padding:15px; border:1px solid var(--border); border-radius:6px; background:var(--card2); }
.preview>span { display:block; color:var(--muted); font-size:11px; }
.preview>b { display:block; margin-top:5px; font-size:13px; font-weight:500; overflow-wrap:anywhere; }
/* Retained legacy telemetry lives behind Settings / Advanced only. These
   diagrams are explicitly illustrative and never claim observed routes. */
.legacy-telemetry { margin-top:16px; }
.network-orb { position:relative; min-height:380px; max-width:620px; display:grid; place-items:center; overflow:hidden; border:1px solid var(--border); border-radius:8px; background:var(--card2); }
.network-orb-svg { width:min(80%,320px); height:auto; pointer-events:none; }
.network-orb-halo { display:none; }
.orb-sphere { fill:transparent; stroke:var(--border); stroke-width:1.2; }
.orb-grid ellipse,.orb-grid path { fill:none; stroke:var(--muted); opacity:.4; stroke-width:.8; }
.orb-routes path { fill:none; stroke:var(--accent); opacity:.5; stroke-width:1; stroke-dasharray:2 10; }
.orb-nodes circle { fill:var(--muted); stroke:var(--card); stroke-width:1; }
.orb-nodes .orb-current-node { fill:var(--accent); }
.orb-nodes .orb-current-ring,.orb-nodes .orb-candidate-ring { fill:none; stroke:var(--accent); }
.orb-tracer { fill:var(--accent); }
.orb-scan-ring { fill:none; stroke:var(--accent); stroke-dasharray:8 18; opacity:.35; }
.orb-current-code { fill:var(--text); font-size:8px; font-weight:600; }
.orb-candidate-code { fill:var(--text); font-size:10.5px; font-weight:600; }
.orb-candidate-label-bg { fill:var(--card); stroke:var(--border); stroke-width:.8; }
.orb-candidate[data-tone="good"] .orb-candidate-dot { fill:var(--success); }
.orb-candidate[data-tone="watch"] .orb-candidate-dot { fill:var(--warning); }
.orb-candidate[data-tone="risk"] .orb-candidate-dot { fill:var(--danger); }
.network-orb-legend { position:absolute; top:12px; left:12px; display:flex; flex-wrap:wrap; align-items:center; gap:12px; max-width:calc(100% - 24px); }
.network-orb-legend>span,.orb-legend-action { display:inline-flex; align-items:center; gap:6px; color:var(--muted); font-size:10px; }
.network-orb-legend i { width:5px; height:5px; border-radius:50%; background:var(--muted); }
.network-orb-legend .legend-current { background:var(--accent); }
.orb-legend-action { padding:6px 8px; min-height:32px; border:1px solid var(--border); background:transparent; }
.orb-legend-action>b { font-weight:500; }
.network-orb-copy { position:absolute; left:16px; right:16px; bottom:16px; text-align:center; }
.network-orb-copy>span,.network-orb-copy>b,.network-orb-copy>small { display:block; }
.network-orb-copy>span { color:var(--muted); font-size:10px; }
.network-orb-copy>b { font-size:13px; font-weight:500; }
.network-orb-copy>small { margin-top:4px; font-size:10px; color:var(--muted); }
.nodelist,.results-window,.eventlog,.evidence-raw pre { scrollbar-width:thin; scrollbar-color:var(--border) transparent; }
/* Tablet and phone layouts are reorganized, never scaled-down desktop. */
@media (min-width:1500px) { .lab-shell { padding-inline:80px; } }
@media (max-width:1100px) {
  .lab-header-context { display:none; }
  .home-layout { grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:22px; }
  .home-identity { padding:26px; }
  .home-place { flex-direction:column; gap:9px; }
  .typebadge { margin-top:0; }
  .node-workspace { grid-template-columns:minmax(0,1.1fr) minmax(290px,.9fr); gap:22px; }
  .scan-task { padding:20px; }
  .records-layout { grid-template-columns:minmax(220px,.8fr) minmax(0,1.2fr); }
  .home-usecases { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
  .home-usecases>div:nth-child(3) { border-left:0; padding-left:0; }
}
@media (max-width:850px) {
  .home-layout { grid-template-columns:1fr; gap:28px; }
  .home-identity { min-height:320px; }
  .herohead { margin-bottom:24px; }
  .home-place { flex-direction:row; }
  .typebadge { margin-top:25px; }
  .identity-location-note { padding-top:24px; margin-top:18px; }
  .home-analysis { padding:0; }
  .home-usecases { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .home-usecases>div:nth-child(3) { border-left:1px solid var(--border); padding-left:12px; }
  .home-support { grid-template-columns:1fr 1fr; gap:20px; }
  .controller-summary,.home-next { align-items:flex-start; }
  .home-next { flex-direction:column; gap:5px; }
  .node-workspace { grid-template-columns:1fr; }
  .node-workspace>#batchLab,.node-workspace>#nodeBrowser { grid-column:1; grid-row:auto; max-width:none; }
  .scan-task { position:static; }
  .nodebrowser { margin-top:6px; }
  .scan-options { grid-template-columns:minmax(0,1fr) 90px; }
  .dimension-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .report-overview { grid-template-columns:1fr; }
  .report-sections { gap:0 22px; }
  .records-layout { grid-template-columns:1fr; }
  .records-stats-card .stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .settings-layout { gap:20px; }
  .settings-layout>.controllercard { grid-column:1 / -1; grid-row:auto; }
  .settings-layout>.theme-card { grid-column:1; }
  .motion-preference { flex-direction:column; align-items:stretch; }
  .motion-preference select { flex-basis:auto; }
}
@media (max-width:640px) {
  .lab-shell { padding-inline:20px; }
  .lab-header { gap:15px; min-height:82px; }
  .lab-brand { gap:10px; }
  .lab-brandmark { width:26px; height:26px; flex-basis:26px; }
  .lab-brand>span:last-child>b { font-size:17px; }
  .lab-brand small { font-size:7px; }
  .lab-header-actions { gap:12px; }
  .header-home { display:none; }
  .scanbtn { min-height:40px; padding:9px 11px; }
  .scanbtn b { font-size:11px; }
  .workspace-menu>summary { display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--muted); font-size:12px; }
  .menu-bars { font-size:20px; line-height:1; }
  .workspace-nav { display:flex; flex-wrap:wrap; gap:0 22px; min-height:0; padding:0 0 13px; }
  .workspace-nav .navitem { min-height:44px; padding:10px 1px; }
  .workspace-nav .navitem b { font-size:12px; }
  .workspace-nav .navicon { width:15px; height:15px; }
  .workspace-nav .navitem.active::after { bottom:3px; }
  .workspace-pages { padding-top:28px; }
  .pageheading { gap:14px; margin-bottom:24px; }
  .pageheading h2 { font-size:30px; }
  .pageheading .eyebrow { font-size:10px; }
  .pageheading p { font-size:12px; }
  .section-index { display:none; }
  .card { padding:20px; border-radius:10px; }
  .home-identity { min-height:305px; padding:24px 20px; }
  .home-place { gap:10px; }
  .home-place h2 { font-size:26px; }
  .typebadge { font-size:10px; padding:4px 6px; }
  .iplabel { margin-top:24px; }
  .ip { font-size:clamp(25px,7.5vw,40px); line-height:1.2; }
  .home-provider { margin-top:13px; gap:6px; font-size:12px; }
  .signal-tile { min-height:83px; padding:16px; }
  .signal-tile b { font-size:15px; }
  .home-usecases { gap:9px; }
  .home-usecases>div+div { padding-left:9px; }
  .home-usecases>div:nth-child(3) { padding-left:9px; }
  .home-usecases small { font-size:10px; }
  .home-usecases b { font-size:11px; }
  .home-evidence { font-size:10px; }
  .heroactions { gap:10px; }
  .heroactions .ghost { padding-inline:15px; }
  .home-support { grid-template-columns:1fr; gap:0; margin-top:28px; }
  .controller-summary { padding:20px 0; align-items:center; }
  .home-next { padding:20px 0; flex-direction:row; align-items:center; }
  .home-next p { max-width:24em; font-size:11px; }
  .home-next .textbutton { font-size:11px; white-space:nowrap; }
  .summary-copy .row { gap:10px; }
  .summary-copy p { font-size:11px; }
  .lab-footer { margin-top:44px; gap:12px; padding-top:20px; }
  .lab-footer>p { width:100%; order:2; margin-left:0; font-size:10px; }
  .footer-build { margin-left:auto; font-size:8px; }
  .connection-notice { align-items:flex-start; gap:8px; padding:13px 14px; font-size:11px; }
  .connection-notice .textbutton { font-size:11px; padding:7px 5px; }
  .node-workspace { gap:26px; }
  .scan-task { padding:20px; }
  .scan-task>.row h3 { font-size:21px; }
  .scan-options { grid-template-columns:minmax(0,1fr) 76px; gap:12px; }
  .scan-progress { margin-top:23px; }
  .scan-current { grid-template-columns:62px minmax(0,1fr); gap:9px; font-size:11px; }
  .scan-current>span { font-size:10px; }
  .nodefilters { grid-template-columns:minmax(0,1fr) 112px; }
  .nodeitem { padding:13px 14px; font-size:12px; }
  .groupdetailhead { padding:14px; }
  .switchpanel { padding:18px; }
  .ranking-summary { align-items:flex-start; gap:14px; padding-block:20px; }
  .ranking-summary b { font-size:16px; }
  .rank-scan-cta { padding-inline:11px; font-size:11px; }
  .ranking-tabs-hint { display:block; }
  .rank-controls { grid-template-columns:minmax(0,1fr) 103px; gap:9px; }
  .rank-controls #rankCountry { grid-column:1 / -1; }
  .rank-controls input,.rank-controls select { font-size:12px; }
  .rank-note { font-size:10px; line-height:1.9; }
  .rank-selection-actions { gap:6px; }
  .rank-selection-actions>span { width:100%; }
  .rank-selection-actions button { font-size:11px; padding:8px; }
  .rank-open { grid-template-columns:27px minmax(0,1fr) 66px; gap:10px; }
  .rank-medal { font-size:13px; }
  .rank-main>strong { font-size:14px; -webkit-line-clamp:3; }
  .rank-score>strong { font-size:31px; }
  .rank-score.provisional>strong { font-size:27px; }
  .rank-score>span { font-size:10px; }
  .rank-meta { font-size:10px; }
  .rank-snapshot { font-size:9px; }
  .rank-badges { gap:5px; margin-top:9px; }
  .rank-badges>span { font-size:9px; padding:3px 5px; }
  .rank-actions { padding-left:37px; gap:10px; flex-wrap:wrap; }
  .rank-selection { font-size:10px; }
  .rank-time { flex:1; font-size:9px; }
  .rank-deep { font-size:11px; padding-inline:7px; }
  .report-summary { padding:20px; }
  .score-overview { gap:14px; }
  .score-overview h2 { font-size:24px; }
  .score-overview p { font-size:11px; }
  .report-summary .rank-score>strong { font-size:39px; }
  .dimension-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 18px; }
  .dimension>span { font-size:10px; }
  .dimension>b { font-size:12px; }
  .report-source-health { grid-template-columns:1fr; }
  .report-overview { gap:18px; margin-bottom:22px; }
  .reviewhero { margin-top:21px; gap:15px; }
  .reviewhero b { font-size:17px; }
  .reviewhero strong { font-size:31px; }
  .report-sections { grid-template-columns:1fr; gap:0; }
  .report-sections>#rawEvidenceSection { grid-column:auto; }
  .factgrid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; }
  .evidenceboard { grid-template-columns:1fr; }
  .records-layout { gap:18px; }
  .records-stats-card .stats { grid-template-columns:1fr; }
  .records-history-card>.row { align-items:flex-start; gap:10px; }
  .records-history-card>.row h2 { font-size:18px; }
  .records-history-card>.row>div { gap:6px; }
  .records-history-card .mini { font-size:10px; padding:7px 8px; }
  .entrytop>b { font-size:13px; }
  .settings-layout { grid-template-columns:1fr; gap:20px; }
  .settings-layout>.controllercard,.settings-layout>.theme-card,.settings-layout>#mihomoDiagnostics { grid-column:1; }
  .settings-layout>.settings-disclosure { padding-inline:20px; }
  .theme-picker { gap:12px; max-width:330px; }
  .theme-picker>button { min-height:32px; }
  .motion-preference { flex-direction:row; align-items:center; }
  .motion-preference select { flex:0 0 116px; }
  .controllerresult { grid-template-columns:1fr; }
  .routepanel>.wide { width:100%; min-width:0; }
  .network-orb { min-height:335px; }
}
@media (max-width:380px) {
  .lab-shell { padding-inline:16px; }
  .lab-brand>span:last-child>b { font-size:16px; }
  .lab-brand small { letter-spacing:.1em; }
  .pageheading h2 { font-size:27px; }
  .pageheading { align-items:flex-start; }
  .home-place { flex-direction:column; gap:8px; }
  .typebadge { margin-top:0; }
  .home-identity { padding:22px 18px; }
  .homeverdict { gap:8px; }
  .homeverdict b { font-size:14px; }
  .homeverdict em { font-size:13px; }
  .home-usecases { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
  .home-usecases>div:nth-child(3) { border-left:0; padding-left:0; }
  .ai-service-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .heroactions .ghost { padding-inline:10px; font-size:11px; }
  .home-next { flex-direction:column; align-items:stretch; }
  .home-next .textbutton { margin-top:7px; border:1px solid var(--border); border-radius:6px; }
  .connection-notice { flex-direction:column; }
  .connection-notice .textbutton { padding-left:0; }
  .scan-options { grid-template-columns:1fr; }
  .deep-profile-label,.deep-profile-hint { grid-column:1; }
  .nodefilters { grid-template-columns:1fr; }
  .ranking-summary { flex-direction:column; }
  .rank-scan-cta { width:100%; }
  .rank-actions { gap:8px; }
  .rank-time { order:3; flex:0 0 100%; margin-top:-3px; }
  .rank-deep { margin-left:auto; }
  .records-history-card>.row { flex-direction:column; }
  .motion-preference { flex-direction:column; align-items:stretch; }
  .motion-preference select { flex-basis:auto; }
  .sourcehead { gap:8px; }
  .sourcehead>b { font-size:12px; }
  .footer-build { font-size:7px; }
}
@media (hover:hover) and (pointer:fine) {
  .workspace-nav .navitem:hover,.header-home:hover { color:var(--text); }
  .ghost:not(:disabled):hover,.scanbtn:not(:disabled):hover,.groupchip:not(:disabled):hover { border-color:color-mix(in srgb, var(--accent) 65%, var(--border)); }
  .nodeitem:not(:disabled):hover { background:color-mix(in srgb, var(--accent) 5%, var(--card2)); }
  .rank-open:not(:disabled):hover .rank-main>strong { color:var(--accent); }
  .textbutton:not(:disabled):hover { text-decoration:underline; text-underline-offset:5px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
  .orb-tracers,.orb-current-ring { display:none; }
}
body[data-motion="reduced"] *,body[data-motion="reduced"] *::before,body[data-motion="reduced"] *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
body[data-motion="reduced"] .orb-tracers,body[data-motion="reduced"] .orb-current-ring { display:none; }
