:root{
  --paper:#f5f0e6; --card:#fffdf8; --field:#fffefa; --ink:#302f2b; --muted:#756f64;
  --line:#e1d9cc; --line2:#cfc6b7; --sage:#5b6653; --sage-ink:#4d5947; --on-sage:#fff;
  --warn:#9a3b2e; --mark:#f3dfb4; --shadow:0 4px 20px #4b3e2410;
  font-family:Georgia,"Iowan Old Style","Palatino Linotype",serif; color:var(--ink); background:var(--paper);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --paper:#1e1f1b; --card:#262722; --field:#2b2c27; --ink:#e9e4d8; --muted:#a39d90;
  --line:#3a3b34; --line2:#4a4b43; --sage:#8f9d82; --sage-ink:#b3c0a5; --on-sage:#141511;
  --warn:#e08a7a; --mark:#5c4a24; --shadow:0 0 0 transparent; color-scheme:dark;
}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);min-height:100vh;
  padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0)}
.hidden{display:none!important}
.wrap{max-width:820px;margin:auto;padding:16px 18px 90px}
h1{font-size:clamp(32px,6vw,48px);font-weight:normal;margin:10px 0 4px}
h2{font-weight:normal;font-size:24px;margin:0 0 6px}
h3{font-weight:normal;font-size:19px;margin:22px 0 4px}
small,.muted{color:var(--muted)}
.intro{margin:0 0 6px;line-height:1.5}
.tag{letter-spacing:.17em;text-transform:uppercase;font:11px system-ui,sans-serif;color:var(--muted)}
.note{font:12px/1.5 system-ui,sans-serif;color:var(--muted)}
.stats{font:13px system-ui,sans-serif;color:var(--muted);margin-top:12px}
.error{font:13px system-ui,sans-serif;color:var(--warn);min-height:1em}

/* En-tête et onglets */
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 0 6px}
.lock-btn{margin-top:6px;white-space:nowrap}
nav{position:sticky;top:0;z-index:5;display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;
  padding:12px 0;margin:0 -18px;padding-left:18px;padding-right:18px;background:var(--paper);border-bottom:1px solid var(--line)}
nav::-webkit-scrollbar{display:none}
nav button{background:transparent;color:var(--sage-ink);flex:1 0 auto;padding:9px 10px}
nav button.active{background:var(--sage);color:var(--on-sage)}

/* Panneaux et champs */
.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;margin:20px 0;box-shadow:var(--shadow)}
.panel.danger{border-style:dashed}
label{display:block;margin:14px 0 7px;font:13px system-ui,sans-serif;color:var(--muted)}
label.check{display:flex;gap:10px;align-items:flex-start;line-height:1.4;color:var(--ink);cursor:pointer}
label.check input{width:auto;margin:2px 0 0;flex:0 0 auto;accent-color:var(--sage)}
input,textarea,select{width:100%;background:var(--field);border:1px solid var(--line2);border-radius:8px;padding:12px;font:16px Georgia,serif;color:var(--ink)}
input[type=file]{font:14px system-ui,sans-serif}
textarea{min-height:300px;line-height:1.75;resize:vertical}
textarea.short{min-height:84px}
textarea.medium{min-height:180px}
details.texts{margin:16px 0 4px;border:1px solid var(--line);border-radius:10px;padding:10px 14px}
details.texts summary{cursor:pointer;font:14px system-ui,sans-serif;color:var(--sage-ink)}
details.texts[open] summary{margin-bottom:4px}
:focus-visible{outline:2px solid var(--sage);outline-offset:2px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;align-items:end}
.row2>input,.row2>select{margin-top:8px}
@media (max-width:560px){.row2{grid-template-columns:1fr}}
fieldset.themes{border:1px solid var(--line);border-radius:10px;margin:16px 0 8px;padding:6px 12px 10px}
fieldset.themes legend{font:13px system-ui,sans-serif;color:var(--muted);padding:0 6px}
fieldset.themes label.check{display:inline-flex;margin:8px 16px 0 0}

button,.button{border:1px solid var(--sage);background:var(--sage);color:var(--on-sage);padding:11px 16px;border-radius:9px;cursor:pointer;font:13px system-ui,sans-serif;display:inline-block;text-decoration:none}
button.secondary{background:transparent;color:var(--sage-ink)}
button.link{background:none;border:none;padding:4px 0;color:var(--sage-ink);text-decoration:underline;text-underline-offset:3px}
button:disabled{opacity:.5;cursor:default}
.actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.actions.small button{padding:8px 12px}
.tools{margin-top:8px}

/* Écrire */
.quote{font-size:20px;line-height:1.5;font-style:italic;margin:12px 0 4px}
blockquote cite{display:block;font:13px system-ui,sans-serif;font-style:normal;color:var(--muted);margin-top:8px}
.epigraph{margin:16px 0 0;padding:12px 16px;border-left:3px solid var(--sage);background:var(--field);background:color-mix(in srgb,var(--sage) 7%,transparent);border-radius:0 8px 8px 0}
.epigraph blockquote{margin:0;font-style:italic;line-height:1.5}
.meter{font:12px system-ui,sans-serif;color:var(--muted);text-align:right;margin-top:6px}

/* Correcteur */
.spell{margin-top:16px;border-top:1px solid var(--line);padding-top:6px}
.spell-head{display:flex;justify-content:space-between;align-items:baseline}
.spell-item{padding:12px 0;border-bottom:1px solid var(--line)}
.spell-item p{margin:0 0 6px;font:14px/1.45 system-ui,sans-serif}
.spell-ctx{font-size:15px;line-height:1.6;color:var(--muted)}
.spell-ctx mark{background:var(--mark);color:var(--ink);border-radius:3px;padding:0 2px;text-decoration:underline wavy var(--warn);text-underline-offset:3px}
.spell-item .actions{margin-top:8px}
.spell-item .actions button{padding:6px 10px}

/* Relire */
.entry{padding:18px 0;border-top:1px solid var(--line)}
.entry p{white-space:pre-wrap;line-height:1.65;margin:8px 0}
.entry blockquote{margin:8px 0;font-style:italic;color:var(--muted)}
.entry button{padding:7px 11px}

/* Citations */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 4px}
.chips button{padding:7px 12px;border-radius:999px;background:transparent;color:var(--sage-ink);border-color:var(--line2)}
.chips button[aria-pressed=true]{background:var(--sage);color:var(--on-sage);border-color:var(--sage)}
.q{padding:18px 0;border-top:1px solid var(--line)}
.q:first-child{border-top:none}
.q blockquote{margin:0;font-size:18px;line-height:1.55}
.q .actions{margin-top:10px}
.q .actions button{padding:6px 10px}
.q .th{font:11px system-ui,sans-serif;color:var(--muted);margin-top:4px}
.fav[aria-pressed=true]{color:#a7802a;border-color:#a7802a}

/* Aperçu du livre */
.book-preview{max-height:70vh;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;color:#222;padding:0}
.book-preview .bk{font-size:var(--bk-size,11pt)}
.book-preview .bk>section{padding:9% 11%;border-bottom:1px dashed #ccc;min-height:200px}
.book-preview .bk>section:last-child{border-bottom:none}

/* Verrouillage */
.lock{min-height:100vh;display:grid;place-items:center;padding:24px}
.cover{width:min(420px,100%);background:var(--card);border-radius:6px 14px 14px 6px;padding:14px;box-shadow:var(--shadow),inset 8px 0 0 var(--sage);border:1px solid var(--line)}
.cover-frame{border:1px solid var(--line2);outline:1px solid var(--line2);outline-offset:4px;padding:34px 26px 26px 34px;text-align:center}
.cover-brand{font:11px system-ui,sans-serif;letter-spacing:.3em;color:var(--muted);margin:0}
.cover h1{margin:14px 0 6px}
.cover-values{font-style:italic;color:var(--muted);margin:0 0 26px}
.cover form{text-align:left}
.cover form button[type=submit]{width:100%;margin-top:16px;padding:13px}
.lead{line-height:1.55;margin:0 0 8px}

/* Dialogue et notifications */
dialog{border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);max-width:min(460px,92vw);padding:22px}
dialog::backdrop{background:#0006}
dialog h3{margin:0 0 10px}
#dlgBody{font:15px/1.5 system-ui,sans-serif}
#dlgInput{margin-top:12px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);opacity:0;pointer-events:none;
  background:var(--ink);color:var(--paper);font:14px system-ui,sans-serif;padding:11px 16px;border-radius:10px;max-width:90vw;transition:.25s}
.toast.show{opacity:1;transform:translate(-50%,0)}
body.veil #app{filter:blur(18px)}
.print-book{display:none}

/* La mise en page du livre est définie dans app.js (BOOK_CSS) pour être partagée avec les exports. */
@media print{
  body{background:#fff;padding:0}
  body.printing>*:not(#printBook){display:none!important}
  body.printing #printBook{display:block}
  #printBook .bk>section{break-before:page}
  #printBook .bk>section:first-child{break-before:auto}
  #printBook .b-cover{min-height:85vh}
  #printBook .b-part{min-height:80vh}
  #printBook .b-prose h4{break-after:avoid}
  #printBook .b-dedic{min-height:70vh}
  #printBook .b-entry h3{break-after:avoid}
  #printBook .b-entry p{orphans:3;widows:3}
}
@media (prefers-reduced-motion:reduce){.toast{transition:none}}

.synckey{font-family:ui-monospace,Menlo,monospace;font-size:1.05em;letter-spacing:.04em;word-break:break-all;background:rgba(127,127,127,.1);border-radius:10px;padding:12px 14px;margin:6px 0 4px;user-select:all;-webkit-user-select:all}
