html[data-cn-theme="dark"] { background: #0B0E14; }
html[data-cn-theme="light"] { background: #FFFFFF; }
/* Cogent Networks - shared site styles (Dark Aurora + Light Enterprise themes) */
html { scroll-behavior: smooth; scroll-padding-top: 88px; }
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; background: #0B0E14; font-family: Inter, system-ui, sans-serif; color: #9AA4B2; -webkit-font-smoothing: antialiased; text-wrap: pretty; }
a { color: #4C8DFF; text-decoration: none; }
a:hover { color: #EEF2F8; }
button { font-family: inherit; }
@keyframes cnLive { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
@keyframes cnHubSpin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
@keyframes cnHubPulse { 0%, 100% { opacity: 0.25; transform: translate(-50%, -50%) scale(1); } 50% { opacity: 0.6; transform: translate(-50%, -50%) scale(1.08); } }

[data-cn-theme="dark"], html[data-cn-theme="dark"] { --accent-btn:#4C8DFF; --bg:#0B0E14; --bg-alt:#0E131B; --bg-hero:#101722; --bg-deep:#0C1017; --bg-footer:#080B10; --card-deep:#131A24; --card-deep-2:#1A212C; --surface:#141922; --surface-2:#191F2A; --line:rgba(255,255,255,0.09); --line-soft:rgba(255,255,255,0.06); --text:#EEF2F8; --hero-text:#FCFDFF; --body:#9AA4B2; --muted:#8892A1; --accent-text:#4C8DFF; --accent:#4C8DFF; --accent2:#38BDF8; --live:#34D399; --amber:#FBBF24; --on-accent:#06110F; --hero-sub:rgba(255,255,255,0.79); --badge-border:rgba(255,255,255,0.13); --badge-bg:rgba(255,255,255,0.055); --hero-muted:rgba(255,255,255,0.62); --overlay-nav:rgba(11,14,20,0.86); --overlay-photo:rgba(11,14,20,0.88); --shadow-card:0 40px 90px rgba(0,0,0,0.55); --cert-filter:grayscale(1) invert(1) brightness(1.6); --cert-opacity:0.62; --accent-rgb:76,141,255; --accent2-rgb:56,189,248; --live-rgb:52,211,153; --amber-rgb:251,191,36; --show-when-dark:inline; --show-when-light:none;
  --hub-chip-bg:#141922; --hub-chip-border:rgba(255,255,255,0.12); --hub-chip-text:#EEF2F8; --hub-spoke:rgba(255,255,255,0.10); --hub-orbit:rgba(76,141,255,0.28); --hub-core-bg:#141922; --hub-core-ring:#4C8DFF; --hub-core-ringw:1px; --hub-core-glow:rgba(76,141,255,0.26); --hub-core-title:#EEF2F8; --hub-core-shadow:none; --hub-panel-bg:#141922; --hub-panel-border:rgba(255,255,255,0.12); --hub-panel-text:#EEF2F8; --hub-panel-line:rgba(255,255,255,0.10); --hub-legend:#9AA4B2;  --hub-core-accent:#4C8DFF; --hub-card-shadow:0 2px 10px rgba(0,0,0,0.30); --hub-card-shadow-hover:0 14px 34px rgba(0,0,0,0.46); --hub-panel-head-bg:#191F2A; --hub-panel-head-fg:#EEF2F8; --pv-shadow:0 2px 10px rgba(0,0,0,0.30); --pv-shadow-hover:0 14px 34px rgba(0,0,0,0.46); --pv-stair-bg:#131A24; --hub-grid-dot:rgba(255,255,255,0.10); --hub-grid-opacity:1; --cert-plate:#FFFFFF;}
[data-cn-theme="light"], html[data-cn-theme="light"] { --accent-btn:#0A4FD1; --bg:#FFFFFF; --bg-alt:#F5F7FA; --bg-hero:#FFFFFF; --bg-deep:#0A2540; --bg-footer:#071B2E; --card-deep:#0B2A4A; --card-deep-2:#0E3358; --surface:#FFFFFF; --surface-2:#F5F7FA; --line:#E2E7EE; --line-soft:rgba(10,37,64,0.07); --text:#0A2540; --hero-text:#0A2540; --body:#3A4658; --muted:#5A6673; --accent-text:#0A4FD1; --accent:#0A4FD1; --accent2:#1E5FBF; --live:#128463; --amber:#B8730B; --on-accent:#FFFFFF; --hero-sub:#3A4658; --badge-border:rgba(10,37,64,0.16); --badge-bg:#F5F7FA; --hero-muted:#8592A3; --overlay-nav:rgba(255,255,255,0.92); --overlay-photo:rgba(10,37,64,0.86); --shadow-card:0 30px 70px rgba(3,32,92,0.35); --cert-filter:grayscale(1); --cert-opacity:0.68; --accent-rgb:10,79,209; --accent2-rgb:30,95,191; --live-rgb:18,132,99; --amber-rgb:184,115,11; --show-when-dark:none; --show-when-light:inline;
  --hub-chip-bg:#FFFFFF; --hub-chip-border:#D9E1EC; --hub-chip-text:#0A2540; --hub-spoke:#E2E7EE; --hub-orbit:rgba(10,79,209,0.45); --hub-core-bg:#0A2540; --hub-core-ring:#0A4FD1; --hub-core-ringw:2px; --hub-core-glow:rgba(10,79,209,0.28); --hub-core-title:#FFFFFF; --hub-core-shadow:0 18px 48px rgba(10,37,64,0.26); --hub-panel-bg:#FFFFFF; --hub-panel-border:#E2E7EE; --hub-panel-text:#0A2540; --hub-panel-line:#EDF1F7; --hub-legend:#3A4658; --hub-core-accent:#7FB2FF; --hub-card-shadow:0 2px 10px rgba(10,37,64,0.10); --hub-card-shadow-hover:0 16px 36px rgba(10,37,64,0.20); --hub-panel-head-bg:#0A2540; --hub-panel-head-fg:#FFFFFF;  --pv-shadow:0 2px 10px rgba(10,37,64,0.09); --pv-shadow-hover:0 16px 36px rgba(10,37,64,0.19); --pv-stair-bg:#EDF1F7; --hub-grid-dot:rgba(10,37,64,0.09); --hub-grid-opacity:1; --cert-plate:#FFFFFF;}

[data-cn-theme] a, [data-cn-theme] div, [data-cn-theme] span, [data-cn-theme] section, [data-cn-theme] header, [data-cn-theme] footer, [data-cn-theme] h1, [data-cn-theme] h2, [data-cn-theme] h3, [data-cn-theme] p, [data-cn-theme] article, [data-cn-theme] button { transition: background-color .2s ease, color .2s ease, border-color .2s ease; }
[data-cn-theme="light"] a:not([class*="cn-btn"]) { color: var(--accent-text); }
[data-cn-theme="light"] a:not([class*="cn-btn"]):hover { color: #0A2540; }
/* components that set their own link colour must win over the global light-theme rule */
[data-cn-theme] .cn-breadcrumb a { color: var(--muted); }
[data-cn-theme] .cn-breadcrumb a:hover { color: var(--accent-text, var(--accent)); }
[data-cn-theme] a.d6-node, [data-cn-theme] a.d6-node .d6-node-t { color: var(--hub-chip-text); }
[data-cn-theme] a.hub-chip, [data-cn-theme] a.hub-chip .hub-dot { color: var(--hub-chip-text); }
[data-cn-theme] .hub-legend a { color: var(--hub-legend); }
body[data-body-theme="light"] { background: #FFFFFF; }

/* Cogent OS hub - two concentric orbits, theme-following, collision-free */
.hub-stage-wrap { display: flex; justify-content: center; }
.hub-stage { position: relative; width: 1008px; height: 940px; flex-shrink: 0; }
.hub-svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.hub-orbit-ring { fill: none; stroke: var(--hub-orbit); stroke-width: 1; stroke-dasharray: 3 9;
  transform-origin: 504px 470px; animation: cnHubSpin 150s linear infinite; }
.hub-orbit-ring.outer { animation-duration: 220s; animation-direction: reverse; }
.hub-line { stroke: var(--hub-spoke); stroke-width: 1; }
.hub-pulse { stroke: var(--hub-core-ring); stroke-width: 1.6; stroke-linecap: round; opacity: 0.75;
  animation: cnHubTravel 5.4s linear infinite; }
@keyframes cnHubTravel { 0% { stroke-dashoffset: var(--len); opacity: 0; }
  12% { opacity: 0.8; } 88% { opacity: 0.8; } 100% { stroke-dashoffset: 0; opacity: 0; } }
/* cnHubPulse already applies translate(-50%,-50%) - no margin offset here or it doubles */
.hub-glow { position: absolute; left: 504px; top: 470px; width: 300px; height: 300px;
  border-radius: 50%; background: var(--hub-core-glow); animation: cnHubPulse 5.2s ease-in-out infinite; }
.hub-stage-wrap { overflow: visible; }
.hub-ring { position: absolute; left: 504px; top: 470px; width: 196px; height: 196px; margin: -98px 0 0 -98px;
  border-radius: 50%; border: var(--hub-core-ringw) solid var(--hub-core-ring); }
.hub-core { position: absolute; left: 504px; top: 470px; width: 176px; height: 176px; margin: -88px 0 0 -88px;
  border-radius: 50%; background: var(--hub-core-bg); box-shadow: var(--hub-core-shadow);
  display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; z-index: 3; }
.hub-core-title { font-size: 19px; font-weight: 700; letter-spacing: 0.6px; color: var(--hub-core-title); }
.hub-core-sub { font-family: 'JetBrains Mono', monospace; font-size: 9px; font-weight: 500; letter-spacing: 1.4px;
  margin-top: 7px; color: var(--hub-core-accent); }
.hub-card { position: absolute; z-index: 2; width: 148px; margin: -29px 0 0 -74px; box-sizing: border-box;
  display: flex; align-items: flex-start; gap: 8px; padding: 11px 12px; border-radius: 9px; cursor: pointer;
  background: var(--hub-chip-bg); border: 1px solid var(--hub-chip-border); box-shadow: var(--hub-card-shadow);
  transition: box-shadow .18s ease, border-color .18s ease, transform .12s ease; }
.hub-card:hover { border-color: var(--hub-core-ring); box-shadow: var(--hub-card-shadow-hover); z-index: 4; }
.hub-card .hub-dot { margin-top: 4px; }
.hub-card-t { font-size: 11.5px; font-weight: 600; line-height: 1.32; color: var(--hub-chip-text); }
[data-cn-theme] a.hub-card, [data-cn-theme] a.hub-card .hub-card-t { color: var(--hub-chip-text); }
.hub-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.hub-legend { display: flex; flex-wrap: wrap; gap: 12px 26px; justify-content: center; margin-top: 30px; }
.hub-legend a { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600;
  white-space: nowrap; color: var(--hub-legend); }
.hub-legend a:hover { color: var(--hub-core-ring); }
[data-cn-theme] .hub-legend a { color: var(--hub-legend); }
[data-cn-theme] .hub-legend a:hover { color: var(--hub-core-ring); }
.hub-legend .hub-dot { width: 10px; height: 10px; }
.hub-panels { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; max-width: 780px; margin: 40px auto 0; }
.hub-panel { border-radius: 10px; overflow: hidden; border: 1px solid var(--hub-panel-border); background: var(--hub-panel-bg); }
.hub-panel-head { background: var(--hub-panel-head-bg); color: var(--hub-panel-head-fg);
  font-family: 'JetBrains Mono', monospace; font-size: 10.5px; font-weight: 700; letter-spacing: 2.4px; padding: 14px 20px; }
.hub-panel-body { padding: 18px 20px 20px; }
.hub-panel-row { font-size: 13.5px; color: var(--hub-panel-text); padding-bottom: 10px; margin-bottom: 11px;
  border-bottom: 1px solid var(--hub-panel-line); }
.hub-panel-row:last-child { border-bottom: none; padding-bottom: 0; margin-bottom: 0; }

/* Mega menu */
.cn-megamenu { display: none; }
.cn-megamenu.open { display: block; }
.cn-nav-trigger:hover { color: var(--text) !important; }
.mm-col-title { font-size: 13.5px; font-weight: 600; color: var(--text); margin-bottom: 12px; display: inline-block; }
.mm-link { display: block; font-size: 12.5px; color: var(--body); margin-bottom: 8px; }
.mm-link:hover { color: var(--accent); }

/* ---- navy bands in light theme carry the dark palette (was slate-on-navy) ---- */
[data-cn-theme="light"] .on-dark, [data-cn-theme="light"] .on-dark * {
  --text: #EEF2F8; --body: #9AA4B2; --muted: #8892A1;
  --line: rgba(255,255,255,0.09); --line-soft: rgba(255,255,255,0.06);
  --surface: #141922; --surface-2: #191F2A; --bg-alt: #0E131B;
  --accent: #4C8DFF; --accent-text: #4C8DFF; --accent-rgb: 76,141,255;
  --live: #34D399; --amber: #FBBF24; --hub-chip-text: #EEF2F8;
  --hub-chip-bg: #141922; --hub-chip-border: rgba(255,255,255,0.12);
  --hub-core-bg: #191F2A; --hub-core-ring: #4C8DFF; --hub-core-title: #EEF2F8;
  --hub-core-shadow: none; --hub-panel-bg: #141922; --hub-panel-border: rgba(255,255,255,0.12);
  --hub-panel-text: #EEF2F8; --hub-panel-line: rgba(255,255,255,0.10);
  --hub-spoke: rgba(255,255,255,0.10); --hub-legend: #9AA4B2;
}
[data-cn-theme="light"] .on-dark .cn-eyebrow { color: #4C8DFF; }
[data-cn-theme="light"] .on-dark a:not([class*="cn-btn"]) { color: #4C8DFF; }
[data-cn-theme="light"] .on-dark .cn-photo-cap { color: #FFFFFF; }

/* ---- logo tagline ---- */
.cn-tagline { font-size: 10.5px; font-weight: 500; letter-spacing: 0.03em; text-transform: none;
  color: var(--muted); line-height: 1.2; white-space: nowrap; }
.cn-tagline-footer { color: rgba(255,255,255,0.62); text-transform: none; letter-spacing: 0.04em; font-size: 11px; }
@media (max-width: 1180px) { .cn-tagline:not(.cn-tagline-footer) { display: none; } }

/* Mega-menu links must read as neutral ink, not accent - beats the global light link rule */
[data-cn-theme] a.mm-link { color: var(--body); }
[data-cn-theme] a.mm-link:hover { color: var(--accent); }
[data-cn-theme] a.mm-col-title { color: var(--text); }
[data-cn-theme] a.mm-col-title:hover { color: var(--accent); }
[data-cn-theme] a:focus-visible, [data-cn-theme] button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* Cogent OS hub band: filled background so the section reads as a distinct platform
   statement rather than flat canvas. Accent washes plus a faint dot grid, both theme-aware. */
.hub-section { position: relative; overflow: hidden; background: var(--bg-alt); }
.hub-section::before { content: ''; position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(880px 620px at 82% 6%, rgba(var(--accent-rgb), 0.13), rgba(var(--accent-rgb), 0) 70%),
    radial-gradient(720px 560px at 10% 96%, rgba(var(--accent-rgb), 0.09), rgba(var(--accent-rgb), 0) 70%); }
.hub-section::after { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: var(--hub-grid-opacity);
  background-image: radial-gradient(var(--hub-grid-dot) 1px, transparent 1px);
  background-size: 26px 26px;
  mask-image: radial-gradient(1200px 760px at 50% 42%, #000 35%, transparent 78%);
  -webkit-mask-image: radial-gradient(1200px 760px at 50% 42%, #000 35%, transparent 78%); }
.hub-section > * { position: relative; z-index: 1; }

/* ---- language picker ---- */
.cn-lang { position: relative; flex-shrink: 0; }
.cn-lang-btn { display: inline-flex; align-items: center; gap: 5px; height: 40px; padding: 0 11px;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.08em; font-weight: 500;
  color: var(--text); background: transparent; border: 1px solid var(--badge-border); border-radius: 6px;
  cursor: pointer; transition: border-color .16s ease, color .16s ease; }
.cn-lang-btn:hover { border-color: var(--accent); }
.cn-lang-caret { font-size: 8px; opacity: 0.7; }
.cn-lang-menu { position: absolute; top: calc(100% + 8px); right: 0; z-index: 80; min-width: 168px;
  padding: 7px; border-radius: 8px; background: var(--surface); border: 1px solid var(--line);
  box-shadow: var(--pv-shadow-hover); display: none; }
.cn-lang.open .cn-lang-menu { display: block; }
.cn-lang-item { display: block; padding: 9px 11px; border-radius: 5px; font-size: 13.5px;
  color: var(--body); white-space: nowrap; }
.cn-lang-item:hover { background: var(--surface-2); color: var(--text); }
.cn-lang-item.on { color: var(--accent); font-weight: 600; }
[data-cn-theme="light"] .cn-lang-item { color: var(--body); }
[data-cn-theme="light"] .cn-lang-item.on { color: var(--accent-text, var(--accent)); }
/* longer languages: keep nav from crowding at mid widths */
@media (max-width: 1300px) { .cn-lang-btn { padding: 0 9px; } }

/* ---- cookie consent ---- */
.cn-cookie { position: fixed; left: 0; right: 0; bottom: 0; z-index: 200; display: none;
  background: var(--surface); border-top: 1px solid var(--line); box-shadow: 0 -8px 30px rgba(0,0,0,0.18); }
.cn-cookie.show { display: block; }
.cn-cookie-in { max-width: 1320px; margin: 0 auto; padding: 16px 44px; display: flex; align-items: center; gap: 22px; }
.cn-cookie-t { font-size: 13px; line-height: 1.55; color: var(--body); flex: 1; }
.cn-cookie-t a { color: var(--accent-text, var(--accent)); text-decoration: underline; }
.cn-cookie-btns { display: flex; gap: 10px; flex-shrink: 0; }
.cn-cookie-btn { font-family: inherit; font-size: 13px; font-weight: 600; padding: 11px 18px; border-radius: 6px;
  cursor: pointer; border: 1px solid var(--badge-border); background: transparent; color: var(--text);
  min-height: 44px; white-space: nowrap; }
.cn-cookie-btn.primary { background: var(--accent-btn, var(--accent)); border-color: var(--accent-btn, var(--accent)); color: var(--on-accent); }
.cn-cookie-btn:hover { border-color: var(--accent); }
@media (max-width: 760px) {
  .cn-cookie-in { flex-direction: column; align-items: stretch; padding: 14px 18px; gap: 14px; }
  .cn-cookie-btns { flex-direction: column; }
  .cn-cookie-btn { width: 100%; }
}
