/* mobile app shell */
.mnav{display:none}
@media(max-width:760px){
 :root{--top:52px}
 body{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
 header.top{background:rgba(0,0,0,.86);backdrop-filter:saturate(1.4) blur(16px);-webkit-backdrop-filter:saturate(1.4) blur(16px)}
 header.top .top-in{display:flex;align-items:center;gap:10px;height:52px;padding:0 14px;padding-top:env(safe-area-inset-top);flex-wrap:nowrap}
 header.top .tnav{display:none!important}
 header.top .brand span{font-size:0}
 header.top .brand span::after{content:"Library";font:600 17px var(--serif);letter-spacing:-.01em}
 header.top .brand svg{width:22px;height:22px}
 header.top .ws-top{margin-left:auto;font:600 11px var(--mono)!important;padding:8px 11px!important;border-radius:999px!important;white-space:nowrap;background:#ecebe7!important;color:#000!important;border:0!important}
 header.top .ws-top .full{display:none}
 header.top .prog{padding:6px 9px!important;font-size:11px!important;border-radius:999px!important}
 header.top .prog .prog-l{display:none}
 .mnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;justify-content:space-around;align-items:stretch;
  padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:rgba(8,8,9,.88);border-top:1px solid rgba(255,255,255,.08);
  backdrop-filter:saturate(1.4) blur(18px);-webkit-backdrop-filter:saturate(1.4) blur(18px)}
 .mnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 0 4px;text-decoration:none;color:#6e6b66;
  font:600 10px var(--mono);letter-spacing:.06em;border-radius:12px;-webkit-tap-highlight-color:transparent;transition:color .2s}
 .mnav a svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
 .mnav a[aria-current]{color:#ecebe7}
 .mnav a[aria-current] svg{filter:drop-shadow(0 0 8px rgba(255,255,255,.35))}
 .mnav a:active{transform:scale(.94)}
 .cont{display:flex;align-items:center;gap:14px;margin:18px 0 6px;padding:16px;border:1px solid rgba(255,255,255,.12);border-radius:18px;
  background:linear-gradient(135deg,#111113,#0a0a0b);text-decoration:none}
 .cont i{flex:0 0 44px;height:44px;border-radius:12px;background:#ecebe7;color:#000;display:flex;align-items:center;justify-content:center;font:600 13px var(--mono);font-style:normal}
 .cont b{display:block;font:600 11px var(--mono);letter-spacing:.14em;color:#8d8a84}
 .cont span{display:block;font:600 16px var(--serif);color:#ecebe7;line-height:1.3;margin-top:2px}
 .cont em{margin-left:auto;font-style:normal;color:#8d8a84;font-size:20px}
 h1{font-size:34px!important;line-height:1.08!important}
 .w{padding:0 16px}
}
@media(max-width:760px){a,button{-webkit-tap-highlight-color:transparent}}
/* library home */
.lib-hero{padding:34px 0 8px}
.lib-hero h1{font:400 clamp(36px,6vw,58px)/1.04 var(--serif);letter-spacing:-.02em;margin:10px 0 0}
.lib-hero .lead{color:var(--body);max-width:620px;margin-top:12px;font-size:17px}
.lib-search{margin-top:20px;max-width:620px}
.lib-search input{width:100%;height:52px;border-radius:14px;border:1px solid rgba(255,255,255,.14);background:#0b0b0c;color:#ecebe7;font:400 16px var(--sans);padding:0 16px}
.lib-search input:focus{outline:none;border-color:#d9d9dc}
.cats{display:grid;grid-template-columns:1fr;gap:12px;margin:26px 0 10px}
@media(min-width:700px){.cats{grid-template-columns:repeat(3,1fr)}}
.cat{display:block;text-decoration:none;border:1px solid rgba(255,255,255,.09);border-radius:16px;padding:18px;background:linear-gradient(180deg,#0e0e10,#09090a);transition:border-color .2s,transform .2s}
.cat:active,.cat:hover{border-color:rgba(255,255,255,.28);transform:translateY(-2px)}
.cat b{font:600 11px var(--mono);color:#6e6b66;letter-spacing:.1em}
.cat h3{font:600 20px/1.2 var(--serif);color:#ecebe7;margin:8px 0 6px}
.cat p{color:#8d8a84;font-size:14px;line-height:1.5}
.cat span{display:inline-block;margin-top:12px;font:600 11px var(--mono);color:#cfccc5;border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:5px 10px}
/* desktop: wider layout + ambient background so wide screens don't look like a black panel */
@media(min-width:1400px){.w{max-width:1360px}.w.narrow{max-width:960px}}
@media(min-width:1900px){.w{max-width:1560px}}
html{background:#000}
body{background:
 radial-gradient(1200px 700px at 12% 8%,rgba(255,255,255,.06),transparent 60%),
 radial-gradient(1100px 800px at 92% 30%,rgba(255,255,255,.045),transparent 62%),
 radial-gradient(900px 700px at 50% 100%,rgba(255,255,255,.035),transparent 65%),
 #050506;background-attachment:fixed}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
 background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
 background-size:64px 64px;-webkit-mask:radial-gradient(ellipse 85% 75% at 50% 45%,#000 30%,transparent 100%);mask:radial-gradient(ellipse 85% 75% at 50% 45%,#000 30%,transparent 100%)}
@media(min-width:1400px){header.top .top-in{max-width:1360px}}
@media(min-width:1900px){header.top .top-in{max-width:1560px}}
