:root{
  --paper:#f6f4ee;--surface:#fffdf8;--sunk:#f0eee6;--ink:#22302b;--ink-2:#4c5a52;--muted:#78817a;--line:#e3e1d7;--line-2:#ecebe3;
  --accent:#234f45;--accent-soft:#e3ece6;--warm:#9b6a3c;--focus:#a5683a;--label:150px;
  --europe:#4f7f8f;--europe-fill:#e4eef0;--americas:#a0723f;--americas-fill:#f3e8d8;--asia:#4f7a58;--asia-fill:#e2ecdf;
  --africa:#8c7a43;--africa-fill:#efebd9;--oceania:#8a6a8d;--oceania-fill:#efe6ef;--none:#7d7f78;--none-fill:#ecece6;
  color-scheme:light;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--paper)
}
@media (prefers-color-scheme:dark){:root{
  --paper:#171c1a;--surface:#1e2522;--sunk:#252d29;--ink:#e6e8e2;--ink-2:#c1c8c0;--muted:#8f998f;--line:#333d38;--line-2:#2a322e;
  --accent:#8fc1ae;--accent-soft:#263a33;--warm:#d3a272;--focus:#d3a272;
  --europe:#83b3c3;--europe-fill:#22343a;--americas:#d1a271;--americas-fill:#3a2f22;--asia:#8dbb93;--asia-fill:#243427;
  --africa:#c5b27a;--africa-fill:#363222;--oceania:#c09ac3;--oceania-fill:#352a37;--none:#a5a8a0;--none-fill:#2c2f2b;color-scheme:dark
}}
*{box-sizing:border-box}html{background:var(--paper)}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--paper)}
a{color:inherit}button,input,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}button:disabled{opacity:.35;cursor:default}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.skip{position:fixed;top:-100px;left:12px;z-index:20;background:var(--surface);padding:10px 14px}.skip:focus{top:12px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.site-header{display:flex;align-items:center;gap:28px;padding:0 max(16px,4vw);height:64px;border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:10px;font:600 22px Georgia,"Times New Roman",serif;letter-spacing:-.3px;text-decoration:none}
.brand-mark{width:26px;height:26px;border-radius:6px;background:var(--accent);position:relative}.brand-mark:after{content:"";position:absolute;left:6px;right:6px;bottom:7px;height:2px;background:var(--paper);box-shadow:0 -5px 0 -0px var(--paper)}
.site-nav{display:flex;gap:20px;font-size:14px}.site-nav a{text-decoration:none;color:var(--muted);padding:6px 0;border-bottom:2px solid transparent}.site-nav a[aria-current=page]{color:var(--ink);border-color:var(--accent)}
.search{margin-left:auto;display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);border-radius:6px;height:36px;padding:0 10px;width:min(280px,40vw)}
.search svg{width:16px;height:16px;fill:none;stroke:var(--muted);stroke-width:2;flex:none}.search input{border:0;background:none;outline:none;min-width:0;width:100%;font-size:14px}.search kbd{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 5px}
main{flex:1;width:100%;margin:0;padding:0 max(16px,4vw) 48px;outline:none}
.site-footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:20px max(16px,4vw) 28px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.notice{padding:40px 0;color:var(--muted)}

/* Timeline */
.intro{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:32px 0 22px}
.intro h1{font:400 clamp(28px,4vw,40px)/1.15 Georgia,"Times New Roman",serif;letter-spacing:-.5px;margin:0 0 10px}
.intro p{margin:0;color:var(--ink-2);font-size:15px;line-height:1.6;max-width:640px}
.intro-stats{display:flex;gap:28px;font-size:12px;color:var(--muted);white-space:nowrap}.intro-stats strong{display:block;font:400 24px Georgia,serif;color:var(--ink)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid var(--line)}
.eras{display:flex;gap:4px;flex-wrap:wrap}.eras button,.regions button{font-size:13px;padding:6px 11px;border-radius:5px;color:var(--ink-2)}
.eras button:hover,.regions button:hover{background:var(--sunk)}.eras button.active,.regions button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}
.view{display:flex;align-items:center;gap:6px}.view-range{font:400 20px Georgia,serif;margin-right:10px;white-space:nowrap}
.view button{width:32px;height:32px;border:1px solid var(--line);border-radius:6px;font-size:16px;display:grid;place-items:center}.view button:hover:not(:disabled){background:var(--sunk)}
.subbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 18px;border-bottom:1px solid var(--line)}
.regions{display:flex;gap:2px;flex-wrap:wrap}.regions i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:var(--c)}
.count{font-size:12px;color:var(--muted)}
.chart{position:relative;height:min(64vh,620px);overflow-y:auto;overflow-x:hidden;touch-action:pan-y;scrollbar-width:thin}
.axis{display:grid;grid-template-columns:var(--label) minmax(0,1fr);position:sticky;top:0;z-index:3;height:38px;background:var(--sunk);border-bottom:1px solid var(--line)}
.axis-label{font-size:11px;color:var(--muted);padding:12px 16px;border-right:1px solid var(--line)}
.axis-track,.track{position:relative;overflow:hidden}.tick{position:absolute;top:0;bottom:0;border-left:1px solid var(--line)}.tick span{position:absolute;top:11px;left:6px;font:11px ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);white-space:nowrap}
.gridline{position:absolute;top:0;bottom:0;border-left:1px solid var(--line-2);pointer-events:none}
.group{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;font-size:12px;color:var(--muted);background:var(--paper);border-bottom:1px solid var(--line-2)}
.group strong{color:var(--ink);font-weight:600;margin-right:6px}.group button{font-size:12px;color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.row{display:grid;grid-template-columns:var(--label) minmax(0,1fr);border-bottom:1px solid var(--line-2);height:calc(var(--lines)*24px + 14px)}
.row-label{display:flex;align-items:center;gap:8px;padding:0 12px 0 16px;border-right:1px solid var(--line);font-size:13px;min-width:0}
.row-label i{width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}.row-label small{display:block;font-size:11px;color:var(--muted);margin-top:3px}
.track{cursor:grab}.track:active{cursor:grabbing}
.mark{position:absolute;height:14px;border-radius:3px;background:var(--f);border:1px solid var(--c);border-left-width:3px;min-width:3px}
.mark.clip-start{border-left-style:dotted}.mark.clip-end{border-right-style:dotted}
.name{position:absolute;text-decoration:none;height:22px;line-height:22px;font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;border-radius:3px;padding:0 2px}
.name:hover,.mark:hover+.name{color:var(--c);text-decoration:underline;text-underline-offset:3px}.name.inside{color:var(--ink)}
.cluster-tick{position:absolute;width:1px;height:12px;background:var(--c);opacity:.5}
.cluster{position:absolute;height:20px;padding:0 8px;font:11px ui-monospace,monospace;border:1px dashed var(--c);border-radius:10px;background:var(--surface);color:var(--c)}.cluster:hover{background:var(--f)}
.empty{padding:60px 20px;text-align:center;color:var(--muted);font-size:14px;line-height:1.7}.empty strong{display:block;font:400 22px Georgia,serif;color:var(--ink);margin-bottom:6px}.empty button{margin-top:14px;border:1px solid var(--line);border-radius:6px;padding:8px 14px;font-size:13px}
.legend{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 18px;font-size:12px;color:var(--muted);border-top:1px solid var(--line)}
.overview{padding:4px 18px 16px}.overview-bar{position:relative;height:30px;border:1px solid var(--line);border-radius:5px;background:var(--sunk);touch-action:none;cursor:pointer}
.overview-density{position:absolute;inset:0;display:flex;align-items:flex-end}.overview-density span{flex:1;background:var(--accent);opacity:.25}
.overview-window{position:absolute;top:-1px;bottom:-1px;border:2px solid var(--accent);border-radius:5px;background:color-mix(in srgb,var(--accent) 8%,transparent);cursor:grab}
.overview-labels{display:flex;justify-content:space-between;font:11px ui-monospace,monospace;color:var(--muted);margin-top:6px}
.list-panel{position:fixed;right:max(16px,4vw);top:84px;width:min(380px,calc(100vw - 32px));max-height:calc(100vh - 110px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px #0000001f;padding:18px 20px;z-index:12}
.list-panel h2{font:400 20px Georgia,serif;margin:0 30px 4px 0}.list-panel p{font-size:12px;color:var(--muted);margin:0 0 10px}
.list-panel .close{position:absolute;right:12px;top:10px;font-size:22px;width:32px;height:32px}
.list-panel a{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line-2);font-size:13px;text-decoration:none}.list-panel a:hover{color:var(--accent)}.list-panel a small{color:var(--muted);white-space:nowrap}

/* Event and Episode pages */
.crumbs{display:flex;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--muted);padding:22px 0 0}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--accent)}
.page{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,420px);gap:40px;padding:18px 0 0;align-items:start}
.page-head h1{font:400 clamp(28px,3.6vw,40px)/1.18 Georgia,"Times New Roman",serif;letter-spacing:-.4px;margin:8px 0 14px}
.kicker{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted);letter-spacing:.3px}
.badge{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--ink-2)}.badge i{width:7px;height:7px;border-radius:50%;background:var(--c)}
.facts{display:flex;gap:28px;flex-wrap:wrap;margin:0 0 22px}.facts div{min-width:0}.facts dt{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.8px}.facts dd{margin:4px 0 0;font:400 18px Georgia,serif}
.lead{font-size:17px;line-height:1.7;color:var(--ink);margin:0 0 8px;max-width:72ch}
.prose{font-size:15px;line-height:1.75;color:var(--ink-2);max-width:72ch}.prose p{margin:0 0 14px}
h2.section{font:600 13px/1 Inter,sans-serif;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:36px 0 14px;padding-top:18px;border-top:1px solid var(--line)}
.cite{font-size:11px;color:var(--muted);text-decoration:none;vertical-align:super;margin-left:1px}.cite:hover{color:var(--accent)}
.episodes{list-style:none;margin:0;padding:0;counter-reset:ep}
.episode-card{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:14px 0;border-bottom:1px solid var(--line-2);text-decoration:none}
.episode-card .num{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--paper);font-size:12px;font-weight:600;display:grid;place-items:center;margin-top:2px}.episode-card .num.unmapped{background:var(--sunk);color:var(--muted);border:1px solid var(--line)}
.episode-card .meta{font:12px ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted)}.episode-card strong{display:block;font-size:16px;font-weight:600;margin:3px 0 4px}.episode-card p{margin:0;font-size:14px;line-height:1.6;color:var(--ink-2)}
.episode-card:hover strong{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.related{font:11px Inter,sans-serif;color:var(--warm);margin-left:6px}
.people{list-style:none;padding:0;margin:0;columns:2;column-gap:28px}.people a{color:var(--ink);font-weight:600;text-decoration-color:var(--line);text-underline-offset:3px}.people a:hover{color:var(--accent);text-decoration-color:currentColor}.people li{break-inside:avoid;padding:7px 0;border-bottom:1px solid var(--line-2);font-size:14px;color:var(--ink-2)}.people strong{color:var(--ink);font-weight:600}
.sources{margin:0;padding-left:22px;font-size:13px;line-height:1.7;color:var(--ink-2)}.sources a{color:var(--accent)}.sources small{color:var(--muted)}
.aside{position:sticky;top:84px;display:flex;flex-direction:column;gap:14px}
.map{height:340px;border-radius:10px;border:1px solid var(--line);overflow:hidden;background:var(--sunk);z-index:0}
.map-note{font-size:12px;line-height:1.6;color:var(--muted);background:var(--sunk);border-radius:8px;padding:12px 14px}.map-note strong{color:var(--ink-2)}
.no-map{display:grid;place-items:center;text-align:center;height:180px;border:1px dashed var(--line);border-radius:10px;color:var(--muted);font-size:13px;padding:20px;line-height:1.6}
.status{font-size:12px;line-height:1.6;color:var(--muted);border-left:3px solid var(--line);padding:4px 0 4px 12px;margin:24px 0 0;max-width:72ch}
.pager{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:28px}.pager a{border:1px solid var(--line);border-radius:8px;padding:12px 14px;text-decoration:none;font-size:14px;min-width:0}.pager a:hover{border-color:var(--accent)}.pager small{display:block;font-size:11px;color:var(--muted);margin-bottom:4px}.pager .next{text-align:right;grid-column:2}
.siblings{list-style:none;margin:0;padding:0;font-size:13px}.siblings a{display:flex;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-2);text-decoration:none}.siblings a[aria-current=page]{font-weight:600;color:var(--accent)}.siblings small{color:var(--muted);font:11px ui-monospace,monospace;white-space:nowrap;padding-top:2px;min-width:86px}
.box{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:var(--surface)}.box h3{font:600 12px Inter,sans-serif;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin:0 0 8px}
.loading{padding:60px 0;color:var(--muted)}
.leaflet-container{font:inherit;background:var(--sunk)}.leaflet-popup-content{font-size:13px;line-height:1.5}.leaflet-popup-content a{color:#234f45;font-weight:600}
.pin{background:#234f45;color:#fff;border:2px solid #fff;border-radius:50%;width:24px!important;height:24px!important;margin:-12px 0 0 -12px!important;font:600 11px/20px Inter,sans-serif;text-align:center;box-shadow:0 1px 4px #0006}
.pin.current{background:#9b6a3c;width:30px!important;height:30px!important;margin:-15px 0 0 -15px!important;line-height:26px;font-size:12px}
.about{max-width:760px;padding:30px 0}.about h1{font:400 36px Georgia,serif;margin:0 0 16px}.about h2{font:400 22px Georgia,serif;margin:32px 0 10px}.about p,.about li{font-size:15px;line-height:1.75;color:var(--ink-2)}

@media (max-width:900px){
  :root{--label:96px}
  .site-header{gap:14px;flex-wrap:wrap;height:auto;padding-top:12px;padding-bottom:10px}.search{order:3;width:100%;margin:0}.site-nav{margin-left:auto}
  .intro{flex-direction:column;align-items:flex-start;padding:22px 0 16px}.intro-stats{gap:20px}
  .toolbar,.subbar{padding:10px 12px}.view-range{font-size:17px}.view button{width:30px;height:30px}
  .row-label{padding:0 8px 0 10px;font-size:12px}.axis-label{padding:12px 10px}.group{padding:8px 10px}
  .page{grid-template-columns:1fr;gap:20px}.aside{position:static;order:-1}.map{height:260px}.people{columns:1}
  .legend span:last-child{display:none}
}
@media (max-width:480px){.site-nav{gap:12px;font-size:13px}.brand{font-size:20px}.eras button,.regions button{padding:5px 8px;font-size:12px}.facts{gap:18px}}
.person-events{list-style:none;margin:0;padding:0}.person-event{padding:18px 0;border-bottom:1px solid var(--line-2)}
.person-event>header{display:flex;justify-content:space-between;gap:16px;align-items:baseline;flex-wrap:wrap}.person-event h3{font:400 21px/1.3 Georgia,serif;margin:0}.person-event h3 a{text-decoration:none}.person-event h3 a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.person-event .when{font:13px ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);white-space:nowrap}.person-event .role{font-size:14px;color:var(--ink-2);margin:6px 0 8px}.person-event .role em{font-style:normal;color:var(--muted)}
.person-event .episodes{margin-left:2px}.person-event .episode-card{padding:9px 0;border-bottom:0}.person-event .episode-card strong{font-size:15px}.person-event .episode-card p{font-size:13px}
.box .people-list{list-style:none;margin:0;padding:0;font-size:13px}.box .people-list li{padding:6px 0;border-bottom:1px solid var(--line-2);color:var(--muted)}.box .people-list a{color:var(--ink);font-weight:600;text-decoration:none}.box .people-list a:hover{color:var(--accent);text-decoration:underline}
.overview-heading{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted);margin-bottom:8px}
.overview-bar{cursor:pointer}.overview-window{z-index:1;touch-action:none}.overview.dragging .overview-window,.overview-bar.dragging .overview-window{cursor:grabbing}
.overview-window:after{content:'⋮⋮';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--accent);font-size:15px;letter-spacing:2px;pointer-events:none}
.overview-handle{position:absolute;top:3px;bottom:3px;width:14px;transform:translateX(-50%);z-index:2;cursor:ew-resize;border:1px solid var(--accent);border-radius:4px;background:var(--surface);touch-action:none}
.overview-handle:after{content:'';position:absolute;left:4px;top:6px;bottom:6px;border-left:2px solid var(--accent)}
.overview-handle:hover,.overview-handle:focus-visible{background:var(--accent-soft)}
@media (pointer:coarse){.overview-handle{width:22px}.overview-handle:after{left:8px}.overview-bar{height:36px}}
@media (max-width:600px){.overview-heading span:last-child{display:none}}
.modal{width:min(1180px,94vw);max-height:90vh;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);box-shadow:0 24px 60px #0000004d;overflow:hidden}
.modal[open]{display:flex;flex-direction:column}.modal::backdrop{background:#1d2a2499;backdrop-filter:blur(2px)}
.modal-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px 10px 20px;border-bottom:1px solid var(--line);background:var(--surface);flex:none}
.modal-back{font-size:13px;color:var(--accent);max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.modal-back:hover{text-decoration:underline}
.modal-actions{display:flex;align-items:center;gap:10px;margin-left:auto}
.modal-open{font-size:13px;font-weight:600;color:var(--paper);background:var(--accent);border-radius:6px;padding:7px 12px;text-decoration:none;white-space:nowrap}.modal-open:hover{filter:brightness(1.1)}
.modal-close{width:34px;height:34px;border-radius:6px;font-size:24px;line-height:1;color:var(--muted)}.modal-close:hover{background:var(--sunk);color:var(--ink)}
.modal-body{overflow:auto;padding:4px 28px 28px;flex:1;overscroll-behavior:contain}
.modal-body .page{padding-top:14px}.modal-body .aside{top:0}.modal-body .page-head h1{font-size:clamp(24px,3vw,34px)}
@media (max-width:900px){.modal{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;border:0}.modal-body{padding:0 16px 24px}}
@media (max-width:900px){.map{height:200px}.modal-body .page{padding-top:10px}}
