*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:var(--fs-14);line-height:1.7;color:var(--text);background:var(--bg);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(900px 600px at 100% -10%,rgba(18,184,134,.06),transparent 60%),radial-gradient(700px 500px at -10% 110%,rgba(217,119,87,.05),transparent 60%)}a{color:var(--brand-active);text-decoration:none}a:hover{color:var(--brand-hover);text-decoration:underline;text-underline-offset:3px}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}img,svg,canvas{max-width:100%;height:auto;display:block}code,kbd,samp{font-family:var(--font-mono);font-size:.92em;background:var(--surface-muted);padding:1px 6px;border-radius:var(--r-sm);color:var(--brand-active)}mark.key{background:none;color:var(--brand-active);font-weight:600}strong{color:var(--text);font-weight:600}h1,h2,h3,h4{color:var(--text);line-height:1.3;letter-spacing:-.005em}p{color:var(--text-sub)}::selection{background:var(--brand-soft-2);color:var(--brand-active)}.page{min-height:100vh;display:block}.page__content,.report-intro__surface{width:calc(100% - 2rem);max-width:var(--max);margin:0 auto}@media print{.app-nav,.app-topbar{display:none!important}.app-main{margin-left:0!important}body{background:#fff!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:0s!important;transition-duration:0s!important}}:root{--bg: #0F0D0A;--surface: #1A1714;--surface-muted: #2C2416;--text: #E8DCC0;--text-sub: #B8A87A;--muted: #8A7A50;--border: #3C2F1A;--rule: #2C2416;--brand: #D4A855;--brand-hover: #E8C87A;--brand-active: #B8893A;--brand-soft: #2A2010;--brand-soft-2: #3C2F1A;--accent: #D4A855;--success: #D4A855;--warning: #E8C87A;--danger: #B85C3A;--info: #8A9A78;--font-display: "Source Han Serif SC", "Noto Serif CJK SC", Georgia, "Songti SC", serif;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "SFMono-Regular", Consolas, monospace;--fs-12: 12px;--fs-13: 13px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-20: 20px;--fs-24: 24px;--fs-32: 32px;--fs-40: 40px;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--r-pill: 999px;--sh-sm: 0 1px 2px rgba(31, 42, 46, .04);--sh-md: 0 4px 14px rgba(31, 42, 46, .06);--sh-lg: 0 12px 40px rgba(31, 42, 46, .08);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--sidebar-w: 248px;--topbar-h: 64px;--max: 1200px;--reading: 720px;--t-fast: .12s;--t-base: .2s;--t-slow: .32s;--ease: cubic-bezier(.4, 0, .2, 1)}.app-shell{min-height:100vh;display:block}.app-nav{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--rule);padding:var(--s-5) var(--s-4);display:flex;flex-direction:column;gap:var(--s-5);z-index:50;overflow-y:auto}.app-nav__brand{display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-2)}.app-nav__logo{width:36px;height:36px;border-radius:var(--r-md);background:linear-gradient(135deg,var(--brand),#20d89e);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:var(--sh-sm);flex-shrink:0}.app-nav__logo svg{width:18px;height:18px}.app-nav__title{font-family:var(--font-display);font-size:var(--fs-18);font-weight:600;color:var(--text);line-height:1.2}.app-nav__title small{display:block;font-family:var(--font-body);font-size:var(--fs-12);color:var(--muted);font-weight:400;letter-spacing:.04em}.app-nav__heading{font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:var(--s-2) var(--s-3);margin-top:var(--s-3);font-weight:600}.app-nav__group{display:flex;flex-direction:column;gap:2px}.app-nav__link{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-md);color:var(--text-sub);font-size:var(--fs-14);font-weight:500;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.app-nav__link:hover{background:var(--surface-muted);color:var(--text);text-decoration:none}.app-nav__link.is-active{background:var(--brand-soft);color:var(--brand-active)}.app-nav__link.is-active .app-nav__icon{color:var(--brand)}.app-nav__icon{width:18px;height:18px;flex-shrink:0;color:var(--muted)}.app-nav__footer{margin-top:auto;padding:var(--s-3);border-top:1px solid var(--rule);font-size:var(--fs-12);color:var(--muted);line-height:1.5}.app-nav__footer strong{color:var(--text-sub);display:block;font-weight:600}.app-main{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column}.app-topbar{height:var(--topbar-h);background:#fbfaf7d9;backdrop-filter:saturate(160%) blur(8px);-webkit-backdrop-filter:saturate(160%) blur(8px);border-bottom:1px solid var(--rule);display:flex;align-items:center;gap:var(--s-4);padding:0 var(--s-6);position:sticky;top:0;z-index:40}.app-topbar__crumb{font-size:var(--fs-13);color:var(--muted);display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.app-topbar__crumb a{color:var(--text-sub)}.app-topbar__crumb strong{color:var(--text);font-weight:600}.app-topbar__search{flex:1;max-width:420px;margin-left:auto;position:relative}.app-topbar__search input{width:100%;height:38px;padding:0 var(--s-4) 0 38px;border-radius:var(--r-md);border:1px solid var(--rule);background:var(--surface);font-size:var(--fs-13);color:var(--text);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.app-topbar__search input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #12b8861f}.app-topbar__search .icon-search{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none}.app-topbar__kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-size:var(--fs-12);color:var(--muted);padding:2px 6px;border-radius:var(--r-sm);background:var(--surface-muted);border:1px solid var(--rule)}.app-topbar__actions{display:flex;align-items:center;gap:var(--s-3)}.icon-btn{width:38px;height:38px;border-radius:var(--r-md);border:1px solid transparent;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--text-sub);transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.icon-btn:hover{background:var(--surface-muted);color:var(--text)}.icon-btn svg{width:18px;height:18px}.app-topbar__avatar{width:36px;height:36px;border-radius:var(--r-pill);background:linear-gradient(135deg,var(--accent),#e07a5f);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--fs-14);font-family:var(--font-display)}.app-topbar__nav-toggle{display:none}.app-content{flex:1;padding:var(--s-7) var(--s-6) var(--s-8);max-width:var(--max);width:100%;margin:0 auto}.btn{display:inline-flex;align-items:center;gap:var(--s-2);height:38px;padding:0 var(--s-4);border-radius:var(--r-md);border:1px solid var(--rule);background:var(--surface);color:var(--text);font-size:var(--fs-14);font-weight:500;transition:all var(--t-fast) var(--ease);text-decoration:none}.btn:hover{border-color:var(--text-sub);text-decoration:none}.btn--primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn--primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:#fff}.btn--ghost{background:transparent;border-color:transparent}.btn--ghost:hover{background:var(--surface-muted)}.btn svg{width:16px;height:16px}.tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 10px;border-radius:var(--r-pill);background:var(--surface-muted);color:var(--text-sub);font-size:var(--fs-12);font-weight:500;white-space:nowrap}.tag--brand{background:var(--brand-soft);color:var(--brand-active)}.tag--accent{background:#d977571f;color:var(--accent)}.status-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;padding:2px 8px;border-radius:var(--r-sm)}.status-badge--read{background:var(--brand-soft);color:var(--brand-active)}.status-badge--reading{background:#228be61f;color:#1971c2}.status-badge--wishlist{background:#d977571f;color:var(--accent)}.stars{display:inline-flex;align-items:center;gap:1px;color:#f5a623}.stars svg{width:14px;height:14px;fill:currentColor}.stars svg.is-empty{color:var(--rule)}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-5);flex-wrap:wrap}.section-heading h2{font-family:var(--font-display);font-size:var(--fs-24);font-weight:600;color:var(--text);letter-spacing:-.01em}.section-heading__meta{font-size:var(--fs-13);color:var(--muted)}.section-heading__meta a{color:var(--brand-active)}.book-card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden;transition:transform var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease),border-color var(--t-base) var(--ease);display:flex;flex-direction:column;color:inherit;transform-style:preserve-3d;perspective:1000px}.book-card:hover{transform:translateY(-6px) rotateX(2deg);box-shadow:var(--sh-lg);border-color:var(--brand);text-decoration:none;color:inherit}.book-card__cover{aspect-ratio:2 / 3;background:var(--surface-muted);position:relative;overflow:hidden}.book-card__cover-art{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:var(--s-4);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.18)}.book-card__cover-title{font-family:var(--font-display);font-size:var(--fs-18);font-weight:700;line-height:1.25;margin-bottom:4px}.book-card__cover-author{font-size:var(--fs-12);opacity:.85}.book-card__rating{position:absolute;top:var(--s-3);left:var(--s-3);background:#ffffffeb;padding:2px 8px;border-radius:var(--r-pill);font-size:var(--fs-12);font-weight:600;color:var(--text);display:inline-flex;align-items:center;gap:3px}.book-card__rating svg{width:12px;height:12px;fill:#f5a623}.book-card__body{padding:var(--s-4);flex:1;display:flex;flex-direction:column;gap:var(--s-2)}.book-card__title{font-family:var(--font-display);font-size:var(--fs-16);font-weight:600;color:var(--text);line-height:1.35}.book-card__author{font-size:var(--fs-12);color:var(--muted)}.book-card__excerpt{font-size:var(--fs-13);color:var(--text-sub);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-card__meta{display:flex;align-items:center;gap:var(--s-2);margin-top:auto;padding-top:var(--s-3);border-top:1px dashed var(--rule);font-size:var(--fs-12);color:var(--muted);flex-wrap:wrap}.cover--mint{background:linear-gradient(155deg,#14b8a6,#0e7c6b)}.cover--indigo{background:linear-gradient(155deg,#6366f1,#4338ca)}.cover--amber{background:linear-gradient(155deg,#f59e0b,#b45309)}.cover--rose{background:linear-gradient(155deg,#e11d48,#9f1239)}.cover--slate{background:linear-gradient(155deg,#475569,#1e293b)}.cover--emerald{background:linear-gradient(155deg,#10b981,#065f46)}.cover--violet{background:linear-gradient(155deg,#8b5cf6,#5b21b6)}.cover--rust{background:linear-gradient(155deg,#d97757,#9a3412)}.cover--ink{background:linear-gradient(155deg,#1f2a2e,#0f1418)}.cover--sage{background:linear-gradient(155deg,#84a98c,#52796f)}.cover--cream{background:linear-gradient(155deg,#f4efe8,#d9cdb9)}.cover--cream .book-card__cover-art{color:var(--text);text-shadow:none}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--s-5)}.book-grid--lg{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-lg);padding:var(--s-5)}.panel--muted{background:var(--surface-muted);border-color:transparent}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r-lg);padding:var(--s-5)}.callout{padding:var(--s-4) var(--s-5);background:var(--brand-soft);border-left:3px solid var(--brand);border-radius:var(--r-md);font-size:var(--fs-14);color:var(--text)}.callout strong{color:var(--brand-active)}.skeleton{background:linear-gradient(90deg,var(--surface-muted) 0%,var(--bg) 50%,var(--surface-muted) 100%);background-size:200% 100%;animation:skel 1.4s ease-in-out infinite;border-radius:var(--r-sm)}@keyframes skel{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeUp .5s ease-out both}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:60ms}.stagger>*:nth-child(3){animation-delay:.12s}.stagger>*:nth-child(4){animation-delay:.18s}.stagger>*:nth-child(5){animation-delay:.24s}.stagger>*:nth-child(6){animation-delay:.3s}.stagger>*:nth-child(7){animation-delay:.36s}.stagger>*:nth-child(8){animation-delay:.42s}.stagger>*:nth-child(9){animation-delay:.48s}.stagger>*:nth-child(10){animation-delay:.54s}.empty-state{text-align:center;padding:var(--s-8) var(--s-5);color:var(--muted)}.empty-state svg{width:48px;height:48px;margin:0 auto var(--s-3);color:var(--muted);opacity:.6}.empty-state h3{font-family:var(--font-display);font-size:var(--fs-18);color:var(--text-sub);margin-bottom:var(--s-2)}@media(max-width:960px){:root{--sidebar-w: 220px}.app-content{padding:var(--s-5) var(--s-4) var(--s-7)}.book-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--s-4)}.app-topbar__search{max-width:240px}}@media(max-width:720px){.app-nav{position:fixed;inset:0;width:100%;transform:translate(-100%);transition:transform var(--t-base) var(--ease);z-index:60}.app-nav.is-open{transform:translate(0)}.app-main{margin-left:0}.app-topbar__nav-toggle{display:inline-flex}.app-topbar__crumb,.app-topbar__search{display:none}.app-content{padding:var(--s-4) var(--s-3) var(--s-6)}.book-grid,.book-grid--lg{grid-template-columns:repeat(2,1fr);gap:var(--s-3)}.app-topbar{padding:0 var(--s-4)}}
