:root{
  --canvas:#E5E2DB; --rail:#1A1A18; --ink:#1C1A17; --muted:#6F6A62;
  --hairline:#CFCBC2; --accent:#3E4A5B; --rail-ink:#E5E2DB; --rail-muted:#6c6862;
  --maxread:460px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:'Inter',system-ui,sans-serif;color:var(--ink);background:var(--canvas)}
#app{display:flex;height:100vh;overflow:hidden}
#rail{width:64px;flex:none;background:var(--rail);display:flex;flex-direction:column;
  align-items:center;justify-content:space-between;padding:18px 0}
.rail-top{color:var(--rail-ink);font-size:12px;letter-spacing:.16em;text-align:center;line-height:1.4}
.rail-modes{display:flex;flex-direction:column;gap:14px}
.rail-btn{background:none;border:none;color:var(--rail-muted);font-size:20px;cursor:pointer;
  width:40px;height:40px;border-radius:2px;transition:color .3s ease,background .3s ease}
.rail-btn.active{color:var(--rail-ink)}
.rail-btn:hover{color:var(--rail-ink)}
#stage{flex:1;position:relative;overflow:hidden}
.mode{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .4s ease}
.mode.active{opacity:1;visibility:visible}
.label{color:var(--accent);font-size:13px;letter-spacing:.22em;text-transform:uppercase}
@media (max-width:640px){
  #app{flex-direction:column}
  #rail{width:100%;height:56px;flex-direction:row;padding:0 16px;justify-content:space-between}
  .rail-top{font-size:11px}
  .rail-modes{flex-direction:row}
  #stage{flex:1}
}

/* ── Book mode ── */
#book{overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth}

.chapter{height:100%;scroll-snap-align:start;position:relative;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:48px 40px;text-align:center}
.chapter.is-descended{justify-content:flex-start;text-align:left}

/* the migrating header — moved with a FLIP transform from book.js */
.ch-head{flex:none;width:100%;max-width:var(--maxread);
  transition:transform .85s cubic-bezier(.16,1,.3,1);will-change:transform}
.ch-title{font-size:30px;line-height:1.18;font-weight:500;letter-spacing:-.01em;margin:16px 0 0}
.ch-en{color:var(--muted);font-size:14px;font-style:italic;margin-top:8px}
.ch-rule{width:34px;height:1px;background:var(--accent);margin:24px auto 0}
.chapter.is-descended .ch-rule{margin-left:0}

/* the body stage — short in layer 0, a scroll surface once descended */
.ch-stage{position:relative;width:100%;max-width:var(--maxread);flex:none}
.chapter.is-descended .ch-stage{flex:1 1 auto;overflow-y:auto;width:100%;margin-top:24px;
  -webkit-overflow-scrolling:touch;
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 16px,#000 calc(100% - 30px),transparent 100%);
  mask-image:linear-gradient(180deg,transparent 0,#000 16px,#000 calc(100% - 30px),transparent 100%)}

.ch-panel{opacity:0;transition:opacity .45s ease}
.ch-panel.is-active{opacity:1}
.ch-panel.deep,.ch-panel.raw{display:none}
.ch-panel.kort{display:block;opacity:1}
.ch-kort{font-size:16px;line-height:1.7;color:var(--ink)}

/* deep layer — the distillation */
.deep h3{color:var(--accent);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  font-weight:500;margin:26px 0 10px}
.deep h3:first-child{margin-top:2px}
.deep p{font-size:15px;line-height:1.72;margin:0 0 13px;color:var(--ink)}
.deep p em{color:var(--muted);font-style:italic}

/* raw layer — Greene's scanned words, quieter, set as running prose */
.raw{padding-bottom:8px}
.raw h3{color:var(--muted);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  font-weight:500;margin:26px 0 10px}
.raw h3:first-child{margin-top:2px}
.raw p{font-size:14.5px;line-height:1.75;margin:0 0 14px;color:#56514A;hyphens:auto}

.ch-cue{flex:none;color:var(--muted);font-size:12px;letter-spacing:.04em;opacity:.7;margin-top:26px}
.chapter.is-descended .ch-cue{margin-top:16px}

@media (max-width:640px){
  .chapter{padding:34px 22px}
  .ch-title{font-size:25px}
  .ch-kort{font-size:15px}
  .raw p,.deep p{font-size:14px}
}

/* ── Settings panel ── */
#settings-panel{position:absolute;inset:0;background:rgba(20,18,16,.55);
  display:flex;align-items:center;justify-content:center;z-index:50}
#settings-panel[hidden]{display:none}
.settings-card{background:var(--canvas);border:1px solid var(--hairline);
  width:min(420px,92vw);padding:28px;border-radius:4px}
.settings-card h3{margin:0 0 18px;font-weight:500;font-size:18px}
.settings-card label{display:block;color:var(--muted);font-size:12px;
  letter-spacing:.12em;text-transform:uppercase;margin:14px 0 6px}
.settings-card input{width:100%;padding:10px;border:1px solid var(--hairline);
  background:#fff;border-radius:2px;font-family:inherit;font-size:14px;color:var(--ink)}
.settings-note{color:var(--muted);font-size:12px;line-height:1.5;margin:10px 0 0}
.settings-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
.settings-actions button{padding:9px 16px;border:1px solid var(--hairline);background:none;
  font-family:inherit;font-size:13px;letter-spacing:.06em;cursor:pointer;border-radius:2px}
.settings-actions .primary{background:var(--rail);color:var(--rail-ink);border-color:var(--rail)}

/* ── Advisor (chat) ── */
#advisor{display:flex;flex-direction:column}
.chat-scroll{flex:1;overflow-y:auto;padding:32px 24px;display:flex;flex-direction:column;gap:18px}
.chat-inner{width:100%;max-width:680px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.msg{font-size:15px;line-height:1.7;white-space:pre-wrap}
.msg.user{color:var(--muted)}
.msg.user::before{content:"Du";display:block;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.msg.greene::before{content:"Greene";display:block;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.msg a{color:var(--accent);text-decoration:underline;cursor:pointer}
.chat-input{border-top:1px solid var(--hairline);padding:16px 24px;display:flex;gap:12px}
.chat-input textarea{flex:1;resize:none;height:48px;padding:12px;border:1px solid var(--hairline);
  background:#fff;border-radius:2px;font-family:inherit;font-size:15px;color:var(--ink)}
.chat-input button{padding:0 20px;border:1px solid var(--rail);background:var(--rail);
  color:var(--rail-ink);font-family:inherit;cursor:pointer;border-radius:2px;letter-spacing:.06em}
.notice{color:var(--muted);font-size:14px}
.notice a{color:var(--accent);cursor:pointer;text-decoration:underline}

/* ── Mobile/responsive pass ── */
@media (max-width:640px){
  .chat-scroll{padding:20px 16px}
  .chat-input{padding:12px 16px}
  .ch-kort{font-size:15px}
  .layer-raw{font-size:12px}
}
