@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:#29243a; --muted:#787286; --purple:#6f5aa8; --purple-dark:#4e3f7e; --lavender:#eee9fa; --paper:#fffdf9; --cream:#f7f3ec; --line:#e6dfd7; }
* { box-sizing:border-box; }
html { background:var(--cream); }
body { margin:0; color:var(--ink); background:var(--cream); font-family:"DM Sans",system-ui,sans-serif; -webkit-font-smoothing:antialiased; }
a { color:inherit; text-decoration:none; }
button { font:inherit; }
.eyebrow { margin:0 0 9px; color:#8f789f; font-size:10px; font-weight:700; letter-spacing:.2em; }

.site-header { height:82px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; padding:0 max(30px,calc((100vw - 1180px)/2)); background:rgba(255,253,249,.94); border-bottom:1px solid var(--line); }
.brand { display:flex; align-items:center; gap:11px; width:fit-content; }
.brand-mark { width:38px; height:38px; display:grid; place-items:center; color:white; background:var(--purple); border-radius:13px 4px; font:italic 700 21px "Libre Baskerville",serif; box-shadow:0 5px 15px rgba(83,61,128,.22); }
.brand strong { display:block; font:700 20px "Libre Baskerville",serif; }
.brand small { display:block; margin-top:1px; color:#9b91a4; font-size:7px; font-weight:700; letter-spacing:.16em; }
.site-nav { align-self:stretch; display:flex; gap:42px; align-items:center; color:#7c7482; font-size:13px; font-weight:600; }
.site-nav a { height:100%; display:grid; align-items:center; position:relative; }
.site-nav a.active { color:var(--purple-dark); }
.site-nav a.active::after { content:""; height:2px; position:absolute; inset:auto 0 0; background:var(--purple); }
.site-nav a[aria-disabled="true"] { opacity:.6; cursor:default; }
.profile-chip { justify-self:end; display:flex; align-items:center; gap:9px; }
.profile-chip>span { width:34px; height:34px; display:grid; place-items:center; border-radius:50%; color:var(--purple-dark); background:var(--lavender); font:700 13px "Libre Baskerville",serif; }
.profile-chip strong,.profile-chip small { display:block; }
.profile-chip strong { font-size:11px; }
.profile-chip small { margin-top:2px; color:#99919d; font-size:8px; }

.library-page { width:min(1080px,calc(100% - 40px)); margin:0 auto; padding:54px 0 80px; }
.welcome-band { display:flex; justify-content:space-between; align-items:end; padding-bottom:42px; }
.welcome-band h1 { margin:0; font:400 34px/1.2 "Libre Baskerville",serif; letter-spacing:-.025em; }
.welcome-copy { margin:10px 0 0; color:var(--muted); font:italic 14px "Libre Baskerville",serif; }
.week-card { display:flex; align-items:center; gap:12px; padding:12px 17px; background:#fffcf6; border:1px solid #e9e1d7; border-radius:13px; box-shadow:0 7px 25px rgba(69,55,49,.05); }
.week-icon { color:#aa8136; font-size:20px; }
.week-card strong,.week-card small { display:block; }
.week-card strong { font:700 12px "Libre Baskerville",serif; }
.week-card small { color:#9a9190; font-size:9px; margin-top:2px; }
.library-section { padding:30px 0 38px; border-top:1px solid var(--line); }
.section-heading { display:flex; align-items:center; justify-content:space-between; margin-bottom:22px; }
.section-heading h2 { margin:0; font:400 22px "Libre Baskerville",serif; }
.import-button { padding:9px 14px; color:#7a6b8e; background:transparent; border:1px solid #d9d0df; border-radius:9px; font-size:11px; font-weight:600; opacity:.75; }
.import-button span { margin-right:4px; font-size:16px; }
.book-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; }
.book-card { display:grid; grid-template-columns:162px 1fr; min-height:225px; overflow:hidden; background:var(--paper); border:1px solid #e4ddd6; border-radius:16px; box-shadow:0 12px 38px rgba(57,43,69,.06); transition:transform .2s,box-shadow .2s; }
.book-card:hover { transform:translateY(-2px); box-shadow:0 17px 44px rgba(57,43,69,.10); }
.book-cover { margin:13px; padding:23px 17px; display:flex; flex-direction:column; align-items:center; text-align:center; color:#fffaf2; border-radius:9px 4px 4px 9px; box-shadow:5px 8px 17px rgba(35,25,38,.23),inset -4px 0 rgba(0,0,0,.08); }
.cover-indigo { background:linear-gradient(145deg,#46396f,#7563a5); }.cover-forest { background:linear-gradient(145deg,#344e4b,#64827c); }.cover-rust { background:linear-gradient(145deg,#75433c,#a76458); }
.cover-kicker { font-size:5px; font-weight:700; letter-spacing:.2em; opacity:.8; }
.book-cover strong { margin:auto 0 6px; font:700 16px/1.35 "Libre Baskerville",serif; }
.book-cover i { font:normal 12px serif; opacity:.7; }.book-cover small { margin-top:auto; font-size:6px; font-weight:600; letter-spacing:.14em; opacity:.78; }
.book-details { padding:25px 22px 20px 8px; display:flex; flex-direction:column; }
.status-pill { padding:4px 7px; color:#765e96; background:#eee8f6; border-radius:5px; font-size:7px; font-weight:700; letter-spacing:.12em; }
.book-details h3 { margin:12px 0 4px; font:700 17px "Libre Baskerville",serif; }.book-details p { margin:0; color:#8e8791; font-size:9px; }
.book-progress { margin:auto 0 15px; }.progress-label { display:flex; justify-content:space-between; margin-bottom:7px; color:#8d8490; font-size:8px; }.progress-label strong { color:#665779; }
.progress-track { height:3px; overflow:hidden; background:#e9e5e9; border-radius:99px; }.progress-track span { height:100%; display:block; background:#856eab; border-radius:inherit; }
.read-button { display:flex; justify-content:space-between; align-items:center; padding-top:12px; color:#594774; border-top:1px solid #ebe6e2; font-size:10px; font-weight:700; }.read-button span { font-size:15px; transition:transform .2s; }.read-button:hover span { transform:translateX(3px); }
.empty-shelf { padding:50px; text-align:center; background:var(--paper); border:1px dashed #d8cedc; border-radius:16px; }.empty-glyph { width:52px; height:52px; display:grid; place-items:center; margin:0 auto 15px; color:var(--purple); background:var(--lavender); border-radius:50%; font:italic 16px "Libre Baskerville",serif; }.empty-shelf h3 { margin:0; font:700 16px "Libre Baskerville",serif; }.empty-shelf p { color:var(--muted); font-size:12px; }
.daily-note { width:74%; margin:38px auto 0; padding:28px 45px; display:flex; gap:25px; background:#f1ede4; border-radius:3px 22px; }.note-mark { color:#b69f77; font:400 52px/.8 "Libre Baskerville",serif; }.daily-note blockquote { margin:0; font:italic 15px/1.6 "Libre Baskerville",serif; }.daily-note div>p:last-child { margin:8px 0 0; color:#8e857b; font-size:10px; }

/* My Words */
.words-page { width:min(920px,calc(100% - 40px)); margin:0 auto; padding:58px 0 90px; }
.words-intro { display:flex; align-items:end; justify-content:space-between; gap:30px; padding-bottom:30px; border-bottom:1px solid var(--line); }.words-intro h1 { margin:0; font:400 34px "Libre Baskerville",serif; }.words-intro div>p:last-child { max-width:580px; margin:10px 0 0; color:var(--muted); font:italic 12px/1.7 "Libre Baskerville",serif; }.words-count { flex:none; padding:8px 12px; color:#685579; background:var(--lavender); border-radius:99px; font-size:9px; font-weight:700; }
.words-search { display:grid; grid-template-columns:1fr auto auto; gap:9px; align-items:center; margin:25px 0; }.words-search>label { width:1px; height:1px; position:absolute; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }.words-search>div { position:relative; }.words-search>div>span { position:absolute; top:10px; left:13px; color:#96899d; font-size:17px; }.words-search input { width:100%; padding:12px 14px 12px 40px; color:#463b4c; background:var(--paper); border:1px solid #ded6df; border-radius:10px; outline:none; font-size:10px; }.words-search input:focus { border-color:#9078aa; box-shadow:0 0 0 3px #eee7f4; }.words-search button { padding:12px 18px; color:white; background:var(--purple); border:1px solid var(--purple); border-radius:9px; font-size:9px; font-weight:700; cursor:pointer; }.words-search button:hover { background:var(--purple-dark); }.clear-word-search { padding:11px 5px; color:#776b7e; font-size:9px; font-weight:600; }
.words-list { display:grid; gap:14px; }.word-entry { padding:24px 26px 21px; background:var(--paper); border:1px solid #e3dcd5; border-radius:14px; box-shadow:0 10px 30px rgba(59,44,64,.05); }.word-entry-heading { display:flex; align-items:start; justify-content:space-between; gap:20px; }.word-entry-heading h2 { margin:0; color:#463754; font:700 22px "Libre Baskerville",serif; }.word-entry-meta { display:flex; gap:8px; min-height:13px; margin:6px 0 0; color:#958a96; font-size:8px; }.word-entry-meta span:empty { display:none; }.word-entry-meta span+span:not(:empty)::before { content:"·"; margin-right:8px; }.remove-word-form button { padding:7px 10px; color:#8c6971; background:transparent; border:1px solid #e3d4d5; border-radius:7px; font-size:8px; cursor:pointer; }.remove-word-form button:hover { color:#8b4d58; background:#fbf0f0; border-color:#e5c5c9; }
.word-entry-meaning { margin:17px 0 15px; padding:14px 16px; background:#f5f1f8; border-radius:9px; }.word-entry-meaning>strong { color:#544160; font:700 13px "Libre Baskerville",serif; }.word-entry-meaning p { display:flex; gap:9px; align-items:baseline; margin:8px 0 0; color:#645c68; font:400 10px/1.6 "Libre Baskerville",serif; }.word-entry-meaning small { flex:none; color:#9a86a3; font:700 6px "DM Sans",sans-serif; letter-spacing:.13em; }.word-entry-sentence { margin:0; padding-left:14px; color:#665d68; border-left:2px solid #d8cbe1; font:italic 11px/1.75 "Libre Baskerville",serif; }.word-entry-source { display:flex; align-items:end; justify-content:space-between; gap:18px; margin-top:18px; padding-top:14px; border-top:1px solid #ece6e1; }.word-entry-source span,.word-entry-source small { display:block; }.word-entry-source span { color:#665671; font:700 9px "Libre Baskerville",serif; }.word-entry-source small { margin-top:4px; color:#9b929b; font-size:7px; }.word-entry-source a { flex:none; color:#66517c; font-size:8px; font-weight:700; }
.words-empty { padding:60px 25px; text-align:center; background:var(--paper); border:1px dashed #d8cedc; border-radius:15px; }.words-empty-mark { width:54px; height:54px; display:grid; place-items:center; margin:0 auto 17px; color:var(--purple); background:var(--lavender); border-radius:50%; font:italic 16px "Libre Baskerville",serif; }.words-empty h2 { margin:0; font:700 17px "Libre Baskerville",serif; }.words-empty p { max-width:480px; margin:10px auto 20px; color:var(--muted); font:400 11px/1.7 "Libre Baskerville",serif; }.words-empty a { display:inline-flex; align-items:center; gap:18px; padding:10px 15px; color:white; background:var(--purple); border-radius:8px; font-size:9px; font-weight:700; }

/* Import and preprocessing */
.import-page,.processing-page { min-height:100vh; padding:42px 20px 80px; background:radial-gradient(circle at 50% 20%,#fffdf9 0,#f7f3ec 62%); }
.import-back { width:min(720px,100%); display:block; margin:0 auto 25px; color:#776985; font-size:11px; font-weight:600; }
.import-card,.processing-card { width:min(720px,100%); margin:0 auto; padding:48px 58px; background:var(--paper); border:1px solid #e4dcd6; border-radius:18px; box-shadow:0 20px 60px rgba(55,42,62,.09); }
.import-intro { text-align:center; }.import-glyph { width:48px; height:48px; display:grid; place-items:center; margin:0 auto 18px; color:white; background:var(--purple); border-radius:15px 5px; font-size:22px; box-shadow:0 9px 20px rgba(76,53,114,.22); }
.import-intro h1,.processing-card h1 { margin:0; font:400 28px/1.3 "Libre Baskerville",serif; }.import-intro>p:last-child,.processing-card>p { max-width:500px; margin:12px auto 0; color:#827985; font:italic 11px/1.7 "Libre Baskerville",serif; }
.import-form { display:grid; gap:22px; margin-top:34px; padding-top:28px; border-top:1px solid #ebe5df; }.import-form label>span { display:block; margin-bottom:8px; color:#5e5664; font-size:9px; font-weight:700; letter-spacing:.05em; }
.file-drop { position:relative; padding:32px; text-align:center; background:#f7f3f9; border:1px dashed #cdbed7; border-radius:12px; transition:.2s; }.file-drop:hover { background:#f2ebf7; border-color:#9479a9; }.file-drop strong,.file-drop small { display:block; }.file-drop strong { color:#5b486f; font:700 12px "Libre Baskerville",serif; }.file-drop small { margin-top:7px; color:#9c919f; font-size:8px; }.file-drop input { position:absolute; inset:0; width:100%; opacity:0; cursor:pointer; }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }.field-row input { width:100%; padding:12px 13px; color:#443b49; background:white; border:1px solid #ded6df; border-radius:8px; outline:none; font-size:10px; }.field-row input:focus { border-color:#9178aa; box-shadow:0 0 0 3px #eee7f4; }.field-row input::placeholder { color:#b1a9b2; }
.rights-check { display:flex; align-items:start; gap:9px; }.rights-check input { margin-top:1px; accent-color:var(--purple); }.rights-check span { margin:0!important; color:#817783!important; font-size:9px!important; font-weight:400!important; letter-spacing:0!important; }
.submit-import { display:flex; justify-content:center; align-items:center; gap:18px; padding:13px 20px; color:white; background:var(--purple); border:0; border-radius:9px; box-shadow:0 8px 20px rgba(77,58,111,.18); font-size:10px; font-weight:700; cursor:pointer; }.submit-import:hover { background:var(--purple-dark); }.submit-import span { font-size:14px; }
.form-errors { margin:24px 0 -10px; padding:13px 16px; color:#8a4747; background:#fbefed; border:1px solid #edcfcb; border-radius:9px; font-size:9px; }.form-errors strong { font-size:10px; }.form-errors ul { margin:6px 0 0; padding-left:16px; }.privacy-note { color:#9d949e; text-align:center; font-size:8px; }
.processing-card { padding-block:65px; text-align:center; }.processing-orbit { width:80px; height:80px; position:relative; margin:0 auto 28px; }.processing-orbit::before,.processing-orbit::after { content:""; position:absolute; inset:0; border:1px solid #d9cede; border-radius:50%; animation:spin 5s linear infinite; }.processing-orbit::after { inset:12px; border-color:#a990bc transparent #a990bc transparent; animation-duration:2s; }.processing-orbit span { width:22px; height:22px; position:absolute; z-index:2; inset:29px; background:var(--purple); border-radius:50%; box-shadow:0 0 24px #a585ba; }.processing-orbit i,.processing-orbit b { width:7px; height:7px; position:absolute; z-index:3; background:#b4905a; border-radius:50%; }.processing-orbit i { top:3px; left:22px; }.processing-orbit b { right:2px; bottom:20px; }
.processing-steps { width:min(390px,100%); display:grid; gap:12px; margin:32px auto 25px; padding:0; text-align:left; list-style:none; }.processing-steps li { display:flex; align-items:center; gap:12px; color:#a198a2; font-size:9px; }.processing-steps li span { width:24px; height:24px; display:grid; place-items:center; flex:none; border:1px solid #ddd5de; border-radius:50%; font-size:8px; }.processing-steps li.done { color:#6f7c66; }.processing-steps li.done span { color:white; background:#7f9276; border-color:#7f9276; }.processing-steps li.active { color:#564563; font-weight:700; }.processing-steps li.active span { color:white; background:var(--purple); border-color:var(--purple); box-shadow:0 0 0 4px #eee8f3; }
.refresh-status { display:inline-block; padding:9px 15px; color:#6c5b7a; border:1px solid #d8cfda; border-radius:8px; font-size:9px; font-weight:700; }.ready-mark,.failed-mark { width:58px; height:58px; display:grid; place-items:center; margin:0 auto 22px; color:white; background:#788f72; border-radius:50%; font-size:22px; box-shadow:0 8px 22px rgba(74,105,70,.2); }.failed-mark { background:#a85f58; }.processing-card>.submit-import { width:240px; margin:28px auto 0; }

/* Immersive reader */
.reader-page { --reader-text-scale:1; min-height:100vh; background:#f8f5ef; }
.reader-header { height:70px; position:sticky; z-index:20; top:0; display:grid; grid-template-columns:90px 1fr auto; align-items:center; padding:0 30px; background:rgba(255,253,249,.96); border-bottom:1px solid var(--line); backdrop-filter:blur(10px); }
.reader-home { width:32px; height:32px; display:grid; place-items:center; color:#645773; border:1px solid #ddd5df; border-radius:50%; font-size:16px; }
.reader-book-title { justify-self:center; text-align:center; }.reader-book-title span { display:block; font:700 12px "Libre Baskerville",serif; }.reader-book-title small { display:block; margin-top:4px; color:#9b929b; font-size:8px; letter-spacing:.05em; }
.reader-tools { display:flex; align-items:center; gap:6px; }.reader-words-link { margin-right:6px; padding:7px 10px; color:#685776; border:1px solid #ddd5df; border-radius:7px; font-size:8px; font-weight:700; }.reader-words-link:hover { color:white; background:var(--purple); border-color:var(--purple); }.reader-tools button { width:32px; height:28px; color:#766b7a; background:transparent; border:1px solid #dfd9df; border-radius:7px; font-size:9px; cursor:pointer; }.reader-percent { margin-left:10px; color:#776485; font-size:10px; font-weight:700; }
.reader-progress-line { height:2px; position:absolute; inset:auto 0 0; }.reader-progress-line span { display:block; height:100%; background:var(--purple); transition:width .3s; }
.reader-main { width:min(1320px,100%); min-height:calc(100vh - 70px); margin:0 auto; display:grid; grid-template-columns:215px minmax(500px,690px) 235px; justify-content:center; gap:45px; }
.chapter-rail,.companion-rail { padding-top:74px; }.chapter-rail { border-right:1px solid #e8e1da; }.chapter-rail ol { margin:22px 0 0; padding:0; list-style:none; }
.chapter-rail li a { min-height:55px; display:flex; gap:12px; align-items:center; padding:10px 20px 10px 0; color:#9a9298; }.chapter-rail li>a>span { font:italic 10px "Libre Baskerville",serif; }.chapter-rail strong,.chapter-rail small { display:block; }.chapter-rail strong { overflow:hidden; color:#777079; font:400 10px "Libre Baskerville",serif; text-overflow:ellipsis; white-space:nowrap; }.chapter-rail small { margin-top:4px; color:#aaa1a6; font-size:7px; }
.chapter-rail li.current { position:relative; }.chapter-rail li.current::after { content:""; width:3px; position:absolute; inset:8px -2px 8px auto; background:var(--purple); border-radius:99px; }.chapter-rail li.current a { color:var(--purple); }.chapter-rail li.current strong { color:var(--purple-dark); font-weight:700; }
.reading-stage { padding:65px 0 70px; }.chapter-label { display:flex; align-items:center; justify-content:center; gap:12px; color:#967aa2; font-size:8px; font-weight:700; letter-spacing:.17em; }.chapter-label i { width:30px; height:1px; background:#d6c9d9; }.chapter-label small { color:#a69ca5; font-size:7px; letter-spacing:.08em; }
.reading-stage>h1 { margin:18px 0 10px; text-align:center; font:400 29px "Libre Baskerville",serif; }.selection-hint { margin:0 0 34px; color:#a39ba0; text-align:center; font:italic 9px "Libre Baskerville",serif; }.selection-hint span { margin-right:3px; color:#927e9b; }
.reading-paper { min-height:520px; padding:42px 54px 45px; cursor:text; background:var(--paper); border:1px solid #e8e0d8; border-radius:4px; box-shadow:0 17px 50px rgba(58,44,50,.07); }
.reading-line { margin:0 0 calc(12px*var(--reader-text-scale)); color:#3f3942; font:400 calc(15.5px*var(--reader-text-scale))/1.8 "Libre Baskerville",Georgia,serif; letter-spacing:.003em; transition:font-size .2s; }.reading-line::selection,.reading-line *::selection { color:#3f3151; background:#dcd0ee; }.reading-line:last-child { margin-bottom:0; }
.page-navigation { min-height:70px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; margin-top:20px; }.page-link { display:flex; align-items:center; gap:10px; color:#817684; }.page-link.next { justify-self:end; text-align:right; }.page-link>span { width:30px; height:30px; display:grid; place-items:center; border:1px solid #d9d0da; border-radius:50%; transition:.2s; }.page-link:hover>span { color:white; background:var(--purple); border-color:var(--purple); }.page-link small,.page-link strong { display:block; }.page-link small { margin-bottom:3px; color:#aaa0aa; font-size:6px; font-weight:700; letter-spacing:.13em; }.page-link strong { font:400 9px "Libre Baskerville",serif; }.page-dots { display:flex; gap:5px; }.page-dots i { width:4px; height:4px; background:#d4cdd3; border-radius:50%; }.page-dots i.active { width:14px; background:#8b75a0; border-radius:99px; }
.companion-heading { display:flex; gap:9px; align-items:center; padding-bottom:14px; border-bottom:1px solid #e5ddd6; }.companion-heading>span { width:27px; height:27px; display:grid; place-items:center; color:#806695; background:#eee7f4; border-radius:9px; font-size:11px; }.companion-heading strong,.companion-heading small { display:block; }.companion-heading strong { font:700 10px "Libre Baskerville",serif; }.companion-heading small { margin-top:3px; color:#a29a9e; font-size:6px; }.companion-list { padding:14px 0; }.companion-item { padding:10px 0; border-bottom:1px solid #ebe5df; }.companion-item strong { color:#5e4a73; font:700 10px "Libre Baskerville",serif; }.companion-item p { margin:5px 0 0; color:#91878f; font-size:8px; line-height:1.55; }.companion-tip { margin-top:28px; padding:16px; color:#7f746d; background:#f0ebe1; border-radius:2px 14px; }.companion-tip span { color:#a98b58; }.companion-tip p { margin:8px 0 0; font:italic 9px/1.7 "Libre Baskerville",serif; }
.word-popover { width:360px; position:fixed; z-index:50; overflow:hidden; background:#fffdf9; border:1px solid #d9cfdf; border-radius:14px; box-shadow:0 18px 55px rgba(54,38,68,.23); animation:pop-in .16s ease-out; }.word-popover[hidden] { display:none; }.popover-top { display:flex; justify-content:space-between; padding:20px 21px 13px; }.popover-label { color:#a08aa8; font-size:6px; font-weight:700; letter-spacing:.16em; }.popover-top h2 { margin:4px 0 0; color:#3f3350; font:700 21px "Libre Baskerville",serif; }.popover-top button { align-self:start; color:#a097a0; background:transparent; border:0; font-size:22px; cursor:pointer; }.popover-body { padding:0 21px 20px; }
.meaning-row { display:flex; justify-content:space-between; align-items:center; }.meaning-row strong { color:#554564; font:700 15px "Libre Baskerville",serif; }.speak-button { width:27px; height:27px; display:grid; place-items:center; color:#755f8d; background:#eee7f4; border:0; border-radius:50%; font-size:8px; cursor:pointer; transition:.16s; }.speak-button:hover { color:white; background:#8268a0; }.speak-button.speaking { color:white; background:var(--purple); box-shadow:0 0 0 4px #eee7f4; animation:speech-pulse 1.15s ease-in-out infinite; }.word-meta { display:flex; gap:8px; margin:8px 0 15px; color:#968b96; font-size:8px; }.word-meta span+span::before { content:"·"; margin-right:8px; }.simple-definition { padding:12px 14px; background:#f5f1f8; border-radius:8px; }.simple-definition small { color:#9a86a3; font-size:6px; font-weight:700; letter-spacing:.15em; }.simple-definition p { margin:6px 0 0; color:#514958; font:400 10px/1.55 "Libre Baskerville",serif; }.usage-note { display:flex; gap:8px; margin:13px 0; color:#726875; font-size:9px; line-height:1.55; }.usage-note span { color:#9a7eb0; }.save-word-button { width:100%; padding:9px; color:#675374; background:transparent; border:1px solid #d5c8dc; border-radius:8px; font-size:8px; font-weight:700; cursor:pointer; transition:.16s; }.save-word-button:hover { color:white; background:var(--purple); border-color:var(--purple); }.save-word-button[data-saved="true"] { color:#536b50; background:#eef4eb; border-color:#cad9c4; }.save-word-button[data-saved="true"]:hover { color:#72545b; background:#f7ecec; border-color:#e2c9cd; }.save-word-button:disabled { opacity:.65; cursor:wait; }.save-word-feedback { min-height:12px; margin:7px 0 -5px; color:#668060; text-align:center; font-size:7px; }.save-word-feedback.error { color:#a05058; }.explanation-loading,.explanation-error { padding:25px 5px; color:#8d828f; text-align:center; font-size:10px; }.explanation-loading span { width:11px; height:11px; display:inline-block; margin-right:7px; border:2px solid #d7ccdc; border-top-color:var(--purple); border-radius:50%; animation:spin .7s linear infinite; vertical-align:middle; }.explanation-error { color:#9d5252; }
@keyframes spin { to { transform:rotate(360deg); } } @keyframes pop-in { from { opacity:0; transform:translateY(-5px) scale(.98); } } @keyframes speech-pulse { 50% { box-shadow:0 0 0 7px rgba(111,90,168,.12); } }
@media(max-width:1050px){.reader-main{grid-template-columns:170px minmax(480px,650px);gap:30px;padding:0 24px}.companion-rail{display:none}}
@media(max-width:760px){.site-header{grid-template-columns:1fr auto auto;gap:14px;padding:0 20px}.site-nav{gap:0}.site-nav a{display:none}.site-nav a:nth-child(2){height:38px;display:grid;padding:0 10px;border:1px solid #ddd5df;border-radius:8px}.site-nav a:nth-child(2).active::after{display:none}.book-grid{grid-template-columns:1fr}.daily-note{width:100%}.words-page{width:calc(100% - 28px);padding-top:38px}.words-intro{align-items:start}.reader-header{grid-template-columns:42px 1fr auto;padding:0 14px}.reader-tools button{display:none}.reader-main{display:block;padding:0 16px}.chapter-rail{display:none}.reading-stage{padding-top:35px}.reading-paper{min-height:480px;padding:30px 25px}.word-popover{width:calc(100vw - 32px);left:16px!important}}
@media(max-width:520px){.profile-chip div{display:none}.library-page{width:calc(100% - 28px);padding-top:35px}.welcome-band{display:block}.week-card{width:fit-content;margin-top:22px}.book-card{grid-template-columns:130px 1fr}.book-cover{padding-inline:10px}.daily-note{padding:25px}.words-intro{display:block}.words-count{display:inline-block;margin-top:18px}.words-search{grid-template-columns:1fr auto}.clear-word-search{grid-column:1/-1;padding:0}.word-entry{padding:20px 18px}.word-entry-source{align-items:start;flex-direction:column}.import-card,.processing-card{padding:36px 24px}.field-row{grid-template-columns:1fr}}
