/* Cyber & Infrastructure page: overrides on cyber.css (legacy base), using the shared tokens in theme.css.
   Same rules as the board: flat, hairlines, grey when normal, colour only when something is off. */

:root{
  --cyan:#6ba6d4;--cyan2:#4d86b4;--green:#55b89a;--amber:#f5a83a;--red:#ff5a4d;--mag:#d98a5a;--gold:#e6c85c;
  --mono:var(--font); /* labels use the display face; real codes (CVE ids, ports) use --code */
  --code:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;
}
body{background:var(--bg)}
body::after{background:none} /* no scanlines; theme.css uses this layer for the posture frame */
.cy-sweep,.cy-corners,.cy-card::before{display:none!important}

/* header */
.cy-top{background:none;border-bottom:0;padding:14px clamp(12px,1.3vw,24px) 10px;gap:20px;align-items:baseline}
.cy-brand{min-width:0;flex:1}
.cy-posture{display:flex;align-items:baseline;gap:14px;min-width:0;--pc:var(--label)}
.cy-posture[data-posture=nominal]{--pc:var(--ok)}.cy-posture[data-posture="no data"]{--pc:var(--label)}.cy-posture[data-posture=monitoring]{--pc:var(--warn)}.cy-posture[data-posture=elevated]{--pc:var(--bad)}
.cy-posture small{font-size:var(--t-xs);letter-spacing:0;text-transform:none;color:var(--label);white-space:nowrap}
.cy-posture b{font-size:var(--t-xl);font-weight:500;letter-spacing:0;line-height:1.1;color:var(--pc);transition:color .6s}
.cy-posture em{flex:1;min-width:0;font-style:normal;font-size:var(--t-md);letter-spacing:0;color:var(--quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cy-posture[data-posture=nominal] em,.cy-posture[data-posture=standby] em{color:var(--label)}
.cy-clocks{gap:clamp(14px,1.3vw,24px);align-items:baseline}
.cy-clock{display:flex;flex-direction:row;align-items:baseline;gap:7px;border:0;border-radius:0;background:none;padding:0}
.cy-clock span{font:400 var(--t-xs) var(--font);letter-spacing:0;text-transform:none;color:var(--label)}
.cy-clock b{font:400 var(--t-md) var(--font);letter-spacing:0;font-variant-numeric:tabular-nums;color:var(--muted);text-shadow:none}
.cy-clock:first-child b{font-size:var(--t-lg);color:var(--fg);text-shadow:none}
.cy-nav{align-items:baseline;gap:clamp(12px,1.1vw,20px)}
.cy-btn{font:400 var(--t-sm) var(--font);letter-spacing:0;text-transform:none;color:var(--muted);background:none;border:0;border-radius:0;padding:0}
.cy-btn:hover{color:var(--fg);background:none;box-shadow:none}

/* status strip: dark cockpit. Amber = worth a look; red = hard down. No filled blocks. */
.ops-strip{background:var(--line);border:1px solid var(--line);border-radius:var(--radius);margin:0 clamp(12px,1.3vw,24px);gap:1px;font-family:var(--font);overflow:hidden}
.ops-pill{flex:1 1 0;min-width:0;background:var(--panel);border-right:0;padding:clamp(8px,.65vw,13px) clamp(10px,.85vw,16px);box-shadow:inset 0 2px 0 transparent}
.ops-pill::before{display:none}
.ops-pill span{font-size:var(--t-xs);letter-spacing:0;text-transform:none;color:var(--label);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ops-pill b{font-size:var(--t-lg);font-weight:500;letter-spacing:0;color:var(--quiet);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ops-pill.ops-unk b{color:var(--label)}
.ops-pill.ops-warn{background:var(--panel);box-shadow:inset 0 2px 0 var(--warn)}.ops-pill.ops-warn b{color:var(--warn)}
.ops-pill.ops-crit{background:linear-gradient(rgba(244,105,92,.09),rgba(244,105,92,.03)),var(--panel);box-shadow:inset 0 2px 0 var(--bad)}.ops-pill.ops-crit b{color:var(--bad)}

/* cards */
.cy-card{background:var(--panel);border-color:var(--line);border-radius:var(--radius);backdrop-filter:none;box-shadow:none}
.cy-card h2{font:500 var(--t-sm) var(--font);letter-spacing:0;text-transform:none;color:var(--muted)}
.cy-card h2 span::before{display:none}

.cy-card h2 em,.cy-card h3 em{font-family:var(--font);font-size:var(--t-xs);letter-spacing:0;text-transform:none;color:var(--label)}
.cy-card h3{font:500 var(--t-xs) var(--font);letter-spacing:0;text-transform:none;color:var(--muted)}

/* internet threat level: a calm level ladder instead of a glowing dial */
.threat{grid-template-columns:110px 1fr}
.threat-dial{width:110px;height:110px;border-radius:var(--radius);border:1px solid color-mix(in srgb,var(--c,#555) 55%,transparent);
  background:color-mix(in srgb,var(--c,#555) 16%,#11151c);box-shadow:none!important;animation:none!important}
.threat-dial::after{display:none}
.threat-dial b{font:600 21px var(--font);font-stretch:112%;letter-spacing:.1em;text-shadow:none}
.threat-dial small{font:400 var(--t-xs) var(--font);letter-spacing:0;text-transform:none}
.threat-scale i{font-family:var(--font);border-radius:var(--radius);background:#0f1319}
.threat[data-level=green]{--c:#57d9a3}.threat[data-level=yellow]{--c:#f2d14b}.threat[data-level=orange]{--c:#f59a4b}.threat[data-level=red]{--c:#ff6b6b}

/* ports: real port numbers keep a code font */
.port{font-family:var(--font)}
.pn b{font-family:var(--code);font-size:12px}
.pb{background:#1b222c;height:5px}
.pb i{background:var(--cyan);box-shadow:none}
.port.voip .pb i{background:var(--mag)}
.port em{font-variant-numeric:tabular-nums;color:#c8c2e6}

/* carriers, cloud, lists */
.net,.svc,.kst,.kev,.rw,.nw,.src{background:var(--panel2);border-color:var(--line);border-radius:var(--radius)}
.net.hl{background:#1a222c;border-color:#34445a}
.net>i,.svc i,.src i{box-shadow:none!important}
.net.lvl-bad>i,.svc.lvl-bad i{animation:none}
.net-state{font:500 var(--t-xs) var(--font);letter-spacing:0;text-transform:none}
.svc-group h4{font:500 var(--t-xs) var(--font);letter-spacing:0;text-transform:none;color:var(--label)}
.svc:hover,.kev:hover,.nw:hover{border-color:var(--cyan2)}
.kst b{font:300 24px var(--font);font-stretch:110%;text-shadow:none!important}
.kev-top b{font-family:var(--code);color:#bcd8f0}
.kev-top time,.rw-top time,.src small{font-family:var(--font)}
.kev.fresh{border-left-color:var(--cyan);background:linear-gradient(90deg,rgba(127,182,224,.10),#151b23 45%)}
.kev.ransom{border-left-color:var(--mag)}
.tag-rw,.tag-or{font-family:var(--font);letter-spacing:.02em}
.tag-rw{background:rgba(240,149,90,.14);color:#ffd9bd;border-color:rgba(240,149,90,.45)}
.rw.crit{border-left-color:var(--mag)}
.rw.oregon{background:linear-gradient(90deg,rgba(255,207,112,.10),#151b23 50%)}
.tab{font:400 var(--t-sm) var(--font);letter-spacing:0;text-transform:none;border:0;border-radius:0;background:none;color:var(--label);padding:2px 0}
.tab.on{background:none;color:var(--fg);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}

/* map */
.cy-mapwrap,#cmap,#cmap.leaflet-container{background:#0b0f15;border-radius:var(--radius)}
.cy-mapwrap{border-color:var(--line)}
.cy-maphud{font-family:var(--font)}
.cy-maphud.tl,.cy-maphud.bl{background:rgba(13,17,23,.85);border-color:var(--line);border-radius:var(--radius)}
.cy-maphud.tl b{letter-spacing:0;text-transform:none;font-weight:500;color:var(--quiet)}
.out{box-shadow:none;background:radial-gradient(circle,rgba(255,107,107,.35),rgba(255,107,107,.06) 60%,transparent 70%);border-color:var(--red)}
.out i{border-color:var(--red)}
.out-md{border-color:#f59a4b;background:radial-gradient(circle,rgba(245,154,75,.32),transparent 70%)}.out-md i{border-color:#f59a4b}
.out-lo{border-color:#f2d14b;background:radial-gradient(circle,rgba(242,209,75,.25),transparent 70%)}.out-lo i{border-color:#f2d14b}
.lg-out{box-shadow:none;border-color:var(--red)}
.rwc{font-family:var(--font);background:rgba(240,149,90,.18);border-color:var(--mag);color:#ffe3cc;box-shadow:none}
.lg-rw{background:rgba(240,149,90,.2);border-color:var(--mag)}
.hq,.lg-hq{box-shadow:0 0 0 3px rgba(255,207,112,.22)}
.leaflet-bar a{background:#141a22;color:#d8e0e8;border-color:var(--line)}
.leaflet-tooltip{background:#141a22;border-color:var(--line)}

/* ticker */
.cy-ticker{background:none;border-top-color:var(--line)}
.cy-tick-label{background:none;color:var(--label);border-right:1px solid var(--line);font:400 var(--t-xs) var(--font);letter-spacing:0;text-transform:none}
.cy-ticker .tk i{font-family:var(--font);background:rgba(127,182,224,.12);color:#bcd8f0;border-color:rgba(127,182,224,.35)}
.port.voip .pb i{background:var(--mag)}

/* type pass: sentence case and the shared scale everywhere on this page */
.threat-dial b{font:500 var(--t-lg) var(--font);letter-spacing:0;text-transform:none}
.threat-scale i{font-size:var(--t-xs);letter-spacing:0;text-transform:none}
.net b,.svc b,.kev b,.rw b,.nw b{font-size:var(--t-sm)}
.net small,.svc small,.kev small,.rw small,.nw small,.src small,.kev-top time,.rw-top time{font-size:var(--t-xs)}
.cy-maphud{font-size:var(--t-xs);letter-spacing:0;text-transform:none}

/* trend strips under the status cells (trends.js) */
.ops-pill{display:flex;flex-direction:column}
.ops-pill .spark{display:block;width:100%;height:clamp(14px,1.05vw,20px);margin-top:clamp(5px,.4vw,8px);color:var(--label);overflow:visible}
.ops-pill.ops-warn .spark{color:var(--warn)}.ops-pill.ops-crit .spark{color:var(--bad)}
.spark .sp-line{fill:none;stroke:currentColor;stroke-width:1.25;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.spark .sp-area{fill:currentColor;opacity:.09;stroke:none}
.spark .sp-base,.spark .sp-zero{stroke:var(--line2);stroke-width:1;vector-effect:non-scaling-stroke}
.spark.sp-empty .sp-base{stroke-dasharray:1 3}

/* map symbols: same flat language as the board (no radial glow) */
.out{background:rgba(244,105,92,.10)!important;border:1.5px solid var(--bad)!important;box-shadow:none!important;animation:none!important}
.out-md{background:rgba(238,170,69,.10)!important;border-color:var(--warn)!important}
.out-lo{background:rgba(224,196,98,.06)!important;border-color:rgba(224,196,98,.7)!important}
.out i,.out-md i,.out-lo i{display:none}
.rwc{background:#070a0e!important;border:1px solid var(--warn)!important;color:var(--warn)!important;box-shadow:none!important}
.hq,.lg-hq{box-shadow:none!important}

/* infrastructure layers (cyber-infra.js) */
.cab-mk{width:8px;height:8px;margin:1px;transform:rotate(45deg);background:var(--warn);box-shadow:0 0 0 1px #070a0e}
.c2-mk{display:grid;place-items:center;border-radius:2px;background:#070a0e;border:1px solid var(--muted);color:var(--quiet);font:500 9px/1 var(--font)}
.cy-maphud .lg-cab{display:inline-block;width:14px;height:0;border-top:1px solid #6f8396;vertical-align:middle;margin-right:6px}
.cy-maphud .lg-cabw{display:inline-block;width:7px;height:7px;background:var(--warn);transform:rotate(45deg);margin:0 7px 0 2px}
.cy-maphud .lg-c2{display:inline-block;width:8px;height:8px;border:1px solid var(--muted);border-radius:1px;margin-right:6px}
.nga-tip{max-width:340px;white-space:normal}
