/* LineScout design tokens + shared components. Loaded first by every page (hub, NFL, NHL).
   Rules: one focal number per card (mono), depth over borders, one "selected" style, no emoji icons.
   Shared component classes use the ls- prefix so app.css and nhl.css never collide. */
:root {
  /* surfaces: depth comes from tone + shadow, not borders */
  --bg: #04080D; --surface-1: #080F17; --surface-2: #0C1520; --surface-3: #10192A; --surface-4: #152238;
  --line: rgba(255,255,255,.06); --line-strong: rgba(255,255,255,.12);
  /* text (all pass 4.5:1 on --surface-2 except --text-off, which is for disabled only) */
  --text: #F1F5F9; --text-2: #D5DEE9; --text-3: #A3B1C4; --text-4: #8C9AAF; --text-off: #475569;
  /* roles */
  --win: #4EEE52;  --win-dim: rgba(78,238,82,.10);  --win-line: rgba(78,238,82,.35);
  --loss: #FB7185; --loss-dim: rgba(251,113,133,.10); --loss-line: rgba(251,113,133,.35);
  --warn: #FBBF24; --warn-dim: rgba(251,191,36,.10);  --warn-line: rgba(251,191,36,.35);
  --info: #60A5FA; --info-dim: rgba(96,165,250,.10);  --info-line: rgba(96,165,250,.35);
  --focus: #4EEE52;
  /* type: 8 sizes */
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: "IBM Plex Mono", "SF Mono", "Cascadia Code", ui-monospace, Consolas, monospace;
  --fs-11: 11px; --fs-12: 12px; --fs-13: 13px; --fs-14: 14px; --fs-16: 16px; --fs-20: 20px; --fs-24: 24px; --fs-32: 32px;
  /* spacing: 4pt grid */
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --sp-12: 48px;
  /* radius: 4 values */
  --r-sm: 8px; --r-md: 12px; --r-lg: 16px; --r-pill: 999px;
  /* elevation */
  --sh-1: 0 1px 2px rgba(0,0,0,.4);
  --sh-2: 0 4px 16px rgba(0,0,0,.5);
  --sh-3: 0 12px 40px rgba(0,0,0,.6);
  /* motion */
  --ease: cubic-bezier(0.16, 1, 0.3, 1); --t-fast: 150ms; --t-med: 250ms; --t-slow: 350ms;
  --tap: 44px;

  /* legacy names (app.css / nhl.css / hub.css) now point at the tokens above */
  --green: var(--win); --green-dim: var(--win-dim); --green-line: var(--win-line);
  --red: var(--loss); --red-dim: var(--loss-dim); --red-line: var(--loss-line);
  --amber: var(--warn); --amber-dim: var(--warn-dim); --amber-line: var(--warn-line);
  --blue: var(--info); --blue-dim: var(--info-dim); --blue-line: var(--info-line);
  --t1: var(--text); --t2: var(--text-2); --t3: var(--text-3); --t4: var(--text-4);
  --s0: var(--bg); --s1: var(--surface-2); --s2: var(--surface-3);
  --b1: var(--line); --b2: var(--line-strong);
  --night: var(--bg); --panel: var(--surface-2); --panel2: var(--surface-3);
  --lamp: var(--win); --lamp-dim: var(--win-dim); --lamp-line: var(--win-line);
  --ice: var(--info); --ice-dim: var(--info-dim); --ice-line: var(--info-line);
  --chalk: var(--text); --haze: var(--text-3); --faint: var(--text-4); --line2: var(--line-strong);
  --display: var(--font); --body: var(--font); --sans: var(--font);
}
@media (prefers-reduced-motion: reduce) {
  :root { --t-fast: 0ms; --t-med: 0ms; --t-slow: 0ms; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* ---------- base quality floor ---------- */
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: var(--r-sm); }
button, [role=button], [role=tab], a { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.mono, .ls-num { font-family: var(--mono); font-variant-numeric: tabular-nums; }

/* ---------- card ---------- */
.ls-card { background: var(--surface-2); border-radius: var(--r-lg); box-shadow: var(--sh-1), inset 0 0 0 1px var(--line);
  padding: var(--sp-4); transition: transform var(--t-med) var(--ease), box-shadow var(--t-med) var(--ease); }
.ls-card.is-raised { background: var(--surface-3); box-shadow: var(--sh-2), inset 0 0 0 1px var(--line); }
.ls-card.is-link:hover { transform: translateY(-1px); box-shadow: var(--sh-2), inset 0 0 0 1px var(--line-strong); }
.ls-card + .ls-card { margin-top: var(--sp-3); }
.ls-section { display: flex; align-items: center; gap: var(--sp-3); margin: var(--sp-6) 0 var(--sp-3);
  font-size: var(--fs-11); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--text-3); }
.ls-section::after { content: ""; flex: 1; height: 1px; background: var(--line); }

/* ---------- pill / badge ---------- */
.ls-pill { display: inline-flex; align-items: center; gap: var(--sp-1); height: 22px; padding: 0 var(--sp-2);
  border-radius: var(--r-pill); font-size: var(--fs-11); font-weight: 700; letter-spacing: .02em; white-space: nowrap;
  background: var(--line); color: var(--text-2); }
.ls-pill.win  { background: var(--win-dim);  color: var(--win);  box-shadow: inset 0 0 0 1px var(--win-line); }
.ls-pill.loss { background: var(--loss-dim); color: var(--loss); box-shadow: inset 0 0 0 1px var(--loss-line); }
.ls-pill.warn { background: var(--warn-dim); color: var(--warn); box-shadow: inset 0 0 0 1px var(--warn-line); }
.ls-pill.info { background: var(--info-dim); color: var(--info); box-shadow: inset 0 0 0 1px var(--info-line); }

/* ---------- chip filter (one selected style everywhere) ---------- */
.ls-chips { display: flex; gap: var(--sp-2); overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.ls-chips::-webkit-scrollbar { display: none; }
.ls-chip { min-height: 36px; padding: 0 var(--sp-3); border: 0; border-radius: var(--r-pill); cursor: pointer; white-space: nowrap;
  background: var(--surface-3); color: var(--text-2); font-size: var(--fs-13); font-weight: 600; position: relative;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease); }
.ls-chip::after { content: ""; position: absolute; inset: -4px 0; } /* 44px hit area */
.ls-chip:hover { background: var(--surface-4); color: var(--text); }
.ls-chip.on, .ls-chip[aria-selected=true] { background: var(--text); color: var(--bg); }
.ls-chip .n { margin-left: 6px; font-family: var(--mono); opacity: .7; }

/* ---------- tab bar (segmented) ---------- */
.ls-tabs { display: flex; gap: var(--sp-1); padding: var(--sp-1); background: var(--surface-1); border-radius: var(--r-md); }
.ls-tab { flex: 1; min-height: var(--tap); border: 0; border-radius: var(--r-sm); background: transparent; cursor: pointer;
  color: var(--text-3); font-size: var(--fs-14); font-weight: 600; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease); }
.ls-tab:hover { color: var(--text); }
.ls-tab.on, .ls-tab[aria-selected=true] { background: var(--surface-3); color: var(--text); box-shadow: var(--sh-1); }

/* ---------- stat tile ---------- */
.ls-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: var(--sp-2); }
.ls-stat { background: var(--surface-2); border-radius: var(--r-md); padding: var(--sp-3) var(--sp-4); box-shadow: inset 0 0 0 1px var(--line); min-width: 0; }
.ls-stat .k { font-size: var(--fs-11); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); }
.ls-stat .v { margin-top: var(--sp-1); font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: var(--fs-24); font-weight: 700; color: var(--text); line-height: 1.1; }
.ls-stat .v.win { color: var(--win); } .ls-stat .v.loss { color: var(--loss); }
.ls-stat .sub { margin-top: 2px; font-size: var(--fs-12); color: var(--text-3); }

/* ---------- pick row: bet → chance + price → one reason ---------- */
.ls-pick { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-4); border-radius: var(--r-md); transition: background var(--t-fast) var(--ease); }
.ls-pick:hover { background: rgba(255,255,255,.025); }
.ls-pick + .ls-pick { box-shadow: 0 -1px 0 var(--line); }
.ls-pick .bet { font-size: var(--fs-14); font-weight: 650; color: var(--text); }
.ls-pick .why { margin-top: 2px; font-size: var(--fs-12); color: var(--text-3); overflow-wrap: anywhere; }
.ls-pick .chance { font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: var(--fs-20); font-weight: 750; color: var(--text); text-align: right; }
.ls-pick .price { font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: var(--fs-13); color: var(--text-2); text-align: right; }
.ls-pick .price small { display: block; font-size: var(--fs-11); color: var(--text-4); }
.ls-pick.sel { box-shadow: inset 3px 0 0 var(--win); background: var(--win-dim); }

/* ---------- buttons ---------- */
.ls-btn { min-height: var(--tap); padding: 0 var(--sp-4); border: 0; border-radius: var(--r-sm); cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-2);
  font-size: var(--fs-14); font-weight: 650; background: var(--surface-3); color: var(--text);
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease); }
.ls-btn:hover { background: var(--surface-4); }
.ls-btn:active { transform: scale(.98); }
.ls-btn.primary { background: linear-gradient(135deg, #4EEE52, #1FAF2E); color: #03140D; }
.ls-btn.primary:hover { filter: brightness(1.06); }
.ls-btn.ghost { background: transparent; box-shadow: inset 0 0 0 1px var(--line-strong); }
.ls-btn:disabled { opacity: .45; cursor: not-allowed; }
.ls-add { width: 32px; height: 32px; border-radius: var(--r-pill); border: 0; cursor: pointer; position: relative;
  background: var(--surface-4); color: var(--text-2); font-size: var(--fs-16); display: grid; place-items: center; }
.ls-add::after { content: ""; position: absolute; inset: -6px; } /* 44px hit area */
.ls-add.on { background: var(--win); color: var(--bg); }

/* ---------- empty state ---------- */
.ls-empty { text-align: center; padding: var(--sp-8) var(--sp-6); color: var(--text-3); font-size: var(--fs-14); line-height: 1.55; }
.ls-empty .ttl { color: var(--text); font-size: var(--fs-16); font-weight: 650; margin-bottom: var(--sp-1); }
.ls-empty svg { width: 28px; height: 28px; color: var(--text-4); margin-bottom: var(--sp-3); }
.ls-empty .ls-btn { margin-top: var(--sp-4); }

/* ---------- skeleton (sized like the final content, so nothing jumps) ---------- */
.ls-skel { position: relative; overflow: hidden; background: var(--surface-3); border-radius: var(--r-sm); }
.ls-skel::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.04), transparent); animation: ls-shimmer 1.4s infinite; }
.ls-skel.line { height: 12px; margin: 6px 0; } .ls-skel.title { height: 18px; width: 55%; } .ls-skel.card { height: 120px; border-radius: var(--r-lg); }
@keyframes ls-shimmer { to { transform: translateX(100%); } }

/* ---------- icons (inline SVG, 1.5px stroke) ---------- */
.ls-ico { width: 16px; height: 16px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; vertical-align: -3px; }

/* ---------- entry motion ---------- */
@keyframes ls-enter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.ls-enter { animation: ls-enter var(--t-slow) var(--ease) both; }

/* ---------- icons used in render code: <i class="ic ic-NAME"> (replaces emoji; takes the text colour) ---------- */
.ic { display: inline-block; width: 1.05em; height: 1.05em; vertical-align: -0.16em; background: currentColor; flex: none;
  -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }
.ic-target { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%279%27/%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%275%27/%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%271%27/%3E%3C/svg%3E"); }
.ic-value { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%279%27/%3E%3Cpath d=%27M15 9.5c-.5-1-1.6-1.5-3-1.5-1.7 0-3 .9-3 2s1.3 1.7 3 2 3 .9 3 2-1.3 2-3 2c-1.4 0-2.5-.5-3-1.5M12 6.5v11%27/%3E%3C/svg%3E"); }
.ic-anchor { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%275%27 r=%272%27/%3E%3Cpath d=%27M12 7v14M5 12H3a9 9 0 0 0 18 0h-2M8 10h8%27/%3E%3C/svg%3E"); }
.ic-plus { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M12 5v14M5 12h14%27/%3E%3C/svg%3E"); }
.ic-ticket { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M3 8a2 2 0 0 0 2-2h14a2 2 0 0 0 2 2v2a2 2 0 0 0 0 4v2a2 2 0 0 0-2 2H5a2 2 0 0 0-2-2v-2a2 2 0 0 0 0-4z%27/%3E%3Cpath d=%27M13 6v2M13 11v2M13 16v2%27/%3E%3C/svg%3E"); }
.ic-camera { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M4 8h3l2-3h6l2 3h3v11H4z%27/%3E%3Ccircle cx=%2712%27 cy=%2713%27 r=%273.5%27/%3E%3C/svg%3E"); }
.ic-flame { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M12 3c1 3 4 5 4 9a4 4 0 0 1-8 0c0-2 1-3 2-4 0 2 1 3 2 3 0-3-1-5 0-8z%27/%3E%3Cpath d=%27M8.5 15a3.5 3.5 0 0 0 7 0%27/%3E%3C/svg%3E"); }
.ic-trend { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M3 17l6-6 4 4 8-8%27/%3E%3Cpath d=%27M15 7h6v6%27/%3E%3C/svg%3E"); }
.ic-filter { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M4 5h16l-6 7v6l-4 2v-8z%27/%3E%3C/svg%3E"); }
.ic-alert { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M12 4 2.5 20h19z%27/%3E%3Cpath d=%27M12 10v4M12 17h.01%27/%3E%3C/svg%3E"); }
.ic-chat { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M4 5h16v11H9l-5 4z%27/%3E%3C/svg%3E"); }
.ic-search { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2711%27 cy=%2711%27 r=%276%27/%3E%3Cpath d=%27m20 20-4.5-4.5%27/%3E%3C/svg%3E"); }
.ic-shield { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M12 3 5 6v6c0 4 3 7.5 7 9 4-1.5 7-5 7-9V6z%27/%3E%3C/svg%3E"); }
.ic-balance { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M12 4v16M7 20h10M5 8h14M5 8l-2.5 6a2.5 2.5 0 0 0 5 0zM19 8l-2.5 6a2.5 2.5 0 0 0 5 0z%27/%3E%3C/svg%3E"); }
.ic-rocket { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M5 15c-1.5 1.5-2 4-2 6 2 0 4.5-.5 6-2M9 15l-3-3 2.5-5.5C11 3 15 3 21 3c0 6 0 10-3.5 12.5L12 18z%27/%3E%3Ccircle cx=%2715%27 cy=%279%27 r=%271.5%27/%3E%3C/svg%3E"); }
.ic-list { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M9 6h11M9 12h11M9 18h11M4 6h.01M4 12h.01M4 18h.01%27/%3E%3C/svg%3E"); }
.ic-clock { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Ccircle cx=%2712%27 cy=%2712%27 r=%279%27/%3E%3Cpath d=%27M12 7v5l3 2%27/%3E%3C/svg%3E"); }
.ic-layers { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m12 3 9 5-9 5-9-5z%27/%3E%3Cpath d=%27m3 13 9 5 9-5%27/%3E%3C/svg%3E"); }
.ic-tag { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M3 12V4h8l10 10-8 8z%27/%3E%3Ccircle cx=%277.5%27 cy=%278%27 r=%271.2%27/%3E%3C/svg%3E"); }
.ic-whale { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M3 13c0 4 3 6 8 6 6 0 10-4 10-9-2 0-3 1-3.5 2.5C16 10 14 9 11 9c-4 0-8 1-8 4z%27/%3E%3Cpath d=%27M18 6c0-1.5 1-2.5 2.5-3M18 6c0-1.5-1-2.5-2.5-3%27/%3E%3C/svg%3E"); }
.ic-link { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1%27/%3E%3C/svg%3E"); }
.ic-net { --i: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%271.7%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M3 19V7l4-3h10l4 3v12M3 19h18M7 4v15M12 4v15M17 4v15M3 10h18M3 14.5h18%27/%3E%3C/svg%3E"); }

/* Crisp text everywhere (2026-10-16): real font weights only, no faked bold, sharp glyph rendering */
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-synthesis: none; -webkit-text-size-adjust: 100%; }
