
:root{
  --paper:#FFFFFF; --ground:#F4F7FA; --sunk:#EBF0F6;
  --ink:#0E1A28; --ink-soft:#4C5F71; --ink-faint:#7C8C9D;
  --line:#DCE4EC; --line-soft:#EBEFF4;
  --navy:#0B1B2E; --navy-2:#122B47; --navy-ink:#EAF1F8;
  --brand:#1B6CB8; --brand-deep:#145694; --logo-grey:#58585B; --brand-soft:#E8F1FD; --on-brand:#FFFFFF; --link:#145694;
  --amber:#D9761A;
  --open:#16A34A; --occ:#D9422B; --ada:#2563EB;
  --shadow:0 1px 2px rgba(14,26,40,.04),0 10px 28px rgba(14,26,40,.07);
  --hd:"Archivo","Helvetica Neue",Arial,sans-serif;
  --bd:"IBM Plex Sans","Helvetica Neue",Arial,sans-serif;
  --mo:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#111C27; --ground:#0A121A; --sunk:#16222E;
  --ink:#E6EDF4; --ink-soft:#9FB0C1; --ink-faint:#74869A;
  --line:#243440; --line-soft:#1A2733;
  --navy:#060F19; --navy-2:#0E2035; --navy-ink:#E3EDF6;
  --brand:#4E9BE0; --brand-deep:#3E86C6; --logo-grey:#A9AEB3; --brand-soft:#0F2337; --on-brand:#04121F; --link:#68ABEC;
  --amber:#E8934A;
  --open:#22B26A; --occ:#E2604A; --ada:#4D8FEA;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 10px 28px rgba(0,0,0,.3);
}}
:root[data-theme="dark"]{
  --paper:#111C27; --ground:#0A121A; --sunk:#16222E;
  --ink:#E6EDF4; --ink-soft:#9FB0C1; --ink-faint:#74869A;
  --line:#243440; --line-soft:#1A2733;
  --navy:#060F19; --navy-2:#0E2035; --navy-ink:#E3EDF6;
  --brand:#4E9BE0; --brand-deep:#3E86C6; --logo-grey:#A9AEB3; --brand-soft:#0F2337; --on-brand:#04121F; --link:#68ABEC;
  --amber:#E8934A;
  --open:#22B26A; --occ:#E2604A; --ada:#4D8FEA;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 10px 28px rgba(0,0,0,.3);
}

*,*::before,*::after{box-sizing:border-box;}
body{background:var(--ground);color:var(--ink);font-family:var(--bd);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;}
.shell{max-width:1180px;margin:0 auto;padding:0 26px;}
.narrow{max-width:800px;}

h1,h2,h3,h4,h5{font-family:var(--hd);margin:0;text-wrap:balance;letter-spacing:-.015em;}
h1{font-weight:800;font-size:clamp(33px,4.6vw,52px);line-height:1.06;}
h2{font-weight:800;font-size:clamp(24px,3vw,34px);line-height:1.14;}
h3{font-weight:700;font-size:19px;line-height:1.3;letter-spacing:-.01em;}
h4{font-weight:700;font-size:15px;letter-spacing:0;}
p{margin:0 0 1em;}
.lede{font-size:clamp(17px,1.7vw,19px);line-height:1.6;color:var(--ink-soft);}
.eyebrow{font-family:var(--hd);font-weight:700;font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--brand);margin:0 0 12px;}
a{color:var(--link);}

/* ---------- header ---------- */
.util{background:var(--navy);color:rgba(234,241,248,.62);font-size:12.5px;}
.util .shell{display:flex;justify-content:flex-end;gap:22px;padding-top:7px;padding-bottom:7px;flex-wrap:wrap;}
.util b{color:var(--navy-ink);font-weight:600;}
.util a{color:inherit;text-decoration:none;}
.util a:hover{color:var(--brand);}

.topbar{background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:60;}
.topbar .shell{display:flex;align-items:center;gap:18px;min-height:92px;}
.brand{display:flex;align-items:center;text-decoration:none;flex:none;}
.brand .logo{height:60px;width:auto;display:block;}
.brand .logo-dark{display:none;}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .brand .logo-light{display:none;}
  :root:not([data-theme="light"]) .brand .logo-dark{display:block;}
}
:root[data-theme="dark"] .brand .logo-light{display:none;}
:root[data-theme="dark"] .brand .logo-dark{display:block;}
footer.site .brand{margin-bottom:20px;background:#fff;padding:13px 17px;border-radius:5px;display:inline-flex;align-self:flex-start;}
footer.site .brand .logo{height:52px;display:block;}

.burger{display:none;margin-left:auto;background:none;border:1px solid var(--line);padding:9px 12px;color:var(--ink);font-family:var(--hd);font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;}

nav.main{margin-left:auto;display:flex;align-items:center;gap:2px;}
.navitem{position:relative;}
.navitem>a,.navitem>button{font-family:var(--hd);font-weight:700;font-size:13.5px;letter-spacing:.01em;color:var(--ink);text-decoration:none;padding:35px 13px;display:inline-flex;align-items:center;gap:5px;background:none;border:none;cursor:pointer;font-family:var(--hd);border-bottom:3px solid transparent;}
.navitem>a:hover,.navitem>button:hover{color:var(--brand);}
.navitem>a.on,.navitem.on>button{color:var(--brand);border-bottom-color:var(--brand);}
.navitem>button::after{content:"";width:5px;height:5px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg) translateY(-2px);}
.menu{position:absolute;top:100%;left:0;min-width:290px;background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);padding:8px;display:none;z-index:70;}
.navitem:hover .menu,.navitem:focus-within .menu{display:block;}
.menu a{display:block;padding:9px 12px;text-decoration:none;color:var(--ink);font-size:14.5px;font-weight:500;line-height:1.35;}
.menu a small{display:block;font-size:12px;color:var(--ink-faint);margin-top:2px;font-weight:400;}
.menu a:hover{background:var(--brand-soft);color:var(--brand-deep);}
.menu .sep{height:1px;background:var(--line-soft);margin:6px 4px;}
.menu .grouphead{font-family:var(--hd);font-weight:700;font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-faint);padding:8px 12px 4px;}
.navcta{margin-left:10px;flex:none;}

/* ---------- buttons ---------- */
.btn{font-family:var(--hd);font-weight:700;font-size:13.5px;letter-spacing:.01em;padding:12px 22px;text-decoration:none;display:inline-block;border:2px solid transparent;cursor:pointer;line-height:1.25;}
a.btn,button.btn{color:inherit;}
.btn.primary,a.btn.primary{background:var(--brand);color:var(--on-brand);}
.btn.primary:hover{background:var(--brand-deep);}
.btn.amber,a.btn.amber{background:var(--amber);color:#fff;}
.btn.line,a.btn.line{border-color:var(--line);color:var(--ink);background:var(--paper);}
.btn.line:hover{border-color:var(--brand);color:var(--brand);}
.btn.onnavy,a.btn.onnavy{border-color:rgba(255,255,255,.3);color:var(--navy-ink);}
.btn.onnavy:hover{border-color:var(--brand);color:var(--brand);}
.ctas{display:flex;gap:11px;flex-wrap:wrap;margin-top:24px;}

/* ---------- bands ---------- */
.page[hidden]{display:none!important;}
.band{padding:66px 0;}
.band.tight{padding:40px 0;}
.band.paper{background:var(--paper);}
.band.navy{background:var(--navy);color:var(--navy-ink);}
.band.navy h1,.band.navy h2,.band.navy h3{color:#fff;}
.band.navy .lede{color:rgba(234,241,248,.72);}
.band.navy .eyebrow{color:var(--brand);}
.hero{background:var(--navy);color:var(--navy-ink);padding:86px 0 78px;}
.hero h1{font-size:clamp(40px,5.6vw,66px);line-height:1.05;letter-spacing:-.025em;margin-bottom:26px;}
.hero .chip{margin-bottom:26px;}
.hero .lede{font-size:clamp(17px,1.75vw,19.5px);line-height:1.68;max-width:52ch;}
.hero .ctas{margin-top:34px;}
.hero .trustline{margin-top:40px;padding-top:26px;}
.btn.big{font-size:15px;padding:16px 30px;}
.hero h1{color:#fff;}
.hero h1 em{font-style:normal;color:var(--brand);}
.hero .lede{color:rgba(234,241,248,.74);max-width:47ch;}
.hero-grid{display:grid;grid-template-columns:1.06fr .94fr;gap:56px;align-items:center;}
.chip{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:500;color:rgba(234,241,248,.8);border:1px solid rgba(255,255,255,.18);padding:6px 13px;border-radius:100px;margin-bottom:20px;}
.chip i{width:7px;height:7px;border-radius:50%;background:var(--open);}
.trustline{display:flex;gap:26px;flex-wrap:wrap;margin-top:30px;padding-top:22px;border-top:1px solid rgba(255,255,255,.14);font-size:13px;color:rgba(234,241,248,.62);}
.trustline b{display:block;font-family:var(--hd);font-weight:800;font-size:20px;color:#fff;line-height:1.2;}

/* ---------- bay board ---------- */
.board{background:#16334F;border:1px solid rgba(255,255,255,.16);padding:20px;}
.board-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:15px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.12);}
.board-head .lvl{font-family:var(--hd);font-weight:700;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(234,241,248,.58);}
.board-head .cnt{text-align:right;}
.board-head .cnt b{font-family:var(--mo);font-weight:600;font-size:30px;color:#4ADE80;font-variant-numeric:tabular-nums;line-height:1;display:block;}
.board-head .cnt small{font-family:var(--hd);font-weight:700;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(234,241,248,.45);display:block;margin-top:5px;}
.board .deck{min-width:0;background:transparent;border:none;padding:0;gap:6px;}
.board .core{width:44px;background:rgba(255,255,255,.07);color:rgba(234,241,248,.6);font-size:8.5px;letter-spacing:.11em;}
.board .plan{gap:4px;}
.board .edge{background:transparent;border:1px dashed rgba(255,255,255,.16);color:rgba(234,241,248,.42);font-size:8.5px;padding:3px 7px;}
.board .bayrow{gap:2px;}
.board .bay{background:rgba(255,255,255,.07);border-left-color:rgba(255,255,255,.14);border-right-color:rgba(255,255,255,.14);color:transparent;cursor:default;}
.board .row-down .bay{border-top-color:rgba(255,255,255,.16);}
.board .row-up .bay{border-bottom-color:rgba(255,255,255,.16);}
.board .bay.free{background:rgba(52,211,153,.26);}
.board .bay.taken{background:rgba(255,255,255,.10);}
.board .bay.ada{background:rgba(96,165,250,.32);}
.board .bay.ev{background:rgba(251,191,36,.30);}
.board .bay,.board .bay.taken,.board .bay.free,.board .bay.ada,.board .bay.ev{color:transparent;}
.board .bay .lamp{background:#34D399;}
.board .bay.ada .lamp{background:#60A5FA;}
.board .bay.ev .lamp{background:#FBBF24;}
.board .bay.taken .lamp{background:#F2705A;}
.board .bay:hover{outline:none;}
.board .bay .lamp{transition:background .45s ease;}
@media (prefers-reduced-motion:reduce){.board .bay .lamp{transition:none;}}
.board .aisle{height:26px;background:rgba(255,255,255,.05);}
.board .aisle::before{border-top-color:rgba(255,255,255,.42);}
.board .aisle span{font-size:8px;letter-spacing:.13em;color:rgba(234,241,248,.62);background:#16334F;padding:1px 7px;}
.board .spine{height:6px;background:repeating-linear-gradient(45deg,rgba(255,255,255,.14) 0 4px,transparent 4px 8px);}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:15px;font-family:var(--hd);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:rgba(234,241,248,.6);}
.legend i{width:15px;height:5px;border-radius:3px;display:inline-block;margin-right:6px;vertical-align:middle;}

/* ---------- cards ---------- */
.cols{display:grid;gap:20px;}
.c2{grid-template-columns:repeat(2,1fr);}
.c3{grid-template-columns:repeat(3,1fr);}
.c4{grid-template-columns:repeat(4,1fr);}
.c5{grid-template-columns:repeat(5,1fr);}
.card{background:var(--paper);border:1px solid var(--line);padding:26px;display:flex;flex-direction:column;gap:9px;text-decoration:none;color:inherit;}
a.card:hover{border-color:var(--brand);box-shadow:var(--shadow);}
.card p{margin:0;font-size:15px;color:var(--ink-soft);line-height:1.55;}
.card .tag{font-family:var(--mo);font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--brand);}
.card .more{font-family:var(--hd);font-weight:700;font-size:13px;color:var(--brand);margin-top:auto;padding-top:10px;}

/* ---------- stat tiles ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(186px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);}
.stat{background:var(--paper);padding:24px 22px;}
.stat b{display:block;font-family:var(--hd);font-weight:800;font-size:34px;line-height:1;color:var(--brand);font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
.stat h4{margin:11px 0 4px;}
.stat p{margin:0;font-size:13.5px;color:var(--ink-soft);line-height:1.45;}
.stat cite{display:block;font-style:normal;font-size:11px;color:var(--ink-faint);margin-top:7px;font-family:var(--mo);}

/* ---------- logos / clients ---------- */
.clients{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
.client{background:var(--paper);padding:18px 20px;}
.client b{display:block;font-family:var(--hd);font-weight:700;font-size:15.5px;}
.client span{font-size:12px;color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase;font-weight:600;}

/* ---------- roster ---------- */
.roster{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);}
.entry{background:var(--paper);display:grid;grid-template-columns:1fr 150px;gap:6px 16px;padding:17px 22px;align-items:baseline;}
.entry .who{font-family:var(--hd);font-weight:700;font-size:16.5px;}
.entry .when{font-family:var(--mo);font-size:12.5px;color:var(--ink-faint);text-align:right;grid-row:1;grid-column:2;white-space:nowrap;}
.entry .what{font-size:14.5px;color:var(--ink-soft);grid-column:1;line-height:1.5;}

/* ---------- specs ---------- */
.specs{border-top:1px solid var(--line);margin:0;}
.spec{display:grid;grid-template-columns:220px 1fr;gap:20px;padding:14px 0;border-bottom:1px solid var(--line-soft);}
.spec dt{font-family:var(--hd);font-weight:700;font-size:13px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-soft);}
.spec dd{margin:0;font-size:15.5px;}

/* ---------- ticks ---------- */
ul.ticks{list-style:none;padding:0;margin:0 0 1em;}
ul.ticks li{padding-left:25px;position:relative;margin-bottom:9px;}
ul.ticks li::before{content:"";position:absolute;left:0;top:.52em;width:10px;height:10px;background:var(--brand);}

/* ---------- faq ---------- */
details.q{background:var(--paper);border:1px solid var(--line);margin-bottom:8px;}
details.q summary{cursor:pointer;padding:15px 20px;font-family:var(--hd);font-weight:700;font-size:16px;list-style:none;display:flex;justify-content:space-between;gap:14px;align-items:center;}
details.q summary::-webkit-details-marker{display:none;}
details.q summary::after{content:"+";font-family:var(--mo);color:var(--brand);font-size:19px;flex:none;}
details.q[open] summary::after{content:"\2013";}
details.q .a{padding:0 20px 17px;color:var(--ink-soft);font-size:15.5px;}
details.q .a p:last-child{margin-bottom:0;}

/* ---------- demo ---------- */
.demo-wrap{background:var(--paper);border:1px solid var(--line);padding:26px;}
.deck-scroll{overflow-x:auto;padding-bottom:4px;}
.deck{display:flex;gap:8px;min-width:720px;background:var(--sunk);padding:10px;border:1px solid var(--line);}
.core{flex:none;width:74px;background:var(--navy);color:rgba(234,241,248,.82);display:flex;align-items:center;justify-content:center;text-align:center;font-family:var(--hd);font-weight:700;font-size:10px;letter-spacing:.13em;line-height:1.6;padding:6px;}
.plan{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0;}
.edge{background:var(--line-soft);border:1px dashed var(--line);font-family:var(--hd);font-weight:700;font-size:9.5px;letter-spacing:.15em;color:var(--ink-faint);padding:5px 9px;}
.edge.out{text-align:right;}
.bayrow{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:3px;}
.bay{position:relative;aspect-ratio:1/1.9;border:none;padding:0;cursor:pointer;background:var(--paper);
     border-left:1px solid var(--line);border-right:1px solid var(--line);
     font-family:var(--mo);font-size:8px;color:var(--ink-faint);display:grid;place-items:center;}
.row-down .bay{border-top:2px solid var(--line);}
.row-up   .bay{border-bottom:2px solid var(--line);}
.bay .lamp{position:absolute;left:22%;right:22%;height:5px;border-radius:3px;background:var(--open);}
.row-down .bay .lamp{bottom:3px;}
.row-up   .bay .lamp{top:3px;}
.bay.free{background:color-mix(in srgb,var(--open) 11%,var(--paper));}
.bay.ada{background:color-mix(in srgb,var(--ada) 13%,var(--paper));}
.bay.ada .lamp{background:var(--ada);}
.bay.ev{background:color-mix(in srgb,var(--amber) 14%,var(--paper));}
.bay.ev .lamp{background:var(--amber);}
.bay.taken{background:color-mix(in srgb,var(--ink-faint) 26%,var(--paper));color:color-mix(in srgb,var(--ink) 42%,transparent);}
.bay.taken .lamp{background:var(--occ);}
.bay .car{display:none;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:74%;height:auto;}
.bay .car rect,.bay .car path{fill:#77879A;}
.bay .car .glass{fill:#B9C6D2;}
.bay .car .roof{fill:#8B9AAB;}
.bay .car .mirror{fill:#6B7B8D;}
.bay.taken .car{display:block;}
#demoPlan .bay.taken .bid{display:none;}
.row-up .bay .car{transform:translate(-50%,-50%) rotate(180deg);}
/* dark boards: smaller, quieter vehicles so the lamps stay the loudest thing */
.board .bay .car{width:66%;}
.board .bay .car rect,.board .bay .car path{fill:#5A6B7D;}
.board .bay .car .glass{fill:#7E90A2;}
.board .bay .car .roof{fill:#66788B;}
.board .bay .car .mirror{display:none;}
.bay:hover{outline:2px solid var(--brand);outline-offset:1px;z-index:2;}
.aisle{background:color-mix(in srgb,var(--ink) 12%,var(--paper));height:52px;position:relative;display:grid;place-items:center;}
.aisle::before{content:"";position:absolute;left:10px;right:10px;top:50%;border-top:2px dashed rgba(255,255,255,.55);}
.aisle span{position:relative;font-family:var(--hd);font-weight:700;font-size:9.5px;letter-spacing:.16em;color:var(--ink-soft);background:var(--paper);padding:2px 9px;}
.spine{height:9px;background:repeating-linear-gradient(45deg,var(--line) 0 5px,transparent 5px 10px);}
.legend2{display:flex;gap:18px;flex-wrap:wrap;margin:16px 0 4px;font-family:var(--hd);font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);}
.legend2 i{width:16px;height:5px;border-radius:3px;display:inline-block;margin-right:7px;vertical-align:middle;}
.readout{display:flex;gap:30px;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--line-soft);}
.readout div{display:flex;flex-direction:column;gap:2px;}
.readout span{font-family:var(--hd);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-weight:700;}
.readout b{font-family:var(--mo);font-size:24px;font-variant-numeric:tabular-nums;font-weight:600;}
.hint{font-size:13.5px;color:var(--ink-faint);}

/* ---------- ladder ---------- */
.ladder{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);}
.rung{background:var(--paper);display:grid;grid-template-columns:70px 1fr 92px;align-items:center;gap:14px;padding:13px 16px;}
.rung .lv{font-family:var(--hd);font-weight:700;font-size:14.5px;}
.rung .bar{height:8px;background:var(--sunk);position:relative;overflow:hidden;}
.rung .bar i{position:absolute;inset:0 auto 0 0;background:var(--brand);transition:width .5s ease;}
.rung .free{font-family:var(--mo);font-weight:600;font-size:17px;text-align:right;font-variant-numeric:tabular-nums;color:var(--brand);}
.rung.full .free{color:var(--occ);}
.rung.full .bar i{background:var(--occ);}

/* ---------- plate ---------- */
.plate-form{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0;}
.plate-in{font-family:var(--mo);font-weight:600;font-size:18px;letter-spacing:.1em;text-transform:uppercase;padding:11px 15px;border:2px solid var(--line);background:var(--paper);color:var(--ink);min-width:190px;}
.plate-in:focus{outline:none;border-color:var(--brand);}
.result{background:var(--sunk);border-left:3px solid var(--brand);padding:15px 18px;margin-bottom:8px;}
.result .big{font-family:var(--mo);font-size:21px;font-weight:600;display:block;margin-bottom:3px;}
.result.miss{border-left-color:var(--occ);}

/* ---------- posts, forms, misc ---------- */
.crumb{font-family:var(--mo);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:14px;}
.crumb a{color:inherit;text-decoration:none;}
.crumb a:hover{color:var(--brand);}
.postlist{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);}
.post.haspic{display:grid;grid-template-columns:140px 1fr;gap:18px;align-items:start;}
.postthumb{width:140px;height:92px;object-fit:cover;display:block;border:1px solid var(--line);background:var(--sunk);}
.posttxt{min-width:0;display:block;}
.posthero{width:100%;height:auto;display:block;margin:0 0 26px;border:1px solid var(--line);}
.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;margin:22px 0 0;}
.gallery figure{margin:0;background:var(--paper);border:1px solid var(--line);}
.gallery img{width:100%;height:190px;object-fit:cover;display:block;}
.gallery figcaption{font-size:13.5px;color:var(--ink-soft);padding:11px 14px;line-height:1.45;}
.journey{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:24px;}
.jstep{background:var(--paper);display:grid;grid-template-columns:52px 1fr 1fr;gap:0 20px;padding:18px 22px;align-items:start;}
.jstep .jn{font-family:var(--mo);font-variant-numeric:tabular-nums;font-size:12px;color:var(--brand);padding-top:3px;font-weight:600;}
.jstep h3{font-size:16px;margin-bottom:5px;}
.jstep .feel{font-size:15px;color:var(--ink);margin:0;}
.jstep .kit{font-size:14px;color:var(--ink-soft);margin:0;}
.jstep .kit b{font-family:var(--hd);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-faint);display:block;margin-bottom:4px;}
@media (max-width:760px){.jstep{grid-template-columns:38px 1fr;gap:6px 14px;}.jstep .kit{grid-column:2;}}
.vidgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:22px;}
.vid{display:block;text-decoration:none;color:inherit;background:var(--paper);border:1px solid var(--line);}
.vid:hover{border-color:var(--brand);box-shadow:var(--shadow);}
.vidthumb{position:relative;display:block;}
.vidthumb img{width:100%;height:auto;display:block;}
.vidthumb::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:0;height:0;border-left:22px solid #fff;border-top:14px solid transparent;border-bottom:14px solid transparent;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.5));}
.vidthumb::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:62px;height:62px;border-radius:50%;background:rgba(11,27,46,.72);}
.vid .meta{padding:14px 16px;}
.vid .meta h3{font-size:16px;margin-bottom:4px;}
.vid .meta p{margin:0;font-size:13.5px;color:var(--ink-soft);}
.vid .meta span{font-family:var(--mo);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);display:block;margin-bottom:6px;}
@media (max-width:560px){.post.haspic{grid-template-columns:1fr;}.postthumb{width:100%;height:170px;}}
.post{background:var(--paper);padding:20px 22px;text-decoration:none;color:inherit;display:block;}
.post:hover{background:var(--sunk);}
.post .date{font-family:var(--mo);font-size:11px;letter-spacing:.09em;color:var(--ink-faint);text-transform:uppercase;}
.post h3{margin:5px 0 5px;}
.post p{margin:0;font-size:15px;color:var(--ink-soft);}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px;}
.field label{font-family:var(--hd);font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);}
.field input,.field textarea,.field select{font-family:var(--bd);font-size:15.5px;padding:11px 13px;border:1px solid var(--line);background:var(--paper);color:var(--ink);}
.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--brand);outline-offset:-1px;border-color:transparent;}
.note{background:var(--brand-soft);border-left:3px solid var(--brand);padding:13px 16px;font-size:14.5px;}
.quote{background:var(--paper);border:1px solid var(--line);padding:24px;}
.quote p{font-size:15.5px;line-height:1.62;margin-bottom:14px;}
.quote footer{font-size:13px;color:var(--ink-faint);border-top:1px solid var(--line-soft);padding-top:12px;}
.quote footer b{display:block;font-family:var(--hd);font-size:14.5px;color:var(--ink);}

footer.site{background:var(--navy);color:var(--navy-ink);padding:50px 0 30px;}
footer.site h4{font-family:var(--hd);font-size:11.5px;letter-spacing:.15em;text-transform:uppercase;color:rgba(234,241,248,.48);margin-bottom:13px;}
footer.site a{display:block;color:var(--navy-ink);text-decoration:none;font-size:14.5px;opacity:.85;padding:3px 0;}
footer.site a:hover{color:var(--brand);opacity:1;}
footer.site p{font-size:14.5px;color:rgba(234,241,248,.68);}
.colophon{border-top:1px solid rgba(255,255,255,.13);margin-top:32px;padding-top:18px;font-size:12.5px;color:rgba(234,241,248,.5);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--brand);outline-offset:2px;}

/* ---------- PARCS demo ---------- */
.tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:2px solid var(--line);margin-bottom:0;}
.tabs button{font-family:var(--hd);font-weight:700;font-size:13.5px;padding:12px 17px;background:none;border:none;
  border-bottom:3px solid transparent;margin-bottom:-2px;color:var(--ink-soft);cursor:pointer;}
.tabs button:hover{color:var(--brand);}
.tabs button[aria-selected="true"]{color:var(--brand);border-bottom-color:var(--brand);}
.tabpane[hidden]{display:none;}
.tabpane{background:var(--paper);border:1px solid var(--line);border-top:none;padding:24px;}

.lanes{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;}
.lane{border:1px solid var(--line);background:var(--sunk);padding:18px;}
.lane h3{font-size:15px;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center;gap:10px;}
.lane .st{font-family:var(--mo);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:2px;}
.st.up{background:var(--ok-soft,var(--brand-soft));color:var(--open);}
.st.down{background:var(--sunk);color:var(--ink-faint);}
/* lane, drawn top-down so the arm crosses the lane the way it does on site */
/* lane, plan view: travel is left to right, the arm crosses the lane */
/* lane, plan view. travel is left to right; order down the lane is
   LPR camera -> reader/pay pedestal -> barrier arm */
.lanebox{position:relative;height:158px;background:var(--paper);border:1px solid var(--line);overflow:hidden;margin-bottom:12px;}
.lanebox .road{position:absolute;left:0;right:0;top:26px;height:96px;background:color-mix(in srgb,var(--ink) 11%,var(--paper));}
.lanebox .curb{position:absolute;left:0;right:0;height:5px;background:color-mix(in srgb,var(--ink) 26%,var(--paper));}
.lanebox .curb.t{top:21px;} .lanebox .curb.b{top:122px;}
/* LPR camera: first device in the lane, aimed forward and down at the rear plate */
.lanebox .lpr{position:absolute;left:28px;top:4px;width:24px;height:13px;background:var(--navy);border-radius:2px;
  transform:rotate(37deg);transform-origin:center;}
.lanebox .lpr::after{content:"";position:absolute;right:-7px;top:3px;width:8px;height:7px;background:var(--navy);border-radius:1px;}
.lanebox .lpr::before{content:"";position:absolute;left:9px;top:-12px;width:5px;height:13px;background:var(--ink-soft);}
.lanebox .beam{position:absolute;left:51px;top:18px;width:3px;height:88px;opacity:0;z-index:4;
  background:linear-gradient(180deg,var(--brand),color-mix(in srgb,var(--brand) 15%,transparent));
  transform-origin:top center;transform:rotate(54deg);transition:opacity .25s ease;border-radius:2px;}
.lanebox.reading .beam{opacity:.95;}
.lanebox .beam::after{content:"";position:absolute;left:-4px;bottom:-4px;width:11px;height:11px;border-radius:50%;
  background:var(--brand);opacity:.85;}
/* pedestal: ticket dispenser + card reader + intercom on entry, pay station on exit */
.lanebox .goose{position:absolute;left:160px;top:2px;width:21px;height:19px;background:var(--ink-soft);border-radius:2px;}
.lanebox .goose::after{content:"";position:absolute;left:7px;top:21px;width:7px;height:26px;background:var(--ink-soft);}
.lanebox .goose i{position:absolute;left:3px;top:4px;width:15px;height:4px;background:var(--brand);border-radius:1px;display:block;}
.lanebox .goose.pay{height:24px;top:0;}
.lanebox .goose.pay::before{content:"";position:absolute;left:4px;top:12px;width:13px;height:3px;background:var(--amber);border-radius:1px;}
/* barrier arm: it lifts in the vertical plane, so from above it retracts to the pivot */
.lanebox .island{position:absolute;left:222px;top:4px;width:22px;height:17px;background:var(--ink-soft);border-radius:2px;}
.lanebox .arm{position:absolute;left:231px;top:20px;width:6px;height:104px;
  background:repeating-linear-gradient(180deg,var(--occ) 0 14px,#fff 14px 28px);
  transform-origin:top center;transform:scaleY(1);transition:transform .75s ease;border-radius:2px;}
.lanebox.open .arm{transform:scaleY(.07);}
.lanebox .armtip{position:absolute;left:227px;top:118px;width:14px;height:5px;background:var(--occ);border-radius:2px;
  opacity:1;transition:opacity .4s ease .15s;}
.lanebox.open .armtip{opacity:0;}
.lanebox .goosetag,.lanebox .lprtag,.lanebox .armtag{position:absolute;font-family:var(--mo);font-size:8.5px;
  letter-spacing:.04em;color:var(--ink-faint);white-space:nowrap;}
.lanebox .lprtag{left:16px;top:131px;}
.lanebox .goosetag{left:146px;top:131px;}
.lanebox .armtag{left:232px;top:131px;}
.lanebox.gateless .arm,.lanebox.gateless .island,.lanebox.gateless .armtag,.lanebox.gateless .armtip{display:none;}
.lanebox.gateless .goose,.lanebox.gateless .goosetag{display:none;}
/* the vehicle, drawn nose-right so nothing is rotated */
.lanebox .car{position:absolute;top:47px;left:-130px;width:104px;transition:left 1.05s ease;}
.lanebox .car svg{width:100%;height:auto;display:block;}
.lanebox.stopped .car{left:118px;}
.lanebox.gateless.through .car{left:470px;transition:left 2.4s linear;}
.lanebox.through .car{left:470px;transition:left 1.2s ease-in;}
.lanebox.resetting .car,.lanebox.resetting .arm,.lanebox.resetting .armtip{transition:none;}
.lanebox .plateflash{position:absolute;left:50%;top:3px;transform:translateX(-50%);font-family:var(--mo);font-size:11px;
  background:var(--navy);color:#8FE3B4;padding:3px 9px;border-radius:2px;opacity:0;transition:opacity .3s;white-space:nowrap;}
.lanebox.reading .plateflash,.lanebox.open .plateflash,.lanebox.through .plateflash{opacity:1;}
.modeswitch{display:inline-flex;border:1px solid var(--line);margin-bottom:18px;overflow:hidden;}
.modeswitch button{font-family:var(--hd);font-weight:700;font-size:13px;padding:9px 18px;background:var(--paper);
  border:none;cursor:pointer;color:var(--ink-soft);}
.modeswitch button[aria-pressed="true"]{background:var(--brand);color:var(--on-brand);}
.txn{transition:background .3s;}
.txn.hold{background:var(--brand-soft);border-color:var(--brand);}
@media (prefers-reduced-motion:reduce){.lanebox .car,.lanebox .arm,.lanebox .beam,.lanebox .armtip{transition:none;}}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:20px;}
.kpi{background:var(--paper);padding:16px 18px;}
.kpi span{font-family:var(--hd);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-weight:700;display:block;}
.kpi b{font-family:var(--mo);font-size:26px;font-variant-numeric:tabular-nums;display:block;margin-top:5px;}
.kpi small{font-size:12px;color:var(--ink-soft);display:block;margin-top:3px;}

.health{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:10px;}
.hcard{border:1px solid var(--line);padding:12px 14px;background:var(--paper);display:flex;gap:10px;align-items:flex-start;}
.hdot{width:9px;height:9px;border-radius:50%;flex:none;margin-top:5px;}
.hcard b{display:block;font-family:var(--hd);font-size:13.5px;}
.hcard small{font-size:12px;color:var(--ink-soft);}

.scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
table.grid{width:100%;border-collapse:collapse;font-size:14px;min-width:880px;}
table.grid th{font-family:var(--hd);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;text-align:left;
  padding:9px 12px;border-bottom:1.5px solid var(--ink);white-space:nowrap;}
table.grid td{padding:9px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle;}
table.grid td.n{font-family:var(--mo);font-variant-numeric:tabular-nums;}
.badge{display:inline-block;font-family:var(--mo);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:2px;}
.badge.ok{background:var(--brand-soft);color:var(--brand-deep);}
.badge.mo{background:color-mix(in srgb,var(--open) 15%,transparent);color:var(--open);}
.badge.ex{background:color-mix(in srgb,var(--occ) 15%,transparent);color:var(--occ);}
.badge.ev{background:color-mix(in srgb,var(--amber) 20%,transparent);color:var(--amber);}
.badge.late{background:color-mix(in srgb,var(--occ) 16%,transparent);color:var(--occ);}
.badge.due{background:color-mix(in srgb,var(--amber) 22%,transparent);color:var(--amber);}
.alertbox{border-left:3px solid var(--occ);background:color-mix(in srgb,var(--occ) 8%,var(--paper));padding:14px 17px;margin-bottom:18px;}
.alertbox h3{font-size:15px;margin-bottom:8px;display:flex;align-items:center;gap:9px;}
.alertbox h3 .cnt{font-family:var(--mo);font-size:11px;background:var(--occ);color:#fff;padding:2px 8px;border-radius:2px;}
.alertbox ul{margin:0;padding-left:19px;font-size:14.5px;}
.alertbox li{margin-bottom:5px;}
.alertbox li b{font-family:var(--mo);}
tr.arrears td{background:color-mix(in srgb,var(--occ) 6%,transparent);}
@media (max-width:760px){
  .scroll table.grid{min-width:0;}
  table.grid thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
  table.grid tr{display:block;border-bottom:1px solid var(--line);padding:10px 0;}
  table.grid tr:last-child{border-bottom:none;}
  table.grid td{display:grid;grid-template-columns:44% 1fr;gap:12px;border:none;padding:5px 12px;align-items:baseline;}
  table.grid td::before{content:attr(data-label);font-family:var(--hd);font-weight:700;font-size:10.5px;
    letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);}
  table.grid td:empty{display:none;}
}

.phone{max-width:300px;margin:0 auto;border:10px solid var(--ink);border-radius:30px;background:var(--paper);overflow:hidden;box-shadow:var(--shadow);}
.phone .pbar{background:var(--navy);color:#fff;padding:9px 15px;font-family:var(--mo);font-size:10.5px;display:flex;justify-content:space-between;}
.phone .pbody{padding:16px;}
.phone h4{font-size:15px;margin-bottom:3px;}
.phone .prow{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:13.5px;}
.phone .prow b{font-family:var(--mo);}
.phone .pbtn{display:block;text-align:center;background:var(--brand);color:var(--on-brand);font-family:var(--hd);font-weight:700;
  font-size:13.5px;padding:11px;margin-top:14px;}
.phone .plate{font-family:var(--mo);font-weight:600;font-size:17px;letter-spacing:.1em;border:2px solid var(--ink);
  padding:6px 10px;text-align:center;margin:10px 0;}

@media (max-width:1180px){
  nav.main{display:none;position:absolute;top:100%;left:0;right:0;background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;padding:10px 26px 20px;box-shadow:var(--shadow);max-height:78vh;overflow-y:auto;}
  nav.main.open{display:flex;}
  .topbar .shell{position:relative;flex-wrap:wrap;}
  .burger{display:block;}
  .navitem>a,.navitem>button{padding:11px 0;width:100%;justify-content:space-between;border-bottom:1px solid var(--line-soft);}
  .menu{display:block;position:static;border:none;box-shadow:none;min-width:0;padding:4px 0 10px 14px;background:none;}
  .navitem>button::after{display:none;}
  .navcta{margin:14px 0 0;}
  .navcta .btn{display:block;text-align:center;}
}
@media (max-width:760px){
  .brand .logo{height:44px;}
  .topbar .shell{min-height:76px;}
}
@media (max-width:960px){
  .hero-grid{grid-template-columns:1fr;gap:34px;}
  .c3,.c4,.c5{grid-template-columns:repeat(2,1fr);}
  .clients{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:620px){
  .c2,.c3,.c4,.c5{grid-template-columns:1fr;}
  .clients{grid-template-columns:1fr;}
  .spec{grid-template-columns:1fr;gap:3px;}
  .entry{grid-template-columns:1fr;}
  .entry .when{grid-row:auto;grid-column:1;text-align:left;}
  .board .core{display:none;}
  .band{padding:46px 0;}
}
