/* Layout: a fishing log — sticky header with progress + season tabs, then area sections of sprite cards you tap to tick off. */
:root{
  /* cozy farmhouse palette: parchment ground, cream panels, wood-brown ink and edges, leaf-green accent */
  --bg:#e6d6b0; --panel:#f2e6c9; --ink:#3a2816; --muted:#6b5236; --line:#c9ad7c;
  --accent:#4a7f27; --accent-ink:#f5ecd4; --done:#d9e6bd; --done-line:#7fa64c; --done-ink:#365e19;
  --sp:#5e9a33; --su:#d98b1c; --fa:#b8542a; --wi:#4a7fb5;
  --sve:#7b4fa8; --sve-bg:#e8dbe0; --legend:#9a6b0c; --legend-bg:#f1deaa;
  --rain:#3a6fb0; --sun:#a87400;
  --sea:#9cc4cc; --land:#cfe3b0; --hill:#b9cf98; --hill2:#c8c0a4; --wood:#a9cc8e; --water:#5fa9cf; --sand:#ead9a8; --edge:#7a5a36;
  --wood:#a86a32; --wood-dark:#5e3818; --wood-light:#e0b06e;
  --display:"Pixelify Sans","Courier New",monospace; --body:"Atkinson Hyperlegible",system-ui,-apple-system,sans-serif;
  color-scheme:light;
}
/* Night theme: a farmhouse after dark. Warm wood browns, cream text. Chosen with the Day/Night button. */
:root[data-theme="dark"]{
  --bg:#2b2018; --panel:#3a2c21; --ink:#f1e4c8; --muted:#c3aa86; --line:#5c4733;
  --accent:#8fbf5a; --accent-ink:#22190f; --done:#33402a; --done-line:#7fa64c; --done-ink:#c4e3a0;
  --sp:#8cc767; --su:#efa64a; --fa:#e0855a; --wi:#7fb0e6;
  --sve:#c39be6; --sve-bg:#3a2d38; --legend:#e4b84f; --legend-bg:#43361d;
  --rain:#8ab8f0; --sun:#e8bf55;
  --sea:#23404a; --edge:#a8865c;
  --warn:#f09a6c; --warn-bg:#4a2e20; --need:#7cc9b9; --need-bg:#22392f;
  --wood:#7d4c22; --wood-dark:#1f130a; --wood-light:#a8743c;
  color-scheme:dark;
}
.themebtn{font:inherit;font-size:.82rem;font-weight:700;border:2px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:4px 12px;cursor:pointer;white-space:nowrap}
.themebtn:hover{border-color:var(--muted)}
.themebtn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.headright{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:flex-end;margin-top:12px}
.headright .account{margin-top:0}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45}
.wrap{max-width:1180px;margin:0 auto;padding-inline:16px;padding-block:0 48px}
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);border-bottom:3px solid var(--line);padding-block:14px 10px}
.top{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;justify-content:space-between}
h1{font-family:var(--display);font-weight:700;font-size:1.9rem;margin:0;line-height:1;text-wrap:balance}
h1 small{display:block;font-family:var(--body);font-weight:400;font-size:.85rem;color:var(--muted);margin-top:6px}
.prog{min-width:0;flex:1 1 300px;max-width:460px}
.prog .row{display:flex;justify-content:space-between;font-variant-numeric:tabular-nums;font-size:.9rem}
.prog .row b{font-family:var(--display);font-size:1.25rem}
.bar{height:10px;background:var(--line);border-radius:2px;overflow:hidden;margin-top:4px}
.bar i{display:block;height:100%;background:var(--accent);transition:width .3s}
.mini{display:flex;gap:10px;margin-top:6px;font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums;flex-wrap:wrap}
.mini span::before{content:"";display:inline-block;width:8px;height:8px;margin-right:4px;border-radius:1px;background:var(--c)}
.tabs{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}
.tab{font-family:var(--display);font-size:1rem;border:2px solid var(--line);background:var(--panel);color:var(--ink);padding:6px 14px;border-radius:4px;cursor:pointer}
.tab[aria-pressed="true"]{background:var(--c,var(--accent));border-color:var(--c,var(--accent));color:#fff}
.tab:focus-visible,.chip:focus-visible,.card:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.filters{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;align-items:center}
.filters input[type=search],.filters select{font:inherit;font-size:.9rem;padding:6px 10px;border:1px solid var(--line);border-radius:4px;background:var(--panel);color:var(--ink)}
.filters input[type=search]{flex:1 1 180px;min-width:0}
.chip{font:inherit;font-size:.85rem;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:5px 10px;border-radius:999px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.sync{font-size:.75rem;color:var(--muted);margin-left:auto}
section{margin-top:26px}
section h2{font-family:var(--display);font-weight:500;font-size:1.2rem;margin:0 0 10px;display:flex;gap:10px;align-items:baseline}
section h2 span{font-family:var(--body);font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.card{display:grid;grid-template-columns:56px 1fr auto;gap:4px 12px;align-items:start;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:10px 12px;cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%;min-width:0}
.card.sve{background:var(--sve-bg)}
.card.leg{background:var(--legend-bg);border-color:var(--legend)}
.card.done{background:var(--done);border-color:var(--done-line)}
.card.done .nm{text-decoration:line-through;text-decoration-thickness:2px;color:var(--done-ink)}
.card.done img{opacity:.55}
.sprite{width:56px;height:56px;display:grid;place-items:center;grid-row:span 3}
.sprite img{width:48px;height:48px;image-rendering:pixelated}
.nm{font-weight:700;font-size:1rem;min-width:0}
.box{width:24px;height:24px;border:2px solid var(--muted);border-radius:4px;display:grid;place-items:center;font-weight:700;color:#fff;grid-row:span 2}
.card.done .box{background:var(--done-line);border-color:var(--done-line)}
.meta{grid-column:2 / 4;display:flex;flex-wrap:wrap;gap:4px 10px;font-size:.82rem;color:var(--muted);font-variant-numeric:tabular-nums;min-width:0}
.meta .w-Rain{color:var(--rain);font-weight:700}
.meta .w-Sun{color:var(--sun);font-weight:700}
.loc{grid-column:2 / 4;font-size:.85rem;min-width:0;overflow-wrap:anywhere}
.note{grid-column:2 / 4;font-size:.78rem;color:var(--muted);font-style:italic}
.tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.tag{font-size:.68rem;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:3px;border:1px solid var(--line);color:var(--muted)}
.tag.sve{color:var(--sve);border-color:var(--sve)}
.tag.leg{color:var(--legend);border-color:var(--legend)}
.dots{display:inline-flex;gap:3px;vertical-align:middle}
.dots i{width:9px;height:9px;border-radius:2px;background:var(--line)}
.dots i.on{background:var(--c)}
.empty{color:var(--muted);padding:30px 0;text-align:center}
.key{margin-top:30px;font-size:.82rem;color:var(--muted);border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:4px}

.bar2{display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:space-between;align-items:flex-end}
.views{display:flex;border:2px solid var(--ink);border-radius:5px;overflow:hidden;margin-top:12px}
.vbtn{font:inherit;font-size:.85rem;font-weight:700;border:0;background:var(--panel);color:var(--ink);padding:7px 12px;cursor:pointer}
.vbtn+.vbtn{border-left:2px solid var(--ink)}
.vbtn[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.vbtn:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}
.mapwrap{margin-top:18px}
.maphead h2{font-family:var(--display);font-weight:500;font-size:1.3rem;margin:0}
.maphead p{margin:4px 0 10px;color:var(--muted);font-size:.9rem}
.mapscroll{overflow-x:auto;border:2px solid var(--edge);border-radius:8px;background:var(--sea)}
.mapscroll svg{display:block;width:100%;min-width:900px;height:auto}
.mapnote{font-size:.75rem;color:var(--muted);margin:6px 0 0}
.tlabel{font:600 13px var(--body);fill:var(--edge)}
.pin{cursor:pointer}
.pinbox{fill:var(--panel);stroke:var(--ink);stroke-width:2}
.pin:hover .pinbox,.pin:focus-visible .pinbox{stroke:var(--accent);stroke-width:3}
.pin:focus{outline:none}
.pin.off .pinbox{stroke-dasharray:6 4}
.pin.sel .pinbox{stroke:var(--accent);stroke-width:4}
.pin.clear .pinbox{fill:var(--done);stroke:var(--done-line)}
.pin.clear .badge{fill:var(--done-line)}
.pix{image-rendering:pixelated}
.pix.got{opacity:.35}
.tick{font:700 20px var(--body);fill:var(--done-ink)}
.badge{fill:var(--accent);stroke:var(--panel);stroke-width:2}
.badgetxt{font:700 13px var(--body);fill:var(--accent-ink)}
.plabel{font:700 13px var(--body);fill:var(--ink);paint-order:stroke;stroke:var(--land);stroke-width:4px;stroke-linejoin:round}
#spotpanel section{margin-top:14px}
@media (max-width:700px){header{position:static}}
@media (max-width:520px){.views{width:100%}.vbtn{flex:1}h1{font-size:1.5rem}.grid{grid-template-columns:1fr}.sync{margin-left:0;width:100%}}
@media (prefers-reduced-motion:reduce){.bar i{transition:none}}

/* ---------- site additions ---------- */
:root{--warn:#b0471c; --warn-bg:#f0d3bb; --need:#276f65; --need-bg:#d3e4d4}
a{color:var(--accent)}
nav.main{display:flex;gap:4px;margin-top:12px;flex-wrap:wrap;border-bottom:2px solid var(--line)}
nav.main a{font-family:var(--display);font-size:1.05rem;text-decoration:none;color:var(--muted);padding:6px 12px;border-bottom:3px solid transparent;margin-bottom:-2px}
nav.main a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
nav.main a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 16px}
.controls{display:flex;flex-wrap:wrap;gap:12px 22px;align-items:flex-end;margin-top:16px}
.ctl{display:flex;flex-direction:column;gap:4px;min-width:0}
.ctl>span{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.seg{display:flex;border:2px solid var(--line);border-radius:5px;overflow:hidden}
.seg button{font:inherit;font-size:.9rem;border:0;background:var(--panel);color:var(--ink);padding:6px 11px;cursor:pointer}
.seg button+button{border-left:2px solid var(--line)}
.seg button[aria-pressed="true"]{background:var(--c,var(--ink));color:#fff}
.seg button:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}
.day{display:flex;align-items:center;gap:6px}
.day input{width:4.2em;font:inherit;font-variant-numeric:tabular-nums;padding:6px 8px;border:2px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);text-align:center}
.day button,.btn{font:inherit;font-size:.9rem;border:2px solid var(--line);background:var(--panel);color:var(--ink);border-radius:5px;padding:6px 10px;cursor:pointer}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}
.ctl select{font:inherit;font-size:.9rem;padding:6px 8px;border:2px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink)}
.check{display:flex;gap:6px;align-items:center;font-size:.88rem;cursor:pointer}
.events{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.event{border-left:4px solid var(--c,var(--accent));background:var(--panel);padding:10px 14px;border-radius:0 6px 6px 0;font-size:.9rem}
.event b{font-family:var(--display);font-weight:500;font-size:1.05rem;margin-right:6px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-top:16px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 14px}
.stat b{display:block;font-family:var(--display);font-size:1.7rem;line-height:1.1;font-variant-numeric:tabular-nums}
.stat span{font-size:.82rem;color:var(--muted)}
.tag.need{color:var(--need);border-color:var(--need);background:var(--need-bg)}
.tag.last{color:var(--warn);border-color:var(--warn);background:var(--warn-bg)}
.tag.wx{color:var(--rain);border-color:var(--rain)}
.lede{color:var(--muted);font-size:.9rem;margin:4px 0 0;max-width:70ch}
/* bundles */
.rooms{display:flex;flex-direction:column;gap:6px}
.bgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.bundle{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;min-width:0}
.bundle.complete{background:var(--done);border-color:var(--done-line)}
.bhead{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.bhead h3{font-family:var(--display);font-weight:500;font-size:1.1rem;margin:0}
.bhead .n{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.reward{font-size:.8rem;color:var(--muted);margin:2px 0 8px}
.pick{font-size:.78rem;color:var(--muted);margin:-4px 0 8px}
.items{display:flex;flex-direction:column;gap:4px}
.item{display:grid;grid-template-columns:34px 1fr auto;gap:2px 10px;align-items:center;text-align:left;font:inherit;color:inherit;background:transparent;border:1px solid transparent;border-radius:6px;padding:4px 6px;cursor:pointer;width:100%}
.item:hover{border-color:var(--line)}
.item:focus-visible{outline:3px solid var(--accent);outline-offset:1px}
.item img{width:32px;height:32px;image-rendering:pixelated}
.item .in{min-width:0}
.item .in b{font-size:.92rem}
.item .in small{display:block;font-size:.76rem;color:var(--muted);overflow-wrap:anywhere}
.item .qty{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}
.item .gold{color:var(--legend)}
.item.got .in b{text-decoration:line-through;color:var(--done-ink)}
.item.got img{opacity:.5}
.item .box{grid-row:auto;width:22px;height:22px}
.item.got .box{background:var(--done-line);border-color:var(--done-line)}
.item .today{font-size:.68rem;font-weight:700;color:var(--need);text-transform:uppercase;letter-spacing:.04em}
.chiprow{display:flex;flex-wrap:wrap;gap:8px}
.ichip{display:flex;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:5px 10px 5px 6px;font-size:.85rem;min-width:0}
.ichip img{width:28px;height:28px;image-rendering:pixelated}
.ichip small{display:block;color:var(--muted);font-size:.74rem}
textarea{width:100%;min-height:90px;font:inherit;font-size:.85rem;padding:8px;border:2px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}
.stack{display:flex;flex-direction:column;gap:12px;max-width:640px}
.msg{font-size:.88rem;color:var(--done-ink)}
footer{margin-top:40px;font-size:.78rem;color:var(--muted);border-top:1px solid var(--line);padding-top:12px}
/* map: catchable vs not */
.pix.off{opacity:.3;filter:grayscale(1)}
.pin.dim .pinbox{opacity:.55}
.pin.dim .badge{fill:var(--muted)}
.pin.dim .plabel{opacity:.7}
.card.later{opacity:.7}
.why{display:block;font-size:.78rem;font-weight:700;color:var(--warn);margin-top:2px}
/* bulk complete buttons */
.btn.small{font-size:.8rem;padding:4px 10px}
.btn.ghost{background:transparent;color:var(--muted)}
.btn.danger{border-color:var(--warn);color:var(--warn)}
.sure{font-size:.8rem;color:var(--warn);font-weight:700}
.bulk{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.ccbar{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between;margin-top:16px}
.ccbar b{font-family:var(--display);font-weight:500;font-size:1.1rem}
.roomhead{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:baseline;justify-content:space-between;margin-bottom:10px}
.roomhead h2{margin:0}
.bfoot{margin-top:8px;display:flex;justify-content:flex-end}
/* farm picker */
.farmbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;font-size:.9rem}
.farmbar label{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.farmbar select{font:inherit;font-weight:700;padding:5px 8px;border:2px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);max-width:100%}
.farmform{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.farmform input{font:inherit;font-size:.9rem;padding:5px 8px;border:2px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);min-width:0;width:14em;max-width:100%}
/* recipe line on fish cards */
.recipes{grid-column:2 / 4;font-size:.8rem;min-width:0;overflow-wrap:anywhere;border-top:1px dashed var(--line);padding-top:4px;margin-top:2px}
.recipes .with{color:var(--muted)}
.recipes .tag{vertical-align:1px}
/* bundle set picker */
.setbar{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;justify-content:space-between;margin-top:16px}
.setbar b{font-family:var(--display);font-weight:500;font-size:1.1rem}
.setbar .seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
/* account / sync */
.headrow{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between}
.account{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;font-size:.85rem;min-width:0}
.account .who{font-weight:700;overflow-wrap:anywhere}
.sync{color:var(--muted);font-size:.8rem}
.sync.err{color:var(--warn)}
.btn.google{display:inline-flex;gap:8px;align-items:center;font-weight:700}
.btn.google span{font-family:var(--body);font-weight:700;color:#4285f4;background:#fff;border-radius:50%;width:18px;height:18px;display:grid;place-items:center;font-size:.75rem}
/* villagers */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal .dow{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:center;padding-bottom:2px}
.cal .day{background:var(--panel);border:1px solid var(--line);border-radius:6px;min-height:78px;padding:4px 5px;display:flex;flex-direction:column;gap:2px;min-width:0}
.cal .day.has{border-color:var(--legend)}
.cal .day.today{outline:3px solid var(--accent);outline-offset:-1px}
.cal .dn{font-family:var(--display);font-size:.95rem;line-height:1}
.cal .fest{font-size:.62rem;font-weight:700;color:var(--accent);line-height:1.15;overflow-wrap:anywhere}
.cal .who{display:flex;flex-wrap:wrap;gap:2px}
.cal .who button{display:flex;flex-direction:column;align-items:center;gap:0;background:none;border:0;padding:0;cursor:pointer;color:var(--ink);font:inherit;min-width:0;max-width:100%}
.cal .who img{width:36px;height:36px;image-rendering:pixelated;border-radius:4px}
.cal .who span{font-size:.62rem;font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.univbox{margin-top:18px;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--legend);border-radius:8px;padding:10px 14px;font-size:.88rem}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.villager{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;min-width:0;transition:box-shadow .3s}
.villager.sve{background:var(--sve-bg)}
.villager.bday{border-color:var(--legend);box-shadow:0 0 0 2px var(--legend) inset}
.villager.flash{box-shadow:0 0 0 3px var(--accent)}
.vhead{display:flex;gap:12px;align-items:center}
.portrait{width:64px;height:64px;image-rendering:pixelated;border-radius:6px;background:var(--bg);flex:none}
.vmeta{min-width:0}
.vmeta h3{font-family:var(--display);font-weight:500;font-size:1.2rem;margin:0}
.vmeta h3 small{font-family:var(--body);font-size:.75rem;color:var(--muted)}
.vmeta .tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.when{margin:4px 0 0;font-size:.85rem;color:var(--muted)}
.when .soon{color:var(--legend)}
.glabel{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:10px 0 4px}
.gifts{display:flex;flex-wrap:wrap;gap:4px}
.gift{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.gift img{width:22px;height:22px;image-rendering:pixelated;margin-left:-4px}
.gift{padding:2px 9px 2px 6px}
.gift.fishy{border-color:var(--accent)}
.gift.hit{background:var(--legend-bg);border-color:var(--legend);font-weight:700}
.gnote{font-size:.76rem;color:var(--muted);font-style:italic;margin:6px 0 0}
.none{font-size:.8rem;color:var(--muted)}
.villager details{margin-top:8px}
.villager summary{cursor:pointer;font-size:.8rem;font-weight:700;color:var(--muted)}
.villager details .gifts{margin-top:6px}
.event.bdayev{display:flex;gap:12px;align-items:center}
.event.bdayev img{width:44px;height:44px;image-rendering:pixelated;border-radius:6px;flex:none}
@media (max-width:520px){.cal .day{min-height:64px;padding:3px}.cal .who img{width:26px;height:26px}.cal .who span{display:none}.cal .fest{font-size:.55rem}}
@media (prefers-reduced-motion:reduce){.villager{transition:none}}
/* my to-do */
.todos{margin-top:26px}
.tcols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}
.tcol{display:flex;flex-direction:column;gap:8px;min-width:0}
.tcol h3{font-family:var(--display);font-weight:500;font-size:1.1rem;margin:0}
.tcol h3 small{font-family:var(--body);font-size:.8rem;color:var(--muted);font-weight:400;margin-left:6px}
.tlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.titem{display:flex;gap:10px;align-items:flex-start;padding:6px 4px;border-bottom:1px dashed var(--line)}
.titem input[type=checkbox]{width:20px;height:20px;margin:1px 0 0;flex:none;accent-color:var(--done-line);cursor:pointer}
.ttext{flex:1;min-width:0;overflow-wrap:anywhere;font-size:.93rem}
.titem.done .ttext{text-decoration:line-through;color:var(--muted)}
.tmeta{display:block;font-size:.75rem;color:var(--muted)}
.tmeta.late{color:var(--warn);font-weight:700}
.tbtn{font:inherit;font-size:.75rem;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:4px;padding:1px 7px;cursor:pointer;flex:none}
.tbtn.x{font-size:1rem;line-height:1;padding:0 6px}
.tbtn:hover{color:var(--ink);border-color:var(--muted)}
.tempty{font-size:.85rem;color:var(--muted);padding:4px 0}
.tadd{display:flex;gap:6px;flex-wrap:wrap}
.tadd input,.tadd select{font:inherit;font-size:.88rem;padding:6px 8px;border:2px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);min-width:0}
.tadd input:first-child{flex:1 1 160px}
.tadd input[type=number]{width:4.4em}
.tclear{align-self:flex-start;font:inherit;font-size:.8rem;background:none;border:0;color:var(--muted);text-decoration:underline;cursor:pointer;padding:0}

/* ---------- wooden frames, like the in-game menus ----------
   thick wood border + dark outer edge + light inner bevel + a small drop shadow */
.panel,.stat,.bundle,.villager,.mapscroll{
  border:4px solid var(--wood);border-radius:6px;
  box-shadow:0 0 0 2px var(--wood-dark),inset 0 0 0 2px var(--wood-light),0 4px 0 2px rgba(60,35,15,.25);
}
/* fish cards and to-do panels come in larger numbers, so a lighter frame */
.card{
  border:3px solid var(--wood);border-radius:5px;
  box-shadow:0 0 0 1px var(--wood-dark),inset 0 0 0 1px var(--wood-light),0 3px 0 1px rgba(60,35,15,.2);
}
/* keep status visible: the frame takes on the state colour */
.card.done,.bundle.complete{border-color:var(--done-line)}
.card.leg{border-color:var(--legend)}
.villager.bday{border-color:var(--legend);box-shadow:0 0 0 2px var(--wood-dark),inset 0 0 0 2px var(--legend-bg),0 4px 0 2px rgba(60,35,15,.25)}
.villager.flash{box-shadow:0 0 0 2px var(--wood-dark),0 0 0 6px var(--accent)}
/* frames need room for their shadow */
.grid,.bgrid,.vgrid,.stats,.tcols{gap:14px}
.stats{padding-bottom:4px}
.mapscroll{margin-bottom:6px}
/* recipes */
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.recipe{background:var(--panel);min-width:0;padding:12px 14px;border:3px solid var(--wood);border-radius:5px;box-shadow:0 0 0 1px var(--wood-dark),inset 0 0 0 1px var(--wood-light),0 3px 0 1px rgba(60,35,15,.2)}
.recipe.sve{background:var(--sve-bg)}
.recipe.made{background:var(--done);border-color:var(--done-line)}
.rhead{display:flex;gap:12px;align-items:center}
.rpic{width:48px;height:48px;image-rendering:pixelated;flex:none}
.rpic.noimg{display:grid;place-items:center;background:var(--bg);border-radius:6px;color:var(--muted)}
.rmeta{flex:1;min-width:0}
.rmeta h3{font-family:var(--display);font-weight:500;font-size:1.1rem;margin:0}
.rmeta .tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.rmade{display:flex;gap:6px;align-items:center;font-size:.8rem;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap}
.rmade input{width:20px;height:20px;accent-color:var(--done-line)}
.recipe.made .rmeta h3{color:var(--done-ink)}
.unlock{font-size:.82rem;margin:8px 0;color:var(--ink)}
.unlock.u-friend{color:var(--warn);font-weight:700}
.gift.ing b{font-weight:700;margin-left:2px}
.gift.madeof{border-style:dashed;border-color:var(--muted)}
.noimg{display:inline-grid;place-items:center;width:22px;height:22px;font-size:.8rem;color:var(--muted)}
.shoplist{padding:6px 12px}
.shoplist ul{list-style:none;margin:0;padding:0;columns:2 340px;column-gap:24px}
.srow{break-inside:avoid;border-bottom:1px dashed var(--line);padding:6px 0}
.srow label{display:flex;gap:10px;align-items:center;cursor:pointer}
.srow input{width:20px;height:20px;flex:none;accent-color:var(--done-line)}
.srow img,.srow .noimg{width:28px;height:28px;image-rendering:pixelated;flex:none}
.sname{flex:1;min-width:0;font-size:.92rem;overflow-wrap:anywhere}
.sqty{font-family:var(--display);font-size:1.05rem;font-variant-numeric:tabular-nums}
.srow.got .sname{text-decoration:line-through;color:var(--muted)}
.srow details{margin:2px 0 0 30px}
.srow summary{font-size:.75rem;color:var(--muted);cursor:pointer}
.srow details p{font-size:.78rem;margin:4px 0 0;color:var(--muted)}
/* Game version switch (header) */
.gameseg{border-radius:999px}
.gameseg button{font-size:.8rem;font-weight:700;padding:4px 12px}
.gameseg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.gameseg button[data-g="sve"][aria-pressed="true"]{background:var(--sve);color:#fff}
.tag.gi{color:var(--rain);border-color:var(--rain)}
/* ---------- compact header on phones ---------- */
.menubtn{display:none;font:inherit;font-size:.85rem;font-weight:700;border:2px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:4px 12px;cursor:pointer}
.menubtn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.farmextra{display:contents}
@media (max-width:700px){
  header{padding-block:10px 0}
  .top{flex-wrap:nowrap;align-items:center;gap:12px}
  h1{font-size:1.3rem;flex:none}
  h1 small{display:none}
  .prog{flex:1 1 auto;min-width:0}
  .prog .row{font-size:.75rem}
  .prog .row b{font-size:1rem}
  .bar{height:7px;margin-top:2px}
  .mini{display:none}
  .headrow{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:0 8px}
  .headright{grid-column:1 / -1}
  .farmbar{margin-top:8px;flex:1 1 auto;min-width:0;flex-wrap:wrap}
  .farmbar label{display:none}
  .farmbar select{max-width:55vw}
  .menubtn{display:inline-flex;margin-top:8px}
  .farmextra{display:none}
  .farmextra.active,header.open .farmextra{display:flex;flex-wrap:wrap;gap:8px;width:100%}
  .headright{display:none;width:100%;justify-content:flex-start;margin-top:4px}
  header.open .headright{display:flex}
  nav.main{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-top:8px;gap:0}
  nav.main::-webkit-scrollbar{display:none}
  nav.main a{flex:none;padding:6px 10px;font-size:.95rem}
  .stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .stat{padding:8px 9px}
  .stat b{font-size:1.25rem}
  .stat span{font-size:.72rem;line-height:1.25;display:block}
  section h2{flex-direction:column;align-items:flex-start;gap:2px}
  .roomhead{align-items:flex-start}
}
/* crops */
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}
.crop{background:var(--panel);padding:12px 14px;min-width:0;border:3px solid var(--wood);border-radius:5px;box-shadow:0 0 0 1px var(--wood-dark),inset 0 0 0 1px var(--wood-light),0 3px 0 1px rgba(60,35,15,.2)}
.crop.late{opacity:.7}
.chead{display:flex;gap:12px;align-items:center}
.chead img{width:44px;height:44px;image-rendering:pixelated;flex:none}
.cmeta{flex:1;min-width:0}
.cmeta h3{font-family:var(--display);font-weight:500;font-size:1.1rem;margin:0}
.cmeta .tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.cprofit{text-align:right;flex:none}
.cprofit b{display:block;font-family:var(--display);font-size:1.25rem;color:var(--done-ink);font-variant-numeric:tabular-nums}
.cprofit b.neg{color:var(--warn)}
.cprofit span{font-size:.75rem;color:var(--muted)}
.cstats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:10px 0 6px}
.cstats div{background:var(--bg);border-radius:4px;padding:4px 6px;min-width:0}
.cstats dt{font-size:.65rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.cstats dd{margin:0;font-size:.88rem;font-variant-numeric:tabular-nums}
.cstats s{color:var(--muted);font-size:.75rem}
.cseed{font-size:.8rem;margin:4px 0 0;color:var(--ink)}
@media (max-width:420px){.cstats{grid-template-columns:repeat(2,minmax(0,1fr))}}
footer .about{margin:0 0 10px;max-width:90ch;line-height:1.5}
/* collections */
.colgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px 12px}
.colitem{background:var(--panel);border:1px solid var(--line);align-items:start}
.colitem img{margin-top:2px}
.colitem .hl{background:var(--legend-bg)}
.rewards{margin-top:14px}
.rewards summary{cursor:pointer}
.rewards ul{margin:8px 0;padding-left:20px;font-size:.88rem;columns:2 300px}
.rewards li{break-inside:avoid;margin:2px 0}
.rewards li.got{color:var(--done-ink);text-decoration:line-through}
