@charset "UTF-8";
/* ==========================================================================
   taniroaming.pl - arkusz produkcyjny (system MERIDIAN)
   Zlozony automatycznie z _build/css/ w kolejnosci alfabetycznej.
   Nie edytuj tego pliku recznie - edytuj pliki zrodlowe w _build/css/.
   ========================================================================== */


/* ===== 00-base ===== */

/* ==========================================================================
   taniroaming.pl - system wizualny "MERIDIAN - nocne niebo nad chmurami"
   Plik: 00-base.css  (fundament: tokeny, reset, typografia, uklad, komponenty,
   dekoracje, animacje wejscia, utilities)
   BEZ stylow specyficznych dla pojedynczych sekcji - te dopisuja builderzy sekcji
   w plikach 01-*.css ... 07-*.css z wlasnym prefiksem BEM (.hero__, .ways__, ...).
   Zaleznosci zewnetrzne: wylacznie Google Fonts (Inter, Sora) - z pelnym fallbackiem.
   Cala grafika wektorowa: gradienty, maski, blur, inline SVG. Zero plikow rastrowych.
   ========================================================================== */

/* ==========================================================================
   1. TOKENY
   ========================================================================== */
:root {
  /* --- Skala atramentu (bazowe granaty) --- */
  --ink-950: #04070F;
  --ink-900: #060A16;
  --ink-850: #0A1020;
  --ink-800: #0E1728;
  --ink-700: #14203A;
  --ink-600: #1B2A49;

  /* --- Powierzchnie (ciemny motyw domyslny) --- */
  --bg: #060A16;
  --bg-alt: #04070F;
  --surface: #0B1122;
  --surface-2: #101A31;
  --surface-3: #16223D;
  --surface-glass: rgba(16, 26, 49, 0.62);
  --surface-glass-strong: rgba(6, 10, 22, 0.86);
  --scrim: rgba(4, 7, 15, 0.72);

  /* --- Obramowania --- */
  --border: rgba(148, 172, 214, 0.12);
  --border-strong: rgba(148, 172, 214, 0.24);
  --border-accent: rgba(79, 209, 232, 0.34);
  --hairline: rgba(238, 243, 255, 0.06);

  /* --- Tekst --- */
  --text: #EEF3FF;
  --text-secondary: #AFBEDA;
  --text-muted: #7C8CAC;
  --text-faint: #6F7E9E;
  --text-on-accent: #04121A;

  /* --- Akcent: cyjan (prowadzi wzrok, struktura, linki, stany aktywne) --- */
  --accent: #4FD1E8;
  --accent-hover: #7BE3F5;
  --accent-deep: #1B9FBD;
  --accent-soft: rgba(79, 209, 232, 0.12);
  --accent-glow: rgba(79, 209, 232, 0.38);
  --accent-2: #5B8CFF;
  --accent-2-soft: rgba(91, 140, 255, 0.14);

  /* --- Akcent: bursztyn (ostrzezenie, pulapka, jedno wyroznienie) --- */
  --gold: #F2C46B;
  --gold-hover: #FFD98C;
  --gold-deep: #C99534;
  --gold-soft: rgba(242, 196, 107, 0.12);
  --gold-glow: rgba(242, 196, 107, 0.30);

  /* --- Kolory statusu --- */
  --success: #4ADE9B;
  --success-soft: rgba(74, 222, 155, 0.12);
  --warning: #F5B451;
  --warning-soft: rgba(245, 180, 81, 0.12);
  --danger: #FF8A7A;
  --danger-soft: rgba(255, 138, 122, 0.12);

  /* --- Linie obramowan wariantow statusu (odwracane w .section--invert) --- */
  --gold-line: rgba(242, 196, 107, 0.32);
  --success-line: rgba(74, 222, 155, 0.30);
  --warning-line: rgba(245, 180, 81, 0.30);
  --danger-line: rgba(255, 138, 122, 0.32);
  --accent-2-glow: rgba(91, 140, 255, 0.45);
  --seam-ink: rgba(4, 7, 15, 0.07);

  /* --- Gradienty --- */
  --grad-accent: linear-gradient(135deg, #5B8CFF 0%, #4FD1E8 55%, #6EE7DC 100%);
  --grad-gold: linear-gradient(135deg, #F2C46B 0%, #FFD98C 100%);
  --grad-surface: linear-gradient(180deg, rgba(22, 34, 61, 0.88) 0%, rgba(11, 17, 34, 0.88) 100%);
  --grad-hairline: linear-gradient(90deg, transparent 0%, rgba(148, 172, 214, 0.32) 50%, transparent 100%);
  --grad-border: linear-gradient(140deg, rgba(79, 209, 232, 0.45) 0%, rgba(148, 172, 214, 0.10) 45%, rgba(242, 196, 107, 0.30) 100%);
  --grad-text: linear-gradient(120deg, #EEF3FF 0%, #A9D8F0 45%, #6EE7DC 100%);

  /* --- Motyw odwrocony (jasne sekcje) - uzywane przez .section--light --- */
  --surface-invert: #F4F7FC;
  --surface-invert-2: #E9EEF8;
  --surface-invert-3: #FFFFFF;
  --border-invert: rgba(11, 20, 40, 0.14);
  --border-invert-strong: rgba(11, 20, 40, 0.22);
  --border-invert-accent: rgba(11, 108, 130, 0.28);
  --text-invert: #0B1428;
  --text-invert-secondary: #3D4A63;
  --text-invert-muted: #5A6782;
  --accent-invert: #0B6C82;
  --accent-invert-soft: rgba(11, 108, 130, 0.09);
  --gold-invert: #8A5B12;
  --gold-invert-soft: rgba(138, 91, 18, 0.10);

  /* --- Siatka meridianow / szklo / ziarno --- */
  --grid-line: rgba(148, 172, 214, 0.07);
  --grid-line-invert: rgba(11, 20, 40, 0.06);
  --grid-size: 64px;
  --blur-glass: 18px;
  --blur-aurora: 120px;
  --noise-opacity: 0.035;

  /* --- Skala odstepow (bazowa 4px) --- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  --space-24: 96px;
  --space-32: 128px;

  /* --- Zaokraglenia (skala sztywna) --- */
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;
  --radius-xl: 32px;
  --radius-2xl: 40px;
  --radius-pill: 999px;

  /* --- Cienie --- */
  --shadow-xs: 0 1px 2px rgba(2, 5, 14, 0.45);
  --shadow-sm: 0 1px 2px rgba(2, 5, 14, 0.30), 0 2px 6px rgba(2, 5, 14, 0.40);
  --shadow-md: 0 2px 6px rgba(2, 5, 14, 0.30), 0 8px 20px rgba(2, 5, 14, 0.45);
  --shadow-lg: 0 6px 14px rgba(2, 5, 14, 0.35), 0 18px 44px rgba(2, 5, 14, 0.55);
  --shadow-xl: 0 10px 24px rgba(2, 5, 14, 0.40), 0 36px 90px rgba(2, 5, 14, 0.65);
  --shadow-glow: 0 0 0 1px rgba(79, 209, 232, 0.22), 0 14px 42px rgba(79, 209, 232, 0.20);
  --shadow-glow-gold: 0 0 0 1px rgba(242, 196, 107, 0.22), 0 14px 42px rgba(242, 196, 107, 0.18);
  --shadow-invert-sm: 0 1px 2px rgba(11, 20, 40, 0.06), 0 2px 8px rgba(11, 20, 40, 0.05);
  --shadow-invert-md: 0 4px 14px rgba(11, 20, 40, 0.08), 0 12px 32px rgba(11, 20, 40, 0.07);
  --shadow-invert-lg: 0 10px 30px rgba(11, 20, 40, 0.10), 0 30px 70px rgba(11, 20, 40, 0.10);

  /* --- Focus --- */
  --focus-outline: 2px solid #4FD1E8;
  --focus-outline-invert: 2px solid #0B6C82;
  --focus-offset: 3px;
  --focus-ring: 0 0 0 2px #060A16, 0 0 0 4px #4FD1E8;

  /* --- Ruch --- */
  --dur-fast: 140ms;
  --dur-base: 240ms;
  --dur-slow: 420ms;
  --dur-slower: 720ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1);
  --transition-base: color var(--dur-fast) linear, background-color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);

  /* --- Warstwy --- */
  --z-decor: 0;
  --z-base: 1;
  --z-raised: 10;
  --z-sticky: 100;
  --z-header: 200;
  --z-dropdown: 300;
  --z-overlay: 400;
  --z-modal: 500;
  --z-toast: 600;
  --z-skip: 700;

  /* --- Uklad --- */
  --container: 1200px;
  --container-narrow: 820px;
  --container-wide: 1440px;
  --container-pad: clamp(20px, 5vw, 40px);
  --measure: 68ch;
  --section-py: clamp(64px, 9vw, 128px);
  --section-py-tight: clamp(48px, 6vw, 80px);
  --header-h: clamp(60px, 7vw, 72px);

  /* --- Skala kafla ikony: trzy kroki (svg 16 / 20 / 24) --- */
  --chip-s: 32px;
  --chip-m: 44px;
  --chip-l: 56px;

  /* --- Typografia: rodziny --- */
  --font-display: 'Sora', 'Segoe UI', system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --font-text: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Consolas, 'Liberation Mono', 'Courier New', monospace;

  /* --- Typografia: metryka --- */
  --lh-tight: 1.06;
  --lh-heading: 1.18;
  --lh-base: 1.65;
  --lh-relaxed: 1.75;
  --ls-tight: -0.025em;
  --ls-normal: 0em;
  --ls-wide: 0.16em;

  /* --- Typografia: skala --- */
  /* Gorny kres 3.75rem: przy 4.25rem H1 lamal sie na 5 wierszy, z czwartym
     zlozonym z jednego wyrazu mimo text-wrap: balance. */
  --fs-h1: clamp(2.25rem, 1.40rem + 4.20vw, 3.75rem);
  --fs-h2: clamp(1.75rem, 1.15rem + 2.60vw, 3rem);
  --fs-h3: clamp(1.375rem, 1.05rem + 1.40vw, 2rem);
  --fs-h4: clamp(1.125rem, 0.98rem + 0.60vw, 1.375rem);
  --fs-h5: clamp(1rem, 0.96rem + 0.25vw, 1.125rem);
  --fs-h6: 0.9375rem;
  --fs-body: clamp(1rem, 0.96rem + 0.20vw, 1.125rem);
  --fs-lead: clamp(1.0625rem, 0.98rem + 0.50vw, 1.3125rem);
  --fs-small: 0.875rem;
  --fs-small-plus: 0.9375rem;
  --fs-eyebrow: 0.75rem;
  --fs-badge: 0.75rem;
  --fs-stat: clamp(1.75rem, 1.30rem + 2.00vw, 2.75rem);
}

/* ==========================================================================
   2. RESET
   ========================================================================== */
*,
*::before,
*::after { box-sizing: border-box; }

* { margin: 0; padding: 0; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + var(--space-6));
  overflow-x: hidden;
  tab-size: 4;
}

body {
  min-height: 100svh;
  /* UWAGA: zadnego overflow-x na <body> — czyni z body kontener przewijania
     i calkowicie lamie position: sticky (naglowek, panel wyniku kalkulatora).
     Odciecie poziomego scrolla realizuje wylacznie html { overflow-x: hidden }. */
  background-color: var(--bg);
  color: var(--text-secondary);
  font-family: var(--font-text);
  font-size: var(--fs-body);
  font-weight: 400;
  line-height: var(--lh-base);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-synthesis-weight: none;
}

/* Blokada scrolla przy otwartym menu mobilnym (klasa ustawiana z JS na html i body) */
html.is-nav-open,
body.is-nav-open { overflow: hidden; }

img, svg, video, canvas, picture {
  display: block;
  max-width: 100%;
  height: auto;
}

svg { fill: none; }

button, input, select, textarea, optgroup {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}

button { background: none; border: 0; cursor: pointer; }

a { color: inherit; text-decoration: none; }

ul, ol { list-style: none; }

table { border-collapse: collapse; border-spacing: 0; }

hr { border: 0; }

[hidden] { display: none !important; }

::selection {
  background-color: rgba(79, 209, 232, 0.28);
  color: var(--text);
}

:target { scroll-margin-top: calc(var(--header-h) + var(--space-6)); }

/* Globalny fallback focusa - komponenty nadpisuja szczegolami */
:focus-visible {
  outline: var(--focus-outline);
  outline-offset: var(--focus-offset);
}
:focus:not(:focus-visible) { outline: none; }

/* ==========================================================================
   3. TYPOGRAFIA BAZOWA
   ========================================================================== */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  color: var(--text);
  text-wrap: balance;
  overflow-wrap: break-word;
}

h1 {
  font-size: var(--fs-h1);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  font-weight: 700;
}

h2 {
  font-size: var(--fs-h2);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-tight);
  font-weight: 600;
}

h3 {
  font-size: var(--fs-h3);
  line-height: var(--lh-heading);
  letter-spacing: -0.015em;
  font-weight: 600;
}

h4 {
  font-size: var(--fs-h4);
  line-height: 1.3;
  font-weight: 600;
}

h5 {
  font-size: var(--fs-h5);
  line-height: 1.4;
  font-weight: 600;
}

h6 {
  font-size: var(--fs-h6);
  line-height: 1.4;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.10em;
  color: var(--text-muted);
}

p {
  max-width: var(--measure);
  overflow-wrap: break-word;
}

p + p { margin-top: var(--space-4); }

strong, b { font-weight: 600; color: var(--text); }

em, i { font-style: italic; }

small { font-size: var(--fs-small); line-height: 1.55; color: var(--text-muted); }

code, kbd, samp, pre {
  font-family: var(--font-mono);
  font-size: 0.9em;
  font-variant-numeric: tabular-nums;
}

abbr[title] { text-decoration: underline dotted; cursor: help; }

.lead {
  font-size: var(--fs-lead);
  line-height: 1.55;
  color: var(--text-secondary);
  max-width: var(--measure);
}

.text-muted { color: var(--text-muted); }
.text-strong { color: var(--text); }
.text-grad {
  background: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* Lista bez punktorow (semantyczne ul/ol, zerowa dekoracja) */
.list-clean { list-style: none; margin: 0; padding: 0; }

/* ==========================================================================
   4. UKLAD: .container / .section / .grid
   ========================================================================== */
.container {
  position: relative;
  z-index: var(--z-base);
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--container-pad);
}
.container--narrow { max-width: var(--container-narrow); }
.container--wide { max-width: var(--container-wide); }

.section {
  position: relative;
  isolation: isolate;
  overflow-x: clip;
  padding-block: var(--section-py);
  background-color: var(--bg);
  color: var(--text);
}
.section--deep { background-color: var(--bg-alt); }
.section--tight { padding-block: var(--section-py-tight); }
.section--flush-top { padding-top: 0; }
.section--flush-bottom { padding-bottom: 0; }

/* Jasny wariant sekcji: przelacza LOKALNIE tokeny semantyczne.
   .section--invert to alias .section--light - obie klasy dzialaja identycznie. */
.section--light,
.section--invert {
  --bg: var(--surface-invert);
  --bg-alt: var(--surface-invert-2);
  --surface: var(--surface-invert-3);
  --surface-2: var(--surface-invert-2);
  --surface-3: var(--surface-invert-3);
  --surface-glass: rgba(255, 255, 255, 0.72);
  --surface-glass-strong: rgba(255, 255, 255, 0.9);
  --border: var(--border-invert);
  --border-strong: var(--border-invert-strong);
  --border-accent: var(--border-invert-accent);
  --hairline: rgba(11, 20, 40, 0.08);
  --text: var(--text-invert);
  --text-secondary: var(--text-invert-secondary);
  --text-muted: var(--text-invert-muted);
  --text-faint: var(--text-invert-muted);
  --text-on-accent: #FFFFFF;
  --accent: var(--accent-invert);
  --accent-soft: var(--accent-invert-soft);
  --accent-hover: #0F8AA6;
  --accent-glow: rgba(11, 108, 130, 0.20);
  --gold: var(--gold-invert);
  --gold-soft: var(--gold-invert-soft);
  --success: #12775A;
  --success-soft: rgba(18, 119, 90, 0.10);
  --warning: #8A5B12;
  --warning-soft: rgba(138, 91, 18, 0.10);
  --danger: #A63324;
  --danger-soft: rgba(166, 51, 36, 0.10);
  --gold-line: rgba(138, 91, 18, 0.28);
  --success-line: rgba(18, 119, 90, 0.26);
  --warning-line: rgba(138, 91, 18, 0.28);
  --danger-line: rgba(166, 51, 36, 0.26);
  --seam-ink: rgba(4, 7, 15, 0.07);
  --shadow-sm: var(--shadow-invert-sm);
  --shadow-md: var(--shadow-invert-md);
  --shadow-lg: var(--shadow-invert-lg);
  --shadow-xl: var(--shadow-invert-lg);
  --shadow-glow: 0 0 0 1px rgba(11, 108, 130, 0.18), 0 14px 42px rgba(11, 20, 40, 0.10);
  /* Gradient akcentu w wariancie jasnym: kazdy stop >= 4.5:1 z biala etykieta
     (#0A5F73 = 6.9:1, #0B6C82 = 6.0:1, #0D7A84 = 5.1:1). */
  --grad-accent: linear-gradient(135deg, #0A5F73 0%, #0B6C82 55%, #0D7A84 100%);
  /* Panel w sekcji jasnej musi miec krawedz — bialy do konca, tlo sekcji to #F4F7FC. */
  --grad-surface: linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 100%);
  --grad-hairline: linear-gradient(90deg, transparent 0%, rgba(11, 20, 40, 0.16) 50%, transparent 100%);
  --grad-border: linear-gradient(140deg, rgba(11, 108, 130, 0.35) 0%, rgba(11, 20, 40, 0.08) 45%, rgba(138, 91, 18, 0.24) 100%);
  --grad-text: linear-gradient(120deg, #0B1428 0%, #0B6C82 60%, #12775A 100%);
  --grid-line: var(--grid-line-invert);
  --focus-outline: var(--focus-outline-invert);
  --focus-ring: 0 0 0 2px #F4F7FC, 0 0 0 4px #0B6C82;
}

.section__head {
  max-width: var(--measure);
  margin-bottom: clamp(32px, 4vw, 56px);
}
.section__head--center {
  margin-inline: auto;
  text-align: center;
}
.section__title {
  font-family: var(--font-display);
  font-size: var(--fs-h2);
  line-height: var(--lh-heading);
  letter-spacing: var(--ls-tight);
  font-weight: 600;
  color: var(--text);
}
.section__lead {
  margin-top: var(--space-4);
  font-size: var(--fs-lead);
  line-height: 1.55;
  color: var(--text-secondary);
  max-width: var(--measure);
}
.section__head--center .section__lead { margin-inline: auto; }

/* --- Siatki --- */
.grid {
  display: grid;
  gap: clamp(16px, 2.4vw, 28px);
  grid-template-columns: minmax(0, 1fr);
}
.grid--auto { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
.grid--tight { gap: var(--space-4); }
.grid--loose { gap: clamp(24px, 3.4vw, 40px); }

@media (min-width: 480px) {
  .grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 768px) {
  .grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .grid--split { grid-template-columns: 1.05fr 0.95fr; }
  .grid--sticky-aside { grid-template-columns: minmax(0, 1fr) 320px; }
  .grid--sticky-aside > .grid__aside {
    position: sticky;
    top: calc(var(--header-h) + 24px);
    align-self: start;
  }
}

/* ==========================================================================
   5. KOMPONENTY
   ========================================================================== */

/* --- .eyebrow: nadtytul sekcji (czysto typograficzny) --- */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  line-height: 1;
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--space-4);
}
.eyebrow::before {
  content: "";
  width: 26px;
  height: 1px;
  flex: none;
  background-color: currentColor;
  opacity: 0.55;
}
.section__head--center .eyebrow::after {
  content: "";
  width: 26px;
  height: 1px;
  flex: none;
  background-color: currentColor;
  opacity: 0.55;
}
.eyebrow--gold { color: var(--gold); }

/* --- .btn --- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  padding-inline: 26px;
  border-radius: var(--radius-pill);
  border: 1px solid transparent;
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.01em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition:
    transform var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out),
    background-color var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    color var(--dur-fast) linear;
  will-change: transform;
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0) scale(0.985); }
.btn:focus-visible {
  outline: var(--focus-outline);
  outline-offset: var(--focus-offset);
}
.btn[aria-disabled="true"],
.btn:disabled {
  opacity: 0.45;
  pointer-events: none;
}

.btn--primary {
  background: var(--grad-accent);
  color: var(--text-on-accent);
  box-shadow: var(--shadow-glow);
}
.btn--primary:hover { filter: brightness(1.06); box-shadow: var(--shadow-glow), var(--shadow-md); }
/* W sekcjach jasnych etykieta jest biala — rozjasnianie tla obnizyloby kontrast. */
.section--light .btn--primary:hover,
.section--invert .btn--primary:hover { filter: brightness(0.94); }

.btn--ghost {
  background-color: transparent;
  color: var(--text);
  border-color: var(--border-strong);
}
.btn--ghost:hover {
  border-color: var(--border-accent);
  background-color: var(--accent-soft);
}

.btn--quiet {
  background-color: transparent;
  border-color: transparent;
  color: var(--text-secondary);
  padding-inline: 12px;
}
.btn--quiet:hover { color: var(--text); }

.btn--gold {
  background: var(--grad-gold);
  color: #1B1204;
  box-shadow: var(--shadow-glow-gold);
}
.btn--gold:hover { filter: brightness(1.04); }

.btn--outline { background-color: transparent; color: var(--accent); border-color: var(--border-accent); }
.btn--outline:hover { background-color: var(--accent-soft); }

.btn--lg { min-height: 56px; padding-inline: 32px; font-size: 1.0625rem; }
.btn--sm { min-height: 40px; padding-inline: 18px; font-size: 0.875rem; }
.btn--block { width: 100%; }

.btn__icon {
  width: 18px;
  height: 18px;
  flex: none;
  stroke: currentColor;
  transition: transform var(--dur-base) var(--ease-out);
}
.btn:hover .btn__icon { transform: translateX(3px); }

/* --- .badge: statyczna etykieta --- */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border-accent);
  background-color: var(--accent-soft);
  color: var(--accent);
  font-family: var(--font-display);
  font-size: var(--fs-badge);
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1;
  white-space: nowrap;
}
.badge--neutral { background-color: var(--surface-2); border-color: var(--border); color: var(--text-secondary); }
.badge--gold { background-color: var(--gold-soft); border-color: var(--gold-line); color: var(--gold); }
.badge--success { background-color: var(--success-soft); border-color: var(--success-line); color: var(--success); }
.badge--warning { background-color: var(--warning-soft); border-color: var(--warning-line); color: var(--warning); }
.badge--danger { background-color: var(--danger-soft); border-color: var(--danger-line); color: var(--danger); }
.badge--outline { background-color: transparent; }

/* --- .pill: interaktywny chip (zakladki, przelaczniki, filtry) --- */
.pill-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding-inline: 18px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border);
  background-color: transparent;
  color: var(--text-secondary);
  font-family: var(--font-text);
  font-size: var(--fs-small-plus);
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background-color var(--dur-fast) var(--ease-out),
    border-color var(--dur-fast) var(--ease-out),
    color var(--dur-fast) var(--ease-out),
    transform var(--dur-fast) var(--ease-out);
}
.pill:hover { color: var(--text); border-color: var(--border-strong); }
.pill:active { transform: scale(0.98); }
.pill:focus-visible { outline: var(--focus-outline); outline-offset: var(--focus-offset); }
.pill[aria-pressed="true"],
.pill[aria-selected="true"],
.pill[data-active] {
  background-color: var(--accent-soft);
  border-color: var(--border-accent);
  color: var(--accent);
}
.pill:disabled { opacity: 0.45; pointer-events: none; }

/* --- .card --- */
.card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  background-color: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: clamp(20px, 3vw, 32px);
  overflow: hidden;
  transition:
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out);
}
.card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: var(--grad-hairline);
  opacity: 0.7;
  pointer-events: none;
}
.card--glass {
  background-color: var(--surface-glass);
  -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  backdrop-filter: blur(var(--blur-glass)) saturate(140%);
}
.card--elevated { background-color: var(--surface-3); box-shadow: var(--shadow-lg); }
.card--outline { background-color: transparent; border-color: var(--border-strong); }
.card--interactive { cursor: pointer; }
.card--interactive:hover,
.card--interactive:focus-within {
  transform: translateY(-4px);
  border-color: var(--border-accent);
  box-shadow: var(--shadow-lg);
}
.card--accent::after,
.card--gold::after {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 2px;
  pointer-events: none;
}
.card--accent::after { background: var(--grad-accent); }
.card--gold::after { background: var(--grad-gold); }
.card--flat { background-color: transparent; border-color: transparent; padding: 0; }
.card--flat::before { display: none; }
.card--pad-sm { padding: clamp(16px, 2.2vw, 22px); }
.card--pad-lg { padding: clamp(24px, 3.6vw, 40px); }

.card__icon {
  width: var(--chip-l);
  height: var(--chip-l);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
}
.card__icon svg { width: 24px; height: 24px; }
.card__icon--gold { background-color: var(--gold-soft); border-color: var(--gold-line); color: var(--gold); }
.card__title { font-family: var(--font-display); font-size: var(--fs-h4); line-height: 1.3; font-weight: 600; color: var(--text); }
.card__text { color: var(--text-secondary); max-width: var(--measure); }
.card__meta { font-size: var(--fs-small); color: var(--text-muted); }
.card__foot {
  margin-top: auto;
  padding-top: var(--space-4);
  border-top: 1px solid var(--border);
}

/* --- .panel: blok wyzszej rangi --- */
.panel {
  position: relative;
  border-radius: var(--radius-xl);
  padding: clamp(24px, 4vw, 48px);
  background: var(--grad-surface);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.panel--bordered::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: var(--grad-border);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}
.panel--glass {
  background: var(--surface-glass);
  -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  backdrop-filter: blur(var(--blur-glass)) saturate(140%);
}
.panel--invert { background: var(--surface-invert-3); box-shadow: var(--shadow-invert-lg); }
.panel__head { margin-bottom: var(--space-6); }
.panel__body { display: flex; flex-direction: column; gap: var(--space-5); }
.panel__foot { margin-top: var(--space-6); padding-top: var(--space-5); border-top: 1px solid var(--border); }

/* Fallback dla przegladarek bez backdrop-filter */
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .card--glass,
  .panel--glass,
  .site-header { background-color: var(--surface-2); }
}

/* --- .note: wyroznione zastrzezenie --- */
.note {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: clamp(16px, 2.4vw, 22px);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-accent);
  background-color: var(--accent-soft);
  color: var(--text-secondary);
  font-size: var(--fs-small-plus);
  line-height: 1.6;
}
.note__icon { width: 24px; height: 24px; flex: none; color: var(--accent); margin-top: 1px; }
.note__body { min-width: 0; }
.note__title { font-family: var(--font-display); font-weight: 600; color: var(--text); margin-bottom: 4px; }
.note--warn { border-color: var(--gold-line); background-color: var(--gold-soft); }
.note--warn .note__icon { color: var(--gold); }
.note--danger { border-color: var(--danger-line); background-color: var(--danger-soft); }
.note--danger .note__icon { color: var(--danger); }
.note--neutral { border-color: var(--border); background-color: var(--surface-2); }
.note--neutral .note__icon { color: var(--text-muted); }

/* --- .list: ustandaryzowana lista --- */
.list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.list__item {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  color: var(--text-secondary);
}
.list__item strong { color: var(--text); }
.list__mark { width: 18px; height: 18px; color: var(--accent); margin-top: 4px; }
.list--dot .list__item::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background-color: var(--accent);
  margin-top: 9px;
  margin-left: 6px;
}
.list--num { counter-reset: li; }
.list--num .list__item::before {
  counter-increment: li;
  content: counter(li, decimal-leading-zero);
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  color: var(--accent);
  line-height: 1.9;
}
.list--tight { gap: var(--space-2); }
@media (min-width: 768px) {
  .list--two-col { display: block; columns: 2; column-gap: var(--space-8); }
  .list--two-col .list__item { break-inside: avoid; margin-bottom: var(--space-3); }
}

/* --- .stat --- */
.stat {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-variant-numeric: tabular-nums;
}
.stat--center { text-align: center; align-items: center; }
.stat__value {
  font-family: var(--font-display);
  font-size: var(--fs-stat);
  font-weight: 700;
  line-height: 1;
  letter-spacing: var(--ls-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.stat__value--grad {
  background: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.stat__label {
  font-size: var(--fs-small);
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
  color: var(--text-muted);
}
.stat__hint { font-size: var(--fs-small); color: var(--text-muted); font-style: normal; }

/* --- .link-arrow --- */
.link-arrow {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  color: var(--accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
  /* currentColor dziedziczy poprawny odcien w obu motywach (fallback bez color-mix) */
  text-decoration-color: currentColor;
  border-radius: 4px;
  transition: text-decoration-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
@supports (color: color-mix(in srgb, red 40%, transparent)) {
  .link-arrow { text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); }
}
.link-arrow:hover { text-decoration-color: currentColor; }
.link-arrow:focus-visible { outline: var(--focus-outline); outline-offset: 2px; }
.link-arrow__icon {
  width: 14px;
  height: 14px;
  flex: none;
  align-self: center;
  transform: translateX(0);
  transition: transform var(--dur-fast) var(--ease-out);
}
.link-arrow:hover .link-arrow__icon { transform: translateX(3px); }
.link-arrow--quiet { color: var(--text-secondary); }
.link-arrow--quiet:hover { color: var(--text); }

/* --- .divider --- */
.divider {
  height: 1px;
  width: 100%;
  border: 0;
  background: var(--grad-hairline);
  margin-block: clamp(28px, 4vw, 48px);
}
.divider--short { max-width: 120px; margin-inline: 0; }
.divider--vertical {
  width: 1px;
  height: auto;
  align-self: stretch;
  margin-block: 0;
  background: linear-gradient(180deg, transparent, var(--border-strong), transparent);
}

/* --- .field: pola formularza / kalkulatora --- */
.field { display: flex; flex-direction: column; gap: 8px; }
.field__label { font-size: var(--fs-small); font-weight: 600; color: var(--text-secondary); }
.field__control {
  width: 100%;
  min-height: 48px;
  padding: 0 16px;
  border-radius: var(--radius-md);
  background-color: var(--surface-2);
  border: 1px solid var(--border);
  color: var(--text);
  font-family: var(--font-text);
  font-size: 1rem;
  font-variant-numeric: tabular-nums;
  transition: border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);
}
.field__control:hover { border-color: var(--border-strong); }
.field__control:focus-visible {
  outline: var(--focus-outline);
  outline-offset: var(--focus-offset);
  border-color: var(--border-accent);
}
.field__control:disabled { opacity: 0.5; cursor: not-allowed; }
select.field__control { cursor: pointer; }
textarea.field__control { min-height: 120px; padding: 12px 16px; line-height: 1.6; resize: vertical; }
.field__hint { font-size: var(--fs-small); color: var(--text-muted); }

.field__control[type="range"] {
  -webkit-appearance: none;
  appearance: none;
  min-height: 44px;
  padding: 0;
  background: transparent;
  border: 0;
}
.field__control[type="range"]::-webkit-slider-runnable-track {
  height: 4px;
  border-radius: var(--radius-pill);
  background-color: var(--surface-3);
}
.field__control[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  margin-top: -8px;
  border: 0;
  border-radius: 50%;
  background: var(--grad-accent);
  box-shadow: var(--shadow-glow);
  cursor: pointer;
}
.field__control[type="range"]::-moz-range-track {
  height: 4px;
  border-radius: var(--radius-pill);
  background-color: var(--surface-3);
}
.field__control[type="range"]::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border: 0;
  border-radius: 50%;
  background: var(--grad-accent);
  box-shadow: var(--shadow-glow);
  cursor: pointer;
}

/* --- .table-wrap + .table: tabela z poziomym scrollem na mobile --- */
.table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background-color: var(--surface);
}
.table-wrap:focus-visible { outline: var(--focus-outline); outline-offset: var(--focus-offset); }
.table {
  width: 100%;
  min-width: 560px;
  border-collapse: collapse;
  font-size: var(--fs-small-plus);
  font-variant-numeric: tabular-nums;
}
.table caption {
  padding: var(--space-4) var(--space-5) 0;
  text-align: left;
  font-size: var(--fs-small);
  color: var(--text-muted);
}
.table th,
.table td {
  padding: 14px 20px;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
}
.table thead th {
  font-family: var(--font-display);
  font-size: var(--fs-small);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-muted);
  white-space: nowrap;
  background-color: var(--surface-2);
}
.table tbody th { font-weight: 600; color: var(--text); }
.table td { color: var(--text-secondary); }
.table tbody tr:last-child th,
.table tbody tr:last-child td { border-bottom: 0; }
.table--fixed { min-width: 0; }

/* --- .icon: rozmiary ikon inline SVG --- */
.icon { width: 1.25em; height: 1.25em; flex: none; stroke: currentColor; }
.icon--sm { width: 16px; height: 16px; }
.icon--md { width: 20px; height: 20px; }
.icon--lg { width: 24px; height: 24px; }
.icon--xl { width: 32px; height: 32px; }

/* --- .skip-link --- */
.skip-link {
  position: absolute;
  left: var(--space-4);
  top: var(--space-4);
  transform: translateY(-200%);
  z-index: var(--z-skip);
  padding: 12px 20px;
  border-radius: var(--radius-md);
  background-color: var(--surface-3);
  color: var(--text);
  border: 1px solid var(--border-accent);
  font-family: var(--font-display);
  font-weight: 600;
  transition: transform var(--dur-fast) var(--ease-out);
}
.skip-link:focus,
.skip-link:focus-visible { transform: translateY(0); }

/* --- .site-header / nawigacja --- */
.site-header {
  position: sticky;
  top: 0;
  z-index: var(--z-header);
  min-height: var(--header-h);
  display: flex;
  align-items: center;
  background-color: var(--surface-glass-strong);
  -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  border-bottom: 1px solid transparent;
  transition: border-color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.site-header.is-scrolled {
  border-bottom-color: var(--border);
  box-shadow: var(--shadow-md);
}
.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: var(--header-h);
}

.nav__list { display: flex; align-items: center; gap: var(--space-2); }
.nav__link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding-inline: 12px;
  border-radius: var(--radius-pill);
  font-size: var(--fs-small-plus);
  font-weight: 500;
  color: var(--text-secondary);
  transition: color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);
}
.nav__link:hover { color: var(--text); }
.nav__link:focus-visible { outline: var(--focus-outline); outline-offset: var(--focus-offset); }
.nav__link.is-active,
.nav__link[aria-current="true"] { color: var(--accent); background-color: var(--accent-soft); }

.nav__burger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: none;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-strong);
  color: var(--text);
  transition: border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out);
}
.nav__burger:hover { border-color: var(--border-accent); background-color: var(--accent-soft); }
.nav__burger:focus-visible { outline: var(--focus-outline); outline-offset: var(--focus-offset); }

/* Menu (.nav__menu) jest definiowane WYLACZNIE w warstwie 10-nav-hero,
   z jednym punktem przelamania 1024px. Nie duplikowac tu regul — druga
   definicja z innym breakpointem psula uklad przy zmianie kolejnosci zrodel. */

/* --- .site-footer --- */
/* Stopka o stopien jasniejsza od zamykajacego CTA (#04070F) — dwie sasiadujace
   powierzchnie nigdy nie maja identycznego tla. */
.site-footer {
  background-color: var(--ink-900);
  border-top: 1px solid var(--border);
  padding-block: clamp(40px, 6vw, 72px);
  color: var(--text-muted);
  font-size: var(--fs-small);
}
.site-footer a { color: var(--text-secondary); }
.site-footer a:hover { color: var(--text); }

/* ==========================================================================
   6. DEKORACJE (czyste CSS - gradienty, blur, maski; zero obrazkow)
   ========================================================================== */
.decor {
  position: absolute;
  inset: 0;
  z-index: var(--z-decor);
  pointer-events: none;
  overflow: hidden;
  contain: paint;
}

/* --- .aurora: eliptyczne poswiaty --- */
.aurora,
.decor__aurora {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.aurora__blob,
.decor__aurora > * {
  position: absolute;
  width: 60vw;
  height: 40vw;
  min-width: 320px;
  min-height: 240px;
  border-radius: 50%;
  background: radial-gradient(closest-side, var(--accent-glow), transparent 70%);
  filter: blur(var(--blur-aurora));
  opacity: 0.38;
  mix-blend-mode: screen;
  will-change: transform;
  animation: tr-drift 26s var(--ease-in-out) infinite alternate;
}
.aurora__blob--1 { top: -120px; left: -18%; }
.aurora__blob--2 {
  top: 65%;
  left: 78%;
  background: radial-gradient(closest-side, var(--accent-2-glow), transparent 72%);
  animation-delay: -9s;
  animation-duration: 34s;
}
.aurora__blob--3 {
  bottom: -140px;
  left: 30%;
  opacity: 0.18;
  background: radial-gradient(closest-side, var(--gold-glow), transparent 70%);
  animation-delay: -17s;
  animation-duration: 42s;
}

@keyframes tr-drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to { transform: translate3d(4%, -3%, 0) scale(1.12); }
}

/* --- .grid-lines: siatka meridianow --- */
.grid-lines,
.decor__grid {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    repeating-linear-gradient(90deg, var(--grid-line) 0 1px, transparent 1px var(--grid-size)),
    repeating-linear-gradient(0deg, var(--grid-line) 0 1px, transparent 1px var(--grid-size));
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 0%, transparent 72%);
  mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 0%, transparent 72%);
}
.grid-lines--bottom {
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 100%, #000 0%, transparent 72%);
  mask-image: radial-gradient(ellipse 80% 60% at 50% 100%, #000 0%, transparent 72%);
}
.section--light .grid-lines,
.section--invert .grid-lines,
.section--light .decor__grid,
.section--invert .decor__grid { opacity: 0.6; }

/* --- .glow: horyzont nad chmurami --- */
.glow,
.decor__glow {
  position: absolute;
  left: -10%;
  right: -10%;
  /* Poswiata musi miescic sie W CALOSCI wewnatrz .decor (overflow:hidden +
     contain:paint), inaczej na granicy sekcji powstaje twardy poziomy szew. */
  bottom: 0;
  height: 300px;
  pointer-events: none;
  background:
    radial-gradient(ellipse 70% 100% at 50% 118%, rgba(27, 159, 189, 0.45), transparent 70%),
    radial-gradient(ellipse 120% 100% at 30% 118%, rgba(91, 140, 255, 0.28), transparent 72%);
  filter: blur(60px);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 50%, rgba(0, 0, 0, 0.4) 86%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0%, #000 50%, rgba(0, 0, 0, 0.4) 86%, transparent 100%);
}
.glow--top {
  top: 0;
  bottom: auto;
  background:
    radial-gradient(ellipse 70% 100% at 50% -18%, rgba(27, 159, 189, 0.45), transparent 70%),
    radial-gradient(ellipse 120% 100% at 30% -18%, rgba(91, 140, 255, 0.28), transparent 72%);
  -webkit-mask-image: linear-gradient(0deg, transparent 0%, #000 50%, rgba(0, 0, 0, 0.4) 86%, transparent 100%);
  mask-image: linear-gradient(0deg, transparent 0%, #000 50%, rgba(0, 0, 0, 0.4) 86%, transparent 100%);
}
.glow--gold {
  background:
    radial-gradient(ellipse 70% 100% at 50% 118%, rgba(242, 196, 107, 0.30), transparent 70%),
    radial-gradient(ellipse 120% 100% at 30% 118%, rgba(201, 149, 52, 0.18), transparent 72%);
}

/* --- .noise: ziarno lamiace banding (inline SVG data-URI, wektor) --- */
.noise,
.decor__noise {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: var(--noise-opacity);
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 140px 140px;
}

/* --- Pomocnicze animacje dekoracji (fale sygnalu, obrot globu, trasa) --- */
@keyframes tr-ping {
  0% { transform: scale(0.6); opacity: 0.9; }
  70% { opacity: 0; }
  100% { transform: scale(1.25); opacity: 0; }
}
@keyframes tr-twinkle {
  from { opacity: 0.15; }
  to { opacity: 0.7; }
}
@keyframes tr-globe-spin {
  from { transform: translateX(-25%); }
  to { transform: translateX(0); }
}
@keyframes tr-route {
  from { offset-distance: 0%; }
  to { offset-distance: 100%; }
}

.is-ping { transform-origin: center; animation: tr-ping 2.8s var(--ease-out) infinite; }
.is-ping--d1 { animation-delay: 0.45s; }
.is-ping--d2 { animation-delay: 0.9s; }
.is-twinkle { animation: tr-twinkle 5s var(--ease-in-out) infinite alternate; }
.is-globe-spin { animation: tr-globe-spin 40s linear infinite; }

/* ==========================================================================
   7. ANIMACJE WEJSCIA (.reveal - klasa .is-visible dodawana z JS)
   ========================================================================== */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: none;
  will-change: auto;
}
.reveal--d1 { transition-delay: 80ms; }
.reveal--d2 { transition-delay: 160ms; }
.reveal--d3 { transition-delay: 240ms; }
.reveal--d4 { transition-delay: 320ms; }

/* Gdy JS nie wystartuje - tresc musi byc widoczna */
.no-js .reveal { opacity: 1; transform: none; }

/* ==========================================================================
   8. UTILITIES
   ========================================================================== */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.sr-only-focusable:focus,
.sr-only-focusable:focus-visible {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
  clip-path: none;
  white-space: normal;
}

.u-center { text-align: center; }
.u-center-x { margin-inline: auto; }
.u-left { text-align: left; }
.u-right { text-align: right; }

.no-wrap { white-space: nowrap; }
.u-break { overflow-wrap: anywhere; word-break: break-word; }
.u-tabular { font-variant-numeric: tabular-nums; }
.u-measure { max-width: var(--measure); }
.u-full { width: 100%; }
.u-flex { display: flex; }
.u-flex-wrap { display: flex; flex-wrap: wrap; }
.u-items-center { align-items: center; }
.u-justify-between { justify-content: space-between; }
.u-gap-2 { gap: var(--space-2); }
.u-gap-3 { gap: var(--space-3); }
.u-gap-4 { gap: var(--space-4); }
.u-gap-6 { gap: var(--space-6); }

.u-mt-0 { margin-top: 0; }
.u-mt-1 { margin-top: var(--space-1); }
.u-mt-2 { margin-top: var(--space-2); }
.u-mt-3 { margin-top: var(--space-3); }
.u-mt-4 { margin-top: var(--space-4); }
.u-mt-5 { margin-top: var(--space-5); }
.u-mt-6 { margin-top: var(--space-6); }
.u-mt-8 { margin-top: var(--space-8); }
.u-mt-10 { margin-top: var(--space-10); }
.u-mt-12 { margin-top: var(--space-12); }
.u-mt-16 { margin-top: var(--space-16); }

.u-mb-0 { margin-bottom: 0; }
.u-mb-2 { margin-bottom: var(--space-2); }
.u-mb-3 { margin-bottom: var(--space-3); }
.u-mb-4 { margin-bottom: var(--space-4); }
.u-mb-6 { margin-bottom: var(--space-6); }
.u-mb-8 { margin-bottom: var(--space-8); }
.u-mb-12 { margin-bottom: var(--space-12); }

.u-hide { display: none; }
@media (min-width: 768px) {
  .u-hide\@md { display: none; }
  .u-show\@md { display: revert; }
}
@media (max-width: 767.98px) {
  .u-hide\@sm { display: none; }
}

/* ==========================================================================
   9. RUCH OGRANICZONY
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
    scroll-behavior: auto !important;
  }
  .decor *,
  .aurora__blob,
  .decor__aurora > *,
  .is-ping,
  .is-twinkle,
  .is-globe-spin { animation: none !important; }
  .reveal { opacity: 1 !important; transform: none !important; }
  .btn:hover,
  .card--interactive:hover { transform: none; }
}

/* ==========================================================================
   10. DRUK (minimalny, dla czytelnosci dokumentu)
   ========================================================================== */
@media print {
  .decor, .aurora, .grid-lines, .glow, .noise, .site-header, .skip-link { display: none !important; }
  body { background: #fff; color: #000; }
  .section { padding-block: 24px; }
}


/* ===== 10-nav-hero ===== */

/* ==========================================================================
   SEKCJA 10 — NAWIGACJA + HERO   (taniroaming.pl / system MERIDIAN)
   Wymaga 00-base.css (tokeny + komponenty .container/.section/.btn/.eyebrow).
   Wszystkie selektory zaczepione o .nav lub .hero.
   ========================================================================== */

/* ==========================================================================
   1. NAWIGACJA
   ========================================================================== */

/* Na starcie przezroczysta, po przewinieciu (JS: .is-scrolled) szklo + kreska */
.nav.site-header {
  background-color: transparent;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.nav.site-header.is-scrolled,
body.is-nav-open .nav.site-header {
  background-color: var(--surface-glass-strong);
  -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  backdrop-filter: blur(var(--blur-glass)) saturate(140%);
}

.nav__inner {
  gap: var(--space-3);
}

/* --- Logo --------------------------------------------------------------- */
.nav__logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  flex: none;
  min-height: 44px;
  padding: 4px 6px 4px 2px;
  border-radius: var(--radius-md);
  color: var(--text);
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease-out);
}

.nav__logo:hover { color: var(--text); }
.nav__logo:focus-visible {
  outline: var(--focus-outline);
  outline-offset: var(--focus-offset);
}

.nav__logo-mark {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  flex: none;
  color: var(--text-secondary);
  transition: transform var(--dur-slow) var(--ease-spring), color var(--dur-base) var(--ease-out);
}

.nav__logo-mark svg { width: 34px; height: 34px; display: block; }
.nav__logo-stop-a { stop-color: var(--accent); }
.nav__logo-stop-b { stop-color: var(--accent-2); }

.nav__logo:hover .nav__logo-mark {
  transform: rotate(-8deg) scale(1.04);
  color: var(--text);
}

.nav__logo-text {
  display: flex;
  flex-direction: column;
  gap: 1px;
  line-height: 1;
}

.nav__logo-name {
  font-family: var(--font-display);
  font-size: 1.0625rem;
  font-weight: 700;
  letter-spacing: var(--ls-tight);
  color: var(--text);
  white-space: nowrap;
}

.nav__logo-tld { color: var(--accent); }

.nav__logo-sub {
  display: none;
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--text-muted);
}

/* --- Panel menu (mobile / tablet do 1023px) ----------------------------- */
.nav__menu {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  z-index: var(--z-dropdown);
  display: block;
  visibility: hidden;
  opacity: 0;
  transform: translateY(-14px);
  max-height: calc(100vh - var(--header-h));
  max-height: calc(100svh - var(--header-h));
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: var(--space-4) var(--container-pad) var(--space-6);
  background-color: var(--surface-glass-strong);
  -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
  box-shadow: var(--shadow-xl);
  transition:
    opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),
    visibility 0s linear var(--dur-base);
}

.nav__menu.is-open {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
  transition-delay: 0s, 0s, 0s;
}

.nav__menu .nav__list {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-1);
}

.nav__menu .nav__link {
  min-height: 52px;
  padding-inline: 16px;
  border-radius: var(--radius-md);
  font-size: var(--fs-body);
  white-space: normal;
}

.nav__menu-foot {
  margin-top: var(--space-5);
  padding-top: var(--space-5);
  border-top: 1px solid var(--border);
}

.nav__menu-cta { min-height: 52px; }

/* --- Akcje po prawej ---------------------------------------------------- */
.nav__actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex: none;
}

.nav__cta { display: none; }

.nav__burger {
  display: inline-flex;
  position: relative;
}

.nav__burger-box {
  position: relative;
  display: block;
  width: 20px;
  height: 14px;
}

.nav__burger-line {
  position: absolute;
  left: 0;
  width: 100%;
  height: 1.5px;
  border-radius: 2px;
  background-color: currentColor;
  transform-origin: center;
  transition:
    transform var(--dur-base) var(--ease-out),
    opacity var(--dur-fast) var(--ease-out);
}

.nav__burger-line:nth-child(1) { top: 0; }
.nav__burger-line:nth-child(2) { top: 50%; margin-top: -0.75px; }
.nav__burger-line:nth-child(3) { top: auto; bottom: 0; }

.nav__burger[aria-expanded="true"] .nav__burger-line:nth-child(1) {
  transform: translateY(6.25px) rotate(45deg);
}
.nav__burger[aria-expanded="true"] .nav__burger-line:nth-child(2) {
  opacity: 0;
  transform: scaleX(0.2);
}
.nav__burger[aria-expanded="true"] .nav__burger-line:nth-child(3) {
  transform: translateY(-6.25px) rotate(-45deg);
}

/* --- Breakpoint 560px: CTA wchodzi do paska -----------------------------
   Przy 480px pasek (logo 176px + gap 12px + akcje 271px) nie miescil sie
   w kontenerze 432px i przycinal burgera. 560px to pierwsza szerokosc,
   przy ktorej komplet miesci sie z zapasem. */
@media (min-width: 560px) {
  .nav__cta { display: inline-flex; }
}

/* --- Breakpoint 768px: logo dostaje podpis ------------------------------ */
@media (min-width: 768px) {
  .nav__logo-sub { display: block; }
  .nav__logo-name { font-size: 1.125rem; }
}

/* --- Breakpoint 1024px: pelne menu poziome ------------------------------ */
@media (min-width: 1024px) {
  .nav__inner { gap: var(--space-5); }

  .nav__burger { display: none; }
  .nav__menu-foot { display: none; }

  .nav__menu {
    position: static;
    z-index: auto;
    flex: 1 1 auto;
    min-width: 0;
    visibility: visible;
    opacity: 1;
    transform: none;
    max-height: none;
    overflow: visible;
    padding: 0;
    background: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    transition: none;
  }

  .nav__menu .nav__list {
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 2px;
  }

  .nav__menu .nav__link {
    position: relative;
    min-height: 40px;
    padding-inline: 11px;
    border-radius: var(--radius-sm);
    font-size: var(--fs-small);
    white-space: nowrap;
  }

  /* podkreslenie zamiast pigulki */
  .nav__menu .nav__link::after {
    content: "";
    position: absolute;
    left: 11px;
    right: 11px;
    bottom: 3px;
    height: 2px;
    border-radius: 2px;
    background: var(--grad-accent);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform var(--dur-base) var(--ease-out);
  }

  .nav__menu .nav__link:hover::after,
  .nav__menu .nav__link:focus-visible::after,
  .nav__menu .nav__link.is-active::after,
  .nav__menu .nav__link[aria-current="true"]::after {
    transform: scaleX(1);
  }

  .nav__menu .nav__link.is-active,
  .nav__menu .nav__link[aria-current="true"] {
    background-color: transparent;
    color: var(--text);
  }
}

@media (min-width: 1280px) {
  .nav__menu .nav__list { gap: var(--space-1); }
  .nav__menu .nav__link { padding-inline: 14px; font-size: var(--fs-small-plus); }
  .nav__menu .nav__link::after { left: 14px; right: 14px; }
}

/* Fallback bez backdrop-filter */
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .nav.site-header.is-scrolled,
  body.is-nav-open .nav.site-header { background-color: var(--ink-900); }
  .nav__menu { background-color: var(--ink-900); }
}


/* ==========================================================================
   2. HERO — uklad
   ========================================================================== */
.hero {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 620px;
  min-height: min(calc(100vh - var(--header-h)), 900px);
  min-height: min(calc(100svh - var(--header-h)), 900px);
  padding-block: clamp(48px, 7vw, 96px);
}

.hero__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(40px, 6vw, 56px);
  align-items: center;
}

.hero__copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

/* nadtytul potrafi zlamac sie na dwie linie na waskich ekranach */
.hero .eyebrow {
  max-width: 100%;
  flex-wrap: wrap;
  line-height: 1.45;
}

.hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-h1);
  font-weight: 700;
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  color: var(--text);
  text-wrap: balance;
  max-width: 16ch;
}

.hero__title-grad {
  color: var(--accent);
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .hero__title-grad {
    background-image: var(--grad-text);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
  }
}

.hero__lead {
  margin: var(--space-6) 0 0;
  max-width: 56ch;
  font-size: var(--fs-lead);
  line-height: 1.55;
  color: var(--text-secondary);
}

.hero__actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-3);
  margin-top: clamp(28px, 4vw, 40px);
  width: 100%;
}

/* na waskim ekranie przyciski pelnej szerokosci - tekst nigdy nie wystaje */
.hero__actions .btn {
  width: 100%;
  padding-inline: 20px;
  font-size: 1rem;
}

@media (min-width: 480px) {
  .hero__actions {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-4);
  }
  .hero__actions .btn {
    width: auto;
    padding-inline: 32px;
    font-size: 1.0625rem;
  }
}

@media (min-width: 768px) {
  .hero__title { max-width: 18ch; }
}

@media (min-width: 1024px) {
  .hero__layout {
    grid-template-columns: minmax(0, 58fr) minmax(0, 42fr);
    gap: clamp(40px, 4.5vw, 72px);
  }
  .hero__title { max-width: none; }
  .hero__lead { max-width: 52ch; }

}


/* ==========================================================================
   3. HERO — dekoracja wektorowa (globus + trasa polaczenia)
   ========================================================================== */
.hero__lines {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0.75;
  -webkit-mask-image: radial-gradient(ellipse 95% 85% at 55% 40%, #000 25%, transparent 82%);
  mask-image: radial-gradient(ellipse 95% 85% at 55% 40%, #000 25%, transparent 82%);
}

.hero__stop-accent { stop-color: var(--accent); stop-opacity: 0.9; }
.hero__stop-fade { stop-color: var(--accent); stop-opacity: 0; }
.hero__stop-fade-2 { stop-color: var(--accent-2); stop-opacity: 0; }
.hero__stop-mer-a { stop-color: var(--accent); stop-opacity: 0.22; }
.hero__stop-mer-b { stop-color: var(--accent-2); stop-opacity: 0.04; }

.hero__globe { opacity: 0.9; }

.hero__route {
  stroke-dasharray: 5 11;
  stroke-dashoffset: 0;
  animation: hero-route-dash 11s linear infinite;
}

.hero__node-ring {
  stroke: var(--accent);
  stroke-width: 1;
  opacity: 0.45;
}

.hero__node-core {
  fill: var(--accent);
  stroke: none;
  opacity: 0.85;
}

.hero__spark {
  fill: var(--accent);
  opacity: 0;
}

@supports (offset-path: path("M0 0 L1 1")) {
  .hero__spark {
    offset-path: path("M-60 500 C 220 300 560 170 1080 150");
    offset-rotate: 0deg;
    opacity: 0.95;
    animation: tr-route 13s linear infinite;
  }
}

@keyframes hero-route-dash {
  from { stroke-dashoffset: 0; }
  to { stroke-dashoffset: -320; }
}


/* ==========================================================================
   4. HERO — wizual: karta polaczenia + plywajace kafelki
   ========================================================================== */
.hero__visual {
  position: relative;
  margin: 0;
  width: 100%;
  max-width: 420px;
  margin-inline: auto;
}

.hero__call {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: clamp(18px, 2.6vw, 24px);
  padding: clamp(20px, 3.4vw, 28px);
  border-radius: var(--radius-xl);
  background: var(--surface-glass);
  -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(150%);
  backdrop-filter: blur(var(--blur-glass)) saturate(150%);
  box-shadow: var(--shadow-xl);
  color: var(--text);
}

/* gradientowa ramka 1px technika maski */
.hero__call-edge {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: var(--grad-border);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}

.hero__call-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
}

.hero__call-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  font-family: var(--font-display);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--success);
}

.hero__call-dot {
  position: relative;
  width: 8px;
  height: 8px;
  flex: none;
  border-radius: 50%;
  background-color: var(--success);
  box-shadow: 0 0 0 4px var(--success-soft);
  animation: hero-dot-pulse 2.6s var(--ease-in-out) infinite;
}

.hero__call-timer {
  font-family: var(--font-mono);
  font-size: var(--fs-small);
  font-variant-numeric: tabular-nums;
  color: var(--text-muted);
}

.hero__call-id {
  display: flex;
  align-items: center;
  gap: var(--space-4);
}

.hero__avatar {
  position: relative;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  flex: none;
  border-radius: 50%;
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
}

.hero__avatar-initial {
  font-family: var(--font-display);
  font-size: 1.375rem;
  font-weight: 600;
  line-height: 1;
  color: var(--text);
}

.hero__avatar-waves {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 108px;
  height: 108px;
  margin: -54px 0 0 -54px;
  color: var(--accent);
  opacity: 0.6;
  pointer-events: none;
}

.hero__call-meta {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.hero__call-name {
  font-family: var(--font-display);
  font-size: var(--fs-h5);
  font-weight: 600;
  color: var(--text);
}

.hero__call-number {
  font-family: var(--font-mono);
  font-size: var(--fs-small);
  letter-spacing: 0.04em;
  color: var(--text-muted);
  overflow-wrap: anywhere;
}

.hero__call-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-3);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  background-color: var(--scrim);
  border: 1px solid var(--border);
}

.hero__call-cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.hero__call-key {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.hero__call-key svg {
  width: 15px;
  height: 15px;
  flex: none;
  color: var(--accent);
}

.hero__call-val {
  font-size: var(--fs-small-plus);
  font-weight: 500;
  color: var(--text);
}

.hero__call-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border);
}

.hero__call-foot-label {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  flex: 1 1 auto;
  min-width: 0;
  font-size: var(--fs-small);
  line-height: 1.4;
  color: var(--text-secondary);
}

.hero__call-foot-label svg {
  width: 17px;
  height: 17px;
  flex: none;
  color: var(--accent);
}

.hero__call-bars {
  display: inline-flex;
  align-items: flex-end;
  gap: 3px;
  flex: none;
  height: 16px;
}

.hero__call-bar {
  display: block;
  width: 3px;
  border-radius: 2px;
  background-color: var(--accent);
}

.hero__call-bar:nth-child(1) { height: 6px; }
.hero__call-bar:nth-child(2) { height: 9px; }
.hero__call-bar:nth-child(3) { height: 12px; }
.hero__call-bar:nth-child(4) { height: 16px; opacity: 0.28; }

@media (min-width: 400px) {
  .hero__call-status { font-size: var(--fs-badge); }
  .hero__call-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
}

/* --- Plywajace kafelki --------------------------------------------------- */
.hero__tiles {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-3);
  margin-top: var(--space-4);
}

@media (min-width: 480px) {
  .hero__tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.hero__tile {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  border-radius: var(--radius-md);
  background-color: var(--surface-2);
  border: 1px solid var(--border-strong);
  box-shadow: var(--shadow-md);
  min-width: 0;
}

.hero__tile-icon {
  display: grid;
  place-items: center;
  width: var(--chip-s);
  height: var(--chip-s);
  flex: none;
  border-radius: var(--radius-sm);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
}

.hero__tile-icon svg { width: 16px; height: 16px; }

.hero__tile-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.hero__tile-title {
  font-family: var(--font-display);
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.hero__tile-sub {
  font-size: 0.75rem;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (min-width: 768px) {
  .hero__tiles {
    display: block;
    margin-top: 0;
  }

  .hero__tile {
    position: absolute;
    z-index: var(--z-raised);
    padding: 13px 16px;
    background-color: var(--surface-3);
    animation: hero-float 7s var(--ease-in-out) infinite alternate;
    will-change: transform;
  }

  .hero__tile--a {
    left: -20px;
    bottom: -24px;
    animation-duration: 7.5s;
  }

  .hero__tile--b {
    right: -18px;
    top: -26px;
    animation-duration: 6.4s;
    animation-delay: -2.6s;
  }
}

@media (min-width: 1280px) {
  .hero__tile--a { left: -44px; bottom: -30px; }
  .hero__tile--b { right: -40px; top: -32px; }
}

/* Karta polaczenia wypelnia swoja kolumne — przy max-width 420px w kolumnie
   ok. 480px po prawej zostawala pustka nad i pod nia, a lewa kolumna czytala
   sie jak sciana tekstu. Regula musi stac PO .hero__visual z linii wyzej. */
@media (min-width: 1024px) {
  .hero__visual { max-width: none; }
  .hero__call {
    padding: clamp(24px, 2.2vw, 32px);
    gap: clamp(20px, 2vw, 28px);
  }
}

@keyframes hero-float {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(0, -10px, 0); }
}

@keyframes hero-dot-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.28); opacity: 0.75; }
}

/* Fallback bez backdrop-filter */
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .hero__call { background: var(--surface-2); }
}


/* ==========================================================================
   5. HERO — pasek zaufania
   ========================================================================== */
.hero__trust {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-5) var(--space-4);
  margin-top: clamp(48px, 7vw, 80px);
  padding-top: clamp(24px, 3.4vw, 34px);
}

.hero__trust::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--grad-hairline);
}

.hero__trust-item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  min-width: 0;
  padding-left: var(--space-4);
}

@media (min-width: 480px) {
  .hero__trust-item {
    flex-direction: row;
    align-items: flex-start;
    gap: 11px;
  }
}

.hero__trust-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 2px;
  bottom: 2px;
  width: 1px;
  background: linear-gradient(180deg, transparent, var(--border-strong) 45%, transparent);
}

.hero__trust-item:nth-child(2n + 1) { padding-left: 0; }
.hero__trust-item:nth-child(2n + 1)::before { display: none; }

.hero__trust-icon {
  display: grid;
  place-items: center;
  width: var(--chip-s);
  height: var(--chip-s);
  flex: none;
  border-radius: var(--radius-sm);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
  transition: transform var(--dur-base) var(--ease-out);
}

.hero__trust-icon svg { width: 16px; height: 16px; }

.hero__trust-item:hover .hero__trust-icon { transform: translateY(-2px); }

.hero__trust-text {
  font-size: var(--fs-small);
  line-height: 1.45;
  color: var(--text-secondary);
  overflow-wrap: anywhere;
}

@media (min-width: 768px) {
  .hero__trust {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-4);
  }

  .hero__trust-item,
  .hero__trust-item:nth-child(2n + 1) { padding-left: clamp(14px, 1.6vw, 22px); }

  .hero__trust-item::before,
  .hero__trust-item:nth-child(2n + 1)::before { display: block; }

  .hero__trust-item:first-child { padding-left: 0; }
  .hero__trust-item:first-child::before { display: none; }
}

@media (min-width: 1024px) {
  .hero__trust-text { font-size: var(--fs-small-plus); }
}


/* ==========================================================================
   6. OGRANICZENIE RUCHU
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  .hero__route,
  .hero__spark,
  .hero__tile,
  .hero__call-dot,
  .hero__avatar-waves circle {
    animation: none !important;
  }

  .hero__spark { opacity: 0; }
  .hero__route { stroke-dashoffset: 0; }

  .nav__menu,
  .nav__burger-line,
  .nav__logo-mark,
  .nav__menu .nav__link::after {
    transition: none !important;
  }
}


/* ===== 20-problem ===== */

/* ==========================================================================
   SEKCJA 20 - PROBLEM  (#problem)
   Prefiks: .prob__ | Tlo ciemne | Mobile-first
   Wszystkie kolory z tokenow systemu MERIDIAN (00-base.css)
   ========================================================================== */

/* --------------------------------------------------------------------------
   20.1 Dekoracja tla (subtelna: szew przejscia + jedna plama aurory)
   -------------------------------------------------------------------------- */
.prob__seam {
  position: absolute;
  inset-inline: 0;
  top: 0;
  height: clamp(140px, 20vw, 260px);
  background: linear-gradient(180deg, var(--bg-alt) 0%, transparent 100%);
}

.prob__blob {
  top: -140px;
  right: -24%;
  left: auto;
  width: 54vw;
  height: 40vw;
  opacity: 0.2;
  animation-duration: 38s;
}

.prob__grid {
  opacity: 0.5;
}

/* --------------------------------------------------------------------------
   20.2 Naglowek sekcji
   -------------------------------------------------------------------------- */
.prob__head {
  max-width: 62ch;
}

/* --------------------------------------------------------------------------
   20.3 Siatka stref kosztowych
   -------------------------------------------------------------------------- */
.prob__zones {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(16px, 2.4vw, 28px);
}

/* --------------------------------------------------------------------------
   20.4 Karta strefy
   -------------------------------------------------------------------------- */
.prob__card {
  --prob-tier: var(--accent);
  --prob-tier-soft: var(--accent-soft);
  --prob-tier-line: var(--border-accent);
  gap: var(--space-5);
}

.prob__card--mid {
  --prob-tier: var(--gold);
  --prob-tier-soft: var(--gold-soft);
  --prob-tier-line: var(--border-strong);
}

.prob__card--high {
  --prob-tier: var(--danger);
  --prob-tier-soft: var(--danger-soft);
  --prob-tier-line: var(--border-strong);
}

@supports (color: color-mix(in srgb, red 50%, transparent)) {
  .prob__card--mid { --prob-tier-line: color-mix(in srgb, var(--gold) 34%, transparent); }
  .prob__card--high { --prob-tier-line: color-mix(in srgb, var(--danger) 34%, transparent); }
}

/* Karta o najwyzszym ryzyku - wyrozniona */
.prob__card--high {
  background-color: var(--surface-2);
  border-color: var(--prob-tier-line);
  box-shadow: var(--shadow-lg);
}

.prob__card:hover {
  border-color: var(--border-strong);
}

.prob__card--high:hover {
  border-color: var(--prob-tier-line);
}

.prob__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-width: 0;
}

/* --- ilustracja --- */
.prob__figure {
  position: relative;
  border-radius: var(--radius-md);
  border: 1px solid var(--border);
  background-color: var(--surface-2);
  background-image: radial-gradient(ellipse 72% 84% at 50% 16%, var(--prob-tier-soft), transparent 72%);
  padding: var(--space-4);
  color: var(--text-muted);
  overflow: hidden;
  transition: color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}

.prob__card--high .prob__figure {
  background-color: var(--surface-3);
}

.prob__card:hover .prob__figure {
  color: var(--text-secondary);
  border-color: var(--border-strong);
}

.prob__art {
  display: block;
  width: 100%;
  height: auto;
  max-width: 320px;
  margin-inline: auto;
}

.prob__art-accent {
  color: var(--prob-tier);
}

.prob__art-arrow {
  transition: transform var(--dur-slow) var(--ease-out);
}

.prob__card:hover .prob__art-arrow {
  transform: translateX(4px);
}

/* fale sygnalu satelitarnego - wylacznie opacity */
.prob__wave {
  opacity: 0.5;
  animation: prob-wave 3.6s var(--ease-in-out) infinite;
}

.prob__wave--d1 { animation-delay: 0.4s; }
.prob__wave--d2 { animation-delay: 0.8s; }

@keyframes prob-wave {
  0% { opacity: 0.24; }
  45% { opacity: 0.85; }
  100% { opacity: 0.24; }
}

/* --- metryczka strefy --- */
.prob__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin: 0;
}

.prob__zone {
  font-family: var(--font-display);
  font-size: var(--fs-small-plus);
  font-weight: 600;
  line-height: 1.3;
  color: var(--text);
}

.prob__title {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 600;
  line-height: 1.28;
  letter-spacing: -0.015em;
  color: var(--text);
  text-wrap: balance;
}

.prob__text {
  color: var(--text-secondary);
  margin: 0;
}

/* --- ostrzezenie w karcie --- */
.prob__caution {
  margin-top: var(--space-1);
}

.prob__caution .note__icon {
  color: var(--prob-tier);
}

.prob__caution p {
  margin: 0;
}

/* --- pasek poziomu ryzyka --- */
.prob__risk {
  margin-top: auto;
  padding-top: var(--space-5);
  border-top: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.prob__risk-scale {
  display: flex;
  align-items: center;
  gap: var(--space-4);
}

.prob__risk-label {
  display: block;
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  white-space: nowrap;
  color: var(--text-muted);
}

.prob__risk-value {
  flex: none;
  font-family: var(--font-display);
  font-size: var(--fs-small-plus);
  font-weight: 600;
  line-height: 1.2;
  white-space: nowrap;
  color: var(--prob-tier);
}

.prob__risk-track {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}

.prob__risk-seg {
  flex: 1 1 0;
  height: 4px;
  border-radius: var(--radius-pill);
  background-color: var(--surface-3);
  transition: background-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}

.prob__card--low .prob__risk-seg:nth-child(-n + 1),
.prob__card--mid .prob__risk-seg:nth-child(-n + 2),
.prob__card--high .prob__risk-seg {
  background-color: var(--prob-tier);
}

@supports (box-shadow: 0 0 8px color-mix(in srgb, red 40%, transparent)) {
  .prob__card--low .prob__risk-seg:nth-child(-n + 1),
  .prob__card--mid .prob__risk-seg:nth-child(-n + 2),
  .prob__card--high .prob__risk-seg {
    box-shadow: 0 0 10px color-mix(in srgb, var(--prob-tier) 42%, transparent);
  }
}

.prob__card--high .prob__risk-seg:last-child {
  animation: prob-pulse 3.2s var(--ease-in-out) infinite;
}

@keyframes prob-pulse {
  0% { opacity: 0.55; }
  50% { opacity: 1; }
  100% { opacity: 0.55; }
}

/* --------------------------------------------------------------------------
   20.5 Ciche pozeracze rachunku
   -------------------------------------------------------------------------- */
.prob__eaters {
  margin-top: clamp(40px, 6vw, 72px);
}

.prob__eaters-head {
  margin-bottom: clamp(24px, 3.4vw, 40px);
  max-width: var(--measure);
}

.prob__eaters-title {
  font-family: var(--font-display);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: var(--lh-heading);
  letter-spacing: -0.015em;
  color: var(--text);
  text-wrap: balance;
}

.prob__eaters-note {
  margin-top: var(--space-3);
  margin-bottom: 0;
  color: var(--text-muted);
  font-size: var(--fs-small-plus);
}

.prob__eaters-list {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0 clamp(24px, 4vw, 56px);
}

.prob__eater {
  display: grid;
  grid-template-columns: var(--chip-m) minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
  padding-block: var(--space-5);
  border-top: 1px solid var(--hairline);
}

.prob__eater:first-child {
  border-top: 0;
  padding-top: 0;
}

.prob__eater:last-child {
  padding-bottom: 0;
}

.prob__eater-icon {
  width: var(--chip-m);
  height: var(--chip-m);
  display: grid;
  place-items: center;
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  border: 1px solid var(--border);
  color: var(--accent);
  transition: border-color var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}

.prob__eater:hover .prob__eater-icon {
  border-color: var(--border-accent);
  transform: translateY(-2px);
}

.prob__eater-body {
  min-width: 0;
}

.prob__eater-title {
  font-family: var(--font-display);
  font-size: var(--fs-h5);
  font-weight: 600;
  line-height: 1.35;
  color: var(--text);
  margin-bottom: var(--space-2);
  text-wrap: balance;
}

.prob__eater-text {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--fs-small-plus);
  line-height: var(--lh-base);
}

/* --------------------------------------------------------------------------
   20.6 Pointa sekcji
   -------------------------------------------------------------------------- */
.prob__pointe {
  position: relative;
  margin: clamp(40px, 6vw, 72px) auto 0;
  max-width: 62ch;
  padding-left: clamp(20px, 3.6vw, 34px);
}

.prob__pointe::before {
  content: "";
  position: absolute;
  left: 0;
  top: 4px;
  bottom: 4px;
  width: 2px;
  border-radius: var(--radius-pill);
  background: linear-gradient(180deg, var(--accent) 0%, var(--accent-2) 55%, transparent 100%);
  opacity: 0.85;
}

.prob__pointe-text {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 500;
  line-height: 1.48;
  letter-spacing: -0.01em;
  color: var(--text);
  text-wrap: pretty;
}

/* --------------------------------------------------------------------------
   20.7 Breakpointy
   -------------------------------------------------------------------------- */
@media (min-width: 480px) {
  .prob__eater {
    grid-template-columns: var(--chip-m) minmax(0, 1fr);
    gap: var(--space-5);
  }
}

@media (min-width: 768px) {
  /* karta w ukladzie poziomym: ilustracja obok tresci */
  .prob__card {
    display: grid;
    grid-template-columns: minmax(0, 230px) minmax(0, 1fr);
    grid-template-areas:
      "fig body"
      "fig risk";
    align-content: start;
    column-gap: clamp(24px, 3.2vw, 40px);
    row-gap: var(--space-5);
  }

  .prob__figure {
    grid-area: fig;
    align-self: start;
  }

  .prob__body { grid-area: body; }
  .prob__risk { grid-area: risk; }

  .prob__eaters-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .prob__eater:nth-child(2) {
    border-top: 0;
    padding-top: 0;
  }

  .prob__eater:nth-child(5) {
    padding-bottom: 0;
  }
}

@media (min-width: 1024px) {
  /* trzy strefy obok siebie - karta wraca do ukladu pionowego */
  .prob__zones {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: stretch;
  }

  .prob__card {
    display: flex;
    flex-direction: column;
    height: 100%;
  }

  .prob__figure {
    padding: var(--space-5) var(--space-4);
  }

  .prob__art {
    max-width: 260px;
  }
}

@media (min-width: 1280px) {
  .prob__card {
    padding: var(--space-8);
  }

  .prob__figure {
    padding: var(--space-6) var(--space-5);
  }
}

/* --------------------------------------------------------------------------
   20.8 Ograniczenie ruchu
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .prob__wave,
  .prob__card--high .prob__risk-seg:last-child {
    animation: none;
  }

  .prob__wave {
    opacity: 0.55;
  }

  .prob__card:hover .prob__art-arrow,
  .prob__eater:hover .prob__eater-icon {
    transform: none;
  }
}


/* ===== 30-sposoby ===== */

/* ==========================================================================
   SEKCJA 30 - CZTERY SPOSOBY  (#sposoby)
   Prefiks: .ways__ | Tlo JASNE (.section--invert) | Mobile-first
   Wszystkie kolory z tokenow semantycznych systemu MERIDIAN (00-base.css).
   Na .section--invert tokeny sa przelaczone lokalnie w bazie, wiec ten arkusz
   nie odwoluje sie do zmiennych --*-invert bezposrednio.
   ========================================================================== */

/* --------------------------------------------------------------------------
   30.1 Dekoracja tla (jasna: szew przejscia z ciemnej sekcji + miekkie halo)
   -------------------------------------------------------------------------- */
.ways__seam {
  position: absolute;
  inset-inline: 0;
  top: 0;
  height: clamp(120px, 16vw, 220px);
  background: linear-gradient(180deg, var(--seam-ink) 0%, rgba(4, 7, 15, 0) 100%);
}

.ways__halo {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(80px);
  will-change: transform;
}

.ways__halo--a {
  top: -120px;
  right: -18%;
  width: 60vw;
  height: 44vw;
  min-width: 320px;
  min-height: 240px;
  opacity: 0.55;
  background: radial-gradient(closest-side, var(--accent-glow), transparent 70%);
  animation: tr-drift 34s var(--ease-in-out) infinite alternate;
}

.ways__halo--b {
  bottom: -130px;
  left: -16%;
  width: 52vw;
  height: 38vw;
  min-width: 280px;
  min-height: 220px;
  opacity: 0.75;
  background: radial-gradient(closest-side, var(--gold-soft), transparent 72%);
  animation: tr-drift 44s var(--ease-in-out) -14s infinite alternate;
}

.ways .ways__mesh {
  opacity: 0.55;
}

/* --------------------------------------------------------------------------
   30.2 Naglowek sekcji
   -------------------------------------------------------------------------- */
.ways__head {
  max-width: 64ch;
}

/* --------------------------------------------------------------------------
   30.3 Siatka kart
   -------------------------------------------------------------------------- */
.ways__cards {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(16px, 2.4vw, 28px);
}

.ways__item {
  display: flex;
  min-width: 0;
}

@media (min-width: 768px) {
  .ways__cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* --------------------------------------------------------------------------
   30.4 Karta metody
   -------------------------------------------------------------------------- */
.ways__card {
  flex: 1 1 auto;
  gap: var(--space-5);
  padding-top: clamp(22px, 3vw, 34px);
  box-shadow: var(--shadow-sm);
}

.ways__card:hover,
.ways__card:focus-within {
  transform: translateY(-4px);
  border-color: var(--border-strong);
  box-shadow: 0 0 0 1px var(--border-accent), var(--shadow-lg);
}

/* Warstwy: cyfra pod trescia, tresc nad cyfra */
.ways__card > .ways__icon,
.ways__card > .ways__intro,
.ways__card > .ways__cols,
.ways__card > .ways__foot {
  position: relative;
  z-index: 1;
}

/* --- Numer porzadkowy jako znak wodny --- */
.ways__num {
  position: absolute;
  z-index: 0;
  top: clamp(10px, 1.8vw, 16px);
  right: clamp(14px, 2.2vw, 24px);
  font-family: var(--font-display);
  font-size: clamp(3.25rem, 8vw, 4.75rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: var(--ls-tight);
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  opacity: 0.1;
  pointer-events: none;
  -webkit-user-select: none;
  user-select: none;
  transition:
    opacity var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}

@supports (-webkit-text-stroke: 1px currentColor) {
  .ways__num {
    color: transparent;
    -webkit-text-stroke: 1.5px var(--accent);
    opacity: 0.24;
  }
}

.ways__card:hover .ways__num {
  opacity: 0.38;
  transform: translateY(-2px);
}

/* --- Ikona metody --- */
.ways__icon {
  width: var(--chip-l);
  height: var(--chip-l);
}

.ways__icon svg {
  width: 24px;
  height: 24px;
}

/* --- Naglowek i opis --- */
.ways__intro {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-width: 0;
}

.ways__badge {
  align-self: flex-start;
}

.ways__title {
  overflow-wrap: break-word;
  text-wrap: balance;
}

.ways__desc {
  font-size: var(--fs-small-plus);
  line-height: 1.65;
  overflow-wrap: break-word;
}

/* --------------------------------------------------------------------------
   30.5 Kolumny: Zalety / Ograniczenia
   -------------------------------------------------------------------------- */
.ways__cols {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-5);
}

.ways__col {
  min-width: 0;
}

.ways__col + .ways__col {
  border-top: 1px solid var(--border);
  padding-top: var(--space-5);
}

.ways__col-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: var(--space-3);
  font-family: var(--font-display);
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.ways__col-icon {
  width: 16px;
  height: 16px;
  flex: none;
}

.ways__col--pro .ways__col-title {
  color: var(--success);
}

.ways__col--con .ways__col-title {
  color: var(--warning);
}

.ways__list {
  gap: var(--space-3);
}

.ways__list .list__item {
  font-size: var(--fs-small-plus);
  line-height: 1.6;
}

.ways__mark--pro {
  color: var(--success);
}

.ways__mark--con {
  color: var(--warning);
}

/* Listy pozostaja w jednej kolumnie na kazdej szerokosci - karty stoja juz
   w siatce dwukolumnowej, wiec dzielenie ich wnetrza lamaloby dlugosc wiersza. */

/* --------------------------------------------------------------------------
   30.6 Stopka karty - "Dla kogo"
   -------------------------------------------------------------------------- */
.ways__foot {
  display: grid;
  gap: var(--space-1);
  padding-top: var(--space-5);
}

.ways__foot-label {
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  line-height: 1;
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--text-muted);
}

.ways__foot-text {
  font-size: var(--fs-small-plus);
  line-height: 1.6;
  color: var(--text-secondary);
}

/* --------------------------------------------------------------------------
   30.7 Karty rekomendowane (VoIP + przekierowanie)
   Dyskretny wyroznik: mocniejsza ramka gradientowa + badge.
   -------------------------------------------------------------------------- */
.ways__card--rec {
  border-color: var(--border-accent);
  box-shadow: var(--shadow-md);
}

/* zamiast domyslnego hairline'u karty - pelna, gradientowa krawedz */
.ways__card--rec::before {
  display: none;
}

.ways__card--rec::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: var(--grad-border);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0.85;
  pointer-events: none;
  transition: opacity var(--dur-base) var(--ease-out);
}

.ways__card--rec:hover::after,
.ways__card--rec:focus-within::after {
  opacity: 1;
}

/* --------------------------------------------------------------------------
   30.8 Komentarz redakcyjny - panel prowadzacy do sekcji #rozwiazanie
   -------------------------------------------------------------------------- */
.ways__panel {
  margin-top: clamp(28px, 4vw, 48px);
}

.ways__panel::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--grad-accent);
  pointer-events: none;
}

.ways__panel-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-5);
}

.ways__panel-icon {
  width: var(--chip-l);
  height: var(--chip-l);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
}

.ways__panel-icon svg {
  width: 24px;
  height: 24px;
}

.ways__panel-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-width: 0;
}

.ways__panel-title {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 600;
  line-height: 1.3;
  color: var(--text);
}

.ways__panel-text {
  color: var(--text-secondary);
  max-width: var(--measure);
}

.ways__panel-cta {
  margin-top: var(--space-1);
}

.ways__link {
  font-family: var(--font-display);
  font-weight: 600;
  padding-block: 6px;
}

@media (min-width: 768px) {
  .ways__panel-grid {
    grid-template-columns: auto minmax(0, 1fr);
    gap: var(--space-6);
    align-items: start;
  }
}

/* --------------------------------------------------------------------------
   30.9 Ograniczenie ruchu
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .ways__halo {
    animation: none;
  }

  .ways__card:hover,
  .ways__card:focus-within {
    transform: none;
  }

  .ways__card:hover .ways__num {
    transform: none;
  }
}


/* ===== 40-rozwiazanie ===== */

/* ==========================================================================
   SEKCJA 40 - ROZWIAZANIE  (#rozwiazanie)
   Prefiks: .sol / .sol__ | Tlo ciemne (.section) | Mobile-first
   Wszystkie kolory wylacznie z tokenow systemu MERIDIAN (00-base.css)
   Nic tu nie redefiniuje :root ani komponentow wspolnych poza prefiksem .sol
   ========================================================================== */

/* --------------------------------------------------------------------------
   40.1 Dekoracja tla - punkt kulminacyjny strony (aurora + dwa glow)
   -------------------------------------------------------------------------- */
.sol__glow-top {
  opacity: 0.6;
}

.sol__glow-bottom {
  opacity: 0.42;
}

.sol__grid {
  opacity: 0.85;
}

.sol .aurora__blob--1 {
  top: -140px;
  left: -16%;
  width: 58vw;
  height: 42vw;
  opacity: 0.34;
}

.sol .aurora__blob--2 {
  top: 46%;
  left: 58%;
  width: 62vw;
  height: 44vw;
  opacity: 0.3;
}

.sol .aurora__blob--3 {
  bottom: -110px;
  left: 22%;
  opacity: 0.16;
}

/* --------------------------------------------------------------------------
   40.2 Naglowek sekcji
   -------------------------------------------------------------------------- */
.sol__head {
  max-width: 66ch;
  margin-bottom: clamp(36px, 5vw, 64px);
}

.sol__lead-link {
  font-weight: 500;
}

.sol__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  max-width: none;
  margin-top: var(--space-6);
}

/* --------------------------------------------------------------------------
   40.3 Dwa filary
   -------------------------------------------------------------------------- */
.sol__pillars {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(16px, 2.4vw, 28px);
}

.sol__pillar {
  gap: var(--space-6);
  padding: clamp(22px, 3vw, 36px);
  transition:
    border-color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out);
}

.sol__pillar:hover {
  border-color: var(--border-strong);
  box-shadow: var(--shadow-lg);
}

.sol__pillar-head {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.sol__pillar-icon {
  margin-bottom: var(--space-1);
}

.sol__pillar-meta {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  max-width: none;
}

.sol__pillar-num {
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.08em;
  color: var(--accent);
}

.sol__pillar-kicker {
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: var(--ls-wide);
  color: var(--text-muted);
}

.sol__pillar-title {
  color: var(--text);
}

.sol__pillar-lead {
  color: var(--text-secondary);
}

/* --- Wizualizacja przeplywu (inline SVG + legenda HTML) --- */
.sol__flow {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-5) var(--space-4) var(--space-4);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background-image: linear-gradient(180deg, var(--surface-2) 0%, transparent 100%);
}

.sol__flow-svg {
  display: block;
  width: 100%;
  height: auto;
  color: var(--text);
  opacity: 0.94;
}

.sol__node-ring {
  stroke: var(--border-strong);
}

.sol__wire {
  stroke: var(--accent);
  stroke-dasharray: 3 7;
  opacity: 0.5;
  transition: opacity var(--dur-base) var(--ease-out);
}

.sol__wire-head {
  stroke: var(--accent);
  opacity: 0.75;
}

.sol__pillar:hover .sol__wire {
  opacity: 0.78;
}

.sol__spark {
  fill: var(--accent);
  animation: sol-spark 3.4s var(--ease-in-out) infinite;
}

.sol__spark--d1 {
  animation-delay: 0.85s;
}

.sol__node-dot {
  fill: var(--accent);
}

@keyframes sol-spark {
  0% { transform: translateX(0); opacity: 0; }
  14% { opacity: 0.95; }
  78% { opacity: 0.95; }
  100% { transform: translateX(38px); opacity: 0; }
}

.sol__flow-legend {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-2);
  text-align: center;
}

.sol__flow-step {
  display: block;
  font-size: clamp(0.6875rem, 2.2vw, 0.8125rem);
  line-height: 1.35;
  color: var(--text-muted);
  hyphens: auto;
  overflow-wrap: anywhere;
}

/* --- Lista czterech punktow filaru --- */
.sol__points {
  gap: var(--space-4);
}

.sol__points .list__item {
  font-size: var(--fs-small-plus);
  line-height: var(--lh-base);
}

/* --------------------------------------------------------------------------
   40.4 Tabela porownawcza
   -------------------------------------------------------------------------- */
.sol__compare {
  margin-top: clamp(48px, 7vw, 96px);
}

.sol__compare-head {
  max-width: var(--measure);
  margin-bottom: var(--space-6);
}

.sol__subtitle {
  color: var(--text);
}

.sol__subtext {
  margin-top: var(--space-3);
  color: var(--text-secondary);
}

.sol__table-hint {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  max-width: none;
  margin-bottom: var(--space-3);
  font-size: var(--fs-small);
  color: var(--text-muted);
}

.sol__table-hint .icon {
  margin-top: 3px;
  color: var(--accent);
}

/* Sugestia poziomego scrolla: gradient przy prawej krawedzi, ktory znika
   po dojechaniu do konca (technika background-attachment: local/scroll). */
.sol__table-wrap {
  background-image:
    linear-gradient(to left, var(--surface) 0%, var(--surface) 100%),
    linear-gradient(to left, var(--surface-3) 0%, transparent 100%);
  background-repeat: no-repeat;
  background-position: right center, right center;
  background-size: 56px 100%, 48px 100%;
  background-attachment: local, scroll;
}

.sol__table {
  min-width: 720px;
}

.sol__table caption {
  padding: 0;
}

.sol__table th,
.sol__table td {
  padding: 16px 20px;
  min-width: 190px;
}

.sol__table thead th {
  vertical-align: bottom;
  white-space: normal;
  text-transform: none;
  letter-spacing: 0.01em;
  font-size: var(--fs-small-plus);
  color: var(--text);
}

/* Pierwsza kolumna przyklejona przy przewijaniu w bok */
.sol__table .sol__cell-crit {
  position: sticky;
  left: 0;
  z-index: var(--z-base);
  min-width: 148px;
  width: 148px;
  background-color: var(--surface);
  box-shadow:
    inset -1px 0 0 var(--border),
    12px 0 20px -16px var(--ink-950);
}

.sol__table thead .sol__cell-crit {
  z-index: var(--z-raised);
  background-color: var(--surface-2);
}

/* Wyrozniona kolumna: polski numer w internecie */
.sol__table .sol__cell--hi {
  background-color: var(--accent-soft);
  color: var(--text);
  box-shadow:
    inset 1px 0 0 var(--border-accent),
    inset -1px 0 0 var(--border-accent);
}

.sol__table thead .sol__cell--hi {
  background-color: var(--surface-3);
  color: var(--accent);
  box-shadow:
    inset 1px 0 0 var(--border-accent),
    inset -1px 0 0 var(--border-accent),
    inset 0 2px 0 var(--accent);
}

.sol__table tbody tr:last-child .sol__cell--hi {
  box-shadow:
    inset 1px 0 0 var(--border-accent),
    inset -1px 0 0 var(--border-accent),
    inset 0 -2px 0 var(--border-accent);
}

.sol__cell-hi-label {
  display: block;
}

.sol__cell-badge {
  margin-top: var(--space-2);
}

/* --------------------------------------------------------------------------
   40.5 Co dostajesz w praktyce
   -------------------------------------------------------------------------- */
.sol__gains-block {
  margin-top: clamp(48px, 7vw, 96px);
}

.sol__gains {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-4);
}

.sol__gain {
  gap: var(--space-3);
  transition:
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out);
}

.sol__gain:hover {
  transform: translateY(-3px);
  border-color: var(--border-accent);
}

.sol__gain-icon {
  display: grid;
  place-items: center;
  width: var(--chip-m);
  height: var(--chip-m);
  flex: none;
  border: 1px solid var(--border-accent);
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  color: var(--accent);
}

.sol__gain-icon svg {
  width: 20px;
  height: 20px;
}

.sol__gain-title {
  font-size: var(--fs-h5);
  color: var(--text);
}

.sol__gain-text {
  font-size: var(--fs-small-plus);
  color: var(--text-secondary);
}

/* --------------------------------------------------------------------------
   40.6 Blok CTA
   -------------------------------------------------------------------------- */
.sol__cta {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(24px, 3.2vw, 40px);
  margin-top: clamp(48px, 7vw, 96px);
}

.sol__cta-title {
  color: var(--text);
}

.sol__cta-text {
  margin-top: var(--space-4);
  color: var(--text-secondary);
}

.sol__cta-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
}

.sol__cta-btn {
  max-width: 100%;
  padding-block: var(--space-3);
  line-height: 1.35;
  text-align: center;
  white-space: normal;
}

.sol__cta-link {
  min-height: 44px;
  align-items: center;
}

.sol__cta-micro {
  font-size: var(--fs-small);
  color: var(--text-muted);
}

.sol__cta-foot {
  margin-top: 0;
}

.sol__cta-note {
  align-items: flex-start;
}

/* --------------------------------------------------------------------------
   40.7 Breakpointy
   -------------------------------------------------------------------------- */
@media (min-width: 480px) {
  .sol__flow {
    padding: var(--space-6) var(--space-5) var(--space-5);
  }

  .sol__gains {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 768px) {
  .sol__gains {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .sol__table .sol__cell-crit {
    min-width: 200px;
    width: 220px;
  }

  .sol__cta-actions {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-5);
  }

  .sol__cta-micro {
    flex-basis: 100%;
    margin-top: calc(-1 * var(--space-2));
  }
}

@media (min-width: 1024px) {
  .sol__pillars {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sol__table-hint {
    display: none;
  }

  .sol__table .sol__cell-crit {
    box-shadow: inset -1px 0 0 var(--border);
  }

  .sol__cta {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    align-items: center;
  }

  .sol__cta-actions {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-4);
  }

  .sol__cta-micro {
    margin-top: 0;
  }

  .sol__cta-foot {
    grid-column: 1 / -1;
  }
}

@media (min-width: 1280px) {
  .sol__pillar {
    padding: clamp(28px, 2.6vw, 40px);
  }

  /* 3 + 2 na siatce szesciokolumnowej: kolumny ~355px i ~546px zamiast 211px */
  .sol__gains {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .sol__gain:nth-child(-n + 3) { grid-column: span 2; }
  .sol__gain:nth-child(n + 4) { grid-column: span 3; }

  .sol__table th,
  .sol__table td {
    padding: 18px 24px;
  }
}

/* --------------------------------------------------------------------------
   40.8 Ruch ograniczony
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .sol__spark {
    animation: none !important;
    opacity: 0.9;
  }

  .sol__gain:hover {
    transform: none;
  }
}


/* ===== 50-zastosowania ===== */

/* ==========================================================================
   SEKCJA 50 - SCENARIUSZE I PRZYGOTOWANIE  (#zastosowania)
   Prefiks: .use / .use__  |  Tlo CIEMNE (.section--deep)  |  Mobile-first
   Wszystkie kolory wylacznie z tokenow semantycznych systemu MERIDIAN.
   Sekcja celowo spokojniejsza od #rozwiazanie: mniej poswiaty, wiecej powietrza.
   ========================================================================== */

/* --------------------------------------------------------------------------
   50.1 Dekoracja tla - wyciszona
   -------------------------------------------------------------------------- */
.use__glow-top {
  opacity: 0.34;
  filter: blur(80px);
}

.use__mesh {
  opacity: 0.5;
}

.use__halo {
  position: absolute;
  left: 50%;
  bottom: -90px;
  width: 76vw;
  height: 46vw;
  min-width: 320px;
  min-height: 220px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: radial-gradient(closest-side, var(--accent-soft), transparent 72%);
  filter: blur(90px);
  opacity: 0.7;
  pointer-events: none;
}

/* --------------------------------------------------------------------------
   50.2 Naglowek sekcji
   -------------------------------------------------------------------------- */
.use__head {
  max-width: 62ch;
}

/* --------------------------------------------------------------------------
   50.3 CZESC A - persony
   -------------------------------------------------------------------------- */
.use__personas {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(16px, 2.4vw, 26px);
}

.use__persona-item {
  display: flex;
  min-width: 0;
}

.use__persona {
  width: 100%;
  gap: var(--space-4);
  border-radius: var(--radius-lg);
  transition:
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out);
}

.use__persona:hover,
.use__persona:focus-within {
  transform: translateY(-4px);
  border-color: var(--border-accent);
  box-shadow: var(--shadow-lg);
}

.use__persona-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
}

/* Medalion-portret: okrag z pierscieniem, ikona liniowa w srodku */
.use__portrait {
  position: relative;
  width: var(--chip-l);
  height: var(--chip-l);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: var(--accent);
  background:
    radial-gradient(circle at 34% 26%, var(--accent-soft), transparent 68%),
    var(--surface-2);
  border: 1px solid var(--border-accent);
}

.use__portrait::before {
  content: "";
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  border: 1px solid var(--border);
  opacity: 0.8;
  transition: transform var(--dur-slow) var(--ease-out), opacity var(--dur-base) var(--ease-out);
}

.use__persona:hover .use__portrait::before,
.use__persona:focus-within .use__portrait::before {
  transform: scale(1.08);
  opacity: 1;
}

.use__portrait svg {
  width: 24px;
  height: 24px;
}

.use__tag {
  flex: none;
}

.use__persona-title {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  font-weight: 600;
  line-height: 1.28;
  letter-spacing: -0.015em;
  color: var(--text);
  text-wrap: balance;
  margin: 0;
}

.use__situation {
  position: relative;
  margin: 0;
  padding-left: var(--space-4);
  border-left: 1px solid var(--border-strong);
  color: var(--text-muted);
  font-size: var(--fs-small-plus);
  font-style: italic;
  line-height: 1.6;
}

.use__situation-tag {
  display: block;
  margin-bottom: 4px;
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-style: normal;
  font-weight: 600;
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--text-muted);
}

.use__list {
  padding-top: var(--space-1);
}

.use__list .list__item {
  font-size: var(--fs-small-plus);
  line-height: 1.6;
  overflow-wrap: break-word;
}

.use__mark {
  color: var(--accent);
  opacity: 0.9;
}

@media (min-width: 768px) {
  .use__personas {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Persony zostaja na dwoch kolumnach na calym zakresie desktopu — przy czterech
   tekst punktow mial ok. 21 znakow w wierszu i lamal sie na pojedyncze slowa. */

/* --------------------------------------------------------------------------
   50.4 CZESC B - krok po kroku (timeline)
   -------------------------------------------------------------------------- */
.use__paths {
  margin-top: clamp(56px, 8vw, 104px);
}

.use__paths-head {
  max-width: var(--measure);
  margin-bottom: clamp(28px, 3.6vw, 44px);
}

.use__sub {
  font-family: var(--font-display);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: var(--lh-heading);
  letter-spacing: -0.015em;
  color: var(--text);
  text-wrap: balance;
  margin: 0 0 var(--space-3) 0;
}

.use__sub-lead {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--fs-body);
  line-height: var(--lh-base);
}

.use__paths-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(16px, 2.4vw, 28px);
}

.use__path {
  position: relative;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(20px, 2.6vw, 28px);
  padding: clamp(20px, 3vw, 34px);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  background-color: var(--surface);
  transition: border-color var(--dur-base) var(--ease-out);
}

.use__path:hover,
.use__path:focus-within {
  border-color: var(--border-strong);
}

.use__path::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: var(--grad-hairline);
  opacity: 0.7;
  pointer-events: none;
}

/* Glowa karty dzieli te sama os co kolka timeline'u (kolumna --chip-m) */
.use__path-head {
  display: grid;
  grid-template-columns: var(--chip-m) minmax(0, 1fr);
  gap: var(--space-4);
  align-items: center;
}

.use__path-icon {
  width: var(--chip-m);
  height: var(--chip-m);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
}

.use__path-icon svg {
  width: 20px;
  height: 20px;
}

.use__path-titles {
  min-width: 0;
}

.use__path-kicker {
  display: block;
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 4px;
}

.use__path-title {
  font-family: var(--font-display);
  font-size: var(--fs-h5);
  font-weight: 600;
  line-height: 1.26;
  color: var(--text);
  margin: 0;
  text-wrap: balance;
}

/* --- Pionowy timeline --- */
.use__timeline {
  position: relative;
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(20px, 2.4vw, 28px);
}

.use__timeline::before {
  content: "";
  position: absolute;
  top: 22px;
  bottom: 8px;
  left: calc(22px - 0.5px);
  width: 1px;
  background: linear-gradient(
    180deg,
    var(--border-accent) 0%,
    var(--border-strong) 42%,
    var(--border) 68%,
    transparent 100%
  );
  pointer-events: none;
}

.use__step {
  position: relative;
  display: grid;
  grid-template-columns: var(--chip-m) minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
  scroll-margin-top: calc(var(--header-h) + 24px);
}

.use__step-dot {
  position: relative;
  z-index: var(--z-base);
  width: var(--chip-m);
  height: var(--chip-m);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background-color: var(--surface-3);
  border: 1px solid var(--border-accent);
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  transition: border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}

.use__step:target .use__step-dot {
  border-color: var(--accent);
  box-shadow: var(--shadow-glow);
}

.use__step-body {
  min-width: 0;
  padding-top: 2px;
}

.use__step-title {
  font-family: var(--font-display);
  font-size: var(--fs-h5);
  font-weight: 600;
  line-height: 1.36;
  color: var(--text);
  margin: 0 0 6px 0;
  text-wrap: balance;
}

.use__step-text {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--fs-small-plus);
  line-height: 1.62;
  max-width: 46ch;
}

@media (min-width: 1024px) {
  .use__paths-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* --------------------------------------------------------------------------
   50.5 CZESC C - checklista przed wyjazdem
   -------------------------------------------------------------------------- */
.use__check {
  margin-top: clamp(48px, 7vw, 96px);
  background: var(--surface-glass);
  -webkit-backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  backdrop-filter: blur(var(--blur-glass)) saturate(140%);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-md);
  scroll-margin-top: calc(var(--header-h) + 24px);
}

@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .use__check {
    background: var(--surface-2);
  }
}

.use__check-head {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  margin-bottom: clamp(24px, 3vw, 36px);
}

.use__check-icon {
  width: var(--chip-m);
  height: var(--chip-m);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
}

.use__check-icon svg {
  width: 20px;
  height: 20px;
}

.use__check-titles {
  min-width: 0;
}

.use__check-kicker {
  display: block;
  font-family: var(--font-display);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 4px;
}

.use__check-title {
  font-family: var(--font-display);
  font-size: var(--fs-h3);
  font-weight: 600;
  line-height: var(--lh-heading);
  letter-spacing: -0.015em;
  color: var(--text);
  margin: 0;
  text-wrap: balance;
}

.use__check-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-5);
}

.use__check-item {
  display: grid;
  grid-template-columns: var(--chip-s) minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
  min-width: 0;
}

.use__check-box {
  width: var(--chip-s);
  height: var(--chip-s);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: var(--radius-sm);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
  transition: transform var(--dur-base) var(--ease-out);
}

.use__check-box svg {
  width: 16px;
  height: 16px;
}

.use__check-item:hover .use__check-box {
  transform: scale(1.06);
}

.use__check-text {
  margin: 0;
  padding-top: 3px;
  color: var(--text-secondary);
  font-size: var(--fs-small-plus);
  line-height: 1.62;
  overflow-wrap: break-word;
}

/* Jedyny bursztynowy akcent sekcji - pozycja o numerach alarmowych */
.use__check-item--alert .use__check-box {
  background-color: var(--gold-soft);
  border-color: var(--gold-glow);
  color: var(--gold);
}

.use__check-item--alert .use__check-text {
  color: var(--text);
}

@media (min-width: 768px) {
  .use__check-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-6) clamp(24px, 3vw, 44px);
  }
}

/* --------------------------------------------------------------------------
   50.6 Ograniczenie ruchu
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .use__persona:hover,
  .use__persona:focus-within,
  .use__persona:hover .use__portrait::before,
  .use__persona:focus-within .use__portrait::before,
  .use__check-item:hover .use__check-box {
    transform: none;
  }
}


/* ===== 60-kalkulator ===== */

/* ==========================================================================
   SEKCJA 60 - KALKULATOR KOSZTU ROZMOW  (#kalkulator)
   Prefiks: .calc / .calc__  |  Tlo JASNE (.section--invert)  |  Mobile-first
   Wszystkie kolory wylacznie z tokenow semantycznych systemu MERIDIAN.
   Sekcja ma czytac sie jak precyzyjny przyrzad: duzo bieli, cienkie linie,
   jeden akcent (cyjan w wersji odwroconej), zero bursztynu.
   Animacje wylacznie na transform / opacity.
   ========================================================================== */

/* --------------------------------------------------------------------------
   60.1 Dekoracja tla - maksymalnie wyciszona
   -------------------------------------------------------------------------- */
.calc__mesh {
  opacity: 0.55;
}

.calc__wash {
  position: absolute;
  top: calc(min(70vw, 720px) * -0.42);
  right: -22%;
  width: min(70vw, 720px);
  height: min(70vw, 720px);
  border-radius: 50%;
  background: radial-gradient(closest-side, var(--accent-soft), transparent 70%);
  filter: blur(60px);
  opacity: 0.9;
}

/* --------------------------------------------------------------------------
   60.2 Uklad sekcji
   -------------------------------------------------------------------------- */
.calc__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(20px, 3vw, 32px);
  align-items: start;
}

/* --------------------------------------------------------------------------
   60.3 Wspolne elementy obu paneli
   -------------------------------------------------------------------------- */
.calc__form,
.calc__result-inner {
  display: flex;
  flex-direction: column;
  gap: clamp(20px, 3vw, 28px);
}

.calc__panel-head {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
}

.calc__panel-icon {
  display: grid;
  place-items: center;
  flex: none;
  width: var(--chip-m);
  height: var(--chip-m);
  border-radius: var(--radius-md);
  background-color: var(--accent-soft);
  border: 1px solid var(--border-accent);
  color: var(--accent);
}

.calc__panel-icon svg {
  width: 20px;
  height: 20px;
}

.calc__panel-title {
  font-family: var(--font-display);
  font-size: var(--fs-h5);
  font-weight: 600;
  line-height: 1.3;
  color: var(--text);
  margin: 0;
}

/* --------------------------------------------------------------------------
   60.4 Formularz - pola
   -------------------------------------------------------------------------- */
.calc__fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}

.calc__field {
  gap: var(--space-3);
  padding-bottom: var(--space-6);
  border-bottom: 1px solid var(--border);
}

.calc__field:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.calc__field-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  min-width: 0;
}

.calc__label {
  flex: 1 1 180px;
  min-width: 0;
  color: var(--text);
  font-size: var(--fs-small-plus);
  line-height: 1.4;
  overflow-wrap: anywhere;
}

/* Kapsula z liczba + jednostka */
.calc__value {
  display: inline-flex;
  align-items: center;
  flex: none;
  gap: var(--space-2);
  padding: 4px 12px 4px 4px;
  border-radius: var(--radius-md);
  background-color: var(--surface-2);
  border: 1px solid var(--border);
  transition: border-color var(--dur-fast) var(--ease-out);
}

.calc__value:hover {
  border-color: var(--border-strong);
}

.calc__value:focus-within {
  border-color: var(--border-accent);
}

/* Input liczbowy w kapsule - zdejmujemy tlo i ramke z .field__control */
.calc .calc__number[type="number"] {
  width: 5.5ch;
  min-width: 0;
  min-height: 44px;
  padding: 0 4px;
  border: 0;
  border-radius: var(--radius-sm);
  background-color: transparent;
  color: var(--text);
  font-family: var(--font-display);
  font-size: 1.0625rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-align: right;
  -moz-appearance: textfield;
  appearance: textfield;
}

.calc .calc__number[type="number"]:hover {
  border-color: transparent;
}

.calc .calc__number[type="number"]:focus-visible {
  outline: var(--focus-outline);
  outline-offset: 1px;
  border-color: transparent;
}

/* Chowamy natywne strzalki - wartosc zmienia sie suwakiem albo z klawiatury */
.calc__number::-webkit-outer-spin-button,
.calc__number::-webkit-inner-spin-button {
  -webkit-appearance: none;
  appearance: none;
  margin: 0;
}

.calc__unit {
  flex: none;
  font-size: var(--fs-small);
  font-weight: 500;
  color: var(--text-muted);
  white-space: nowrap;
}

.calc__hint {
  margin: 0;
  line-height: 1.5;
}

/* --------------------------------------------------------------------------
   60.5 Suwaki - spojne w obu silnikach, wypelnienie przez --fill
   -------------------------------------------------------------------------- */
.calc .calc__range[type="range"] {
  -webkit-appearance: none;
  appearance: none;
  display: block;
  width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: var(--radius-pill);
  background: transparent;
  cursor: pointer;
  touch-action: pan-y;
}

.calc .calc__range[type="range"]:focus-visible {
  outline: var(--focus-outline);
  outline-offset: 2px;
}

/* --- WebKit / Blink --- */
.calc .calc__range[type="range"]::-webkit-slider-runnable-track {
  height: 6px;
  border-radius: var(--radius-pill);
  background-color: var(--surface-2);
  background-image: linear-gradient(
    90deg,
    var(--accent) 0%,
    var(--accent) var(--fill, 0%),
    transparent var(--fill, 0%),
    transparent 100%
  );
  box-shadow: inset 0 0 0 1px var(--border);
}

.calc .calc__range[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  margin-top: -7px;
  border: 0;
  border-radius: 50%;
  background: var(--grad-accent);
  box-shadow: 0 0 0 3px var(--surface-3), var(--shadow-md);
  cursor: grab;
  transition: transform var(--dur-fast) var(--ease-out);
}

.calc .calc__range[type="range"]:hover::-webkit-slider-thumb {
  transform: scale(1.12);
}

.calc .calc__range[type="range"]:active::-webkit-slider-thumb {
  transform: scale(1.04);
  cursor: grabbing;
}

.calc .calc__range[type="range"]:focus-visible::-webkit-slider-thumb {
  box-shadow: 0 0 0 3px var(--surface-3), 0 0 0 6px var(--accent);
}

/* --- Gecko / Firefox --- */
.calc .calc__range[type="range"]::-moz-range-track {
  height: 6px;
  border-radius: var(--radius-pill);
  background-color: var(--surface-2);
  background-image: linear-gradient(
    90deg,
    var(--accent) 0%,
    var(--accent) var(--fill, 0%),
    transparent var(--fill, 0%),
    transparent 100%
  );
  box-shadow: inset 0 0 0 1px var(--border);
}

.calc .calc__range[type="range"]::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border: 0;
  border-radius: 50%;
  background: var(--grad-accent);
  box-shadow: 0 0 0 3px var(--surface-3), var(--shadow-md);
  cursor: grab;
  transition: transform var(--dur-fast) var(--ease-out);
}

.calc .calc__range[type="range"]:hover::-moz-range-thumb {
  transform: scale(1.12);
}

.calc .calc__range[type="range"]:active::-moz-range-thumb {
  transform: scale(1.04);
  cursor: grabbing;
}

.calc .calc__range[type="range"]:focus-visible::-moz-range-thumb {
  box-shadow: 0 0 0 3px var(--surface-3), 0 0 0 6px var(--accent);
}

/* --------------------------------------------------------------------------
   60.6 Przyciski akcji
   -------------------------------------------------------------------------- */
.calc__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-1);
}

.calc__btn {
  flex: 1 1 auto;
}

.calc__btn-clear {
  flex: 0 0 auto;
}

.calc__btn-icon {
  width: 16px;
  height: 16px;
  flex: none;
}

@media (min-width: 480px) {
  .calc__btn {
    flex: 0 0 auto;
  }
}

/* --------------------------------------------------------------------------
   60.7 Kolumna wyniku
   -------------------------------------------------------------------------- */
.calc__basis {
  margin: 0;
  font-size: var(--fs-small);
  line-height: 1.6;
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
}

.calc__basis-num {
  font-family: var(--font-mono);
  font-size: 0.9375em;
  font-weight: 600;
  color: var(--text-secondary);
}

.calc__basis-sep {
  color: var(--text-faint);
  padding-inline: 2px;
}

.calc__empty {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  margin: 0;
  padding: var(--space-4);
  border-radius: var(--radius-md);
  border: 1px solid var(--border-accent);
  background-color: var(--accent-soft);
  color: var(--text-secondary);
  font-size: var(--fs-small-plus);
  line-height: 1.6;
}

.calc__empty[hidden] {
  display: none;
}

.calc__empty-icon {
  width: 20px;
  height: 20px;
  flex: none;
  margin-top: 2px;
  color: var(--accent);
}

/* --- Trzy liczby --- */
.calc__figures {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-5);
}

.calc__figure {
  min-width: 0;
  gap: var(--space-2);
}

.calc__fig-label {
  line-height: 1.4;
  letter-spacing: 0.10em;
}

.calc__fig-hint {
  line-height: 1.5;
}

.calc__num {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 1.20rem + 1.30vw, 2.125rem);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: var(--ls-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}

.calc__figure--hero {
  padding-top: var(--space-5);
  border-top: 1px solid var(--border);
}

.calc__num--hero {
  font-size: var(--fs-stat);
  color: var(--accent);
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .calc__num--hero {
    background: var(--grad-text);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
}

.calc__delta {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: var(--space-1) 0 0;
  padding: 8px 14px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border-accent);
  background-color: var(--accent-soft);
  color: var(--text-secondary);
  font-size: var(--fs-small);
  line-height: 1.4;
}

.calc__delta-num {
  font-family: var(--font-display);
  font-size: var(--fs-small-plus);
  font-weight: 700;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}

/* --------------------------------------------------------------------------
   60.8 Wykres porownawczy - dwa slupki, animacja przez transform: scaleX
   -------------------------------------------------------------------------- */
.calc__chart {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding-top: var(--space-5);
  border-top: 1px solid var(--border);
}

.calc__chart-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-h6);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.10em;
  color: var(--text-muted);
}

.calc__bar-row {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-width: 0;
}

.calc__bar-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  min-width: 0;
}

.calc__bar-name {
  font-size: var(--fs-small);
  font-weight: 500;
  color: var(--text-secondary);
  min-width: 0;
}

.calc__bar-val {
  font-family: var(--font-mono);
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.calc__bar-track {
  position: relative;
  width: 100%;
  height: 12px;
  border-radius: var(--radius-pill);
  background-color: var(--surface-2);
  box-shadow: inset 0 0 0 1px var(--border);
  overflow: hidden;
}

.calc__bar-fill {
  position: absolute;
  inset: 0;
  /* Zadnego promienia na wypelnieniu: scaleX() sciskalby go w poziomie i przy
     malym udziale slupek miewal ostre narozniki, a przy pelnym zaokraglone.
     Ksztalt kapsuly nadaje tor (overflow: hidden), wiec obie serie sa identyczne. */
  border-radius: 0;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--dur-slow) var(--ease-out);
  will-change: transform;
}

.calc__bar-fill--roam {
  color: var(--text-secondary);
}

.calc__bar-fill--net {
  color: var(--accent);
}

.calc__chart-note {
  margin: 0;
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--text-muted);
}

/* --------------------------------------------------------------------------
   60.9 Disclaimer + link domykajacy
   -------------------------------------------------------------------------- */
.calc__disclaimer {
  align-items: flex-start;
}

.calc__disclaimer-text {
  margin: 0;
  font-size: var(--fs-small);
  line-height: 1.65;
  color: var(--text-muted);
}

.calc__more {
  margin: clamp(28px, 4vw, 40px) 0 0;
}

/* --------------------------------------------------------------------------
   60.10 Breakpointy
   -------------------------------------------------------------------------- */
@media (min-width: 480px) {
  .calc__figures {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-6);
  }

  .calc__figure--hero {
    grid-column: 1 / -1;
  }

  .calc .calc__number[type="number"] {
    width: 6ch;
  }
}

@media (min-width: 1024px) {
  .calc__layout {
    grid-template-columns: minmax(0, 46fr) minmax(0, 54fr);
    gap: clamp(24px, 2.6vw, 40px);
  }

  .calc__result {
    align-self: start;
  }

  .calc__num {
    font-size: clamp(1.625rem, 1.10rem + 1.60vw, 2.25rem);
  }
}

/* Sticky panel wyniku tylko wtedy, gdy okno jest na tyle wysokie, ze panel
   (ok. 1100px) miesci sie w kadrze. Inaczej dol panelu — wykres i zastrzezenie
   — nigdy nie wjechalby na ekran. */
@media (min-width: 1024px) and (min-height: 1220px) {
  .calc__result {
    position: sticky;
    top: calc(var(--header-h) + 24px);
  }
}

@media (min-width: 1280px) {
  .calc__layout {
    gap: var(--space-12);
  }
}

/* --------------------------------------------------------------------------
   60.11 Ograniczony ruch
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .calc__bar-fill {
    transition: none;
    will-change: auto;
  }

  .calc .calc__range[type="range"]::-webkit-slider-thumb {
    transition: none;
  }

  .calc .calc__range[type="range"]:hover::-webkit-slider-thumb,
  .calc .calc__range[type="range"]:active::-webkit-slider-thumb {
    transform: none;
  }

  .calc .calc__range[type="range"]::-moz-range-thumb {
    transition: none;
  }

  .calc .calc__range[type="range"]:hover::-moz-range-thumb,
  .calc .calc__range[type="range"]:active::-moz-range-thumb {
    transform: none;
  }
}


/* ===== 70-faq-cta-stopka ===== */

/* ==========================================================================
   SEKCJA 70 - DOBRE PRAKTYKI + FAQ + FINALNE CTA + STOPKA
   taniroaming.pl / system MERIDIAN
   Zalezy od: 00-base.css (tokeny, .section, .container, .card, .panel, .note,
   .btn, .link-arrow, .eyebrow, .decor, .reveal, .sr-only)
   Prefiksy: .tips__ , .faq__ , .cta__ , .foot__
   Zero surowych hexow - wylacznie var(--token) i gradienty dekoracyjne.
   ========================================================================== */

/* ==========================================================================
   1. DOBRE PRAKTYKI  (#praktyki, sekcja jasna)
   ========================================================================== */

.tips__decor {
  --tips-wash: radial-gradient(closest-side, var(--accent-soft), transparent 72%);
}

.tips__wash {
  position: absolute;
  display: block;
  border-radius: 50%;
  background: var(--tips-wash);
  filter: blur(60px);
  pointer-events: none;
}
.tips__wash--a {
  width: min(78vw, 680px);
  height: min(52vw, 440px);
  top: calc(min(52vw, 440px) * -0.4);
  left: -14%;
}
.tips__wash--b {
  width: min(66vw, 560px);
  height: min(44vw, 360px);
  right: -12%;
  bottom: calc(min(44vw, 360px) * -0.4);
  background: radial-gradient(closest-side, var(--gold-soft), transparent 72%);
  opacity: 0.7;
}

.tips__head {
  margin-bottom: clamp(32px, 4.4vw, 60px);
}

/* --- Siatka kafelkow: auto-fit na mobile, 3 + 2 na desktopie --- */
.tips__grid {
  display: grid;
  gap: clamp(16px, 2.4vw, 28px);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
}

.tips__cell {
  display: flex;
  min-width: 0;
}

.tips__card {
  position: relative;
  flex: 1 1 auto;
  width: 100%;
  min-width: 0;
  gap: var(--space-4);
  padding-top: clamp(22px, 3vw, 34px);
}
.tips__card:hover {
  transform: translateY(-3px);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-md);
}
.tips__index {
  position: absolute;
  top: clamp(16px, 2.4vw, 24px);
  right: clamp(16px, 2.4vw, 24px);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.1em;
  line-height: 1;
  color: var(--accent);
  opacity: 0.6;
  pointer-events: none;
}
.tips__index--alert {
  color: var(--gold);
  opacity: 0.85;
}

.tips__icon {
  transition: transform var(--dur-base) var(--ease-out);
}
.tips__card:hover .tips__icon {
  transform: translateY(-2px);
}

.tips__title {
  padding-right: var(--space-6);
  text-wrap: balance;
}

.tips__text {
  margin: 0;
  font-size: var(--fs-small-plus);
  line-height: var(--lh-base);
}

/* Zakres dwukolumnowy: piaty kafelek domyka rzad na pelnej szerokosci */
@media (min-width: 600px) and (max-width: 1023px) {
  .tips__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .tips__cell--wide:last-child {
    grid-column: 1 / -1;
  }
}

@media (min-width: 1024px) {
  .tips__grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .tips__cell {
    grid-column: span 2;
  }
  .tips__cell--wide {
    grid-column: span 3;
  }
}

/* ==========================================================================
   2. FAQ  (#faq, sekcja ciemna)
   ========================================================================== */

.faq__head {
  margin-bottom: clamp(28px, 3.6vw, 48px);
}

.faq__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  max-width: 840px;
  margin-inline: auto;
}

.faq__item {
  position: relative;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background-color: var(--surface);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    background-color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out);
}
.faq__item:hover {
  border-color: var(--border-strong);
}
.faq__item[open] {
  border-color: var(--border-accent);
  background-color: var(--surface-2);
  box-shadow: var(--shadow-md);
}

/* --- Pytanie (summary) --- */
.faq__q {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-3);
  min-height: 60px;
  padding: var(--space-4) var(--space-4);
  border-radius: var(--radius-md);
  cursor: pointer;
  list-style: none;
  color: var(--text);
  font-family: var(--font-display);
  font-size: var(--fs-h5);
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.005em;
  -webkit-tap-highlight-color: transparent;
}
.faq__q::-webkit-details-marker {
  display: none;
}
.faq__q::marker {
  content: "";
}
.faq__q:focus-visible {
  outline: var(--focus-outline);
  outline-offset: calc(var(--focus-offset) * -1);
}

.faq__q-index {
  display: none;
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: 400;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.1em;
  line-height: 1;
  color: var(--accent);
  opacity: 0.65;
}

.faq__q-text {
  min-width: 0;
  overflow-wrap: anywhere;
}

.faq__q-icon {
  width: var(--chip-s);
  height: var(--chip-s);
  flex: none;
  display: grid;
  place-items: center;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border);
  background-color: var(--surface-2);
  color: var(--accent);
  transition:
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    background-color var(--dur-base) var(--ease-out);
}
.faq__q-icon svg {
  width: 16px;
  height: 18px;
  display: block;
}
.faq__item:hover .faq__q-icon {
  border-color: var(--border-accent);
}
.faq__item[open] .faq__q-icon {
  transform: rotate(180deg);
  border-color: var(--border-accent);
  background-color: var(--accent-soft);
}

.faq__q-icon-v {
  transform-box: fill-box;
  transform-origin: 50% 50%;
  transform: rotate(0deg);
  transition:
    transform var(--dur-base) var(--ease-out),
    opacity var(--dur-base) var(--ease-out);
}
.faq__item[open] .faq__q-icon-v {
  transform: rotate(90deg);
  opacity: 0;
}

/* --- Odpowiedz: animacja wysokosci przez grid-template-rows 0fr -> 1fr --- */
.faq__answer {
  display: grid;
  grid-template-rows: 1fr;
}
.faq__answer-inner {
  min-height: 0;
  overflow: hidden;
  margin-inline: var(--space-4);
  border-top: 1px solid var(--border);
}
.faq__answer-inner p {
  margin: 0;
  padding-block: var(--space-4) var(--space-5);
  color: var(--text-secondary);
  font-size: var(--fs-small-plus);
  line-height: var(--lh-relaxed);
  max-width: 68ch;
}

.faq__item[open] .faq__answer {
  animation: tr-faq-open var(--dur-slow) var(--ease-out) both;
}
.faq__item[open] .faq__answer-inner p {
  animation: tr-faq-fade var(--dur-slow) var(--ease-out) both;
}

@keyframes tr-faq-open {
  from { grid-template-rows: 0fr; }
  to { grid-template-rows: 1fr; }
}
@keyframes tr-faq-fade {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (min-width: 480px) {
  .faq__q {
    grid-template-columns: auto minmax(0, 1fr) auto;
    padding-inline: var(--space-5);
  }
  .faq__q-index {
    display: block;
  }
  .faq__answer-inner {
    margin-inline: var(--space-5);
  }
}

@media (min-width: 768px) {
  .faq__q {
    min-height: 68px;
    padding-block: var(--space-5);
  }
  .faq__answer-inner p {
    padding-left: calc(var(--space-6) + var(--space-2));
  }
}

/* ==========================================================================
   3. FINALNE CTA  (#kontakt, sekcja najciemniejsza)
   ========================================================================== */

.cta__panel {
  position: relative;
  overflow: hidden;
  padding-block: clamp(32px, 5.5vw, 68px);
  /* Dol panelu nie moze konczyc sie na kolorze tla sekcji (--bg-alt). */
  background: linear-gradient(180deg, var(--surface-2) 0%, var(--surface) 100%);
  box-shadow: var(--shadow-xl);
}

.cta__aurora {
  position: absolute;
  inset: 0;
  z-index: var(--z-decor);
  pointer-events: none;
}
.cta__blob {
  position: absolute;
  display: block;
  border-radius: 50%;
  filter: blur(var(--blur-aurora));
  mix-blend-mode: screen;
  will-change: transform;
  animation: tr-drift 30s var(--ease-in-out) infinite alternate;
}
.cta__blob--1 {
  width: min(74vw, 560px);
  height: min(48vw, 360px);
  top: calc(min(48vw, 360px) * -0.4);
  left: -12%;
  opacity: 0.5;
  background: radial-gradient(closest-side, var(--accent-glow), transparent 70%);
}
.cta__blob--2 {
  width: min(70vw, 520px);
  height: min(46vw, 340px);
  right: -14%;
  bottom: calc(min(46vw, 340px) * -0.4);
  opacity: 0.42;
  background: radial-gradient(closest-side, var(--accent-2-glow), transparent 72%);
  animation-delay: -11s;
  animation-duration: 38s;
}
.cta__blob--3 {
  width: min(60vw, 420px);
  height: min(28vw, 220px);
  bottom: calc(min(28vw, 220px) * -0.4);
  left: 34%;
  opacity: 0.16;
  background: radial-gradient(closest-side, var(--gold-glow), transparent 70%);
  animation-delay: -19s;
  animation-duration: 44s;
}

.cta__body {
  position: relative;
  z-index: var(--z-base);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-5);
  max-width: 720px;
  margin-inline: auto;
  text-align: center;
}

.cta__eyebrow {
  margin-bottom: 0;
}
.cta__eyebrow::after {
  content: "";
  width: 26px;
  height: 1px;
  background-color: currentColor;
  opacity: 0.55;
}

.cta__title {
  text-wrap: balance;
}

.cta__text {
  margin: 0;
  max-width: 62ch;
  font-size: var(--fs-lead);
  line-height: 1.55;
  color: var(--text-secondary);
}

.cta__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  width: 100%;
  margin-top: var(--space-2);
}

.cta__btn {
  width: 100%;
  max-width: 100%;
  white-space: normal;
  line-height: 1.3;
  text-align: center;
  padding-inline: var(--space-4);
  padding-block: var(--space-3);
}

.cta__link {
  font-weight: 500;
}

.cta__hint {
  margin: 0;
  font-size: var(--fs-small);
  color: var(--text-muted);
}

.cta__note {
  width: 100%;
  max-width: 620px;
  margin-top: var(--space-4);
  text-align: left;
}
.cta__note p {
  margin: 0;
}

@media (min-width: 480px) {
  .cta__btn {
    width: auto;
    white-space: nowrap;
    line-height: 1;
    padding-inline: 32px;
    padding-block: 0;
  }
  .cta__actions {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-4) var(--space-8);
  }
}

/* ==========================================================================
   4. STOPKA  (.foot)
   ========================================================================== */

.foot {
  position: relative;
  isolation: isolate;
  overflow-x: clip;
}

.foot__decor {
  opacity: 0.8;
}

/* --- Gorna czesc: marka + trzy grupy linkow --- */
.foot__top {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(28px, 4vw, 44px) clamp(20px, 3vw, 40px);
}

.foot__brand {
  min-width: 0;
  scroll-margin-top: calc(var(--header-h) + 24px);
}

.foot .foot__logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--text);
  text-decoration: none;
  border-radius: var(--radius-sm);
  transition: color var(--dur-fast) var(--ease-out);
}
.foot .foot__logo:hover {
  color: var(--text);
}
.foot .foot__logo:focus-visible {
  outline: var(--focus-outline);
  outline-offset: var(--focus-offset);
}

.foot__logo-mark {
  width: 28px;
  height: 28px;
  flex: none;
  display: grid;
  place-items: center;
  color: var(--text-muted);
  transition: transform var(--dur-base) var(--ease-out);
}
.foot__logo-mark svg {
  width: 28px;
  height: 28px;
  display: block;
}
.foot__logo-stop-a { stop-color: var(--accent); }
.foot__logo-stop-b { stop-color: var(--accent-2); }

.foot .foot__logo:hover .foot__logo-mark {
  transform: scale(1.06);
}

.foot__logo-name {
  font-family: var(--font-display);
  font-size: 1.0625rem;
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1;
  color: var(--text);
}
.foot__logo-tld {
  color: var(--accent);
}

.foot__about {
  margin: var(--space-4) 0 0;
  max-width: 52ch;
  color: var(--text-muted);
  font-size: var(--fs-small);
  line-height: var(--lh-base);
}

.foot__col {
  min-width: 0;
}

.foot__col-title {
  margin: 0 0 var(--space-3);
  font-family: var(--font-display);
  font-size: var(--fs-h6);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  line-height: 1.4;
  color: var(--text);
}

.foot__links {
  display: flex;
  flex-direction: column;
}

.foot .foot__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding-block: var(--space-1);
  color: var(--text-muted);
  font-size: var(--fs-small);
  line-height: 1.45;
  text-decoration: none;
  overflow-wrap: anywhere;
  transition:
    color var(--dur-fast) var(--ease-out),
    transform var(--dur-fast) var(--ease-out);
}
.foot .foot__link:hover {
  color: var(--text);
  transform: translateX(3px);
}
.foot .foot__link:focus-visible {
  outline: var(--focus-outline);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.foot__link-icon {
  width: 14px;
  height: 14px;
  flex: none;
  opacity: 0.6;
  transition:
    transform var(--dur-fast) var(--ease-out),
    opacity var(--dur-fast) var(--ease-out);
}
.foot .foot__link--ext:hover .foot__link-icon {
  opacity: 1;
  transform: translate(2px, -2px);
}

/* --- Srodkowy pas: nota prawna + powrot na gore --- */
.foot__mid {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-5);
  margin-top: clamp(32px, 4vw, 48px);
  padding-top: clamp(24px, 3vw, 32px);
}
.foot__mid::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--grad-hairline);
  pointer-events: none;
}

.foot__legal {
  margin: 0;
  max-width: 72ch;
  color: var(--text-muted);
  font-size: var(--fs-small);
  line-height: 1.65;
}

.foot .foot__totop {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex: none;
  align-self: center;
  min-height: 44px;
  padding-inline: 18px;
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background-color: transparent;
  color: var(--text-secondary);
  font-family: var(--font-display);
  font-size: var(--fs-small);
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  transition:
    color var(--dur-fast) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    background-color var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}
.foot .foot__totop:hover {
  color: var(--text);
  border-color: var(--border-accent);
  background-color: var(--accent-soft);
  transform: translateY(-2px);
}
.foot .foot__totop:active {
  transform: translateY(0);
}
.foot .foot__totop:focus-visible {
  outline: var(--focus-outline);
  outline-offset: var(--focus-offset);
}

.foot__totop-icon {
  width: 16px;
  height: 16px;
  flex: none;
  transition: transform var(--dur-base) var(--ease-out);
}
.foot .foot__totop:hover .foot__totop-icon {
  transform: translateY(-2px);
}

/* --- Dolny pas: copyright + wydawca --- */
.foot__bottom {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  margin-top: clamp(24px, 3vw, 32px);
  padding-top: clamp(20px, 2.6vw, 26px);
  text-align: center;
}
.foot__bottom::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--grad-hairline);
  pointer-events: none;
}

.foot__copy {
  margin: 0;
  color: var(--text-muted);
  font-size: var(--fs-small);
  line-height: 1.6;
}

.foot__publisher {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--fs-small);
  line-height: 1.6;
  text-wrap: pretty;
}

.foot .foot__publisher-link {
  color: var(--accent);
  font-weight: 500;
}
.foot .foot__publisher-link:hover {
  color: var(--accent-hover);
}

@media (min-width: 768px) {
  .foot__top {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .foot__mid {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-8);
  }
  .foot__bottom {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-6);
    text-align: left;
  }
  .foot__publisher {
    text-align: right;
  }
}

@media (min-width: 1024px) {
  .foot__top {
    grid-template-columns: minmax(0, 1.25fr) repeat(3, minmax(0, 1fr));
    gap: clamp(24px, 3vw, 40px);
  }
  .foot .foot__link {
    min-height: 34px;
  }
}

/* ==========================================================================
   5. RUCH OGRANICZONY
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  .cta__blob {
    animation: none;
  }
  .faq__item[open] .faq__answer,
  .faq__item[open] .faq__answer-inner p {
    animation: none;
  }
  .tips__card:hover,
  .foot .foot__totop:hover {
    transform: none;
  }
  .foot .foot__link:hover {
    transform: none;
  }
}


/* ===== 90-integracja ===== */

/* ==========================================================================
   90 - WARSTWA INTEGRACYJNA
   taniroaming.pl / system MERIDIAN
   Reguly potrzebne dopiero po zlozeniu strony w calosc (elementy, ktorych
   nie ma w zadnej pojedynczej sekcji). Zero surowych hexow, same tokeny.
   ========================================================================== */

/* --- Komunikat dla przegladarek z wylaczonym JavaScriptem ---
   <noscript> nie renderuje sie wcale, gdy JS dziala, wiec ten blok
   nie ma zadnego wplywu na normalny widok strony. --- */
.noscript-note {
  position: relative;
  z-index: var(--z-raised);
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  margin-block: var(--space-5) 0;
  padding: clamp(16px, 2.4vw, 22px) clamp(20px, 5vw, 40px);
  border: 1px solid var(--border-accent);
  border-radius: var(--radius-md);
  background: var(--accent-soft);
  color: var(--text-secondary);
  font-family: var(--font-text);
  font-size: var(--fs-small-plus);
  line-height: var(--lh-base);
}

.noscript-note p {
  margin: 0;
  max-width: var(--measure);
}

/* --- Nawigacja bez JavaScriptu -------------------------------------------
   Panel .nav__menu startuje z visibility:hidden i odslania go dopiero klasa
   .is-open dodawana ze skryptu. Bez JS burger bylby martwym przyciskiem,
   a <noscript> obiecuje dzialajaca nawigacje. --- */
.no-js .nav__burger { display: none; }

/* Bez JS pasek zawija sie na kilka wierszy (do ~250px na 320px szerokosci),
   wiec nie moze zostac przyklejony do gory — zjadlby trzecia czesc ekranu. */
.no-js .site-header { position: static; }

.no-js .nav__menu {
  position: static;
  z-index: auto;
  flex: 1 1 auto;
  min-width: 0;
  visibility: visible;
  opacity: 1;
  transform: none;
  max-height: none;
  overflow: visible;
  padding: 0;
  background: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  transition: none;
}

.no-js .nav__menu .nav__list {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1);
}

.no-js .nav__menu .nav__link {
  min-height: 44px;
  border-radius: var(--radius-pill);
  font-size: var(--fs-small-plus);
}

.no-js .nav__menu-foot { display: none; }

.no-js .nav__inner {
  flex-wrap: wrap;
  row-gap: var(--space-2);
}

/* --- Cele dotykowe: samodzielne linki-strzalki i logo stopki -------------
   .link-arrow ma display:inline-flex, wiec min-height dziala od razu;
   align-items trzeba nadpisac, bo bazowo jest baseline.
   Linkow w zdaniu (.sol__lead-link, .foot__publisher-link) nie ruszamy —
   powiekszanie ich rozjezdza interlinie (wyjatek inline z WCAG 2.5.8). --- */
.ways__link,
.calc__more-link,
.foot__logo {
  min-height: 44px;
  align-items: center;
}
