:root {
      /* Legacy tokens (used widely across the existing site). */
      --green:#22c55e; --green2:#16a34a; --panel:rgba(10,10,12,.88);
      --border:rgb(39 39 42); --muted:rgb(161 161 170);
      /* Apex palette — mirrors apex_ballistics_app/lib/main.dart's
         _appAccent / _appSurface / _appDeep / _appPanel / _appLine /
         _appText / _appMuted exactly. New homepage + future
         redesign work pulls from these so the marketing site matches
         the app's look pixel-for-pixel where it counts. */
      --apex-accent:#83E35D;
      --apex-surface:#07110C;
      --apex-deep:#040906;
      --apex-panel:#0D1811;
      --apex-line:#22352A;
      --apex-panel-line:rgba(116,143,126,.34);
      --apex-text:#F2F7F2;
      --apex-muted:#9FB1A3;
    }
    * { box-sizing:border-box; }
    body { background:#000; color:#fff; }
    .field-label { font-size:.82rem; color:var(--muted); margin-bottom:.45rem; display:block; }
    .field-input,.field-select,.field-textarea { width:100%; background:#050505; border:1px solid var(--border); color:#fff; border-radius:.95rem; padding:.72rem .85rem; }
    .field-textarea { min-height:96px; resize:vertical; }
    .panel { background:var(--panel); border:1px solid var(--border); border-radius:1.5rem; box-shadow:0 20px 60px rgba(0,0,0,.28); }
    .btn-primary { background:linear-gradient(180deg,#34d399,#16a34a); color:#03130a; border-radius:.9rem; padding:.72rem 1rem; font-weight:700; }
    .btn-secondary { border:1px solid rgb(63 63 70); color:#f4f4f5; border-radius:.9rem; padding:.72rem 1rem; }
    .btn-danger { border:1px solid rgb(127 29 29); color:#fca5a5; border-radius:.9rem; padding:.72rem 1rem; }
    .badge { display:inline-flex; align-items:center; gap:.4rem; background:rgba(34,197,94,.14); color:#86efac; border:1px solid rgba(34,197,94,.35); border-radius:999px; padding:.32rem .8rem; font-size:.76rem; }
    .page.hidden { display:none; }
    /* Suppress the static home-page section on non-home routes
       (active-session, workflow-system, ballistic-solver, my-account
       and their mobile equivalents). Every HTML file ships
       #page-home WITHOUT the .hidden class because index.html /
       mobile.html actually want it visible by default — but on the
       other shells, that meant the marketing home content was
       rendered for a beat before script2.js's first render() ran
       and toggled to the right page, so users saw a "home flash"
       on every navigation. The selector keys off the body's
       data-initial-page attribute, so the bare HTML hides home for
       everything except the home shell itself. */
    body:not([data-initial-page="home"]) #page-home { display:none !important; }
    .stat-card { background:rgba(0,0,0,.35); border:1px solid var(--border); border-radius:1rem; padding:1rem; }
    .subtle-grid { background-image: linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px); background-size: 28px 28px; }
    .summary-item { border:1px solid var(--border); background:rgba(0,0,0,.35); border-radius:1rem; padding:.95rem 1rem; }
    .summary-title { color:#a1a1aa; font-size:.77rem; text-transform:uppercase; letter-spacing:.08em; margin-bottom:.35rem; }
    .summary-value { color:#fff; font-size:.97rem; line-height:1.4; }
    .table-scroll { overflow-x:auto; }
    /* Single source of truth for every shot table on the site
       (firearm-overview edit + summary, logbook edit + summary).
       Seven columns: Rnd, Grp, Vel, Dist, Slope, Wind, Dir. The
       fr-units flex to whatever container width is available; no
       min-width here lets the firearm-overview-session-pane (narrow
       right column) and the logbook page (full width) render the
       same markup without competing min-widths. Per-context font /
       padding adjustments live with the consumer (see
       `.firearm-overview-session-pane` block below). */
    .shot-grid-head,.shot-grid-row { display:grid; grid-template-columns: .55fr 1.0fr .9fr .9fr .85fr .85fr 1.05fr; gap:.6rem; min-width:0; }
    .mobile-shot-card { border:1px solid var(--border); background:rgba(0,0,0,.35); border-radius:1rem; padding:1rem; }
    .report-wrap { font-family: Arial, sans-serif; color:#111; padding:24px; }
    .report-title { font-size:28px; font-weight:800; margin-bottom:6px; }
    .report-sub { color:#444; margin-bottom:18px; }
    .report-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:16px 0 20px; }
    .report-card { border:1px solid #ddd; border-radius:12px; padding:12px; }
    .report-label { font-size:12px; text-transform:uppercase; color:#666; margin-bottom:6px; letter-spacing:.08em; }
    .report-value { font-size:14px; color:#111; }
    .report-table { width:100%; border-collapse:collapse; margin-top:16px; }
    .report-table th,.report-table td { border:1px solid #ddd; padding:8px; font-size:12px; text-align:left; }
    .hero-illustration svg { width:100%; height:auto; display:block; }
    .nav-link.active { background:linear-gradient(180deg,#34d399,#16a34a); color:#03130a; }
    @media (max-width: 1024px) { .desktop-nav { display:none; } }
    @media (max-width: 768px) {
      .report-grid { grid-template-columns:1fr; }
    }
  
    @media (max-width: 768px) {
      body { font-size: 15px; }
      .panel { border-radius: 1rem; }
      .field-input,.field-select,.field-textarea { font-size: 16px; padding: .82rem .88rem; }
      .btn-primary,.btn-secondary,.btn-danger { min-height: 44px; }
      .summary-item, .stat-card { padding: .85rem; border-radius: .9rem; }
      header .max-w-7xl { padding-left: .75rem; padding-right: .75rem; }
      .hero-illustration { border-radius: 1rem; overflow: hidden; }
      .badge { font-size: .72rem; padding: .28rem .65rem; }
    }

  
    .btn-danger-text { color:#7f1d1d; font-weight:700; }
    .btn-danger-text:hover { color:#ef4444; }
    .confirm-overlay { position:fixed; inset:0; background:rgba(0,0,0,.72); display:flex; align-items:center; justify-content:center; padding:1rem; z-index:80; }
    .confirm-card { max-width:28rem; width:100%; background:rgba(10,10,12,.96); border:1px solid rgb(63 63 70); border-radius:1rem; padding:1.25rem; box-shadow:0 20px 60px rgba(0,0,0,.4); }

body{font-family:Arial,sans-serif;background:#fff;} .report-wrap{font-family:Arial,sans-serif;color:#111;padding:24px;} .report-title{font-size:28px;font-weight:800;margin-bottom:6px;} .report-sub{color:#444;margin-bottom:18px;} .report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0 20px;} .report-card{border:1px solid #ddd;border-radius:12px;padding:12px;} .report-label{font-size:12px;text-transform:uppercase;color:#666;margin-bottom:6px;letter-spacing:.08em;} .report-value{font-size:14px;color:#111;} table{width:100%;border-collapse:collapse;margin-top:16px;} th,td{border:1px solid #ddd;padding:8px;font-size:12px;text-align:left;} @media print {.noprint{display:none;}}
    @media (max-width: 768px) {
      body { font-size: 15px; }
      .panel { border-radius: 1rem; }
      .field-input,.field-select,.field-textarea { font-size: 16px; padding: .82rem .88rem; }
      .btn-primary,.btn-secondary,.btn-danger { min-height: 44px; }
      .summary-item, .stat-card { padding: .85rem; border-radius: .9rem; }
      header .max-w-7xl { padding-left: .75rem; padding-right: .75rem; }
      .hero-illustration { border-radius: 1rem; overflow: hidden; }
      .badge { font-size: .72rem; padding: .28rem .65rem; }
    }

  
    .btn-danger-text { color:#7f1d1d; font-weight:700; }
    .btn-danger-text:hover { color:#ef4444; }
    .confirm-overlay { position:fixed; inset:0; background:rgba(0,0,0,.72); display:flex; align-items:center; justify-content:center; padding:1rem; z-index:80; }
    .confirm-card { max-width:28rem; width:100%; background:rgba(10,10,12,.96); border:1px solid rgb(63 63 70); border-radius:1rem; padding:1.25rem; box-shadow:0 20px 60px rgba(0,0,0,.4); }

body{font-family:Arial,sans-serif;background:#fff;} .report-wrap{font-family:Arial,sans-serif;color:#111;padding:24px;} .report-title{font-size:28px;font-weight:800;margin-bottom:6px;} .report-sub{color:#444;margin-bottom:18px;} table{width:100%;border-collapse:collapse;margin-top:16px;} th,td{border:1px solid #ddd;padding:8px;font-size:12px;text-align:left;} @media print {.noprint{display:none;}}
    @media (max-width: 768px) {
      body { font-size: 15px; }
      .panel { border-radius: 1rem; }
      .field-input,.field-select,.field-textarea { font-size: 16px; padding: .82rem .88rem; }
      .btn-primary,.btn-secondary,.btn-danger { min-height: 44px; }
      .summary-item, .stat-card { padding: .85rem; border-radius: .9rem; }
      header .max-w-7xl { padding-left: .75rem; padding-right: .75rem; }
      .hero-illustration { border-radius: 1rem; overflow: hidden; }
      .badge { font-size: .72rem; padding: .28rem .65rem; }
    }

  
    .btn-danger-text { color:#7f1d1d; font-weight:700; }
    .btn-danger-text:hover { color:#ef4444; }
    .confirm-overlay { position:fixed; inset:0; background:rgba(0,0,0,.72); display:flex; align-items:center; justify-content:center; padding:1rem; z-index:80; }
    .confirm-card { max-width:28rem; width:100%; background:rgba(10,10,12,.96); border:1px solid rgb(63 63 70); border-radius:1rem; padding:1.25rem; box-shadow:0 20px 60px rgba(0,0,0,.4); }


/* --- Premium SaaS landing page + solver polish --- */
.premium-shell { max-width: 1280px; margin: 0 auto; padding: 0 1rem; }

.hero-premium {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(63,63,70,.95);
  border-radius: 1.75rem;
  min-height: 74vh;
  box-shadow: 0 30px 80px rgba(0,0,0,.45);
  background:
    linear-gradient(180deg, rgba(3,7,4,.18), rgba(0,0,0,.82)),
    radial-gradient(circle at 18% 12%, rgba(34,197,94,.2), transparent 32%),
    url('../assets/images/firing-line.png') center/cover no-repeat;
  display: grid;
  grid-template-columns: 1.08fr .92fr;
  align-items: center;
}
.hero-premium::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(0,0,0,.6), rgba(0,0,0,.22) 48%, rgba(0,0,0,.05));
  pointer-events: none;
}
.hero-copy, .hero-product-card { position: relative; z-index: 2; }
.hero-copy { padding: 3rem; max-width: 42rem; }
.hero-kicker {
  display:inline-flex; align-items:center; gap:.5rem; padding:0;
  border-radius:0; border:none;
  background:transparent; color:#bbf7d0; font-size:.78rem;
  letter-spacing:.06em; text-transform:uppercase;
}
.hero-title {
  font-size: clamp(2.8rem, 6vw, 5rem);
  line-height: .95;
  font-weight: 800;
  margin-top: 1rem;
}
.hero-title span { color: #4ade80; display:block; }
.hero-sub {
  margin-top: 1rem;
  font-size: 1.08rem;
  line-height: 1.8;
  color: #d4d4d8;
  max-width: 36rem;
}
.hero-actions { display:flex; flex-wrap: wrap; gap:.9rem; margin-top: 1.35rem; }
.hero-metrics { display:grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap:.85rem; margin-top: 1.6rem; max-width: 40rem; }
.metric-chip {
  border:1px solid rgba(63,63,70,.95);
  background:rgba(10,10,12,.62);
  border-radius:1rem;
  padding:.9rem 1rem;
}
.metric-chip .value { font-size:1.15rem; font-weight:700; color:#fff; }
.metric-chip .label { font-size:.78rem; color:#a1a1aa; margin-top:.22rem; text-transform:uppercase; letter-spacing:.08em; }
.hero-product-card {
  margin: 2rem 2rem 2rem auto;
  width: min(100%, 460px);
  border:1px solid rgba(63,63,70,.92);
  background: rgba(9,9,11,.8);
  backdrop-filter: blur(10px);
  border-radius: 1.4rem;
  padding: 1.2rem;
  box-shadow: 0 20px 60px rgba(0,0,0,.35);
}
.product-row {
  display:flex; align-items:flex-start; justify-content:space-between; gap:.75rem;
  padding:.9rem 0; border-bottom:1px solid rgba(39,39,42,.85);
}
.product-row:last-child { border-bottom:0; }
.product-title { font-weight:700; }
.product-copy { color:#a1a1aa; font-size:.92rem; margin-top:.22rem; line-height:1.6; }
.price-pill {
  display:inline-flex; align-items:center; justify-content:center; min-width:78px;
  border-radius:0; padding:0;
  background:transparent; color:#d9fbe8;
  border:none; font-weight:700;
}
.landing-section { margin-top: 1.25rem; }
.landing-card {
  border:1px solid rgba(39,39,42,.92);
  background:rgba(10,10,12,.84);
  border-radius:1.5rem;
  box-shadow:0 20px 60px rgba(0,0,0,.24);
}
.feature-grid-premium { display:grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap:1rem; }
.feature-card-premium { padding:1.25rem; }
.feature-card-premium h3 { font-size:1.08rem; font-weight:700; margin-top:.7rem; }
.feature-card-premium p { margin-top:.5rem; color:#a1a1aa; line-height:1.8; font-size:.95rem; }
.solver-shell {
  display:grid;
  grid-template-columns: 360px minmax(0,1fr);
  gap:1rem;
  align-items:start;
}
.solver-panel, .solver-result-panel {
  border:1px solid rgba(39,39,42,.92);
  background:rgba(10,10,12,.88);
  border-radius:1.5rem;
  box-shadow:0 20px 60px rgba(0,0,0,.28);
}
.solver-panel { padding:1rem; position:sticky; top:5.75rem; }
.solver-result-panel { padding:1.1rem; }
.solver-header-row { display:flex; align-items:flex-start; justify-content:space-between; gap:.75rem; margin-bottom:1rem; }
.solver-mode-pill {
  display:inline-flex; align-items:center; gap:.35rem;
  padding:0; border-radius:0;
  border:none;
  background:transparent; color:#bbf7d0; font-size:.78rem;
}
.solver-kpi-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.8rem; }
.solver-kpi {
  border:1px solid rgba(39,39,42,.92);
  background:rgba(0,0,0,.38);
  border-radius:1rem;
  padding:1rem;
}
.solver-kpi .kpi-label { font-size:.75rem; color:#a1a1aa; text-transform:uppercase; letter-spacing:.08em; }
.solver-kpi .kpi-value { font-size:1.45rem; font-weight:800; margin-top:.25rem; }
.solver-emphasis {
  border:1px solid rgba(34,197,94,.32);
  background:linear-gradient(180deg, rgba(34,197,94,.14), rgba(0,0,0,.32));
  border-radius:1.25rem;
  padding:1rem;
}
.solver-emphasis .primary { font-size:2.35rem; font-weight:800; line-height:1; }
.solver-emphasis .secondary { font-size:1rem; color:#d4d4d8; margin-top:.35rem; }
.solver-grid-table { overflow-x:auto; border:1px solid rgba(39,39,42,.92); border-radius:1rem; }
.solver-grid-table table { width:100%; border-collapse:collapse; min-width:860px; }
.solver-grid-table th, .solver-grid-table td { padding:.8rem .9rem; border-bottom:1px solid rgba(39,39,42,.92); text-align:left; }
.solver-grid-table th { font-size:.78rem; color:#a1a1aa; text-transform:uppercase; letter-spacing:.08em; background:rgba(0,0,0,.32); }
.solver-grid-table tr:last-child td { border-bottom:0; }

@media (max-width: 1100px) {
  .hero-premium { grid-template-columns: 1fr; min-height: 78vh; }
  .hero-product-card { margin: 0 1.25rem 1.5rem; width:auto; }
  .hero-copy { padding: 2rem 1.25rem 1rem; }
  .feature-grid-premium { grid-template-columns: 1fr; }
  .solver-shell { grid-template-columns: 1fr; }
  .solver-panel { position:static; }
  .solver-kpi-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 640px) {
  .hero-metrics { grid-template-columns: 1fr; }
  .solver-kpi-grid { grid-template-columns: 1fr; }
  .hero-title { font-size: 2.5rem; }
}



/* --- Brand integration pass --- */
.brand-lockup {
  display:flex;
  align-items:center;
  gap:.9rem;
  border:1px solid rgba(39,39,42,.9);
  background:linear-gradient(180deg, rgba(10,10,12,.82), rgba(10,10,12,.64));
  border-radius:1.15rem;
  padding:.48rem .8rem .48rem .48rem;
  box-shadow:0 14px 40px rgba(0,0,0,.22);
}
.brand-mark-wrap {
  width:3rem;
  height:3rem;
  border-radius:1rem;
  background:radial-gradient(circle at 30% 25%, rgba(34,197,94,.22), rgba(0,0,0,.18) 68%);
  border:1px solid rgba(34,197,94,.25);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
}
.brand-mark { width:2.2rem; height:2.2rem; object-fit:contain; filter: drop-shadow(0 8px 18px rgba(34,197,94,.18)); }
.brand-copy { line-height:1.05; }
.brand-name { font-weight:800; letter-spacing:.02em; font-size:1rem; color:#fff; }
.brand-tag { margin-top:.18rem; font-size:.72rem; color:#a1a1aa; }

.hero-brand-row { margin-bottom:.9rem; }
.hero-brand-chip {
  display:inline-flex;
  align-items:center;
  gap:.8rem;
  padding:.65rem .85rem;
  border-radius:1rem;
  border:1px solid rgba(39,39,42,.92);
  background:rgba(10,10,12,.54);
  backdrop-filter:blur(10px);
  box-shadow:0 16px 36px rgba(0,0,0,.22);
}
.hero-brand-logo { width:2.5rem; height:2.5rem; object-fit:contain; }
.hero-brand-chip-title { font-weight:800; font-size:.95rem; color:#fff; }
.hero-brand-chip-sub { font-size:.76rem; color:#a1a1aa; margin-top:.15rem; }

.hero-premium { position:relative; }
.hero-watermark {
  position:absolute;
  right:2.5rem;
  bottom:2rem;
  width:min(28vw, 220px);
  opacity:.1;
  filter:drop-shadow(0 18px 36px rgba(0,0,0,.38));
  z-index:1;
  pointer-events:none;
}

.product-brand-inline {
  display:flex;
  align-items:center;
  gap:.65rem;
}
.product-brand-inline-logo {
  width:2rem;
  height:2rem;
  object-fit:contain;
  opacity:.95;
}

.site-footer {
  margin-top:2rem;
  border-top:1px solid rgba(39,39,42,.92);
  background:linear-gradient(180deg, rgba(0,0,0,.25), rgba(0,0,0,.7));
}
.footer-inner {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:1.4rem 1rem 2rem;
}
.footer-brand {
  display:flex;
  align-items:center;
  gap:1rem;
  max-width:42rem;
}
.footer-logo {
  width:3rem;
  height:3rem;
  object-fit:contain;
  flex:0 0 auto;
}
.footer-title { font-size:1rem; font-weight:800; color:#fff; }
.footer-copy { color:#a1a1aa; font-size:.92rem; line-height:1.7; margin-top:.2rem; }
.footer-links { display:flex; flex-wrap:wrap; gap:.7rem; }

@media (max-width: 900px) {
  .brand-tag { display:none; }
  .footer-inner { flex-direction:column; align-items:flex-start; }
}
@media (max-width: 640px) {
  .brand-lockup { padding:.42rem .62rem .42rem .42rem; }
  .brand-mark-wrap { width:2.6rem; height:2.6rem; border-radius:.85rem; }
  .brand-mark { width:1.9rem; height:1.9rem; }
  .hero-brand-chip { width:100%; }
  .hero-watermark { width:130px; right:1rem; bottom:1rem; opacity:.12; }
}


/* --- Fix 2: stronger logo + real photo + dedicated products page --- */
.brand-lockup-strong {
  padding:.58rem .95rem .58rem .58rem;
  gap:1rem;
  border:1px solid rgba(34,197,94,.22);
  background:linear-gradient(180deg, rgba(10,10,12,.9), rgba(10,10,12,.72));
}
.brand-mark-wrap-strong {
  width:3.4rem;
  height:3.4rem;
  border-radius:1.05rem;
  border:1px solid rgba(34,197,94,.3);
  box-shadow:0 14px 36px rgba(0,0,0,.28);
}
.brand-mark-strong { width:2.5rem; height:2.5rem; }
.brand-name-strong { font-size:1.08rem; }
.brand-tag-strong { font-size:.76rem; color:#c4c4cc; display:block !important; }

.hero-photo-card {
  position:relative;
  min-height:540px;
  border-radius:1.5rem;
  overflow:hidden;
  border:1px solid rgba(39,39,42,.92);
  box-shadow:0 24px 70px rgba(0,0,0,.34);
  background:#050505;
}
.hero-photo-img {
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  min-height:540px;
}
.hero-photo-overlay {
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.56));
}
.hero-photo-brand {
  position:absolute;
  left:1.1rem;
  bottom:1.1rem;
  display:flex;
  align-items:center;
  gap:.9rem;
  padding:.8rem .95rem;
  border-radius:1rem;
  border:1px solid rgba(39,39,42,.92);
  background:rgba(10,10,12,.72);
  backdrop-filter:blur(10px);
  box-shadow:0 18px 42px rgba(0,0,0,.3);
}
.hero-photo-logo {
  width:3rem;
  height:3rem;
  object-fit:contain;
}
.hero-photo-title {
  font-size:1rem;
  font-weight:800;
  color:#fff;
}
.hero-photo-sub {
  font-size:.8rem;
  color:#d4d4d8;
  margin-top:.15rem;
}

.products-grid-premium {
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:1rem;
}
.product-card-premium {
  border:1px solid rgba(39,39,42,.92);
  background:rgba(10,10,12,.86);
  border-radius:1.5rem;
  padding:1.25rem;
  box-shadow:0 20px 60px rgba(0,0,0,.24);
}
.product-card-premium.featured {
  border-color:rgba(34,197,94,.35);
  box-shadow:0 22px 64px rgba(0,0,0,.3);
}
.product-card-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  margin-bottom:1rem;
}
.product-card-logo {
  width:2.3rem;
  height:2.3rem;
  object-fit:contain;
}
.product-card-premium h3 {
  font-size:1.25rem;
  font-weight:800;
  margin-bottom:.6rem;
}
.product-card-premium p {
  color:#a1a1aa;
  line-height:1.8;
}
.product-card-premium ul {
  margin-top:1rem;
  color:#e4e4e7;
  padding-left:1rem;
}
.product-card-premium li {
  margin:.45rem 0;
}

@media (max-width: 1100px) {
  .products-grid-premium { grid-template-columns:1fr; }
}
@media (max-width: 768px) {
  .hero-photo-card, .hero-photo-img { min-height:420px; }
  .brand-tag-strong { display:none !important; }
}



/* --- Background-only adjustments --- */
html, body {
  background: #151b18;
}

body {
  color: #f4f4f5;
}

.panel,
.stat-card,
.summary-item,
.mobile-shot-card,
.landing-card,
.product-panel,
.hero-photo-card,
.brand-lockup {
  background-color: rgba(18, 22, 20, 0.88);
}

.fixed.inset-0.pointer-events-none {
  background:
    radial-gradient(circle at top, rgba(74, 222, 128, 0.16), transparent 28%),
    linear-gradient(180deg, rgba(21, 27, 24, 1), rgba(12, 15, 14, 1)) !important;
}



/* --- Banner micro-interactions --- */
.desktop-nav .nav-link {
  overflow: hidden;
}

.desktop-nav .nav-link::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 50%, rgba(74,222,128,.18), transparent 60%);
  opacity: 0;
  transition: opacity .22s ease, transform .22s ease;
  transform: scale(.92);
  pointer-events: none;
}

.desktop-nav .nav-link:hover {
  box-shadow:
    0 12px 28px rgba(0,0,0,.22),
    0 0 0 1px rgba(74,222,128,.12) inset,
    0 0 26px rgba(74,222,128,.14);
}

.desktop-nav .nav-link:hover::before {
  opacity: 1;
  transform: scale(1);
}

.brand-lockup-solo,
.brand-lockup {
  transition: transform .18s ease, filter .18s ease, opacity .18s ease;
  will-change: transform;
}

.brand-lockup-solo:hover,
.brand-lockup:hover {
  transform: translateY(-1px) scale(1.015);
  filter: drop-shadow(0 8px 18px rgba(74,222,128,.12));
}

.hero-premium {
  will-change: background-position;
}



/* --- Homepage rebuild only --- */
.homepage-only {
  position: relative;
  z-index: 1;
}

.home-hero-shell {
  display: grid;
  grid-template-columns: 1.02fr .98fr;
  gap: 1.3rem;
  align-items: stretch;
}

.home-hero-copy,
.home-photo-card,
.home-feature-card,
.home-story-card {
  border: 1px solid rgba(58,64,60,.95);
  background: linear-gradient(180deg, rgba(18,22,20,.9), rgba(10,10,12,.92));
  box-shadow: 0 18px 46px rgba(0,0,0,.24), 0 0 0 1px rgba(34,197,94,.04) inset;
  border-radius: 1.4rem;
}

.home-hero-copy {
  padding: 1.8rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.home-kicker {
  display: inline-flex;
  align-items: center;
  padding: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  color: #bbf7d0;
  font-size: .76rem;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.home-title {
  margin-top: .7rem;
  font-size: clamp(2.75rem, 5.9vw, 4.7rem);
  line-height: .98;
  font-weight: 800;
}

.home-title span {
  color: #4ade80;
  text-shadow: 0 0 26px rgba(74,222,128,.1);
}

.home-sub {
  margin-top: 1.05rem;
  color: #d4d4d8;
  line-height: 1.8;
  font-size: 1rem;
  max-width: 38rem;
}

.home-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: .9rem;
  margin-top: 1.35rem;
}

.home-proof-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 1rem;
  margin-top: 1.75rem;
  padding-top: 0;
  border-top: 0;
}

.home-proof-chip {
  border: none;
  background: transparent;
  border-radius: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.home-proof-value {
  font-size: 1rem;
  font-weight: 800;
  color: #fff;
}

.home-proof-label {
  margin-top: .22rem;
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .11em;
  color: #a1a1aa;
}

.home-hero-media {
  display: flex;
  align-items: stretch;
}

.home-photo-card {
  width: 100%;
  padding: 1.1rem;
}

.home-photo-top,
.home-photo-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.home-photo-caption {
  font-size: .76rem;
  color: #a1a1aa;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.home-photo-heading {
  margin-top: .25rem;
  font-size: 1rem;
  font-weight: 700;
}

.home-photo-logo {
  width: 32px;
  height: 32px;
  object-fit: contain;
}

.home-photo-frame {
  margin-top: 1rem;
  margin-bottom: .95rem;
}

.home-photo-image {
  width: 100%;
  display: block;
  border-radius: 1rem;
  border: 1px solid rgba(58,64,60,.92);
}

.home-feature-band {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 1rem;
  margin-top: 1.15rem;
}

.home-feature-card {
  padding: 1.15rem 1.15rem 1.2rem;
}

.home-feature-title {
  font-size: 1rem;
  font-weight: 800;
  color: #ecfff3;
  margin-bottom: .45rem;
}

.home-feature-card p {
  color: #a1a1aa;
  line-height: 1.75;
  font-size: .94rem;
}

.home-story-grid {
  display: grid;
  grid-template-columns: 1.15fr .95fr .9fr;
  gap: 1rem;
  margin-top: 1.15rem;
}

.home-story-card {
  padding: 1.35rem;
}

.home-section-label {
  color: #9ccfaf;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: .85rem;
}

.home-story-list {
  display: grid;
  gap: .95rem;
}

.home-story-item {
  padding-top: .9rem;
  border-top: 1px solid rgba(88, 104, 96, 0.22);
}

.home-story-item:first-child {
  padding-top: 0;
  border-top: 0;
}

.home-story-item-title {
  color: #f5f7f6;
  font-size: .96rem;
  font-weight: 700;
  margin-bottom: .35rem;
}

.home-story-item p,
.home-story-card-demo p {
  color: #aeb5b0;
  line-height: 1.75;
  font-size: .94rem;
}

.home-story-card-demo {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.home-bullet-list {
  margin: 0;
  padding-left: 1.1rem;
  color: #d4d4d8;
}

.home-bullet-list li + li {
  margin-top: .65rem;
}

@media (max-width: 1050px) {
  .home-hero-shell,
  .home-feature-band,
  .home-story-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  .home-proof-row {
    grid-template-columns: 1fr;
  }
}


/* --- CTA micro labels --- */
.cta-block {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}

.cta-micro {
  font-size: 0.65rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #9ca3af;
  opacity: 0.8;
  padding-left: 2px;
}


/* --- Fix: keep competition firing line photo inside its card --- */
.home-hero-media {
  display: flex;
  align-items: stretch;
}

.home-photo-card {
  width: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.home-photo-top,
.home-photo-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.home-photo-frame {
  margin-top: .85rem;
  margin-bottom: .85rem;
  display: block;
  width: 100%;
}

.home-photo-image {
  width: 100%;
  height: auto;
  display: block;
  object-fit: cover;
  border-radius: 1rem;
}


/* --- 2026 rebuild overrides: stable public website layer --- */
:root {
  --bg-deep: #0b100e;
  --bg-surface: rgba(18, 24, 21, 0.88);
  --bg-surface-strong: rgba(14, 18, 16, 0.96);
  --line-soft: rgba(113, 137, 121, 0.28);
  --line-accent: rgba(74, 222, 128, 0.32);
  --text-main: #f4f7f5;
  --text-muted: #aab5ae;
  --text-soft: #7f8b84;
  --accent: #72f1a1;
  --accent-strong: #33c16c;
  --shadow-deep: 0 28px 80px rgba(0, 0, 0, 0.34);
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background:
    radial-gradient(circle at top, rgba(75, 211, 119, 0.12), transparent 26%),
    linear-gradient(180deg, #121714 0%, var(--bg-deep) 100%);
  color: var(--text-main);
  font-family: "Manrope", sans-serif;
}

h1, h2, h3, .banner-title {
  font-family: "Barlow Condensed", sans-serif;
  letter-spacing: 0.02em;
}

button {
  cursor: pointer;
}

.btn-primary,
.btn-secondary,
.btn-danger,
.nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  min-height: 46px;
  padding: 0.82rem 1.1rem;
  /* Bar-style buttons matching the Flutter app's SessionActionButton
     and _PreviewChoiceButton (top + bottom horizontal lines, no
     left/right border, no background fill, no rounded corners). The
     per-variant rules below set border-top + border-bottom colors;
     here we just zero out the rounded/full-border baseline. */
  border-radius: 0;
  border: 0;
  background: transparent;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  overflow: hidden;
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease,
    border-color 0.18s ease,
    background 0.18s ease,
    color 0.18s ease,
    opacity 0.18s ease;
}

.btn-primary::before,
.btn-secondary::before,
.btn-danger::before,
.nav-link::before {
  /* Pre-bar style: a radial wash filled the button on hover. Now
     that the rest state is just two horizontal lines, a wash inside
     looks like an unintended background fill — disabled. */
  content: none;
}

.btn-primary {
  /* Primary action — same muted bars + white text as secondary at
     rest. Green is reserved for hover/focus across the whole system,
     so primary doesn't visually differ from secondary until you
     interact with it. */
  background: transparent;
  color: var(--text-main);
  border-top: 1px solid rgba(143, 156, 149, 0.40);
  border-bottom: 1px solid rgba(143, 156, 149, 0.40);
  border-left: 0;
  border-right: 0;
  box-shadow: none;
}

.btn-secondary {
  /* Default action — muted bars + white text. */
  background: transparent;
  color: var(--text-main);
  border-top: 1px solid rgba(143, 156, 149, 0.40);
  border-bottom: 1px solid rgba(143, 156, 149, 0.40);
  border-left: 0;
  border-right: 0;
}

.nav-link {
  /* Nav links: bottom bar only, no top bar (per the user's spec).
     The bar is transparent until .nav-link.active turns it accent. */
  background: transparent;
  color: var(--text-main);
  border-top: 0;
  border-bottom: 1px solid transparent;
  border-left: 0;
  border-right: 0;
}

.btn-danger {
  background: transparent;
  color: #fecaca;
  border-top: 1px solid rgba(248, 113, 113, 0.55);
  border-bottom: 1px solid rgba(248, 113, 113, 0.55);
  border-left: 0;
  border-right: 0;
}

.btn-primary:hover,
.btn-secondary:hover,
/* Bar-style hover/focus: brighten the bars themselves rather than
   adding insets, halos, or background fills (which would re-create
   the filled-button look the user explicitly rejected). Green is
   the system-wide "interact" cue — applied consistently across
   primary, secondary, danger, and nav. Rest state is always muted. */
.btn-primary:hover,
.btn-primary:focus-visible,
.btn-secondary:hover,
.btn-secondary:focus-visible,
.nav-link:hover,
.nav-link:focus-visible {
  border-top-color: var(--apex-accent, #83E35D);
  border-bottom-color: var(--apex-accent, #83E35D);
  color: var(--apex-accent, #83E35D);
  background: transparent;
  box-shadow: none;
  outline: none;
}

.btn-danger:hover,
.btn-danger:focus-visible {
  border-top-color: rgba(248, 113, 113, 0.95);
  border-bottom-color: rgba(248, 113, 113, 0.95);
  color: #ffe4e6;
  background: transparent;
  box-shadow: none;
  outline: none;
}

.btn-primary:active,
.btn-secondary:active,
.btn-danger:active,
.nav-link:active {
  /* Brief inward press feedback — translate only, no shadow halo. */
  transform: translateY(1px);
  box-shadow: none;
}

.btn-primary:disabled,
.btn-secondary:disabled,
.btn-danger:disabled,
.nav-link:disabled {
  opacity: 0.48;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

.btn-primary:disabled::before,
.btn-secondary:disabled::before,
.btn-danger:disabled::before,
.nav-link:disabled::before {
  opacity: 0;
}

.nav-link.active {
  /* Active tab: bottom bar lights up to the accent green, text turns
     pure white. No background fill — the underline is the indicator. */
  background: transparent;
  border-bottom-color: var(--apex-accent, #83E35D);
  color: #eafff0;
}

.badge {
  background: rgba(114, 241, 161, 0.08);
  color: #bbf7d0;
  border: 1px solid rgba(114, 241, 161, 0.24);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.badge:not(button) {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  box-shadow: none !important;
}

.panel,
.home-hero-copy,
.home-photo-card,
.home-feature-card,
.home-story-card,
.product-card-premium,
.product-story-panel {
  border: 1px solid var(--line-soft);
  background: linear-gradient(180deg, rgba(20, 25, 23, 0.9), rgba(10, 13, 12, 0.94));
  box-shadow: var(--shadow-deep);
}

.site-header {
  position: sticky !important;
  top: 0 !important;
  z-index: 60 !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: visible;
  border-bottom: 1px solid rgba(171, 255, 193, 0.08);
  background: linear-gradient(180deg, rgba(9, 15, 12, 1), rgba(10, 16, 13, 1)) !important;
  backdrop-filter: blur(16px);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.22);
  isolation: isolate;
  padding-bottom: 0 !important;
}

.site-header::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -8px;
  bottom: 0;
  background: linear-gradient(180deg, rgba(9, 15, 12, 1), rgba(10, 16, 13, 1)) !important;
  pointer-events: none;
  z-index: 0;
}

.site-header::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -28px;
  height: 28px;
  background: linear-gradient(
    180deg,
    rgba(10, 16, 13, 0.98) 0%,
    rgba(10, 16, 13, 0.72) 55%,
    rgba(10, 16, 13, 0) 100%
  );
  pointer-events: none;
  z-index: 0;
}

.site-header-shell {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 1.25rem;
  padding-top: 0.65rem;
  padding-bottom: 0.65rem;
}

.site-header-logo {
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.site-header-brand-link {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  align-self: center;
  margin: 0;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.site-header-mark-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

.site-header-mark {
  display: block;
  height: 104px !important;
  width: auto !important;
  max-height: none !important;
  filter: none !important;
  transition: filter .2s ease, transform .2s ease;
}

.site-header-brand-link:hover .site-header-mark {
  filter: drop-shadow(0 10px 22px rgba(74, 222, 128, 0.26)) !important;
}

.site-header-text {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  gap: 0.22rem;
}

.site-header-title {
  font-size: clamp(2rem, 2.6vw, 3rem) !important;
  font-weight: 800 !important;
  letter-spacing: 0.06em !important;
  line-height: 0.92;
  text-transform: uppercase;
  color: #eafff3 !important;
  background: linear-gradient(90deg, #d1fae5, #4ade80);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 2px 12px rgba(74,222,128,0.15);
}

.site-header-subtitle {
  margin-top: 0.12rem !important;
  padding-left: 0 !important;
  color: #9fb0a6 !important;
  font-size: 0.82rem !important;
  letter-spacing: 0.18em !important;
  line-height: 1.2;
  text-transform: uppercase;
}

.site-header-subtitle::before {
  content: "";
  display: block;
  width: 72px;
  height: 2px;
  margin-bottom: 8px;
  border-radius: 999px;
  background: linear-gradient(90deg, #4ade80, transparent);
  box-shadow: 0 0 12px rgba(74,222,128,0.4);
}

.site-header-main {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  min-width: 0;
  gap: 0.5rem;
}

.site-header-nav {
  display: flex !important;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem !important;
  white-space: nowrap;
}

.site-header-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  align-self: start;
  margin-top: 0;
  gap: .55rem;
}

.site-header-shell,
.site-header-logo,
.site-header-main,
.site-header-actions,
.site-header-text,
.site-header-nav,
.site-header-brand-link,
.site-header-nav .nav-link {
  position: relative;
  z-index: 2;
}

.site-header-actions .badge,
.site-header-actions .btn-primary,
.site-header-actions .btn-secondary {
  min-height: 34px !important;
  padding: 0.42rem 0.8rem !important;
  font-size: 0.76rem !important;
  letter-spacing: 0.04em;
}

.site-header .btn-primary,
.site-header .btn-secondary {
  min-height: 40px;
}

main {
  position: relative;
  z-index: 1;
  padding-top: 0 !important;
}

.homepage-only {
  padding-top: 0 !important;
}

.home-hero-shell {
  gap: 1.25rem;
  align-items: stretch;
}

.home-hero-copy {
  padding: clamp(1.5rem, 2vw, 2.25rem);
}

.home-kicker {
  width: fit-content;
  max-width: 100%;
}

.home-title {
  max-width: 11ch;
}

.home-sub {
  color: #d4ddd7;
  max-width: 38rem;
}

.product-story-panel,
.demo-credentials {
  border: 1px solid rgba(119, 142, 126, 0.24);
  background: rgba(255, 255, 255, 0.03);
}

.home-photo-card {
  padding: 1.1rem;
}

.home-photo-frame {
  overflow: hidden;
  border-radius: 1rem;
}

.home-photo-image {
  min-height: 100%;
  transition: transform 0.4s ease;
}

.home-photo-card:hover .home-photo-image {
  transform: scale(1.015);
}

.home-feature-title,
.product-card-premium h3,
.product-story-panel h3 {
  color: #ecfff3;
}

.products-grid-premium {
  align-items: stretch;
}

.product-card-premium {
  display: flex;
  flex-direction: column;
  padding: 1.4rem;
}

.product-card-premium p,
.product-story-panel p,
.footer-copy {
  color: var(--text-muted);
  line-height: 1.8;
}

.product-card-premium ul {
  margin-bottom: 0;
  color: #dfe7e1;
}

.product-card-premium .btn-primary,
.product-card-premium .btn-secondary {
  margin-top: auto !important;
}

.product-card-price {
  margin-top: 0.85rem;
  color: #ecfff3;
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.01em;
}

.product-logbook-photo {
  border: 1px solid rgba(88, 104, 96, 0.26);
  border-radius: 1rem;
  overflow: hidden;
  background: rgba(0, 0, 0, 0.2);
}

.product-logbook-photo-image {
  display: block;
  width: 100%;
  height: auto;
}

.product-story-strip {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
  margin-top: 1rem;
}

.product-story-panel {
  border-radius: 1.5rem;
  padding: 1.4rem;
}

.product-story-panel h3 {
  font-size: 2rem;
  margin-bottom: 0.75rem;
}

.demo-credentials {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin-top: 1rem;
  border-radius: 1rem;
  padding: 1rem;
  color: #f0fdf4;
}

.field-input,
.field-select,
.field-textarea {
  background: rgba(255, 255, 255, 0.045);
  border-color: rgba(89, 122, 102, 0.95);
  font-family: "Manrope", sans-serif;
}

select option,
.field-select option {
  background: #101712;
  color: #f4fff4;
}

.site-footer {
  margin-top: 0;
  padding-top: 1rem;
  background: linear-gradient(180deg, rgba(8, 11, 10, 0), rgba(8, 11, 10, 0.92));
}

.footer-inner {
  padding-top: 1rem;
}

@media (max-width: 1050px) {
  .site-header-shell {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .site-header-main,
  .site-header-actions {
    align-items: flex-start;
  }

  .site-header-actions {
    justify-content: flex-start;
    align-self: flex-start;
  }

  .site-header-mark {
    height: 72px !important;
    width: auto !important;
  }

  .home-hero-shell,
  .home-feature-band,
  .home-story-grid,
  .product-story-strip,
  .products-grid-premium {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  main,
  .homepage-only {
    padding-top: 1.25rem !important;
  }

  .site-header-mark-wrap {
    width: 56px !important;
    height: 56px !important;
  }

  .site-header-mark {
    height: 56px !important;
    width: auto !important;
  }

  .site-header-title {
    font-size: 1.3rem !important;
  }

  .site-header-subtitle {
    font-size: 0.65rem !important;
    letter-spacing: 0.14em !important;
  }

  .home-title {
    font-size: clamp(2.3rem, 11vw, 3.3rem);
  }

  .home-proof-row {
    grid-template-columns: 1fr;
  }

  .product-story-panel h3 {
    font-size: 1.7rem;
  }
}

.account-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.account-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(340px, 0.9fr);
  gap: 1rem;
}

.account-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.account-form-grid.compact {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.account-checkbox {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  color: var(--text-muted);
  font-size: 0.95rem;
}

.account-checkbox input {
  width: 18px;
  height: 18px;
}

/* Beta opt-in row (Account Settings). The desktop web has no beta
   features yet, so the row renders greyed/disabled with "No current beta
   features"; the .is-on + enabled states are styled for when a web beta
   feature ships and the toggle becomes interactive. */
.beta-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.beta-row__label {
  font-size: 0.98rem;
  color: var(--text, #f4f4f5);
}
.beta-row--empty .beta-row__label {
  color: var(--text-muted, #9fb1a3);
}
/* "Beta Feedback" button on the opt-in line (visible while beta is on).
   Compact .btn-secondary variant; margin-left:auto pins it (and the
   switch after it) to the row's right edge. */
.beta-row__feedback {
  margin-left: auto;
  padding: 0.3rem 0.75rem;
  font-size: 0.8rem;
}
.beta-switch {
  position: relative;
  width: 44px;
  height: 24px;
  flex-shrink: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
  transition: background 0.15s ease;
  cursor: pointer;
  /* Rendered as a <button> when interactive — strip the native chrome. */
  border: none;
  padding: 0;
  margin: 0;
  appearance: none;
  -webkit-appearance: none;
}
.beta-switch::after {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #9fb1a3;
  transition: transform 0.15s ease, background 0.15s ease;
}
.beta-switch.is-on {
  background: rgba(52, 211, 153, 0.35);
}
.beta-switch.is-on::after {
  transform: translateX(20px);
  background: #34d399;
}
.beta-switch--disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Per-feature opt-in checkboxes, shown only while beta is enabled. */
.beta-feature-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  border-top: 1px solid rgba(119, 142, 126, 0.18);
  padding-top: 0.85rem;
}
.beta-feature {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  cursor: pointer;
}
.beta-feature input[type="checkbox"] {
  margin-top: 0.2rem;
  flex-shrink: 0;
}
.beta-feature__text {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}
.beta-feature__title {
  color: var(--text, #f4f4f5);
  font-size: 0.96rem;
}
.beta-feature__note {
  color: var(--text-muted, #9fb1a3);
  font-size: 0.82rem;
}

/* Inline disclaimer shown when the user flips the toggle on. Beta is
   only committed once "Enable beta" is pressed; "Cancel" re-renders the
   section with the toggle still off. */
.beta-disclaimer {
  margin-top: 0.85rem;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  border: 1px solid rgba(234, 179, 8, 0.4);
  background: rgba(234, 179, 8, 0.08);
}
.beta-disclaimer.is-hidden {
  display: none;
}
.beta-disclaimer__text {
  color: var(--text, #f4f4f5);
  font-size: 0.9rem;
  margin: 0 0 0.75rem;
}
.beta-disclaimer__actions {
  display: flex;
  gap: 0.6rem;
  justify-content: flex-end;
}

.account-card {
  border: 1px solid rgba(119, 142, 126, 0.24);
  background: rgba(255, 255, 255, 0.03);
  border-radius: 1.1rem;
  padding: 1rem;
}

.account-select {
  min-width: 150px;
}

.compact-adjustment-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.7rem;
  align-items: end;
}

.compact-label {
  font-size: 0.66rem !important;
  margin-bottom: 0.25rem !important;
}

.compact-select {
  padding: 0.42rem 0.58rem !important;
  font-size: 0.78rem !important;
  min-height: 34px !important;
}

.account-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 760px;
}

.account-table th,
.account-table td {
  padding: 0.85rem 0.95rem;
  border-bottom: 1px solid rgba(119, 142, 126, 0.2);
  text-align: left;
}

.account-table th {
  color: var(--text-soft);
  font-size: 0.76rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

#accountBadge {
  cursor: pointer;
}

@media (max-width: 1100px) {
  .account-grid,
  .account-layout,
  .account-form-grid,
  .account-form-grid.compact {
    grid-template-columns: 1fr;
  }
}

.firearm-browser {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.firearm-list-item {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 0.75rem;
  border: 1px solid rgba(119, 142, 126, 0.24);
  background: rgba(255, 255, 255, 0.03);
  border-radius: 1rem;
  overflow: hidden;
}

.firearm-list-item.active {
  border-color: rgba(114, 241, 161, 0.45);
  box-shadow: inset 0 0 0 1px rgba(114, 241, 161, 0.15);
}

.firearm-list-select {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  text-align: left;
  padding: 1rem 1.1rem;
  background: transparent;
  border: 0;
  color: var(--text-main);
}

.firearm-list-copy {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.firearm-list-title {
  font-weight: 800;
  font-size: 1rem;
}

.firearm-list-meta {
  color: var(--text-muted);
  font-size: 0.88rem;
}

.firearm-list-actions {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.75rem 0.85rem 0.75rem 0;
}

.firearm-list-session-action {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  align-self: center;
  flex: 0 0 auto;
  padding: 0.5rem 0.68rem 0.5rem 0;
}

.firearm-move-btn {
  min-height: 36px !important;
  min-width: 36px;
  padding: 0.35rem 0.55rem !important;
}

.firearm-move-btn[disabled] {
  opacity: 0.45;
  cursor: not-allowed;
}

.firearm-barrel-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.barrel-transfer-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.barrel-transfer-item {
  display: flex;
  align-items: flex-start;
  gap: 0.8rem;
  border: 1px solid rgba(119, 142, 126, 0.24);
  background: rgba(255, 255, 255, 0.03);
  border-radius: 1rem;
  padding: 0.9rem 1rem;
  color: var(--text-main);
}

.barrel-transfer-item input {
  width: 18px;
  height: 18px;
  margin-top: 0.15rem;
}

.barrel-transfer-item span {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.barrel-transfer-item small {
  color: var(--text-muted);
  font-size: 0.82rem;
}

/* --- Global button size normalization --- */
.btn-primary,
.btn-secondary,
.btn-danger,
.btn-danger-text {
  min-height: 34px !important;
  padding: 0.42rem 0.8rem !important;
  font-size: 0.76rem !important;
  letter-spacing: 0.04em !important;
  /* Bar style — matches the Flutter app's flat, no-radius buttons. */
  border-radius: 0 !important;
  font-weight: 800 !important;
  text-transform: uppercase;
}

.btn-danger-text {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* Bar style — matching the rest of the button system. Was a full
     1px border with subtle background fill; converted to top + bottom
     red bars only (no left/right border, no fill). */
  background: transparent;
  border: 0;
  border-top: 1px solid rgba(248, 113, 113, 0.55);
  border-bottom: 1px solid rgba(248, 113, 113, 0.55);
  color: #fecaca !important;
  text-decoration: none;
}

.btn-danger-text:hover,
.btn-danger-text:focus-visible {
  /* Brighten the bars + text on hover, no fill, no box-shadow halo
     (which only made sense on the old filled-button look). */
  color: #ffe4e6 !important;
  border-top-color: rgba(248, 113, 113, 0.85);
  border-bottom-color: rgba(248, 113, 113, 0.85);
  background: transparent;
  outline: none;
}

.single-shot-layout {
  display: grid;
  grid-template-columns: minmax(300px, 0.9fr) minmax(0, 1.1fr);
  gap: 1rem;
  align-items: start;
}

.single-shot-stack {
  display: grid;
  gap: 1rem;
}

.single-shot-panel,
.single-shot-results {
  border: 1px solid rgba(119, 142, 126, 0.24);
  background: linear-gradient(180deg, rgba(18, 24, 21, 0.92), rgba(10, 13, 12, 0.96));
  border-radius: 1.4rem;
  padding: 1.2rem;
}

.single-shot-panel-header,
.single-shot-hero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}

.single-shot-eyebrow {
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  margin-bottom: 0.35rem;
}

.single-shot-heading {
  font-size: 2rem;
  line-height: 0.95;
  margin: 0;
}

.single-shot-subcopy {
  color: var(--text-muted);
  line-height: 1.75;
  margin-top: 0.55rem;
}

.single-shot-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.single-shot-fields.wide {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.solver-source-row {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) minmax(260px, 1fr);
  gap: 1rem;
  align-items: end;
}

.solver-source-note {
  min-height: 100%;
  border: none;
  background: transparent;
  border-radius: 0;
  padding: 0;
  color: var(--text-muted);
  line-height: 1.3;
  font-size: 0.82rem;
  white-space: nowrap;
  display: flex;
  align-items: center;
  overflow: hidden;
  text-overflow: ellipsis;
}

.solver-setup-layout {
  display: block;
}

.solver-input-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.9rem;
}

.solver-toggle-card {
  border: none;
  background: transparent;
  border-radius: 0;
  min-height: 0;
  display: flex;
  align-items: center;
  padding: 0;
}

.single-shot-conditions {
  display: grid;
  gap: 0.75rem;
  margin-top: 1rem;
}

.single-shot-condition {
  border: 1px solid rgba(119, 142, 126, 0.2);
  background: rgba(255, 255, 255, 0.03);
  border-radius: 1rem;
  padding: 0.9rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.single-shot-condition-label {
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.7rem;
}

.single-shot-condition small {
  color: var(--text-muted);
  font-size: 0.82rem;
}

.single-shot-range-chip {
  border: 1px solid rgba(114, 241, 161, 0.24);
  background: rgba(114, 241, 161, 0.08);
  color: #eafff0;
  border-radius: 999px;
  padding: 0.5rem 0.85rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  white-space: nowrap;
}

.single-shot-solution-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.single-shot-solution-card {
  border-radius: 1.25rem;
  padding: 1.2rem;
  border: 1px solid rgba(114, 241, 161, 0.22);
  box-shadow: inset 0 0 0 1px rgba(114, 241, 161, 0.05);
}

.single-shot-solution-card.elevation {
  background: radial-gradient(circle at top, rgba(114, 241, 161, 0.12), transparent 58%), rgba(6, 11, 9, 0.72);
}

.single-shot-solution-card.wind {
  background: radial-gradient(circle at top, rgba(148, 197, 255, 0.12), transparent 58%), rgba(6, 11, 9, 0.72);
}

.single-shot-label {
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.72rem;
  margin-bottom: 0.7rem;
}

.single-shot-value {
  font-family: "Barlow Condensed", sans-serif;
  font-size: clamp(3.2rem, 7vw, 5rem);
  line-height: 0.9;
  color: #f2fff7;
}

.single-shot-value.with-direction {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 0.45rem;
}

.single-shot-value.is-negative {
  color: #ff7b7b;
}

.single-shot-unit {
  margin-top: 0.45rem;
  color: #d8fbe5;
  font-size: 1rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.single-shot-direction {
  color: #f2fff7;
  font-size: 0.52em;
  font-weight: 900;
  line-height: 1;
  transform: translateY(-0.03em);
}

.single-shot-meta {
  margin-top: 0.85rem;
  color: var(--text-muted);
  line-height: 1.6;
  font-size: 0.9rem;
}

.single-shot-secondary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.8rem;
  margin-top: 1rem;
}

.single-shot-stat {
  border: 1px solid rgba(119, 142, 126, 0.2);
  background: rgba(255, 255, 255, 0.03);
  border-radius: 1rem;
  padding: 0.85rem 0.95rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.single-shot-stat span {
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.7rem;
}

.single-shot-stat strong {
  color: var(--text-main);
  font-size: 1rem;
}

@media (max-width: 1100px) {
  .solver-source-row,
  .solver-input-grid,
  .single-shot-fields.wide,
  .single-shot-layout,
  .single-shot-solution-grid,
  .single-shot-secondary-grid,
  .single-shot-fields {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .solver-source-row,
  .solver-input-grid,
  .single-shot-fields.wide,
  .single-shot-layout,
  .single-shot-solution-grid,
  .single-shot-secondary-grid,
  .single-shot-fields {
    grid-template-columns: 1fr;
  }
}

/* --- Final control scale pass --- */
.field-label {
  font-size: 0.75rem !important;
  margin-bottom: 0.35rem !important;
}

.field-input,
.field-select,
.field-textarea {
  border-radius: 0.8rem !important;
  padding: 0.56rem 0.72rem !important;
  font-size: 0.9rem !important;
}

.field-textarea {
  min-height: 78px !important;
}

main .btn-primary,
main .btn-secondary,
main .btn-danger,
main .btn-danger-text,
#authModal .btn-primary,
#authModal .btn-secondary,
#sessionCreateModal .btn-primary,
#sessionCreateModal .btn-secondary,
#addFirearmModal .btn-primary,
#addFirearmModal .btn-secondary,
#barrelChangeModal .btn-primary,
#barrelChangeModal .btn-secondary,
#developmentNoticeModal .btn-primary,
#developmentNoticeModal .btn-secondary,
#contactWidgetMount .btn-primary {
  min-height: 30px !important;
  padding: 0.34rem 0.68rem !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.035em !important;
}

main .btn-primary,
#authModal .btn-primary,
#sessionCreateModal .btn-primary,
#addFirearmModal .btn-primary,
#barrelChangeModal .btn-primary,
#developmentNoticeModal .btn-primary,
#compareModal .btn-primary,
#contactWidgetMount .btn-primary {
  /* Modal + page primaries — muted bars + white text at rest, green
     on hover. Same rest-state as secondary across the whole system;
     green is the universal "interact" cue. */
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  border-top: 1px solid rgba(143, 156, 149, 0.40) !important;
  border-bottom: 1px solid rgba(143, 156, 149, 0.40) !important;
  border-radius: 0 !important;
  color: var(--text-main) !important;
  box-shadow: none !important;
}

main .btn-primary:hover,
main .btn-primary:focus-visible,
#authModal .btn-primary:hover,
#authModal .btn-primary:focus-visible,
#sessionCreateModal .btn-primary:hover,
#sessionCreateModal .btn-primary:focus-visible,
#addFirearmModal .btn-primary:hover,
#addFirearmModal .btn-primary:focus-visible,
#barrelChangeModal .btn-primary:hover,
#barrelChangeModal .btn-primary:focus-visible,
#developmentNoticeModal .btn-primary:hover,
#developmentNoticeModal .btn-primary:focus-visible,
#compareModal .btn-primary:hover,
#compareModal .btn-primary:focus-visible,
#contactWidgetMount .btn-primary:hover,
#contactWidgetMount .btn-primary:focus-visible {
  border-top-color: var(--apex-accent, #83E35D) !important;
  border-bottom-color: var(--apex-accent, #83E35D) !important;
  color: var(--apex-accent, #83E35D) !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: none !important;
}

main .btn-primary:active,
#authModal .btn-primary:active,
#sessionCreateModal .btn-primary:active,
#addFirearmModal .btn-primary:active,
#barrelChangeModal .btn-primary:active,
#developmentNoticeModal .btn-primary:active,
#compareModal .btn-primary:active,
#contactWidgetMount .btn-primary:active {
  transform: translateY(1px);
  box-shadow: none !important;
}

.solver-tab-button {
  min-width: 132px;
}

.solver-tab-button.nav-link.active {
  box-shadow:
    0 10px 24px rgba(0,0,0,.2),
    0 0 0 1px rgba(74,222,128,.12) inset;
}

#page-logbook .panel,
#page-logbook .stat-card,
#page-logbook .summary-item,
#page-firearms .panel,
#page-firearms .stat-card,
#page-firearms .summary-item,
#page-solver .panel,
#page-solver .stat-card,
#page-solver .summary-item,
#page-solver .single-shot-panel,
#page-solver .single-shot-results {
  border: none !important;
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

#page-logbook .badge,
#page-firearms .badge,
#page-solver .badge,
#page-solver .solver-mode-pill {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
}

#page-logbook,
#page-firearms,
#page-solver {
  --app-divider: rgba(119, 142, 126, 0.2);
}

#page-logbook .panel,
#page-firearms .panel,
#page-solver .panel,
#page-solver .single-shot-panel,
#page-solver .single-shot-results {
  padding: 0 !important;
}

#page-logbook .panel + .panel,
#page-firearms .panel + .panel,
#page-solver .panel + .panel {
  margin-top: 1.35rem;
}

#page-logbook .summary-item,
#page-firearms .summary-item,
#page-solver .summary-item,
#page-logbook .stat-card,
#page-firearms .stat-card,
#page-solver .stat-card {
  padding: 0.72rem 0 !important;
  border-top: 1px solid var(--app-divider) !important;
}

#page-logbook .summary-item:first-child,
#page-firearms .summary-item:first-child,
#page-solver .summary-item:first-child,
#page-logbook .stat-card:first-child,
#page-firearms .stat-card:first-child,
#page-solver .stat-card:first-child {
  border-top: none !important;
  padding-top: 0 !important;
}

/*
 * Firearm overview stat grid (Cartridge/Caliber/Barrel Length/...).
 * The :first-child rule above strips border-top + padding-top so the
 * first item in a single-column list sits flush with whatever section
 * header is above it. That's the right call for one-column layouts,
 * but in this two-column grid it makes the first cell (Cartridge) sit
 * 0.72rem higher than its row-mate (Caliber), which has the standard
 * border-top from the #page-firearms .stat-card rule. Re-establish
 * the standard treatment for the first child here so the row aligns.
 *
 * Targeted by the .firearm-overview-stats-grid class added to the
 * grid wrapper in renderFirearmsPage — keep the class in sync if
 * the markup ever changes.
 */
#page-firearms .firearm-overview-stats-grid .stat-card:first-child {
  border-top: 1px solid var(--app-divider) !important;
  padding-top: 0.72rem !important;
}

#page-logbook .grid,
#page-firearms .grid,
#page-solver .grid {
  row-gap: 0.85rem;
}

#page-logbook .flex.items-center.justify-between,
#page-logbook .flex.flex-wrap.items-center.justify-between,
#page-firearms .flex.items-center.justify-between,
#page-firearms .flex.flex-wrap.items-center.justify-between,
#page-solver .flex.items-center.justify-between,
#page-solver .flex.flex-wrap.items-center.justify-between {
  margin-bottom: 0.7rem;
}

#page-logbook .logbook-header-row {
  margin-bottom: 0.35rem;
}

#page-logbook .logbook-action-row {
  margin-bottom: 0.4rem;
}

#page-logbook .logbook-active-session section + section {
  padding-top: 1rem;
  border-top: 1px solid var(--app-divider);
}

#page-logbook .logbook-active-session .field-label {
  margin-bottom: 0.28rem;
}

#page-logbook .logbook-active-session .field-input,
#page-logbook .logbook-active-session .field-select,
#page-logbook .logbook-active-session textarea.field-input {
  min-height: 38px;
}

#page-logbook .table-scroll,
#page-firearms .table-scroll,
#page-solver .table-scroll {
  margin-top: 1rem;
}

#page-firearms .barrel-transfer-list,
#page-firearms .account-table,
#page-solver .single-shot-solution-grid,
#page-solver .single-shot-secondary-grid,
#page-solver .single-shot-conditions {
  margin-top: 1rem;
}

#page-solver .single-shot-panel-header,
#page-solver .single-shot-hero {
  margin-bottom: 1.1rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--app-divider);
}

#page-solver .solver-source-row,
#page-solver .solver-input-grid,
#page-solver .single-shot-fields.wide,
#page-solver .single-shot-fields {
  gap: 0.9rem 1rem;
}

#page-solver .single-shot-layout {
  gap: 1.75rem;
}

#page-logbook .demo-credentials,
#page-firearms .demo-credentials,
#page-solver .demo-credentials {
  margin-top: 1rem;
}

@media (max-width: 760px) {
  #page-logbook .panel + .panel,
  #page-firearms .panel + .panel,
  #page-solver .panel + .panel {
    margin-top: 1.5rem;
  }

  #page-solver .single-shot-layout {
    gap: 1.25rem;
  }
}

.solver-page {
  max-width: 100%;
}

.solver-page-header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
}

.solver-page-kicker {
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(186, 218, 166, 0.72);
  margin-bottom: 0.45rem;
}

.solver-page-title {
  margin: 0;
  font-size: clamp(2rem, 4vw, 3rem);
  line-height: 0.98;
  font-weight: 700;
}

.solver-page-copy {
  margin: 0.6rem 0 0;
  max-width: 48rem;
  color: rgba(228, 232, 226, 0.7);
  line-height: 1.6;
}

.inline-unit-wrap {
  margin-top: 0.55rem;
}

.inline-unit-select {
  width: 84px;
}

@media (max-width: 860px) {
  .solver-page-header {
    align-items: start;
  }

}

/* --- Home rebuild source block --- */
.home-canvas {
  display: grid;
  gap: 2.2rem;
}

.home-cinema {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(380px, 0.9fr);
  gap: 1.75rem;
  align-items: end;
}

.home-cinema-copy {
  padding: 1.2rem 0 0.6rem;
}

.home-cinema-kicker {
  color: #8dd6a7;
  font-size: 0.76rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.22em;
}

.home-cinema-title {
  margin-top: 0.8rem;
  max-width: 10ch;
  font-size: clamp(3.25rem, 6vw, 5.5rem);
  line-height: 0.9;
  color: #f8fffb;
}

.home-cinema-title span {
  display: block;
  color: #78f1a1;
  text-shadow: 0 0 34px rgba(120, 241, 161, 0.16);
}

.home-cinema-sub {
  max-width: 43rem;
  margin-top: 1.15rem;
  color: #d2dad5;
  font-size: 1.04rem;
  line-height: 1.9;
}

.home-cinema-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  margin-top: 1.4rem;
}

.home-cinema-visual {
  min-width: 0;
}

.home-cinema-frame {
  position: relative;
  min-height: 560px;
  overflow: hidden;
  border-radius: 1.75rem;
  border: 1px solid rgba(68, 77, 72, 0.9);
  background: #090b0a;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.3);
}

.home-cinema-image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.home-cinema-overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(5, 10, 8, 0.08), rgba(5, 10, 8, 0.58)),
    radial-gradient(circle at 72% 18%, rgba(92, 245, 152, 0.18), transparent 30%);
}

.home-cinema-caption {
  position: absolute;
  left: 1.35rem;
  right: 1.35rem;
  bottom: 1.35rem;
  padding: 1rem 1.1rem;
  border-top: 1px solid rgba(138, 154, 145, 0.25);
  background: linear-gradient(180deg, rgba(7, 10, 9, 0), rgba(7, 10, 9, 0.72));
}

.home-cinema-caption-label {
  color: #9fd7b2;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
}

.home-cinema-caption-title {
  margin-top: 0.45rem;
  color: #f4fff8;
  font-size: 1.2rem;
  font-weight: 800;
  line-height: 1.4;
  max-width: 20ch;
}

.home-rail {
  padding-top: 0.4rem;
}

.home-rail-intro {
  max-width: 48rem;
}

.home-rail-title,
.home-editorial-title,
.home-approach-title {
  margin-top: 0.35rem;
  color: #f6fffa;
  font-size: clamp(1.9rem, 3vw, 2.8rem);
  line-height: 1.04;
}

.home-rail-track {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.3rem;
  margin-top: 1.35rem;
  padding-top: 1.2rem;
  border-top: 1px solid rgba(83, 93, 88, 0.28);
}

.home-rail-step {
  position: relative;
  padding-top: 1.1rem;
}

.home-rail-step::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 54px;
  height: 1px;
  background: linear-gradient(90deg, rgba(119, 240, 161, 0.72), rgba(119, 240, 161, 0));
}

.home-rail-number {
  color: #7bf0a5;
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.22em;
}

.home-rail-step h3,
.home-approach-item h3,
.home-editorial-column h3 {
  margin-top: 0.75rem;
  color: #f3fff7;
  font-size: 1rem;
  font-weight: 800;
}

.home-rail-step p,
.home-editorial-copy,
.home-editorial-column p,
.home-approach-item p {
  margin-top: 0.55rem;
  color: #aeb7b1;
  font-size: 0.95rem;
  line-height: 1.8;
}

.home-editorial {
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(260px, 0.82fr);
  gap: 1.5rem;
  align-items: start;
}

.home-editorial-main {
  padding: 1.5rem 1.6rem 1.7rem 0;
}

.home-editorial-copy {
  max-width: 52rem;
}

.home-editorial-split {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
  margin-top: 1.3rem;
}

.home-editorial-aside {
  padding: 1.15rem 0 0 1.35rem;
  border-left: 1px solid rgba(84, 97, 90, 0.26);
}

.home-editorial-aside-row {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.95rem 0;
  border-top: 1px solid rgba(84, 97, 90, 0.18);
}

.home-editorial-aside-row:first-child {
  padding-top: 0;
  border-top: 0;
}

.home-editorial-aside-label {
  color: #8ca896;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.16em;
}

.home-editorial-aside-value {
  color: #f3fff7;
  font-size: 1rem;
  font-weight: 700;
}

.home-approach {
  display: grid;
  grid-template-columns: minmax(260px, 0.8fr) minmax(0, 1.2fr);
  gap: 1.5rem;
  align-items: start;
  padding-top: 0.5rem;
}

.home-approach-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.home-approach-item {
  padding-top: 1rem;
  border-top: 1px solid rgba(84, 97, 90, 0.22);
}

@media (max-width: 1200px) {
  .home-cinema,
  .home-editorial,
  .home-approach,
  .home-rail-track,
  .home-approach-grid {
    grid-template-columns: 1fr;
  }

  .home-editorial-aside {
    padding: 0;
    border-left: 0;
    border-top: 1px solid rgba(84, 97, 90, 0.26);
  }
}

@media (max-width: 768px) {
  .home-cinema-title {
    font-size: clamp(2.5rem, 12vw, 3.9rem);
  }

  .home-cinema-frame {
    min-height: 420px;
    border-radius: 1.2rem;
  }

  .home-editorial-main {
    padding-right: 0;
  }

  .home-editorial-split {
    grid-template-columns: 1fr;
  }
}

/* --- Logbooks page rebuild --- */
.logbooks-showcase {
  display: grid;
  gap: 1.15rem;
}

.logbooks-manifest {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
  gap: 1.2rem;
  align-items: start;
  padding-bottom: 1rem;
  border-bottom: 1px solid rgba(88, 104, 96, 0.22);
}

.logbooks-manifest-copy {
  min-width: 0;
}

.logbooks-manifest-title {
  margin-top: 0.35rem;
  max-width: 16ch;
  color: #f7fff9;
  font-size: clamp(2.25rem, 4.2vw, 3.6rem);
  line-height: 1;
  letter-spacing: -0.02em;
}

.logbooks-manifest-sub {
  margin-top: 0.9rem;
  max-width: 42rem;
  color: #d1d9d4;
  line-height: 1.72;
  font-size: 1rem;
}

.logbooks-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  margin-top: 1.1rem;
}

.logbooks-manifest-aside {
  display: grid;
  gap: 0.85rem;
  align-content: start;
}

.logbooks-manifest-strap {
  color: #8db79c;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}

.logbooks-manifest-note {
  color: #f3fff7;
  font-size: clamp(1.2rem, 2vw, 1.65rem);
  line-height: 1.18;
  max-width: 18ch;
}

.logbooks-manifest-list {
  display: grid;
  gap: 0.65rem;
}

.logbooks-manifest-item {
  padding-top: 0.75rem;
  border-top: 1px solid rgba(88, 104, 96, 0.18);
}

.logbooks-manifest-item span {
  display: block;
  color: #74f0a4;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.2em;
}

.logbooks-manifest-item strong {
  display: block;
  margin-top: 0.38rem;
  color: #eef8f1;
  font-size: 0.96rem;
  line-height: 1.46;
}

.logbooks-flow {
  display: grid;
  gap: 0.85rem;
  padding: 0.2rem 0 0.2rem;
}

.logbooks-flow h3 {
  color: #f5fff8;
  font-size: clamp(1.5rem, 2.4vw, 2.05rem);
  line-height: 1.05;
  max-width: 17ch;
}

.logbooks-flow-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.logbooks-flow-step {
  padding-top: 0.8rem;
  border-top: 1px solid rgba(88, 104, 96, 0.22);
}

.logbooks-flow-step span {
  display: block;
  color: #74f0a4;
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.2em;
}

.logbooks-flow-step strong {
  display: block;
  margin-top: 0.48rem;
  color: #f3fff7;
  font-size: 1rem;
  line-height: 1.32;
}

.logbooks-flow-step p {
  margin-top: 0.5rem;
  color: #aab4ae;
  font-size: 0.95rem;
  line-height: 1.7;
}

.logbooks-lineup {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.logbook-feature-card {
  display: flex;
  flex-direction: column;
  padding: 1.35rem;
  border: 1px solid rgba(72, 82, 77, 0.62);
  border-radius: 1.2rem;
  background:
    radial-gradient(circle at top right, rgba(34, 197, 94, 0.05), transparent 34%),
    linear-gradient(180deg, rgba(18, 22, 20, 0.82), rgba(10, 10, 12, 0.92));
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.18);
}

.logbook-feature-card-primary {
  border-color: rgba(88, 231, 137, 0.24);
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.22);
}

.logbook-feature-card-combined {
  background:
    radial-gradient(circle at top right, rgba(94, 244, 151, 0.16), transparent 34%),
    linear-gradient(180deg, rgba(17, 23, 20, 0.96), rgba(10, 10, 12, 0.98));
}

.logbook-feature-card-longrange {
  background:
    radial-gradient(circle at top right, rgba(92, 173, 255, 0.14), transparent 34%),
    linear-gradient(180deg, rgba(17, 21, 24, 0.95), rgba(10, 10, 12, 0.98));
}

.logbook-feature-card-reloading {
  background:
    radial-gradient(circle at top right, rgba(255, 191, 99, 0.15), transparent 34%),
    linear-gradient(180deg, rgba(23, 21, 18, 0.95), rgba(10, 10, 12, 0.98));
}

.logbook-feature-card-digital {
  background:
    radial-gradient(circle at top right, rgba(143, 125, 255, 0.14), transparent 34%),
    linear-gradient(180deg, rgba(18, 20, 25, 0.95), rgba(10, 10, 12, 0.98));
}

.logbook-feature-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding-bottom: 0.9rem;
  border-bottom: 1px solid rgba(95, 108, 101, 0.16);
}

.logbook-feature-tag {
  color: #9ad4ae;
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
}

.logbook-feature-card-longrange .logbook-feature-tag {
  color: #a9d9ff;
}

.logbook-feature-card-reloading .logbook-feature-tag {
  color: #ffd39a;
}

.logbook-feature-card-digital .logbook-feature-tag {
  color: #c8c2ff;
}

.logbook-feature-price {
  color: #dff2e4;
  font-size: 0.88rem;
  font-weight: 800;
}

.logbook-feature-card h3 {
  margin-top: 1rem;
  color: #f6fff9;
  font-size: 1.28rem;
  font-weight: 800;
  line-height: 1.22;
  max-width: 18ch;
}

.logbook-feature-card p,
.logbooks-editorial-main p {
  margin-top: 0.8rem;
  color: #b4bdb8;
  line-height: 1.82;
  font-size: 0.95rem;
}

.logbook-feature-card ul {
  margin-top: 1.05rem;
  padding-left: 1rem;
  color: #e3eae5;
  font-size: 0.92rem;
}

.logbook-feature-card li + li {
  margin-top: 0.52rem;
}

.logbook-feature-card .btn-primary,
.logbook-feature-card .btn-secondary {
  margin-top: auto !important;
}

.logbooks-recommendation {
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
  gap: 1rem;
  padding-top: 0.55rem;
  border-top: 1px solid rgba(88, 104, 96, 0.22);
}

.logbooks-recommendation-copy h3 {
  margin-top: 0.35rem;
  color: #f5fff8;
  font-size: clamp(1.2rem, 2vw, 1.5rem);
  line-height: 1.14;
  max-width: 24ch;
}

.logbooks-recommendation-copy p {
  margin-top: 0.7rem;
  color: #b4bdb8;
  font-size: 0.93rem;
  line-height: 1.74;
}

.logbooks-recommendation-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}

.logbooks-recommendation-item {
  padding: 0.9rem 1rem;
  border-top: 1px solid rgba(93, 111, 100, 0.2);
}

.logbooks-recommendation-item span {
  display: block;
  color: #94ab9d;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.16em;
}

.logbooks-recommendation-item strong {
  display: block;
  margin-top: 0.42rem;
  color: #f3fff7;
  font-size: 0.98rem;
  font-weight: 700;
}

@media (max-width: 1200px) {
  .logbooks-manifest,
  .logbooks-flow-grid,
  .logbooks-recommendation,
  .logbooks-lineup,
  .logbooks-recommendation-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .logbooks-manifest-title {
    font-size: clamp(1.85rem, 10vw, 2.55rem);
  }

  .logbook-feature-card {
    border-radius: 1.15rem;
  }
}

/* --- Logbook detail refresh --- */
.product-detail-shell {
  display: grid;
  gap: 1.4rem;
}

.product-detail-hero,
.product-detail-panel {
  border: 1px solid rgba(64, 73, 68, 0.88);
  border-radius: 1.5rem;
  background: linear-gradient(180deg, rgba(18, 22, 20, 0.92), rgba(10, 10, 12, 0.96));
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.24);
}

.product-detail-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(280px, 0.9fr);
  gap: 1.35rem;
  padding: 1.45rem;
}

.product-detail-longrange {
  background:
    radial-gradient(circle at top right, rgba(90, 173, 255, 0.12), transparent 34%),
    linear-gradient(180deg, rgba(18, 22, 20, 0.94), rgba(10, 10, 12, 0.98));
}

.product-detail-reloading {
  background:
    radial-gradient(circle at top right, rgba(255, 190, 92, 0.16), transparent 34%),
    linear-gradient(180deg, rgba(22, 20, 17, 0.94), rgba(10, 10, 12, 0.98));
}

.product-detail-combined {
  background:
    radial-gradient(circle at top right, rgba(111, 240, 163, 0.16), transparent 34%),
    linear-gradient(180deg, rgba(17, 23, 20, 0.95), rgba(10, 10, 12, 0.98));
}

.product-detail-digital {
  background:
    radial-gradient(circle at top right, rgba(138, 125, 255, 0.14), transparent 34%),
    linear-gradient(180deg, rgba(17, 20, 24, 0.95), rgba(10, 10, 12, 0.98));
}

.product-detail-tag {
  display: inline-flex;
  align-items: center;
  color: #bdf7cf;
  font-size: 0.74rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
}

.product-detail-title {
  color: #f7fff9;
  font-size: clamp(2.25rem, 4.8vw, 4rem);
  line-height: 0.98;
  max-width: 14ch;
}

.product-detail-sub {
  margin-top: 0.95rem;
  max-width: 47rem;
  color: #d0dad4;
  line-height: 1.85;
  font-size: 1rem;
}

.product-detail-side,
.product-detail-photo {
  align-self: stretch;
}

.product-detail-side {
  padding: 1.15rem;
  border-radius: 1.2rem;
  border: 1px solid rgba(93, 110, 101, 0.22);
  background: rgba(8, 13, 10, 0.68);
}

.product-detail-side-label {
  color: #98cda9;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
}

.product-detail-side-value {
  margin-top: 0.6rem;
  color: #f3fff7;
  font-size: 1.16rem;
  font-weight: 800;
  line-height: 1.35;
}

.product-detail-side p {
  margin-top: 0.65rem;
  color: #aeb7b1;
  line-height: 1.75;
}

.product-detail-photo {
  overflow: hidden;
  border-radius: 1.2rem;
  border: 1px solid rgba(93, 110, 101, 0.22);
}

.product-detail-photo-image {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 100%;
  object-fit: cover;
}

.product-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.product-detail-panel {
  padding: 1.35rem;
}

.product-detail-panel h3 {
  margin-top: 0.35rem;
  color: #f4fff8;
  font-size: 1.75rem;
  line-height: 1.08;
}

@media (max-width: 1200px) {
  .product-detail-hero,
  .product-detail-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 768px) {
  .product-detail-hero,
  .product-detail-panel {
    border-radius: 1.15rem;
  }

  .product-detail-hero {
    padding: 1.15rem;
  }

  .product-detail-title {
    font-size: clamp(1.9rem, 10vw, 3rem);
  }
}

.search-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 6.5rem 1.25rem 1.5rem;
  background: rgba(0, 0, 0, 0.72);
  backdrop-filter: blur(12px);
}

.search-modal-shell {
  width: min(920px, 100%);
  max-height: calc(100vh - 8rem);
  padding: 1.15rem;
  display: flex;
  flex-direction: column;
  gap: 0.95rem;
  overflow: hidden;
  border: 1px solid rgba(119, 142, 126, 0.28);
  background: linear-gradient(180deg, rgba(18, 24, 21, 0.98), rgba(10, 13, 12, 0.98));
}

.search-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}

.search-modal-title {
  font-size: 1.35rem;
  font-weight: 700;
  color: #f7fff8;
}

.search-modal-subtitle {
  margin-top: 0.2rem;
  color: rgba(214, 222, 217, 0.72);
  font-size: 0.92rem;
}

.search-modal-esc,
.search-modal-hint {
  flex: 0 0 auto;
  border: 1px solid rgba(143, 156, 149, 0.24);
  border-radius: 999px;
  padding: 0.3rem 0.65rem;
  color: rgba(214, 222, 217, 0.72);
  font-size: 0.76rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.search-modal-input-wrap {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.search-modal-input {
  min-height: 50px;
  font-size: 1rem !important;
}

.search-modal-results {
  display: grid;
  gap: 1rem;
  overflow: auto;
  padding-right: 0.15rem;
}

.search-group {
  display: grid;
  gap: 0.45rem;
}

.search-group-label {
  color: #9ee6bd;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.search-group-list {
  display: grid;
  gap: 0.45rem;
}

.search-result-row {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  text-align: left;
  padding: 0.95rem 1rem;
  border-radius: 1rem;
  border: 1px solid rgba(119, 142, 126, 0.18);
  background: rgba(255, 255, 255, 0.03);
  transition: border-color 0.18s ease, background 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
}

.search-result-row:hover,
.search-result-row:focus-visible {
  border-color: rgba(134, 239, 172, 0.42);
  background: rgba(134, 239, 172, 0.08);
  box-shadow: 0 18px 34px rgba(0, 0, 0, 0.22);
  transform: translateY(-1px);
  outline: none;
}

.search-result-copy {
  display: grid;
  gap: 0.22rem;
  min-width: 0;
}

.search-result-title {
  color: #f7fff8;
  font-size: 1rem;
  font-weight: 700;
}

.search-result-meta {
  color: rgba(214, 222, 217, 0.72);
  font-size: 0.9rem;
  line-height: 1.45;
}

.search-result-badge {
  flex: 0 0 auto;
  border: 1px solid rgba(134, 239, 172, 0.24);
  border-radius: 999px;
  padding: 0.34rem 0.72rem;
  color: #d2ffd9;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: rgba(134, 239, 172, 0.08);
}

.search-empty-state {
  padding: 1.15rem 0.5rem 0.25rem;
  text-align: center;
}

.search-empty-title {
  color: #f7fff8;
  font-size: 1rem;
  font-weight: 700;
}

.search-empty-copy {
  margin-top: 0.35rem;
  color: rgba(214, 222, 217, 0.72);
}

@media (max-width: 820px) {
  .search-modal-overlay {
    padding-top: 5.75rem;
  }

  .search-modal-shell {
    max-height: calc(100vh - 6.75rem);
    padding: 0.9rem;
  }

  .search-modal-input-wrap {
    flex-direction: column;
    align-items: stretch;
  }

  .search-modal-hint {
    align-self: flex-start;
  }

  .search-result-row {
    align-items: flex-start;
    flex-direction: column;
  }
}

#page-logbook .logbook-active-session,
#page-firearms .logbook-active-session,
#page-firearms .firearms-compact-page {
  max-width: 98rem !important;
}

#page-logbook .logbook-active-session > .panel > .p-4.space-y-6,
#page-firearms .logbook-active-session > .panel > .p-4.space-y-6 {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(320px, 0.95fr);
  gap: 0.5rem;
  align-items: start;
}

#page-logbook .logbook-active-session.workflow-session-linear > .panel > .p-4.space-y-6,
#page-firearms .logbook-active-session.workflow-session-linear > .panel > .p-4.space-y-6 {
  grid-template-columns: 1fr;
}

#page-logbook .logbook-active-session.workflow-session-linear > .panel > .p-4.space-y-6,
#page-firearms .logbook-active-session.workflow-session-linear > .panel > .p-4.space-y-6 {
  display: block !important;
}

#page-logbook .logbook-active-session.workflow-session-linear > .panel > .p-4.space-y-6 > section,
#page-firearms .logbook-active-session.workflow-session-linear > .panel > .p-4.space-y-6 > section {
  grid-column: 1 / -1 !important;
  width: 100% !important;
}

#page-logbook .logbook-active-session > .panel > .p-4.space-y-6 > section,
#page-firearms .logbook-active-session > .panel > .p-4.space-y-6 > section {
  margin: 0 !important;
  padding: 0.52rem 0.62rem 0 !important;
  border-top: 1px solid rgba(119, 142, 126, 0.18);
  background: rgba(255, 255, 255, 0.014);
  border-radius: 0.48rem;
}

#page-logbook .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(1),
#page-logbook .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(5),
#page-logbook .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(6),
#page-logbook .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(7),
#page-firearms .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(1),
#page-firearms .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(5),
#page-firearms .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(6),
#page-firearms .logbook-active-session > .panel > .p-4.space-y-6 > section:nth-child(7) {
  grid-column: 1 / -1;
}

#page-logbook .logbook-active-session > .panel > .p-4.space-y-6 > section:first-child,
#page-firearms .logbook-active-session > .panel > .p-4.space-y-6 > section:first-child {
  border-top: none;
}

#page-logbook .logbook-active-session .grid,
#page-firearms .logbook-active-session .grid {
  row-gap: 0.42rem !important;
}

#page-logbook .logbook-active-session .field-label,
#page-firearms .logbook-active-session .field-label {
  font-size: 0.64rem;
  margin-bottom: 0.1rem;
}

#page-logbook .logbook-active-session .field-input,
#page-logbook .logbook-active-session .field-select,
#page-logbook .logbook-active-session .field-textarea,
#page-firearms .logbook-active-session .field-input,
#page-firearms .logbook-active-session .field-select,
#page-firearms .logbook-active-session .field-textarea {
  min-height: 32px;
  padding: 0.38rem 0.55rem !important;
}

#page-logbook .logbook-active-session .field-textarea,
#page-firearms .logbook-active-session .field-textarea {
  min-height: 58px;
}

#page-logbook .logbook-active-session .logbook-header-row,
#page-firearms .logbook-active-session .logbook-header-row {
  margin-bottom: 0.05rem;
}

#page-logbook .logbook-active-session .logbook-action-row,
#page-firearms .logbook-active-session .logbook-action-row {
  margin-bottom: 0;
  gap: 0.45rem !important;
}

#page-logbook .logbook-active-session .rounded-2xl.border.border-zinc-800.bg-black\/40,
#page-firearms .logbook-active-session .rounded-2xl.border.border-zinc-800.bg-black\/40 {
  padding: 0.58rem !important;
}

#page-firearms .firearms-compact-page .account-card {
  padding: 0.56rem;
  border-radius: 0.7rem;
}

#page-firearms .firearms-compact-page .panel.p-6 {
  padding: 0.56rem !important;
}

#page-firearms .firearms-compact-page .text-4xl.font-semibold,
#page-logbook .text-4xl.font-semibold {
  font-size: clamp(1.7rem, 2.15vw, 2.2rem);
  line-height: 1;
}

#page-firearms .firearms-compact-page .grid.md\:grid-cols-3.gap-3.mb-4,
#page-firearms .firearms-compact-page .grid.md\:grid-cols-2.lg\:grid-cols-4.gap-3,
#page-firearms .firearms-compact-page .grid.md\:grid-cols-2.gap-4,
#page-firearms .firearms-compact-page .grid.md\:grid-cols-2.lg\:grid-cols-4.gap-4 {
  gap: 0.42rem !important;
}

#page-firearms .firearms-compact-page .summary-item,
#page-firearms .firearms-compact-page .stat-card,
#page-logbook .logbook-active-session .summary-item,
#page-logbook .logbook-active-session .stat-card,
#page-firearms .logbook-active-session .summary-item,
#page-firearms .logbook-active-session .stat-card {
  padding: 0.24rem 0 0.01rem !important;
}

#page-firearms .firearms-compact-page .text-lg.font-semibold,
#page-logbook .logbook-active-session .text-lg.font-semibold,
#page-firearms .logbook-active-session .text-lg.font-semibold {
  font-size: 0.88rem !important;
}

#page-firearms .firearms-compact-page .text-sm.text-zinc-500,
#page-logbook .logbook-active-session .text-sm.text-zinc-500,
#page-firearms .logbook-active-session .text-sm.text-zinc-500 {
  font-size: 0.68rem !important;
}

#page-firearms .firearms-compact-page .flex.flex-wrap.items-center.justify-between.gap-3.mb-3,
#page-firearms .firearms-compact-page .flex.flex-wrap.items-center.justify-between.gap-3.mb-4,
#page-firearms .firearms-compact-page .flex.flex-wrap.items-start.justify-between.gap-3.mb-4,
#page-logbook .logbook-active-session .flex.flex-wrap.items-center.justify-between.gap-3.mb-3,
#page-logbook .logbook-active-session .flex.flex-wrap.items-center.justify-between.gap-3.mb-4,
#page-firearms .logbook-active-session .flex.flex-wrap.items-center.justify-between.gap-3.mb-3,
#page-firearms .logbook-active-session .flex.flex-wrap.items-center.justify-between.gap-3.mb-4 {
  margin-bottom: 0.28rem !important;
}

#page-firearms .firearms-compact-page .shot-grid-head,
#page-firearms .firearms-compact-page .shot-grid-row,
#page-logbook .logbook-active-session .shot-grid-head,
#page-logbook .logbook-active-session .shot-grid-row,
#page-firearms .logbook-active-session .shot-grid-head,
#page-firearms .logbook-active-session .shot-grid-row {
  gap: 0.28rem;
}

/* Compact shot-grid presentation for the inline session view in the
 * firearm-overview right column. Width comes from the base 7-col
 * `.shot-grid-head, .shot-grid-row` rule (no min-width); this rule
 * just tightens cell padding + drops font size so the same template
 * is readable at the ~560-720px pane width. The
 * `firearm-overview-session-pane` class is applied to the wrapper
 * returned by `firearmSessionSummaryMarkup` and
 * `firearmActiveSessionEditorMarkup` in script2.js.
 *
 * Cells in the saved-session shot log were also stripped of their
 * inline " fps" / " MPH" / " yd" / "&deg;" suffixes — those units
 * now live in a small second line under each column header
 * (`.shot-grid-unit`), so the cell content is just the number. */
.firearm-overview-session-pane .shot-grid-head,
.firearm-overview-session-pane .shot-grid-row {
  gap: 0.18rem;
  font-size: 0.78rem;
  padding-left: 0.55rem;
  padding-right: 0.55rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.firearm-overview-session-pane .shot-grid-head > div {
  line-height: 1.05;
  word-break: break-word;
}

.firearm-overview-session-pane .shot-grid-unit {
  display: block;
  font-size: 0.62rem;
  font-weight: 400;
  color: rgba(143, 156, 149, 0.65);
  letter-spacing: 0.04em;
  margin-top: 0.05rem;
}

#page-firearms .firearms-compact-page .panel + .panel,
#page-logbook .logbook-active-session .panel + .panel,
#page-firearms .logbook-active-session .panel + .panel {
  margin-top: 0.55rem !important;
}

#page-firearms .firearms-compact-page .space-y-6 > *,
#page-firearms .firearms-compact-page .space-y-5 > * {
  margin-top: 0.52rem !important;
}

#page-firearms .firearms-compact-page .space-y-6 > *:first-child,
#page-firearms .firearms-compact-page .space-y-5 > *:first-child {
  margin-top: 0 !important;
}

#page-logbook .logbook-active-session .text-3xl.font-semibold,
#page-firearms .logbook-active-session .text-3xl.font-semibold {
  font-size: clamp(1.55rem, 2vw, 2rem) !important;
  line-height: 1.02;
}

#page-firearms .firearms-compact-page .text-2xl.font-semibold,
#page-logbook .logbook-active-session .text-2xl.font-semibold,
#page-firearms .logbook-active-session .text-2xl.font-semibold {
  font-size: 1.25rem !important;
  line-height: 1.05;
}

#page-firearms .firearms-compact-page .field-input,
#page-firearms .firearms-compact-page .field-select,
#page-firearms .firearms-compact-page .field-textarea,
#page-logbook .logbook-active-session .btn-primary,
#page-logbook .logbook-active-session .btn-secondary,
#page-firearms .logbook-active-session .btn-primary,
#page-firearms .logbook-active-session .btn-secondary,
#page-firearms .firearms-compact-page .btn-primary,
#page-firearms .firearms-compact-page .btn-secondary {
  min-height: 30px !important;
}

#page-firearms .firearms-compact-page .firearm-list-create-session-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px !important;
  padding: 0.42rem 0.8rem !important;
  font-size: 0.76rem !important;
  letter-spacing: 0.04em !important;
  line-height: 1 !important;
  white-space: nowrap;
}

#page-firearms .firearms-compact-page .field-label {
  font-size: 0.64rem;
  margin-bottom: 0.1rem;
}

#page-firearms .firearms-compact-page .field-input,
#page-firearms .firearms-compact-page .field-select,
#page-firearms .firearms-compact-page .field-textarea {
  padding: 0.38rem 0.55rem !important;
}

#page-firearms .firearms-compact-page .badge,
#page-logbook .logbook-active-session .badge,
#page-firearms .logbook-active-session .badge {
  padding: 0.18rem 0.48rem !important;
  font-size: 0.66rem !important;
}

#page-firearms .firearms-compact-page .account-card .font-medium,
#page-logbook .logbook-active-session .font-medium,
#page-firearms .logbook-active-session .font-medium {
  line-height: 1.18;
}

#page-firearms .firearms-compact-page .p-6,
#page-logbook .logbook-active-session .p-6,
#page-firearms .logbook-active-session .p-6 {
  padding: 0.58rem !important;
}

#page-firearms .firearms-compact-page .p-4,
#page-logbook .logbook-active-session .p-4,
#page-firearms .logbook-active-session .p-4 {
  padding: 0.46rem !important;
}

#page-firearms .workflow-page-header,
#page-logbook .workflow-page-header {
  margin-bottom: 0.2rem;
}

#page-firearms .workflow-summary-grid .stat-card,
#page-logbook .workflow-summary-grid .stat-card {
  padding: 0.42rem 0.5rem !important;
  border: 1px solid rgba(119, 142, 126, 0.18);
  border-radius: 0.52rem;
  background: rgba(255, 255, 255, 0.018);
}

#page-firearms .workflow-summary-grid .text-xs,
#page-logbook .workflow-summary-grid .text-xs {
  font-size: 0.62rem !important;
}

#page-firearms .firearm-browser {
  display: grid;
  gap: 0.35rem;
}

#page-firearms .firearm-list-item {
  border-radius: 0.58rem;
}

#page-firearms .firearm-list-select {
  padding: 0.52rem 0.68rem;
}

#page-firearms .firearm-list-session-action {
  padding: 0.3rem 0.5rem 0.3rem 0;
}

#page-firearms .firearm-list-title {
  font-size: 0.9rem;
}

#page-firearms .firearm-list-meta {
  font-size: 0.68rem;
}

#page-firearms .firearms-compact-page .account-card,
#page-logbook .account-card {
  padding: 0.5rem !important;
}

#page-firearms .firearms-compact-page .leading-7,
#page-logbook .leading-7 {
  line-height: 1.45 !important;
}

#page-firearms .workflow-session-card {
  border-radius: 0.58rem;
  padding: 0.46rem 0.52rem !important;
  cursor: pointer;
}

#page-firearms .workflow-session-card:hover,
#page-firearms .workflow-session-card:focus-visible,
#page-logbook .workflow-session-card:hover,
#page-logbook .workflow-session-card:focus-visible {
  box-shadow: inset 0 0 0 1px rgba(114, 241, 161, 0.18);
}

#page-firearms .workflow-session-card .badge {
  padding: 0.14rem 0.42rem !important;
  font-size: 0.64rem !important;
}

#page-firearms .workflow-session-card .btn-primary,
#page-firearms .workflow-session-card .btn-secondary {
  min-height: 28px !important;
  padding: 0.32rem 0.55rem !important;
}

#page-firearms .workflow-session-card .text-sm.text-zinc-500 {
  font-size: 0.66rem !important;
}

#page-firearms .workflow-session-card .font-medium {
  font-size: 0.86rem;
  line-height: 1.12;
}

#page-firearms .workflow-session-card .stat-card {
  padding: 0.18rem 0 0.01rem !important;
}

#page-logbook .workflow-load-dev-grid,
#page-firearms .workflow-load-dev-grid {
  column-gap: 0.8rem !important;
  row-gap: 0.62rem !important;
}

#page-logbook .workflow-load-dev-grid .field-input,
#page-logbook .workflow-load-dev-grid .field-select,
#page-firearms .workflow-load-dev-grid .field-input,
#page-firearms .workflow-load-dev-grid .field-select {
  min-height: 38px !important;
  padding: 0.5rem 0.68rem !important;
}

.field-input,
.field-select,
.field-textarea {
  border: none !important;
  box-shadow: none !important;
  background: rgba(255, 255, 255, 0.045) !important;
}

.field-select option {
  background: #101712;
  color: #f4fff4;
}

#page-logbook .workflow-load-dev-grid .field-label,
#page-firearms .workflow-load-dev-grid .field-label {
  font-size: 0.68rem !important;
  margin-bottom: 0.16rem !important;
}

@media (max-width: 1180px) {
  #page-logbook .logbook-active-session > .panel > .p-4.space-y-6,
  #page-firearms .logbook-active-session > .panel > .p-4.space-y-6 {
    grid-template-columns: 1fr;
  }

  #page-logbook .logbook-active-session > .panel > .p-4.space-y-6 > section,
  #page-firearms .logbook-active-session > .panel > .p-4.space-y-6 > section {
    grid-column: 1 / -1 !important;
  }
}

.contact-widget-mount {
  position: fixed;
  right: 1.2rem;
  bottom: 1.2rem;
  z-index: 70;
  pointer-events: none;
}

.contact-widget-mount > * {
  pointer-events: auto;
}

.contact-widget-launcher {
  box-shadow: 0 18px 40px rgba(0,0,0,.32);
}

.contact-widget-launcher,
.contact-widget-minimized-bar {
  width: auto;
}

.contact-widget-launcher-icon {
  display: none;
}

.contact-widget-launcher-label {
  display: inline;
}

.contact-widget-minimized-bar {
  justify-content: flex-start;
  box-shadow: 0 18px 40px rgba(0,0,0,.32);
}

.contact-widget-shell {
  width: min(360px, calc(100vw - 2.4rem));
}

.contact-widget-panel {
  background: rgba(10, 15, 13, 0.98);
  border: 1px solid rgba(143, 156, 149, 0.24);
  border-radius: 1rem;
  box-shadow: 0 22px 60px rgba(0,0,0,.42);
  overflow: hidden;
}

.contact-widget-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.9rem;
  padding: 1rem 1rem 0.8rem;
  border-bottom: 1px solid rgba(143, 156, 149, 0.14);
}

.contact-widget-title {
  font-size: 1.05rem;
  font-weight: 800;
  color: #f7fff8;
}

.contact-widget-subtitle {
  margin-top: 0.15rem;
  font-size: 0.82rem;
  color: rgba(214, 222, 217, 0.7);
  line-height: 1.35;
}

.contact-widget-window-actions {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.contact-widget-window-btn {
  appearance: none;
  border: 1px solid rgba(143, 156, 149, 0.22);
  background: rgba(255,255,255,0.03);
  color: #f4f8f5;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  line-height: 1;
}

.contact-widget-body {
  padding: 0.95rem 1rem 1rem;
}

.contact-widget-textarea {
  min-height: 118px;
  resize: vertical;
}

.contact-widget-footer {
  margin-top: 0.9rem;
  display: grid;
  gap: 0.7rem;
}

.contact-widget-send-btn {
  width: 100%;
  justify-content: center;
}

.contact-widget-message {
  min-height: 1.3rem;
  font-size: 0.84rem;
  color: rgba(214, 222, 217, 0.74);
  line-height: 1.35;
}

.contact-widget-minimized-bar {
  width: 100%;
  text-align: left;
}

/* ─────────────────────────────────────────────────────────────────
 * Apex homepage — sleek redesign (v0.03 / flutter-migration branch).
 * Replaces the verbose physical-logbook-focused content with a tight
 * three-section pitch focused on the digital app. Matches the
 * Android app's aesthetic via the --apex-* palette tokens declared
 * at the top of this file.
 * ───────────────────────────────────────────────────────────────── */

.apex-home {
  /* Sleek slate gradient — intentionally NOT the dark green tone of
     the app, so app screenshots stand out against the page rather
     than blending into it. Cool blue-slate gives it a "platform /
     dashboard" feel without competing with the green accent color
     used inside the app itself. */
  background:
    radial-gradient(ellipse at 50% 0%, #1c2530 0%, #11161e 38%, #0a0d12 100%);
  color: var(--apex-text);
  min-height: calc(100vh - var(--site-header-height, 80px));
  position: relative;
  overflow: hidden;
}

.apex-home::before {
  /* Subtle off-axis cool glow + grid overlay. Removed the green wash
     so app screenshots (which carry the green theme themselves) are
     the only place green appears on the page — sharper visual focus
     on the product imagery. */
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 18% -10%, rgba(80, 120, 180, 0.10) 0%, transparent 45%),
    radial-gradient(circle at 82% 14%, rgba(60, 90, 140, 0.08) 0%, transparent 50%);
  pointer-events: none;
  z-index: 0;
}

.apex-home::after {
  /* Faint vertical line grid for the "professional dashboard" feel.
     Very low contrast — just enough to add texture without being
     visually noisy. */
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(90deg, rgba(255, 255, 255, 0.018) 1px, transparent 1px);
  background-size: 96px 100%;
  pointer-events: none;
  z-index: 0;
}

.apex-home > * { position: relative; z-index: 1; }

.apex-hero {
  max-width: 1180px;
  margin: 0 auto;
  /* Trimmed splash hero — was 96/80, now ~half so the page lands
     on more meat and less whitespace at the fold. */
  padding: 48px 32px 40px;
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: 72px;
  align-items: center;
}

.apex-hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  border-radius: 999px;
  background: rgba(131, 227, 93, 0.10);
  border: 1px solid rgba(131, 227, 93, 0.30);
  color: var(--apex-accent);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 16px;
}

.apex-hero-eyebrow::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--apex-accent);
  box-shadow: 0 0 8px rgba(131, 227, 93, 0.8);
}

.apex-hero h1 {
  font-size: clamp(2.4rem, 4.8vw, 3.8rem);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin: 0 0 24px;
  color: var(--apex-text);
}

.apex-hero h1 .accent { color: var(--apex-accent); }

.apex-hero p {
  font-size: 1.12rem;
  line-height: 1.6;
  color: var(--apex-muted);
  max-width: 540px;
  margin: 0 0 40px;
}

.apex-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

.apex-btn-primary {
  /* Hero primary CTA — green bars top + bottom, accent-color text.
     Matches the Flutter app's _PreviewChoiceButton selected state. */
  background: transparent;
  color: var(--apex-accent);
  border-top: 1px solid var(--apex-accent);
  border-bottom: 1px solid var(--apex-accent);
  border-left: 0;
  border-right: 0;
  border-radius: 0;
  padding: 14px 26px;
  font-weight: 700;
  font-size: 0.96rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform 120ms ease, background 200ms ease;
}

.apex-btn-primary:hover,
.apex-btn-primary:focus-visible {
  /* Subtle accent wash on hover — bars stay, the wash hints
     interactivity without re-introducing a filled-button look. */
  background: rgba(131, 227, 93, 0.08);
  outline: none;
}

.apex-btn-secondary {
  /* Hero secondary CTA — muted bars + white text. */
  background: transparent;
  color: var(--apex-text);
  border-top: 1px solid var(--apex-line);
  border-bottom: 1px solid var(--apex-line);
  border-left: 0;
  border-right: 0;
  border-radius: 0;
  padding: 14px 26px;
  font-weight: 600;
  font-size: 0.96rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color 200ms ease, color 200ms ease;
}

.apex-btn-secondary:hover,
.apex-btn-secondary:focus-visible {
  border-top-color: var(--apex-accent);
  border-bottom-color: var(--apex-accent);
  color: var(--apex-accent);
  background: transparent;
  outline: none;
}

.apex-hero-visual {
  position: relative;
  aspect-ratio: 4 / 5;
  border-radius: 18px;
  background: var(--apex-panel);
  border: 1px solid var(--apex-line);
  overflow: hidden;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.5);
}

.apex-hero-visual::before,
.apex-hero-visual::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.apex-hero-visual::before {
  background: radial-gradient(circle at 30% 20%, rgba(131, 227, 93, 0.08), transparent 60%);
}

.apex-hero-visual::after {
  background: linear-gradient(180deg, transparent 60%, rgba(4, 9, 6, 0.9) 100%);
}

.apex-hero-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.apex-hero-meta {
  margin-top: 18px;
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  color: var(--apex-muted);
}

/* Centered, text-only hero variant — sales-page lead. Larger headline,
   no side image, three-pillar trust strip below the CTAs. */
.apex-hero-centered {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  grid-template-columns: none;
  max-width: 880px;
  /* Trimmed splash hero — was 96/72. */
  padding: 40px 32px 28px;
}

.apex-hero-centered h1 {
  font-size: clamp(2.2rem, 4.6vw, 3.4rem);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.05;
  margin: 8px 0 12px;
}

.apex-hero-centered p {
  max-width: 680px;
  font-size: 1.02rem;
  line-height: 1.5;
  color: var(--apex-muted);
  margin: 0 0 18px;
}

.apex-hero-centered .apex-hero-actions {
  justify-content: center;
}

.apex-hero-trust {
  margin-top: 22px;
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 0;
  flex-wrap: wrap;
  padding: 16px 14px;
  background: var(--apex-panel);
  border: 1px solid var(--apex-line);
  border-radius: 14px;
  width: 100%;
  max-width: 720px;
}

.apex-trust-item {
  flex: 1 1 180px;
  text-align: center;
  padding: 0 22px;
}

.apex-trust-num {
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--apex-accent);
  letter-spacing: -0.01em;
  line-height: 1;
  margin-bottom: 8px;
}

.apex-trust-label {
  font-size: 0.78rem;
  color: var(--apex-muted);
  line-height: 1.4;
  letter-spacing: 0.01em;
}

.apex-trust-divider {
  width: 1px;
  background: var(--apex-line);
  margin: 6px 0;
}

.apex-features {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 32px 96px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.apex-feature-card {
  background: var(--apex-panel);
  border: 1px solid var(--apex-line);
  border-radius: 16px;
  padding: 32px 28px;
  transition: border-color 220ms ease, transform 220ms ease;
}

.apex-feature-card:hover {
  border-color: var(--apex-panel-line);
  transform: translateY(-2px);
}

.apex-feature-icon {
  width: 44px;
  height: 44px;
  border-radius: 10px;
  background: rgba(131, 227, 93, 0.12);
  border: 1px solid rgba(131, 227, 93, 0.30);
  color: var(--apex-accent);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;
  font-weight: 800;
  margin-bottom: 20px;
}

.apex-feature-card h3 {
  font-size: 1.18rem;
  font-weight: 700;
  margin: 0 0 10px;
  color: var(--apex-text);
}

.apex-feature-card p {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--apex-muted);
  margin: 0;
}

.apex-cta-strip {
  max-width: 1180px;
  /* Was 96px bottom + 56/48 padding — too chunky for a closer.
     Pulled in to keep the splash dense. */
  margin: 0 auto 48px;
  padding: 28px 32px;
  background: var(--apex-panel);
  border: 1px solid var(--apex-line);
  border-radius: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.apex-cta-strip h2 {
  font-size: 1.3rem;
  font-weight: 700;
  margin: 0 0 4px;
  color: var(--apex-text);
}

.apex-cta-strip p {
  font-size: 0.9rem;
  color: var(--apex-muted);
  margin: 0;
}

.apex-cta-strip-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

/* ============================================================
   Cross-platform splash section — desktop / Android / mobile
   demo. Lives directly under the hero on index.html. The
   layout is one wide desktop screenshot followed by a 3-up
   row of phone-aspect captures so the eye reads "big screen
   above, pocket screens below" — same workflow either way.
   ============================================================ */

.apex-cross-platform {
  /* Sits flush under the hero with extra top padding so the
     three-up phone row has room to breathe. */
  padding-top: 8px;
}

.apex-cross-platform-desktop {
  position: relative;
  margin: 0 auto 40px;
  max-width: 1080px;
  padding: 0;
}

.apex-cross-platform-desktop img {
  display: block;
  width: 100%;
  border-radius: 14px;
  border: 1px solid var(--apex-line);
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.45);
  background: var(--apex-panel);
}

.apex-cross-platform-desktop figcaption,
.apex-cross-platform-card figcaption {
  text-align: center;
  margin-top: 12px;
  color: var(--apex-muted);
  font-size: 0.92rem;
  line-height: 1.45;
  padding: 0 4px;
}

/* "Desktop site / Android app / Mobile site" pill — sits over
   the top-left corner of each screenshot so the platform is
   readable at a glance without burying the visual. */
.apex-cross-platform-tag {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 2;
  padding: 5px 11px;
  border-radius: 999px;
  background: rgba(131, 227, 93, 0.16);
  color: var(--apex-accent);
  border: 1px solid rgba(131, 227, 93, 0.4);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  backdrop-filter: blur(4px);
}

.apex-cross-platform-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  max-width: 1080px;
  margin: 0 auto;
}

.apex-cross-platform-card {
  position: relative;
  margin: 0;
  display: flex;
  flex-direction: column;
}

.apex-cross-platform-card img {
  display: block;
  width: 100%;
  /* Phone-aspect frame: each screenshot has a different native
     aspect, so we crop/contain to a uniform 9:14 portrait so
     the three-up row visually rhymes. object-position: top so
     captions / headers stay visible if the source taller than
     14:9. */
  aspect-ratio: 9 / 14;
  object-fit: cover;
  object-position: top center;
  border-radius: 14px;
  border: 1px solid var(--apex-line);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.45);
  background: var(--apex-panel);
}

@media (max-width: 880px) {
  .apex-cross-platform-grid {
    grid-template-columns: 1fr;
    gap: 36px;
  }
  .apex-cross-platform-card img {
    /* Single-column layout: drop the forced aspect so phone
       screenshots show natively without wasting vertical
       space on cropping. */
    aspect-ratio: auto;
    max-height: 720px;
    object-fit: contain;
  }
}

/* ============================================================
   Splash-page header treatment.

   On the home page only, the sticky header drops its dark
   background, border, and shadow so it floats over the hero
   gradient as a single integrated splash instead of looking
   like a separate utility bar pinned above a marketing page.
   Other pages keep the full opaque header chrome (functional
   navigation needs the visual separation).

   Trigger: <header class="site-header site-header-home"> on
   index.html only — every other HTML file leaves it bare.
   ============================================================ */
/*
  Home page header (v0.02.48) — slim sticky banner with its own
  opaque background. Earlier revisions stripped the background to
  let the hero gradient show through, but the header is
  position: sticky, so on scroll the brand mark + wordmark were
  floating ghost-like over whatever page content was passing
  beneath them. Reintroducing a solid dark background (with a
  hairline divider + drop shadow) gives the sticky banner a
  clear visual edge against the splash content.
*/
.site-header-home {
  background: linear-gradient(180deg, rgba(8, 13, 10, 0.96), rgba(10, 16, 13, 0.94)) !important;
  border-bottom: 1px solid rgba(143, 156, 149, 0.14) !important;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.45) !important;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}

/* Drop the legacy ::before / ::after gradient overlays the
   site-header rule paints — the new flat opaque background
   above is the only chrome we want on the splash banner. */
.site-header-home::before,
.site-header-home::after {
  display: none !important;
}

/* Single splash CTA that lives in the top-right corner of the
   header on the home page — Access Platform. Promoted to a
   solid accent-bar treatment so it reads as the obvious next
   action even when the user hasn't scrolled past the hero. */
.site-header-cta {
  background: rgba(131, 227, 93, 0.12) !important;
  border-top: 1px solid var(--apex-accent) !important;
  border-bottom: 1px solid var(--apex-accent) !important;
  border-left: 0 !important;
  border-right: 0 !important;
  border-radius: 0 !important;
  color: var(--apex-accent) !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase;
  transition: background 200ms ease, color 200ms ease;
}

.site-header-cta:hover,
.site-header-cta:focus-visible {
  background: rgba(131, 227, 93, 0.22) !important;
  outline: none;
}

/* Hero gets a touch more breathing room on the splash since
   the header no longer sits on its own dark band — the eye
   should land on the big H1 first, not on the sticky chip. */
.apex-hero-splash {
  padding-top: clamp(40px, 6vw, 72px) !important;
}

/* ============================================================
   Marketing-page sections (solver / firearms / sessions / loaddev)
   ============================================================ */

.apex-section {
  max-width: 1180px;
  /* Tightened section gap — was 88px, now 44px. The home page
     stacks 5+ of these so each saved 44px = ~220px less scroll. */
  margin: 0 auto 44px;
  padding: 0 32px;
}

.apex-section-head {
  max-width: 760px;
  margin: 0 auto 18px;
  text-align: center;
}

.apex-section-head h2 {
  font-size: 1.6rem;
  font-weight: 800;
  letter-spacing: -0.01em;
  color: var(--apex-text);
  margin: 0 0 6px;
}

.apex-section-head p {
  font-size: 0.96rem;
  line-height: 1.5;
  color: var(--apex-muted);
  margin: 0;
}

/* ============================================================
   Splash-page screenshot gallery — one photo at a time, native
   horizontal-scroll-snap. Replaces the auto-advancing
   `.apex-screenshot-carousel` for the four marketing sections
   on index.html (Solver / Workflow / Sessions / Load Dev).

   Why scroll-snap instead of a JS carousel:
   - User controls the pace (no auto-advance fighting their
     attention while they're trying to read a screenshot).
   - Touch swipe on phones / two-finger swipe on trackpads /
     wheel scroll all work natively — no event plumbing.
   - Each slide takes 100% of the gallery width; scroll-snap
     locks scroll position to slide boundaries so the user can't
     end up half-on-half-off between two photos.
   - Prev/next chevrons are still wired (small JS in script2.js)
     for users who'd rather click — they call scrollBy() instead
     of toggling .is-active classes, so behavior matches the
     touch experience exactly.
   ============================================================ */
.apex-scroll-gallery {
  position: relative;
  max-width: 1080px;
  margin: 0 auto;
}

.apex-scroll-gallery-track {
  display: flex;
  gap: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  scrollbar-width: none;
  /* Padding is intentionally 0 on the X axis so each slide can
     align: center cleanly against the gallery edges. The
     prev/next buttons sit slightly outside the inner edge so
     they don't crop the screenshots. */
}

.apex-scroll-gallery-track::-webkit-scrollbar { display: none; }

.apex-scroll-gallery-slide {
  flex: 0 0 100%;
  scroll-snap-align: center;
  scroll-snap-stop: always;
  margin: 0;
  padding: 0 12px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  box-sizing: border-box;
  /* Positioned so the cross-platform "Desktop site / Android
     app / Mobile site" pill (.apex-cross-platform-tag) anchors
     to each slide individually instead of floating to the
     gallery root. The pill itself is absolute-positioned in
     its own rule. */
  position: relative;
}

.apex-scroll-gallery-slide img {
  display: block;
  max-width: 100%;
  /* Cap image height so a tall portrait screenshot doesn't make
     the gallery taller than the viewport. Was 620px; cut to 420px
     so each section fits well above the fold on a typical 1080p
     viewport without scrolling past the gallery. */
  max-height: 420px;
  width: auto;
  height: auto;
  border-radius: 12px;
  border: 1px solid var(--apex-line);
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.42);
  background: var(--apex-panel);
  object-fit: contain;
}

.apex-scroll-gallery-slide figcaption {
  text-align: center;
  color: var(--apex-muted);
  font-size: 0.86rem;
  line-height: 1.4;
  padding: 0 6px;
  max-width: 720px;
}

.apex-scroll-gallery-prev,
.apex-scroll-gallery-next {
  position: absolute;
  top: 38%;
  transform: translateY(-50%);
  z-index: 3;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: rgba(10, 16, 13, 0.88);
  border: 1px solid var(--apex-line);
  color: var(--apex-text);
  font-size: 1.7rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 200ms ease, border-color 200ms ease, color 200ms ease;
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.35);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}

.apex-scroll-gallery-prev { left: 4px; }
.apex-scroll-gallery-next { right: 4px; }

.apex-scroll-gallery-prev:hover,
.apex-scroll-gallery-next:hover,
.apex-scroll-gallery-prev:focus-visible,
.apex-scroll-gallery-next:focus-visible {
  background: rgba(131, 227, 93, 0.22);
  border-color: var(--apex-accent);
  color: var(--apex-accent);
  outline: none;
}

@media (max-width: 700px) {
  .apex-scroll-gallery-prev,
  .apex-scroll-gallery-next {
    width: 38px;
    height: 38px;
    font-size: 1.4rem;
  }
  .apex-scroll-gallery-slide img {
    max-height: 480px;
  }
}

/* Horizontal scroll strip with snap. Each child card is a fixed-
   width "screenshot" of an app screen. Native scroll keeps it
   accessible (keyboard focus, touch swipe, mouse drag-scroll on
   trackpads) without a JS carousel. */
.apex-scroll-strip {
  display: flex;
  gap: 18px;
  padding: 6px 4px 22px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-padding-left: 4px;
  -webkit-overflow-scrolling: touch;
  scrollbar-color: var(--apex-line) transparent;
  scrollbar-width: thin;
}

.apex-scroll-strip::-webkit-scrollbar { height: 8px; }
.apex-scroll-strip::-webkit-scrollbar-track { background: transparent; }
.apex-scroll-strip::-webkit-scrollbar-thumb {
  background: var(--apex-line);
  border-radius: 4px;
}

.apex-shot-card {
  flex: 0 0 auto;
  width: min(420px, 86vw);
  scroll-snap-align: start;
  background: var(--apex-panel);
  border: 1px solid var(--apex-line);
  border-radius: 14px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.35);
}

.apex-mock-label {
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--apex-muted);
  padding: 14px 18px;
  border-bottom: 1px solid var(--apex-line);
  background: rgba(131, 227, 93, 0.04);
}

.apex-mock-body {
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  flex: 1;
}

/* --- HUD mockup --- */

.apex-hud-meta {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 0.78rem;
  color: var(--apex-muted);
}

.apex-hud-tag {
  letter-spacing: 0.02em;
}

.apex-hud-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

.apex-hud-cell {
  position: relative;
  background: var(--apex-deep);
  border: 1px solid var(--apex-line);
  border-radius: 10px;
  padding: 14px 14px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 84px;
}

.apex-hud-cell-label {
  font-size: 0.66rem;
  letter-spacing: 0.18em;
  color: var(--apex-muted);
}

.apex-hud-cell-value {
  font-size: 1.7rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--apex-text);
  display: flex;
  align-items: baseline;
  gap: 6px;
  line-height: 1;
}

.apex-hud-cell-unit {
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--apex-muted);
  letter-spacing: 0.04em;
}

.apex-hud-arrow {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 18px;
  height: 18px;
  opacity: 0.85;
}

/* --- Range table mockup --- */

.apex-table-meta {
  font-size: 0.78rem;
  color: var(--apex-muted);
}

.apex-mock-rangetable {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
  font-size: 0.86rem;
}

.apex-mock-rangetable thead th {
  text-align: right;
  font-size: 0.66rem;
  letter-spacing: 0.16em;
  font-weight: 600;
  color: var(--apex-muted);
  padding: 8px 10px;
  border-bottom: 1px solid var(--apex-line);
}

.apex-mock-rangetable thead th:first-child,
.apex-mock-rangetable tbody td:first-child {
  text-align: left;
}

.apex-mock-rangetable tbody td {
  padding: 7px 10px;
  text-align: right;
  color: var(--apex-text);
  border-bottom: 1px solid rgba(34, 53, 42, 0.5);
}

.apex-mock-rangetable tbody tr:last-child td { border-bottom: none; }

.apex-row-trans td { color: rgba(255, 170, 100, 0.95); }
.apex-row-pick td {
  background: rgba(131, 227, 93, 0.10);
  color: var(--apex-accent);
  font-weight: 700;
}

/* --- Panes mockup --- */

.apex-tabbar {
  display: flex;
  gap: 6px;
  border-bottom: 1px solid var(--apex-line);
  padding-bottom: 6px;
  overflow-x: auto;
  scrollbar-width: none;
}
.apex-tabbar::-webkit-scrollbar { display: none; }

.apex-tab {
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  padding: 6px 10px;
  border-radius: 6px;
  color: var(--apex-muted);
  white-space: nowrap;
  flex-shrink: 0;
}

.apex-tab-active {
  background: rgba(131, 227, 93, 0.12);
  color: var(--apex-accent);
  font-weight: 700;
}

.apex-fields {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.apex-fields-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 16px;
}

.apex-field {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 6px 0;
  border-bottom: 1px solid rgba(34, 53, 42, 0.5);
  font-size: 0.86rem;
}

.apex-field > span:first-child {
  color: var(--apex-muted);
  font-size: 0.78rem;
  letter-spacing: 0.02em;
}

.apex-field > span:last-child {
  color: var(--apex-text);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

/* --- List mockup (firearms) --- */

.apex-list-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--apex-line);
  border-radius: 10px;
  background: var(--apex-deep);
}

.apex-list-row-active {
  border-color: rgba(131, 227, 93, 0.40);
  background: rgba(131, 227, 93, 0.06);
}

.apex-list-title {
  font-size: 0.96rem;
  font-weight: 700;
  color: var(--apex-text);
}

.apex-list-sub {
  font-size: 0.76rem;
  color: var(--apex-muted);
  margin-top: 2px;
  letter-spacing: 0.02em;
}

.apex-pill {
  font-size: 0.7rem;
  letter-spacing: 0.10em;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(131, 227, 93, 0.12);
  color: var(--apex-accent);
  font-weight: 700;
}

/* --- Detail mockups (load profile / gun profile) --- */

.apex-detail-name {
  font-size: 0.96rem;
  font-weight: 700;
  color: var(--apex-text);
  letter-spacing: 0.01em;
}

/* --- Session mockup (shot log) --- */

.apex-session-meta {
  font-size: 0.78rem;
  color: var(--apex-muted);
}

.apex-shot-rows {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.apex-shot-row {
  display: grid;
  grid-template-columns: 28px 1fr 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 8px 10px;
  background: var(--apex-deep);
  border: 1px solid var(--apex-line);
  border-radius: 8px;
  font-size: 0.82rem;
}

.apex-shot-num {
  color: var(--apex-muted);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.apex-shot-dial {
  font-variant-numeric: tabular-nums;
  color: var(--apex-text);
}

.apex-shot-call {
  color: var(--apex-muted);
  font-size: 0.76rem;
}

.apex-shot-result {
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
}

/* --- Load development --- */

.apex-loaddev-meta {
  font-size: 0.78rem;
  color: var(--apex-muted);
}

.apex-loaddev-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}

.apex-group-tile {
  background: var(--apex-deep);
  border: 1px solid var(--apex-line);
  border-radius: 10px;
  padding: 12px 10px;
  text-align: center;
}

.apex-group-tile-pick {
  border-color: rgba(131, 227, 93, 0.40);
  background: rgba(131, 227, 93, 0.06);
}

.apex-group-tile-charge {
  font-size: 0.76rem;
  color: var(--apex-muted);
  letter-spacing: 0.04em;
  margin-bottom: 4px;
}

.apex-group-tile-size {
  font-size: 1.05rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.apex-group-tile-meta {
  font-size: 0.66rem;
  color: var(--apex-muted);
  margin-top: 4px;
  letter-spacing: 0.04em;
}

/* --- Kestrel section --- */

.apex-kestrel-flow {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 12px;
  margin: 0 auto 24px;
  flex-wrap: wrap;
}

.apex-kestrel-step {
  flex: 1 1 220px;
  max-width: 280px;
  background: var(--apex-panel);
  border: 1px solid var(--apex-line);
  border-radius: 14px;
  /* Trimmed from 22/20 — keeps the three steps compact. */
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: center;
  text-align: center;
}

.apex-kestrel-step-num {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: rgba(131, 227, 93, 0.12);
  border: 1px solid rgba(131, 227, 93, 0.30);
  color: var(--apex-accent);
  font-weight: 800;
  font-size: 0.92rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 6px;
}

.apex-kestrel-step-text {
  font-size: 1.02rem;
  font-weight: 700;
  color: var(--apex-text);
}

.apex-kestrel-step-sub {
  font-size: 0.82rem;
  color: var(--apex-muted);
  line-height: 1.45;
}

.apex-kestrel-arrow {
  align-self: center;
  color: var(--apex-muted);
  font-size: 1.4rem;
  font-weight: 700;
}

.apex-kestrel-disclaimer {
  max-width: 760px;
  margin: 12px auto 0;
  font-size: 0.74rem;
  color: var(--apex-muted);
  line-height: 1.55;
  text-align: center;
  letter-spacing: 0.01em;
  font-style: italic;
}

/* --- Responsive --- */

@media (max-width: 900px) {
  .apex-hero {
    grid-template-columns: 1fr;
    padding: 56px 24px 48px;
    gap: 40px;
  }
  .apex-hero-visual { aspect-ratio: 4 / 3; max-width: 480px; }
  .apex-hero-centered { padding: 64px 22px 48px; }
  .apex-trust-divider { display: none; }
  .apex-trust-item { padding: 14px 18px; flex-basis: 100%; }
  .apex-features {
    grid-template-columns: 1fr;
    padding: 0 24px 64px;
  }
  .apex-cta-strip {
    margin: 0 24px 64px;
    padding: 36px 28px;
    flex-direction: column;
    align-items: flex-start;
  }
  .apex-section { padding: 0 18px; margin-bottom: 64px; }
  .apex-section-head h2 { font-size: 1.6rem; }
  .apex-section-head p { font-size: 0.94rem; }
  .apex-shot-card { width: min(360px, 84vw); }
  .apex-loaddev-grid { grid-template-columns: 1fr; }
  .apex-fields-2col { grid-template-columns: 1fr; }
  .apex-kestrel-arrow { display: none; }
}

/* ============================================================
   Screenshot carousel — one image at a time with auto-advance,
   manual prev/next + dot navigation, and a fade transition.
   Used in the four product sections of the homepage. The
   wrapper around each slide's <img> uses clip-path to crop the
   phone status bar (top ~5%) so the user never sees their phone
   notification stack inside the screenshots.
   ============================================================ */

.apex-screenshot-carousel {
  position: relative;
  max-width: 380px;
  margin: 0 auto;
  padding: 0;
}

.apex-carousel-stage {
  position: relative;
  width: 100%;
  aspect-ratio: 9 / 19.5;
  border-radius: 22px;
  overflow: hidden;
  background: #050708;
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow:
    0 24px 56px rgba(0, 0, 0, 0.55),
    0 4px 14px rgba(0, 0, 0, 0.35);
}

.apex-carousel-slide {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  transition: opacity 600ms ease-in-out;
  pointer-events: none;
  display: flex;
  flex-direction: column;
}

.apex-carousel-slide.is-active {
  opacity: 1;
  pointer-events: auto;
  z-index: 1;
}

.apex-carousel-slide img {
  /* Crop the phone status bar (time, notification icons, signal,
     wifi, battery) by clipping the top ~5% of the source image.
     The container's aspect-ratio is sized for the cropped portion,
     and the image fills it via object-fit: cover with transform
     translateY to push the cropped region offscreen. */
  width: 100%;
  height: 105.5%;
  object-fit: cover;
  object-position: center top;
  display: block;
  transform: translateY(-5.2%);
  background: #050708;
}

.apex-carousel-slide figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 14px 16px 12px;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--apex-text);
  letter-spacing: 0.01em;
  background: linear-gradient(180deg, transparent 0%, rgba(0, 0, 0, 0.78) 60%, rgba(0, 0, 0, 0.92) 100%);
  text-align: center;
  pointer-events: none;
}

.apex-carousel-prev,
.apex-carousel-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  background: rgba(15, 22, 30, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: var(--apex-text);
  border-radius: 50%;
  font-size: 1.25rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 5;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: background 180ms ease, transform 180ms ease;
  line-height: 1;
}

.apex-carousel-prev { left: -18px; }
.apex-carousel-next { right: -18px; }

.apex-carousel-prev:hover,
.apex-carousel-next:hover,
.apex-carousel-prev:focus-visible,
.apex-carousel-next:focus-visible {
  background: rgba(131, 227, 93, 0.18);
  border-color: rgba(131, 227, 93, 0.45);
  outline: none;
  transform: translateY(-50%) scale(1.06);
}

.apex-carousel-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 16px;
}

.apex-carousel-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.22);
  border: none;
  cursor: pointer;
  padding: 0;
  transition: background 200ms ease, transform 200ms ease, width 220ms ease;
}

.apex-carousel-dot:hover {
  background: rgba(255, 255, 255, 0.42);
}

.apex-carousel-dot.is-active {
  background: var(--apex-accent);
  width: 22px;
  border-radius: 4px;
}

@media (max-width: 900px) {
  .apex-screenshot-carousel { max-width: min(320px, 86vw); }
  .apex-carousel-prev { left: 4px; }
  .apex-carousel-next { right: 4px; }
}

/* ============================================================
   Card chrome cleanup (NEXT_BRANCH_FOLLOWUPS #6)
   ------------------------------------------------------------
   Strips the legacy "rounded panel with fill + shadow" chrome
   from session / load / firearm cards (and the matching
   list-card patterns: stat-card, summary-item, mobile-shot-card)
   and replaces it with the bar style we shipped on buttons:
   no background, no rounded corners, no all-around border —
   just a top + bottom 1px line as the visual separator.

   This block is intentionally placed at the end of styles.css
   so source-order wins over the multiple earlier definitions
   (line ~24 .panel, ~517 .panel/.stat-card group, ~1100 .panel
   group, ~1570 .account-card). Future card-style classes
   should be added to the selector list below.

   Note: `.panel` ALSO acts as the chrome for modals (the dim
   `fixed inset-0` backdrop wraps a `.panel` in the center).
   The new bar-only treatment works fine there too — the
   backdrop provides the modal framing, the panel just holds
   the content. If a modal needs more separation later, scope
   that with `.modal-shell` rather than reverting `.panel`.
   ============================================================ */

.panel,
.account-card,
.workflow-session-card,
.stat-card,
.summary-item,
.mobile-shot-card,
.landing-card,
.product-panel,
.firearm-list-item,
#page-firearms .firearm-list-item {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  border-top: 1px solid rgba(143, 156, 149, 0.30) !important;
  border-bottom: 1px solid rgba(143, 156, 149, 0.30) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
}

/* Active (currently-selected) firearm in the list — bars stay
   muted, but the title + meta text shift to white so the row reads
   as "selected" without burning the system-wide green = interact
   convention. Green is reserved for hover/focus on every card and
   button; using it for a permanent selected state would mean every
   page load shows a steady green stripe somewhere. */
.firearm-list-item.active,
#page-firearms .firearm-list-item.active {
  box-shadow: none !important;
}

.firearm-list-item.active .firearm-list-title {
  color: #ffffff;
  font-weight: 700;
}

.firearm-list-item.active .firearm-list-meta {
  color: rgba(255, 255, 255, 0.78);
}

/* Hover state across all *interactive* card types — bars brighten
   to accent green, matching the button hover. Excludes `.panel`
   (used as modal containers, not a click target) and the display-
   only stat/summary/shot cards (data readouts, also not clickable).
   The bar transition lives at rest so leaving the card animates
   back to muted at the same speed. */
.account-card,
.workflow-session-card,
.firearm-list-item,
#page-firearms .firearm-list-item {
  transition: border-top-color 180ms ease, border-bottom-color 180ms ease;
}

.account-card:hover,
.workflow-session-card:hover,
.firearm-list-item:hover,
#page-firearms .firearm-list-item:hover {
  border-top-color: var(--apex-accent, #83E35D) !important;
  border-bottom-color: var(--apex-accent, #83E35D) !important;
}

/* When cards stack directly against each other, collapse the
   doubled separator (one card's bottom + next card's top read as
   a visual 2px line). Pull the top border off any card that
   immediately follows another card so the system reads as a
   continuous list of bar-divided rows. */
.panel + .panel,
.account-card + .account-card,
.stat-card + .stat-card,
.summary-item + .summary-item,
.mobile-shot-card + .mobile-shot-card,
.firearm-list-item + .firearm-list-item {
  border-top: 0 !important;
}

/* ============================================================
   Input field marking (NEXT_BRANCH_FOLLOWUPS #7)
   ------------------------------------------------------------
   Drops the dark background fill + rounded box look on every
   .field-input / .field-select / .field-textarea and replaces
   it with the underline-only style the Flutter app's
   `InputDecorationTheme` uses (filled: false, UnderlineInputBorder).
   Single bottom rule in muted at rest, brightens to the apex
   accent on focus — same affordance Android users already see.

   !important everywhere because there are three earlier
   layered rules (lines ~22, ~1443, ~2061, ~3652) some of which
   already use !important. Belt-and-suspenders.
   ============================================================ */

.field-input,
.field-select,
.field-textarea {
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  border-bottom: 1px solid rgba(143, 156, 149, 0.40) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0.6rem 0.2rem !important;
  color: var(--apex-text, #F2F7F2);
  transition: border-bottom-color 180ms ease, color 180ms ease;
}

.field-input::placeholder,
.field-textarea::placeholder {
  color: rgba(159, 177, 163, 0.55);
}

.field-input:focus,
.field-input:focus-visible,
.field-select:focus,
.field-select:focus-visible,
.field-textarea:focus,
.field-textarea:focus-visible {
  outline: none !important;
  border-bottom: 2px solid var(--apex-accent, #83E35D) !important;
  /* Reduce the bottom padding by 1px to compensate for the
     2px focused border vs 1px rest border — keeps the field's
     baseline from jumping when the user tabs into it. */
  padding-bottom: calc(0.6rem - 1px) !important;
}

/* The native <select> dropdown caret needs to remain visible
   without a panel chrome behind it. Keep the OS caret; ensure
   sufficient right-padding so the value text doesn't collide. */
.field-select {
  padding-right: 1.4rem !important;
  appearance: none;
  -webkit-appearance: none;
  background-image:
    linear-gradient(45deg, transparent 50%, rgba(159, 177, 163, 0.7) 50%),
    linear-gradient(-45deg, transparent 50%, rgba(159, 177, 163, 0.7) 50%) !important;
  background-position:
    calc(100% - 14px) 50%,
    calc(100% - 8px) 50% !important;
  background-size: 6px 6px, 6px 6px !important;
  background-repeat: no-repeat !important;
}

.field-select:focus,
.field-select:focus-visible {
  background-image:
    linear-gradient(45deg, transparent 50%, var(--apex-accent, #83E35D) 50%),
    linear-gradient(-45deg, transparent 50%, var(--apex-accent, #83E35D) 50%) !important;
}

/* Disabled / readonly inputs read as muted bottom border. */
.field-input:disabled,
.field-select:disabled,
.field-textarea:disabled,
.field-input[readonly],
.field-textarea[readonly] {
  border-bottom-color: rgba(143, 156, 149, 0.20) !important;
  color: rgba(242, 247, 242, 0.55);
  cursor: not-allowed;
}

/* ==============================================================
   APEX SPLASH (v0.02.45) — top-tier home-page redesign.

   Design language pulled from Applied Ballistics, Accuracy
   International, AMTAC Suppressors, SilencerCo, and Sword Defense:

     - Restrained dark palette with one accent color
     - ALL-CAPS Barlow Condensed for display headlines
     - Full-bleed cinematic hero with the product visible
     - Heritage / trust messaging in the hero (not buried below)
     - Alternating left/right feature deep-dives, NO carousels
     - Numbered capability cards
     - Cross-platform tagline strip
     - Single closing CTA matching the hero primary

   Class names are namespaced apex-splash-* so they don't
   collide with the legacy .apex-section / .apex-cta-strip /
   .apex-screenshot-carousel rules — those still drive the
   marketing sections embedded in the non-home pages, which we
   intentionally left unchanged.

   CSS custom properties are scoped to .apex-splash (the
   wrapper on <section id="page-home">) so they don't leak
   into other pages of the site.
   ============================================================== */

.apex-splash {
  --splash-bg: #050a07;
  --splash-bg-2: #0a110d;
  --splash-bg-3: #0e1612;
  --splash-text: #eef3ee;
  --splash-muted: #8a9c91;
  --splash-line: rgba(143, 156, 149, 0.18);
  --splash-line-strong: rgba(143, 156, 149, 0.30);
  --splash-accent: #83e35d;
  --splash-accent-soft: rgba(131, 227, 93, 0.10);

  background:
    radial-gradient(ellipse at 50% -200px, rgba(131, 227, 93, 0.08), transparent 50%),
    linear-gradient(180deg, var(--splash-bg) 0%, var(--splash-bg-2) 100%);
  color: var(--splash-text);
  font-family: 'Manrope', system-ui, sans-serif;
}

/* Hero ----------------------------------------------------------- */

.apex-splash-hero {
  position: relative;
  padding: 56px 0 72px;
  overflow: hidden;
  isolation: isolate;
}

.apex-splash-hero::before {
  /* Industrial grid texture — subtle, sets the tone without
     fighting the content. Same trick AI / AMTAC use to give
     dark backgrounds depth without flat solid black. */
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(143, 156, 149, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(143, 156, 149, 0.04) 1px, transparent 1px);
  background-size: 56px 56px;
  pointer-events: none;
  z-index: 0;
}

.apex-splash-hero-inner {
  position: relative;
  z-index: 1;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 32px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 56px;
  align-items: center;
}

.apex-splash-hero-copy {
  max-width: 580px;
}

/* Display-type kickers — small all-caps labels above headlines.
   apex-splash-eyebrow uses accent green; apex-splash-kicker uses
   muted gray for less-prominent section markers. */
.apex-splash-eyebrow,
.apex-splash-kicker {
  display: inline-block;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  margin-bottom: 18px;
  line-height: 1.2;
}

.apex-splash-eyebrow { color: var(--splash-accent); }

.apex-splash-kicker {
  color: var(--splash-muted);
  margin-bottom: 14px;
}

.apex-splash-h1 {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: clamp(2.4rem, 5.6vw, 4.6rem);
  font-weight: 800;
  line-height: 0.96;
  letter-spacing: -0.005em;
  text-transform: uppercase;
  margin: 0 0 22px;
  color: var(--splash-text);
}

.apex-splash-accent { color: var(--splash-accent); }

.apex-splash-lede {
  font-size: 1.06rem;
  line-height: 1.55;
  color: var(--splash-muted);
  margin: 0 0 28px;
  max-width: 520px;
}

.apex-splash-cta-row {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
  margin-bottom: 36px;
}

/*
  Primary CTA — bar-only treatment. Top + bottom 2px accent-green
  bars, transparent middle, accent-green bold condensed text.
  Matches the rest of the app's bar-button language (the same
  pattern firearm-overview action rows use).

  Why all the !important on this rule + the override block below:
  the legacy `.account-card` / `.panel` global "bar treatment"
  block earlier in this stylesheet (~line 4895) has very loud
  `!important` rules for `background`, `border`, `border-radius`,
  `box-shadow` keyed on .panel/.account-card etc. Tailwind /
  utility classes also walk into the cascade. Without
  !important here those background + border-* rules can win the
  cascade and turn this back into a solid-fill or boxed button.
*/
.apex-splash-cta-primary {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  color: var(--splash-accent) !important;
  border: 0 !important;
  border-top: 2px solid var(--splash-accent) !important;
  border-bottom: 2px solid var(--splash-accent) !important;
  border-radius: 0 !important;
  padding: 14px 30px;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  font-size: 0.98rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  cursor: pointer;
  /* Subtle accent glow on the top + bottom bars without relying
     on a fill color — keeps the button readable + distinctive
     while preserving the bar-only look the rest of the app uses. */
  box-shadow:
    0 -1px 0 rgba(131, 227, 93, 0.35),
    0 1px 0 rgba(131, 227, 93, 0.35),
    0 0 22px rgba(131, 227, 93, 0.18) !important;
  transition: background 200ms ease, color 200ms ease, box-shadow 200ms ease, transform 150ms ease;
  outline: none;
}

.apex-splash-cta-primary:hover,
.apex-splash-cta-primary:focus-visible {
  /* Accent wash on hover — bars stay the headline element, the
     wash hints interactivity without re-introducing a filled-
     button look. Accent text shifts slightly brighter. */
  background: rgba(131, 227, 93, 0.12) !important;
  color: #b6f399 !important;
  transform: translateY(-1px);
  box-shadow:
    0 -1px 0 var(--splash-accent),
    0 1px 0 var(--splash-accent),
    0 0 32px rgba(131, 227, 93, 0.32) !important;
  outline: none;
}

.apex-splash-cta-primary:active {
  transform: translateY(0);
  background: rgba(131, 227, 93, 0.18) !important;
}

/* Secondary "How it works ->" — text-only with arrow, the AB-style
   text-forward affordance for technical visitors who don't need a
   bigger button to find their way around. */
.apex-splash-cta-link {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 0.92rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--splash-text);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  padding-bottom: 2px;
  transition: color 200ms ease, border-color 200ms ease;
}

.apex-splash-cta-link:hover,
.apex-splash-cta-link:focus-visible {
  color: var(--splash-accent);
  border-bottom-color: var(--splash-accent);
  outline: none;
}

/* Trust strip — three credibility lines under the CTA. Vertical
   accent bar on the left mimics the "Science of Accuracy" trust
   block on AB. Each line: condensed bold key + muted body. */
.apex-splash-trust {
  list-style: none;
  margin: 0;
  padding: 0 0 0 16px;
  border-left: 2px solid var(--splash-accent);
  display: grid;
  gap: 8px;
  font-size: 0.86rem;
  color: var(--splash-muted);
}

.apex-splash-trust strong {
  color: var(--splash-text);
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  font-size: 0.9rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-right: 10px;
}

/* Hero visual — desktop screenshot + phone screenshot composite.
   Mimics AB's product card placement (large "screen" floating
   inside a panel). Phone overlaps the desktop bottom-right
   corner so the cross-device story is readable in one glance. */
.apex-splash-hero-visual {
  position: relative;
  min-height: 460px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.apex-splash-hero-visual-desktop {
  position: relative;
  width: 100%;
  max-width: 600px;
  aspect-ratio: 16 / 9;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--splash-line-strong);
  background: var(--splash-bg-3);
  box-shadow: 0 40px 80px rgba(0, 0, 0, 0.55);
}

.apex-splash-hero-visual-desktop img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

.apex-splash-hero-visual-phone {
  position: absolute;
  right: -12px;
  bottom: -36px;
  width: 180px;
  aspect-ratio: 9 / 16;
  border-radius: 22px;
  overflow: hidden;
  border: 3px solid var(--splash-bg);
  background: var(--splash-bg-3);
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.6);
}

.apex-splash-hero-visual-phone img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

@media (max-width: 940px) {
  .apex-splash-hero { padding: 36px 0 56px; }
  .apex-splash-hero-inner { grid-template-columns: 1fr; gap: 40px; }
  .apex-splash-hero-visual { min-height: 0; margin-top: 8px; }
  .apex-splash-hero-visual-phone {
    right: 12px;
    bottom: -24px;
    width: 130px;
  }
}

/* Brand mantra strip --------------------------------------------- */

.apex-splash-mantra {
  background: var(--splash-bg-3);
  border-top: 1px solid var(--splash-line);
  border-bottom: 1px solid var(--splash-line);
  padding: 18px 32px;
  text-align: center;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 0.94rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--splash-muted);
}

/* Section primitives --------------------------------------------- */

.apex-splash-section {
  max-width: 1280px;
  margin: 0 auto;
  padding: 64px 32px;
}

.apex-splash-section-head {
  margin-bottom: 32px;
  max-width: 760px;
}

.apex-splash-h2 {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: clamp(1.7rem, 3.2vw, 2.4rem);
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.005em;
  text-transform: uppercase;
  margin: 0 0 12px;
  color: var(--splash-text);
}

.apex-splash-h3 {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 1.4rem;
  font-weight: 800;
  letter-spacing: 0.005em;
  text-transform: uppercase;
  margin: 0 0 10px;
  color: var(--splash-text);
}

/* Capability grid (3-up numbered cards) -------------------------- */

.apex-splash-cap-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}

.apex-splash-cap-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 26px 24px 22px;
  background: var(--splash-bg-3);
  border: 1px solid var(--splash-line);
  border-radius: 4px;
  text-decoration: none;
  color: inherit;
  transition: border-color 200ms ease, transform 150ms ease;
  position: relative;
  overflow: hidden;
}

.apex-splash-cap-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--splash-accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 250ms ease;
}

.apex-splash-cap-card:hover,
.apex-splash-cap-card:focus-visible {
  border-color: rgba(131, 227, 93, 0.4);
  transform: translateY(-2px);
  outline: none;
}

.apex-splash-cap-card:hover::before,
.apex-splash-cap-card:focus-visible::before {
  transform: scaleX(1);
}

.apex-splash-cap-num {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.32em;
  color: var(--splash-accent);
}

.apex-splash-cap-title {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 1.5rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--splash-text);
  margin: 0;
}

.apex-splash-cap-text {
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--splash-muted);
  margin: 0;
  flex: 1;
}

.apex-splash-cap-link {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--splash-text);
  margin-top: 8px;
}

.apex-splash-cap-card:hover .apex-splash-cap-link,
.apex-splash-cap-card:focus-visible .apex-splash-cap-link {
  color: var(--splash-accent);
}

/* Feature deep-dives (text + image, alternating) ----------------- */

.apex-splash-feature {
  max-width: 1280px;
  margin: 0 auto;
  padding: 48px 32px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
}

.apex-splash-feature.is-reversed .apex-splash-feature-copy { order: 2; }
.apex-splash-feature.is-reversed .apex-splash-feature-figure { order: 1; }

.apex-splash-feature-copy { max-width: 540px; }

.apex-splash-feature-text {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--splash-muted);
  margin: 0 0 20px;
}

.apex-splash-feature-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 10px;
}

.apex-splash-feature-list li {
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--splash-text);
  padding-left: 22px;
  position: relative;
}

.apex-splash-feature-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 12px;
  height: 1px;
  background: var(--splash-accent);
}

.apex-splash-feature-figure {
  margin: 0;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid var(--splash-line-strong);
  background: var(--splash-bg-3);
  box-shadow: 0 24px 50px rgba(0, 0, 0, 0.5);
}

.apex-splash-feature-figure img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 460px;
  object-fit: cover;
  object-position: top center;
}

@media (max-width: 880px) {
  .apex-splash-cap-grid { grid-template-columns: 1fr; }
  .apex-splash-section { padding: 48px 24px; }
  .apex-splash-feature {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 32px 24px;
  }
  .apex-splash-feature.is-reversed .apex-splash-feature-copy { order: 1; }
  .apex-splash-feature.is-reversed .apex-splash-feature-figure { order: 2; }
}

/* Cross-platform band -------------------------------------------- */

.apex-splash-band {
  background: var(--splash-bg-3);
  border-top: 1px solid var(--splash-line);
  border-bottom: 1px solid var(--splash-line);
  padding: 56px 32px;
  text-align: center;
}

.apex-splash-band .apex-splash-kicker {
  display: inline-block;
}

.apex-splash-band-text {
  max-width: 620px;
  margin: 0 auto 28px;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--splash-muted);
}

.apex-splash-band-devices {
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}

.apex-splash-band-device-tag {
  display: inline-block;
  padding: 9px 18px;
  border: 1px solid var(--splash-line-strong);
  border-radius: 999px;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 0.84rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--splash-text);
  background: var(--splash-bg-2);
}

/* Kestrel callout ------------------------------------------------ */

.apex-splash-kestrel {
  max-width: 880px;
  margin: 0 auto;
  padding: 48px 32px;
  text-align: center;
}

.apex-splash-kestrel p {
  font-size: 0.96rem;
  line-height: 1.55;
  color: var(--splash-muted);
  margin: 0 0 12px;
}

.apex-splash-disclaimer {
  font-size: 0.74rem !important;
  color: var(--splash-muted);
  opacity: 0.7;
  letter-spacing: 0.01em;
  margin-top: 20px !important;
}

/* Closer --------------------------------------------------------- */

.apex-splash-closer {
  max-width: 720px;
  margin: 0 auto;
  padding: 56px 32px 80px;
  text-align: center;
}

.apex-splash-closer p {
  font-size: 1rem;
  color: var(--splash-muted);
  margin: 0 0 28px;
}

/* Site-header tweaks for the splash dark hero -------------------- */

/*
  The site-header-home class (added on index.html) already strips
  the dark background so the header floats over the hero gradient.
  These overrides scale the brand proportions and CTA styling to
  match the splash design system:

    1. Logo: bumped to 144px so the brand mark dominates the
       wordmark (was 104).
    2. Wordmark "Apex Ballistics": shrunk so the logo leads
       (was clamp(2rem, 2.6vw, 3rem); now 1.4rem).
    3. Subtitle "Where precision begins": shrunk + tightened
       (was 0.82rem with a 72px accent rule; now 0.7rem
       with a 48px rule).
    4. Access Platform CTA: rebuilt to match `.apex-splash-cta-primary`
       — Barlow Condensed bold uppercase, accent-green fill, small
       chip padding so it sits comfortably in the slim header.
       All `!important` because the legacy .btn-primary defaults
       fight us otherwise.
*/

/*
  Splash header (v0.02.47) — brand-only:
    1. Grid collapses to "logo + wordmark" only. The
       .site-header-actions column is gone in markup; we drop
       the third grid column here so the shell sizes down to
       just the brand block instead of leaving an empty
       right-side gutter.
    2. The shell is left-aligned and content-width — the header
       no longer stretches edge-to-edge with empty space.
    3. Vertical padding cut to bare-minimum so the header
       collapses to just-fit-the-logo height.
    4. Logo bumped to 144px so it dominates; wordmark + subtitle
       shrunk to label-scale beside it.
*/

/*
  Banner has two sizes:

    • DEFAULT (page at top): ~30% larger than the slim state, so
      the brand has presence the moment a visitor lands.
    • .is-scrolled (any scroll past ~12px): collapses to the slim
      version that the user signed off on previously, so the
      banner stays tight and out of the way once you're reading
      the page below the hero.

  The toggle is driven by initSplashHeaderScroll() in script2.js,
  which adds/removes `.is-scrolled` based on window.scrollY. CSS
  transitions on the size-driving properties (padding, height,
  font-size, ::before width) animate the change smoothly so the
  resize doesn't feel like a snap.
*/

.site-header-home .site-header-shell {
  grid-template-columns: auto auto !important;
  justify-content: center !important;
  gap: 0.85rem !important;
  /* DEFAULT (expanded) padding — 30% taller than the slim state. */
  padding-top: 0.2rem !important;
  padding-bottom: 0.2rem !important;
  transition: padding 240ms ease;
}

/* DEFAULT (expanded) brand sizes — ~30% larger than the slim
   state below. */
.site-header-home .site-header-mark {
  height: 94px !important;
  transition: height 240ms ease;
}

.site-header-home .site-header-title {
  font-size: 1.5rem !important;
  letter-spacing: 0.04em !important;
  line-height: 1 !important;
  transition: font-size 240ms ease;
}

.site-header-home .site-header-subtitle {
  font-size: 0.8rem !important;
  letter-spacing: 0.16em !important;
  margin-top: 0.18rem !important;
  transition: font-size 240ms ease, margin-top 240ms ease;
}

.site-header-home .site-header-subtitle::before {
  width: 47px !important;
  margin-bottom: 5px !important;
  transition: width 240ms ease, margin-bottom 240ms ease;
}

/* SCROLLED (slim) — kicks in once the user has scrolled past
   the fold. Numbers match what the user signed off on for the
   slim banner. */
.site-header-home.is-scrolled .site-header-shell {
  padding-top: 0.15rem !important;
  padding-bottom: 0.15rem !important;
}

.site-header-home.is-scrolled .site-header-mark {
  height: 72px !important;
}

.site-header-home.is-scrolled .site-header-title {
  font-size: 1.15rem !important;
}

.site-header-home.is-scrolled .site-header-subtitle {
  font-size: 0.62rem !important;
  margin-top: 0.14rem !important;
}

.site-header-home.is-scrolled .site-header-subtitle::before {
  width: 36px !important;
  margin-bottom: 4px !important;
}

/* ============================================================
   Shot log row hover/focus polish.

   The 7-col `.shot-grid-head, .shot-grid-row` template lives at
   the top of this file (single source of truth — every shot table
   on the site uses that one rule). This block only handles the
   per-row clickable affordance: pointer cursor + a subtle accent-
   tinted hover/focus background, so the user reads each row as a
   tappable target (clicking a row opens its edit form).
   ============================================================ */
.shot-grid-row-clickable {
  cursor: pointer;
  transition: background-color 150ms ease, border-color 150ms ease;
}

.shot-grid-row-clickable:hover,
.shot-grid-row-clickable:focus-visible {
  background-color: rgba(131, 227, 93, 0.06);
  outline: none;
}

.shot-grid-row-clickable:focus-visible {
  outline: 1px solid rgba(131, 227, 93, 0.45);
  outline-offset: -1px;
}

/* ============================================================
   Firearm workflow page — vertical separator between the two
   columns (v0.02.51).

   The grid (.firearm-workflow-grid) holds the cartridge stats
   + load list on the left and the session/load detail panel on
   the right. A 1px hairline in --app-divider mirrors the same
   separator language the rest of the workflow page uses
   between cards. Only kicks in at the lg breakpoint when the
   grid is actually side-by-side; on stacked layouts the
   separator would just look like a random horizontal rule
   between unrelated content blocks.
   ============================================================ */
@media (min-width: 1024px) {
  .firearm-workflow-grid {
    position: relative;
  }
  .firearm-workflow-grid::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    /* Center of the gap-6 (1.5rem) gutter between columns. */
    left: calc(50% - 0.5px);
    width: 1px;
    background: var(--app-divider, rgba(143, 156, 149, 0.20));
    pointer-events: none;
  }
}
