:root{--vv-ground:#0D0F0E;--vv-panel:#1A1E1B;--vv-map:#12150F;--vv-chat:#141816;--vv-line:#2A2E2B;--vv-line-2:#1A1E1B;--vv-text:#F2F3F0;--vv-muted:#A7ADA6;--vv-lime:#CCFF3B;--vv-flare:#FF6B3D;--vv-surface-paved:#3987E5;--vv-surface-gravel:#C98500;--vv-surface-ground:#199E70;--vv-ground-light:#F2F3F0;--vv-text-light:#0D0F0E;--vv-flare-light:#C4451F;--vv-sans:"Helvetica Neue",Helvetica,sans-serif;--vv-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;--vv-s1:6px;--vv-s2:9px;--vv-s3:12px;--vv-s4:14px;--vv-s5:16px;--vv-s6:18px;--vv-s7:20px;--vv-s8:22px;--vv-s9:26px;--vv-s10:34px;--vv-s11:46px;--vv-radius:0}.vv-display-xl{font:700 52px/.95 var(--vv-sans)}.vv-display,.vv-display-xl{letter-spacing:-.05em;text-transform:uppercase;color:var(--vv-text)}.vv-display{font:700 44px/.95 var(--vv-sans)}.vv-title{font:700 28px/.98 var(--vv-sans);letter-spacing:-.045em;text-transform:uppercase;color:var(--vv-text)}.vv-figure{font:700 25px/1 var(--vv-sans);letter-spacing:-.04em;color:var(--vv-text)}.vv-figure-key{color:var(--vv-lime)}.vv-subtitle{font:600 19px/1.2 var(--vv-sans);letter-spacing:-.02em;color:var(--vv-text)}.vv-body{font:400 13.5px/1.55 var(--vv-sans);color:var(--vv-text);text-wrap:pretty}.vv-body-sm{font:400 12px/1.5 var(--vv-sans);color:var(--vv-muted)}.vv-label{font:400 9.5px/1 var(--vv-sans);letter-spacing:.11em;text-transform:uppercase;color:var(--vv-muted)}.vv-label-hazard{color:var(--vv-flare)}.vv-data{font:400 11.5px/1.5 var(--vv-mono);color:var(--vv-text)}.vv-data-key{color:var(--vv-muted)}.vv-hairline{border-top:1px solid var(--vv-line)}.vv-hairline-2{border-top:1px solid var(--vv-line-2)}.vv-panel{background:var(--vv-panel)}.vv-btn{display:inline-flex;align-items:center;justify-content:center;padding:19px var(--vv-s6);border:0;border-radius:var(--vv-radius);background:var(--vv-lime);color:var(--vv-ground);font:600 12.5px/1 var(--vv-sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.vv-btn-secondary{background:transparent;color:var(--vv-text);border-left:1px solid var(--vv-line)}.vv-hazard{display:flex;border-top:1px solid var(--vv-line)}.vv-hazard-bar{flex:none;width:6px;background:var(--vv-flare)}.vv-hazard-body{padding:15px var(--vv-s6)}.vv-btn:focus-visible,.vv-focusable:focus-visible{outline:2px solid var(--vv-lime);outline-offset:2px}.vv-coverage-dense{opacity:1}.vv-coverage-thin{opacity:.75}.vv-coverage-none{opacity:.45}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--vv-ground);color:var(--vv-text);font:400 13.5px/1.55 var(--vv-sans)}::selection{background:var(--vv-lime);color:var(--vv-ground)}:focus-visible{outline:2px solid var(--vv-lime);outline-offset:2px}.shell{display:flex;flex-direction:column;height:100vh;height:100dvh;max-width:720px;margin:0 auto;padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background:var(--vv-ground);border-left:1px solid var(--vv-line);border-right:1px solid var(--vv-line)}.shell.centered{justify-content:center;align-items:center}.stage{position:relative;overflow:clip}.chat,.stage{flex:1 1;min-height:0;display:flex;flex-direction:column}.app-header{flex:none;height:54px;background:var(--vv-panel);display:flex;align-items:center;gap:var(--vv-s2);padding:0 var(--vv-s6);border-bottom:1px solid var(--vv-line)}.wordmark{margin:0;font:700 18px/1 var(--vv-sans);letter-spacing:-.05em;text-transform:lowercase;color:var(--vv-text)}.auth h1 .via,.wordmark .via{color:var(--vv-lime)}.app-header .spacer{flex:1 1}.app-header .account{max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-saved{flex:none;display:inline-flex;align-items:center;padding:4px;border:0;background:transparent;color:var(--vv-muted);cursor:pointer}.header-saved:hover{color:var(--vv-text)}.header-saved[aria-pressed=true]{color:var(--vv-lime)}.header-action{flex:none;padding:7px var(--vv-s3);border:0;background:var(--vv-lime);color:var(--vv-ground);font:400 9.5px/1 var(--vv-sans);letter-spacing:.11em;text-transform:uppercase;cursor:pointer}.messages{flex:1 1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:var(--vv-chat)}.turn{border-bottom:1px solid var(--vv-line)}.turn-user{background:var(--vv-panel);border:1px solid var(--vv-line);margin:var(--vv-s3) var(--vv-s4);padding:var(--vv-s3) var(--vv-s4)}.turn-assistant{padding:var(--vv-s5) var(--vv-s7)}.turn-label{display:block;margin-bottom:var(--vv-s1)}.turn p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.suggestions{display:flex;flex-wrap:wrap;gap:var(--vv-s2);padding:var(--vv-s4) var(--vv-s7) var(--vv-s5)}.suggestions button{padding:var(--vv-s1) var(--vv-s3);border:1px solid var(--vv-line);background:transparent;color:var(--vv-text);font:400 12px/1.5 var(--vv-sans);cursor:pointer}.suggestions button:hover:enabled{border-color:var(--vv-lime)}.suggestions button:disabled{color:var(--vv-muted);cursor:not-allowed}.assumptions{display:flex;flex-direction:column;gap:var(--vv-s1);padding:var(--vv-s2) var(--vv-s7) 0}.assumptions span{color:var(--vv-muted);font:400 11px/1.5 var(--vv-sans)}.assumptions span:before{content:"· "}.reading{display:block;padding:var(--vv-s4) var(--vv-s7);border-bottom:1px solid var(--vv-line)}.reading>.vv-label{display:block;margin-bottom:var(--vv-s2)}.reading-pending{margin:0}.reading-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:3px var(--vv-s4);gap:3px var(--vv-s4)}.reading-row{display:flex;gap:var(--vv-s2);min-width:0}.reading-value{color:var(--vv-lime);overflow-wrap:anywhere}.reading-edit{display:inline-block;margin:var(--vv-s3) 0 0;padding-bottom:2px;border-bottom:1px solid var(--vv-lime)}.route-card{border:1px solid var(--vv-line);border-left:3px solid transparent;margin:0 var(--vv-s4) var(--vv-s3);background:var(--vv-ground);cursor:pointer}.route-card .vv-title{font-size:18px}.route-card .vv-figure{font-size:16px}.route-card .vv-subtitle{font-size:13px}.route-card:hover .route-name{color:var(--vv-lime)}.route-card[data-open]{border-left-color:var(--vv-lime);cursor:default}.route-card[data-open]:hover .route-name{color:inherit}.route-kind-row{display:flex;align-items:center;justify-content:space-between}.route-kind,.route-kind-row{padding:var(--vv-s4) var(--vv-s5) 0}.route-kind{display:block}.route-kind-row .route-kind{display:inline;padding:0}.route-kind-lead{display:inline-flex;align-items:center;gap:var(--vv-s2);min-width:0}.card-close{flex:none;width:24px;height:24px;padding:0;border:1px solid var(--vv-line);background:transparent;color:var(--vv-text);font:400 12px/1 var(--vv-sans);cursor:pointer}.card-close:hover{border-color:var(--vv-lime);color:var(--vv-lime)}.route-kind+.route-name,.route-kind-row+.route-name{padding-top:var(--vv-s1)}.save-toggle{display:inline-flex;padding:0;border:0;background:transparent;color:var(--vv-muted);cursor:pointer}.save-toggle:hover{color:var(--vv-text)}.save-toggle[aria-pressed=true]{color:var(--vv-lime)}.route-name{margin:0;padding:var(--vv-s4) var(--vv-s5) 0}.figures{display:flex;align-items:flex-end;gap:var(--vv-s4);padding:var(--vv-s3) var(--vv-s5)}.figure{flex:1 1;min-width:0}.figure.grade{flex:none}.figure .unit{display:block;margin-top:var(--vv-s1)}.key-facts{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--vv-line-2)}.key-facts>div{padding:var(--vv-s3) var(--vv-s5);min-width:0}.key-facts>div+div{border-left:1px solid var(--vv-line-2)}.key-facts .fact{margin:var(--vv-s1) 0 0;overflow-wrap:anywhere}.poi-list{display:flex;flex-wrap:wrap;gap:var(--vv-s1) var(--vv-s3);margin-top:var(--vv-s1)}.poi{display:inline-flex;align-items:center;gap:5px;color:var(--vv-text)}.route-note{margin:0;padding:0 var(--vv-s7) var(--vv-s5)}.route-link{display:inline-block;margin:0 var(--vv-s7) var(--vv-s5);padding-bottom:2px;color:var(--vv-text);text-decoration:none;border-bottom:1px solid var(--vv-lime)}.detail-toggle,.show-more{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--vv-s3) var(--vv-s7);border:0;border-top:1px solid var(--vv-line-2);background:transparent;color:var(--vv-text);font:400 9.5px/1 var(--vv-sans);letter-spacing:.11em;text-transform:uppercase;cursor:pointer}.detail-toggle .sign,.show-more .sign{color:var(--vv-lime);font-size:13px}.show-more{width:auto;justify-content:center;gap:var(--vv-s2);margin:0 var(--vv-s4) var(--vv-s4);border:1px solid var(--vv-line)}.show-more:hover{border-color:var(--vv-lime)}.detail-toggle:hover span:first-child,.show-more:hover span:first-child{color:var(--vv-lime)}.route-detail{background:var(--vv-panel);padding:var(--vv-s3) var(--vv-s7) var(--vv-s4)}.detail-figures{display:flex;gap:var(--vv-s6);flex-wrap:wrap;margin-bottom:var(--vv-s3)}.detail-figure{display:flex;flex-direction:column;gap:var(--vv-s1)}.detail-note{margin:0 0 var(--vv-s3)}.detail-pois{margin-bottom:var(--vv-s3)}.detail-pois .poi-list{margin-top:var(--vv-s1)}.profile-caveat{margin:var(--vv-s2) 0 0;color:var(--vv-flare)}.route-line1{display:flex;align-items:baseline;gap:var(--vv-s3);margin:0 0 var(--vv-s1)}.route-line1 .route-name{flex:1 1;min-width:0;margin:0}.route-figure{white-space:nowrap}.route-figure .unit{margin-left:2px}.route-line2{display:flex;flex-wrap:wrap;align-items:center;gap:var(--vv-s2) var(--vv-s3);margin:0 0 var(--vv-s2);color:var(--vv-muted)}.route-line2 .detail-toggle{margin-left:auto;margin-bottom:0}.exigent{color:var(--vv-flare)}.exigent,.grade{white-space:nowrap}.grade{align-items:center;gap:var(--vv-s1)}.grade,.grade-dots{display:inline-flex}.grade-dots{gap:2px}.grade-dots i{width:5px;height:5px;background:var(--vv-line)}.grade-dots i.on{background:var(--vv-text)}.grade-code{color:var(--vv-text)}.route-marks{display:flex;align-items:center;gap:var(--vv-s2)}.route-marks .train{display:inline-flex;color:var(--vv-muted)}.detail-block{margin:0 0 var(--vv-s3)}.line-note{margin:0 0 var(--vv-s2);color:var(--vv-muted)}.line-note-retry{color:var(--vv-flare)}.map-note{position:absolute;left:var(--vv-s3);bottom:var(--vv-s9);z-index:2;max-width:70%;margin:0;padding:var(--vv-s1) var(--vv-s3);background:var(--vv-panel);border:1px solid var(--vv-line);color:var(--vv-text)}.vv-hazard-body .vv-label{display:block;margin-bottom:var(--vv-s1)}.vv-hazard-body p{margin:0}.sources{border-top:1px solid var(--vv-line-2)}.sources-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--vv-s3);padding:var(--vv-s3) var(--vv-s7);border:0;background:transparent;color:var(--vv-text);font:400 9.5px/1 var(--vv-sans);letter-spacing:.11em;text-transform:uppercase;cursor:pointer}.sources-toggle .sign{color:var(--vv-lime);font-size:13px;line-height:1}.sources-body{background:var(--vv-panel);padding:var(--vv-s3) var(--vv-s7) var(--vv-s4)}.source-row{display:grid;grid-template-columns:74px 1fr;grid-gap:var(--vv-s3);gap:var(--vv-s3);padding:3px 0}.source-row .value{overflow-wrap:anywhere}.source-row a{color:inherit}.never-merged{color:var(--vv-flare)}.sources-note{margin:var(--vv-s3) 0 0;padding-top:var(--vv-s3);border-top:1px solid var(--vv-line)}.feedback{padding:var(--vv-s2) var(--vv-s7) var(--vv-s4);border-bottom:1px solid var(--vv-line)}.route-detail .feedback{padding:var(--vv-s3) 0 0;margin-top:var(--vv-s3);border-bottom:0;border-top:1px solid var(--vv-line)}.feedback-row{display:flex;align-items:center;gap:var(--vv-s3)}.feedback-row .vv-label,.feedback-thumb{color:var(--vv-muted)}.feedback-thumb{padding:var(--vv-s1) var(--vv-s2);border:1px solid var(--vv-line);background:transparent;font:400 13px/1 var(--vv-sans);cursor:pointer}.feedback-thumb:hover{color:var(--vv-text);border-color:var(--vv-lime)}.feedback-thumb[aria-pressed=true]{color:var(--vv-ground);background:var(--vv-lime);border-color:var(--vv-lime)}.feedback-thanks{color:var(--vv-muted)}.feedback-why{display:flex;flex-direction:column;align-items:flex-end;gap:var(--vv-s2);margin-top:var(--vv-s3)}.feedback-why input{align-self:stretch;padding:var(--vv-s1) var(--vv-s3);border:1px solid var(--vv-line);background:transparent;color:var(--vv-text);font:400 12px/1.5 var(--vv-sans)}.feedback-why input::placeholder{color:var(--vv-muted)}.feedback-why button{padding:var(--vv-s1) var(--vv-s3);border:1px solid var(--vv-line);background:transparent;color:var(--vv-text);font:400 12px/1.5 var(--vv-sans);cursor:pointer}.feedback-why button:hover:enabled{border-color:var(--vv-lime)}.feedback-why button:disabled{color:var(--vv-muted);cursor:not-allowed}.notice{display:flex;border-bottom:1px solid var(--vv-line)}.notice-bar{flex:none;width:6px;background:var(--vv-flare)}.notice-body{padding:15px var(--vv-s7)}.notice-body .vv-label{display:block;margin-bottom:var(--vv-s1)}.notice-body p{margin:0}.composer{flex:none;display:flex;background:var(--vv-panel);min-height:var(--vv-composer-h,52px);border-top:1px solid var(--vv-line)}.composer input{flex:1 1;min-width:0;padding:0 var(--vv-s6);border:0;background:transparent;color:var(--vv-text);font:400 13.5px/1.55 var(--vv-sans)}.composer input::placeholder{color:var(--vv-muted)}@media (pointer:coarse){.auth input,.composer input{font-size:16px}}.composer input:focus-visible{outline-offset:-2px}.composer .clear{flex:none;padding:0 var(--vv-s4);border:0;border-left:1px solid var(--vv-line);background:transparent;cursor:pointer}.composer .clear:hover{color:var(--vv-lime)}.composer .clear:disabled{color:var(--vv-muted);cursor:not-allowed}.composer .ask{flex:none;padding:19px var(--vv-s6);border:0;background:var(--vv-lime);color:var(--vv-ground);font:600 12.5px/1 var(--vv-sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.composer .ask:disabled{background:var(--vv-panel);color:var(--vv-muted);cursor:not-allowed}.card-map{position:relative;height:240px;margin:0 calc(-1 * var(--vv-s7)) var(--vv-s3);background:var(--vv-map);border-bottom:1px solid var(--vv-line)}.profile{position:relative;padding-top:var(--vv-s5)}.profile svg{display:block;width:100%;height:auto;overflow:visible}.profile .curve{fill:none;stroke:var(--vv-lime);stroke-width:2;vector-effect:non-scaling-stroke}.profile .area{fill:var(--vv-lime);opacity:.12}.profile .hatch{fill:var(--vv-muted)}.profile .hover line{stroke:var(--vv-text);stroke-width:1;vector-effect:non-scaling-stroke}.profile .hover circle{fill:var(--vv-ground);stroke:var(--vv-text);stroke-width:2;vector-effect:non-scaling-stroke}.profile-tip{position:absolute;top:0;transform:translateX(-50%);padding:2px var(--vv-s2);border:1px solid var(--vv-line);background:var(--vv-ground);color:var(--vv-text);white-space:nowrap;pointer-events:none}.profile-legend{display:flex;flex-wrap:wrap;gap:var(--vv-s4);margin:var(--vv-s2) 0 var(--vv-s3);color:var(--vv-muted)}.legend-chip{display:inline-flex;align-items:center;gap:var(--vv-s1)}.swatch{width:10px;height:10px}.surface-paved{fill:var(--vv-surface-paved);background:var(--vv-surface-paved)}.surface-gravel{fill:var(--vv-surface-gravel);background:var(--vv-surface-gravel)}.surface-ground{fill:var(--vv-surface-ground);background:var(--vv-surface-ground)}.swatch.surface-untagged{background:repeating-linear-gradient(45deg,var(--vv-muted) 0 2px,transparent 2px 4px)}.map-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;padding:var(--vv-s3) var(--vv-s5);background:var(--vv-ground);border:1px solid var(--vv-line);text-align:center;pointer-events:none}.card-map .maplibregl-ctrl-bottom-right{left:0;width:100%}.card-map .maplibregl-ctrl-bottom-right .maplibregl-ctrl{margin:0}.card-map .maplibregl-ctrl.maplibregl-ctrl-attrib{width:100%;padding:var(--vv-s1) var(--vv-s6);border-radius:0;border-top:1px solid var(--vv-line);background:var(--vv-ground);color:var(--vv-muted);font:400 12px/1.5 var(--vv-sans)}.card-map .maplibregl-ctrl-attrib a{color:var(--vv-muted)}.card-map .maplibregl-ctrl-attrib a:hover{color:var(--vv-text)}.card-map .maplibregl-ctrl-group,.card-map .maplibregl-ctrl-group:not(:empty){background:var(--vv-ground);border:1px solid var(--vv-line);border-radius:0;box-shadow:none}.card-map .maplibregl-ctrl-group button{background:transparent}.card-map .maplibregl-ctrl-group button+button{border-top:1px solid var(--vv-line)}.card-map .maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert(1)}.auth{width:min(360px,90vw);display:flex;flex-direction:column;background:var(--vv-panel);border:1px solid var(--vv-line)}.auth-head{display:flex;align-items:center;gap:var(--vv-s2);padding:var(--vv-s7) var(--vv-s7) 0}.auth h1{margin:0;font:700 18px/1 var(--vv-sans);letter-spacing:-.05em;text-transform:lowercase}.auth .intro{margin:var(--vv-s3) 0 0;padding:0 var(--vv-s7)}.auth form{display:flex;flex-direction:column;margin-top:var(--vv-s7);border-top:1px solid var(--vv-line)}.auth input{padding:var(--vv-s4) var(--vv-s7);border:0;border-bottom:1px solid var(--vv-line);background:transparent;color:var(--vv-text);font:400 13.5px/1.55 var(--vv-sans)}.auth input::placeholder{color:var(--vv-muted)}.auth input:focus-visible{outline-offset:-2px}.auth .primary{width:100%;padding:19px var(--vv-s6);border:0;background:var(--vv-lime);color:var(--vv-ground);font:600 12.5px/1 var(--vv-sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.auth .primary:disabled{background:var(--vv-panel);color:var(--vv-muted);cursor:not-allowed}.auth .switch{padding:var(--vv-s4) var(--vv-s7);border:0;border-top:1px solid var(--vv-line);background:transparent;color:var(--vv-text);font:400 12px/1.5 var(--vv-sans);text-align:left;cursor:pointer}.auth .switch:hover{color:var(--vv-lime)}.auth .notice{border-bottom:0;border-top:1px solid var(--vv-line)}