/* ================================================================
   ANDY'S POLICE SUPPLY — DESIGN SYSTEM v4 "DISPATCH"
   display: Barlow Condensed · body: Barlow · data: IBM Plex Mono
   Shared by every page. Theme contract: dark tokens on :root,
   light tokens apply when the OS prefers light (and no manual
   dark pick) OR when html[data-theme="light"] is set manually.
   Manual picks persist via localStorage key `aps-theme`
   (set pre-paint by the inline head script; cycled in js/main.js).
   ================================================================ */
:root{
  color-scheme:dark;
  --ink-0:#060A13;          /* void */
  --ink-1:#0A101F;          /* base */
  --ink-2:#0E1728;          /* raised */
  --ink-3:#131E33;          /* hover */
  --paper:#EDF0F8;
  --muted:#93A0BE;
  --faint:#5C6A8C;
  --line:rgba(200,214,248,.11);
  --line-2:rgba(200,214,248,.2);
  --gold:#E6B354;           /* text + accents */
  --gold-surface:#E6B354;   /* filled gold surfaces (buttons, labels) */
  --gold-hi:#F6CE7E;        /* surface hover */
  --gold-ink:#171104;
  --glow:rgba(230,179,84,.14);
  --ok:#57C979;
  --bg:var(--ink-1);
  --card:var(--ink-2);
  --alt:var(--ink-0);
  --shadow:0 24px 60px -24px rgba(0,0,0,.65);
  --badge-ring:0 0 0 1px var(--line-2),0 4px 14px rgba(0,0,0,.35);
  --seal-shadow:drop-shadow(0 26px 50px rgba(0,0,0,.45));
  --tag-shadow:0 14px 30px rgba(0,0,0,.25);
  --pv-shadow:0 30px 60px rgba(0,0,0,.4);
  --map-filter:grayscale(85%) invert(90%) hue-rotate(185deg) contrast(.92);
  --stroke:rgba(237,240,248,.5);
  --r:2px;
  --pad:clamp(1.25rem,4vw,4rem);
  --sec:clamp(5.5rem,10vw,9.5rem);
  --w:1360px;
  --ff-d:"Barlow Condensed",Impact,sans-serif;
  --ff-b:"Barlow",system-ui,sans-serif;
  --ff-m:"IBM Plex Mono",ui-monospace,monospace;
}
/* Light "duty paper" tokens — one block, applied two ways (keep in sync) */
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]){
    color-scheme:light;
    --ink-0:#E7E4DA;
    --ink-1:#F2F0E9;
    --ink-2:#FBFAF6;
    --ink-3:#ECE8DC;
    --paper:#0C1322;
    --muted:#525E78;
    --faint:#8591AB;
    --line:rgba(12,19,34,.14);
    --line-2:rgba(12,19,34,.26);
    --gold:#7E5E1D;           /* WCAG AA text gold on all light grounds */
    --gold-surface:#C79135;   /* approved light surface gold */
    --gold-hi:#B07C22;
    --gold-ink:#171104;
    --glow:rgba(199,145,53,.16);
    --shadow:0 24px 50px -28px rgba(12,19,34,.28);
    --badge-ring:0 0 0 1px rgba(12,19,34,.14),0 4px 12px rgba(12,19,34,.16);
    --seal-shadow:drop-shadow(0 22px 40px rgba(12,19,34,.22));
    --tag-shadow:0 12px 26px rgba(12,19,34,.12);
    --pv-shadow:0 26px 50px rgba(12,19,34,.18);
    --map-filter:grayscale(60%) contrast(1.05);
    --stroke:rgba(12,19,34,.35);
  }
}
:root[data-theme="light"]{
  color-scheme:light;
  --ink-0:#E7E4DA;
  --ink-1:#F2F0E9;
  --ink-2:#FBFAF6;
  --ink-3:#ECE8DC;
  --paper:#0C1322;
  --muted:#525E78;
  --faint:#8591AB;
  --line:rgba(12,19,34,.14);
  --line-2:rgba(12,19,34,.26);
  --gold:#7E5E1D;
  --gold-surface:#C79135;
  --gold-hi:#B07C22;
  --gold-ink:#171104;
  --glow:rgba(199,145,53,.16);
  --shadow:0 24px 50px -28px rgba(12,19,34,.28);
  --badge-ring:0 0 0 1px rgba(12,19,34,.14),0 4px 12px rgba(12,19,34,.16);
  --seal-shadow:drop-shadow(0 22px 40px rgba(12,19,34,.22));
  --tag-shadow:0 12px 26px rgba(12,19,34,.12);
  --pv-shadow:0 26px 50px rgba(12,19,34,.18);
  --map-filter:grayscale(60%) contrast(1.05);
  --stroke:rgba(12,19,34,.35);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
}
body{
  background:var(--bg);color:var(--paper);
  font:400 1.0625rem/1.65 var(--ff-b);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip;
}
/* film grain */
body::after{
  content:"";position:fixed;inset:-50%;z-index:9990;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 9s steps(6) infinite;
}
@keyframes grain{0%,100%{transform:translate(0,0)}20%{transform:translate(-6%,4%)}40%{transform:translate(4%,-7%)}60%{transform:translate(-3%,6%)}80%{transform:translate(6%,-3%)}}
::selection{background:var(--gold-surface);color:var(--gold-ink)}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}
.skip{position:fixed;left:12px;top:-60px;z-index:10000;background:var(--gold-surface);color:var(--gold-ink);padding:.6rem 1rem;font:600 .8rem/1 var(--ff-m);transition:top .2s}
.skip:focus{top:12px}
.wrap{max-width:var(--w);margin-inline:auto;padding-inline:var(--pad)}
.mono{font-family:var(--ff-m)}
section[id],div[id]{scroll-margin-top:96px}

/* ---------- type ---------- */
.d1,.d2,.d3{font-family:var(--ff-d);text-transform:uppercase;line-height:.9;letter-spacing:.005em;font-weight:700}
.d1{font-size:clamp(4.25rem,11.5vw,10.5rem)}
.d2{font-size:clamp(2.6rem,5.6vw,4.9rem)}
.d3{font-size:clamp(1.5rem,2.4vw,2rem);font-weight:600}
.kicker{display:inline-flex;align-items:center;gap:.6rem;font:500 .72rem/1 var(--ff-m);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.kicker i{font-style:normal;color:var(--muted);padding-right:.6rem;border-right:1px solid var(--line-2)}
.kicker::before{content:"";width:22px;height:1px;background:var(--gold)}
.lead{color:var(--muted);max-width:56ch;font-size:clamp(1.05rem,1.35vw,1.2rem)}
.gold{color:var(--gold)}

/* reticle cursor (fine pointers only; enabled via html.cur-on) */
#cur,#curd{position:fixed;left:0;top:0;z-index:2400;pointer-events:none;border-radius:50%;transform:translate(-50%,-50%);opacity:0}
html.cur-on #cur,html.cur-on #curd{opacity:1}
#cur{width:34px;height:34px;border:1px solid var(--gold);transition:width .28s,height .28s,background-color .28s,opacity .2s}
#cur::before,#cur::after{content:"";position:absolute;left:50%;top:50%;background:var(--gold);transform:translate(-50%,-50%)}
#cur::before{width:8px;height:1px}
#cur::after{width:1px;height:8px}
#cur.big{width:56px;height:56px;background:color-mix(in srgb,var(--gold) 12%,transparent)}
#curd{width:3px;height:3px;background:var(--gold)}
html.cur-on,html.cur-on a,html.cur-on button,html.cur-on summary,html.cur-on label{cursor:none}
html.cur-on input,html.cur-on textarea{cursor:text}
html.cur-on select{cursor:pointer}
@media(hover:none){#cur,#curd{display:none}}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.7rem;
  font:600 .78rem/1 var(--ff-m);letter-spacing:.14em;text-transform:uppercase;
  padding:1.05rem 1.5rem;border:1px solid var(--line-2);border-radius:var(--r);
  color:var(--paper);position:relative;overflow:hidden;transition:color .25s,border-color .25s,transform .25s;
  white-space:nowrap;
}
.btn .ar{transition:transform .25s}
.btn:hover .ar{transform:translate(3px,-3px)}
.btn::before{content:"";position:absolute;inset:0;background:var(--paper);transform:scaleY(0);transform-origin:bottom;transition:transform .3s cubic-bezier(.2,.7,.2,1);z-index:-1}
.btn:hover{color:var(--bg);border-color:var(--paper)}
.btn:hover::before{transform:scaleY(1)}
.btn.gld{background:var(--gold-surface);border-color:var(--gold-surface);color:var(--gold-ink)}
.btn.gld::before{background:var(--gold-hi)}
.btn.gld:hover{color:var(--gold-ink);border-color:var(--gold-hi)}
.btn.gst{border-color:transparent;padding-inline:.4rem;color:var(--muted)}
.btn.gst::before{display:none}
.btn.gst:hover{color:var(--gold)}

/* reticle corner ticks — .ct is absolutely positioned so it never
   participates in the host's flex/grid flow */
.corners{position:relative}
.corners>.ct{position:absolute;inset:0;pointer-events:none}
.corners::before,.corners::after,.corners>.ct::before,.corners>.ct::after{
  content:"";position:absolute;width:14px;height:14px;border-color:var(--gold);border-style:solid;opacity:.9;pointer-events:none}
.corners::before{top:-1px;left:-1px;border-width:1.5px 0 0 1.5px}
.corners::after{top:-1px;right:-1px;border-width:1.5px 1.5px 0 0}
.corners>.ct::before{bottom:-1px;left:-1px;border-width:0 0 1.5px 1.5px}
.corners>.ct::after{bottom:-1px;right:-1px;border-width:0 1.5px 1.5px 0}

/* ---------- topbar ---------- */
.topbar{border-bottom:1px solid var(--line);font:500 .68rem/1 var(--ff-m);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:38px}
.topbar a:hover{color:var(--gold)}
.tb-l,.tb-r{display:flex;align-items:center;gap:1.4rem}
.status{display:inline-flex;align-items:center;gap:.5rem;color:var(--paper)}
.status .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px rgba(87,201,121,.18);animation:pulse 2.2s infinite}
.status.closed .dot{background:#E06A5A;box-shadow:0 0 0 3px rgba(224,106,90,.16);animation:none}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}
@media(max-width:820px){.tb-l span.addr,.tb-r .hide-s{display:none}}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:900;border-bottom:1px solid transparent;transition:border-color .3s,background .3s;backdrop-filter:blur(0px)}
.hdr.scrolled{background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);border-color:var(--line)}
.hdr .wrap{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:76px}
.brand{display:flex;align-items:center;gap:.8rem}
.brand .brand-badge{width:40px;height:40px;flex:none;border-radius:50%;box-shadow:var(--badge-ring)}
.brand b{font:700 1.28rem/1 var(--ff-d);letter-spacing:.04em;text-transform:uppercase}
.brand small{display:block;font:500 .56rem/1.3 var(--ff-m);letter-spacing:.3em;color:var(--muted);margin-top:.28rem}
.nav{display:flex;gap:2rem;font:600 .74rem/1 var(--ff-m);letter-spacing:.14em;text-transform:uppercase}
.nav a{position:relative;padding:.4rem 0;color:var(--muted);transition:color .2s}
.nav a::after{content:"";position:absolute;left:0;bottom:0;height:1.5px;width:100%;background:var(--gold);transform:scaleX(0);transform-origin:right;transition:transform .3s}
.nav a:hover{color:var(--paper)}
.nav a:hover::after{transform:scaleX(1);transform-origin:left}
.nav a[aria-current="page"]{color:var(--paper)}
.nav a[aria-current="page"]::after{transform:scaleX(1)}
.hdr-r{display:flex;align-items:center;gap:.7rem}
.tgl{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line-2);border-radius:var(--r);color:var(--muted);transition:.25s}
.tgl:hover{color:var(--gold);border-color:var(--gold)}
.tgl svg{display:none;grid-area:1/1}
.tgl[data-mode="system"] .i-sys{display:block}
.tgl[data-mode="light"] .i-sun{display:block}
.tgl[data-mode="dark"] .i-moon{display:block}
.burger{display:none;width:42px;height:42px;border:1px solid var(--line-2);border-radius:var(--r);place-items:center;flex-direction:column;gap:5px}
.burger i{display:block;width:18px;height:1.5px;background:var(--paper);transition:.3s}
@media(max-width:1180px){.nav{display:none}.burger{display:grid}.hdr .btn.gld{display:none}}
body.nav-open .burger i:nth-child(1){transform:translateY(3.2px) rotate(45deg)}
body.nav-open .burger i:nth-child(2){transform:translateY(-3.2px) rotate(-45deg)}

/* mobile overlay */
.ovl{position:fixed;inset:0;z-index:880;background:var(--ink-0);display:flex;flex-direction:column;justify-content:center;padding:var(--pad);clip-path:inset(0 0 100% 0);transition:clip-path .55s cubic-bezier(.75,0,.2,1);visibility:hidden;overflow-y:auto}
body.nav-open .ovl{clip-path:inset(0 0 0% 0);visibility:visible}
body.nav-open{overflow:hidden}
.ovl a.big{font:700 clamp(2.2rem,9vw,4.2rem)/1.06 var(--ff-d);text-transform:uppercase;display:flex;align-items:baseline;gap:1rem;padding:.32rem 0;color:var(--paper)}
.ovl a.big em{font:500 .68rem/1 var(--ff-m);color:var(--gold);letter-spacing:.2em}
.ovl a.big:hover{color:var(--gold)}
.ovl .ovl-foot{margin-top:2.2rem;font:500 .72rem/1.9 var(--ff-m);letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
.ovl .ovl-foot a:hover{color:var(--gold)}

/* ---------- preloader (home only) ---------- */
.pre{position:fixed;inset:0;z-index:9999;background:var(--ink-0);display:grid;place-items:center}
.pre .pre-seal{position:relative;width:150px;height:150px;display:grid;place-items:center}
.pre svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transform:rotate(-90deg)}
.pre .pre-badge{width:112px;height:112px;border-radius:50%;filter:drop-shadow(0 10px 24px rgba(0,0,0,.5))}
.pre .st{fill:none;stroke:var(--gold);stroke-width:2.4}
.pre .pct{position:absolute;bottom:9vh;left:50%;transform:translateX(-50%);font:600 .74rem/1 var(--ff-m);letter-spacing:.3em;color:var(--muted)}
html.loaded .pre{display:none}

/* ---------- hero (home) ---------- */
.hero{position:relative;overflow:clip;border-bottom:1px solid var(--line)}
.hero .wrap{display:grid;grid-template-columns:1.15fr .85fr;gap:3rem;align-items:center;padding-top:clamp(3.5rem,7vw,6.5rem);padding-bottom:clamp(3rem,6vw,5rem);min-height:min(86vh,900px)}
.hero-topo{position:absolute;inset:0;pointer-events:none;opacity:.5}
.hero-topo path{fill:none;stroke:var(--line);stroke-width:1}
.hero-glow{position:absolute;right:-10%;top:-20%;width:60vw;height:60vw;max-width:900px;max-height:900px;background:radial-gradient(circle,var(--glow),transparent 62%);pointer-events:none}
.h-kick{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;align-items:center;font:500 .72rem/1 var(--ff-m);letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin-bottom:2rem}
.h-kick .live{color:var(--gold)}
.h-kick .sep{width:5px;height:5px;background:var(--gold);border-radius:50%}
.hero h1{margin:0 0 1.6rem}
.hero h1 .ln{display:block;overflow:hidden}
.hero h1 .ln>span{display:block;will-change:transform}
.hero h1 .dotg{color:var(--gold)}
.hero .lead{margin-bottom:2.2rem}
.h-cta{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center}
.h-meta{display:flex;flex-wrap:wrap;gap:1.6rem;margin-top:2.6rem;font:500 .66rem/1 var(--ff-m);letter-spacing:.18em;color:var(--muted);text-transform:uppercase}
.h-meta span{display:inline-flex;gap:.55rem;align-items:center}
.h-meta span::before{content:"";width:6px;height:6px;background:var(--gold);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}
/* badge seal */
.badge-wrap{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:380px}
.seal{width:min(400px,72vw);aspect-ratio:1/1;position:relative;z-index:2;display:grid;place-items:center}
.seal-core{position:relative;width:82%;height:82%;border-radius:50%;overflow:hidden;filter:var(--seal-shadow);transform:translateZ(0)}
.seal-img{display:block;width:100%;height:100%}
.seal-core::after{content:"";position:absolute;top:-25%;left:0;width:46%;height:150%;background:linear-gradient(105deg,transparent 0%,rgba(255,255,255,.04) 32%,rgba(255,255,255,.34) 50%,rgba(255,255,255,.04) 68%,transparent 100%);transform:skewX(-16deg) translateX(-160%);animation:glint 9s ease-in-out infinite;mix-blend-mode:screen;pointer-events:none}
@keyframes glint{0%{transform:skewX(-16deg) translateX(-160%)}9%{transform:skewX(-16deg) translateX(430%)}100%{transform:skewX(-16deg) translateX(430%)}}
.seal .orbit{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.seal .circ{fill:none;stroke:var(--line-2);stroke-width:1.4}
.seal .bz{stroke:var(--line-2);stroke-width:1.2}
.seal .bz.c{stroke:var(--gold);stroke-width:1.6}
.seal .axis{position:absolute;background:var(--line-2);opacity:.6;pointer-events:none}
.seal .ax-h{left:-16%;right:-16%;top:50%;height:1px;transform-origin:left center}
.seal .ax-v{top:-12%;bottom:-12%;left:50%;width:1px;transform-origin:center top}
.seal-tag{margin-top:1.5rem;position:relative;display:flex;flex-direction:column;gap:.3rem;padding:.75rem 1rem .75rem 1.15rem;background:var(--ink-2);border:1px solid var(--line-2);transform:rotate(-1.2deg);font:500 .58rem/1.5 var(--ff-m);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);box-shadow:var(--tag-shadow)}
.seal-tag b{color:var(--paper);font-weight:600}
.seal-tag::before{content:"";position:absolute;left:-6px;top:50%;width:9px;height:9px;border:1.5px solid var(--gold);border-radius:50%;transform:translateY(-50%);background:var(--bg)}
.badge-tick{position:absolute;inset:6%;border:1px dashed var(--line);border-radius:50%;opacity:.7}
@media(max-width:980px){
  .hero .wrap{grid-template-columns:1fr;min-height:0}
  .badge-wrap{order:-1;min-height:0;margin-bottom:.5rem}
  .seal{width:min(250px,60vw)}
}

/* ticker */
.tick{border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;background:color-mix(in srgb,var(--ink-0) 55%,transparent)}
.tick .track{display:flex;width:max-content;animation:mq 30s linear infinite}
.tick ul{display:flex;list-style:none;padding:.9rem 0}
.tick li{display:flex;align-items:center;gap:1.4rem;padding-inline:1.4rem;font:600 .72rem/1 var(--ff-m);letter-spacing:.24em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.tick li::after{content:"";width:9px;height:9px;background:var(--gold);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
@keyframes mq{to{transform:translateX(-50%)}}
.tick:hover .track{animation-play-state:paused}

/* ---------- generic section ---------- */
.sec{padding-block:var(--sec);position:relative}
.sec--tight{padding-block:clamp(3.5rem,6vw,6rem)}
.sec-hd{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:clamp(2.5rem,5vw,4rem)}
.sec-hd .lead{margin-top:1.1rem}
.sec-id{font:500 .72rem/1 var(--ff-m);letter-spacing:.2em;color:var(--muted);white-space:nowrap}
.sec-id b{color:var(--gold);font-weight:600}
@media(max-width:760px){.sec-hd{flex-direction:column;align-items:flex-start}}
.alt{background:var(--alt)}

/* ---------- page hero (interior pages) ---------- */
.page-hero{position:relative;overflow:clip;border-bottom:1px solid var(--line);padding:clamp(3rem,6vw,5.5rem) 0 clamp(2.6rem,5vw,4rem)}
.page-hero h1{font-family:var(--ff-d);text-transform:uppercase;line-height:.92;font-weight:700;font-size:clamp(3rem,8vw,6.5rem);margin:1.1rem 0 1.3rem;max-width:14ch}
.page-hero .lead{max-width:62ch}
.crumbs{display:flex;align-items:center;gap:.6rem;font:500 .68rem/1 var(--ff-m);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.crumbs a:hover{color:var(--gold)}
.crumbs .sep{color:var(--faint)}
.crumbs .cur{color:var(--gold)}

/* ---------- ways (3 panels) ---------- */
.ways{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.way{background:var(--bg);padding:clamp(1.8rem,3vw,2.8rem);display:flex;flex-direction:column;gap:1.4rem;min-height:420px;position:relative;transition:background .3s}
.way:hover{background:var(--card)}
.way .tag{display:flex;justify-content:space-between;font:500 .66rem/1 var(--ff-m);letter-spacing:.2em;color:var(--muted);text-transform:uppercase}
.way .tag i{color:var(--gold);font-style:normal}
.way svg.bp{width:100%;height:120px;color:var(--gold);opacity:.9}
.way svg.bp *{vector-effect:non-scaling-stroke}
.way h3{font:600 1.9rem/1 var(--ff-d);text-transform:uppercase;letter-spacing:.02em}
.way p{color:var(--muted);font-size:.98rem;flex:1}
.way .go{display:inline-flex;gap:.6rem;align-items:center;font:600 .74rem/1 var(--ff-m);letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.way .go .ar{transition:transform .25s}
.way:hover .go .ar{transform:translate(4px,-4px)}
.way::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .35s}
.way:hover::after{transform:scaleX(1)}
.way ul{list-style:none;display:grid;gap:.55rem;font-size:.95rem;color:var(--muted)}
.way ul li{display:flex;gap:.7rem;align-items:baseline}
.way ul li::before{content:"";width:8px;height:1.5px;background:var(--gold);flex:none;transform:translateY(-4px)}
@media(max-width:980px){.ways{grid-template-columns:1fr}.way{min-height:0}}

/* ---------- why ledger ---------- */
.ledger{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.cell{background:var(--bg);padding:2rem 1.8rem;display:flex;flex-direction:column;gap:.9rem}
.cell .n{font:600 .7rem/1 var(--ff-m);color:var(--gold);letter-spacing:.2em}
.cell h4{font:600 1.32rem/1.05 var(--ff-d);text-transform:uppercase}
.cell p{color:var(--muted);font-size:.94rem}
@media(max-width:980px){.ledger{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.ledger{grid-template-columns:1fr}}

/* ---------- armory index (signature) ---------- */
.armory{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(2rem,5vw,5rem)}
@media(max-width:900px){.armory{grid-template-columns:1fr}}
.cat{display:flex;align-items:center;gap:1.2rem;padding:1.15rem .35rem;border-bottom:1px solid var(--line);color:var(--paper);position:relative;transition:padding .25s}
.cat:hover{padding-left:.9rem}
.cat .idx{font:500 .7rem/1 var(--ff-m);color:var(--muted);letter-spacing:.12em;width:52px;flex:none;transition:color .25s}
.cat .nm{font:600 clamp(1.35rem,2vw,1.8rem)/1 var(--ff-d);text-transform:uppercase;letter-spacing:.02em;flex:1;position:relative;overflow:hidden}
.cat .nm .a,.cat .nm .b{display:block;transition:transform .38s cubic-bezier(.2,.8,.2,1)}
.cat .nm .b{position:absolute;left:0;top:100%;color:var(--gold)}
.cat:hover .nm .a,.cat:hover .nm .b{transform:translateY(-100%)}
.cat .mt{font:500 .64rem/1 var(--ff-m);color:var(--muted);letter-spacing:.18em;text-transform:uppercase;flex:none;transition:color .25s}
.cat:hover .mt{color:var(--gold)}
@media(max-width:640px){.cat .mt{display:none}}
.cat .ar{color:var(--muted);transition:transform .25s,color .25s;flex:none}
.cat::before{content:"";position:absolute;left:0;top:20%;bottom:20%;width:2px;background:var(--gold);transform:scaleY(0);transition:transform .25s}
.cat:hover::before{transform:scaleY(1)}
.cat:hover .idx{color:var(--gold)}
.cat:hover .ar{transform:translate(4px,-4px);color:var(--gold)}
/* floating preview — armory spec card */
#preview{position:fixed;left:0;top:0;z-index:800;width:288px;height:356px;pointer-events:none;opacity:0;transition:opacity .25s;will-change:transform}
#preview.on{opacity:1}
#preview .pv-in{position:absolute;inset:0;display:flex;flex-direction:column;padding:1.25rem 1.35rem 1.1rem;background:var(--ink-2);border:1px solid var(--line-2);box-shadow:var(--pv-shadow);transform:scale(.94);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
#preview.on .pv-in{transform:scale(1)}
#preview .pv-badge{position:absolute;top:1rem;right:1rem;width:82px;height:82px;border-radius:50%;opacity:.16;filter:saturate(.4)}
#preview .pv-idx{font:600 .66rem/1 var(--ff-m);letter-spacing:.26em;color:var(--gold);margin-bottom:.9rem}
#preview .pv-nm{font:700 clamp(1.9rem,2vw,2.15rem)/0.98 var(--ff-d);text-transform:uppercase;letter-spacing:.015em;max-width:82%;margin-bottom:1rem}
#preview .pv-ls{flex:1;font:500 .67rem/2.05 var(--ff-m);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
#preview .pv-ft{display:flex;justify-content:space-between;align-items:center;gap:1rem;border-top:1px solid var(--line);padding-top:.85rem;font:600 .58rem/1 var(--ff-m);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
#preview .pv-go{color:var(--gold)}
@media(hover:none),(max-width:960px){#preview{display:none}}
/* compliance + cta bar */
.arm-foot{margin-top:2.6rem;display:flex;flex-wrap:wrap;gap:1.2rem;align-items:center;justify-content:space-between;border:1px solid var(--line);padding:1.4rem 1.6rem;background:var(--card)}
.arm-foot p{font-size:.95rem;color:var(--muted)}
.arm-foot p b{color:var(--paper)}
.arm-cta{display:flex;gap:.8rem;flex-wrap:wrap}
.legal{margin-top:1.4rem;padding-left:1.1rem;border-left:2px solid var(--gold);font:500 .72rem/1.8 var(--ff-m);letter-spacing:.04em;color:var(--muted);max-width:70ch}

/* ---------- divider ---------- */
.divider{position:relative;height:clamp(220px,24vw,300px);overflow:clip;border-block:1px solid var(--line)}
.divider img{position:absolute;top:0;left:-6%;width:112%;height:100%;object-fit:cover;filter:grayscale(20%) contrast(1.06) brightness(.8);will-change:transform}
.divider::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,var(--bg) 0%,transparent 24%,transparent 74%,var(--bg) 100%);opacity:.85}
.divider .dv-txt{position:absolute;inset:auto 0 8%;z-index:3;overflow:hidden;pointer-events:none}
.divider .dv-txt .track{display:flex;width:max-content;animation:mq 24s linear infinite}
.divider .dv-txt span{font:700 clamp(4rem,12vw,9rem)/1 var(--ff-d);text-transform:uppercase;white-space:nowrap;color:transparent;-webkit-text-stroke:1.5px var(--stroke);padding-inline:2rem}
.divider.noimg img{display:none}
.divider.noimg{background:repeating-linear-gradient(-45deg,transparent 0 22px,var(--line) 22px 23px),var(--ink-0)}

/* ---------- split / agency ---------- */
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2.5rem,5vw,5rem);align-items:center}
@media(max-width:980px){.split{grid-template-columns:1fr}}
.pill{display:inline-flex;align-items:center;gap:.6rem;border:1px solid var(--line-2);padding:.55rem .9rem;font:600 .64rem/1 var(--ff-m);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);border-radius:var(--r)}
.pill i{width:7px;height:7px;background:var(--gold);border-radius:50%;font-style:normal}
.check-card{background:var(--card);border:1px solid var(--line);padding:clamp(1.8rem,3vw,2.6rem);position:relative;overflow:hidden;box-shadow:var(--shadow)}
.check-card h4{font:600 1.5rem/1 var(--ff-d);text-transform:uppercase;margin-bottom:1.4rem}
.check-card ul{list-style:none;display:grid;gap:1rem}
.check-card li{display:flex;gap:.9rem;align-items:flex-start;color:var(--muted);font-size:.98rem}
.check-card li svg{flex:none;width:18px;height:18px;color:var(--gold);margin-top:.2rem}
.check-card .wm{position:absolute;right:-40px;bottom:-60px;width:240px;height:240px;color:var(--paper);opacity:.05;pointer-events:none}

/* ---------- training / cta band ---------- */
.train{background:var(--card);border:1px solid var(--line);padding:clamp(2rem,4vw,3.4rem);display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:center;position:relative;overflow:hidden}
.train .tg{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.4rem}
.train svg.tgt{position:absolute;right:6%;top:50%;transform:translateY(-50%);width:230px;height:230px;color:var(--gold);opacity:.12;pointer-events:none}
@media(max-width:860px){.train{grid-template-columns:1fr}.train svg.tgt{width:160px;right:-30px}}

/* ---------- about ---------- */
.about-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2.5rem,5vw,5rem);align-items:center}
@media(max-width:980px){.about-grid{grid-template-columns:1fr}}
.about-img{position:relative;aspect-ratio:4/5;max-width:460px;background:var(--ink-2);border:1px solid var(--line)}
.about-img img{width:100%;height:100%;object-fit:cover;filter:grayscale(28%) contrast(1.05)}
.about-img .cap{position:absolute;left:-1px;bottom:-1px;background:var(--gold-surface);color:var(--gold-ink);font:600 .64rem/1 var(--ff-m);letter-spacing:.18em;text-transform:uppercase;padding:.6rem .8rem;z-index:2}
.about-img.noimg img{display:none}
.about-img.noimg{display:grid;place-items:center;background:repeating-linear-gradient(45deg,transparent 0 18px,var(--line) 18px 19px),var(--ink-2)}
.about-img.noimg::before{content:"EST. 2009";font:700 2rem var(--ff-d);color:var(--gold);letter-spacing:.1em}
.chips{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.8rem}
.stats{display:grid;grid-template-columns:repeat(3,auto);gap:2.5rem;margin-top:2.4rem}
.stats div b{display:block;font:700 clamp(2rem,3.4vw,3rem)/1 var(--ff-d);color:var(--gold)}
.stats div span{font:500 .66rem/1.5 var(--ff-m);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
@media(max-width:560px){.stats{grid-template-columns:1fr 1fr;gap:1.6rem}}
.prose p{color:var(--muted);margin-bottom:1.1rem;max-width:62ch}
.prose p b,.prose p strong{color:var(--paper)}

/* ---------- reviews ---------- */
.revs{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
@media(max-width:900px){.revs{grid-template-columns:1fr}}
.rev{background:var(--bg);padding:2.2rem 2rem;display:flex;flex-direction:column;gap:1.3rem}
.rev .stars{color:var(--gold);letter-spacing:.22em;font-size:.85rem}
.rev blockquote{font:500 1.35rem/1.35 var(--ff-d);text-transform:uppercase;letter-spacing:.015em}
.rev figcaption{margin-top:auto;font:600 .68rem/1.6 var(--ff-m);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.rev figcaption b{color:var(--paper);display:block}

/* ---------- faq ---------- */
.faq{max-width:860px}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1.5rem;padding:1.5rem .2rem;font:600 1.35rem/1.15 var(--ff-d);text-transform:uppercase;transition:color .2s}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--gold)}
.faq summary .pm{flex:none;width:30px;height:30px;border:1px solid var(--line-2);display:grid;place-items:center;color:var(--gold);font:500 1rem/1 var(--ff-m);transition:transform .3s,background .3s,color .3s}
.faq details[open] summary .pm{background:var(--gold-surface);color:var(--gold-ink);transform:rotate(45deg)}
.faq details p{padding:0 .2rem 1.6rem;color:var(--muted);max-width:64ch}
.faq details p a{color:var(--gold);border-bottom:1px solid currentColor}
.faq-cat{display:flex;align-items:baseline;gap:1rem;margin:3rem 0 .4rem;padding-bottom:.7rem;border-bottom:1px solid var(--line-2)}
.faq-cat:first-child{margin-top:0}
.faq-cat .idx{font:700 1.6rem/1 var(--ff-d);color:var(--gold)}
.faq-cat .lbl{font:600 .7rem/1 var(--ff-m);letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}

/* ---------- visit / contact ---------- */
.visit{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,5vw,4.5rem)}
@media(max-width:980px){.visit{grid-template-columns:1fr}}
.nap{display:grid;gap:1.5rem;margin-top:2.2rem}
.nap .row{display:grid;grid-template-columns:110px 1fr;gap:1.2rem;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:1.4rem}
.nap .lbl{font:600 .64rem/1.6 var(--ff-m);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.nap .val{font-size:1.05rem}
.nap .val a:hover{color:var(--gold)}
.nap .val small{display:block;color:var(--muted);font-size:.86rem;margin-top:.2rem}
.map{position:relative;min-height:420px;border:1px solid var(--line);background:var(--ink-2)}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:var(--map-filter)}
.map .map-tag{position:absolute;z-index:2;left:-1px;top:-1px;background:var(--gold-surface);color:var(--gold-ink);font:600 .64rem/1 var(--ff-m);letter-spacing:.18em;text-transform:uppercase;padding:.6rem .8rem}
.areas{margin-top:2.2rem}
.areas h5{font:600 .66rem/1 var(--ff-m);letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:.9rem}

/* ---------- contact form ---------- */
.fcard{background:var(--card);border:1px solid var(--line);padding:clamp(1.8rem,3vw,2.6rem);position:relative;box-shadow:var(--shadow)}
.fcard h3{font:600 1.7rem/1 var(--ff-d);text-transform:uppercase}
.fcard .fsub{color:var(--muted);font-size:.95rem;margin-top:.6rem}
.form{display:grid;gap:1.15rem;margin-top:1.6rem}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:1.15rem}
@media(max-width:640px){.fr{grid-template-columns:1fr}}
.field label{display:block;font:600 .64rem/1 var(--ff-m);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:.5rem}
.field input,.field select,.field textarea{width:100%;background:var(--bg);border:1px solid var(--line-2);color:var(--paper);padding:.85rem .9rem;font:400 1rem/1.4 var(--ff-b);border-radius:var(--r);transition:border-color .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--gold)}
.field textarea{min-height:140px;resize:vertical}
.formnote{font-size:.86rem;color:var(--muted)}
.formnote a{color:var(--gold)}

/* ---------- team vcards ---------- */
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
/* 2-up: last card spans the row so no empty cell shows the divider colour */
@media(max-width:1080px){.team{grid-template-columns:1fr 1fr}.team .tmcard:last-child{grid-column:1/-1}}
@media(max-width:820px){.team{grid-template-columns:1fr}.team .tmcard:last-child{grid-column:auto}}
.tmcard{background:var(--bg);padding:clamp(1.8rem,3vw,2.6rem);display:flex;flex-direction:column;gap:1.1rem;transition:background .3s}
.tmcard:hover{background:var(--card)}
.tmcard .role{font:600 .66rem/1 var(--ff-m);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.tmcard h3{font:700 2.1rem/1 var(--ff-d);text-transform:uppercase}
.tmrows{display:grid;gap:.7rem;margin-bottom:.5rem}
.tmrows a{display:flex;gap:.75rem;align-items:center;color:var(--muted);font-size:.97rem;transition:color .2s}
.tmrows a:hover{color:var(--paper)}
.tmrows svg{flex:none;width:17px;height:17px;color:var(--gold)}
.tmcard .btn{align-self:flex-start}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);background:var(--alt)}
.f-giant{overflow:hidden;padding-top:clamp(2.5rem,5vw,4rem)}
.f-giant b{display:block;font:700 clamp(4.5rem,14.5vw,13.5rem)/0.86 var(--ff-d);text-transform:uppercase;text-align:center;color:transparent;-webkit-text-stroke:1.5px var(--line-2);letter-spacing:.02em;transform:translateY(12%)}
.f-grid{display:grid;grid-template-columns:1.3fr repeat(3,.9fr);gap:2.5rem;padding-block:3.5rem;border-top:1px solid var(--line)}
@media(max-width:900px){.f-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.f-grid{grid-template-columns:1fr}}
.f-grid h6{font:600 .66rem/1 var(--ff-m);letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin-bottom:1.2rem}
.f-grid ul{list-style:none;display:grid;gap:.7rem;font-size:.96rem;color:var(--muted)}
.f-grid ul a:hover{color:var(--gold)}
.f-brand p{color:var(--muted);font-size:.95rem;max-width:34ch;margin-top:1rem}
.f-legal{border-top:1px solid var(--line);padding-block:1.6rem;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;font:500 .68rem/1.7 var(--ff-m);letter-spacing:.06em;color:var(--muted)}
.f-legal a{border-bottom:1px solid var(--line-2)}
.f-legal a:hover{color:var(--gold)}
/* staff entry to the Gearfire store admin — low-key, but findable at the footer end */
.f-legal-end{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.7rem}
.f-legal-end .f-dot{opacity:.45}
.f-legal a.f-admin{display:inline-flex;align-items:center;gap:.45em;border:1px solid var(--line);border-radius:999px;padding:.3rem .65rem;color:var(--muted);opacity:.7;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;transition:opacity .18s ease,color .18s ease,border-color .18s ease}
.f-legal a.f-admin:hover,.f-legal a.f-admin:focus-visible{opacity:1;color:var(--gold);border-color:var(--gold)}
.f-admin svg{width:.95em;height:.95em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* reveal defaults (GSAP drives; keep visible w/o JS) */
[data-rev]{opacity:1}
