:root { --ink:#17211b; --muted:#667168; --paper:#f5f3ed; --card:#fff; --accent:#d45b38; --line:#dcded7; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font:16px/1.5 Inter,ui-sans-serif,system-ui,sans-serif; }
header { height:72px; display:flex; align-items:center; justify-content:space-between; max-width:1180px; margin:auto; padding:0 28px; border-bottom:1px solid var(--line); }
a { color:inherit; text-decoration:none; } .brand { font:700 22px Georgia,serif; letter-spacing:-.5px; }.brand small { color:var(--muted); font:600 11px/1 ui-sans-serif,system-ui,sans-serif; letter-spacing:.4px; } nav { display:flex; gap:24px; color:var(--muted); }
main { max-width:1180px; margin:auto; padding:54px 28px 90px; }
.hero { display:grid; grid-template-columns:1.5fr 1fr; gap:48px; align-items:end; margin-bottom:52px; }.import-page { display:grid; grid-template-columns:1fr minmax(360px,520px); gap:56px; align-items:start; }
.hero h1,.metadata h1,.import-page h1 { font:500 clamp(44px,7vw,82px)/.95 Georgia,serif; letter-spacing:-3px; margin:10px 0; }
.eyebrow { color:var(--accent); font-size:12px; font-weight:800; letter-spacing:2px; }
.upload,.panel { background:var(--card); border:1px solid var(--line); border-radius:18px; padding:24px; box-shadow:0 10px 35px #28352a0a; }
.upload h2 { margin-top:0; }.drop-zone { border:2px dashed var(--line); border-radius:14px; padding:26px 18px; text-align:center; transition:.18s ease; cursor:pointer; }.drop-zone.dragging { border-color:var(--accent); background:#fff5f1; transform:scale(1.01); }.drop-title,.drop-help { display:block; }.drop-title { font-size:20px; }.drop-help { color:var(--muted); font-weight:400; margin:4px 0 14px; }.drop-zone input { padding:8px; }.file-list { margin:12px 0 0; padding-left:22px; color:var(--muted); }.file-list:empty { display:none; }
label { display:grid; gap:7px; font-weight:650; } label small { color:var(--muted); font-weight:400; }
input,textarea { width:100%; border:1px solid var(--line); border-radius:10px; padding:12px 14px; background:#fff; color:var(--ink); font:inherit; }
select { width:100%; border:1px solid var(--line); border-radius:10px; padding:12px 14px; background:#fff; color:var(--ink); font:inherit; }
button,.button { border:0; border-radius:10px; background:var(--ink); color:white; padding:12px 18px; font-weight:700; cursor:pointer; text-align:center; }
button:disabled { cursor:wait; opacity:.58; }
.upload button { width:100%; margin-top:16px; }
.search { display:flex; gap:10px; margin-bottom:38px; } .search input { font-size:18px; padding:15px 18px; }.search-query { flex:1 1 360px; }
.section-title { display:flex; justify-content:space-between; align-items:baseline; border-bottom:1px solid var(--line); margin-bottom:22px; }
.system-panel { margin:0; }.system-panel h2 { margin:0 0 12px; }.system-panel p { display:grid; gap:2px; margin:0; padding:10px 0; border-bottom:1px solid var(--line); }.system-panel p:last-child { border-bottom:0; }.system-panel span { color:var(--muted); font-size:13px; }.system-panel .warning strong,.system-panel .warning span { color:#9a351e; }
.section-title span,.card p,.empty,.back { color:var(--muted); }
.grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.card { display:grid; grid-template-columns:78px minmax(0,1fr); gap:14px; align-items:center; min-height:132px; background:var(--card); border:1px solid var(--line); border-radius:14px; padding:14px; transition:.18s ease; }
.card:hover { transform:translateY(-2px); border-color:#aeb5ab; } .card h3,.card p { margin:0; }.card h3 { font-size:17px; line-height:1.25; }.card-copy { min-width:0; }.card small { display:block; }.card .publication { color:var(--muted); }.card .series { color:var(--accent); }
.monogram,.cover { display:grid; place-items:center; background:#d9e1d7; color:#536456; font:600 28px Georgia,serif; border-radius:8px; aspect-ratio:3/4; }
.book-cover { width:78px; aspect-ratio:3/4; object-fit:cover; border-radius:8px; background:#d9e1d7; }.detail .book-cover { width:200px; max-height:300px; }
.back { display:inline-block; margin-bottom:28px; }.detail { display:grid; grid-template-columns:200px 1fr; gap:50px; align-items:center; margin-bottom:50px; }
.cover { font-size:80px; box-shadow:0 16px 40px #17211b22; }.lead { color:var(--muted); font-size:20px; }.downloads { display:flex; flex-wrap:wrap; gap:10px; margin-top:24px; }.secondary { background:var(--accent); }
.panel { margin-top:28px; }.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }.wide { grid-column:1/-1; }
.metadata-search { margin-top:14px; background:#536456; }.metadata-error { margin-top:14px; max-width:720px; }.preview-layout { display:grid; grid-template-columns:minmax(220px,320px) 1fr; gap:24px; align-items:start; }.preview-layout .panel { margin-top:0; }.preview-cover img { display:block; width:100%; max-height:460px; object-fit:contain; border-radius:10px; background:var(--paper); }.choice { display:flex; grid-template:none; gap:12px; align-items:flex-start; margin-top:16px; cursor:pointer; }.choice input { width:auto; margin-top:5px; }.preview-row { padding:14px 0; border-bottom:1px solid var(--line); }.preview-row span span { display:block; color:var(--muted); font-weight:400; white-space:pre-wrap; }.apply-preview { width:100%; margin-top:24px; }
.error { background:#fee6df; color:#8b321d; padding:14px; border-radius:10px; }.table-wrap { overflow:auto; }table { width:100%; border-collapse:collapse; }th,td { padding:12px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top; }code { white-space:normal; }.status.ok { color:#287243; }.status.error { color:#b33d24; }
.import-results { padding:0 24px; }.result-row { display:grid; grid-template-columns:36px 1fr auto; gap:14px; align-items:center; padding:20px 0; border-bottom:1px solid var(--line); }.result-row:last-child { border-bottom:0; }.result-row p { margin:2px 0 0; color:var(--muted); }.result-mark { display:grid; place-items:center; width:30px; height:30px; border-radius:50%; background:#dcecdf; color:#287243; font-weight:800; }.result-row.error .result-mark { background:#fee6df; color:#b33d24; }.import-more { display:inline-block; margin-top:24px; }
.pagination { display:flex; align-items:center; justify-content:center; gap:18px; margin-top:30px; color:var(--muted); }.pagination .button { min-width:110px; }
@media (max-width:900px) { .grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:700px) { .hero,.grid,.detail,.form-grid,.preview-layout,.import-page { grid-template-columns:1fr; }.detail { gap:24px; }.cover { width:150px; }.preview-cover img { max-height:380px; }.wide { grid-column:auto; }.hero h1,.metadata h1,.import-page h1 { letter-spacing:-2px; } }
.auth-panel { max-width:520px; margin:30px auto; }.auth-panel h1 { font:500 44px/1 Georgia,serif; }.auth-panel form { display:grid; gap:16px; }.account { max-width:1180px; margin:0 auto; padding:20px 28px; border-top:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; color:var(--muted); }.account form,.account button { margin:0; }.account button { padding:8px 12px; }.users-list { display:grid; gap:16px; }.user-row h2 { margin-top:0; }.danger { margin-top:14px; background:#8b321d; }
