:root{
  --bg:#0c0d12;--panel:#17161b;--paper:#fbf5e9;--ink:#2d241c;--gold:#c69243;
  --cream:#f8f0df;--muted:#b9b1a5;--border:rgba(198,146,67,.22);
}
*{box-sizing:border-box} html,body{margin:0;min-height:100%;background:var(--bg);color:var(--cream);font-family:system-ui,sans-serif}
button,input,textarea,select{font:inherit}
.stage{min-height:100vh;position:relative;overflow:hidden;padding:3vh 2vw;background:
radial-gradient(circle at 20% 40%,rgba(125,78,48,.18),transparent 36%),
radial-gradient(circle at 80% 35%,rgba(46,65,96,.17),transparent 38%),linear-gradient(180deg,#10131a,#090a0e)}
.app-card{position:relative;width:min(78vw,1180px);min-width:680px;margin:0 auto;padding:24px 34px 30px;border-radius:26px;background:rgba(20,19,24,.985);border:1px solid var(--border);box-shadow:0 24px 80px rgba(0,0,0,.42)}
.app-card:before{content:"";display:block;width:62%;height:7px;margin:-8px auto 18px;border-radius:10px;background:linear-gradient(90deg,transparent,#9c6e32,var(--gold),#9c6e32,transparent);opacity:.75}
.brand{text-align:center}.brand h1{margin:0;font-size:clamp(32px,3vw,48px)}.brand p{margin:3px 0 18px;color:#d8d1c5}
.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{background:#201f24;border:1px solid rgba(255,255,255,.05);border-radius:14px;padding:20px}.free-panel{margin-top:18px}
.input,.textarea,.select{width:100%;border:1px solid rgba(255,255,255,.09);border-radius:7px;background:#2a2726;color:#fff8ea;padding:11px 13px}
.btn,.list-item{appearance:none;border:1px solid rgba(255,255,255,.04);border-radius:8px;background:linear-gradient(180deg,#68451f,#493016);color:#fff8eb;padding:11px 14px;font-weight:650;cursor:pointer}
.btn:hover,.list-item:hover{filter:brightness(1.15)}.btn:disabled{opacity:.45;cursor:not-allowed}
.list{display:flex;flex-direction:column;gap:8px;max-height:42vh;overflow:auto;padding:8px 8px 12px;scroll-snap-type:y proximity;scrollbar-gutter:stable}
.list-item{display:flex;align-items:center;min-height:50px;text-align:left;scroll-snap-align:start;text-decoration:none;width:100%}
.muted,.small-status,.subtitle{color:var(--muted)}.small-status{min-height:22px;margin-top:7px}.source-row{display:flex;gap:10px;align-items:center;margin:8px 0}.source-chip{padding:7px 12px;border-radius:999px;background:#352819;color:#f7dfb5}.search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
.chapter-title{text-align:center;font-family:Georgia,serif;color:#f8f1e4}.reader-shell{max-width:1030px;margin:auto}.reader-frame{height:min(58vh,570px);min-height:360px;overflow:auto;border-radius:10px;background:var(--paper);border:1px solid #efe1c7;scrollbar-gutter:stable}
.reader-content{max-width:850px;margin:auto;padding:34px 44px 54px;color:var(--ink);font:400 22px/1.65 Georgia,serif}.reader-content img{max-width:86%;height:auto;display:block;margin:22px auto}.reader-content p{margin:0 0 1.1em}
.comfort-hint,.status{text-align:center;color:#c9c0b2}.comfort-hint{font-size:13px;margin-top:10px}.status{font-size:14px;margin:5px 0 11px}.controls{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:12px;background:rgba(4,5,8,.76);backdrop-filter:blur(5px)}.hidden{display:none!important}
.modal-card{width:min(72vw,980px);max-height:calc(100dvh - 24px);overflow:auto;padding:28px 34px;border-radius:22px;background:rgba(23,22,27,.995);border:1px solid var(--border);box-shadow:0 26px 90px rgba(0,0,0,.55)}
.medium{width:min(64vw,900px)}.modal-card h2{text-align:center;font-size:36px;margin:0}.subtitle{text-align:center;margin:5px 0 22px}.modal-list{max-height:46vh}.actions{display:flex;justify-content:center;gap:10px;margin-top:18px}.sticky-actions{position:sticky;bottom:-1px;background:linear-gradient(180deg,rgba(23,22,27,.88),#17161b 35%);padding-top:10px;padding-bottom:2px}
.tools-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.tools-3{grid-template-columns:repeat(3,1fr)}.section-label{display:block;font-weight:700;margin:18px 0 7px}.form-row{display:grid;grid-template-columns:160px 1fr;gap:12px;align-items:center;margin:9px 0}
.quiz-card{width:min(70vw,960px)}.quiz-settings{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:560px;margin:0 auto 14px}.quiz-settings label{display:flex;gap:9px;align-items:center;justify-content:center}.quiz-progress{text-align:center;height:28px}.quiz-question{min-height:140px;max-height:170px;overflow:hidden;display:flex;align-items:center;justify-content:center;text-align:center;padding:16px 32px;border-radius:10px;background:#1d1c20;color:#fff;font-weight:650;font-size:clamp(20px,2vw,29px);line-height:1.35}.quiz-response{min-height:170px;display:flex;flex-direction:column;justify-content:center;gap:9px;padding:12px 8%}.quiz-feedback{height:72px;overflow:hidden;text-align:center;color:#e2d8ca;font-size:16px;line-height:1.4;padding:5px 5%}.quiz-choice{width:100%}.quiz-answer-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.quiz-voicebar{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:6px}
.toast{position:fixed;left:50%;bottom:5vh;transform:translateX(-50%);z-index:200;background:#2b2118;color:#fff2d9;padding:10px 16px;border-radius:8px;box-shadow:0 10px 35px rgba(0,0,0,.4)}
@media(max-width:900px){.stage{padding:12px 6px}.app-card{width:96vw;min-width:0;padding:18px 13px}.home-grid{grid-template-columns:1fr}.reader-content{padding:25px 24px 46px;font-size:19px}.controls{grid-template-columns:repeat(4,1fr)}.modal-card,.medium,.quiz-card{width:95vw;padding:21px 16px}.tools-grid{grid-template-columns:repeat(2,1fr)}.form-row{grid-template-columns:1fr}}
@media(max-height:620px){.modal{padding:6px}.modal-card{max-height:calc(100dvh - 12px);padding-top:16px;padding-bottom:12px}.quiz-question{min-height:96px;max-height:112px;font-size:20px}.quiz-response{min-height:108px;padding-top:5px;padding-bottom:5px}.quiz-feedback{height:52px;font-size:14px}.subtitle{margin-bottom:8px}.quiz-settings{margin-bottom:7px}}

/* v1.0.2: Free Books results get their own bounded scroll viewport. */
.results{
  max-height:320px;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  padding-right:10px;
}
.results .list-item{
  flex:0 0 auto;
}
@media(max-height:760px){
  .results{max-height:240px}
}
@media(max-height:620px){
  .results{max-height:190px}
}


/* Foliora v1.0.13 — live Read Aloud tracking */
.foliora-speech-segment {
  border-radius: .18em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  transition: background-color .12s ease, box-shadow .12s ease;
}
.foliora-speech-segment.foliora-speaking {
  background-color: rgba(255, 224, 102, .42);
  box-shadow: 0 0 0 .12em rgba(255, 224, 102, .18);
}

.app-version{
  margin-top:18px;
  padding-top:10px;
  border-top:1px solid rgba(255,255,255,.12);
  font-size:12px;
  opacity:.62;
  text-align:center;
}
