/* Bio-Pure palette, from biopureproducts.com: navy chrome, green for action,
   the logo's water blue for links. Matches the signed-in console. */
:root{--bg:#fff;--fg:#18181b;--muted:#5b5b66;--line:#e4e4e7;--card:#f7f9fb;
      --brand:#0b7a12;--brand-deep:#14273f;--brand-blue:#3b7bbf;--brand-tint:#eef2f7;
      --accent:#3b7bbf}
@media(prefers-color-scheme:dark){
  :root{--bg:#0b0b0f;--fg:#e9e9ee;--muted:#a1a1ab;--line:#27272e;--card:#141419;
        --brand:#3fbf46;--brand-deep:#0d1726;--brand-blue:#7aa9de;--brand-tint:#141d2b;
        --accent:#7aa9de}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.wrap{max-width:46rem;margin:0 auto;padding:3rem 1.25rem 5rem}
.eyebrow{font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0}
h1{font-size:1.9rem;line-height:1.2;letter-spacing:-.02em;margin:.5rem 0 .35rem}
h2{font-size:1.15rem;letter-spacing:-.01em;margin:2.4rem 0 .6rem;padding-top:1.2rem;border-top:1px solid var(--line)}
h2:first-of-type{border-top:0;padding-top:0}
.updated{color:var(--muted);font-size:.85rem;margin:0 0 2.2rem}
a{color:var(--accent)}
ul,ol{padding-left:1.25rem}li{margin:.3rem 0}
.card{background:var(--card);border:1px solid var(--line);border-radius:.6rem;padding:1rem 1.15rem;margin:1rem 0}
.msg{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:.4rem;padding:.7rem .9rem;margin:.55rem 0;font-size:.88rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}
.box{display:inline-block;width:1rem;height:1rem;border:1.5px solid var(--accent);border-radius:.2rem;vertical-align:-2px;margin-right:.5rem}
.consent{font-size:.82rem;color:var(--muted);line-height:1.55}
.btn{display:inline-block;background:var(--accent);color:var(--bg);border-radius:.4rem;padding:.5rem 1rem;font-size:.9rem;font-weight:600;opacity:.45}
table{border-collapse:collapse;width:100%;font-size:.9rem;margin:1rem 0}
th,td{border:1px solid var(--line);padding:.5rem .7rem;text-align:left;vertical-align:top}
th{background:var(--card);font-weight:600}
.btn-link{display:inline-block;background:var(--accent);color:var(--bg);text-decoration:none;
  padding:.7rem 1.3rem;border-radius:.45rem;font-weight:600;font-size:.95rem}
h3{font-size:1rem;margin:1.2rem 0 .3rem}
footer{margin-top:3.5rem;padding-top:1.2rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted)}
footer a{margin-right:1rem;display:inline-block;margin-bottom:.3rem}
/* Legal pages sit under the masthead, so they need no extra top gap. */
.masthead + .wrap{padding-top:2rem}

label{display:block;font-size:.82rem;font-weight:600;margin-bottom:.25rem}
input[disabled]{width:100%;padding:.6rem .7rem;border:1px solid var(--line);border-radius:.4rem;
  background:var(--bg);color:var(--muted);font:inherit;font-size:.9rem;box-sizing:border-box}
.hint{font-size:.78rem;color:var(--muted);margin:.3rem 0 0}


/* ── Brand chrome ──────────────────────────────────────────────────────── */
.masthead{background:var(--brand-deep);border-bottom:3px solid var(--brand);padding:.85rem 0}
.masthead .inner{max-width:46rem;margin:0 auto;padding:0 1.25rem;display:flex;
  justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.masthead .mark{color:#fff;font-weight:700;letter-spacing:-.01em;text-decoration:none;font-size:1rem}
.masthead .mark span{display:block;font-size:.68rem;font-weight:500;letter-spacing:.06em;
  text-transform:uppercase;color:rgba(255,255,255,.7);margin-top:.1rem}
.masthead nav a{color:rgba(255,255,255,.85);text-decoration:none;font-size:.85rem;
  font-weight:600;margin-left:1.1rem}
@media(max-width:34rem){
  .masthead .inner{gap:.5rem}
  .masthead nav a{margin:0 .9rem 0 0;font-size:.8rem}
}
.masthead nav a:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}

.hero{background:linear-gradient(160deg,var(--brand-deep) 0%,#1d3a5c 100%);color:#fff;
  padding:3.2rem 0 3rem;margin-bottom:2.5rem}
.hero .inner{max-width:46rem;margin:0 auto;padding:0 1.25rem}
.hero .eyebrow{color:rgba(255,255,255,.72)}
.hero h1{color:#fff;font-size:2.15rem;line-height:1.14;margin:.5rem 0 .9rem}
.hero p{color:rgba(255,255,255,.88);font-size:1.08rem;max-width:34rem;margin:0 0 1.6rem}
.hero .cta{display:inline-block;background:var(--brand);color:#fff;text-decoration:none;
  padding:.75rem 1.4rem;border-radius:.45rem;font-weight:700;font-size:.95rem}
.hero .cta:hover{background:#0a6a10}
.hero .cta.ghost{background:transparent;border:1.5px solid rgba(255,255,255,.55);margin-left:.6rem}
.hero .cta.ghost:hover{background:rgba(255,255,255,.12)}
.wrap.after-hero{padding-top:0}

h2{color:var(--brand-deep)}
@media(prefers-color-scheme:dark){h2{color:var(--fg)}}
.card{border-left:3px solid var(--brand)}
.reveal{display:inline}
.reveal button,button[type=submit]{background:var(--brand);color:#fff;border:0;border-radius:.4rem;
  padding:.5rem .95rem;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}
.reveal button:hover,button[type=submit]:hover{background:#0a6a10}
footer{border-top:3px solid var(--brand)}
.hero-note{font-size:.88rem!important;color:rgba(255,255,255,.72)!important;margin:1.2rem 0 0!important}
.hero-note a{color:#fff;font-weight:600}

/* A <form> may not live inside a <p> — the parser closes the paragraph early
   and orphans whatever followed, which is how a button ended up mid-sentence
   with a stray full stop after it. These carry a paragraph's spacing while
   being a legal parent for one. */
.para{margin:1rem 0}

/* Footer links: an even grid instead of a ragged run of inline-blocks. */
footer .flinks{display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin:0 0 .2rem}
footer .flinks a{margin:0}

/* ── Phone ─────────────────────────────────────────────────────────────────
   Everything above is sized for a desktop column. On a 375px screen that hero
   ran to four lines of very large type, and the two calls to action — both
   inline-block, different widths, one nudged right by a margin — staggered
   like a mistake. This is the one viewport that matters most: the people who
   land here are holding a phone. */
@media(max-width:34rem){
  .hero{padding:2.1rem 0 2.3rem;margin-bottom:1.8rem}
  .hero .eyebrow{font-size:.64rem;letter-spacing:.055em;line-height:1.5}
  .hero h1{font-size:1.72rem;line-height:1.2;margin:.5rem 0 .75rem}
  /* The break is a desktop nicety; at this width it forces a lonely line.
     The source keeps a space before it, so the two sentences stay apart when
     it is hidden. */
  .hero h1 br{display:none}
  .hero p{font-size:1rem;line-height:1.55;margin-bottom:1.4rem}

  /* Full width, stacked, identical. Deliberate rather than accidental. */
  .hero .cta{display:block;width:100%;text-align:center;padding:.9rem 1rem;font-size:1rem}
  .hero .cta.ghost{margin:.65rem 0 0}
  .hero-note{margin-top:1.5rem!important;line-height:1.55}

  .wrap{padding:1.9rem 1.15rem 3rem}
  h1{font-size:1.5rem}
  h2{font-size:1.05rem;margin:2rem 0 .55rem;padding-top:1.15rem}
  h3{font-size:.98rem}
  body{font-size:15.5px}
  .card{padding:.9rem 1rem;margin:.9rem 0;border-radius:.5rem}

  /* Buttons get a full-width tap target rather than sitting in running text. */
  .reveal{display:block;margin:.9rem 0 0}
  .reveal button,button[type=submit]{width:100%;padding:.85rem 1rem;font-size:.95rem}
  .btn-link{display:block;text-align:center;padding:.9rem 1rem;font-size:1rem}

  footer{margin-top:2.4rem}
  table{font-size:.85rem}
  th,td{padding:.45rem .5rem}
}

