:root{--paper: #F4EFE3;--paper-2: #FBF8F0;--paper-3: #EFE8D8;--ink: #2A2520;--ink-soft: #564E40;--muted: #8B8069;--accent: #C15F3C;--accent-2: #A84B2C;--accent-soft: #E9C7B8;--gold: #B08D57;--line: #DBCFB6;--line-strong: #C9BB9C;--shadow: rgba(42, 37, 32, .14);--serif: "Playfair Display", "Hoefler Text", Georgia, serif;--body: "EB Garamond", "Iowan Old Style", Georgia, serif;--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--maxw: 1120px;--radius: 4px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--body);font-size:19px;line-height:1.6;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(circle at 20% 30%,rgba(176,141,87,.05) 0,transparent 40%),radial-gradient(circle at 80% 70%,rgba(193,95,60,.04) 0,transparent 45%);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--serif);font-weight:800;line-height:1.12;color:var(--ink);margin:0 0 .4em;letter-spacing:.01em}a{color:var(--accent-2);text-decoration:none}a:hover{color:var(--accent)}img{display:block;max-width:100%}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}.eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.22em;font-size:12px;font-weight:600;color:var(--accent-2)}.ornament{display:flex;align-items:center;justify-content:center;gap:14px;color:var(--gold);margin:8px 0 4px}.ornament:before,.ornament:after{content:"";height:1px;width:64px;background:linear-gradient(to right,transparent,var(--line-strong),transparent)}.ornament span{font-size:18px;letter-spacing:.3em}.masthead{border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fbf8f0e6,#f4efe399);backdrop-filter:blur(6px);position:sticky;top:0;z-index:50}.masthead__inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;max-width:var(--maxw);margin:0 auto}.brand{display:flex;align-items:baseline;gap:10px}.brand__mark{color:var(--accent);font-size:22px;line-height:1}.brand__name{font-family:var(--serif);font-weight:900;font-size:23px;color:var(--ink);letter-spacing:.01em}.brand__name b{color:var(--accent);font-weight:900}.brand__lib{color:var(--ink)}@media(max-width:420px){.brand__name{font-size:19px}.brand__lib{display:none}}.nav{display:flex;align-items:center;gap:6px}.nav a{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:8px 14px;border-radius:999px;border:1px solid transparent}.nav a:hover{color:var(--ink);background:var(--paper-3)}.nav a.is-active{color:var(--accent-2);border-color:var(--line-strong);background:var(--paper-2)}.hero{padding:64px 0 30px;text-align:center}.hero h1{font-size:clamp(40px,7vw,76px);margin-bottom:.2em}.hero h1 em{color:var(--accent);font-style:italic}.hero__lead{max-width:640px;margin:0 auto 26px;color:var(--ink-soft);font-size:21px}.search{display:flex;gap:10px;max-width:580px;margin:0 auto}.search input{flex:1;font-family:var(--body);font-size:18px;padding:13px 18px;color:var(--ink);background:var(--paper-2);border:1px solid var(--line-strong);border-radius:999px;outline:none;transition:border-color .15s,box-shadow .15s}.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c15f3c26}.btn{font-family:var(--sans);font-weight:600;font-size:14px;letter-spacing:.04em;cursor:pointer;border:1px solid var(--accent-2);background:var(--accent);color:#fff;padding:0 22px;border-radius:999px;transition:background .15s,transform .05s}.btn:hover{background:var(--accent-2)}.btn:active{transform:translateY(1px)}.btn--ghost{background:var(--paper-2);color:var(--ink);border-color:var(--line-strong)}.btn--ghost:hover{background:var(--paper-3)}.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:18px}.chip{font-family:var(--sans);font-size:13px;letter-spacing:.03em;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--line);padding:6px 14px;border-radius:999px;cursor:pointer}.chip:hover{border-color:var(--accent);color:var(--accent-2)}.section{padding:30px 0}.section__head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;border-bottom:1px solid var(--line);padding-bottom:10px}.section__head h2{font-size:30px;margin:0}.section__head .sort{font-family:var(--sans);font-size:13px;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--line-strong);border-radius:999px;padding:7px 12px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:28px 24px}.card{display:flex;flex-direction:column;color:inherit}.card__frame{position:relative;display:block;padding:8px;background:var(--paper-2);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:0 1px #fff inset,0 6px 16px -10px var(--shadow);transition:transform .18s ease,box-shadow .18s ease}.card__frame:after{content:"";position:absolute;inset:14px;border:1px solid rgba(176,141,87,.35);pointer-events:none;z-index:1}.card:hover .card__frame{transform:translateY(-4px);box-shadow:0 1px #fff inset,0 16px 26px -14px var(--shadow)}.card__cover{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:2px;background:var(--paper-3)}.card__resume{position:absolute;left:50%;bottom:16px;transform:translate(-50%);font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:var(--accent);padding:5px 12px;border-radius:999px;z-index:2;opacity:0;transition:opacity .18s}.card:hover .card__resume{opacity:1}.card__body{padding:12px 4px 0}.card__title{display:block;font-family:var(--serif);font-weight:700;font-size:18px;line-height:1.2;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card__author{display:block;color:var(--accent-2);font-style:italic;font-size:16px;margin-top:2px}.card__meta{display:block;color:var(--muted);font-family:var(--sans);font-size:12px;margin-top:4px;letter-spacing:.03em}.card--progress .card__title{-webkit-line-clamp:1}.progress{display:block;height:4px;margin-top:8px;background:var(--paper-3);border-radius:999px;overflow:hidden}.progress__bar{display:block;height:100%;background:var(--accent)}.empty,.loading,.error{text-align:center;color:var(--muted);font-style:italic;padding:48px 0;grid-column:1 / -1}.error{color:var(--accent-2)}.skeleton{background:linear-gradient(100deg,var(--paper-3) 30%,var(--paper-2) 50%,var(--paper-3) 70%);background-size:200% 100%;animation:shimmer 1.3s infinite linear;border-radius:var(--radius);aspect-ratio:1 / 1}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.loadmore{display:flex;justify-content:center;margin:36px 0 8px}.foot{margin-top:56px;border-top:1px solid var(--line);background:linear-gradient(180deg,transparent,rgba(176,141,87,.06))}.foot__inner{max-width:var(--maxw);margin:0 auto;padding:30px 24px 44px;text-align:center;color:var(--ink-soft);font-size:16px}.foot a{color:var(--accent-2);border-bottom:1px dotted var(--line-strong)}.foot__credit{font-family:var(--sans);font-size:13px;color:var(--muted);margin-top:8px}.foot__settings{font-family:var(--sans);font-size:13px;color:var(--accent-2);background:none;border:none;border-bottom:1px dotted var(--line-strong);padding:0;margin-left:6px;cursor:pointer}.foot__settings:hover{color:var(--accent)}.consent{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:80;width:min(720px,calc(100vw - 32px));display:flex;align-items:center;gap:18px;background:var(--paper-2);border:1px solid var(--line-strong);border-radius:12px;box-shadow:0 18px 40px -18px var(--shadow);padding:16px 20px}.consent__text{margin:0;flex:1;font-family:var(--sans);font-size:14px;line-height:1.5;color:var(--ink-soft)}.consent__actions{display:flex;gap:10px;flex-shrink:0}.consent .btn{height:40px;display:inline-flex;align-items:center}@media(max-width:560px){.consent{flex-direction:column;align-items:stretch;gap:12px;bottom:0;border-radius:12px 12px 0 0;width:100%}.consent__actions{justify-content:flex-end}}.center{text-align:center}.hidden{display:none!important}.spin{animation:spin 1s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){body{font-size:18px}.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:22px 16px}.nav a{padding:8px 10px;font-size:12px}.hero{padding:40px 0 18px}}
