
:root{
  --ground:#FBF8F4; --surface:#FFFFFF; --surface-2:#F3EFE9; --hover:#F0EBE4;
  --ink:#2C2C2E; --ink-2:#48484A; --muted:#6B6862; --faint:#A8A39B; --edge:#E6E0D7; --edge-2:#D6CEC2;
  --accent:#2F7FB8; --accent-ink:#22679A; --accent-soft:#E3EFF8; --on-accent:#fff; --accent-edge:#205F8C; --accent-fill:#2A76AB;
  /* thumbnails are always drawn on white paper, in both themes */
  --thumb-paper:#FFFFFF; --thumb-ph:#C8CDD6; --thumb-badge:#101217; --thumb-badge-ink:#FFFFFF;
  --good:#2E9D63; --good-t:rgba(46,157,99,.13); --warm:#B7720A; --warm-t:rgba(214,140,20,.14); --bad:#D9483B; --bad-t:rgba(217,72,59,.12);
  --shadow-sm:0 1px 2px rgba(44,36,28,.05); --shadow:0 1px 3px rgba(44,36,28,.05),0 10px 28px -14px rgba(44,36,28,.2); --shadow-lg:0 24px 70px -20px rgba(44,36,28,.32);
  --sans:"Plus Jakarta Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --ease:cubic-bezier(.16,1,.3,1);
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  color-scheme:dark;
  --ground:#1A1917; --surface:#242220; --surface-2:#1F1D1B; --hover:#2D2A27;
  --ink:#F2EEE8; --ink-2:#CFC9C0; --muted:#9D968C; --faint:#6A645C; --edge:#34302C; --edge-2:#433E38;
  --accent:#6FB3E3; --accent-ink:#8CC4EC; --accent-soft:#1E2E3B; --on-accent:#13202B; --accent-edge:#3F85B8; --accent-fill:#6FB3E3;
  --good:#5CC98A; --good-t:rgba(92,201,138,.14); --warm:#F0B24A; --warm-t:rgba(240,178,74,.15); --bad:#FF6F61; --bad-t:rgba(255,111,97,.15);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow:0 1px 2px rgba(0,0,0,.5),0 14px 36px -14px rgba(0,0,0,.8); --shadow-lg:0 24px 80px -20px rgba(0,0,0,.9);
}}
:root[data-theme="dark"]{
  color-scheme:dark;
  --ground:#1A1917; --surface:#242220; --surface-2:#1F1D1B; --hover:#2D2A27;
  --ink:#F2EEE8; --ink-2:#CFC9C0; --muted:#9D968C; --faint:#6A645C; --edge:#34302C; --edge-2:#433E38;
  --accent:#6FB3E3; --accent-ink:#8CC4EC; --accent-soft:#1E2E3B; --on-accent:#13202B; --accent-edge:#3F85B8; --accent-fill:#6FB3E3;
  --good:#5CC98A; --good-t:rgba(92,201,138,.14); --warm:#F0B24A; --warm-t:rgba(240,178,74,.15); --bad:#FF6F61; --bad-t:rgba(255,111,97,.15);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow:0 1px 2px rgba(0,0,0,.5),0 14px 36px -14px rgba(0,0,0,.8); --shadow-lg:0 24px 80px -20px rgba(0,0,0,.9);
}
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;padding-inline:20px}
a{color:inherit}button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wrap{max-width:1120px;margin:0 auto}@media (min-width:1500px){.wrap{max-width:1400px}}
header.top{display:flex;align-items:center;gap:18px;height:64px;position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--ground) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);margin-inline:-20px;padding-inline:20px}
header.top .wrap{display:flex;align-items:center;gap:18px;width:100%}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px;text-decoration:none}
.brand svg{width:22px;height:22px}
nav.tabs{display:flex;gap:2px;margin-left:8px}
nav.tabs a{padding:7px 12px;border-radius:9px;text-decoration:none;font-weight:600;color:var(--muted)}
nav.tabs a:hover{background:var(--hover);color:var(--ink)}
nav.tabs a.on{color:var(--ink);background:var(--surface);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--edge)}
.grow{flex:1}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:12px;border:0;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-sm);cursor:pointer;font-weight:600;white-space:nowrap;text-decoration:none;transition:background .15s var(--ease),transform .12s var(--ease)}
.btn:hover{background:var(--hover)}.btn:active{transform:scale(.97)}
.btn.primary{background:var(--ink);color:var(--ground);box-shadow:var(--shadow-sm)}.btn.primary:hover{opacity:.9}
.btn svg{width:17px;height:17px}

.hero{padding:38px 0 18px;display:grid;gap:14px}
.hero h1{margin:0;font-size:clamp(28px,4.2vw,44px);letter-spacing:-.03em;line-height:1.05;font-weight:700;text-wrap:balance;max-width:18ch}
.hero p{margin:0;color:var(--muted);font-size:15.5px;max-width:62ch}
.search{position:relative;max-width:640px;margin-top:6px}
.search input{width:100%;height:50px;border-radius:14px;border:0;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-sm);padding:0 16px 0 46px;font:inherit;font-size:15px;color:var(--ink)}
.search input:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--accent),var(--shadow)}
.search svg{position:absolute;left:15px;top:15px;width:20px;height:20px;color:var(--muted)}
.moods{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.mood{border:0;border-radius:999px;padding:8px 14px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge);cursor:pointer;font-weight:600;font-size:13px;display:inline-flex;gap:7px;align-items:center;transition:box-shadow .15s,background .15s}
.mood:hover{box-shadow:inset 0 0 0 1.5px var(--accent)}
.mood[aria-pressed="true"]{background:var(--ink);color:var(--ground);box-shadow:none}
.mood i{font-style:normal;opacity:.7}

.layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:28px;align-items:start;padding-bottom:60px}
aside.filters{position:sticky;top:76px;display:grid;gap:18px;max-height:calc(100dvh - 90px);overflow:auto;padding-right:4px;scrollbar-width:thin}
.fgroup{display:grid;gap:8px}
.fgroup h2{margin:0;font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:600;display:flex;justify-content:space-between}
.fgroup h2 button{border:0;background:none;color:var(--accent-ink);font-size:11.5px;cursor:pointer;text-transform:none;letter-spacing:0;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:0;border-radius:9px;padding:6px 10px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge);cursor:pointer;font-size:12.5px;font-weight:500;display:inline-flex;gap:6px;align-items:center;transition:background .15s,box-shadow .15s}
.chip:hover{box-shadow:inset 0 0 0 1.5px var(--accent)}
.chip[aria-pressed="true"]{background:var(--accent-fill);color:var(--on-accent);box-shadow:none}
.chip .n{font-family:var(--mono);font-size:10.5px;opacity:.6}
.chip[disabled]{opacity:.35;cursor:default}
.lvl{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--edge);border-radius:11px;padding:3px}
.lvl button{border:0;background:none;border-radius:8px;padding:7px 0;cursor:pointer;font-weight:600;font-size:12px;color:var(--muted)}
.lvl button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--edge)}
select{height:38px;border-radius:10px;border:0;box-shadow:inset 0 0 0 1px var(--edge);background:var(--surface);color:var(--ink);font:inherit;font-weight:500;padding:0 10px;width:100%}
.tagsearch{height:34px;border-radius:9px;border:0;box-shadow:inset 0 0 0 1px var(--edge);background:var(--surface);font:inherit;font-size:12.5px;padding:0 10px;width:100%;color:var(--ink)}

.resbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;min-height:34px;flex-wrap:wrap}
.resbar .count{color:var(--muted)}
.resbar .count b{color:var(--ink)}
.active{display:flex;gap:6px;flex-wrap:wrap}
.active .chip{background:var(--accent-soft);color:var(--accent-ink);box-shadow:none}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.card{border:0;text-align:left;padding:0;background:var(--surface);border-radius:16px;box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--edge);cursor:pointer;overflow:hidden;display:grid;grid-template-rows:auto 1fr;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow),inset 0 0 0 1px var(--edge)}
.thumb{aspect-ratio:1;background:var(--thumb-paper);display:grid;place-items:center;position:relative;border-bottom:1px solid var(--edge)}
.thumb img{width:100%;height:100%;object-fit:contain;padding:10px;display:block}
.thumb .ph{font-size:44px;font-weight:700;color:var(--thumb-ph);letter-spacing:-.04em}
.thumb .badge{position:absolute;left:10px;top:10px;font-size:10.5px;font-weight:700;letter-spacing:.03em;padding:3px 7px;border-radius:7px;background:var(--thumb-badge);color:var(--thumb-badge-ink)}
.thumb .badge.lm{background:var(--thumb-paper);color:var(--thumb-badge);box-shadow:inset 0 0 0 1px var(--edge)}
.card .body{padding:12px 13px 13px;display:grid;gap:6px;align-content:start}
.card .t{font-weight:650;font-size:14px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .by{color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meta{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;font-family:var(--mono)}
.dots{display:inline-flex;gap:3px}.dots i{width:12px;height:3px;border-radius:2px;background:var(--edge)}.dots i.on{background:var(--ink)}
.dots.est i.on{background:var(--faint)}
.tags{display:flex;gap:4px;flex-wrap:wrap}
.tag{font-size:11px;font-weight:600;padding:2px 7px;border-radius:6px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--edge);color:var(--ink-2)}
.more{display:flex;justify-content:center;margin-top:22px}
.empty{padding:60px 20px;text-align:center;color:var(--muted);display:grid;gap:10px;justify-items:center}

/* detail sheet */
.scrim{position:fixed;inset:0;background:rgba(8,10,14,.42);backdrop-filter:blur(3px);z-index:40;animation:fade .2s var(--ease)}
.sheet{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--surface);z-index:41;box-shadow:var(--shadow-lg);overflow:auto;animation:slide .35s var(--ease);padding:22px 24px 40px;display:grid;gap:16px;align-content:start}
@keyframes fade{from{opacity:0}}@keyframes slide{from{transform:translateX(40px);opacity:.3}}
.sheet .x{position:absolute;right:14px;top:14px;width:38px;height:38px;border-radius:10px;border:0;background:var(--surface-2);cursor:pointer;display:grid;place-items:center}
.sheet .big{aspect-ratio:1;background:var(--thumb-paper);border-radius:14px;box-shadow:inset 0 0 0 1px var(--edge);display:grid;place-items:center;max-width:420px;width:100%;justify-self:center}
.sheet .big img{width:100%;height:100%;padding:14px;object-fit:contain}
.sheet h2{margin:0;font-size:24px;letter-spacing:-.02em;line-height:1.15;padding-right:44px;text-wrap:balance}
.sheet .who{color:var(--muted);font-size:14px}
.sheet .who b{color:var(--ink);font-weight:600}
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fact{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--edge);border-radius:12px;padding:10px 12px;display:grid;gap:3px}
.fact .k{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-weight:600}
.fact .v{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px}
.fact .s{font-size:11px;color:var(--muted)}
.excerpt{margin:0;color:var(--ink-2);font-size:13.5px;line-height:1.55;border-left:2px solid var(--edge);padding-left:12px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.sheet h4{margin:8px 0 0;font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:600}
.like{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.like .card .body{padding:9px 10px 10px}.like .card .t{font-size:12.5px}.like .card .by{font-size:11.5px}
.why{font-size:11px;color:var(--accent-ink);font-weight:600}
footer{border-top:1px solid var(--edge);padding:26px 0 40px;color:var(--muted);font-size:12.5px;display:grid;gap:8px}
footer a{color:var(--accent-ink)}
@media (max-width:900px){
  .layout{grid-template-columns:1fr}
  aside.filters{position:static;max-height:none;display:none}
  aside.filters.open{display:grid}
  .ftoggle{display:inline-flex!important}
}
@media (max-width:560px){
  body{padding-inline:14px}header.top{margin-inline:-14px;padding-inline:14px}
  nav.tabs{margin-left:0}.hero{padding-top:20px}
  .grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .card .body{padding:9px 10px 10px}.card .t{font-size:13px}.tags{display:none}
  .sheet{top:auto;height:92dvh;width:100vw;border-radius:22px 22px 0 0;animation:up .35s var(--ease)}
  .facts{grid-template-columns:repeat(2,1fr)}
  .like{grid-template-columns:repeat(2,1fr)}
  .mood{min-height:44px}
}
@keyframes up{from{transform:translateY(40px);opacity:.3}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.xplist{display:flex;flex-wrap:wrap;gap:8px}
.xpb{display:inline-flex;align-items:center;gap:8px;border:0;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);border-radius:12px;padding:7px 12px 7px 8px;font-weight:600;font-size:13px;cursor:pointer;color:var(--ink)}
.xpb:active{transform:translateY(2px);box-shadow:inset 0 0 0 1px var(--edge)}
.xpb .ic2{width:22px;height:22px;border-radius:7px;background:var(--accent-soft);display:inline-block}
.xpb .ic2::after{right:auto;left:4.5px;bottom:4.5px;box-shadow:none}
@media (max-width:560px){header.top{height:auto;padding-block:6px 4px}header.top .wrap{flex-wrap:wrap;gap:4px 10px;min-height:38px}nav.tabs{order:5;width:100%;margin-left:-8px}header.top .ftoggle{height:34px}}
/* Variant Sudoku skin (A2) */
.brand{font-weight:800;font-size:17px;letter-spacing:-.02em;white-space:nowrap}
.brand em{font-style:normal;color:var(--accent)}
.brand .mk{width:30px;height:30px;flex:none}
.btn{box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);transition:background .15s,transform .08s,box-shadow .08s}
.btn:active{transform:translateY(2px);box-shadow:inset 0 0 0 1px var(--edge)}
.btn.primary{background:var(--accent-fill);color:var(--on-accent);box-shadow:0 2px 0 var(--accent-edge)}
.btn.primary:hover{opacity:1;filter:brightness(1.05)}.btn.primary:active{box-shadow:none}
.card{box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2)}
.card:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--edge-2),0 4px 0 var(--edge-2)}
.card:active{transform:translateY(1px);box-shadow:inset 0 0 0 1px var(--edge-2)}
.card .t{font-weight:700}
.thumb{border-bottom:0;margin:8px 8px 0;border-radius:10px;overflow:hidden}
.thumb .badge{background:var(--ink);color:var(--ground);border-radius:999px;padding:3px 8px}
.thumb .badge.lm{background:var(--thumb-paper);color:var(--thumb-badge);box-shadow:inset 0 0 0 1px #E6E0D7}
.dots i{width:7px;height:7px;border-radius:50%}.dots i.on{background:var(--accent)}
.dots.est i.on{background:color-mix(in srgb,var(--accent) 40%,var(--edge))}
.mood{box-shadow:inset 0 0 0 1px var(--edge-2);background:transparent}
.mood[aria-pressed="true"]{background:var(--ink);color:var(--ground)}
.chip[aria-pressed="true"]{background:var(--accent);box-shadow:0 2px 0 var(--accent-edge)}
.lvl button[aria-pressed="true"]{background:var(--accent-fill);color:var(--on-accent);box-shadow:0 2px 0 var(--accent-edge)}
.fgroup h2,.fact .k,.sheet h4{text-transform:none;letter-spacing:0;font-size:13px;font-weight:700;color:var(--ink)}
.fact .k{font-weight:600;color:var(--muted);font-size:12px}
.hero h1{font-weight:800;letter-spacing:-.022em}
.search input{box-shadow:inset 0 0 0 1px var(--edge-2)}

/* ---- cards: a stretched button so setter names can link to their pages ---- */
.card{position:relative;cursor:default}
.card .hit{all:unset;cursor:pointer;display:block}
.card .hit::after{content:"";position:absolute;inset:0;border-radius:16px;z-index:1}
.card .hit:focus-visible{outline:none}
.card:has(.hit:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.card .by a{color:inherit;text-decoration:none;position:relative;z-index:2}
.card .by a:hover{color:var(--accent-ink);text-decoration:underline}
.thumb .badge.sz{left:auto;right:10px;top:auto;bottom:10px;font-family:var(--mono);font-weight:600;letter-spacing:0}
.thumb .you{position:absolute;right:8px;top:8px;display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:999px;background:var(--good);color:#fff}
.thumb .you.going{background:var(--thumb-paper);color:#1E7A4A;box-shadow:inset 0 0 0 1.5px #2E9D63}
.thumb .you svg{width:11px;height:11px}
.cs{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11.5px;font-weight:600;color:var(--ink-2)}
.cs:empty{display:none}
.cs .live{color:var(--good)}
.cs .star{color:var(--warm)}
.prog{height:4px;border-radius:2px;background:var(--edge);overflow:hidden}
.prog i{display:block;height:100%;background:var(--good);border-radius:2px}
.grid>.card{content-visibility:auto;contain-intrinsic-size:auto 320px}

/* ---- discovery rows (shown when nothing is filtered) ---- */
.home{display:grid;gap:34px;padding:10px 0 36px;min-width:0}
.row{display:grid;gap:12px;min-width:0}
.rowh{display:flex;align-items:baseline;gap:6px 12px;flex-wrap:wrap}
.rowh h2,.allh{margin:0;font-size:19px;font-weight:800;letter-spacing:-.015em}
.rowh .sub{color:var(--muted);font-size:13px}
.rowh .grow{flex:1}
.linkbtn{border:0;background:none;padding:4px 2px;color:var(--accent-ink);font-weight:650;font-size:13px;cursor:pointer;text-decoration:none;font-family:inherit}
.linkbtn:hover{text-decoration:underline}
.strip{display:grid;grid-auto-flow:column;grid-auto-columns:200px;gap:14px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding:3px 3px 12px;margin:-3px -3px 0;scrollbar-width:thin;scroll-padding-inline:3px}
.strip>*{scroll-snap-align:start}
.strip.colls{grid-auto-columns:262px}
.allh{margin-bottom:12px}
.muted{color:var(--muted)}
#ftoggle.inview{display:none!important}

/* today's pick */
.daily{display:grid;grid-template-columns:176px minmax(0,1fr);gap:22px;align-items:center;background:var(--surface);border-radius:20px;box-shadow:inset 0 0 0 1px var(--edge);padding:14px 22px 14px 14px;max-width:820px}
.daily .dth{aspect-ratio:1;background:var(--thumb-paper);border-radius:12px;box-shadow:inset 0 0 0 1px var(--edge);display:grid;place-items:center;overflow:hidden}
.daily .dth img{width:100%;height:100%;padding:10px;object-fit:contain}
.daily .dt{display:grid;gap:7px;min-width:0;align-content:center}
.eyebrow{font-family:var(--mono);font-size:11.5px;color:var(--accent-ink);font-weight:600;letter-spacing:.02em}
.daily h3{margin:0;font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.15;text-wrap:balance}
.daily .who{color:var(--muted);font-size:13.5px}.daily .who a{color:var(--ink);font-weight:600;text-decoration:none}.daily .who a:hover{text-decoration:underline}
.daily .actions{margin-top:4px}
.daily .meta{flex-wrap:wrap;gap:4px 10px}.daily .meta span{white-space:nowrap}
.btn.sm{height:34px;padding:0 13px;font-size:13px;border-radius:10px}
.btn.sm svg{width:15px;height:15px}

/* collection cards */
.coll{position:relative;display:grid;gap:10px;align-content:start;padding:12px 12px 13px;border-radius:16px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);text-decoration:none;color:var(--ink);transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.coll:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--edge-2),0 4px 0 var(--edge-2)}
.coll:active{transform:translateY(1px);box-shadow:inset 0 0 0 1px var(--edge-2)}
.coll .fan{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.coll .fan span{aspect-ratio:1;background:var(--thumb-paper);border-radius:8px;box-shadow:inset 0 0 0 1px var(--edge);overflow:hidden;display:grid;place-items:center}
.coll .fan img{width:100%;height:100%;object-fit:contain;padding:4px}
.coll b{font-size:15px;font-weight:750;line-height:1.25;letter-spacing:-.005em}
.coll .cd{font-size:12.5px;color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.coll .cm{display:flex;flex-direction:column;align-items:flex-start;gap:7px;color:var(--muted);font-size:11.5px;font-family:var(--mono)}
.ticks{display:inline-flex;gap:3px;flex-wrap:wrap}
.ticks i{width:8px;height:8px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--edge-2)}
.ticks i.done{background:var(--good);box-shadow:none}
.ticks i.going{box-shadow:inset 0 0 0 2px var(--good)}
.collgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}

/* taste picker (cold start) */
.taste{background:var(--surface);border-radius:20px;box-shadow:inset 0 0 0 1px var(--edge);padding:18px 20px 20px;display:grid;gap:16px;max-width:900px}
.taste .th{display:grid;gap:4px}
.taste .th h2{margin:0;font-size:19px;font-weight:800;letter-spacing:-.015em}
.taste .th p{margin:0;color:var(--muted);font-size:13.5px}
.taste .qs{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr);gap:18px}
.taste fieldset{border:0;margin:0;padding:0;display:grid;gap:8px;align-content:start;min-width:0}
.taste legend{padding:0;margin-bottom:8px;font-size:13px;font-weight:700}
.taste .chip{font-size:12.5px}
.taste .acts{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.nudge{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:13.5px}

/* views: collection, for you, all collections */
.view{padding:14px 0 64px;display:grid;gap:22px;min-width:0}
.crumbs{font-size:13px;color:var(--muted);display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.crumbs a,.crumbs button{color:var(--muted);text-decoration:none;border:0;background:none;padding:0;font:inherit;cursor:pointer}
.crumbs a:hover,.crumbs button:hover{color:var(--ink);text-decoration:underline}
.vhead{display:grid;gap:12px;max-width:780px}
.vhead h1{margin:0;font-size:clamp(26px,3.6vw,38px);font-weight:800;letter-spacing:-.022em;line-height:1.08;text-wrap:balance}
.vhead p{margin:0;color:var(--ink-2);font-size:15.5px;line-height:1.6;max-width:66ch}
.pbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px;color:var(--muted);font-weight:600}
.pbar .bar{flex:0 1 220px;height:6px;border-radius:3px;background:var(--edge);overflow:hidden}
.pbar .bar i{display:block;height:100%;background:var(--good);border-radius:3px}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:10px;max-width:900px}
.step{display:grid;grid-template-columns:32px 96px minmax(0,1fr) auto;gap:16px;align-items:center;background:var(--surface);border-radius:16px;box-shadow:inset 0 0 0 1px var(--edge);padding:10px 16px 10px 12px}
.step .num{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:13px;box-shadow:inset 0 0 0 1.5px var(--edge-2);color:var(--ink-2)}
.step .num svg{width:15px;height:15px}
.step.done .num{background:var(--good);color:#fff;box-shadow:none}
.step.going .num{box-shadow:inset 0 0 0 2px var(--good);color:var(--good)}
.step .im{width:96px;height:96px;background:var(--thumb-paper);border-radius:11px;box-shadow:inset 0 0 0 1px var(--edge);overflow:hidden;display:grid;place-items:center}
.step .im img{width:100%;height:100%;object-fit:contain;padding:6px}
.step .sb{display:grid;gap:5px;min-width:0}
.step .sb b{font-size:15.5px;font-weight:750;line-height:1.25}
.step .sb .by{color:var(--muted);font-size:13px}.step .sb .by a{color:var(--ink-2);text-decoration:none}.step .sb .by a:hover{text-decoration:underline}
.step .new{font-size:12px;color:var(--accent-ink);font-weight:650}
.step .sa{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.learnlink{display:inline-flex;align-items:center;gap:8px}

/* detail sheet additions */
.sheet .who a{color:var(--ink);font-weight:600;text-decoration:none}.sheet .who a:hover{color:var(--accent-ink);text-decoration:underline}
.comm{display:grid;gap:8px;background:var(--surface-2);border-radius:12px;box-shadow:inset 0 0 0 1px var(--edge);padding:12px 14px}
.comm .k{font-size:12px;color:var(--muted);font-weight:600}
.comm .vals{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13.5px}
.comm .vals b{font-weight:700}
.partof{display:flex;flex-wrap:wrap;gap:8px}
.partof a{font-size:13px;font-weight:600;color:var(--accent-ink);text-decoration:none;background:var(--accent-soft);border-radius:9px;padding:6px 10px}
.partof a:hover{text-decoration:underline}
.mine{font-size:13px;font-weight:650;color:var(--good);display:flex;align-items:center;gap:6px}
.mine svg{width:15px;height:15px}
.fact .s .cal{color:var(--ink-2);font-weight:600}
footer .links{display:flex;gap:14px;flex-wrap:wrap}

@media (max-width:900px){.taste .qs{grid-template-columns:1fr}}
@media (max-width:560px){
  .home{gap:28px}
  .strip{grid-auto-columns:158px;gap:10px}
  .strip.colls{grid-auto-columns:232px}
  .daily{grid-template-columns:104px minmax(0,1fr);gap:14px;padding:12px;border-radius:16px}
  .daily h3{font-size:17px}
  .daily .dd{display:none}
  .daily .tags{display:none}
  .step{grid-template-columns:28px 64px minmax(0,1fr);gap:10px;padding:10px}
  .step .num{width:26px;height:26px;font-size:12px}
  .step .im{width:64px;height:64px}
  .step .sa{grid-column:2/-1;justify-content:flex-start}
  .taste{padding:16px}
  .collgrid{grid-template-columns:1fr}
}
.hero p a{color:var(--accent-ink);font-weight:600}

.badge.orig{background:var(--accent-fill);color:var(--on-accent)}
#themeBtn{width:38px;height:38px;border-radius:10px;border:0;background:transparent;display:inline-grid;place-items:center;cursor:pointer;color:var(--muted)}
#themeBtn:hover{background:var(--hover);color:var(--ink)}#themeBtn svg{width:18px;height:18px}
#themeBtn .i-sun{display:none}
:root[data-theme="dark"] #themeBtn .i-sun{display:block}:root[data-theme="dark"] #themeBtn .i-moon{display:none}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) #themeBtn .i-sun{display:block}:root:not([data-theme="light"]) #themeBtn .i-moon{display:none}}


/* ================= Explore v2: a browsing surface, not a text page ================= */
::selection{background:var(--accent-soft);color:var(--ink)}
body{padding-inline:32px}
/* container matches the player (--cw: 1120px, 1400px at >=1500px) so the logo and tabs never move between pages */
header.top{height:68px;margin-inline:-32px;padding-inline:32px;border-bottom:1px solid color-mix(in srgb,var(--edge) 75%,transparent)}
header.top .wrap{gap:14px}
nav.tabs{margin-left:10px}
header.top .search{flex:1 1 360px;max-width:520px;margin:0 0 0 auto;display:block}
header.top .search input{height:42px;border-radius:12px;font-size:14px;padding:0 44px 0 42px;box-shadow:inset 0 0 0 1px var(--edge-2)}
header.top .search input::placeholder{color:var(--muted)}
header.top .search input:focus{box-shadow:inset 0 0 0 1.5px var(--accent),var(--shadow)}
header.top .search svg{left:13px;top:11px}
.search .k{position:absolute;right:10px;top:10px;height:22px;min-width:22px;display:grid;place-items:center;font-family:var(--mono);font-size:11.5px;font-weight:600;border-radius:6px;box-shadow:inset 0 0 0 1px var(--edge-2);color:var(--muted);pointer-events:none}
.search input:focus~.k,.search input:not(:placeholder-shown)~.k{display:none}

/* intro band: one compact line of context + quick picks */
.hero{padding:26px 0 22px;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 32px}
.hero .intro{display:grid;gap:6px;min-width:0;flex:1 1 420px}
.hero h1{font-size:clamp(24px,2.1vw,32px);max-width:none;letter-spacing:-.024em;line-height:1.1}
.hero p{font-size:14px;max-width:64ch;line-height:1.5}
.moods{margin:0;gap:8px}
.mood{padding:0 13px 0 11px;height:36px;font-size:13px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);transition:background .15s,transform .08s,box-shadow .08s}
.mood:hover{background:var(--hover);box-shadow:inset 0 0 0 1px var(--edge-2),0 2px 0 var(--edge-2)}
.mood:active{transform:translateY(2px);box-shadow:inset 0 0 0 1px var(--edge)}
.mood svg{width:16px;height:16px;flex:none;color:var(--accent)}
.mood[aria-pressed="true"]{background:var(--ink);color:var(--ground);box-shadow:0 2px 0 color-mix(in srgb,var(--ink) 60%,var(--edge-2))}
.mood[aria-pressed="true"] svg{color:inherit}

/* home: spotlight (today's pick + your side panel), then shelves */
.home{gap:40px;padding:2px 0 44px;grid-template-columns:minmax(0,1fr)}
.row{grid-template-columns:minmax(0,1fr)}
.spot{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(360px,1fr);gap:28px;align-items:stretch}
.spot>.row{grid-template-rows:auto 1fr;align-content:stretch}
.spot>.row[hidden]{display:none}
.rowh{min-height:32px;align-items:center;flex-wrap:nowrap}
.rowh h2{white-space:nowrap}.rowh .sub{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rowh .linkbtn{white-space:nowrap}
@media (min-width:1500px){.spot{grid-template-columns:minmax(0,1.55fr) minmax(380px,1fr)}}
.show-sm{display:none}
.rowh h2{font-size:18px}
.daily{max-width:none;grid-template-columns:clamp(200px,21vw,320px) minmax(0,1fr);gap:clamp(18px,2.2vw,32px);padding:16px clamp(18px,2.2vw,32px) 16px 16px;border-radius:20px;box-shadow:inset 0 0 0 1px var(--edge),var(--shadow-sm);align-items:center}
.daily .dth{border:0;padding:0;cursor:pointer;width:100%;transition:transform .2s var(--ease)}
.daily .dth:hover{transform:scale(1.012)}
.daily .dth img{padding:12px}
.daily .dt{gap:10px}
.daily h3{font-size:clamp(22px,1.9vw,30px);letter-spacing:-.022em}
.daily .who{font-size:14px}
.daily .dx{margin:0;color:var(--ink-2);font-size:13.5px;line-height:1.55;max-width:62ch;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.daily .actions{margin-top:6px}
.daily .btn{height:40px;padding:0 18px;font-size:14px}
.spot>.side{grid-template-rows:none;align-content:start}.spot>.side:has(>.taste){grid-template-rows:auto 1fr}
.side .sub2{margin-top:8px}
.clist{display:grid;gap:10px;align-content:start;min-width:0}
.clist.scroll{max-height:334px;overflow:auto;scrollbar-width:thin;padding:2px 2px 4px;margin:-2px -2px 0}
.card.mini{display:grid;grid-template-columns:60px minmax(0,1fr) auto;grid-template-rows:none;align-items:center;gap:14px;padding:8px 16px 8px 8px;border-radius:14px;overflow:visible}
.card.mini .hit::after{border-radius:14px}
.card.mini .mth{width:60px;height:60px;background:var(--thumb-paper);border-radius:9px;overflow:hidden;box-shadow:inset 0 0 0 1px #E6E0D7;display:grid;place-items:center}
.card.mini .mth img{width:100%;height:100%;object-fit:contain;padding:3px}
.card.mini .mth .ph{font-size:22px}
.card.mini .body{padding:0;gap:3px}
.card.mini .t{-webkit-line-clamp:1;font-size:14px}
.card.mini .by{font-size:12.5px}
.card.mini .mp{display:flex;align-items:center;gap:10px;min-width:0}
.card.mini .mp .prog{flex:0 1 110px}
.card.mini .why{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card.mini .go{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:13px;color:var(--accent-ink);white-space:nowrap}
.card.mini .go svg{width:12px;height:12px}
.cmini{position:relative;display:grid;grid-template-columns:60px minmax(0,1fr);gap:14px;align-items:center;padding:8px 16px 8px 8px;border-radius:14px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);text-decoration:none;color:var(--ink);transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.cmini:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--edge-2),0 4px 0 var(--edge-2)}
.cmini .mth{width:60px;height:60px;background:var(--thumb-paper);border-radius:9px;overflow:hidden;box-shadow:inset 0 0 0 1px #E6E0D7;display:grid;place-items:center}
.cmini .mth img{width:100%;height:100%;object-fit:contain;padding:3px}
.cmini b{font-size:14px;font-weight:750;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmini .cm{font-size:12px;color:var(--muted);font-family:var(--mono)}
.side .nudge{font-size:13px;margin-top:4px}
.side .taste{max-width:none;padding:16px 18px 18px;gap:14px;align-self:stretch;align-content:start}
.side .taste .qs{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 18px}
.side .taste fieldset:first-child{grid-column:1/-1}
.side .taste legend{margin-bottom:6px}
.side .taste .chip{padding:6px 10px}

/* shelves: one card size, arrows + edge fade say "there's more" */
.shelf{position:relative;min-width:0}
.strip{grid-auto-columns:clamp(176px,13.4vw,230px);gap:16px;scrollbar-width:none;padding:3px 3px 10px}
.strip::-webkit-scrollbar{display:none}
.strip.colls{grid-auto-columns:clamp(250px,18vw,300px)}
.shelf.r .strip{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 64px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 64px),transparent)}
.shelf.l .strip{-webkit-mask-image:linear-gradient(90deg,transparent,#000 64px);mask-image:linear-gradient(90deg,transparent,#000 64px)}
.shelf.l.r .strip{-webkit-mask-image:linear-gradient(90deg,transparent,#000 64px,#000 calc(100% - 64px),transparent);mask-image:linear-gradient(90deg,transparent,#000 64px,#000 calc(100% - 64px),transparent)}
.arrows{display:inline-flex;gap:6px;margin-left:8px}
.sbtn{width:32px;height:32px;border-radius:10px;border:0;padding:0;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);display:grid;place-items:center;cursor:pointer;color:var(--ink);transition:background .15s,transform .08s,box-shadow .08s}
.sbtn:hover{background:var(--hover)}.sbtn:active{transform:translateY(2px);box-shadow:inset 0 0 0 1px var(--edge)}
.sbtn svg{width:16px;height:16px}
.sbtn:disabled{opacity:.35;cursor:default;box-shadow:inset 0 0 0 1px var(--edge);transform:none;background:var(--surface)}
.row.fits .arrows{display:none}
.card .tags{flex-wrap:nowrap;overflow:hidden}
.card .tag{white-space:nowrap}
.thumb img{padding:8px}

/* browse: results header with sort, sticky facet rail */
.layout{grid-template-columns:252px minmax(0,1fr);gap:36px;padding-bottom:64px}
.home:not([hidden])+.view+.layout{border-top:1px solid var(--edge);padding-top:28px}
aside.filters{top:84px;max-height:calc(100dvh - 100px);gap:20px;padding:2px 6px 16px 2px}
.fhead{display:flex;align-items:center;justify-content:space-between;min-height:32px}
.fhead h2{margin:0;font-size:18px;font-weight:800;letter-spacing:-.015em}
.fdone{display:none!important}
.resbar{margin-bottom:16px;min-height:40px;gap:10px 14px;flex-wrap:wrap;justify-content:flex-start}
.resbar .rl{display:flex;align-items:baseline;gap:12px}
.resbar .allh{margin:0;font-size:18px}
.resbar .count{font-size:13.5px}
.resbar .grow{flex:1}
.sortsel{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-weight:600;font-size:13px}
.sortsel select{width:auto;height:36px;padding:0 30px 0 12px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6862' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;background-size:15px}
.ftoggle svg{width:16px;height:16px}
.grid{grid-template-columns:repeat(auto-fill,minmax(204px,1fr));gap:18px}
.view .steps,.view .vhead{max-width:1040px}
/* collection page: intro pinned on the left, the path of steps filling the right */
.cgrid{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:40px;align-items:start}
.cgrid .cside{position:sticky;top:88px;max-width:none}
.cgrid .cside h1{font-size:clamp(28px,2.4vw,40px)}
.cgrid .cside .actions{flex-direction:column;align-items:stretch}.cgrid .cside .actions .btn{justify-content:center}
.kicker{font:600 11.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent-ink)}
.cgrid .steps{max-width:none;gap:14px;position:relative}
.cgrid .steps::before{content:"";position:absolute;left:27px;top:40px;bottom:40px;width:2px;background:var(--edge);border-radius:1px}
.cgrid .step{grid-template-columns:32px 132px minmax(0,1fr) auto;padding:14px 18px 14px 12px;position:relative}
.cgrid .step .num{background:var(--surface);position:relative;z-index:1}
.cgrid .step.done .num{background:var(--good);color:#fff;box-shadow:none}
.cgrid .step .im{width:132px;height:132px}
.step .ex{font-size:13px;color:var(--ink-2);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (max-width:1000px){.cgrid{grid-template-columns:1fr;gap:20px}.cgrid .cside{position:static}.cgrid .cside .actions{flex-direction:row;flex-wrap:wrap}.cgrid .step{grid-template-columns:32px 96px minmax(0,1fr) auto}.cgrid .step .im{width:96px;height:96px}}
@media (max-width:600px){.cgrid .step{grid-template-columns:28px 64px minmax(0,1fr)}.cgrid .step .im{width:64px;height:64px}.cgrid .steps::before{left:23px}}

@media (max-width:1180px){
  .spot{grid-template-columns:minmax(0,1fr)}
  .side .taste .qs{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr)}
  .side .taste fieldset:first-child{grid-column:auto}
  .clist.scroll{max-height:none;overflow:visible}
  .side .clist{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
}
@media (max-width:900px){
  body{padding-inline:20px}header.top{margin-inline:-20px;padding-inline:20px}
  .layout{grid-template-columns:minmax(0,1fr)}
  aside.filters.open{display:grid;position:fixed;left:0;right:0;bottom:0;top:auto;max-height:86dvh;overflow:auto;z-index:46;background:var(--surface);border-radius:22px 22px 0 0;padding:18px 18px calc(16px + env(safe-area-inset-bottom));box-shadow:var(--shadow-lg);animation:up .3s var(--ease)}
  aside.filters.open .fdone{display:flex!important;position:sticky;bottom:0;width:100%;height:46px;margin-top:4px}
  body.fopen{overflow:hidden}
  body.fopen::after{content:"";position:fixed;inset:0;background:rgba(8,10,14,.42);z-index:45;animation:fade .2s var(--ease)}
  .side .taste .qs{grid-template-columns:1fr}
  .home:not([hidden])+.view+.layout{padding-top:22px}
}
@media (max-width:700px){header.top .search{order:6;flex:1 1 100%;max-width:none;margin:0}header.top{height:auto;padding-block:10px}header.top .wrap{flex-wrap:wrap}.brand{margin-right:auto}.search .k{display:none}}
@media (max-width:560px){
  body{padding-inline:16px}
  header.top{margin-inline:-16px;padding-inline:16px;position:sticky;padding-block:8px 12px;transition:padding .18s}
  /* scrolled: one compact row (logo, search, theme) so the header can stay pinned without eating the screen */
  header.top.scrolled{padding-block:8px}
  header.top.scrolled nav.tabs{display:none}
  header.top.scrolled.peek nav.tabs{display:flex}
  header.top.scrolled .brand span{display:none}
  header.top.scrolled .brand{margin-right:0}
  header.top.scrolled .search{order:2;flex:1 1 auto;margin-top:0}
  header.top.scrolled #themeBtn{order:3}
  header.top .wrap{gap:4px 10px;min-height:0}
  nav.tabs{order:5;width:auto;margin-left:-8px;flex:1 1 100%}
  header.top .search{margin-top:6px}
  .hero{padding:16px 0 14px;gap:12px}
  .hero h1{font-size:23px}
  .hero p{font-size:13.5px}
  .moods{flex-wrap:nowrap;overflow-x:auto;margin-inline:-16px;padding:2px 16px 6px;scrollbar-width:none;width:calc(100% + 32px)}
  .moods::-webkit-scrollbar{display:none}
  .mood{flex:none;min-height:40px;height:40px}
  .home{gap:30px}
  .spot{gap:30px}
  .daily{grid-template-columns:112px minmax(0,1fr);gap:14px;padding:12px;border-radius:16px;align-items:start}
  .daily h3{font-size:18px}
  .daily .dx,.daily .tags{display:none}
  .daily .btn{height:38px;padding:0 14px}
  .side .clist{grid-template-columns:1fr}
  .card.mini{padding-right:12px;gap:12px}
  .strip{grid-auto-columns:156px;gap:12px;margin-inline:-16px;padding-inline:16px;scroll-padding-inline:16px}
  .strip.colls{grid-auto-columns:236px}
  .shelf.r .strip,.shelf.l .strip,.shelf.l.r .strip{-webkit-mask-image:none;mask-image:none}
  .arrows{display:none}
  .resbar{gap:10px}
  .sortsel span{display:none}
  .resbar .rl{flex:1 1 100%}.resbar .active:empty{display:none}.resbar .grow{display:none}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .card.mini .go{font-size:0;gap:0}.card.mini .go svg{width:14px;height:14px}
  .card.mini .meta{white-space:nowrap}
  .hide-sm{display:none}.show-sm{display:inline}
}
/* site footer: same markup and styles as Learn (build_learn.mjs) */
footer.foot{border-top:1px solid var(--edge);padding:22px 0 calc(34px + env(safe-area-inset-bottom));color:var(--muted);font-size:13px;display:grid;gap:10px}
footer.foot .links{display:flex;flex-wrap:wrap;gap:4px 18px}footer.foot a{color:var(--ink-2);text-decoration:none;font-weight:600}footer.foot a:hover{color:var(--ink)}footer.foot p{margin:0}
footer.foot p.src{font-size:12.5px;line-height:1.6}footer.foot p.src a{font-weight:500;text-decoration:underline;text-decoration-color:var(--edge-2);text-underline-offset:2px}
footer.foot #built:empty{display:none}
.sheet:focus{outline:none} /* the dialog container takes focus on open; its controls keep their rings */
/* ---- phone polish (mobile pass, Sep 2026) ---- */
@media (max-width:560px){
  body{padding-inline:max(16px,env(safe-area-inset-left)) max(16px,env(safe-area-inset-right))}
  header.top{padding-top:max(8px,env(safe-area-inset-top))}
  header.top .search input{padding-right:12px;font-size:16px}  /* 16px: iOS won't zoom the page on focus */
  nav.tabs a{min-height:40px;display:inline-flex;align-items:center}
  #themeBtn{width:40px;height:40px}
  /* intro: one short line on phone, and it steps aside once you search or filter */
  .hero{padding:14px 0 12px;gap:10px}
  .hero .intro{gap:4px}
  body.filtering .hero .intro{display:none}
  body.filtering .hero{padding-top:10px}
  /* quick-pick row scrolls sideways: fade the trailing edge so the cut-off reads as "more" */
  .moods{padding-right:44px;scroll-snap-type:x proximity;scroll-padding-inline:16px;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent)}
  .moods.end{-webkit-mask-image:none;mask-image:none}
  .mood{scroll-snap-align:start}
  /* filter sheet: comfortable targets, a grabber, a pinned title row */
  aside.filters.open{padding-top:0;gap:22px}
  aside.filters.open .fhead{position:sticky;top:0;z-index:2;background:var(--surface);margin-inline:-18px;padding:22px 18px 10px;min-height:0}
  aside.filters.open .fhead::before{content:"";position:absolute;left:50%;top:8px;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--edge-2)}
  aside.filters.open .fhead .linkbtn{min-height:40px;padding-inline:8px;margin-right:-8px}
  aside.filters.open .fdone{height:48px;margin-bottom:max(0px,env(safe-area-inset-bottom))}
  .filters .chips{gap:8px}
  .filters .chip,.taste .chip,.sheet .chip{min-height:40px;padding:0 13px;font-size:13.5px}
  .lvl button{min-height:38px}
  .tagsearch{height:42px;font-size:16px;border-radius:11px}
  .fgroup h2 button{min-height:32px}
  .sortsel select{height:40px}
  .ftoggle{height:40px}
  /* empty state: closer to the question, not floating mid-page */
  .empty{padding:36px 12px 24px}
  .empty b{color:var(--ink);font-size:15px}
  /* detail sheet: a real bottom sheet */
  .sheet{padding:26px 16px calc(28px + env(safe-area-inset-bottom));gap:14px;overscroll-behavior:contain}
  .sheet::before{content:"";position:absolute;left:50%;top:8px;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--edge-2)}
  .sheet .x{top:14px;right:12px;width:40px;height:40px}
  .sheet h2{font-size:22px}
  .sheet .big{max-width:min(100%,50dvh)}
  .sheet .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .sheet .actions .btn{height:44px;padding:0 10px;font-size:13.5px;min-width:0}
  .sheet .actions .btn.primary{grid-column:1/-1;height:48px;font-size:15px}
  .sheet .actions .btn:not(.primary):last-child:nth-child(even){grid-column:1/-1}
  .facts .fact:last-child:nth-child(odd){grid-column:1/-1}
  .sheet .tags{display:flex;flex-wrap:wrap;gap:8px}
  .xpb{min-height:40px}
  .partof a{display:inline-flex;align-items:center;min-height:40px;padding:0 12px}
  .sheet .linkbtn{display:inline-flex;align-items:center;min-height:40px}
  .like{gap:10px}
  footer.foot{padding-top:12px}footer.foot .links{gap:0 20px}footer.foot .links a{padding:10px 0}
}
@media (max-width:560px){
  /* nav matches Learn: text destinations, 40px targets */
  nav.tabs{margin-left:-10px}nav.tabs a{padding:0 10px}
  /* compact (scrolled) header, same rule as Learn: wordmark stays, tabs tuck away.
     Search is a tool, so it collapses to an icon and expands to its own row when tapped or holding a query. */
  header.top.scrolled .brand span{display:inline}
  header.top.scrolled .brand{margin-right:auto;min-height:40px}
  header.top.scrolled .search{order:2;flex:0 0 40px;width:40px;min-width:0;margin:0}
  header.top.scrolled .search input{height:40px;width:40px;padding:0;border-radius:10px;background:transparent;box-shadow:none;color:transparent;cursor:pointer}
  header.top.scrolled .search input::placeholder{color:transparent}
  header.top.scrolled .search input::-webkit-search-cancel-button{display:none}
  header.top.scrolled .search svg{left:10px;top:10px;color:var(--ink-2);pointer-events:none}
  header.top.scrolled .search:hover input{background:var(--hover)}
  header.top.scrolled .search:focus-within,header.top.scrolled .search:has(input:not(:placeholder-shown)){order:6;flex:1 1 100%;width:auto;margin-top:4px}
  header.top.scrolled .search:focus-within input,header.top.scrolled .search:has(input:not(:placeholder-shown)) input{width:100%;height:44px;padding:0 12px 0 42px;border-radius:12px;background:var(--surface);color:var(--ink);cursor:text;box-shadow:inset 0 0 0 1.5px var(--accent)}
  header.top.scrolled .search:has(input:not(:placeholder-shown)) input:not(:focus){box-shadow:inset 0 0 0 1px var(--edge-2)}
  header.top.scrolled .search:focus-within input::placeholder{color:var(--muted)}
  header.top.scrolled .search:focus-within input::-webkit-search-cancel-button{display:block}
  header.top.scrolled .search:focus-within svg,header.top.scrolled .search:has(input:not(:placeholder-shown)) svg{left:13px;top:12px;color:var(--muted)}
}
@media (max-width:400px){
  #rowDaily .rowh .sub{display:none}
  .daily{grid-template-columns:100px minmax(0,1fr);gap:12px}
  .daily .btn{padding:0 12px;gap:6px}
  .daily .actions{gap:8px}
}
@media (max-width:360px){
  .daily .actions .btn{flex:1 1 auto}
  .card .meta{gap:6px;font-size:11px;white-space:nowrap}
  .grid{gap:8px}
  .card .body{padding:8px 9px 9px}
  .sheet .actions .btn{font-size:12.5px}
}

body{font-size:15px}
nav.tabs a{font-size:14px}
.page{display:grid;gap:26px;padding:22px 0 64px;min-width:0}
.crumbs{font-size:13px;color:var(--muted);display:flex;gap:6px;flex-wrap:wrap}.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--ink);text-decoration:underline}
.shead{display:grid;gap:10px;max-width:820px}
.shead h1{margin:0;font-size:clamp(30px,4.4vw,46px);font-weight:800;letter-spacing:-.025em;line-height:1.05;text-wrap:balance}
.shead p{margin:0;color:var(--ink-2);font-size:16px;line-height:1.6;max-width:68ch}
.shead .aka{color:var(--muted);font-size:13.5px}
.sfacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-width:900px}
.sfact{background:var(--surface);border-radius:14px;box-shadow:inset 0 0 0 1px var(--edge);padding:12px 14px;display:grid;gap:2px}
.sfact .k{font-size:12px;color:var(--muted);font-weight:600}.sfact .v{font-size:20px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.sfact .s{font-size:12px;color:var(--muted)}
.sfact .s a{color:var(--accent-ink)}
.live{background:var(--surface);border-radius:14px;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--good) 45%,var(--edge));padding:12px 16px;display:grid;gap:4px;max-width:900px}
.live .k{font-size:12px;color:var(--good);font-weight:700}.live .vals{display:flex;flex-wrap:wrap;gap:4px 20px;font-size:14px}.live b{font-weight:800}
.sec{display:grid;gap:12px}.sec>h2{margin:0;font-size:20px;font-weight:800;letter-spacing:-.015em}
.sec>p.sub{margin:-6px 0 0;color:var(--muted);font-size:13.5px}
.rulechips{display:flex;flex-wrap:wrap;gap:6px}.rulechips a{text-decoration:none}
.plist{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.pz{background:var(--surface);border-radius:16px;box-shadow:inset 0 0 0 1px var(--edge);display:grid;grid-template-rows:auto 1fr;overflow:hidden;min-width:0}
.pz .thumb{margin:8px 8px 0;border-radius:10px}
.pz .body{padding:12px 13px 13px;display:grid;gap:7px;align-content:start}
.pz h3{margin:0;font-size:15px;font-weight:750;line-height:1.3}
.pz .d{color:var(--muted);font-size:12.5px}
.pz .lk{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.pz .lk a{font-size:12.5px;font-weight:650;text-decoration:none;color:var(--accent-ink);padding:5px 9px;border-radius:8px;background:var(--accent-soft)}
.pz .lk a.pl{background:var(--accent-fill);color:var(--on-accent);box-shadow:0 2px 0 var(--accent-edge)}
.pz .lk a:hover{text-decoration:underline}
.pz .ps{font-size:11.5px;font-weight:600;color:var(--ink-2)}.pz .ps:empty{display:none}
.claim{background:var(--surface-2);border-radius:16px;box-shadow:inset 0 0 0 1px var(--edge);padding:16px 18px;display:flex;gap:10px 18px;align-items:center;flex-wrap:wrap;max-width:900px;font-size:14px;color:var(--ink-2)}
.claim b{color:var(--ink)}
.slist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.srow{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;align-items:center;background:var(--surface);border-radius:14px;box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2);padding:8px 12px 8px 8px;text-decoration:none;color:var(--ink);transition:transform .15s var(--ease)}
.srow:hover{transform:translateY(-2px)}.srow:active{transform:translateY(1px);box-shadow:inset 0 0 0 1px var(--edge-2)}
.srow img{width:52px;height:52px;border-radius:8px;background:var(--thumb-paper);padding:3px;box-shadow:inset 0 0 0 1px var(--edge)}
.srow b{display:block;color:var(--ink);font-size:14.5px;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow span{display:block;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.sbar input{height:44px;border-radius:12px;border:0;background:var(--surface);box-shadow:inset 0 0 0 1px var(--edge-2);padding:0 14px;font:inherit;color:var(--ink);flex:1 1 260px;max-width:420px}
.sbar select{width:auto;height:44px}
.sbar .n{color:var(--muted);font-size:13px}
.contact{background:var(--surface);border-radius:20px;box-shadow:inset 0 0 0 1px var(--edge);padding:22px 24px;display:grid;gap:18px;max-width:820px;scroll-margin-top:80px}
.contact h2{margin:0;font-size:22px;font-weight:800;letter-spacing:-.015em}
.contact>p{margin:0;color:var(--ink-2);line-height:1.6;max-width:66ch}
.contact ul{margin:0;padding-left:20px;color:var(--ink-2);display:grid;gap:6px;line-height:1.5}
.cf{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cf label{display:grid;gap:6px;font-size:13px;font-weight:650;min-width:0}
.cf label.full{grid-column:1/-1}
.cf input,.cf select,.cf textarea{height:44px;border-radius:11px;border:0;box-shadow:inset 0 0 0 1px var(--edge-2);background:var(--surface);color:var(--ink);font:inherit;font-weight:400;padding:0 12px;width:100%}
.cf textarea{height:auto;min-height:130px;padding:10px 12px;resize:vertical;line-height:1.5}
.cf input:focus,.cf select:focus,.cf textarea:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--accent)}
.cf .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.cf .opt{font-weight:400;color:var(--muted)}
.cf .acts{grid-column:1/-1;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.cf .fine{font-size:12.5px;color:var(--muted);font-weight:400}
.msg{border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.5}
.msg.ok{background:var(--good-t);color:var(--ink)}.msg.err{background:var(--bad-t);color:var(--ink)}
.msg a{color:var(--accent-ink);font-weight:650}
@media (max-width:760px){.sfacts{grid-template-columns:repeat(2,minmax(0,1fr))}.cf{grid-template-columns:1fr}.contact{padding:18px}}
@media (max-width:560px){.plist{grid-template-columns:1fr}.slist{grid-template-columns:1fr}}
/* phone: pinned header whose tabs row tucks away while scrolling down and comes back on any scroll up; compact puzzle rows instead of one giant card per screen */
@media (max-width:560px){
  header.top{position:sticky;top:0}
  header.top.scrolled:not(.peek) nav.tabs{display:none}
  .page{gap:22px;padding:14px 0 44px}
  .crumbs a{display:inline-flex;align-items:center;min-height:32px}
  .shead{gap:8px}
  .shead h1{font-size:30px}
  .shead p{font-size:15px;line-height:1.55}
  .shead .actions{display:flex;gap:8px;margin-top:4px}
  .shead .actions .btn{height:44px;flex:1 1 auto}
  .shead .actions .btn:only-child{flex:0 0 auto}
  .claim .btn.sm{height:40px;padding:0 14px}
  .sfacts{gap:8px}
  .sfact{padding:11px 12px}
  .sfact .v{font-size:19px}
  .sec>h2{font-size:19px}
  .rulechips{gap:8px}
  .rulechips .chip{min-height:40px;padding:0 13px;font-size:13.5px}
  .plist{gap:10px}
  .pz{grid-template-columns:92px minmax(0,1fr);grid-template-rows:none;column-gap:12px;padding:10px;align-items:start}
  .pz .body{display:contents}
  .pz .thumb{margin:0;grid-row:1/span 4;grid-column:1;width:92px;aspect-ratio:1;align-self:start}
  .pz .thumb .badge{left:5px;top:5px;font-size:9.5px;padding:2px 6px}
  .pz .thumb .badge.sz{left:auto;right:5px;top:auto;bottom:5px}
  .pz h3,.pz .d,.pz .meta,.pz .ps{grid-column:2;min-width:0}
  .pz h3{font-size:15px;align-self:start}
  .pz .d{font-size:12.5px}
  .pz .meta{gap:8px;font-size:11.5px;flex-wrap:wrap}
  .pz .lk{grid-column:1/-1;margin-top:10px;gap:8px}
  .pz .lk a{min-height:40px;display:inline-flex;align-items:center;padding:0 12px;border-radius:10px;font-size:13px}
  .sbar{gap:8px}
  .sbar input{flex:1 1 100%;max-width:none;font-size:16px}
  .sbar select{height:40px;font-size:13.5px}
  .srow{min-height:64px}
  .contact{padding:18px 16px;border-radius:18px;scroll-margin-top:16px}
  .contact h2{font-size:20px}
  .cf input,.cf select,.cf textarea{font-size:16px}
  .cf .acts .btn{height:46px;padding:0 22px}
  .claim{padding:14px 16px}
}
.sbar select,.cf select{appearance:none;-webkit-appearance:none;padding-right:32px;cursor:pointer;background-repeat:no-repeat;background-position:right 9px center;background-size:15px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6862' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E")}
.sbar select{width:auto;font-weight:600;box-shadow:inset 0 0 0 1px var(--edge),0 2px 0 var(--edge-2)}
