:root{
  --bg:#EFF1ED; --surface:#FAFBF8; --surface2:#E6EAE3;
  --ink:#17201C; --ink2:#455049; --muted:#6E7A73;
  --line:#D4D9CF; --line-strong:#BDC4B8;
  --accent:#1F5D50; --accent-ink:#0F3A31; --accent-soft:#DCE8E3;
  --brass:#9C7118; --brass-soft:#EFE4CB;
  --alert:#9E4227; --alert-soft:#F3E2DB;
  --shadow:0 1px 2px rgba(23,32,28,.06), 0 8px 24px -18px rgba(23,32,28,.35);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0E1411; --surface:#161E1A; --surface2:#1E2823;
    --ink:#E4EAE4; --ink2:#BAC6BF; --muted:#8B9A92;
    --line:#28322C; --line-strong:#39443D;
    --accent:#62B79F; --accent-ink:#8FD3BF; --accent-soft:#16302A;
    --brass:#D6A94D; --brass-soft:#2E2617;
    --alert:#E28B72; --alert-soft:#2E1D18;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px -20px rgba(0,0,0,.9);
  }
}
:root[data-theme="dark"]{
  --bg:#0E1411; --surface:#161E1A; --surface2:#1E2823;
  --ink:#E4EAE4; --ink2:#BAC6BF; --muted:#8B9A92;
  --line:#28322C; --line-strong:#39443D;
  --accent:#62B79F; --accent-ink:#8FD3BF; --accent-soft:#16302A;
  --brass:#D6A94D; --brass-soft:#2E2617;
  --alert:#E28B72; --alert-soft:#2E1D18;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px -20px rgba(0,0,0,.9);
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:"Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  font-size:15px; line-height:1.55; -webkit-font-smoothing:antialiased;
}
.wrap{max-width:1000px;margin:0 auto;padding:0 18px 72px}
a{color:var(--accent-ink);text-underline-offset:2px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
.mono{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums}

/* ---- masthead ---- */
header.top{padding:34px 0 20px;border-bottom:2px solid var(--ink);}
.kicker{font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
h1{font-family:"Zilla Slab",Georgia,serif;font-weight:700;font-size:clamp(2.1rem,7vw,3rem);line-height:1.02;margin:.24em 0 .18em;letter-spacing:-.015em;text-wrap:balance}
.sub{color:var(--ink2);max-width:60ch;margin:0;font-size:.95rem}
.legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:16px;font-size:.78rem;color:var(--muted)}
.legend b{color:var(--ink2);font-weight:600}

/* ---- sticky nav ---- */
nav.rail{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line);margin-bottom:6px}
.rail-inner{display:flex;gap:6px;overflow-x:auto;padding:9px 0;scrollbar-width:none}
.rail-inner::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink2);
  border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:500;cursor:pointer;white-space:nowrap;
  font-family:"IBM Plex Mono",monospace;transition:background .12s,border-color .12s,color .12s}
.chip:hover{border-color:var(--accent)}
.chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--bg)}
.filters{display:flex;gap:6px;overflow-x:auto;padding:0 0 10px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}

/* ---- action panel ---- */
.urgent{border:1px solid var(--alert);background:var(--alert-soft);border-radius:2px;padding:14px 16px;margin:18px 0 6px}
.urgent h2{font-family:"Zilla Slab",serif;font-size:1rem;margin:0 0 8px;color:var(--alert);letter-spacing:.01em}
.urgent ul{margin:0;padding-left:1.1em;font-size:.86rem;color:var(--ink2)}
.urgent li{margin-bottom:5px}
.urgent li b{color:var(--ink)}

/* ---- weekend section ---- */
section.we{margin-top:38px;scroll-margin-top:104px}
.we-head{display:flex;align-items:flex-start;gap:14px;border-top:2px solid var(--ink);padding-top:12px}
.we-num{font-family:"Zilla Slab",serif;font-weight:700;font-size:2.4rem;line-height:.9;color:var(--accent);flex:0 0 auto;font-variant-numeric:tabular-nums}
.we-meta{flex:1 1 auto;min-width:0}
.we-dates{font-family:"Zilla Slab",serif;font-weight:600;font-size:1.28rem;margin:0;letter-spacing:-.01em}
.we-span{font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);display:block;margin-top:2px}
.we-lede{margin:8px 0 0;font-size:.9rem;color:var(--ink2);max-width:64ch}

/* ---- cards ---- */
.grid{display:grid;gap:12px;margin-top:16px}
@media (min-width:760px){.grid{grid-template-columns:1fr 1fr}}
article.card{background:var(--surface);border:1px solid var(--line);border-radius:3px;padding:14px 15px 12px;
  display:flex;flex-direction:column;gap:9px;box-shadow:var(--shadow);position:relative}
article.card.pick{border-color:var(--accent)}
article.card.pick::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:3px;background:var(--accent);border-radius:3px 0 0 3px}
.card-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tag{font-family:"IBM Plex Mono",monospace;font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;
  padding:3px 7px;border-radius:2px;background:var(--surface2);color:var(--ink2);font-weight:500}
.tag.expo{background:var(--accent-soft);color:var(--accent-ink)}
.tag.theatre{background:var(--brass-soft);color:var(--brass)}
.tag.concert{background:var(--surface2);color:var(--ink2)}
.tag.hp{background:var(--alert-soft);color:var(--alert)}
.pickmark{font-family:"IBM Plex Mono",monospace;font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);font-weight:500;margin-left:auto}
.card h3{font-family:"Zilla Slab",serif;font-weight:600;font-size:1.04rem;line-height:1.25;margin:0;letter-spacing:-.005em;text-wrap:balance}
.card h3 a{color:inherit;text-decoration:none;background-image:linear-gradient(var(--line-strong),var(--line-strong));background-size:100% 1px;background-repeat:no-repeat;background-position:0 100%}
.card h3 a:hover{background-image:linear-gradient(var(--accent),var(--accent))}
.facts{display:flex;flex-direction:column;gap:3px;font-size:.79rem;color:var(--ink2)}
.facts .row{display:flex;gap:8px}
.facts .k{flex:0 0 66px;color:var(--muted);font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.09em;text-transform:uppercase;padding-top:2px}
.facts .v{flex:1 1 auto;min-width:0}
.why{font-size:.83rem;color:var(--ink2);border-left:2px solid var(--line-strong);padding-left:9px;margin:0}
.card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:9px;border-top:1px dashed var(--line)}
.src{font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.06em;color:var(--muted);text-decoration:none}
.src:hover{color:var(--accent-ink)}

/* ---- rating ---- */
.rate{display:flex;align-items:center;gap:1px}
.rate button{background:none;border:0;padding:2px 1px;cursor:pointer;line-height:1;color:var(--line-strong);
  font-size:1.05rem;transition:color .1s,transform .1s}
.rate button:hover{transform:translateY(-1px)}
.rate button.on{color:var(--brass)}
.rate .clear{font-family:"IBM Plex Mono",monospace;font-size:.6rem;color:var(--muted);margin-left:6px;letter-spacing:.06em}

/* ---- status pill ---- */
.status{position:fixed;left:50%;transform:translateX(-50%);bottom:16px;z-index:60;
  background:var(--ink);color:var(--bg);font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.06em;
  padding:7px 14px;border-radius:999px;opacity:0;pointer-events:none;transition:opacity .2s}
.status.show{opacity:1}

footer.end{margin-top:52px;padding-top:18px;border-top:1px solid var(--line);font-size:.78rem;color:var(--muted)}
footer.end p{margin:0 0 7px;max-width:70ch}
.empty{padding:26px 2px;color:var(--muted);font-size:.86rem}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
