:root{
  --bg:#f6f7f9; --panel:#ffffff; --ink:#15202b; --muted:#5b6673; --line:#dde2e8;
  --accent:#1f5fbf; --accent-ink:#ffffff; --tag:#e9eef6;
  --serif:"Source Serif 4",Georgia,serif; --sans:"IBM Plex Sans",system-ui,sans-serif;
}
[data-theme="dark"]{
  --bg:#12161c; --panel:#1a2029; --ink:#e7ecf2; --muted:#9aa6b4; --line:#2b3441;
  --accent:#6ea8ff; --accent-ink:#0d1520; --tag:#243044;
}
*{box-sizing:border-box}
html{scroll-padding-top:5rem}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--sans);
  padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
.top,.bar,main{max-width:64rem;margin:0 auto;padding-left:1.25rem;padding-right:1.25rem}
.top{text-align:center;padding-top:2rem;padding-bottom:1rem}
h1{font:600 clamp(1.8rem,4vw,2.6rem)/1.15 var(--serif);margin:0}
.brand p{margin:.25rem 0 0;color:var(--muted)}
.tabs{position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:1px solid var(--line);
  display:flex;gap:.25rem;overflow-x:auto;padding:0 1.25rem;scrollbar-width:thin}
.tabs button:first-child{margin-left:auto}
.tabs button:last-child{margin-right:auto}
.tabs button{background:none;border:0;border-bottom:3px solid transparent;color:var(--muted);
  font:500 .95rem var(--sans);padding:.85rem .9rem;cursor:pointer;white-space:nowrap}
.tabs button:hover{color:var(--ink)}
.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.bar{padding-top:1.25rem}
#search{display:block;margin:0 auto;width:100%;max-width:26rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:6px;
  background:var(--panel);color:var(--ink);font:inherit}
main{padding-top:1rem;padding-bottom:4rem;outline:none}
main h2{font:600 1.6rem/1.2 var(--serif);margin:1.5rem 0 .25rem}
main h3{font:600 1.25rem/1.3 var(--serif);margin:2rem 0 .25rem;padding-top:1rem;border-top:1px solid var(--line)}
.intro{color:var(--muted);margin:0 0 1rem;max-width:60ch}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:1rem}
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:1.1rem;
  display:flex;flex-direction:column;gap:.5rem}
.card h4{font:600 1.05rem/1.3 var(--sans);margin:0}
.card .meta{color:var(--muted);font-size:.85rem}
.card p{margin:0;font-size:.95rem}
.tags{display:flex;flex-wrap:wrap;gap:.35rem}
.tags span{background:var(--tag);border-radius:4px;padding:.1rem .5rem;font-size:.78rem}
.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:auto;padding-top:.5rem}
.btn,.ghost{font:500 .88rem var(--sans);border-radius:6px;padding:.45rem .8rem;cursor:pointer;
  border:1px solid var(--line);background:var(--panel);color:var(--ink);text-decoration:none;display:inline-block}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn:hover,.ghost:hover{border-color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.empty{color:var(--muted);padding:2rem 0}
dialog{width:min(70rem,96vw);height:90vh;padding:0;border:1px solid var(--line);border-radius:10px;
  background:var(--panel);color:var(--ink)}
dialog::backdrop{background:rgba(0,0,0,.55)}
dialog[open]{display:flex;flex-direction:column}
.viewer-head{display:flex;align-items:center;gap:.5rem;padding:.7rem 1rem;border-bottom:1px solid var(--line);flex-wrap:wrap}
.spacer{flex:1}
#viewer-body{flex:1;min-height:0;overflow:auto}
#viewer-body iframe{width:100%;height:100%;border:0}
#viewer-body pre{margin:0;padding:1rem;font-size:.85rem;line-height:1.5;min-height:100%}
#viewer-body pre code{background:none;padding:0;font-family:ui-monospace,Menlo,Consolas,monospace}
.note{padding:1rem;color:var(--muted)}
@media (max-width:600px){.top{padding-top:1.25rem}#theme{padding:.4rem .6rem}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
