/* ==========================================================================
   gv-system.css — shared GoodVans design foundations
   ADDITIVE ONLY. Nothing here is applied to the signed-off Level 1 (City) or
   Level 2 (Residential) pages; those keep their own stylesheets untouched.
   This file exists so new templates stop duplicating the token set.
   Scope everything under a page namespace (.gv-l3, etc). No global selectors.
   ========================================================================== */

.gv-sys{
  /* brand ------------------------------------------------------------- */
  --gv-red:var(--thm);
  --gv-ink:#1D1A1F;
  --gv-ink-2:#17161D;

  /* grounds ----------------------------------------------------------- */
  --gv-white:#FFFFFF;
  --gv-warm:#FAF8F5;
  --gv-warm-2:#F8F6F3;
  --gv-cool:#F4F7FB;
  --gv-cool-2:#F1F5FA;
  --gv-dark:#1B0D0C;

  /* lines and muted text ---------------------------------------------- */
  --gv-line:rgb(29 26 31 / .12);
  --gv-line-2:rgb(29 26 31 / .22);
  --gv-muted:rgb(29 26 31 / .74);

  /* geometry ----------------------------------------------------------- */
  --gv-radius:14px;
  --gv-radius-sm:8px;
  --gv-wrap:1220px;
  --gv-sec:clamp(44px,4.6vw,76px);
  --gv-gap:clamp(24px,2.8vw,48px);
  --gv-measure:70ch;

  /* type scale --------------------------------------------------------- */
  --gv-fs-display:clamp(32px,3.4vw,50px);
  --gv-fs-h2:clamp(26px,2.5vw,36px);
  --gv-fs-h3:19px;
  --gv-fs-lead:clamp(17px,1.5vw,19px);
  --gv-fs-body:clamp(16.5px,1.15vw,17.5px);
  --gv-fs-small:15.5px;
  --gv-fs-meta:13px;

  font-family:var(--font);
  font-size:var(--gv-fs-body);
  line-height:1.66;
  color:var(--gv-ink);
  background:var(--gv-white);
  overflow-x:clip;
}

.gv-sys *,.gv-sys *::before,.gv-sys *::after{box-sizing:border-box}
.gv-sys p{margin:0 0 16px}
.gv-sys p:last-child{margin-bottom:0}
.gv-sys h1,.gv-sys h2,.gv-sys h3{
  font-family:var(--font);font-weight:700;color:inherit;margin:0;letter-spacing:-.018em;
}
.gv-sys h2{font-size:var(--gv-fs-h2);line-height:1.12;margin-bottom:22px;text-wrap:balance;max-width:24ch}
.gv-sys h3{font-size:var(--gv-fs-h3);line-height:1.3;margin-bottom:6px;font-weight:600}
.gv-sys a{
  color:var(--gv-red);text-decoration:underline;
  text-underline-offset:3px;text-decoration-thickness:1px;
}
.gv-sys a:hover{text-decoration-thickness:2px}
.gv-sys :focus-visible{outline:3px solid var(--gv-red);outline-offset:3px;border-radius:2px}
.gv-sys img{max-width:100%;height:auto}
.gv-sys .gv-sr{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* ---------- layout primitives ---------- */
.gv-sys .gv-wrap{
  width:100%;max-width:var(--gv-wrap);margin-inline:auto;
  padding-inline:clamp(18px,3vw,32px);
}
.gv-sys .gv-sec{padding-block:var(--gv-sec);padding-inline:0;margin:0}
.gv-sys .gv-sec--tight{padding-block:calc(var(--gv-sec) * .68)}
.gv-sys .gv-prose{max-width:var(--gv-measure)}

/* ---------- grounds ---------- */
.gv-sys .gv-bg-white{background:var(--gv-white)}
.gv-sys .gv-bg-warm{background:var(--gv-warm)}
.gv-sys .gv-bg-warm2{background:var(--gv-warm-2)}
.gv-sys .gv-bg-cool{background:var(--gv-cool)}
.gv-sys .gv-bg-cool2{background:var(--gv-cool-2)}
.gv-sys .gv-bg-dark{background:var(--gv-dark);color:#fff}
.gv-sys .gv-bg-dark h2,.gv-sys .gv-bg-dark h3{color:#fff}

/* ---------- buttons ---------- */
.gv-sys .gv-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:50px;padding:0 24px;border:2px solid transparent;
  border-radius:var(--gv-radius-sm);
  font-family:var(--font);font-weight:600;font-size:15.5px;line-height:1.2;
  text-align:center;text-decoration:none;cursor:pointer;
  transition:background-color .18s ease,color .18s ease,border-color .18s ease;
}
.gv-sys .gv-btn svg{flex:0 0 auto}
.gv-sys .gv-btn--primary{background:var(--gv-red);border-color:var(--gv-red);color:#fff}
.gv-sys .gv-btn--outline{background:transparent;border-color:var(--gv-line-2);color:var(--gv-ink)}
.gv-sys .gv-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}
@media (hover:hover){
  .gv-sys .gv-btn--primary:hover{background:var(--gv-ink);border-color:var(--gv-ink);color:#fff}
  .gv-sys .gv-btn--outline:hover{border-color:var(--gv-ink);background:var(--gv-ink);color:#fff}
}

/* ---------- eyebrow and rule ---------- */
.gv-sys .gv-eyebrow{
  display:inline-flex;align-items:center;gap:12px;
  font-size:var(--gv-fs-meta);font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gv-muted);margin-bottom:16px;
}
.gv-sys .gv-eyebrow::before{content:"";width:28px;height:2px;background:var(--gv-red)}
.gv-sys .gv-rule::before{
  content:"";display:block;width:40px;height:3px;background:var(--gv-red);margin-bottom:22px;
}

/* ---------- breadcrumb ---------- */
.gv-sys .gv-crumb{padding-block:13px;font-size:var(--gv-fs-meta);color:var(--gv-muted)}
.gv-sys .gv-crumb ol{
  display:flex;flex-wrap:wrap;align-items:center;gap:7px;list-style:none;margin:0;padding:0;
}
.gv-sys .gv-crumb li+li::before{content:"\203A";margin-right:7px;color:var(--gv-line-2)}
.gv-sys .gv-crumb a{color:var(--gv-muted);text-decoration:none}
.gv-sys .gv-crumb a:hover{color:var(--gv-red);text-decoration:underline}
.gv-sys .gv-crumb [aria-current]{color:var(--gv-ink);font-weight:500}

/* ---------- media ---------- */
.gv-sys .gv-art{overflow:hidden;border-radius:var(--gv-radius);background:var(--gv-cool-2)}
.gv-sys .gv-art img{
  display:block;width:100%;height:100%;object-fit:cover;object-position:var(--fp,50% 50%);
}
.gv-sys .gv-art--32{aspect-ratio:3/2}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .gv-sys *,.gv-sys *::before,.gv-sys *::after{
    transition-duration:.01ms!important;animation-duration:.01ms!important;
  }
}
