@font-face{
  font-family:'Archivo';font-style:normal;font-weight:600 700;font-display:swap;
  src:url(fonts/archivo.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 600;font-display:swap;
  src:url(fonts/ibm-plex-sans.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:400;font-display:swap;
  src:url(fonts/ibm-plex-mono-400.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.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}

/* metric-compatible fallbacks — Arial/Helvetica metrics, per-weight overrides */
@font-face{font-family:'Archivo Fallback';font-style:normal;font-weight:600;
  src:local('Arial'),local('Helvetica'),local('Liberation Sans');
  size-adjust:102.02%;ascent-override:86.07%;descent-override:20.59%;line-gap-override:0%;
  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:'Archivo Fallback';font-style:normal;font-weight:700;
  src:local('Arial'),local('Helvetica'),local('Liberation Sans');
  size-adjust:105.48%;ascent-override:83.24%;descent-override:19.91%;line-gap-override:0%;
  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 Fallback';font-style:normal;font-weight:400;
  src:local('Arial'),local('Helvetica'),local('Liberation Sans');
  size-adjust:100.45%;ascent-override:102.04%;descent-override:27.38%;line-gap-override:0%;
  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 Fallback';font-style:normal;font-weight:500;
  src:local('Arial'),local('Helvetica'),local('Liberation Sans');
  size-adjust:102.55%;ascent-override:99.96%;descent-override:26.82%;line-gap-override:0%;
  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 Fallback';font-style:normal;font-weight:600;
  src:local('Arial'),local('Helvetica'),local('Liberation Sans');
  size-adjust:103.90%;ascent-override:98.65%;descent-override:26.47%;line-gap-override:0%;
  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 Fallback';font-style:normal;font-weight:400 500;
  src:local('Arial'),local('Helvetica'),local('Liberation Sans');
  size-adjust:130.18%;ascent-override:78.74%;descent-override:21.12%;line-gap-override:0%;
  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}

:root{
  --bg:#0D0F13; --bg-2:#12151B; --panel:#161A21;
  --line:#242A35; --line-soft:#1B2029;
  --text:#E9ECF1; --muted:#8B93A3; --accent:#E8A33D;
  --status-ok:#4ADE80; --status-warn:#F2C94C;
  --tutor:#3D7BFF; --teller:#E0669E; --anyverse:#56C8FF;
  --dhub:#8B6CFF; --rstud:#94D82D; --radar:#2FD6A6; --vera:#43C6C0; --lang:#FF6E5C;
  --disp:'Archivo','Archivo Fallback',sans-serif;
  --sans:'IBM Plex Sans','IBM Plex Sans Fallback',sans-serif;
  --mono:'IBM Plex Mono','IBM Plex Mono Fallback',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.wrap{max-width:1200px;margin:0 auto;padding:0 28px}
.skip{position:absolute;left:-9999px;top:0;z-index:200;font-family:var(--mono);font-size:13px;background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:12px 18px}
.skip:focus{left:28px;top:12px}

/* engineering grid — konstrukcja */
.gridbg{position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000 30%,transparent 80%);
  -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000 30%,transparent 80%)}
header,main,footer{position:relative;z-index:1}

/* ============ ZAMROŻONY ALFABET KRESKI ============
   .s   1.5 --line    struktura drugoplanowa
   .s2  1.5 --muted   struktura pierwszoplanowa (tylko Field, §3)
   .e   2   product   emphasis w glyphach
   .a   2   --accent  jedna aktywna ścieżka Fielda (§7 poz. 8)
   .n/.nc  węzeł r4.5 --muted, obrysowany / rdzeniowy         */
.s{fill:none;stroke:var(--line);stroke-width:1.5}
.s2{fill:none;stroke:var(--muted);stroke-width:1.5}
.e{fill:none;stroke:var(--pc);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.a{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.n{fill:var(--surface,var(--bg));stroke:var(--muted);stroke-width:1.5}
.nc{fill:var(--nfill,var(--muted));stroke:none}


/* ---- reveal — §7: jeden wrapper na sekcję, 380ms, bez staggeru ---- */
.rv{opacity:1}
.js .rv{opacity:0;transform:translateY(8px);transition:opacity .38s ease,transform .38s ease}
.js .rv.in{opacity:1;transform:none}

/* ============ NAV ============ */
header{position:sticky;top:0;z-index:100;background:rgba(13,15,19,.88);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft)}
.nav{display:flex;align-items:center;justify-content:space-between;height:62px}
.logo{display:flex;align-items:center;padding:7px 0;margin:-7px 0}
.logo img{display:block;height:40px;width:120px}
.nav nav{display:flex;gap:4px;font-family:var(--mono);font-size:13px}
.nav nav a{padding:12px 14px;margin:-2px 0;color:var(--muted);border-radius:4px;transition:color .15s}
.nav nav a:hover{color:var(--text)}

/* ============ SEKCJE ============ */
section{padding:104px 0;border-bottom:1px solid var(--line-soft)}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:var(--muted);text-transform:uppercase;display:flex;align-items:center;gap:12px;margin-bottom:20px}
.eyebrow b{color:var(--accent);font-weight:500}
.eyebrow::after{content:"";height:1px;background:var(--line);flex:0 1 120px}
h2{font-family:var(--disp);font-weight:600;font-size:42px;line-height:1.12;letter-spacing:-.015em;max-width:20em}
.lede{color:var(--muted);max-width:40em;margin-top:16px;font-size:17px}
.lede b{color:var(--text);font-weight:500}
.alt{background:var(--bg-2)}

/* ============ HERO — teza lewo / Field prawo ============ */
.hero{padding:120px 0 100px}
.hero-grid{display:grid;grid-template-columns:minmax(0,660px) minmax(0,440px);gap:44px;align-items:center}
.hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(38px,5.6vw,72px);line-height:1.04;letter-spacing:-.025em}
.hero h1 span{color:var(--accent)}
.hero .sub{color:var(--muted);font-size:19px;max-width:38em;margin:28px 0 40px}
.btns{display:flex;gap:14px;flex-wrap:wrap}
.btn{font-family:var(--mono);font-size:14px;padding:13px 26px;border-radius:4px;border:1px solid var(--line);transition:border-color .15s,color .15s,background .15s}
.btn.primary{background:var(--text);color:var(--bg);border-color:var(--text);font-weight:500}
.btn.primary:hover{background:#fff}
.btn.ghost:hover{border-color:var(--accent);color:var(--accent)}
.tagline{margin-top:64px;padding-top:28px;border-top:1px solid var(--line-soft);font-family:var(--mono);font-size:13px;color:var(--muted);display:flex;gap:10px;flex-wrap:wrap}
.tagline i{font-style:normal;color:var(--line)}
.tagline b{font-weight:400;color:var(--text)}
.field-desk{width:440px;height:393px}
.field-mob{display:none;width:334px;height:295px}
.field-desk svg,.field-mob svg{display:block;width:100%;height:100%}

/* ============ 01 — karty edytorskie + glyph + atmosphere ============ */
.pgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-top:52px}
.card{--gs:140px;--surface:var(--panel);--nfill:var(--pc);
  background-color:var(--panel);border:1px solid var(--line);border-radius:10px;padding:30px;position:relative;
  display:grid;grid-template-columns:minmax(0,1fr) var(--gs);grid-template-rows:auto auto 1fr auto;
  grid-template-areas:"meta meta" "title glyph" "body glyph" "cta glyph";
  column-gap:28px;row-gap:14px;transition:border-color .2s,transform .2s}
.card:hover{border-color:var(--pc);transform:translateY(-3px)}
.card.wash{background-image:radial-gradient(120% 92% at 100% 0%,color-mix(in srgb,var(--pc) 8%,transparent) 0%,transparent 62%)}
.meta{grid-area:meta;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase}
.cat{color:var(--pc);position:relative;padding-left:16px}
.cat::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:8px;height:2px;background:var(--pc)}
.status{color:var(--muted);display:flex;align-items:center;gap:7px;white-space:nowrap}
.status::before{content:"";width:6px;height:6px;border-radius:50%;flex:none}
.status.ok{color:var(--status-ok)} .status.ok::before{background:var(--status-ok)}
.status.warn{color:var(--status-warn)} .status.warn::before{background:var(--status-warn)}
.status.idle::before{background:transparent;border:1px solid var(--muted)}
.status.outline::before{background:transparent;border:1px solid currentColor}
.card h3{grid-area:title;font-family:var(--disp);font-weight:600;font-size:22px;letter-spacing:-.01em}
.card p.desc{grid-area:body;color:var(--muted);font-size:15.5px}
.card .go{grid-area:cta;justify-self:start;align-self:end;font-family:var(--mono);font-size:13px;display:inline-flex;gap:8px;align-items:center;padding:12px 0;margin:-12px 0}
.card .go::after{content:"→";color:var(--pc);transition:transform .15s}
.card:hover .go::after{transform:translateX(4px)}
.glyph{grid-area:glyph;width:var(--gs);height:var(--gs);align-self:center;justify-self:end;opacity:.92;transition:opacity .2s}
.card:hover .glyph{opacity:1}
.glyph svg{display:block;width:100%;height:100%}
.card.flag{--gs:200px;grid-column:1 / -1;padding:44px 40px;column-gap:44px;row-gap:18px;
  grid-template-rows:auto auto auto 1fr auto;
  grid-template-areas:"meta meta" "title glyph" "body glyph" "stats glyph" "cta glyph"}
.card.flag h3{font-size:32px}
.card.flag p.desc{font-size:16.5px}
.fstats{grid-area:stats;display:flex;flex-wrap:wrap;border-top:1px solid var(--line-soft);padding-top:20px}
.fstats div{padding-right:30px;margin-right:30px;border-right:1px solid var(--line-soft)}
.fstats div:last-child{border-right:none}
.fstats b{display:block;font-family:var(--disp);font-weight:600;font-size:24px}
.fstats span{font-family:var(--mono);font-size:11.5px;color:var(--muted);letter-spacing:.06em}

/* ============ 02 — Loop Circuit (zamrożony, bez zmian) ============ */
.circuit-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:center;margin-top:64px}
.circuit-box{position:relative;aspect-ratio:1/1;max-width:560px;margin:0 auto;width:100%}
.circuit-box svg{position:absolute;inset:0;width:100%;height:100%}
.ring{fill:none;stroke:var(--line);stroke-width:1.5}
.chev{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.node-dot{fill:var(--bg-2);stroke:var(--muted);stroke-width:1.5}
.n-label{position:absolute;transform:translate(-50%,-50%);font-family:var(--mono);font-size:13px;letter-spacing:.03em;color:var(--text);white-space:nowrap;background:var(--bg-2);padding:3px 8px}
.center-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--muted);text-transform:uppercase;line-height:1.9}
.center-label::before,.center-label::after{content:"";display:block;width:26px;height:1px;background:var(--line);margin:8px auto}
.mappings{display:flex;flex-direction:column;gap:0;border-left:1px solid var(--line)}
.map{padding:16px 0 16px 24px;border-bottom:1px solid var(--line-soft)}
.map:last-child{border-bottom:none}
.map .dom{font-family:var(--disp);font-weight:600;font-size:15px;display:flex;align-items:center;gap:9px;margin-bottom:4px}
.map .dom::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--dc)}
.map .flow{font-family:var(--mono);font-size:12.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 10px}
.map .flow i{font-style:normal;color:var(--dc);opacity:.85}

/* ============ 03 — pionowa oś inżynierska (§8) ============ */
.timeline{margin-top:64px;display:grid;grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:0}
.tl-axis{grid-column:2;position:relative;border-left:1px solid var(--line);padding-left:44px}
.step{position:relative;padding:0 0 64px}
.step:last-of-type{padding-bottom:40px}
.step .n{position:absolute;left:-44px;transform:translateX(-50%);font-family:var(--mono);font-weight:500;font-size:34px;line-height:1;color:var(--accent);background:var(--bg);padding:6px 0;letter-spacing:-.02em}
.step h3{font-family:var(--disp);font-weight:600;font-size:26px;letter-spacing:-.01em;margin-bottom:8px}
.step p{color:var(--muted);font-size:15.5px;max-width:34em}
.tl-return{position:relative;font-family:var(--mono);font-size:34px;line-height:1;color:var(--muted)}
.tl-return span{position:absolute;left:-44px;top:0;transform:translateX(-50%);background:var(--bg);padding:6px 0}
.ai-note{margin-top:56px;color:var(--muted);font-size:15px;max-width:52em}
.ai-note b{color:var(--text);font-weight:500}
.prins{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:44px}
.prin{border-top:1px solid var(--line);padding-top:18px}
.prin h4{font-family:var(--disp);font-weight:600;font-size:17px;margin-bottom:8px}
.prin p{color:var(--muted);font-size:14.5px}

/* ============ 04 — bench notes: gęściej, glyph nad metą, bez washu ============ */
.labgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:52px}
.note{--gs:120px;--surface:var(--panel);--nfill:var(--pc);
  background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:20px;
  display:flex;flex-direction:column;gap:10px;transition:border-color .2s,transform .2s}
.note:hover{border-color:var(--pc);transform:translateY(-3px)}
.note .glyph{width:var(--gs);height:var(--gs);align-self:flex-start;justify-self:auto;opacity:.92}
.note:hover .glyph{opacity:1}
.note .meta{flex-direction:column;align-items:flex-start;gap:5px;font-size:11px;letter-spacing:.1em}
.note h3{font-family:var(--disp);font-weight:600;font-size:18px;letter-spacing:-.01em}
.note p{color:var(--muted);font-size:14.5px;flex:1}
.note .go{font-family:var(--mono);font-size:12.5px;display:inline-flex;gap:8px;align-items:center;padding:12px 0;margin:-12px 0;align-self:flex-start}
.note .go::after{content:"→";color:var(--pc);transition:transform .15s}
.note:hover .go::after{transform:translateX(4px)}

/* ============ 05 — typografia + rail (§2) ============ */
.verbs{margin-top:56px}
.verb{display:grid;grid-template-columns:minmax(0,11em) minmax(0,1fr);gap:36px;padding:26px 0;border-top:1px solid var(--line-soft);align-items:baseline}
.verb:last-child{border-bottom:1px solid var(--line-soft)}
.verb dt{font-family:var(--disp);font-weight:600;font-size:26px;letter-spacing:-.01em}
.verb dt::after{content:".";color:var(--text)}
.verb dd{color:var(--muted);font-size:16px;max-width:38em}
.rail{margin-top:52px;display:flex;flex-wrap:wrap;gap:10px}
.rail a{font-family:var(--mono);font-size:13px;border:1px solid var(--line);border-radius:6px;padding:13px 18px;display:inline-flex;align-items:center;gap:14px;transition:border-color .15s}
.rail i{font-style:normal;font-size:10px;letter-spacing:.14em}
.rail .ok i{color:var(--status-ok)} .rail .ok:hover{border-color:var(--status-ok)}
.rail .warn i{color:var(--status-warn)} .rail .warn:hover{border-color:var(--status-warn)}

/* ============ FOOTER ============ */
footer{padding:64px 0 44px}
.f-top{display:flex;justify-content:space-between;gap:32px;flex-wrap:wrap;padding-bottom:36px;border-bottom:1px solid var(--line-soft)}
.f-top nav{display:flex;gap:24px;font-family:var(--mono);font-size:13px}
.f-top nav a{color:var(--muted);padding:12px 0;margin:-12px 0}
.f-top nav a:hover{color:var(--text)}
.f-bot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:26px;font-family:var(--mono);font-size:12.5px;color:var(--muted)}
.f-bot i{font-style:normal;color:var(--text)}

/* ============ RESPONSIVE ============ */
@media(max-width:1023px){
  .hero-grid{grid-template-columns:1fr;gap:48px}
  .pgrid{grid-template-columns:1fr 1fr}
  .labgrid{grid-template-columns:1fr 1fr}
  .prins{grid-template-columns:1fr 1fr}
  .circuit-stage{grid-template-columns:1fr;gap:48px}
  .circuit-box{max-width:440px}
  .timeline{grid-template-columns:minmax(0,120px) minmax(0,1fr)}
  h2{font-size:34px}
}
@media(max-width:767px){
  section{padding:80px 0}
  .hero{padding:88px 0 72px}
  .hero h1{font-size:clamp(38px,11vw,44px)}
  .btns{flex-direction:column}
  .btn{text-align:center;width:100%}
  .field-desk{display:none}
  .field-mob{display:block}
  .pgrid,.labgrid,.prins{grid-template-columns:1fr}
  .card{--gs:108px;grid-template-columns:1fr;grid-template-rows:auto auto auto auto auto;
    grid-template-areas:"meta" "title" "glyph" "body" "cta"}
  .card.flag{--gs:108px;padding:30px;column-gap:0;grid-template-areas:"meta" "title" "glyph" "body" "stats" "cta"}
  .card.flag h3{font-size:22px}
  .glyph{justify-self:start;align-self:start}
  .fstats{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .fstats div{border-right:none;margin:0;padding:0}
  .circuit-box{max-width:100%}
  .n-label{font-size:11px;padding:2px 6px}
  .center-label{font-size:10px}
  .timeline{grid-template-columns:1fr}
  .tl-axis{grid-column:1;padding-left:34px;margin-left:16px}
  .step{padding-bottom:48px}
  .step .n{left:-34px;font-size:26px}
  .step h3{font-size:21px}
  .tl-return span{left:-34px}
  .tl-return{font-size:26px}
  .verb{grid-template-columns:1fr;gap:6px;padding:20px 0}
  .verb dt{font-size:22px}
  .rail a{width:100%;justify-content:space-between}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .rv{opacity:1;transform:none;transition:none}
  .card:hover,.note:hover{transform:none}
}
