/* ============================================================
   COMMON MATTER — shared site stylesheet
   Industrial Grayscale system · self-hosted OFL fonts
   ============================================================ */

/* ---------- fonts ---------- */
@font-face{font-family:'Oswald';src:url('fonts/Oswald-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Oswald';src:url('fonts/Oswald-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Oswald';src:url('fonts/Oswald-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Oswald';src:url('fonts/Oswald-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Space Mono';src:url('fonts/SpaceMono-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Space Mono';src:url('fonts/SpaceMono-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('fonts/Inter-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('fonts/Inter-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('fonts/Inter-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('fonts/Inter-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

/* ---------- tokens ---------- */
:root{
  --ink:#16150F; --ink-soft:#3A382F; --spec:#605C50; --concrete:#A6A197;
  --line:#C9C2B4; --bone:#EAE4D7; --paper:#F4F0E8; --near-white:#F8F5EF; --noir:#0F0F0D;
  --err:#9B2F2F;
  --disp:'DIN Condensed','Oswald','Archivo Narrow','Arial Narrow',sans-serif;
  --mono:'Space Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --body:'Inter',-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif;
  --pad:clamp(18px,4vw,44px);
  --maxw:1240px;
}

/* ---------- reset ---------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer}
h1,h2,h3,h4{margin:0;font-family:var(--disp);font-weight:500;text-transform:uppercase;letter-spacing:.03em;line-height:.92;text-wrap:balance}
p{margin:0 0 1em}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.noir :focus-visible{outline-color:var(--near-white)}

/* ---------- helpers ---------- */
.mono{font-family:var(--mono);text-transform:uppercase;letter-spacing:.2em;font-size:11px;color:var(--spec)}
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.rule{height:1px;background:var(--ink);border:0;margin:0}
.hair{height:1px;background:var(--line);border:0;margin:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.sq{display:inline-block;width:12px;height:12px;border:1.5px solid currentColor;flex:0 0 auto}
.check{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1.5px solid var(--ink);flex:0 0 auto}
.check.on::after{content:"";width:8px;height:8px;background:var(--ink)}

/* ---------- announcement bar ---------- */
.anno{background:var(--ink);color:var(--near-white);font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;text-align:center;padding:9px 16px}

/* ---------- header / nav ---------- */
.nav{position:sticky;top:0;z-index:50;background:rgba(244,240,232,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--ink)}
.nav.on-noir{background:rgba(15,15,13,.55);border-bottom-color:rgba(243,239,231,.22)}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:16px;height:60px}
.brand{display:flex;align-items:center;gap:11px;font-family:var(--disp);font-weight:500;font-size:22px;letter-spacing:.15em;text-transform:uppercase}
.on-noir .brand,.on-noir .nav-links a,.on-noir .nav-cta{color:var(--near-white)}
.nav-links{display:flex;gap:26px;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.nav-links a{padding:4px 0;border-bottom:1px solid transparent;transition:border-color .2s}
.nav-links a:hover{border-bottom-color:currentColor}
.nav-cta{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px}
.nav-burger{display:none;background:none;border:0;padding:6px}
@media(max-width:760px){
  .nav-links{display:none}
  .nav-burger{display:inline-flex}
}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:12px;font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;padding:15px 26px;border:1px solid var(--ink);background:var(--ink);color:var(--near-white);transition:background .2s,color .2s}
.btn:hover{background:transparent;color:var(--ink)}
.btn .sq{border-color:currentColor}
.btn-ghost{background:transparent;color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:var(--near-white)}
.btn-light{background:var(--near-white);color:var(--ink);border-color:var(--near-white)}
.btn-light:hover{background:transparent;color:var(--near-white)}

/* ---------- forms / email capture ---------- */
.capture{display:flex;gap:0;max-width:460px;border:1px solid var(--ink);background:var(--near-white)}
.capture input{flex:1;min-width:0;border:0;background:transparent;padding:15px 16px;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--ink)}
.capture input::placeholder{color:var(--spec);text-transform:uppercase;letter-spacing:.14em}
.capture input:focus{outline:none}
.capture button{border:0;border-left:1px solid var(--ink);background:var(--ink);color:var(--near-white);font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;padding:0 22px}
.capture button:hover{background:var(--ink-soft)}
.capture.on-noir{border-color:rgba(243,239,231,.4);background:rgba(243,239,231,.06)}
.capture.on-noir input{color:var(--near-white)}
.capture.on-noir input::placeholder{color:var(--concrete)}
.form-fine{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--spec);margin-top:12px}
.capture-err{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--err);margin:10px 0 0}
.on-noir .capture-err,.hero .capture-err{color:#E9A5A5}
.on-noir .form-fine{color:var(--concrete)}

/* ---------- section rhythm ---------- */
.sec{padding:clamp(48px,8vw,110px) 0}
.eyebrow{display:inline-flex;align-items:center;gap:12px;font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--spec);margin-bottom:22px}
.sec-title{font-size:clamp(30px,5vw,52px);margin:0 0 8px}

/* ---------- footer ---------- */
.foot{background:var(--noir);color:var(--concrete)}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:36px;padding:clamp(44px,6vw,72px) 0 40px}
.foot .brand{color:var(--near-white);font-size:30px;margin-bottom:14px}
.foot h5{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--concrete);margin:0 0 14px}
.foot ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.foot a{color:var(--near-white);font-size:13px;opacity:.82}
.foot a:hover{opacity:1;text-decoration:underline;text-underline-offset:3px}
.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:18px 0 30px;border-top:1px solid rgba(243,239,231,.16);font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase}
@media(max-width:760px){.foot-top{grid-template-columns:1fr 1fr}}

/* ============================================================
   SHARED SECTION COMPONENTS (used across pages)
   ============================================================ */
[data-reveal]{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}
[data-reveal].is-in{opacity:1;transform:none}

/* hero (Object) */
.hero{position:relative;min-height:92vh;display:flex;background:var(--noir);overflow:hidden}
.hero img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05);animation:heroZoom 18s ease-out forwards}
.hero video.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05);animation:none}
@media(prefers-reduced-motion:reduce){.hero video.bg{display:none}}
@keyframes heroZoom{from{transform:scale(1.06)}to{transform:scale(1)}}
.hero .scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,8,7,.86) 0%,rgba(8,8,7,.5) 44%,rgba(8,8,7,.08) 72%),linear-gradient(0deg,rgba(8,8,7,.55),rgba(8,8,7,0) 42%)}
.hero .inner{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;gap:26px;padding:100px var(--pad) clamp(38px,6vw,72px);width:100%;color:var(--near-white)}
.hero .kicker{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#CFC9BB}
.hero h1{font-size:clamp(56px,12vw,168px);line-height:.82;max-width:15ch;letter-spacing:.01em;margin:0}
.hero .lede{font-family:var(--mono);font-size:clamp(12px,1.6vw,15px);letter-spacing:.22em;text-transform:uppercase;color:#D8D3C7;margin:-6px 0 4px}
.capture-done{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);max-width:480px}
.on-noir .capture-done,.hero .capture-done{color:#F3EFE7}

/* benefit marquee */
.marq{background:var(--ink);color:var(--near-white);overflow:hidden;border-bottom:1px solid var(--ink)}
.marq .track{display:flex;white-space:nowrap;font-family:var(--disp);text-transform:uppercase;font-size:clamp(22px,3.4vw,40px);letter-spacing:.04em;padding:16px 0;animation:scrollx 26s linear infinite;will-change:transform}
.marq .track span{padding:0 26px;display:inline-flex;align-items:center;gap:26px}
.marq .track span::after{content:"";width:9px;height:9px;border:1.5px solid var(--concrete);display:inline-block}
@keyframes scrollx{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* spec grid + bars */
.spec{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.spec .row{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:12px 2px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.spec .row:last-child{border-bottom:0}
.spec .k{color:var(--spec)} .spec .v{color:var(--ink);font-variant-numeric:tabular-nums;display:flex;align-items:center;gap:12px}
.bar{width:120px;height:7px;background:var(--bone);border:1px solid var(--line);position:relative}
.bar>i{position:absolute;inset:0 auto 0 0;background:var(--ink);width:0;transition:width 1s ease .2s}
.is-in .bar>i{width:var(--w)}

/* corner-marked plate */
.plate{position:relative;background:var(--paper);border:1px solid var(--ink);padding:20px}
.plate .corner{position:absolute;width:15px;height:15px;border:1.5px solid var(--ink)}
.plate .corner.tl{top:-1px;left:-1px;border-right:0;border-bottom:0}
.plate .corner.br{bottom:-1px;right:-1px;border-left:0;border-top:0}
.plate .pc{font-family:var(--mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--spec);margin-top:12px;display:flex;justify-content:space-between}

/* numbered system */
.sys{background:var(--noir);color:var(--near-white)}
.sys .sec-title{color:var(--near-white)}
.sys .eyebrow{color:var(--concrete)}
.sys-list{border-top:1px solid rgba(243,239,231,.18)}
.sys-row{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:baseline;padding:20px 2px;border-bottom:1px solid rgba(243,239,231,.14)}
.sys-row .no{font-family:var(--disp);font-size:clamp(26px,4vw,44px);line-height:1;color:var(--near-white);min-width:2.4ch}
.sys-row .nm{font-family:var(--disp);text-transform:uppercase;font-size:clamp(20px,3vw,32px);letter-spacing:.03em}
.sys-row .st{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--concrete);white-space:nowrap}
.sys-row.ghost{opacity:.4}
.sys-row.live .st{color:#F3EFE7;display:flex;align-items:center;gap:8px}

/* benefits list */
.benefits{display:flex;flex-direction:column;border-top:1px solid var(--ink)}
.benefits .b{display:grid;grid-template-columns:auto 1fr;gap:16px;padding:20px 2px;border-bottom:1px solid var(--line)}
.benefits .b h4{font-size:20px;margin:0 0 5px}
.benefits .b p{margin:0;font-size:13.5px;color:var(--ink-soft)}
.benefits .b .mono{padding-top:3px}

/* faq */
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:20px 2px;display:flex;justify-content:space-between;gap:16px;align-items:center;font-family:var(--disp);text-transform:uppercase;font-size:clamp(18px,2.4vw,24px);letter-spacing:.03em}
.faq summary::-webkit-details-marker{display:none}
.faq summary .pl{font-family:var(--mono);font-size:20px;color:var(--spec);transition:transform .2s}
.faq details[open] summary .pl{transform:rotate(45deg)}
.faq p{padding:0 2px 22px;max-width:64ch;color:var(--ink-soft);margin:0}

@media(max-width:820px){
  .sys-row{grid-template-columns:auto 1fr;grid-template-areas:"no nm" "st st"}
  .sys-row .st{grid-column:1/-1}
}

/* ---------- pop-up / modal (welcome offer) ---------- */
.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(15,15,13,.72);opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease}
.modal.open{opacity:1;visibility:visible}
.modal-card{position:relative;width:min(440px,100%);background:var(--paper);border:1px solid var(--ink);padding:clamp(28px,5vw,44px);transform:translateY(14px);transition:transform .35s ease}
.modal.open .modal-card{transform:none}
.modal-card .corner{position:absolute;width:16px;height:16px;border:1.5px solid var(--ink)}
.modal-card .corner.tl{top:-1px;left:-1px;border-right:0;border-bottom:0}
.modal-card .corner.br{bottom:-1px;right:-1px;border-left:0;border-top:0}
.modal-close{position:absolute;top:12px;right:12px;background:none;border:0;padding:8px;line-height:0;color:var(--ink)}
.modal-eye{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--spec);margin-bottom:16px}
.modal-card h3{font-size:clamp(26px,4.4vw,36px);margin:0 0 10px}
.modal-card p{font-size:14px;color:var(--ink-soft);margin:0 0 20px;max-width:36ch}
.modal-card .form-fine{margin-top:14px}
.modal-skip{display:inline-block;margin-top:14px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--spec);border-bottom:1px solid var(--line);cursor:pointer;background:none;border-top:0;border-left:0;border-right:0;padding:0 0 2px}
.modal-skip:hover{color:var(--ink)}

/* reduced motion */
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
