:root{--color-ink: #1f2933;--color-muted: #5b6773;--color-primary: #1e3a5f;--color-accent: #c9b37e;--color-bg: #ffffff;--color-bg-soft: #f7f5f0;--color-border: #e3ded3;--font-serif: Georgia, "Times New Roman", "Songti SC", "SimSun", serif;--font-sans: -apple-system, "Segoe UI", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif}*{margin:0;padding:0;box-sizing:border-box}html{font-size:17px}body{font-family:var(--font-sans);color:var(--color-ink);background:var(--color-bg);line-height:1.7}h1,h2,h3{font-family:var(--font-serif);color:var(--color-primary);line-height:1.3;font-weight:600}a{color:var(--color-primary)}img{max-width:100%;display:block}.container{max-width:1080px;margin:0 auto;padding:0 1.25rem}.site-header{border-bottom:3px solid var(--color-primary);background:var(--color-bg)}.site-header .container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;padding-top:1.1rem;padding-bottom:1.1rem}.brand{text-decoration:none}.brand .brand-name{font-family:var(--font-serif);font-size:1.45rem;font-weight:700;color:var(--color-primary)}.brand .brand-tagline{font-size:.8rem;color:var(--color-muted)}.site-nav{display:flex;flex-wrap:wrap;gap:1.4rem;align-items:center}.site-nav a{text-decoration:none;color:var(--color-ink);font-size:.95rem}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--color-primary);border-bottom:2px solid var(--color-accent)}.lang-switch{border:1px solid var(--color-border);padding:.15rem .7rem;border-radius:3px;background:var(--color-bg-soft)}.hero{background:var(--color-primary);color:#f5f0e6;padding:4rem 0;text-align:center}.hero h1{color:#f5f0e6;font-size:2.4rem;margin-bottom:.8rem}.hero p{font-size:1.15rem;color:var(--color-accent);font-style:italic}.section{padding:3rem 0}.section-alt{background:var(--color-bg-soft)}.section h2{font-size:1.7rem;margin-bottom:1.6rem;padding-bottom:.5rem;border-bottom:2px solid var(--color-accent);display:inline-block}.section .lede{color:var(--color-muted);margin-bottom:1.6rem;max-width:44rem}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:2rem}.book-card{text-decoration:none;color:inherit;display:block}.book-card .cover{aspect-ratio:2 / 3;overflow:hidden;border:1px solid var(--color-border);box-shadow:0 4px 12px #1f29331f;transition:transform .15s ease,box-shadow .15s ease}.book-card:hover .cover{transform:translateY(-4px);box-shadow:0 8px 18px #1f293333}.book-card .cover img{width:100%;height:100%;object-fit:cover}.book-card h3{font-size:1.05rem;margin-top:.9rem}.book-card .book-author{font-size:.88rem;color:var(--color-muted)}.book-detail{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:3rem;align-items:start}@media(max-width:700px){.book-detail{grid-template-columns:1fr}.book-detail .cover{max-width:260px}}.book-detail .cover{border:1px solid var(--color-border);box-shadow:0 6px 16px #1f293326}.book-detail h1{font-size:2rem;margin-bottom:.3rem}.book-detail .subtitle{font-family:var(--font-serif);font-style:italic;color:var(--color-muted);font-size:1.15rem;margin-bottom:1.2rem}.book-meta{list-style:none;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);padding:.8rem 0;margin-bottom:1.5rem;font-size:.92rem;color:var(--color-muted)}.book-meta strong{color:var(--color-ink)}.book-body{margin-bottom:2rem}.book-body p{margin-bottom:1rem}.btn{display:inline-block;background:var(--color-primary);color:#fff;text-decoration:none;padding:.6rem 1.5rem;border-radius:3px;font-size:.95rem}.btn:hover{background:#16304f}.btn-outline{background:transparent;color:var(--color-primary);border:1px solid var(--color-primary)}.btn-outline:hover{background:var(--color-bg-soft)}.back-link{display:inline-block;margin-bottom:1.5rem;font-size:.9rem;text-decoration:none;color:var(--color-muted)}.prose{max-width:44rem}.prose p,.prose ul{margin-bottom:1rem}.prose ul{padding-left:1.4rem}.prose h2{margin-top:2rem}.site-footer{background:var(--color-primary);color:#cfd8e3;margin-top:3rem;padding:2rem 0;font-size:.88rem;text-align:center}.site-footer a{color:var(--color-accent)}
