/* Sentence / Night. Shared tokens keep Paper equally readable. */
:root{--button-radius:6px;--button-height:44px;--bg:#1b1c19;--surface:#242521;--ink:#e4e1d8;--muted:#aaa99f;--line:#3d3e38;--accent:#e4e1d8;--accent-soft:#65665d;--shadow:0 16px 50px #0003;--reader-ink:var(--ink)!important;--reader-bg-top:var(--bg)!important;--reader-bg-bottom:var(--bg)!important;--reader-bg-halo:transparent!important;--night-line-height:1.45;color-scheme:dark}
:root[data-theme=paper]{--bg:#f5f2eb;--surface:#ece9e1;--ink:#282925;--muted:#65665e;--line:#d1cec4;--accent:#282925;--accent-soft:#95968b;--shadow:0 16px 50px #28292512;color-scheme:light}
:root{--panel-bg:var(--bg);--panel-surface:var(--surface);--panel-ink:var(--ink);--panel-muted:var(--muted);--panel-line:var(--line)}
html{background:var(--bg)}body{background:var(--bg);color:var(--ink)}
body.night-app{font-family:Arial,Helvetica,sans-serif;font-size:15px;line-height:1.5}
.night-app button,.night-app input,.night-app select{font:inherit;color:var(--ink);border-color:var(--line);border-radius:6px;min-height:44px;background:transparent;box-shadow:none}
.night-app button{font-weight:400}.night-app button:disabled{opacity:.45;cursor:default}.night-app button:disabled:hover{background:transparent}.night-app button:hover{background:var(--surface)}
.night-app :focus-visible{outline:2px solid var(--ink);outline-offset:4px}
.night-app [hidden]{display:none!important}
.night-app .library-screen,.night-app .reader-shell{background:var(--bg)}
.night-app .library-screen{padding:24px 24px 100px;overflow:visible}
.night-app .library-header{max-width:1050px;padding:0 0 44px;position:relative;display:flex;align-items:center;justify-content:space-between}
.night-app .library-header h1{font:32px Georgia,serif;letter-spacing:-1px;margin:0;order:-1}
.night-app .library-topline{margin:0}.night-app .library-header .eyebrow,.night-app .library-copy,.night-app .home-link-button,.night-app .library-header .language-button{display:none}
.night-app .settings-button{font-size:24px;background:none;border:0;color:var(--muted);width:44px;height:44px}
.night-app .library-tab-strip-top,.night-app .library-bottom-bar,.night-app .continue-dock{display:none!important}
.night-app #installCard.is-hidden{display:none}
.night-app #installCard{position:static;display:grid;grid-template-columns:48px 1fr;gap:14px 18px;align-items:center;max-width:710px;margin:12px 0 32px;padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:none}
.night-app #installCard img{border-radius:12px}
.night-app #installCard strong{display:block;font:21px/1.3 Georgia,serif;margin-bottom:5px}
.night-app #installCard span{display:block;color:var(--muted);font-size:13px}
.night-app #installCard .install-actions{grid-column:2;display:flex;flex-wrap:wrap;gap:8px}
.night-app #installCard button{padding:8px 12px;font-size:13px}
.night-app #dismissInstall{border:0;color:var(--muted)}
.night-install-help{padding:24px 0}.night-install-help a{display:inline-block;color:var(--ink);padding:10px 0}
.night-app:not([data-destination=games]):not([data-destination=add]) .library-section{display:none}
.night-content{max-width:1050px;margin:auto}
.night-kicker{font-size:10px;letter-spacing:.16em;color:var(--muted);margin:0 0 12px;line-height:1.6}
.night-content h2{font:clamp(32px,4vw,48px)/1.2 Georgia,serif;letter-spacing:-1.2px;margin:0 0 30px}
.night-content h3{font:25px/1.3 Georgia,serif;letter-spacing:-.4px;margin:0}
.night-muted,.night-intro{color:var(--muted);font-size:14px;line-height:1.6}
.night-intro{max-width:540px;margin:-12px 0 24px}
.night-current{display:grid;grid-template-columns:170px 1fr;gap:36px;align-items:center;padding:0 0 36px;max-width:710px}
.night-current h3{font-size:30px;margin-bottom:8px}.night-current p{margin:8px 0}.night-current-progress{font-size:13px;color:var(--muted);padding-top:16px}
.night-app .night-primary{background:var(--surface);border:1px solid var(--accent-soft);font:17px Georgia,serif;padding:12px 24px;margin-top:12px;min-width:180px}
.night-app .night-primary:hover{background:var(--line)}
.night-cover{position:relative;aspect-ratio:2/3;background:var(--surface);border:1px solid var(--line);border-radius:3px;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:12px;color:var(--ink);width:100%;box-shadow:2px 5px 12px #0002}
.night-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.night-cover small{font-size:7px;letter-spacing:.1em}.night-cover strong{font:20px Georgia,serif}.night-cover span{font-size:10px}
.night-section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:12px 0 24px;padding-top:24px;border-top:1px solid var(--line)}
.night-section-heading button{border:0;color:var(--muted);white-space:nowrap}
#nightLibrary>.night-section-heading{padding:0;border:0;margin:0 0 24px}#nightLibrary>.night-section-heading h2{margin:0}
.night-shelf{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:22px}
.night-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:28px 22px;padding-bottom:24px}
.night-book{position:relative;min-width:0}.night-app .night-book-open{padding:0;border:0;text-align:left;border-radius:3px;width:100%;display:flex;flex-direction:column;height:100%;justify-content:start;background:transparent;gap:5px}
.night-book-open>.night-cover{margin-bottom:8px}.night-book-open>strong{font:17px/1.3 Georgia,serif;padding-right:20px}.night-book-open>span{font-size:12px;color:var(--muted);padding-right:20px}
.night-book-open:hover .night-cover{border-color:var(--accent-soft)}.night-app .night-book-menu{position:absolute;bottom:0;right:-8px;width:44px;min-width:44px;padding:0;border:0;font-size:23px}
.night-footnote{font:italic 16px Georgia,serif;text-align:center;color:var(--muted);padding:32px 0;margin:20px 0}
.night-first-visit>.night-section-heading,.night-first-visit>#nightHomeShelf,.night-first-visit>.night-footnote{display:none}
.night-starters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;max-width:820px;margin:32px 0 20px}
.night-app .night-starter{display:flex;flex-direction:column;gap:20px;padding:0;border:0;background:transparent;text-align:left;width:100%}
.night-starter .night-cover{max-width:170px}
.night-starter-copy{display:flex;flex-direction:column;gap:8px}
.night-starter-copy>strong{font:23px/1.2 Georgia,serif;font-weight:400}
.night-starter-copy>.night-muted{font-size:12px}
.night-starter-action{align-self:start;display:inline-flex;align-items:center;min-height:44px;padding:8px 18px;border:1px solid var(--accent-soft);border-radius:6px;background:var(--surface);font-size:14px}
.night-app .night-explore{border:0;padding:12px 0;color:var(--muted);margin-top:12px}
@media(max-width:600px){.night-starters{grid-template-columns:1fr;gap:22px;margin-top:24px}.night-app .night-starter{display:grid;grid-template-columns:76px 1fr;align-items:center;gap:18px}.night-starter-copy{gap:5px}.night-starter-copy>strong{font-size:20px}.night-starter-action{padding:6px 14px}.night-first-visit .night-intro{margin-bottom:12px}}
.night-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-evenly;align-items:center;z-index:20;background:var(--bg);border-top:1px solid var(--line);padding:8px 12px max(8px,env(safe-area-inset-bottom))}
.night-app .night-nav button{display:flex;flex-direction:column;align-items:center;gap:5px;border:0;border-radius:0;min-width:72px;padding:4px 10px 8px;font-size:12px;color:var(--muted)}
.night-nav button[aria-current=page]{color:var(--ink);box-shadow:inset 0 -2px var(--ink)}
.night-nav svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.night-nav-brand{display:none}.night-search{display:grid;gap:8px;font-size:12px;color:var(--muted);margin:0 0 24px}
.night-app .night-search input{width:100%;padding:12px 14px;border:1px solid var(--line);background:transparent;min-height:48px;font-size:15px}
.night-library-tools{display:flex;justify-content:space-between;gap:10px;align-items:center;border-bottom:1px solid var(--line)}
#nightLibrary>.night-section-heading{flex-direction:row;align-items:center;gap:16px}
.night-library-actions{display:flex;flex-wrap:wrap;gap:10px}
.night-app .night-library-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:10px 14px;border:1px solid var(--ink);border-radius:9px;background:transparent;color:var(--ink);font:14px/1.4 Arial,sans-serif;white-space:nowrap;cursor:pointer}
.night-app .night-library-actions .night-add-books{background:var(--ink);color:var(--bg)}
.night-app .night-library-actions button:hover{background:var(--surface)}
.night-app .night-library-actions .night-add-books:hover{background:var(--ink);color:var(--bg)}
@media(max-width:600px){#nightLibrary>.night-section-heading{flex-wrap:wrap}#nightLibrary>.night-section-heading h2{flex-basis:100%}.night-library-actions{width:100%}.night-app .night-library-actions button{flex:1}}
.night-tabs{display:flex}.night-app .night-tabs button{border:0;border-radius:0;padding:8px 16px;color:var(--muted)}
.night-tabs button[aria-pressed=true]{color:var(--ink);box-shadow:inset 0 -2px var(--ink)}
.night-app #nightListToggle{border:0;font-size:12px;padding:8px;color:var(--muted)}
.night-list{grid-template-columns:1fr!important;gap:0}.night-list .night-book{padding:16px 0;border-bottom:1px solid var(--line)}
.night-list .night-book-open{display:grid;grid-template-columns:64px 1fr;grid-template-rows:1fr 1fr;column-gap:18px}.night-list .night-cover{grid-row:1/3;margin:0}.night-list .night-book-open>strong{align-self:end}.night-list .night-book-open>span{align-self:start}.night-list .night-book-menu{bottom:42px}
.night-collections{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.night-collections button{font-size:13px;padding:8px 14px}.night-collections button[aria-pressed=true]{border-color:var(--ink);background:var(--surface)}
.night-empty{grid-column:1/-1;padding:48px 16px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:6px}.night-empty h3{color:var(--ink)}
.bookshop-carousel{margin:32px 0 40px;padding:24px 0 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}
.bookshop-carousel-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:10px}
.bookshop-carousel-heading .night-kicker{margin-bottom:6px}
.bookshop-carousel-controls{display:flex;gap:6px;flex-shrink:0}
.night-app .bookshop-carousel-controls button{min-width:44px;padding:8px 12px;border:1px solid var(--line);border-radius:30px;font-size:13px}
.bookshop-carousel-track{position:relative;display:flex;gap:26px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;padding:22px 8px 24px;scroll-padding-inline:8px}
.bookshop-carousel-track::-webkit-scrollbar{display:none}
.bookshop-carousel-item{flex:0 0 174px;min-width:0;scroll-snap-align:start}
.night-app .bookshop-carousel-book{display:flex;flex-direction:column;gap:7px;width:100%;padding:0;text-align:left;background:transparent;border:0}
.bookshop-carousel-book .night-cover{margin-bottom:10px;box-shadow:5px 10px 18px #0003;transform:perspective(700px) rotateY(-7deg);transition:transform 220ms ease,box-shadow 220ms ease}
.bookshop-carousel-book:hover .night-cover,.bookshop-carousel-book:focus-visible .night-cover{transform:perspective(700px) rotateY(0) translateY(-5px);box-shadow:5px 15px 22px #0004}
.bookshop-carousel-book>strong{font:19px/1.3 Georgia,serif;font-weight:400;overflow-wrap:anywhere}
.bookshop-carousel-book>span{font-size:12px;color:var(--muted)}
@media(max-width:600px){.bookshop-carousel-heading{align-items:start;flex-direction:column;gap:14px}.bookshop-carousel-heading h3{font-size:25px}.bookshop-carousel-item{flex-basis:156px}.bookshop-carousel-track{gap:22px}.bookshop-carousel{margin-top:24px}}
@media(prefers-reduced-motion:reduce){.bookshop-carousel-book .night-cover{transition:none;transform:none!important}}
[data-reduced-motion=true] .bookshop-carousel-book .night-cover{transition:none;transform:none!important}
.night-book-dialog{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:12px;width:min(430px,calc(100% - 32px));max-height:90dvh;padding:28px;overflow:auto}
.night-book-dialog::backdrop{background:#0009}.night-book-dialog .night-cover{width:110px;margin:8px auto 24px}.night-book-dialog h2{font:28px Georgia,serif;text-align:center}.night-book-dialog>p{text-align:center}.night-book-dialog>button{display:block;width:100%;margin:8px 0}.night-app .night-dialog-close{margin-left:auto;width:auto;font-size:13px}.night-app .night-danger{color:var(--muted)}
/* Reader chrome leaves the sentence alone. */
.night-app .reader-brand-logo,.night-app .menu-button,.night-app .progress-stack{display:none!important}
.night-reader-back,.night-app .reader-settings-button{position:absolute;top:max(20px,env(safe-area-inset-top));z-index:5;background:none;border:0;color:var(--ink);box-shadow:none}
.night-reader-back{left:24px}.night-app .reader-settings-button{right:24px;left:auto;bottom:auto;font:24px Georgia,serif;width:48px;height:44px}
.night-app .night-reader-title{position:absolute;top:100px;left:50%;transform:translateX(-50%);z-index:4;display:flex;flex-direction:column;align-items:center;gap:12px;border:0;max-width:80%;padding:0;background:none}
.night-reader-title span{font:10px/1.5 Georgia,serif;letter-spacing:.18em;text-transform:uppercase;max-width:70ch}.night-reader-title strong{font:20px/1.4 Georgia,serif}
.night-app .reader-viewport{height:100dvh;min-height:100dvh;padding:130px 24px;display:flex;align-items:center;justify-content:center}
.night-app .sentence-context-stack{display:grid;grid-template-rows:minmax(0,1fr) auto minmax(0,1fr);height:100%;width:100%;align-items:center;justify-items:center;max-width:850px;gap:clamp(24px,5vh,44px)}
.night-app .sentence-context-text{display:-webkit-box;color:var(--muted);opacity:1;text-align:center;max-height:100%;-webkit-line-clamp:1;font-size:13px;line-height:1.5;max-width:42ch}.night-app .sentence-context-previous{align-self:end}.night-app .sentence-context-next{align-self:start}.night-app .sentence-text{text-align:center;line-height:var(--night-line-height)!important;max-width:30ch;letter-spacing:-.02em;color:var(--ink)}
.night-reader-footer{position:absolute;left:50%;transform:translateX(-50%);bottom:max(35px,calc(env(safe-area-inset-bottom) + 24px));width:min(650px,calc(100% - 48px));display:grid;grid-template-columns:44px 1fr 44px;gap:20px;align-items:start;z-index:4}
.night-reader-footer button{border:0;font:36px Georgia,serif;padding:0;line-height:1}.night-reader-footer p{font-size:11px;color:var(--muted);text-align:center;margin:12px 0 0}
.night-progress-track{display:block;margin-top:20px;height:3px;background:var(--line);border-radius:3px;overflow:hidden}.night-progress-track span{display:block;height:100%;background:var(--ink);border-radius:3px}
.night-reader-footer .night-progress-button{display:block;min-width:0;min-height:48px;width:100%;background:transparent;font:inherit;text-align:center;cursor:pointer}
.night-progress-button #nightProgressLabel{display:block;font-size:11px;line-height:1.5;color:var(--muted);margin-top:12px}
.night-progress-button:focus-visible{outline:2px solid var(--ink);outline-offset:5px;border-radius:4px}
.night-reader-hint{position:absolute;bottom:100px;left:24px;right:24px;text-align:center;color:var(--muted);font-size:11px;pointer-events:none}
/* The same settings surface is used from the library and Aa. */
.night-app :is(.settings-surface,.language-surface,.menu-surface,.orientation-surface,.tutorial-surface){background:var(--bg);border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow);border-radius:12px}
.night-app :is(.settings-panel,.language-panel,.menu-panel,.orientation-panel){background:#0008}
.night-app .menu-panel{padding:16px;align-items:flex-end}
.night-app .menu-surface{display:flex;flex-direction:column;width:min(480px,100%);max-height:calc(100dvh - 32px);padding:24px;border-radius:18px;overscroll-behavior:contain}
.night-app .menu-surface .close-button{align-self:flex-end;margin:0 0 8px;padding:8px 14px;font-size:13px}
.night-app .menu-surface .eyebrow{margin:0 0 8px;font-size:10px;letter-spacing:.14em;color:var(--muted)}
.night-app .menu-surface h1{margin:0 0 8px;font:28px/1.2 Georgia,serif;letter-spacing:-.5px}
.night-app .menu-surface .book-meta{margin:0 0 18px;color:var(--muted);font-size:13px}
.night-app .menu-surface .progress-label{margin:0 0 4px;font-size:12px;color:var(--muted)}
.night-app .menu-surface .quiet-button{margin:8px 0 0;min-height:48px;padding:12px 16px;text-align:left;border:1px solid var(--line);border-radius:8px}
.night-app .menu-surface #continueReadingButton{background:var(--ink);color:var(--bg);border-color:var(--ink);text-align:center;margin-top:16px}
.night-app .menu-surface #libraryButton{order:2;margin-top:8px;text-align:center;border-color:transparent;color:var(--muted)}
@media(max-width:600px){.night-app .menu-panel{padding:0}.night-app .menu-surface{width:100%;max-width:none;max-height:90dvh;border-radius:18px 18px 0 0;padding:20px 24px max(20px,env(safe-area-inset-bottom))}}
.night-app .settings-surface{width:min(520px,calc(100% - 24px));padding:28px;max-height:90dvh;overflow-y:auto}
.night-app .settings-surface h2{font:32px Georgia,serif;letter-spacing:-.6px}.night-app .settings-surface h3{font:20px Georgia,serif;margin:0 0 16px}
.night-app :is(.settings-group,.settings-block,.settings-group-toggle,.settings-field,.settings-link-list a,.auth-button,.quiet-button,.orientation-chapter){background:transparent;color:var(--ink);border-color:var(--line);box-shadow:none}
.night-app .settings-field select,.night-controls select{background:var(--surface);border:1px solid var(--line);padding:8px;color:var(--ink)}
.night-app .settings-field>span,.night-app .settings-block p span{color:var(--muted)}
.night-appearance{padding:12px 0 24px;border-bottom:1px solid var(--line);margin-bottom:8px}
.night-theme-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.night-theme-options button{display:grid;grid-template-columns:24px 1fr;align-items:center;text-align:left;gap:8px;padding:16px}
.night-theme-options button small{grid-column:1/-1;font-size:11px;color:var(--muted)}.night-theme-options button[aria-pressed=true]{border:2px solid var(--ink);background:var(--surface)}
.night-controls{border-top:1px solid var(--line);padding-top:20px;margin-top:16px}.night-controls label{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:12px 0}.night-controls small{display:block;color:var(--muted);font-size:11px;margin-top:4px;max-width:240px}.night-controls input{accent-color:var(--ink);width:20px;height:20px;min-height:20px}
.night-settings-extras{display:grid;gap:8px;padding-top:16px}.night-app .settings-group-toggle{font-size:15px;padding:18px 0;border-radius:0}.night-app .settings-footer-back-button{display:none}
.night-app .orientation-chapter.current{border-color:var(--ink);background:var(--surface)}.night-app .orientation-context{color:var(--ink)}
/* Page view shares the reader's paper, type and visible navigation. */
.night-app .orientation-panel.page-mode{background:var(--bg)}
.night-app .orientation-panel.page-mode .orientation-surface{background:var(--bg);border:0;border-radius:0;box-shadow:none}
.night-app .orientation-panel.page-mode .panel-icon-button{width:auto;height:44px;min-height:44px;aspect-ratio:auto;margin:0;padding:8px 12px;font:13px Arial,sans-serif;z-index:3;left:max(12px,calc((100vw - 760px)/2));top:max(12px,env(safe-area-inset-top))}
.night-app .orientation-panel.page-mode .orientation-context.open{top:64px;bottom:max(16px,env(safe-area-inset-bottom));gap:20px}
.night-app .orientation-panel.page-mode .orientation-context-meta{padding:4px 24px 12px;gap:6px}
.night-app .orientation-page-chapter-title{font:22px/1.3 Georgia,serif;color:var(--ink)}
.night-app .orientation-page-book-title{font:11px/1.5 Arial,sans-serif;font-weight:400;color:var(--muted)}
.night-app .orientation-page-position{font:11px/1.5 Arial,sans-serif;font-weight:400;color:var(--muted)}
.night-app .orientation-page-shell{width:min(760px,100%);padding:0 24px;grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) 48px;gap:16px}
.night-app .orientation-panel.page-mode .orientation-sentence-list.orientation-page-prose{grid-column:1/-1;align-content:start;overflow-y:auto;padding:8px 0 20px;touch-action:pan-y;overscroll-behavior:contain}
.night-app .orientation-paragraph{color:var(--ink);line-height:1.75}
.night-app .orientation-page-prose .orientation-sentence:hover{background:transparent;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.night-app .orientation-page-turn{opacity:1;min-height:48px;color:var(--ink);border:1px solid var(--line);border-radius:8px;font:14px Arial,sans-serif;transition:none}
.night-app .orientation-page-turn:disabled{opacity:.35;cursor:default}
@media(max-height:550px){.night-app .orientation-panel.page-mode .orientation-context.open{top:54px;gap:4px}.night-app .orientation-panel.page-mode .orientation-context-meta{padding-bottom:4px}.night-app .orientation-page-shell{gap:8px}}
.night-app .toast{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
@media(min-width:1000px){.night-app .library-screen{padding:40px 56px 60px 260px}.night-nav{left:0;top:0;bottom:0;right:auto;width:200px;border-top:0;border-right:1px solid var(--line);padding:44px 24px;flex-direction:column;justify-content:start;align-items:stretch;gap:12px}.night-nav-brand{display:block;font:28px Georgia,serif;margin-bottom:44px}.night-nav-brand small{display:block;font:11px Arial,sans-serif;color:var(--muted);margin-top:10px}.night-app .night-nav button{flex-direction:row;gap:14px;font-size:14px;padding:14px 8px}.night-nav button[aria-current=page]{box-shadow:inset -2px 0 var(--ink)}.night-app .library-header h1{visibility:hidden}.night-app .library-header{padding-bottom:28px}.night-shelf{grid-template-columns:repeat(4,minmax(0,1fr))}.night-shelf .night-book:nth-child(n+5){display:none}.night-reader-title{top:120px!important}}
@media(max-width:600px){.night-app .library-screen{padding:22px 22px 100px}.night-app .library-header{padding-bottom:34px}.night-app .library-header h1{font-size:29px}.night-current{grid-template-columns:115px 1fr;gap:20px}.night-current h3{font-size:23px}.night-current .night-kicker{font-size:8px}.night-app .night-primary{font-size:15px;padding:10px 14px;min-width:0;width:100%}.night-current-progress{padding-top:6px;font-size:11px}.night-shelf{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.night-shelf .night-book:nth-child(n+4){display:none}.night-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 20px}.night-shelf .night-book-open>strong{font-size:14px}.night-shelf .night-book-open>span{font-size:10px}.night-book-open>strong{font-size:17px}.night-section-heading h3{font-size:23px}.night-section-heading button{font-size:12px;padding:0 4px}#nightLibrary>.night-section-heading{align-items:center;flex-direction:row;gap:12px}.night-app .night-tabs button{padding:8px 10px;font-size:13px}.night-app .settings-surface{padding:24px}.night-reader-title strong{font-size:17px}.night-reader-title span{font-size:9px}.night-app .night-reader-title{top:90px;max-width:80%}.night-app .reader-viewport{padding-block:130px}.night-footnote{font-size:14px}.night-content h2{font-size:34px}.night-collections button{font-size:12px;min-height:44px}}
@media(max-height:550px){.night-app .night-reader-title{top:65px!important;gap:4px}.night-app .reader-viewport{padding:90px 65px}.night-reader-hint{display:none}.night-reader-footer{bottom:12px}.night-reader-back,.night-app .reader-settings-button{top:8px}}
@media(prefers-reduced-motion:reduce){.night-app *{animation:none!important;scroll-behavior:auto!important;transition:none!important}}
[data-reduced-motion=true] .night-app *{animation:none!important;scroll-behavior:auto!important;transition:none!important}
/* Standalone discovery uses the same appearance preference. */
body.marketplace-page{--mbg:var(--bg);--ms:var(--surface);--mc:var(--ink);--mg:var(--ink);--mm:var(--muted);--mo:var(--accent-soft);background:var(--bg)}
.marketplace-page .market-header{background:var(--bg);border-color:var(--line)}.marketplace-page .market-featured,.marketplace-page .market-sample{background:var(--surface);border-color:var(--line)}
.marketplace-page .market-primary{background:var(--ink);color:var(--bg)!important}.marketplace-page :is(input,select,.market-secondary,.market-collections button,.market-browse-links button){background:var(--bg)!important;color:var(--ink)!important;border-color:var(--line)!important}
.marketplace-page .cover{box-shadow:none}.marketplace-page :is(.tags span,.book-card b){color:var(--muted);border-color:var(--line)}

/* Translation is available to keyboard and pointer users. */
.night-app .reader-translate-button{position:absolute;top:max(20px,env(safe-area-inset-top));right:80px;left:auto;z-index:5;width:44px;height:44px;display:grid;place-items:center;padding:0;background:transparent;color:var(--ink);border:0;touch-action:none;user-select:none;-webkit-touch-callout:none}
@media(max-height:550px){.night-app .reader-translate-button{top:8px}}

.night-app .translation-bubble{background:var(--surface);border-color:var(--line);color:var(--ink)}.night-app .translation-bubble strong{color:var(--ink)}


.night-reader-hint{opacity:1;transition:opacity .45s ease}
.night-reader-hint.is-faded{opacity:0}

#nightProgressLabel{opacity:1;transition:opacity .45s ease}
#nightProgressLabel.is-faded{opacity:0}
#nightProgressButton:focus-visible #nightProgressLabel{opacity:1}

.night-reader-title,#nightPrevious,#nightNext{transition:opacity .45s ease}
.night-reader-title.is-faded,#nightPrevious.is-faded,#nightNext.is-faded{opacity:0}
#nightNext.is-completion-share{opacity:1;min-height:44px;text-decoration:underline;text-underline-offset:4px}
.night-reader-title.is-faded:focus-visible,#nightPrevious.is-faded:focus-visible,#nightNext.is-faded:focus-visible{opacity:1}

/* Keep the source and translation in separate, non-overlapping rows. */
.night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)){display:flex;flex-direction:column;justify-content:safe center;gap:24px;overflow-y:auto;padding:12px 4px}
.night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)) .sentence-context-text{display:none}
.night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)) .sentence-text{flex-shrink:0;margin:0}
.night-app .translation-bubble{position:static;transform:none;width:100%;max-width:32rem;flex-shrink:0;text-align:center;padding:18px 22px;box-shadow:none;z-index:auto;overflow-wrap:anywhere}
.night-app .translation-bubble::before{content:'Translation';font:11px/1.4 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.night-app .translation-bubble strong{font-weight:400;line-height:1.55}

/* Contents sheet */
.night-app .orientation-panel:not(.page-mode) .orientation-surface{width:min(600px,100%);max-height:85dvh;display:flex;flex-direction:column;padding:28px;background:var(--bg);border:1px solid var(--line);border-radius:20px 20px 0 0}
.night-app .orientation-panel:not(.page-mode) #orientationTitle{font:32px/1.2 Georgia,serif;margin:18px 0 8px}
.night-app .orientation-panel:not(.page-mode) #orientationProgressText{font:13px/1.5 Arial,sans-serif;color:var(--muted)}
.night-app .orientation-panel:not(.page-mode) .orientation-chapters{max-height:none;min-height:0;overflow-y:auto;gap:0;padding:0;margin-top:24px}
.night-app .orientation-panel:not(.page-mode) .orientation-chapter{display:grid;grid-template-columns:30px 1fr;gap:6px 14px;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:20px 8px}
.night-app .orientation-chapter strong{font:18px/1.45 Georgia,serif;text-transform:none}
.night-app .orientation-chapter .chapter-number{grid-row:1/3;font:12px/1.6 Arial,sans-serif;color:var(--muted)}
.night-app .orientation-chapter .chapter-status{grid-column:2;font:11px/1.4 Arial,sans-serif;color:var(--muted)}
/* A shared, quiet reading surface */
.night-app .orientation-panel.page-mode .orientation-context.open{top:70px;gap:20px}
.night-app .orientation-context-meta{width:min(680px,100%);margin-inline:auto}
.night-app .orientation-page-book-title{max-width:48ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.night-app .orientation-page-chapter-title{font:20px/1.4 Georgia,serif}
.page-reader-tools{position:fixed;right:24px;top:12px;display:flex;gap:8px;z-index:5}
.night-app .page-reader-tools button{width:44px;min-height:44px;background:none;border:0;display:grid;place-items:center;color:var(--ink);font:24px Georgia,serif}
.night-app .orientation-page-shell{width:min(680px,100%);grid-template-columns:44px 1fr 44px;gap:12px;padding:0 24px}
.night-app .orientation-panel.page-mode .orientation-sentence-list.orientation-page-prose{font-family:var(--reader-font-family);font-size:var(--reader-page-font-size);line-height:1.8;display:block}
.night-app .orientation-page-prose .orientation-paragraph{margin:0 0 1.2em;font:inherit;text-align:left}
.night-app .orientation-page-prose .orientation-sentence{display:inline;width:auto;min-height:0;padding:0;margin:0;border:0;border-radius:0;font:inherit;font-weight:400;color:var(--ink);text-align:left;background:none;box-shadow:none}
.night-app .orientation-page-prose .orientation-sentence:hover{background:none;text-decoration:none}
.night-app .orientation-page-prose .orientation-sentence:focus-visible{outline:2px solid var(--muted);outline-offset:3px}
.night-app .orientation-page-turn{border:0;background:none;font:30px Georgia,serif;border-radius:0}
.night-app .orientation-page-position{align-self:center;text-align:center;font:11px/1.5 Arial,sans-serif;color:var(--muted);border-top:2px solid var(--line);padding-top:12px}
.night-app .orientation-page-prose .translation-bubble{margin:24px auto}

.night-app .orientation-page-prose .orientation-sentence{white-space:normal;cursor:text}
.night-app .orientation-page-prose{font-size:calc(var(--reader-page-font-size) * 1.12)!important}
.orientation-page-chapter-title,.orientation-page-book-title,.orientation-page-position,.orientation-page-turn{transition:opacity .45s ease}
.page-control-faded{opacity:0!important}
.page-control-faded:focus-visible{opacity:1!important}

/* Contents rows keep their intrinsic height inside a single scroll region. */
.night-app .orientation-panel.open:not(.page-mode){align-items:center;justify-content:center;background:rgba(0,0,0,.72);backdrop-filter:blur(5px)}
.night-app .orientation-panel:not(.page-mode) .orientation-surface{max-width:600px;max-height:min(760px,calc(100dvh - 64px));border-radius:18px;overflow:hidden;padding:28px}
.night-app .orientation-panel:not(.page-mode) .orientation-surface> :not(.orientation-chapters){flex-shrink:0}
.night-app .orientation-panel:not(.page-mode) .orientation-chapters{display:flex;flex-direction:column;flex:1 1 auto;align-items:stretch;scrollbar-width:thin;scrollbar-color:var(--line) transparent;scrollbar-gutter:stable;border-top:0;margin-top:20px;padding-right:8px}
.night-app .orientation-panel:not(.page-mode) .orientation-chapter{flex:0 0 auto;grid-template-rows:auto auto;align-content:center;min-height:76px;height:auto;padding:18px 12px;row-gap:7px;box-sizing:border-box}
.night-app .orientation-panel:not(.page-mode) .orientation-chapter strong{font-weight:400;line-height:1.45;min-width:0;overflow-wrap:anywhere}
.night-app .orientation-panel:not(.page-mode) .chapter-status:empty{display:none}
.night-app .orientation-panel:not(.page-mode) .orientation-chapter.current{border-radius:8px;border-bottom-color:transparent;margin:4px 0}
@media(max-width:600px){.night-app .orientation-panel.open:not(.page-mode){padding:0;align-items:flex-end}.night-app .orientation-panel:not(.page-mode) .orientation-surface{max-height:85dvh;max-width:none;border-radius:20px 20px 0 0;padding:24px 20px max(24px,env(safe-area-inset-bottom))}}

.night-app .night-reader-back{width:44px;height:44px;display:grid;place-items:center;padding:0}
.night-app .orientation-panel.page-mode .panel-icon-button{width:44px;height:44px;padding:0;display:grid;place-items:center}
.night-app .page-progress-menu{display:flex;flex-direction:column;justify-content:center;gap:10px;min-width:0;min-height:48px;width:100%;border:0;background:none;padding:6px 0;color:var(--ink)}
.night-app .page-progress-menu .night-progress-track{width:100%;display:block}
.night-app .page-progress-menu .night-progress-track>span{display:block;height:100%;background:var(--muted)}
.night-app .page-progress-menu .orientation-page-position{border:0;padding:0;font:11px/1.5 Arial,sans-serif}
.night-app .page-progress-menu:focus-visible .page-control-faded{opacity:1!important}

/* Quiet settings navigation, consistent with reader controls. */
.night-app #settingsPanel #closeSettingsButton{display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;padding:0;margin:0;border:0;background:transparent;box-shadow:none;color:var(--ink)}
.night-app #settingsPanel .settings-group-toggle:not(.settings-account-card){border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:22px 0;min-height:68px}
.night-app #settingsPanel .settings-group-toggle:not(.settings-account-card) .section-toggle-label{font:20px/1.4 Georgia,serif;letter-spacing:0;color:var(--ink)}
.night-app #settingsPanel .settings-group-toggle:not(.settings-account-card) .section-toggle-indicator{border:0;background:none;border-radius:0;font:24px/1 Arial,sans-serif;font-weight:400;color:var(--muted)}
.night-app #settingsPanel .settings-group{border:0;background:transparent}
.night-app #settingsPanel .night-controls{border-top:0;margin-top:0;padding-top:8px}

.night-app #settingsPanel .account-xp-summary{grid-column:1;grid-row:3;font:24px/1.3 Georgia,serif;color:inherit;margin-top:6px}
.night-app #settingsPanel :is(#settingsLanguageToggle,#settingsInfoToggle) .toggle-mark{display:none}
.night-app #settingsPanel :is(#settingsLanguageToggle,#settingsInfoToggle) .section-toggle-indicator::before{content:'';display:block;width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);transition:transform .15s}
.night-app #settingsPanel :is(#settingsLanguageToggle,#settingsInfoToggle)[aria-expanded=true] .section-toggle-indicator::before{transform:rotate(225deg)}
.night-app #settingsPanel #settingsInfoBody :is(.settings-link-button,.settings-link-list a,.night-settings-extras button){justify-content:flex-start;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:14px 0;font-size:15px;text-decoration:none}

/* Language choices share the appearance cards' outlined style. */
#settingsLanguageBody .settings-field { margin-bottom: 10px; }
#settingsLanguageBody select[hidden] { display: none; }
#settingsLanguageBody .night-language-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0 0 28px; }
#settingsLanguageBody .night-language-card { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 68px; padding: 16px; border: 2px solid var(--line); border-radius: 6px; background: transparent; color: var(--ink); font: inherit; text-align: left; }
#settingsLanguageBody .night-language-card[aria-pressed="true"] { border-color: var(--ink); background: var(--surface); }
#settingsLanguageBody .language-selection-mark { visibility: hidden; font-size: 16px; }
#settingsLanguageBody [aria-pressed="true"] .language-selection-mark { visibility: visible; }
#settingsLanguageBody .night-language-card:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; }
@media (max-width: 600px) { #settingsLanguageBody .night-language-options { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } }

/* Reader and library finishing pass. */
.night-book-status{display:block;color:var(--muted);font:12px/1.5 Arial,sans-serif;margin-top:6px}
.night-app .translation-bubble::before{content:none}
.translation-language-label{display:block;color:var(--muted);font:12px/1.5 Arial,sans-serif;margin-bottom:12px}
.night-app .translation-retry{display:block;margin:12px auto 0;padding:8px 16px}
.night-app .orientation-page-prose .translation-bubble{max-width:100%;box-sizing:border-box}
.night-app .orientation-sentence[aria-pressed=true]{text-decoration:underline;text-decoration-color:var(--muted);text-underline-offset:5px}
#spendableXpBalance{padding:14px 0;border-block:1px solid var(--line);font-size:16px;color:var(--ink)}
.local-data-note{display:block!important;font-size:13px;line-height:1.6;color:var(--muted)}
.night-app .account-rewards summary{min-height:44px;display:flex;align-items:center}
@media(max-width:480px){.night-library-tools{align-items:flex-start;flex-wrap:wrap;padding-bottom:12px}.night-collections{flex-wrap:wrap}.night-app .translation-bubble{padding:16px}.night-app .night-reader-title{max-width:calc(100% - 48px)}}
@media(max-height:500px){.night-app .reader-viewport{padding:112px 24px 60px}.night-app .sentence-context-stack{gap:12px}.night-reader-hint{display:none}.night-app .night-reader-title{top:64px}.night-reader-footer{bottom:10px}}

.night-app .page-progress-menu .night-progress-track{flex:0 0 3px;height:3px;margin-top:0}
.night-app .page-progress-menu{gap:6px}
.night-app #settingsAccountBody{display:flex;flex-direction:column}
.night-app #settingsAccountBody.is-hidden{display:none}
.night-app #settingsAccountBody .account-rewards{order:-1}
.night-app .reader-viewport{overflow-y:auto}
.night-app .sentence-context-stack{min-height:0}
.night-app .orientation-sentence:focus-visible{outline-offset:2px}

:root[data-gestures="off"] :is(#nightPrevious,#nightNext,.orientation-page-turn){opacity:1!important}

.standard-sign-in{padding:24px 0;border-block:1px solid var(--line)}.standard-sign-in p{display:block!important;line-height:1.6;color:var(--muted)}.standard-auth-options form{display:grid;gap:12px;margin-top:20px}.standard-auth-options input{width:100%;min-height:48px;padding:12px;border:1px solid var(--line);box-sizing:border-box}.standard-auth-options>button{width:100%}.auth-small{font-size:13px}.optional-wallet{margin:24px 0}.optional-wallet summary{min-height:44px;cursor:pointer}.standard-auth-status{overflow-wrap:anywhere}
.night-app #settingsAccountBody .standard-sign-in{order:-2}.standard-sign-in button:disabled{opacity:.55;cursor:not-allowed}.night-app #settingsPanel .standard-sign-in h3{margin-bottom:12px}

/* One short atmospheric reveal, confined to the illustration above the title. */
[data-cover-motion]{position:relative;isolation:isolate;overflow:hidden}
[data-cover-motion]::after{content:"";position:absolute;z-index:2;inset:7% 5% 46%;pointer-events:none;opacity:0;mask-image:linear-gradient(transparent,#000 18%,#000 75%,transparent)}
[data-cover-motion=mist]::after{background:radial-gradient(ellipse at 25% 65%,#dae4dc66,transparent 55%),radial-gradient(ellipse at 85% 35%,#c6dbd04d,transparent 55%);filter:blur(7px)}
[data-cover-motion=snow]::after{background-image:radial-gradient(circle,#fffdf0cc 1px,transparent 1.8px),radial-gradient(circle,#fffdf088 1.3px,transparent 2px);background-size:31px 43px,53px 61px;background-position:0 0,17px 11px}
[data-cover-motion=stars]::after{background-image:radial-gradient(circle at 20% 23%,#f7e6b8 1px,transparent 2.2px),radial-gradient(circle at 69% 35%,#f7e6b8 1.4px,transparent 2.5px),radial-gradient(circle at 43% 68%,#f7e6b8 1px,transparent 2px),radial-gradient(ellipse at 60% 45%,#d2ac5840,transparent 55%)}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) [data-cover-motion=mist]::after{animation:cover-mist 2.8s ease-in-out .22s both}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) [data-cover-motion=snow]::after{animation:cover-snow 2.8s ease-in-out .22s both}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) [data-cover-motion=stars]::after{animation:cover-stars 2.8s ease-in-out .22s both}
}
@keyframes cover-mist{0%{opacity:0;transform:translateX(-9%)}30%{opacity:.8}70%{opacity:.6}100%{opacity:0;transform:translateX(9%)}}
@keyframes cover-snow{0%{opacity:0;background-position:0 -20px,17px -15px}25%,70%{opacity:.75}100%{opacity:0;background-position:8px 35px,12px 50px}}
@keyframes cover-stars{0%{opacity:0;transform:translateY(3px)}35%{opacity:.9}65%{opacity:.55}100%{opacity:0;transform:translateY(-5px)}}
[data-reduced-motion=true] [data-cover-motion]::after{animation:none!important;opacity:0!important}
@media(prefers-reduced-motion:reduce){[data-cover-motion]::after{animation:none!important;opacity:0!important}}

/* Bat-free background plate with independent silhouettes and river texture. */
.cover-art-motion{display:none!important}
[data-cover-motion=mist]::after{display:none}
.cover-scene{position:absolute!important;inset:0!important;z-index:2;display:block!important;pointer-events:none;opacity:1;overflow:hidden}
.scene-clouds,.scene-water,.scene-bats{position:absolute!important;display:block!important;pointer-events:none}
.scene-water{inset:0;clip-path:polygon(64% 82%,68% 83%,64% 86%,70% 89%,69% 91%,76% 96%,65% 97%,48% 94%,40% 91%,49% 88%,60% 86%);mask-image:linear-gradient(transparent 82%,#000 86%,#000 94%,transparent 97%);opacity:0}
.scene-water-texture{position:absolute!important;display:block!important;inset:0;background:url('/covers/dracula-scene.png') center/100% 100% no-repeat;filter:inherit}
.scene-bats{inset:0;width:100%;height:100%;fill:#120d0b}
.bat-one{transform:translate(460px,205px) scale(.6)}.bat-two{transform:translate(510px,252px) scale(.4)}.bat-three{transform:translate(405px,170px) scale(.35)}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) .cover-scene{opacity:1;transition:opacity .35s}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) .scene-water{opacity:1}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) .scene-water-texture{animation:scene-river 2.4s ease-in-out infinite alternate}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) .bat-flight{animation:scene-bat-flight 5s ease-in-out infinite alternate}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) .bat-two{animation-name:scene-bat-two;animation-duration:6s}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) .bat-three{animation-name:scene-bat-three;animation-duration:4s}
 :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) .bat-flight path{animation:scene-wingbeat .4s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}
}
@keyframes scene-wingbeat{to{transform:scaleY(.35)}}
@keyframes scene-bat-flight{to{transform:translate(540px,115px) scale(.8) rotate(-12deg)}}
@keyframes scene-bat-two{to{transform:translate(425px,185px) scale(.55) rotate(10deg)}}
@keyframes scene-bat-three{to{transform:translate(470px,95px) scale(.45) rotate(-8deg)}}
@keyframes scene-river{from{transform:translate(-1px,-1px)}to{transform:translate(2px,3px)}}
[data-reduced-motion=true] .cover-scene *{animation:none!important}
[data-reduced-motion=true] :is(.scene-water,.scene-clouds){display:none!important}
@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.cover-scene *{animation:none!important}.scene-water,.scene-clouds{display:none!important}}

/* Deform one image, using a neutral displacement map outside the sky. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 :root:not([data-reduced-motion=true]) :is(.night-book-open,.bookshop-carousel-book,.book-card):is(:hover,:focus-visible) [data-cover-motion=mist]>img{filter:var(--cloud-filter)!important}
}

[data-art-effect]{position:relative;isolation:isolate;overflow:hidden}
.cover-effect-defs{position:absolute!important;width:0!important;height:0!important;pointer-events:none;overflow:hidden}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 :root:not([data-reduced-motion=true]) :is(.book-card,.night-book-open,.bookshop-carousel-book):is(:hover,:focus-visible) [data-art-effect]>img{filter:var(--art-filter)!important;transition:none}
}

/* Hide scrollbar chrome while preserving native scrolling and keyboard access. */
html,body,body *{scrollbar-width:none!important;-ms-overflow-style:none!important}html::-webkit-scrollbar,body::-webkit-scrollbar,body *::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}

/* Consistent library status and keyboard-safe reader controls. */
.night-book-progress{display:block;width:100%;height:3px;border:0;border-radius:0;appearance:none;background:var(--line);color:var(--muted);margin-top:8px}
.night-book-progress::-webkit-progress-bar{background:var(--line)}.night-book-progress::-webkit-progress-value{background:var(--muted)}.night-book-progress::-moz-progress-bar{background:var(--muted)}
.night-book-open[aria-busy=true]{cursor:progress;opacity:.65}
.night-sample-link{display:block;padding:16px 0;line-height:1.5;text-underline-offset:5px;color:inherit}
.night-book-dialog{max-height:calc(100dvh - 40px);overflow:auto;box-sizing:border-box}
.night-book-dialog button{min-height:44px}.night-book-dialog .night-dialog-close{position:sticky;top:0;z-index:3;background:var(--bg,#1b1c19)}
.night-app .night-import-page{inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:var(--bg);color:var(--ink);overflow-y:auto;overscroll-behavior:contain}
.night-import-page::backdrop{background:var(--bg)}
.night-import-header{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:20px;min-height:80px;padding:max(16px,env(safe-area-inset-top)) max(20px,calc((100vw - 720px)/2)) 16px;background:var(--bg);border-bottom:1px solid var(--line)}
.night-app .night-import-header .night-dialog-close{position:static;display:grid;place-items:center;flex:0 0 44px;width:44px;min-height:44px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--ink)}
.night-import-header h2{min-width:0;margin:0!important;color:var(--ink);font:clamp(26px,5vw,34px)/1.2 Georgia,serif!important;text-align:left!important;overflow-wrap:anywhere}
.night-import-body{display:grid;align-content:start;gap:20px;width:100%;max-width:760px;margin:0 auto;padding:32px 20px max(40px,env(safe-area-inset-bottom));font:16px/1.6 system-ui,sans-serif}
.night-import-body p{margin:0;color:var(--muted);text-align:left}
.night-import-body label{display:block;margin:8px 0 -8px;color:var(--ink);font-size:15px}
.night-import-body input{width:100%;min-height:52px;padding:12px 16px;border:1px solid var(--control-line);border-radius:9px;background:var(--surface);color:var(--ink);font:16px system-ui,sans-serif}
.night-import-body button{width:100%;min-height:52px;margin:0;padding:14px 18px;border-radius:9px;font:16px system-ui,sans-serif}
.night-import-body .night-primary{background:var(--ink);color:var(--bg)}
.night-app .night-import-body .night-primary:hover{background:var(--ink);color:var(--bg)}
.night-import-body .night-outline{background:transparent;color:var(--ink);border:1px solid var(--line)}
.night-app .night-book-detail-page{inset:0;box-sizing:border-box;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:var(--bg);color:var(--ink);overflow-y:auto;overscroll-behavior:contain}
.night-book-detail-page::backdrop{background:var(--bg)}
.night-app .night-book-detail-page .night-panel-header .night-dialog-close{position:static;display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--ink)}
.night-app .night-book-detail-page .night-panel-body{box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;gap:16px;width:100%;max-width:760px;margin:0 auto;padding:32px 20px max(40px,env(safe-area-inset-bottom));font:16px/1.6 system-ui,sans-serif}
.night-app .night-book-detail-page .night-cover{flex:none;align-self:center;width:160px;margin:0 auto 8px}
.night-app .night-book-detail-page .night-panel-body p{margin:0;text-align:left}
.night-app .night-book-detail-page .night-panel-body button{width:100%;min-height:52px;margin:0;padding:12px 18px;border:1px solid var(--line);border-radius:9px;text-align:center;font:16px system-ui,sans-serif}
.night-app .night-book-detail-page .night-panel-body .night-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.night-app .night-book-detail-page .night-panel-body .night-danger{color:var(--muted)}
.night-app .night-book-detail-page .night-purchase-links{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.night-app .night-book-detail-page .night-purchase-links a{display:inline-flex;align-items:center;min-height:44px;padding:0 4px;color:var(--ink)}
@media(max-width:380px){.night-import-header{gap:12px}}
.night-app .menu-panel.open{padding:0;align-items:stretch;background:var(--bg);backdrop-filter:none}
.night-app .menu-surface{display:block;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;overflow-y:auto;overscroll-behavior:contain}
.night-panel-header{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:20px;min-height:80px;padding:max(16px,env(safe-area-inset-top)) max(20px,calc((100vw - 720px)/2)) 16px;background:var(--bg);border-bottom:1px solid var(--line)}
.night-panel-header h2{min-width:0;margin:0;color:var(--ink);font:clamp(26px,5vw,34px)/1.2 Georgia,serif}
.night-app .settings-surface .night-panel-header h2{font:clamp(26px,5vw,34px)/1.2 Georgia,serif;letter-spacing:0;overflow-wrap:anywhere}
.night-app .menu-surface .night-panel-header .close-button{position:static;display:grid;place-items:center;flex:0 0 44px;width:44px;min-height:44px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--ink)}
.night-menu-body{display:flex;flex-direction:column;width:100%;max-width:760px;margin:0 auto;padding:32px 20px max(40px,env(safe-area-inset-bottom))}
.night-app .night-menu-body .eyebrow{margin:0 0 8px}
.night-app .night-menu-body h1{margin:0 0 12px;font:clamp(28px,6vw,38px)/1.2 Georgia,serif;overflow-wrap:anywhere}
.night-app .night-menu-body .book-meta{margin:0 0 20px}
.night-app .night-menu-body .progress-label{margin:0 0 8px}
.night-app .night-menu-body .quiet-button{width:100%;min-height:60px;margin:0;padding:16px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);font:17px/1.4 system-ui,sans-serif;text-align:left}
.night-app .night-menu-body #continueReadingButton{order:3;min-height:52px;margin-top:28px;padding:14px 18px;border:1px solid var(--ink);border-radius:9px;background:var(--ink);color:var(--bg);text-align:center}
.night-app .night-menu-body #libraryButton{order:2;margin:0;padding:16px 0;border-bottom:1px solid var(--line);color:var(--ink);text-align:left}
.night-app .night-menu-body .passage-sharing{order:2;margin:0;padding:0;border:0}
.night-app .night-menu-body .passage-sharing summary{display:flex;align-items:center;min-height:60px;padding:16px 0;border-bottom:1px solid var(--line);font:17px/1.4 system-ui,sans-serif}
.night-app :is(.menu-panel,.orientation-panel:not(.page-mode)){--bg:var(--panel-bg);--surface:var(--panel-surface);--ink:var(--panel-ink);--muted:var(--panel-muted);--line:var(--panel-line)}
.night-app :is(.language-panel,.premium-panel,.tutorial-panel).open{padding:0;align-items:stretch;background:var(--bg);backdrop-filter:none}
.night-app :is(.language-panel,.premium-panel,.tutorial-panel) .settings-surface{display:block;box-sizing:border-box;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;overflow-y:auto;overscroll-behavior:contain}
.night-app :is(.language-panel,.premium-panel,.tutorial-panel) .night-panel-header :is(.panel-icon-button,.settings-close-button){position:static;display:grid;place-items:center;flex:0 0 44px;width:44px;height:44px;min-height:44px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--ink)}
.night-app :is(.language-panel,.premium-panel,.tutorial-panel) .night-panel-body{box-sizing:border-box;width:100%;max-width:760px;margin:0 auto;padding:32px 20px max(40px,env(safe-area-inset-bottom))}
.night-app .premium-panel .premium-title-row{display:block;margin-bottom:24px}
.night-app .premium-panel .premium-price{text-align:left;color:var(--ink);font:600 17px/1.5 system-ui,sans-serif}
.night-app .premium-panel .premium-feature-list{margin:0 0 28px;font:16px/1.65 system-ui,sans-serif}
.night-app .premium-panel .night-panel-body :is(#premiumActionButton,#upgradeButton){width:100%;min-height:52px;margin:12px 0 0}
.night-app .premium-panel .premium-help-links{margin-top:28px}
.night-app .language-panel .language-tabs{margin:0 0 24px}
.night-app .language-panel .language-tab{min-height:52px;border:1px solid var(--line);border-radius:9px;background:transparent;color:var(--muted)}
.night-app .language-panel .language-tab.current{border-color:var(--ink);background:var(--surface);color:var(--ink)}
.night-app .tutorial-panel .tutorial-surface{max-width:none}
.night-app .orientation-panel.open:not(.page-mode){padding:0;align-items:stretch;justify-content:stretch;background:var(--bg);backdrop-filter:none}
.night-app .orientation-panel:not(.page-mode) .orientation-surface{position:relative;display:flex;flex-direction:column;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;overflow:hidden;overscroll-behavior:contain}
.night-app .orientation-panel:not(.page-mode) #closeOrientationButton{position:absolute;top:max(16px,env(safe-area-inset-top));left:max(20px,calc((100vw - 720px)/2));z-index:4;display:grid;place-items:center;width:44px;height:44px;min-height:44px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--ink)}
.night-app .orientation-panel:not(.page-mode) #orientationTitle{flex:none;box-sizing:border-box;width:100%;min-height:80px;margin:0;padding:max(16px,env(safe-area-inset-top)) max(20px,calc((100vw - 720px)/2)) 16px max(76px,calc((100vw - 720px)/2 + 64px));border-bottom:1px solid var(--line);font:clamp(26px,5vw,34px)/1.2 Georgia,serif}
.night-app .orientation-panel:not(.page-mode) #orientationProgressText{box-sizing:border-box;width:100%;max-width:760px;margin:0 auto;padding:28px 20px 8px;color:var(--muted);font:14px/1.5 system-ui,sans-serif}
.night-app .orientation-panel:not(.page-mode) .orientation-chapters{box-sizing:border-box;display:flex;flex:1 1 0;flex-direction:column;width:100%;max-width:760px;min-height:0;max-height:none;margin:0 auto;padding:0 20px max(40px,env(safe-area-inset-bottom));border:0;overflow-y:auto;scrollbar-width:none}
.night-app .orientation-panel:not(.page-mode) .orientation-chapters::-webkit-scrollbar{display:none}
.night-app .orientation-panel:not(.page-mode) .orientation-chapter{flex:0 0 auto;width:100%;min-height:76px;margin:0;padding:18px 8px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;text-align:left}
.night-app .orientation-panel:not(.page-mode) .orientation-chapter.current{margin:0;border-bottom:2px solid var(--ink);border-radius:0;background:var(--surface)}
@media(max-width:380px){.night-panel-header{gap:12px}.night-panel-header h2,.night-app .settings-surface .night-panel-header h2{font-size:24px}}
.night-app :is(button,a,input,select,summary):focus-visible{outline:2px solid currentColor;outline-offset:4px}
.night-app .night-import-page :is(button,input):focus-visible{outline:2px solid var(--ink);outline-offset:4px}
.night-app .is-faded:focus-visible,.night-app .is-faded:focus-within{opacity:1!important;visibility:visible!important}
.night-app #settingsAccountBody .account-rewards{order:-3}.account-xp-summary{white-space:normal;overflow-wrap:anywhere;font-size:14px;line-height:1.4}
@media(max-width:480px){.night-book-dialog{width:calc(100% - 24px);padding:20px}.night-app #settingsAccountToggle{flex-wrap:wrap;gap:8px}}

/* Reserve header and footer space, including when both languages are visible. */
.night-app .reader-viewport{padding-top:190px;padding-bottom:190px;overflow:hidden}
.night-app .reader-viewport:has(.translation-bubble:not(.is-hidden)){touch-action:pan-y}
.night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)){display:flex;flex-direction:column;align-items:center;justify-content:safe center;gap:18px;padding:0;overflow:auto;touch-action:pan-y;overscroll-behavior:contain}
.night-app .sentence-context-stack .translation-bubble{box-sizing:border-box;max-width:100%;margin:0}
.night-app .sentence-context-stack .translation-bubble strong{display:block;font-size:var(--translation-font-size,22px);line-height:1.45}
.translation-language-button{background:none;border:0;color:var(--muted);font:12px/1.5 Arial,sans-serif;text-decoration:underline;text-underline-offset:4px;min-height:32px;cursor:pointer}
.night-app .reader-shell:has(.translation-bubble:not(.is-hidden)) :is(#nightPrevious,#nightNext,#nightProgressLabel,.night-reader-title){opacity:1}
.reader-translation-languages{position:absolute;z-index:8;top:82px;right:24px;width:min(380px,calc(100% - 48px));max-height:calc(100dvh - 230px);overflow:auto;box-sizing:border-box;padding:22px;background:var(--bg);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.reader-translation-languages h2{font:24px Georgia,serif;margin:0 70px 20px 0}
.translation-languages-done{position:absolute;top:16px;right:16px;min-height:44px}
.reader-translation-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.reader-translation-options button{min-height:48px;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink)}
.reader-translation-options button[aria-pressed=true]{border:2px solid var(--ink)}
.reader-translation-options button:disabled{opacity:.4}
@media(min-width:850px){.night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto;align-content:safe center;align-items:center;gap:32px;max-width:1100px}.night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)) .sentence-text{max-width:100%}}
@media(max-height:600px){.night-app .reader-viewport{padding-top:115px;padding-bottom:115px}.night-app .night-reader-title{top:62px;gap:2px}.night-reader-title span{display:none}.night-reader-hint{display:none}.night-reader-footer{bottom:18px}}

/* Equal prominence for account providers, with email below. */
.auth-provider-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:24px}
.night-app .auth-provider-card{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:12px;padding:20px 16px;background:var(--surface)}
.night-app .auth-provider-card h4{font:24px/1.2 Georgia,serif;margin:0 0 8px;color:var(--ink)}
.night-app .auth-provider-card p{font-size:14px;margin:0 0 20px}
.night-app .auth-provider-card .auth-button{width:100%;min-height:48px;margin-top:auto;white-space:normal;overflow-wrap:anywhere}
@media(max-width:420px){.night-app .auth-provider-card{padding:16px 10px}.night-app .auth-provider-card .auth-button{font-size:14px;padding:10px 8px}}
.night-app #settingsAccountBody .standard-sign-in{order:-4}
.night-app #settingsAccountBody .reader-access-code{order:-4;padding:24px 0;border-bottom:1px solid var(--line);min-width:0}
.reader-access-code[hidden]{display:none!important}
.reader-access-code p{display:block!important;color:var(--muted);line-height:1.6;overflow-wrap:anywhere}
.reader-access-code form{display:grid;gap:12px;margin-top:16px}
.reader-access-code input{width:100%;min-width:0;min-height:48px;box-sizing:border-box;padding:12px;border:1px solid var(--control-line);border-radius:9px;background:var(--surface);color:var(--ink);font:inherit}
.reader-access-code button{min-height:48px}
.reader-access-code :is(input,button):disabled{opacity:.65;cursor:not-allowed}
.reader-access-code input:focus-visible{outline:2px solid var(--ink);outline-offset:3px}

.install-instructions{box-sizing:border-box;width:min(440px,calc(100% - 32px));max-height:calc(100dvh - 48px);overflow:auto;border:1px solid var(--line);border-radius:16px;padding:24px;background:var(--bg);color:var(--ink)}
.install-instructions::backdrop{background:#0009}.install-instructions h2{font:28px/1.25 Georgia,serif;margin:0 0 16px}.install-instructions p,.install-instructions li{font:16px/1.6 Arial,sans-serif}.install-instructions ol{padding-left:24px}.install-instructions li{margin:12px 0}.install-instructions button{width:100%;min-height:48px}.night-install-help button{min-height:48px}

.passage-sharing { margin-top:24px; border-top:1px solid var(--line,#555); padding-top:18px; }
.passage-sharing summary { cursor:pointer; padding:12px 0; }
.passage-sharing textarea { box-sizing:border-box; width:100%; min-height:150px; background:var(--bg,#1b1c19); color:inherit; padding:12px; }
.passage-sharing[hidden] { display:none; }
/* The scene is decorative: it never intercepts reader gestures or changes layout. */
.reader-atmosphere{display:none;position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1;background:linear-gradient(180deg,rgba(5,10,16,.32),rgba(5,10,16,.62) 45%,rgba(5,10,16,.76)),var(--chapter-image,none) center/cover no-repeat}
.night-app .reader-shell[data-scene=dracula]{isolation:isolate;background:#0b121c;--ink:#eeeae2;--muted:#b9c1ca;--bg:#111b26;--surface:#172331;--line:#43505d;color:var(--ink)}
.reader-shell[data-scene=dracula] .reader-atmosphere{display:block}
.atmosphere-clouds,.atmosphere-fog{position:absolute;inset:-10% -20%;background:radial-gradient(ellipse at 25% 18%,#b9c9db24,transparent 33%),radial-gradient(ellipse at 70% 24%,#b9c9db1c,transparent 27%);animation:atmosphere-drift 65s ease-in-out infinite alternate;animation-play-state:paused}
.atmosphere-fog{top:35%;background:radial-gradient(ellipse at 25% 70%,#c7d4e526,transparent 42%),radial-gradient(ellipse at 80% 85%,#c7d4e51c,transparent 35%);animation-duration:90s;animation-direction:alternate-reverse}
.reader-shell[data-scene=dracula][data-scene-motion=true]:not(.is-hidden) :is(.atmosphere-clouds,.atmosphere-fog){animation-play-state:running}
@keyframes atmosphere-drift{from{transform:translate3d(-4%,0,0)}to{transform:translate3d(5%,3%,0)}}
html[data-reduced-motion=true] .reader-shell :is(.atmosphere-clouds,.atmosphere-fog){animation:none}
@media(prefers-reduced-motion:reduce){.reader-shell :is(.atmosphere-clouds,.atmosphere-fog){animation:none}}

/* Adapt the reading area without moving the header or navigation. */
.night-app .sentence-context-stack.reader-compact { gap: 10px; }
.night-app .sentence-context-stack.reader-focus {
  display: flex;
  flex-direction: column;
  justify-content: safe center;
  gap: 0;
}
.night-app .sentence-context-stack.reader-focus .sentence-context-text { display: none; }
.night-app .sentence-context-stack.reader-focus .sentence-text { flex-shrink: 0; }
.night-app .sentence-text { overflow-wrap: anywhere; min-width: 0; max-width: min(30ch, 100%); }
.night-app .sentence-text.dense { line-height: 1.34 !important; }
.night-app .reader-viewport.reader-scrollable { touch-action: pan-y; }
.night-app .sentence-context-stack.reader-scrollable {
  overflow-y: auto;
  overflow-x: hidden;
  touch-action: pan-y;
  overscroll-behavior: contain;
  scrollbar-width: none;
}
.night-app .sentence-context-stack.reader-scrollable::-webkit-scrollbar { display: none; }
.night-app .sentence-context-stack .translation-bubble { flex-shrink: 0; overflow-wrap: anywhere; min-width: 0; }
.night-app .reader-shell:has(.reader-scrollable) :is(#nightPrevious, #nightNext, #nightProgressLabel, .night-reader-title) { opacity: 1; }
.night-app .sentence-context-stack:focus-visible { outline: 1px solid var(--line); outline-offset: 4px; }

/* Short landscape screens need both languages visible before scrolling. */
@media (min-width: 600px) and (max-height: 500px) {
  .night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-rows: auto;
    align-content: start;
    align-items: start;
    justify-items: stretch;
    gap: 20px;
    overflow-y: auto;
  }
  .night-app .sentence-context-stack:has(.translation-bubble:not(.is-hidden)) .sentence-text {
    max-width: 100%;
    align-self: start;
    text-align: left;
  }
  .night-app .sentence-context-stack .translation-bubble {
    align-self: start;
    padding: 8px 10px;
    row-gap: 2px;
  }
  .night-app .sentence-context-stack .translation-language-label {
    margin-bottom: 0;
  }
  .night-app .sentence-context-stack .translation-language-button {
    min-height: 24px;
  }
  .night-app .sentence-context-stack .translation-bubble strong {
    font-size: 16px;
    line-height: 1.3;
  }
}

.reader-shell[data-atmosphere-motion=still] :is(.atmosphere-clouds,.atmosphere-fog){display:none}
.reader-shell[data-atmosphere-motion=clouds] .atmosphere-fog{display:none}
.reader-shell[data-atmosphere-motion=fog] .atmosphere-clouds{display:none}

.night-app .reader-atmosphere-toggle{position:absolute;top:max(20px,env(safe-area-inset-top));right:136px;left:auto;bottom:auto;z-index:5;display:grid;place-items:center;width:44px;height:44px;min-height:0;padding:0;border:0;border-radius:0;background:none;color:var(--ink);box-shadow:none;cursor:pointer;opacity:.55;transition:opacity .15s ease}
.night-app .reader-atmosphere-toggle[aria-pressed=true],.night-app .reader-atmosphere-toggle:hover{opacity:1;background:none;box-shadow:none}
.night-app .reader-atmosphere-toggle[hidden]{display:none}
.night-app .reader-atmosphere-toggle:focus-visible{outline:1px solid currentColor;outline-offset:2px}
@media(max-height:550px){.night-app .reader-atmosphere-toggle{top:8px}}
/* Shared form boundary: stronger than decorative panel dividers. */
:root{--control-line:#77786e}:root[data-theme=paper]{--control-line:#85867c}
