@font-face{font-family:Motion;src:local('Avenir Next');font-display:swap}
:root{color-scheme:dark;--bg:#071217;--text:#dce8e3;--muted:#82999f;--line:#26383e;--green:#78e2bd}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:Motion,'Helvetica Neue',Arial,sans-serif;font-size:14px}
button,a,input,select{-webkit-tap-highlight-color:transparent}
button,select{font:inherit;color:inherit}
button{cursor:pointer}a{color:inherit}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--green);outline-offset:4px}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
#app{height:100svh;min-height:600px;position:relative;overflow:hidden}
#map{width:100%;height:100%;position:absolute;inset:0;cursor:grab;touch-action:none}
#map:active{cursor:grabbing}
.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#071217b0,transparent 20%,transparent 76%,#071217a0)}
header{position:absolute;left:26px;right:26px;top:21px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{text-decoration:none;display:flex;align-items:center;gap:7px;font-size:11px;letter-spacing:1.2px;font-weight:600;white-space:nowrap;color:#b1c5c3}
.muted{color:#7b949a}
.brand-mark{width:24px;height:24px;position:relative;margin-right:5px;transform:scale(.8) rotate(-32deg)}
.brand-mark i{position:absolute;width:5px;border-radius:5px;background:var(--green);height:22px;left:10px;top:2px}
.brand-mark i:first-child{left:1px;height:14px;top:9px}.brand-mark i:last-child{left:19px;height:14px;top:2px}
.about-button{background:transparent;border:0;color:#98aeb2;font-size:11px;padding:8px 0}
.about-button span{margin-left:10px;color:#8cb5aa}
.intro{position:absolute;left:27px;top:76px;pointer-events:none}
.day-total{display:flex;align-items:baseline;gap:5px;font-size:11px;line-height:1.5;color:#8ba3a8}
.day-total strong{font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;color:#bdcfcc}
.summary-divider{margin:0 5px;color:#54727a}
.places{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px;pointer-events:auto}
.places button{background:#0c1a2059;border:1px solid transparent;color:#8ba3a8;border-radius:4px;padding:6px 9px;font-size:11px;transition:background .2s,color .2s}
.places button:hover,.places button.selected{border-color:#33574d;color:#a7dac8;background:#142a2980}
.clock-panel{position:absolute;right:27px;top:74px;text-align:right;pointer-events:none}
.date{font-size:9px;letter-spacing:1px;color:#87a1a6}
.clock{display:flex;align-items:baseline;gap:6px;justify-content:flex-end;margin-top:3px}
.clock>span:first-child{font-size:29px;line-height:1.15;font-weight:350;letter-spacing:-.7px;font-variant-numeric:tabular-nums;color:#b9ceca}
.clock-zone{font-size:9px;color:#779299}
.map-tools{position:absolute;right:27px;bottom:170px;display:flex;flex-direction:column;align-items:center;gap:2px}
.north{font-size:9px;color:#8ba2a5;margin-bottom:12px;text-align:center}.north span{display:block;font-size:24px;line-height:1.4;color:#9cb7b5;font-weight:200}
.map-tools button{width:31px;height:31px;background:#0c1a20ad;border:1px solid #24363e;border-radius:3px;color:#a5bcbe;font-size:19px}
.map-tools button:disabled{opacity:.3;cursor:default}.map-tools button:hover:not(:disabled){color:var(--green);background:#203735}
.map-caption{position:absolute;bottom:164px;left:27px;color:#607f88;font-size:8px;letter-spacing:1px;display:flex;gap:8px;align-items:center;pointer-events:none}
.tiny-cross{font-size:17px;color:#6f9298}
.playback{position:absolute;bottom:18px;left:24px;right:24px;background:#0a171dce;backdrop-filter:blur(12px);border:1px solid #23363b;border-radius:7px;padding:11px 16px 9px}
.playback-top{display:flex;align-items:center;justify-content:space-between;gap:14px}
.legend{display:flex;gap:17px;flex-wrap:wrap}
.legend button{background:transparent;border:0;padding:3px 0;display:flex;align-items:center;gap:6px;color:#9eb4b8;font-size:11px}
.legend button.off{opacity:.4}
.legend .mode-dot{display:inline-block;width:4px;height:4px;background:var(--mode-color);border-radius:50%}
.legend .mode-count{font-size:10px;color:#6e8a92;font-variant-numeric:tabular-nums;min-width:20px;text-align:right}
.playback-options{display:flex;align-items:center;gap:16px}
.option{background:none;border:0;color:#8ba4ab;font-size:11px;padding:5px 0}.option.enabled{color:#acc2bf}
.option span{display:inline-block;width:16px;height:8px;border-radius:7px;background:#3c665a;margin-left:6px;position:relative}
.option span:after{content:'';position:absolute;width:6px;height:6px;background:var(--green);border-radius:50%;right:1px;top:1px}
.option:not(.enabled) span{background:#384249}.option:not(.enabled) span:after{left:1px;right:auto;background:#91a2a3}
#fullscreen{font-size:19px;line-height:15px}
.timeline-row{display:flex;gap:17px;align-items:center;margin-top:7px}
.play{width:34px;height:34px;border-radius:50%;border:1px solid #588f7f;background:#78e2bd07;color:#a1d9c3;flex-shrink:0;display:grid;place-items:center}
.play:hover{background:#78e2bd20}.play:disabled{opacity:.4}.play svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;width:18px;height:18px}
.timeline{flex:1;position:relative;height:43px}
#activity{position:absolute;top:0;left:0;width:100%;height:21px}
.timeline-progress{position:absolute;top:23px;height:1px;width:0;background:var(--green);pointer-events:none;z-index:2}
.timeline input{width:100%;margin:0;position:absolute;top:17px;left:0;height:13px;cursor:pointer;appearance:none;-webkit-appearance:none;background:transparent;z-index:3}
.timeline input::-webkit-slider-runnable-track{background:#29424b;height:1px}.timeline input::-moz-range-track{background:#29424b;height:1px}
.timeline input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:7px;height:7px;border-radius:50%;background:var(--green);margin-top:-3px}
.timeline input::-moz-range-thumb{width:7px;height:7px;border:0;border-radius:50%;background:var(--green)}
.ticks{position:absolute;top:31px;width:100%;display:flex;justify-content:space-between;font-size:8px;color:#78969f;font-variant-numeric:tabular-nums}
.speed{position:relative;align-self:center;display:flex;align-items:center;border:1px solid #2b4148;border-radius:4px;padding-right:9px}
.speed select{background:transparent;border:0;appearance:none;padding:7px 21px 7px 9px;font-size:10px;cursor:pointer;color:#a9bfbe}
.speed option{background:#0a171d}.speed span{font-size:11px;position:absolute;right:8px;pointer-events:none;color:#819fa5}
.playback-footer{border-top:1px solid #1d3037;margin-top:7px;padding-top:8px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.travel-metrics{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 22px}
.travel-stat{display:flex;align-items:baseline;gap:5px;white-space:nowrap}
.metric-label,.metric-unit{font-size:10px;color:#8ba5ac}.travel-stat strong{font-size:13px;font-weight:400;font-variant-numeric:tabular-nums;color:#b3c8c3}
.metrics-note{font-size:9px;color:#76929a}
.sources{display:flex;gap:14px;flex-shrink:0}.sources a{text-decoration:none;font-size:9px;color:#819da5}.sources a:hover{color:var(--green)}
#tooltip{position:absolute;pointer-events:none;background:#0c1b23ed;border:1px solid #38585c;border-radius:5px;padding:11px 15px;box-shadow:0 5px 20px #0005;font-size:11px;max-width:260px;z-index:5}
#tooltip strong{display:block;color:#d7e8e0;margin-top:5px}#tooltip small{display:block;color:#7d9ba2;margin-top:5px;font-size:9px}
#loading{position:absolute;inset:0;background:#071217ee;z-index:10;display:flex;align-items:center;justify-content:center;gap:22px;font-size:16px;letter-spacing:.3px;transition:opacity .7s}
#loading.done{opacity:0;pointer-events:none}#loading-detail{display:block;color:#819da5;font-size:11px;margin-top:8px}
.loader-orbit{width:42px;height:42px;border:1px solid #223f44;border-radius:50%;position:relative;animation:orbit 2s linear infinite}.loader-orbit i{position:absolute;left:17px;top:-3px;border-radius:50%;width:6px;height:6px;background:var(--green);box-shadow:0 0 20px var(--green)}
@keyframes orbit{to{transform:rotate(360deg)}}
dialog{background:#0c1b22;color:#a0b6bb;border:1px solid #375159;box-shadow:0 40px 120px #0009;border-radius:10px;width:520px;max-width:calc(100vw - 32px);max-height:calc(100svh - 32px);overflow-y:auto;padding:36px;font-size:12px;line-height:1.8}
dialog::backdrop{background:#02090da8;backdrop-filter:blur(7px)}
.eyebrow{font-size:9px;letter-spacing:2px;color:#a1b6b8}
dialog h2{font-weight:400;font-size:27px;letter-spacing:-.7px;color:#e1ebe6;line-height:1.2;margin-top:18px}dialog h3{font-size:16px;font-weight:500;color:#d0e2dc;margin:25px 0 0}
dialog p{margin:18px 0}dialog strong{color:#d0e2dc;font-weight:500}dialog a{color:#81c4af}
#close-about{position:absolute;top:12px;right:17px;border:0;background:transparent;color:#78959e;font-size:24px}
.source-note{font-size:10px;color:#819da5}.dialog-action{border:1px solid #41695e;color:var(--green);padding:11px 16px;background:#132e29;border-radius:4px;margin-top:9px;font-size:11px}
.emission-settings{border:1px solid var(--line);border-radius:5px;padding:10px 12px}.emission-settings summary{cursor:pointer;color:var(--green)}.emission-settings p{font-size:10px;margin:10px 0}
#emission-factors{display:grid;gap:8px}#emission-factors label{display:flex;align-items:center;justify-content:space-between;gap:15px}
#emission-factors input{width:90px;border:1px solid #375159;border-radius:3px;background:#071217;color:var(--text);padding:5px 7px;font:inherit;font-variant-numeric:tabular-nums}#emission-factors input:invalid{border-color:#ffb080}
@media(max-width:1000px){.legend{gap:12px}.legend .mode-count{display:none}.metrics-note{display:none}.north{display:none}}
@media(max-width:650px){
  #app{min-height:650px}
  header{left:18px;right:18px;top:14px}.brand{font-size:10px;letter-spacing:.7px;gap:5px}.brand-mark{margin-right:1px}.about-button{font-size:10px}.about-button span{margin-left:5px}
  .intro{left:19px;right:19px;top:65px}.day-total{font-size:10px;gap:4px}.day-total strong{font-size:11px}.summary-divider{margin:0 3px}
  .places{gap:2px;margin-top:8px}.places button{font-size:10px;padding:6px 7px}
  .clock-panel{right:19px;top:139px}.date{font-size:8px;letter-spacing:.5px}.clock>span:first-child{font-size:23px}.clock-zone{font-size:8px}
  .playback{left:12px;right:12px;bottom:12px;padding:10px 11px 9px}.playback-top{align-items:flex-start;gap:10px}.legend{gap:3px 11px}.legend button{font-size:10px;gap:5px}.playback-options{gap:9px}.option{font-size:10px}.option span{margin-left:4px}
  .timeline-row{gap:10px;margin-top:8px}.play{width:31px;height:31px}.speed select{font-size:9px;padding:7px 18px 7px 7px}.speed{padding-right:3px}.ticks{font-size:7px}
  .playback-footer{align-items:flex-start;gap:7px;margin-top:6px;padding-top:7px}.travel-metrics{gap:4px 12px}.travel-stat{gap:4px}.metric-label,.metric-unit{font-size:9px}.travel-stat strong{font-size:11px}.sources{flex-direction:column;gap:3px}.sources a{font-size:8px;white-space:nowrap}
  .map-caption{left:19px;bottom:193px;font-size:7px}.map-tools{right:18px;bottom:194px;flex-direction:row}.map-tools button{width:29px;height:29px}
  dialog{padding:27px}dialog h2{font-size:24px}
}
@media(max-height:700px) and (min-width:651px){.map-tools{flex-direction:row}.north{display:none}.map-caption{bottom:158px}}
@media(prefers-reduced-motion:reduce){.loader-orbit{animation:none}*{scroll-behavior:auto}}

#network-status{font-size:10px;color:#8ba5ac;max-width:160px}#network-status.error{color:#ffb080}.playback-options [hidden],#loading [hidden]{display:none}
