:root{--bg:#f7f9f4;--card:#fff;--ink:#1d2a1f;--muted:#5b6b5e;--line:#dbe4d6;--brand:#2f5d3a;--brand-ink:#fff;--accent:#c4551d;
--sow_indoor:#4a86c5;--sow_outdoor:#4b9a4f;--transplant:#e0932e;--plant:#c4551d;--harvest:#7d4aa8;
--m0:#e7f2dc;--m1:#cfe6b5;--m2:#aed58c;--m3:#7fbd62;--m4:#4f9a45;--m5:#2f6b34;--mx:#d8d8d8;
--r-very_low:#2f6b34;--r-low:#6f8f2a;--r-moderate:#b8741a;--r-high:#b3341f;--radius:10px}
:root[data-theme=dark]{color-scheme:dark}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121a14;--card:#1a251d;--ink:#e6efe5;--muted:#9db0a0;--line:#2c3b2f;--brand:#7fbd62;--brand-ink:#0d1a10;--accent:#f08a4b;
--m0:#243a22;--m1:#2f4f2b;--m2:#3b6c35;--m3:#4f8e45;--m4:#6db35f;--m5:#9ad78a;--mx:#3a3a3a;--r-very_low:#8bd479;--r-low:#b5d36a;--r-moderate:#e5a951;--r-high:#f0806c}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--brand)}a:hover{text-decoration:none}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--card);padding:8px 12px;z-index:9}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line)}
.brand{font-weight:700;font-size:1.25rem;text-decoration:none;color:var(--brand)}
.top nav{display:flex;flex-wrap:wrap;gap:4px 16px}.top nav a{text-decoration:none;color:var(--ink);padding:4px 0}.top nav a:hover{color:var(--brand)}
main{max-width:860px;margin:0 auto;padding:16px}
.crumbs ol{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-wrap:wrap;gap:2px 8px;font-size:.875rem;color:var(--muted)}
.crumbs li+li::before{content:"›";margin-right:8px}.crumbs a{color:var(--muted)}
h1{font-size:1.65rem;line-height:1.25;margin:.4em 0 .5em}h2{font-size:1.25rem;margin:1.6em 0 .5em;line-height:1.3}h3{font-size:1.05rem;margin:1.2em 0 .3em}
.lead{font-size:1.1rem;color:var(--ink)}.note{color:var(--muted);font-size:.9rem}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:12px 0}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column}
.stat .k{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.stat .v{font-size:1.5rem;font-weight:700;color:var(--brand)}.stat .r{font-size:.875rem;color:var(--muted)}
.links-row a{display:inline-block;margin:4px 12px 4px 0}
.chart-wrap,.map-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:8px;overflow-x:auto}
svg.cal{display:block;min-width:560px;width:100%;height:auto}svg.map{display:block;width:100%;max-width:640px;height:auto;margin:0 auto}
.cal-m0{fill:transparent}.cal-m1{fill:var(--line);opacity:.35}.cal-mt{font-size:10px;fill:var(--muted)}.cal-l{font-size:11px;fill:var(--ink)}
.b-sow_indoor{fill:var(--sow_indoor)}.b-sow_outdoor{fill:var(--sow_outdoor)}.b-transplant{fill:var(--transplant)}.b-plant{fill:var(--plant)}.b-harvest{fill:var(--harvest)}
.sw.b-sow_indoor{background:var(--sow_indoor)}.sw.b-sow_outdoor{background:var(--sow_outdoor)}.sw.b-transplant{background:var(--transplant)}.sw.b-plant{background:var(--plant)}.sw.b-harvest{background:var(--harvest)}
.legend{list-style:none;display:flex;flex-wrap:wrap;gap:6px 16px;padding:0;margin:8px 0;font-size:.875rem;color:var(--muted)}
.sw{display:inline-block;width:14px;height:14px;border-radius:3px;margin-right:6px;vertical-align:-2px}
.sw.m0{background:var(--m0)}.sw.m1{background:var(--m1)}.sw.m2{background:var(--m2)}.sw.m3{background:var(--m3)}.sw.m4{background:var(--m4)}.sw.m5{background:var(--m5)}
.dep{stroke:var(--bg);stroke-width:.8;fill:var(--mx)}.dep:hover{stroke:var(--ink);stroke-width:1.4}
.dep.m0{fill:var(--m0)}.dep.m1{fill:var(--m1)}.dep.m2{fill:var(--m2)}.dep.m3{fill:var(--m3)}.dep.m4{fill:var(--m4)}.dep.m5{fill:var(--m5)}
.tbl-wrap{overflow-x:auto;margin:10px 0;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}
table{border-collapse:collapse;width:100%;font-size:.95rem}th,td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
thead th{font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--bg)}tbody tr:last-child>*{border-bottom:0}tbody th{font-weight:600}
small{color:var(--muted);font-weight:400}
.cards{list-style:none;padding:0;margin:10px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.cards a{display:flex;flex-direction:column;height:100%;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;text-decoration:none;color:var(--ink)}
.cards a:hover{border-color:var(--brand)}.cards span{font-size:.875rem;color:var(--muted)}
.chips{list-style:none;padding:0;margin:10px 0;display:flex;flex-wrap:wrap;gap:8px}
.chips a{display:inline-block;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:5px 14px;text-decoration:none;color:var(--ink)}.chips a:hover{border-color:var(--brand);color:var(--brand)}
.chips .d{font-size:.8rem;color:var(--muted);margin-left:6px}
.months{list-style:none;padding:0;margin:0}.months li{padding:8px 0;border-bottom:1px solid var(--line)}.months strong{display:block}
.risk{border-left:4px solid var(--line);padding:6px 12px;background:var(--card);border-radius:0 var(--radius) var(--radius) 0}
.risk-very_low{border-color:var(--r-very_low)}.risk-low{border-color:var(--r-low)}.risk-moderate{border-color:var(--r-moderate)}.risk-high{border-color:var(--r-high)}.risk-hardy{border-color:var(--r-very_low)}
.notes,.tips{padding-left:1.2em}.notes li,.tips li{margin:.35em 0}
.prose p,.prose li{max-width:68ch}
.hp-form label{display:block;font-weight:600;margin-bottom:6px}.hp-form .row{display:flex;gap:8px;flex-wrap:wrap}
input[type=text],input[inputmode]{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);min-width:0;flex:1 1 140px;max-width:220px}
button{font:inherit;padding:10px 18px;border:0;border-radius:8px;background:var(--brand);color:var(--brand-ink);cursor:pointer}
.msg{min-height:1.4em}.msg.err{color:var(--r-high)}
.picks{border:1px solid var(--line);border-radius:var(--radius);padding:8px 14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px 10px}
.picks label{display:flex;gap:6px;align-items:center}
.foot{max-width:860px;margin:24px auto 0;padding:16px;border-top:1px solid var(--line);font-size:.875rem;color:var(--muted)}
@media (min-width:700px){h1{font-size:2rem}main{padding:24px 16px}}
@media print{.top,.foot,.skip,.hp-form,.legend{display:none}body{background:#fff;color:#000}}
