@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-opsz-normal-s-izfB6B.woff2)format("woff2-variations")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fbfaf7;--ink:#1b1a18;--ink-2:#55534e;--rule:#e1e0d9;--field:#fff;--accent:#1c5cab;--track:#ecebe6;--road:#d9d7cf;--road-fast:#bdbab0;--car-idle:#6e6c66;--car-offered:#b45309;--car-pickup:#1c5cab;--car-trip:#137a3b;--rider:#b3245f;--s-1:#2a78d6;--s-2:#eb6834;--s-3:#1baf7a;--s-4:#eda100;--serif:"Newsreader Variable", Georgia, serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#161615;--ink:#f0efec;--ink-2:#c3c2b7;--rule:#2e2e2b;--field:#1e1e1c;--accent:#86b6ef;--track:#262624;--road:#353532;--road-fast:#4d4d48;--car-idle:#9a998f;--car-offered:#f0a33a;--car-pickup:#86b6ef;--car-trip:#5cc27d;--rider:#f27aa6;--s-1:#3987e5;--s-2:#d95926;--s-3:#199e70;--s-4:#c98500}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#161615;--ink:#f0efec;--ink-2:#c3c2b7;--rule:#2e2e2b;--field:#1e1e1c;--accent:#86b6ef;--track:#262624;--road:#353532;--road-fast:#4d4d48;--car-idle:#9a998f;--car-offered:#f0a33a;--car-pickup:#86b6ef;--car-trip:#5cc27d;--rider:#f27aa6;--s-1:#3987e5;--s-2:#d95926;--s-3:#199e70;--s-4:#c98500}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--serif);margin:0;font-size:1.1875rem;line-height:1.6}.page{max-width:64rem;margin:0 auto;padding:0 1rem}a{color:var(--accent);text-underline-offset:.15em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}h1{margin:0 0 1.5rem;font-size:clamp(2.25rem,6vw,3.25rem);font-weight:500;line-height:1.1}p{margin:0 0 1rem}h2{margin:2.5rem 0 .75rem;font-size:clamp(1.4rem,3.5vw,1.75rem);font-weight:500;line-height:1.2}.site-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;padding:1.5rem 0 0;display:flex}.site-name{color:var(--ink);font-weight:600;text-decoration:none}.site-nav{flex-wrap:wrap;align-items:baseline;gap:.25rem 1.25rem;display:flex}.site-nav a{color:var(--ink-2)}.theme-toggle{font:inherit;color:var(--ink-2);text-underline-offset:.15em;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.theme-toggle[hidden]{display:none}.intro{padding:2.5rem 0 1.25rem}.lede{text-wrap:pretty;max-width:40rem;font-size:1.3rem}.note,.status{color:var(--ink-2);font-size:1rem}.status:empty{display:none}.city{padding:0 0 4rem}.city-grid{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr) 18rem;align-items:start;gap:0 2rem;display:grid}.map-wrap{grid-area:1/1;min-width:0;margin:0}.city-side{grid-area:1/2/3}.city-controls{grid-area:2/1;min-width:0}@media (width>=761px){.city-grid:not(:has(.inspect:not([hidden]))) .map-wrap{grid-row:1/3}.city-grid:not(:has(.inspect:not([hidden]))) .city-side{grid-row:1}.city-grid:not(:has(.inspect:not([hidden]))) .city-controls{grid-area:2/2}.city-grid:not(:has(.inspect:not([hidden]))) .controls{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:.75rem}.city-grid:not(:has(.inspect:not([hidden]))) .control:first-child{grid-column:1/-1}.city-grid:not(:has(.inspect:not([hidden]))) .control-actions{grid-column:1/-1}}canvas.map{width:100%;height:auto;display:block}.legend{color:var(--ink-2);flex-wrap:wrap;gap:.15rem 1.25rem;margin:.75rem 0 .25rem;padding:0;font-size:.95rem;list-style:none;display:flex}.legend li{align-items:center;gap:.45rem;display:inline-flex}.mark{border-radius:50%;flex:none;width:.45rem;height:.45rem;display:inline-block}.mark-idle{background:var(--car-idle);width:.3rem;height:.3rem}.mark-offered{border:2px solid var(--car-offered);width:.6rem;height:.6rem}.mark-pickup{background:var(--car-pickup)}.mark-trip{background:var(--car-trip);border-radius:0;width:.5rem;height:.5rem;transform:rotate(45deg)}.mark-rider{background:var(--rider);border-radius:0;width:.5rem;height:.5rem}.credit{margin:0}.hint{max-width:40rem;margin:.25rem 0 0}.map-wrap[data-highlight] canvas,.log-wrap[data-highlight] .log{outline:2px solid var(--accent);outline-offset:4px}.lock-note{margin:1.5rem 0 -.5rem}.lock-note[hidden]{display:none}.intro .button{margin-top:.25rem}.intro-more{text-wrap:pretty;max-width:40rem}.inspect{border-bottom:2px solid var(--ink);margin:0 0 1.5rem;padding-bottom:1rem;font-size:1rem;line-height:1.5}.tour{scroll-margin-top:1rem}.inspect[hidden]{display:none}.inspect:focus{outline:none}.inspect h2{margin:0 0 .6rem;font-size:1.35rem}.inspect h2:focus{outline:none}.inspect h3{margin:1rem 0 .35rem;font-size:1.05rem;font-weight:600}.inspect p{margin:0 0 .6rem}.inspect-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.inspect-head .button{min-height:2.25rem;padding:.25rem .7rem}.trace-table{border-collapse:collapse;width:100%;margin:.25rem 0 .5rem;font-size:.95rem}.trace-table th,.trace-table td{text-align:left;border-bottom:1px solid var(--rule);vertical-align:baseline;padding:.3rem .5rem .3rem 0}.trace-table thead th{color:var(--ink-2);font-weight:500;line-height:1.25}.trace-table tbody th{color:var(--ink-2);font-weight:400}.trace-table td{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.85rem}.trace-table .num{text-align:right}.trace-table td.note-cell{font-family:var(--serif);color:var(--ink-2);white-space:normal;font-size:.9rem}.trace-table tr.mine td,.trace-table tr[data-note] td:first-child{color:var(--ink);font-weight:600}.trace-history{margin:0;padding:0;list-style:none}.trace-history li{border-bottom:1px solid var(--rule);grid-template-columns:4.5rem minmax(0,1fr);gap:.5rem;padding:.25rem 0;display:grid}.trace-history time{font-family:var(--mono);color:var(--ink-2);padding-top:.1rem;font-size:.8rem}.trace-times{margin:0}.tour-nav{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-top:.75rem;display:flex}.inspect p.tour-count{color:var(--ink-2);margin:0;font-size:.95rem}.button:disabled{opacity:.45;cursor:default}.link-button{font:inherit;color:var(--ink-2);text-underline-offset:.15em;cursor:pointer;background:0 0;border:0;margin-left:auto;padding:.4rem 0;font-size:.95rem;text-decoration:underline}canvas.map{cursor:pointer}.counts{margin:0 0 .75rem;font-size:1rem}.city-side .note{text-wrap:pretty;margin:0}.count-row{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem 0;display:flex}.count-row dt{color:var(--ink-2)}.count-row dd{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-size:.9rem}.controls{border-top:1px solid var(--rule);grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));align-items:end;gap:1rem 1.25rem;margin-top:1.5rem;padding-top:1.25rem;display:grid}.control label{color:var(--ink-2);margin-bottom:.3rem;font-size:1rem;display:block}.control-value{font-family:var(--mono);color:var(--ink);font-size:.9rem}.control-actions{gap:.5rem;display:flex}.select{font:inherit;border:1px solid var(--rule);background:var(--field);width:100%;color:var(--ink);border-radius:8px;padding:.4rem .6rem;font-size:1rem}.select:disabled{color:var(--ink-2);opacity:.6}input[type=range]{width:100%;accent-color:var(--accent);margin:.55rem 0}.button{font:inherit;border:1px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;border-radius:8px;padding:.4rem .9rem;font-size:1rem}.button.quiet{color:var(--ink);border-color:var(--rule);background:0 0}.button.quiet:hover{border-color:var(--ink-2)}.thread{text-wrap:pretty;max-width:40rem;margin-top:1.25rem}.log-summary{margin:0 0 .75rem}.log{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);height:16rem;margin:0;padding:0;font-size:.95rem;line-height:1.45;list-style:none;overflow-y:auto}.log li{border-bottom:1px solid var(--rule);grid-template-columns:4.75rem minmax(0,1fr);gap:.75rem;padding:.3rem 0;display:grid}.log li:last-child{border-bottom:0}.log-line{font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.log-line:hover{text-underline-offset:.15em;text-decoration:underline}.log time{font-family:var(--mono);color:var(--ink-2);font-variant-numeric:tabular-nums;padding-top:.1rem;font-size:.82rem}@media (width<=760px){.city-grid{grid-template-rows:none;grid-template-columns:minmax(0,1fr)}.map-wrap,.city-side,.city-controls{grid-area:auto/1}.city-side{margin-top:1.5rem}.counts{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.25rem;display:grid}.count-row{flex-direction:column;gap:0}}@media (width<=420px){.controls{grid-template-columns:repeat(2,minmax(0,1fr))}.control:first-child{grid-column:1/-1}}.log-head{flex-wrap:wrap;align-items:baseline;gap:0 1rem;margin:2.5rem 0 .75rem;display:flex}.log-head h2{margin:0}.log-head .link-button[hidden]{display:none}.part{border-top:1px solid var(--rule);padding:3.5rem 0}.part>h2{margin-top:0}.part p{text-wrap:pretty;max-width:40rem}.part p.note{max-width:32rem}.result{margin-top:3rem}.result h3{margin:0 0 .6rem;font-size:1.3rem;font-weight:500;line-height:1.25}.chart{max-width:48rem;margin:1.75rem 0 0}.part .chart p{max-width:none}.fig-title{margin-bottom:.5rem;font-weight:600}.chart figcaption{color:var(--ink-2);text-wrap:pretty;max-width:34rem;margin-top:.75rem;font-size:1rem}.chart-row{border-bottom:1px solid var(--rule);grid-template-columns:minmax(7rem,15rem) minmax(0,1fr) 4rem;align-items:center;gap:.25rem 1rem;padding:.35rem 0;font-size:1rem;display:grid}.part .chart p.chart-sub{border-bottom:1px solid var(--rule);color:var(--ink-2);margin:1rem 0 0;padding-bottom:.25rem;font-size:.95rem}.key-label{align-items:center;gap:.45rem;display:inline-flex}.value{font-variant-numeric:tabular-nums lining-nums;white-space:nowrap;text-align:right;font-size:.95rem}.bar{width:100%;height:.85rem;display:block;overflow:visible}.bar .track{fill:var(--track)}.bar .s-accent{fill:var(--accent)}.bar .s-1{fill:var(--s-1)}.bar .s-2{fill:var(--s-2)}.bar .s-3{fill:var(--s-3)}.bar .s-4{fill:var(--s-4)}.bar .interval{stroke:var(--ink);stroke-width:1.25px}.chart-keys{color:var(--ink-2);flex-wrap:wrap;gap:.2rem 1.25rem;margin:0 0 .25rem;padding:0;font-size:.95rem;list-style:none;display:flex}.series-key{align-items:center;gap:.45rem;display:inline-flex}.swatch,.chart-keys .dot{border-radius:2px;flex:none;width:.75rem;height:.75rem;display:inline-block}.chart-keys .dot{border-radius:50%}.s-1{background:var(--s-1)}.s-2{background:var(--s-2)}.s-3{background:var(--s-3)}.s-4{background:var(--s-4)}.dot-row{border-bottom:1px solid var(--rule);grid-template-columns:7.5rem minmax(0,1fr);align-items:center;gap:1rem;min-height:2.25rem;font-size:1rem;display:grid}.dot-track{height:1.25rem;margin:0 .75rem;position:relative}.dot-track .dot{width:.75rem;height:.75rem;box-shadow:0 0 0 2px var(--paper);border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.dot-track .dot:after{content:"";position:absolute;inset:-.5rem}.dot-axis{border-bottom:0;min-height:1.5rem}.tick{font-family:var(--mono);color:var(--ink-2);white-space:nowrap;font-size:.78rem;position:absolute}.dot-axis .tick{top:0;transform:translate(-50%)}.part .chart p.axis-title{color:var(--ink-2);margin:.25rem 0 0;font-size:.9rem}.dot-row+.axis-title{padding-left:8.5rem}.line-plot{grid-template-rows:auto 15rem auto auto;grid-template-columns:3.25rem minmax(0,1fr);column-gap:.75rem;display:grid}.line-plot .y-title{grid-column:1/-1;margin:0 0 .5rem}.y-axis{position:relative}.y-axis .tick{right:0;transform:translateY(-50%)}.plot-area{position:relative}.plot-lines{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.plot-lines .grid{stroke:var(--rule);stroke-width:1px}.plot-lines .limit{stroke:var(--ink-2);stroke-width:1px;stroke-dasharray:4 3}.plot-lines .break{stroke:var(--ink-2);stroke-width:1px}.plot-lines .series{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.point{background:var(--accent);width:.6rem;height:.6rem;box-shadow:0 0 0 2px var(--paper);border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.point:after{content:"";position:absolute;inset:-.5rem}.point.broke{background:var(--paper);border:2px solid var(--accent);width:.7rem;height:.7rem;box-shadow:none;border-radius:0}.plot-label{color:var(--ink-2);white-space:nowrap;background:var(--paper);padding:0 .2rem;font-size:.85rem;line-height:1.2;position:absolute}.limit-label{left:.25rem;transform:translateY(-120%)}.break-label{bottom:.25rem;transform:translate(-105%)}.x-axis{grid-column:2;height:1.5rem;margin-top:.35rem;position:relative}.x-axis .tick{top:0;transform:translate(-50%)}.line-plot .x-title{grid-column:2}.table-wrap{margin-top:1.25rem;overflow-x:auto}.data-table{border-collapse:collapse;min-width:100%;font-size:.95rem}.data-table caption{text-align:left;color:var(--ink-2);padding-bottom:.35rem}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--rule);vertical-align:top;padding:.3rem .75rem .3rem 0}.data-table thead th{color:var(--ink-2);font-weight:500;line-height:1.25}.data-table tbody th{font-weight:400}.data-table .num{text-align:right}.data-table td{font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}.data-table .sub{color:var(--ink-2);display:block}.credit-list{max-width:40rem;margin:1.25rem 0;padding:0;font-size:1rem;list-style:none}.credit-list li{border-bottom:1px solid var(--rule);grid-template-columns:9rem minmax(0,1fr) auto;gap:.25rem 1rem;padding:.4rem 0;display:grid}.licence{font-family:var(--mono);color:var(--ink-2);white-space:nowrap;font-size:.82rem}.site-footer{border-top:1px solid var(--rule);color:var(--ink-2);padding:1.25rem 0 2.5rem;font-size:.95rem}@media (width<=640px){.chart-row{grid-template-columns:minmax(0,1fr) 3.5rem;padding:.5rem 0}.chart-row .row-label{grid-column:1/-1}.dot-row{grid-template-columns:6.75rem minmax(0,1fr);gap:.5rem}.dot-row+.axis-title{padding-left:7.25rem}.dot-row .row-label{white-space:nowrap}.credit-list li{grid-template-columns:minmax(0,1fr) auto}.credit-list li>span:not(.licence){color:var(--ink-2);grid-area:2/1/auto/-1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
