:root{--violet:#4021b8;--violet-deep:#241064;--violet-soft:#ebe5ff;--sun:#f8dc3e;--sun-soft:#fff3a5;--sky:#79cee3;--sky-deep:#2d9cb7;--ink:#1f1b35;--muted:#6e6980;--paper:#fffaf0;--paper-strong:#fff3d7;--line:rgba(36,16,100,0.16);--shadow:0 24px 70px rgba(36,16,100,0.16)}*{box-sizing:border-box}html{min-height:100%}body,html{background:var(--paper)}body{min-height:100vh;margin:0;color:var(--ink);font-family:ui-serif,Georgia,Cambria,Times New Roman,serif}button,input{font:inherit}a{color:inherit;text-decoration:none}img{max-width:100%}.app-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:22px 0 44px}.reader-header,.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar{min-height:58px}.auth-actions,.brand,.icon-link,.nav-actions,.primary-button,.reader-title,.secondary-button{display:inline-flex;align-items:center}.brand{gap:10px;color:var(--violet-deep);font-size:clamp(1.45rem,3vw,2rem);font-weight:900}.brand-mark,.panel-icon,.reader-title span{display:grid;place-items:center;width:42px;height:42px;color:var(--violet-deep);background:var(--sun);border:2px solid var(--violet-deep);box-shadow:4px 4px 0 var(--violet-deep)}.nav-actions{gap:12px}.auth-actions{gap:10px}.icon-link,.primary-button,.secondary-button,.theme-toggle{min-height:42px;border-radius:8px;gap:8px;border:2px solid var(--violet-deep);padding:0 14px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.93rem;font-weight:800;cursor:pointer}.theme-toggle{width:46px;justify-content:center;color:var(--violet-deep);background:rgba(255,250,240,.94)}.primary-button{color:#ffffff;background:var(--violet);box-shadow:4px 4px 0 var(--sun)}.primary-button:disabled{cursor:wait;opacity:.72}.icon-link,.secondary-button{color:var(--violet-deep);background:rgba(255,250,240,.94)}.support-button{color:var(--violet-deep)}.support-button svg{color:#d92d61;fill:rgba(217,45,97,.14)}.large{min-height:52px;padding-inline:20px}.hero{display:grid;min-height:min(690px,calc(100vh - 118px));grid-template-columns:minmax(0,1fr) minmax(340px,.82fr);align-items:center;grid-gap:46px;gap:46px;padding:50px 0 30px}.hero-copy{max-width:640px}.eyebrow{margin:0 0 10px;color:var(--sky-deep);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.78rem;font-weight:900;letter-spacing:0;text-transform:uppercase}.auth-shell h1,.hero h1,.welcome-band h1{margin:0;color:var(--violet-deep);font-size:clamp(3.8rem,12vw,8.8rem);line-height:.9}.hero p{max-width:590px;margin:24px 0;color:#3d365a;font-size:clamp(1.1rem,2.4vw,1.38rem);line-height:1.55}.hero-actions{display:flex;flex-wrap:wrap;gap:14px}.storybook-panel{position:relative;min-height:470px;border:3px solid var(--violet-deep);border-radius:8px;overflow:hidden;background:var(--sky);box-shadow:var(--shadow)}.storybook-panel:after{position:absolute;right:-8%;bottom:-10%;width:70%;height:44%;border:3px solid var(--violet-deep);border-radius:50% 50% 0 0;background:var(--sun);content:""}.book-stack{position:absolute;left:12%;width:54%;height:54px;border:3px solid var(--violet-deep);border-radius:6px;box-shadow:7px 7px 0 rgba(36,16,100,.18)}.book-stack-one{top:36%;background:var(--paper);transform:rotate(-7deg)}.book-stack-two{top:48%;left:20%;background:var(--violet);transform:rotate(4deg)}.book-stack-three{top:60%;background:var(--sun-soft);transform:rotate(-2deg)}.moon-card{position:absolute;top:12%;right:8%;display:inline-flex;align-items:center;gap:8px;border:2px solid var(--violet-deep);border-radius:8px;padding:10px 12px;color:var(--violet-deep);background:var(--paper);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.88rem;font-weight:800}.feature-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px;padding-bottom:24px}.feature-strip div{display:flex;align-items:center;gap:12px;min-height:82px;border:2px solid var(--line);border-radius:8px;padding:18px;background:rgba(255,250,240,.72);font-weight:900}.library-layout{padding-top:28px}.welcome-band{display:flex;align-items:stretch;justify-content:space-between;gap:22px;margin-bottom:22px;border:3px solid var(--violet-deep);border-radius:8px;padding:clamp(20px,4vw,34px);background:linear-gradient(100deg,rgba(64,33,184,.96),rgba(36,16,100,.98)),var(--violet-deep);box-shadow:var(--shadow)}.welcome-band h1{max-width:760px;color:var(--paper);font-size:clamp(2.35rem,7vw,5.5rem)}.donation-card{display:flex;align-items:center;gap:14px;min-width:246px;align-self:center;border:2px solid var(--violet-deep);border-radius:8px;padding:10px;background:#ffffff;box-shadow:5px 5px 0 var(--sky)}.donation-card img{width:78px;height:78px;border:1px solid var(--line)}.donation-card span{display:grid;grid-gap:4px;gap:4px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.donation-card small{color:var(--muted)}.donation-card strong{color:var(--violet-deep)}.library-grid{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);grid-gap:22px;gap:22px;align-items:start}.catalog-panel,.upload-panel{border:2px solid var(--violet-deep);border-radius:8px;background:rgba(255,250,240,.96);box-shadow:8px 8px 0 rgba(121,206,227,.58)}.upload-panel{display:grid;grid-gap:15px;gap:15px;padding:18px;position:-webkit-sticky;position:sticky;top:18px}.catalog-toolbar,.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}.panel-heading{justify-content:flex-start}.catalog-toolbar h2,.panel-heading h2{margin:0;color:var(--violet-deep);font-size:1.3rem}.catalog-toolbar p,.panel-heading p{margin:4px 0 0;color:var(--muted);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.9rem}label{display:grid;grid-gap:7px;gap:7px}label span{color:var(--violet-deep);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.82rem;font-weight:900}input{width:100%;min-height:44px;border:2px solid rgba(36,16,100,.22);border-radius:8px;padding:0 12px;color:var(--ink);background:#ffffff;outline:none}input:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(121,206,227,.35)}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.file-input input{padding-top:10px}.upload-button{justify-content:center}.form-status{margin:0;color:var(--sky-deep);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.9rem;font-weight:800}.catalog-panel{min-height:460px;padding:18px}.search-box{position:relative;display:flex;align-items:center;width:min(260px,100%)}.search-box svg{position:absolute;left:12px;color:var(--muted)}.search-box input{padding-left:38px}.book-shelf{display:grid;grid-gap:12px;gap:12px;margin-top:18px}.book-card{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:stretch;min-height:112px;border:2px solid rgba(36,16,100,.2);border-radius:8px;overflow:hidden;background:#ffffff}.book-card-main{display:grid;grid-template-columns:18px minmax(0,1fr) auto;grid-gap:14px;gap:14px;align-items:center;padding:14px}.book-spine{width:18px;min-height:78px;border:2px solid var(--violet-deep);border-radius:5px;background:linear-gradient(180deg,var(--violet),var(--sky))}.book-detail{display:grid;grid-gap:7px;gap:7px;min-width:0}.book-detail small,.book-detail strong{overflow-wrap:anywhere}.book-detail strong{color:var(--violet-deep);font-size:1.12rem}.book-detail small,.book-meta{color:var(--muted);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.book-meta,.read-badge{display:inline-flex;align-items:center;gap:7px}.read-badge{align-self:center;border:2px solid var(--violet-deep);border-radius:8px;padding:8px 10px;color:var(--violet-deep);background:var(--sun);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.86rem;font-weight:900}.ghost-icon{display:grid;place-items:center;width:42px;height:100%;border:0;border-left:2px solid rgba(36,16,100,.16);color:var(--muted);background:var(--paper-strong);cursor:pointer}.ghost-icon:hover{color:#9c243d;background:#ffe3e9}.empty-state{display:grid;place-items:center;min-height:330px;margin-top:18px;border:2px dashed rgba(36,16,100,.24);border-radius:8px;padding:28px;text-align:center;color:var(--muted)}.empty-state h3{margin:12px 0 5px;color:var(--violet-deep)}.empty-state p{margin:0}.reader-page{width:min(1280px,calc(100% - 28px));min-height:100vh;margin:0 auto;padding:18px 0 28px}.reader-header{min-height:68px}.reader-title{min-width:0;gap:12px}.reader-title h1,.reader-title p{margin:0}.reader-title h1{color:var(--violet-deep);font-size:clamp(1.35rem,3vw,2.2rem)}.reader-title h1,.reader-title p{max-width:52vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-title p{color:var(--muted)}.reader-controls{display:flex;align-items:flex-end;gap:12px;margin:16px 0;border:2px solid var(--violet-deep);border-radius:8px;padding:12px;background:rgba(255,250,240,.96);box-shadow:6px 6px 0 rgba(248,220,62,.65)}.reader-controls label{width:150px}.reader-controls p{margin:0 0 9px;color:var(--muted);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.reader-status{margin-left:auto}.pdf-frame{height:calc(100vh - 170px);min-height:540px;border:3px solid var(--violet-deep);border-radius:8px;overflow:hidden;background:var(--violet-deep);box-shadow:var(--shadow)}.pdf-frame iframe{width:100%;height:100%;border:0;background:#ffffff}.auth-page{display:grid;min-height:100vh;place-items:center;padding:24px}.setup-panel{margin:clamp(40px,10vw,110px) auto;max-width:720px;border:3px solid var(--violet-deep);border-radius:8px;padding:clamp(22px,5vw,42px);background:rgba(255,250,240,.96);box-shadow:var(--shadow)}.setup-panel h1{margin:0;color:var(--violet-deep);font-size:clamp(3rem,10vw,6rem);line-height:.92}.setup-panel p:not(.eyebrow){margin:18px 0 0;color:#3d365a;font-size:1.15rem;line-height:1.55}.setup-panel code{border:1px solid rgba(36,16,100,.18);border-radius:6px;padding:2px 6px;background:#ffffff;color:var(--violet-deep);overflow-wrap:anywhere;white-space:normal}.auth-shell{display:grid;justify-items:center;grid-gap:18px;gap:18px;width:min(520px,100%);text-align:center}.auth-shell h1{font-size:clamp(2.3rem,7vw,4.4rem)}.spin{animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:900px){.hero,.library-grid{grid-template-columns:1fr}.hero{min-height:auto}.storybook-panel{min-height:340px}.welcome-band{flex-direction:column}.donation-card{align-self:flex-start}.upload-panel{position:static}}@media (max-width:680px){.app-shell,.reader-page{width:min(100% - 20px,1180px)}.catalog-toolbar,.reader-controls,.reader-header,.topbar{align-items:stretch;flex-direction:column}.auth-actions,.hero-actions,.nav-actions{width:100%}.auth-actions .primary-button,.auth-actions .secondary-button,.hero-actions .primary-button,.hero-actions .secondary-button,.nav-actions .icon-link,.nav-actions .primary-button{justify-content:center;width:100%}.book-card,.book-card-main,.feature-strip{grid-template-columns:1fr}.book-spine{width:100%;min-height:16px}.read-badge{justify-content:center;width:100%}.ghost-icon{width:100%;min-height:42px;border-top:2px solid rgba(36,16,100,.16);border-left:0}.form-row{grid-template-columns:1fr}.reader-title h1,.reader-title p{max-width:100%}.reader-controls label{width:100%}.reader-status{margin-left:0}.pdf-frame{height:68vh;min-height:420px}}[data-theme=midnight] body{color:#e6edf3;background:#0d1117}[data-theme=midnight] .book-detail strong,[data-theme=midnight] .brand,[data-theme=midnight] .catalog-toolbar h2,[data-theme=midnight] .hero h1,[data-theme=midnight] .panel-heading h2,[data-theme=midnight] .reader-title h1{color:#f0f6fc}[data-theme=midnight] .book-detail small,[data-theme=midnight] .book-meta,[data-theme=midnight] .catalog-toolbar p,[data-theme=midnight] .hero p,[data-theme=midnight] .panel-heading p,[data-theme=midnight] .reader-controls p,[data-theme=midnight] .reader-title p{color:#8b949e}[data-theme=midnight] .eyebrow,[data-theme=midnight] .form-status{color:#58a6ff}[data-theme=midnight] .welcome-band{border-color:#30363d;background:linear-gradient(100deg,#161b22,#0d1117);box-shadow:8px 8px 0 rgba(88,166,255,.24)}[data-theme=midnight] .welcome-band h1{color:#f0f6fc}[data-theme=midnight] .book-card,[data-theme=midnight] .catalog-panel,[data-theme=midnight] .reader-controls,[data-theme=midnight] .setup-panel,[data-theme=midnight] .upload-panel{border-color:#30363d;background:#161b22;box-shadow:8px 8px 0 rgba(88,166,255,.18)}[data-theme=midnight] input{border-color:#30363d;color:#f0f6fc;background:#0d1117}[data-theme=midnight] input::placeholder{color:#8b949e}[data-theme=midnight] label span{color:#f0f6fc}[data-theme=midnight] .donation-card,[data-theme=midnight] .icon-link,[data-theme=midnight] .secondary-button,[data-theme=midnight] .theme-toggle{border-color:#30363d;color:#f0f6fc;background:#161b22}[data-theme=midnight] .primary-button{border-color:#30363d;background:#238636;box-shadow:4px 4px 0 #58a6ff}[data-theme=midnight] .read-badge{border-color:#30363d;color:#0d1117;background:#f2cc60}[data-theme=midnight] .donation-card strong{color:#f0f6fc}[data-theme=midnight] .ghost-icon{color:#8b949e;background:#21262d}[data-theme=midnight] .pdf-frame{border-color:#30363d;background:#010409}