/* backpacksfactory.com — urban rugged dark system. Tokens = DESIGN.md §2 */
:root{
  --bg:#1C1917;
  --bg-raised:#262321;
  --bg-sunken:#151210;
  --line:rgba(255,255,255,0.08);
  --line-hard:rgba(255,255,255,0.16);
  --text:#F2F0ED;
  --text-dim:#A8A29E;
  --accent:#EA580C;
  --accent-hi:#F97316;
  --accent-ink:#FFFFFF;
  --display:'Barlow Condensed',Arial,sans-serif;
  --body:'Barlow',Arial,sans-serif;
  --mono:'JetBrains Mono','Courier New',monospace;
  --ease:cubic-bezier(0.16,1,0.3,1);
  --cut:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%);
  --container:1200px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  font-family:var(--body);font-size:16px;line-height:1.6;
  background:var(--bg);color:var(--text);
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent-hi);text-decoration:none}
a:hover{text-decoration:underline}
.container{max-width:var(--container);margin:0 auto;padding:0 24px}

/* ---------- type ---------- */
h1,h2,h3,.display{
  font-family:var(--display);font-weight:700;text-transform:uppercase;
  letter-spacing:.02em;line-height:1.08;
}
h1{font-size:clamp(2.4rem,5.4vw,4.2rem)}
h2{font-size:clamp(1.8rem,3.4vw,2.6rem)}
h3{font-size:1.3rem}
.eyebrow{
  font-family:var(--mono);font-size:.78rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--accent-hi);display:inline-block;margin-bottom:14px;
}
.eyebrow::before{content:"// "}
.lede{color:var(--text-dim);font-size:1.12rem;max-width:640px}
.mono{font-family:var(--mono)}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:50;height:72px;
  background:rgba(21,18,16,.92);border-bottom:1px solid var(--line-hard);
  backdrop-filter:blur(8px);
}
.site-header .container{height:72px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.logo{display:flex;align-items:baseline;gap:8px;text-decoration:none}
.logo:hover{text-decoration:none}
.logo b{
  font-family:var(--display);font-weight:700;font-size:1.45rem;color:var(--text);
  text-transform:uppercase;letter-spacing:.03em;
}
.logo b span{color:var(--accent-hi)}
.logo small{font-family:var(--mono);font-size:.62rem;color:var(--text-dim);letter-spacing:.14em;text-transform:uppercase}
.main-nav{display:flex;align-items:center;gap:4px}
.main-nav a{
  font-family:var(--body);font-weight:600;font-size:.92rem;color:var(--text);
  padding:10px 12px;border:1px solid transparent;transition:color .18s var(--ease),border-color .18s var(--ease);
}
.main-nav a:hover{text-decoration:none;color:var(--accent-hi)}
.main-nav a[aria-current="page"]{color:var(--accent-hi);border-bottom:2px solid var(--accent)}
.nav-cta{
  background:var(--accent);color:var(--accent-ink)!important;font-weight:700;
  clip-path:var(--cut);padding:11px 20px!important;margin-left:10px;border:none!important;
  transition:background .18s var(--ease),transform .12s var(--ease)!important;
}
.nav-cta:hover{background:var(--accent-hi);color:var(--accent-ink)!important}
.nav-cta:active{transform:scale(.97)}
.nav-toggle{display:none;background:none;border:1px solid var(--line-hard);color:var(--text);
  width:44px;height:44px;cursor:pointer;font-size:0}
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{
  content:"";display:block;width:20px;height:2px;background:var(--text);position:relative;margin:0 auto;
  transition:transform .18s var(--ease);
}
.nav-toggle span::before{position:absolute;top:-6px}
.nav-toggle span::after{position:absolute;top:6px}

/* dropdown (desktop products menu) */
.nav-group{position:relative}
.nav-group>a::after{content:" \25BE";font-size:.7em;color:var(--text-dim)}
.nav-drop{
  display:none;position:absolute;top:100%;left:0;min-width:250px;
  background:var(--bg-sunken);border:1px solid var(--line-hard);padding:8px 0;
}
.nav-group:hover .nav-drop,.nav-group:focus-within .nav-drop{display:block}
.nav-drop a{display:block;padding:9px 18px;font-weight:500;border:none}
.nav-drop a:hover{background:var(--bg-raised)}

/* ---------- hero ---------- */
.hero{padding:88px 0;border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.hero .container{display:grid;grid-template-columns:7fr 5fr;gap:56px;align-items:center}
.hero-copy p.lede{margin:20px 0 32px}
.hero-media{position:relative}
.hero-media img{clip-path:var(--cut);border:1px solid var(--line-hard);width:100%}
.hero-media::after{
  content:"";position:absolute;left:-14px;bottom:-14px;width:120px;height:120px;
  border-left:3px solid var(--accent);border-bottom:3px solid var(--accent);pointer-events:none;
}
.hero-kpis{display:flex;gap:32px;margin-top:40px;flex-wrap:wrap}
.kpi{border-left:3px solid var(--accent);padding-left:14px}
.kpi b{font-family:var(--mono);font-size:1.5rem;display:block;color:var(--text)}
.kpi small{color:var(--text-dim);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}

/* buttons */
.btn{
  display:inline-block;font-family:var(--body);font-weight:700;font-size:1rem;
  padding:15px 32px;clip-path:var(--cut);cursor:pointer;border:none;
  transition:background .18s var(--ease),color .18s var(--ease),transform .12s var(--ease);
}
.btn:hover{text-decoration:none}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--accent);color:var(--accent-ink)}
.btn-primary:hover{background:var(--accent-hi);color:var(--accent-ink)}
.btn-ghost{background:transparent;color:var(--text);box-shadow:inset 0 0 0 1px var(--line-hard)}
.btn-ghost:hover{box-shadow:inset 0 0 0 1px var(--accent-hi);color:var(--accent-hi)}
.btn-row{display:flex;gap:16px;flex-wrap:wrap}

/* ---------- sections ---------- */
.section{padding:88px 0;border-bottom:1px solid var(--line)}
.section-head{margin-bottom:48px;max-width:720px}
.section-head p{color:var(--text-dim);margin-top:14px}
.section-dark{background:var(--bg-sunken)}

/* grid cards */
.grid{display:grid;gap:24px}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.grid-2{grid-template-columns:repeat(2,1fr)}
.card{
  background:var(--bg-raised);border:1px solid var(--line);clip-path:var(--cut);
  padding:28px;transition:border-color .18s var(--ease),transform .18s var(--ease);
}
.card h3{margin-bottom:10px}
.card p{color:var(--text-dim);font-size:.95rem}
.card .mono{color:var(--accent-hi);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;display:block;margin-bottom:12px}

/* product cards */
.pcard{
  background:var(--bg-raised);border:1px solid var(--line);clip-path:var(--cut);
  display:flex;flex-direction:column;overflow:hidden;
  transition:border-color .18s var(--ease),transform .18s var(--ease);
}
.pcard-img{background:#FFFFFF;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center}
.pcard-img img{object-fit:contain;width:100%;height:100%}
.pcard-body{padding:20px 22px 24px;display:flex;flex-direction:column;gap:8px;flex:1}
.pcard-body .spu{font-family:var(--mono);font-size:.75rem;color:var(--accent-hi);letter-spacing:.1em}
.pcard-body h3{font-size:1.12rem;line-height:1.25}
.pcard-body p{color:var(--text-dim);font-size:.88rem;flex:1}
.pcard-body .pmeta{font-family:var(--mono);font-size:.75rem;color:var(--text-dim)}
.pcard-link{font-weight:700;font-size:.9rem;color:var(--accent-hi)}
@media (hover:hover) and (pointer:fine){
  .card:hover,.pcard:hover{border-color:var(--accent);transform:translateY(-2px)}
}

/* badge strip (certifications) */
.badge-strip{display:flex;gap:16px;flex-wrap:wrap}
.badge{
  font-family:var(--mono);font-size:.85rem;letter-spacing:.06em;
  border:1px solid var(--line-hard);padding:12px 20px;clip-path:var(--cut);
  color:var(--text);background:var(--bg-raised);
}
.badge b{color:var(--accent-hi);font-weight:600}

/* spec tables */
.spec-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.88rem}
.spec-table th,.spec-table td{
  text-align:left;padding:12px 16px;border:1px solid var(--line);vertical-align:top;
}
.spec-table th{color:var(--accent-hi);font-weight:600;white-space:nowrap;width:220px;background:var(--bg-sunken)}
.spec-table td{color:var(--text)}
.table-wrap{overflow-x:auto;border:1px solid var(--line-hard)}

/* steps (OEM process) */
.steps{counter-reset:step;display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.step{border:1px solid var(--line);background:var(--bg-raised);padding:24px;clip-path:var(--cut);position:relative}
.step::before{
  counter-increment:step;content:"0" counter(step);
  font-family:var(--mono);font-size:2rem;color:var(--accent);display:block;margin-bottom:12px;font-weight:700;
}
.step h3{font-size:1.05rem;margin-bottom:8px}
.step p{color:var(--text-dim);font-size:.88rem}
.step .dur{font-family:var(--mono);color:var(--accent-hi);font-size:.78rem;display:block;margin-top:10px}

/* breadcrumb */
.crumbs{font-family:var(--mono);font-size:.78rem;color:var(--text-dim);padding:20px 0}
.crumbs a{color:var(--text-dim)}
.crumbs a:hover{color:var(--accent-hi)}
.crumbs span{color:var(--text)}

/* product detail */
.pd{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;padding:32px 0 72px}
.pd-gallery{position:sticky;top:96px}
.pd-main{background:#fff;border:1px solid var(--line-hard);clip-path:var(--cut)}
.pd-main img{object-fit:contain;aspect-ratio:1/1;width:100%}
.pd-thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:10px}
.pd-thumbs button{background:#fff;border:1px solid var(--line-hard);cursor:pointer;padding:0;aspect-ratio:1/1;transition:transform .12s var(--ease),border-color .18s var(--ease)}
.pd-thumbs button:active{transform:scale(.96)}
.pd-thumbs button.active{border-color:var(--accent);border-width:2px}
.pd-thumbs img{object-fit:contain;width:100%;height:100%}
.pd-info .spu{font-family:var(--mono);color:var(--accent-hi);letter-spacing:.12em;font-size:.85rem;display:block;margin-bottom:12px}
.pd-info h1{font-size:clamp(1.6rem,2.8vw,2.3rem)}
.pd-info .lede{margin:16px 0 28px;font-size:1rem}
.pd-features{list-style:none;margin:28px 0}
.pd-features li{
  padding:10px 0 10px 26px;border-bottom:1px solid var(--line);color:var(--text-dim);
  font-size:.94rem;position:relative;
}
.pd-features li::before{content:"+";position:absolute;left:0;color:var(--accent-hi);font-family:var(--mono);font-weight:700}
.pd-features li b{color:var(--text)}

/* forms */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.field{display:flex;flex-direction:column;gap:6px}
.field-full{grid-column:1/-1}
.field label{font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}
.field label .req{color:var(--accent-hi)}
.field input,.field select,.field textarea{
  background:var(--bg-sunken);border:1px solid var(--line-hard);color:var(--text);
  padding:13px 14px;font-family:var(--body);font-size:1rem;border-radius:0;
  transition:border-color .18s var(--ease);width:100%;
}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.field .err{color:var(--accent-hi);font-size:.8rem;display:none}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--accent)}
.field.invalid .err{display:block}
.form-note{font-family:var(--mono);font-size:.78rem;color:var(--text-dim);margin-top:14px}

/* blog */
.post-list{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.post-body{max-width:760px;margin:0 auto;padding:24px 0 72px}
.post-body h2{margin:44px 0 16px;font-size:1.7rem}
.post-body h3{margin:32px 0 12px}
.post-body p{margin:0 0 18px;color:var(--text-dim)}
.post-body li{color:var(--text-dim);margin:0 0 10px}
.post-body ul,.post-body ol{padding-left:24px;margin:0 0 18px}
.post-body strong{color:var(--text)}
.post-body table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.85rem;margin:0 0 18px}
.post-body th,.post-body td{border:1px solid var(--line);padding:10px 12px;text-align:left;color:var(--text-dim)}
.post-body th{color:var(--accent-hi);background:var(--bg-sunken)}
.post-meta{font-family:var(--mono);font-size:.78rem;color:var(--text-dim);margin:14px 0 34px}
.post-body .toc{border:1px solid var(--line-hard);background:var(--bg-raised);padding:20px 24px;margin:0 0 28px;clip-path:var(--cut)}
.post-body .toc b{font-family:var(--mono);font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-hi)}
.post-body .toc ul{margin:10px 0 0;padding-left:20px}
.post-body blockquote{border-left:3px solid var(--accent);padding:6px 0 6px 18px;margin:0 0 18px;color:var(--text-dim)}

/* CTA band */
.cta-band{background:var(--accent);color:var(--accent-ink);padding:72px 0}
.cta-band .container{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap}
.cta-band h2{color:var(--accent-ink)}
.cta-band p{color:rgba(255,255,255,.85);margin-top:8px}
.cta-band .btn{background:var(--bg-sunken);color:var(--text)}
.cta-band .btn:hover{background:#000;color:#fff}

/* footer */
.site-footer{background:var(--bg-sunken);padding:64px 0 32px;font-size:.9rem}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;margin-bottom:48px}
.site-footer h4{font-family:var(--mono);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-hi);margin-bottom:16px}
.site-footer ul{list-style:none}
.site-footer li{margin-bottom:9px}
.site-footer a{color:var(--text-dim)}
.site-footer a:hover{color:var(--accent-hi)}
.site-footer .fbrand p{color:var(--text-dim);margin-top:12px;max-width:320px}
.footer-bottom{border-top:1px solid var(--line);padding-top:24px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--text-dim);font-family:var(--mono);font-size:.75rem}

/* reveal animation (JS-gated) */
html.js .reveal{opacity:0;transform:translateY(16px)}
html.js .reveal.in{opacity:1;transform:none;transition:opacity .5s var(--ease),transform .5s var(--ease)}
html.js .hero-title .w{display:inline-block;opacity:0;transform:translateY(.55em)}
html.js .hero-title.in .w{opacity:1;transform:none;transition:opacity .5s var(--ease),transform .5s var(--ease)}
@media (prefers-reduced-motion:reduce){
  html.js .reveal,html.js .hero-title .w{opacity:1!important;transform:none!important;transition:none!important}
  .btn,.card,.pcard,.nav-cta{transition:none!important}
}

/* ---------- responsive ---------- */
@media (max-width:1023px){
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,1fr)}
  .footer-grid{grid-template-columns:1fr 1fr}
  .hero .container{grid-template-columns:1fr;gap:40px}
  .pd{grid-template-columns:1fr;gap:36px}
  .pd-gallery{position:static}
}
@media (max-width:767px){
  .section,.hero{padding:56px 0}
  .grid-3,.grid-2,.grid-4,.post-list,.form-grid,.steps{grid-template-columns:1fr}
  .field-full{grid-column:auto}
  .nav-toggle{display:block}
  .main-nav{
    display:none;position:fixed;inset:72px 0 auto 0;background:var(--bg-sunken);
    border-bottom:1px solid var(--line-hard);flex-direction:column;align-items:stretch;
    padding:12px 24px 24px;gap:0;max-height:calc(100vh - 72px);overflow-y:auto;
  }
  .main-nav.open{display:flex}
  .main-nav a{padding:13px 4px;border-bottom:1px solid var(--line)}
  .nav-cta{margin:16px 0 0;text-align:center;clip-path:var(--cut)}
  .nav-group .nav-drop{display:block;position:static;border:none;background:none;padding:0 0 0 16px}
  .grid{min-width:0}
  .pcard-img,.pd-main img{aspect-ratio:4/3}
}
.grid>*{min-width:0}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:10px 16px;z-index:100}
.skip-link:focus{left:0}
