:root{--bg:#f4ecdc;--panel:#fffaf0;--ink:#2d2418;--muted:#6b5c47;--line:#e2d4bb;--accent:#9a5216;--accent-ink:#fffaf0;--honey:#d39a2c;--soft:#f6ebd6;--wood:#9a6a3d;--ok:#3f7f50;--warn:#8a5a00;--bad:#b0442b;--shadow:0 2px 0 rgba(90,60,30,.10),0 8px 24px -14px rgba(90,60,30,.35);--keep:#2f6e40;--stretch:#8f5c00;--top_up:#a63f27;--pause:#6a655d;--chip-ink:#fffaf0}
:root[data-theme="dark"]{--bg:#16130e;--panel:#211c15;--ink:#f1e7d6;--muted:#bba98e;--line:#3d3427;--accent:#e9a25a;--accent-ink:#1d1710;--honey:#e8b24a;--soft:#2b241b;--wood:#8a6038;--ok:#8fd3a2;--warn:#f0c46a;--bad:#f39a80;--shadow:0 2px 0 rgba(0,0,0,.35),0 8px 24px -14px rgba(0,0,0,.6);--keep:#6fbf84;--stretch:#e8b24a;--top_up:#e27a5e;--pause:#9b958b;--chip-ink:#1d1710}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#16130e;--panel:#211c15;--ink:#f1e7d6;--muted:#bba98e;--line:#3d3427;--accent:#e9a25a;--accent-ink:#1d1710;--honey:#e8b24a;--soft:#2b241b;--wood:#8a6038;--ok:#8fd3a2;--warn:#f0c46a;--bad:#f39a80;--shadow:0 2px 0 rgba(0,0,0,.35),0 8px 24px -14px rgba(0,0,0,.6);--keep:#6fbf84;--stretch:#e8b24a;--top_up:#e27a5e;--pause:#9b958b;--chip-ink:#1d1710}}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 "Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif}
button,input,select,textarea{font-family:"Avenir Next","Segoe UI",system-ui,-apple-system,Roboto,sans-serif}
a{color:var(--accent)}
.hidden{display:none!important}
.small{font-size:.9rem}.muted{color:var(--muted)}.mono,.num{font-variant-numeric:tabular-nums}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.bar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}
.back{text-decoration:none;font-weight:600;white-space:nowrap;font-family:system-ui,sans-serif;font-size:.9rem}
.brand{display:flex;align-items:center;gap:8px;font-size:1.15rem;min-width:0}
.logo{width:28px;height:28px;flex:none}.lg-l{fill:var(--wood)}.lg-j{fill:none;stroke:var(--ink);stroke-width:1.6}.lg-f{fill:var(--honey)}.lg-s{stroke:var(--wood);stroke-width:2;stroke-linecap:round}
.session{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.pill{display:inline-flex;align-items:center;justify-content:center;gap:4px;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:6px 14px;font-size:.88rem;cursor:pointer;text-decoration:none;min-height:34px;transition:background .15s,border-color .15s}
.pill:hover:not(:disabled){border-color:var(--accent)}
.pill.solid{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.pill.solid:hover:not(:disabled){filter:brightness(1.08);color:var(--accent-ink)}
.pill.ghost{cursor:default}.pill.tiny{padding:3px 11px;font-size:.8rem;min-height:30px}.pill.big{padding:10px 22px;font-size:1rem}
.pill:disabled{opacity:.45;cursor:not-allowed}
.pill.ib{width:32px;padding:0;font-size:1rem}
main{max-width:940px;margin:0 auto;padding:16px}
.hero{padding:18px 0 4px}
.kicker{margin:0;color:var(--accent);font-style:italic;font-size:1rem}
h1{margin:2px 0 8px;font-size:2.7rem;line-height:1.05;font-weight:700}
.h1b{display:block;font-size:1.1rem;font-weight:400;color:var(--muted);margin-top:8px;font-style:italic}
.lede{margin:0 0 12px;max-width:64ch;font-size:1.05rem}
.samples{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{border:1px dashed var(--accent);background:transparent;color:var(--ink);border-radius:999px;padding:5px 13px;font-size:.85rem;cursor:pointer}
.chip.on{background:var(--accent);color:var(--accent-ink);border-style:solid;font-weight:600}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;margin:18px 0;box-shadow:var(--shadow)}
.ph{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-size:1.3rem;flex-wrap:wrap}
.step-no{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--honey);color:#2d2418;font-size:.95rem;font-weight:700;font-family:system-ui,sans-serif}
.free{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ok);border:1px solid currentColor;border-radius:999px;padding:1px 8px;font-family:system-ui,sans-serif}
.lab{display:block;font-weight:600;font-size:.82rem;margin:6px 0 3px;font-family:system-ui,sans-serif;color:var(--muted)}
.lenshint{font-weight:400;opacity:.85}
.inp{width:100%;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:10px;padding:7px 10px;font-size:.95rem;min-height:38px}
.inp:focus{outline:2px solid var(--honey);outline-offset:1px}
.grid5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:6px}
.goals{list-style:none;margin:10px 0;padding:0;display:grid;gap:10px}
.goal{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:start;border:1px solid var(--line);border-radius:14px;padding:8px 10px;background:var(--soft)}
.gno{display:grid;place-items:center;width:26px;height:26px;margin-top:28px;border-radius:50%;border:1.5px solid var(--wood);font-weight:700;font-family:system-ui,sans-serif;font-size:.85rem}
.ggrid{display:grid;grid-template-columns:1.7fr 1.5fr 1fr 1fr 1.6fr;gap:8px;align-items:end;min-width:0}
.ggrid .fld{min-width:0}
.tick{display:flex;gap:6px;align-items:center;font-size:.86rem;font-family:system-ui,sans-serif;cursor:pointer}
.tick.fixed{grid-column:1 / -1;margin:0 0 2px}
.gbtns{display:flex;flex-direction:column;gap:4px;margin-top:22px}
.cardrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}
.note{background:var(--soft);border-left:4px solid var(--honey);padding:8px 12px;border-radius:8px;margin:10px 0 0}
.board{border-radius:14px;overflow:hidden;border:1px solid var(--line);line-height:0}
.board svg{width:100%;height:auto;display:block}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:8px 0}
.legend .lg{white-space:nowrap}
.key{display:inline-block;width:18px;height:10px;border-radius:3px;margin-right:2px;vertical-align:middle}
.k-fill{background:var(--keep)}.k-line{height:0;border-top:2px dashed var(--ink);border-radius:0}.k-hatch{background:repeating-linear-gradient(45deg,var(--stretch) 0 2px,transparent 2px 5px);border:1px solid var(--stretch)}
.verdictline{margin:10px 0 4px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.moneyline{margin:0 0 8px}
.callchip{display:inline-block;border-radius:999px;padding:3px 12px;font-weight:700;font-size:.85rem;background:var(--pause);color:var(--chip-ink);font-family:system-ui,sans-serif;white-space:nowrap}
.callchip.v-fits,.callchip.c-keep{background:var(--keep)}.callchip.v-move,.callchip.c-stretch{background:var(--stretch)}.callchip.v-short,.callchip.c-top_up{background:var(--top_up)}.callchip.c-pause{background:var(--pause)}
.callchip.sm{font-size:.76rem;padding:2px 9px}
.tablewrap{overflow-x:auto}
.goaltab{width:100%;border-collapse:collapse;font-size:.9rem;font-family:system-ui,sans-serif}
.goaltab th{text-align:left;font-weight:600;color:var(--muted);border-bottom:1px solid var(--line);padding:6px 8px;font-size:.8rem}
.goaltab td{border-bottom:1px solid var(--line);padding:7px 8px;vertical-align:top}
.goaltab td.n{font-variant-numeric:tabular-nums;white-space:nowrap}
.goaltab .gname b{display:block}
.runrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:8px}
.gate{margin:10px 0 0;background:var(--soft);padding:8px 12px;border-radius:10px}
.gate .pill{margin-left:6px}
.progress h3{margin:0 0 6px}
.steps{list-style:none;padding:0;margin:0;display:grid;gap:3px;font-family:system-ui,sans-serif;font-size:.9rem}
.step{color:var(--muted)}.step.done{color:var(--ok)}.step.active{color:var(--ink);font-weight:600}
.step-ic{display:inline-block;width:14px;font-family:ui-monospace,Menlo,monospace}
.raw{white-space:pre-wrap;word-break:break-word;font-size:.82rem;max-height:340px;overflow:auto;background:var(--soft);padding:10px;border-radius:10px}
.result.empty{opacity:.85}
.res-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.res-kick{margin:0;font-style:italic;color:var(--muted)}
.badge{border:1px solid var(--line);border-radius:999px;padding:2px 12px;font-size:.75rem;font-weight:700;letter-spacing:.06em;font-family:system-ui,sans-serif;color:var(--muted)}
.badge.on{color:var(--chip-ink);border-color:transparent;background:var(--pause)}.badge.on.v-fits{background:var(--keep)}.badge.on.v-move{background:var(--stretch)}.badge.on.v-short{background:var(--top_up)}
.headline{font-size:1.3rem;margin:10px 0;line-height:1.35}
.reads{list-style:none;padding:0;margin:10px 0;display:grid;gap:10px}
.reads .none,.recon .none,.saved .none{color:var(--muted);font-style:italic}
.read{border:1px solid var(--line);border-left:6px solid var(--pause);border-radius:12px;padding:10px 14px;background:var(--bg)}
.read.c-keep{border-left-color:var(--keep)}.read.c-stretch{border-left-color:var(--stretch)}.read.c-top_up{border-left-color:var(--top_up)}
.read p{margin:6px 0 0}
.read-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.read-no{font-family:system-ui,sans-serif;font-weight:700;color:var(--muted)}
.read-name{font-weight:700;font-size:1.05rem}
.read-num{margin-left:auto;font-family:system-ui,sans-serif;font-size:.85rem;color:var(--muted);font-variant-numeric:tabular-nums}
.aside{border-top:1px dashed var(--line);margin-top:12px;padding-top:4px}
.aside .lab{margin-top:10px}.aside p{margin:2px 0}
.recon{padding-left:20px;font-size:.9rem;margin:6px 0}
.recon li.warn{color:var(--warn)}.recon li.bad{color:var(--bad);font-weight:600}
.exports{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.saved{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}
.hrow{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:8px 12px;flex-wrap:wrap}
.hinfo{display:flex;flex-direction:column;min-width:0}.hbtns{display:flex;gap:6px}
.aboutbox p{margin:6px 0}
.foot{max-width:940px;margin:0 auto;padding:6px 16px 40px;color:var(--muted);font-size:.88rem}
.toasts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);display:grid;gap:6px;z-index:20;width:min(92vw,460px)}
.toast{background:var(--ink);color:var(--panel);padding:10px 14px;border-radius:12px;font-family:system-ui,sans-serif;font-size:.9rem;transition:opacity .5s}
.toast.err{background:var(--bad);color:#fff}.toast a{color:inherit;font-weight:700}.toast.gone{opacity:0}
@media (max-width:760px){
  .panel{padding:14px;border-radius:14px}
  .grid5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid5 .fld:first-child{grid-column:1 / -1}
  .ggrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ggrid .gname,.ggrid .gkind,.ggrid .gby{grid-column:1 / -1}
  h1{font-size:2.1rem}
  .back-t{display:none}
  .read-num{margin-left:0;width:100%}
  .goaltab{font-size:.82rem}.goaltab td,.goaltab th{padding:6px 5px}
}
@media (max-width:420px){
  .goal{grid-template-columns:1fr auto}
  .gno{display:none}
  .gbtns{margin-top:0}
}
@media print{
  .bar,.samples,.formpanel,.askbox,.histbox,.exports,.cardrow,.toasts,.aboutbox,.foot a{display:none!important}
  html,body{background:#fff;color:#000}
  .panel{box-shadow:none;border-color:#ccc;break-inside:avoid}
}
