:root{
    --ink:#0A0A0A;
    --paper:#FAF9F7;
    --mist:#F0F0F2;
    --signal:#EA580C;
    --signal-deep:#C2410C;
    --petrol:#14304A;
    --petrol-2:#1C4066;
    --line:rgba(10,10,10,.12);
    --line-strong:rgba(10,10,10,.22);
    --muted:rgba(10,10,10,.58);
    --paper-muted:rgba(250,249,247,.62);
    --display:'Space Grotesk',system-ui,sans-serif;
    --body:'Inter',system-ui,sans-serif;
    --mono:'IBM Plex Mono',ui-monospace,monospace;
    --maxw:1200px;
    --gutter:clamp(20px,5vw,64px);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
  body{
    font-family:var(--body);
    background:var(--paper);
    color:var(--ink);
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
    /* NIE dodawaj tutaj `overflow-x: hidden`.
       Nagłówek jest `position: sticky`. Jakikolwiek `overflow` inny niż
       `visible` na <body> czyni z niego kontener przewijania — a wtedy na
       iOS (Safari i Chrome, oba na WebKicie) sticky nagłówek jest przesuwany
       o wartość scrollY i szerokość strony rośnie proporcjonalnie do
       przewijania: kolumna wpisów „rozjeżdża się” poza ekran.
       Potwierdzone na urządzeniu — wyłączenie sticky usuwało objaw.
       Przycinanie i tak nie jest potrzebne: żaden element nie wystaje poza
       viewport (sprawdzone przy 320, 375 i 1440 px). Jeśli kiedyś coś zacznie
       wystawać — napraw ten element, nie zasłaniaj problemu overflow-em. */
  }
  a{color:inherit;text-decoration:none}
  img,svg{display:block;max-width:100%}
  ::selection{background:var(--signal);color:#fff}

  .wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}

  /* ---------- mono utility / eyebrow ---------- */
  .eyebrow{
    font-family:var(--mono);
    font-size:.72rem;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:var(--signal);
    display:inline-flex;
    align-items:center;
    gap:.6em;
  }
  .eyebrow::before{content:"";width:26px;height:1px;background:var(--signal);display:inline-block}
  .eyebrow.on-dark{color:var(--signal)}

  /* ---------- buttons ---------- */
  .btn{
    font-family:var(--mono);font-size:.82rem;letter-spacing:.04em;
    display:inline-flex;align-items:center;gap:.7em;
    padding:.92em 1.5em;border:1px solid var(--ink);
    background:var(--ink);color:var(--paper);cursor:pointer;
    transition:transform .25s ease, background .25s ease, color .25s ease, border-color .25s ease;
    border-radius:0;position:relative;overflow:hidden;
  }
  .btn:hover{transform:translateY(-2px)}
  .btn .arr{transition:transform .25s ease}
  .btn:hover .arr{transform:translateX(4px)}
  .btn--signal{background:var(--signal);border-color:var(--signal);color:#fff}
  .btn--signal:hover{background:var(--signal-deep);border-color:var(--signal-deep)}
  /* shimmer sweep on signal buttons */
  .btn--signal::after{
    content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;
    background:linear-gradient(120deg,transparent,rgba(255,255,255,.35),transparent);
    transform:skewX(-20deg);transition:left .6s ease;
  }
  .btn--signal:hover::after{left:140%}
  .btn--ghost{background:transparent;color:var(--ink)}
  .btn--ghost:hover{background:var(--ink);color:var(--paper)}

  /* ---------- header ---------- */
  header{
    position:sticky;top:0;z-index:50;
    background:rgba(250,249,247,.82);backdrop-filter:blur(12px);
    border-bottom:1px solid transparent;transition:border-color .3s ease, background .3s ease;
  }
  header.scrolled{border-color:var(--line);background:rgba(250,249,247,.94)}
  .nav{display:flex;align-items:center;justify-content:space-between;height:74px;gap:1rem}
  .brand{display:flex;align-items:center;gap:.85em;line-height:1;min-width:0}
  /* real logo — trimmed, transparent-bg version generated from the source PNG */
  .brand img.logo{height:30px;width:auto;flex:none}
  .brand .partner{font-family:var(--mono);font-size:.54rem;line-height:1.35;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border-left:1px solid var(--line);padding-left:.85em}
  .brand .partner b{color:var(--signal);font-weight:500}
  .nav-links{display:flex;align-items:center;gap:2rem}
  .nav-links a{font-size:.92rem;color:var(--muted);transition:color .2s ease;position:relative}
  .nav-links a:hover{color:var(--ink)}
  .nav-links a::after{content:"";position:absolute;left:0;bottom:-6px;height:1px;width:0;background:var(--signal);transition:width .25s ease}
  .nav-links a:hover::after{width:100%}
  .nav-cta{display:flex;align-items:center;gap:1rem}
  .nav-mobile-cta{display:none}
  .menu-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px}
  .menu-toggle span{width:24px;height:2px;background:var(--ink);transition:transform .3s ease, opacity .3s ease}
  .menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
  .menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

  /* ---------- media (photo) component + fallback ---------- */
  .media{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--petrol) 0%, #0d2136 70%, #081826 100%)}
  .media::before{ /* fallback texture grid, always present behind image */
    content:"";position:absolute;inset:0;opacity:.5;
    background-image:linear-gradient(rgba(250,249,247,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(250,249,247,.05) 1px,transparent 1px);
    background-size:34px 34px;
  }
  .media-img{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
    filter:grayscale(1) contrast(1.06) brightness(.82);
    transition:transform 1.4s cubic-bezier(.16,1,.3,1);will-change:transform;
  }
  .media-img.failed{display:none}
  .media-tint{position:absolute;inset:0;background:linear-gradient(120deg,rgba(20,48,74,.82),rgba(20,48,74,.45) 55%,rgba(234,88,12,.42));mix-blend-mode:multiply}
  .media-tint.lite{background:linear-gradient(120deg,rgba(20,48,74,.6),rgba(234,88,12,.3))}
  .media-cap{position:absolute;bottom:12px;right:14px;z-index:4;font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;color:var(--paper-muted)}
  .media-hud{position:absolute;inset:0;z-index:3;pointer-events:none}
  .media:hover .media-img{transform:scale(1.07)}

  /* ---------- hero ---------- */
  .hero{position:relative;padding:clamp(48px,9vh,104px) 0 clamp(56px,8vh,96px);overflow:hidden}
  .hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,5vw,72px);align-items:center}
  .hero h1{font-family:var(--display);font-weight:600;font-size:clamp(2.2rem,4.4vw,3.5rem);line-height:1.06;letter-spacing:-.02em;margin:1.1rem 0 0;max-width:16ch}
  .hero h1 .sent{display:block;text-wrap:balance}
  .hero h1 .accent{color:var(--signal)}
  .hero h1 .quiet{color:var(--muted);font-weight:400}
  .hero-sub{font-size:clamp(1rem,1.5vw,1.18rem);color:var(--muted);max-width:46ch;margin-top:1.6rem}
  .hero-actions{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2.2rem}
  .hero-meta{margin-top:2.6rem;display:flex;gap:2.4rem;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:1.4rem}
  .hero-meta div{font-family:var(--mono);font-size:.78rem;color:var(--muted)}
  .hero-meta strong{display:block;font-family:var(--display);font-size:1.55rem;color:var(--ink);font-weight:600;letter-spacing:-.01em}

  /* ---------- hero partner badge (the "hook") ---------- */
  .partner-badge{
    display:inline-flex;align-items:center;gap:.7em;margin-bottom:1.4rem;
    font-family:var(--mono);font-size:.72rem;letter-spacing:.04em;
    padding:.5em .9em;border:1px solid var(--line-strong);border-radius:2px;
    background:rgba(234,88,12,.06);color:var(--ink);
  }
  .partner-badge .dotmark{width:7px;height:7px;border-radius:50%;background:var(--signal);flex:none}
  .partner-badge b{font-weight:600}
  .partner-badge .pl{color:var(--signal);font-weight:600}

  /* ---------- hero video placeholder (drop a <video>/<iframe> in later) ---------- */
  .hero-video{position:relative;aspect-ratio:16/10;border-radius:2px;overflow:hidden;
    background:linear-gradient(135deg,var(--petrol) 0%, #0d2136 70%, #081826 100%);
    box-shadow:0 30px 60px -30px rgba(20,48,74,.6);cursor:pointer}
  .hero-video::before{content:"";position:absolute;inset:0;opacity:.5;
    background-image:linear-gradient(rgba(250,249,247,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(250,249,247,.05) 1px,transparent 1px);
    background-size:34px 34px}
  .hero-video .vtint{position:absolute;inset:0;background:linear-gradient(120deg,rgba(20,48,74,.55),rgba(234,88,12,.28))}
  .hero-video .vlabel{position:absolute;top:16px;left:16px;z-index:4;font-family:var(--mono);font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--paper)}
  .hero-video .vlabel b{color:var(--signal);font-weight:600}
  .hero-video .vmedia{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
  /* materiał jest pionowy (9:16) — kafelek dopasowuje się do niego i nie rozpycha hero */
  /* wysokość jest wiodąca — szerokość wylicza się z proporcji. Dzieci są
     pozycjonowane absolutnie, więc width:auto samo w sobie dałoby 0 px. */
  .hero-video.is-video{aspect-ratio:9/16;height:min(72vh,640px);width:auto;max-width:100%;
    justify-self:center;cursor:pointer}
  .hero-video.is-video .vtint{z-index:2;opacity:.42}
  /* Podczas odtwarzania chowamy nakładki, żeby nie zasłaniały napisów w materiale.
     Etykieta "IoTabe × TBD" zostaje — przy autoodtwarzaniu to jedyne brandowanie kafelka. */
  .hero-video.playing .vtint,
  .hero-video.playing .vplay,
  .hero-video.playing .vcap{opacity:0;pointer-events:none}
  .hero-video .vtint,.hero-video .vplay,.hero-video .vcap,.hero-video .vlabel{transition:opacity .35s ease}
  .hero-video .vplay{border:none;background:none;padding:0;font:inherit;cursor:pointer}
  .hero-video .vcap{position:absolute;bottom:14px;left:16px;z-index:4;font-family:var(--mono);font-size:.62rem;letter-spacing:.06em;color:var(--paper-muted)}
  .hero-video .vplay{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:var(--paper)}
  .hero-video .vplay .ring{width:74px;height:74px;border-radius:50%;border:1px solid rgba(250,249,247,.6);display:flex;align-items:center;justify-content:center;background:rgba(234,88,12,.14);transition:transform .3s ease, background .3s ease}
  .hero-video:hover .vplay .ring{transform:scale(1.07);background:rgba(234,88,12,.28)}
  .hero-video .vplay .ring::after{content:"";width:0;height:0;border-style:solid;border-width:11px 0 11px 18px;border-color:transparent transparent transparent var(--paper);margin-left:5px}
  .hero-video .vplay span{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;color:var(--paper-muted)}

  /* ---------- KPI strip (numbers from the deck) ---------- */
  .kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
  .kpi{background:var(--paper);padding:1.8rem 1.2rem;display:flex;flex-direction:column;gap:.35rem}
  .kpi strong{font-family:var(--display);font-weight:700;font-size:clamp(1.8rem,3.4vw,2.6rem);color:var(--signal);line-height:1;letter-spacing:-.01em}
  .kpi span{font-family:var(--mono);font-size:.72rem;letter-spacing:.05em;color:var(--muted);text-transform:uppercase;line-height:1.35}

  /* ---------- 3-up product grid (IoTabe products) ---------- */
  .prodgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
  .prodgrid .card{height:100%}
  .badge-award{display:inline-flex;align-items:center;gap:.5em;margin-top:.9rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.04em;color:var(--signal);border:1px solid var(--signal);border-radius:2px;padding:.4em .7em;align-self:flex-start}
  .badge-award svg{flex:none}

  /* ---------- Antdata ecosystem strip ---------- */
  .ecosystem{margin-top:clamp(28px,4vw,44px);border-top:1px solid var(--line);padding-top:1.6rem;display:flex;flex-wrap:wrap;align-items:center;gap:.9rem 1.8rem}
  .ecosystem .lab{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
  .ecosystem .brands{display:flex;flex-wrap:wrap;gap:.9rem 1.6rem}
  .ecosystem .brands span{font-family:var(--display);font-weight:600;font-size:.98rem;color:var(--ink);opacity:.72}
  .ecosystem .brands span.me{color:var(--signal);opacity:1}

  /* ---------- referencyjne wdrożenia IoTabe ---------- */
  .refcases-head{margin-top:clamp(44px,6vw,72px);padding-top:clamp(28px,4vw,44px);border-top:1px solid var(--line)}
  .refcases-head p{color:var(--muted);margin-top:.8rem;max-width:60ch}
  .refcases{display:grid;grid-template-columns:1fr;gap:24px;margin-top:clamp(18px,2.5vw,26px)}
  .refcase{border:1px solid var(--line);background:var(--paper);padding:clamp(24px,3vw,36px);display:flex;flex-direction:column;transition:border-color .3s ease, transform .3s ease, box-shadow .3s ease}
  .refcase:hover{border-color:var(--ink);transform:translateY(-4px);box-shadow:0 24px 48px -28px rgba(10,10,10,.35)}
  .rc-tag{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--signal)}
  .refcase h3{font-family:var(--display);font-weight:600;font-size:1.35rem;line-height:1.2;margin:.7rem 0 .6rem}
  .refcase p{color:var(--muted);font-size:.95rem}
  .refcase ul{list-style:none;margin:1.1rem 0;display:flex;flex-direction:column;gap:.5rem}
  .refcase li{font-size:.9rem;padding-left:1.4em;position:relative}
  .refcase li::before{content:"→";position:absolute;left:0;color:var(--signal);font-family:var(--mono)}
  .rc-tech{font-family:var(--mono);font-size:.7rem;color:var(--muted);letter-spacing:.03em;border-top:1px dashed var(--line);padding-top:.9rem;margin:auto 0 1.1rem}
  @media(max-width:900px){.refcases{grid-template-columns:1fr}}

  /* ---------- IDI chip ---------- */
  .idi-head-row{display:flex;align-items:center;gap:14px}
  .idi-chip{flex:none;width:52px;height:52px;background:var(--paper);border-radius:12px;display:flex;align-items:center;justify-content:center;padding:7px}
  .idi-chip img{width:100%;height:100%;object-fit:contain}

  /* ---------- certyfikat ---------- */
  .cert{margin-top:clamp(28px,4vw,44px);background:var(--paper);border:1px solid var(--line);display:flex;gap:clamp(20px,3vw,36px);padding:clamp(20px,3vw,32px);align-items:center}
  .cert-thumb{flex:none;width:120px;border:1px solid var(--line);box-shadow:0 14px 30px -18px rgba(10,10,10,.35);transition:transform .3s ease}
  .cert-thumb:hover{transform:translateY(-3px)}
  .cert-thumb img{display:block;width:100%}
  .cert-body h3{font-family:var(--display);font-weight:600;font-size:1.25rem;margin:.5rem 0 .4rem}
  .cert-body p{color:var(--muted);font-size:.95rem;max-width:60ch}
  .cert-link{font-family:var(--mono);font-size:.82rem;border-bottom:1px solid var(--ink);padding-bottom:2px;display:inline-block;margin-top:.8rem}
  .cert-link:hover{color:var(--signal);border-color:var(--signal)}
  @media(max-width:640px){.cert{flex-direction:column;text-align:center}.cert-body p{margin:0 auto}}

  /* ---------- Case study ---------- */
  .case-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(28px,4vw,56px);align-items:stretch;margin-top:clamp(24px,3vw,40px)}
  .case-metrics{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line)}
  .case-metric{background:var(--paper);padding:1.6rem;display:flex;flex-direction:column;justify-content:center;gap:.3rem;flex:1}
  .case-metric strong{font-family:var(--display);font-weight:700;font-size:clamp(1.9rem,3.6vw,2.7rem);color:var(--signal);line-height:1}
  .case-metric span{font-family:var(--mono);font-size:.72rem;letter-spacing:.05em;color:var(--muted);text-transform:uppercase}
  .case-body{border:1px solid var(--line);background:var(--paper);padding:clamp(26px,3vw,40px);display:flex;flex-direction:column;gap:1.1rem}
  .case-body .ph{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--signal)}
  .case-body h3{font-family:var(--display);font-weight:600;font-size:1.35rem;color:var(--muted)}
  .case-links{display:flex;flex-wrap:wrap;gap:1rem 1.6rem;align-items:center}
  .case-quote{border-left:2px solid var(--signal);padding-left:1.1rem;color:var(--muted);font-size:1.05rem;font-style:italic}
  .case-quote cite{display:block;margin-top:.7rem;font-style:normal;font-family:var(--mono);font-size:.74rem;letter-spacing:.05em;color:var(--ink)}
  .case-fill{color:var(--muted);font-size:.95rem}
  .case-fill .dash{display:inline-block;min-width:8ch;border-bottom:1px dashed var(--line-strong);color:transparent}

  /* ---------- generic section ---------- */
  .section{padding:clamp(64px,10vh,128px) 0}
  .section--mist{background:var(--mist)}
  .section--ink{background:var(--ink);color:var(--paper)}
  .section--petrol{background:var(--petrol);color:var(--paper)}
  .section-head{max-width:62ch;margin-bottom:clamp(36px,5vw,64px)}
  .section-head h2{font-family:var(--display);font-weight:600;font-size:clamp(1.8rem,3.6vw,2.9rem);line-height:1.08;letter-spacing:-.02em;margin-top:1rem}
  .section-head p{color:var(--muted);margin-top:1.1rem;font-size:1.06rem}
  .section--ink .section-head p,.section--petrol .section-head p{color:var(--paper-muted)}

  /* ---------- about with side media ---------- */
  .about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(32px,5vw,64px);align-items:center;margin-top:clamp(28px,4vw,48px)}
  .about-media{aspect-ratio:4/5;border-radius:2px}

  /* ---------- pillars strip ---------- */
  .pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .pillar{padding:2rem 1.8rem 2rem 0;display:flex;flex-direction:column;gap:.5rem}
  .pillar + .pillar{border-left:1px solid var(--line);padding-left:2rem}
  .pillar .n{font-family:var(--mono);font-size:.72rem;color:var(--signal);letter-spacing:.1em}
  .pillar h3{font-family:var(--display);font-weight:600;font-size:1.3rem}
  .pillar p{color:var(--muted);font-size:.95rem}

  /* ---------- product cards ---------- */
  .cards{display:grid;grid-template-columns:1fr 1fr;gap:24px}
  .card{position:relative;border:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column;transition:border-color .3s ease, transform .3s ease, box-shadow .3s ease;overflow:hidden}
  .card:hover{border-color:var(--ink);transform:translateY(-4px);box-shadow:0 24px 48px -28px rgba(10,10,10,.35)}
  .card-media{height:180px;width:100%}
  .card-body{padding:clamp(26px,3.2vw,40px);display:flex;flex-direction:column;flex-grow:1}
  .card .tag{font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
  .card h3{font-family:var(--display);font-weight:700;font-size:clamp(1.8rem,3vw,2.4rem);margin:.6rem 0 .2rem;letter-spacing:-.01em}
  .card h3 .dot{color:var(--signal)}
  .card .lead{color:var(--muted);font-size:1rem;margin-top:.8rem;flex-grow:1}
  .card ul{list-style:none;margin:1.4rem 0;display:flex;flex-direction:column;gap:.6rem}
  .card li{font-size:.92rem;padding-left:1.4em;position:relative;color:var(--ink)}
  .card li::before{content:"→";position:absolute;left:0;color:var(--signal);font-family:var(--mono)}
  .card .card-link{font-family:var(--mono);font-size:.82rem;color:var(--ink);display:inline-flex;gap:.5em;align-items:center;border-bottom:1px solid var(--ink);padding-bottom:2px;align-self:flex-start;transition:gap .25s ease}
  .card .card-link:hover{gap:.9em}
  .card--accent{background:var(--petrol);color:var(--paper);border-color:var(--petrol)}
  .card--accent:hover{border-color:var(--signal)}
  .card--accent .tag,.card--accent .lead{color:var(--paper-muted)}
  .card--accent li{color:var(--paper)}
  .card--accent .card-link{color:var(--paper);border-color:var(--paper)}

  /* ---------- full-width image band (parallax) ---------- */
  .band{position:relative;min-height:clamp(360px,52vh,520px);display:flex;align-items:center;overflow:hidden;color:var(--paper)}
  .band-media{position:absolute;inset:-12% 0;height:124%}
  .band-media .media-img{filter:grayscale(1) contrast(1.05) brightness(.7)}
  .band-content{position:relative;z-index:5}
  .band-content h2{font-family:var(--display);font-weight:600;font-size:clamp(1.9rem,4vw,3.2rem);line-height:1.06;letter-spacing:-.02em;max-width:18ch;margin-top:1rem}
  .band-stats{display:flex;gap:clamp(24px,5vw,64px);margin-top:2.4rem;flex-wrap:wrap}
  .band-stat strong{display:block;font-family:var(--display);font-weight:700;font-size:clamp(2rem,4vw,3rem);color:var(--signal);line-height:1}
  .band-stat span{font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;color:var(--paper-muted);text-transform:uppercase}

  /* ---------- process ---------- */
  .steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;counter-reset:step}
  .step{padding:0 1.6rem;position:relative}
  .step:first-child{padding-left:0}
  .step + .step::before{content:"";position:absolute;left:0;top:8px;bottom:0;width:1px;background:var(--line)}
  .step .num{font-family:var(--mono);font-size:.78rem;color:var(--signal);letter-spacing:.1em}
  .step .tnode{width:11px;height:11px;border-radius:50%;background:var(--signal);margin:1.1rem 0;box-shadow:0 0 0 5px rgba(234,88,12,.14)}
  .step h3{font-family:var(--display);font-weight:600;font-size:1.22rem;margin-bottom:.5rem}
  .step .tag{font-family:var(--mono);font-size:.68rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;display:block;margin-bottom:.7rem}
  .step p{color:var(--muted);font-size:.92rem}

  /* ---------- benefits ---------- */
  .benefits{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
  .benefit{background:var(--paper);padding:2rem 1.6rem;display:flex;flex-direction:column;gap:.7rem;min-height:240px;transition:background .3s ease}
  .benefit:hover{background:#fff}
  .benefit .ico{color:var(--signal)}
  .benefit .ico svg{transition:transform .4s ease}
  .benefit:hover .ico svg{transform:translateY(-3px) scale(1.08)}
  .benefit h3{font-family:var(--display);font-weight:600;font-size:1.18rem;margin-top:.2rem}
  .benefit p{color:var(--muted);font-size:.9rem;margin-top:auto}

  /* ---------- IDI panel ---------- */
  .idi-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(32px,5vw,64px);align-items:center}
  .gauge-wrap{display:flex;flex-direction:column;align-items:center;gap:1.2rem}
  .gauge{position:relative;width:100%;max-width:320px}
  .gauge .center-val{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
  .gauge .center-val .v{font-family:var(--display);font-size:3.2rem;font-weight:700;color:var(--paper);line-height:1}
  .gauge .center-val .l{font-family:var(--mono);font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--paper-muted);margin-top:.3rem}
  .gauge-caption{font-family:var(--mono);font-size:.72rem;color:var(--paper-muted);text-align:center;letter-spacing:.04em}
  .areas{display:flex;flex-direction:column;gap:1.05rem}
  .area{display:grid;grid-template-columns:auto 1fr auto;gap:.9rem;align-items:center}
  .area .ai{font-family:var(--mono);font-size:.72rem;color:var(--signal)}
  .area .an{font-size:.95rem;color:var(--paper)}
  .area .bar{grid-column:1/-1;height:2px;background:rgba(250,249,247,.16);position:relative;overflow:hidden}
  .area .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--signal);width:0;transition:width 1.1s cubic-bezier(.16,1,.3,1)}

  /* ---------- CTA / contact ---------- */
  .cta-sec{position:relative;overflow:hidden}
  .cta-bg{position:absolute;inset:0;z-index:0}
  .cta-bg .media-img{filter:grayscale(1) contrast(1.1) brightness(.5);opacity:.5}
  .cta-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(10,10,10,.92),rgba(10,10,10,.72))}
  .cta-grid{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,72px)}
  .cta-copy h2{font-family:var(--display);font-weight:600;font-size:clamp(2rem,4vw,3.2rem);line-height:1.05;letter-spacing:-.02em;margin:1rem 0 1.2rem}
  .cta-copy p{color:var(--paper-muted);font-size:1.06rem;max-width:44ch}
  .cta-contact{margin-top:2.4rem;display:flex;flex-direction:column;gap:1rem;font-family:var(--mono);font-size:.86rem;color:var(--paper-muted)}
  .cta-contact a{color:var(--paper);border-bottom:1px solid rgba(250,249,247,.3);padding-bottom:1px}
  .cta-contact a:hover{border-color:var(--signal)}
  .form{display:flex;flex-direction:column;gap:1.1rem}
  .field label{display:block;font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--paper-muted);margin-bottom:.5rem}
  .field input,.field textarea{width:100%;background:transparent;border:none;border-bottom:1px solid rgba(250,249,247,.28);color:var(--paper);font-family:var(--body);font-size:1rem;padding:.6rem 0;transition:border-color .25s ease}
  .field input:focus,.field textarea:focus{outline:none;border-color:var(--signal)}
  .field textarea{resize:vertical;min-height:80px}
  .interest{display:flex;flex-wrap:wrap;gap:.6rem;margin:.3rem 0 .4rem}
  .interest button{font-family:var(--mono);font-size:.74rem;letter-spacing:.04em;border:1px solid rgba(250,249,247,.28);background:transparent;color:var(--paper-muted);padding:.5em 1em;cursor:pointer;transition:.25s}
  .interest button[aria-pressed="true"]{background:var(--signal);border-color:var(--signal);color:#fff}
  .form-note{font-family:var(--mono);font-size:.72rem;color:var(--paper-muted);line-height:1.5}
  .form-success{display:none;border:1px solid var(--signal);padding:1.2rem;font-family:var(--mono);font-size:.85rem;color:var(--paper)}
  .form-success.show{display:block}
  .form-error{display:none;font-family:var(--mono);font-size:.76rem;line-height:1.5;color:var(--signal)}
  .form-error.show{display:block}
  .hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
  .cf-turnstile{min-height:65px}
  #submitBtn[disabled]{cursor:wait;pointer-events:none}

  /* ---------- footer ---------- */
  footer{background:var(--paper);padding:clamp(48px,7vh,80px) 0 2.4rem;border-top:1px solid var(--line)}
  .foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2.4rem;padding-bottom:3rem}
  .foot-brand .mark{font-family:var(--display);font-weight:700;font-size:1.6rem}
  .foot-brand .mark b{color:var(--signal)}
  .foot-brand p{color:var(--muted);font-size:.92rem;max-width:34ch;margin-top:1rem}
  .foot-tag{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:1.2rem}
  .foot-col h4{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:1.1rem}
  .foot-col a{display:block;font-size:.94rem;color:var(--ink);padding:.32rem 0;transition:color .2s}
  .foot-col a:hover{color:var(--signal)}
  .foot-bottom{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:1.6rem;font-family:var(--mono);font-size:.74rem;color:var(--muted)}
  .foot-bottom .legal{display:flex;gap:1.4rem}
  .foot-bottom .legal a:hover{color:var(--ink)}

  /* ---------- reveal animation ---------- */
  .reveal{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
  .reveal.in{opacity:1;transform:none}
  .reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}.reveal.d4{transition-delay:.32s}

  /* ---------- responsive ---------- */
  @media(max-width:980px){
    .hero-grid{grid-template-columns:1fr}
    .hero-video{max-width:560px;margin-top:1rem}
    .about-grid{grid-template-columns:1fr}
    .about-media{aspect-ratio:16/10;max-height:360px}
    .cards{grid-template-columns:1fr}
    .prodgrid{grid-template-columns:1fr}
    .kpis{grid-template-columns:repeat(2,1fr)}
    .case-grid{grid-template-columns:1fr}
    .steps{grid-template-columns:1fr 1fr;gap:2.4rem 1.6rem}
    .step + .step::before{display:none}
    .step{padding-left:0}
    .benefits{grid-template-columns:1fr 1fr}
    .idi-grid{grid-template-columns:1fr;gap:2.6rem}
    .gauge{max-width:260px}
    .cta-grid{grid-template-columns:1fr}
    .foot-top{grid-template-columns:1fr 1fr}
  }
  /* nav collapses to a drawer well before the links would crowd the logo */
  @media(max-width:920px){
    /* iOS (Safari i Chrome — oba na WebKicie) błędnie liczy sticky <header>,
       który zawiera element `position:fixed` (mobilne .nav-links poniżej):
       szerokość strony rośnie proporcjonalnie do scrollY i kolumna treści
       „rozjeżdża się” poza ekran. Potwierdzone na urządzeniu — wyłączenie
       sticky (position:static) usuwa objaw, usunięcie backdrop-filter NIE.
       Na mobile nagłówek przewija się więc razem z treścią.
       Desktop zachowuje sticky (tam błąd nie występuje).

       MUSI to być `relative`, a NIE `static`: z-index działa wyłącznie na
       elementach pozycjonowanych. Przy `static` nagłówek tracił swój
       z-index:50, więc rozwinięte menu chowało się pod sekcjami strony
       głównej (przezroczyste tło, nieklikalne odnośniki). */
    header{position:relative;z-index:50}

    .nav-links{position:fixed;inset:74px 0 auto 0;background:var(--paper);flex-direction:column;align-items:stretch;gap:0;padding:1rem var(--gutter) 1.4rem;border-bottom:1px solid var(--line);box-shadow:0 24px 40px -28px rgba(10,10,10,.4);transform:translateY(-145%);transition:transform .35s ease;max-height:calc(100vh - 74px);overflow-y:auto}
    .nav-links.open{transform:translateY(0)}
    .nav-links a{width:100%;padding:.95rem 0;font-size:1.05rem;border-bottom:1px solid var(--line)}
    .nav-links a::after{display:none}
    .nav-mobile-cta{display:inline-flex;justify-content:center;margin-top:1.1rem;border-bottom:none!important;padding:.95em 1.5em!important;font-size:.86rem!important}
    .nav-cta .btn--signal{display:none}
    .menu-toggle{display:flex}
  }
  @media(max-width:640px){
    .kpis{grid-template-columns:1fr}
    .brand .partner{display:none}
    .pillars{grid-template-columns:1fr}
    .pillar + .pillar{border-left:none;border-top:1px solid var(--line);padding-left:0}
    .steps{grid-template-columns:1fr}
    .benefits{grid-template-columns:1fr}
    .foot-top{grid-template-columns:1fr}
    .hero-meta{gap:1.6rem}
  }
  @media(prefers-reduced-motion:reduce){
    *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
    html{scroll-behavior:auto}
    .reveal{opacity:1;transform:none}
  }

  /* ---------- case study: lista wpisów ---------- */
  .cs-hero{padding:calc(74px + clamp(48px,8vh,90px)) 0 clamp(48px,7vh,80px)}
  .cs-hero h1{font-family:var(--display);font-weight:600;font-size:clamp(2rem,4.4vw,3.1rem);
    line-height:1.06;letter-spacing:-.02em;margin-top:1rem}
  .cs-hero p{color:var(--paper-muted);margin-top:1.1rem;font-size:1.06rem;max-width:62ch}

  /* pasek filtrów — odpowiednik kategorii z listy case studies na maweb */
  .cs-filters{display:flex;flex-wrap:wrap;gap:.7rem;margin-bottom:clamp(24px,3.4vw,40px)}
  .cs-filter{display:inline-flex;align-items:center;gap:.65em;font-family:var(--mono);font-size:.75rem;
    letter-spacing:.04em;border:1px solid var(--line-strong);background:transparent;color:var(--muted);
    padding:.62em 1em;cursor:pointer;transition:background .25s ease,border-color .25s ease,color .25s ease}
  .cs-filter:hover{border-color:var(--ink);color:var(--ink)}
  .cs-filter[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
  .cs-filter .n{display:inline-flex;align-items:center;justify-content:center;min-width:1.75em;height:1.75em;
    border-radius:50%;background:var(--line);font-size:.88em;line-height:1}
  .cs-filter[aria-pressed="true"] .n{background:var(--signal);color:#fff}

  .cs-list{display:flex;flex-direction:column}
  .cs-post{border-top:1px solid var(--line);padding:clamp(26px,3.4vw,42px) 0}
  .cs-post:last-of-type{border-bottom:1px solid var(--line)}
  .cs-post[hidden]{display:none}
  .cs-post-inner{display:grid;grid-template-columns:1fr minmax(240px,300px);
    gap:clamp(22px,3.2vw,48px);align-items:start}

  .cs-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;margin-bottom:.9rem}
  .cs-tag{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;
    background:var(--signal);color:#fff;padding:.45em .85em}
  .cs-tag--quiet{background:transparent;color:var(--muted);border:1px solid var(--line-strong)}
  .cs-kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:.05em;color:var(--muted)}

  .cs-post h2{font-family:var(--display);font-weight:600;font-size:clamp(1.35rem,2.5vw,1.9rem);
    line-height:1.16;letter-spacing:-.01em;margin-bottom:.7rem}
  .cs-post h2 a{transition:color .2s ease}
  .cs-post h2 a:hover{color:var(--signal)}
  .cs-excerpt{color:var(--muted);max-width:64ch}

  .cs-figures{display:flex;flex-wrap:wrap;gap:1.8rem;margin:1.3rem 0 1.4rem}
  .cs-figure strong{display:block;font-family:var(--display);font-weight:700;font-size:1.45rem;
    color:var(--signal);line-height:1;margin-bottom:.25rem}
  .cs-figure span{font-family:var(--mono);font-size:.65rem;letter-spacing:.06em;
    text-transform:uppercase;color:var(--muted)}

  .cs-aside{display:flex;flex-direction:column;gap:1rem}
  .cs-thumb{display:block;aspect-ratio:4/3;overflow:hidden;border:1px solid var(--line);background:var(--mist)}
  .cs-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
  .cs-post:hover .cs-thumb img{transform:scale(1.04)}

  .cs-empty{padding:clamp(28px,4vw,44px) 0;font-family:var(--mono);font-size:.85rem;color:var(--muted)}
  .cs-empty[hidden]{display:none}

  /* powrót do listy na stronach pojedynczych wpisów */
  .cs-back{display:inline-block;font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;
    color:var(--muted);margin-bottom:1.6rem}
  .cs-back:hover{color:var(--signal)}

  @media(max-width:820px){
    .cs-post-inner{grid-template-columns:1fr}
    /* wskazniki: siatka zamiast zawijanego flexa, zeby nie robily sie 3 wiersze */
    .cs-figures{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem 1.2rem;margin:1.1rem 0 1.3rem}
    .cs-figure strong{font-size:1.3rem}
    .cs-figure span{font-size:.62rem;line-height:1.35}
    /* miniatura nad treścią — tak jak flex-column-reverse w kartach maweb */
    .cs-aside{order:-1}
    .cs-thumb{aspect-ratio:16/9}
  }
