:root{--ink:#0a0f1c;--ink-card:#111a2eb3;--ink-card-hover:#141f36cc;--ink-card-open:#151f38d9;--gold:#d9b45b;--gold-bright:#e8c86a;--gold-deep:#9a7a2e;--gold-border:#d9b45b26;--gold-border-hover:#d9b45b59;--gold-border-open:#d9b45b66;--parchment:#e8e0cd;--text-dim:#e8e0cd80;--text-faint:#e8e0cd4d}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--ink);color:var(--parchment);-webkit-font-smoothing:antialiased;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}body:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(90% 55% at 50% -10%,#c9a2271f,#0000 70%),radial-gradient(60% 45% at 88% 105%,#48306e24,#0000 70%),radial-gradient(55% 45% at 8% 55%,#1c3e601f,#0000 70%);position:fixed;inset:0}#app{z-index:1;position:relative}::selection{color:#fff8e1;background:#c9a22759}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--ink)}::-webkit-scrollbar-thumb{background:#c9a22740;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#c9a22773}.font-display{font-family:Georgia,Times New Roman,Songti SC,STSong,SimSun,serif}a{color:var(--gold);text-decoration:none}.reading-progress{z-index:50;background:0 0;height:3px;position:fixed;inset:0 0 auto}.reading-progress>div{background:linear-gradient(to right, var(--gold-deep), var(--gold-bright), var(--gold-deep));height:100%;transition:width .1s ease-out;box-shadow:0 0 8px #e8c86ab3}.back-link{z-index:40;border:1px solid var(--gold-border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);letter-spacing:.2em;color:#e8e0cdb3;background:#0a0f1cbf;border-radius:999px;align-items:center;gap:.4rem;padding:.45rem .9rem;font-size:12px;transition:all .25s;display:inline-flex;position:fixed;top:1rem;left:1rem}.back-link:hover{color:var(--gold-bright);border-color:var(--gold-border-hover)}.shelf-hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:62vh;padding:0 1.5rem;display:flex}.shelf-hero .ornament{color:#d9b45bb3;align-items:center;gap:1rem;margin-bottom:2rem;display:flex}.shelf-hero .ornament:before,.shelf-hero .ornament:after{content:"";background:linear-gradient(90deg,#0000,#d9b45b99);width:3.5rem;height:1px}.shelf-hero .ornament:after{background:linear-gradient(270deg,#0000,#d9b45b99)}.shelf-hero h1{letter-spacing:.15em;background:linear-gradient(to bottom, #f3dfae, var(--gold), var(--gold-deep));color:#0000;filter:drop-shadow(0 2px 12px #c9a22759);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.4rem,6vw,3.8rem);font-weight:700}.shelf-hero blockquote{color:#e8e0cdbf;max-width:36rem;margin:1.8rem 0 0;font-size:1rem;line-height:1.9}.shelf-hero blockquote cite{color:var(--text-dim);margin-top:.4rem;font-size:.8rem;font-style:normal;display:block}.shelf-hero .count{letter-spacing:.4em;color:var(--text-faint);margin-top:2.2rem;font-size:11px}.shelf-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2rem;max-width:64rem;margin:0 auto;padding:1rem 1.5rem 6rem;display:grid}.book-card{cursor:pointer;border:1px solid var(--gold-border);background:var(--ink-card);border-radius:14px;transition:transform .3s,box-shadow .3s,border-color .3s;position:relative;overflow:hidden}.book-card:hover{border-color:var(--gold-border-hover);transform:translateY(-6px);box-shadow:0 16px 44px -12px #c9a2274d}.book-cover{aspect-ratio:3/2.2;border-bottom:1px solid var(--gold-border);flex-direction:column;justify-content:center;align-items:center;gap:.8rem;display:flex;position:relative}.book-cover .emoji{filter:drop-shadow(0 4px 10px #00000080);font-size:3rem}.book-cover .cover-title{letter-spacing:.2em;color:#f3e5bd;text-shadow:0 2px 8px #0009;font-size:1.25rem}.cover-sufei{background:radial-gradient(90% 70% at 50% 0,#e8c86a38,#0000 70%),linear-gradient(160deg,#1c3450 0%,#101c30 55%,#0a1322 100%)}.book-meta{padding:1.1rem 1.2rem 1.3rem}.book-meta h3{letter-spacing:.1em;color:#fff8e7;margin:0;font-size:1.05rem}.book-meta .author{letter-spacing:.08em;color:var(--text-dim);margin-top:.35rem;font-size:11px}.book-meta .intro{color:#e8e0cdb8;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-top:.7rem;font-size:12.5px;line-height:1.8;display:-webkit-box;overflow:hidden}.book-meta .tag{border:1px solid var(--gold-border);letter-spacing:.15em;color:var(--gold);background:#d9b45b0f;border-radius:999px;margin-top:.8rem;padding:.2rem .65rem;font-size:10.5px;display:inline-block}.sophie-hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:92vh;padding:0 1.5rem;display:flex}.sophie-hero .ornament{color:#d9b45bb3;letter-spacing:.5em;align-items:center;gap:1rem;margin-bottom:2rem;font-size:1.1rem;display:flex}.sophie-hero .ornament:before,.sophie-hero .ornament:after{content:"";background:linear-gradient(90deg,#0000,#d9b45b99);width:3.5rem;height:1px}.sophie-hero .ornament:after{background:linear-gradient(270deg,#0000,#d9b45b99)}.sophie-hero .latin{letter-spacing:.6em;color:var(--text-dim);margin-bottom:1.2rem;font-size:.85rem}.sophie-hero h1{letter-spacing:.06em;background:linear-gradient(to bottom, #f3dfae, var(--gold), var(--gold-deep));color:#0000;filter:drop-shadow(0 2px 12px #c9a22759);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.2rem,6vw,3.8rem);font-weight:700;line-height:1.25}.sophie-hero blockquote{color:#e8e0cdc7;max-width:36rem;margin:2rem 0 0;font-size:1rem;line-height:1.9}.sophie-hero blockquote span{color:var(--text-dim);margin-top:.4rem;font-size:.85rem;display:block}.sophie-hero .range{letter-spacing:.4em;color:#e8e0cd6b;margin-top:2.4rem;font-size:12px}.sophie-hero .scroll-hint{letter-spacing:.35em;color:#d9b45b99;flex-direction:column;align-items:center;gap:.5rem;margin-top:3.2rem;font-size:11px;transition:color .25s;display:flex}.sophie-hero .scroll-hint:hover{color:var(--gold-bright)}.sophie-hero .scroll-hint .chev{font-size:1.1rem;animation:1.6s infinite bounce}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(7px)}}.timeline{max-width:72rem;margin:0 auto;padding:0 1rem 6rem;position:relative}.timeline-inner{position:relative}.timeline-line{background:linear-gradient(#0000,#d9b45b4d 8% 92%,#0000);width:1px;position:absolute;top:0;bottom:0;left:30px}.era-divider{padding-bottom:2.5rem;position:relative}.era-label{padding-left:4rem}.era-label>span{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);letter-spacing:.35em;color:var(--gold);background:#141c30cc;border:1px solid #d9b45b40;border-radius:999px;align-items:center;gap:.75rem;padding:.4rem 1.25rem;font-size:11px;display:inline-flex}.era-label .diamond{background:#d9b45bcc;width:6px;height:6px;transform:rotate(45deg);box-shadow:0 0 8px #e8c86ab3}.era-label .dash{background:linear-gradient(90deg,#0000,#d9b45b80);width:2.5rem;height:1px;display:none}.t-item{padding-bottom:2.5rem;position:relative}.t-node{z-index:2;position:absolute;top:36px;left:30px;transform:translate(-50%)}.t-node .glow{filter:blur(4px);background:#d9b45b1a;border-radius:50%;position:absolute;inset:-8px}.t-node .dot{background:var(--ink);border:1px solid #e8c86acc;width:10px;height:10px;display:block;position:relative;transform:rotate(45deg);box-shadow:0 0 10px #e8c86acc}.t-card-wrap{margin-left:4rem}.p-card{cursor:pointer;border:1px solid var(--gold-border);background:var(--ink-card);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:16px;transition:border-color .3s,background .3s,box-shadow .3s;position:relative;overflow:hidden}.p-card:before{content:"";opacity:0;background:linear-gradient(90deg,#0000,#e8c86a80,#0000);height:1px;transition:opacity .3s;position:absolute;inset:0 0 auto}.p-card:hover{border-color:var(--gold-border-hover);background:var(--ink-card-hover);box-shadow:0 8px 40px -8px #c9a22740}.p-card:hover:before{opacity:1}.p-card.open{border-color:var(--gold-border-open);background:var(--ink-card-open);box-shadow:0 8px 44px -8px #c9a2274d}.p-card-body{padding:1.25rem 1.5rem}.p-head{align-items:flex-start;gap:1rem;display:flex}.p-avatar{border-radius:50%;outline:1px solid #d9b45b40;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.8rem;display:flex;overflow:hidden;box-shadow:inset 0 2px 10px #ffebb41f,0 4px 14px #00000073}.p-avatar img{object-fit:cover;filter:sepia(.22)contrast(.96);width:100%;height:100%}.p-avatar .emoji{filter:drop-shadow(0 2px 4px #0009)}.g0{background:linear-gradient(135deg,#1c3450,#142540 50%,#0c1626)}.g1{background:linear-gradient(135deg,#43301a,#2c1f12 50%,#181009)}.g2{background:linear-gradient(135deg,#233a24,#18291b 50%,#0d1710)}.g3{background:linear-gradient(135deg,#372447,#251a33 50%,#150f1e)}.g4{background:linear-gradient(135deg,#463617,#2e2410 50%,#1a1409)}.g5{background:linear-gradient(135deg,#1d3c3c,#142b2b 50%,#0b1a1a)}.g6{background:linear-gradient(135deg,#452424,#2e1818 50%,#190e0e)}.p-title{flex:1;min-width:0}.p-name-row{flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;display:flex}.p-name-row h3{letter-spacing:.06em;color:#fff8e7;margin:0;font-size:1.25rem;font-weight:600}.p-name-row .latin{letter-spacing:.05em;color:#e8e0cd73;font-size:11px;font-style:italic}.p-meta-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.4rem;font-size:11px;display:flex}.p-meta-row .years{letter-spacing:.15em;color:var(--gold)}.p-meta-row .sep{color:#e8e0cd40}.p-meta-row .era-tag{letter-spacing:.1em;color:#e8e0cdb3;background:#d9b45b0d;border:1px solid #d9b45b33;border-radius:999px;padding:.15rem .6rem}.p-chevron{color:#d9b45b80;flex-shrink:0;margin-top:.25rem;font-size:.8rem;transition:transform .3s,color .3s}.p-card.open .p-chevron{color:var(--gold-bright);transform:rotate(180deg)}.p-quote{color:#f3e5bdd9;border-left:2px solid #d9b45b66;margin:1rem 0 0;padding-left:.8rem;font-size:15px;line-height:1.8}.p-hint{text-align:right;letter-spacing:.2em;color:var(--text-faint);margin:.75rem 0 0;font-size:11px;transition:color .25s}.p-card:hover .p-hint{color:var(--text-dim)}.acc{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .5s ease-in-out,opacity .5s ease-in-out,margin-top .5s ease-in-out;display:grid}.acc.open{opacity:1;grid-template-rows:1fr;margin-top:1rem}.acc>div{overflow:hidden}.acc .theory{border-top:1px solid #e8e0cd1a;flex-direction:column;gap:.65rem;padding-top:1rem;display:flex}.acc .theory p{color:#d6cfc2e6;gap:.65rem;margin:0;font-size:13.5px;line-height:1.85;display:flex}.acc .theory p:before{content:"";background:#d9b45bb3;flex-shrink:0;width:4px;height:4px;margin-top:.62em;transform:rotate(45deg)}.timeline-end{position:relative}.timeline-end .end-diamond{background:#d9b45be6;width:12px;height:12px;position:absolute;top:0;left:30px;transform:translate(-50%)rotate(45deg);box-shadow:0 0 14px #e8c86ae6}.timeline-end p{letter-spacing:.3em;color:var(--text-dim);margin:0;padding:1.5rem 0 0 4rem;font-size:13px}.site-footer{text-align:center;border-top:1px solid #e8e0cd1a;padding:3rem 1.5rem}.site-footer .ornament{color:#d9b45b99;letter-spacing:.4em;justify-content:center;align-items:center;gap:1rem;margin-bottom:1.2rem;display:flex}.site-footer .ornament:before,.site-footer .ornament:after{content:"";background:linear-gradient(90deg,#0000,#d9b45b80);width:4rem;height:1px}.site-footer .ornament:after{background:linear-gradient(270deg,#0000,#d9b45b80)}.site-footer p{color:#e8e0cd99;margin:0;font-size:13.5px;line-height:1.8}.site-footer .latin{letter-spacing:.3em;color:var(--text-faint);margin-top:.75rem;font-size:10.5px}@media (width>=768px){.timeline{padding:0 1.5rem 6rem}.timeline-line{left:50%;transform:translate(-.5px)}.era-divider{padding-bottom:3.5rem}.era-label{text-align:center;padding-left:0}.era-label .dash{display:inline-block}.t-item{grid-template-columns:1fr 1fr;column-gap:5rem;padding-bottom:3.5rem;display:grid}.t-node{left:50%}.t-card-wrap{grid-column:1;margin-left:0}.t-item.right .t-card-wrap{grid-column:2}.t-card:after{content:"";width:2.5rem;height:1px;position:absolute;top:41px}.t-item.left .t-card:after{background:linear-gradient(270deg,#d9b45b66,#0000);right:-2.5rem}.t-item.right .t-card:after{background:linear-gradient(90deg,#d9b45b66,#0000);left:-2.5rem}.timeline-end .end-diamond{left:50%}.timeline-end p{text-align:center;padding-left:0}}
