:root{--blue:#007aff;--blue-h:211.294deg;--blue-s:100%;--blue-l:50%;--blue-hsl:var(--blue-h) var(--blue-s) var(--blue-l);--orange:#ff9500;--orange-h:35.0588deg;--orange-s:100%;--orange-l:50%;--orange-hsl:var(--orange-h) var(--orange-s) var(--orange-l);--red:#ff3b30;--red-h:3.18841deg;--red-s:100%;--red-l:59.4118%;--red-hsl:var(--red-h) var(--red-s) var(--red-l);--green:#34c759;--green-h:135.102deg;--green-s:58.5657%;--green-l:49.2157%;--green-hsl:var(--green-h) var(--green-s) var(--green-l);--grey:#8e8e93;--grey-h:240deg;--grey-s:2.26244%;--grey-l:56.6667%;--grey-hsl:var(--grey-h) var(--grey-s) var(--grey-l);--label:#1c1c1e;--label-h:240deg;--label-s:3.44828%;--label-l:11.3725%;--label-hsl:var(--label-h) var(--label-s) var(--label-l);--surface:#fff;--surface-h:0deg;--surface-s:0%;--surface-l:100%;--surface-hsl:var(--surface-h) var(--surface-s) var(--surface-l);--background:#f2f2f7;--background-h:240deg;--background-s:23.8095%;--background-l:95.8824%;--background-hsl:var(--background-h) var(--background-s) var(--background-l);--map-background:#eaeef1;--map-background-h:205.714deg;--map-background-s:20%;--map-background-l:93.1373%;--map-background-hsl:var(--map-background-h) var(--map-background-s) var(--map-background-l);--suburban:#0f7d2e;--suburban-h:136.909deg;--suburban-s:78.5714%;--suburban-l:27.451%;--suburban-hsl:var(--suburban-h) var(--suburban-s) var(--suburban-l);--subway:#005ca9;--subway-h:207.337deg;--subway-s:100%;--subway-l:33.1373%;--subway-hsl:var(--subway-h) var(--subway-s) var(--subway-l);--tram:#be1414;--tram-h:0deg;--tram-s:80.9524%;--tram-l:41.1765%;--tram-hsl:var(--tram-h) var(--tram-s) var(--tram-l);--bus:#95276e;--bus-h:321.273deg;--bus-s:58.5106%;--bus-l:36.8627%;--bus-hsl:var(--bus-h) var(--bus-s) var(--bus-l);--ferry:#0080ab;--ferry-h:195.088deg;--ferry-s:100%;--ferry-l:33.5294%;--ferry-hsl:var(--ferry-h) var(--ferry-s) var(--ferry-l);--train:#d1101f;--train-h:355.337deg;--train-s:85.7778%;--train-l:44.1177%;--train-hsl:var(--train-h) var(--train-s) var(--train-l);--label-muted:#3c3c4399;--label-faint:#3c3c4359;--separator:#3c3c434a;--fill:#78788029;--fill-strong:#7878803d;--surface-translucent:#ffffffc7;--element-hover-background:color-mix(in oklab, var(--blue) 88%, black);--spacing-xxs:.125rem;--spacing-xs:.25rem;--spacing-s:.375rem;--spacing-m:.5rem;--spacing-l:.75rem;--spacing-xl:1rem;--spacing-xxl:1.5rem;--spacing-xxxl:2.5rem;--radius-s:.5rem;--radius-m:.75rem;--radius-l:1rem;--radius-pill:62.4375rem;--hairline:.0625rem;--touch-target:2rem;--shadow-soft:0 .0625rem .125rem #0000000a;--shadow-raised:0 .25rem 1.5rem #0000001a}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}*,:before,:after{box-sizing:border-box}html,body{block-size:100%;margin:0}body{color:var(--label);background-color:var(--background);-webkit-font-smoothing:antialiased;font-family:-apple-system,blinkmacsystemfont,SF Pro Text,Helvetica Neue,Segoe UI,roboto,sans-serif;font-size:1rem;line-height:1.4}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}input{font:inherit;color:inherit}:is(button,input,[tabindex]):focus-visible{outline:.1875rem solid var(--blue);outline-offset:.125rem;border-radius:var(--radius-s)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms;animation-duration:.01ms}}.button{align-items:center;gap:var(--spacing-s);min-block-size:2.25rem;padding:var(--spacing-m) var(--spacing-l);border-radius:var(--radius-pill);font-size:.9375rem;font-weight:600;transition:background-color .15s,transform .1s;display:inline-flex}.button:active{transform:scale(.97)}.button:disabled{opacity:.4;cursor:default;transform:none}.button.primary{color:var(--surface);background-color:var(--blue)}.button.primary:hover{background-color:var(--element-hover-background)}.button.primary:focus-visible{background-color:var(--element-hover-background)}.button.block{justify-content:center;inline-size:100%}.button.plain{color:var(--blue);background-color:var(--fill)}.button.plain:hover{background-color:var(--fill-strong)}.button.plain:focus-visible{background-color:var(--fill-strong)}.icon-button{inline-size:var(--touch-target);block-size:var(--touch-target);color:var(--blue);border-radius:var(--radius-s);place-items:center;transition:background-color .15s;display:grid}.icon-button svg{fill:currentColor;block-size:1.125rem;inline-size:1.125rem}.icon-button .icon-stroke{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round}.icon-button:hover{background-color:var(--fill)}.icon-button:disabled{color:var(--label-faint);cursor:default;background-color:#0000}.icon-button.round{block-size:2.75rem;inline-size:2.75rem;color:var(--surface);background-color:var(--label);box-shadow:var(--shadow-raised);border-radius:50%}.icon-button.round svg{block-size:1.375rem;inline-size:1.375rem}.icon-button.round:hover{background-color:color-mix(in oklab, var(--label) 85%, white)}.icon-button.round:focus-visible{background-color:color-mix(in oklab, var(--label) 85%, white)}.icon-button.ghost{color:var(--label-muted);background-color:#0000}.icon-button.ghost:hover{color:var(--label);background-color:var(--fill)}.icon-button.ghost:focus-visible{color:var(--label);background-color:var(--fill)}.icon-button[aria-pressed=true]{color:var(--orange);background-color:color-mix(in sRGB, var(--orange) 14%, transparent)}.plan-dialog{border-style:none;max-width:calc(30rem - 40px);max-height:calc(100% - 40px);margin:auto;padding:20px}.plan-dialog:not(:modal){position:fixed;inset:0;overflow:hidden auto}.plan-dialog{inline-size:calc(100% - var(--spacing-xxl));color:var(--label);border-radius:var(--radius-l);background-color:var(--surface);box-shadow:var(--shadow-raised)}.plan-dialog[open]{gap:var(--spacing-l);display:grid}.plan-dialog::backdrop{-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem);background-color:#0000004d}.dialog-header{justify-content:space-between;align-items:center;gap:var(--spacing-m);display:flex}.dialog-hint{color:var(--label-muted);margin:0;font-size:.75rem}.dialog-title{letter-spacing:-.01em;margin:0;font-size:1.375rem;font-weight:700}.plan-fields{gap:var(--spacing-l);flex-wrap:wrap;display:flex}.plan-fields>*{flex:7.5rem}.entries{margin:0;padding:0;list-style:none}.empty-hint{padding:var(--spacing-xxxl) var(--spacing-xl);color:var(--label-muted);text-align:center;font-size:.9375rem}.empty-hint[hidden]{display:none}.empty-hint strong{color:var(--label);margin-block-end:var(--spacing-xs);font-size:1.0625rem;display:block}.entry{align-items:start;gap:var(--spacing-l);padding:var(--spacing-l);border-radius:var(--radius-l);background-color:var(--surface);box-shadow:var(--shadow-soft);display:flex}.entry.is-fixed{box-shadow:inset 0 0 0 .125rem var(--orange), var(--shadow-soft)}.entry .num{block-size:1.75rem;inline-size:1.75rem;color:var(--surface);background-color:var(--blue);border-radius:50%;flex:none;place-items:center;margin-block-start:var(--spacing-xxs);font-size:.875rem;font-weight:700;display:grid}.entry.is-fixed .num{background-color:var(--orange)}.entry.is-optional{opacity:.6}.entry.is-optional .num{color:var(--label-muted);background-color:var(--fill-strong)}.entry .flag{margin:var(--spacing-m) 0 0;color:var(--label-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600}.entry.is-done .num{background-color:var(--grey)}.entry.is-done .name{color:var(--label-muted);text-decoration:line-through}.entry .body{flex:1;min-inline-size:0}.entry .name{overflow-wrap:anywhere;margin:0;font-size:1rem;font-weight:600}.entry .address{margin:var(--spacing-xxs) 0 0;color:var(--label-muted);overflow-wrap:anywhere;font-size:.8125rem}.entry .chain-note{align-items:center;gap:var(--spacing-xs);margin:var(--spacing-m) 0 0;color:var(--label-muted);font-size:.75rem;font-weight:600;display:flex}.entry .chain-note svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;flex:none;block-size:.875rem;inline-size:.875rem}.entry .timing{margin:var(--spacing-m) 0 0;color:var(--label);font-size:.8125rem;font-weight:600}.entry.is-done .timing{color:var(--label-muted)}.entry .controls{grid-template-columns:repeat(2, var(--touch-target));gap:var(--spacing-xs);flex:none;display:grid}.field{gap:var(--spacing-xxs);color:var(--label-muted);flex-direction:column;margin:0;font-size:.75rem;display:flex}.field input{min-block-size:var(--touch-target);padding:var(--spacing-s) var(--spacing-m);border-radius:var(--radius-s);background-color:var(--fill);border:0;font-size:.9375rem}.app{flex-direction:column-reverse;block-size:100%;display:flex}@media screen and (width>=48em){.app{flex-direction:row}}.planner{max-block-size:52%;background-color:var(--background);border-block-start:var(--hairline) solid var(--separator);z-index:3;border-start-start-radius:var(--radius-l);border-start-end-radius:var(--radius-l);flex-direction:column;margin-block-start:calc(var(--spacing-xl) * -1);display:flex}@media screen and (width>=48em){.planner{border-block-start:0;border-inline-end:var(--hairline) solid var(--separator);border-radius:0;max-block-size:none;inline-size:24.5rem;max-inline-size:100%;margin-block-start:0}}.plan-scroll{padding:var(--spacing-xl) var(--spacing-xl) var(--spacing-xxxl);flex:1;overflow-y:auto}.map-area{isolation:isolate;flex:1;min-block-size:0;min-inline-size:0;position:relative}.map{isolation:isolate;background-color:var(--map-background);z-index:1;position:absolute;inset:0}.map-controls{padding-inline:var(--spacing-xl);z-index:2;grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:absolute;inset-block-end:var(--spacing-xxl);inset-inline:0}.map-controls .add-toggle{grid-column:2}.map-controls .menu{grid-column:3;justify-self:end}.map-controls .menu-panel{inset-block-start:auto;inset-block-end:calc(100% + var(--spacing-xs))}.map-controls .ghost{background-color:var(--surface-translucent);-webkit-backdrop-filter:blur(1.25rem);backdrop-filter:blur(1.25rem);box-shadow:var(--shadow-soft)}.map-marker{block-size:1.875rem;inline-size:1.875rem;color:var(--surface);border:.1875rem solid var(--surface);background-color:var(--blue);border-radius:50%;place-items:center;font-family:-apple-system,blinkmacsystemfont,sans-serif;font-size:.875rem;font-weight:700;display:grid;box-shadow:0 .125rem .375rem #0000004d}.map-marker.is-fixed{background-color:var(--orange)}.map-marker.is-done{background-color:var(--grey)}.map-marker.is-optional{color:var(--label-muted);background-color:var(--surface);border-color:var(--grey)}.menu{position:relative}.menu-panel{gap:var(--spacing-xxs);min-inline-size:12rem;padding:var(--spacing-xs);border-radius:var(--radius-m);background-color:var(--surface);box-shadow:var(--shadow-raised);z-index:4;display:grid;position:absolute;inset-block-start:calc(100% + var(--spacing-xs));inset-inline-end:0}.menu-panel[hidden]{display:none}.menu-panel button{align-items:center;gap:var(--spacing-m);min-block-size:2.25rem;padding-inline:var(--spacing-m);text-align:start;border-radius:var(--radius-s);font-size:.9375rem;display:flex}.menu-panel button:hover{background-color:var(--fill)}.menu-panel button:focus-visible{background-color:var(--fill)}.menu-panel button.destructive{color:var(--red)}.menu-panel button[aria-pressed=true]{color:var(--orange);font-weight:600}.menu-panel button:disabled{color:var(--label-faint);cursor:default;background-color:#0000}.menu-panel button svg{fill:currentColor;flex:none;block-size:1rem;inline-size:1rem}.search{position:relative}.place{color:var(--label);overflow-wrap:anywhere;margin-block-end:var(--spacing-xxs);font-size:.9375rem;display:block}.search-control{align-items:center;gap:var(--spacing-m);padding:var(--spacing-m) var(--spacing-l);border-radius:var(--radius-m);background-color:var(--fill);display:flex}.search-control:focus-within{outline:.1875rem solid var(--blue);outline-offset:.125rem}.search-control svg{block-size:1rem;inline-size:1rem;fill:var(--label-muted);flex:none}.search-control input{background-color:#0000;border:0;flex:1;min-inline-size:0;padding:0;font-size:1.0625rem}.search-control input:focus-visible{outline:none}.search-control input::placeholder{color:var(--label-muted)}.search-results{max-block-size:18rem;padding:var(--spacing-xs);border-radius:var(--radius-m);background-color:var(--surface);box-shadow:var(--shadow-raised);z-index:4;margin:0;list-style:none;position:absolute;inset-block-start:calc(100% + var(--spacing-s));inset-inline:0;overflow-y:auto}.search-results[hidden]{display:none}.search-results button{min-block-size:2.75rem;inline-size:100%;padding:var(--spacing-m) var(--spacing-l);text-align:start;border-radius:var(--radius-s);display:block}.search-results button:hover{background-color:var(--fill)}.search-results button:focus-visible{background-color:var(--fill)}.search-results .result-name{font-size:.9375rem;font-weight:500;display:block}.search-results .result-meta{color:var(--label-muted);font-size:.75rem;display:block}.segment{margin:var(--spacing-xs) 0 var(--spacing-xs) var(--spacing-xl);padding:var(--spacing-m) 0 var(--spacing-m) var(--spacing-xxl);min-block-size:1.5rem;color:var(--label-muted);border-inline-start:.125rem dashed var(--label-faint);font-size:.8125rem;position:relative}.segment.is-walk{border-inline-start:.125rem dotted var(--grey)}.segment .walk-total{align-items:center;gap:var(--spacing-xs);display:inline-flex}.segment .walk-total:before{content:"";border-block-start:.125rem dotted var(--grey);block-size:0;inline-size:1.125rem}.segment .journey{align-items:center;gap:var(--spacing-s);flex-wrap:wrap;margin:0;display:flex}.segment .legs{gap:var(--spacing-xs);margin:var(--spacing-s) 0 0;padding:0;list-style:none;display:grid}.segment .leg{align-items:baseline;gap:var(--spacing-s);display:flex}.segment .stops{overflow-wrap:anywhere;min-inline-size:0}.segment .times{color:var(--label);font-weight:600}.segment .warning{color:var(--red);margin-block-start:var(--spacing-xs);font-weight:600;display:block}.line-badge{padding:var(--spacing-xxs) var(--spacing-s);color:var(--surface);white-space:nowrap;background-color:var(--label-muted);border-radius:.3125rem;font-size:.75rem;font-weight:700;display:inline-block}.line-badge.walk{color:var(--label-muted);border:.0625rem dotted var(--grey);background-color:#0000}.line-badge.suburban{background-color:var(--suburban)}.line-badge.subway{background-color:var(--subway)}.line-badge.tram{background-color:var(--tram)}.line-badge.bus{background-color:var(--bus)}.line-badge.ferry{background-color:var(--ferry)}.line-badge:is(.express,.regional){background-color:var(--train)}.status{min-block-size:1.25rem;padding:0 var(--spacing-xl) var(--spacing-l);color:var(--label-muted);margin:0;font-size:.8125rem}.status.has-error{color:var(--red);font-weight:600}