:root,
[data-theme="matcha"] { --bg:#f7f8f5;--surface:#fff;--surface-2:#edf1eb;--ink:#2f3e46;--muted:#66756f;--accent:#678b72;--accent-2:#cad2c5;--line:#dce3db;--danger:#a54742;--shadow:0 18px 55px #2f3e4612;--cover-ink:#fff }
[data-theme="vintage"] { --bg:#f4eedc;--surface:#fffaf0;--surface-2:#e9ddc4;--ink:#2c221e;--muted:#74655d;--accent:#8b6748;--accent-2:#c5a880;--line:#dfd1b7;--danger:#5c2c28;--shadow:0 18px 55px #2c221e1c }
[data-theme="midnight"] { --bg:#1a1614;--surface:#251f1c;--surface-2:#312a25;--ink:#eae3d2;--muted:#b7aa99;--accent:#d4a373;--accent-2:#a3b18a;--line:#463b34;--danger:#e27f77;--shadow:0 18px 60px #0007 }
[data-theme="terracotta"] { --bg:#faf6f0;--surface:#fffdf9;--surface-2:#f1e9df;--ink:#3d2c2e;--muted:#786766;--accent:#b85f47;--accent-2:#b4aa86;--line:#e8d9cd;--danger:#963f39;--shadow:0 18px 55px #3d2c2e14 }
[data-theme="nordic"] { --bg:#f0f4f8;--surface:#fff;--surface-2:#e4edf4;--ink:#102a43;--muted:#627d98;--accent:#334e68;--accent-2:#bc6c25;--line:#d3e0ea;--danger:#a33a36;--shadow:0 18px 55px #102a4312 }
[data-theme="lavender"] { --bg:#f6f4f9;--surface:#fff;--surface-2:#ebe6ef;--ink:#2b1b30;--muted:#786c7d;--accent:#806f7d;--accent-2:#c9ada7;--line:#dfd8e3;--danger:#9c455d;--shadow:0 18px 55px #2b1b3012 }
[data-theme="anthropologist"] { --bg:#faf3e0;--surface:#fffaf0;--surface-2:#eee3ca;--ink:#3e2723;--muted:#78615a;--accent:#00695c;--accent-2:#b0a18f;--line:#dfd1b7;--danger:#983f32;--shadow:0 18px 55px #3e272318 }
[data-theme="autumn"] { --bg:#fdf6ec;--surface:#fffdfa;--surface-2:#f2e5d5;--ink:#362b28;--muted:#796a62;--accent:#b65b2d;--accent-2:#7f977f;--line:#eadaca;--danger:#973e37;--shadow:0 18px 55px #362b2815 }
[data-theme="monolith"] { --bg:#121212;--surface:#1d1d1f;--surface-2:#29292d;--ink:#e0e0e0;--muted:#9e9e9e;--accent:#8ab4f8;--accent-2:#5f6368;--line:#36363b;--danger:#ff8a86;--shadow:0 20px 70px #0009;--cover-ink:#101216 }
[data-theme="seaside"] { --bg:#f2f6f7;--surface:#fff;--surface-2:#e4edef;--ink:#223843;--muted:#657d87;--accent:#597a8c;--accent-2:#d9c5b2;--line:#d4e1e5;--danger:#a34545;--shadow:0 18px 55px #22384312 }

* { box-sizing:border-box }
html { scroll-behavior:smooth }
body { margin:0;min-width:320px;min-height:100vh;color:var(--ink);background:var(--bg);font:15px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;transition:background-color .25s,color .25s }
button,input,select,textarea { font:inherit }
button,select { cursor:pointer }
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible { outline:3px solid color-mix(in srgb,var(--accent) 32%,transparent);outline-offset:2px }
.topbar { position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:76px;padding:12px max(20px,calc((100vw - 1180px)/2));border-bottom:1px solid color-mix(in srgb,var(--line) 85%,transparent);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(18px) }
.brand { display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none }
.brand-mark { display:grid;place-items:center;width:42px;height:42px;border-radius:13px;color:var(--cover-ink);background:var(--accent);font:700 23px Georgia,serif;box-shadow:0 8px 22px color-mix(in srgb,var(--accent) 24%,transparent) }
.brand strong,.brand small { display:block }.brand strong { font:700 20px Georgia,serif }.brand small { color:var(--muted);font-size:10px;letter-spacing:.04em }
.header-actions { display:flex;align-items:center;gap:10px }.theme-control { display:flex;align-items:center;gap:8px }.theme-control>span { color:var(--muted);font-size:11px;font-weight:700 }
select,input,textarea { width:100%;border:1px solid var(--line);border-radius:11px;color:var(--ink);background:var(--surface);transition:border-color .15s,box-shadow .15s }
select,input { min-height:42px;padding:0 12px }.theme-control select { width:auto;min-width:150px;min-height:40px }
textarea { padding:10px 12px;resize:vertical }
.button { display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:41px;padding:0 14px;border:1px solid transparent;border-radius:11px;color:inherit;background:none;font-size:12px;font-weight:750;transition:transform .15s,background-color .15s,border-color .15s }
.button:hover { transform:translateY(-1px) }.button.primary { color:var(--cover-ink);background:var(--accent);box-shadow:0 9px 22px color-mix(in srgb,var(--accent) 23%,transparent) }.button.quiet { border-color:var(--line);background:var(--surface) }.button.danger { margin-right:auto;color:var(--danger);border-color:color-mix(in srgb,var(--danger) 32%,var(--line));background:color-mix(in srgb,var(--danger) 8%,var(--surface)) }
main { width:min(1180px,calc(100% - 36px));margin:auto;padding:52px 0 74px }
.hero { display:grid;grid-template-columns:minmax(0,1.4fr) minmax(360px,.8fr);gap:55px;align-items:end;padding:45px 0 52px;border-bottom:1px solid var(--line) }
.eyebrow { margin:0 0 8px;color:var(--accent);font-size:10px;font-weight:850;letter-spacing:.16em;text-transform:uppercase }
.hero h1 { margin:0;font:700 clamp(48px,7vw,82px)/.94 Georgia,"Times New Roman",serif;letter-spacing:-.048em }.hero h1 em { color:var(--accent);font-weight:400 }.hero-copy>p:last-child { max-width:610px;margin:24px 0 0;color:var(--muted);font-size:17px }
.stats { display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:20px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden }.stats article { min-width:0;padding:20px;border-right:1px solid var(--line) }.stats article:last-child { border:0 }.stats strong,.stats span { display:block }.stats strong { overflow:hidden;font:700 28px Georgia,serif;text-overflow:ellipsis;white-space:nowrap }.stats span { margin-top:5px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase }
.toolbar { display:flex;justify-content:space-between;gap:15px;margin:31px 0 14px }.search { position:relative;width:min(520px,100%) }.search span { position:absolute;left:14px;top:7px;color:var(--muted);font-size:23px }.search input { padding-left:43px }.library-actions { display:flex;gap:8px }
.filters { display:flex;gap:7px;padding-bottom:9px;overflow:auto }.filter { flex:0 0 auto;min-height:34px;padding:0 12px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:var(--surface);font-size:10px;font-weight:800 }.filter.active { color:var(--cover-ink);border-color:var(--accent);background:var(--accent) }
.shelf-heading { display:flex;align-items:end;justify-content:space-between;gap:20px;margin:36px 0 17px }.shelf-heading h2 { margin:0;font:700 28px Georgia,serif }.shelf-heading>p { margin:0;color:var(--muted);font-size:11px }
.books-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px }.book-card { position:relative;display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden;transition:transform .18s,border-color .18s }.book-card:hover { transform:translateY(-4px);border-color:color-mix(in srgb,var(--accent) 52%,var(--line)) }.book-open { display:flex;flex:1;flex-direction:column;padding:0;border:0;color:inherit;background:none;text-align:left }.book-cover { position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:190px;padding:17px;color:white;overflow:hidden }.book-cover:after { content:"";position:absolute;right:-32px;bottom:-44px;width:135px;height:135px;border:1px solid #fff5;border-radius:50%;box-shadow:0 0 0 22px #fff1,0 0 0 45px #fff1 }.cover--sage { background:linear-gradient(145deg,#405d50,#84a98c) }.cover--amber { background:linear-gradient(145deg,#7d4025,#d4a373) }.cover--burgundy { background:linear-gradient(145deg,#3e2020,#8b4842) }.cover--navy { background:linear-gradient(145deg,#102a43,#486581) }.cover--plum { background:linear-gradient(145deg,#2b1b30,#806f7d) }.cover--teal { background:linear-gradient(145deg,#004d45,#3b8f83) }.book-cover .badge,.detail-cover .badge { align-self:flex-start;position:relative;z-index:1;padding:5px 8px;border:1px solid #fff4;border-radius:999px;background:#0002;font-size:9px;font-weight:850;letter-spacing:.08em;text-transform:uppercase }.book-cover h3 { position:relative;z-index:1;margin:0;font:700 23px/1.02 Georgia,serif;letter-spacing:-.02em }.book-cover p { position:relative;z-index:1;margin:6px 0 0;color:#fffbd;font-size:11px }.book-note { display:flex;flex:1;flex-direction:column;padding:16px }.book-note>p { display:-webkit-box;min-height:63px;margin:0;color:var(--muted);font-size:12px;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden }.book-meta { display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:14px;border-top:1px solid var(--line) }.stars { color:#c47a2b;font-size:11px;letter-spacing:1px }.book-meta span:last-child { color:var(--accent);font-size:10px;font-weight:800 }
.empty-state { padding:70px 20px;border:1px dashed var(--line);border-radius:20px;text-align:center;background:var(--surface) }.empty-state>span { display:grid;place-items:center;width:55px;height:55px;margin:auto;border-radius:50%;color:var(--accent);background:var(--surface-2);font-size:30px }.empty-state h2 { margin:13px 0 4px;font:700 23px Georgia,serif }.empty-state p { margin:0 0 18px;color:var(--muted) }
footer { display:flex;align-items:center;justify-content:space-between;gap:20px;padding:25px max(20px,calc((100vw - 1180px)/2));border-top:1px solid var(--line);color:var(--muted);background:var(--surface);font-size:11px } footer>span { color:var(--ink);font:700 17px Georgia,serif } footer p { margin:0 }
.dialog { width:min(680px,calc(100% - 28px));max-height:90vh;padding:0;border:1px solid var(--line);border-radius:22px;color:var(--ink);background:var(--surface);box-shadow:0 30px 100px #0006;overflow:auto }.dialog::backdrop { background:#151915a6;backdrop-filter:blur(5px) }.dialog-close { position:absolute;top:14px;right:14px;z-index:2;display:grid;place-items:center;width:34px;height:34px;border:1px solid #fff4;border-radius:50%;color:white;background:#0003;font-size:20px }.detail-cover { min-height:235px;padding:28px;color:white;background:linear-gradient(145deg,#405d50,#84a98c) }.detail-cover>p { margin:8px 0 0;color:#fffc;font-size:12px }.detail-cover h2 { max-width:560px;margin:45px 0 0;font:700 clamp(31px,6vw,48px)/.98 Georgia,serif;letter-spacing:-.035em }.rating { margin-top:14px;color:#ffd98a;letter-spacing:2px }.detail-body { display:grid;gap:22px;padding:26px }.detail-body section>h3 { margin:0 0 9px;font:700 18px Georgia,serif }.idea,.audience { padding:17px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2) }.idea>p:last-child,.audience>p:last-child { margin:0 }.takeaways { display:grid;gap:9px;margin:0;padding:0;list-style:none }.takeaways li { position:relative;padding-left:21px;color:var(--muted) }.takeaways li:before { content:"✓";position:absolute;left:0;color:var(--accent);font-weight:900 }.detail-body blockquote { margin:0;padding:4px 0 4px 18px;border-left:3px solid var(--accent);color:var(--muted);font:italic 17px/1.5 Georgia,serif }.detail-body blockquote p { margin:0 }.detail-body blockquote footer { display:block;margin-top:7px;padding:0;border:0;background:none;font:700 9px Inter,sans-serif;text-transform:uppercase;letter-spacing:.1em }.dialog-actions { display:flex;justify-content:flex-end;gap:8px;padding:15px 24px;border-top:1px solid var(--line);background:var(--surface-2) }
.form-dialog { padding:27px }.form-dialog .dialog-close { color:var(--ink);border-color:var(--line);background:var(--surface-2) }.dialog-intro h2 { margin:0;font:700 29px Georgia,serif }.dialog-intro>p:last-child { margin:5px 0 22px;color:var(--muted) }.form-dialog form,.form-dialog label { display:grid;gap:7px }.form-dialog form { gap:15px }.form-dialog label { color:var(--muted);font-size:10px;font-weight:850;letter-spacing:.06em;text-transform:uppercase }.form-grid { display:grid;grid-template-columns:1fr 1fr;gap:13px }.form-dialog .dialog-actions { margin:5px -27px -27px;padding:15px 27px }
.toast { position:fixed;right:20px;bottom:20px;z-index:50;max-width:min(390px,calc(100vw - 40px));padding:12px 15px;border:1px solid var(--line);border-radius:11px;color:var(--ink);background:var(--surface);box-shadow:var(--shadow);opacity:0;transform:translateY(14px);pointer-events:none;transition:.18s }.toast.show { opacity:1;transform:translateY(0) }
[hidden] { display:none!important }
@media(max-width:980px){.hero{grid-template-columns:1fr;gap:34px}.books-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:740px){.topbar{align-items:flex-start}.theme-control>span{display:none}.theme-control select{min-width:0;width:120px}.hero{padding-top:25px}.books-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{align-items:stretch;flex-direction:column}.search{width:100%}.library-actions{justify-content:flex-end}.form-grid{grid-template-columns:1fr}}
@media(max-width:500px){.brand small,.header-actions .primary span{display:none}.topbar{padding:10px 14px}.header-actions{gap:6px}.theme-control select{width:96px}.button{padding:0 11px}main{width:calc(100% - 24px);padding-top:25px}.hero h1{font-size:45px}.stats article{padding:14px 10px}.stats strong{font-size:22px}.stats span{font-size:8px}.books-grid{grid-template-columns:1fr}.library-actions .button{flex:1}.library-actions{width:100%}.shelf-heading{align-items:flex-start;flex-direction:column;gap:3px}footer{align-items:flex-start;flex-direction:column}.form-dialog{padding:20px}.form-dialog .dialog-actions{margin:5px -20px -20px;padding:14px 20px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Persistent library and S3 cover additions */
.service-notice{margin:0 0 14px;padding:11px 13px;border:1px solid color-mix(in srgb,var(--danger) 35%,var(--line));border-radius:11px;color:var(--danger);background:color-mix(in srgb,var(--danger) 7%,var(--surface));font-size:12px}
.cover-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.book-cover.has-image:before,.detail-cover.has-image:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#0003 0%,#0001 40%,#000b 100%)}
.book-cover.has-image:after{z-index:1}
.book-cover.has-image .badge,.book-cover.has-image h3,.book-cover.has-image p{z-index:2}
.detail-cover{position:relative;background-position:center;background-size:cover}
.detail-cover>p,.detail-cover h2,.detail-cover .rating{position:relative;z-index:2}
.form-dialog label small{font-size:9px;font-weight:500;letter-spacing:0;text-transform:none}
.form-dialog input[type="file"]{padding:8px;font-size:10px}
.admin-dialog{width:min(500px,calc(100% - 28px));padding:27px}.admin-dialog .dialog-close{color:var(--ink);border-color:var(--line);background:var(--surface-2)}.admin-dialog form,.admin-dialog label{display:grid;gap:9px}.admin-dialog label{color:var(--muted);font-size:10px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.admin-dialog .dialog-actions{margin:20px -27px -27px;padding:15px 27px}code{padding:2px 5px;border-radius:5px;color:var(--accent);background:var(--surface-2);font:12px ui-monospace,SFMono-Regular,Consolas,monospace}
