/* shroomIQ: Night Forest (dark) with a Daylight Forest (light) counterpart. Theme set via <html data-theme>; the color scheme via <html data-scheme> (no attribute = Night Forest). */
:root,[data-theme=dark]{--iq:#e09654;--bg:#0f1a14;--panel:#17251d;--panel2:#1d3126;--line:#2a3f33;--ink:#e9f1e4;--mute:#93a79a;--go:#b6f36b;--on-go:#0f1a14;--no:#ff8f5a;--tab:#0b130e;--glow:#b6f36b55;--shadow:#000a;--scrim:#0d1610;--tag-go:#b6f36b;--tag-no:#ff8f5a;--mix:#e9c46a}
[data-theme=light]{--iq:#a85c34;--bg:#f2f6ee;--panel:#ffffff;--panel2:#e4ecdb;--line:#cbd9c1;--ink:#14231a;--mute:#53675a;--go:#2d7a31;--on-go:#ffffff;--no:#bf4519;--tab:#ffffff;--glow:#2d7a3140;--shadow:#1d2f2338;--scrim:#0d1610;--tag-go:#b6f36b;--tag-no:#ff8f5a;--mix:#8a6100}
/* v1.80.0: Chanterelle, Foxfire and Amethyst color schemes, each with a dark and a light version. --scrim tints the fade over photos; --tag-go/--tag-no color the swipe tags, which always sit on a dark scrim. */
[data-scheme=chanterelle][data-theme=dark]{--iq:#e09654;--bg:#1b130c;--panel:#261b12;--panel2:#312318;--line:#47341f;--ink:#f6ebdc;--mute:#b59f87;--go:#f4ae3d;--on-go:#1b130c;--no:#c4a0ff;--tab:#140e08;--glow:#f4ae3d55;--shadow:#000a;--scrim:#1a0f07;--tag-go:#f4ae3d;--tag-no:#c4a0ff;--mix:#ecd77a}
[data-scheme=chanterelle][data-theme=light]{--iq:#a85c34;--bg:#faf3e8;--panel:#ffffff;--panel2:#f2e5d1;--line:#e2cfb3;--ink:#2b1c0f;--mute:#73604b;--go:#a5560a;--on-go:#ffffff;--no:#7546c0;--tab:#ffffff;--glow:#a5560a38;--shadow:#3a240f30;--scrim:#1a0f07;--tag-go:#f4ae3d;--tag-no:#c4a0ff;--mix:#7f6400}
[data-scheme=foxfire][data-theme=dark]{--iq:#e09654;--bg:#0b1120;--panel:#121b2e;--panel2:#18243b;--line:#26344f;--ink:#e5edfb;--mute:#8f9db9;--go:#5cf0d4;--on-go:#05211c;--no:#ff8fb3;--tab:#080c18;--glow:#5cf0d466;--shadow:#000c;--scrim:#070c18;--tag-go:#5cf0d4;--tag-no:#ff8fb3;--mix:#f3cf6e}
[data-scheme=foxfire][data-theme=light]{--iq:#a85c34;--bg:#edf2f8;--panel:#ffffff;--panel2:#dde7f1;--line:#c3d1e0;--ink:#0e1a2c;--mute:#4c5d75;--go:#0a7a70;--on-go:#ffffff;--no:#c0336b;--tab:#ffffff;--glow:#0a7a7038;--shadow:#0e1a2c30;--scrim:#070c18;--tag-go:#5cf0d4;--tag-no:#ff8fb3;--mix:#866100}
[data-scheme=amethyst][data-theme=dark]{--iq:#e09654;--bg:#1e1733;--panel:#282042;--panel2:#33295a;--line:#4a3d73;--ink:#f2ecfb;--mute:#ab9fc8;--go:#b36cee;--on-go:#1e1733;--no:#ff9a1e;--tab:#18122a;--glow:#9a1bb866;--shadow:#000c;--scrim:#1a1230;--tag-go:#b36cee;--tag-no:#ff9a1e;--mix:#f1d670}
[data-scheme=amethyst][data-theme=light]{--iq:#a85c34;--bg:#f2eefa;--panel:#ffffff;--panel2:#ebe1f3;--line:#d6c6e8;--ink:#2a1c3f;--mute:#5f5278;--go:#8a17a8;--on-go:#ffffff;--no:#b84d00;--tab:#ffffff;--glow:#8a17a840;--shadow:#2a1c3f30;--scrim:#1a1230;--tag-go:#b36cee;--tag-no:#ff9a1e;--mix:#7d6000}
:root{--gutter:clamp(16px,5vw,32px);--serif:Fraunces,Georgia,serif;--sans:Manrope,system-ui,-apple-system,"Segoe UI",sans-serif}
*{box-sizing:border-box}button,a,input,select,summary,label,[role=button],[role=menuitem],[role=menuitemcheckbox]{touch-action:manipulation}[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}img,svg,video,canvas{max-width:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:16px max(var(--gutter),env(safe-area-inset-right)) 96px max(var(--gutter),env(safe-area-inset-left));overflow-wrap:break-word}
header,#status,#stage,footer{width:100%;max-width:440px}body>*{min-width:0}footer>*{max-width:100%}
h1{display:flex;align-items:center;justify-content:center;gap:10px;margin:2px 0 0;font:600 1.75rem/1.1 var(--serif);letter-spacing:-.01em}
h2{font:600 1.25rem var(--serif);margin:0 0 10px}h3{margin:18px 0 8px;font-size:.9rem;color:var(--mute);font-weight:500}
button,input,select{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 14px;cursor:pointer}
input{cursor:text}button:disabled{opacity:.5;cursor:default}
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--go);outline-offset:2px}
.ic{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.ic.on{fill:currentColor}
#ku,.seg{display:flex;gap:4px;padding:4px;background:var(--panel);border:1px solid var(--line);border-radius:999px}
#ku{margin-bottom:14px}#deckName{margin:0;font:600 1.1rem var(--serif);overflow-wrap:anywhere}
#ku button,.seg button{flex:1;min-width:0;min-height:40px;border:0;background:none;border-radius:999px;font-weight:700;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#ku button[aria-pressed=true],.seg button[aria-pressed=true]{background:var(--go);color:var(--on-go)}
#status{color:var(--mute);font-size:.9rem;min-height:1.4em;margin:12px 0}
#stage{position:relative}
#peek{position:absolute;inset:0;transform:translateY(14px) scale(.94);border-radius:28px;background:var(--panel2);opacity:.7}
#card{position:relative;z-index:1;border-radius:28px;overflow:hidden;background:var(--panel);touch-action:none;user-select:none;cursor:grab;box-shadow:0 0 0 1px var(--line),0 24px 48px -16px var(--shadow),0 0 60px -24px var(--glow)}
#card.locked{cursor:default}
@media(prefers-reduced-motion:no-preference){#card{transition:transform .3s cubic-bezier(.2,1.2,.3,1),opacity .25s}}
#photo{display:block;width:100%;height:var(--cardH);object-fit:cover;pointer-events:none}
#shade{position:absolute;left:0;right:0;bottom:0;padding:64px 20px 16px;text-align:center;color:#e9f1e4;background:linear-gradient(transparent,color-mix(in srgb,var(--scrim) 94%,transparent));pointer-events:none}
#dots{letter-spacing:.3em}
.addbtn{display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:color-mix(in srgb,var(--scrim) 70%,transparent);color:#fff}.addbtn.in{color:var(--go)}
#addBtn{position:absolute;top:10px;right:10px;width:44px;height:44px}
.pnav{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:48px;padding:0;border:0;font-size:1.6rem;line-height:1;background:color-mix(in srgb,var(--scrim) 65%,transparent);color:#fff}
#prevP{left:0;border-radius:0 12px 12px 0}#nextP{right:0;border-radius:12px 0 0 12px}
#tagL,#tagR{position:absolute;z-index:2;left:50%;top:50%;padding:6px 16px;border:3px solid;border-radius:10px;opacity:0;font-size:1.3rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;background:color-mix(in srgb,var(--scrim) 80%,transparent);pointer-events:none} /* centred over the photo's starting place; JS fades them with the drag */
#tagL{color:var(--tag-no);transform:translate(-50%,-50%) rotate(-10deg)}#tagR{color:var(--tag-go);transform:translate(-50%,-50%) rotate(10deg)}
#quiz,#settings,#grid,#decks,#practice,#article,#compare,#stats,#help{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:16px}
#quiz{margin-top:14px}#quiz h2{font-size:1.15rem}
#opts button,#coachOpts button{display:block;width:100%;min-height:48px;text-align:left;margin-bottom:8px}#opts em,#coachOpts em{color:var(--mute);font-family:var(--serif)}
#nameCard{display:none}
#card.rev #photo,#card.rev #shade,#card.rev .pnav,#card.rev #addBtn{display:none}
#card.rev #nameCard{display:grid;place-items:center;min-height:min(30vh,200px);padding:28px 20px;text-align:center;font-size:1.5rem;line-height:1.25}
#nameCard em{display:block;margin-top:6px;font-family:var(--serif);font-size:1.1rem;color:var(--mute)}
#opts.photos{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#opts.photos button{padding:0;min-height:0;margin:0;overflow:hidden;aspect-ratio:1}
#opts.photos img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
#opts button:disabled,#coachOpts button:disabled{opacity:1}#opts .ok,#coachOpts .ok{border-color:var(--go);background:var(--panel2)}#opts .bad,#coachOpts .bad{border-color:var(--no)}
#settings label,#explore label{display:block;margin:14px 0 6px}#settings output,#explore output{color:var(--go);font-weight:700}
input[type=range]{width:100%;padding:0;accent-color:var(--go)}.note,#setmsg,#decksMsg,#practiceMsg,#gridNote{color:var(--mute);font-size:.9rem;min-height:1.4em}
#place,#xPlace,#renameRow,#genusRow{display:flex;gap:8px;margin:10px 0}#place input,#xPlace input,#renameRow input,#genusSel{flex:1;min-width:0}
#find{width:100%}#resetDeckBtn,#resetDeckGo,#eraseBtn,#mixResetBtn,#eraseGo,#delGo,#resetGo,#removeGo,#deckList .warn{border-color:var(--no)}
.sw{display:flex;align-items:center;justify-content:space-between;width:100%}
.knob{position:relative;flex:none;width:46px;height:26px;border-radius:999px;background:var(--line)}
.knob::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--ink);transition:transform .2s}
.sw[aria-checked=true] .knob{background:var(--go)}.sw[aria-checked=true] .knob::after{transform:translateX(20px);background:var(--on-go)}
#gridItems{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
#gridItems figure{position:relative;margin:0;border-radius:14px;overflow:hidden;background:var(--panel2)}
#gridItems img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}
#gridItems figcaption{position:absolute;left:0;right:0;bottom:0;padding:28px 8px 8px;font:.75rem/1.25 var(--serif);color:#e9f1e4;background:linear-gradient(transparent,color-mix(in srgb,var(--scrim) 93%,transparent))}
#gridItems em{color:#b4c4b9}
#gridItems .addbtn{position:absolute;top:6px;right:6px;width:26px;height:26px;opacity:.85}#gridItems .addbtn .ic{width:14px;height:14px}
.thumb{display:block;width:100%;padding:0;border:0;border-radius:0;background:none}.thumb:hover,.thumb:focus-visible{outline:2px solid var(--go)}
.again{position:absolute;top:8px;left:8px;padding:3px 8px;border:0;border-radius:999px;font-size:.7rem;background:color-mix(in srgb,var(--scrim) 70%,transparent);color:#fff}
#practiceHead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}#practiceHead h2{margin:0;flex:1;min-width:0;overflow-wrap:anywhere}#practiceHead button{flex:none}
#practicePlay{background:var(--go);color:var(--on-go);border-color:var(--go);font-weight:700;padding:10px 18px}#practicePlay:disabled{opacity:.45}
ul{list-style:none;padding:0;margin:0}
#deckList li{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.dname{flex:1;min-width:0;overflow-wrap:anywhere}#deckList button,#members button.small{padding:4px 10px;font-size:.8rem}#deckList button{flex:none;width:5em;padding-inline:0;text-align:center}
#results li,#members li{display:flex;align-items:center;gap:10px;padding:6px 0}
#results img,#members img{width:48px;height:48px;object-fit:cover;border-radius:10px}
.rname{flex:1;line-height:1.25;font-family:var(--serif)}#results em,#members em{color:var(--mute)}.empty{color:var(--mute)}
#results .addbtn{width:36px;height:36px;flex:none;background:var(--panel2)}#results .tap{cursor:pointer}#results .rname.tap:hover{text-decoration:underline;text-decoration-color:var(--mute)}#results .rname.tap:focus-visible{outline:2px solid var(--go);outline-offset:2px;border-radius:6px}
select{border-radius:12px}
dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:20px;max-width:360px;padding:20px}
dialog::backdrop{background:#000a}dialog p{margin:0 0 10px}dialog .mute{color:var(--mute)}dialog form{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}
#actions{display:flex;align-items:center;gap:34px;margin:26px 0 8px}
#no,#yes{display:grid;place-items:center;width:64px;height:64px;padding:0;border-radius:50%}
#infoBtn{display:grid;place-items:center;width:48px;height:48px;padding:0;border-radius:50%;border:1.5px solid var(--line);background:transparent;color:var(--mute);font:italic 600 1.35rem/1 Georgia,'Times New Roman',serif}
#infoBtn:hover,#infoBtn:focus-visible{color:var(--ink);border-color:var(--mute)}
#no{border:1.5px solid var(--no);color:var(--no)}#yes{border:1.5px solid var(--go);background:color-mix(in srgb,var(--go) 14%,transparent);color:var(--go);box-shadow:0 0 28px -4px var(--glow)} /* lighter selected style, as the segmented tabs */
footer{margin-top:auto;padding-top:16px;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--mute);font-size:.8rem;text-align:center}
#tabs{position:fixed;left:0;right:0;bottom:0;z-index:5;background:var(--tab);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0)}
#tabsIn{display:flex;max-width:480px;margin:0 auto;padding:6px max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left))}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:56px;padding:4px;border:0;border-radius:12px;background:none;color:var(--mute);font-size:.75rem}
.tab[aria-current=page]{color:var(--go)}
#quiz{position:relative;z-index:2}
#landing{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:0;overflow:hidden}
#landing h2{font-size:clamp(1.45rem,7vw,1.8rem);margin-bottom:6px}#landing h2 span{white-space:nowrap}.lead{color:var(--mute);margin:0}
/* v2.1.0: the Mosaic Welcome page: photo banner, photo tiles that show real species */
.lbanner{height:210px;position:relative;background:var(--panel2)}.lbanner img{display:block;width:100%;height:210px;object-fit:cover;object-position:50% 45%}
.lbanner::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0a120d77 0,#0a120d00 30%,var(--panel) 100%)}
.lbody{position:relative;z-index:1;margin-top:-52px;padding:0 20px 20px}
#landing h3{margin:16px 0 10px}
/* v2.2.0: the Welcome prompt stands out: heavier, larger and in the main text colour */
#landing h3.lpick{margin:18px 0 10px;font-size:1.15rem;font-weight:800;color:var(--ink);letter-spacing:.01em}
#lChoice{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#lChoice #lCustom{grid-column:1/-1}
#lChoice button{position:relative;overflow:hidden;display:block;min-height:96px;padding:0;text-align:left;border:2px solid #ffffff22;background:var(--panel2);color:#fff}
#lChoice #lCustom{display:flex;align-items:center;gap:8px;min-height:68px;padding:10px 12px;background:var(--panel2);border-color:var(--line)}
/* v2.3.0: the Welcome photos are fixed: the bundled images show from the first paint (no fade, no live pick) */
.lt-img,.lt-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
#lChoice button:not(#lCustom)::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(transparent 20%,#06100aeb)}
.lt-t{position:absolute;left:12px;right:12px;bottom:9px;z-index:2;display:flex;flex-direction:column;gap:1px;text-align:left;text-shadow:0 1px 3px #000a}
#lChoice strong{font-size:.95rem}#lChoice small{color:#e3ece5;font-size:.76rem;line-height:1.25}
#lChoice #lCustom .lt-t{position:static;flex:1;min-width:0;text-shadow:none}#lChoice #lCustom strong{color:var(--ink)}#lChoice #lCustom small{color:var(--mute)}
.lt-circ{flex:none;display:flex;margin-right:30px}.lt-circ span{width:46px;height:46px;border-radius:50%;overflow:hidden;border:2px solid var(--panel2);margin-left:-14px;position:relative;background:var(--panel)}
.lt-circ img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
#lChoice button[aria-pressed=true]{border-color:var(--go);box-shadow:0 0 0 1px var(--go)}
#lChoice button[aria-pressed=true]::after{content:"✓";position:absolute;right:8px;top:8px;z-index:3;width:22px;height:22px;border-radius:50%;background:var(--go);color:var(--on-go);font:700 13px/22px var(--sans);text-align:center}
#lChoice #lCustom[aria-pressed=true]::after{top:50%;margin-top:-11px;right:10px}
#landing label{display:block;margin:14px 0 6px}#landing output{color:var(--go);font-weight:700}
#lPlace{display:flex;gap:8px;margin:10px 0}#lQ{flex:1;min-width:0}#lDeck{width:100%}
#lMsg{color:var(--mute);font-size:.9rem;min-height:1.4em}
#lStart{width:100%;margin-top:12px;min-height:52px;border:0;background:var(--go);color:var(--on-go);font-weight:700}
#lResume{display:block;margin:10px auto 0;border:0;background:none;color:var(--mute);text-decoration:underline}
#status.cheer{text-align:center;color:var(--ink);font:600 1.4rem var(--serif);margin:16px 0 12px}
.chk{display:flex;align-items:center;gap:8px;margin:6px 0 10px;color:var(--mute);font-size:.9rem}.chk input{padding:0;width:18px;height:18px;accent-color:var(--go)}
#genusFind{width:100%}#genusResults,#genusPreview{list-style:none;padding:0;margin:6px 0}
.gpick{display:block;width:100%;text-align:left;margin-bottom:6px}
#genusPick label{display:block;margin:12px 0 6px}#genusPick output{color:var(--go);font-weight:700}#genusInfo{color:var(--mute);font-size:.9rem;margin:8px 0 0}
#genusPreview li{display:flex;align-items:center;gap:10px;padding:6px 0}#genusPreview img{width:48px;height:48px;object-fit:cover;border-radius:10px}#genusPreview em{color:var(--mute)}
#genusGo{width:100%;margin-top:10px;border-color:var(--go)}
#genusResults{padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);max-height:280px;overflow:auto}
.gnote{padding:6px 8px;color:var(--mute);font-size:.85rem}.gnote em{font-family:var(--serif)}
#genusResults .gpick{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0;padding:8px;border:0;border-radius:8px;background:none}
#genusResults .gpick:hover,#genusResults .gpick:focus-visible{background:var(--panel)}.gpick small{color:var(--mute);white-space:nowrap}

/* v1.2.1: study article, compare, mix-ups */
.sw+.note{margin-top:8px}.sw{margin-top:4px}
.phead{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.aname{margin:0 0 2px;font:600 1.6rem/1.15 var(--serif)}.aname em{display:block;font-size:1.05rem;font-weight:400;color:var(--mute)}
.banner{margin:12px 0;padding:10px 12px;border:1px solid var(--no);border-radius:12px;font-size:.85rem;color:var(--ink);background:var(--panel2)}
.strip{display:flex;gap:8px;overflow-x:auto;margin:12px -4px 0;padding:0 4px 4px;scroll-snap-type:x mandatory}
.strip figure{flex:0 0 78%;margin:0;scroll-snap-align:start}.strip img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px;background:var(--panel2)}
.fine{font-size:.72rem;color:var(--mute);line-height:1.35;margin-top:3px;overflow-wrap:anywhere}
.lineage{display:flex;flex-wrap:wrap;gap:4px 6px;margin:12px 0 0;font-size:.78rem;color:var(--mute)}.lineage li::after{content:"›";margin-left:6px;opacity:.6}.lineage li:last-child::after{content:""}.lineage b{color:var(--ink);font-weight:500}
.toc{display:flex;gap:6px;overflow-x:auto;margin:14px -4px 6px;padding:0 4px 6px}.toc button{flex:none;padding:6px 12px;border-radius:999px;font-size:.8rem}
details.asec{border-top:1px solid var(--line);padding:10px 0}details.asec summary{cursor:pointer;font:600 1.05rem var(--serif);list-style:none;display:flex;justify-content:space-between;align-items:center}
details.asec summary::-webkit-details-marker{display:none}details.asec summary::after{content:"+";color:var(--go);font:700 1.2rem var(--sans)}details.asec[open] summary::after{content:"−"}
details.asec p{margin:8px 0;line-height:1.55;font-size:.95rem}details.asec h4{margin:14px 0 2px;font-size:.85rem;color:var(--go);font-weight:700}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.chips button{padding:6px 10px;border-radius:999px;font-size:.82rem}.chips em{color:var(--mute)}
.abox{margin:14px 0 0;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}.abox h3{margin:0 0 6px}

.cols{display:grid;grid-template-columns:1fr 1fr;gap:10px}.cols>div{min-width:0;display:flex;flex-direction:column}.cols img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:12px}
.cols h3{margin:8px 0 2px;color:var(--ink);font:600 .95rem/1.2 var(--serif)}.cols h3 em{display:block;font-weight:400;color:var(--mute);font-size:.82rem}.cols p{font-size:.82rem;line-height:1.45;margin:6px 0}.cols button{width:100%;margin-top:auto;padding:8px;font-size:.8rem}
#mixItems li{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--line)}
#mixItems .pair{display:flex;gap:4px}#mixItems img{width:44px;height:44px;object-fit:cover;border-radius:10px}
#mixItems .rname{font-size:.85rem}#mixItems .rname small{display:block;color:var(--mute);font-family:var(--sans)}#mixItems button{padding:5px 9px;font-size:.75rem}
#mixItems .acts{display:flex;flex-direction:column;gap:4px}
/* Mix-ups grid: one tile per pair, both photos side by side */
#gridItems.pairs{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}#gridItems .pairtile{flex:0 0 min(100%,232px);display:flex;gap:2px}#gridItems .pairtile>*{flex:1;min-width:0}#gridItems .pairtile img.done{opacity:.45}
.textbtn{display:block;margin:16px auto 0;padding:6px 12px;font-size:.8rem;color:var(--mute)}

/* v1.2.2: deck thumbnails */
.dthumb{flex:none;width:44px;height:44px;border-radius:10px;object-fit:cover;background:var(--panel2)}.dthumb.empty{display:grid;place-items:center;font-size:1.25rem;opacity:.6}

/* v1.2.3: Play-tab progress bar */
#progress{display:flex;align-items:center;gap:10px;width:100%;max-width:440px;margin-bottom:8px;color:var(--ink);font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums}
#pTrack{position:relative;flex:1;height:22px;border-radius:999px;overflow:hidden;background:var(--panel2);box-shadow:inset 0 0 0 1px var(--line)}
#pFill{width:0;height:100%;border-radius:999px;background:var(--go);box-shadow:0 0 12px -2px var(--glow)}
@media(prefers-reduced-motion:no-preference){#pFill{transition:width .4s cubic-bezier(.2,.8,.3,1)}}

/* v1.2.4: % complete inside the bar, just right of the fill edge (tucked inside the fill once it nears the end) */
#pPct{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding-left:8px;font-size:.72rem;line-height:1;color:var(--ink);white-space:nowrap;pointer-events:none}
#pTrack.late #pPct{transform:translateX(-100%);padding:0 8px 0 0;color:var(--on-go)} /* 82%+: label sits inside the fill's right end, dark on the bright fill */
@media(prefers-reduced-motion:no-preference){#pPct{transition:left .4s cubic-bezier(.2,.8,.3,1)}}

/* v1.2.5: deck switcher removed from the top of Play; info line above the progress bar (tap opens Collection since v1.2.6) */
header{margin-bottom:10px}#logo{display:block;width:auto;height:44px}.iq{color:var(--iq)}#status:empty{display:none}
#info{display:block;max-width:100%;margin:0 0 8px;padding:4px 12px;border:0;border-radius:999px;background:none;color:var(--ink);font:600 1.3rem/1.25 var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#info::after{content:" ›";color:var(--go);font-weight:700}#info:hover{color:var(--go)}

/* v1.3.0: Decks > Create New, "Explore by location", Create Deck! */
#createBtn{display:block;width:100%;min-height:48px;border:0;background:var(--go);color:var(--on-go);font-weight:700}
#resetDeckBtn,#eraseBtn,#mixResetBtn{display:block;width:100%;min-height:48px;margin-top:16px}#createBtn{margin-top:16px;min-height:52px}
#explore{margin-bottom:0}#practice details.asec:last-of-type{border-bottom:1px solid var(--line)}#practice details.asec>input[type=search]{margin-top:10px}#xLoc{margin:4px 0 10px}#xMsg{color:var(--mute);font-size:.9rem;min-height:1.4em;margin:8px 0 0}
#xGo{width:100%;margin-top:12px;border-color:var(--go)}#xMsg.good{color:var(--go);font-size:.8rem}#explore{overflow-wrap:anywhere}

/* v1.4.0: Mix-ups deck row */
.dthumb.open,.dname.open{cursor:pointer}.dname.open:focus-visible{outline:2px solid var(--go);outline-offset:2px;border-radius:6px}
.dname .sub{display:block;margin-top:2px;font-size:.75rem;color:var(--mute)}

/* v1.4.5: the app title is a button that opens the welcome page */
#home{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 auto;padding:0;border:0;border-radius:12px;background:none;text-align:center}#home:hover{opacity:.85}

/* v1.4.6: Start new game is centered on the Settings page */

/* v1.4.7: Mix-ups page "Clear list" button and its confirmation */
#clearMix{display:block;margin:16px auto 0;border-color:var(--no)}#clearGo{border-color:var(--no)}

/* v1.4.8: the left value is the completed count; right-aligned so it sits against the bar like the total on the other side */
#pMin{text-align:right}

/* v1.5.0: photo quality control in Settings (a .seg is the same pill switch as the Collection tabs) */
.seg{margin:6px 0 0}.seg+.note{margin-top:8px}

/* v1.5.1: after an answer: feedback line, Study | Compare row, add-to-deck, and one primary Next card */
#after{margin-top:6px;padding-top:12px;border-top:1px solid var(--line)}
#result{display:flex;gap:8px;align-items:baseline;margin:0 0 12px;line-height:1.4}#result::before{flex:none;font-weight:700}
#result.ok::before,#result.ok b{color:var(--go)}#result.bad::before,#result.bad b{color:var(--no)}
#result.ok::before{content:"✓"}#result.bad::before{content:"✗"}#result b{font-weight:700}.sp{font-family:var(--serif)}
#qActs{display:grid;grid-template-columns:1fr 1fr;gap:8px}#qActs.one{grid-template-columns:1fr}
#qActs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:0;min-height:48px;padding:8px 10px;font-size:.9rem;text-align:center}
#qActs small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mute);font-size:.72rem}
#lookalike{margin:10px auto 0;text-align:center}#lookalike button{max-width:100%;padding:6px 12px;font-size:.8rem;color:var(--mute)}#lookalike .addmenu{left:50%;transform:translateX(-50%)}
/* "Add to Deck ›": a button that opens a menu of your decks; a small "✓ Added to <deck>!" note appears below it, and the button stays */
.addwrap{position:relative;display:inline-block;max-width:100%}
.addnote{margin-top:4px;font-size:.75rem;color:var(--mute)}.addnote p{margin:2px 0}.addnote p::before{content:"✓ ";color:var(--go);font-weight:700}
.addmenu{position:absolute;z-index:10;top:calc(100% + 4px);right:0;min-width:160px;max-width:min(260px,80vw);max-height:40vh;overflow:auto;margin:0;padding:4px;list-style:none;background:var(--panel2);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px -8px var(--shadow);text-align:left}
.addmenu li.new{margin-top:4px;padding-top:4px;border-top:1px solid var(--line)}.addmenu[hidden]{display:none}.addmenu button{display:block;width:100%;border:0;background:none;text-align:left;padding:8px 10px;border-radius:10px;font-size:.85rem;color:var(--ink);overflow-wrap:anywhere}.addmenu button:hover,.addmenu button:focus-visible{background:var(--panel)}
#mixItems .addwrap{display:block}#mixItems .addwrap>button{width:100%}#mixItems .addnote{max-width:150px}
#next{display:block;width:100%;min-height:52px;margin:12px 0;border:0;background:var(--go);color:var(--on-go);font-weight:700}


/* Deck menu for the "+" buttons */
#deckMenu{position:fixed;z-index:30;min-width:190px;max-width:min(300px,90vw);max-height:50vh;overflow:auto;padding:4px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px -8px var(--shadow)}
#deckMenu ul{margin:0;padding:0;list-style:none}#deckMenu button{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:0;border-radius:10px;background:none;color:var(--ink);font-size:.9rem;text-align:left;overflow-wrap:anywhere}
#deckMenu button:hover,#deckMenu button:focus-visible{background:var(--panel)}#deckMenu .tick{flex:none;width:1.1em;color:var(--go);font-weight:700}
#deckMenu li.new{margin-top:4px;padding-top:4px;border-top:1px solid var(--line)}#deckMenu p{margin:4px 10px 6px;min-height:1.1em;font-size:.75rem;color:var(--go)}
#practiceMsg.good{color:var(--go);font-size:.8rem}
/* v1.23.9: the version label sits the same 52px below "Start new game" as that button sits below the Appearance switch */
#ver{margin:40px 0 0}
/* v1.24.0: mix-up coach (bottom of the Compare page since v1.24.2) */.coachhost{margin-top:4px}
#coachProg{display:flex;justify-content:space-between;gap:8px;margin:10px 0;font-size:.85rem;color:var(--mute)}#coachProg b{color:var(--ink);font-weight:600}
.coachimg{display:block;width:100%;height:min(46vh,380px);object-fit:cover;border-radius:16px;margin:8px 0 12px}
#coachOpts{margin-top:4px}#coachOpts button{text-align:left;margin-bottom:8px;width:100%}
#coachDone{display:flex;flex-direction:column;gap:8px;margin-top:8px}#coachDone button{min-height:48px}
#gridHead h2{margin:0}
#compare .phead h2{margin:0}
/* v1.25.0: seasonality ("When it fruits") and the Fruiting this month deck row */
.season{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;height:120px;margin:12px 0 6px}
.season .mo{display:flex;flex-direction:column;align-items:center;height:100%;font-size:.7rem;color:var(--mute)}
.season .col{flex:1;display:flex;align-items:flex-end;width:100%}
.season .bar{width:100%;border-radius:6px 6px 2px 2px;background:var(--go);opacity:.5}
.season .peak .bar{opacity:1}.season .now{color:var(--ink);font-weight:700}.season .now .bar{outline:2px solid var(--ink);outline-offset:1px}
#article .seg{margin:6px 0 4px}#article .asec .fine{margin-top:2px}
.btnpad{flex:none;width:5em}
/* v1.26.0: "Where and when" (observation map, loaded on tap) */
.mapbox{margin:6px 0 10px}
#wwmap{height:min(52vh,320px);border-radius:14px;overflow:hidden;isolation:isolate;border:1px solid var(--line)}
#wwmap .leaflet-container{font:inherit}
#articleName .aname{margin:0}
#article .phead{align-items:flex-start;gap:12px}
/* v1.27.1: active-deck badge on each deck's thumbnail */
.thwrap{position:relative;flex:none;width:44px;height:44px}
#deckList button.actbadge{position:absolute;top:-7px;left:-7px;width:22px;height:22px;min-height:0;padding:0;border-radius:50%;border:2px solid var(--mute);background:var(--panel);color:var(--on-go);font-size:.7rem;font-weight:700;line-height:1;display:grid;place-items:center}
#deckList button.actbadge::after{content:'';position:absolute;inset:-10px} /* 42px tap area */
#deckList button.actbadge[aria-checked=true]{background:var(--go);border-color:var(--go)}
#deckList button.actbadge[aria-disabled=true]{opacity:.35}

/* Decks page: compact header row, Now playing strip, grouped rows, ⋯ menu */
#decks .phead{margin-bottom:8px}#decks .phead h2{margin:0}
#createNew{flex:none;min-height:36px;padding:6px 14px;border:0;background:var(--go);color:var(--on-go);font-size:.85rem;font-weight:700}
#nowPlaying{display:flex;align-items:center;gap:10px;margin:0 0 6px;padding:10px;border:1px solid var(--go);border-radius:16px;background:color-mix(in srgb,var(--go) 10%,var(--panel))}
#nowPlaying .dthumb{width:52px;height:52px}#nowPlaying .dname{font-weight:600}#nowPlaying .dname .sub{font-weight:400}
.kicker{display:block;margin-bottom:2px;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--go)}
#deckList li.grp{display:block;padding:12px 6px 4px;border-bottom:0;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
#deckList li:not(.grp){padding-inline:6px}
#deckList li.on{border-radius:12px;background:color-mix(in srgb,var(--go) 10%,transparent);box-shadow:inset 3px 0 0 var(--go)}
.dname .sub{color:color-mix(in srgb,var(--ink) 68%,var(--panel))}
#nowPlaying button.go{flex:none;width:4.6em;min-height:40px;border:0;background:var(--go);color:var(--on-go);font-weight:700}#nowPlaying button.go:disabled{opacity:.4}
#deckList button.more{width:2.4em;font-size:1.1rem;line-height:1;letter-spacing:.05em}
#rowMenu{position:fixed;z-index:30;min-width:150px;padding:4px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px -8px var(--shadow)}
#rowMenu ul{margin:0;padding:0;list-style:none}#rowMenu button{display:block;width:100%;padding:10px 12px;border:0;border-radius:10px;background:none;color:var(--ink);font-size:.9rem;text-align:left}
#rowMenu button:hover,#rowMenu button:focus-visible{background:var(--panel)}#rowMenu button.warn{color:var(--no)}#rowMenu button:disabled{opacity:.4}

/* Collection tab */
#cHead{display:flex;align-items:center;gap:14px;margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--panel2)}
#cHead.done{border-color:var(--go)}
#cRing{--p:0;flex:none;display:grid;place-items:center;width:62px;height:62px;border-radius:50%;background:conic-gradient(var(--go) calc(var(--p) * 1%),var(--line) 0)}
#cRing span{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--panel2);font:700 .78rem var(--sans)}
.cmain{min-width:0;flex:1}#cStats{display:flex;flex-wrap:wrap;gap:2px 10px;margin:4px 0 0;font-size:.78rem;color:var(--mute)}
#cMile{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin:-4px 0 12px;font-size:.8rem;color:var(--mute)}#cMile b{color:var(--go)}#cMile button{padding:6px 14px;margin-left:auto}
#cTools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px}
#cToggle{min-height:36px;padding:4px 14px;font-size:.85rem}#cView{padding:2px}#cView button{min-height:32px;padding:0 14px;font-size:.8rem}
#cPanel{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:8px 14px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}#cPanel[hidden]{display:none}
#cPanel label{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--mute)}#cPanel select{min-height:34px;padding:2px 8px;font-size:.85rem}#cPanel .chk{color:var(--ink)}
#cNext{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}
#cNext img{flex:none;width:48px;height:48px;border-radius:10px;object-fit:cover}#cNext .dname{font-size:.9rem}#cNext button{flex:none;padding:6px 16px}
#cNext[hidden],#cMile[hidden],#cHead[hidden],#cTools[hidden]{display:none}
#decks button.go,#cMile button.go,#cNext button.go,#tdActs button.go,.cempty button.go{border:0;background:var(--go);color:var(--on-go);font-weight:700}
.dots{display:block;margin-top:2px;font-size:.62rem;letter-spacing:.12em;color:var(--go)}
#gridItems .ghead{grid-column:1/-1;margin:10px 0 0;font:600 .95rem var(--serif);color:var(--ink)}#gridItems .ghead:first-child{margin-top:0}
#gridItems figcaption.anon{display:none}
#gridItems.list{display:flex;flex-direction:column;gap:8px}
#gridItems.list figure{display:flex;align-items:center;gap:12px;padding:6px;border-radius:14px;padding-right:44px;min-height:68px}
#gridItems.list .thumb{flex:none;width:64px;height:64px;border-radius:10px;overflow:hidden}#gridItems.list img{width:64px;height:64px;aspect-ratio:1}
#gridItems.list figcaption{position:static;flex:1;min-width:0;padding:0;background:none;font-size:.85rem}#gridItems.list figcaption.anon{display:block;color:var(--mute);font-family:var(--sans)}
#gridItems.list .addbtn{top:50%;right:8px;transform:translateY(-50%)}
.cempty{grid-column:1/-1;text-align:center;padding:28px 12px}.cempty .big{display:block;font-size:2.4rem;opacity:.7}.cempty p{margin:6px 0}.cempty .mute{color:var(--mute);font-size:.9rem}.cempty button{margin-top:10px;padding:8px 20px}
#tileDlg{width:min(92vw,360px)}#tdImg{display:block;width:100%;max-height:50vh;object-fit:cover;border-radius:14px;margin-bottom:10px;background:var(--panel2)}#tdName{margin:0 0 12px;text-align:center}
#tdActs{display:flex;flex-direction:column;gap:8px}#tdActs button{min-height:44px}
#cView{flex:none}#cView button{flex:none;overflow:visible}
#credit{margin-top:2px;font-size:.72rem;opacity:.8}

/* Help page */
#help .h-step{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start;padding:24px 0 8px;border-top:1px solid var(--line);margin-top:20px}
#help .h-eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
#help .h-step h2{font-size:1.4rem;margin:2px 0 6px}
#help .h-what{margin:0 0 14px;color:var(--mute)}
#help ol.h-keys{margin:0;padding:0;list-style:none;display:grid;gap:10px}
#help ol.h-keys li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start}
#help .h-n{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--pin);color:var(--on-pin);font-size:.72rem;font-weight:800;margin-top:1px}
#help ol.h-keys b{font-weight:800}
#help .h-tip{margin:14px 0 0;font-size:.86rem;color:var(--mute)}
#help .h-phone{width:268px;max-width:100%;border:7px solid var(--ink);border-radius:30px;background:var(--s-bg);overflow:hidden;position:relative;aspect-ratio:9/17}
#help .h-scr{position:absolute;inset:0;padding:12px 10px 0;color:var(--s-ink);font:600 9.5px/1.3 var(--sans);display:flex;flex-direction:column;gap:7px}
#help .h-brand{text-align:center;font:600 15px var(--serif);padding-top:2px}
#help .h-panel{background:var(--s-panel);border:1px solid var(--s-line);border-radius:12px;padding:8px}
#help .h-tabs{margin-top:auto;display:flex;border-top:1px solid var(--s-line);background:#0b130e;margin-inline:-10px;padding:5px 6px 7px;font-size:8px;color:var(--s-mute);text-align:center}
#help .h-tabs span{flex:1}.h-tabs .h-on{color:var(--s-go);font-weight:800}
#help .h-btn{display:block;text-align:center;padding:6px;border:1px solid var(--s-line);border-radius:999px;background:var(--s-panel2)}
#help .h-go{background:var(--s-go);color:var(--s-on-go);border-color:var(--s-go);font-weight:800}
#help .h-mute{color:var(--s-mute);font-weight:400}
#help .h-ph{border-radius:9px;background:radial-gradient(circle at 50% 38%,#d9b97a 0 20%,transparent 21%),linear-gradient(160deg,#5a7a3c,#2b4a2a 55%,#1b2e20)}
#help .h-ph.h-b{background:radial-gradient(circle at 45% 40%,#c86a4a 0 22%,transparent 23%),linear-gradient(160deg,#4f6b3a,#233d27)}
#help .h-ph.h-c{background:radial-gradient(circle at 55% 42%,#cfcfc4 0 20%,transparent 21%),linear-gradient(160deg,#3d5a3b,#1c3022)}
#help .h-pin{position:absolute;z-index:3;display:grid;place-items:center;width:19px;height:19px;border-radius:50%;background:var(--pin);color:var(--on-pin);font:800 10px var(--sans);box-shadow:0 0 0 2px var(--s-bg)}
#help .h-row{display:flex;align-items:center;gap:6px}
#help .h-seg{display:flex;gap:2px;padding:2px;border:1px solid var(--s-line);border-radius:999px;background:var(--s-panel)}
#help .h-seg span{flex:1;text-align:center;padding:4px 2px;border-radius:999px;font-size:8.5px}.h-seg .h-on{background:var(--s-go);color:var(--s-on-go);font-weight:800}
#help .h-circ{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--s-line);font-size:13px}
#help .h-circ.h-y{background:var(--s-go);color:var(--s-on-go)}.h-circ.h-x{border-color:var(--s-no);color:var(--s-no)}
#help .h-opt{padding:7px 8px;border:1px solid var(--s-line);border-radius:9px;background:var(--s-panel2)}
#help .h-opt.h-ok{border-color:var(--s-go);background:#223d27}.h-opt.h-bad{border-color:var(--s-no);background:#3b2a22}
#help .h-dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--s-mute);flex:none}.h-dot.h-on{background:var(--s-go);border-color:var(--s-go)}
#help .h-th{width:26px;height:26px;border-radius:7px;flex:none}
#help .h-pill{padding:3px 8px;border-radius:999px;border:1px solid var(--s-line);font-size:8.5px}
#help .h-menu{position:absolute;right:12px;width:104px;padding:3px;border:1px solid var(--s-line);border-radius:9px;background:var(--s-panel2);box-shadow:0 8px 18px #0008;z-index:2;font-size:8.5px}
#help .h-menu span{display:block;padding:4px 6px}
#help .h-ring{width:38px;height:38px;border-radius:50%;background:conic-gradient(var(--s-go) 50%,var(--s-line) 0);display:grid;place-items:center;flex:none}
#help .h-ring i{display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:var(--s-panel2);font:800 8px var(--sans);font-style:normal}
#help .h-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.h-grid3 .h-ph{aspect-ratio:4/5}
#help .h-bars{display:flex;align-items:flex-end;gap:2px;height:32px}.h-bars i{flex:1;background:var(--s-go);border-radius:2px 2px 0 0;opacity:.85}
#help .h-map{height:78px;border-radius:9px;background:linear-gradient(#1d3126,#17251d);position:relative;border:1px solid var(--s-line)}
#help .h-map i{position:absolute;width:6px;height:6px;border-radius:50%;background:#9aa7a0;border:1px solid #fff}
#help .h-map u{position:absolute;inset:14px 22px;border:1.5px dashed #6fa8ff;border-radius:50%}
#help .h-tog{width:30px;height:16px;border-radius:999px;background:var(--s-go);position:relative}.h-tog:after{content:"";position:absolute;right:2px;top:2px;width:12px;height:12px;border-radius:50%;background:var(--s-on-go)}
#help .h-foot{margin-top:6px;text-align:center;font-size:7.5px;color:var(--s-mute);font-weight:400;padding-bottom:2px}
#help .h-summary{margin-top:36px;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
#help .h-summary h2{font-size:1.15rem}.h-summary ul{margin:10px 0 0;padding-left:18px;color:var(--mute)}.h-summary li{margin:4px 0}
#help{--pin:var(--no);--on-pin:var(--on-go)}
#help .h-phone{--s-bg:#0f1a14;--s-panel:#17251d;--s-panel2:#1d3126;--s-line:#2a3f33;--s-ink:#e9f1e4;--s-mute:#93a79a;--s-go:#b6f36b;--s-on-go:#0f1a14;--s-no:#ff8f5a;margin-inline:auto}
#help .h-lead{margin:0 0 12px;color:var(--mute)}
#help .h-toc{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 4px;padding:0;list-style:none}
#help .h-toc button{padding:5px 12px;font-size:.8rem;border-radius:999px}
#help .h-step h2{font-family:var(--serif)}
#help .h-what{margin-top:0}

#setHead{margin-bottom:10px}#setHead h2{margin:0}#helpBtn{flex:none}
#helpBack{flex:none}

/* Stats tab */
#stats h2{margin-bottom:10px}#stScope{display:flex;flex-direction:column;gap:8px;margin:0 0 12px}
#stats .seg button{min-height:36px;font-size:.82rem}
.stcard{margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--panel2)}
.stcard h3{margin:0 0 8px;font:600 1rem var(--serif);color:var(--ink)}.stcard h4{margin:12px 0 4px;font-size:.8rem;font-weight:700;color:var(--mute)}
.stats4{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat{display:flex;flex-direction:column;gap:1px;min-width:0}.stat b{font:600 1.7rem/1.1 var(--serif);font-variant-numeric:tabular-nums}.stat span{font-size:.8rem;font-weight:700}.stat small{font-size:.72rem;color:var(--mute)}
.streakline{margin:0 0 8px;font-size:.88rem;color:var(--mute)}.streakline b{color:var(--go);font:600 1.2rem var(--serif)}
.cal{display:grid;grid-template-columns:repeat(12,1fr);gap:3px}.calcol{display:grid;gap:3px}
#stats .calcell{width:100%;aspect-ratio:1;min-height:0;padding:0;border:0;border-radius:4px;background:var(--line)}
#stats .calcell.l1{background:color-mix(in srgb,var(--go) 28%,var(--line))}#stats .calcell.l2{background:color-mix(in srgb,var(--go) 52%,var(--line))}
#stats .calcell.l3{background:color-mix(in srgb,var(--go) 76%,var(--line))}#stats .calcell.l4{background:var(--go)}#stats .calcell.lf{visibility:hidden}
.trend{display:block;width:100%;height:auto}.tline{fill:none;stroke:var(--go);stroke-width:2;stroke-linejoin:round}.tdot{fill:var(--go)}.tgrid{stroke:var(--line);stroke-width:1}.tavg{stroke:var(--mute);stroke-width:1;stroke-dasharray:4 3}.tlbl{fill:var(--mute);font-size:8px}
.stbl summary{cursor:pointer;color:var(--mute);font-size:.82rem}.tblwrap{max-height:220px;overflow:auto;margin-top:6px}.stbl table{width:100%;border-collapse:collapse;font-size:.82rem}.stbl th,.stbl td{padding:4px 6px;border-bottom:1px solid var(--line);text-align:left}
.stcard .bar{display:grid;grid-template-columns:5.4em minmax(0,1fr) auto;gap:8px;align-items:center;margin:7px 0;font-size:.85rem}.stcard .bl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stcard .bl.it{font-style:italic}
.stcard .bt{display:block;height:8px;border-radius:999px;background:var(--line);overflow:hidden}.stcard .bt i{display:block;height:100%;border-radius:999px;background:var(--go)}.stcard .bv{color:var(--mute);font-size:.78rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.stseg{margin:0 0 6px}
.strow{display:flex;align-items:center;gap:8px;margin:6px 0}.stth{flex:none;width:36px;height:36px;border-radius:9px;object-fit:cover;background:var(--panel)}.strow .dname{font-size:.85rem}.strow button{flex:none;padding:4px 12px;font-size:.8rem}
.tip2{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0;font-size:.88rem}.tip2 button{flex:none;padding:6px 14px;border:0;background:var(--go);color:var(--on-go);font-weight:700}
#stats button.go{border:0;background:var(--go);color:var(--on-go);font-weight:700;padding:6px 16px}
.dprow{display:grid;grid-template-columns:minmax(0,1fr) 72px auto;gap:10px;align-items:center;margin:8px 0}.dprow button{padding:4px 12px;font-size:.8rem}
#stClear{display:block;margin:16px auto 0;border-color:var(--no)}
.tab{min-width:0}.tab span{white-space:nowrap}
#updBar{position:fixed;left:12px;right:12px;bottom:calc(72px + env(safe-area-inset-bottom));z-index:60;max-width:520px;margin:0 auto;padding:10px 12px;border:1px solid var(--line,#2c3d33);border-radius:12px;background:var(--panel2);color:var(--ink);font-size:.88rem;display:flex;align-items:center;justify-content:space-between;gap:10px;box-shadow:0 6px 20px #0006}
#updBar button{padding:6px 14px;border-radius:999px;border:0;background:var(--accent,#c9694a);color:#fff;font:inherit;font-weight:600;cursor:pointer}
#fmtSeg button,#dStyleSeg button{padding-inline:4px;font-size:.85rem} /* four styles on one row: "Classic" no longer shortens to "Clas…" */
/* Segmented tabs (Quiz Style, Photo quality, Known/Unknown, Grid/List): the active tab is outlined in green with only a light tint */
#fmtSeg button,#dStyleSeg button,#imgSeg button,#cView button,#ku button,#dvSeg button,#afmtSeg button,#fsSeg button{border:1px solid transparent} /* v2.3.3: the Anatomy Quiz Style and Forage map style tabs use the lighter selected style too */
#fmtSeg button[aria-pressed=true],#dStyleSeg button[aria-pressed=true],#imgSeg button[aria-pressed=true],#cView button[aria-pressed=true],#ku button[aria-pressed=true],#dvSeg button[aria-pressed=true],#afmtSeg button[aria-pressed=true],#fsSeg button[aria-pressed=true]{background:color-mix(in srgb,var(--go) 14%,transparent);border-color:var(--go);color:var(--ink)}
#help .h-seg.q span{border:1px solid transparent}#help .h-seg.q .h-on{background:color-mix(in srgb,var(--s-go) 14%,transparent);border-color:var(--s-go);color:var(--s-ink);font-weight:700}

#members li img.open,#members li .rname.open{cursor:pointer}#members li .rname.open:hover{text-decoration:underline;text-decoration-color:var(--mute)}#members li .rname.open:focus-visible{outline:2px solid var(--go);outline-offset:2px;border-radius:6px}

#gridItems figcaption.open{cursor:pointer}#gridItems figcaption.open:hover{text-decoration:underline;text-decoration-color:var(--mute)}#gridItems figcaption.open:focus-visible{outline:2px solid var(--go);outline-offset:2px;border-radius:6px}

/* v1.47.0: the deck line under the card is a button to the Collection, so it looks like one */
#info{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;max-width:100%;margin:0 0 8px;padding:8px 14px 8px 16px;border:1.5px solid var(--line);border-radius:999px;background:var(--panel2);color:var(--ink);font:600 1rem/1.25 var(--serif);cursor:pointer;overflow:hidden;white-space:nowrap}
#info::after{content:none}
#info .ilab{min-width:0;overflow:hidden;text-overflow:ellipsis}
#info .ichev{flex:none;color:var(--go);font:700 1.3rem/1 var(--sans)}
#info:hover,#info:focus-visible{color:var(--ink);border-color:var(--go)}
#info:active{background:color-mix(in srgb,var(--go) 14%,transparent);border-color:var(--go)}
#info:focus-visible{outline:2px solid var(--go);outline-offset:2px}

/* v1.51.0: Welcome page buttons: all text centred */
#landing button{text-align:center;justify-content:center}

#setHead .hbtns{display:flex;align-items:center;gap:8px;flex:none}#homeBtn{display:grid;place-items:center;min-width:44px;min-height:44px;padding:0}#homeBtn svg{display:block}

/* v1.54.0: + Create New uses the same style as the selected Quiz Style / Photo quality tabs: green outline, light green tint */
#createNew{border:1.5px solid var(--go);background:color-mix(in srgb,var(--go) 14%,transparent);color:var(--ink)}#createNew:hover{background:color-mix(in srgb,var(--go) 22%,transparent)}#createNew:active{background:color-mix(in srgb,var(--go) 30%,transparent)}

#xSame{display:flex;align-items:center;justify-content:center;gap:8px}#xSame[hidden]{display:none}#xSame svg{flex:none}

/* v1.57.0: Fungi Forecast (was the Mushroom clock) */
#clockBox{display:flex;flex-direction:column;gap:10px}
.cl-wheel{width:100%;max-width:300px;margin:4px auto 0}
.cwheel{display:block;width:100%;height:auto;overflow:visible}
.cw-hub{fill:color-mix(in srgb,var(--go) 7%,var(--panel));stroke:var(--line);stroke-width:1}
.cw-seg{fill:var(--go);opacity:var(--o,.3)}
.cw-seg.now{opacity:1;filter:drop-shadow(0 0 7px color-mix(in srgb,var(--go) 80%,transparent))}
.cw-lab{fill:var(--mute);font:600 11px var(--sans)}.cw-lab.now{fill:var(--ink);font-size:13px;font-weight:800}
.cw-hand{stroke:var(--ink);stroke-width:2;stroke-linecap:round}
.cw-dot{fill:var(--ink);stroke:var(--go);stroke-width:2.5;transform-box:fill-box;transform-origin:center;animation:cwPulse 2.4s ease-in-out infinite}
.cw-n{fill:var(--go);font:700 34px var(--serif)}.cw-s{fill:var(--mute);font:600 10px var(--sans);letter-spacing:.04em;text-transform:uppercase}
@keyframes cwPulse{50%{transform:scale(1.45)}}
@media (prefers-reduced-motion:reduce){.cw-dot{animation:none}}
.cl-sum{margin:0;text-align:center;font:600 1.05rem/1.3 var(--serif)}
.cl-h{margin:6px 0 0;font:600 .95rem var(--serif);color:var(--mute)}
.cl-cards{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.cl-card{flex:none;width:132px;display:flex;flex-direction:column;gap:6px;padding:8px;text-align:left;scroll-snap-align:start;border:1px solid var(--line);border-radius:14px;background:var(--panel2);color:var(--ink);cursor:pointer}
.cl-card img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;background:var(--panel)}
.cl-tag{align-self:flex-start;padding:2px 8px;border-radius:999px;border:1px solid var(--go);background:color-mix(in srgb,var(--go) 14%,transparent);font:700 .68rem var(--sans);letter-spacing:.03em;text-transform:uppercase}
.cl-name{font:600 .85rem/1.2 var(--serif);overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.cl-name em{display:block;color:var(--mute);font-size:.75rem;font-weight:400}
.cl-bars{display:flex;align-items:flex-end;gap:2px;height:26px}.cl-bars i{flex:1;background:var(--line);border-radius:2px 2px 0 0}.cl-bars i.now{background:var(--go)}
.cl-card:focus-visible{outline:2px solid var(--go);outline-offset:2px}


/* v1.60.0: every Fungi Forecast card is as tall as the tallest, and its bar chart sits on the bottom edge, so the baselines line up whatever the name length */
.cl-cards{align-items:stretch}.cl-card .cl-bars{margin-top:auto;flex:none}.cl-card .cl-name{flex:none}

/* v1.61.0: Fungi Forecast month scrubber and flush outlook */
.cl-wheel{touch-action:none;cursor:grab;border-radius:50%;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.cl-wheel:active{cursor:grabbing}.cl-wheel:focus-visible{outline:2px solid var(--go);outline-offset:4px}
.cw-lab.today{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.cwheel.away .cw-hand,.cwheel.away .cw-dot{opacity:.45}.cwheel.away .cw-dot{animation:none}
.cw-back{fill:var(--mute);font:600 8.5px var(--sans);letter-spacing:.03em}
.cw-seg{transition:opacity .2s}
.cl-nav{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:-4px}
.cl-step{width:44px;min-height:40px;padding:0;font-size:1.4rem;line-height:1}
.cl-month{min-width:7.5em;text-align:center;font:600 1.05rem var(--serif)}

.fx{display:flex;flex-direction:column;gap:6px;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--panel2)}
.fx-sum{margin:0;font:600 1rem/1.3 var(--serif);color:var(--go)}
.fx-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.fx-day{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;text-align:center}
.fx-day b{font:700 .7rem var(--sans);color:var(--mute);white-space:nowrap}.fx-day:first-child b{color:var(--ink)}
.fx-day small{font-size:.62rem;color:var(--mute);white-space:nowrap}
.fx-dot{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--go);background:var(--go)}
.lv-poor .fx-dot{background:transparent;opacity:.5}.lv-fair .fx-dot{opacity:.45}.lv-good .fx-dot{opacity:.75}.lv-excellent .fx-dot{opacity:1;box-shadow:0 0 8px color-mix(in srgb,var(--go) 80%,transparent)}
.fx-rain{display:flex;align-items:flex-end;width:10px;height:28px;border-radius:3px;background:var(--line);overflow:hidden}.fx-rain i{display:block;width:100%;background:#5aa9e6}
.fx .fine a{color:var(--go)}

/* v1.62.0 */
#lGps,#useGps,#xGps{display:inline-flex;align-items:center;justify-content:center;gap:8px}.locico{flex:none}

/* v1.63.3: Fungi Forecast is a shaded card like the numbers and the Practice calendar */
#stBody>#secClock{margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--panel2)}
#stBody>#secClock summary{font:600 1rem var(--serif);color:var(--ink)}
#stBody>#secClock[open] summary{margin-bottom:6px}
#secClock .fx,#secClock .cl-card{background:var(--panel)}

/* v1.65.0: Practice calendar views (Day / Week / Month / Year) */
#calSeg{margin:0 0 10px}
#calSeg button{border:1px solid transparent}#calSeg button[aria-pressed=true]{background:color-mix(in srgb,var(--go) 14%,transparent);border-color:var(--go);color:var(--ink)}
.calsum{margin:0 0 8px;font:600 .95rem/1.3 var(--serif)}
.cal.cal-day{grid-template-columns:repeat(12,1fr);gap:4px}
.cal.cal-week{grid-template-columns:repeat(7,1fr);gap:6px}
.wkcol{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.wkcol small{font-size:.7rem;color:var(--mute);line-height:1}.wkcol .wkn{font-variant-numeric:tabular-nums;min-height:.7rem}
.cal.cal-month{grid-template-columns:repeat(7,1fr);gap:4px}.dowh{text-align:center;font-size:.7rem;color:var(--mute)}.calpad{display:block}
#stats .cal-month .calcell{position:relative;display:grid;place-items:center;border-radius:6px}
#stats .cal-month .calcell i{font:700 .72rem var(--sans);font-style:normal;color:var(--ink);opacity:.85}
.cal.cal-year{grid-template-columns:repeat(4,1fr);gap:10px 12px}
.ymonth small{display:block;font-size:.7rem;color:var(--mute);margin-bottom:3px}.ygrid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
#stats .ygrid .calcell{border-radius:2px}
#stats .calcell.lf2{background:transparent;border:1px dashed var(--line);opacity:.55}
#stats .calcell:focus-visible{outline:2px solid var(--go);outline-offset:1px}
#calSeg button{padding-inline:4px;font-size:.85rem}
#stats .cal-month .calcell.l3 i,#stats .cal-month .calcell.l4 i{color:var(--on-go);opacity:1}

#xSame{justify-content:flex-start;text-align:left}

.cl-step,.cl-card{touch-action:manipulation;-webkit-tap-highlight-color:transparent}


.totop{display:flex;align-items:center;justify-content:center;gap:6px;margin:18px auto 0;padding:8px 16px;font-size:.85rem;touch-action:manipulation}
#leaveDlg form{flex-wrap:wrap}


.clr{position:relative;display:block;flex:1;min-width:0}.clr input{width:100%;padding-right:40px}
#practice details.asec>.clr{margin-top:10px}
.clr-x{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:36px;height:36px;padding:0;border:0;background:none;display:grid;place-items:center;border-radius:999px;color:var(--mute);-webkit-tap-highlight-color:transparent}
.clr-x[hidden]{display:none}
input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none;display:none}

.deck-warn{margin:8px 0 10px;padding:2px 0 2px 10px;border:0;border-left:3px solid var(--no);border-radius:0;background:none;color:var(--mute);font-size:.8rem;line-height:1.4}

/* v1.74.0 beta: Find Fungus */
#finder{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:16px}
#finder .phead h2{margin:0}
.beta,.findbtn small{font:700 .62rem/1 var(--sans,inherit);letter-spacing:.06em;text-transform:uppercase;padding:3px 6px;border-radius:999px;border:1px solid var(--go);color:var(--go);vertical-align:middle;margin-right:4px}
.findbtn{margin:0}
/* v1.75.1: Settings bottom is grouped (Explore, Game) with full-width rows and a compact footer */
.rowbtn{display:flex;align-items:center;gap:10px;width:100%;min-height:56px;text-align:left}.rowbtn .rt{flex:1;min-width:0;display:block}.rowbtn .rt b{display:block;font-weight:600}.rowbtn .rt em{display:block;margin-top:2px;font-style:normal;font-size:.75rem;color:var(--mute)}.rowbtn .chev{flex:none;font-size:1.4rem;line-height:1;color:var(--mute)}
.setfoot{margin-top:28px;text-align:center}.setfoot .totop{margin:0 auto}
.f-sp{position:relative;display:block;margin:8px 0 10px;padding:8px;border:1.5px solid color-mix(in srgb,var(--go) 55%,var(--line));border-radius:16px;background:none} /* v3.1.16: the 8% green tint around the dropdown is removed; the thin green outline stays */
.f-sp select{display:block;width:100%;min-width:0;min-height:52px;padding:8px 34px 8px 12px;font-size:.9rem;font-weight:700;color:var(--go);text-overflow:ellipsis;border:1px solid var(--line);border-radius:10px;background:var(--panel);-webkit-appearance:none;appearance:none}.f-sp select option{color:var(--ink);font-weight:400} /* v3.1.13: fill, border, radius, size and weight match the Change button (.lc-chg) above */
.f-sp::after{content:"";position:absolute;right:22px;top:50%;width:9px;height:9px;border-right:2.5px solid var(--go);border-bottom:2.5px solid var(--go);transform:translateY(-70%) rotate(45deg);pointer-events:none} /* v3.1.12: the arrow is drawn here, in the accent colour, because the native one is small and low contrast */
#fWhere{margin:8px 0}#fLoc{margin:4px 0 8px;font-weight:600}
.f-row{display:flex;gap:8px;flex-wrap:wrap}.f-row button{flex:1 1 auto}
#fGo{background:var(--go);color:var(--on-go);border-color:var(--go);font-weight:700}
#fPlace{display:flex;gap:8px;margin:8px 0}#fPlace .clr{flex:1}
#fMapBox{position:relative;margin:10px 0 6px;border-radius:16px;overflow:hidden;border:1px solid var(--line)}
#fMap{height:min(62vh,420px);background:var(--panel2)}
#fMapBox.busy::after{content:'Loading…';position:absolute;inset:auto 0 0 0;padding:6px;text-align:center;font-size:.8rem;background:color-mix(in srgb,var(--panel) 85%,transparent);z-index:500}
#fHere{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:600;background:var(--panel);font-weight:700;box-shadow:0 4px 14px var(--shadow)}
.f-star{color:#f7c948;font-size:20px;line-height:20px;text-align:center;text-shadow:0 0 3px #000}
#fLegend{display:flex;flex-direction:column;gap:2px;margin:6px 0}
.lg-ramp{height:10px;border-radius:999px;background:linear-gradient(90deg,rgba(255,224,138,.6),rgba(255,179,71,.75),rgba(255,122,61,.85),rgba(215,38,61,.9),rgba(142,11,82,.95))}
.lg-lab{display:flex;justify-content:space-between;font-size:.72rem;color:var(--mute)}.lg-lab i{font-style:normal}
#fLayers{display:flex;flex-wrap:wrap;gap:2px 14px}#fLayers .chk{margin:2px 0}
.lg-hatch{display:inline-block;width:14px;height:10px;background:repeating-linear-gradient(-45deg,#777 0 1.5px,transparent 1.5px 4px)}
.lg-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#c58a4a;border:1.5px solid #4a2c14}
.lg-star{color:#f7c948}.lg-burn{display:inline-block;width:14px;height:0;border-top:2px dashed #e8590c;vertical-align:middle}
#fDay{margin:8px 0}#fDay label{font-size:.9rem}#fDayR{width:100%}
/* v1.79.0: beta: Find Fungus playback (Play / speed row, the canvas layer over the map, the Spores key) */
.f-dayrow{display:flex;align-items:center;gap:8px;margin-top:4px}.f-dayrow #fDayR{flex:1;min-width:0;width:auto}
#fPlay{flex:none;min-width:6.4em;padding-inline:10px;font-weight:700;background:var(--go);color:var(--on-go);border-color:var(--go)}#fPlay[aria-pressed=true]{background:var(--panel);color:var(--ink);border-color:var(--line)}
#fSpeed{flex:none;min-width:3em;padding-inline:8px;font-variant-numeric:tabular-nums}
#finder canvas.f-play{position:absolute;left:0;top:0;max-width:none;pointer-events:none}
.lg-spore{display:inline-block;width:8px;height:8px;border-radius:50%;background:#fffaeb;border:1px solid rgba(70,45,20,.7);box-shadow:-5px 0 0 -2px rgba(70,45,20,.35)}
#fStatus{color:var(--mute);font-size:.88rem;min-height:1.3em;margin:4px 0}
#finder details.asec{margin-top:6px}
.f-whyhead{margin:4px 0 8px}
.f-tier{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.78rem;color:#fff;background:#888}
.t-prime{background:#8e0b52}.t-high{background:#d7263d}.t-good{background:#e8622c}.t-fair{background:#c99a2e}.t-low{background:#6b7a70}
.f-why{margin:0;display:grid;gap:6px}.f-why>div{display:grid;grid-template-columns:7.5em 1fr auto;gap:8px;align-items:baseline;font-size:.86rem}
.f-why dt{color:var(--mute)}.f-why dd{margin:0}.f-eff{font-size:.75rem;color:var(--mute)}.f-eff.up{color:var(--go)}.f-eff.down{color:var(--no)}
#fBets{padding-left:0;list-style:none;margin:4px 0;display:grid;gap:6px}
.f-bet{width:100%;text-align:left;display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:.86rem;padding:8px 10px}
#fFinds,#fSources{list-style:none;padding:0;margin:4px 0;display:grid;gap:6px;font-size:.86rem}
#fFinds li{display:flex;justify-content:space-between;align-items:center;gap:8px}
#fSources li.off b{color:var(--mute)}
#fSize{width:100%;margin:2px 0 10px}#fWhere label[for=fSize]{font-size:.9rem}
.f-caution{border-left:3px solid var(--no);padding-left:8px;margin-top:-4px}

/* v1.76.0: share and import a deck */
/* v2.1.9: Inline Import card in Settings */
.impcard{background:var(--panel2);border:1px solid var(--line);border-radius:16px;padding:14px;margin:12px 0}
.improw{display:flex;align-items:center;gap:10px}.impico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:color-mix(in srgb,var(--go) 18%,transparent);flex:none}.impico svg,.impl,.impchip svg{fill:none;stroke:var(--go);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.impico svg{width:20px;height:20px}
.impttl{font:600 1.05rem var(--serif)}.impsub{font-size:12.5px;color:var(--mute)}
.impin{display:flex;align-items:center;gap:6px;border:1.5px solid var(--line);border-radius:14px;background:var(--bg);padding:0 6px 0 12px;min-height:48px;margin-top:10px}.impin:focus-within{border-color:var(--go);box-shadow:0 0 0 3px color-mix(in srgb,var(--go) 22%,transparent)}
.impl{width:18px;height:18px;flex:none}.impin input{flex:1;min-width:0;border:0;background:none;outline:none;padding:10px 0;border-radius:0;cursor:text}.impin input::placeholder{color:var(--mute)}.impin input:focus-visible{outline:none}
.impx{border:0;background:none;color:var(--mute);width:36px;height:36px;padding:0;display:grid;place-items:center;flex:none;border-radius:999px}.impx[hidden]{display:none}
.impchip{border:0;border-radius:999px;background:color-mix(in srgb,var(--go) 20%,transparent);color:var(--go);font-weight:800;font-size:13px;padding:0 14px;min-height:36px;flex:none}.impchip svg{width:15px;height:15px;stroke-width:2.2;vertical-align:-2px;margin-right:5px}
.impmsg{font-size:13px;font-weight:700;min-height:20px;margin-top:8px;display:flex;flex-wrap:wrap;gap:2px 6px;align-items:center;color:var(--mute)}.impmsg.good{color:var(--go)}.impmsg.bad{color:var(--no)}.impmsg.mute{font-weight:500}
.implink{border:0;background:none;padding:0 2px;min-height:32px;color:var(--go);font-weight:800;font-size:13px;text-decoration:underline}
.impprim{width:100%;min-height:48px;border:0;border-radius:14px;background:var(--go);color:var(--on-go);font-weight:800;margin-top:10px}.impprim:disabled{background:var(--panel);color:var(--mute);border:1px solid var(--line);opacity:1}
#expCard .impprim{margin-top:12px;background:color-mix(in srgb,var(--go) 14%,transparent);border:1px solid var(--go);color:var(--ink)}#expCard .impprim:focus-visible{outline:2px solid var(--go);outline-offset:2px} /* v3.1.4: the light highlight of the selected Quiz style / Photo quality buttons */.expcode{width:100%;box-sizing:border-box;margin-top:8px;font:12px/1.35 ui-monospace,monospace;word-break:break-all;resize:none} /* v3.0.0: Export Progress; the code box shows only when the clipboard is blocked */
@media(max-width:339px){.impchip svg{display:none}.impchip{padding:0 11px}}
#shareLink{width:100%;box-sizing:border-box;margin:6px 0;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);font:inherit;font-size:.8rem;word-break:break-all;resize:none}
.shareacts{flex-wrap:wrap}

/* v1.76.2: the Appearance, Explore and Game headings are hidden on screen (kept for screen readers); the rows keep an even gap */
.sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#setmsg{min-height:0;margin:8px 0 0}#themeSw{margin-top:12px}

/* v1.76.3: Share Deck dialog */
#shareSys{display:inline-flex;align-items:center;gap:6px}

/* v1.77.0: Anatomy Deck. Drawings always sit on a white plate (they are black line art), in light and dark mode. */
#anatFront{display:none}
#card.anat #photo,#card.anat #shade,#card.anat .pnav,#card.anat #addBtn{display:none}
#card.anat #anatFront{display:flex;justify-content:center;height:var(--cardH);background:#fff}
#card.anat.rev #anatFront{display:none}
#card.anat #nameCard em{font-family:var(--sans);font-size:.95rem}
.aplate{position:relative;max-width:100%;background:#fff;color:#14231a;flex:none}
#anatFront .aplate{height:100%}
.aplate svg{display:block;width:100%;height:100%}
.aask,.alabel,.abadge{position:absolute;transform:translateY(-50%);white-space:nowrap}
.aplate .ac{transform:translate(-50%,-50%)}
.aask{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#14231a;color:#fff;font:700 1rem var(--sans);border:2px solid #fff;box-shadow:0 1px 5px #0005}
.alabel{padding:4px 10px;border-radius:999px;background:#fff;border:1.5px solid #14231a;font:700 .85rem/1.2 var(--sans);box-shadow:0 1px 5px #0003}
.alabel.ok{border-color:#2d7a31;background:#e3f4dc;color:#1d5a21}
.abadge{display:flex;align-items:center;gap:4px;min-width:32px;min-height:32px;padding:0 3px;border-radius:999px;background:#14231a;color:#fff;border:2px solid #fff;box-shadow:0 1px 6px #0006;font:700 .85rem var(--sans);pointer-events:none;touch-action:none}
.abadge b{display:grid;place-items:center;width:22px;font-weight:800}
.abadge .aterm:empty{display:none}
.abadge.full{background:#fff;color:#14231a;border-color:#14231a;padding-right:10px}
.abadge::before{content:"";position:absolute;inset:-8px} /* a bigger target for fingers */
.aplate.live .abadge{pointer-events:auto;cursor:pointer}
.abadge.hover,.abadge:focus-visible{outline:3px solid var(--go);outline-offset:1px}
.abadge.ok{border-color:#2d7a31;background:#e3f4dc;color:#1d5a21}.abadge.bad{border-color:#bf4519;background:#fde7dd;color:#8a2f0c}
.abadge:disabled{opacity:1}
#aTray{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}
.achip{display:flex;align-items:baseline;gap:6px;min-height:44px;padding:8px 14px;border-radius:999px;font-weight:700;cursor:grab;user-select:none;-webkit-user-select:none}
.achip[aria-pressed=true]{background:var(--go);color:var(--on-go);border-color:var(--go)}
.achip.used{opacity:.55}.achip small{font-weight:500;font-size:.75rem;color:var(--mute)}.achip[aria-pressed=true] small{color:var(--on-go)}
.achip:disabled{opacity:.55;cursor:default}
.aghost{position:fixed;z-index:60;transform:translate(-50%,-130%);padding:8px 14px;border-radius:999px;background:var(--go);color:var(--on-go);font-weight:700;pointer-events:none;box-shadow:0 8px 20px #0007;white-space:nowrap}
#aCheck{display:block;width:100%;min-height:52px;margin:0 0 12px;border:0;background:var(--go);color:var(--on-go);font-weight:700}#aCheck:disabled{opacity:.45}
#opts.photos .apic{position:relative;display:grid;place-items:center;background:#fff;border-width:2px}
#opts.photos .apic.ok{border-color:var(--go);box-shadow:0 0 0 2px var(--go)}#opts.photos .apic.bad{border-color:var(--no);box-shadow:0 0 0 2px var(--no)}
.acap{position:absolute;left:4px;right:4px;bottom:4px;padding:3px 6px;border-radius:8px;background:#14231ae0;color:#fff;font:700 .75rem/1.2 var(--sans);text-align:center;white-space:normal}
.afit{display:grid;place-items:center;overflow:hidden;background:#fff}
#gridItems .atile .afit{width:100%;aspect-ratio:4/5}
#cNext .anext{flex:none;width:56px;height:56px;border-radius:10px}
.strow .afit.stth{width:44px;height:44px;border-radius:8px}
.dthumb.athumb{object-fit:cover;object-position:50% 18%;background:#fff}
.astudy{width:min(100%,360px);margin:4px auto 12px;border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px var(--line)}
#anatGroups .agrp{align-items:flex-start;color:var(--ink)}#anatGroups .agrp input{margin-top:2px;flex:none}
#anatGroups .agrp b{display:block;font-size:.9rem}#anatGroups .agrp small{display:block;color:var(--mute);font-size:.8rem;line-height:1.35}
.abadge.full{max-width:23%;white-space:normal;font-size:.72rem;line-height:1.15;padding:3px 8px 3px 2px;text-align:left}
.abadge.full b{flex:none;width:18px}
.abadge.ok b::after{content:"✓"}.abadge.bad b::after{content:"✗"}.abadge.ok b,.abadge.bad b{font-size:0}.abadge.ok b::after,.abadge.bad b::after{font-size:.8rem}
#afmtSeg button,#aStyleSeg button{padding:0 2px;font-size:.84rem;letter-spacing:-.01em}#afmtSeg,#aStyleSeg{gap:2px}
/* v1.80.1: picture fit. A thumbnail box is a size container; the drawing takes the largest width that fits both ways
   (--ar = its width / height), so a tall crop shrinks to the box's height instead of overflowing it and losing its bottom.
   A named Find it picture leaves room at the bottom for its caption. */
.afit,#opts.photos .apic{container-type:size}
.afit .aplate{width:min(100cqw,100cqh * var(--ar,1));height:auto}
#opts.photos .apic{padding:4px}#opts.photos .apic.named{padding-bottom:30px}
#opts.photos .apic .aplate{width:min(100cqw,100cqh * var(--ar,1));height:auto}

/* v1.78.0: Collection network card on the Stats page */
.netsum{margin:0 0 8px;font-size:.88rem;color:var(--ink)}
.netcv{display:block;width:100%;height:320px;border-radius:12px;background:var(--panel);touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
@media (min-width:600px){.netcv{height:360px}}
.netbox+.note{margin:8px 0 0;font-size:.82rem}
/* v1.80.3: network zoom buttons, top-right corner */
.netbox{position:relative}
.netzoom{position:absolute;top:8px;right:8px;display:flex;gap:4px}
.netzoom button{display:grid;place-items:center;width:30px;height:30px;padding:0;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--ink);font:600 1.05rem/1 var(--sans);opacity:.9}
.netzoom button:disabled{opacity:.35;cursor:default}
.netzoom svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
#help .h-net{display:block;width:100%;height:30px;fill:var(--s-go);stroke:var(--s-mute);stroke-width:1;fill-opacity:1}#help .h-net path{fill:none;opacity:.7}#help .h-net path.m{stroke:var(--s-no);stroke-dasharray:2 2}#help .h-net .g{fill-opacity:.2;stroke:var(--s-go)}#help .h-net .s{fill:var(--s-mute);stroke:none;opacity:.6}#help .h-net circle:not(.g):not(.s){stroke:none}

/* v1.80.0: Color scheme picker in Settings, above the Dark mode switch. Each swatch shows the scheme's background, accent and wrong-answer colors for the current mode. */
#schemeLbl{margin:18px 0 6px;color:var(--ink);font-weight:500;font-size:1rem}
#schemePick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
#schemePick button{display:flex;flex-direction:column;gap:6px;padding:8px;border:1.5px solid var(--line);border-radius:14px;text-align:center;font:600 .85rem var(--serif)}
#schemePick button[aria-checked=true]{border-color:var(--go);box-shadow:0 0 16px -6px var(--glow)}
#schemePick button{position:relative;display:block;padding-top:42px}
#schemePick .chips3{position:absolute;top:8px;left:8px;right:8px;height:28px;display:flex;border-radius:8px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line)}
#schemePick .chips3 i{display:block;flex:1 1 0;min-width:0;background:var(--d)}#schemePick .chips3 i:first-child{flex-grow:2}[data-theme=light] #schemePick .chips3 i{background:var(--l)}
/* v1.83.2: on iPhone (WebKit) the swatch strip inside each <button> collapsed to zero width, so only the names showed. WebKit wraps a button's contents in its own shrink-to-fit box; the strip is now placed against the button itself (absolute, 8px in from each side), so its width never depends on that inner box. */
/* v1.80.2: Anatomy Compare (Label it, two or more lines wrong) */
.acmp .acmpb{width:100%;aspect-ratio:4/5;border-radius:12px;padding:6px}
.acmph{display:flex;align-items:flex-start;gap:6px}.acmph h3{flex:1;min-width:0}
.cols .aswap{flex:none;width:30px;height:30px;min-height:0;margin:8px 0 0;padding:0;border-radius:50%;font-size:.95rem;line-height:1}

/* v1.80.4: Stats deck dropdown (replaces the This deck / All decks buttons) */
#stDeckSel{width:100%;border-radius:999px;padding:9px 14px;font-weight:600}
#help .h-seg.h-sel{padding:0 8px;border-radius:999px}#help .h-seg.h-sel span{text-align:left;font-weight:700}#help .h-seg.h-sel span:last-child{flex:none}
/* v1.80.4: the 7 days / 30 days / All time and By genus buttons look like the Practice calendar's */
#stRange button,.stseg button{border:1px solid transparent;padding-inline:4px;font-size:.85rem}
#stRange button[aria-pressed=true],.stseg button[aria-pressed=true]{background:color-mix(in srgb,var(--go) 14%,transparent);border-color:var(--go);color:var(--ink)}

/* v1.80.5: every Stats section folds; tap its heading. Same +/− marker as Study sections */
.stfold>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:8px}
.stfold>summary::-webkit-details-marker{display:none}
.stfold>summary h3{margin:0}.stfold[open]>summary{margin-bottom:8px}
.stfold>summary::after{content:"+";color:var(--go);font:700 1.2rem var(--sans)}.stfold[open]>summary::after{content:"−"}
/* v1.80.6: location and size controls (Welcome, Edit Nearby / Fruiting this month / Create New, Find Fungus): place card + Change, search row, slider box with ends and quick picks, Up to date */
.eyebrow{margin:14px 0 6px;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
.loccard{display:flex;align-items:center;gap:12px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:10px 10px 10px 12px}
.lc-pin{flex:none;color:var(--go)}.lc-txt{flex:1;min-width:0;display:flex;flex-direction:column}
#lLoc,#xLoc,#fLoc{margin:0;font-weight:700;line-height:1.3;overflow-wrap:anywhere}.lc-sub{font-size:.78rem;color:var(--mute)}
.loccard .lc-chg{flex:none;min-height:40px;padding:8px 12px;border-radius:10px;color:var(--go);font-weight:700;font-size:.9rem}
#lPlace,#xPlace,#fPlace{display:flex;gap:8px;margin:8px 0 0}.locform .clr{flex:1;min-width:0}
.locform .gpsbtn{flex:none;width:46px;display:grid;place-items:center;padding:0}
#lLocMsg,#xLocMsg,#fLocMsg{margin:6px 2px 0;min-height:1.3em;font-size:.85rem;line-height:1.4;color:var(--mute)}
#lLocMsg.good,#xLocMsg.good,#fLocMsg.good{color:var(--go)}#lLocMsg.bad,#xLocMsg.bad,#fLocMsg.bad{color:var(--no)}#lLocMsg:empty,#xLocMsg:empty,#fLocMsg:empty{min-height:0;margin:0}
#xSame.linkbtn{display:inline-flex;align-items:center;gap:6px;margin:8px 0 0;padding:6px 2px;border:0;background:none;color:var(--go);font-size:.85rem;font-weight:700}#xSame.linkbtn[hidden]{display:none}
.sizebox{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:2px 14px}
.srow{padding:12px 0}.srow+.srow{border-top:1px solid var(--line)}
.shead{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
#landing .shead label,#explore .shead label,#fWhere .shead label{display:inline;margin:0;font-size:.95rem}
.shead output{color:var(--go);font-weight:700;font-size:1.05rem}
.srow input[type=range],#fSize{display:block;width:100%;height:28px;margin:6px 0 0}
.sends{display:flex;justify-content:space-between;font-size:.72rem;color:var(--mute)}
/* v1.83.1: the quick picks are .chips[data-for] only, so the Study and anatomy name chips keep their wrapping pill style */
.chips[data-for]{flex-wrap:nowrap;margin:10px 0 2px}
.chips[data-for] button{flex:1 1 0;min-width:0;min-height:36px;padding:4px 0;border-radius:999px;font-size:.82rem;font-weight:700}
.chips[data-for] button[aria-pressed=true]{background:var(--go);color:var(--on-go);border-color:var(--go)}
#createBtn small{display:block;font-size:.75rem;font-weight:500;opacity:.85;margin-top:2px}
#createBtn.uptodate{background:var(--panel);color:var(--mute);border:1px solid var(--line)}
#xMsg:empty{min-height:0;margin:0}#fWhere .sizebox{margin-top:12px}

/* v1.80.7: Summary above the deck menu; At a glance pie charts */
#stTop .stcard{margin:0 0 12px}
.pies{display:grid;grid-template-columns:repeat(auto-fit,minmax(124px,1fr));gap:12px}
.pie{margin:0;display:flex;flex-direction:column;align-items:center;gap:8px}
.pie svg{width:104px;height:104px}
.pie circle{fill:none;stroke-width:7}
.pie .pz-go{stroke:var(--go)}.pie .pz-mid{stroke:color-mix(in srgb,var(--go) 40%,var(--panel2))}.pie .pz-off{stroke:var(--line)}.pie .pz-no{stroke:var(--no)}
.pie-mid{font:600 7px var(--serif);fill:var(--ink);text-anchor:middle;dominant-baseline:central}
.pie figcaption{display:flex;flex-direction:column;gap:3px;width:100%;max-width:180px;font-size:.78rem}
.pie figcaption b{font:600 .9rem var(--serif);text-align:center;margin-bottom:2px}
.pie-key{display:flex;align-items:center;gap:5px;white-space:nowrap}.pie-key em{margin-left:auto;font-style:normal;color:var(--mute);font-variant-numeric:tabular-nums}
.pie-key i{flex:none;width:10px;height:10px;border-radius:3px}
.pie-key .pz-go{background:var(--go)}.pie-key .pz-mid{background:color-mix(in srgb,var(--go) 40%,var(--panel2))}.pie-key .pz-off{background:var(--line)}.pie-key .pz-no{background:var(--no)}
.pie small{color:var(--mute);text-align:center;font-size:.75rem}
/* v1.80.8: Show unidentified species switch under the network */
.netsw{margin:10px 0 0;padding:8px 12px;font-size:.9rem;background:var(--panel)}
.netsw+.note{margin:8px 0 0;font-size:.82rem}
/* v1.81.0: beta: Find Fungus map views (Odds, Habitat, Temp, Rain, Soils, Vegetation, None), their keys, the map note and the Wind layer */
.f-viewlab{font-size:.78rem;font-weight:700;color:var(--mute);text-transform:uppercase;letter-spacing:.06em;margin:8px 0 0}
#fView.f-view{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;border-radius:16px;margin-top:4px}
#fView.f-view button{min-height:34px;font-size:.82rem;border-radius:12px;padding:0 4px}
#fLegend[hidden]{display:none}#fLegend .lg-title{font-size:.78rem;color:var(--mute)}
.lg-keys{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:.74rem;color:var(--mute)}.lg-keys i{font-style:normal;display:inline-flex;align-items:center;gap:5px}
.lg-keys b{display:inline-block;width:11px;height:11px;border-radius:3px;border:1px solid rgba(0,0,0,.25)}
#fMapNote{margin:2px 0 6px;color:var(--mute)}
.lg-wind{display:inline-block;color:var(--ink);font-size:.85rem;transform:rotate(-30deg)}#fWindV{margin-left:2px}

/* v1.81.1: Accuracy over time views (Answers / Days / Both) */
.accseg{margin:0 0 8px}
.tbad{fill:var(--no)}.tbar{fill:var(--go)}.tvol{fill:color-mix(in srgb,var(--go) 28%,transparent)}.tnum{fill:var(--ink);font:600 10px var(--sans)}

/* v1.81.2: the deck menu and range buttons share one compact bar above Summary */
#stScope{flex-direction:row;align-items:center;gap:8px;margin:0 0 10px}
#stDeckSel{flex:1;min-width:0;width:auto;min-height:38px;padding:6px 30px 6px 14px;font-size:.88rem;text-overflow:ellipsis}
#stScope #stRange{flex:none;margin:0;padding:3px;gap:2px}
#stats #stRange button{flex:none;min-height:30px;padding:2px 10px;font-size:.82rem}

/* v1.81.3: Show names switch, right under Show unidentified species */
.netsw+.netsw{margin-top:6px}
/* v1.81.4: Unknown progress list. On the Unknown tab, List shows where each card stands in three sections; never a name. --mix (amber) marks mix-ups. */
#gridItems .phead{display:flex;justify-content:space-between;align-items:baseline;margin:10px 2px 0;font:700 10.5px/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}#gridItems .phead:first-child{margin-top:0}#gridItems .phead.trouble{color:var(--no)}
#gridItems.list figure.prow{gap:10px;padding-right:42px}
#gridItems .prow .thumb{border:0;padding:0;background:var(--panel)}#gridItems .prow .afit{width:64px;height:64px}
#gridItems.list figcaption.pbody{display:flex;flex-direction:column;gap:5px;font:.85rem/1.25 var(--sans);color:var(--ink)}
#gridItems .phl{font-weight:700;color:var(--ink)}
#gridItems .ptry{flex:none;min-height:34px;padding:6px 12px;border:0;background:var(--go);color:var(--on-go);font-weight:700;font-size:.85rem}
#gridItems.list figure.prow:not(:has(.addbtn)){padding-right:10px}

/* v1.81.8: network key (replaces the instruction paragraph), All time tag, Show names hint */
.netkey{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin:8px 0 0;padding:9px 10px;background:var(--bg);border:1px solid var(--line);border-radius:12px}
.nk{display:flex;align-items:center;gap:7px;min-width:0;font:600 11.5px var(--sans);color:var(--ink)}
.nk svg{width:22px;height:14px;flex:none;overflow:visible}
.nk-go{fill:var(--go)}.nk-glow{filter:drop-shadow(0 0 2.5px var(--go))}
.nk-mute{fill:var(--mute);opacity:.7}
.nk-ring{fill:color-mix(in srgb,var(--go) 16%,transparent);stroke:var(--go);stroke-opacity:.6;stroke-width:1.2}
.nk-branch{stroke:var(--go);stroke-opacity:.6;stroke-width:1;fill:none}
.nk-mix{stroke:var(--no);stroke-width:1.6;stroke-dasharray:3 3;fill:none}
.stfold>summary .nettag{margin-right:auto;font:700 10px var(--sans);color:var(--mute);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.netswt{display:flex;flex-direction:column;align-items:flex-start;text-align:left}
.netswt small{font-size:10.5px;font-weight:400;color:var(--mute)}
/* v1.81.10: Collection. One compact header card (ring, deck, progress, genus bar, genera and milestone), one control row, 3-column grid, the Known photo sheet and the Not tried yet strip */
#cHead{gap:10px;padding:8px 10px;margin:0 0 10px;border-radius:14px}
#cRing{width:44px;height:44px}#cRing span{width:34px;height:34px;font-size:.66rem}
#deckName{font-size:1rem;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#cStats{display:block;margin:1px 0 0;font-size:.74rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#cBar{display:flex;gap:2px;margin:5px 0 3px}#cBar i{flex:1;min-width:0;height:4px;border-radius:2px;background:var(--line)}#cBar i.f{background:var(--go)}
#cBar.cont{height:4px;border-radius:2px;background:var(--line);overflow:hidden}#cBar.cont i{flex:none;height:100%;border-radius:0}
#cMile{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:2px 0 0;font-size:.74rem;line-height:1.3;color:var(--mute)}#cMile button{padding:6px 14px;margin-left:auto}
#cRow{display:flex;align-items:center;gap:6px;margin:0 0 10px}#cRow #ku{flex:1;min-width:0;margin:0;padding:3px}#cRow #ku button{flex:1 1 auto;min-height:34px;padding:0 6px;font-size:.85rem}@media (max-width:360px){#cRow{gap:4px}#cTools{gap:4px}#cRow #ku button{padding:0 3px;font-size:.78rem}#cRow .ibtn{width:34px;height:34px}}
#cTools{flex:none;flex-wrap:nowrap;gap:6px;margin:0}
.ibtn{position:relative;display:grid;place-items:center;flex:none;width:36px;height:36px;min-height:0;padding:0;border-radius:50%;background:var(--panel)}#cView.ibtn,#cToggle.ibtn{padding:0}
.ibtn::after{content:'';position:absolute;inset:-4px}
#cToggle[aria-expanded=true]{border-color:var(--go);color:var(--go)}
#cBadge{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--go);color:var(--on-go);font:700 .62rem/16px var(--sans);text-align:center}
#cPanel{margin:0 0 10px}
#gridItems{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
#gridItems figure{border-radius:11px}
#gridItems:not(.list) figcaption{padding:22px 6px 6px;font-size:.72rem}
#gridItems:not(.list) figcaption .cname{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
#gridItems:not(.list) figcaption .dots{color:var(--tag-go)} /* the dots sit on the photo's dark fade in every theme */
#gridItems:not(.list) .addbtn{top:4px;right:4px;width:24px;height:24px}#gridItems:not(.list) .addbtn .ic{width:13px;height:13px}
#gridItems .addbtn::after{content:'';position:absolute;inset:-4px;border-radius:50%} /* a 32px hit area around the 24px button */
#gridItems .pstrip{display:grid;gap:8px;padding:8px;border-radius:14px;background:var(--panel2)}#gridItems .pth{background:var(--panel)}
#gridItems .pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:6px}
#gridItems .pth{display:block;padding:0;border:0;border-radius:9px;overflow:hidden;aspect-ratio:1;background:var(--panel2)}#gridItems .pth img{width:100%;height:100%;aspect-ratio:1;object-fit:cover}#gridItems .pth .afit{width:100%;height:100%}
#gridItems .pstrip .note{margin:0;min-height:0;font-size:.8rem}
#tileDlg .grab{display:none}
#tdName{display:flex;flex-direction:column;align-items:center;gap:1px}#tdName b{font:600 1.1rem var(--serif)}#tdName em{color:var(--mute);font-family:var(--serif)}#tdName .dots{color:var(--go);font-size:.7rem}
#tdActs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-weight:700}#tdActs button small{font-weight:500;font-size:.75rem;color:var(--mute)}#tdActs button.go small{color:inherit;opacity:.8}
#tileDlg form{margin-top:10px}#tileDlg form button{width:100%;min-height:44px}
@media (max-width:600px){
  #tileDlg{width:100%;max-width:none;margin:auto 0 0;padding:10px 16px calc(16px + env(safe-area-inset-bottom,0px));border-radius:18px 18px 0 0;border-width:1px 0 0;max-height:92vh;overflow:auto}
  #tileDlg .grab{display:block;width:36px;height:4px;margin:0 auto 10px;border-radius:2px;background:var(--line)}
  #tdImg{max-height:34vh}
}
@media (max-width:600px) and (prefers-reduced-motion:no-preference){#tileDlg[open]{animation:sheetUp .22s ease-out}@keyframes sheetUp{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}}
#help .h-gbar{display:flex;gap:2px;margin:3px 0 2px}#help .h-gbar u{flex:1;height:3px;border-radius:2px;background:var(--s-line);text-decoration:none}#help .h-gbar u.f{background:var(--s-go)}
#help .h-ib{display:grid;place-items:center;flex:none;width:22px;height:22px;border:1px solid var(--s-line);border-radius:50%;background:var(--s-panel);color:var(--s-ink)}#help .h-ib svg{width:11px;height:11px}
/* v1.81.10: bottom tab bar. No outline box on a tapped tab (the green icon and label show the active one); keyboard focus, only while the Tab key is in use, gets a soft fill and an underlined label */
.tab:focus,.tab:focus-visible{outline:none}
[data-kbd] .tab:focus-visible{outline:none;background:var(--panel2)}
[data-kbd] .tab:focus-visible span{text-decoration:underline;text-decoration-color:var(--go);text-decoration-thickness:2px;text-underline-offset:3px}

/* v1.82.0: Fungarium. Header wallet (left) and Settings gear (right), the Fungarium tab, spore lines after an answer */
header{position:relative}
.hpill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--ink);font:700 .8rem var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.sdot{width:8px;height:8px;border-radius:50%;background:var(--mix);box-shadow:0 0 8px var(--mix);flex:none}
#wallet{position:absolute;left:0;top:50%;transform:translateY(-50%);min-height:36px;max-width:30%;overflow:hidden}
#wallet.pulse{animation:wpulse .6s ease-out}@keyframes wpulse{0%{box-shadow:0 0 0 0 var(--mix)}100%{box-shadow:0 0 0 10px transparent}}
.hgear{position:absolute;right:0;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:12px;background:none;color:var(--mute)}
.hgear .ic{width:24px;height:24px}.hgear[aria-current=page]{color:var(--go)}
@media(max-width:380px){#home{gap:8px}h1{font-size:1.5rem}}
.earn{display:block;margin-top:4px;font-size:.82rem;font-weight:500;color:var(--mute)}.earn b{color:var(--mix)}
#fungarium .phead h2{margin:0}.hpill.big{font-size:.9rem;padding:6px 12px}
.gplot{position:relative;border-radius:12px;overflow:hidden;background:#2f2118}.gcv{display:block;width:100%}
#gPlotBox{padding:4px;margin-bottom:8px}.gnote{margin:0 4px 12px;font-size:.85rem;color:var(--mute)}
#gBody .stcard>.go,#gBody .stcard>button{margin-top:6px}
.gprints{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.gprint{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 6px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);text-align:center;min-width:0}
.gprint img{width:56px;height:56px;border-radius:50%;object-fit:cover;background:var(--panel2)}
.gprint .gpn{font-size:.8rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere}.gprint small{font-size:.7rem;color:var(--mute)}
.gprint.prime{border-color:var(--mix)}.gprint.prime img{box-shadow:0 0 0 2px var(--mix),0 0 12px var(--mix)}.gprint.prime small{color:var(--mix);font-weight:700}
.gpath{border-top:1px solid var(--line)}.gpath:first-of-type{border-top:0}
.gpath summary{display:flex;align-items:center;gap:10px;padding:8px 0;cursor:pointer;list-style:none}.gpath summary::-webkit-details-marker{display:none}
.gpath summary img{flex:none;width:40px;height:40px;border-radius:10px;object-fit:cover;background:var(--panel)}.gpath .dname{flex:1;min-width:0;font-size:.88rem}
.gpips{display:flex;gap:3px;flex:none}.gpips i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--line)}.gpips i.done{background:var(--go);border-color:var(--go)}.gpips i.now{border-color:var(--mix)}.gpips i.wait{border-color:var(--mute);border-style:dashed}
.grungs{margin:0 0 8px;padding:0;list-style:none}.grungs li{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:start;padding:7px 0;border-bottom:1px dashed var(--line)}
.grungs li:last-child{border-bottom:0}.grungs b{display:block;font:600 .9rem var(--serif)}.grungs small{display:block;font-size:.78rem;color:var(--mute)}
.grungs .gb{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:.72rem;font-weight:700;border:1.5px solid var(--line);color:var(--mute)}
.grungs .done .gb{background:var(--go);border-color:var(--go);color:var(--on-go)}.grungs .now .gb{border-color:var(--mix);color:var(--mix)}
.grungs .gst{font-size:.72rem;color:var(--mute);white-space:nowrap}.grungs .done .gst{color:var(--go)}.grungs .now .gst{color:var(--mix)}
.gearn{width:100%;border-collapse:collapse;font-size:.84rem}.gearn td{padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:top}.gearn td small{display:block;color:var(--mute);font-size:.72rem}
.gearn td.r{text-align:right;white-space:nowrap;font-weight:700;color:var(--mix);font-variant-numeric:tabular-nums}.bv.spore{color:var(--mix);font-weight:700}
/* v1.83.0: Decks page. "Decks" title with + New, tap a deck to play it, progress on every deck, Now Playing with Continue, the My decks sort menu, and the Photo view (the List | Photo switch at the top of the page since v2.1.7) */
#decks .phead h2{font-size:1.5rem}
#createNew.newpill{min-height:34px;padding:4px 14px;border:1px solid var(--go);border-radius:999px;background:none;color:var(--go);font-weight:700;font-size:.85rem}
#deckList li.tap,.dtile.tap,#nowPlaying{cursor:pointer;-webkit-tap-highlight-color:transparent}
#deckList li.tap:active{background:color-mix(in srgb,var(--ink) 6%,transparent)}
#deckList .dname{display:flex;flex-direction:column;gap:3px}
.dname .dtitle{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.25}
#deckList li:not(.grp){padding-block:7px}
.dname:focus-visible,.dtile .dtitle:focus-visible{outline:2px solid var(--go);outline-offset:2px;border-radius:6px}
.dprog{display:flex;align-items:center;gap:7px;font-size:.75rem;color:color-mix(in srgb,var(--ink) 68%,var(--panel));font-weight:400}
.dpl{white-space:nowrap}
.dbar{flex:0 1 90px;min-width:36px;height:4px;border-radius:9px;background:var(--panel2);overflow:hidden}.dbar i{display:block;height:100%;border-radius:9px;background:var(--go)}
#deckList li.grp{display:flex;align-items:center;justify-content:space-between;gap:8px}
#deckList button.sortbtn{width:auto;min-height:32px;padding:2px 4px;border:0;background:none;color:var(--ink);font-size:.8rem;font-weight:700;letter-spacing:0;text-transform:none}
#nowPlaying .dname{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font-weight:600}#nowPlaying .dtitle{font-size:.98rem}#nowPlaying .dprog{margin-top:2px}
#nowPlaying button.go{width:auto;padding-inline:14px}
/* Photo view */
#deckList li.smgrid,#deckList li.shelf{display:grid;align-items:stretch;gap:8px;padding:2px 0 8px;border-bottom:0}
#deckList li.smgrid{grid-template-columns:repeat(var(--n,3),minmax(0,1fr))}
#deckList li.shelf{grid-template-columns:repeat(2,minmax(0,1fr))}
.dtile{position:relative;min-width:0;border-radius:14px;overflow:hidden;background:var(--panel2);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.dtile .dphoto{display:block;width:100%;height:100%;object-fit:cover;background:var(--panel2)}.dtile .dphoto.empty{display:grid;place-items:center;font-size:2rem;opacity:.6}
.shelf .dtile{aspect-ratio:4/3}
.shelf .dcap{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:4px;padding:22px 8px 7px;color:#e9f1e4;background:linear-gradient(transparent,color-mix(in srgb,var(--scrim) 93%,transparent))}
.shelf .dcap .dtitle{font:600 .84rem/1.2 var(--serif);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.shelf .dprog{color:#e9f1e4cc;font-size:.72rem}.shelf .dbar{flex:1;width:auto;max-width:90px;background:#ffffff33}.shelf .dbar i{background:var(--tag-go)}
.dtile.on{outline:2px solid var(--go);outline-offset:-2px}
.smgrid .dtile{display:flex;flex-direction:column;padding:6px;border:1px solid var(--line);background:var(--panel)}
.smgrid .dtile.on{border-color:var(--go)}
.smgrid .dpwrap{display:block;aspect-ratio:16/10;border-radius:9px;overflow:hidden}
.smgrid .dcap{display:flex;flex-direction:column;gap:1px;padding:5px 2px 1px;min-width:0}
.smgrid .dcap .dtitle{font-size:.8rem;overflow-wrap:anywhere;line-height:1.2}.smgrid .dcap .sub{font-size:.7rem;color:var(--mute);line-height:1.2}
#deckList .dtile button.actbadge{top:6px;left:6px}
#deckList .dtile button.more{position:absolute;top:5px;right:5px;width:30px;height:30px;min-height:0;padding:0;border:0;border-radius:50%;background:color-mix(in srgb,var(--scrim) 70%,transparent);color:#fff;font-size:1rem}
#deckList .dtile button.more::after{content:'';position:absolute;inset:-8px} /* 44px tap area */
.smgrid .dtile button.actbadge{top:9px;left:9px;width:20px;height:20px}.smgrid .dtile button.more{top:9px;right:9px;width:22px;height:22px;font-size:.85rem}
#fgLbl{margin:18px 0 6px;color:var(--ink);font-weight:500;font-size:1rem}#dvLbl,#fsLbl{margin:18px 0 6px;color:var(--ink);font-weight:500;font-size:1rem}
/* v1.83.0: Custom sort. A grip to drag a deck, the deck lifted while it moves */
#deckList button.grip{width:36px;min-height:36px;padding:0;border:0;background:none;color:var(--mute);display:grid;place-items:center;touch-action:none;cursor:grab}
#deckList .dtile button.grip{position:absolute;top:40px;right:5px;width:30px;height:30px;min-height:0;border-radius:50%;background:color-mix(in srgb,var(--scrim) 70%,transparent);color:#fff}
.sortable.dragging{position:relative;z-index:20;cursor:grabbing;background:var(--panel2);border-radius:12px;box-shadow:0 12px 28px -8px var(--shadow);opacity:.95}
.sortable.dragging button.grip{cursor:grabbing}

/* v1.83.3: short Stats descriptions: chart keys, calendar heat key, column heads */
.stkey{display:flex;flex-wrap:wrap;gap:6px 14px;margin:8px 0 0;padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:12px}
.stkey .nk svg{overflow:visible}.stkey .tnum{font-size:9px}
.stcard .stkey+.fine,.stcard .bar+.fine,.stcard .barhead+.fine{margin-top:6px}
.calkey{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-top:10px;font-size:.8rem;color:var(--mute)}
.calheat{display:inline-flex;align-items:center;gap:3px}.calheat small{font-size:.72rem}.calheat small:first-child{margin-right:2px}.calheat small:last-child{margin-left:2px}
#stats .calheat .calcell{display:inline-block;width:11px;height:11px;aspect-ratio:auto;border-radius:3px}
.stcard .barhead{margin:2px 0 -2px}.stcard .barhead .bv{font-size:.68rem;letter-spacing:.02em}
/* v1.84.0: Fungarium Phase 2. The plot's tools and placing bar, the shop and plaque sheet, the Gallery score bar */
.gtools,.gplace>div{display:flex;gap:8px;margin:0 4px 10px}.gtools button,.gplace button{flex:1;min-height:44px;border-radius:12px;font-weight:700}
.gtools button.go,.gplace button.go,#gdBody button.go{border:0;background:var(--go);color:var(--on-go)}.gtools button:disabled,.gplace button:disabled{opacity:.5}
#gCollect{border:1px solid var(--mix);background:transparent;color:var(--ink)}
.gplace{margin:0 4px 10px;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.gplace p{margin:0 0 8px;font-size:.88rem;min-height:2.6em}.gplace>div{margin:0}
.gcv:focus-visible{outline:2px solid var(--mix);outline-offset:-2px}
#gDlg{width:min(92vw,400px);max-height:86vh;overflow:auto}#gDlg .grab{display:none}#gdT{margin:0 0 2px}#gdS{font-size:.85rem}#gdS.sci{font-style:italic}
/* v3.1.4: small close X at the top right of the Shop and Plant a print sheets; 44px tap target, stays in view while the list scrolls */
#gdX{float:right;position:sticky;top:0;z-index:1;width:44px;height:44px;margin:-8px -10px 0 0;padding:0;border-radius:50%;font-size:1rem;line-height:1;background:var(--panel2)}#gdX[hidden]{display:none}#gdX:focus-visible{outline:2px solid var(--go);outline-offset:2px}
#gDlg:has(#gdX:not([hidden])) #gdT{padding-right:40px}
#gDlg form{margin-top:12px}#gDlg form button{width:100%;min-height:44px}
.gaisles{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin:6px 0 10px}.gaisles button{min-height:40px;border-radius:10px;font-size:.85rem}
/* v1.86.25: the active aisle is the outlined button, never the bright fill; the keyboard focus mark is an underline so two buttons never look active at once */
.gaisles button[aria-pressed=true]{outline:2px solid var(--go);outline-offset:2px;font-weight:700}.gaisles button:focus-visible{outline:0;text-decoration:underline}.gaisles button[aria-pressed=true]:focus-visible{outline:2px solid var(--go);outline-offset:2px}
.glist{display:flex;flex-direction:column;gap:6px}.grow{display:flex;align-items:center;gap:10px;min-height:52px;text-align:left;border-radius:12px;padding:8px 10px;width:100%}
.grow img{width:40px;height:40px;border-radius:8px;object-fit:cover;flex:none;background:var(--panel2)}.grow .dname{flex:1;min-width:0;display:flex;flex-direction:column;font-weight:700}
.grow .gthumb{width:40px;height:52px;border-radius:8px;flex:none}.grow .sub{font-weight:500;font-size:.75rem;color:var(--mute);overflow-wrap:anywhere}.grow .bv{flex:none;font-weight:700;color:var(--mix)}.grow.short{opacity:.55}
.gline{margin:0 0 6px;font-size:.9rem}.gacts{display:flex;flex-direction:column;gap:8px;margin-top:12px}.gacts button{min-height:44px;border-radius:12px;font-weight:700}.gacts button.sure{border-color:#d0603a;color:#e0704a}
.gbar{height:8px;border-radius:4px;background:var(--panel2);overflow:hidden;margin:4px 0 2px}.gbar i{display:block;height:100%;background:var(--mix);border-radius:4px}
@media (max-width:600px){
  #gDlg{width:100%;max-width:none;margin:auto 0 0;padding:10px 16px calc(16px + env(safe-area-inset-bottom,0px));border-radius:18px 18px 0 0;border-width:1px 0 0;max-height:88vh}
  #gDlg .grab{display:block;width:36px;height:4px;margin:0 auto 10px;border-radius:2px;background:var(--line)}
}
@media (max-width:600px) and (prefers-reduced-motion:no-preference){#gDlg[open]{animation:sheetUp .22s ease-out}}
/* v1.84.1: Progress rows show one fact each: the headline, then "Confused with a lookalike" (amber, no count) or the streak dots. No chips. */
#gridItems .prow .psub{font-size:10.5px;line-height:1.2;color:var(--mix)}
#gridItems .prow .dots{display:block;margin:0;font-size:.62rem}
/* v1.84.3: placing bar nudge buttons and Fungarium messages under the plot */
.gplace button.gnudge{flex:0 0 44px;font-size:1.3rem;padding:0}.gmsg{margin:0 4px 10px;padding:8px 10px;border-radius:10px;background:var(--panel2);font-size:.88rem}
/* v1.84.5: Settings > Dev mode switch with its note */
#devSw{margin-top:12px;margin-bottom:8px} /* v1.86.2: same switch as Dark mode */
/* v1.85.0: Fungarium Phase 3. The Below ground switch row, seven shop aisles */
.gtools2{margin-top:-4px}.gtools2 button{min-height:40px;font-weight:600}.gtools2 button[aria-pressed=true]{border-color:var(--mix);color:var(--ink);background:color-mix(in srgb,var(--mix) 18%,transparent)}
.gaisles{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.gaisles button{font-size:.8rem;padding:4px 6px;line-height:1.2}
/* v1.86.0: Fungarium Phase 4. Plot chips above the garden, three tools in the second row */
.gplots{display:flex;flex-wrap:nowrap;gap:6px;margin:0 0 8px;padding:4px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none} /* v1.86.17: one row that scrolls sideways instead of wrapping; padding keeps focus rings from being clipped */
.gplots::-webkit-scrollbar{display:none}
.gchip{flex:none;min-height:36px;padding:4px 12px;border-radius:999px;font-size:.82rem;font-weight:600;white-space:nowrap}
.gchip[aria-pressed=true]{background:color-mix(in srgb,var(--go) 14%,transparent);color:var(--ink);border-color:var(--go)}.gchip.add{border-style:dashed;color:var(--mute)}
/* v2.1.11: the selected plot chip and the Shop button use the lighter selected style (light tint, 1px green outline, normal text), the same rule as Quiz Style */
.gtools #gShop.go,.gtools #gForage.go{background:color-mix(in srgb,var(--go) 14%,transparent);color:var(--ink);border:1px solid var(--go)}
/* v2.1.11: sideways chip rows scroll with a mouse (src/rowScroll.js): the grab cursor while dragging, and no text selection */
.hs-drag,.hs-drag *{cursor:grabbing!important;user-select:none;-webkit-user-select:none}
.gtools2 button{font-size:.88rem}
/* v1.86.1: the Dev mode row under Shop and Plant a print */
.gdev{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 4px 10px;padding:6px 8px;border:1px dashed var(--line);border-radius:12px}
.gdev[hidden]{display:none}.gdev>button{flex:0 0 52px;min-height:40px;border-radius:10px;font-weight:700;font-family:ui-monospace,monospace}
.gdevr{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;font-size:.78rem;color:var(--mute);min-width:0}.gdevr input{flex:1;min-width:0;max-width:180px}.gdevr output{min-width:3.2em;font-weight:700;color:var(--ink)}
/* v1.86.3: the Play card's picture is sized so the whole Play page (header, card, buttons, deck, progress, footer and tabs) fits on one screen.
   About 412px of the page is everything but the picture; it is never taller than 345px (25% under the old 460px) nor shorter than 160px. */
:root{--cardH:clamp(160px,calc(100vh - 412px),345px)}
/* v3.1.14: svh (the small viewport, browser bars showing) instead of dvh, so the card does not resize as the bars collapse and the buttons always clear the tab bar. Play and Fungarium only; other tabs unchanged. */
@supports(height:100svh){:root{--cardH:clamp(160px,calc(100svh - 412px),345px)}}

/* v1.86.17: Dark mode switch is half width, centered, with the label right beside its toggle. */
#themeSw{width:50%;min-width:max-content;margin-inline:auto;justify-content:center;gap:10px}

/* v1.86.17: Play sits in the middle of the tab bar and is 15% larger than the other tabs (width, height, icon and label). */
#tabPlay{flex:1.15;min-height:64px;font-size:.8625rem}#tabPlay .ic{width:34.5px;height:34.5px}

/* v1.86.19: Plant! on the Study page (opened from a Fungarium spore print): to the left of Back */
.pacts{display:flex;align-items:center;gap:8px;flex:none}
/* v1.86.21: matches the Fungarium's "Plant here" button (.gplace button.go): theme go color, no border, bold */
.plantbtn{border:0;background:var(--go);color:var(--on-go);font-weight:700}

/* v1.88.0: Collection opens from Decks with a back button; Now playing gets a Collection button; Nearby / Fruiting this month link to the Forage map */
#colTop{justify-content:flex-start;margin-bottom:6px}#colTop .colback{margin:0;padding:6px 12px 6px 0;color:var(--mute);font-weight:600}
#cHead .colback{flex:none;width:28px;min-height:44px;margin:0 -4px 0 -4px;padding:0;border:0;background:none;color:var(--mute);font-size:1.7rem;line-height:1}
#deckList .dthumb.open,#deckList .thwrap>.open{cursor:pointer}
.npbtns{display:flex;flex-direction:column;gap:6px;flex:none;align-items:stretch}
#nowPlaying .npbtns{gap:4px}#nowPlaying .npbtns button{width:auto;min-width:5.6em;padding:0 12px;min-height:32px;font-size:.82rem}#nowPlaying .npbtns button:not(.go){min-height:28px;font-size:.78rem}
#nowPlaying .npbtns button:not(.go){background:transparent;border:1px solid var(--line);color:var(--ink)}
#deckList button.mapbtn{width:26px;margin-inline:-6px;min-height:36px;padding:0;border:0;background:none;color:var(--go);display:grid;place-items:center}
/* v1.86.26: tappable Most missed species rows */
.strow.tap{cursor:pointer;border-radius:10px}.strow.tap:active{background:var(--panel2)}.strow.tap:focus-visible{outline:2px solid var(--go);outline-offset:1px}

/* v2.0.0: the isometric Fungarium board: view cube (top left), zoom and rotate buttons (top right), zoom chip (bottom left) */
.isoctl[hidden]{display:none}.isoctl{position:absolute;inset:0;pointer-events:none}
.isohud button{pointer-events:auto;background:rgba(15,26,20,.74);color:#e9f1e4;border:1px solid rgba(255,255,255,.18);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.isohud{position:absolute;top:8px;right:8px;display:flex;flex-direction:column;align-items:flex-end;gap:5px}.isohud>div{display:flex;gap:5px}
.isohud button{width:30px;height:30px;min-height:30px;border-radius:9px;font-size:1rem;font-weight:700;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}/* v2.0.8: calmer controls: smaller, and 60% opaque until touched, hovered or focused */
.isohud button{opacity:.6;transition:opacity .15s}.isohud button:hover,.isohud button:focus-visible,.isohud button:active{opacity:1}
.isohud button:focus-visible{outline:2px solid var(--go);outline-offset:2px}
.isohud button:active{background:rgba(40,70,52,.9)}
.gplot:has(.isoctl:not([hidden])) .gcv{touch-action:none;cursor:grab}
/* v2.0.8: the tray (labelled Options since 2.3.1): a pill at the board's bottom right, with a small menu above it */
.gtray{position:absolute;right:8px;bottom:8px;z-index:2;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:6px}.gtray[hidden]{display:none}
.glayers{position:relative;width:30px;height:30px;min-height:30px;padding:0;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;font:700 .72rem system-ui,sans-serif;background:rgba(15,26,20,.78);color:#e9f1e4;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer}
.glayers::before{content:'';position:absolute;inset:-8px}/* v3.1.11: hamburger icon, 30 px like the zoom and turn buttons, with a 44 px touch area */
.gtray.open .glayers{background:rgba(40,70,52,.92)}
.gtray .gtools2{display:none;flex-direction:column;gap:0;margin:0;overflow:hidden;border-radius:12px;background:rgba(15,26,20,.94);border:1px solid rgba(255,255,255,.18)}.gtray.open .gtools2{display:flex}
.gtray .gtools2 button{flex:none;min-height:36px;border:0;border-bottom:1px solid rgba(255,255,255,.12);border-radius:0;background:none;color:#e9f1e4;font-size:.8rem;font-weight:700;text-align:left;padding:0 14px;white-space:nowrap}
.gtray .gtools2 button:last-child{border-bottom:0}.gtray .gtools2 button[aria-pressed=true]{background:none;color:#b6f36b}

/* v2.0.6: a slight lightening under the mouse on the Fungarium's buttons (the board's own things are lit in the canvas) */
@media (hover:hover){.gtools button:not(:disabled):hover,.gplace button:not(:disabled):hover,.isoctl button:hover{filter:brightness(1.14)}}

/* v2.0.9: the map's panes and controls (z-index 400 to 1000) no longer paint over the tab bar or the update bar on any width; the phone block already did this */
#fMapBox{isolation:isolate}

/* v2.1.7: the List | Photo switch at the top of the Decks page, next to + New */
.dvbar{display:flex;align-items:center;gap:8px}
#dvSeg.seg{margin:0;gap:2px;padding:2px;flex:none}
#dvSeg.seg button{flex:none;min-height:30px;padding:0 12px;font-size:.8rem}
#dvSeg.seg button:focus-visible{outline:2px solid var(--go);outline-offset:1px}
@media (max-width:340px){.dvbar{gap:6px}#dvSeg.seg button{padding:0 9px}#createNew.newpill{padding:4px 11px}}
/* v2.2.0: Forage map, full-bleed. Two layouts (Settings > Forage map style): Map Sheet (default) and Hunt Planner. #finder[data-fs] is the style, [data-vw] is phone (under 900 px) or desk. findUI.js moves the day block, key, Best bets, Why and the settings into the slots. */
body.finding>header,body.finding>#status,body.finding>footer{display:none}
body.finding{padding:0;overflow:hidden}
#finder{position:fixed;left:0;right:0;top:0;bottom:var(--tabH,70px);z-index:3;width:auto;max-width:none;margin:0;padding:0;border:0;border-radius:0;background:var(--bg);overflow:hidden;isolation:isolate;--pt:max(8px,env(safe-area-inset-top,0px));--dockH:0px;--stackH:0px;--shH:116px}
#finder[hidden],#fStore{display:none}
#finder .phead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fglass{background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);box-shadow:0 4px 14px var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.fround{width:44px;height:44px;padding:0;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);background:var(--panel);color:var(--ink)}
.fround:focus-visible,#fPillBtn:focus-visible,#fGrab:focus-visible,#fLayMenu button:focus-visible,#fCards button:focus-visible,#fToday:focus-visible,#fSeg button:focus-visible{outline:2px solid var(--go);outline-offset:2px}
#fMapBox{position:absolute;inset:0;margin:0;border:0;border-radius:0;overflow:hidden;isolation:isolate}
#fMap{position:absolute;inset:0;height:auto;background:var(--panel2)}
#fMapBox.busy::after{content:'Loading…';position:absolute;top:calc(var(--pt) + 62px);left:50%;transform:translateX(-50%);padding:6px 14px;border-radius:999px;font-size:.8rem;background:color-mix(in srgb,var(--panel) 92%,transparent);z-index:1250}
#fHere{top:calc(var(--pt) + 62px);z-index:1150;min-height:44px;padding:0 14px;border-radius:999px}
/* the pill: place, fungus and area; the gear opens the settings */
#fPill{position:absolute;left:8px;top:var(--pt);right:8px;z-index:1100;display:flex;align-items:center;gap:6px;min-height:52px;padding:4px 6px 4px 14px;border-radius:999px}
#fPillBtn{display:flex;align-items:center;gap:8px;flex:1;min-width:0;min-height:44px;padding:0;border:0;background:none;color:var(--ink);text-align:left;font-weight:800}
#fPillBtn svg{flex:none;stroke:var(--go)}#fPillBtn .t{display:block;min-width:0}
#fPillBtn b,#fPillBtn small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#fPillBtn small{font-weight:500;color:var(--mute);font-size:.72rem}
#fGear{flex:none;border:0;background:none}
#fSeg{display:none;flex:none;margin:0}#fSeg button{min-height:44px;padding:0 12px}
#fRail{position:absolute;right:8px;top:calc(var(--pt) + 60px);z-index:1100;display:grid;gap:8px}
#fLayMenu{position:absolute;right:60px;top:calc(var(--pt) + 60px);z-index:1200;min-width:200px;padding:6px;border-radius:16px}
#fLayMenu[hidden],#fRainSub[hidden]{display:none}
#fLayMenu button{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 10px;border:0;border-radius:10px;background:none;color:var(--ink);font-weight:700;text-align:left}
#fLayMenu button[aria-checked=true]{background:var(--go);color:var(--on-go)}#fLayMenu button[role=menuitemcheckbox][aria-checked=true]{background:none;color:var(--ink)}
#fLayMenu .sw{width:12px;height:12px;border-radius:3px;flex:none}#fLayMenu .sw.off{border:1px solid var(--mute)}#fLayMenu .sw.dot{border-radius:50%;background:#c58a4a;border:1px solid #4a2c14}#fLayMenu .sw.burn{border:2px dashed #e8590c}
#fLayMenu .chev,#fLayMenu .ck{margin-left:auto}#fLayMenu .ck{visibility:hidden;color:var(--go)}#fLayMenu [aria-checked=true] .ck{visibility:visible}
#fRainSub button{padding-left:32px}#fLayMenu hr{border:0;border-top:1px solid var(--line);margin:4px 0}
#fAbove{position:absolute;left:8px;bottom:calc(var(--stackH) + 8px);z-index:1100;display:flex;flex-direction:column;gap:8px;align-items:flex-start;max-width:calc(100% - 76px);pointer-events:none}
#fAbove>*{pointer-events:auto}
#fToast{padding:6px 14px;border-radius:999px;font-size:.8rem;color:var(--ink);background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line)}#fToast:empty{display:none}
#fAbove #fKey{width:min(280px,100%);padding:6px 10px;border-radius:12px}
#fAbove #fKey:not(:has(#fLegend:not([hidden]))):not(:has(#fMapNote:not([hidden]))){display:none}
/* v2.3.17: the key floats over the map as its own glass card (v2.3.18: in every layout, not only the phone Map Sheet), rides with the sheet, and at full sheet height gives way to the place button */
#fAbove #fKey{background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);box-shadow:0 4px 14px var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
#finder[data-fs=sheet][data-vw=phone] #fAbove{transition:bottom .28s ease}
#fKey .lg-short{display:none}
/* v2.3.19: on a phone the key is a slim vertical card on the right edge of the map, under the buttons: the colour bar stands upright (high at the top) with its labels beside it and a short name above. A tap opens it wider, with the full title and the note. It is hidden when the Map Sheet is pulled to full height. */
#finder[data-vw=phone][data-fs=sheet]{--kt:calc(var(--pt) + 168px)}
#finder[data-vw=phone][data-fs=planner]{--kt:calc(var(--pt) + 112px)}
#finder[data-vw=phone] #fMapBox>#fKey{position:absolute;right:8px;top:var(--kt);z-index:1050;display:flex;flex-direction:column;box-sizing:border-box;width:max-content;min-width:58px;max-width:118px;max-height:max(0px,calc(100% - var(--kt) - var(--stackH) - 12px));padding:7px 8px;border-radius:14px;overflow:hidden;cursor:pointer;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);box-shadow:0 4px 14px var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
#finder[data-vw=phone] #fMapBox>#fKey:not(:has(#fLegend:not([hidden]))):not(:has(#fMapNote:not([hidden]))){display:none}
#finder[data-vw=phone] #fMapBox>#fKey.open{max-width:min(260px,calc(100% - 16px));overflow-y:auto}
#finder[data-vw=phone] #fKey:focus-visible{outline:2px solid var(--go);outline-offset:2px}
#finder[data-fs=sheet][data-vw=phone][data-snap="2"] #fMapBox>#fKey{display:none}
#finder[data-vw=phone] #fKey #fLegend{margin:0;min-height:0}
#finder[data-vw=phone] #fKey .lg-title{display:none}
#finder[data-vw=phone] #fKey .lg-short{display:block;grid-column:1/-1;margin:0 0 5px;font-size:.7rem;font-weight:700;line-height:1.2;color:var(--ink);white-space:nowrap}
#finder[data-vw=phone] #fKey.open .lg-short{display:none}
#finder[data-vw=phone] #fKey.open .lg-title{display:block;grid-column:1/-1;margin:0 0 6px;font-size:.76rem;font-weight:600;line-height:1.25;color:var(--ink)}
#finder[data-vw=phone] #fLegend:has(.lg-ramp){display:grid;grid-template-columns:10px auto;grid-template-rows:auto minmax(0,1fr);column-gap:6px;flex:1 1 150px;min-height:64px}
#finder[data-vw=phone] #fLegend .lg-ramp{grid-column:1;grid-row:2;width:10px;height:auto;border-radius:999px;background:var(--rg-v,linear-gradient(0deg,rgba(255,224,138,.6),rgba(255,179,71,.75),rgba(255,122,61,.85),rgba(215,38,61,.9),rgba(142,11,82,.95))) !important}
#finder[data-vw=phone] #fLegend .lg-lab{grid-column:2;grid-row:2;flex-direction:column-reverse;justify-content:space-between;font-size:.68rem;line-height:1;white-space:nowrap}
#finder[data-vw=phone] #fLegend .lg-keys{flex-direction:column;flex-wrap:nowrap;gap:3px;font-size:.68rem;line-height:1.15;overflow-y:auto;min-height:0}
#finder[data-vw=phone] #fLegend .lg-keys i{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#finder[data-vw=phone] #fKey.open #fLegend .lg-keys i{white-space:normal;overflow:visible}
#finder[data-vw=phone] #fKey #fNoteRow{display:block;margin:0}
#finder[data-vw=phone] #fKey #fMapNote{white-space:normal;overflow:visible;text-overflow:clip;margin:0;font-size:.72rem;display:none}
#finder[data-vw=phone] #fKey #fNoteMore{display:none}
#finder[data-vw=phone] #fKey:not(.open) #fNoteRow:has(#fMapNote:not([hidden]))::before{content:"i";display:grid;place-items:center;width:15px;height:15px;margin:5px auto 0;border-radius:50%;background:var(--go);color:var(--on-go);font:700 .62rem/1 var(--sans,inherit)}
#finder[data-vw=phone] #fKey.open #fMapNote:not([hidden]){display:block;margin-top:7px}
/* key (legend + note) */
#fKey{margin:0}#fLegend{display:flex;flex-direction:column;gap:2px;margin:6px 0 0}#fLegend[hidden]{display:none}#fLegend .lg-title{font-size:.72rem;color:var(--mute)}
#fNoteRow{display:flex;align-items:baseline;gap:8px}#fMapNote{flex:1;min-width:0;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--mute)}#fNoteRow.open #fMapNote{white-space:normal}
#fNoteMore{display:block;flex:none;min-height:36px;padding:0 8px}#fNoteMore[hidden]{display:none}
/* date, Play and the slider / timeline */
#fDay{margin:0}#fDay[hidden]{display:none}
#fDay label{display:flex;justify-content:space-between;gap:6px;font-weight:800;font-size:.82rem;line-height:1.3;margin-bottom:2px}.f-unsure{color:var(--mute);font-weight:500}
.f-dayrow{display:flex;align-items:center;gap:8px;margin:0}
#fPlay{flex:none;width:44px;height:44px;min-width:0;padding:0;display:grid;place-items:center;border-radius:50%;background:var(--go);color:var(--on-go);border:1px solid var(--go)}#fPlay[aria-pressed=true]{background:var(--panel);color:var(--ink);border-color:var(--line)}#fPlay svg{width:18px;height:18px;fill:currentColor}
#fSpeed{flex:none;min-width:44px;min-height:44px;padding:0 6px;border-radius:999px;font-variant-numeric:tabular-nums}
#fToday{flex:none;min-height:44px;margin:0;padding:0 12px;border-radius:999px;font-weight:800}
.f-dayhead{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:28px}.f-dayhead:has(#fToday:not([hidden])){min-height:44px} /* v2.3.20: the Today button has its own row height, so it no longer overlaps the track below */.f-dayhead label{min-width:0}#fToday[hidden]{display:none}
#fTrack{position:relative;flex:1;min-width:0}
#fDayR{--u:calc(12px + (100% - 24px) * var(--f,1));display:block;width:100%;-webkit-appearance:none;appearance:none;background:none;height:44px;margin:0;padding:0}
#fDayR::-webkit-slider-runnable-track{height:10px;border-radius:5px;background:linear-gradient(90deg,var(--line) var(--u),transparent var(--u)),repeating-linear-gradient(-45deg,var(--mute) 0 2px,var(--panel2) 2px 6px)}
#fDayR::-moz-range-track{height:10px;border-radius:5px;background:linear-gradient(90deg,var(--line) var(--u),transparent var(--u)),repeating-linear-gradient(-45deg,var(--mute) 0 2px,var(--panel2) 2px 6px)}
#fDayR::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:-7px;border-radius:50%;background:var(--go);border:2px solid var(--panel);box-shadow:0 0 0 1px var(--go)}
#fDayR::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--go);border:2px solid var(--panel);box-shadow:0 0 0 1px var(--go)}
#fDayR:focus-visible{outline:2px solid var(--go);outline-offset:2px;border-radius:8px}
#fTicks{position:relative;height:16px;font-size:.66rem;color:var(--mute);white-space:nowrap}#fTicks span{position:absolute;top:0;transform:translateX(-50%)}#fTicks span.first{transform:none}#fTicks span.last{transform:translateX(-100%)}#fTicks span.now{color:var(--ink);font-weight:800}
#fTrack>#fDayR{width:100%}
#fTl{display:none}
#fTrack[data-tl=on] #fTl{display:flex;align-items:flex-end;gap:1px;height:56px;position:relative}
#fTl i{flex:1;min-width:0;border-radius:2px 2px 0 0;position:relative;display:block}#fTl i.u{opacity:.55;background-image:repeating-linear-gradient(-45deg,transparent 0 2px,#fff6 2px 4px)}
#fTl i s{position:absolute;left:15%;right:15%;bottom:0;background:#4f9be6;border-radius:2px;opacity:.9}
#fTl b{position:absolute;top:-4px;bottom:-2px;width:2px;margin-left:-1px;background:var(--ink);pointer-events:none}#fTl b::before{content:"";position:absolute;top:-3px;left:-4px;width:10px;height:10px;border-radius:50%;background:var(--go);border:2px solid var(--panel)}
#fTrack[data-tl=on] #fDayR{position:absolute;left:calc(50% / var(--n,60));right:calc(50% / var(--n,60));top:0;width:auto;height:56px;opacity:0;pointer-events:none}
#fTrack[data-tl=on] #fDayR::-webkit-slider-thumb{width:2px;height:56px}#fTrack[data-tl=on] #fDayR::-moz-range-thumb{width:2px;height:56px}
#fTrack[data-tl=on]{touch-action:none;cursor:pointer}
#fTrack[data-tl=on]:focus-within #fTl{outline:2px solid var(--go);outline-offset:2px;border-radius:6px}
#fTlCap{display:none;margin:0 0 4px;color:var(--mute);font-size:.72rem}
/* Best bets */
#fBets{padding-left:0;list-style:none;margin:4px 0;display:grid;gap:6px}
.f-bet{width:100%;text-align:left;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.86rem;min-height:44px;padding:8px 10px;border-radius:12px;background:var(--panel2)}
#fCards{position:absolute;left:0;right:0;bottom:calc(var(--dockH) + 16px);z-index:1100;display:none;gap:8px;padding:2px 8px 4px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
#fCards::-webkit-scrollbar{display:none}
#fCards button{flex:none;width:150px;min-height:56px;scroll-snap-align:start;text-align:left;border-radius:14px;padding:8px 10px;display:grid;gap:2px;color:var(--ink)}#fCards button[aria-pressed=true]{border-color:var(--go);box-shadow:0 0 0 1px var(--go)}#fCards small{color:var(--mute)}
.f-pulse{background:none;border:0}.f-pulse i{display:block;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 2px #8e0b52;animation:fpl 1.6s ease-out infinite;pointer-events:none}
@keyframes fpl{0%{transform:scale(.55);opacity:1}100%{transform:scale(1.5);opacity:0}}
/* the dock, the sheet, the card, the rail */
#fDock{position:absolute;left:8px;right:8px;bottom:8px;z-index:1100;padding:8px 10px 4px;border-radius:16px;display:none}#fDock.has{display:block}
#fScrim{position:absolute;inset:0;z-index:7;background:#0007}#fScrim[hidden]{display:none}
#fSheet{position:absolute;z-index:8;background:var(--panel);border:1px solid var(--line);color:var(--ink);display:flex;flex-direction:column;overflow:hidden}
#fGrab{position:relative;flex:none;display:none;width:100%;min-height:28px;border:0;background:none;touch-action:none;cursor:grab} /* v3.1.15: 28px tall (was 44) so the date and Play sit closer to the top edge and the map shows more; the whole width is still the tap and drag area */
.f-grab{position:absolute;top:8px;left:50%;width:56px;height:6px;margin-left:-28px;border-radius:3px;background:var(--go);opacity:.9;box-shadow:0 0 0 1px color-mix(in srgb,var(--bg) 60%,transparent),0 0 8px color-mix(in srgb,var(--go) 45%,transparent)} /* v3.1.15: a wider, thicker bar in the accent colour with a soft glow (was a thin 38x4 line in the border colour that nearly vanished on the dark sheet) */
#fGrab:focus-visible{outline:2px solid var(--go);outline-offset:-3px;border-radius:12px}
#fSlotTop{flex:none;padding:0 14px}#fSlotMore{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 14px 14px}
#fSlotTop #fKey{margin-top:0}
#fSheet details.asec,#fRail2 details.asec{margin-top:6px}#fSet>summary{display:none}
/* v3.1.12: both "Fungus, place and layers" titles are gone on every screen; the h3 stays for screen readers and as the Hunt Planner drawer's focus target */
#fSetBody #fSheetTitle{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}#fSheetTitle:focus{outline:none}
#fSetBody #fGo{display:block;width:100%;min-height:48px;margin:0 0 12px;padding:0 16px;background:color-mix(in srgb,var(--go) 10%,transparent);color:var(--go);border:1px solid var(--go);font-weight:700} /* v3.1.13: below the species picker; light shading, 1px green border, green text */
#fSetBody #fLayers{display:flex;flex-wrap:wrap;gap:2px 14px}#fSetBody #fLayers .chk{min-height:44px;display:flex;align-items:center}
#fRail2{display:none;position:absolute;z-index:6;right:12px;top:12px;bottom:12px;width:230px;border-radius:18px;padding:12px;overflow:auto;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);box-shadow:0 4px 14px var(--shadow)}
#fRail2 h3{margin:0 0 6px;font:600 1rem var(--serif)}
/* ---- Map Sheet, phone ---- */
#finder[data-fs=sheet][data-vw=phone] #fSheet{left:0;right:0;bottom:0;height:var(--shH);border-bottom:0;border-radius:20px 20px 0 0;box-shadow:0 -8px 24px var(--shadow);transition:height .28s ease}
#finder[data-fs=sheet][data-vw=phone] #fGrab{display:block}
#finder[data-fs=sheet][data-vw=phone] #fSet>summary{display:none}
#finder[data-fs=sheet][data-vw=phone] #fSet{border:0}
#finder[data-fs=sheet][data-vw=phone] #fSlotTop #fDay{padding-bottom:2px}
/* ---- Map Sheet, desktop ---- */
#finder[data-fs=sheet][data-vw=desk] #fSheet{left:12px;top:12px;bottom:12px;width:320px;border-radius:18px;box-shadow:0 4px 14px var(--shadow)}
#finder[data-fs=sheet][data-vw=desk] #fSheet #fPill{position:static;flex:none;margin:10px 12px 0;border-radius:999px;box-shadow:none;background:var(--panel2)}
#finder[data-fs=sheet][data-vw=desk] #fGear{display:none}
#finder[data-fs=sheet][data-vw=desk] #fDock{left:344px;right:68px;bottom:12px}
#finder[data-fs=sheet][data-vw=desk] #fAbove{left:344px}
#finder[data-fs=sheet][data-vw=desk] #fRail{top:12px;right:12px}#finder[data-fs=sheet][data-vw=desk] #fLayMenu{top:12px}
#finder[data-fs=sheet][data-vw=desk] #fHere{left:calc(50% + 160px)}
/* ---- Hunt Planner ---- */
#finder[data-fs=planner] #fGear{display:none}
#finder[data-fs=planner] #fRail #fLocBtn{display:none}
#finder[data-fs=planner] #fRail{top:var(--pt)}#finder[data-fs=planner] #fLayMenu{top:var(--pt)}
#finder[data-fs=planner] #fPill{right:60px}
#finder[data-fs=planner] #fCards{display:flex}
#finder[data-fs=planner][data-vw=phone] #fSheet{left:0;right:0;bottom:0;height:min(560px,82%);border-bottom:0;border-radius:20px 20px 0 0;box-shadow:0 -8px 24px var(--shadow);transition:transform .28s ease,visibility 0s}
#finder[data-fs=planner][data-vw=phone] #fSheet[data-open=false]{transform:translateY(100%);visibility:hidden;transition:transform .28s ease,visibility 0s .28s}
#finder[data-fs=planner][data-vw=phone] #fGrab{display:block}
#finder[data-fs=planner] #fSet>summary{display:none}
#finder[data-fs=planner][data-vw=desk] #fSheet{left:12px;top:calc(var(--pt) + 72px);width:340px;max-height:calc(100% - var(--pt) - 84px - var(--stackH));border-radius:18px;box-shadow:0 4px 14px var(--shadow)}
#finder[data-fs=planner][data-vw=desk] #fSheet[data-open=false]{display:none}
#finder[data-fs=planner][data-vw=desk] #fPill{right:auto;left:12px;top:12px;padding-right:6px}
#finder[data-fs=planner][data-vw=desk] #fPillBtn{flex:none}
#finder[data-fs=planner][data-vw=desk] #fSeg{display:flex}
#finder[data-fs=planner][data-vw=desk] #fRail{top:12px;right:254px}#finder[data-fs=planner][data-vw=desk] #fLayMenu{top:12px;right:306px}
#finder[data-fs=planner][data-vw=desk] #fRail2{display:block}
#finder[data-fs=planner][data-vw=desk] #fCards{display:none}
#finder[data-fs=planner][data-vw=desk] #fDock{left:12px;right:254px;bottom:12px}
#finder[data-fs=planner][data-vw=desk] #fTlCap{display:block}
#finder[data-fs=planner][data-vw=desk] #fAbove{left:12px}
#finder[data-fs=planner][data-vw=desk] #fHere{left:calc(50% - 115px)}
/* the zoom buttons (44 px) go where nothing else is */
#fMapBox .leaflet-bar a,#fMapBox .leaflet-touch .leaflet-bar a{width:44px;height:44px;line-height:44px}
/* v2.3.20: the zoom buttons take the scheme's colours (dark or light), like the other controls on the map, instead of Leaflet's white */
#fMapBox .leaflet-bar,#fMapBox .leaflet-touch .leaflet-bar{border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 4px 14px var(--shadow)}
#fMapBox .leaflet-bar a,#fMapBox .leaflet-touch .leaflet-bar a{background-color:color-mix(in srgb,var(--panel) 92%,transparent);color:var(--ink);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
#fMapBox .leaflet-bar a:last-child{border-bottom:0}
#fMapBox .leaflet-bar a:hover,#fMapBox .leaflet-bar a:focus{background-color:var(--panel2);color:var(--ink)}
#fMapBox .leaflet-bar a:focus-visible{outline:2px solid var(--go);outline-offset:-3px}
#fMapBox .leaflet-bar a.leaflet-disabled{background-color:color-mix(in srgb,var(--panel) 92%,transparent);color:var(--mute);opacity:.6}
#fMapBox .leaflet-bottom{margin-bottom:var(--stackH)}
#finder[data-vw=phone] #fMapBox .leaflet-top.leaflet-left{margin-top:calc(var(--pt) + 60px)}
#finder[data-fs=sheet][data-vw=desk] #fMapBox .leaflet-top.leaflet-right{margin-top:112px;margin-right:4px}
#finder[data-fs=planner][data-vw=desk] #fMapBox .leaflet-top.leaflet-left{margin-top:84px}
#fMapBox .leaflet-control-attribution{background:color-mix(in srgb,var(--panel) 88%,transparent);color:var(--mute)}#fMapBox .leaflet-control-attribution a{color:var(--go)}
/* the themed base map: the OSM tiles take the scheme's hue, dark or light (their own pane, so land cover tiles keep their colours) */
#fMap{--bh:84deg}
:root[data-scheme=chanterelle] #fMap{--bh:-4deg}:root[data-scheme=foxfire] #fMap{--bh:160deg}:root[data-scheme=amethyst] #fMap{--bh:242deg}
[data-theme=light] #fMap .leaflet-fBase-pane{filter:sepia(.7) saturate(.5) hue-rotate(var(--bh)) brightness(.94) contrast(.95)}
[data-theme=dark] #fMap .leaflet-fBase-pane{filter:invert(1) hue-rotate(180deg) sepia(.6) saturate(.6) hue-rotate(var(--bh)) brightness(.8) contrast(.95)}
@media (prefers-reduced-motion:reduce){#finder[data-fs=sheet][data-vw=phone] #fSheet,#finder[data-fs=sheet][data-vw=phone] #fAbove{transition:none}.f-pulse i{display:none}}
#fSeg button{flex:none;overflow:visible;text-overflow:clip}
#fRail2 #fBetsBox>summary{display:none}
#finder[data-fs=planner][data-vw=desk] #fMapBox .leaflet-bottom.leaflet-right{margin-right:254px}

/* v2.1.9: Settings sections as cards, and the danger zone with Erase Game. --danger is a red that reads on every scheme's panel, dark and light. */
:root{--danger:#ff7a7a}[data-theme=light]{--danger:#c4281f}
.scard{margin-top:16px;padding:4px 14px 14px;background:var(--panel2);border:1px solid var(--line);border-radius:16px}
.scard #fgLbl{margin-top:12px}.scard .sw:first-child{margin-top:10px}
.scard #fgGroup .sw:first-child{margin-top:4px}
.dz{display:flex;align-items:center;gap:12px;margin:40px 0 0;color:var(--mute);font-size:.72rem;letter-spacing:.06em;text-transform:lowercase;white-space:nowrap}
.dz::before,.dz::after{content:'';flex:1;min-width:12px;height:1px;background:color-mix(in srgb,var(--mute) 45%,transparent)}
.erase{display:block;width:auto;margin:24px auto 0;padding:10px 18px;border-color:var(--line);color:var(--mute);font-weight:600}
.erase.armed{color:var(--danger);border-color:var(--danger);border-width:2px;padding:9px 17px}
.erasehint{min-height:1.2em;margin:8px 0 0;font-size:.8rem;color:var(--danger)}
#wipeGo{color:var(--danger);border-color:var(--danger)}

/* v3.1.4: the Forage map's overlays never page-zoom: a pinch or double-tap on the pill, sheet, key or buttons used to zoom the whole page (header clipped, map tiny). The map keeps its own pinch zoom; the sheet still scrolls. */
#finder #fPill,#finder #fSheet,#finder #fAbove,#finder #fCards,#finder #fDock,#finder #fKey,#finder .leaflet-control-container{touch-action:pan-x pan-y}

/* v3.1.8: the Transparency slider in the map key */
#fLegend .lg-op{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:.7rem;color:var(--mute)}
#fLegend .lg-op input{flex:1;min-width:0;min-height:44px;margin:0;touch-action:none;accent-color:var(--go)}
#fLegend .lg-op-v{min-width:2.6em;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}
#finder[data-vw=phone] #fKey:not(.open) .lg-op{display:none}
#finder[data-vw=phone] #fKey.open #fLegend:has(.lg-op){display:grid;grid-template-columns:10px auto minmax(58px,1fr);column-gap:6px}
#finder[data-vw=phone] #fKey.open #fLegend:has(.lg-keys){grid-template-columns:minmax(0,1fr) 58px}
#finder[data-vw=phone] #fLegend .lg-keys{grid-column:1;grid-row:2}
#finder[data-vw=phone] #fLegend .lg-op{grid-column:-2;grid-row:2;flex-direction:column;align-items:center;gap:2px;margin:0;min-height:112px;min-width:58px}
#finder[data-vw=phone] #fLegend .lg-op-t{font-size:.6rem;line-height:1.1}
#finder[data-vw=phone] #fLegend .lg-op-v{min-width:0;text-align:center}
#finder[data-vw=phone] #fLegend .lg-op input{flex:1 1 auto;width:44px;min-height:0;writing-mode:vertical-lr;direction:rtl;}

/* v3.2.0: Forager's Maze (milestone 3) */
#maze .phead h2{margin:0}.mzname{display:flex;align-items:center;gap:10px;margin:0 0 8px;font:600 .95rem var(--serif);color:var(--mute)}.mzname button{min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:700 .85rem var(--sans)}
.mzhud{margin:0 0 8px;padding:8px 10px;border-radius:10px;background:var(--panel2);font-size:.88rem;min-height:2.6em}.mzhud.bad,.gmsg.bad{color:var(--no)}
.mzboard{display:flex;justify-content:center;margin:0 0 10px}.mzcv{display:block;border-radius:12px;border:1px solid var(--line);touch-action:manipulation;max-width:100%;outline-offset:3px}
.mzacts{margin:0 0 10px}.mzacts button{flex:1;min-height:44px;border-radius:12px;font-weight:700}.mzacts button.go{border:0;background:var(--go);color:var(--on-go)}.mzacts button:disabled{opacity:.45}
.mztray{display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,auto);gap:6px;margin:0 0 16px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}.mzitem{display:flex;flex-direction:column;align-items:flex-start;min-height:44px;padding:6px 10px;border-radius:12px;border:1.5px solid var(--line);background:var(--panel);color:var(--ink);font:700 .82rem var(--sans);text-align:left}
.mzitem small{font-weight:500;color:var(--mute)}.mzitem[aria-pressed=true]{border-color:var(--go);background:var(--panel2);box-shadow:0 0 0 2px var(--glow)}.mzitem.poor{opacity:.55}
.mzopen{border:0;background:var(--go);color:var(--on-go);font-weight:700;min-height:44px;padding:0 18px;border-radius:12px}
.mzcoll{margin:0 0 12px;padding:8px 10px;border-radius:10px;background:var(--panel2);font-size:.85rem;color:var(--mute)}.mzpreview{margin:8px 0;display:flex;justify-content:center;cursor:pointer}.mzpreview .mzcv{border:1px solid var(--line);border-radius:12px}
.mzitem.mzground{border-style:dashed}

/* v4.0.0: Forager's Maze panel under the Fungarium board */
.gmaze{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:var(--panel2);border:1px solid var(--line)}.gmaze p{margin:0 0 6px}#gmHud{font-weight:600}#gmMsg.bad{color:#e07a5f}.gmacts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.gmacts>span{display:flex;flex-wrap:wrap;gap:8px}#gmResult{margin-top:8px}#gmResP{font-size:.9rem;color:var(--mute)}#gForage[aria-pressed="true"]{background:var(--accent,#3c6e47);color:#fff}
/* v3.1.26: Decks > Search */
#deckSearch{margin:0 0 8px}#deckSearch h3.grp{margin:8px 0 6px;font-size:.95rem}#dsFind{width:100%}#dsResults{list-style:none;margin:0;padding:0}
#dsResults li{display:flex;align-items:center;gap:10px;padding:6px 0}#dsResults img{width:48px;height:48px;object-fit:cover;border-radius:10px}#dsResults em{color:var(--mute)}#dsResults .rname.open,#dsResults img.open{cursor:pointer}#dsMsg:empty{display:none}

/* v4.3.0: the link to the latest Forage run results in the Fungarium status line, and Back to top in the results popup */
.glink{background:none;border:0;padding:0;color:var(--go);font:inherit;text-decoration:underline;cursor:pointer}#gdBody>button{margin-top:10px;min-height:44px;width:100%;border-radius:12px;font-weight:700}
#gdBody>button[hidden]{display:none}

/* v4.2.1b: the live weather badge, bottom left of the Fungarium picture (the zoom and turn buttons are top right, the Options tray bottom right) */
.gwx{position:absolute;left:8px;bottom:10px;max-width:calc(100% - 70px);padding:3px 9px;border-radius:999px;background:rgba(12,20,16,.58);color:#f2f5ee;font:600 .74rem var(--sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.gwx[hidden]{display:none}

/* v4.8.0: Settings > Fungarium > Reset biome */
.fgreset{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 0}.fgreset select{max-width:60%;min-height:40px}.gresetrow{display:flex;gap:8px;margin-top:10px}.gresetrow button{flex:1;min-height:44px;border-radius:12px;font-weight:700}.gresetrow button.danger{background:#b3402e;color:#fff;border:0}

/* v4.12.0: Plant print! at the bottom of a Study card: the light green selected style, same as Shop */
.plantprint{margin:16px 0 8px;text-align:center}.plantprint p{margin:0 0 8px;color:var(--mute);font-size:.9rem}.plantprint .plantlite{min-height:44px;padding:0 22px;font-weight:700;background:color-mix(in srgb,var(--go) 14%,transparent);color:var(--ink);border:1px solid var(--go);border-radius:12px}
