/* ===== Network page ===== */

/* two-column hero */
.net-hero{
  position:relative;z-index:1;
  display:grid;grid-template-columns:1.06fr 0.94fr;gap:56px;align-items:center;
}
.net-hero-main{min-width:0;container-type:inline-size}
/* "AS25198: one global backbone," is the widest black half here at 7.97cqw/px */
.net-hero .page-title{font-size:clamp(26px, 7.6cqw, 52px);max-width:none}
.net-hero .page-lede{max-width:54ch}
.net-hero-actions{display:flex;gap:12px;margin-top:30px;flex-wrap:wrap}

/* peering snapshot — key/value list inside .panel */
.kv{display:flex;flex-direction:column}
.kv .r{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--hairline-2)}
.kv .r:last-child{border-bottom:0}
.kv .k{font-size:13.5px;color:var(--muted);letter-spacing:-0.005em}
.kv .v{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--ink);font-weight:500;text-align:right;white-space:nowrap}
.kv .v a{color:var(--blue);text-decoration:none;border-bottom:1px solid color-mix(in oklab,var(--blue) 30%,transparent)}
html[data-theme="dark"] .kv .v a{color:var(--blue-600)}

/* generic network chip (no flag) */
.netchips{display:flex;gap:8px;flex-wrap:wrap}
.netchip{
  display:inline-flex;align-items:center;gap:9px;
  padding:8px 14px;border-radius:999px;border:1px solid var(--hairline);background:var(--bg-2);
  font-size:13.5px;color:var(--ink-2);font-weight:500;letter-spacing:-0.005em;box-shadow:var(--shadow-sm);
}
.netchip .dotk{width:6px;height:6px;border-radius:50%;background:var(--blue);opacity:.55;flex:none}
.netchip.ix .dotk{background:var(--accent);opacity:1;box-shadow:0 0 0 2px rgba(0,209,178,.18)}

/* Tier-1 peer grid */
.peer-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.peer{
  border:1px solid var(--hairline);border-radius:12px;background:var(--bg-2);
  padding:16px 18px;display:flex;flex-direction:column;gap:5px;
  transition:transform .15s,border-color .15s,box-shadow .15s;
}
.peer:hover{transform:translateY(-2px);border-color:color-mix(in oklab,var(--blue) 25%,var(--hairline));box-shadow:var(--shadow-sm)}
.peer .nm{font-size:15px;font-weight:600;letter-spacing:-0.01em;color:var(--ink)}
.peer .ro{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted-2)}

/* two-column rich block (AI routing + headroom) */
.net-split{
  display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;
  padding:40px;border:1px solid var(--hairline);border-radius:var(--radius-lg);
  background:var(--bg-2);box-shadow:var(--shadow-md);
}
.net-split h3{margin:0;font-size:26px;font-weight:500;letter-spacing:-0.02em}
.net-split p{color:var(--muted);font-size:15.5px;line-height:1.6;margin:16px 0 0;max-width:46ch}

/* capacity headroom bar */
.cap{margin-top:26px}
.cap-top{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:12px}
.cap-top .lab{font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2)}
.cap-top .big{font-size:15px;font-weight:600;color:var(--ink);font-family:'JetBrains Mono',monospace}
.cap-bar{height:14px;border-radius:99px;background:var(--bg-tint);overflow:hidden;display:flex;border:1px solid var(--hairline-2)}
.cap-bar i{display:block;height:100%}
.cap-bar .used{background:linear-gradient(90deg,var(--blue),var(--blue-500))}
.cap-bar .free{flex:1;background:repeating-linear-gradient(45deg,transparent,transparent 5px,color-mix(in oklab,var(--accent) 26%,transparent) 5px,color-mix(in oklab,var(--accent) 26%,transparent) 10px)}
.cap-leg{display:flex;gap:22px;margin-top:13px;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted)}
.cap-leg span{display:inline-flex;align-items:center;gap:7px}
.cap-leg i{display:inline-block;width:9px;height:9px;border-radius:2px}
.cap-leg i.u{background:var(--blue-500)}
.cap-leg i.f{background:repeating-linear-gradient(45deg,transparent,transparent 3px,color-mix(in oklab,var(--accent) 40%,transparent) 3px,color-mix(in oklab,var(--accent) 40%,transparent) 6px)}

/* DDoS check list */
.ddos-list{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--hairline);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-2)}
.ddos-list .it{display:grid;grid-template-columns:26px 1fr;gap:15px;padding:22px 26px;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);font-size:14.5px;line-height:1.55;color:var(--ink-2)}
.ddos-list .it:nth-child(2n){border-right:0}
.ddos-list .it b{color:var(--ink);font-weight:600}
.ddos-list .it .ck{width:26px;height:26px;border-radius:8px;background:color-mix(in oklab,var(--accent) 16%,transparent);color:#067a68;display:flex;align-items:center;justify-content:center;flex:none}
html[data-theme="dark"] .ddos-list .it .ck{color:#3fe0c8}

/* services grid reuses .uc; add a meta line */
.svc .meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto;padding-top:4px}
.svc .meta span{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.04em;color:var(--muted);border:1px solid var(--hairline);border-radius:999px;padding:3px 8px}

/* The network hero carries four stats in the left track of a two-column grid.
   Between the hero's own 920px stack point and ~1180px that track is only
   ~470-560px wide — room for three auto-fit tracks, so the fourth stat was
   orphaned on a row of its own. An explicit 2×2 there is always even. */
@media (min-width:921px) and (max-width:1180px){
  .net-hero .uc-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:920px){
  .net-hero{grid-template-columns:1fr;gap:36px}
  .net-hero-aside{order:2}
  .net-split{grid-template-columns:1fr;gap:28px;padding:28px}
  .peer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  .ddos-list{grid-template-columns:1fr}
  .ddos-list .it{border-right:0}
}
@media (max-width:600px){
  .net-split{padding:20px}
  .net-split h3{font-size:21px}
  .net-split p{font-size:15px}
  .ddos-list .it{padding:18px 18px;gap:12px;font-size:14px}
  .peer{padding:14px 15px}
  .peer .ro{font-size:11px}
  .kv .r{gap:12px;padding:11px 0}
  .kv .v{white-space:normal;word-break:break-word}
  .cap-leg{flex-wrap:wrap;gap:8px 18px}
  .cap-top{flex-wrap:wrap;gap:4px 12px}
  /* micro-label floor on phones (see usecases.css) */
  .svc .meta span{font-size:11px}
}
@media (max-width:430px){
  /* Two peer cards left ~145px — "Hurricane Electric" broke across
     three lines and the role label under it looked orphaned. */
  .peer-grid{grid-template-columns:1fr}
}
