/* ==========================================================================
   URBANOWICZ REMONTY — design system
   CherryDev / Projekt 01
   ========================================================================== */

/* ---------- 1. Fonts --------------------------------------------------- */
@font-face{
  font-family:'Archivo';font-style:normal;font-weight:400 900;font-stretch:100%;font-display:swap;
  src:url('../fonts/archivo-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:'Archivo';font-style:normal;font-weight:400 900;font-stretch:100%;font-display:swap;
  src:url('../fonts/archivo-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:'JetBrains Mono';font-style:normal;font-weight:400 600;font-display:swap;
  src:url('../fonts/jetbrainsmono-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:'JetBrains Mono';font-style:normal;font-weight:400 600;font-display:swap;
  src:url('../fonts/jetbrainsmono-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;
}

/* ---------- 2. Tokens -------------------------------------------------- */
:root{
  /* palette — derived from the existing Urbanowicz identity */
  --ink:      #131311;
  --ink-2:    #1A1A17;
  --ink-3:    #24241F;
  --ivory:    #F2EEE7;
  --ivory-2:  #E7E1D6;
  --sand:     #C2A990;
  --accent:   #D8613C;   /* wypełnienia, duża typografia, linie */
  --accent-2: #E0954B;
  --accent-text: #D8613C; /* drobny tekst — wariant o kontraście >= 4.5:1 */

  /* contextual (set per section via .s--ink / .s--ivory) */
  --bg:   var(--ink);
  --fg:   var(--ivory);
  --mute: #9E988C;
  --rule: rgb(242 238 231 / .16);
  --rule-strong: rgb(242 238 231 / .34);
  --field: rgb(242 238 231 / .05);

  /* type */
  --font-display:'Archivo',-apple-system,'Segoe UI',system-ui,sans-serif;
  --font-body:'Archivo',-apple-system,'Segoe UI',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',Consolas,monospace;

  --fs-display-xl:clamp(2.45rem,7.55vw,6.6rem);
  --fs-display-l: clamp(2rem,5.3vw,4.4rem);
  --fs-display-m: clamp(1.65rem,3.3vw,2.85rem);
  --fs-display-s: clamp(1.3rem,2.1vw,1.75rem);
  --fs-body:      clamp(1rem,.955rem + .22vw,1.14rem);
  --fs-lead:      clamp(1.06rem,.98rem + .48vw,1.4rem);
  --fs-meta:      .705rem;

  /* space */
  --gutter:clamp(1.25rem,5vw,5.5rem);
  --sec-y: clamp(5rem,11vw,11.5rem);
  --maxw:  1560px;

  /* motion */
  --e-out:cubic-bezier(.16,1,.3,1);
  --e-io: cubic-bezier(.76,0,.24,1);
  --t-fast:.28s;
  --t-mid:.55s;

  --header-h:78px;
}
@media (max-width:860px){ :root{ --header-h:64px; } }

/* ---------- 3. Reset --------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html:focus-within{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}}
body{
  margin:0;background:var(--ink);color:var(--ivory);
  font-family:var(--font-body);font-size:var(--fs-body);line-height:1.62;
  font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip;
}
img,picture,svg,video{display:block;max-width:100%}
img{height:auto}
h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
::selection{background:var(--accent);color:#131311}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* ---------- 4. Helpers ------------------------------------------------- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.u-vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.skip{position:absolute;top:-100px;left:var(--gutter);z-index:200;background:var(--accent);color:#131311;padding:.85rem 1.4rem;font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.14em;text-transform:uppercase;transition:top .2s}
.skip:focus{top:1rem}

.s--ink{ --bg:var(--ink);--fg:var(--ivory);--mute:#9E988C;--accent-text:#D8613C;
  --rule:rgb(242 238 231 / .16);--rule-strong:rgb(242 238 231 / .34);--field:rgb(242 238 231 / .05);
  background:var(--bg);color:var(--fg)}
.s--ivory{ --bg:var(--ivory);--fg:var(--ink);--mute:#6C665C;--accent-text:#A9421C;
  --rule:rgb(19 19 17 / .14);--rule-strong:rgb(19 19 17 / .3);--field:rgb(19 19 17 / .035);
  background:var(--bg);color:var(--fg)}

.section{padding-block:var(--sec-y);position:relative}

/* eyebrow / metadata */
.eyebrow{
  font-family:var(--font-mono);font-size:var(--fs-meta);font-weight:500;
  letter-spacing:.19em;text-transform:uppercase;color:var(--mute);
  display:flex;align-items:center;gap:.85rem;
}
.eyebrow::before{content:"";width:clamp(24px,4vw,54px);height:1px;background:currentColor;opacity:.55;flex:none}
.eyebrow--plain::before{display:none}
.eyebrow b{color:var(--accent-text);font-weight:500}
@media (max-width:620px){.hide-sm{display:none}}

/* display type */
.d-xl,.d-l,.d-m{
  font-family:var(--font-display);font-weight:800;
  letter-spacing:-.033em;line-height:.9;text-transform:uppercase;text-wrap:balance;
}
.d-xl{font-size:var(--fs-display-xl);line-height:.86;letter-spacing:-.04em}
.d-l{font-size:var(--fs-display-l);line-height:.92}
.d-m{font-size:var(--fs-display-m);line-height:1;letter-spacing:-.025em}
.d-s{font-family:var(--font-display);font-weight:700;font-size:var(--fs-display-s);line-height:1.18;letter-spacing:-.015em}
.lead{font-size:var(--fs-lead);line-height:1.5;color:var(--fg);max-width:44ch}
.body{color:var(--mute);max-width:56ch}
.body strong{color:var(--fg);font-weight:600}
.rule{height:1px;background:var(--rule);border:0;margin:0}

/* accent hairline that draws in */
.draw{display:block;height:2px;background:var(--accent);width:100%;transform-origin:left center}

/* ---------- 5. Buttons ------------------------------------------------- */
.btn{
  --btn-bg:var(--accent);--btn-fg:#131311;
  position:relative;display:inline-flex;align-items:center;gap:.8rem;
  padding:1.05rem 1.6rem;background:var(--btn-bg);color:var(--btn-fg);
  font-family:var(--font-mono);font-size:.735rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;
  border:0;cursor:pointer;overflow:hidden;isolation:isolate;
  transition:color var(--t-fast) var(--e-out);
}
.btn span{position:relative;z-index:2;display:block}
.btn::after{
  content:"";position:absolute;inset:0;z-index:1;background:var(--fg);
  transform:scaleY(0);transform-origin:bottom center;transition:transform .42s var(--e-io);
}
.btn:hover::after,.btn:focus-visible::after{transform:scaleY(1)}
.btn:hover,.btn:focus-visible{color:var(--bg)}
.btn .ar{width:1em;height:1em;flex:none;position:relative;z-index:2;transition:transform .42s var(--e-out)}
.btn:hover .ar{transform:translateX(4px)}

.btn--ghost{--btn-bg:transparent;--btn-fg:var(--fg);box-shadow:inset 0 0 0 1px var(--rule-strong)}
.btn--ghost::after{background:var(--fg)}
.btn--ghost:hover,.btn--ghost:focus-visible{color:var(--bg)}

/* text link with underline draw */
.tlink{position:relative;display:inline-block;padding-bottom:2px;font-weight:600}
.tlink::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right center;transition:transform .45s var(--e-io)}
.tlink:hover::after,.tlink:focus-visible::after{transform:scaleX(1);transform-origin:left center}

/* ---------- 6. Media --------------------------------------------------- */
.ph{position:relative;display:block;overflow:hidden;background:var(--ink-3)}
.ph img{width:100%;height:100%;object-fit:cover;background-size:cover;background-position:center}
.cap{
  margin-top:.9rem;font-family:var(--font-mono);font-size:.74rem;
  letter-spacing:.02em;line-height:1.62;color:var(--mute);max-width:40ch;
}
.cap b{color:var(--accent-text);font-weight:500;letter-spacing:.14em;display:block;margin-bottom:.35rem}

/* ---------- 7. Header -------------------------------------------------- */
.hdr{
  position:fixed;inset:0 0 auto 0;z-index:90;
  height:var(--header-h);display:flex;align-items:center;
  color:var(--ivory);
  transition:height .45s var(--e-io),background-color .45s var(--e-io);
}
.hdr::after{content:"";position:absolute;inset:auto 0 0 0;height:1px;background:rgb(242 238 231 / .14);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--e-io)}
.hdr[data-stuck="1"]{height:60px;background:rgb(19 19 17 / .96)}
.hdr[data-stuck="1"]::after{transform:scaleX(1)}
@media (max-width:860px){.hdr[data-stuck="1"]{height:56px}}
.hdr__in{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);display:flex;align-items:center;gap:2rem}
.brand{display:flex;align-items:center;gap:.7rem;flex:none}
.brand img{transition:height .45s var(--e-io)}
.brand__mono{height:30px;width:auto}
.brand__word{height:17px;width:auto}
.hdr[data-stuck="1"] .brand__mono{height:24px}
.hdr[data-stuck="1"] .brand__word{height:14px}
@media (max-width:520px){.brand__word{display:none}.brand__mono{height:26px}}

.nav{margin-left:auto;display:flex;align-items:center;gap:clamp(1.1rem,2vw,2.1rem)}
.nav a{
  font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.15em;text-transform:uppercase;
  position:relative;padding:.4rem 0;color:rgb(242 238 231 / .78);transition:color var(--t-fast)
}
.nav a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform .4s var(--e-io)}
.nav a:hover,.nav a:focus-visible{color:var(--ivory)}
.nav a:hover::after,.nav a:focus-visible::after,.nav a[aria-current="true"]::after{transform:scaleX(1);transform-origin:left}
.hdr .btn{padding:.78rem 1.15rem;font-size:.685rem}
@media (max-width:1080px){.nav{display:none}}

.burger{
  margin-left:auto;display:none;align-items:center;gap:.65rem;background:none;border:0;cursor:pointer;padding:.5rem 0;
  font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.15em;text-transform:uppercase;color:var(--ivory)
}
.burger i{display:block;width:26px;height:9px;position:relative}
.burger i::before,.burger i::after{content:"";position:absolute;left:0;width:100%;height:1.5px;background:currentColor;transition:transform .45s var(--e-io)}
.burger i::before{top:0}.burger i::after{bottom:0}
[data-menu="1"] .burger i::before{transform:translateY(3.75px) rotate(45deg)}
[data-menu="1"] .burger i::after{transform:translateY(-3.75px) rotate(-45deg)}
@media (max-width:1080px){.burger{display:flex}.hdr__in>.btn{display:none}}

/* mobile menu */
.mnu[hidden]{display:none}
.mnu{
  position:fixed;inset:0;z-index:80;background:var(--ink);color:var(--ivory);
  display:flex;flex-direction:column;justify-content:center;gap:2rem;
  padding:calc(var(--header-h) + 2rem) var(--gutter) 2.5rem;
  clip-path:inset(0 0 100% 0);visibility:hidden;
  transition:clip-path .72s var(--e-io),visibility 0s .72s;
}
[data-menu="1"] .mnu{clip-path:inset(0 0 0% 0);visibility:visible;transition:clip-path .72s var(--e-io),visibility 0s}
.mnu ul{display:flex;flex-direction:column;gap:.15rem}
.mnu li{overflow:hidden}
.mnu li a{
  display:flex;align-items:baseline;gap:1rem;padding:.28rem 0;
  font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;
  font-size:clamp(2rem,10vw,3.4rem);line-height:1.08;
  transform:translateY(105%);transition:transform .6s var(--e-out),color .3s
}
.mnu li a em{font-family:var(--font-mono);font-size:.62rem;font-style:normal;letter-spacing:.18em;color:var(--accent-text);font-weight:500}
[data-menu="1"] .mnu li a{transform:translateY(0)}
[data-menu="1"] .mnu li:nth-child(1) a{transition-delay:.16s}
[data-menu="1"] .mnu li:nth-child(2) a{transition-delay:.22s}
[data-menu="1"] .mnu li:nth-child(3) a{transition-delay:.28s}
[data-menu="1"] .mnu li:nth-child(4) a{transition-delay:.34s}
[data-menu="1"] .mnu li:nth-child(5) a{transition-delay:.40s}
.mnu__foot{display:flex;flex-wrap:wrap;gap:1.4rem 2.5rem;align-items:center;padding-top:2rem;border-top:1px solid var(--rule)}
.mnu__foot a{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em}

/* ---------- 8. Hero ---------------------------------------------------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;isolation:isolate;background:var(--ink);overflow:hidden}
.hero__media{position:absolute;inset:0;z-index:0}
.hero__layer{position:absolute;inset:0;overflow:hidden;will-change:transform}
.hero__layer picture,.hero__layer img{width:100%;height:100%}
.hero__layer img{object-fit:cover;transform-origin:52% 58%}
/* second, offset image band — controlled displacement of two layers */
.hero__layer--b{clip-path:inset(0 0 0 62%);z-index:1}
.hero__layer--b img{transform:translateX(-1.6%) scale(1.02)}
@media (max-width:860px){.hero__layer--b{display:none}}
.hero__scrim{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    linear-gradient(to top,rgb(19 19 17 / .93) 0%,rgb(19 19 17 / .55) 34%,rgb(19 19 17 / .18) 62%,rgb(19 19 17 / .5) 100%),
    linear-gradient(to right,rgb(19 19 17 / .72) 0%,rgb(19 19 17 / .25) 46%,rgb(19 19 17 / 0) 78%);
}

.hero__in{position:relative;z-index:4;flex:1;display:flex;flex-direction:column;
  padding-top:calc(var(--header-h) + clamp(2rem,7vh,4.5rem));padding-bottom:clamp(1.25rem,3vh,2rem)}
.hero__top{flex:1;display:flex;flex-direction:column;justify-content:flex-end;gap:clamp(1.3rem,3.2vh,2.2rem)}
.hero h1{color:var(--ivory)}
.hero h1 .ln{display:block;overflow:hidden}
.hero h1 .ln>span{display:block}
.hero__lead{max-width:40ch;color:rgb(242 238 231 / .82);font-size:var(--fs-lead);line-height:1.5}
.hero__cta{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}
.hero__accent{width:min(38vw,300px);margin-bottom:.2rem}

.hero__meta{
  margin-top:clamp(1.8rem,5vh,3.4rem);padding-top:1.35rem;border-top:1px solid rgb(242 238 231 / .18);
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.6rem;
}
.hero__meta dt{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.18em;text-transform:uppercase;color:var(--accent-text);margin-bottom:.45rem}
.hero__meta dd{margin:0;font-size:.855rem;line-height:1.45;color:rgb(242 238 231 / .8)}
@media (max-width:760px){
  .hero__meta{grid-template-columns:1fr;gap:1rem}
  .hero__meta>div:nth-child(n+3){display:none}
}

/* ---------- 9. Manifest ------------------------------------------------ */
.mf__grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.6rem,3vw,3.2rem);align-items:start;margin-top:clamp(1rem,3vw,2.2rem)}
.mf__head{grid-column:1 / -1;grid-row:1}
.mf__head .d-l{margin-top:1.5rem}
.mf__head .d-l em{font-style:normal;display:block;color:var(--accent)}
.mf__body{grid-column:1 / -1;grid-row:2;display:flex;flex-direction:column;gap:1.25rem;padding-top:clamp(.25rem,1vw,1rem)}
.mf__facts{display:flex;flex-direction:column;border-top:1px solid var(--rule)}
.mf__facts li{display:flex;gap:1rem;padding:.95rem 0;border-bottom:1px solid var(--rule);font-size:.92rem}
.mf__facts b{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.14em;color:var(--accent-text);font-weight:500;padding-top:.28rem;flex:none}
@media (max-width:980px){
  .mf__head,.mf__body{grid-column:1 / -1;grid-row:auto}
  .mf__body{padding-top:0}
}

/* ---------- 10. Services ----------------------------------------------- */
.sv{position:relative;padding-block:clamp(3.5rem,6vw,6rem)}
.sv__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.25rem;margin-bottom:clamp(1.5rem,3vw,2.5rem)}
.sv__list{border-top:1px solid var(--rule)}
.sv__row{border-bottom:1px solid var(--rule);position:relative}
.sv__link{
  display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1.05fr) auto;align-items:center;
  gap:clamp(1rem,3vw,3rem);padding:clamp(1rem,1.7vw,1.4rem) 0;width:100%;text-align:left;
  transition:opacity .45s var(--e-out);
}
.sv__n{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.14em;color:var(--mute);transition:color .4s;flex:none;min-width:2.1em}
.sv__t{font-family:var(--font-display);font-weight:700;font-size:clamp(1.25rem,2.35vw,2rem);line-height:1.05;letter-spacing:-.028em;
  transition:transform .55s var(--e-out);will-change:transform}
.sv__d{color:var(--mute);font-size:.925rem;line-height:1.55;max-width:46ch;transition:color .4s}
.sv__ar{width:22px;height:22px;color:var(--mute);transition:transform .5s var(--e-out),color .4s;flex:none}
.sv__row:hover .sv__n,.sv__row:focus-within .sv__n{color:var(--accent-text)}
.sv__row:hover .sv__t,.sv__row:focus-within .sv__t{transform:translateX(clamp(6px,1vw,16px))}
.sv__row:hover .sv__ar,.sv__row:focus-within .sv__ar{transform:translate(5px,-5px);color:var(--accent)}
.sv__list[data-hovering="1"] .sv__row:not(:hover):not(:focus-within) .sv__link{opacity:.38}
@media (hover:none),(max-width:900px){
  .sv__link{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;padding-block:1.15rem}
  .sv__d{grid-column:2 / span 2;margin-top:.55rem;font-size:.88rem}
  .sv__n{padding-top:.35rem}
  .sv__ar{grid-column:3;grid-row:1;align-self:start;margin-top:.3rem}
  .sv__list[data-hovering="1"] .sv__row:not(:hover) .sv__link{opacity:1}
}

/* ---------- 11. Statement ---------------------------------------------- */
.st{padding-block:clamp(4.5rem,10vw,9rem) clamp(2.5rem,5vw,4rem)}
.st__t{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:-.038em;
  font-size:clamp(1.95rem,6.3vw,5.3rem);line-height:.95}
.st__t .ln{display:block;overflow:hidden}
.st__t .ln>span{display:block}
.st__t .ln:nth-child(2)>span{color:var(--accent)}
.st__note{margin-top:clamp(1.6rem,3vw,2.6rem);display:flex;gap:1.2rem;align-items:flex-start;max-width:52ch;
  font-family:var(--font-mono);font-size:.755rem;letter-spacing:.045em;line-height:1.7;color:var(--mute)}
.st__note span:first-child{flex:none;color:var(--accent-text)}
.st__note span+span{min-width:0}

/* ---------- 12. Gallery ------------------------------------------------ */
.gal{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.1rem,2.4vw,2.6rem) clamp(1rem,2.4vw,2.6rem)}
.gal figure{margin:0}
.gal .ph img{will-change:transform}
.g1{grid-column:1 / span 6}
.g1 .ph{aspect-ratio:3/4}
.g2{grid-column:8 / span 5;align-self:end;padding-bottom:clamp(1rem,4vw,4rem)}
.g2 .ph{aspect-ratio:3/4}
.g3{grid-column:2 / span 4;margin-top:clamp(1rem,4vw,4.5rem)}
.g3 .ph{aspect-ratio:4/3}
.g4{grid-column:7 / span 6;margin-top:clamp(3rem,9vw,9rem)}
.g4 .ph{aspect-ratio:4/3}
.g5{grid-column:1 / span 5}
.g5 .ph{aspect-ratio:3/4}
.g6{grid-column:7 / span 5;align-self:center}
.g6 .ph{aspect-ratio:3/4}
@media (max-width:900px){
  .g1,.g2,.g3,.g4,.g5,.g6{grid-column:1 / -1;margin-top:0;padding-bottom:0}
  .g2,.g5{grid-column:1 / span 8}
  .g3,.g6{grid-column:5 / -1}
  .gal{gap:clamp(1.6rem,5vw,2.4rem)}
}
@media (max-width:560px){.g2,.g5,.g3,.g6{grid-column:1 / -1}}

/* full-bleed expander */
.expander{margin-block:clamp(3rem,8vw,8rem);display:flex;justify-content:center}
.expander__box{width:66vw;max-width:100%;will-change:width}
.expander__box .ph{aspect-ratio:16/9}
.expander__cap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);margin-top:.9rem}
.expander__cap .cap{max-width:52ch}
@media (max-width:900px){.expander__box{width:88vw}}

/* ---------- 13. Process ------------------------------------------------ */
.pr__grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.6rem,3vw,3.5rem);margin-top:clamp(2.5rem,5vw,4rem)}
.pr__stage{grid-column:1 / span 5;position:sticky;top:calc(var(--header-h) + 4vh);align-self:start}
.pr__num{position:relative;height:clamp(7rem,15vw,15rem)}
.pr__num span{
  position:absolute;inset:0;display:block;font-family:var(--font-display);font-weight:800;
  font-size:clamp(7rem,15vw,15rem);line-height:.8;letter-spacing:-.06em;color:var(--fg);opacity:0;
}
.pr__num span:first-child{opacity:1}
.pr__rail{margin-top:clamp(1.5rem,3vw,2.5rem);height:2px;background:var(--rule);position:relative;overflow:hidden}
.pr__rail i{position:absolute;inset:0;background:var(--accent);transform:scaleX(0);transform-origin:left}
.pr__ticks{display:flex;justify-content:space-between;margin-top:.75rem;font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.14em;color:var(--mute)}
.pr__ticks b{font-weight:500;transition:color .35s}
.pr__ticks b.is-on{color:var(--accent-text)}
.pr__draw{margin-top:clamp(1.6rem,3vw,2.6rem);width:100%;aspect-ratio:5/3;color:var(--fg)}
.pr__draw svg{width:100%;height:100%;overflow:visible}
.pr__draw [data-d]{fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:square;vector-effect:non-scaling-stroke;opacity:.46}
.pr__draw [data-d="a"]{stroke:var(--accent);opacity:1;stroke-width:2}
.pr__draw circle[data-d]{fill:var(--bg)}

.pr__steps{grid-column:7 / span 6;display:flex;flex-direction:column}
.pr__step{padding:clamp(1.4rem,2.6vw,2.1rem) 0;border-bottom:1px solid var(--rule);transition:opacity .45s var(--e-out)}
.pr__step:first-child{border-top:1px solid var(--rule)}
.pr__step h3{font-family:var(--font-display);font-weight:700;font-size:clamp(1.15rem,2.2vw,1.75rem);letter-spacing:-.022em;line-height:1.12;margin-bottom:.6rem;display:flex;gap:1rem;align-items:baseline}
.pr__step h3 i{font-family:var(--font-mono);font-style:normal;font-size:var(--fs-meta);letter-spacing:.14em;color:var(--accent-text);font-weight:500;flex:none}
.pr__step p{color:var(--mute);font-size:.94rem;max-width:52ch;padding-left:calc(2.1em + 1rem)}
/* Nieaktywny etap przygaszamy kolorem tytułu, nie przezroczystością —
   opacity zbijało numer etapu i opis poniżej progu kontrastu. */
.pr__step[data-on="0"] h3{color:var(--mute)}
@media (max-width:980px){
  .pr__stage{grid-column:1 / -1;position:static}
  .pr__steps{grid-column:1 / -1}
  .pr__num{height:clamp(4.5rem,18vw,7rem)}
  .pr__num span{font-size:clamp(4.5rem,18vw,7rem)}
  .pr__draw{display:none}
  .pr__step[data-on="0"]{opacity:1}
  .pr__step p{padding-left:0}
}

/* ---------- 14. Craft -------------------------------------------------- */
.cr__head{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.6rem,3vw,3.5rem);align-items:end}
.cr__head .d-l{grid-column:1 / span 7;font-size:clamp(1.75rem,3.6vw,3.05rem);line-height:1.02}
.cr__head .body{grid-column:9 / span 4}
@media (max-width:980px){.cr__head .d-l,.cr__head .body{grid-column:1 / -1}}
.cr__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2.4vw,2.4rem);margin-top:clamp(2.5rem,5vw,4.5rem)}
.cr__grid .ph{aspect-ratio:1}
.cr__grid figure:nth-child(2){margin-top:clamp(1.5rem,5vw,5rem)}
.cr__grid figure:nth-child(3){margin-top:clamp(3rem,10vw,10rem)}
@media (max-width:820px){
  .cr__grid{grid-template-columns:1fr 1fr}
  .cr__grid figure:nth-child(3){grid-column:1 / -1;margin-top:0}
  .cr__grid figure:nth-child(3) .ph{aspect-ratio:16/9}
}
@media (max-width:520px){
  .cr__grid{grid-template-columns:1fr}
  .cr__grid figure:nth-child(2),.cr__grid figure:nth-child(3){margin-top:0}
}

/* ---------- 15. FAQ ---------------------------------------------------- */
.faq__grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(1.6rem,3vw,4rem);align-items:start}
.faq__aside{grid-column:1 / span 4;position:sticky;top:calc(var(--header-h) + 2rem)}
.faq__aside .d-m{margin-top:1.4rem}
.faq__aside p{margin-top:1.2rem;color:var(--mute);font-size:.94rem;max-width:34ch}
.faq__list{grid-column:6 / span 7;border-top:1px solid var(--rule)}
@media (max-width:980px){
  .faq__aside{grid-column:1 / -1;position:static}
  .faq__list{grid-column:1 / -1}
}
.qa{border-bottom:1px solid var(--rule)}
.qa__q{
  width:100%;display:flex;align-items:flex-start;gap:1.5rem;justify-content:space-between;
  background:none;border:0;cursor:pointer;text-align:left;padding:clamp(1.15rem,2vw,1.6rem) 0;
  font-family:var(--font-display);font-weight:600;font-size:clamp(1rem,1.6vw,1.25rem);line-height:1.32;letter-spacing:-.012em;
  color:var(--fg);transition:color .3s;
}
.qa__q:hover{color:var(--accent-text)}
.qa__ic{position:relative;flex:none;width:17px;height:17px;margin-top:.3rem}
.qa__ic::before,.qa__ic::after{content:"";position:absolute;background:currentColor;transition:transform .5s var(--e-io)}
.qa__ic::before{left:0;top:8px;width:17px;height:1.5px}
.qa__ic::after{top:0;left:8px;height:17px;width:1.5px}
.qa[data-open="1"] .qa__ic::before{transform:rotate(180deg)}
.qa[data-open="1"] .qa__ic::after{transform:rotate(-90deg) scaleX(0)}
.qa[data-open="1"] .qa__ic{color:var(--accent)}
.qa__a{height:0;overflow:hidden}
.qa__a>div{padding:0 3rem 1.7rem 0;color:var(--mute);font-size:.95rem;max-width:60ch}
.qa__a strong{color:var(--fg);font-weight:600}

/* ---------- 16. Contact ------------------------------------------------ */
.ct{position:relative;overflow:hidden}
.ct__grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(2rem,4vw,4.5rem);margin-top:clamp(2.4rem,5vw,4rem)}
.ct__info{grid-column:1 / span 5;display:flex;flex-direction:column;gap:2rem;position:sticky;top:calc(var(--header-h) + 4vh);align-self:start}
.ct__form{grid-column:7 / span 6}
@media (max-width:980px){.ct__info,.ct__form{grid-column:1 / -1}.ct__info{position:static}}
.ct__list{display:flex;flex-direction:column;border-top:1px solid var(--rule)}
.ct__list>div{padding:1.1rem 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:1rem;align-items:baseline}
.ct__list dt{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.ct__list dd{margin:0;font-size:1rem}
.ct__list dd.big{font-family:var(--font-display);font-weight:700;font-size:clamp(1.15rem,2.4vw,1.6rem);letter-spacing:-.02em}
@media (max-width:520px){.ct__list>div{grid-template-columns:1fr;gap:.25rem}}

.frm{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.f-full{grid-column:1 / -1}
.fld{position:relative;display:flex;flex-direction:column;gap:.45rem}
.fld label{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.fld label .req{color:var(--accent-text)}
.fld input,.fld select,.fld textarea{
  width:100%;background:var(--field);border:0;border-bottom:1px solid var(--rule-strong);
  padding:.85rem .1rem;color:var(--fg);font-size:1rem;border-radius:0;
  transition:border-color .3s,background-color .3s;
}
.fld select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 14px) 55%,calc(100% - 8px) 55%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:2rem}
.fld select option{background:#1A1A17;color:#F2EEE7}
.fld ::placeholder{color:var(--mute);opacity:.68}
.fld textarea{min-height:130px;resize:vertical;line-height:1.55}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:0;border-color:var(--accent)}
.fld input:focus-visible,.fld select:focus-visible,.fld textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.fld .err{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.06em;color:var(--accent-text);min-height:1em}
.fld[data-invalid="1"] input,.fld[data-invalid="1"] textarea,.fld[data-invalid="1"] select{border-color:var(--accent)}

.drop{position:relative;border:1px dashed var(--rule-strong);padding:1.1rem;display:flex;flex-wrap:wrap;align-items:center;gap:.9rem;transition:border-color .3s,background-color .3s}
.drop:hover,.drop.is-over{border-color:var(--accent);background:var(--field)}
.drop input[type=file]{position:absolute;width:1px;height:1px;opacity:0}
.drop__btn{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;
  padding:.6rem .95rem;box-shadow:inset 0 0 0 1px var(--rule-strong);cursor:pointer}
.drop__btn:hover{box-shadow:inset 0 0 0 1px var(--accent);color:var(--accent)}
.drop input[type=file]:focus-visible + .drop__btn{outline:2px solid var(--accent);outline-offset:2px}
.drop__hint{font-size:.8rem;color:var(--mute)}
.drop__files{width:100%;display:flex;flex-wrap:wrap;gap:.45rem;font-family:var(--font-mono);font-size:.68rem;color:var(--mute)}
.drop__files li{padding:.3rem .55rem;background:var(--field);box-shadow:inset 0 0 0 1px var(--rule)}

.fld label.consent,.consent{font-family:var(--font-body);font-size:.82rem;text-transform:none;letter-spacing:normal;color:var(--mute);display:flex;gap:.8rem;align-items:flex-start;font-size:.8rem;line-height:1.5;color:var(--mute)}
.consent input{appearance:none;flex:none;width:17px;height:17px;margin-top:.15rem;box-shadow:inset 0 0 0 1px var(--rule-strong);background:var(--field);cursor:pointer;position:relative}
.consent input:checked{background:var(--accent);box-shadow:none}
.consent input:checked::after{content:"";position:absolute;left:5.5px;top:2px;width:4px;height:9px;border:solid #131311;border-width:0 1.6px 1.6px 0;transform:rotate(45deg)}
.consent a{text-decoration:underline;text-underline-offset:3px}
.frm__foot{display:flex;flex-wrap:wrap;gap:1.2rem;align-items:center;justify-content:space-between;margin-top:.6rem}
.frm__status{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.05em;line-height:1.5;color:var(--mute);flex:1;min-width:12rem}
.frm__status[data-state="ok"]{color:var(--accent-text)}
.frm__status[data-state="err"]{color:#e2574c}
@media (max-width:560px){.frm{grid-template-columns:1fr}}

.ct__band{
  margin-top:clamp(3rem,7vw,6rem);margin-bottom:calc(var(--sec-y) * -.55);
  text-align:center;user-select:none;
  border-top:1px solid var(--rule);padding:clamp(1.4rem,3vw,2.4rem) var(--gutter) 0;
}
.ct__band span{
  display:block;max-width:1200px;margin-inline:auto;
  font-family:var(--font-display);font-weight:800;text-transform:uppercase;
  font-size:clamp(1.45rem,2.7vw,2.65rem);line-height:1.08;letter-spacing:-.025em;
  white-space:normal;text-wrap:balance;
  color:transparent;-webkit-text-stroke:1px var(--rule-strong);
}
@supports not (-webkit-text-stroke:1px black){.ct__band span{color:var(--rule-strong)}}

/* ---------- 17. Footer ------------------------------------------------- */
.ft{background:var(--ink);color:var(--ivory);padding-block:clamp(3rem,6vw,5rem) 2rem;border-top:1px solid rgb(242 238 231 / .13)}
.ft__grid{display:grid;grid-template-columns:repeat(12,1fr);gap:2rem clamp(1.5rem,3vw,3rem)}
.ft__brand{grid-column:1 / span 3;display:flex;flex-direction:column;gap:1.2rem}
.ft__brand img{width:min(158px,58%);height:auto}
.ft__brand p{color:#9E988C;font-size:.86rem;max-width:32ch}
.ft__col{grid-column:span 3}
.ft__col:first-of-type{grid-column-start:5}
.ft h3{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:.16em;text-transform:uppercase;color:#D8613C;font-weight:500;margin-bottom:1rem}
.ft ul{display:flex;flex-direction:column;gap:.55rem}
.ft li,.ft a{font-size:.88rem;color:rgb(242 238 231 / .78)}
.ft a:hover{color:var(--ivory)}
.ft__bot{margin-top:clamp(2.5rem,5vw,4rem);padding-top:1.4rem;border-top:1px solid rgb(242 238 231 / .13);
  display:flex;flex-wrap:wrap;gap:1rem 2rem;justify-content:space-between;
  font-family:var(--font-mono);font-size:.68rem;letter-spacing:.09em;color:#9E988C}
.ft__bot a{font-size:.68rem}
@media (max-width:900px){
  .ft__brand{grid-column:1 / -1}
  .ft__col{grid-column:span 6}
}
@media (max-width:520px){.ft__col{grid-column:1 / -1}}

/* ---------- 18. Mobile action bar -------------------------------------- */
.bar{
  position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;
  grid-template-columns:1fr 1fr;background:var(--ink);border-top:1px solid rgb(242 238 231 / .16);
  transform:translateY(101%);transition:transform .5s var(--e-io);
  padding-bottom:env(safe-area-inset-bottom);
}
.bar[data-on="1"]{transform:translateY(0)}
.bar a{display:flex;align-items:center;justify-content:center;gap:.55rem;padding:1.05rem .5rem;
  font-family:var(--font-mono);font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;color:var(--ivory)}
.bar a+a{background:var(--accent);color:#131311}
.bar svg{width:15px;height:15px;flex:none}
@media (max-width:900px){.bar{display:grid}.ft{padding-bottom:calc(4rem + env(safe-area-inset-bottom))}}
[data-menu="1"] .bar{transform:translateY(101%)}

/* ---------- 19. Motion primitives -------------------------------------- */
.js [data-reveal]{opacity:0;transform:translate3d(0,26px,0)}
.js [data-mask]{clip-path:inset(0 0 100% 0)}
.js [data-draw]{transform:scaleX(0)}
.js .ln>span{transform:translate3d(0,105%,0)}
.js .ln.is-in>span{transform:none}
.js .hero__layer img{transform:scale(1.07)}
.js .hero__layer--b img{transform:translateX(-1.6%) scale(1.09)}
.js .gal .ph img,.js .cr__grid .ph img,.js .mf__ph .ph img{transform:scale(1.1)}

@media (prefers-reduced-motion:reduce){
  .js [data-reveal],.js .ln>span{opacity:1!important;transform:none!important}
  .js [data-mask]{clip-path:none!important}
  .js [data-draw]{transform:scaleX(1)!important}
  .js .hero__layer img,.js .gal .ph img,.js .cr__grid .ph img,.js .mf__ph .ph img{transform:none!important}
  .js .hero__layer--b img{transform:translateX(-1.6%)!important}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* print */
@media print{
  .hdr,.bar,.mnu,.sv__preview{display:none!important}
  body{background:#fff;color:#000}
  .s--ink{background:#fff!important;color:#000!important}
}
