:root{
  --paper:#FFFFFF; --surface:#F3F5F4; --line:#DDE3E0; --ink:#15201C; --muted:#5B6964;
  --green:#0E6B4F; --green-soft:#E3F1EB; --link:#D2731A; --link-soft:#FCEBDB;
  --future:#2E62C9; --future-soft:#E6EDFB; --night:#34307E; --night-soft:#ECEBF8;
  --f:"Overpass", system-ui, -apple-system, "Segoe UI", sans-serif;
  --r:10px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--surface);color:var(--ink);font-family:var(--f);font-size:16px;line-height:1.5}
h2{font-size:1.35rem;line-height:1.25;margin:0;font-weight:800}
h3{font-size:1rem;margin:0;font-weight:700}
p{margin:0}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:3px solid var(--future);outline-offset:2px;border-radius:4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
[hidden]{display:none!important}
a.brand{text-decoration:none;color:inherit}

.bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:20px;padding:12px 28px;background:var(--green);border-bottom:1px solid #0A5340;color:#fff;box-shadow:0 2px 10px rgba(14,107,79,.28)}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.2rem;color:#fff}
.logo{width:22px;height:22px;border-radius:6px;background:#fff;box-shadow:inset 0 0 0 6px #fff,inset 0 0 0 11px var(--green)}
.ask{flex:1;display:flex;gap:8px;max-width:760px}
.ask input{flex:1;border:1.5px solid rgba(255,255,255,.35);border-radius:999px;padding:10px 18px;font:600 1rem var(--f);color:var(--ink);background:#fff}
.ask input:focus{outline:none;border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.35)}
.ask button{border:0;border-radius:999px;background:#fff;color:var(--green);font-weight:700;padding:0 22px}
.ask button:hover{background:var(--green-soft)}
.ask button[disabled]{opacity:.6;cursor:progress}
/* Full-stage place layout: footage left, panels in a side rail (no overlap). */
.place-stage{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(300px,380px);
  gap:0;
  min-height:calc(100vh - 64px);
  background:#111;
}
.stage-main{display:flex;flex-direction:column;min-width:0;background:#111;color:#fff}
.stage-top{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 16px;background:rgba(0,0,0,.55)}
.stage-top .crumb{margin:0;color:rgba(255,255,255,.75)}
.stage-top .crumb a{color:#fff}
.stage-top .meta{font-size:.82rem;color:rgba(255,255,255,.7);white-space:nowrap}
.streetwrap{flex:1 1 auto;display:flex;min-height:0;background:#000}
.street{
  position:relative;flex:1;width:100%;
  min-height:min(72vh,820px);height:calc(100vh - 180px);
  border-radius:0;overflow:hidden;background:#000;
}
.street video#clip{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;z-index:0;background:#000;pointer-events:none}
.street.playing video#clip,
.street video#clip.on{opacity:1}
.street svg#street{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:auto;overflow:visible}
.street.playing svg#street .zonefill{fill-opacity:.12 !important}
.stage-controls{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:10px 16px 14px;background:#15201C}
.stage-controls .clipnote{display:none;margin:0;font-size:.82rem;color:rgba(255,255,255,.7)}
.streetwrap.playing + .stage-controls .clipnote{display:block}
.control-row{display:flex;flex-direction:column;gap:10px}
.stage-controls .chips{margin:0;display:flex;flex-wrap:wrap;gap:8px}
.stage-controls .chips button{
  background:transparent;border:1.5px solid rgba(255,255,255,.4);color:rgba(255,255,255,.9);
  border-radius:999px;padding:6px 12px;font-size:.82rem;font-weight:600;
}
.stage-controls .chips button:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.08)}
.stage-controls .chips button[aria-pressed="true"]{
  background:#fff;border-color:#fff;color:var(--ink);
}
.stage-intents{
  display:flex;flex-wrap:wrap;gap:8px;margin:0;width:100%;
}
.stage-intents button{
  flex:1 1 0;
  min-width:7.5rem;
  white-space:nowrap;
  border:1.5px solid rgba(255,255,255,.55);background:transparent;
  border-radius:999px;padding:8px 14px;font-size:.88rem;font-weight:700;color:rgba(255,255,255,.9);
}
.stage-intents button:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.08)}
.stage-intents button[aria-pressed="true"]{
  border-color:#fff;background:#fff;color:var(--ink);
}

.stage-rail{
  position:sticky;top:64px;align-self:start;
  height:calc(100vh - 64px);max-height:calc(100vh - 64px);
  display:flex;flex-direction:column;gap:0;
  padding:0;background:var(--surface);border-left:1px solid var(--line);
  min-width:0;overflow:hidden;
}
.rail-tabs{
  flex:none;display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  background:#E8EEEC;border-bottom:1px solid var(--line);
}
.rail-tabs button{
  border:0;background:transparent;padding:12px 8px;font-weight:700;font-size:.88rem;
  color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px;
}
.rail-tabs button:hover{color:var(--ink);background:rgba(255,255,255,.55)}
.rail-tabs button[aria-selected="true"]{
  color:var(--ink);background:var(--surface);border-bottom-color:var(--green);
}
.rail-panels{flex:1 1 auto;min-height:0;position:relative;display:flex;flex-direction:column}
.rail-panel{
  flex:1 1 auto;min-height:0;overflow:auto;
  padding:14px 12px 16px;
  display:flex;flex-direction:column;gap:10px;
}
.rail-panel[hidden]{display:none!important}
.rail-head{flex:none}
.rail-head h2{font-size:1.05rem}
.rail-head .lede{font-size:.85rem;margin-top:4px;max-width:none}
.rail-panel .rank{flex:none}
.stage-rail .recside{
  border:0;border-radius:0;box-shadow:inset 4px 0 0 var(--green);
  background:var(--paper);
}
.stage-rail .rail-detail{border:0;border-radius:0;background:var(--paper)}
.stage-rail #recPanel,.stage-rail #detail{min-width:0}

.page{max-width:1360px;margin:0 auto;padding:12px 28px 48px}
.page.lower{display:block;background:var(--surface)}
.story{display:grid;gap:20px}
.step{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:22px 24px}
.stephead{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px}
.num{flex:none;width:30px;height:30px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:800;font-size:.95rem}
.lede{color:var(--muted);margin-top:4px;max-width:70ch}

.seg{display:inline-flex;background:var(--surface);border-radius:999px;padding:3px}
.seg button{border:0;background:none;border-radius:999px;padding:5px 14px;font-size:.88rem;font-weight:600;color:var(--muted)}
.seg button[aria-pressed=true]{background:var(--paper);color:var(--ink);box-shadow:0 0 0 1px var(--line)}
.rank{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rank li{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:10px 12px;border-radius:8px;background:var(--paper);cursor:pointer;border:1.5px solid transparent}
.rank li:hover,.rank li.on{border-color:var(--link)}
.rank .nm{font-weight:700;overflow-wrap:anywhere;min-width:0}
.rank .ct{font-weight:800;color:var(--link)}
.rank .bar2{grid-column:1 / -1;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.rank .bar2 i{display:block;height:100%;background:var(--link)}
.rank .sub{grid-column:1 / -1;font-size:.82rem;color:var(--muted)}

.pairs{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:18px}
.pair{text-align:left;border:2px solid var(--line);background:var(--paper);border-radius:var(--r);padding:14px;display:grid;gap:8px;cursor:pointer}
.pair:hover{border-color:var(--link)}
.pair.on,.pair.related{border-color:var(--link);background:var(--link-soft);box-shadow:0 0 0 1px var(--link)}
.pair .a,.pair .b{font-weight:600;line-height:1.35}
.pair .gap{justify-self:start;font-size:.8rem;font-weight:700;color:var(--link);background:var(--link-soft);border-radius:999px;padding:2px 10px}
.pair.on .gap,.pair.related .gap{background:#fff}
.pair .tag{font-size:.78rem;color:var(--muted)}

.tl{border-top:1px solid var(--line);padding-top:16px}
.tlhead{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;margin-bottom:10px}
.keys{display:flex;flex-wrap:wrap;gap:6px;font-size:.82rem}
.keys button{
  display:inline-flex;align-items:center;gap:0;border:1.5px solid var(--line);background:var(--paper);
  border-radius:999px;padding:4px 10px 4px 8px;color:var(--muted);font-weight:600;cursor:pointer;
}
.keys button:hover{border-color:var(--ink);color:var(--ink)}
.keys button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.keys button[aria-pressed="true"] .kd.stay{background:#fff}
.keys button[aria-pressed="true"] .kd.walk{border-color:#fff;background:transparent}
.keys button[aria-pressed="true"] .kd.turn{border-color:#fff}
.keys button[aria-pressed="true"] .kd.veh{border-color:#fff;background:transparent}
.keys button[aria-pressed="true"] .kd.night{background:#fff;border-color:#fff}
.keys button[aria-pressed="false"]{opacity:.55;background:transparent}
.kd{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.kd.stay{background:var(--ink)} .kd.walk{border:1.5px solid var(--ink);background:#fff} .kd.turn{border:2px solid var(--link);background:#fff}
.kd.veh{border-radius:2px;border:2px solid var(--ink);background:#fff} .kd.night{border-radius:2px;width:16px;background:var(--night-soft);border:1px solid #CFCDEB}
.toggle{margin-left:auto;font-size:.88rem;display:flex;align-items:center;gap:6px;color:var(--muted)}
.tlscroll{overflow-x:auto;border-radius:8px;background:var(--surface);border:1px solid transparent}
.tlscroll.all-on{border-color:var(--link);background:var(--link-soft)}
#lg{display:block;height:220px}
.hint{font-size:.85rem;color:var(--muted);margin-top:8px}

.options{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.opt{text-align:left;border:1.5px solid var(--line);border-radius:var(--r);padding:16px;background:var(--paper);display:flex;flex-direction:column;gap:10px}
.opt:hover,.opt.on{border-color:var(--future)}
.opt.on{background:var(--future-soft)}
.opt.base{border-style:dashed}
.opt .kind{font-size:.8rem;font-weight:700;color:var(--muted)}
.opt h3{font-size:1.08rem;line-height:1.3}
.opt .pred{color:var(--muted);font-size:.92rem}
.opt .steps{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;font-size:.85rem;margin:2px 0}
.opt .steps b{color:var(--future);font-weight:700}
.opt .risk{font-size:.85rem;border-top:1px solid var(--line);padding-top:8px}
.opt .risk b{font-weight:700}
.badge{align-self:flex-start;font-size:.82rem;font-weight:700;color:var(--future);background:var(--future-soft);border-radius:999px;padding:3px 10px}
.opt.on .badge{background:#fff}

.recside{border-color:var(--green);box-shadow:inset 4px 0 0 var(--green);flex:none}
.recside .recwhat{font-size:1.1rem;line-height:1.3;font-weight:800;margin:0;overflow-wrap:anywhere}
.recside .recwhy{color:var(--muted);margin-top:8px;font-size:.88rem;line-height:1.4;overflow-wrap:anywhere}
.recrow{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.recside .badge{max-width:100%;overflow-wrap:anywhere}
.recside .btn{width:100%;justify-content:center;text-align:center}
.btn{border:0;border-radius:999px;background:var(--green);color:#fff;font-weight:700;padding:9px 18px}
.btn.ghost{background:none;color:var(--green);border:1.5px solid var(--green)}

.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:16px;min-width:0;overflow-wrap:anywhere}
.card h3{margin-bottom:10px}
#detail{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.empty{color:var(--muted);font-size:.92rem}
.dtitle{font-size:1.05rem;font-weight:700;line-height:1.35;margin-bottom:8px;overflow-wrap:anywhere}
.note{display:inline-block;font-size:.8rem;font-weight:600;color:var(--muted);background:var(--surface);border-radius:999px;padding:3px 10px;margin-bottom:12px}
.facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;font-size:.88rem;margin:4px 0 12px}
.facts dt{color:var(--muted)} .facts dd{margin:0;min-width:0;overflow-wrap:anywhere}
.clip{border-top:1px solid var(--line);padding:10px 0;font-size:.88rem;min-width:0}
.clip .ch{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:4px;min-width:0}
.clip .ch strong{min-width:0;font-size:.78rem;line-height:1.3;overflow-wrap:anywhere;word-break:break-word}
.clip .where{flex:none;font-size:.75rem;font-weight:700;border-radius:999px;padding:2px 8px}
.where.same{background:var(--green-soft);color:var(--green)}
.where.similar{background:var(--surface);color:var(--muted)}
.clip ul{margin:4px 0 6px;padding-left:18px;color:var(--muted)}
.clip button{background:none;border:1.5px solid var(--line);border-radius:999px;padding:3px 12px;font-size:.82rem;font-weight:600}
.clip button.on{border-color:var(--green);color:var(--green)}
.clipvid{display:none;width:100%;max-height:180px;margin-top:8px;border-radius:8px;background:#111;aspect-ratio:16/9;object-fit:contain}
#libraryView{max-width:1100px;margin:0 auto;padding:28px 28px 56px}
.libhero h1{font-size:2rem;font-weight:800;margin:0 0 10px;line-height:1.2}
.libsub{color:var(--muted);max-width:62ch;margin:0 0 22px}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:28px}
.stat{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.stat .sv{display:block;font-size:1.6rem;font-weight:800;line-height:1.1}
.stat .sk{display:block;font-size:.85rem;color:var(--muted);margin-top:4px}
.libsec{margin-top:28px}
.libsec h2{font-size:1.15rem;margin:0 0 14px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.place-card{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;background:var(--paper);border:1.5px solid var(--line);border-radius:var(--r);padding:16px}
.place-card:hover{border-color:var(--green)}
.place-card.top{border-color:var(--link);box-shadow:0 0 0 1px var(--link)}
.pc-top{display:flex;gap:8px;align-items:center}
.rankpill{font-size:.78rem;font-weight:800;background:var(--surface);border-radius:999px;padding:2px 8px}
.opp{font-size:.75rem;font-weight:800;color:#fff;background:var(--link);border-radius:999px;padding:2px 8px}
.place-card h3{margin:0;font-size:1.05rem}
.pc-meta{font-size:.85rem;color:var(--muted);margin:0}
.pc-head{margin:0;font-weight:600;line-height:1.35}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tags span{font-size:.75rem;font-weight:700;background:var(--surface);border-radius:999px;padding:2px 8px;color:var(--muted)}
.explore{margin-top:auto;font-weight:700;color:var(--green);font-size:.9rem}
.also{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.also li{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.also .why{color:var(--muted);font-size:.88rem}
.crumb{font-size:.88rem;color:var(--muted);margin-bottom:8px}
.crumb a{color:var(--green);font-weight:700;text-decoration:none}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chips button{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:6px 12px;font-size:.82rem;font-weight:600}
.chips button:hover{border-color:var(--green);color:var(--green)}
.intentbar{display:flex;flex-wrap:nowrap;gap:8px;margin:14px 0 6px}
.intentbar button{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:8px 14px;font-size:.88rem;font-weight:700;color:var(--ink);white-space:nowrap}
.intentbar button:hover{border-color:var(--green)}
.intentbar button[aria-pressed="true"]{border-color:var(--link);background:var(--link-soft);color:var(--ink)}
#libIntents{flex-wrap:wrap}
#libIntents button{flex:1 1 auto;min-width:min(100%,220px);white-space:normal;text-align:center}
.placezone{pointer-events:auto}
.placezone text,.placezone rect,.placezone polygon{pointer-events:auto}

@media (max-width:1080px){
  .place-stage{grid-template-columns:1fr;min-height:0}
  .stage-rail{position:static;height:auto;max-height:none;overflow:visible;border-left:0;border-top:1px solid var(--line)}
  .rail-panels,.rail-panel{overflow:visible;max-height:none}
  .street{height:auto;min-height:50vh;aspect-ratio:16/9}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  .bar{flex-wrap:wrap;padding:10px 16px}
  .ask{order:3;flex-basis:100%}
  .page,#libraryView{padding-left:16px;padding-right:16px}
  .stage-top{flex-wrap:wrap}
  .stage-top .meta{white-space:normal}
  .stats{grid-template-columns:1fr 1fr}
  .step{padding:18px 16px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
.story,.step,.tl,.stage-main,.stage-rail{min-width:0}
.ask button{white-space:nowrap}
.ask input{min-width:0}
.ask{min-width:0}.ask input{width:100%}@media (max-width:640px){.ask{max-width:none;width:100%}}
