/* The Weather Agent — theme stylesheet ("Coastal Chart").
   SINGLE TOKEN SOURCE for the whole site. Every page links this file and nothing else:
   the tokens at :root are extracted from the homepage design handoff, the components below
   are shared, and page-specific rules are the exception, not the rule.

   Rebuilt from `design_handoff_weather_agent_home/` (a design reference — its per-element
   inline styles were NOT transcribed; they were extracted into this system).

   To change the site's look, change the tokens here. That is the point. */

:root{
  /* ---- palette (design handoff, final) ----
     Two values are accessibility-tuned away from the handoff: --faint and --accent both
     failed WCAG AA on paper (2.90:1 and 4.26:1). Nearest compliant values are used so the
     design intent is preserved. Documented in the vault. */
  --paper:#F2F2EA;          /* page background */
  --paper-top:#E2ECEA;      /* header gradient start */
  --ink:#10303B;            /* headings / strong text */
  --body:#45636E;
  --faint:#566F79;          /* was #7B929B → 2.90:1 on paper; now 4.73:1 */
  --accent:#0D7492;         /* was #0E7C9C → 4.26:1 on paper; now 4.75:1 */
  --accent-hover:#0A5E77;
  --tint-dark:#7FD1E8;      /* accent on dark */
  --go:#3FA97C;             /* success / status green */
  --card:#FBFAF4;
  --panel:#FFFFFF;
  --dark:#10303B;
  --dark-tile:#1a3d4d;
  --dark-text:#F2F2EA;
  --dark-muted:#B9CDD4;
  --hair-card:rgba(16,48,59,.15);
  --hair-rule:rgba(16,48,59,.2);
  --hair-soft:rgba(16,48,59,.12);
  --accent-line:rgba(13,116,146,.35);
  --accent-wash:rgba(13,116,146,.06);

  /* ---- depth ---- */
  --shadow-card:0 6px 22px rgba(16,48,59,.06);
  --shadow-hero:0 10px 32px rgba(16,48,59,.08);
  --shadow-dark:0 6px 22px rgba(16,48,59,.18);

  /* ---- type ---- */
  --serif:'Libre Caslon Text',Georgia,'Times New Roman',serif;
  --mono:'Spline Sans Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  /* ---- layout ---- */
  --col:1100px; --gutter:28px; --section-gap:88px;

  /* ---- legacy alias so nothing depends on the old dark palette ---- */
  --bg:var(--paper); --line:var(--hair-card); --text:var(--ink); --muted:var(--body);
  --lbl:var(--faint); --warn:#8a5a12; --bad:#a33b3b; --code-bg:var(--panel); --code-text:var(--body);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background-color:var(--paper);color:var(--ink);
  font-family:var(--serif);font-size:16px;line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--ink);text-decoration:none;transition:color .15s ease}
a:hover{color:var(--accent)}
::selection{background:var(--accent);color:#fff}
code,pre{font-family:var(--mono)}

/* ================= layout ================= */
.shell{min-height:100vh;background:linear-gradient(180deg,var(--paper-top) 0%,var(--paper) 420px);background-color:var(--paper)}
.wrap{max-width:var(--col);margin:0 auto;padding:0 var(--gutter)}
.wrap.wide{max-width:920px}
main.wrap{padding-top:8px;padding-bottom:64px}
.section{margin-bottom:var(--section-gap)}
.section-tight{margin-bottom:44px}

/* ================= nav (shared by every page) ================= */
.navbar{border-bottom:1px solid var(--hair-rule)}
.nav{
  display:flex;align-items:center;gap:24px;flex-wrap:wrap;
  padding:22px 0;max-width:var(--col);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter);
}
.wordmark{
  font-family:var(--mono);font-size:15px;font-weight:500;letter-spacing:.04em;
  margin-right:auto;color:var(--ink);
}
.wordmark:hover{color:var(--ink)}
.nav-links{display:flex;gap:22px;align-items:center;font-family:var(--mono);font-size:13px}
.nav-links a{color:var(--ink)}
.nav-links a[aria-current="page"]{color:var(--accent)}
.nav-pill{background:var(--accent);color:var(--paper)!important;padding:10px 18px;border-radius:999px}
.nav-pill:hover{background:var(--accent-hover);color:var(--paper)!important}

/* ================= hero (homepage) ================= */
.hero{padding:76px 0 64px;text-align:center;max-width:800px;margin:0 auto}
.eyebrow-pill{
  display:inline-block;font-family:var(--mono);font-size:12.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--accent);border:1px solid var(--accent-line);
  border-radius:999px;padding:8px 18px;margin:0 0 26px;background:rgba(255,255,255,.5);
}
.hero h1{font-size:clamp(40px,5.4vw,62px);line-height:1.1;font-weight:400;margin:0 0 24px;text-wrap:pretty}
.hero h1 em{color:var(--accent)}
.lede{font-size:18px;line-height:1.65;color:var(--body);margin:0 auto 34px;max-width:56ch}
.lede strong{color:var(--ink)}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}
.status-line{font-family:var(--mono);font-size:12px;color:var(--faint);margin:28px 0 0}
.status-line .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--go);margin-right:8px}
.status-line a{color:var(--faint);text-decoration:underline}
.status-line a:hover{color:var(--accent)}

/* ================= headings ================= */
h1{font-size:clamp(30px,4.4vw,44px);line-height:1.12;font-weight:400;margin:0 0 18px}
h2{font-size:26px;font-weight:700;margin:0 0 10px}
h3{font-size:21px;font-weight:700;margin:0 0 10px}
h4{font-family:var(--mono);font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:0 0 10px}
.sub{font-size:17px;line-height:1.65;color:var(--body);margin:18px 0 0;max-width:70ch}
.eyebrow{font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:500}
.section-eyebrow{
  font-family:var(--mono);font-size:14px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:var(--faint);margin:0 0 22px;display:flex;align-items:center;gap:16px;
}
.section-eyebrow::after{content:"";flex:1;height:1px;background:var(--hair-card)}
.lbl{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:500}
.note{font-size:13px;line-height:1.7;color:var(--faint)}
.muted{color:var(--faint)}

/* ================= buttons ================= */
.btn{
  display:inline-block;font-family:var(--mono);font-size:14px;font-weight:500;
  padding:13px 22px;border-radius:999px;border:1px solid transparent;
}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-hover);color:#fff}
.btn-secondary{background:var(--panel);border-color:rgba(16,48,59,.22);color:var(--ink)}
.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}
.btn-outline{background:transparent;border-color:var(--accent);color:var(--accent)}
.btn-outline:hover{background:var(--accent);color:#fff}
.btn-sm{font-size:14px;padding:10px 18px}
a.btn:hover{color:inherit}

/* ================= cards / panels ================= */
.card{
  background:var(--card);border:1px solid var(--hair-card);border-radius:14px;
  padding:30px 28px;box-shadow:var(--shadow-card);
}
.card h3{font-size:21px}
.card p{font-size:15.5px;line-height:1.65;color:var(--body);margin:0}
.card-dark{background:var(--dark);color:var(--dark-text);border-color:transparent;box-shadow:var(--shadow-dark)}
.card-dark .lbl{color:var(--tint-dark)}
.card-dark p{color:var(--dark-muted)}
.panel{background:var(--panel);border:1px solid var(--hair-card);border-radius:14px;padding:22px 24px;margin-top:20px}
.panel-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.panel-head h3{margin:0}
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.api-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:28px;align-items:start}
.api-chips{display:grid;gap:12px}
.api-grid p{font-size:17px;line-height:1.7;color:var(--body);margin:0;max-width:46ch}

/* ================= bands ================= */
.band{
  border:1px solid var(--accent-line);border-radius:14px;background:var(--accent-wash);
  padding:30px 32px;display:flex;gap:28px;align-items:center;flex-wrap:wrap;
}
.band-copy{flex:1 1 380px}
.band .lbl{color:var(--accent)}
.band h2{font-size:26px}
.band p{font-size:16px;line-height:1.65;color:var(--body);margin:0}

/* ================= code ================= */
.code-hero{
  margin:0 auto 72px;max-width:720px;background:var(--panel);border:1px solid var(--hair-card);
  border-radius:14px;overflow:hidden;box-shadow:var(--shadow-hero);
}
.code-hero figcaption{
  display:flex;justify-content:space-between;gap:12px;padding:13px 20px;
  border-bottom:1px solid var(--hair-soft);font-family:var(--mono);font-size:12.5px;color:var(--faint);
}
.code-hero .ok{color:var(--go)}
.code-hero pre{margin:0;padding:22px 20px;font-size:14px;line-height:1.75;color:var(--body);overflow-x:auto}
.code-hero .str{color:var(--ink)}
.code-hero .src{color:var(--accent)}
.code-hero .caption{
  margin:0;padding:12px 20px;border-top:1px dashed var(--hair-card);
  font-family:var(--mono);font-size:12px;color:var(--faint);
}
.chip{
  font-family:var(--mono);font-size:13.5px;color:var(--ink);background:var(--panel);
  border:1px solid var(--hair-card);border-radius:8px;padding:14px 18px;white-space:nowrap;
}
.chip-code{
  display:block;font-family:var(--mono);font-size:13.5px;color:var(--ink);background:var(--panel);
  border:1px solid var(--hair-card);border-radius:8px;padding:15px 18px;overflow-x:auto;
}
.chip-code .verb{color:var(--go)}
.chip-code .cont{color:var(--faint)}
.api{
  margin-top:16px;background:var(--panel);border:1px solid var(--hair-card);border-radius:10px;
  padding:15px 17px;font-family:var(--mono);font-size:12.7px;overflow-x:auto;white-space:pre;
  color:var(--body);line-height:1.7;
}
.api .k{color:var(--go)}
.api .s{color:var(--accent)}
.api .c{color:var(--faint)}
code{font-size:12.5px;background:var(--card);border:1px solid var(--hair-card);border-radius:4px;padding:1px 5px;color:var(--body)}
.link-mono{font-family:var(--mono);font-size:13px;color:var(--accent);text-decoration:underline}
.link-mono:hover{color:var(--accent-hover)}

/* ================= API reference components ================= */
.ep{border:1px solid var(--hair-card);border-radius:14px;background:var(--card);padding:22px 24px;margin-top:20px;box-shadow:var(--shadow-card)}
.ep-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.path{font-family:var(--mono);font-size:14.5px;font-weight:650;color:var(--ink)}
.m{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.06em;padding:3px 8px;border-radius:5px;border:1px solid transparent}
.m-get{background:#e6f4ee;border-color:#bcdccf;color:#1f6b4d}
.m-post{background:#e8f1f7;border-color:#c2d9e6;color:var(--accent)}
.m-delete{background:#f7e9e9;border-color:#e2c5c5;color:#9c3b3b}
.auth{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:500;margin-left:auto}
.desc{color:var(--body);font-size:14px;margin:12px 0 0}
dl{margin:14px 0 0;display:grid;grid-template-columns:170px 1fr;gap:6px 16px;font-size:14px}
dt{color:var(--faint);font-family:var(--mono);font-size:12px;letter-spacing:.04em;text-transform:uppercase;padding-top:3px}
dd{margin:0;color:var(--body)}
.kv{display:grid;grid-template-columns:170px 1fr;gap:6px 16px;font-size:14px;margin-top:12px}
.kv .key{color:var(--faint);font-family:var(--mono);font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.kv .val,.val{color:var(--body)}
.out{margin-top:14px;background:var(--panel);border:1px solid var(--hair-card);border-radius:10px;padding:15px 17px;font-family:var(--mono);font-size:12.7px;overflow-x:auto;white-space:pre;color:var(--body);line-height:1.7}
.out .str{color:var(--ink)}
.out .src{color:var(--accent)}
.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:5px;border:1px solid transparent}
.badge-ok{background:#e6f4ee;border-color:#bcdccf;color:#1f6b4d}
.badge-warn{background:#fdf3e3;border-color:#e8d3a8;color:#8a5a12}
.badge-bad{background:#f7e9e9;border-color:#e2c5c5;color:#9c3b3b}
.warnbox{background:#fdf3e3;border:1px solid #e8d3a8;border-left:3px solid #b8860b;border-radius:10px;padding:14px 16px;margin-top:20px;font-size:14px;color:#6b4d12}
.warnbox strong{color:#4d3709}

/* ================= tables ================= */
table{width:100%;border-collapse:collapse;margin-top:16px;font-size:14px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--hair-card);vertical-align:top}
th{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:500;white-space:nowrap}
tbody tr:last-child td{border-bottom:none}

/* ================= pricing ================= */
.tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:26px}
.tier{
  border:1px solid var(--hair-card);border-radius:14px;padding:26px 24px;background:var(--card);
  display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-card);
}
.tier.feature{border-color:var(--accent-line);background:linear-gradient(180deg,var(--accent-wash),var(--card))}
.tier .name{font-family:var(--mono);font-size:13px;color:var(--faint);margin:0}
.tier .price,.price{font-size:30px;font-weight:700;margin:0}
.tier .price .per,.per{font-size:13px;color:var(--faint);font-family:var(--mono);font-weight:400}
.tier .calls,.calls{font-family:var(--mono);font-size:13px;color:var(--body);margin:0}
.tier .label{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.amt{font-size:30px;font-weight:700}
.pricing-intro{font-size:17px;color:var(--body);margin:0 0 8px}
.pricing-cta{display:flex;gap:24px;align-items:center;flex-wrap:wrap;margin-top:26px}
.pricing-cta p{font-size:15px;color:var(--body);margin:0}

/* ================= footer (shared by every page) ================= */
.footer{border-top:1px solid var(--hair-rule);padding:36px 0 48px;margin-top:var(--section-gap)}
.footer .wrap{display:block}
.footer .disclaimer{font-size:13.5px;line-height:1.7;color:var(--faint);margin:0 0 18px;max-width:88ch}
.footer .disclaimer strong{color:var(--body)}
.footer .copyright{font-family:var(--mono);font-size:12px;color:var(--faint);margin:0}

/* ================= utilities (kept out of the markup) ================= */
.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-14{margin-top:14px}.mt-16{margin-top:16px}
.mt-20{margin-top:20px}.mt-22{margin-top:22px}.mt-26{margin-top:26px}
.mt-30{margin-top:30px}.mt-34{margin-top:34px}
.fs-14{font-size:14px}.fs-15{font-size:15px}
.c-go{color:var(--go)}.c-soft{color:var(--faint)}.c-accent{color:var(--accent)}
.b-go{border-color:var(--accent)}
.grid-220{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.hidden{display:none}
.center{text-align:center}

/* ================= responsive ================= */
@media (max-width:720px){
  :root{--section-gap:64px}
  .hero{padding:52px 0 44px}
  .band{padding:24px 22px;gap:18px}
  .code-hero pre{font-size:13px;padding:18px 16px}
  .nav{gap:14px}
  .nav-links{gap:16px}
  dl,.kv{grid-template-columns:1fr;gap:2px 0}
  dt,.kv .key{padding-top:8px}
}
@media (max-width:420px){
  :root{--gutter:18px}
  .wordmark{font-size:13.5px}
  .chip{white-space:normal}
  .btn,.nav-pill{padding-left:16px;padding-right:16px}
}
@media print{
  .navbar,.footer{display:none}
  body{background:#fff}
}
