/* =========================================================================
   Editozzo Studio
   Flat by rule: no box-shadow, no gradient, no scroll reveals, no stock icons.
   Sections are separated by full-bleed colour fields, never by lines or cards.
   Orange is an accent — a button, a detail, a mark in the art. Never a band,
   and never type on a light background (3.4:1).
   ====================================================================== */

@font-face{
  font-family:'Archivo';
  src:url('assets/fonts/archivo-var-latin.woff2') format('woff2');
  font-weight:100 900;
  font-stretch:62% 125%;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'DM Mono';
  src:url('assets/fonts/dm-mono-400-latin.woff2') format('woff2');
  font-weight:400;
  font-style:normal;
  font-display:swap;
}

:root{
  --paper:#FFFFFF;
  --ink:#101010;
  --signal:#FF4A1C;
  --dim:#6E6E6E;
  --dim-on-ink:#9A9A9A;
  --field:#F2F2F2;

  --hair-on-ink:rgba(255,255,255,.16);
  --hair-on-paper:#E4E4E4;

  --sans:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono:'DM Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  --head-h:72px;
  --pad:clamp(64px,8vw,120px);

  /* one value per heading level, used everywhere a heading is followed by
     content — this is what keeps the rhythm identical across sections */
  --after-h2:22px;
  --after-h3:10px;
  --after-lede:clamp(36px,4vw,56px);
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

html{scroll-behavior:smooth;scroll-padding-top:calc(var(--head-h) + 24px)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:400;
  font-size:17px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

img,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
strong{font-weight:700}
em{font-style:italic}

h1,h2,h3,h4{font-weight:700;text-wrap:balance}
h1{
  font-stretch:125%;
  font-size:clamp(34px,5.4vw,76px);
  line-height:.95;
  letter-spacing:-.03em;
}
/* the three line breaks are part of the composition, not the browser's call */
h1 span{display:block;white-space:nowrap}
@media (max-width:379px){h1 span{white-space:normal}}

h2{font-size:clamp(28px,4vw,46px);line-height:1.04;letter-spacing:-.025em}
h3{font-weight:600;font-size:20px;line-height:1.25;letter-spacing:-.01em}

p{max-width:68ch}

/* ---- uniform spacing after headings (one rule, every section) ---------- */
h2+p,h2+ul,h2+ol,h2+dl,h2+div,h2+figure{margin-top:var(--after-h2)}
h3+p,h3+ul,h3+ol,h4+p{margin-top:var(--after-h3)}
.lede+*{margin-top:var(--after-lede)}

.mono{
  font-family:var(--mono);
  font-weight:400;
  font-size:11px;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.wrap{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}

.skip{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--signal);color:var(--ink);font-weight:700;
  padding:14px 22px;border-radius:0 0 4px 0;
}
.skip:focus{left:0}

:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.band--ink :focus-visible,.nle :focus-visible{outline-color:var(--signal)}

/* ------------------------------- buttons ------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--sans);font-weight:700;font-size:16px;line-height:1;
  padding:17px 26px;border-radius:4px;border:2px solid transparent;
  text-decoration:none;cursor:pointer;text-align:center;
  transition:background-color .12s linear,color .12s linear,border-color .12s linear;
}
.btn--signal{background:var(--signal);color:var(--ink);border-color:var(--signal)}
.btn--signal:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}
/* on a black band that hover would be black on black — invert to paper instead */
.band--ink .btn--signal:hover,.nle .btn--signal:hover{
  background:var(--paper);border-color:var(--paper);color:var(--ink);
}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn--ghost:hover{background:var(--ink);color:var(--paper)}
.btn--ghost-light{background:transparent;color:var(--paper);border-color:rgba(255,255,255,.35)}
.btn--ghost-light:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}

/* ===================== header — timeline with playhead ================== */
.tl{position:sticky;top:0;z-index:50;background:var(--paper);overflow:visible}
.tl__bar{
  height:calc(var(--head-h) - 4px);
  max-width:1200px;margin:0 auto;padding:0 24px;
  display:flex;align-items:center;gap:36px;
}
.tl__logo{display:flex;align-items:center;flex:0 0 auto}
.tl__logo,.tl__logo picture{display:flex;align-items:center}
.tl__logo img{width:auto;height:44px}
.tl__nav{display:flex;flex:0 0 auto;gap:26px;margin-left:auto;font-size:16px;font-weight:500}
/* orange on white is 3.4:1 — it never sets type here, so hover underlines instead */
.tl__nav a{
  white-space:nowrap;text-decoration:none;color:var(--ink);
  text-underline-offset:5px;text-decoration-thickness:2px;
}
.tl__nav a:hover{text-decoration:underline}
.tl__cta{padding:13px 20px;font-size:15px;flex:0 0 auto}

/* contacts in the bar: quiet, hairline-separated, never wrapping */
.tl__contacts{
  display:flex;align-items:center;flex:0 0 auto;
  font-size:14px;white-space:nowrap;color:var(--dim);
}
.tl__contacts .cx-wrap{padding:0 15px;border-left:1px solid var(--hair-on-paper)}
.tl__contacts .cx-wrap:first-child{border-left:0;padding-left:0}
.tl__contacts a{text-decoration:none;color:var(--dim);transition:color .12s linear}
.tl__contacts a:hover{color:var(--ink)}

/* burger: three rules that fold into a cross, drawn for this page */
.burger{
  display:none;flex:0 0 auto;
  width:44px;height:44px;padding:11px 10px;
  background:transparent;border:0;cursor:pointer;
  flex-direction:column;justify-content:space-between;
}
.burger span{display:block;height:2px;width:100%;background:var(--ink);transition:transform .12s linear,opacity .12s linear}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(9px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}

/* the panel it opens — hangs off the sticky header, no shadow, no radius */
.menu{
  position:absolute;left:0;right:0;top:100%;z-index:1;
  background:var(--paper);border-bottom:1px solid var(--hair-on-paper);
  padding:14px 24px 26px;display:grid;gap:22px;
  max-height:calc(100dvh - var(--head-h));overflow-y:auto;
}
.menu[hidden]{display:none}
.menu__nav{display:grid;font-size:20px;font-weight:600}
.menu__nav a{
  text-decoration:none;padding:14px 0;
  border-bottom:1px solid var(--hair-on-paper);
}
.menu__nav a:hover{color:var(--signal)}
.menu__contacts{display:grid;gap:12px}
.menu__contacts>div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:14px;align-items:baseline}
.menu__contacts dt{color:var(--dim);letter-spacing:.14em}
.menu__contacts dd{font-size:17px}
.menu__contacts a{text-decoration:none;color:var(--ink)}
.menu .btn{justify-self:start}
/* the bar still shows the CTA at these widths, so the panel does not repeat it */
@media (min-width:431px){.menu .btn{display:none}}

.tl__track{position:relative;z-index:2;height:4px;background:rgba(16,16,16,.12)}
.tl__played{position:absolute;left:0;top:0;height:100%;width:0;background:var(--signal)}
.tl__tick{
  position:absolute;top:-3px;width:2px;height:10px;
  background:rgba(16,16,16,.25);
  transition:background-color .12s linear,height .12s linear,top .12s linear;
}
.tl__tick.is-done{background:rgba(255,74,28,.5)}
.tl__tick.is-hot{background:var(--signal);height:14px;top:-5px}
.tl__playhead{
  position:absolute;top:2px;left:0;
  width:26px;height:26px;margin-top:-13px;
  transform:translateX(-50%);
  border-radius:50%;background:var(--signal);color:var(--ink);
  display:grid;place-items:center;
}

/* The bar sheds one thing at a time rather than emptying out at one
   breakpoint. Measured, not guessed: the words survive down to 600px and the
   address stays with them until 860, because the space is there. */
@media (max-width:1180px){
  .tl__bar{gap:24px}
  .tl__nav{font-size:15px;gap:20px}
  .tl__contacts{font-size:13px}
  .tl__contacts .cx-wrap{padding:0 12px}
  .tl__playhead{width:18px;height:18px;margin-top:-9px}
  .tl__playhead svg{width:7px;height:8px}
}
@media (max-width:1010px){
  .tl__bar{gap:18px;padding:0 20px}
  .tl__nav{font-size:14px;gap:16px}
  .tl__cta{padding:12px 16px;font-size:14px}
  .tl__logo img{height:40px}
}
/* the phone goes first — the address is the one people actually use */
@media (max-width:950px){
  .tl__contacts .cx-wrap:last-child{display:none}
}
/* shrink the type before dropping anything: at 800 the bar was 8px over */
@media (max-width:870px){
  .tl__nav{font-size:13px;gap:13px}
  .tl__cta{padding:11px 14px;font-size:13px}
  .tl__logo img{height:34px}
}
@media (max-width:780px){
  .tl__contacts{display:none}
}
/* under this the words stop fitting honestly, so they move into the panel
   instead of quietly disappearing, which is what they used to do */
@media (max-width:600px){
  .tl__nav{display:none}
  .burger{display:flex;margin-left:auto}
  .tl__bar{gap:12px;padding:0 18px}
  .tl__logo img{height:32px}
  .menu{padding:12px 18px 22px}
}
/* on the narrowest phones the CTA joins them, where it has room to be a button */
@media (max-width:430px){
  .tl__cta{display:none}
}

/* ================================= bands ================================ */
.band{padding:var(--pad) 0}
.band--paper{background:var(--paper);color:var(--ink)}
.band--ink{background:var(--ink);color:var(--paper)}

.band--ink .lede,.band--ink .prose p{color:var(--dim-on-ink)}
.band--ink strong{color:var(--paper)}
.band--paper .lede,.band--paper .prose p{color:var(--dim)}
.band--paper strong{color:var(--ink)}

.lede{font-size:19px;max-width:62ch}

/* two-column section: heading left, prose right */
.split{
  display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1fr);
  gap:clamp(28px,5vw,80px);align-items:start;
}
.split h2{max-width:15ch}
.prose p+p{margin-top:20px}

.plain{list-style:none;display:grid;gap:18px}
.plain li{max-width:62ch;line-height:1.6}

@media (max-width:860px){
  .split{grid-template-columns:1fr;gap:var(--after-h2)}
  .split h2{max-width:22ch}
}

/* ================================= hero ================================= */
.hero{
  max-width:1200px;margin:0 auto;
  padding:clamp(36px,4vw,64px) 24px clamp(56px,7vw,100px);
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.88fr);
  gap:clamp(28px,4vw,64px);align-items:center;
}
.hero__hook{margin-top:clamp(22px,3vw,32px);font-weight:700;font-size:19px;max-width:38ch}
.hero__lede{margin-top:14px;color:var(--dim);max-width:46ch}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.hero__note{margin-top:26px;font-size:15px;color:var(--dim);max-width:42ch}
.hero__note strong{display:block;color:var(--ink)}
.hero__art svg{width:100%;height:auto}

@media (max-width:900px){
  .hero{grid-template-columns:1fr;gap:36px}
  .hero__art{max-width:520px}
}

/* ============================ illustrations ============================= */
/* The drawings carry the idea; the words under them stay real HTML so they
   are selectable, translatable and visible to search. */
.art-row{display:block;width:100%;height:auto}

.strip{margin-top:clamp(36px,4.5vw,60px)}
.strip img{width:100%;height:auto}
.strip__caps{
  display:grid;gap:clamp(18px,3vw,40px);
  margin-top:clamp(14px,2vw,22px);
}
.strip__caps span{font-size:15.5px;line-height:1.5;max-width:34ch}
.strip__caps--3{grid-template-columns:repeat(3,1fr)}
.strip__caps--why{grid-template-columns:51.9% 1fr}
.band--paper .strip__caps span{color:var(--dim)}
.band--ink .strip__caps span{color:var(--dim-on-ink)}
.strip__caps strong{font-weight:700}

@media (max-width:820px){
  .strip__caps--3,.strip__caps--why{grid-template-columns:1fr;gap:12px}
  .strip__caps span{max-width:52ch}
}

/* ====================== work — the editing suite ======================== */
.nle{
  --nle-bg:#16161A;
  --nle-surface:#1E1E24;
  --nle-surface-hi:#2A2A32;
  --nle-surface-lo:#0E0E12;
  --nle-line:#2E2E36;
  --nle-text:#E8E8EC;
  --nle-text-dim:#8A8A94;
  background:var(--nle-bg);color:var(--nle-text);
  border:1px solid var(--nle-line);
  overflow:hidden;
}
.nle__title{
  display:flex;align-items:center;gap:14px;
  padding:11px 14px;background:var(--nle-surface);border-bottom:1px solid var(--nle-line);
}
.nle__dots{display:flex;gap:6px}
.nle__dots i{width:10px;height:10px;border-radius:50%;background:var(--nle-line)}
.nle__name{color:var(--nle-text-dim);text-transform:none;letter-spacing:.06em}

.nle__menu{display:flex;gap:2px;padding:6px 10px;border-bottom:1px solid var(--nle-line);overflow-x:auto}
.nle__menu button{
  font-family:var(--sans);font-size:13px;font-weight:500;white-space:nowrap;
  color:var(--nle-text-dim);background:transparent;border:0;cursor:default;
  padding:6px 10px;border-radius:3px;
  transition:color .12s linear,background-color .12s linear;
}
.nle__menu button:hover{color:var(--nle-text);background:var(--nle-surface-hi)}
.nle__menu button:active{color:var(--nle-text);background:var(--nle-surface-lo)}

/* ---- the window: pool | viewer | inspector, timeline underneath --------
   Capped at 1060 so the 16:9 monitor cannot grow tall enough to push the
   whole window past the fold, which is what a full-width viewer did. */
.nle{max-width:1060px;margin-inline:auto}

.nle__body{display:grid;grid-template-columns:196px minmax(0,1fr) 190px;align-items:stretch}

/* left: media pool */
.pool{border-right:1px solid var(--nle-line);padding:12px 10px;min-width:0}
.pool__head,.insp__head{
  color:var(--nle-text-dim);letter-spacing:.16em;font-size:9.5px;
  padding:0 4px 10px;
}
.pool__list{list-style:none;display:grid;gap:4px}
.clip{
  width:100%;display:grid;grid-template-columns:64px minmax(0,1fr);gap:9px;align-items:center;
  background:transparent;border:0;border-left:2px solid transparent;cursor:pointer;
  padding:6px;text-align:left;font-family:var(--sans);
  transition:background-color .12s linear,border-color .12s linear;
}
.clip:hover{background:var(--nle-surface-hi)}
.clip.is-on{background:var(--nle-surface-lo);border-left-color:var(--signal)}
.clip img{width:64px;height:36px;object-fit:cover}
.clip__meta{display:grid;gap:2px;min-width:0}
.clip__name{
  font-size:11.5px;color:var(--nle-text-dim);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.clip.is-on .clip__name{color:var(--nle-text)}
.clip__dur{font-size:9.5px;color:var(--nle-text-dim);text-transform:none;letter-spacing:.06em}

/* centre: the viewer */
.viewer{display:flex;flex-direction:column;min-width:0}
.viewer__head{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:9px 12px;border-bottom:1px solid var(--nle-line);
  color:var(--nle-text);font-size:11px;letter-spacing:.06em;text-transform:none;
}
.viewer__head .mono{text-transform:none}
.viewer__src{color:var(--nle-text-dim);text-transform:uppercase;letter-spacing:.16em;font-size:9.5px}

/* the monitor itself, its play button and the transport strip */
.nle__monitor{position:relative;width:100%;aspect-ratio:16/9;background:#000;overflow:hidden}
.nle__monitor iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.nle__monitor img{width:100%;height:100%;object-fit:cover}
.nle__monitor img[hidden]{display:none}

.play{position:absolute;inset:0;display:grid;place-items:center;background:transparent;border:0;cursor:pointer}
.play[hidden]{display:none}
.play__disc{
  display:grid;place-items:center;
  width:74px;height:74px;border-radius:50%;
  background:var(--signal);color:var(--ink);
  padding-left:4px;
  transition:background-color .12s linear;
}
.play:hover .play__disc{background:var(--paper)}
.nle__note{
  position:absolute;left:50%;bottom:16px;transform:translateX(-50%);
  background:var(--nle-surface-lo);color:var(--nle-text);
  border:1px solid var(--nle-line);border-radius:4px;
  font-size:10px;letter-spacing:.12em;
  padding:9px 13px;white-space:nowrap;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;
}

.nle__transport{
  display:flex;align-items:center;gap:14px;
  padding:10px 12px;border-top:1px solid var(--nle-line);background:var(--nle-surface);
}
.nle__tc{color:var(--nle-text-dim);text-transform:none;letter-spacing:.1em;flex:0 0 auto;font-size:10.5px}
.nle__bar{flex:1;height:3px;background:var(--nle-surface-lo);position:relative}
.nle__bar i{position:absolute;left:0;top:0;height:100%;width:0;background:var(--signal)}

/* right: the inspector */
.insp{border-left:1px solid var(--nle-line);padding:12px 12px 16px;min-width:0}
.insp__row{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:7px 0;font-size:11.5px;color:var(--nle-text-dim);
}
.insp__row .val{color:var(--nle-text);font-weight:600;font-size:11px}
.insp__slider{height:3px;background:var(--nle-surface-lo);margin:0 0 6px}
.insp__slider i{display:block;height:100%;background:var(--nle-text-dim)}
.sw{
  width:26px;height:14px;border-radius:7px;flex:0 0 auto;
  background:var(--nle-surface-lo);position:relative;
}
.sw::after{
  content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;
  background:var(--nle-text-dim);
}
.sw.is-on{background:rgba(255,74,28,.35)}
.sw.is-on::after{left:14px;background:var(--signal)}

/* bottom: the timeline */
.tml{border-top:1px solid var(--nle-line);padding:8px 12px 12px;background:var(--nle-surface)}
.tml__ruler{
  display:flex;justify-content:space-between;
  color:var(--nle-text-dim);font-size:9px;letter-spacing:.08em;text-transform:none;
  padding:0 0 6px 30px;
}
.tml__tracks{position:relative;display:grid;gap:3px}
.tml__row{display:grid;grid-template-columns:26px minmax(0,1fr);gap:4px;align-items:center}
.tml__lbl{font-size:9px;color:var(--nle-text-dim);text-transform:none;letter-spacing:.06em}
.tml__lane{position:relative;display:block;height:15px;background:var(--nle-surface-lo)}
.cl{position:absolute;top:0;height:100%;border-radius:1px}
.cl--v{background:rgba(255,74,28,.8)}
.cl--vb{background:rgba(255,74,28,.4)}
.cl--a{background:rgba(232,232,236,.22)}
.tml__head{position:absolute;top:-6px;bottom:0;width:1.5px;background:var(--signal)}
.tml__head::before{
  content:"";position:absolute;top:-3px;left:-3.5px;
  width:8px;height:8px;background:var(--signal);
}

/* the side panels are the first thing to go: below this the viewer needs the
   full width, and the pool becomes a strip of thumbnails above it */
@media (max-width:900px){
  .nle__body{grid-template-columns:1fr}
  .insp{display:none}
  .pool{border-right:0;border-bottom:1px solid var(--nle-line);padding:10px}
  .pool__head{display:none}
  .pool__list{grid-auto-flow:column;grid-auto-columns:minmax(154px,1fr);overflow-x:auto;gap:6px}
  .clip{grid-template-columns:52px minmax(0,1fr)}
  .clip img{width:52px;height:29px}
  .tml__row:nth-child(n+3){display:none}
}
@media (max-width:560px){
  .play__disc{width:54px;height:54px}
  .viewer__head{padding:8px 10px;font-size:10px}
  .nle__transport .nle__tc:last-child{display:none}
  .tml{display:none}
}

/* =============================== why us ================================= */
.why__list{
  list-style:none;counter-reset:why;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(28px,3.5vw,48px) clamp(32px,5vw,72px);
}
.why__list li{counter-increment:why;position:relative;padding-top:26px;border-top:1px solid var(--hair-on-ink)}
.why__list li::before{
  content:counter(why,decimal-leading-zero);
  position:absolute;top:26px;left:0;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--signal);
}
.why__list h3{padding-left:34px;font-size:21px}
.why__list p{color:var(--dim-on-ink);font-size:16px}

@media (max-width:820px){.why__list{grid-template-columns:1fr}}

/* ============================ included rows ============================= */
.incl{margin-top:clamp(56px,6vw,88px)}
.rows{display:grid}
.rows>div{
  display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1fr);
  gap:clamp(20px,4vw,72px);
  padding:18px 0;
}
.rows dt{font-weight:600;font-size:19px;letter-spacing:-.01em}
.rows dd{color:var(--dim)}
.incl__need{margin-top:30px;color:var(--dim)}

@media (max-width:700px){
  .rows>div{grid-template-columns:1fr;gap:4px;padding:14px 0}
}

/* =============================== pricing ================================ */
.pricing .lede{color:var(--dim-on-ink)}

.ptable{
  display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--hair-on-ink);
  border-bottom:1px solid var(--hair-on-ink);
}
.pcol{
  padding:34px 26px 32px;
  border-left:1px solid var(--hair-on-ink);
  display:flex;flex-direction:column;
}
.pcol:first-child{border-left:0;padding-left:0}
.pcol h3{font-size:21px;font-weight:700}
.pcol__spec{color:var(--dim-on-ink);font-size:15px}
.pcol__price{
  margin-top:20px;
  font-stretch:125%;font-weight:700;font-size:clamp(38px,4vw,46px);
  line-height:1;letter-spacing:-.03em;
}
.pcol__price span{font-size:.52em;vertical-align:.42em;margin-right:.06em;font-stretch:100%}
.pcol__desc{margin-top:16px;color:var(--dim-on-ink);font-size:15.5px;line-height:1.5;flex:1}
.pcol .btn{margin-top:24px;width:100%}

.pincl{
  list-style:none;margin-top:26px;
  display:flex;flex-wrap:wrap;gap:10px 28px;
}
.pincl li{position:relative;padding-left:24px;font-size:15px;color:var(--dim-on-ink)}
.pincl li::before{
  content:"";position:absolute;left:2px;top:.42em;
  width:10px;height:6px;
  border-left:2px solid var(--signal);border-bottom:2px solid var(--signal);
  transform:rotate(-45deg);
}

.packs{margin-top:clamp(48px,5vw,72px)}
.packs__head{font-size:15px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dim-on-ink)}
.pack{
  padding:26px 0;
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;
  gap:clamp(16px,4vw,48px);align-items:center;
  border-top:1px solid var(--hair-on-ink);
}
.pack:last-of-type{border-bottom:1px solid var(--hair-on-ink)}
.pack h4{font-size:21px;font-weight:700}
.pack__what p{margin-top:4px;color:var(--dim-on-ink);font-size:15px}
.pack__price{
  font-stretch:125%;font-weight:700;font-size:46px;line-height:1;letter-spacing:-.03em;
}
.pack__price span{font-size:.52em;vertical-align:.42em;margin-right:.06em;font-stretch:100%}
/* the top package is singled out by the size of the number alone —
   no badge, no frame, no orange backing */
.pack--best .pack__price{font-size:clamp(52px,6vw,76px)}
.packs__note{margin-top:var(--after-h2);color:var(--dim-on-ink);font-size:15.5px}

.launch{margin-top:30px;color:var(--dim-on-ink);font-size:15px}
.launch em{color:var(--paper);font-style:normal;font-weight:700}

.offer{margin-top:clamp(56px,6vw,90px);border-top:1px solid var(--hair-on-ink);padding-top:clamp(36px,4vw,56px)}
.offer h3{font-size:clamp(26px,3.4vw,38px);font-weight:700;letter-spacing:-.025em}
.offer p{margin-top:16px;color:var(--dim-on-ink)}
.offer__price{
  font-stretch:125%;font-weight:700;font-size:clamp(24px,2.6vw,32px);
  color:var(--paper);letter-spacing:-.02em;margin-top:20px;
}
.offer__kicker{color:var(--paper);font-weight:600}
.offer .btn{margin-top:28px}

@media (max-width:1000px){
  .ptable{grid-template-columns:repeat(2,1fr)}
  .pcol:nth-child(odd){border-left:0;padding-left:0}
  .pcol:nth-child(n+3){border-top:1px solid var(--hair-on-ink)}
}
@media (max-width:640px){
  .ptable{grid-template-columns:1fr}
  .pcol{border-left:0;padding:28px 0}
  .pcol:nth-child(n+2){border-top:1px solid var(--hair-on-ink)}
  .pack{grid-template-columns:1fr;gap:14px;align-items:start}
  .pack .btn{justify-self:start}
}

/* =============================== process ================================ */
#process{margin-top:clamp(64px,7vw,110px)}
.steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,44px)}
/* ink, not orange: the page spends its boldness on the H1, the play button
   and the art — a fourth accent would flatten all three */
.steps__n{
  display:block;font-stretch:125%;font-weight:700;font-size:34px;
  letter-spacing:-.02em;line-height:1;
}
.steps h3{margin-top:16px}
.steps p{color:var(--dim);font-size:15.5px}

@media (max-width:900px){.steps{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.steps{grid-template-columns:1fr;gap:30px}}

/* ================================= faq ================================== */
/* two columns with a hairline down the middle, one column on narrow screens */
.acc-grid{
  position:relative;
  display:grid;grid-template-columns:1fr 1fr;
  gap:0 clamp(36px,5vw,80px);
}
.acc-grid::before{
  content:"";position:absolute;top:0;bottom:0;left:50%;
  width:1px;background:var(--hair-on-ink);
}
.acc details{border-bottom:1px solid var(--hair-on-ink)}
.acc details:first-child{border-top:1px solid var(--hair-on-ink)}
.acc summary{
  display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
  padding:20px 0;cursor:pointer;list-style:none;
  font-weight:600;font-size:17px;line-height:1.3;letter-spacing:-.01em;
  transition:color .12s linear;
}
.acc summary::-webkit-details-marker{display:none}
.acc summary:hover{color:var(--signal)}
.acc summary::after{
  content:"";flex:0 0 auto;width:14px;height:14px;margin-top:4px;
  background:
    linear-gradient(currentColor,currentColor) center/14px 2px no-repeat,
    linear-gradient(currentColor,currentColor) center/2px 14px no-repeat;
  transition:transform .12s linear;
}
.acc details[open] summary::after{transform:rotate(45deg)}
.acc__body{padding:0 0 22px}
.acc__body p{color:var(--dim-on-ink);font-size:16px;max-width:62ch}

@media (max-width:860px){
  .acc-grid{grid-template-columns:1fr}
  .acc-grid::before{display:none}
  .acc:last-child details:first-child{border-top:0}
}

/* =============================== contact ================================ */
.contact__in{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(36px,5vw,80px);align-items:start;
}
.contact__copy p{margin-top:18px;color:var(--dim-on-ink)}
.facts{margin-top:34px;display:grid;gap:14px}
.facts>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;align-items:baseline}
.facts dt{color:var(--dim-on-ink);letter-spacing:.14em}
.facts dd{font-size:16px}
.facts a{color:var(--signal);text-decoration:none;transition:color .12s linear}
.facts a:hover{color:var(--paper)}

/* the address is built from characters held in shuffled DOM order and put back
   visually by `order`, so what a scraper reads is not what a person reads */
.cx-wrap{display:inline-flex;align-items:baseline;gap:10px;flex-wrap:wrap}
/* selecting this would copy the characters in DOM order, which is scrambled —
   so it is not selectable, and the copy button does the copying */
.cx{display:inline-flex;user-select:none;-webkit-user-select:none}
.cx i{font-style:normal}
.cx-copy{
  font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--dim-on-ink);background:transparent;cursor:pointer;
  border:1px solid var(--hair-on-ink);border-radius:4px;padding:3px 7px;
  transition:color .12s linear,border-color .12s linear;
}
.cx-copy:hover{color:var(--paper);border-color:var(--paper)}

.form{display:grid;gap:18px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.field{display:grid;gap:8px;max-width:none}
.field label,.field legend{font-size:14px;color:var(--dim-on-ink)}
.field input[type=text],.field input[type=email],.field textarea{
  width:100%;font-family:var(--sans);font-size:16px;color:var(--paper);
  background:#1A1A1E;border:1px solid #2E2E36;border-radius:4px;
  padding:14px;
  transition:border-color .12s linear;
}
.field textarea{resize:vertical;min-height:112px}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--signal)}
fieldset.field{border:0;padding:0}
.checks{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;margin-top:4px}
.checks label{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--paper);cursor:pointer}
.checks input{
  appearance:none;flex:0 0 auto;width:18px;height:18px;
  border:1px solid #2E2E36;border-radius:3px;background:#1A1A1E;cursor:pointer;
  transition:background-color .12s linear,border-color .12s linear;
}
.checks input:checked{background:var(--signal);border-color:var(--signal)}
.form__send{margin-top:4px;justify-self:start}
.form__note{color:var(--dim-on-ink);letter-spacing:.1em}
.form__note.is-ok{color:var(--signal)}
.form__note.is-bad{color:#FF8A6A}

@media (max-width:900px){.contact__in{grid-template-columns:1fr}}
@media (max-width:520px){
  .f2,.checks{grid-template-columns:1fr}
  .facts>div{grid-template-columns:1fr;gap:2px}
}

/* ================================ footer ================================ */
.foot{background:var(--paper);color:var(--ink);padding:clamp(48px,5vw,72px) 0 44px}
.foot__in{display:grid;grid-template-columns:auto minmax(0,1fr);gap:28px clamp(32px,5vw,64px);align-items:start}
.foot__logo img{height:59px;width:auto}
.foot__text p{font-size:15px;color:var(--dim);max-width:56ch}
.foot__nav{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:20px;font-size:15px;padding-top:14px}
.foot__nav a{color:var(--dim);text-decoration:none;transition:color .12s linear}
.foot__nav a:hover{color:var(--ink)}
.foot__legal{
  grid-column:1/-1;padding-top:22px;color:var(--dim);
  border-top:1px solid var(--hair-on-paper);letter-spacing:.1em;
}
.foot__legal a{color:var(--dim);text-decoration:none;transition:color .12s linear}
.foot__legal a:hover{color:var(--ink)}

@media (max-width:700px){
  .foot__in{grid-template-columns:1fr}
  .foot__logo img{height:48px}
}

/* ======================= spacing after headings =========================
   П3: one gap after an h2, one after an h3, one after a lede — no section
   gets to invent its own. Kept last so component rules cannot drift. */
h2+p,h2+ul,h2+ol,h2+dl,h2+div,h2+figure,h2+img,
.contact__copy h2+p{margin-top:var(--after-h2)}

h3+p,h3+ul,h3+ol,h4+p,
.offer h3+p,
.pcol h3+.pcol__spec,
.packs__head+.pack{margin-top:var(--after-h3)}

.lede+*{margin-top:var(--after-lede)}

/* stacked siblings inside a group keep their own rhythm */
.pack+.pack{margin-top:0}
