:root{
  --ground:#EBEDEF; --surface:#FFFFFF; --surface-2:#DFE3E7; --sunk:#F4F6F7;
  --ink:#181B1E; --ink-2:#535A61; --ink-3:#7C858D;
  --line:#CBD1D6; --line-2:#B5BDC4;
  --brand:#B92329; --brand-hot:#D4292F; --on-brand:#FFFFFF;
  --dark:#22262A; --on-dark:#EEF1F3;
  --shadow:0 1px 2px rgba(20,26,30,.06), 0 8px 24px -12px rgba(20,26,30,.22);
  --shadow-lg:0 2px 4px rgba(20,26,30,.06), 0 24px 48px -20px rgba(20,26,30,.3);
  --radius:4px; --maxw:1180px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ground:#131619; --surface:#1C2023; --surface-2:#272C30; --sunk:#101315;
    --ink:#ECEFF1; --ink-2:#A4ACB3; --ink-3:#7C858D;
    --line:#31383D; --line-2:#414A50;
    --brand:#E14047; --brand-hot:#F0525A;
    --dark:#0D0F11; --on-dark:#ECEFF1;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
    --shadow-lg:0 2px 4px rgba(0,0,0,.4), 0 24px 48px -20px rgba(0,0,0,.7);
  }
}
:root[data-theme="dark"]{
  --ground:#131619; --surface:#1C2023; --surface-2:#272C30; --sunk:#101315;
  --ink:#ECEFF1; --ink-2:#A4ACB3; --ink-3:#7C858D;
  --line:#31383D; --line-2:#414A50;
  --brand:#E14047; --brand-hot:#F0525A;
  --dark:#0D0F11; --on-dark:#ECEFF1;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
  --shadow-lg:0 2px 4px rgba(0,0,0,.4), 0 24px 48px -20px rgba(0,0,0,.7);
}

*{box-sizing:border-box}
body{margin:0; background:var(--ground); color:var(--ink);
  font-family:"Instrument Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;
  font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:"Archivo", ui-sans-serif, system-ui, sans-serif; font-variation-settings:"wdth" 112;
  margin:0; line-height:1.04; letter-spacing:-.02em; text-wrap:balance}
p{margin:0}
a{color:inherit}
img,svg{max-width:100%}
:focus-visible{outline:2.5px solid var(--brand); outline-offset:3px; border-radius:2px}
.wrap{max-width:var(--maxw); margin-inline:auto; padding-inline:22px}
.eyebrow{font-family:"IBM Plex Mono", ui-monospace, monospace; font-size:11px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3)}

.btn{display:inline-flex; align-items:center; justify-content:center; gap:9px;
  font-family:"Archivo", sans-serif; font-weight:700; font-variation-settings:"wdth" 108;
  font-size:14.5px; padding:13px 22px; border-radius:var(--radius); border:1.5px solid transparent;
  text-decoration:none; cursor:pointer; transition:background .16s, color .16s, border-color .16s, transform .12s}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--brand); color:var(--on-brand)}
.btn-primary:hover{background:var(--brand-hot)}
.btn-ghost{background:transparent; color:var(--ink); border-color:var(--line-2)}
.btn-ghost:hover{border-color:var(--ink); background:var(--surface)}
.btn-sm{padding:9px 15px; font-size:13px}

.hdr{position:sticky; top:0; z-index:50; background:color-mix(in srgb, var(--ground) 88%, transparent);
  backdrop-filter:blur(10px); border-bottom:1px solid var(--line)}
.hdr-in{display:flex; align-items:center; gap:24px; height:84px}
.logo{display:flex; align-items:center; gap:11px; text-decoration:none; margin-right:auto}
.logo img{width:60px; height:60px; border-radius:6px; flex:none; display:block; background:#000;
  border:1px solid color-mix(in srgb, var(--ink) 18%, transparent)}
.logo-txt{display:flex; flex-direction:column; line-height:1.08}
.logo-txt b{font-family:"Archivo",sans-serif; font-weight:700; font-variation-settings:"wdth" 115; font-size:19px; letter-spacing:-.015em}
.logo-txt small{font-family:"IBM Plex Mono",monospace; font-size:9px; letter-spacing:.18em; color:var(--ink-3); text-transform:uppercase}
.nav{display:flex; gap:26px}
.nav a{text-decoration:none; font-size:14px; font-weight:500; color:var(--ink-2);
  padding:4px 0; border-bottom:1.5px solid transparent; transition:color .15s, border-color .15s}
.nav a:hover{color:var(--ink); border-bottom-color:var(--brand)}
.burger{display:none; flex:none; width:40px; height:40px; align-items:center; justify-content:center;
  background:transparent; border:1.5px solid var(--line-2); border-radius:var(--radius); cursor:pointer; padding:0}
.burger svg{display:block}
.burger span{display:block; width:18px; height:1.5px; background:var(--ink); position:relative; transition:background .15s .1s}
.burger span::before,.burger span::after{content:""; position:absolute; left:0; width:18px; height:1.5px; background:var(--ink); transition:transform .2s, top .2s}
.burger span::before{top:-6px}
.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{top:0; transform:rotate(45deg)}
.burger[aria-expanded="true"] span::after{top:0; transform:rotate(-45deg)}
.mobile-nav{display:none; flex-direction:column; padding:8px 22px 18px; border-top:1px solid var(--line);
  background:var(--ground)}
.mobile-nav a{text-decoration:none; font-size:15.5px; font-weight:500; color:var(--ink-2);
  padding:13px 0; border-bottom:1px solid var(--line)}
.mobile-nav a:last-child{border-bottom:0}
.mobile-nav.open{display:flex}
@media (max-width:980px){
  .nav{display:none}
  .burger{display:flex}
}
@media (min-width:981px){ .mobile-nav{display:none !important} }
@media (max-width:620px){
  .hdr-in{gap:12px; height:70px}
  .logo img{width:48px; height:48px}
  .logo-txt b{font-size:15px}
  .hdr .btn-sm{padding:9px 12px; font-size:12.5px; white-space:nowrap}
}
@media (max-width:344px){ .logo-txt{display:none} }

.hero{padding:52px 0 44px}
.hero-head{display:grid; grid-template-columns:1.1fr .9fr; gap:44px; align-items:end; margin-bottom:30px}
.hero h1{font-size:clamp(36px,4.9vw,58px); font-weight:800; font-variation-settings:"wdth" 118}
.hero h1 em{font-style:normal; color:var(--brand)}
.hero-sub{margin-top:20px; font-size:18px; color:var(--ink-2); max-width:46ch}
.hero-cta{display:flex; gap:11px; margin-top:28px; flex-wrap:wrap}
.hero-note{margin-top:16px; font-size:13.5px; color:var(--ink-3)}
@media (max-width:900px){ .hero-head{grid-template-columns:1fr; gap:26px} .hero{padding:32px 0 30px} }

.ba{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.ba figure{margin:0; position:relative; border-radius:7px; overflow:hidden;
  border:1px solid var(--line); box-shadow:var(--shadow-lg); background:var(--surface)}
.ba img{display:block; width:100%; aspect-ratio:1.36/1; object-fit:cover}
.ba .tag{position:absolute; top:13px; left:13px; font-family:"IBM Plex Mono",monospace;
  font-size:11px; letter-spacing:.17em; text-transform:uppercase; color:#fff;
  background:rgba(9,11,12,.80); padding:6px 11px; border-radius:3px}
.ba .tag.aft{background:var(--brand)}
.ba-note{margin-top:16px; font-size:14.5px; color:var(--ink-3); max-width:70ch}
@media (max-width:760px){ .ba{grid-template-columns:1fr} }

.viz{background:var(--surface); border:1px solid var(--line); border-radius:6px; box-shadow:var(--shadow-lg); overflow:hidden}
.viz-head{display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:13px 16px; border-bottom:1px solid var(--line)}
.viz-head b{font-family:"Archivo",sans-serif; font-size:13.5px; font-weight:700}
.viz-foot{padding:14px 16px 16px; border-top:1px solid var(--line)}
.swatches{display:flex; flex-wrap:wrap; gap:7px}
.sw{position:relative; width:44px; height:44px; border-radius:3px; cursor:pointer; padding:0;
  border:1.5px solid var(--line-2); transition:transform .14s, box-shadow .14s, border-color .14s}
.sw:hover{transform:translateY(-2px)}
.sw[aria-pressed="true"]{border-color:var(--ink); box-shadow:0 0 0 2px var(--surface), 0 0 0 3.5px var(--ink)}
.sw-name{margin-top:12px; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap}
.sw-name .cName{font-family:"Archivo",sans-serif; font-size:15px; font-weight:700}
.sw-name .cCode{font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink-3); letter-spacing:.04em}

.colour-grid{display:grid; grid-template-columns:1.05fr .95fr; gap:44px; align-items:start}
.colour-copy h3{font-size:19px; font-weight:700; margin-bottom:10px}
.colour-copy p{font-size:15.5px; color:var(--ink-2); line-height:1.6}
@media (max-width:900px){ .colour-grid{grid-template-columns:1fr; gap:28px} }

.strip{background:var(--dark); color:var(--on-dark)}
.strip-in{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:color-mix(in srgb, var(--on-dark) 14%, transparent)}
.strip-cell{background:var(--dark); padding:22px 20px}
.strip-cell b{display:block; font-family:"Archivo",sans-serif; font-size:24px; font-weight:700; font-variation-settings:"wdth" 115}
.strip-cell span{display:block; margin-top:3px; font-size:13px; color:color-mix(in srgb, var(--on-dark) 62%, transparent)}
@media (max-width:760px){ .strip-in{grid-template-columns:1fr 1fr} }

.sec{padding:76px 0}
.sec-alt{background:var(--sunk); border-block:1px solid var(--line)}
.sec-dark{background:var(--dark); color:var(--on-dark)}
.sec-head{max-width:60ch; margin-bottom:40px}
.sec-head h2{font-size:clamp(28px,3.6vw,40px); font-weight:700; margin-top:12px}
.sec-head p{margin-top:14px; color:var(--ink-2); font-size:17px}
.sec-dark .sec-head p{color:color-mix(in srgb, var(--on-dark) 68%, transparent)}
.sec-dark .eyebrow{color:color-mix(in srgb, var(--on-dark) 52%, transparent)}
@media (max-width:900px){ .sec{padding:52px 0} }

.svc{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}
.svc-card{background:var(--surface); border:1px solid var(--line); border-radius:5px; padding:20px 18px 22px;
  transition:border-color .18s, transform .4s, opacity .4s}
.svc-card.pre{opacity:0; transform:translateY(14px)}
.svc-card:hover{border-color:var(--ink-3)}
.svc-card h3{font-size:17px; font-weight:700; margin-bottom:7px}
.svc-card p{font-size:14px; color:var(--ink-2); line-height:1.5}
.svc-ico{color:var(--brand); margin-bottom:14px; display:block}
@media (max-width:1000px){ .svc{grid-template-columns:repeat(2,1fr)} }
@media (max-width:520px){ .svc{grid-template-columns:1fr} }

.cmp{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.cmp-col{border-radius:5px; padding:26px 24px 28px; border:1px solid var(--line); background:var(--surface)}
.cmp-col.win{background:var(--dark); color:var(--on-dark); border-color:var(--dark)}
.cmp-col h3{font-size:19px; font-weight:700; margin-top:8px}
.cmp-col .tag{font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3)}
.cmp-col.win .tag{color:color-mix(in srgb, var(--on-dark) 55%, transparent)}
.cmp-list{list-style:none; margin:18px 0 0; padding:0; display:flex; flex-direction:column; gap:11px}
.cmp-list li{display:flex; gap:11px; font-size:15px; line-height:1.45}
.cmp-list .m{flex:none; width:18px; font-family:"IBM Plex Mono",monospace; font-size:13px; color:var(--ink-3)}
.cmp-col.win .m{color:var(--brand-hot)}
@media (max-width:760px){ .cmp{grid-template-columns:1fr} }

.steps{display:grid; grid-template-columns:repeat(6,1fr); border-top:2px solid var(--ink)}
.step{padding:22px 20px 26px 0; border-right:1px solid var(--line)}
.step:last-child{border-right:0}
.step .n{font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--brand); letter-spacing:.1em}
.step h3{font-size:16.5px; font-weight:700; margin:9px 0 7px}
.step p{font-size:14px; color:var(--ink-2); line-height:1.5}
@media (max-width:900px){
  .steps{grid-template-columns:1fr; border-top:0}
  .step{border-right:0; border-top:1px solid var(--line); padding:20px 0}
  .step:first-child{border-top:2px solid var(--ink)}
}

.gal{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin:0}
.gal figure{margin:0; background:var(--surface); border:1px solid var(--line); border-radius:5px; overflow:hidden}
.gal img{display:block; width:100%; aspect-ratio:5/9; object-fit:cover}
.gal figcaption{padding:12px 14px 14px; font-size:13.5px; line-height:1.45; color:var(--ink-2)}
.ph{aspect-ratio:4/3; border:1.5px dashed var(--line-2); border-radius:5px;
  background:repeating-linear-gradient(45deg, transparent 0 11px, color-mix(in srgb, var(--line) 40%, transparent) 11px 12px), var(--surface);
  display:flex; flex-direction:column; justify-content:flex-end; padding:16px; gap:5px}
.ph b{font-family:"Archivo",sans-serif; font-size:14px; font-weight:700}
.ph span{font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--ink-3)}
.ph-tag{align-self:flex-start; margin-bottom:auto; font-family:"IBM Plex Mono",monospace; font-size:10px;
  letter-spacing:.14em; text-transform:uppercase; background:var(--dark); color:var(--on-dark); padding:4px 8px; border-radius:2px}
@media (max-width:900px){ .gal{grid-template-columns:1fr 1fr} }

.rev{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}
.rev-card{background:var(--surface); border:1px solid var(--line); border-radius:5px; padding:22px 20px}
.rev-card blockquote{margin:0; font-size:15.5px; line-height:1.55}
.rev-card footer{margin-top:14px; font-size:13px; color:var(--ink-3)}
.stars{color:var(--brand); letter-spacing:2px; font-size:13px; margin-bottom:12px}
@media (max-width:860px){ .rev{grid-template-columns:1fr} }

.quote-grid{display:grid; grid-template-columns:1fr 1.15fr; gap:44px; align-items:start}
.contact-card{background:var(--dark); color:var(--on-dark); border-radius:6px; padding:30px 28px 32px}
.contact-card h2{font-size:30px; font-weight:700; margin-top:12px}
.contact-card > p{color:color-mix(in srgb, var(--on-dark) 66%, transparent); margin-top:12px; font-size:15.5px}
.contact-list{list-style:none; padding:0; margin:24px 0 0; display:flex; flex-direction:column; gap:16px}
.contact-list a{text-decoration:none; display:block}
.contact-list .lbl{font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.16em;
  text-transform:uppercase; color:color-mix(in srgb, var(--on-dark) 50%, transparent); display:block}
.contact-list .val{font-family:"Archivo",sans-serif; font-weight:700; font-size:17px; overflow-wrap:anywhere}
.contact-list a:hover .val{color:var(--brand-hot)}
form{background:var(--surface); border:1px solid var(--line); border-radius:6px; padding:26px 24px 28px}
.field{display:flex; flex-direction:column; gap:6px; margin-bottom:15px}
.field label{font-size:13px; font-weight:600; color:var(--ink-2)}
.field input,.field select,.field textarea{font:inherit; font-size:15px; color:var(--ink); background:var(--sunk);
  border:1px solid var(--line-2); border-radius:3px; padding:11px 12px; width:100%}
.field textarea{resize:vertical; min-height:92px}
.two{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.form-note{margin-top:12px; font-size:12.5px; color:var(--ink-3)}
.sent{margin-top:14px; padding:12px 14px; border-radius:3px; background:var(--surface-2); font-size:14px; display:none}
.sent.on{display:block}
.quote-grid > *, .hero-grid > *, .tool > *, .svc > *, .cmp > *{min-width:0}
@media (max-width:900px){ .quote-grid{grid-template-columns:1fr; gap:26px} .two{grid-template-columns:1fr} }

.ftr{background:var(--dark); color:var(--on-dark); padding:44px 0 30px}
.ftr-in{display:flex; flex-wrap:wrap; gap:28px; justify-content:space-between; align-items:flex-start}
.ftr small{color:color-mix(in srgb, var(--on-dark) 55%, transparent); font-size:13px; line-height:1.7}
.ftr .logo-txt b{color:var(--on-dark)}
.areas{font-size:13.5px; color:color-mix(in srgb, var(--on-dark) 70%, transparent); max-width:34ch; line-height:1.65}

.notes{background:var(--ground); padding:44px 0 60px}
.notes-box{border:1.5px dashed var(--brand); border-radius:6px; padding:24px 24px 26px; background:var(--surface)}
.notes-box .eyebrow{color:var(--brand)}
.notes-box h3{font-size:20px; font-weight:700; margin:8px 0 14px}
.notes-box ol{margin:0; padding-left:20px; display:flex; flex-direction:column; gap:9px}
.notes-box li{font-size:14.5px; color:var(--ink-2); line-height:1.55}
.notes-box li b{color:var(--ink)}

/* multi-page nav active state */
.nav a.active{color:var(--ink); border-bottom-color:var(--brand)}
.mobile-nav a.active{color:var(--ink)}

/* lightbox */
.gal img, .ba img{cursor:zoom-in}
.lightbox{position:fixed; inset:0; z-index:200; display:none; align-items:center; justify-content:center;
  padding:60px; background:rgba(8,9,10,.94); cursor:zoom-out}
.lightbox.open{display:flex}
.lightbox img{display:block; max-width:100%; max-height:100%; width:auto; height:auto;
  object-fit:contain; border-radius:4px; box-shadow:var(--shadow-lg); cursor:default}
.lightbox-close{position:fixed; top:18px; right:22px; width:44px; height:44px; border-radius:50%;
  border:1.5px solid rgba(255,255,255,.3); background:rgba(0,0,0,.4); color:#fff;
  font-size:22px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center}
.lightbox-close:hover{background:rgba(255,255,255,.15)}
.lightbox-nav{position:fixed; top:50%; transform:translateY(-50%); width:48px; height:48px; border-radius:50%;
  border:1.5px solid rgba(255,255,255,.3); background:rgba(0,0,0,.4); color:#fff;
  font-size:22px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center}
.lightbox-nav:hover{background:rgba(255,255,255,.15)}
.lightbox-prev{left:18px}
.lightbox-next{right:18px}
.lightbox-count{position:fixed; bottom:18px; left:50%; transform:translateX(-50%);
  font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.08em; color:rgba(255,255,255,.6)}
@media (max-width:620px){
  .lightbox{padding:20px}
  .lightbox-nav{width:40px; height:40px; font-size:18px}
  .lightbox-prev{left:8px}
  .lightbox-next{right:8px}
}
