@font-face{font-family:"Lora";src:url(../fonts/lora.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"Lora";src:url(../fonts/lora-italic.woff2) format("woff2");font-weight:400 700;font-style:italic;font-display:swap}

:root{
  --bg:#12151b; --surface:#1b212b; --line:#2c3441; --text:#e9e3d9; --muted:#a6acb6;
  --accent-warm:#e3a661; --accent-cool:#92b4dc; --ink:#14100a; --shadow:0 12px 32px rgba(0,0,0,.45);
  color-scheme:dark;
}
@media (prefers-color-scheme:light){
  :root:not([data-theme="dark"]){
    --bg:#f6f1e7; --surface:#fffaf0; --line:#ddd2bc; --text:#27231e; --muted:#675f54;
    --accent-warm:#8e4d10; --accent-cool:#33577d; --ink:#fff; --shadow:0 10px 26px rgba(60,40,10,.16);
    color-scheme:light;
  }
}
:root[data-theme="light"]{
  --bg:#f6f1e7; --surface:#fffaf0; --line:#ddd2bc; --text:#27231e; --muted:#675f54;
  --accent-warm:#8e4d10; --accent-cool:#33577d; --ink:#fff; --shadow:0 10px 26px rgba(60,40,10,.16);
  color-scheme:light;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  --accent:var(--accent-warm);
  margin:0; min-height:100vh; display:flex; flex-direction:column;
  font-family:"Lora",Georgia,"Times New Roman",serif; font-size:1.1875rem; line-height:1.72;
  color:var(--text); background-color:var(--bg);
  background-image:radial-gradient(120% 55% at 50% 0%,color-mix(in srgb,var(--accent) 13%,transparent),transparent 65%);
  background-repeat:no-repeat;
}
body.cool{--accent:var(--accent-cool)}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}

/* barra superiore */
.bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;
  padding:0 max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));height:52px;
  background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line)}
.brand{font-size:.95rem;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--text);font-weight:500}
#theme{appearance:none;border:0;background:transparent;color:var(--text);width:44px;height:44px;border-radius:50%;
  display:grid;place-items:center;cursor:pointer}
#theme:hover{background:var(--surface)}
#theme svg{width:22px;height:22px}
#progress{position:fixed;top:52px;left:0;right:0;height:3px;z-index:11;background:var(--accent);
  transform:scaleX(0);transform-origin:0 50%}

main{flex:1;width:100%;max-width:38rem;margin:0 auto;padding:32px 20px 24px}

/* intestazione capitolo */
.chapter-head{text-align:center;margin-bottom:28px}
.eyebrow{margin:0 0 6px;font-size:.8rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:500}
h1{margin:0 0 22px;font-size:clamp(2rem,1.4rem + 3vw,2.8rem);line-height:1.15;font-weight:500;letter-spacing:.01em;text-wrap:balance}
.art{width:min(300px,78vw);aspect-ratio:1;margin:0 auto;border-radius:18px;object-fit:cover;box-shadow:var(--shadow)}

/* testo */
.prose p{margin:0 0 1.15em;hyphens:auto;-webkit-hyphens:auto;text-wrap:pretty}
.prose.prologue{hyphens:none;-webkit-hyphens:none;text-align:center;font-size:1.3rem;font-style:italic;padding:8px 0 16px}
.prose.prologue p{margin-bottom:1.4em}
.fine{font-size:1.6rem;line-height:1;text-align:center;color:var(--accent);letter-spacing:.5em;margin:1.4em 0 0}

/* flashback */
.prose .flashback{
  font-style: italic;
  margin: 1.6em 0;
  padding-left: 1em;
}
.prose .flashback p{
  margin-bottom: 1.15em;
}
.prose .flashback p:last-child{
  margin-bottom: 0;
}

.prose .scene-break{
  text-align: center;
  margin: 2em 0;
  color: var(--accent);
  font-style: normal;
  letter-spacing: .8em;
  padding-left: .8em;
  user-select: none;
}

/* player */
.song{margin:44px 0 28px;padding:22px 20px 20px;background:var(--surface);border:1px solid var(--line);
  border-radius:20px;box-shadow:var(--shadow)}
.song-label{display:flex;align-items:center;gap:10px;margin:0 0 2px;font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-weight:500}
.song-label svg{width:20px;height:20px;flex:none}
.song-title{margin:0 0 14px;font-size:1.5rem;line-height:1.25;font-weight:500}
.song audio{width:100%;height:54px;display:block}
.song-note{margin:12px 0 0;font-size:.95rem;color:var(--muted)}
.song-note[hidden]{display:none}

/* navigazione */
.pager{display:grid;gap:12px;margin:30px 0 8px}
.btn{display:flex;flex-direction:column;justify-content:center;min-height:56px;padding:10px 22px;border-radius:16px;
  text-decoration:none;text-align:center;line-height:1.3;font-weight:500;transition:transform .15s,box-shadow .15s}
.btn small{font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;font-weight:400;opacity:.85}
.btn.primary{background:var(--accent);color:var(--ink)}
.btn.primary:hover{transform:translateY(-1px)}
.btn.ghost{border:1px solid var(--line);color:var(--text);background:transparent}
.btn.ghost:hover{background:var(--surface)}
.btn.pulse{animation:pulse 1.6s ease-out 3}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 60%,transparent)}100%{box-shadow:0 0 0 18px transparent}}
@media (prefers-reduced-motion:reduce){.btn.pulse{animation:none}.btn{transition:none}}

/* indice (home) */
.hero{text-align:center;margin-bottom:34px}
.cover{width:min(270px,70vw);aspect-ratio:2/3;margin:6px auto 26px;border-radius:6px;object-fit:cover;box-shadow:0 18px 44px rgba(0,0,0,.5)}
.hero h1{margin-bottom:6px}
.sub{margin:0 0 4px;font-style:italic;color:var(--muted);font-size:1.15rem}
.author{margin:18px 0 0;font-size:.85rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}
.hero .btn{margin:26px auto 0;max-width:20rem}
.blurb{text-align:center;font-style:italic;margin:0 auto 38px}
.blurb p{margin:0 0 1em}
.blurb .dots{font-style:normal;color:var(--accent);letter-spacing:.5em}
.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:22px 22px 8px;margin:0 0 34px}
.card h2,.toc-title{margin:0 0 12px;font-size:.85rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:500}
.card p{margin:0 0 1em;font-size:1.05rem;line-height:1.65}
.toc{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.toc a{display:flex;align-items:center;gap:14px;padding:10px;border:1px solid var(--line);border-radius:16px;text-decoration:none;color:var(--text);background:var(--surface);min-height:72px}
.toc a:hover{border-color:var(--accent)}
.toc img{width:56px;height:56px;border-radius:10px;object-fit:cover;flex:none}
.toc .ph{width:56px;height:56px;border-radius:10px;flex:none;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 16%,var(--bg));color:var(--accent);font-size:1.5rem}
.toc .t{display:block;font-size:1.1rem;line-height:1.25}
.toc .e{display:block;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.toc .n{margin-left:auto;color:var(--accent);flex:none}
.toc .n svg{width:20px;height:20px;display:block}

/* aiuto + footer */
.aid{margin:34px 0 0;padding:16px 18px;border-left:3px solid var(--accent);background:var(--surface);border-radius:0 14px 14px 0;font-size:.98rem;line-height:1.6;color:var(--muted)}
.aid strong{color:var(--text)}
footer{padding:22px 20px calc(28px + env(safe-area-inset-bottom));text-align:center;font-size:.85rem;color:var(--muted);border-top:1px solid var(--line)}
footer p{margin:0}
