/* ============================================================
   liber.technology — fonty hostowane lokalnie

   Dlaczego lokalnie:
   • brak zapytań do fonts.googleapis.com i fonts.gstatic.com, więc IP
     odwiedzającego nie trafia do Google (argument RODO),
   • z krytycznej ścieżki renderowania znikają dwa obce połączenia
     (DNS + TCP + TLS × 2) — w praktyce ok. 100–200 ms.

   Podzbiory: latin i latin-ext. Polskie znaki (ą ć ę ł ń ś ź ż) siedzą
   w latin-ext, więc oba są potrzebne; przeglądarka pobierze tylko te,
   których faktycznie użyje (unicode-range).

   Space Grotesk i IBM Plex Sans (odmiana prosta) to fonty zmienne —
   jeden plik obsługuje wszystkie wagi, stąd „-var-” w nazwie i kilka
   reguł @font-face wskazujących na ten sam plik. Tak samo robi CSS
   generowany przez Google Fonts.

   Licencja krojów: SIL Open Font License 1.1.
   ============================================================ */

@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/ibm-plex-mono-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/ibm-plex-mono-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/ibm-plex-mono-500-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/ibm-plex-mono-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:italic;
  font-weight:400;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-400-italic-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:italic;
  font-weight:400;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-400-italic-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-var-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-var-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-var-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-var-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-var-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'IBM Plex Sans';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('fonts/ibm-plex-sans-var-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('fonts/space-grotesk-var-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ============================================================
   LIBER.TECHNOLOGY — system projektowy
   Typografia: Space Grotesk (nagłówki) / IBM Plex Sans (tekst)
               IBM Plex Mono (etykiety techniczne)
   Kolorystyka: głęboka zieleń-czerń + zieleń „reguł” + bursztyn „AI”
   ============================================================ */
:root{
  --bg:#0C120F;
  --bg2:#101815;
  --panel:#121B17;
  --panel2:#0E1613;
  --ink:#E9EFEA;
  --mut:#8FA398;
  --line:rgba(233,239,234,.11);
  --acc:#3BE08C;            /* reguła / OK */
  --acc-dim:rgba(59,224,140,.13);
  --amb:#FFB454;            /* krok AI */
  --amb-dim:rgba(255,180,84,.13);
  --bad:#FF6D5E;            /* ✕ / problem */
  --disp:'Space Grotesk',system-ui,sans-serif;
  --body:'IBM Plex Sans',system-ui,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,monospace;
  --rad:12px;
  --ease:cubic-bezier(.2,.7,.2,1);
}

*{margin:0;padding:0;box-sizing:border-box}
/* overflow-x tylko na <html> — ustawiony też na <body> zamienia body
   w kontener przewijania i zabija position:sticky w środku strony */
html{scroll-behavior:smooth;overflow-x:hidden}
body{max-width:100%}
body{
  background:var(--bg);
  color:var(--ink);
  font:400 1.0625rem/1.65 var(--body);
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--acc);color:#07130C}

/* --- tło warstwowe: siatka + poświaty + ziarno --------------- */
body::before{
  content:'';position:fixed;inset:0;z-index:-3;pointer-events:none;
  background-image:
    linear-gradient(rgba(233,239,234,.032) 1px,transparent 1px),
    linear-gradient(90deg,rgba(233,239,234,.032) 1px,transparent 1px);
  background-size:46px 46px;
  mask-image:radial-gradient(ellipse 90% 70% at 50% 20%,#000 30%,transparent 100%);
}
body::after{
  content:'';position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.045;
  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='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}
.glow{position:fixed;z-index:-2;border-radius:50%;filter:blur(90px);pointer-events:none}
.glow--g{width:56vw;height:56vw;left:-18vw;top:-22vw;background:radial-gradient(circle,rgba(59,224,140,.10),transparent 65%);animation:drift 26s ease-in-out infinite alternate}
.glow--a{width:44vw;height:44vw;right:-16vw;bottom:-18vw;background:radial-gradient(circle,rgba(255,180,84,.07),transparent 65%);animation:drift 32s ease-in-out infinite alternate-reverse}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(6vw,4vw)}}

img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul,ol{list-style:none}
strong{font-weight:600;color:var(--ink)}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px;border-radius:4px}

.container{max-width:1180px;margin-inline:auto;padding-inline:clamp(20px,5vw,48px)}
section{scroll-margin-top:96px}

.skip{position:absolute;left:-999px;top:12px;z-index:200;background:var(--acc);color:#07130C;padding:.6em 1em;border-radius:8px;font:600 .9rem var(--body)}
.skip:focus{left:12px}

/* --- pasek postępu ------------------------------------------- */
#prog{position:fixed;top:0;left:0;height:2px;width:100%;z-index:120;transform-origin:0 0;transform:scaleX(0);
  background:linear-gradient(90deg,var(--acc),#7CF0B8 55%,var(--amb));box-shadow:0 0 12px rgba(59,224,140,.55)}

/* --- nawigacja ------------------------------------------------ */
.nav{position:fixed;inset:0 0 auto 0;z-index:100;border-bottom:1px solid transparent;
  transition:background .35s,border-color .35s,backdrop-filter .35s,transform .45s var(--ease)}
.nav.scrolled{background:rgba(12,18,15,.85);backdrop-filter:blur(12px);border-color:var(--line)}
.nav.away{transform:translateY(-104%)}
body.menu .nav{transform:none}
.nav__in{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:16px clamp(20px,4vw,40px);max-width:1320px;margin-inline:auto}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none}
/* Znak: pętla (bez końca powtarzalna robota) + strzałka, która się z niej wyrywa.
   Rysuje się raz, przy wejściu na stronę; na hoverze strzałka „strzela” dalej.  */
.mark{height:34px;width:auto;flex:none;overflow:visible}
.mark path{fill:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round}
.mark__loop{stroke:var(--ink)}
.mark__arm,.mark__tip{stroke:var(--acc)}
.mark__arrow{transform-box:fill-box;transform-origin:center;transition:transform .45s cubic-bezier(.34,1.4,.5,1)}
.brand:hover .mark__arrow{transform:translate(6%,-9%)}
.js .mark path{stroke-dasharray:100;stroke-dashoffset:100;animation:markDraw .95s var(--ease) forwards}
.js .mark__arm{animation-duration:.42s;animation-delay:.72s}
.js .mark__tip{animation-duration:.3s;animation-delay:.98s}
@keyframes markDraw{to{stroke-dashoffset:0}}
.brand__wm{font:700 1.02rem/1 var(--disp);letter-spacing:.005em;color:var(--ink);white-space:nowrap;transition:color .3s}
.brand__wm b{font-weight:400;color:var(--acc)}
.brand--foot .mark{height:42px}
.brand--foot .brand__wm{font-size:1.16rem}
.brand__dot{width:8px;height:8px;border-radius:50%;background:var(--acc);box-shadow:0 0 12px var(--acc);animation:beat 2.6s ease-in-out infinite}
@keyframes beat{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(.65);opacity:.55}}
.nav__links{display:flex;gap:clamp(14px,2.4vw,32px)}
.nav__link{font:500 .82rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:var(--mut);position:relative;padding:8px 2px;transition:color .3s}
.nav__link::after{content:'';position:absolute;left:0;bottom:2px;height:1px;width:100%;background:var(--acc);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease)}
.nav__link:hover,.nav__link.active{color:var(--ink)}
.nav__link:hover::after,.nav__link.active::after{transform:scaleX(1);transform-origin:left}
.nav__cta{font:600 .8rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;text-decoration:none;color:#07130C;background:var(--acc);padding:11px 18px;border-radius:8px;transition:transform .3s,box-shadow .3s}
.nav__cta:hover{transform:translateY(-2px);box-shadow:0 10px 26px -8px rgba(59,224,140,.5)}
.burger{display:none;flex-direction:column;gap:5px;padding:10px;z-index:130}
.burger span{width:24px;height:2px;background:var(--ink);transition:.35s var(--ease)}
body.menu .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.menu .burger span:nth-child(2){opacity:0}
body.menu .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
/* Na podstronach menu ma kilkanaście pozycji (osiem automatyzacji + reszta),
   więc musi się przewijać — inaczej na niskim ekranie ostatnie linki byłyby
   nieosiągalne. justify-content:center zostaje: gdy pozycji jest mało,
   menu nadal wygląda jak wyśrodkowane. */
.mmenu{position:fixed;inset:0;z-index:110;background:rgba(12,18,15,.97);display:flex;flex-direction:column;justify-content:center;padding:80px clamp(24px,8vw,64px) 32px;gap:6px;opacity:0;pointer-events:none;transition:opacity .4s;overflow-y:auto;overscroll-behavior:contain}
body.menu .mmenu{opacity:1;pointer-events:auto}
.mmenu a{font:700 clamp(1.7rem,7vw,2.6rem)/1.25 var(--disp);text-decoration:none;color:var(--ink);padding:8px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:baseline;transform:translateY(24px);opacity:0;transition:.5s var(--ease)}
.mmenu a i{font:400 .8rem var(--mono);color:var(--acc);font-style:normal}
body.menu .mmenu a{transform:none;opacity:1}
body.menu .mmenu a:nth-child(1){transition-delay:.05s}body.menu .mmenu a:nth-child(2){transition-delay:.09s}
body.menu .mmenu a:nth-child(3){transition-delay:.13s}body.menu .mmenu a:nth-child(4){transition-delay:.17s}
body.menu .mmenu a:nth-child(5){transition-delay:.21s}body.menu .mmenu a:nth-child(6){transition-delay:.25s}
body.menu .mmenu a:nth-child(7){transition-delay:.29s}body.menu .mmenu a:nth-child(8){transition-delay:.33s}
body.menu .mmenu a:nth-child(9){transition-delay:.37s}body.menu .mmenu a:nth-child(10){transition-delay:.41s}
body.menu .mmenu a:nth-child(n+11){transition-delay:.45s}
/* na podstronach pozycji jest więcej, więc muszą być drobniejsze */
.mmenu--sub a{font-size:clamp(1.15rem,4.6vw,1.6rem);padding:6px 0}
.mmenu a:hover{color:var(--acc)}

/* --- przyciski ------------------------------------------------- */
.btn{display:inline-flex;align-items:center;gap:.7em;font:600 1rem/1.35 var(--body);text-decoration:none;padding:1em 1.5em;border-radius:10px;border:1px solid transparent;position:relative;overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s,border-color .3s,color .3s,background .3s}
.btn .arr{transition:transform .3s var(--ease);flex:none}
.btn:hover .arr{transform:translateX(5px)}
.btn--solid{background:var(--acc);color:#07130C}
.btn--solid::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.4) 50%,transparent 60%);transform:translateX(-130%)}
.btn--solid:hover{transform:translateY(-2px);box-shadow:0 14px 34px -10px rgba(59,224,140,.5)}
.btn--solid:hover::after{transform:translateX(130%);transition:transform .7s ease}
.btn--ghost{border-color:var(--line);color:var(--ink)}
.btn--ghost:hover{border-color:var(--acc);color:var(--acc);transform:translateY(-2px)}
.btn--big{font-size:1.02rem;max-width:560px}

/* --- system reveal --------------------------------------------- */
.js [data-reveal]{opacity:0;transform:translateY(26px);filter:blur(6px);transition:opacity .85s var(--ease),transform .85s var(--ease),filter .7s var(--ease);transition-delay:var(--d,0s)}
.js [data-reveal="left"]{transform:translateX(-34px)}
.js [data-reveal="right"]{transform:translateX(34px)}
.js [data-reveal="pop"]{transform:scale(.94)}
/* --rest: stan spoczynkowy po ujawnieniu. Dzięki temu element może mieć
   własną transformację (np. przechył panelu za kursorem) i nadal korzystać
   z tego samego systemu wejścia. */
.js [data-reveal].in{opacity:1;transform:var(--rest,none);filter:none}
/* nagłówki sekcji same się nie przesuwają — ruch bierze na siebie tekst słowo po słowie */
.js .shead[data-reveal]{transform:none;filter:none}
/* duże, „żywe” panele nie rozmywamy — rozmycie takiej powierzchni potrafi ściąć klatki */
.js :is(.race,.sim,.term,.flow,.tl,.komp,.pipebox)[data-reveal]{filter:none}

/* --- tekst odsłaniany słowo po słowie ---------------------------- */
.js .w{display:inline-block;opacity:0;transform:translateY(.34em);filter:blur(7px);
  transition:opacity .72s var(--ease) var(--wd,0s),transform .72s var(--ease) var(--wd,0s),filter .6s var(--ease) var(--wd,0s)}
.js [data-reveal].in .w,.js .splt.in .w{opacity:1;transform:none;filter:none}
/* jeśli sam nagłówek jest elementem reveal, ruch robią wyłącznie słowa */
.js [data-reveal].splt{opacity:1;transform:none;filter:none}

/* --- nagłówki sekcji ------------------------------------------- */
.shead{margin-bottom:clamp(36px,5vw,60px)}
.shead__meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;font:500 .78rem var(--mono);letter-spacing:.14em;text-transform:uppercase;margin-bottom:18px}
.shead__no{color:var(--acc);white-space:nowrap}
.shead__no b{color:var(--mut);font-weight:400}
.shead__tag{color:var(--mut)}
.shead__meta::after{content:'';height:1px;flex:0 0 64px;background:var(--line)}
h2{font:700 clamp(1.85rem,3.6vw,2.85rem)/1.14 var(--disp);letter-spacing:-.015em;max-width:20ch}
.lead{color:var(--mut);max-width:56ch;margin-top:16px;font-size:1.08rem}

/* ============================ HERO ============================ */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:104px;overflow:hidden}
/* siatka jest najmocniejsza po prawej — tam, gdzie stoi panel procesu —
   i gaśnie po lewej, żeby nie walczyć o uwagę z nagłówkiem */
#net{position:absolute;inset:0;width:100%;height:100%;z-index:0;will-change:transform;
  -webkit-mask-image:radial-gradient(ellipse 88% 96% at 76% 42%,#000 6%,rgba(0,0,0,.42) 52%,transparent 86%);
  mask-image:radial-gradient(ellipse 88% 96% at 76% 42%,#000 6%,rgba(0,0,0,.42) 52%,transparent 86%)}
@media (max-width:960px){
  #net{-webkit-mask-image:radial-gradient(ellipse 110% 60% at 50% 78%,#000 6%,transparent 88%);
       mask-image:radial-gradient(ellipse 110% 60% at 50% 78%,#000 6%,transparent 88%)}
}
.hero .container{position:relative;z-index:1}
.hero__grid{display:grid;grid-template-columns:1.06fr .94fr;gap:clamp(30px,4.6vw,60px);align-items:center;padding-block:4px 16px}
/* --out (0→1) ustawia JS przy przewijaniu: hero odjeżdża głębiej niż tło,
   dzięki czemu przejście do sekcji „poznajesz to?” ma warstwy */
.js .hero__grid{transform:translate3d(0,calc(var(--out,0) * -46px),0);opacity:calc(1 - var(--out,0) * .78)}
.js .hero__scroll{opacity:calc(1 - var(--out,0) * 2.4)}
.kicker{font:500 .82rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--acc);margin-bottom:20px;display:flex;align-items:center;gap:10px}
.kicker::before{content:'';flex:none;width:34px;height:1px;background:var(--acc);transform-origin:left;animation:kickLine 3.4s var(--ease) infinite}
@keyframes kickLine{0%,72%,100%{transform:scaleX(1);opacity:.55}82%{transform:scaleX(1);opacity:1}}
.hero__title{font:700 clamp(2.05rem,4.1vw,3.4rem)/1.08 var(--disp);letter-spacing:-.027em;margin-bottom:22px;text-wrap:balance}
/* podkreślenie markerem — rysuje się dopiero, gdy nagłówek wjedzie.
   box-decoration-break:clone → pasek powtarza się na KAŻDEJ linii, a nie raz
   przez środek całego, wielowierszowego pudełka inline. */
.hl{
  position:relative;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;
  background-image:linear-gradient(102deg,rgba(59,224,140,.5),rgba(59,224,140,.22));
  background-repeat:no-repeat;background-position:0 100%;background-size:0 .42em;
  transition:background-size 1.05s var(--ease) .95s;
}
.in .hl{background-size:100% .42em}
.hero__sub{color:var(--mut);max-width:54ch;display:grid;gap:12px;margin-bottom:28px}
.hero__sub strong{color:var(--ink)}
.hero__ctas{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-bottom:26px}
.hero__chips{display:flex;flex-wrap:wrap;gap:9px 18px;font:400 .74rem var(--mono);letter-spacing:.04em;color:var(--mut)}
.hero__chips span{display:flex;align-items:center;gap:8px;transition:color .3s}
.hero__chips i{width:6px;height:6px;border-radius:50%;background:var(--acc);flex:none;box-shadow:0 0 0 0 var(--acc-dim);transition:box-shadow .4s}
/* kropki zapalają się po kolei, jakby proces odhaczał obietnice */
.js .hero__chips.in i{animation:chipOn .9s var(--ease) both;animation-delay:calc(.5s + var(--i,0) * .13s)}
@keyframes chipOn{0%{transform:scale(.2);box-shadow:0 0 0 0 rgba(59,224,140,.5)}55%{transform:scale(1.35)}100%{transform:scale(1);box-shadow:0 0 0 5px rgba(59,224,140,0)}}
.hero__chips span:hover{color:var(--ink)}
.hero__chips span:hover i{box-shadow:0 0 0 4px var(--acc-dim)}

/* panel pipeline */
.pipebox{background:linear-gradient(160deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:var(--rad);padding:22px 24px 20px;box-shadow:0 30px 80px -30px rgba(0,0,0,.7);position:relative}
/* panel lekko odchyla się za kursorem — klasę dokłada JS dopiero przy
   pierwszym najechaniu, żeby nie mieszać się z animacją wejścia */
.pipebox.tilt{--rest:perspective(1300px) rotateX(var(--ty,0deg)) rotateY(var(--tx,0deg));
  transition:transform .5s var(--ease),box-shadow .5s}
.pipebox.tilt:hover{transition-duration:.12s;box-shadow:0 40px 90px -34px rgba(0,0,0,.85),0 0 60px -30px rgba(59,224,140,.5)}
.pipebox::before{content:'';position:absolute;inset:0;border-radius:var(--rad);pointer-events:none;background:radial-gradient(400px 200px at 80% 0%,rgba(59,224,140,.07),transparent)}
.pipebox__bar{display:flex;align-items:center;gap:10px;font:400 .74rem var(--mono);color:var(--mut);letter-spacing:.05em;padding-bottom:16px;border-bottom:1px dashed var(--line);margin-bottom:34px}
.pipebox__bar .live{width:7px;height:7px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px var(--acc);animation:beat 1.8s infinite}
.pipebox__bar b{color:var(--ink);font-weight:500}
@keyframes spin{to{transform:rotate(360deg)}}

/* --- silnik: scena SVG ------------------------------------------ */
.engine__st{margin-left:auto;white-space:nowrap}
.engine__st b{color:var(--acc)}
/* „szczyt” zapala się, gdy do procesu wpada kilka spraw naraz */
.engine__peak{color:var(--amb);border:1px solid rgba(255,180,84,.4);border-radius:20px;padding:1px 9px;font-size:.68rem;
  opacity:0;transform:translateY(-4px) scale(.9);transition:.4s var(--ease)}
.engine__peak.on{opacity:1;transform:none;box-shadow:0 0 18px -4px rgba(255,180,84,.6)}
/* rozbłysk całego panelu w chwili, gdy sprawa ląduje w CRM */
.engine__flash{position:absolute;inset:0;border-radius:var(--rad);pointer-events:none;opacity:0;transition:opacity .5s var(--ease);
  box-shadow:inset 0 0 46px -8px rgba(59,224,140,.4),0 0 42px -14px rgba(59,224,140,.55)}
.engine__flash.on{opacity:1;transition-duration:.12s}
.engine__flash.is-ai{box-shadow:inset 0 0 46px -8px rgba(255,180,84,.36),0 0 42px -14px rgba(255,180,84,.5)}

.engine__stage{position:relative;margin:2px -6px 0}
.engine__svg{display:block;width:100%;height:auto;overflow:visible}

/* tory */
.erail{fill:none;stroke:rgba(233,239,234,.13);stroke-width:1.6;stroke-linecap:round}
.erail--sh{stroke:rgba(59,224,140,.55);animation:railShine 6.5s linear infinite;animation-delay:var(--sd,0s);
  stroke-dasharray:7 100;stroke-dashoffset:7}
.erail--ai{stroke:rgba(255,180,84,.5)}
@keyframes railShine{to{stroke-dashoffset:-100}}

/* węzły */
.enode__mark{fill:var(--acc);transform-box:fill-box;transform-origin:center;transition:transform .45s var(--ease)}
.enode.on .enode__mark{transform:scale(1.55);transition-duration:.14s}
.enode--ai .enode__mark{fill:var(--amb);transform:rotate(45deg)}
.enode--ai.on .enode__mark{transform:rotate(45deg) scale(1.45)}
.enode--ai.think .enode__mark{transform:rotate(45deg) scale(1.3);animation:aiBeat .42s ease-in-out infinite alternate}
@keyframes aiBeat{to{transform:rotate(45deg) scale(1.62)}}
.enode__orbit{fill:none;stroke:var(--amb);stroke-width:1;stroke-dasharray:3 6;opacity:.45;
  transform-box:fill-box;transform-origin:center;animation:spin 12s linear infinite;transition:opacity .3s}
.enode--ai.think .enode__orbit{opacity:1;animation-duration:1.1s}
.enode__ring{fill:none;stroke:var(--acc);stroke-width:1;opacity:.28;stroke-dasharray:2 5;
  transform-box:fill-box;transform-origin:center;animation:spin 26s linear infinite reverse}

/* fala uderzeniowa w węźle */
.eburst{fill:none;stroke:var(--acc);stroke-width:1.5;transform-box:fill-box;transform-origin:center;animation:eburst .9s var(--ease) forwards}
.eburst.is-ai{stroke:var(--amb)}
@keyframes eburst{from{transform:scale(.3);opacity:.85}to{transform:scale(3.6);opacity:0}}

/* pakiety: kometa z ogonem prowadzonym po torze */
.epk{--c:59,224,140;opacity:1;transition:opacity .3s}
.epk.is-ai{--c:255,180,84}
.epk.off{opacity:0}
.epk__tail{fill:none;stroke:rgba(var(--c),.16);stroke-width:5;stroke-linecap:round}
.epk__head{fill:none;stroke:rgba(var(--c),.85);stroke-width:2.2;stroke-linecap:round}
.epk__glow{fill:rgba(var(--c),.15)}
.epk__dot{fill:rgb(var(--c))}

/* podpisy nad sceną — pozycjonowane w % tego samego układu co viewBox */
.engine__labels{position:absolute;inset:0;pointer-events:none}
.elab{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);white-space:nowrap;
  font:500 .62rem var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--mut)}
.elab--ai{color:var(--amb);letter-spacing:.06em}
.elab--ai b{font-weight:500;transition:color .25s}
.elab--ai b.lock{color:#fff;text-shadow:0 0 14px rgba(255,180,84,.8)}
.elab--out{color:var(--acc)}
.elab--lane{font-size:.56rem;letter-spacing:.06em;text-transform:none;color:rgba(143,163,152,.72)}
.elab--laneai{color:rgba(255,180,84,.6)}

/* --- silnik: podział reguły / AI --------------------------------- */
.split{display:flex;align-items:center;gap:12px;margin-top:14px;font:400 .68rem var(--mono);letter-spacing:.04em;color:var(--mut)}
.split__k{white-space:nowrap;display:flex;align-items:center;gap:6px}
.split__k b{font-weight:500;color:var(--acc)}
.split__k.k-ai b{color:var(--amb)}
.split__k::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--acc)}
.split__k.k-ai::before{background:var(--amb);border-radius:2px;transform:rotate(45deg)}
.split__bar{position:relative;flex:1;height:5px;border-radius:3px;background:rgba(255,180,84,.4);overflow:hidden}
.split__bar i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:linear-gradient(90deg,var(--acc),#7CF0B8);
  box-shadow:0 0 12px rgba(59,224,140,.55);transition:width .9s var(--ease)}

.pipebox__foot{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:20px;padding-top:16px;border-top:1px dashed var(--line);font:400 .74rem var(--mono);color:var(--mut)}
.pipebox__foot .cnt b{color:var(--acc);font-weight:500;display:inline-block}
.pipebox__foot .cnt b.pop{animation:pop .5s var(--ease)}
@keyframes pop{40%{transform:scale(1.35);color:#fff}}
.hero__scroll{display:inline-flex;align-items:center;gap:12px;font:400 .72rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);padding:6px 0 10px;text-decoration:none;width:max-content;transition:color .3s,gap .35s var(--ease)}
.hero__scroll:hover{color:var(--acc);gap:16px}
.hero__scroll i{width:1px;height:30px;background:var(--line);position:relative;overflow:hidden;display:block}
.hero__scroll i::after{content:'';position:absolute;left:0;top:-40%;width:100%;height:40%;background:var(--acc);animation:fall 2s ease-in-out infinite}
.hero__scroll:hover i::after{animation-duration:1.05s}
@keyframes fall{to{top:110%}}

/* --- marquee: dwa pasy w przeciwnych kierunkach ------------------ */
.marquee{border-block:1px solid var(--line);background:var(--bg2);overflow:hidden;transform:rotate(-1.1deg) scale(1.02);position:relative;z-index:2;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee--pain{border-bottom:0}
.marquee--gain{background:linear-gradient(90deg,rgba(59,224,140,.05),rgba(59,224,140,.02))}
.marquee__in{display:flex;width:max-content;animation:mq 34s linear infinite}
.marquee--gain .marquee__in{animation-duration:40s;animation-direction:reverse}
.marquee:hover .marquee__in{animation-play-state:paused}
.marquee__grp{display:flex;align-items:center;gap:0;padding:15px 0}
.mq-item{font:500 .8rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut);white-space:nowrap;padding:0 26px;display:flex;align-items:center;gap:26px;transition:color .3s}
.mq-item::after{content:'✕';color:var(--bad);font-weight:600}
.marquee--gain .mq-item::after{content:'✓';color:var(--acc)}
.marquee--gain .mq-item{color:rgba(233,239,234,.62)}
.marquee:hover .mq-item{color:var(--ink)}
@keyframes mq{to{transform:translateX(-50%)}}

/* --- tło sekcji „poznajesz to?”: splątany kłębek ------------------ */
.sec--pain{position:relative;isolation:isolate}
.sec--pain::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.34;
  background:url('assets/pain-tangle.jpg') center/cover no-repeat;
  background-image:image-set(url('assets/pain-tangle.webp') type('image/webp'),url('assets/pain-tangle.jpg') type('image/jpeg'));
  mask-image:radial-gradient(ellipse 58% 55% at 84% 42%,#000,transparent 70%);
}

/* ============================ 02 BÓL ============================ */
.sec{padding-block:clamp(84px,10vw,140px)}
.pains{border-top:1px solid var(--line);margin-top:8px}
.pain{position:relative;display:grid;grid-template-columns:64px 1fr auto;gap:clamp(14px,3vw,32px);align-items:center;padding:26px 10px;border-bottom:1px solid var(--line);transition:background .35s,transform .35s var(--ease)}
/* pasek światła wjeżdżający od lewej — sygnał „to da się usunąć” */
.pain::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--bad);transform:scaleY(0);transform-origin:center;transition:transform .4s var(--ease)}
.pain:hover::before{transform:scaleY(1)}
.pain:hover{background:rgba(255,109,94,.045);transform:translateX(8px)}
.pain__no{font:500 .85rem var(--mono);color:var(--mut);transition:color .3s}
.pain:hover .pain__no{color:var(--amb)}
.pain p{position:relative;color:var(--ink);max-width:62ch}
/* skreślenie: ręczna robota, którą się wykreśla */
.pain p::after{content:'';position:absolute;left:0;top:50%;width:100%;height:1px;background:var(--bad);opacity:.8;transform:scaleX(0);transform-origin:left;transition:transform .55s var(--ease)}
.pain:hover p::after{transform:scaleX(1)}
/* Przy wjeździe każda pozycja zostaje wykreślona i odkreślona — kreska
   przejeżdża w prawo i chowa się z tej samej strony. Bez fill-mode, więc
   po animacji wraca stan bazowy i hover znów działa. Na telefonie (brak
   hovera) to jedyny moment, w którym widać pointę tej sekcji. */
.js .pain.in p::after{animation:strikeSweep 1.6s var(--ease);animation-delay:calc(var(--d,0s) + .3s)}
@keyframes strikeSweep{
  0%{transform:scaleX(0);transform-origin:left}
  34%,50%{transform:scaleX(1);transform-origin:left}
  51%{transform:scaleX(1);transform-origin:right}
  100%{transform:scaleX(0);transform-origin:right}
}
.js .pain.in::before{animation:painBar 1.6s var(--ease);animation-delay:calc(var(--d,0s) + .3s)}
@keyframes painBar{0%{transform:scaleY(0)}18%,64%{transform:scaleY(1)}100%{transform:scaleY(0)}}
.pain__x{font:600 .95rem var(--mono);color:var(--bad);border:1px solid rgba(255,109,94,.5);padding:4px 10px;border-radius:4px;transform:rotate(-6deg) scale(1);transition:transform .45s cubic-bezier(.34,1.56,.64,1)}
.js .pain__x{transform:rotate(10deg) scale(1.8);opacity:0;transition:transform .5s cubic-bezier(.34,1.56,.64,1) calc(var(--d,0s) + .35s),opacity .3s calc(var(--d,0s) + .35s)}
.js .pain.in .pain__x{transform:rotate(-6deg) scale(1);opacity:1}
.payoff{display:grid;grid-template-columns:1fr auto;gap:clamp(24px,4vw,56px);align-items:center;margin-top:clamp(40px,6vw,72px);background:linear-gradient(140deg,var(--panel),var(--panel2));border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:var(--rad);padding:clamp(26px,4vw,44px)}
.payoff p{color:var(--mut);max-width:48ch}
.payoff p strong{color:var(--ink)}
.payoff__stat{text-align:right}
.payoff__num{font:700 clamp(3.4rem,7vw,5.4rem)/1 var(--disp);color:var(--acc);letter-spacing:-.03em;display:block;font-variant-numeric:tabular-nums}
.payoff__unit{font:500 .78rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mut)}

/* ============================ 03 DLA KOGO ======================= */
/* tło: jedna wiązka spraw rozdziela się na tor, który prowadzi dalej,
   i na ten, który wygasa — dokładnie to, o czym mówi ta sekcja */
.sec--fit{position:relative;isolation:isolate}
.sec--fit::before{
  content:'';position:absolute;inset:6% -4% 0 -4%;z-index:-1;pointer-events:none;opacity:.26;
  background:url('assets/fork-split.jpg') center/cover no-repeat;
  background-image:image-set(url('assets/fork-split.webp') type('image/webp'),url('assets/fork-split.jpg') type('image/jpeg'));
  -webkit-mask-image:radial-gradient(ellipse 66% 62% at 52% 56%,#000 8%,transparent 72%);
  mask-image:radial-gradient(ellipse 66% 62% at 52% 56%,#000 8%,transparent 72%);
}
@media (max-width:860px){.sec--fit::before{opacity:.16}}
.fit{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(20px,3vw,36px);align-items:start}
.fit__col{border:1px solid var(--line);border-radius:var(--rad);padding:clamp(24px,3.4vw,38px);transition:transform .4s var(--ease),border-color .4s,box-shadow .4s}
.fit__col--yes{background:var(--panel);border-top:3px solid var(--acc)}
.fit__col--yes:hover{transform:translateY(-6px);box-shadow:0 24px 60px -24px rgba(59,224,140,.25)}
.fit__col--no{border-style:dashed;background:transparent;opacity:.92}
.fit__col--no:hover{transform:translateY(-6px);border-color:rgba(255,109,94,.45)}
.fit__head{font:600 1.15rem var(--disp);margin-bottom:22px;display:flex;align-items:center;gap:12px}
.fit__head .tick{color:var(--acc);font:700 1rem var(--mono)}
.fit__head .cross{color:var(--bad);font:700 1rem var(--mono)}
.fit li{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);color:var(--mut);align-items:flex-start}
.fit li:last-child{border:0}
.fit li strong{color:var(--ink)}
.fit .ck{flex:none;width:20px;height:20px;margin-top:3px;color:var(--acc)}
.fit .ck path{stroke-dasharray:22;stroke-dashoffset:22;transition:stroke-dashoffset .6s ease var(--d,0s)}
.in .ck path{stroke-dashoffset:0}
.fit .xx{flex:none;color:var(--bad);font:600 1rem var(--mono);margin-top:2px}

/* ============================ 04 KORZYŚCI ======================= */
/* tło: plątanina wchodzi z lewej i wychodzi jako równoległe tory */
.sec--gain{position:relative;isolation:isolate}
.sec--gain::before{
  content:'';position:absolute;inset:auto 0 6% 0;height:78%;z-index:-1;pointer-events:none;opacity:.3;
  background:url('assets/gain-bundle.jpg') center/cover no-repeat;
  background-image:image-set(url('assets/gain-bundle.webp') type('image/webp'),url('assets/gain-bundle.jpg') type('image/jpeg'));
  -webkit-mask-image:radial-gradient(ellipse 78% 60% at 55% 62%,#000 12%,transparent 74%);
  mask-image:radial-gradient(ellipse 78% 60% at 55% 62%,#000 12%,transparent 74%);
}
.sec--data{position:relative;isolation:isolate}
.sec--data::before{
  content:'';position:absolute;inset:0 -6% 0 auto;width:min(56%,720px);z-index:-1;pointer-events:none;opacity:.22;
  background:url('assets/data-vault.jpg') center/contain no-repeat;
  background-image:image-set(url('assets/data-vault.webp') type('image/webp'),url('assets/data-vault.jpg') type('image/jpeg'));
  -webkit-mask-image:radial-gradient(ellipse 62% 62% at 50% 50%,#000 25%,transparent 76%);
  mask-image:radial-gradient(ellipse 62% 62% at 50% 50%,#000 25%,transparent 76%);
}
@media (max-width:960px){.sec--data::before{display:none}}
.bens{border-top:1px solid var(--line)}
.ben{display:grid;grid-template-columns:64px 1fr auto;gap:clamp(16px,3vw,36px);align-items:center;padding:30px 10px;border-bottom:1px solid var(--line);transition:background .35s,transform .35s var(--ease)}
.ben:hover{background:var(--acc-dim);transform:translateX(8px)}
.ben__ico{position:relative;width:56px;height:56px;border:1px solid var(--line);border-radius:12px;display:grid;place-items:center;color:var(--acc);transition:border-color .35s,background .35s,box-shadow .35s}
.ben__ico::before{content:'';position:absolute;inset:-6px;border:1px dashed rgba(59,224,140,.35);border-radius:16px;opacity:0;transition:opacity .35s}
/* ikony rysują się kreską przy wjeździe wiersza — kształt „powstaje”,
   zamiast po prostu pojawić się gotowy */
.js .ben__ico svg>*{stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .9s var(--ease)}
.js .ben.in .ben__ico svg>*{stroke-dashoffset:0}
.js .ben.in .ben__ico svg>:nth-child(2){transition-delay:.18s}
.js .ben.in .ben__ico svg>:nth-child(3){transition-delay:.34s}
.js .ben.in .ben__ico svg>:nth-child(4){transition-delay:.48s}
.ben:hover .ben__ico{border-color:var(--acc);background:rgba(59,224,140,.08);box-shadow:0 0 22px -6px rgba(59,224,140,.45)}
.ben:hover .ben__ico::before{opacity:1;animation:spin 9s linear infinite}
.ben h3{font:600 1.25rem var(--disp);margin-bottom:6px}
.ben p{color:var(--mut);max-width:58ch}
.ben__no{font:500 .85rem var(--mono);color:var(--mut)}
.mani{position:relative;margin-top:clamp(44px,6vw,72px);background:linear-gradient(140deg,rgba(255,180,84,.07),transparent 60%);border:1px solid var(--line);border-left:3px solid var(--amb);border-radius:var(--rad);padding:clamp(28px,4vw,46px)}
.mani__stamp{position:absolute;top:-14px;right:26px;font:600 .72rem var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--amb);border:1px solid var(--amb);padding:6px 12px;border-radius:4px;transform:rotate(3deg);background:var(--bg)}
.mani p{font-size:clamp(1.05rem,1.6vw,1.25rem);line-height:1.7;color:var(--mut);max-width:70ch}
.mani strong{color:var(--amb)}

/* ============================ 05 PRAKTYKA ======================= */
.flow{margin-top:10px}
.flow__rail{position:relative;height:2px;background:var(--line);margin:70px 8px 46px;border-radius:2px}
.flow__fill{position:absolute;left:0;top:0;height:100%;width:0;background:var(--acc);transition:width .8s var(--ease);box-shadow:0 0 12px rgba(59,224,140,.5)}
.flow__pkt{position:absolute;top:-6px;left:0;width:14px;height:14px;border-radius:50%;background:var(--acc);box-shadow:0 0 16px 4px rgba(59,224,140,.5);transform:translateX(-50%);transition:left .8s var(--ease),background .4s,box-shadow .4s}
.flow[data-step="1"] :is(.flow__fill){width:0}
.flow[data-step="2"] :is(.flow__fill){width:50%}
.flow[data-step="3"] :is(.flow__fill){width:100%}
.flow[data-step="1"] .flow__pkt{left:0}
.flow[data-step="2"] .flow__pkt{left:50%}
.flow[data-step="3"] .flow__pkt{left:100%}
.flow[data-step="2"] .flow__pkt{background:var(--amb);box-shadow:0 0 16px 4px rgba(255,180,84,.55)}
.flow__dot{position:absolute;top:50%;left:var(--x);width:16px;height:16px;border-radius:50%;background:var(--bg);border:2px solid var(--mut);transform:translate(-50%,-50%);transition:border-color .4s,box-shadow .4s}
.flow__dot--ai{border-radius:4px;transform:translate(-50%,-50%) rotate(45deg)}
/* uwaga: :nth-of-type liczy WSZYSTKIE <span> w szynie (fill, pkt, 3× dot),
   więc kropki to elementy 3, 4 i 5 — nie 1, 2, 3. */
.flow[data-step="1"] .flow__dot:nth-of-type(3),
.flow[data-step="2"] .flow__dot:nth-of-type(4),
.flow[data-step="3"] .flow__dot:nth-of-type(5){border-color:var(--acc);box-shadow:0 0 0 6px var(--acc-dim)}
.flow[data-step="2"] .flow__dot--ai{border-color:var(--amb);box-shadow:0 0 0 6px var(--amb-dim)}
.flow__steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2.4vw,26px)}
.fstep{text-align:left;border:1px solid var(--line);border-radius:var(--rad);background:var(--panel2);padding:clamp(20px,2.6vw,30px);transition:border-color .4s,transform .4s var(--ease),box-shadow .4s,opacity .4s;opacity:.55;position:relative}
.fstep:hover{opacity:.9}
.flow[data-step="1"] .fstep[data-n="1"],.flow[data-step="2"] .fstep[data-n="2"],.flow[data-step="3"] .fstep[data-n="3"]{opacity:1;transform:translateY(-6px)}
.flow[data-step="1"] .fstep[data-n="1"]{border-color:var(--acc);box-shadow:0 20px 50px -20px rgba(59,224,140,.3)}
.flow[data-step="3"] .fstep[data-n="3"]{border-color:var(--acc);box-shadow:0 20px 50px -20px rgba(59,224,140,.3)}
.flow[data-step="2"] .fstep[data-n="2"]{border-color:var(--amb);box-shadow:0 20px 50px -20px rgba(255,180,84,.3)}
.fstep__badge{display:inline-flex;align-items:center;gap:7px;font:600 .68rem var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:5px 11px;border-radius:4px;margin-bottom:16px}
.b-rule{color:var(--acc);border:1px solid rgba(59,224,140,.45);background:var(--acc-dim)}
.b-ai{color:var(--amb);border:1px solid rgba(255,180,84,.5);background:var(--amb-dim)}
.b-ai::before{content:'✦';animation:beat 1.6s infinite}
.fstep h3{font:600 1.2rem var(--disp);margin-bottom:8px}
.fstep p{color:var(--mut);font-size:.95rem}
.scan{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.scan span{font:400 .7rem var(--mono);color:var(--amb);border:1px dashed rgba(255,180,84,.4);padding:3px 9px;border-radius:4px;opacity:.3}
.flow[data-step="2"] .scan span{animation:scanblink 1.8s infinite}
.flow[data-step="2"] .scan span:nth-child(2){animation-delay:.3s}
.flow[data-step="2"] .scan span:nth-child(3){animation-delay:.6s}
@keyframes scanblink{0%,100%{opacity:.25}50%{opacity:1}}
.verdict{display:inline-block;margin-top:12px;font:500 .78rem var(--mono);color:var(--amb);opacity:0;transform:translateY(6px);transition:.45s var(--ease) .9s}
.flow[data-step="2"] .verdict{opacity:1;transform:none}
.flow__meta{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,36px);margin-top:clamp(30px,4vw,46px)}
.flow__effect{border-left:3px solid var(--acc);padding:6px 0 6px 20px;color:var(--mut)}
.flow__effect strong{color:var(--acc)}
.flow__fallback{border-left:3px dashed rgba(255,180,84,.6);padding:6px 0 6px 20px;color:var(--mut)}
.flow__fallback strong{color:var(--amb)}
.flow__hint{margin-top:22px;font:400 .74rem var(--mono);color:var(--mut);letter-spacing:.06em}

/* ============================ 06 PROCES (jasna) ================= */
.sec--light{--ink:#131B16;--mut:#4C5A51;--line:rgba(19,27,22,.15);--acc:#0C9B62;--acc-dim:rgba(12,155,98,.1);
  --amb:#A9711F;--amb-dim:rgba(169,113,31,.12);--panel:#E9EEE6;background:#F1F4ED;color:var(--ink);position:relative;isolation:isolate;
  /* clip, nie hidden — hidden zrobiłby z sekcji kontener przewijania
     i karta etapu przestałaby się przyklejać */
  overflow:clip}
/* fala przechodzi za krokiem 04, więc musi być ledwo obecna — przy .55 zjadała
   kontrast tekstu na tak jasnym tle. Zostaje jako subtelny ślad, nie ilustracja. */
.sec--light::before{
  content:'';position:absolute;inset:auto 0 -6% 0;height:70%;z-index:-1;pointer-events:none;opacity:.2;
  background:url('assets/light-weave.jpg') center bottom/cover no-repeat;
  background-image:image-set(url('assets/light-weave.webp') type('image/webp'),url('assets/light-weave.jpg') type('image/jpeg'));
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 75%);
  mask-image:linear-gradient(180deg,transparent,#000 75%);
}
/* krawędzie sekcji: cienka linia akcentu zamiast twardego cięcia */
.sec--light::after{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    linear-gradient(90deg,transparent,rgba(12,155,98,.55),transparent) top/100% 1px no-repeat,
    linear-gradient(90deg,transparent,rgba(12,155,98,.55),transparent) bottom/100% 1px no-repeat}
.sec--light .shead__no{color:var(--acc)}
.sec--light h2{color:var(--ink)}
.proc{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,400px);gap:clamp(26px,4vw,62px);align-items:start}
.tl{position:relative;padding-left:clamp(28px,5vw,64px);max-width:820px}
.tl__line{position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:rgba(12,155,98,.22);transform-origin:top;transition:transform 1.4s var(--ease) .2s}
/* druga, jasna kreska dopisuje się dokładnie tak daleko, jak daleko
   przewinąłeś oś — widać, na którym etapie jesteś */
.tl__fill{position:absolute;left:8px;top:8px;width:2px;height:calc(var(--tlp,0) * 100%);max-height:calc(100% - 16px);
  background:linear-gradient(180deg,var(--acc),#2ECB8B);border-radius:2px;transition:height .5s var(--ease);
  box-shadow:0 0 14px rgba(12,155,98,.5)}
.js .tl__line{transform:scaleY(0)}
.js .tl.in .tl__line{transform:scaleY(1)}
.tl__item{position:relative;padding:0 0 clamp(38px,5vw,58px)}
.tl__item:last-child{padding-bottom:0}
.tl__item::before{content:'';position:absolute;left:calc(-1*clamp(28px,5vw,64px) + 3px);top:14px;width:12px;height:12px;border-radius:50%;background:#F1F4ED;border:2px solid var(--acc)}
.tl__num{font:700 clamp(2.6rem,5vw,3.6rem)/1 var(--disp);color:transparent;-webkit-text-stroke:1.4px var(--acc);display:block;margin-bottom:10px;letter-spacing:-.02em}
.tl__item h3{font:600 1.35rem var(--disp);margin-bottom:10px;color:var(--ink)}
.tl__item p{color:var(--mut);max-width:56ch}
.tl__item p strong{color:var(--ink)}
.tl__note{margin-top:clamp(36px,5vw,54px);border:1px dashed var(--line);border-radius:var(--rad);padding:22px 26px;color:var(--mut);max-width:820px;background:rgba(255,255,255,.5)}
.tl__note strong{color:var(--ink)}

/* --- karta etapu: co konkretnie dostajesz na danym kroku ---------- */
.pcard{position:sticky;top:110px;background:#fff;border:1px solid rgba(19,27,22,.12);border-radius:14px;
  box-shadow:0 28px 64px -36px rgba(10,58,38,.5);overflow:hidden;isolation:isolate}
.pcard__bar{display:flex;align-items:center;gap:7px;padding:11px 15px;border-bottom:1px solid rgba(19,27,22,.09);background:#F3F7F0}
.pdot{width:9px;height:9px;border-radius:50%;background:rgba(19,27,22,.15)}
.pcard__bar .pdot:nth-child(3){background:var(--acc);opacity:.7}
.pcard__file{margin-left:9px;font:400 .71rem var(--mono);color:var(--mut);letter-spacing:.03em;transition:opacity .3s}
.pcard__ex{margin-left:auto;font:500 .58rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mut);
  border:1px solid var(--line);border-radius:20px;padding:2px 9px;opacity:.75}
.pcard__body{padding:18px 18px 15px;min-height:266px;font:400 .77rem/1.65 var(--mono);color:var(--mut)}
.pcard h4{font:600 .98rem/1.3 var(--disp);color:var(--ink);margin-bottom:13px;letter-spacing:-.01em}
.pcard__foot{display:flex;align-items:center;gap:13px;padding:11px 16px;border-top:1px solid rgba(19,27,22,.09);
  font:500 .64rem var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--mut);white-space:nowrap}
.pcard__prog{flex:1;height:3px;border-radius:3px;background:rgba(19,27,22,.1);overflow:hidden}
.pcard__prog i{display:block;height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--acc),#41C592);transition:width .7s var(--ease)}

.pcard [data-p]{opacity:0;transform:translateY(7px);transition:opacity .45s var(--ease),transform .45s var(--ease)}
.pcard [data-p].on{opacity:1;transform:none}
.prow{display:flex;align-items:baseline;gap:9px;padding:3px 0}
/* etykieta nie rozpycha się na siłę — rozciąga się wyłącznie kropkowany
   łącznik, dzięki czemu wartość zawsze trzyma się prawej krawędzi */
.prow em{font-style:normal;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow s{flex:1 1 10px;min-width:10px;border-bottom:1px dotted rgba(19,27,22,.2);transform:translateY(-4px);text-decoration:none}
.prow b{font-weight:500;color:var(--ink);white-space:nowrap}
.prow.is-ai b{color:var(--amb)}
.prow.is-ok b{color:var(--acc)}
.prow.is-bad b{color:#C0392B}
.pchk{display:flex;align-items:center;gap:9px;padding:3.5px 0;color:var(--mut)}
.pchk i{width:16px;height:16px;flex:none;border-radius:4px;border:1px solid rgba(19,27,22,.18);display:grid;place-items:center;
  color:var(--acc);font:600 .62rem/1 var(--mono);font-style:normal;background:var(--acc-dim);transition:.3s}
.pchk.is-ai i{color:var(--amb);border-color:rgba(169,113,31,.4);background:var(--amb-dim)}
.pchk span{flex:1;min-width:0}
.pchk time{font-size:.66rem;opacity:.6;white-space:nowrap}
.ptag{display:inline-block;font:500 .6rem var(--mono);letter-spacing:.08em;text-transform:uppercase;
  padding:3px 8px;border-radius:4px;border:1px solid var(--line);color:var(--mut);margin:0 5px 5px 0}
.ptag--rule{color:var(--acc);border-color:rgba(12,155,98,.4);background:var(--acc-dim)}
.ptag--ai{color:var(--amb);border-color:rgba(169,113,31,.42);background:var(--amb-dim)}
.pnote{margin-top:11px;padding-top:10px;border-top:1px dashed var(--line);font-size:.71rem;line-height:1.6}
.pnote b{color:var(--ink);font-weight:500}

@media (max-width:1000px){
  .proc{grid-template-columns:1fr}
  .pcard{position:static;max-width:560px;margin-top:8px}
  .pcard__body{min-height:0}
}

/* ============================ 07 DANE =========================== */
.term{background:#0A100D;border:1px solid var(--line);border-radius:var(--rad);overflow:hidden;box-shadow:0 30px 80px -30px rgba(0,0,0,.8);max-width:860px}
.term__bar{display:flex;align-items:center;gap:8px;padding:13px 18px;border-bottom:1px solid var(--line);background:rgba(233,239,234,.03)}
.tdot{width:10px;height:10px;border-radius:50%}
.tdot:nth-child(1){background:#FF6D5E}.tdot:nth-child(2){background:#FFB454}.tdot:nth-child(3){background:#3BE08C}
.term__title{font:400 .74rem var(--mono);color:var(--mut);margin-left:10px;letter-spacing:.06em}
.term__body{padding:clamp(22px,3.4vw,36px);font:400 .82rem/2.1 var(--mono)}
.tline{display:flex;align-items:baseline;gap:12px;color:var(--mut);transform:translateX(-14px)}
.js .tline{opacity:0;transition:.5s var(--ease) var(--d,0s);transition-property:opacity,transform}
.js .term.in .tline{opacity:1;transform:none}
.tp{color:var(--acc)}
.tkey{color:var(--ink);white-space:nowrap}
.tdots{flex:1;min-width:24px;border-bottom:1px dotted rgba(233,239,234,.22);transform:translateY(-5px)}
.tval{color:var(--mut)}
.ok{color:var(--acc);white-space:nowrap;transition:opacity .4s var(--ease),transform .4s var(--ease)}
/* maszyna do pisania: [OK] zapala się dopiero, gdy linia się dopisze.
   Klasę .typewriter dokłada JS, więc bez skryptu terminal jest od razu kompletny. */
.js .term.typewriter .tline .ok{opacity:0;transform:translateX(-6px)}
.js .term.typewriter .tline.typed .ok{opacity:1;transform:none}
.js .term.typewriter .tline.typing .tval::after{content:'';display:inline-block;width:.5em;height:1em;margin-left:2px;
  background:var(--acc);vertical-align:-.15em;animation:blinkc .8s steps(1) infinite}
.tcursor{color:var(--acc);animation:blinkc 1s steps(1) infinite;margin-top:6px}
@keyframes blinkc{50%{opacity:0}}
.dane__note{margin-top:26px;color:var(--mut);max-width:62ch}

/* ============================ 09 KTO ZA TYM STOI ================ */
/* Jednoosobowa firma, której klient ma powierzyć obieg faktur, nie może
   być anonimowa — stąd twarz, nazwisko i telefon zamiast kolejnego
   akapitu o „pasji do technologii”. */
.sec--me{padding-top:0}
.me{display:grid;grid-template-columns:clamp(200px,24vw,300px) 1fr;gap:clamp(24px,4vw,56px);align-items:start}
.me__photo{position:relative;margin:0}
.me__photo img{width:100%;height:auto;border-radius:var(--rad);border:1px solid var(--line);
  background:var(--panel2);box-shadow:0 30px 70px -32px rgba(0,0,0,.8)}
.me__photo::before{content:'';position:absolute;inset:-10px -10px auto auto;width:52px;height:52px;
  border-top:1px solid var(--acc);border-right:1px solid var(--acc);opacity:.5;border-radius:0 12px 0 0;pointer-events:none}
.me__photo figcaption{margin-top:12px;font:400 .74rem var(--mono);letter-spacing:.06em;color:var(--mut)}
.me__body h3{font:700 clamp(1.5rem,2.6vw,2rem)/1.1 var(--disp);letter-spacing:-.02em}
.me__role{font:500 .78rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--acc);margin:8px 0 22px}
.me__body p{color:var(--mut);max-width:66ch;margin-bottom:16px}
.me__contact{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:2px 26px;
  margin:26px 0 20px;border-top:1px solid var(--line);padding-top:22px}
.me__contact div{padding:8px 0}
.me__contact dt{font:500 .7rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mut);margin-bottom:5px}
.me__contact dd{color:var(--ink);font-size:.98rem}
.me__contact a{color:var(--acc);text-decoration:none;text-underline-offset:4px;transition:text-decoration-color .3s}
.me__contact a:hover{text-decoration:underline}
.me__note{border-left:3px solid var(--acc);padding:6px 0 6px 20px;font-size:.96rem}
@media (max-width:820px){
  .me{grid-template-columns:1fr;gap:26px}
  .me__photo{max-width:240px}
}

/* ============================ 08 FAQ ============================ */
.faq{max-width:860px}
.qa{border-bottom:1px solid var(--line)}
.qa__q{width:100%;display:grid;grid-template-columns:auto 1fr auto;gap:clamp(14px,3vw,28px);align-items:center;text-align:left;padding:26px 6px;transition:color .3s}
.qa__q:hover{color:var(--acc)}
.qa__no{font:500 .8rem var(--mono);color:var(--mut)}
.qa__q h3{font:600 clamp(1.05rem,1.8vw,1.3rem) var(--disp);letter-spacing:-.01em}
.qa__ic{font:400 1.6rem/1 var(--disp);color:var(--acc);transition:transform .45s var(--ease)}
.qa.open .qa__ic{transform:rotate(45deg)}
.qa__a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease)}
.qa.open .qa__a{grid-template-rows:1fr}
.qa__inner{overflow:hidden}
.qa__inner p{color:var(--mut);max-width:64ch;padding:0 6px 28px calc(clamp(14px,3vw,28px) + 3ch)}
.qa__inner a{color:var(--acc);text-underline-offset:4px}

/* ============================ 09 KONTAKT ======================== */
.sec--cta{position:relative;overflow:hidden;isolation:isolate}
.sec--cta::before{content:'';position:absolute;inset:auto -10% -30% -10%;height:70%;background:radial-gradient(ellipse at 50% 100%,rgba(59,224,140,.1),transparent 65%);pointer-events:none;z-index:-1}
/* bałagan po lewej → jedna czysta linia po prawej */
.sec--cta::after{
  content:'';position:absolute;inset:auto 0 0 0;height:min(80%,540px);z-index:-2;pointer-events:none;opacity:.3;
  background:url('assets/cta-flow.jpg') center bottom/cover no-repeat;
  background-image:image-set(url('assets/cta-flow.webp') type('image/webp'),url('assets/cta-flow.jpg') type('image/jpeg'));
  mask-image:linear-gradient(180deg,transparent,#000 38%,#000 86%,transparent);
}
.komp{margin-top:clamp(34px,5vw,54px);background:linear-gradient(160deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:var(--rad);padding:clamp(24px,4vw,42px);max-width:820px;box-shadow:0 30px 80px -30px rgba(0,0,0,.7)}
.komp__label{font:500 .74rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--acc);margin-bottom:16px;display:block}
.komp textarea{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--ink);font:400 1rem/1.6 var(--body);padding:18px;resize:vertical;min-height:130px;transition:border-color .3s,box-shadow .3s}
.komp textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 4px var(--acc-dim)}
.komp textarea::placeholder{color:rgba(143,163,152,.55)}
.komp__row{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;margin-top:18px}
.komp__count{font:400 .78rem var(--mono);color:var(--mut)}
.komp__count b{color:var(--acc);font-weight:500}
.ctagrid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(272px,.92fr);gap:clamp(22px,3.4vw,48px);align-items:start}
.ctagrid .komp{max-width:none}

/* --- co się stanie po wysłaniu --------------------------------- */
.next{margin-top:clamp(34px,5vw,54px);border:1px solid var(--line);border-radius:var(--rad);padding:clamp(22px,2.6vw,30px);
  background:linear-gradient(165deg,rgba(59,224,140,.07),transparent 58%),linear-gradient(160deg,var(--panel),var(--panel2));
  box-shadow:0 30px 80px -34px rgba(0,0,0,.7)}
.next__head{font:600 1.06rem var(--disp);margin-bottom:20px;letter-spacing:-.01em}
.next__list{display:grid;gap:2px}
.next__list li{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.next__list li:last-child{border-bottom:0}
.next__no{font:500 .74rem/1.6 var(--mono);color:var(--acc);letter-spacing:.06em}
.next__list p{color:var(--mut);font-size:.93rem;line-height:1.6}
.next__list strong{color:var(--ink)}
.js .next.in li{animation:nextIn .6s var(--ease) both;animation-delay:calc(.25s + var(--i,0) * .12s)}
@keyframes nextIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.next__seal{display:flex;align-items:center;gap:9px;margin-top:18px;padding:10px 13px;border:1px dashed rgba(59,224,140,.4);
  border-radius:8px;font:500 .72rem var(--mono);letter-spacing:.06em;color:var(--acc);background:var(--acc-dim)}
.next__seal i{width:7px;height:7px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px var(--acc);flex:none;animation:beat 2.6s ease-in-out infinite}
.next__meta{display:grid;grid-template-columns:auto 1fr;gap:7px 14px;margin-top:20px;padding-top:16px;border-top:1px solid var(--line);
  font:400 .76rem var(--mono);color:var(--mut)}
.next__meta dt{color:rgba(143,163,152,.7);white-space:nowrap}
.next__meta dd{color:var(--ink)}
.next__meta a{color:var(--ink);text-decoration:none;border-bottom:1px solid rgba(59,224,140,.45);transition:color .3s}
.next__meta a:hover{color:var(--acc)}
@media (max-width:900px){
  .ctagrid{grid-template-columns:1fr}
  .next{margin-top:8px;max-width:820px}
}

.komp__alt{margin-top:22px;font:400 .82rem var(--mono);color:var(--mut)}
.komp__alt a{color:var(--ink);text-decoration-color:var(--acc);text-underline-offset:4px;transition:color .3s}
.komp__alt a:hover{color:var(--acc)}

/* --- stopka ---------------------------------------------------- */
footer{border-top:1px solid var(--line);background:var(--bg2);padding:clamp(48px,7vw,80px) 0 34px}
.foot__grid{display:grid;grid-template-columns:1.5fr 1.1fr 1fr 1fr;gap:clamp(24px,3.4vw,48px);margin-bottom:clamp(40px,6vw,64px)}
.foot__brand p{color:var(--mut);max-width:34ch;margin-top:18px;font-size:.95rem}
.foot h3{font:600 .78rem var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--mut);margin-bottom:20px}
.foot li{margin-bottom:12px}
.foot a{color:var(--ink);text-decoration:none;transition:color .3s,padding-left .3s}
.foot a:hover{color:var(--acc);padding-left:6px}
.foot__geo{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);font:400 .76rem var(--mono);line-height:1.9;color:var(--mut)}
.foot__bot{display:flex;flex-wrap:wrap;gap:14px 30px;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:26px;font:400 .76rem var(--mono);color:var(--mut)}
.foot__bot .rules{color:var(--acc)}
.foot__bot > a:not(.toplink){color:var(--mut);text-decoration:none;transition:color .3s}
.foot__bot > a:not(.toplink):hover{color:var(--acc)}
.toplink{color:var(--ink);text-decoration:none;display:inline-flex;gap:8px;align-items:center;transition:color .3s}
.toplink:hover{color:var(--acc)}
.toplink i{display:inline-block;transition:transform .3s var(--ease);font-style:normal}
.toplink:hover i{transform:translateY(-4px)}

/* --- przycisk „do góry” ---------------------------------------- */
.top{position:fixed;right:22px;bottom:22px;z-index:90;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:rgba(12,18,15,.85);backdrop-filter:blur(8px);color:var(--acc);font-size:1.1rem;display:grid;place-items:center;opacity:0;pointer-events:none;transform:translateY(12px);transition:.4s var(--ease)}
.top.show{opacity:1;pointer-events:auto;transform:none}
.top:hover{border-color:var(--acc);box-shadow:0 0 20px var(--acc-dim)}
/* pierścień pokazuje, ile strony jest za Tobą — ten sam sygnał co pasek
   u góry, tylko w miejscu, w które i tak patrzysz sięgając po „do góry” */
.top::before{content:'';position:absolute;inset:-4px;border-radius:50%;pointer-events:none;
  background:conic-gradient(var(--acc) calc(var(--p,0) * 360deg),rgba(233,239,234,.09) 0);
  -webkit-mask:radial-gradient(circle,transparent 0 calc(50% - 2px),#000 calc(50% - 2px));
  mask:radial-gradient(circle,transparent 0 calc(50% - 2px),#000 calc(50% - 2px));
  opacity:.8}

/* --- responsywność --------------------------------------------- */
@media (max-width:960px){
  .hero__grid{grid-template-columns:1fr;padding-top:8px}
  .fit{grid-template-columns:1fr}
  .flow__steps{grid-template-columns:1fr}
  .flow__rail{display:none}
  .fstep{opacity:1}
  .flow__meta{grid-template-columns:1fr}
  .payoff{grid-template-columns:1fr}
  .payoff__stat{text-align:left}
  .foot__grid{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .nav__links,.nav__cta{display:none}
  .burger{display:flex}
  .mark{height:29px}
  .brand__wm{font-size:.94rem}
  .brand--foot .mark{height:36px}
}
@media (max-width:640px){
  .pain{grid-template-columns:1fr auto}
  .pain__no{display:none}
  .ben{grid-template-columns:56px 1fr}
  .ben__no{display:none}
  .qa__inner p{padding-left:6px}
  .foot__grid{grid-template-columns:1fr}
}
/* wąska scena: podpisy torów zaczynałyby wchodzić na łuk AI */
@media (max-width:620px){
  .elab--lane{display:none}
  .elab{font-size:.56rem;letter-spacing:.06em}
  .pipebox__foot{flex-direction:column;align-items:flex-start;gap:6px}
}

/* --- ograniczony ruch ------------------------------------------ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  html{scroll-behavior:auto}
  .js [data-reveal]{opacity:1;transform:none}
  /* silnik stoi: tory bez przebiegu, węzły zapalone na stałe */
  .erail--sh,.enode__orbit,.enode__ring{animation:none}
  .erail--sh{stroke-dasharray:none;opacity:.35}
  .feed__row{animation:none}
  .race__replay{display:none}
}

/* ============================ 05 SCENARIUSZE ==================== */
.sec--sim{position:relative}
.sec--sim::before{content:'';position:absolute;inset:0;z-index:-1;opacity:.12;pointer-events:none;background:url('assets/flow-texture.jpg') center/cover no-repeat;background-image:image-set(url('assets/flow-texture.webp') type('image/webp'),url('assets/flow-texture.jpg') type('image/jpeg'));mask-image:linear-gradient(180deg,transparent,#000 15%,#000 85%,transparent)}
.sim{display:grid;gap:clamp(14px,2vw,22px);margin-top:clamp(28px,4vw,48px)}
.sim__tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.simtab{display:flex;align-items:center;gap:12px;text-align:left;padding:14px 15px;border:1px solid var(--line);border-radius:var(--rad);background:var(--panel2);cursor:pointer;color:var(--mut);position:relative;overflow:hidden;transition:border-color .35s,background .35s,transform .35s var(--ease),box-shadow .35s}
.simtab:hover{border-color:rgba(59,224,140,.35);transform:translateY(-3px)}
.simtab[aria-selected="true"]{border-color:var(--acc);background:linear-gradient(135deg,rgba(59,224,140,.08),var(--panel2));color:var(--ink);box-shadow:0 0 0 1px var(--acc-dim),0 8px 30px -12px rgba(59,224,140,.3)}
.simtab__ico{display:grid;place-items:center;width:40px;height:40px;flex:none;border-radius:10px;border:1px solid var(--line);color:var(--mut);transition:color .35s,border-color .35s,background .35s}
.simtab[aria-selected="true"] .simtab__ico{color:var(--acc);border-color:rgba(59,224,140,.4);background:var(--acc-dim)}
.simtab__txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.simtab__txt b{font:600 .88rem/1.25 var(--disp);letter-spacing:.01em}
.simtab__txt i{font:400 .7rem/1.35 var(--mono);font-style:normal;opacity:.7}
/* mikro-pipeline w rogu kafelka — pulsuje tylko na aktywnym */
.simtab__flow{position:absolute;right:11px;top:11px;display:flex;gap:3px;opacity:0;transition:opacity .35s}
.simtab__flow i{width:3px;height:3px;border-radius:50%;background:var(--acc)}
.simtab:hover .simtab__flow{opacity:.45}
.simtab[aria-selected="true"] .simtab__flow{opacity:1}
.simtab[aria-selected="true"] .simtab__flow i{animation:tabFlow 1.4s var(--ease) infinite}
.simtab[aria-selected="true"] .simtab__flow i:nth-child(2){animation-delay:.16s}
.simtab[aria-selected="true"] .simtab__flow i:nth-child(3){animation-delay:.32s}
@keyframes tabFlow{0%,70%,100%{transform:scale(1);opacity:.35}25%{transform:scale(1.9);opacity:1}}
.sim__stage{border:1px solid var(--line);border-radius:var(--rad);background:linear-gradient(160deg,var(--panel),var(--panel2));padding:clamp(18px,2.5vw,28px);box-shadow:0 30px 80px -30px rgba(0,0,0,.7);position:relative;overflow:hidden}
.sim__stage::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(500px 240px at 70% 0%,rgba(59,224,140,.06),transparent)}
.sim__stage::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.22;background:linear-gradient(105deg,transparent 35%,rgba(59,224,140,.08) 49%,transparent 63%);transform:translateX(-110%);animation:stageScan 7s ease-in-out infinite}
@keyframes stageScan{0%,55%{transform:translateX(-110%)}85%,100%{transform:translateX(110%)}}
.sim__bar{position:relative;z-index:1;display:flex;align-items:center;gap:10px;font:400 .74rem var(--mono);color:var(--mut);letter-spacing:.05em;padding-bottom:16px;border-bottom:1px dashed var(--line);margin-bottom:7px}
.sim__bar .live{width:7px;height:7px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px var(--acc);animation:beat 1.8s infinite}
.sim__bar b{color:var(--ink);font-weight:500}
.sim__clock{margin-left:auto;color:rgba(143,163,152,.6);font-size:.66rem}
.sim__mode b{color:var(--acc)}
.sim__signal{height:18px;display:flex;align-items:center;gap:3px;overflow:hidden;opacity:.42;margin-bottom:10px}
.sim__signal span{height:1px;flex:1;background:linear-gradient(90deg,transparent,var(--acc),transparent);transform-origin:left;animation:signalLine 2.6s var(--ease) infinite}
.sim__signal i{width:2px;background:var(--acc);animation:signalBar .8s ease-in-out infinite alternate}.sim__signal i:nth-child(2){height:4px}.sim__signal i:nth-child(3){height:11px;animation-delay:.14s}.sim__signal i:nth-child(4){height:6px;animation-delay:.28s}.sim__signal i:nth-child(5){height:15px;animation-delay:.42s}.sim__signal i:nth-child(6){height:8px;animation-delay:.56s}
@keyframes signalLine{0%{transform:scaleX(0);opacity:0}30%,75%{transform:scaleX(1);opacity:1}100%{opacity:0}}
@keyframes signalBar{to{transform:scaleY(.35);opacity:.4}}
.sim__pipe{position:relative;padding:6px 4px 2px}
.sim__track{position:absolute;left:12.5%;right:12.5%;top:13px;height:2px;background:linear-gradient(90deg,var(--line) 50%,rgba(233,239,234,.22) 50%);background-size:9px 2px;border-radius:2px}
.sim__track::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,var(--acc),var(--amb),var(--acc));transform-origin:left;transform:scaleX(var(--progress,0));transition:transform .9s var(--ease);filter:drop-shadow(0 0 4px var(--acc))}
.sim__pkt{position:absolute;top:-4px;left:0;width:10px;height:10px;border-radius:50%;background:var(--acc);box-shadow:0 0 14px 3px rgba(59,224,140,.55);transform:translateX(-50%);transition:left .9s var(--ease),background .4s,box-shadow .4s}
.sim__pkt::before,.sim__pkt::after{content:'';position:absolute;inset:-7px;border:1px solid var(--acc);border-radius:50%;opacity:0;animation:pktRing 1.5s ease-out infinite}.sim__pkt::after{animation-delay:.7s}
@keyframes pktRing{0%{transform:scale(.4);opacity:.75}100%{transform:scale(1.5);opacity:0}}
.sim__pkt--ai{background:var(--amb);box-shadow:0 0 14px 3px rgba(255,180,84,.55)}
.sim__nodes{display:flex;list-style:none;position:relative;z-index:1}
.simnode{display:flex;flex-direction:column;align-items:center;gap:12px;width:25%;opacity:.45;transition:opacity .4s}
.simnode.on{opacity:1}
.simnode__dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--mut);background:var(--bg);transition:border-color .4s,box-shadow .4s,background .4s}
.simnode.on .simnode__dot{border-color:var(--acc);background:var(--acc);box-shadow:0 0 0 5px var(--acc-dim),0 0 18px rgba(59,224,140,.65)}
.simnode--ai .simnode__dot{border-radius:4px;transform:rotate(45deg)}
.simnode--ai.on .simnode__dot{border-color:var(--amb);background:var(--amb);box-shadow:0 0 12px rgba(255,180,84,.6)}
.simnode__label{font:500 .72rem var(--mono);letter-spacing:.06em;color:var(--mut);transition:color .4s}
.simnode.on .simnode__label{color:var(--ink)}
.sim__grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:14px;margin-top:20px}
/* jak prawdziwy terminal: najnowsze linie na dole, starsze uciekają w górę */
.sim__console{display:flex;flex-direction:column;justify-content:flex-end;border:1px solid var(--line);border-radius:10px;background:#0A100D;padding:16px 18px;min-height:236px;font:400 .76rem/1.85 var(--mono);color:rgba(212,225,216,.78);overflow:hidden}
/* kursor na końcu ostatniej linii — konsola wygląda, jakby czekała
   na kolejne zdarzenie, a nie jak zrzut tekstu */
.sim__console .cline:last-child::after{content:'';display:inline-block;width:.52em;height:.95em;margin-left:6px;
  background:var(--acc);opacity:.85;vertical-align:-.12em;animation:blinkc .9s steps(1) infinite}
.sim__console .cline{flex:none;overflow-wrap:anywhere}
.sim__console .cline{opacity:0;animation:clineIn .35s var(--ease) forwards}
.sim__console .cline b{color:var(--ink);font-weight:500}
.sim__console .cline .ok{color:var(--acc)}
.sim__console .cline .ai{color:var(--amb)}
.sim__console .cline .dim{opacity:.55}

/* ---- wynik: prawdziwy, rysowany artefakt ------------------------- */
.sim__result{border:1px solid var(--line);border-radius:10px;background:rgba(6,13,10,.72);overflow:hidden;position:relative;display:flex;flex-direction:column;transition:border-color .45s,box-shadow .45s}
.sim__result.show{border-color:rgba(59,224,140,.32);box-shadow:0 0 0 1px rgba(59,224,140,.07),0 18px 50px -30px rgba(59,224,140,.55)}
.sim__resultbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line);font:500 .61rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.sim__resultbar span{display:flex;align-items:center;gap:7px}
.sim__resultbar i{width:6px;height:6px;border-radius:50%;background:var(--mut);transition:background .3s,box-shadow .3s}
.sim__resultbar b{color:var(--mut);font-weight:500;transition:color .3s;white-space:nowrap}
.sim__result.show .sim__resultbar i{background:var(--acc);box-shadow:0 0 9px var(--acc)}
.sim__result.show .sim__resultbar b{color:var(--acc)}

.art{position:relative;flex:1;padding:14px 14px 42px;font:400 .72rem/1.55 var(--mono);overflow:hidden}
.art::after{content:'';position:absolute;left:0;right:0;top:0;height:34%;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(59,224,140,.1),transparent);animation:artScan 2.4s var(--ease) infinite}
.sim__result.show .art::after{opacity:0;animation:none}
@keyframes artScan{0%{transform:translateY(-110%)}100%{transform:translateY(330%)}}
.art [data-seq]{opacity:0;transform:translateY(7px);transition:opacity .45s var(--ease),transform .45s var(--ease)}
.art [data-seq].on{opacity:1;transform:none}
.art__title{display:flex;justify-content:space-between;gap:10px;font:500 .64rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);padding-bottom:8px;margin-bottom:9px;border-bottom:1px dashed var(--line)}
.art__title u{text-decoration:none;color:var(--acc)}
.art__stamp{position:absolute;right:13px;bottom:11px;border:2px solid var(--acc);color:var(--acc);font:600 .62rem var(--mono);letter-spacing:.14em;text-transform:uppercase;padding:5px 9px;border-radius:4px;opacity:0;transform:rotate(-9deg) scale(1.8);transition:transform .55s cubic-bezier(.34,1.56,.64,1),opacity .3s;background:rgba(6,13,10,.85)}
.sim__result.show .art__stamp{opacity:1;transform:rotate(-9deg) scale(1)}

/* dokument: pary etykieta → wartość */
.art__row{display:flex;align-items:baseline;gap:8px;padding:3px 0}
.art__row em{font-style:normal;color:var(--mut);white-space:nowrap;font-size:.68rem}
.art__row span{flex:1;min-width:10px;border-bottom:1px dotted rgba(233,239,234,.16);transform:translateY(-3px)}
.art__row b{color:var(--ink);font-weight:500;white-space:nowrap}
.art__row.is-ai b{color:var(--amb)}
.art__row.is-ok b{color:var(--acc)}

/* zgłoszenie / ticket */
.art__subj{color:var(--ink);font-size:.75rem;line-height:1.5;margin-bottom:10px}
.art__chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:11px}
.chip{font:500 .61rem var(--mono);letter-spacing:.05em;padding:4px 8px;border-radius:4px;border:1px solid var(--line);color:var(--mut);white-space:nowrap}
.chip--ai{color:var(--amb);border-color:rgba(255,180,84,.45);background:var(--amb-dim)}
.chip--ok{color:var(--acc);border-color:rgba(59,224,140,.4);background:var(--acc-dim)}
.chip--bad{color:var(--bad);border-color:rgba(255,109,94,.42);background:rgba(255,109,94,.09)}
.art__meter{display:flex;align-items:center;gap:9px;font-size:.65rem;color:var(--mut);margin-bottom:9px}
.art__meter span{flex:1;height:5px;border-radius:5px;background:rgba(143,163,152,.15);overflow:hidden}
.art__meter span i{display:block;height:100%;width:0;border-radius:5px;background:linear-gradient(90deg,var(--amb),var(--acc));transition:width 1s var(--ease) .15s}
.art__meter.on span i{width:var(--v,60%)}

/* wykres */
.art__bars{display:flex;align-items:flex-end;gap:5px;height:86px;margin:6px 0 10px}
.art__bars i{flex:1;align-self:flex-end;height:4px;border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--acc),rgba(59,224,140,.22));transition:height .75s var(--ease)}
.art__bars i.on{height:var(--h)}
.art__bars i.is-peak{background:linear-gradient(180deg,var(--amb),rgba(255,180,84,.22))}
.art__kpi{display:flex;align-items:baseline;gap:9px}
.art__kpi b{font:700 1.55rem/1 var(--disp);color:var(--acc);font-variant-numeric:tabular-nums}
.art__kpi em{font-style:normal;font-size:.66rem;color:var(--mut)}

/* ocena / gauge */
.art__score{display:flex;align-items:center;gap:15px;margin-bottom:11px}
.gauge{width:82px;height:82px;flex:none;transform:rotate(-90deg)}
.gauge circle{fill:none;stroke-width:3.4;stroke-linecap:round}
.gauge__bg{stroke:rgba(143,163,152,.16)}
.gauge__fg{stroke:var(--acc);stroke-dasharray:119.4;stroke-dashoffset:119.4;transition:stroke-dashoffset 1.15s var(--ease)}
[data-seq].on .gauge__fg{stroke-dashoffset:var(--o,119.4)}
.art__scoreval{display:flex;flex-direction:column;gap:3px}
.art__scoreval b{font:700 1.5rem/1 var(--disp);color:var(--acc)}
.art__scoreval em{font-style:normal;font-size:.65rem;color:var(--mut)}

/* lista kontrolna */
.art__check{display:grid;gap:6px}
.art__check li{display:flex;align-items:center;gap:9px;color:var(--mut);font-size:.7rem;transition:color .4s}
.art__check li.on{color:var(--ink)}
.art__check .bx{width:16px;height:16px;flex:none;border:1px solid var(--line);border-radius:4px;display:grid;place-items:center;color:var(--acc);transition:border-color .35s,background .35s}
.art__check li.on .bx{border-color:var(--acc);background:var(--acc-dim)}
.art__check .bx path{stroke-dasharray:17;stroke-dashoffset:17;transition:stroke-dashoffset .45s ease .12s}
.art__check li.on .bx path{stroke-dashoffset:0}
.art__check time{margin-left:auto;font-size:.61rem;opacity:.62;white-space:nowrap}

/* synchronizacja systemów */
.art__sync{display:grid;gap:7px}
.sy{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;transition:border-color .4s,background .4s}
.sy em{font-style:normal;flex:1;color:var(--mut);font-size:.69rem}
.sy b{color:var(--bad);font-weight:500;font-variant-numeric:tabular-nums;transition:color .5s}
.sy.on{border-color:rgba(59,224,140,.3);background:rgba(59,224,140,.04)}
.sy.on b{color:var(--acc)}

/* pasek „ręcznie vs automatycznie” pod wynikiem */
.sim__gain{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;margin-top:14px;padding:11px 14px;border:1px solid var(--line);border-radius:10px;background:rgba(233,239,234,.022);font:400 .66rem var(--mono);color:var(--mut);opacity:0;transform:translateY(6px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.sim__gain.on{opacity:1;transform:none}
.gain__cell b{font-weight:500;margin-left:6px}
.gain__cell--m b{color:var(--bad)}
.gain__cell--a b{color:var(--acc)}
.gain__bar{flex:1;min-width:70px;height:5px;border-radius:5px;background:rgba(255,109,94,.16);position:relative;overflow:hidden}
.gain__bar i{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:5px;background:linear-gradient(90deg,var(--acc),var(--amb));transition:width 1.1s var(--ease) .2s}
.gain__save{margin-left:auto;color:var(--acc)}
.sim__foot{margin-top:clamp(22px,3vw,32px);color:var(--mut);font-size:.95rem}
.sim__foot a{color:var(--acc);text-underline-offset:4px}

/* --- rozejście z symulatora na osobne strony usług --------------- */
/* Kotwice (#scenariusze) nie tworzą stron, które mogą się pozycjonować.
   Tu zaczynają się prawdziwe adresy — i stąd Google ma się dowiedzieć,
   że każdy z tych ośmiu procesów to osobny temat. */
.simlinks{margin-top:clamp(34px,5vw,56px);border-top:1px solid var(--line);padding-top:clamp(28px,4vw,44px)}
.simlinks__head{font:600 clamp(1.15rem,2vw,1.45rem) var(--disp);letter-spacing:-.01em}
.simlinks__lead{color:var(--mut);max-width:62ch;margin-top:10px;font-size:.98rem}
.simlinks__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:10px;margin-top:24px}
.simlinks__grid a{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 14px;
  text-decoration:none;border:1px solid var(--line);border-radius:10px;background:var(--panel2);
  padding:16px 18px;transition:border-color .35s,transform .35s var(--ease),background .35s}
.simlinks__grid b{grid-column:1;font:600 1rem var(--disp);color:var(--ink);letter-spacing:-.005em}
.simlinks__grid span{grid-column:1;font-size:.88rem;color:var(--mut)}
.simlinks__grid i{grid-column:2;grid-row:1/3;font-style:normal;color:var(--acc);font-size:1.05rem;
  transition:transform .35s var(--ease)}
.simlinks__grid a:hover{border-color:var(--acc);background:rgba(59,224,140,.06);transform:translateY(-3px)}
.simlinks__grid a:hover i{transform:translateX(5px)}
.sim__controls{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:15px;padding-top:13px;border-top:1px solid rgba(233,239,234,.07);font:400 .62rem var(--mono);letter-spacing:.05em;color:var(--mut)}
.sim__controls>span{display:flex;align-items:center;gap:8px}.sim__controls>span i{width:5px;height:5px;border-radius:50%;background:var(--acc)}
.sim__controls button{border:0;background:transparent;color:var(--mut);font:500 .61rem var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:5px;transition:color .25s}.sim__controls button:hover{color:var(--acc)}.sim__controls button b{font-size:.95rem;margin-right:5px}
.sim__stage.restarting :is(.sim__pkt,.simnode__dot,.cline,.sim__result,.art [data-seq],.sim__gain){transition:none!important;animation:none!important}

@media(max-width:540px){
  .sim__clock{display:none}.sim__controls{align-items:flex-start}.sim__controls>span{max-width:20ch}
  .sim__gain{font-size:.6rem;gap:8px 10px}.gain__save{margin-left:0}
}
@media(prefers-reduced-motion:reduce){
  .art::after,.sim__stage::after,.sim__signal span,.sim__signal i,.sim__pkt::before,.sim__pkt::after{animation:none}
}

/* ============================ MICRO ============================= */
.spot{position:relative}
.spot::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .45s;background:radial-gradient(320px 320px at var(--mx,50%) var(--my,50%),rgba(59,224,140,.09),transparent 70%)}
.spot:hover::after{opacity:1}
@keyframes clineIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* --- scenariusze: responsywność -------------------------------- */
@media (max-width:1080px){
  .sim__tabs{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:860px){
  .sim__tabs{grid-template-columns:repeat(2,1fr)}
  .sim__grid{grid-template-columns:1fr}
  .sim__console{min-height:150px}
}
@media (max-width:560px){
  /* na telefonie osiem kafelków w kolumnie to ściana — lepiej przesuwana taśma */
  .sim__tabs{display:flex;grid-template-columns:none;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;
    padding-bottom:6px;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .sim__tabs::-webkit-scrollbar{display:none}
  .simtab{flex:0 0 76%;scroll-snap-align:start}
  .simnode__label{font-size:.62rem}
  .sim__console{min-height:150px;font-size:.72rem}
}

/* ============================================================
   NOWE KOMPONENTY
   ============================================================ */

/* --- hero: taśma zdarzeń — wiersz dopisuje się w chwili, gdy
       sprawa faktycznie dojedzie do CRM na scenie powyżej -------- */
.feed{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line)}
.feed__win{height:69px;overflow:hidden}
.feed__row{display:flex;align-items:center;gap:9px;height:23px;
  font:400 .7rem/23px var(--mono);color:var(--mut);white-space:nowrap}
.feed__row span{overflow:hidden;text-overflow:ellipsis}
.feed__row i{width:6px;height:6px;flex:none;border-radius:50%}
.feed__row b{margin-left:auto;color:var(--acc);font-weight:500;padding-left:10px}
.feed__ok{background:var(--acc);box-shadow:0 0 8px rgba(59,224,140,.7)}
.feed__ai{background:var(--amb);box-shadow:0 0 8px rgba(255,180,84,.7);border-radius:2px;transform:rotate(45deg)}
.feed__row:nth-child(2){opacity:.55}
.feed__row:nth-child(3){opacity:.26}
.feed__row.is-new{animation:feedIn .45s var(--ease)}
.feed__row.is-new b{animation:feedTime .45s var(--ease)}
@keyframes feedIn{from{margin-top:-23px;opacity:0;filter:blur(3px)}to{margin-top:0;opacity:1;filter:none}}
@keyframes feedTime{0%{color:#fff}100%{color:var(--acc)}}

/* --- kreska w nagłówku sekcji rysuje się przy wejściu ----------- */
.js .shead__meta::after{transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease) .3s}
.js .shead.in .shead__meta::after{transform:scaleX(1)}

/* --- magnetyczny przycisk --------------------------------------- */
.btn--mag{transform:translate(var(--mx,0px),var(--my,0px))}
.btn--solid.btn--mag:hover{transform:translate(var(--mx,0px),calc(var(--my,0px) - 2px))}

/* ============================================================
   03 / WYŚCIG: RĘCZNIE vs AUTOMATYCZNIE
   ============================================================ */
.race{display:grid;gap:14px;margin-top:clamp(24px,3.5vw,40px)}
.lane{position:relative;overflow:hidden;border:1px solid var(--line);border-left-width:3px;border-radius:var(--rad);padding:clamp(16px,2.2vw,24px);background:linear-gradient(160deg,var(--panel),var(--panel2));transition:border-color .5s,box-shadow .5s}
.lane--manual{border-left-color:rgba(255,109,94,.55)}
.lane--manual.stuck{border-left-color:var(--bad);background:linear-gradient(160deg,rgba(255,109,94,.06),var(--panel2))}
.lane--auto{border-left-color:var(--acc)}
.lane--auto.run::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 40%,rgba(59,224,140,.08) 50%,transparent 60%);
  transform:translateX(-110%);animation:laneSweep 2.4s var(--ease) infinite}
@keyframes laneSweep{to{transform:translateX(110%)}}
.lane--auto.win{box-shadow:0 0 0 1px rgba(59,224,140,.12),0 26px 64px -36px rgba(59,224,140,.55)}
.lane__head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}
.lane__tag{display:flex;align-items:center;gap:9px;font:500 .72rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
.lane__tag i{width:7px;height:7px;border-radius:50%;background:rgba(255,109,94,.75);flex:none}
.lane--auto .lane__tag i{background:var(--acc);box-shadow:0 0 10px var(--acc)}
.lane.run .lane__tag i{animation:beat 1.6s infinite}
.lane__clock{font:700 clamp(1.25rem,2.6vw,1.7rem)/1 var(--disp);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--mut);transition:color .4s}
.lane--manual.run .lane__clock{color:var(--bad)}
.lane--auto.run .lane__clock,.lane--auto.win .lane__clock{color:var(--acc)}

.lane__track{position:relative;height:2px;background:var(--line);border-radius:2px;margin:0 8px 32px}
.lane__fill{position:absolute;left:0;top:0;height:100%;width:0;border-radius:2px;background:rgba(255,109,94,.8)}
.lane--auto .lane__fill{background:var(--acc);box-shadow:0 0 12px rgba(59,224,140,.5)}
.lane__stop{position:absolute;top:50%;left:var(--x);width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--line);transform:translate(-50%,-50%);transition:border-color .3s,box-shadow .3s}
.lane__stop--ai{border-radius:3px;transform:translate(-50%,-50%) rotate(45deg)}
.lane__stop.hit{border-color:rgba(255,109,94,.85);box-shadow:0 0 0 5px rgba(255,109,94,.12)}
.lane--auto .lane__stop.hit{border-color:var(--acc);box-shadow:0 0 0 5px var(--acc-dim)}
.lane--auto .lane__stop--ai.hit{border-color:var(--amb);box-shadow:0 0 0 5px var(--amb-dim)}
/* Znacznik na torze człowieka w miejscu, w którym automat miał już
   po wszystkim. Przy 250 s vs 2 s wypada tuż za startem — i to jest
   dokładnie ta liczba, którą chcemy pokazać bez tłumaczenia. */
.lane__ghost{position:absolute;left:.8%;top:-15px;bottom:-15px;width:1px;z-index:1;
  background:repeating-linear-gradient(180deg,var(--acc) 0 3px,transparent 3px 7px);
  opacity:0;transform:scaleY(.35);transition:opacity .5s var(--ease),transform .55s cubic-bezier(.34,1.4,.5,1)}
.lane__ghost b{position:absolute;left:11px;top:-10px;font:500 .57rem var(--mono);letter-spacing:.09em;text-transform:uppercase;
  color:var(--acc);white-space:nowrap;background:rgba(12,18,15,.9);padding:3px 8px;border-radius:5px;
  border:1px solid rgba(59,224,140,.32)}
.race.autodone .lane__ghost{opacity:.95;transform:none}
@media (max-width:560px){.lane__ghost b{font-size:.5rem;left:8px}}

.lane__runner{position:absolute;top:50%;left:0;z-index:2;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--bg2);border:1px solid rgba(255,109,94,.55);color:var(--bad);transform:translate(-50%,-50%)}
.lane--auto .lane__runner{width:12px;height:12px;border:0;background:var(--acc);box-shadow:0 0 16px 4px rgba(59,224,140,.5)}
.lane--manual.stuck .lane__runner{animation:laneShake .3s linear infinite;border-color:var(--bad)}
@keyframes laneShake{0%,100%{margin-left:0}25%{margin-left:-2.5px}75%{margin-left:2.5px}}

.lane__steps{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;font:400 .74rem/1.4 var(--mono);color:var(--mut);counter-reset:ls}
.lane__steps--auto{grid-template-columns:repeat(4,1fr)}
.lane__steps li{position:relative;padding-top:11px;border-top:1px solid var(--line);opacity:.5;transition:opacity .35s,color .35s,border-color .35s,transform .35s var(--ease)}
.lane__steps li::before{counter-increment:ls;content:counter(ls);margin-right:7px;opacity:.5}
.lane__steps li.on{opacity:1;color:var(--ink);border-top-color:rgba(255,109,94,.8);transform:translateY(-2px)}
.lane--auto .lane__steps li.on{border-top-color:var(--acc)}
.lane--auto .lane__steps li.on:nth-child(2){border-top-color:var(--amb)}
.lane__note{margin-top:16px;font:400 .76rem var(--mono);color:var(--mut);min-height:1.6em}
/* plakietka: automat skończył, zanim człowiek doszedł do połowy */
.lane__done{margin-left:auto;font:500 .66rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--acc);
  border:1px solid rgba(59,224,140,.45);background:var(--acc-dim);border-radius:5px;padding:5px 10px;white-space:nowrap;
  opacity:0;transform:translateY(-5px) scale(.94);transition:opacity .4s var(--ease),transform .45s cubic-bezier(.34,1.56,.64,1)}
.lane--auto.done .lane__done{opacity:1;transform:none}
@media (max-width:700px){.lane__done{display:none}}
.lane__note b{color:var(--bad);font-weight:500}
.lane--auto .lane__note b{color:var(--acc)}

.race__sum{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(18px,4vw,46px);border:1px dashed var(--line);border-radius:var(--rad);padding:clamp(16px,2.4vw,24px) clamp(18px,3vw,30px);background:linear-gradient(120deg,rgba(59,224,140,.05),transparent 62%)}
.race__stat{display:flex;flex-direction:column;gap:4px}
.race__stat b{font:700 clamp(1.55rem,3.4vw,2.3rem)/1 var(--disp);color:var(--acc);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.race__stat span{font:400 .68rem var(--mono);letter-spacing:.08em;color:var(--mut)}
.race__replay{margin-left:auto;font:500 .66rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);border:1px solid var(--line);border-radius:8px;padding:10px 15px;transition:color .3s,border-color .3s}
.race__replay:hover{color:var(--acc);border-color:var(--acc)}
.race__replay b{margin-right:6px;font-size:.9rem}
.race__foot{margin-top:clamp(22px,3vw,32px);color:var(--mut);max-width:72ch}
.race__foot strong{color:var(--ink)}

@media (max-width:820px){
  .lane__steps{grid-template-columns:repeat(3,1fr)}
  .lane__steps--auto{grid-template-columns:repeat(2,1fr)}
  .race__replay{margin-left:0}
}
@media (max-width:460px){
  .lane__steps,.lane__steps--auto{grid-template-columns:repeat(2,1fr)}
}

/* --- 07: mikro-wizualizacja w kafelkach kroków ------------------- */
.fstep__viz{position:relative;display:flex;align-items:center;justify-content:space-between;width:min(100%,190px);height:16px;margin-top:18px}
.fstep__viz::before{content:'';position:absolute;left:8px;right:8px;top:50%;height:1px;background:var(--line)}
.fstep__viz::after{content:'';position:absolute;left:8px;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--acc);box-shadow:0 0 10px 2px rgba(59,224,140,.5);opacity:0}
.fstep__viz i{position:relative;z-index:1;width:16px;height:16px;border:1px solid var(--line);border-radius:5px;background:var(--panel2);transition:border-color .4s}
.fviz-folder,.fviz-check{border-radius:50%}
.flow[data-step="1"] .fstep[data-n="1"] .fstep__viz i,
.flow[data-step="3"] .fstep[data-n="3"] .fstep__viz i{border-color:rgba(59,224,140,.5)}
.flow[data-step="1"] .fstep[data-n="1"] .fstep__viz::after,
.flow[data-step="3"] .fstep[data-n="3"] .fstep__viz::after{animation:vizRun 2.1s var(--ease) infinite}
@keyframes vizRun{0%{left:8px;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:calc(100% - 8px);opacity:0}}

/* ============================================================
   DOPIESZCZENIA — oś czasu, FAQ, kompozytor, mobilne CTA
   ============================================================ */

/* --- 08 oś czasu: żywsze punkty i numery ------------------------ */
.tl__item{transition:transform .45s var(--ease)}
.tl__item:hover{transform:translateX(5px)}
.tl__item::before{transition:background .4s,box-shadow .45s,transform .45s var(--ease)}
.js .tl__item::before{transform:scale(.2);opacity:0;transition-delay:calc(var(--d,0s) + .15s)}
.js .tl__item.in::before{transform:scale(1);opacity:1;box-shadow:0 0 0 5px rgba(12,155,98,.13)}
.tl__item:hover::before{background:var(--acc);box-shadow:0 0 0 7px rgba(12,155,98,.18)}
.tl__num{transition:-webkit-text-stroke-width .35s,color .35s,letter-spacing .35s}
.tl__item:hover .tl__num{-webkit-text-stroke-width:2px;letter-spacing:0}
/* etap, na którym właśnie jesteś — numer wypełnia się kolorem,
   a punkt na osi dostaje wyraźną obwódkę */
.tl__item.is-active .tl__num{color:var(--acc);-webkit-text-stroke-width:0}
.js .tl__item.is-active::before{background:var(--acc);box-shadow:0 0 0 7px rgba(12,155,98,.16);transform:scale(1.12)}
.js .tl__item h3{transition:color .4s}
.js .tl__item:not(.is-active) h3{color:var(--mut)}

/* --- 10 FAQ: treść wjeżdża po rozwinięciu ----------------------- */
.qa{position:relative}
.qa::after{content:'';position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--acc);
  transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.qa:hover::after,.qa.open::after{transform:scaleX(1)}
.qa__no{transition:color .3s}
.qa:hover .qa__no,.qa.open .qa__no{color:var(--acc)}
.js .qa__inner p{opacity:0;transform:translateY(8px);transition:opacity .45s var(--ease) .14s,transform .45s var(--ease) .14s}
.js .qa.open .qa__inner p{opacity:1;transform:none}
.qa__ic{display:inline-block}

/* --- 11 kompozytor: gotowce ------------------------------------- */
.komp__seed{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;
  font:400 .74rem var(--mono);color:var(--mut)}
.komp__seed span{opacity:.8;margin-right:2px}
.komp__seed button{font:500 .72rem var(--mono);letter-spacing:.03em;color:var(--mut);
  border:1px dashed var(--line);border-radius:999px;padding:6px 13px;
  transition:color .3s,border-color .3s,background .3s,transform .3s var(--ease)}
.komp__seed button:hover{color:var(--acc);border-color:rgba(59,224,140,.5);background:var(--acc-dim);transform:translateY(-2px)}
.komp textarea{transition:border-color .3s,box-shadow .3s,background .3s}
.komp textarea:focus{background:rgba(59,224,140,.02)}
.komp__row .btn--solid[aria-disabled="true"]{filter:saturate(.4)}
.komp{transition:border-color .5s,box-shadow .5s}
.komp.ready{border-color:rgba(59,224,140,.35);box-shadow:0 30px 80px -30px rgba(0,0,0,.7),0 0 0 1px rgba(59,224,140,.09)}
.btn.unlock{animation:btnUnlock .6s cubic-bezier(.34,1.5,.5,1)}
@keyframes btnUnlock{0%{transform:scale(.94)}55%{transform:scale(1.035)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.btn.unlock{animation:none}}

/* --- mobilny pasek CTA ------------------------------------------ */
.mcta{position:fixed;left:12px;right:12px;bottom:12px;z-index:95;display:none;align-items:center;gap:12px;
  padding:11px 12px 11px 16px;border-radius:14px;border:1px solid var(--line);
  background:rgba(12,18,15,.92);backdrop-filter:blur(12px);
  box-shadow:0 18px 44px -18px rgba(0,0,0,.85);
  font:400 .8rem var(--body);color:var(--mut);
  opacity:0;transform:translateY(18px);pointer-events:none;transition:opacity .4s var(--ease),transform .4s var(--ease)}
.mcta.show{opacity:1;transform:none;pointer-events:auto}
.mcta span{flex:1;min-width:0}
.mcta a{flex:none;display:inline-flex;align-items:center;gap:7px;text-decoration:none;
  font:600 .78rem var(--mono);letter-spacing:.05em;text-transform:uppercase;
  color:#07130C;background:var(--acc);border-radius:9px;padding:10px 14px}
.mcta a i{font-style:normal;transition:transform .3s var(--ease)}
.mcta a:hover i{transform:translateX(4px)}
@media (max-width:860px){
  .mcta{display:flex}
  .top{bottom:76px}
}


/* --- scenariusze: pasek odliczający czas kroku ------------------- */
.sim__step{position:absolute;left:0;bottom:0;height:2px;width:100%;z-index:2;transform:scaleX(0);transform-origin:left;
  background:linear-gradient(90deg,var(--acc),var(--amb));opacity:.55;border-radius:2px;pointer-events:none}
@keyframes simStep{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.simtab{min-height:76px}

/* --- karty: delikatny gradient krawędzi przy hoverze ------------ */
.fit__col,.fstep,.simtab,.sim__stage,.pipebox,.komp,.term,.payoff,.mani{position:relative}

/* ============================================================
   OGRANICZONY RUCH — uzupełnienie dla nowych elementów
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  .js .w{opacity:1;transform:none;filter:none}
  .js [data-reveal]{filter:none}
  .in .hl,.hl{background-size:100% .3em}
  .lane--auto.run::after,.pain p::after{animation:none}
  .mcta{transition:none}
  .js .term.typewriter .tline .ok{opacity:1;transform:none}
  .js .tl__item::before{transform:scale(1);opacity:1}
  /* --- elementy dodane później --- */
  .js .mark path{stroke-dasharray:none;stroke-dashoffset:0;animation:none}
  .js .hero__chips.in i,.js .pain.in p::after,.js .pain.in::before{animation:none}
  .js .hero__grid,.js .hero__scroll{transform:none;opacity:1}
  .nav.away{transform:none}
  .pipebox.tilt{--rest:none}
  .pcard [data-p]{opacity:1;transform:none}
  .lane__ghost{transition:none}
  .sim__console .caret{animation:none}
}

/* ================================================================
   PODSTRONY USŁUGOWE
   Osobne adresy (/automatyzacja-fakturowania itd.) korzystają z tego
   samego arkusza co strona główna — poniżej tylko komponenty, których
   jednostronicowy layout nie potrzebował.
   ================================================================ */

/* --- nagłówek podstrony ----------------------------------------- */
.phero{position:relative;padding:calc(104px + clamp(28px,5vw,64px)) 0 clamp(40px,6vw,72px);isolation:isolate}
.phero::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.26;
  background:url('assets/flow-texture.jpg') center/cover no-repeat;
  background-image:image-set(url('assets/flow-texture.webp') type('image/webp'),url('assets/flow-texture.jpg') type('image/jpeg'));
  -webkit-mask-image:radial-gradient(ellipse 70% 80% at 72% 30%,#000,transparent 72%);
  mask-image:radial-gradient(ellipse 70% 80% at 72% 30%,#000,transparent 72%);
}
.phero__title{font:700 clamp(1.95rem,3.9vw,3.1rem)/1.1 var(--disp);letter-spacing:-.025em;max-width:22ch;text-wrap:balance;margin-bottom:22px}
.phero__sub{color:var(--mut);max-width:66ch;display:grid;gap:12px;margin-bottom:28px}
.phero__sub strong{color:var(--ink)}
.phero__sub em{color:var(--acc);font-style:normal;font-family:var(--mono);font-size:.94em}
.phero__ctas{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-bottom:26px}
.phero__chips{display:flex;flex-wrap:wrap;gap:9px 18px;font:400 .74rem var(--mono);letter-spacing:.04em;color:var(--mut)}
.phero__chips span{display:flex;align-items:center;gap:8px}
.phero__chips i{width:6px;height:6px;border-radius:50%;background:var(--acc);flex:none}

/* --- okruszki ---------------------------------------------------- */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:22px;
  font:400 .74rem var(--mono);letter-spacing:.08em;color:var(--mut)}
.crumbs a{color:var(--mut);text-decoration:none;transition:color .3s}
.crumbs a:hover{color:var(--acc)}
.crumbs span[aria-hidden]{opacity:.45}
.crumbs [aria-current]{color:var(--ink)}

/* --- tekst ciągły ------------------------------------------------ */
.prose{max-width:72ch}
.prose p{color:var(--mut);margin-bottom:16px}
.prose p:last-child{margin-bottom:0}
.prose strong{color:var(--ink)}
.prose em{font-style:normal;font-family:var(--mono);font-size:.92em;color:var(--acc)}
.prose a{color:var(--acc);text-underline-offset:4px}
.plist{margin:20px 0;border-top:1px solid var(--line)}
.plist li{color:var(--mut);padding:14px 0 14px 26px;border-bottom:1px solid var(--line);position:relative}
.plist li::before{content:'';position:absolute;left:2px;top:23px;width:8px;height:8px;border-radius:2px;
  background:var(--acc);opacity:.75;transform:rotate(45deg)}
.plist b{color:var(--ink);font-weight:600}

/* --- ilustracja z podpisem --------------------------------------- */
.pfig{margin:0 0 clamp(24px,3.4vw,38px)}
.pfig img{width:100%;height:auto;border-radius:var(--rad);border:1px solid var(--line);background:var(--panel2)}
.pfig figcaption{margin-top:12px;font:400 .8rem var(--mono);color:var(--mut);letter-spacing:.02em;max-width:70ch}

/* --- kroki procesu ----------------------------------------------- */
.psteps{border-top:1px solid var(--line)}
.psteps li{display:grid;grid-template-columns:56px 1fr auto;gap:clamp(12px,2.4vw,28px);align-items:start;
  padding:24px 6px;border-bottom:1px solid var(--line);transition:background .35s}
.psteps li:hover{background:rgba(59,224,140,.04)}
.psteps__no{font:500 .85rem var(--mono);color:var(--mut);padding-top:5px}
.psteps h3{font:600 1.14rem var(--disp);margin-bottom:6px}
.psteps p{color:var(--mut);max-width:62ch;font-size:.97rem}
.psteps__badge{align-self:start;white-space:nowrap;font:600 .66rem var(--mono);letter-spacing:.14em;
  text-transform:uppercase;padding:5px 10px;border-radius:4px}

/* --- reguła kontra AI -------------------------------------------- */
.rai{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2.6vw,30px);align-items:start}
.rai__col{border:1px solid var(--line);border-radius:var(--rad);padding:clamp(22px,3vw,34px);
  background:var(--panel2);transition:transform .4s var(--ease),border-color .4s}
.rai__col--rule{border-top:3px solid var(--acc)}
.rai__col--ai{border-top:3px solid var(--amb)}
.rai__col--empty{border-top-color:rgba(255,180,84,.35);border-style:dashed;background:transparent}
.rai__col:hover{transform:translateY(-4px)}
.rai__col h3{font:600 1.1rem var(--disp);margin-bottom:18px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.rai__tag{font:600 .66rem var(--mono);letter-spacing:.14em;text-transform:uppercase;padding:5px 10px;border-radius:4px}
.rai__col ul{margin-bottom:18px}
.rai__col li{color:var(--mut);padding:8px 0 8px 22px;position:relative;font-size:.95rem;border-bottom:1px solid var(--line)}
.rai__col li:last-child{border-bottom:0}
.rai__col li::before{content:'';position:absolute;left:2px;top:16px;width:7px;height:1px;background:var(--acc)}
.rai__col--ai li::before{background:var(--amb)}
.rai__col p{color:var(--mut);font-size:.95rem;margin-bottom:12px}
.rai__col p:last-child{margin-bottom:0}
.rai__col--rule strong{color:var(--acc)}
.rai__col--ai strong{color:var(--amb)}

/* --- liczby ------------------------------------------------------ */
.pnums{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:clamp(12px,2vw,20px);
  margin:clamp(24px,3.4vw,36px) 0}
.pnum{border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:var(--rad);
  background:linear-gradient(140deg,var(--panel),var(--panel2));padding:22px 24px}
.pnum b{display:block;font:700 clamp(1.9rem,3.4vw,2.6rem)/1 var(--disp);color:var(--acc);
  letter-spacing:-.02em;margin-bottom:8px;font-variant-numeric:tabular-nums}
.pnum span{font:400 .82rem var(--mono);color:var(--mut);line-height:1.6;display:block}

/* --- powiązane strony -------------------------------------------- */
.sec--rel{padding-top:0}
.simlinks__back{margin-top:22px;color:var(--mut);font-size:.95rem}
.simlinks__back a{color:var(--acc);text-underline-offset:4px}

/* --- kontakt na podstronie --------------------------------------- */
.pcta{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(18px,3vw,34px);align-items:start}
.pcta__box{background:linear-gradient(160deg,var(--panel),var(--panel2));border:1px solid var(--line);
  border-radius:var(--rad);padding:clamp(24px,3.6vw,40px);box-shadow:0 30px 80px -34px rgba(0,0,0,.7)}
.pcta__box h3{font:600 1.3rem var(--disp);margin-bottom:12px}
.pcta__box p{color:var(--mut);max-width:52ch}
.pcta__links{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.pcta__meta{border:1px dashed var(--line);border-radius:var(--rad);padding:clamp(20px,3vw,30px)}
.pcta__meta div{padding:11px 0;border-bottom:1px solid var(--line)}
.pcta__meta div:last-child{border-bottom:0}
.pcta__meta dt{font:500 .7rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mut);margin-bottom:5px}
.pcta__meta dd{color:var(--ink);font-size:.95rem}
.pcta__meta a{color:var(--acc);text-decoration:none;text-underline-offset:4px}
.pcta__meta a:hover{text-decoration:underline}
.pcta__seal{margin-top:26px;color:var(--mut);font-size:.95rem;border-left:3px solid var(--acc);padding:6px 0 6px 20px}

@media (max-width:900px){
  .rai{grid-template-columns:1fr}
  .pcta{grid-template-columns:1fr}
}
@media (max-width:640px){
  .psteps li{grid-template-columns:1fr;gap:8px}
  .psteps__no{padding-top:0}
  .psteps__badge{justify-self:start}
}

/* ================================================================
   DOKUMENTY (polityka prywatności, 404)
   ================================================================ */
.phero--doc{padding-bottom:clamp(24px,3.4vw,44px)}
.phero--doc::before{opacity:.16}

.doc{max-width:78ch}
.doc h2{font:700 clamp(1.3rem,2.4vw,1.75rem)/1.2 var(--disp);letter-spacing:-.012em;max-width:none;
  margin:clamp(38px,5vw,56px) 0 16px;padding-top:clamp(24px,3vw,32px);border-top:1px solid var(--line)}
.doc h2:first-child{margin-top:0;padding-top:0;border-top:0}
.doc h3{font:600 1.06rem var(--disp);margin:26px 0 10px;color:var(--ink)}
.doc p{color:var(--mut);margin-bottom:14px}
.doc strong{color:var(--ink)}
.doc a{color:var(--acc);text-underline-offset:4px}
.doc .plist{margin:16px 0 20px}
.doc__highlight{border:1px solid rgba(59,224,140,.35);border-left:3px solid var(--acc);border-radius:var(--rad);
  background:rgba(59,224,140,.05);padding:20px 24px;margin-bottom:16px}
.doc__meta{margin-top:24px;font:400 .78rem var(--mono);letter-spacing:.06em;color:var(--mut)}

/* tabela podstaw prawnych — na wąskim ekranie przewija się sama,
   zamiast rozpychać całą stronę w poziomie */
.ptable-wrap{overflow-x:auto;margin:20px 0 24px;border:1px solid var(--line);border-radius:var(--rad);
  -webkit-overflow-scrolling:touch}
.ptable{width:100%;min-width:640px;border-collapse:collapse;font-size:.92rem}
.ptable th,.ptable td{text-align:left;vertical-align:top;padding:14px 18px;border-bottom:1px solid var(--line)}
.ptable thead th{font:600 .7rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--acc);
  background:var(--panel2);white-space:nowrap}
.ptable tbody tr:last-child td{border-bottom:0}
.ptable td{color:var(--mut)}
.ptable td:first-child{color:var(--ink)}
.ptable tbody tr:hover td{background:rgba(59,224,140,.035)}
