/* The chakra chat. As plain as Claude or ChatGPT: one column, the reply as
   readable prose, the box at the bottom. The only colour is the seven centres. */

:root{
  --bg:#FAF9F6; --surface:#FFFFFF; --ink:#1F1E1C; --mid:#5E5B56; --soft:#8E8A83;
  --line:#E7E4DE; --bubble:#EFECE6; --fig:#EEEAE3; --btn:#1F1E1C; --on-btn:#FFFFFF;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --serif:"Source Serif 4",Georgia,serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#1B1A18; --surface:#25241F; --ink:#ECE9E3; --mid:#B4AFA6; --soft:#837E76;
    --line:#35332E; --bubble:#2F2D29; --fig:#2B2925; --btn:#ECE9E3; --on-btn:#1B1A18;
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15.5px;line-height:1.5;
  -webkit-font-smoothing:antialiased;overflow:hidden}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--mid);outline-offset:2px}

.shell{display:flex;height:100dvh;position:relative}
.chat{flex:1;min-width:0;display:flex;flex-direction:column;height:100dvh}

/* top bar */
.top{display:flex;align-items:center;gap:8px;padding:8px 10px;min-height:52px}
.top .title{flex:1;font-size:14.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}
.icon{width:38px;height:38px;border-radius:10px;border:0;background:none;cursor:pointer;display:grid;place-items:center;color:var(--mid)}
.icon:hover{background:var(--bubble);color:var(--ink)}
.demo{font-size:11.5px;font-weight:500;padding:3px 9px;border-radius:99px;border:1px solid var(--line);color:var(--mid);cursor:help}

/* where the reading is */
.strip{display:flex;align-items:center;justify-content:center;gap:12px;padding:2px 16px 10px;border-bottom:1px solid var(--line)}
.strip ol{display:flex;gap:7px;list-style:none;margin:0;padding:0}
.strip li{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--c);opacity:.45;transition:all .25s}
.strip li.reached{background:var(--c);opacity:1}
.strip li.now{background:var(--c);opacity:1;box-shadow:0 0 0 3px var(--bg),0 0 0 4.5px var(--c);transform:scale(1.1)}
.strip .where{font-size:12.5px;color:var(--mid);white-space:nowrap}

/* drawer */
.drawer{position:fixed;inset:0 auto 0 0;width:min(300px,84vw);background:var(--surface);border-right:1px solid var(--line);
  z-index:30;transform:translateX(-102%);transition:transform .22s ease;padding:12px 10px;overflow-y:auto}
.drawer-open .drawer{transform:none}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.28);z-index:25;opacity:0;pointer-events:none;transition:opacity .22s}
.drawer-open .scrim{opacity:1;pointer-events:auto}
.drawer .new{width:100%;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:none;cursor:pointer;font-weight:500;margin-bottom:12px}
.drawer ul{list-style:none;margin:0;padding:0}
.drawer li{display:flex;align-items:center;border-radius:9px}
.drawer li.on,.drawer li:hover{background:var(--bubble)}
.drawer .open{flex:1;text-align:left;border:0;background:none;padding:9px 12px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}
.drawer .del{border:0;background:none;color:var(--soft);cursor:pointer;padding:6px 10px;font-size:12px;opacity:0}
.drawer li:hover .del,.drawer li.on .del,.drawer .del:focus-visible{opacity:1}
.drawer .none{color:var(--soft);font-size:13.5px;padding:6px 12px}

/* empty state */
.hello{flex:1;display:flex;flex-direction:column;justify-content:center;width:100%;max-width:720px;margin:0 auto;padding:0 16px 10vh}
.hello h1{font-family:var(--serif);font-weight:400;font-size:clamp(26px,5vw,34px);line-height:1.2;letter-spacing:-.015em;margin:0 0 10px;text-align:center}
.hello > p{color:var(--mid);text-align:center;margin:0 auto 26px;max-width:34em}
.hello .composer-wrap{padding:0;max-width:none}
.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:18px}
.chips button{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:7px 14px;font-size:13.5px;cursor:pointer;color:var(--mid)}
.chips button:hover{color:var(--ink);border-color:var(--soft)}

/* thread */
.scroll{flex:1;overflow-y:auto;overscroll-behavior:contain}
.thread{max-width:720px;margin:0 auto;padding:12px 18px 30px}
.msg{margin:22px 0}
.msg.user{display:flex;justify-content:flex-end}
.msg.user .bubble{background:var(--bubble);border-radius:20px;padding:10px 16px;max-width:82%;white-space:pre-wrap;overflow-wrap:anywhere}
.prose{font-family:var(--serif);font-size:17.5px;line-height:1.66;overflow-wrap:anywhere}
.prose p{margin:0 0 .85em}
.prose > :last-child{margin-bottom:0}
.prose h3,.prose h4{font-family:var(--sans);font-size:15px;font-weight:600;margin:1.2em 0 .4em}
.prose ul,.prose ol{margin:0 0 .85em;padding-left:1.3em}
.prose li{margin:.25em 0}
.prose strong{font-weight:600}
.prose blockquote{margin:0 0 .85em;padding-left:14px;border-left:2px solid var(--line);color:var(--mid)}
.prose code{font-size:.88em;background:var(--bubble);padding:1px 5px;border-radius:4px}
.prose pre{background:var(--bubble);padding:12px;border-radius:8px;overflow:auto;font-size:13px}
.prose.live > :last-child::after{content:"";display:inline-block;width:.45em;height:1.05em;margin-left:2px;vertical-align:-.15em;
  background:var(--ink);opacity:.55;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.thinking{display:flex;align-items:center;gap:5px;color:var(--soft);font-size:14px}
.thinking span{margin-right:4px}
.thinking i{width:5px;height:5px;border-radius:50%;background:currentColor;animation:breathe 1.3s ease-in-out infinite}
.thinking i:nth-of-type(2){animation-delay:.18s}.thinking i:nth-of-type(3){animation-delay:.36s}
@keyframes breathe{0%,100%{opacity:.25}50%{opacity:1}}
.note{color:var(--soft);font-size:14px;margin:8px 0 0}
.link{border:0;background:none;padding:0;color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer;font-size:inherit}
.link.quiet{color:var(--soft);text-decoration:none;font-size:13px}
.link.quiet:hover{color:var(--ink)}
.acts{margin-top:8px}

/* composer */
.composer-wrap{width:100%;max-width:760px;margin:0 auto;padding:0 14px 12px}
.composer{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:12px 12px 8px 16px;
  box-shadow:0 1px 2px rgba(0,0,0,.04),0 6px 22px rgba(0,0,0,.05)}
.composer:focus-within{border-color:var(--soft)}
.composer textarea{width:100%;border:0;background:transparent;resize:none;outline:none;color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:1.5;max-height:220px;display:block}
.composer textarea::placeholder{color:var(--soft)}
.tools{display:flex;justify-content:flex-end;align-items:center;gap:6px;margin-top:6px}
.mic{width:34px;height:34px;border-radius:50%;border:0;background:none;color:var(--mid);cursor:pointer;display:grid;place-items:center}
.mic:hover{background:var(--bubble)}
.mic[aria-pressed=true]{background:#C0584F;color:#fff}
.send{width:34px;height:34px;border-radius:50%;border:0;background:var(--btn);color:var(--on-btn);cursor:pointer;display:grid;place-items:center}
.send:disabled{opacity:.25;cursor:default}
.fine{font-size:12px;color:var(--soft);text-align:center;margin:9px 0 0}

/* the card in the reply */
.map-card{display:flex;align-items:center;gap:14px;width:100%;max-width:440px;margin-top:16px;padding:12px 16px 12px 12px;
  border:1px solid var(--line);border-radius:14px;background:var(--surface);cursor:pointer;text-align:left}
.map-card:hover{border-color:var(--soft)}
.map-card .mini{width:40px;height:58px;flex:none}
.mc-text{flex:1;display:flex;flex-direction:column;gap:2px}
.mc-text strong{font-weight:600;font-size:14.5px}
.mc-text span{font-size:13px;color:var(--mid)}
.mc-open{font-size:13px;font-weight:500;padding:6px 12px;border-radius:99px;background:var(--bubble)}
.map-card.drawing{cursor:default;animation:breathe 1.6s ease-in-out infinite}

/* ---------------- the map ---------------- */
.map{position:fixed;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column;animation:rise .32s ease}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (min-width:1100px){
  .map{position:relative;inset:auto;flex:0 0 min(620px,48vw);height:100dvh;border-left:1px solid var(--line);animation:slide .32s ease}
  @keyframes slide{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
}
.map-top{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 10px 22px;min-height:52px;
  border-bottom:1px solid var(--line);font-weight:500;font-size:14.5px}
.map-acts{display:flex;gap:6px;align-items:center}
.map-acts button{border:1px solid var(--line);background:none;border-radius:99px;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--mid)}
.map-acts .x{border:0;width:36px;height:36px;padding:0;font-size:15px}
.map-scroll{flex:1;overflow-y:auto;padding:30px 24px 60px}
.map-scroll > section{max-width:600px;margin:0 auto}

.eyebrow{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--soft);margin:0 0 10px}
.lead{font-family:var(--serif);font-size:clamp(21px,3.4vw,25px);line-height:1.42;letter-spacing:-.008em;margin:0}

.m-body{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:18px 26px;align-items:center;margin-top:30px !important;
  padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
@media (max-width:520px){.m-body{grid-template-columns:1fr}.figure{max-width:210px;margin:0 auto}}
.figure{width:100%;height:auto;color:var(--ink);display:block}
.figure .fig{fill:var(--fig)}
.figure .spine,.mini .spine{stroke:var(--line);stroke-width:1.2}
.figure .path{fill:none;stroke:currentColor;stroke-width:1.3;opacity:.62}
.figure .path-1{stroke-dasharray:4 3}
.figure .path-2{opacity:.4}
.m-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.m-legend li{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;font-size:14px}
.m-legend .st{color:var(--mid);font-size:12.5px}
.m-legend li.dim .nm{color:var(--soft)}
.glyph{color:var(--soft)}

.m-sec{margin-top:34px !important}
.m-sec h3{font-size:13px;font-weight:600;letter-spacing:.02em;margin:0 0 14px}
.chain{list-style:none;margin:0 0 16px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.chain .step{display:flex;flex-direction:column;gap:1px;padding-left:12px;border-left:3px solid var(--c)}
.chain .who{font-size:12px;color:var(--mid);font-weight:500}
.chain .step span:last-child{font-family:var(--serif);font-size:17px}
.chain .arrow{color:var(--soft);padding:4px 0 4px 12px;line-height:1}

.centres{display:grid;gap:12px}
.centre{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:14px 16px 16px}
.centre header{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;margin-bottom:10px}
.centre h4{margin:0;font-size:15px;font-weight:600}
.centre .sk{font-size:12.5px;color:var(--soft);font-style:italic}
.centre .state{font-size:12px;color:var(--mid);border:1px solid var(--line);border-radius:99px;padding:2px 9px;white-space:nowrap}
.layer{padding-top:9px;margin-top:9px;border-top:1px dashed var(--line)}
.layer:first-of-type{border-top:0;margin-top:0;padding-top:0}
.layer .lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin:0 0 4px}
.layer p{margin:0 0 4px;font-size:14.5px;line-height:1.55}
.layer .k{color:var(--mid);font-weight:500}
.layer blockquote{margin:6px 0 0;padding-left:11px;border-left:2px solid var(--c);font-family:var(--serif);font-style:italic;font-size:15px;color:var(--mid)}
.layer .none{color:var(--soft);font-style:italic}
.centre.thin .layer.you{opacity:.85}

.three{display:grid;gap:20px}
@media (min-width:640px){.three{grid-template-columns:repeat(3,1fr)}}
.m-list{margin:0;padding-left:1.1em;font-size:14.5px}
.m-list li{margin:0 0 6px}

.timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}
.timeline li{position:relative;padding:0 0 14px 18px;font-size:15px}
.timeline li::before{content:"";position:absolute;left:-6px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--bg);border:2px solid var(--soft)}
.timeline li.next::before{border-style:dashed}
.timeline .when{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft)}

.exps{margin:0;padding:0;list-style:none;counter-reset:e;display:grid;gap:10px}
.exps li{counter-increment:e;border:1px solid var(--line);border-radius:12px;padding:12px 14px 12px 46px;position:relative;background:var(--surface)}
.exps li::before{content:counter(e);position:absolute;left:14px;top:12px;width:22px;height:22px;border-radius:50%;
  background:var(--bubble);font-size:12px;display:grid;place-items:center;font-weight:600}
.exps strong{font-weight:600;font-size:15px}
.exps p{margin:3px 0 0;font-size:14.5px;color:var(--mid)}
.m-foot{max-width:600px;margin:36px auto 0;font-size:12.5px;color:var(--soft);text-align:center}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

@media print{
  body{overflow:visible;background:#fff}
  .chat,.drawer,.scrim,.map-acts{display:none!important}
  .map{position:static;display:block;border:0;animation:none}
  .map-scroll{overflow:visible;padding:0}
  .centre,.chain,.exps li{break-inside:avoid}
}
