/* Palimpsest — the reading treatment of M0.5, given a globe and a timeline.
   Tokens: bare :root is light; dark is offered to the system and forced by the switch. */

:root{
  --ground:#EFEBE2; --surface:#F7F4EC; --ink:#1F1B15; --ink-2:#5C564C; --rule:#D4CDBF;
  --verdigris:#2E5F5B; --verdigris-soft:#DCE8E4; --gall:#7C4A2A; --gall-soft:#EDDCCF;
  --amber:#8A6A1F; --amber-soft:#F0E6C8; --contested:#5A4B8A; --contested-soft:#E4DFF0;
  --mono-bg:#E9E4D8; --sea:#DCD6C6; --land:#CFC7B4; --shadow:0 -1px 24px rgba(31,27,21,.14);
  --serif:"Fraunces","Iowan Old Style",Georgia,"Times New Roman",serif;
  --sans:"IBM Plex Sans","Helvetica Neue",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#16140F; --surface:#1F1C16; --ink:#E9E3D6; --ink-2:#A79F90; --rule:#3A352B;
    --verdigris:#8FC3BD; --verdigris-soft:#213532; --gall:#D1946A; --gall-soft:#3A2719;
    --amber:#D9B65A; --amber-soft:#3A3014; --contested:#B3A6E0; --contested-soft:#2B2640;
    --mono-bg:#26221A; --sea:#12100C; --land:#22201A; --shadow:0 -1px 24px rgba(0,0,0,.5);
  }
}
:root[data-theme="dark"]{
  --ground:#16140F; --surface:#1F1C16; --ink:#E9E3D6; --ink-2:#A79F90; --rule:#3A352B;
  --verdigris:#8FC3BD; --verdigris-soft:#213532; --gall:#D1946A; --gall-soft:#3A2719;
  --amber:#D9B65A; --amber-soft:#3A3014; --contested:#B3A6E0; --contested-soft:#2B2640;
  --mono-bg:#26221A; --sea:#12100C; --land:#22201A; --shadow:0 -1px 24px rgba(0,0,0,.5);
}

*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--ground);color:var(--ink)}
body{font-family:var(--serif);font-size:1.05rem;line-height:1.65;overscroll-behavior:none}
[hidden]{display:none!important}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
:focus-visible{outline:2px solid var(--verdigris);outline-offset:2px;border-radius:2px}
button,input,textarea,select{font:inherit;color:inherit}
a{color:var(--verdigris)}
::selection{background:var(--verdigris-soft)}

/* ------------------------------------------------------------------ chrome */
.sans{font-family:var(--sans)}
.eyebrow{font-family:var(--sans);font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2);font-weight:500}
.btn{font-family:var(--sans);font-size:.82rem;background:none;border:1px solid var(--rule);color:var(--ink);
  padding:.5em 1em;border-radius:2px;cursor:pointer;line-height:1.3}
.btn:hover{border-color:var(--verdigris);color:var(--verdigris)}
.btn[aria-pressed="true"]{background:var(--verdigris-soft);border-color:var(--verdigris);color:var(--verdigris)}
.btn-quiet{border-color:transparent;color:var(--ink-2);padding:.4em .6em}
.btn-quiet:hover{color:var(--verdigris)}
.btn.has-map{color:var(--verdigris)}
.link{background:none;border:0;padding:0;color:var(--verdigris);text-decoration:underline;
  text-underline-offset:.18em;cursor:pointer;font-family:var(--sans);font-size:.82rem}

/* -------------------------------------------------------------- login/gate */
.gate{min-height:100%;display:grid;place-items:center;padding:2rem 1.2rem;background:var(--ground)}
.gate-inner{max-width:34ch;width:100%}
.gate h1{font-family:var(--serif);font-size:2.1rem;font-weight:600;line-height:1.08;margin:.5rem 0 .4rem;text-wrap:balance}
.gate p{color:var(--ink-2);font-size:1rem;margin:0 0 1.6rem}
.field{display:block;margin:0 0 1rem}
.field span{display:block;font-family:var(--sans);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin-bottom:.35rem}
.field input{width:100%;background:var(--surface);border:1px solid var(--rule);border-radius:2px;
  padding:.65em .7em;font-family:var(--sans);font-size:1rem}
.field input:focus-visible{outline:2px solid var(--verdigris);outline-offset:1px}
.gate .btn{width:100%;padding:.75em 1em;font-size:.9rem}
.gate-msg{font-family:var(--sans);font-size:.86rem;color:var(--gall);margin:.9rem 0 0;min-height:1.2em}

/* ---------------------------------------------------------------- dedication */
.dedication{min-height:100%;display:grid;place-items:center;padding:3rem 1.4rem;background:var(--ground)}
.dedication-inner{max-width:46ch}
.dedication h1{font-family:var(--serif);font-size:2.3rem;font-weight:600;line-height:1.1;margin:.6rem 0 1.2rem;text-wrap:balance}
.dedication .body{font-size:1.15rem;line-height:1.75}
.dedication .body p{margin:0 0 1rem}
.dedication .from{font-style:italic;color:var(--ink-2);margin-top:2rem}
.dedication .btn{margin-top:2.4rem}

/* --------------------------------------------------------------- app layout */
#app{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--ground);min-width:0;overflow:hidden}
.layout{min-width:0;min-height:0}
.topbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;min-width:0;padding:.5rem .8rem;border-bottom:1px solid var(--rule);background:var(--surface);position:relative;z-index:40}
.topbar .tool{min-height:40px;display:inline-flex;align-items:center;justify-content:center}
.toolset{display:contents}
.toolset-head{display:none}
/* One door for the phone only; on wider screens the tools stand in the bar. */
.topbar .moretoggle{display:none}
.wordmark{font-family:var(--serif);font-weight:600;font-size:1rem;letter-spacing:.01em;margin-right:.2rem;white-space:nowrap}
.topbar .spacer{flex:1}
.searchwrap{position:relative;flex:0 1 22rem;min-width:8rem}
.searchwrap input{width:100%;background:var(--ground);border:1px solid var(--rule);border-radius:2px;
  padding:.42em .7em;font-family:var(--sans);font-size:.85rem}
.results{position:absolute;top:calc(100% + .3rem);left:0;right:0;background:var(--surface);
  border:1px solid var(--rule);border-radius:2px;box-shadow:0 8px 24px rgba(0,0,0,.16);
  max-height:min(60vh,26rem);overflow:auto;z-index:60;padding:.2rem}
.results li{list-style:none}
.results button{display:block;width:100%;text-align:left;background:none;border:0;padding:.55rem .6rem;cursor:pointer;border-radius:2px}
.results button:hover,.results button[aria-selected="true"]{background:var(--mono-bg)}
.results .rname{font-family:var(--sans);font-size:.88rem;color:var(--ink)}
.results .rwhy{font-family:var(--sans);font-size:.76rem;color:var(--ink-2);line-height:1.35}
.results .rempty{padding:.7rem .6rem;font-family:var(--sans);font-size:.82rem;color:var(--ink-2)}
.results ul{margin:0;padding:0}

.stage{position:relative;display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;min-width:0;overflow:hidden}
.globewrap{position:relative;min-height:0;min-width:0;background:var(--sea);overflow:hidden}
#globe{position:absolute;inset:0}
#globe canvas{display:block}
.globe-fallback{position:absolute;inset:0;display:grid;place-items:center;padding:2rem;text-align:center;
  font-family:var(--sans);font-size:.9rem;color:var(--ink-2);background:var(--sea)}
.scrim{position:absolute;inset:0;background:var(--ground);opacity:0;pointer-events:none;transition:opacity .22s ease}
.scrim.on{opacity:.55}
@media (prefers-reduced-motion:reduce){.scrim{transition:none}}
.globe-hint{position:absolute;left:.8rem;bottom:.7rem;font-family:var(--sans);font-size:.72rem;
  color:var(--ink-2);background:color-mix(in srgb,var(--surface) 80%,transparent);padding:.25em .6em;border-radius:2px;pointer-events:none}
.globe-tools{position:absolute;right:.7rem;top:.7rem;display:flex;flex-direction:column;gap:.4rem;align-items:flex-end}
.globe-tools .btn{background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(3px)}

/* ----------------------------------------------------------------- timeline */
.timeline{border-top:1px solid var(--rule);background:var(--surface);padding:.5rem .8rem .6rem;position:relative;z-index:20;min-width:0;overflow:hidden}
/* The rail runs past both edges; the fade is what says so. */
.erawrap{position:relative;min-width:0}
.eras{display:flex;gap:.15rem;overflow-x:auto;scrollbar-width:thin;padding-bottom:.35rem;margin-bottom:.15rem;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 1.4rem,#000 calc(100% - 1.4rem),transparent 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 1.4rem,#000 calc(100% - 1.4rem),transparent 100%)}
.eras.at-start{-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 1.4rem),transparent 100%);
  mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 1.4rem),transparent 100%)}
.eras.at-end{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 1.4rem,#000 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 1.4rem,#000 100%)}
.eras.at-start.at-end{-webkit-mask-image:none;mask-image:none}
.eras::-webkit-scrollbar{height:5px}
.eras::-webkit-scrollbar-thumb{background:var(--rule);border-radius:3px}
.era{flex:0 0 auto;background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;
  font-family:var(--sans);font-size:.76rem;color:var(--ink-2);padding:.3em .55em;white-space:nowrap;border-radius:2px 2px 0 0}
.era:hover{color:var(--ink)}
.era[aria-current="true"]{color:var(--verdigris);border-bottom-color:var(--verdigris);font-weight:600}
.era .yr{display:block;font-size:.64rem;letter-spacing:.06em;opacity:.75}
.scrubrow{display:flex;align-items:center;gap:.8rem}
input.nowyear{font-family:var(--serif);font-size:1.5rem;font-weight:600;line-height:1.15;width:6.2ch;min-width:6.2ch;
  font-variant-numeric:tabular-nums;background:none;border:0;border-bottom:1px dashed transparent;
  padding:.1rem 0;border-radius:0;color:var(--ink)}
input.nowyear:hover{border-bottom-color:var(--rule)}
input.nowyear:focus{outline:none;border-bottom-color:var(--verdigris)}
input.nowyear:focus-visible{outline:2px solid var(--verdigris);outline-offset:2px}
input.nowyear.bad{color:var(--gall);border-bottom-color:var(--gall)}
.nowera{font-family:var(--sans);font-size:.74rem;color:var(--ink-2);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scrubrow input[type=range]{flex:1;min-width:6rem;accent-color:var(--verdigris);height:1.6rem}

/* -------------------------------------------------------------- bottom sheet */
.sheet{background:var(--ground);border-top:1px solid var(--rule);box-shadow:var(--shadow);
  display:flex;flex-direction:column;min-height:0;min-width:0}
.sheet-grip{display:flex;align-items:center;gap:.5rem;padding:.45rem .8rem;border-bottom:1px solid var(--rule);background:var(--surface)}
.sheet-grip .title{font-family:var(--sans);font-size:.78rem;color:var(--ink-2);flex:1;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-body{overflow:auto;flex:1;min-height:0;-webkit-overflow-scrolling:touch}
.reading{max-width:64ch;margin:0 auto;padding:1.6rem 1.3rem 5rem}

/* ------------------------------------------------------------ the dossier */
.reading h1{font-family:var(--serif);font-size:1.9rem;font-weight:600;line-height:1.12;margin:.35rem 0 .25rem;text-wrap:balance;font-variation-settings:"opsz" 144}
.place{font-family:var(--sans);font-size:.86rem;color:var(--ink-2);margin-bottom:1rem;display:flex;gap:.8rem;flex-wrap:wrap;align-items:center}
.badge{font-family:var(--sans);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;padding:.2em .6em;
  border-radius:2px;background:var(--verdigris-soft);color:var(--verdigris);font-weight:600}
.badge-draft{background:var(--amber-soft);color:var(--amber)}
.coverage-hint{font-family:var(--sans);font-size:.82rem;color:var(--ink-2);font-style:italic;margin:.2rem 0 1.2rem}

details.key{font-family:var(--sans);font-size:.76rem;color:var(--ink-2);margin:0 0 1.4rem}
details.key summary{cursor:pointer}
.keyrow{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.5rem}
.keyrow span{white-space:nowrap}

.abridged{font-size:1.18rem;line-height:1.66}
.abridged.dropcap>p:first-of-type::first-letter,.abridged.dropcap::first-letter{font-size:3.1em;float:left;line-height:.85;padding:.08em .12em 0 0}
.att,.inf,.con{text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:.22em;text-decoration-skip-ink:none}
.att-medium{text-decoration-color:var(--verdigris)}
.att-low{text-decoration-color:var(--verdigris);text-decoration-style:dashed}
.inf{text-decoration-style:dotted;text-decoration-color:var(--amber)}
.con{text-decoration-style:double;text-decoration-color:var(--contested);text-decoration-thickness:1px}
.leg{font-style:italic;color:var(--gall)}
/* The glyph stays small and quiet; the thing a thumb hits is 44px, centred on it. */
.mark{font-family:var(--mono);font-size:.72em;line-height:0;vertical-align:super;background:none;border:0;
  padding:0 .18em;margin-left:.05em;cursor:pointer;color:var(--verdigris);opacity:.85;position:relative}
.mark:hover,.mark[aria-expanded="true"]{opacity:1}
.mark::after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}
.mark-inf{color:var(--amber)} .mark-con{color:var(--contested)} .mark-leg{color:var(--gall);font-style:normal;font-size:.62em}
.mark:focus-visible{outline:2px solid var(--verdigris);outline-offset:2px}
.mark[aria-expanded="true"]{background:var(--mono-bg);border-radius:2px}
.note{display:block;font-family:var(--sans);font-size:.83rem;line-height:1.5;color:var(--ink-2);
  background:var(--surface);border-left:2px solid var(--rule);padding:.6rem .9rem;margin:.5rem 0 .8rem}
.note .cites a{color:var(--verdigris)}
/* Proper names: a quiet cast of ink, so the evidence marks keep the underlines. */
.ent{color:color-mix(in srgb,var(--ink) 74%,var(--verdigris));text-decoration:none;cursor:pointer}
.ent:hover,.ent:focus-visible{color:var(--verdigris);text-decoration:underline;text-underline-offset:.2em}
/* Scroll targets take focus without wearing a ring around the whole account. */
.full:focus,.full:focus-visible,.sheet-body:focus,.sheet-body:focus-visible{outline:none}
.sc-line{margin:1.5rem 0 0;padding-top:1rem;border-top:1px dashed var(--rule);color:var(--ink-2);font-style:italic;font-size:1.02rem}
.expand{display:block;margin:1.8rem auto 0;background:none;border:1px solid var(--rule);color:var(--ink);
  font-family:var(--sans);font-size:.85rem;padding:.7em 1.4em;border-radius:2px;cursor:pointer;max-width:100%;text-align:center}
.expand:hover{border-color:var(--verdigris);color:var(--verdigris)}
.full{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--rule)}
.full p{margin:0 0 1.15rem}
.reading h2{font-family:var(--serif);font-size:1.25rem;font-weight:600;margin:2.4rem 0 .7rem}
.sc{background:var(--surface);border-left:2px solid var(--rule);padding:1.1rem 1.3rem;border-radius:3px}
.sc h3{font-family:var(--sans);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin:1rem 0 .2rem;font-weight:600}
.sc h3:first-child{margin-top:0}
.sc p{font-size:1.04rem;margin:.3rem 0 .6rem}
.sc .cov{font-family:var(--sans);font-size:.85rem;color:var(--ink-2);margin-top:1rem}
ul.threads{list-style:none;padding:0;margin:0}
button.thread{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--rule);
  padding:.7rem .2rem;cursor:pointer;color:var(--ink)}
button.thread b{display:block;font-family:var(--sans);font-size:.93rem;color:var(--verdigris)}
button.thread span{font-size:1.01rem}
button.thread:hover b{text-decoration:underline}
ol.sources{font-family:var(--sans);font-size:.85rem;line-height:1.5;padding-left:1.3rem}
ol.sources li{margin:.6rem 0;scroll-margin-top:1rem}
ol.sources li:target,ol.sources li.lit{background:var(--verdigris-soft)}
.small{color:var(--ink-2);font-size:.92em}
.mono{font-family:var(--mono);font-size:.82em}
.toggle{font-family:var(--sans);font-size:.8rem;color:var(--verdigris);background:none;border:0;cursor:pointer;padding:0;text-decoration:underline}
table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:.83rem;line-height:1.45}
th{text-align:left;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);padding:.4rem .5rem;border-bottom:1px solid var(--ink-2)}
td{padding:.5rem;border-bottom:1px solid var(--rule);vertical-align:top}
.detail{color:var(--ink-2);margin-top:.3rem}
.vn{color:var(--gall);margin-top:.3rem;font-size:.9em}
.tier{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600;padding:.1em .5em;border-radius:2px;white-space:nowrap}
.t-att{background:var(--verdigris-soft);color:var(--verdigris)}
.t-inf{background:var(--amber-soft);color:var(--amber)}
.t-con{background:var(--contested-soft);color:var(--contested)}
.t-leg{background:var(--gall-soft);color:var(--gall)}
@media (max-width:600px){table,tbody,tr,td{display:block;width:auto}thead,th{display:none}
  tr{border-bottom:1px solid var(--rule);padding:.8rem 0}td{border:0;padding:.15rem 0}}

/* passages strip */
.passages{margin:0 0 1.4rem;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:.7rem 0}
.passages h2{font-family:var(--sans);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-2);margin:0 0 .5rem;font-weight:600}
.passages .strip{display:flex;gap:.7rem;overflow-x:auto;padding-bottom:.35rem;scroll-snap-type:x proximity}
.passages .strip::-webkit-scrollbar{height:5px}
.passages .strip::-webkit-scrollbar-thumb{background:var(--rule);border-radius:3px}
.pcard{flex:0 0 min(19rem,72vw);scroll-snap-align:start;background:var(--surface);border:1px solid var(--rule);
  border-radius:3px;padding:.6rem .75rem;font-family:var(--sans);font-size:.79rem;line-height:1.45;color:var(--ink-2)}
.pcard b{display:block;color:var(--ink);font-size:.82rem;font-weight:600;line-height:1.3}
.pcard .meta{font-size:.7rem;letter-spacing:.03em;color:var(--ink-2);margin:.15rem 0 .35rem}
.pcard .txt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (prefers-reduced-motion:no-preference){.pcard{animation:fadein .4s ease-out}}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){.full,.abridged{animation:rise .5s ease-out}}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* states */
.state{font-family:var(--sans);font-size:.95rem;color:var(--ink-2);line-height:1.6;max-width:46ch}
.state strong{color:var(--ink);font-weight:600}
.waiting{display:flex;align-items:baseline;gap:.55rem}
.dots{display:inline-flex;gap:.22em}
.dots i{width:.3em;height:.3em;border-radius:50%;background:var(--ink-2);display:block;opacity:.35}
@media (prefers-reduced-motion:no-preference){
  .dots i{animation:pulse 1.4s ease-in-out infinite}
  .dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}
  @keyframes pulse{0%,100%{opacity:.25}50%{opacity:.9}}
}
.sentence{font-family:var(--sans);font-size:.95rem;color:var(--ink-2);border-left:2px solid var(--gall);
  padding:.6rem .9rem;background:var(--surface);margin:1.2rem 0}
.sentence b{color:var(--ink);font-weight:600}
.nearby{list-style:none;padding:0;margin:.6rem 0 0}
.nearby li{margin:.2rem 0}

/* journal row */
.journal{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:1.6rem 0 0;padding-top:1rem;border-top:1px solid var(--rule)}
.notewrap{margin:.8rem 0 0;width:100%}
.notewrap textarea{width:100%;min-height:4.5rem;background:var(--surface);border:1px solid var(--rule);
  border-radius:2px;padding:.6rem .7rem;font-family:var(--sans);font-size:.88rem;line-height:1.5;resize:vertical}
.notewrap .hint{font-family:var(--sans);font-size:.72rem;color:var(--ink-2);margin-top:.3rem}

/* ------------------------------------------------------------------ drawers */
.drawer{position:fixed;inset:auto 0 0 0;max-height:82vh;background:var(--ground);border-top:1px solid var(--rule);
  box-shadow:var(--shadow);z-index:80;display:flex;flex-direction:column}
.drawer .drawer-head{display:flex;align-items:center;gap:.5rem;padding:.5rem .9rem;border-bottom:1px solid var(--rule);background:var(--surface)}
.drawer .drawer-head h2{font-family:var(--serif);font-size:1.05rem;font-weight:600;margin:0;flex:1}
.drawer .drawer-body{overflow:auto;padding:1rem 1.1rem 2rem}
.drawer dl{margin:0 0 1rem;font-family:var(--sans);font-size:.84rem}
.drawer dt{color:var(--ink-2);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;margin-top:.7rem}
.drawer dd{margin:.15rem 0 0}
.drawer .sum{font-size:1.02rem;line-height:1.6;margin:.4rem 0 1rem}
@media (min-width:900px){.drawer{inset:0 0 0 auto;width:min(28rem,40vw);max-height:none;border-top:0;border-left:1px solid var(--rule)}}

/* period lens */
.lens img{width:100%;height:auto;border:1px solid var(--rule);border-radius:2px;background:var(--surface);display:block}
.lens .caption{font-family:var(--sans);font-size:.8rem;color:var(--ink-2);line-height:1.5;margin-top:.6rem}
.lens .nopic{font-family:var(--sans);font-size:.82rem;color:var(--ink-2);background:var(--surface);
  border:1px dashed var(--rule);border-radius:2px;padding:1.4rem 1rem;text-align:center;line-height:1.5}
.lens .desc{font-size:1.02rem;line-height:1.6;margin:.8rem 0}
.eyebrow.maplist-head{margin-top:1.6rem}
.lens .maplist{list-style:none;padding:0;margin:0}
.lens .maplist li{border-bottom:1px solid var(--rule)}
.lens .maplist button{display:block;width:100%;text-align:left;background:none;border:0;padding:.6rem .2rem;cursor:pointer;color:var(--ink)}
.lens .maplist b{display:block;font-family:var(--sans);font-size:.88rem;color:var(--verdigris)}
.lens .maplist span{font-family:var(--sans);font-size:.76rem;color:var(--ink-2)}

/* kept pages */
.kept .keptlist{list-style:none;padding:0;margin:0}
.kept .keptlist li{border-bottom:1px solid var(--rule)}
.kept .keptlist button{display:block;width:100%;text-align:left;background:none;border:0;padding:.7rem .2rem;cursor:pointer;color:var(--ink)}
.kept .keptlist b{display:block;font-family:var(--sans);font-size:.9rem;color:var(--verdigris);font-weight:600}
.kept .keptlist .knote{display:block;font-family:var(--sans);font-size:.8rem;color:var(--ink-2);line-height:1.45;margin-top:.15rem;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.kept .keptlist .kmark{font-family:var(--sans);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.kept .state{font-family:var(--sans);font-size:.9rem;color:var(--ink-2);line-height:1.6}

/* tooltips of the first night */
.coach{position:fixed;z-index:120;max-width:min(22rem,86vw);background:var(--surface);border:1px solid var(--verdigris);
  border-radius:3px;padding:.9rem 1rem;box-shadow:0 10px 34px rgba(0,0,0,.28);font-family:var(--sans);font-size:.88rem;line-height:1.5}
.coach p{margin:0 0 .8rem;color:var(--ink)}
.coach .row{display:flex;align-items:center;gap:.7rem}
.coach .step{font-size:.72rem;color:var(--ink-2);letter-spacing:.08em}
.coach .grow{flex:1}
/* The veil carries a hole: a radial mask centred on whatever the step points at. */
.coach-veil{position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:110;
  --sx:50%; --sy:50%; --sr:120px;
  -webkit-mask-image:radial-gradient(circle var(--sr) at var(--sx) var(--sy),transparent 0,transparent 62%,#000 100%);
  mask-image:radial-gradient(circle var(--sr) at var(--sx) var(--sy),transparent 0,transparent 62%,#000 100%)}
@media (prefers-reduced-motion:no-preference){.coach-veil{transition:-webkit-mask-position .25s ease,mask-position .25s ease}}

.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:1.2rem;z-index:200;background:var(--surface);
  border:1px solid var(--rule);border-radius:2px;padding:.55em 1em;font-family:var(--sans);font-size:.82rem;
  color:var(--ink-2);box-shadow:0 6px 20px rgba(0,0,0,.2);max-width:90vw}

/* ---------------------------------------------------------------- responsive */
/* Phone: reading first, the globe kept as a strip. */
@media (max-width:719px){
  .searchwrap{order:1;flex:1 1 auto;min-width:0}
  .wordmark{display:none}   /* the name is on the door, not on every page */
  .topbar{padding:.45rem .7rem .5rem;gap:.35rem .45rem;row-gap:.35rem;flex-wrap:nowrap}
  .topbar .spacer{display:none}

  /* One door for the rest of the tools; behind it, a sheet. */
  .topbar .moretoggle{display:inline-flex;order:2;flex:0 0 auto;font-size:.8rem;padding:.34em .7em;
    border-color:var(--rule);color:var(--ink)}
  .toolset{display:none;position:fixed;inset:auto 0 0 0;z-index:100;background:var(--ground);
    border-top:1px solid var(--rule);box-shadow:var(--shadow);padding:.4rem .9rem 1.6rem;
    flex-direction:column;align-items:stretch;gap:.1rem}
  .toolset.open{display:flex}
  .toolset-head{display:block;font-family:var(--sans);font-size:.68rem;letter-spacing:.13em;
    text-transform:uppercase;color:var(--ink-2);margin:.6rem 0 .5rem;font-weight:500}
  .toolset .tool{justify-content:flex-start;text-align:left;min-height:48px;font-size:.95rem;
    padding:.6em .2em;color:var(--ink);border:0;border-bottom:1px solid var(--rule);border-radius:0}
  .toolset .tool:last-child{border-bottom:0}
  .toolset .tool[aria-pressed="true"]{background:none;color:var(--verdigris)}
  .scrubrow input[type=range]{height:2.4rem}
  .globewrap{height:20vh;min-height:132px}
  body.reading-full .topbar{padding-bottom:.4rem}
  .stage{grid-template-rows:auto auto}
  .globewrap{height:24vh;min-height:150px}
  #app{grid-template-rows:auto auto 1fr}
  .layout{display:contents}
  .sheet{min-height:0}
  body.reading-full .globewrap,body.reading-full .timeline{display:none}
  .reading{padding:1.3rem 1.1rem 5rem}
  .reading h1{font-size:1.65rem}
  .abridged{font-size:1.12rem}
}
/* Tablet: globe above, dossier a sheet that expands to the whole screen. */
@media (min-width:720px) and (max-width:1099px){
  .layout{display:grid;grid-template-rows:minmax(0,1fr) auto;height:100%;min-height:0}
  .stage{min-height:0}
  .sheet{max-height:50vh}
  .sheet[data-state="peek"]{max-height:11rem}
  .sheet[data-state="full"]{max-height:none;position:fixed;inset:0;z-index:90;border-top:0}
  .sheet[data-state="full"] .reading{padding-top:1.2rem}
}
/* Desktop: the globe and the reading side by side. */
@media (min-width:1100px){
  .layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(30rem,42%);height:100%;min-height:0}
  .stage{min-height:0}
  .sheet{border-top:0;border-left:1px solid var(--rule);box-shadow:none;max-height:none}
  .sheet-grip .sheetbtn{display:none}
  .reading{padding:2rem 1.8rem 5rem}
}

.claude-form{display:grid;gap:.8rem;margin-top:1rem}
.claude-form .row{display:flex;gap:.6rem;flex-wrap:wrap}
.claude-form code{font-family:"IBM Plex Mono",monospace;font-size:.85em}
