@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&display=swap');

:root { --ink:#17233a; --ink-soft:#526076; --paper:#f7f3ed; --card:#fffdf9; --line:#ded8ce; --gold:#d79d4f; --gold-soft:#f2dfbd; --rose:#b97c79; --sage:#829b8a; --shadow:0 18px 50px rgba(23,35,58,.10); --radius:18px; --serif:'Libre Baskerville', Georgia, serif; --sans:'DM Sans', system-ui, sans-serif; }
* { box-sizing:border-box; }
html { min-height:100%; background:var(--paper); }
body { margin:0; color:var(--ink); font-family:var(--sans); line-height:1.5; }
a { color:inherit; text-decoration:none; }
button,input,textarea,select { font:inherit; }
button { cursor:pointer; }
.landing-body { background:var(--paper); }
.landing-wrap { width:min(1100px, calc(100% - 40px)); margin-inline:auto; }
.site-header { width:min(1180px, calc(100% - 40px)); margin:auto; padding:26px 0; display:flex; justify-content:space-between; align-items:center; }
.brand { display:inline-flex; align-items:center; gap:9px; font-weight:700; letter-spacing:-.03em; font-size:20px; }
.brand-mark { display:grid; place-items:center; width:30px; height:30px; border-radius:10px; background:var(--ink); color:var(--gold-soft); font-size:18px; }
.button { border:0; border-radius:999px; background:var(--ink); color:#fff; padding:13px 20px; display:inline-flex; align-items:center; justify-content:center; gap:12px; font-weight:600; transition:transform .15s, box-shadow .15s, background .15s; box-shadow:0 8px 20px rgba(23,35,58,.13); }
.button:hover { transform:translateY(-1px); box-shadow:0 11px 24px rgba(23,35,58,.18); }
.button-small { padding:9px 15px; font-size:13px; }
.button-ghost { background:transparent; border:1px solid var(--line); color:var(--ink); box-shadow:none; }
.eyebrow { text-transform:uppercase; letter-spacing:.16em; font-size:11px; font-weight:700; color:var(--rose); margin-bottom:14px; }
.hero { padding:74px 0 88px; position:relative; }
.hero h1 { font-family:var(--serif); font-size:clamp(42px, 7vw, 78px); line-height:1.08; font-weight:400; letter-spacing:-.055em; max-width:780px; margin:0; }
.hero h1 em { color:var(--rose); }
.hero-copy { color:var(--ink-soft); font-size:19px; max-width:500px; margin:25px 0; }
.hero-actions { display:flex; align-items:center; gap:22px; flex-wrap:wrap; }
.text-link { color:var(--ink-soft); font-size:14px; border-bottom:1px solid var(--gold); padding-bottom:3px; }
.hero-card { width:min(100%, 710px); height:205px; margin:75px auto 0; border-radius:var(--radius); background:#263752; box-shadow:var(--shadow); position:relative; overflow:hidden; display:flex; align-items:flex-end; padding:28px; gap:12px; }
.hero-card:before { content:''; position:absolute; inset:-50%; background:radial-gradient(circle, rgba(240,201,135,.17) 0 1px, transparent 1.5px) 0 0/34px 34px; transform:rotate(12deg); }
.book-spine { height:126px; width:42px; border-radius:5px 7px 3px 3px; box-shadow:inset -5px 0 0 rgba(0,0,0,.1); z-index:1; }
.spine-1 { background:#c78279; transform:rotate(-5deg); }
.spine-2 { background:#d9aa5a; height:145px; transform:rotate(3deg); }
.spine-3 { background:#91a18f; transform:rotate(8deg); }
.hero-note { z-index:1; background:#fffaf1; color:var(--ink); padding:20px 25px; margin-left:auto; width:260px; box-shadow:0 8px 20px rgba(0,0,0,.15); transform:rotate(-2deg); }
.hero-note span { color:var(--rose); text-transform:uppercase; font-size:10px; letter-spacing:.1em; font-weight:700; }.hero-note strong { display:block; font-family:var(--serif); font-weight:400; font-size:17px; line-height:1.4; margin-top:5px; }.sparkle { position:absolute; top:28px; right:45px; color:var(--gold-soft); font-size:26px; }
.feature-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; padding-bottom:90px; }.feature { background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:28px; }.feature-icon { color:var(--rose); font-size:26px; margin-bottom:22px; }.feature h2 { font-family:var(--serif); font-size:20px; font-weight:400; margin:0 0 10px; }.feature p,.install-section p { color:var(--ink-soft); font-size:14px; margin:0; }.install-section { background:var(--gold-soft); border-radius:var(--radius); padding:50px; display:grid; grid-template-columns:1fr 1fr; gap:50px; align-items:center; }.install-section h2 { font-family:var(--serif); font-weight:400; font-size:31px; line-height:1.2; margin:0 0 15px; }.install-steps { display:grid; gap:18px; }.install-steps div { display:flex; flex-direction:column; gap:4px; padding-bottom:18px; border-bottom:1px solid rgba(23,35,58,.15); }.install-steps div:last-child { border:0; padding:0; }.install-steps b { font-size:14px; }.install-steps span { font-size:13px; color:var(--ink-soft); }.privacy-strip { margin-top:18px; padding:22px 27px; background:var(--card); border:1px solid var(--line); border-radius:var(--radius); display:flex; align-items:center; gap:18px; font-size:13px; }.privacy-strip span { font-weight:700; white-space:nowrap; }.privacy-strip p { margin:0; color:var(--ink-soft); }.privacy-strip a { margin-left:auto; color:var(--rose); white-space:nowrap; }.site-footer { color:var(--ink-soft); font-size:12px; padding:55px 0 30px; display:flex; justify-content:space-between; }.site-footer small { margin-left:6px; }

.app-body { min-height:100vh; background:var(--paper); }.hidden { display:none !important; }.app-shell { min-height:100vh; padding-bottom:80px; }.app-header { height:74px; display:flex; align-items:center; justify-content:space-between; padding:0 max(22px, calc((100% - 1100px)/2)); border-bottom:1px solid var(--line); background:rgba(247,243,237,.9); backdrop-filter:blur(12px); position:sticky; top:0; z-index:5; }.header-actions { display:flex; align-items:center; gap:6px; }.version-label { font-size:10px; color:var(--ink-soft); margin-right:8px; }.icon-button { width:36px; height:36px; border:0; border-radius:50%; background:transparent; color:var(--ink); font-size:20px; display:grid; place-items:center; }.icon-button:hover { background:var(--gold-soft); }.app-main { width:min(1100px, calc(100% - 40px)); margin:0 auto; }.view { display:none; padding:50px 0; }.view.active { display:block; }.view-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:32px; }.view h1 { font-family:var(--serif); font-weight:400; font-size:clamp(29px,5vw,42px); line-height:1.15; letter-spacing:-.04em; margin:0; }.shelf-section { margin:32px 0 48px; }.section-heading { display:flex; justify-content:space-between; align-items:center; margin-bottom:17px; }.section-heading h2 { font-size:12px; text-transform:uppercase; letter-spacing:.15em; margin:0; color:var(--ink-soft); }.book-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:17px; }.book-card { min-height:285px; background:var(--card); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; cursor:pointer; transition:transform .15s, box-shadow .15s; }.book-card:hover { transform:translateY(-3px); box-shadow:var(--shadow); }.cover { height:170px; display:grid; place-items:center; background:linear-gradient(145deg,#304766,#c5827b); color:#fff; position:relative; overflow:hidden; }.cover:after { content:'✦'; position:absolute; top:12px; right:16px; opacity:.55; color:var(--gold-soft); }.cover img { width:100%; height:100%; object-fit:cover; }.cover-fallback { font-family:var(--serif); text-align:center; font-size:18px; line-height:1.2; padding:20px; text-shadow:0 1px 2px #0004; }.book-info { padding:15px; }.book-title { font-family:var(--serif); font-size:15px; line-height:1.35; }.book-author { color:var(--ink-soft); font-size:12px; margin-top:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.progress-track { height:5px; background:#e8e1d8; border-radius:5px; margin-top:15px; overflow:hidden; }.progress-value { height:100%; background:var(--rose); border-radius:5px; }.progress-meta { display:flex; justify-content:space-between; margin-top:6px; color:var(--ink-soft); font-size:11px; }.empty-state { background:var(--card); border:1px dashed var(--line); border-radius:var(--radius); text-align:center; padding:55px 25px; color:var(--ink-soft); }.empty-state .empty-mark { font-size:34px; color:var(--gold); margin-bottom:12px; }.empty-state strong { display:block; color:var(--ink); font-family:var(--serif); font-size:20px; font-weight:400; margin-bottom:7px; }.empty-state p { margin:0 auto 20px; max-width:360px; font-size:14px; }
.search-row { display:flex; gap:10px; margin-bottom:25px; }.search-row input { flex:1; }.search-row input,.modal-card input,.modal-card textarea,.source-form input,.chat-input textarea { border:1px solid var(--line); border-radius:12px; padding:13px 14px; background:var(--card); color:var(--ink); outline:none; }.search-row input:focus,.modal-card input:focus,.modal-card textarea:focus,.source-form input:focus { border-color:var(--gold); box-shadow:0 0 0 3px #f2dfbd88; }.result-list { display:grid; gap:10px; }.result-card { display:flex; gap:15px; align-items:center; padding:13px; background:var(--card); border:1px solid var(--line); border-radius:14px; }.result-thumb { width:48px; height:68px; background:#304766; border-radius:4px; object-fit:cover; flex:0 0 auto; }.result-copy { flex:1; min-width:0; }.result-copy strong { display:block; font-family:var(--serif); font-size:15px; }.result-copy span { display:block; color:var(--ink-soft); font-size:12px; }.result-card .button { flex:0 0 auto; }
.bottom-nav { position:fixed; bottom:0; left:0; right:0; z-index:10; height:70px; background:rgba(255,253,249,.95); border-top:1px solid var(--line); display:flex; justify-content:center; gap:min(9vw,90px); padding-bottom:env(safe-area-inset-bottom); }.nav-item { border:0; background:none; color:var(--ink-soft); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; font-size:11px; min-width:52px; }.nav-item span { font-size:20px; line-height:1; }.nav-item.active { color:var(--rose); }
.back-link { border:0; background:none; color:var(--ink-soft); padding:0; margin-bottom:25px; }.book-hero { display:flex; gap:28px; align-items:flex-start; margin-bottom:30px; }.book-hero .cover { width:170px; height:240px; border-radius:10px; flex:0 0 auto; box-shadow:var(--shadow); }.book-hero-copy { padding-top:8px; }.book-hero-copy h1 { margin-bottom:8px; }.book-hero-copy .author { color:var(--ink-soft); }.badge { display:inline-block; margin-top:15px; background:var(--gold-soft); color:var(--ink); padding:5px 9px; border-radius:999px; font-size:11px; }.detail-actions { display:flex; gap:9px; flex-wrap:wrap; margin:22px 0; }.detail-grid { display:grid; grid-template-columns:1.2fr .8fr; gap:18px; }.panel { background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:23px; }.panel h2 { font-family:var(--serif); font-size:19px; font-weight:400; margin:0 0 14px; }.panel p { color:var(--ink-soft); font-size:14px; }.detail-note-list { display:grid; gap:10px; }.mini-entry { border-left:2px solid var(--gold); padding-left:12px; font-size:13px; color:var(--ink-soft); }.mini-entry small { display:block; color:#9b9489; margin-top:4px; }.inline-form { display:flex; gap:8px; margin-top:14px; }.inline-form input { flex:1; min-width:0; }.progress-editor { display:flex; gap:8px; align-items:center; }.progress-editor input { width:85px; border:1px solid var(--line); border-radius:9px; padding:8px; }
.modal,.reader-modal,.chat-modal { position:fixed; inset:0; z-index:50; background:#17233a66; backdrop-filter:blur(5px); }.modal { display:grid; place-items:center; padding:18px; }.modal-card { position:relative; width:min(530px,100%); max-height:92vh; overflow:auto; background:var(--paper); border-radius:22px; padding:32px; box-shadow:var(--shadow); }.modal-close { position:absolute; right:16px; top:12px; border:0; background:none; color:var(--ink-soft); font-size:28px; }.modal-card h2 { font-family:var(--serif); font-weight:400; font-size:28px; margin:0 0 22px; }.modal-card label,.source-form label { display:block; font-size:12px; font-weight:600; color:var(--ink-soft); margin:14px 0; }.modal-card label input,.modal-card label textarea,.source-form label input { display:block; width:100%; margin-top:6px; }.muted { font-weight:400; color:#9b9489; }.modal-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:22px; }.modal-card hr { border:0; border-top:1px solid var(--line); margin:25px 0 15px; }.upload-book { display:flex; flex-direction:column; gap:3px; color:var(--ink-soft); font-size:13px; }.upload-book b { color:var(--ink); }
.reader-modal,.chat-modal { background:var(--paper); display:flex; flex-direction:column; }.reader-header,.chat-header { flex:0 0 auto; min-height:68px; display:flex; align-items:center; gap:12px; border-bottom:1px solid var(--line); padding:10px max(16px, calc((100% - 850px)/2)); background:var(--card); }.reader-header div,.chat-header div { flex:1; min-width:0; }.reader-header strong,.chat-header strong { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.reader-header small,.chat-header small { display:block; color:var(--ink-soft); font-size:11px; }.reader-selection { display:none; align-items:center; gap:8px; padding:8px max(16px, calc((100% - 780px)/2)); background:var(--gold-soft); color:var(--ink-soft); font-size:11px; }.reader-selection.active { display:flex; }.reader-selection span { flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.reader-selection button { border:1px solid #d7bd8f; border-radius:999px; background:var(--card); color:var(--ink); padding:5px 9px; font-size:11px; }.reader-area { flex:1; width:min(780px,100%); margin:auto; overflow:auto; background:#fffdf9; box-shadow:0 0 35px #17233a0b; }.reader-area iframe { width:100%; height:100%; border:0; }.reader-empty { display:grid; place-items:center; height:100%; padding:30px; text-align:center; color:var(--ink-soft); }.reader-footer { flex:0 0 auto; display:flex; justify-content:space-between; align-items:center; padding:11px max(22px, calc((100% - 780px)/2)); border-top:1px solid var(--line); background:var(--card); }.reader-footer button { border:0; border-radius:50%; width:38px; height:38px; background:var(--gold-soft); color:var(--ink); }.reader-footer span { font-size:12px; color:var(--ink-soft); }
.chat-modal { left:auto; width:min(500px,100%); box-shadow:-15px 0 40px #17233a20; }.chat-header { padding:10px 18px; }.chat-header select { border:1px solid var(--line); border-radius:9px; padding:7px; background:var(--paper); color:var(--ink); font-size:11px; }.chat-messages { flex:1; overflow:auto; padding:22px 18px; display:flex; flex-direction:column; gap:10px; }.chat-bubble { max-width:88%; padding:11px 14px; border-radius:16px; font-size:14px; white-space:pre-wrap; }.chat-bubble.user { align-self:flex-end; background:var(--ink); color:#fff; border-bottom-right-radius:4px; }.chat-bubble.assistant { align-self:flex-start; background:var(--card); border:1px solid var(--line); border-bottom-left-radius:4px; }.chat-bubble small { display:block; color:#aaa; font-size:10px; margin-top:5px; }.chat-context { display:none; padding:8px 16px; background:var(--gold-soft); font-size:11px; color:var(--ink-soft); align-items:center; gap:5px; }.chat-context.active { display:flex; }.chat-context span { flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.chat-context button { border:0; background:none; }.chat-input { display:flex; gap:8px; padding:11px 14px calc(11px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); background:var(--card); }.chat-input textarea { flex:1; resize:none; max-height:100px; }.send-button { width:42px; height:42px; align-self:flex-end; flex:0 0 auto; border:0; border-radius:50%; background:var(--rose); color:#fff; font-size:20px; }.source-card { display:flex; align-items:center; gap:12px; border-bottom:1px solid var(--line); padding:14px 0; }.source-card:last-child { border:0; }.source-card div { flex:1; }.source-card strong { display:block; }.source-card span { display:block; color:var(--ink-soft); font-size:12px; }.source-form { background:var(--gold-soft); padding:18px; border-radius:14px; margin-top:17px; }.source-form .button { margin-top:6px; }.setting-row { display:flex; align-items:center; justify-content:space-between; padding:14px 0; border-bottom:1px solid var(--line); gap:15px; }.setting-row label { font-weight:600; font-size:14px; }.setting-row small { display:block; color:var(--ink-soft); font-weight:400; font-size:12px; }.setting-row select { border:1px solid var(--line); border-radius:8px; padding:7px; background:var(--paper); }.gate { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:20px; background:var(--paper); }.gate-card { width:min(410px,100%); }.gate-card h1 { font-family:var(--serif); font-size:35px; font-weight:400; margin:38px 0 10px; }.gate-card p { color:var(--ink-soft); font-size:14px; margin-bottom:25px; }.gate-card label { display:block; color:var(--ink-soft); font-size:12px; font-weight:600; }.gate-card input { display:block; width:100%; margin:6px 0 12px; border:1px solid var(--line); border-radius:12px; background:var(--card); padding:14px; }.gate-card .button { width:100%; }.gate-card small { display:block; color:#a84f4a; margin-top:10px; }.toast { position:fixed; z-index:200; left:50%; bottom:90px; transform:translate(-50%,20px); background:var(--ink); color:#fff; border-radius:999px; padding:10px 17px; font-size:12px; opacity:0; pointer-events:none; transition:.2s; }.toast.show { opacity:1; transform:translate(-50%,0); }
@media (max-width:700px) { .site-header,.landing-wrap { width:calc(100% - 32px); }.hero { padding:48px 0 55px; }.hero-card { margin-top:50px; height:175px; padding:17px; }.hero-note { width:210px; padding:15px; }.hero-note strong { font-size:14px; }.book-spine { width:28px; height:95px; }.book-spine.spine-2 { height:115px; }.feature-grid,.install-section,.detail-grid { grid-template-columns:1fr; }.feature-grid { padding-bottom:50px; }.install-section { padding:28px; gap:28px; }.privacy-strip { align-items:flex-start; flex-wrap:wrap; gap:8px; }.privacy-strip a { margin-left:0; }.site-footer { flex-direction:column; gap:10px; padding-top:35px; }.app-main { width:calc(100% - 28px); }.view { padding:35px 0; }.view-heading { align-items:flex-start; flex-direction:column; gap:14px; }.book-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; }.book-card { min-height:255px; }.cover { height:145px; }.book-hero { gap:17px; }.book-hero .cover { width:115px; height:165px; }.book-hero-copy h1 { font-size:27px; }.book-hero-copy .button { width:100%; }.result-card { align-items:flex-start; flex-wrap:wrap; }.result-card .button { margin-left:63px; }.chat-modal { width:100%; }.version-label { display:none; } }
