/* ───────────────────────────────────────────────────────────────────────────
   TireGuard design system — direction "Flanc" (the tire sidewall), 2026-09-13.
   Implements docs/BRAND.md. One stylesheet, no build step.

   Public pages are dark rubber. Pages people read for a long time or print —
   the ops board, upload page and image guide — put class="theme-light" on
   <body>. Header, footer, admin sidebar and phone booking bar stay dark on
   every page. Use the semantic tokens (--bg, --text, --accent…) in pages;
   the legacy names further down only keep older inline styles working.
   ─────────────────────────────────────────────────────────────────────────── */

:root {
  /* Flanc palette */
  --cauciuc:#1E1D1B; --cauciuc-2:#242320; --cauciuc-3:#161513;
  --flanc:#2A2926; --flanc-2:#33312D; --relief:#3A3834; --relief-2:#5A564F;
  --creta:#ECE8DF; --creta-2:#B8B2A6; --creta-3:#A39D91;
  --sigilant:#F0A81C; --sigilant-hi:#F7BC45;

  --r-ctl:3px; --r-card:6px;
  --shell:1280px; --pad:clamp(20px, 4.4vw, 64px);
  --f-13:13px; --f-15:15px; --f-17:17px;
  --f-20:clamp(18px, 1.4vw, 20px);
  --f-26:clamp(24px, 2.2vw, 30px);
  --f-34:clamp(32px, 3.6vw, 44px);
  --f-46:clamp(42px, 5vw, 72px);
  --f-64:clamp(62px, 9vw, 136px);
  --display:"Sofia Sans Extra Condensed", "Arial Narrow", system-ui, sans-serif;
}

/* Dark tokens: the default, and forced on the chrome that is dark everywhere. */
:root, .hdr, .ftr, .side, .mbar, .on-dark {
  --bg:var(--cauciuc); --bg-alt:var(--cauciuc-2); --bg-deep:var(--cauciuc-3);
  --surface:var(--flanc); --surface-2:var(--flanc-2);
  --border:var(--relief); --border-strong:var(--relief-2);
  --text:var(--creta); --text-2:var(--creta-2); --text-3:var(--creta-3);
  --accent:var(--sigilant); --accent-hi:var(--sigilant-hi); --on-accent:#1A1917; --accent-text:var(--sigilant);
  --field:#171614;
  --ok:#3CC08E; --ok-bg:rgba(60,192,142,.15); --ok-text:#6BD8AE;
  --bad:#E0705F; --bad-bg:rgba(224,112,95,.15); --bad-text:#F2998A;
  --warn-bg:rgba(240,168,28,.16); --warn-text:#F4C26A;
  --plain-bg:var(--flanc-2); --plain-text:var(--creta-2);
  --shadow:0 18px 44px rgba(0,0,0,.38);
  --relief-shadow:0 1px 0 rgba(255,255,255,.07), 0 -1px 0 rgba(0,0,0,.6);
  color-scheme:dark;
}

.theme-light {
  --bg:#F4F2ED; --bg-alt:#ECE9E2; --bg-deep:#E4E0D7;
  --surface:#FFFFFF; --surface-2:#F4F2ED;
  --border:#DDD8CE; --border-strong:#B7B0A3;
  --text:#1E1D1B; --text-2:#57534C; --text-3:#66615A;
  --accent-text:#8F5A00; --field:#FFFFFF;
  --ok:#18B884; --ok-bg:rgba(24,184,132,.14); --ok-text:#0A6848;
  --bad:#D64545; --bad-bg:rgba(214,69,69,.12); --bad-text:#A62F2F;
  --warn-bg:rgba(240,168,28,.2); --warn-text:#7A5000;
  --plain-bg:#ECE9E2; --plain-text:#57534C;
  --shadow:0 10px 30px rgba(30,29,27,.08);
  --relief-shadow:none;
  color-scheme:light;
}

/* Legacy names from the first design, mapped onto the semantic tokens.
   Declared on every token scope so they resolve against the right theme. */
:root, .hdr, .ftr, .side, .mbar, .on-dark, .theme-light {
  --paper:var(--bg); --white:var(--surface); --line:var(--border); --slate:var(--text-2);
  --amber:var(--accent); --amber-deep:var(--accent-text); --seal:var(--ok); --alert:var(--bad);
  --ink:var(--text); --graphite:var(--bg-alt); --steel:var(--border);
  --on-dark-dim:var(--text-2); --on-dark-mid:var(--text-2); --on-dark-hi:var(--text); --hairline-dark:var(--border);
}

*, *::before, *::after { box-sizing:border-box; }
html { scroll-behavior:smooth; background:var(--bg); -webkit-tap-highlight-color:rgba(240,168,28,.22); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } }

body {
  margin:0; min-height:100vh; background:var(--bg); color:var(--text);
  font-family:"Golos Text", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-size:16px; line-height:1.6;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}

h1,h2,h3,h4,.dsp {
  font-family:var(--display); font-weight:800; text-transform:uppercase;
  letter-spacing:.005em; line-height:.92; margin:0; text-wrap:balance;
}
h1 { font-weight:900; }
.relief { text-shadow:var(--relief-shadow); }
p { margin:0; }
img { max-width:100%; height:auto; display:block; }
a { color:var(--accent-text); text-decoration:none; }
a:hover { color:var(--text); }
button, input, select, textarea { font:inherit; color:inherit; }
::selection { background:var(--accent); color:var(--on-accent); }
:focus-visible { outline:3px solid var(--accent); outline-offset:2px; border-radius:2px; }

.num { font-variant-numeric:tabular-nums; }
.shell { max-width:var(--shell); margin:0 auto; padding-inline:var(--pad); width:100%; }
.sr { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
      clip:rect(0 0 0 0); white-space:nowrap; border:0; }
[hidden] { display:none !important; }

/* ── Sections ─────────────────────────────────────────────────────────────── */
.sec { padding-block:clamp(64px, 9vw, 120px); }
.sec--dark { background:var(--bg); }
.sec--alt, .sec--graphite { background:var(--bg-alt); }
.sec--deep { background:var(--bg-deep); }
.sec--amber { background:var(--accent); color:var(--on-accent); }
.h-sec { font-size:var(--f-46); }
.lead { font-size:clamp(17px, 1.4vw, 20px); color:var(--text-2); line-height:1.6; }
.muted { color:var(--text-2); }
.eyebrow { font-size:12.5px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--accent-text); }

/* Tread: the divider between major bands. */
.tread {
  height:24px; background-color:var(--bg-deep); background-repeat:repeat-x; background-position:center;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='24'%3E%3Cpath d='M0 24 L18 4 L36 24' fill='none' stroke='%2334322D' stroke-width='7'/%3E%3C/svg%3E");
}
/* Sidewall lettering: raised rubber text, decorative. */
.sidewall { overflow:hidden; white-space:nowrap; background:var(--bg-deep); border-block:1px solid var(--border); padding-block:16px; }
.sidewall span::before { content:attr(data-band); }
.sidewall span {
  display:inline-block; padding-right:.7em; font-family:var(--display); font-weight:800;
  font-size:clamp(26px, 3vw, 40px); letter-spacing:.16em; text-transform:uppercase;
  color:#36342F; text-shadow:0 1px 0 #4C4841, 0 -1px 0 #0A0908;
}

.badge {
  display:inline-flex; align-items:center; gap:9px; align-self:flex-start;
  padding:7px 14px; border:1px solid var(--border-strong); border-radius:999px;
  background:rgba(22,21,19,.6); color:#D3CEC4; font-size:14.5px; font-weight:500;
}
.badge i { width:7px; height:7px; border-radius:50%; background:var(--ok); flex-shrink:0; }

/* ── Buttons ──────────────────────────────────────────────────────────────── */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:54px; padding:0 30px; border:1px solid transparent;
  border-radius:var(--r-ctl); font-size:16px; font-weight:700;
  cursor:pointer; text-align:center;
  transition:background-color .16s, color .16s, border-color .16s, transform .06s;
}
.btn:active { transform:translateY(1px); }
.btn--primary { background:var(--accent); color:var(--on-accent); }
.btn--primary:hover { background:var(--accent-hi); color:var(--on-accent); }
.btn--ink { background:var(--text); color:var(--bg); }
.btn--ink:hover { background:var(--text-2); color:var(--bg); }
.btn--ghost { background:transparent; border-color:var(--border-strong); color:var(--text); }
.btn--ghost:hover { border-color:var(--text); color:var(--text); }
.btn--sm { min-height:42px; padding:0 18px; font-size:14.5px; }
.btn[disabled], .btn[aria-disabled="true"] { background:var(--surface-2); color:var(--text-3); border-color:var(--surface-2); cursor:not-allowed; }
.btn--block { width:100%; }

/* ── Cards, chips ─────────────────────────────────────────────────────────── */
.card { background:var(--surface); border:1px solid var(--border); border-radius:var(--r-card); }
.chip { display:inline-flex; align-items:center; gap:7px; padding:4px 11px; border-radius:999px; font-size:12.5px; font-weight:600; letter-spacing:.02em; }
.chip--ok    { background:var(--ok-bg);    color:var(--ok-text); }
.chip--warn  { background:var(--warn-bg);  color:var(--warn-text); }
.chip--bad   { background:var(--bad-bg);   color:var(--bad-text); }
.chip--plain { background:var(--plain-bg); color:var(--plain-text); }

/* ── Forms ────────────────────────────────────────────────────────────────── */
.field { display:flex; flex-direction:column; gap:8px; }
.label { font-size:12.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-2); }
.input, .select, .textarea {
  width:100%; min-height:52px; padding:13px 15px; background:var(--field); color:var(--text);
  border:1px solid var(--border-strong); border-radius:var(--r-ctl); font-size:16px;
  transition:border-color .14s, box-shadow .14s;
}
.select { background-color:var(--field); color:var(--text); }
.input::placeholder, .textarea::placeholder { color:var(--text-3); }
.textarea { min-height:96px; resize:vertical; }
.input:focus, .select:focus, .textarea:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(240,168,28,.25); }
.input[aria-invalid="true"], .textarea[aria-invalid="true"] { border-color:var(--bad); }
.err { font-size:14px; color:var(--bad-text); }
.hint { font-size:13.5px; color:var(--text-2); }

/* Big tappable selector — tire class, day, time. */
.opt {
  display:flex; align-items:center; gap:14px; width:100%; min-height:56px;
  padding:16px 18px; background:var(--surface); color:var(--text);
  border:2px solid var(--border); border-radius:var(--r-card); cursor:pointer; text-align:left;
  transition:border-color .14s, box-shadow .14s, background-color .14s;
}
.opt:hover { border-color:var(--border-strong); }
.opt[aria-pressed="true"], .opt.is-on { border-color:var(--accent); background:var(--surface-2); box-shadow:inset 0 0 0 1px var(--accent); }
.opt[disabled] { background:transparent; border-color:var(--border); color:var(--text-3);
                 cursor:not-allowed; text-decoration:line-through; box-shadow:none; }
.opt--tile { flex-direction:column; align-items:center; justify-content:center; gap:2px; min-height:64px; padding:12px 6px; text-align:center; }

.grid { display:grid; gap:16px; }
.g1 { grid-template-columns:minmax(0,1fr); }
.g2 { grid-template-columns:repeat(2, minmax(0,1fr)); }
.g3 { grid-template-columns:repeat(3, minmax(0,1fr)); }
.g4 { grid-template-columns:repeat(4, minmax(0,1fr)); }
.g6 { grid-template-columns:repeat(6, minmax(0,1fr)); }
.row { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.stack { display:flex; flex-direction:column; }
.grow { flex-grow:1; }
@media (max-width: 980px) { .g4, .g3 { grid-template-columns:repeat(2, minmax(0,1fr)); } .g6 { grid-template-columns:repeat(4, minmax(0,1fr)); } }
@media (max-width: 620px) { .g2, .g3, .g4 { grid-template-columns:minmax(0,1fr); } .g6 { grid-template-columns:repeat(3, minmax(0,1fr)); } }

/* ── Header ───────────────────────────────────────────────────────────────── */
.hdr {
  position:sticky; top:0; z-index:40; color:var(--text);
  background:rgba(22,21,19,.9); -webkit-backdrop-filter:saturate(1.2) blur(12px); backdrop-filter:saturate(1.2) blur(12px);
  border-bottom:1px solid rgba(90,86,79,.4);
}
.hdr__in { display:flex; align-items:center; gap:clamp(14px, 2.2vw, 36px); min-height:72px; }
.brand { display:flex; align-items:center; gap:11px; color:var(--text); flex-shrink:0; }
.brand__mark { flex-shrink:0; }
.brand__word { font-family:var(--display); font-weight:900; font-size:28px; letter-spacing:.04em; text-transform:uppercase; text-shadow:var(--relief-shadow); }
.brand__word i { font-style:normal; color:var(--accent); }
/* Uploaded logo sizes. lib/images.js quotes these numbers to the owner. */
.brand__img { width:auto; height:auto; max-height:44px; max-width:240px; }
.ftr .brand__img { max-height:40px; max-width:220px; }
.card .brand__img { max-height:36px; max-width:220px; }
.side .brand__img { max-height:30px; max-width:170px; }
@media (max-width: 560px) {
  .hdr .brand__img { max-height:34px; max-width:150px; }
  .hdr__in { gap:10px; }
  .langs button { padding:6px 9px; }
  .hdr .btn--sm { padding:0 12px; }
}
.nav { display:flex; align-items:center; gap:clamp(14px, 1.8vw, 28px); font-size:15px; font-weight:500; }
.nav a { color:var(--text-2); }
.nav a:hover { color:var(--text); }
.langs { display:flex; border:1px solid var(--border-strong); border-radius:999px; overflow:hidden; flex-shrink:0; }
.langs button { padding:6px 13px; background:transparent; border:0; color:var(--text-2); font-size:12.5px; font-weight:600; cursor:pointer; }
.langs button[aria-pressed="true"] { background:var(--text); color:var(--bg); font-weight:700; }
.burger { display:none; background:transparent; border:0; padding:8px; cursor:pointer; color:var(--text); }
@media (max-width: 1120px) {
  .nav { display:none; }
  .nav.is-open { display:flex; position:absolute; left:0; right:0; top:100%; flex-direction:column; align-items:stretch; gap:0;
                 background:var(--bg-deep); border-bottom:1px solid var(--border); padding:8px var(--pad) 20px; }
  .nav.is-open a { padding:14px 0; border-bottom:1px solid var(--border); font-size:17px; }
  .burger { display:block; }
}

/* ── Footer ───────────────────────────────────────────────────────────────── */
.ftr { background:var(--bg-deep); color:var(--text-2); padding-block:64px 40px; border-top:1px solid var(--border); }
.ftr__h { font-size:12.5px; font-weight:600; text-transform:uppercase; letter-spacing:.1em; color:var(--text-2); margin:0 0 12px; }
.ftr a { color:var(--text-2); display:block; padding:4px 0; }
.ftr a:hover { color:var(--text); }

/* ── Reveal on scroll ─────────────────────────────────────────────────────── */
.rv { opacity:0; transform:translateY(12px); transition:opacity .32s cubic-bezier(.2,.7,.3,1), transform .32s cubic-bezier(.2,.7,.3,1); }
.rv.is-in { opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce) { .rv { opacity:1; transform:none; transition:none; } }

/* ── Toast ────────────────────────────────────────────────────────────────── */
.toast {
  position:fixed; left:50%; bottom:24px; transform:translateX(-50%); z-index:100;
  max-width:min(520px, calc(100vw - 32px)); padding:14px 20px; border-radius:var(--r-card);
  background:#2A2926; color:#ECE8DF; border:1px solid #5A564F; font-size:15px; box-shadow:0 12px 34px rgba(0,0,0,.35);
}
.toast--bad { background:#7E2A20; border-color:#A8473A; color:#FFFFFF; }
.toast--ok  { background:#0E5F44; border-color:#1F8A64; color:#FFFFFF; }

/* ── Image specification (upload page, /ghid-imagini) ─────────────────────── */
.spec__dl { display:grid; grid-template-columns:minmax(130px, max-content) minmax(0,1fr); gap:9px 18px; margin:0; font-size:14.5px; }
.spec__dl dt { font-size:12.5px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--text-2); padding-top:3px; }
.spec__dl dd { margin:0; }
.spec__ul { margin:0; padding-left:18px; }
.spec__cols { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:14px; margin-top:18px; }
.spec__do, .spec__dont { padding:14px 16px; border-radius:var(--r-card); background:var(--surface); border:1px solid var(--border); }
.spec__do { border-top:3px solid var(--ok); }
.spec__dont { border-top:3px solid var(--bad); }
.spec__h { font-family:var(--display); font-weight:800; text-transform:uppercase; font-size:17px; margin:0 0 8px; }
.spec__do ul, .spec__dont ul { margin:0; padding-left:18px; font-size:14px; }
.spec__do li, .spec__dont li { margin-bottom:6px; }
.spec__note { margin-top:14px; padding:12px 14px; border-radius:var(--r-card); background:var(--warn-bg); color:var(--warn-text); font-size:13.5px; }
.spec__fb { margin-top:12px; font-size:13.5px; color:var(--text-2); }
.spec__warn { margin:0; padding:10px 12px; border-radius:var(--r-card); background:var(--warn-bg); color:var(--warn-text); font-size:13px; }
@media (max-width: 620px) {
  .spec__cols { grid-template-columns:minmax(0,1fr); }
  .spec__dl { grid-template-columns:minmax(0,1fr); gap:2px; }
  .spec__dl dd { margin-bottom:10px; }
}

/* ── Phone header and booking bar ─────────────────────────────────────────── */
.nav__cta { display:none; }
@media (max-width: 1120px) {
  .hdr__wide { display:none !important; }
  .nav.is-open .nav__cta { display:block; color:var(--accent); font-weight:700; }
}
@media (max-width: 560px) { .hdr__opt { display:none !important; } }
.mbar { display:none; }
@media (max-width: 560px) {
  .mbar { position:fixed; left:0; right:0; bottom:0; z-index:45; display:flex; align-items:center;
          justify-content:space-between; gap:12px; padding:10px 16px max(12px, env(safe-area-inset-bottom));
          background:rgba(22,21,19,.97); border-top:1px solid var(--border);
          transform:translateY(110%); transition:transform .22s ease; color:var(--text); }
  .mbar.is-on { transform:none; }
  .mbar .btn { min-height:48px; padding:0 22px; }
  .has-mbar .ftr { padding-bottom:104px; }
}
@media (prefers-reduced-motion: reduce) { .mbar { transition:none; } }

/* ── Accessibility and touch (axe-core + Vercel Web Interface Guidelines) ──── */
.nav a, .btn, .langs button { white-space:nowrap; }
.nav__menu-only { display:none; }
@media (max-width: 1120px) { .nav.is-open .nav__menu-only { display:block; } }
.hdr .muted { color:var(--text-2); }
section[id], article[id] { scroll-margin-top:88px; }
p a:not(.btn), li a:not(.btn) { text-decoration:underline; text-underline-offset:2px; text-decoration-thickness:1px; }
a, button, summary, input, select, textarea, label { touch-action:manipulation; }
.skip { position:absolute; left:12px; top:-80px; z-index:200; padding:10px 16px; border-radius:var(--r-ctl);
        background:var(--sigilant); color:#1A1917; font-weight:700; }
.skip:focus { top:12px; color:#1A1917; }
@media (pointer: coarse) {
  .langs button { min-height:44px; padding:0 14px; }
  .burger { min-width:48px; min-height:48px; }
  .btn--sm { min-height:44px; }
  .side__nav button { min-height:44px; }
  .spec summary { padding:12px 0; }
  a.brand { min-height:44px; }
  .hdr a.num { display:inline-block; padding:12px 0; }
  .ftr a { padding:12px 0; }
}
