@import "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&display=swap";.books-author-group,.genealogy-era-section,.reading-history-item,.philosophy-timeline>div{content-visibility:auto;contain-intrinsic-size:auto 200px}@keyframes skeleton-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg, var(--bg) 25%, var(--border) 50%, var(--bg) 75%);background-size:200% 100%;border-radius:4px;animation:1.5s ease-in-out infinite skeleton-shimmer}:root{--bone:#f7f5f0;--ink:#1a1a1a;--ochre:#b8956a;--prussian:#3a5a7c;--fade:#a89880;--text:#1a1a1a;--text-dim:#6b6058;--bg:#f7f5f0;--card-bg:#efebe2;--border:#d9d0c5;--accent:#3a5a7c;--accent2:#b8956a;--danger:#9b3a3a;--success:#4a7a4a;--primary:var(--bone);--secondary:var(--card-bg);--header-height:56px;--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Geist Sans", "SF Pro Display", sans-serif;--font-serif:"Playfair Display", "Times New Roman", "PingFang SC", serif;--font-mono:"SF Mono", "JetBrains Mono", "Cascadia Code", monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-xs:0 1px 2px #00000008;--shadow-sm:0 2px 8px #0000000a;--shadow-md:0 4px 12px #0000000f;--shadow-lg:0 8px 24px #00000014;--transition:.2s cubic-bezier(.2, 0, 0, 1);--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-3xl:48px;--space-section:80px;--text-caption:10px;--text-label:11px;--text-small:12px;--text-body:13px;--text-body-lg:14px;--text-card-title:15px;--text-section:20px;--text-page:24px;--z-header:100;--z-overlay:200;--z-toast:300;--z-candle:9999;--color-transition:background-color .4s ease, color .4s ease, border-color .4s ease, box-shadow .4s ease}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none;cursor:default;transition:var(--color-transition);font-weight:400;line-height:1.6}body:before{content:"";z-index:0;pointer-events:none;opacity:.015;background-image:url(data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20256%20256%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3Cfilter%20id%3D%27n%27%3E%3CfeTurbulence%20type%3D%27fractalNoise%27%20baseFrequency%3D%270.9%27%20numOctaves%3D%274%27%20stitchTiles%3D%27stitch%27%2F%3E%3C%2Ffilter%3E%3Crect%20width%3D%27100%25%27%20height%3D%27100%25%27%20filter%3D%27url%28%23n%29%27%2F%3E%3C%2Fsvg%3E);position:fixed;inset:0}.candle-glow{pointer-events:none;z-index:9999;background:radial-gradient(circle,#ffdca00f 0%,#ffc87805 40%,#0000 70%);border-radius:50%;width:600px;height:600px;transition:opacity .6s;position:fixed;transform:translate(-50%,-50%)}.parallax-wrap{transition:transform .1s linear;transform:translateY(0)}.app-container{background:var(--bg);width:100%;max-width:100%;min-height:100dvh;margin:0 auto;position:relative}.app-header{z-index:100;height:var(--header-height);background:linear-gradient(to bottom, var(--bone), #f4f0ebf2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);transition:var(--color-transition);justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:sticky;top:0}.app-title{font-family:var(--font-serif);color:var(--ink);cursor:pointer;letter-spacing:.04em;font-size:20px;font-style:italic;font-weight:400}.settings-btn{cursor:pointer;color:var(--text-dim);transition:color var(--transition);border-radius:var(--radius-sm);background:0 0;border:none;padding:4px;font-size:18px}.settings-btn:hover{color:var(--ink)}.settings-btn:focus-visible{outline:2px solid var(--ochre);outline-offset:2px}.navbar-floating{z-index:1000;transition:var(--color-transition);align-items:center;padding:16px 20px;display:flex;position:fixed;top:0;left:0;right:0}.navbar-login-btn{font-family:var(--font-sans);color:var(--ink);background:color-mix(in srgb, var(--primary) 70%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);cursor:pointer;letter-spacing:.04em;transition:all .25s, var(--color-transition);border-radius:4px;padding:8px 18px;font-size:13px;font-weight:500}.navbar-login-btn:hover{background:color-mix(in srgb, var(--primary) 90%, transparent);border-color:var(--ochre)}.app-main{min-height:calc(100vh - var(--header-height));padding:24px 40px 40px}.app-main.reader-mode{padding:0}.nav-btn{color:var(--text-dim);cursor:pointer;transition:color var(--transition);border-radius:var(--radius-sm);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;display:flex}.nav-btn:hover{color:var(--ink)}.nav-btn:active{transform:scale(.97)}.nav-btn.active{color:var(--accent);font-weight:600}.nav-btn:focus-visible{outline:2px solid var(--ochre);outline-offset:2px}.nav-icon{font-size:20px}.container{width:100%;max-width:1200px;padding:0 var(--space-xl);margin:0 auto}.container-narrow{width:100%;max-width:800px;padding:0 var(--space-lg);margin:0 auto}.section{padding:var(--space-3xl) var(--space-xl)}.flex-row{flex-direction:row;display:flex}.flex-col{flex-direction:column;display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-wrap{flex-wrap:wrap;display:flex}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.gap-xl{gap:var(--space-xl)}.text-center{text-align:center}.text-serif{font-family:var(--font-serif)}.text-sans{font-family:var(--font-sans)}.text-mono{font-family:var(--font-mono)}.text-dim{color:var(--text-dim)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:-100%;left:var(--space-lg);padding:var(--space-sm) var(--space-lg);z-index:var(--z-toast);background:var(--ink);color:var(--bone);border-radius:var(--radius-sm);font-size:var(--text-body);text-decoration:none;transition:top .2s;position:absolute}.skip-link:focus{top:var(--space-sm)}.scroll-top-btn{bottom:var(--space-xl);right:var(--space-xl);z-index:var(--z-overlay);border:1px solid var(--border);background:var(--card-bg);width:40px;height:40px;color:var(--text-dim);cursor:pointer;transition:var(--color-transition), opacity .3s, transform .3s;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex;position:fixed}.scroll-top-btn:hover{border-color:var(--ochre);color:var(--ink);transform:translateY(-2px)}.scroll-top-btn:focus-visible{outline:2px solid var(--ochre);outline-offset:2px}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:.35s cubic-bezier(.22,1,.36,1) forwards page-in}.reading-progress{background:var(--ochre);height:2px;z-index:calc(var(--z-header) + 1);transition:width .1s linear;position:fixed;top:0;left:0}.card{background:var(--card-bg);border-radius:var(--radius-sm);border:1px solid var(--border);cursor:pointer;transition:border-color var(--transition), transform var(--transition), box-shadow var(--transition);margin-bottom:6px;padding:16px 18px;position:relative}.card:hover{border-color:var(--ochre);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.card:active{transform:scale(.99)}.card:focus-visible{outline:2px solid var(--ochre);outline-offset:2px}.card-title{color:var(--ink);font-size:16px;font-weight:500;font-family:var(--font-serif);margin-bottom:4px}.card-subtitle{color:var(--text-dim);font-size:13px;font-weight:400}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg, var(--card-bg) 25%, var(--border) 50%, var(--card-bg) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}.tag{letter-spacing:.04em;text-transform:uppercase;color:var(--fade);border:1px solid var(--border);transition:border-color var(--transition), color var(--transition);background:0 0;border-radius:9999px;margin:2px;padding:3px 10px;font-size:11px;display:inline-block}.tag:hover{border-color:var(--ochre);color:var(--ochre)}.badge{letter-spacing:.04em;text-transform:uppercase;border-radius:9999px;padding:3px 10px;font-size:11px;font-weight:500;display:inline-block}.badge-east{color:var(--prussian);background:#3a5a7c0f;border:1px solid #3a5a7c26}.badge-west{color:var(--ochre);background:#b8956a0f;border:1px solid #b8956a26}.badge-world{color:#4a7a4a;background:#5a8a5a0f;border:1px solid #4a7a4a26}.badge-available{color:var(--success);background:#4a7a4a0f;border:1px solid #4a7a4a26}.badge-pending{color:var(--ochre);background:#b8956a0f;border:1px solid #b8956a26}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);font-size:13px;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition);color:var(--text-dim);letter-spacing:.03em;transition:all var(--transition), var(--color-transition);background:0 0;padding:8px 18px}.btn:hover{transform:translateY(-1px)}.btn:active{transform:scale(.97)}.btn:focus-visible{outline:2px solid var(--ochre);outline-offset:2px}.btn-primary{border-color:var(--ink);color:var(--ink)}.btn-primary:hover{background:var(--ink);color:var(--bone);border-color:var(--ink)}.btn-secondary{border-color:var(--border);color:var(--text-dim)}.btn-secondary:hover{border-color:var(--ochre);color:var(--ochre)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-block{justify-content:center;width:100%}.search-box{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card-bg);width:100%;color:var(--text);font-size:15px;font-family:var(--font-sans);transition:border-color var(--transition), var(--color-transition);outline:none;margin-bottom:18px;padding:12px 16px;font-weight:400}.search-box:focus{border-color:var(--ochre);border-bottom-color:var(--ochre)}.loading{color:var(--text-dim);justify-content:center;align-items:center;padding:80px 20px;font-size:15px;display:flex}.empty-state{text-align:center;color:var(--text-dim);padding:60px 20px}.section-title{color:var(--ink);font-size:20px;font-weight:400;font-family:var(--font-serif);letter-spacing:.03em;margin:20px 0 12px}.page-container{padding:0}.chat-container{flex-direction:column;flex:1;gap:8px;padding:8px 24px;display:flex;overflow-y:auto}.chat-message{border-radius:10px;max-width:80%;padding:8px 14px;font-size:14px;line-height:1.7}.chat-message.user{background:var(--ink);color:var(--bone);align-self:flex-end}.chat-message.assistant{background:var(--card-bg);border:1px solid var(--border);align-self:flex-start}.chat-input-area{background:var(--bg);border-top:1px solid var(--border);gap:8px;padding:8px 20px;display:flex}.chat-input{border:1px solid var(--border);background:var(--card-bg);color:var(--text);border-radius:20px;outline:none;flex:1;padding:10px 16px;font-family:inherit;font-size:14px}.chat-input:focus{border-color:var(--ochre)}.chat-send-btn{background:var(--ink);width:42px;height:42px;color:var(--bone);cursor:pointer;border:none;border-radius:50%;font-size:18px}.chat-mic-btn{border:2px solid var(--border);background:var(--card-bg);cursor:pointer;width:42px;height:42px;transition:all .25s, var(--color-transition);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:flex}.chat-mic-btn:hover{border-color:var(--ochre)}.chat-mic-btn.recording{border-color:var(--danger);background:color-mix(in srgb, var(--danger) 15%, var(--card-bg));animation:1.4s ease-in-out infinite mic-pulse}@keyframes mic-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--danger) 40%, transparent)}50%{box-shadow:0 0 0 10px color-mix(in srgb, var(--danger) 0%, transparent)}}.settings-form{flex-direction:column;gap:16px;display:flex}.settings-form label{color:var(--text-dim);flex-direction:column;gap:4px;font-size:13px;display:flex}.settings-form input{border:1px solid var(--border);background:var(--card-bg);color:var(--text);border-radius:8px;padding:12px 16px;font-family:inherit;font-size:15px}.summary-text{color:var(--text-dim);margin-top:8px;font-size:14px;line-height:1.7}.toast-container{bottom:var(--space-xl);right:var(--space-xl);z-index:var(--z-toast);gap:var(--space-sm);pointer-events:none;flex-direction:column-reverse;max-width:360px;display:flex;position:fixed}.toast{border-radius:var(--radius-sm);font-size:var(--text-body);font-family:var(--font-sans);cursor:pointer;pointer-events:auto;box-shadow:var(--shadow-md);border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:12px 20px;line-height:1.5;animation:.3s cubic-bezier(.22,1,.36,1) forwards toast-in}.toast-info{background:var(--card-bg);color:var(--text)}.toast-success{background:color-mix(in srgb, var(--success) 10%, var(--card-bg));color:var(--success);border-color:color-mix(in srgb, var(--success) 20%, transparent)}.toast-error{background:color-mix(in srgb, var(--danger) 10%, var(--card-bg));color:var(--danger);border-color:color-mix(in srgb, var(--danger) 20%, transparent)}.toast-warning{background:color-mix(in srgb, var(--ochre) 10%, var(--card-bg));color:var(--ochre);border-color:color-mix(in srgb, var(--ochre) 20%, transparent)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.reader-container{background:var(--bone);width:100%}.react-pdf__Page{margin:8px auto;box-shadow:0 2px 16px #00000014}.react-pdf__Page canvas{max-width:100%!important;height:auto!important}.epub-container{background:var(--bone)!important;max-width:800px!important;margin:0 auto!important}html.mobile-mode .app-container{max-width:480px!important;margin:0 auto!important}html.mobile-mode .app-main{padding:16px 12px 20px!important}html.mobile-mode .app-header{padding:0 12px!important}html.mobile-mode .app-title{font-size:14px!important}html.mobile-mode .app-header{gap:0!important;padding:0 8px!important}html.mobile-mode .app-header span{gap:0!important}html.mobile-mode .nav-btn{flex-direction:row!important;padding:2px 4px!important;font-size:10px!important}html.mobile-mode .nav-btn span:last-child{display:none!important}html.mobile-mode .settings-btn{padding:2px!important;font-size:14px!important}html.mobile-mode .card{padding:10px 0!important}html.mobile-mode .card-title{font-size:14px!important}html.mobile-mode .card-subtitle{font-size:12px!important}html.mobile-mode .section-title{font-size:16px!important}html.mobile-mode .search-box{padding:10px 14px!important;font-size:14px!important}html.mobile-mode .btn{padding:6px 14px!important;font-size:12px!important}html.mobile-mode .chat-message{max-width:90%!important;font-size:13px!important}html.mobile-mode .chat-input{font-size:13px!important}html.mobile-mode [style*="flex: 0 0 60%"]{flex:100%!important}html.mobile-mode [style*=showNotes] [style*=flex\:],html.mobile-mode .philosophy-timeline [style*=display\:flex]{flex-direction:column!important}html.mobile-mode .philosophy-timeline [style*=width\:110px]{width:60px!important;padding-right:10px!important}html.dark-mode{--bone:#1a1816;--ink:#e8e3d9;--ochre:#c9a96e;--prussian:#6b8fae;--fade:#7a7068;--text:#e8e3d9;--text-dim:#b8b0a0;--bg:#0f0e0c;--card-bg:#1e1c19;--border:#3a3530;--accent:#6b8fae;--accent2:#c9a96e;--primary:var(--bone);--secondary:var(--card-bg)}html.dark-mode body{background:var(--bg);color:var(--text)}html.dark-mode .app-header{background:linear-gradient(#1a1816,#1a1816f2)}html.dark-mode .candle-glow{background:radial-gradient(circle,#c9a96e0a 0%,#c9a96e03 40%,#0000 70%)}html.dark-mode .card:hover{border-bottom-color:var(--ochre)}html.dark-mode .btn-primary{border-color:var(--ink);color:var(--ink)}html.dark-mode .search-box{color:var(--text)}html.dark-mode .search-box:focus{border-bottom-color:var(--ochre)}html.dark-mode .icon-img{filter:invert(.85)brightness(1.1)}@keyframes pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}@media (width<=480px){.app-header{gap:0;padding:0 8px}.app-title{font-size:14px}.app-main{padding:12px 12px 20px}.nav-btn{flex-direction:row;padding:2px 4px;font-size:10px}.nav-btn span:last-child{display:none}.settings-btn{padding:2px;font-size:14px}.card{padding:12px 14px}.card-title{font-size:14px}.card-subtitle{font-size:12px}.section-title{font-size:16px}.search-box{padding:10px 14px;font-size:14px}.btn{padding:6px 14px;font-size:12px}.chat-message{max-width:90%;font-size:13px}.chat-input{font-size:13px}.loading,.empty-state{padding:40px 16px}.toast-container{left:var(--space-md);right:var(--space-md);bottom:var(--space-md);max-width:none}.scroll-top-btn{bottom:var(--space-md);right:var(--space-md);width:36px;height:36px}.navbar-floating{padding:12px}.navbar-login-btn{padding:6px 14px;font-size:12px}}@media (width>=481px) and (width<=768px){.app-main{padding:16px 24px 24px}.nav-btn{font-size:10px}.chat-message{max-width:85%}}@media (width>=769px){.app-main{padding:24px 40px 40px}}@media (width>=1200px){.app-main{padding:40px 64px}.chat-message{max-width:60%}}@media (width<=768px){[style*="flex: 0 0 60%"]{flex:100%!important}[style*=showNotes] [style*=flex\:]{flex-direction:column!important}}@media (width<=640px){.philosophy-timeline [style*=display\:flex]{flex-direction:column!important}.philosophy-timeline [style*=width\:110px]{width:60px!important;padding-right:10px!important}}
