/* Ubuntu Sawmill timber portal.
   Theme: an engineer's field folio - the drawing sheet and the forest on one desk.
   Palette hexes are ONLY the three registry values; every other shade is derived
   with color-mix so brand_guard.py never sees an approximated colour. */

@font-face{font-family:Bebas;src:url(/bebas.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Mont;src:url(/montserrat-400.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Mont;src:url(/montserrat-600.woff2) format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Mont;src:url(/montserrat-700.woff2) format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Pop;src:url(/poppins-600.woff2) format('woff2');font-weight:600;font-display:swap}

:root{
  --green:#1E3A1E; --gold:#C9A84C; --cream:#F4EEE0; --ink:#1a1a1a;

  --paper:color-mix(in srgb, var(--cream) 55%, white);
  --panel:color-mix(in srgb, var(--cream) 88%, white);
  --line:color-mix(in srgb, var(--green) 22%, transparent);
  --hair:color-mix(in srgb, var(--green) 12%, transparent);
  --body:color-mix(in srgb, var(--ink) 82%, var(--green));
  --muted:color-mix(in srgb, var(--ink) 52%, var(--paper));
  --deep:color-mix(in srgb, var(--green) 78%, var(--ink));
  --goldink:color-mix(in srgb, var(--gold) 62%, var(--ink));
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:Mont,system-ui,sans-serif;color:var(--body);background:var(--paper);
  font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;
  /* drafting grid, very faint - zero-model texture */
  background-image:
    linear-gradient(var(--hair) 1px,transparent 1px),
    linear-gradient(90deg,var(--hair) 1px,transparent 1px);
  background-size:64px 64px;
}
img,video{max-width:100%;display:block}
a{color:inherit}

.wrap{max-width:1180px;margin:0 auto;padding:0 28px}
section{padding:100px 0}
.tight{padding-top:0}

/* ---------- drafting-sheet type ---------- */
h1,h2,h3,.disp{font-family:Bebas,Impact,sans-serif;font-weight:400;letter-spacing:.012em;
  line-height:.95;color:var(--deep);text-wrap:balance}
h1{font-size:clamp(48px,7.4vw,96px)}
h2{font-size:clamp(34px,4.6vw,58px)}
h3{font-size:clamp(22px,2.4vw,29px)}
.lede{font-size:clamp(17px,1.9vw,21px);line-height:1.62;max-width:62ch;
  color:color-mix(in srgb, var(--body) 88%, transparent)}
p+p{margin-top:1.05em}
strong{font-weight:700;color:var(--deep)}
.num{font-variant-numeric:tabular-nums}

/* the recurring device: a drawing-sheet title block */
.tb{display:inline-flex;flex-direction:column;gap:7px;margin-bottom:26px}
.tb b{font-family:Pop,sans-serif;font-weight:600;font-size:11px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--goldink)}
.tb i{display:block;width:64px;height:2px;background:var(--green);font-style:normal}

/* ---------- nav ---------- */
.nav{position:sticky;top:0;z-index:60;background:color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--hair)}
.navrow{display:flex;align-items:center;gap:30px;height:74px}
.brand{flex:0 0 auto;background:var(--ink);padding:9px 13px;border-radius:3px;line-height:0}
.brand img{height:28px;width:auto}
.nav nav{margin-left:auto;display:flex;gap:26px}
.nav nav a{font-size:13.5px;font-weight:600;text-decoration:none;color:var(--body);
  padding:4px 0;border-bottom:2px solid transparent;transition:border-color .18s,color .18s}
.nav nav a:hover,.nav nav a.on{color:var(--green);border-bottom-color:var(--gold)}
.navcta{font-family:Pop,sans-serif;font-weight:600;font-size:12px;letter-spacing:.1em;
  text-transform:uppercase;text-decoration:none;background:var(--green);color:var(--cream);
  padding:12px 20px;border-radius:3px;transition:transform .16s,background .16s}
.navcta:hover{background:var(--deep);transform:translateY(-1px)}
.burger{display:none}

/* ---------- hero: the one dark band ---------- */
.hero{position:relative;min-height:clamp(560px,78vh,760px);display:flex;align-items:flex-end;
  overflow:hidden;background:var(--deep)}
.hero .bg{position:absolute;inset:0}
.hero .bg img,.hero .bg video{width:100%;height:100%;object-fit:cover}
.hero .bg video{position:absolute;inset:0;opacity:0;transition:opacity 1.1s ease}
.hero .bg video.up{opacity:1}
/* two veils: a vertical one for the text zone, a horizontal one so the small gold
   eyebrow never lands on bright mist. Caught in the 27 Aug visual audit. */
.veil{position:absolute;inset:0;background:
  linear-gradient(to top, color-mix(in srgb, var(--deep) 96%, transparent) 0%,
  color-mix(in srgb, var(--deep) 88%, transparent) 42%,
  color-mix(in srgb, var(--deep) 40%, transparent) 74%, transparent 100%),
  linear-gradient(100deg, color-mix(in srgb, var(--deep) 76%, transparent) 0%,
  color-mix(in srgb, var(--deep) 44%, transparent) 46%, transparent 78%)}
.hero .inner{position:relative;width:100%;padding:60px 0 62px}
.hero h1,.hero .lede{color:var(--cream)}
.hero .lede{color:color-mix(in srgb, var(--cream) 84%, transparent);margin-top:20px}
.gold{color:var(--gold)}
.eyebrow{font-family:Pop,sans-serif;font-weight:600;font-size:11.5px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gold);margin-bottom:20px}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin-top:26px}
.chip{font-family:Pop,sans-serif;font-size:11px;font-weight:600;letter-spacing:.11em;
  text-transform:uppercase;color:var(--cream);padding:8px 14px;border-radius:2px;
  border:1px solid color-mix(in srgb, var(--gold) 52%, transparent);
  background:color-mix(in srgb, var(--ink) 30%, transparent)}
.hbtns{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:Pop,sans-serif;font-weight:600;
  font-size:12.5px;letter-spacing:.11em;text-transform:uppercase;text-decoration:none;
  padding:16px 26px;border-radius:3px;border:1px solid transparent;cursor:pointer;
  transition:transform .16s,background .16s,border-color .16s}
.btn:hover{transform:translateY(-2px)}
.btn-g{background:var(--gold);color:var(--ink)}
.btn-g:hover{background:color-mix(in srgb, var(--gold) 86%, white)}
.btn-o{border-color:color-mix(in srgb, var(--cream) 46%, transparent);color:var(--cream)}
.btn-o:hover{border-color:var(--gold);background:color-mix(in srgb, var(--ink) 26%, transparent)}
.btn-d{background:var(--green);color:var(--cream)}
.btn-d:hover{background:var(--deep)}
.btn-l{border-color:var(--line);color:var(--deep)}
.btn-l:hover{border-color:var(--green);background:var(--panel)}

/* ---------- panels: sheets on a desk, with registration ticks ---------- */
.sheet{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:2px;
  padding:clamp(30px,4.4vw,58px)}
.sheet::before,.sheet::after{content:"";position:absolute;width:13px;height:13px;
  border:1.5px solid var(--gold);pointer-events:none}
.sheet::before{top:-1px;left:-1px;border-right:0;border-bottom:0}
.sheet::after{bottom:-1px;right:-1px;border-left:0;border-top:0}
.q{font-family:Bebas,sans-serif;font-size:clamp(28px,3.7vw,46px);line-height:1.03;
  color:var(--deep);margin-bottom:24px;text-wrap:balance}

/* ---------- product cards: photo + its section drawing ---------- */
.prods{display:grid;gap:26px;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));margin-top:44px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:2px;overflow:hidden;
  display:flex;flex-direction:column;transition:transform .22s,box-shadow .22s,border-color .22s}
.card:hover{transform:translateY(-6px);border-color:color-mix(in srgb, var(--gold) 60%, transparent);
  box-shadow:0 22px 44px color-mix(in srgb, var(--green) 16%, transparent)}
.card .shot{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--deep)}
.card .shot img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.card:hover .shot img{transform:scale(1.045)}
.card .draw{border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);
  background:var(--cream)}
.card .draw img{width:100%;height:auto}
.card .txt{padding:26px 26px 28px;display:flex;flex-direction:column;flex:1}
.card h3{margin-bottom:9px}
.card p{font-size:15px;color:var(--muted);line-height:1.62}
.spec{list-style:none;margin:18px 0 0;font-size:13.5px}
.spec li{display:flex;justify-content:space-between;gap:14px;padding:8px 0;
  border-bottom:1px dashed var(--hair)}
.spec li span:first-child{color:var(--muted)}
.spec li span:last-child{font-weight:600;color:var(--deep);font-variant-numeric:tabular-nums}
.card .go{margin-top:20px;font-family:Pop,sans-serif;font-size:11.5px;font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;color:var(--green);text-decoration:none;
  display:inline-flex;gap:8px;align-items:center}
.card .go:hover{color:var(--goldink)}
.card .go em{font-style:normal;transition:transform .18s;display:inline-block}
.card:hover .go em{transform:translateX(5px)}

/* ---------- the drawing strip ---------- */
.plate{background:var(--cream);border:1px solid var(--line);border-radius:2px;padding:14px 14px 4px;
  position:relative}
.plate::after{content:"";position:absolute;bottom:-1px;right:-1px;width:13px;height:13px;
  border:1.5px solid var(--gold);border-left:0;border-top:0;pointer-events:none}
.plate img{width:100%;height:auto;border-radius:1px}
.plate .cap{font-family:Pop,sans-serif;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);padding:11px 4px 12px;text-align:center;border-top:1px solid var(--hair);margin-top:12px}

/* ---------- numbered sequence (only where order is real) ---------- */
.steps{counter-reset:s;display:grid;gap:0;margin-top:40px}
.step{counter-increment:s;display:grid;grid-template-columns:76px 1fr;gap:26px;
  padding:26px 0;border-top:1px solid var(--hair)}
.step:last-child{border-bottom:1px solid var(--hair)}
.step::before{content:counter(s,decimal-leading-zero);font-family:Bebas,sans-serif;font-size:40px;
  line-height:1;color:color-mix(in srgb, var(--gold) 78%, var(--ink))}
.step h3{margin-bottom:7px}
.step p{font-size:15.5px;color:var(--muted);max-width:64ch}

/* ---------- two-column ---------- */
.two{display:grid;gap:clamp(30px,5vw,64px);grid-template-columns:1fr 1fr;align-items:center}
.two.wide{grid-template-columns:1.05fr .95fr}

/* ---------- band (dark, used sparingly) ---------- */
.band{background:var(--deep);color:color-mix(in srgb, var(--cream) 88%, transparent);
  padding:88px 0}
.band h2{color:var(--cream)}
.band .lede{color:color-mix(in srgb, var(--cream) 80%, transparent)}
.band .tb b{color:var(--gold)}
.band .tb i{background:var(--gold)}
.stats{display:grid;gap:1px;grid-template-columns:1fr 1fr;
  background:color-mix(in srgb, var(--cream) 16%, transparent);margin-top:44px;
  border:1px solid color-mix(in srgb, var(--cream) 16%, transparent)}
.stat{background:var(--deep);padding:28px 24px}
.stat b{display:block;font-family:Bebas,sans-serif;font-size:44px;line-height:1;color:var(--gold);
  font-variant-numeric:tabular-nums}
.stat span{display:block;font-size:13px;margin-top:9px;
  color:color-mix(in srgb, var(--cream) 66%, transparent)}

/* ---------- table ---------- */
.tbl{width:100%;border-collapse:collapse;margin-top:32px;font-size:14.5px}
.tbl th,.tbl td{text-align:left;padding:15px 16px;border-bottom:1px solid var(--hair)}
.tbl th{font-family:Pop,sans-serif;font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--cream);background:var(--green);border-bottom:0}
.tbl td:not(:first-child){font-variant-numeric:tabular-nums}
.tbl tbody tr:nth-child(even){background:color-mix(in srgb, var(--cream) 60%, transparent)}
.scroller{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ---------- form ---------- */
.form{display:grid;gap:18px;grid-template-columns:1fr 1fr;margin-top:34px}
.f-full{grid-column:1/-1}
label{display:block;font-family:Pop,sans-serif;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin-bottom:8px}
input,select,textarea{width:100%;font-family:Mont,sans-serif;font-size:15.5px;color:var(--body);
  background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:14px 15px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--gold);outline-offset:1px;
  border-color:transparent}
textarea{min-height:130px;resize:vertical}
.hp{position:absolute;left:-9999px}
.note{font-size:13.5px;color:var(--muted)}
.msg{grid-column:1/-1;padding:15px 17px;border-radius:3px;font-size:14.5px;display:none}
.msg.ok{display:block;background:color-mix(in srgb, var(--green) 12%, var(--paper));
  border:1px solid var(--green);color:var(--deep)}
.msg.bad{display:block;background:color-mix(in srgb, var(--gold) 18%, var(--paper));
  border:1px solid var(--gold);color:var(--deep)}

/* ---------- footer ---------- */
footer{background:var(--ink);color:color-mix(in srgb, var(--cream) 72%, transparent);
  padding:70px 0 34px;font-size:14px}
.frow{display:grid;gap:40px;grid-template-columns:1.5fr 1fr 1fr 1fr}
.fbrand{font-family:Bebas,sans-serif;font-size:30px;color:var(--cream);letter-spacing:.04em}
.fh{font-family:Pop,sans-serif;font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold);margin-bottom:15px}
footer a{display:block;color:color-mix(in srgb, var(--cream) 72%, transparent);text-decoration:none;
  padding:5px 0;transition:color .16s}
footer a:hover{color:var(--gold)}
.fsm{font-size:13px;color:color-mix(in srgb, var(--cream) 52%, transparent);margin-top:10px;
  line-height:1.66}
.fbase{margin-top:46px;padding-top:22px;border-top:1px solid color-mix(in srgb, var(--cream) 14%, transparent);
  font-size:12.5px;color:color-mix(in srgb, var(--cream) 46%, transparent)}

/* ---------- reveal: visible by default, JS only enhances ---------- */
.js .reveal{opacity:0;transform:translateY(26px)}
.js .reveal.in{opacity:1;transform:none;transition:opacity .68s ease,transform .68s ease}

/* ---------- responsive ---------- */
@media(max-width:900px){
  .two,.two.wide,.frow,.form{grid-template-columns:1fr}
  .nav nav{display:none}
  .navrow{gap:14px}
  section{padding:70px 0}
  .hero{min-height:auto}
  .hero .inner{padding:46px 0 48px}
  .step{grid-template-columns:56px 1fr;gap:16px}
  .step::before{font-size:30px}
  body{background-size:44px 44px}
}
@media(max-width:520px){
  .navcta{padding:10px 14px;font-size:11px}
  .brand img{height:22px}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  .js .reveal{opacity:1;transform:none}
}
