/* Tokyo transit visual layer: route maps, station signage, and evening city color. */
:root{--ink:#17202a;--muted:#586773;--paper:#f4f6f4;--green:#087b72;--green-dark:#07544f;--mint:#d9efeb;--purple:#6458a8;--yellow:#f5bf3e;--line:#d9e0df;--tokyo-navy:#101c35;--tokyo-pink:#e85a86;--tokyo-blue:#2b79c2;--tokyo-orange:#ef7b41}
body{background:var(--paper);background-image:linear-gradient(rgba(16,28,53,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(16,28,53,.025) 1px,transparent 1px);background-size:32px 32px}
.topbar{position:relative;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:0;box-shadow:0 1px 0 rgba(16,28,53,.08)}
.topbar:after{content:'';position:absolute;left:0;right:0;bottom:0;height:4px;background:linear-gradient(90deg,var(--tokyo-pink) 0 24%,var(--tokyo-blue) 24% 48%,var(--tokyo-orange) 48% 72%,var(--green) 72% 100%)}
.brand{font-family:'Space Grotesk',sans-serif;letter-spacing:-.06em}.brand-mark{background:var(--tokyo-navy);border-radius:10px;position:relative;width:32px;height:32px;box-shadow:0 4px 10px rgba(16,28,53,.18)}.brand-mark:after{content:'';position:absolute;width:7px;height:7px;right:-3px;top:-3px;background:var(--tokyo-pink);border:2px solid #fff;border-radius:50%}.brand-mark svg{width:24px;height:24px;fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.brand-mark svg .travel-motion{stroke:var(--tokyo-blue);stroke-width:2.2}.brand-mark svg .travel-pin{fill:var(--tokyo-pink);stroke:#fff;stroke-width:1.6}.brand-mark svg .travel-arrow{fill:#fff;stroke:none}.brand>span:last-child span{color:var(--tokyo-pink)}
.nav-link{font-size:12px;text-transform:uppercase;letter-spacing:.08em}.nav-link:hover,.nav-link.active{color:var(--tokyo-navy);border-color:var(--tokyo-pink)}
.hero-copy h1{color:var(--tokyo-navy)}.hero-copy h1 em{color:var(--tokyo-pink)}.eyebrow{color:var(--tokyo-blue)}.eyebrow-dot{background:var(--tokyo-pink)}.trust-icon{background:#e9effb;color:var(--tokyo-blue)}
.hero-visual{background:var(--tokyo-navy);box-shadow:0 20px 50px rgba(16,28,53,.19);border:7px solid #fff}.hero-visual:before{background:radial-gradient(circle at 78% 18%,rgba(232,90,134,.3),transparent 23%),radial-gradient(circle at 22% 90%,rgba(43,121,194,.28),transparent 31%),repeating-linear-gradient(24deg,transparent 0 31px,rgba(146,203,204,.13) 32px 33px)}.map-orbit{border-color:rgba(142,219,210,.3)}.map-lines i{background:rgba(226,117,157,.75);box-shadow:0 0 9px rgba(232,90,134,.25)}.map-lines i:nth-child(2),.map-lines i:nth-child(4){background:rgba(104,179,229,.8)}.map-lines i:nth-child(3){background:rgba(244,190,62,.85)}.map-label{color:#b6dcdf}.pin-main{background:var(--tokyo-pink);box-shadow:0 0 0 8px rgba(232,90,134,.18),0 8px 18px rgba(0,0,0,.3)}.pin-small{background:var(--tokyo-navy);border-color:#8de1d0}.map-caption{background:rgba(255,255,255,.95);border-left:4px solid var(--tokyo-pink)}
.planner-card,.form-page{border-top:4px solid var(--tokyo-navy)}.card-heading h2,.subpage-header h1,.form-page h1{color:var(--tokyo-navy)}.section-number{color:var(--tokyo-pink)}.live-pill i{background:var(--tokyo-pink)}.location-field:focus-within{border-color:var(--tokyo-blue);box-shadow:0 0 0 3px rgba(43,121,194,.12)}.start-dot{border-color:var(--tokyo-pink)}.end-pin{color:var(--tokyo-pink)}.field-connector{background:#c2d0d4}.field-connector:after{background:var(--tokyo-pink)}
.chip{background:#e5f4f1;color:var(--green-dark)}.text-button,.back-button{color:var(--tokyo-blue)}.primary-button{background:var(--tokyo-navy);box-shadow:0 8px 18px rgba(16,28,53,.2)}.primary-button:hover{background:#23365e}.outline-button{color:var(--tokyo-blue)}
.quick-card:hover{border-color:#a9c8df}.quick-icon.purple{background:#ece9fb;color:var(--purple)}.quick-icon.green{background:#e5f4f1;color:var(--green)}
.route-card.selected{border-color:var(--tokyo-pink)}.route-card.selected:after{background:var(--tokyo-pink)}.route-card.selected .details-button{background:var(--tokyo-navy)}.route-time{color:var(--tokyo-navy)}.confidence{color:var(--green)}.route-map,.station-map{background:linear-gradient(135deg,#dce9f4,#edf2ec);border-color:#c5d8df}.large-map-grid{background:repeating-linear-gradient(20deg,transparent 0 46px,rgba(43,121,194,.18) 47px 49px),repeating-linear-gradient(111deg,transparent 0 59px,rgba(232,90,134,.12) 60px 62px)}.route-path{background:var(--tokyo-pink)}.path-two{background:var(--tokyo-blue)}.path-three{background:#aab5b7}.from-map-pin{background:var(--tokyo-navy)}.to-map-pin{background:var(--tokyo-pink)}.large-map .map-badge{color:var(--tokyo-blue)}
.station-card,.facility-card,.detail-section,.theme-button{border-top:3px solid #d6e6ea}.station-card:hover,.facility-card:hover,.theme-button:hover,.theme-button.active{border-color:#9dc6d9;box-shadow:0 9px 25px rgba(16,28,53,.08)}.station-illustration{background:var(--tokyo-navy)}.station-illustration:before{background:#e85a86;box-shadow:0 -27px 0 #2b79c2,0 27px 0 #f1bc3c}.station-illustration:after{color:#fff}.station-card h3,.facility-card h3{color:var(--tokyo-navy)}.facility-icon,.theme-button>span{background:#e8f2f7;color:var(--tokyo-blue)}.status-ok{color:var(--green)}
.station-elevator{border-color:var(--tokyo-pink);color:var(--tokyo-pink)}.station-route-line{background:var(--tokyo-pink)}.floor{border-color:rgba(43,121,194,.35)!important}.station-map-note{border-left:4px solid var(--tokyo-pink)}
.route-steps{margin:0 0 15px;padding:12px 14px 12px 30px;background:#f1f7f5;border-radius:8px;color:#41534e;font-size:11px;display:grid;gap:7px}.route-steps li::marker{color:var(--tokyo-pink);font-weight:800}
.route-preference-banner{max-width:1180px;margin:-20px auto 22px;padding:13px 16px;background:#fff;border:1px solid #d4e4e7;border-left:4px solid var(--tokyo-pink);border-radius:9px;display:flex;align-items:center;gap:13px;flex-wrap:wrap}.preference-banner-label{font-size:10px;letter-spacing:.1em;font-weight:800;color:var(--tokyo-blue)}.route-preference-chip{display:inline-block;background:#eaf4f5;color:var(--green-dark);border-radius:15px;padding:5px 9px;margin:2px 4px 2px 0;font-size:10px;font-weight:700}
.modal-backdrop .modal{max-height:calc(100vh - 32px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.language-switcher{position:relative;flex-shrink:0}
.language-menu{position:absolute;z-index:20;top:calc(100% + 9px);right:0;min-width:144px;padding:6px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px rgba(16,28,53,.18)}
.language-menu[hidden]{display:none}
.language-menu button{display:block;width:100%;min-height:42px;padding:9px 12px;text-align:left;color:var(--ink);background:transparent;border-radius:6px;font-weight:700}
.language-menu button:hover,.language-menu button:focus-visible,.language-menu button[aria-pressed="true"]{background:#e8f2f7;color:var(--tokyo-navy)}
.language-button:focus-visible,.language-menu button:focus-visible{outline:3px solid var(--tokyo-blue);outline-offset:2px}
html[lang="ja"] body{font-family:"Noto Sans JP","Yu Gothic",Meiryo,sans-serif}
html[lang="ja"] .nav-link{letter-spacing:0;font-size:13px}
html[lang="ja"] .route-card.selected:after{content:"推奨"}
#preferencesModal{overflow-y:auto;-webkit-overflow-scrolling:touch}
#preferencesModal .modal{display:flex;flex-direction:column;height:min(720px,calc(100vh - 32px));height:min(720px,calc(100dvh - 32px));max-height:none;overflow:hidden}
#preferencesModal .modal>.eyebrow,#preferencesModal .modal>h2,#preferencesModal .modal>.modal-copy,#preferencesModal .modal>.primary-button{flex-shrink:0}
#preferencesModal .preference-options{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scrollbar-width:thin;padding-right:4px}
.contributor-callout{border-left:4px solid var(--tokyo-pink)}.contributor-callout>span,.auth-mark{background:var(--tokyo-navy)}.auth-tab.active{color:var(--tokyo-pink);border-color:var(--tokyo-pink)}.footer{background:rgba(16,28,53,.04);border-top-color:#cad9dc}.footer strong{color:var(--tokyo-navy)}
.high-contrast{--tokyo-navy:#000;--tokyo-pink:#a4003d;--tokyo-blue:#004a8f}
html,body{max-width:100%;overflow-x:hidden}img,svg{max-width:100%}button,a,input,select,textarea{touch-action:manipulation}.nav-link,.primary-button,.outline-button,.details-button,.quick-card,.theme-button,.back-button{min-height:44px}.primary-button,.outline-button,.details-button{display:flex;align-items:center;justify-content:center}.subpage-lede,.route-card p,.facility-card p,.form-disclaimer{overflow-wrap:anywhere}
.mobile-menu-button{display:none;background:var(--tokyo-navy);color:#fff;border-radius:8px;padding:9px 12px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;min-height:40px}.mobile-menu-button span{font-size:15px;margin-left:5px}
@media(max-width:620px){.topbar{gap:10px;z-index:10}.brand{min-width:0;font-size:18px}.top-actions{flex-shrink:0}.icon-button{font-size:20px}.language-button{font-size:12px}.avatar{width:32px;height:32px}.mobile-menu-button{display:block;order:2}.main-nav{display:none;position:absolute;z-index:8;top:76px;left:5%;right:5%;margin:0;padding:8px;background:rgba(255,255,255,.98);border:1px solid var(--line);border-top:3px solid var(--tokyo-pink);border-radius:12px;box-shadow:0 16px 35px rgba(16,28,53,.18)}.main-nav.mobile-open{display:grid;gap:0}.main-nav .nav-link{padding:12px 14px;border-bottom:1px solid #edf0ef;min-height:44px}.main-nav .nav-link:last-child{border-bottom:0}.hero-grid{width:100%}.hero-copy h1{font-size:clamp(43px,13vw,56px)}.hero-lede{max-width:100%}.map-caption{right:12px;bottom:12px}.map-caption strong{font-size:16px}.map-caption span{font-size:10px}.planner-card{width:100%;overflow:hidden}.card-heading h2{font-size:23px}.location-field input{font-size:14px}.preference-summary{width:100%}.preference-summary .chip{margin-bottom:5px}.route-card{min-width:0}.route-top{align-items:flex-start}.route-time{font-size:20px;white-space:nowrap}.route-metrics{gap:8px}.route-note{align-items:flex-start}.station-map{min-height:370px}.detail-actions{flex-direction:column}.detail-actions>*{width:100%}.form-page{width:100%;overflow:hidden}.auth-modal{max-height:calc(100vh - 30px);overflow:auto}.footer-links{width:100%}}
@media(max-width:390px){.topbar{padding-left:4%;padding-right:4%}.brand{font-size:16px;gap:7px}.brand-mark{width:29px;height:29px}.brand-mark svg{width:21px;height:21px}.icon-button{display:none}.language-button{padding:0;font-size:11px}.view{padding-left:4%;padding-right:4%}.hero-visual{height:220px}.planner-card{padding:20px 16px}.quick-card{padding:13px}.subpage-header h1{font-size:34px}.detail-header h1,.form-page h1{font-size:37px}.route-time{font-size:18px}.route-metrics span{font-size:10px}.modal{padding:25px 16px}.auth-tabs{grid-template-columns:1fr}.auth-tab{min-height:40px}.footer{padding-left:4%;padding-right:4%}}
.hero-visual.transit-map-visual{height:auto;margin:0;overflow:hidden;background:#fff}
.hero-visual.transit-map-visual:before{display:none}
.transit-map-visual>a{display:block;background:#fff}
.transit-map-visual>a:focus-visible{outline:3px solid var(--tokyo-blue);outline-offset:-3px}
.transit-map-visual img{display:block;width:100%;height:auto;object-fit:contain}
.transit-map-visual figcaption{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:13px 16px;background:#fff;color:var(--tokyo-navy);font-size:12px}
.transit-map-visual figcaption strong{font-weight:800}
.transit-map-visual figcaption span{color:var(--tokyo-blue);font-weight:700;text-align:right}
.transit-map-visual figcaption small{grid-column:1/-1;color:var(--muted);font-size:11px}
@media(max-width:620px){.transit-map-visual figcaption{grid-template-columns:1fr}.transit-map-visual figcaption span{text-align:left}.transit-map-visual figcaption small{grid-column:1}}
.route-scope-note{margin:2px 0 16px;color:var(--muted);font-size:12px;line-height:1.45}
.routes-layout{grid-template-columns:minmax(0,1.35fr) minmax(260px,.8fr);align-items:start}
.route-option{padding:22px;border-top:4px solid var(--tokyo-blue)}
.route-option.selected{border-top-color:var(--tokyo-pink)}
.route-option.selected:after{display:none}
.route-mode{display:inline-block;margin-bottom:8px;padding:3px 8px;border-radius:20px;background:#e8f2f7;color:var(--tokyo-blue);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.route-transfer-count{white-space:nowrap;color:var(--tokyo-navy);font-size:12px}
.route-option .route-top{gap:14px;align-items:flex-start}
.route-time-estimate{flex:0 0 auto;display:grid;gap:2px;min-width:120px;padding:9px 12px;border-radius:10px;background:#e8f2f7;color:var(--tokyo-navy);text-align:right}
.route-time-estimate span{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.route-time-estimate strong{font:700 21px 'Space Grotesk',sans-serif;white-space:nowrap}
.route-time-estimate small{font-size:10px}
.route-time-note{margin:10px 0 0;color:var(--muted);font-size:11px}
.bus-caution .bus-time{font-weight:700;color:var(--tokyo-navy)}
.route-caution{margin:14px 0;padding:11px 12px;border-left:3px solid var(--tokyo-pink);background:#fff6f8;color:#4c5360;line-height:1.5}
.route-report-notes{margin:15px 0;padding:14px;border:1px solid #e8bd86;border-left:4px solid #ad6b12;border-radius:10px;background:#fffaf2}
.route-option .route-report-notes h4{margin:0 0 5px;font-size:13px;color:#493a29}
.route-report-notes .route-report-warning{margin:0 0 10px;font-size:11px;line-height:1.45;color:#6b5640}
.route-report-notes ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.route-report-notes li{padding:10px;background:#fff;border:1px solid #ead6b9;border-radius:8px;overflow-wrap:anywhere}
.route-report-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 10px;font-size:11px}
.route-report-meta strong{color:#6e470c}.route-report-meta span{color:var(--muted)}
.route-report-notes li p{margin:6px 0 0;font-size:12px;line-height:1.45;white-space:pre-wrap}
.route-report-location{font-weight:700;color:var(--tokyo-navy)}
.required-fields-note{margin:0;color:var(--muted);font-size:12px}
.required-mark{color:#a52946;font-weight:800;font-size:16px;line-height:1}
.route-option h4{margin:17px 0 8px;font-size:12px;color:var(--tokyo-navy)}
.preference-fit-list{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:0 0 17px;padding:0}
.pref-fit{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px;border:1px solid #e1e7e8;border-radius:7px;font-size:11px;line-height:1.3}
.pref-fit span{min-width:0}.pref-fit strong{flex-shrink:0;font-size:10px;color:var(--tokyo-blue)}
.pref-fit-check strong{color:#9a6200}.pref-fit-no strong{color:#aa2946}.pref-fit-na strong{color:var(--muted)}
.route-option details{margin:13px 0}.route-option summary{cursor:pointer;color:var(--tokyo-blue);font-weight:800;font-size:12px;min-height:32px}
.route-option .route-steps{margin-top:10px;font-size:12px;line-height:1.5}
.route-sources{display:flex;flex-wrap:wrap;gap:6px 10px;margin:14px 0;font-size:11px;line-height:1.4}
.route-sources span{color:var(--muted)}.route-sources a,.route-panel-links a,.bus-caution a{color:var(--tokyo-blue);text-decoration:underline;text-underline-offset:2px}
.route-choice-button{width:100%;min-height:44px}
.bus-caution,.route-scope-error{padding:18px;background:#fff8ef;border:1px solid #e8bd86;border-left:4px solid #ad6b12;border-radius:12px;color:#473f35}
.bus-caution h3{font-size:14px;margin:0 0 8px}.bus-caution strong{font-size:12px}.bus-caution p{font-size:12px;line-height:1.5}
.route-check-panel{padding:22px;background:#fff;border:1px solid var(--line);border-top:4px solid var(--tokyo-navy);border-radius:14px;box-shadow:var(--shadow)}
.route-check-panel h2{font:700 22px 'Space Grotesk',sans-serif;color:var(--tokyo-navy);margin:0 0 12px}
.route-check-panel h3{font-size:13px;margin:22px 0 8px}.route-check-panel p,.route-check-panel li{font-size:12px;line-height:1.55;color:var(--muted)}
.route-check-panel ul{padding-left:18px}.route-panel-links{display:grid;gap:9px;font-size:12px;overflow-wrap:anywhere}
.route-check-panel small{display:block;margin-top:18px;color:var(--muted);font-size:10px}
@media(max-width:900px){.routes-layout{grid-template-columns:1fr}.route-check-panel{order:-1}}
@media(max-width:620px){.preference-fit-list{grid-template-columns:1fr}.route-option{padding:17px}.route-check-panel{padding:18px}}
@media(max-width:430px){.route-option .route-top{flex-wrap:wrap}.route-time-estimate{width:100%;text-align:left}}
