/* =========================================================================
   FBTM — Full Blast Transport & Maintenance
   Design language: industrial engineering data sheet.
   Condensed display type, monospace metadata, hairline rules,
   registration marks, single green accent on near-black.
   ========================================================================= */

:root{
  --black:#070A08;
  --ink:#0B120E;
  --panel:#0E1512;
  --panel2:#131C17;
  --panel3:#18231D;
  --line:#222E28;
  --line2:#2E3D35;
  --green:#00E676;
  --green-d:#00A854;
  --green-dd:#046D39;
  --white:#F4F8F5;
  --grey:#98A49E;
  --grey-d:#5E6A64;
  --grey-dd:#3D4741;
  --amber:#FFB300;
  --max:1320px;
  --pad:clamp(20px,4vw,40px);
  --nav-h:74px;
  --disp:'Barlow Condensed','Arial Narrow',Impact,sans-serif;
  --body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--black);color:var(--white);font-family:var(--body);
  font-size:16px;line-height:1.65;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;display:block}
a{color:inherit}
::selection{background:var(--green);color:var(--black)}

/* film grain — gives the flat black some tooth */
body::after{
  content:'';position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------------------------------------------------------------- layout */
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.wrap-n{max-width:1080px;margin:0 auto;padding:0 var(--pad)}
section{position:relative;padding:clamp(64px,9vw,124px) 0}
section.tight{padding:clamp(44px,6vw,76px) 0}
.bg-panel{background:var(--panel);border-block:1px solid var(--line)}
.bg-panel2{background:var(--panel2);border-block:1px solid var(--line)}
.hr{height:1px;background:var(--line);border:0}

/* hairline background grid */
.grid-bg::before{
  content:'';position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:calc(100% / 6) 100%;
  mask-image:linear-gradient(transparent,#000 18%,#000 82%,transparent);
  -webkit-mask-image:linear-gradient(transparent,#000 18%,#000 82%,transparent);
}

/* ---------------------------------------------------------------- type */
h1,h2,h3,h4,.disp{
  font-family:var(--disp);font-weight:800;line-height:.94;
  letter-spacing:-.005em;text-transform:uppercase;
}
h1{font-size:clamp(46px,8.4vw,116px)}
h2{font-size:clamp(34px,5.4vw,72px)}
h3{font-size:clamp(22px,2.6vw,34px)}
h4{font-size:clamp(17px,1.7vw,22px)}
.g{color:var(--green)}
.o{color:transparent;-webkit-text-stroke:1.4px var(--green-d)}
p{max-width:70ch}
.lead{font-size:clamp(16px,1.45vw,19px);color:var(--grey);line-height:1.72}
.lead.on{color:var(--white)}
.small{font-size:14px;color:var(--grey)}
.tiny{font-size:12.5px;color:var(--grey-d);line-height:1.6}

/* monospace metadata labels — the signature element */
.mono{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase}
.idx{
  font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--green);display:flex;align-items:center;gap:12px;margin-bottom:22px;
}
.idx::before{content:'';width:34px;height:1px;background:var(--green);flex:none}
.idx.no-rule::before{display:none}

.sec-head{margin-bottom:clamp(36px,5vw,64px);max-width:900px}
.sec-head .rule{width:56px;height:3px;background:var(--green);margin:22px 0 24px}

/* registration marks — engineering-drawing corner ticks */
.reg{position:relative}
.reg::before,.reg::after{
  content:'';position:absolute;width:11px;height:11px;pointer-events:none;
  border-color:var(--green-d);border-style:solid;opacity:.85;
}
.reg::before{top:-1px;left:-1px;border-width:1px 0 0 1px}
.reg::after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}

/* hazard stripe divider — nods to the crane boom livery */
.hazard{height:7px;background:repeating-linear-gradient(115deg,
  var(--green) 0 16px,transparent 16px 32px);opacity:.5}

/* ---------------------------------------------------------------- buttons */
.btn{
  display:inline-flex;align-items:center;gap:11px;background:var(--green);color:var(--black);
  padding:15px 28px;font-family:var(--mono);font-size:12px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;text-decoration:none;border:0;cursor:pointer;
  transition:transform .22s cubic-bezier(.2,.7,.3,1),box-shadow .22s,background .22s;
}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 34px rgba(0,230,118,.24)}
.btn:active{transform:translateY(0)}
.btn .ar{transition:transform .22s}
.btn:hover .ar{transform:translateX(4px)}
.btn.ghost{background:transparent;color:var(--white);border:1px solid var(--line2)}
.btn.ghost:hover{border-color:var(--green);color:var(--green);box-shadow:none}
.btn.sm{padding:11px 20px;font-size:11px}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}
.btns{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}

.tlink{
  display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--green);text-decoration:none;
  border-bottom:1px solid var(--green-dd);padding-bottom:4px;transition:.2s;
}
.tlink:hover{border-bottom-color:var(--green);gap:16px}

/* ---------------------------------------------------------------- nav */
#nav{
  position:fixed;inset:0 0 auto 0;z-index:120;height:var(--nav-h);
  display:flex;align-items:center;transition:background .3s,backdrop-filter .3s,border-color .3s;
  border-bottom:1px solid transparent;
}
#nav.stuck{background:rgba(7,10,8,.93);backdrop-filter:blur(16px);border-bottom-color:var(--line)}
#nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:26px;width:100%}
.brand{display:flex;align-items:center;gap:13px;text-decoration:none;flex:none}
.brand .mk{
  width:38px;height:38px;border:1.5px solid var(--green);display:grid;place-items:center;
  font-family:var(--disp);font-weight:800;font-size:16px;color:var(--green);letter-spacing:.02em;
  transition:background .25s,color .25s;
}
.brand:hover .mk{background:var(--green);color:var(--black)}
.brand .wm{font-family:var(--disp);font-weight:800;font-size:21px;letter-spacing:.13em;line-height:1}
.brand .sub{font-family:var(--mono);font-size:8px;letter-spacing:.18em;color:var(--grey-d);
  text-transform:uppercase;margin-top:3px;white-space:nowrap}
.nav-l{display:flex;align-items:center;gap:26px}
.nav-l a{
  font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--grey);text-decoration:none;transition:color .2s;white-space:nowrap;
}
.nav-l a:hover,.nav-l a[aria-current]{color:var(--green)}
.has-sub{position:relative}
.sub-menu{
  position:absolute;top:calc(100% + 16px);left:-18px;min-width:266px;background:var(--panel2);
  border:1px solid var(--line);padding:8px;opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:.22s;box-shadow:0 24px 60px rgba(0,0,0,.6);
}
.has-sub:hover .sub-menu,.has-sub:focus-within .sub-menu{opacity:1;visibility:visible;transform:none}
.sub-menu a{display:block;padding:11px 14px;color:var(--white);font-family:var(--body);
  font-size:13.5px;letter-spacing:0;text-transform:none;transition:background .18s,color .18s}
.sub-menu a:hover{background:var(--panel3);color:var(--green)}
.sub-menu a small{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;
  color:var(--grey-d);text-transform:uppercase;margin-top:3px}
#prog{position:absolute;bottom:-1px;left:0;height:2px;width:0;background:var(--green);
  transition:width .1s linear}
.burger{display:none;background:none;border:1px solid var(--line2);color:var(--white);
  width:42px;height:42px;cursor:pointer;font-size:17px;line-height:1}

/* ---------------------------------------------------------------- hero */
.hero{position:relative;min-height:min(100vh,880px);display:flex;align-items:flex-end;
  overflow:hidden;padding-top:var(--nav-h)}
.hero.short{min-height:min(70vh,620px)}
.hero-media{position:absolute;inset:0;z-index:0}
.hero-media img{width:100%;height:100%;object-fit:cover;will-change:transform}
.hero-media::after{
  content:'';position:absolute;inset:0;
  background:
    linear-gradient(100deg,rgba(7,10,8,.97) 0%,rgba(7,10,8,.9) 34%,rgba(7,10,8,.45) 66%,rgba(7,10,8,.72) 100%),
    linear-gradient(0deg,rgba(7,10,8,.96) 0%,transparent 46%);
}
.hero-in{position:relative;z-index:2;width:100%;padding-bottom:clamp(48px,7vw,86px)}
.hero h1{max-width:16ch}
.hero .lead{max-width:54ch;margin-top:24px}
.hero-rule{width:118px;height:4px;background:var(--green);margin:26px 0}
.badge{
  display:inline-flex;align-items:center;gap:9px;background:var(--green);color:var(--black);
  font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.15em;
  text-transform:uppercase;padding:8px 15px;margin-bottom:26px;
}
.badge.out{background:transparent;color:var(--green);border:1px solid var(--green-dd)}
.scroll-cue{position:absolute;bottom:26px;right:var(--pad);z-index:3;font-family:var(--mono);
  font-size:9.5px;letter-spacing:.24em;color:var(--grey-d);text-transform:uppercase;
  display:flex;align-items:center;gap:10px}
.scroll-cue i{display:block;width:1px;height:30px;background:linear-gradient(var(--green),transparent);
  animation:cue 1.9s ease-in-out infinite}
@keyframes cue{0%,100%{opacity:.3;transform:scaleY(.6)}50%{opacity:1;transform:scaleY(1)}}

/* page banner (interior pages) */
.pbanner{position:relative;padding:calc(var(--nav-h) + clamp(56px,7vw,96px)) 0 clamp(40px,5vw,68px);
  border-bottom:1px solid var(--line);overflow:hidden}
.pbanner .bgim{position:absolute;inset:0;z-index:0}
.pbanner .bgim img{width:100%;height:100%;object-fit:cover;opacity:.3}
.pbanner .bgim::after{content:'';position:absolute;inset:0;
  background:linear-gradient(92deg,rgba(7,10,8,.96),rgba(7,10,8,.72) 62%,rgba(7,10,8,.9))}
.pbanner .wrap{position:relative;z-index:2}
.crumbs{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--grey-d);margin-bottom:20px}
.crumbs a{color:var(--grey);text-decoration:none}
.crumbs a:hover{color:var(--green)}
.crumbs span{color:var(--grey-dd);margin:0 8px}

/* ---------------------------------------------------------------- ticker */
.ticker{overflow:hidden;border-block:1px solid var(--line);background:var(--ink);padding:15px 0}
.ticker-in{display:flex;gap:52px;white-space:nowrap;animation:mar 42s linear infinite;width:max-content}
.ticker span{font-family:var(--mono);font-size:11.5px;letter-spacing:.19em;text-transform:uppercase;
  color:var(--grey);display:flex;align-items:center;gap:52px}
.ticker span::after{content:'';width:5px;height:5px;background:var(--green);flex:none}
@keyframes mar{to{transform:translateX(-50%)}}
.ticker:hover .ticker-in{animation-play-state:paused}

/* ---------------------------------------------------------------- stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);
  background:var(--panel)}
.stats>div{padding:30px 24px;border-right:1px solid var(--line)}
.stats>div:last-child{border-right:0}
.stats b{font-family:var(--disp);font-weight:800;font-size:clamp(30px,3.6vw,48px);
  color:var(--green);display:block;line-height:1}
.stats .mono{color:var(--grey);margin-top:10px;display:block;font-size:10.5px}

/* ---------------------------------------------------------------- door cards (3 audiences) */
.doors{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.door{
  position:relative;background:var(--panel);border:1px solid var(--line);padding:34px 30px 30px;
  text-decoration:none;display:flex;flex-direction:column;min-height:296px;
  transition:border-color .3s,transform .3s,background .3s;overflow:hidden;
}
.door::after{content:'';position:absolute;inset:auto 0 0 0;height:3px;background:var(--green);
  transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.2,.7,.3,1)}
.door:hover{border-color:var(--line2);transform:translateY(-5px);background:var(--panel2)}
.door:hover::after{transform:scaleX(1)}
.door .n{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--green-d)}
.door h3{margin:18px 0 12px;font-size:clamp(22px,2.3vw,30px)}
.door p{color:var(--grey);font-size:14.5px;flex:1}
.door .go{font-family:var(--mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--green);margin-top:22px;display:flex;align-items:center;gap:9px;transition:gap .25s}
.door:hover .go{gap:15px}

/* ---------------------------------------------------------------- service cards */
.svc{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card{background:var(--panel);border:1px solid var(--line);overflow:hidden;
  transition:transform .32s,border-color .32s;display:flex;flex-direction:column}
.card:hover{transform:translateY(-6px);border-color:var(--green-dd)}
.card .ph{aspect-ratio:16/11;overflow:hidden;position:relative;background:var(--ink)}
.card .ph img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.3,1);
  filter:saturate(.82)}
.card:hover .ph img{transform:scale(1.06);filter:saturate(1)}
.card .ph .tag{position:absolute;top:0;left:0;background:var(--green);color:var(--black);
  font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.16em;padding:6px 12px}
.card .bd{padding:26px 26px 30px;display:flex;flex-direction:column;flex:1}
.card h3{font-size:clamp(20px,2.1vw,27px);margin-bottom:12px}
.card p{color:var(--grey);font-size:14.5px;flex:1}
.card .go{margin-top:22px}

/* spec list — the "/" bullets */
.slist{list-style:none;display:grid;gap:9px}
.slist li{position:relative;padding-left:20px;font-size:14.5px;color:var(--white)}
.slist li::before{content:'/';position:absolute;left:0;color:var(--green);font-weight:700}
.slist.two{grid-template-columns:1fr 1fr;gap:9px 26px}
.slist.dim li{color:var(--grey)}

/* checklist */
.clist{list-style:none;display:grid;gap:13px}
.clist li{position:relative;padding-left:26px;font-size:14.5px;color:var(--white)}
.clist li::before{content:'';position:absolute;left:0;top:8px;width:9px;height:9px;background:var(--green)}
.clist.open li{color:var(--grey)}
.clist.open li::before{background:transparent;border:1.4px solid var(--grey-d)}

/* ---------------------------------------------------------------- spec table */
.spec{width:100%;border-collapse:collapse;border:1px solid var(--line)}
.spec tr{border-bottom:1px solid var(--line)}
.spec tr:last-child{border-bottom:0}
.spec tr:nth-child(odd){background:var(--panel)}
.spec th{
  text-align:left;padding:15px 18px;font-family:var(--mono);font-size:10.5px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--green);font-weight:600;width:38%;vertical-align:top;
  border-right:1px solid var(--line);
}
.spec td{padding:15px 18px;font-size:14.5px;color:var(--white);vertical-align:top}
.spec caption{caption-side:bottom;text-align:left;padding-top:14px;font-size:12px;
  color:var(--grey-d);font-style:italic}

/* two-column layouts */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(34px,5vw,72px);align-items:center}
.split.wide-l{grid-template-columns:1.25fr 1fr}
.split.wide-r{grid-template-columns:1fr 1.25fr}
.split.top{align-items:start}
.figure{position:relative}
.figure img{width:100%;border:1px solid var(--line)}
.figure figcaption{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--grey-d);margin-top:12px}

/* panels */
.panel{background:var(--panel2);border:1px solid var(--line);padding:clamp(26px,3.4vw,40px)}
.panel.accent{border-top:3px solid var(--green)}
.panel.dim{background:var(--panel);border-top:3px solid var(--grey-dd)}
.panel h4{margin-bottom:20px}
.panel .mono{color:var(--green);display:block;margin-bottom:18px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}

/* numbered process steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.step{border-top:3px solid var(--line);padding-top:22px;transition:border-color .35s}
.step:hover{border-top-color:var(--green)}
.step b{font-family:var(--disp);font-weight:800;font-size:44px;color:var(--green);
  display:block;line-height:.9}
.step h4{margin:12px 0 10px}
.step p{font-size:14px;color:var(--grey)}

/* ---------------------------------------------------------------- gallery */
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.gal.four{grid-template-columns:repeat(4,1fr)}
.gitem{position:relative;overflow:hidden;aspect-ratio:4/3;border:1px solid var(--line);
  cursor:zoom-in;background:var(--ink)}
.gitem img{width:100%;height:100%;object-fit:cover;transition:transform .7s,filter .4s;
  filter:saturate(.8)}
.gitem:hover img{transform:scale(1.07);filter:saturate(1) brightness(.6)}
.gitem figcaption{position:absolute;inset:auto 0 0 0;padding:16px;font-family:var(--mono);
  font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  background:linear-gradient(transparent,rgba(7,10,8,.94));opacity:0;transform:translateY(8px);
  transition:.3s}
.gitem:hover figcaption{opacity:1;transform:none}

/* before/after drag comparison */
.ba{position:relative;overflow:hidden;border:1px solid var(--line);user-select:none;
  aspect-ratio:4/3;cursor:ew-resize;background:var(--ink)}
.ba img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ba .after{clip-path:inset(0 0 0 50%)}
.ba .hdl{position:absolute;top:0;bottom:0;left:50%;width:2px;background:var(--green);z-index:4;
  pointer-events:none}
.ba .hdl::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;border:2px solid var(--green);background:rgba(7,10,8,.8);border-radius:50%}
.ba .lb{position:absolute;bottom:14px;z-index:5;font-family:var(--mono);font-size:10px;
  letter-spacing:.16em;text-transform:uppercase;background:rgba(7,10,8,.85);
  border:1px solid var(--line2);padding:6px 11px;pointer-events:none}
.ba .lb.l{left:14px}
.ba .lb.r{right:14px;color:var(--green);border-color:var(--green-dd)}

/* ---------------------------------------------------------------- forms */
.field{display:block;margin-bottom:18px}
.field>label,.flabel{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--green);margin-bottom:9px}
.field .hint{font-size:12.5px;color:var(--grey-d);margin-top:7px}
input,textarea,select{
  width:100%;background:var(--black);border:1px solid var(--line);color:var(--white);
  padding:14px 15px;font-family:var(--body);font-size:15px;transition:border-color .2s,background .2s;
}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--green);background:var(--ink)}
input::placeholder,textarea::placeholder{color:var(--grey-dd)}
textarea{min-height:120px;resize:vertical;line-height:1.6}
select{appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2300E676' stroke-width='1.6' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 15px center}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.f3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
fieldset{border:1px solid var(--line);padding:26px 24px 10px;margin-bottom:24px;background:var(--panel)}
legend{font-family:var(--mono);font-size:11px;letter-spacing:.17em;text-transform:uppercase;
  color:var(--green);padding:0 11px;margin-left:-11px}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{position:relative}
.chip input{position:absolute;opacity:0;width:0;height:0}
.chip span{display:block;border:1px solid var(--line2);padding:11px 17px;font-family:var(--mono);
  font-size:11px;letter-spacing:.11em;text-transform:uppercase;cursor:pointer;
  transition:.2s;color:var(--grey)}
.chip span:hover{border-color:var(--green-dd);color:var(--white)}
.chip input:checked+span{background:var(--green);color:var(--black);border-color:var(--green);
  font-weight:600}
.chip input:focus-visible+span{outline:2px solid var(--green);outline-offset:2px}
.req{color:var(--green)}
.out{background:var(--black);border:1px solid var(--line);padding:22px;font-family:var(--mono);
  font-size:12.5px;line-height:1.85;white-space:pre-wrap;color:var(--grey);max-height:340px;
  overflow:auto}

/* optional detail accordions */
.acc{border:1px solid var(--line);background:var(--panel);margin-bottom:14px}
.acc>summary{
  list-style:none;cursor:pointer;padding:17px 20px;display:flex;align-items:center;gap:12px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--white);transition:background .2s;user-select:none;
}
.acc>summary::-webkit-details-marker{display:none}
.acc>summary:hover{background:var(--panel2)}
.acc>summary::before{
  content:'+';font-size:17px;line-height:1;color:var(--green);font-weight:700;
  width:18px;flex:none;transition:transform .25s;
}
.acc[open]>summary::before{content:'\2212'}
.acc>summary .opt{margin-left:auto;color:var(--grey-dd);font-size:10px;letter-spacing:.1em}
.acc[open]>summary{border-bottom:1px solid var(--line);background:var(--panel2)}
.acc-body{padding:26px 20px 6px}
.acc-note{font-size:13px;color:var(--grey-d);margin:-4px 0 22px;max-width:70ch}

/* essentials block */
.ess{background:var(--panel2);border:1px solid var(--line);border-top:3px solid var(--green);
  padding:clamp(24px,3.2vw,34px) clamp(20px,3vw,30px) 12px;margin-bottom:26px}
.ess h3{font-size:clamp(19px,2vw,25px);margin-bottom:8px}
.ess .sub{font-size:14px;color:var(--grey);margin-bottom:26px;max-width:64ch}

/* stepper */
.stepbar{display:flex;gap:0;margin-bottom:30px;border:1px solid var(--line)}
.stepbar div{flex:1;padding:13px 10px;text-align:center;font-family:var(--mono);font-size:10px;
  letter-spacing:.13em;text-transform:uppercase;color:var(--grey-dd);
  border-right:1px solid var(--line);transition:.3s}
.stepbar div:last-child{border-right:0}
.stepbar div.on{background:var(--green);color:var(--black);font-weight:600}
.stepbar div.done{color:var(--green)}

/* ---------------------------------------------------------------- selector tool */
.tool{background:var(--panel);border:1px solid var(--line);padding:clamp(26px,3.6vw,42px)}
.tool-res{margin-top:28px;border-top:1px solid var(--line);padding-top:28px;display:none}
.tool-res.on{display:block;animation:fade .45s ease}
@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.res-row{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.res-kpi{background:var(--panel2);border-left:3px solid var(--green);padding:18px 22px;min-width:170px}
.res-kpi b{font-family:var(--disp);font-weight:800;font-size:30px;color:var(--green);display:block;
  line-height:1}
.res-kpi span{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--grey);display:block;margin-top:7px}

/* copy block */
.copyblk{position:relative;background:var(--black);border:1px solid var(--line);padding:24px}
.copyblk dl{display:grid;grid-template-columns:auto 1fr;gap:11px 22px;font-size:14px}
.copyblk dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--green);padding-top:2px}
.copyblk dd{color:var(--white)}
.copybtn{position:absolute;top:16px;right:16px}
.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,80px);background:var(--green);
  color:var(--black);font-family:var(--mono);font-size:11.5px;letter-spacing:.13em;
  text-transform:uppercase;padding:13px 24px;z-index:400;transition:transform .34s cubic-bezier(.2,.7,.3,1);
  font-weight:600}
.toast.on{transform:translate(-50%,0)}

/* quote/callout strip */
.pull{border-left:3px solid var(--green);padding:6px 0 6px 26px;margin:32px 0}
.pull p{font-family:var(--disp);font-weight:700;text-transform:none;font-size:clamp(20px,2.3vw,29px);
  line-height:1.2;letter-spacing:0;color:var(--white)}
.pull cite{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--grey-d);font-style:normal;display:block;margin-top:14px}

.cta{position:relative;overflow:hidden;border-block:1px solid var(--line)}
.cta .bgim{position:absolute;inset:0;z-index:0}
.cta .bgim img{width:100%;height:100%;object-fit:cover;opacity:.24}
.cta .bgim::after{content:'';position:absolute;inset:0;background:rgba(7,10,8,.7)}
.cta .wrap{position:relative;z-index:2;text-align:center}
.cta h2{margin-bottom:18px}
.cta .btns{justify-content:center}

/* placeholder / editorial note */
.todo{border:1px dashed var(--green-dd);background:rgba(0,230,118,.045);padding:20px 22px;
  font-size:13.5px;color:var(--grey)}
.todo b{color:var(--green);font-family:var(--mono);font-size:10.5px;letter-spacing:.15em;
  text-transform:uppercase;display:block;margin-bottom:8px}

/* ---------------------------------------------------------------- footer */
footer{border-top:1px solid var(--line);background:var(--ink);padding:clamp(50px,6vw,80px) 0 34px}
.fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:40px;margin-bottom:48px}
footer h5{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--green);margin-bottom:18px}
footer ul{list-style:none;display:grid;gap:11px}
footer a{color:var(--grey);text-decoration:none;font-size:14px;transition:color .2s}
footer a:hover{color:var(--green)}
footer .fbrand .wm{font-family:var(--disp);font-weight:800;font-size:26px;letter-spacing:.13em}
footer .fbrand p{font-size:13.5px;color:var(--grey);margin-top:14px;max-width:34ch}
.fbot{border-top:1px solid var(--line);padding-top:26px;display:flex;justify-content:space-between;
  gap:20px;flex-wrap:wrap;font-family:var(--mono);font-size:10.5px;letter-spacing:.11em;
  text-transform:uppercase;color:var(--grey-dd)}
.ack{border-top:1px solid var(--line);margin-top:26px;padding-top:26px;font-size:13px;
  color:var(--grey);max-width:78ch;line-height:1.75}

/* ---------------------------------------------------------------- lightbox */
#lb{position:fixed;inset:0;background:rgba(7,10,8,.975);z-index:500;display:none;
  align-items:center;justify-content:center;padding:5vh 5vw}
#lb.on{display:flex}
#lb img{max-width:100%;max-height:100%;border:1px solid var(--line)}
#lb .x{position:absolute;top:22px;right:26px;background:none;border:1px solid var(--line2);
  color:var(--white);width:44px;height:44px;font-size:20px;cursor:pointer}
#lb .cap{position:absolute;bottom:22px;left:0;right:0;text-align:center;font-family:var(--mono);
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--grey)}

/* ---------------------------------------------------------------- reveal */
.rv{opacity:0;transform:translateY(28px);
  transition:opacity .78s cubic-bezier(.2,.7,.3,1) var(--d,0ms),
             transform .78s cubic-bezier(.2,.7,.3,1) var(--d,0ms)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .rv{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* ---------------------------------------------------------------- responsive */
@media(max-width:1080px){
  .nav-l{display:none}
  .burger{display:grid;place-items:center}
  .nav-l.open{
    display:flex;position:fixed;top:var(--nav-h);left:0;right:0;bottom:0;flex-direction:column;
    align-items:stretch;gap:0;background:rgba(7,10,8,.985);padding:22px var(--pad);
    overflow-y:auto;border-top:1px solid var(--line);
  }
  .nav-l.open a{padding:17px 0;border-bottom:1px solid var(--line);font-size:13px}
  .nav-l.open .sub-menu{position:static;opacity:1;visibility:visible;transform:none;border:0;
    background:transparent;box-shadow:none;padding:0 0 0 18px;min-width:0}
  .nav-l.open .btn{margin-top:20px;justify-content:center;border-bottom:0}
  .stats{grid-template-columns:1fr 1fr}
  .stats>div:nth-child(2){border-right:0}
  .stats>div:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .doors,.svc,.grid3,.steps,.gal,.gal.four{grid-template-columns:1fr 1fr}
  .grid4{grid-template-columns:1fr 1fr}
  .fgrid{grid-template-columns:1fr 1fr;gap:34px}
}
@media(max-width:700px){
  h1{font-size:clamp(38px,11vw,60px)}
  .split,.split.wide-l,.split.wide-r,.grid2,.grid3,.grid4,.doors,.svc,.steps,
  .gal,.gal.four,.f2,.f3,.slist.two,.fgrid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr}
  .stats>div{border-right:0;border-bottom:1px solid var(--line)}
  .brand .sub{display:none}
  .stepbar div{font-size:8.5px;letter-spacing:.06em;padding:11px 4px}
  .hero{min-height:auto;padding-bottom:20px}
  .ba{aspect-ratio:3/2.4}
}

/* ---------------------------------------------------------------- print */
@media print{
  body{background:#fff;color:#000;font-size:11pt}
  body::after,#nav,footer .fgrid,.cta,#lb,.scroll-cue,.ticker,.hero-media,.bgim,.burger,
  .btn,.tlink,.todo{display:none!important}
  section{padding:14pt 0;break-inside:avoid}
  h1,h2,h3,h4{color:#000}
  .g,.mono,.idx,.spec th,footer h5,.field>label,legend{color:#000!important}
  .panel,.card,.tool,.copyblk,.spec,.stats{border:1pt solid #999;background:#fff!important}
  .spec tr:nth-child(odd){background:#f2f2f2}
  .spec td,.slist li,.clist li,p,.lead{color:#000!important}
  a{text-decoration:none;color:#000}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:8pt;color:#555}
  .pbanner{padding:0 0 12pt;border-bottom:1pt solid #000}
}
