/* ══════════════════════════════════════════════════════════════
   BestDosage — shared shell for the free audit tools
   Identity tokens measured from retreatvault.com. Do not drift.
   ══════════════════════════════════════════════════════════════ */
:root{
  /* ══ BASALT — see /colorways/. Roles, not lightness values. ══ */
  --paper:oklch(.180 .016 60);--ink:oklch(.930 .012 60);--body:oklch(.745 .018 60);
  --mute:oklch(.648 .018 60);--line:oklch(.295 .018 60);
  --sand-100:oklch(.235 .018 60);--sand-200:oklch(.300 .026 60);--sand-300:oklch(.660 .030 60);
  --sage-200:oklch(.280 .030 90);--sage-900:oklch(.900 .028 90);
  --ocean-100:oklch(.265 .034 40);--ocean-700:oklch(.845 .048 40);
  --tile-ink-bg:oklch(.930 .012 60);--tile-ink-fg:oklch(.180 .016 60);
  --gold:oklch(.740 .070 65);--on-gold:oklch(.215 .045 65);--accent-ink:oklch(.420 .080 65);
  --green:oklch(.760 .070 90);--wall:oklch(.125 .012 60);
  /* status colours, lightened for a dark ground so they stay legible */
  --bad:oklch(.720 .110 30);--warn:oklch(.790 .090 75);--good:oklch(.760 .080 150);
  --bad-bg:color-mix(in oklch,var(--bad) 16%,var(--paper));
  --warn-bg:color-mix(in oklch,var(--warn) 16%,var(--paper));
  --good-bg:color-mix(in oklch,var(--good) 16%,var(--paper));
  --card:color-mix(in oklch,var(--ink) 4%,var(--paper));
  --e-cine:cubic-bezier(.22,1,.36,1);
  --e-elastic:cubic-bezier(.68,-.6,.32,1.6);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;max-width:100%;overflow-x:hidden}
body{margin:0;background:var(--paper);color:var(--body);
  font-family:"Hanken Grotesk",system-ui,sans-serif;font-size:15px;line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3{margin:0;color:var(--ink);font-family:Gloock,Georgia,serif;font-weight:400;
  line-height:1.0;letter-spacing:-.03em}
p{margin:0}a{color:inherit}
.eb{font-size:10px;letter-spacing:2.8px;text-transform:uppercase;color:var(--green);font-weight:600}

/* nav */
.nav{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:80;display:flex;gap:4px;
  align-items:center;max-width:calc(100vw - 16px);overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a,.nav .mk{background:color-mix(in oklch,var(--paper) 92%,transparent);
  backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:200px;padding:0 22px;height:40px;
  display:flex;align-items:center;font-size:14px;white-space:nowrap;color:var(--ink);
  text-decoration:none}
.nav .mk{font-family:Gloock,serif;font-size:17px;letter-spacing:-.03em;border-color:transparent}
.nav .back{gap:9px}

/* head */
.wrap{max-width:880px;margin:0 auto;padding:88px 20px 0}
@media(min-width:900px){.wrap{padding-top:104px}}
.head h1{font-size:clamp(36px,8.4vw,66px);letter-spacing:-.035em;margin-top:16px;max-width:15ch}
.head .sub{margin-top:18px;font-size:16.5px;max-width:46ch}
.head .why{margin-top:14px;font-size:13.5px;color:var(--mute);max-width:52ch}

/* card */
.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:24px 20px;margin-top:34px}
@media(min-width:700px){.card{padding:30px 28px}}
.card + .card{margin-top:4px}
.card h2{font-size:23px;letter-spacing:-.025em}
.card .lead{margin-top:10px;font-size:14px;color:var(--mute)}

/* form bits */
.row{display:flex;gap:8px;margin-top:18px;background:var(--sand-100);border-radius:200px;
  padding:6px 6px 6px 8px;align-items:center;flex-wrap:wrap}
.row input[type=url],.row input[type=text]{flex:1;min-width:180px;background:transparent;border:0;
  padding:13px 14px;color:var(--ink);font-family:inherit;font-size:15px}
.row input:focus{outline:none}
.gopill{background:var(--ink);color:var(--paper);border:0;border-radius:200px;
  padding:12px 12px 12px 26px;font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;
  display:inline-flex;align-items:center;gap:13px;white-space:nowrap;
  transition:transform .5s var(--e-elastic)}
.gopill:active{transform:scale(.96)}
.gopill[disabled]{opacity:.45;cursor:default}
.gopill .arw{width:29px;height:29px;border-radius:50%;background:color-mix(in oklch,var(--paper) 22%,transparent);
  display:grid;place-items:center;font-size:12px}
.grid2{display:grid;gap:14px;margin-top:20px;grid-template-columns:1fr}
@media(min-width:620px){.grid2{grid-template-columns:1fr 1fr;gap:14px 22px}}
.fld label{display:block;font-size:12.5px;color:var(--mute);margin-bottom:6px}
.fld label b{color:var(--ink);font-weight:600}
.fld .in{display:flex;align-items:center;background:var(--sand-100);border-radius:12px;
  padding:0 14px;border:1px solid transparent;transition:border-color .3s}
.fld .in:focus-within{border-color:var(--sand-300)}
.fld .in .pre,.fld .in .post{font-size:14px;color:var(--mute)}
.fld input{flex:1;min-width:0;background:transparent;border:0;padding:13px 8px;color:var(--ink);
  font-family:inherit;font-size:15.5px;font-variant-numeric:tabular-nums}
.fld input:focus{outline:none}
.fld .hint{font-size:11.5px;color:var(--mute);margin-top:5px;line-height:1.5}

/* checklist */
.checks{margin-top:6px}
.grp{margin-top:22px}
.grp > .gt{font-size:10px;letter-spacing:2.4px;text-transform:uppercase;color:var(--green);
  font-weight:600;padding-bottom:10px;border-bottom:1px solid var(--line);display:block}
.chk{display:flex;gap:13px;align-items:flex-start;padding:13px 2px;border-bottom:1px solid var(--sand-100);
  cursor:pointer}
.chk:last-child{border-bottom:0}
.chk input{appearance:none;flex:0 0 20px;width:20px;height:20px;border:1.5px solid var(--sand-300);
  border-radius:6px;margin:1px 0 0;cursor:pointer;position:relative;background:var(--sand-200);
  transition:background .25s,border-color .25s}
.chk input:checked{background:var(--green);border-color:var(--green)}
.chk input:checked::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;
  color:var(--paper);font-size:12px;font-weight:700}
.chk .txt{flex:1;min-width:0}
.chk .txt b{display:block;color:var(--ink);font-weight:500;font-size:14.5px;line-height:1.45}
.chk .txt span{display:block;font-size:12.5px;color:var(--mute);margin-top:3px;line-height:1.5}
.chk .wt{flex:0 0 auto;font-size:10px;letter-spacing:1.4px;text-transform:uppercase;color:var(--mute);
  background:var(--sand-100);border-radius:200px;padding:4px 9px;margin-top:2px}
.chk .wt.hi{background:var(--bad-bg);color:var(--bad)}

/* result */
.out{margin-top:4px}
.out[hidden]{display:none}
.score{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.score b{font-family:Gloock,serif;font-size:clamp(52px,13vw,84px);line-height:.9;letter-spacing:-.04em;
  color:var(--ink);font-weight:400}
.score .of{font-size:15px;color:var(--mute)}
.score .verdict{font-size:14px;font-weight:600;border-radius:200px;padding:7px 15px}
.v-good{background:var(--good-bg);color:var(--good)}
.v-warn{background:var(--warn-bg);color:var(--warn)}
.v-bad{background:var(--bad-bg);color:var(--bad)}
.bar{height:8px;border-radius:200px;background:var(--sand-100);margin-top:18px;overflow:hidden}
.bar i{display:block;height:100%;border-radius:200px;background:var(--green);width:0;
  transition:width 1.1s var(--e-cine)}
.kpis{display:grid;gap:2px;margin-top:22px;grid-template-columns:1fr 1fr}
@media(min-width:640px){.kpis{grid-template-columns:repeat(4,1fr)}}
.kpi{background:var(--sand-100);border-radius:12px;padding:16px 14px}
.kpi b{display:block;font-family:Gloock,serif;font-size:clamp(24px,5.2vw,32px);line-height:1;
  color:var(--ink);letter-spacing:-.03em;font-weight:400;font-variant-numeric:tabular-nums}
.kpi span{display:block;font-size:11.5px;color:var(--mute);margin-top:7px;line-height:1.45}
.kpi.is-bad b{color:var(--bad)}.kpi.is-warn b{color:var(--warn)}.kpi.is-good b{color:var(--good)}
.fix{margin-top:8px;border-top:1px solid var(--line);padding-top:20px}
.fix h3{font-size:17px;letter-spacing:-.02em}
.fix ol{margin:14px 0 0;padding-left:0;list-style:none;counter-reset:f}
.fix li{counter-increment:f;position:relative;padding:12px 0 12px 38px;border-bottom:1px solid var(--sand-100);
  font-size:14.5px;color:var(--ink);line-height:1.55}
.fix li:last-child{border-bottom:0}
.fix li::before{content:counter(f);position:absolute;left:0;top:12px;width:24px;height:24px;
  border-radius:50%;background:var(--ink);color:var(--paper);display:grid;place-items:center;
  font-size:11.5px;font-family:"Hanken Grotesk",sans-serif;font-weight:600}
.fix li em{font-style:normal;color:var(--mute);font-size:13px;display:block;margin-top:3px}
.note{font-size:12.5px;color:var(--mute);margin-top:18px;line-height:1.6}
.err{background:var(--bad-bg);color:var(--bad);border-radius:12px;padding:14px 16px;margin-top:18px;
  font-size:14px;line-height:1.55}
.err[hidden]{display:none}
.spin{display:inline-block;width:13px;height:13px;border:2px solid color-mix(in oklch,var(--paper) 35%,transparent);
  border-top-color:var(--paper);border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* cta */
.cta{background:var(--tile-ink-bg);color:var(--tile-ink-fg);border-radius:28px;padding:34px 24px 36px;
  margin:44px 0 0;position:relative;overflow:hidden}
@media(min-width:700px){.cta{padding:44px 38px 46px}}
.cta h2{color:var(--tile-ink-fg);font-size:clamp(26px,5.6vw,40px);max-width:16ch;letter-spacing:-.03em}
.cta h2 em{font-style:italic;color:var(--accent-ink)}
.cta p{margin-top:14px;color:color-mix(in oklch,var(--tile-ink-fg) 72%,transparent);font-size:15px;max-width:38ch}
.cta form{margin-top:24px;display:flex;gap:8px;max-width:460px;
  background:color-mix(in oklch,var(--tile-ink-fg) 12%,transparent);border-radius:200px;padding:6px 6px 6px 10px}
.cta input{flex:1;min-width:0;background:transparent;border:0;padding:13px 14px;color:var(--tile-ink-fg);
  font-family:inherit;font-size:15px}
.cta input::placeholder{color:color-mix(in oklch,var(--tile-ink-fg) 55%,transparent)}.cta input:focus{outline:none}
.cta .gopill{background:var(--paper);color:var(--ink)}
.cta .gopill .arw{background:color-mix(in oklch,var(--ink) 14%,transparent)}
.cta .fine{margin-top:13px;font-size:12px;color:color-mix(in oklch,var(--tile-ink-fg) 72%,transparent)}
.cta .done{display:none;margin-top:15px;color:var(--accent-ink);font-weight:600}
.cta.sent form{display:none}.cta.sent .done{display:block}
.other{display:flex;gap:7px;flex-wrap:wrap;margin-top:34px}
.other a{background:var(--sand-100);border-radius:200px;padding:9px 17px;font-size:13px;
  color:var(--ink);text-decoration:none;transition:background .3s}
.other a:hover{background:var(--sand-200)}
footer{max-width:880px;margin:0 auto;padding:34px 20px 54px;font-size:12.5px;color:var(--mute);
  line-height:1.75}
footer a{color:var(--body)}

.rv{opacity:0;transform:translateY(22px);transition:opacity .9s var(--e-cine),transform .9s var(--e-cine)}
.rv.in{opacity:1;transform:none}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}
  .rv{opacity:1;transform:none}}
