:root{--bg-top:#eef5fb;--bg-base:#f6f9fc;--bg-grid:#00529b0f;--surface:#ffffffeb;--surface-strong:#fff;--surface-soft:#f4f8fc;--surface-muted:#eaf1f8;--text:#314254;--text-soft:#637487;--text-faint:#8a98a8;--accent:#00529b;--accent-strong:#003e77;--accent-soft:#00529b1c;--border:#738fab47;--border-strong:#00529b57;--danger:#b44343;--danger-soft:#fff2f2;--shadow-lg:0 24px 70px #1f3c5e1f;--shadow-md:0 14px 32px #1f3c5e14;--radius-xl:22px;--radius-lg:18px;--radius-md:14px;--radius-sm:12px;--sidebar-width:296px;--mobile-nav-height:88px;--sans:"Inter", "Noto Sans SC", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei UI", system-ui, sans-serif;--mono:"JetBrains Mono", "SFMono-Regular", "Roboto Mono", "Cascadia Mono", ui-monospace, monospace;color:var(--text);background:radial-gradient(circle at top left, #a4cef259, transparent 34%), linear-gradient(180deg, var(--bg-top), var(--bg-base) 52%, #f7fafc 100%);font:16px/1.55 var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{background:linear-gradient(var(--bg-grid) 1px, transparent 1px), linear-gradient(90deg, var(--bg-grid) 1px, transparent 1px), linear-gradient(180deg, #ffffffdb, #ffffffbd);min-width:320px;min-height:100vh;color:var(--text);background-size:24px 24px,24px 24px,auto;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3,h4,p,ul,dl,dd,dt{margin:0}#app{min-height:100vh}.app-shell{gap:20px;width:min(100% - 32px,1380px);margin:0 auto;padding:24px 0 120px;display:grid}.daily-visitors-footer{text-align:center;color:var(--text-soft);grid-column:1/-1;padding:4px 4px 0;font-size:.86rem;line-height:1.45}.daily-visitors-footer p{margin:0}.daily-visitors-footer strong{color:var(--accent-strong);font-weight:760}.daily-visitors-actions{justify-content:center;gap:8px;margin-top:8px;display:flex}.footer-action-button{min-height:30px;color:var(--accent-strong);background:#ffffffc2;border:1px solid #00529b33;border-radius:999px;padding:0 12px;font-size:.8rem;font-weight:720;transition:transform .18s,border-color .18s,background-color .18s}.footer-action-button:hover{border-color:var(--border-strong);background:#00529b14;transform:translateY(-1px)}.footer-action-notice{color:var(--accent-strong);margin-top:6px;font-size:.78rem}.sidebar,.panel-card,.result-card,.detail-card,.status-card{border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow-md)}.sidebar{display:none}.brand-panel,.panel-card,.result-card,.detail-card,.status-card{border-radius:var(--radius-xl)}.brand-panel{padding:22px}.brand-panel h1,.stage-head h2,.section-head h3,.result-card h3,.status-card h3{color:var(--text);letter-spacing:0;line-height:1.12}.brand-panel h1{font-size:1.9rem;font-weight:780}.stage-head p,.result-subtitle,.empty-copy,.rate-note,.stop-main p,.fact-row dt{color:var(--text-soft)}.mode-nav{gap:12px;margin-top:16px;display:grid}.mode-button,.mobile-mode-button,.back-button,.primary-button,.secondary-button,.route-result-button,.allocation-choice-card{background:0 0;border:0}.mode-button{border-radius:var(--radius-lg);text-align:left;background:#ffffffad;border:1px solid #0000;align-items:center;gap:14px;width:100%;padding:16px 18px;transition:transform .18s,border-color .18s,background-color .18s,box-shadow .18s;display:flex}.mode-button:hover,.mobile-mode-button:hover,.back-button:hover,.primary-button:hover,.secondary-button:hover,.route-result-button:hover{transform:translateY(-1px)}.mode-button.is-active{border-color:var(--border-strong);background:linear-gradient(135deg,#00529b2e,#ffffffd1);box-shadow:inset 0 0 0 1px #ffffff70}.mode-copy strong{color:var(--text);font-size:1.02rem;font-weight:720}.main-stage{gap:16px;display:grid}.stage-head,.result-card-head,.section-head,.result-footer,.field-grid,.action-row,.overview-grid,.result-chip-group,.fact-grid,.stop-line,.coach-card-top,.coach-feature-row,.equipment-chip-row,.route-result-list,.detail-section-grid{display:flex}.stage-head,.result-card-head,.section-head,.result-footer{justify-content:space-between;gap:16px}.stage-head{align-items:flex-start;padding:8px 4px 0}.stage-head-result{align-items:center}.stage-head h2{font-size:1.66rem;font-weight:760}.stage-head-copy{min-width:0}.back-button{width:46px;height:46px;box-shadow:var(--shadow-md);color:var(--accent);background:#ffffffd1;border-radius:50%;flex:none}.icon-wrap{justify-content:center;align-items:center;display:inline-flex}.icon-wrap svg{fill:currentColor;width:22px;height:22px}.panel-card,.result-card,.detail-card,.status-card{padding:22px}.query-surface{position:relative;overflow:hidden}.query-surface:before,.hero-result:before{content:"";background:linear-gradient(90deg, var(--accent), #00529b1f);width:100%;height:4px;position:absolute;inset:0 auto auto 0}.section-head{align-items:flex-start}.section-head h3,.result-card h3,.detail-card h4{font-size:1.26rem;font-weight:730}.detail-card h4{font-size:1.08rem}.panel-pill,.metric-chip{white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:30px;padding:6px 12px;font-size:.82rem;font-weight:700;display:inline-flex}.panel-pill,.metric-chip.soft{background:var(--surface-muted);color:var(--accent-strong)}.panel-pill.soft{background:#00529b14}.metric-chip{background:var(--accent);color:#fff}.query-form{gap:16px;margin-top:18px;display:grid}.field-grid{flex-direction:column;align-items:stretch;gap:14px}.field{gap:8px;display:grid}.field span{color:var(--text-soft);font-size:.9rem}.field input{border-radius:var(--radius-md);border:1px solid var(--border);width:100%;min-height:52px;color:var(--text);background:#fffffff2;padding:0 16px;transition:border-color .18s,box-shadow .18s,background-color .18s}.field input::placeholder{color:var(--text-faint)}.field input:focus{border-color:var(--border-strong);outline:none;box-shadow:0 0 0 4px #00529b1f}.train-code-picker{gap:8px;display:grid}.station-picker{flex:1 1 0;gap:8px;min-width:0;display:grid}.station-picker-head{color:var(--text-soft);justify-content:space-between;align-items:center;gap:10px;font-size:.9rem;display:flex}.station-picker-head small{color:var(--text-faint);font-size:.78rem;font-weight:760}.station-input-shell{border:1px solid var(--border);border-radius:var(--radius-md);background:#fffffff2;flex-wrap:wrap;align-items:center;gap:8px;min-height:52px;padding:8px 10px;transition:border-color .18s,box-shadow .18s,background-color .18s;display:flex}.station-input-shell:focus-within{border-color:var(--border-strong);box-shadow:0 0 0 4px #00529b1f}.station-tags{flex-wrap:wrap;gap:6px;display:flex}.station-tag{min-height:32px;color:var(--accent-strong);background:#00529b14;border:1px solid #00529b2e;border-radius:999px;align-items:center;gap:6px;padding:0 5px 0 12px;font-size:.88rem;font-weight:760;display:inline-flex}.station-tag button{width:22px;height:22px;color:var(--accent-strong);background:#ffffffd1;border:0;border-radius:999px;place-items:center;padding:0;line-height:1;display:inline-grid}.station-tag button:hover{background:var(--accent);color:#fff}.station-input-shell input{min-width:120px;color:var(--text);background:0 0;border:0;flex:150px;padding:4px 6px}.station-input-shell input:focus{outline:none}.station-input-shell input::placeholder{color:var(--text-faint)}.station-input-shell input:disabled{cursor:not-allowed}.station-suggestions,.train-code-suggestions{border:1px solid var(--border);border-radius:var(--radius-md);max-height:280px;box-shadow:var(--shadow-md);background:linear-gradient(#fffffffa,#f6fafdfa);gap:6px;padding:8px;display:grid;overflow:auto}.station-option,.train-code-option{border-radius:var(--radius-sm);width:100%;min-height:38px;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:9px;padding:0 10px;display:flex}.train-code-option{justify-content:space-between;font-weight:730}.train-code-option:after{content:"查询";color:var(--text-faint);font-size:.78rem;font-weight:760}.station-option:hover,.train-code-option:hover{background:#00529b14}.train-code-option:hover:after{color:var(--accent-strong)}.station-check{background:#fff;border:1.5px solid #00529b61;border-radius:5px;width:16px;height:16px;position:relative;box-shadow:inset 0 0 0 3px #fff}.station-check:after{content:"";opacity:0;border:2px solid #fff;border-width:0 2px 2px 0;width:4px;height:8px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.station-option:hover .station-check{background:var(--accent)}.station-option:hover .station-check:after{opacity:1}.action-row{align-items:center;gap:12px}.primary-button,.secondary-button{border-radius:var(--radius-md);min-height:50px;padding:0 18px;font-weight:730;transition:transform .18s,box-shadow .18s,background-color .18s}.primary-button{background:linear-gradient(135deg, var(--accent), #0b66c1);color:#fff;flex:auto;box-shadow:0 18px 30px #00529b33}.secondary-button{color:var(--text);border:1px solid var(--border);background:#ffffffc7;flex:none}.result-stack,.route-result-list,.detail-section-grid{gap:16px;display:grid}.hero-result{position:relative;overflow:hidden}.result-card-head{align-items:flex-start}.result-subtitle{margin-top:8px}.result-subtitle span{color:var(--text-faint);margin-left:8px;font-size:.86em;display:inline-block}.result-disclaimer{color:var(--danger);margin:8px 0 0;font-size:.88rem;line-height:1.55}.train-usage-disclaimer{margin-top:18px}.result-chip-group{flex-wrap:wrap;justify-content:flex-end;gap:10px}.filter-toggle-button{border:1px solid var(--border);border-radius:var(--radius-md);min-height:40px;color:var(--accent-strong);background:#ffffffd1;flex:none;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-weight:730;transition:transform .18s,border-color .18s,background-color .18s,box-shadow .18s;display:inline-flex}.filter-toggle-button:hover,.filter-toggle-button.is-active{border-color:var(--border-strong);background:#00529b14;box-shadow:0 10px 22px #1f3c5e14}.filter-toggle-button span{background:var(--accent);color:#fff;min-width:1.35rem;min-height:1.35rem;font-family:var(--mono);border-radius:999px;place-items:center;font-size:.72rem;line-height:1;display:inline-grid}.route-filter-modal-backdrop{z-index:30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#1f3c5e52;place-items:center;padding:24px;display:grid;position:fixed;inset:0;overflow-y:auto}.route-filter-modal{border:1px solid var(--border);border-radius:var(--radius-xl);width:min(100%,760px);max-height:min(680px,100dvh - 48px);box-shadow:var(--shadow-lg);background:linear-gradient(#fffffffa,#f6fafdfa);grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.route-filter-modal-head{border-bottom:1px solid #738fab2e;justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 22px 16px;display:flex}.route-filter-modal-head h4{color:var(--text);font-size:1.16rem;font-weight:760;line-height:1.15}.route-filter-modal-head p{color:var(--text-soft);margin-top:6px;font-size:.88rem}.route-filter-modal-body{gap:16px;min-height:0;padding:18px 22px;display:grid;overflow:auto}.filter-close-button{border:1px solid var(--border);width:38px;height:38px;color:var(--accent-strong);background:#ffffffd6;border-radius:999px;flex:none;place-items:center;font-size:1.28rem;line-height:1;transition:transform .18s,border-color .18s,background-color .18s;display:inline-grid}.filter-close-button:hover{border-color:var(--border-strong);background:#00529b14;transform:translateY(-1px)}.route-filter-section{gap:10px;display:grid}.route-filter-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.route-filter-title strong,.route-filter-field span,.route-filter-fieldset legend{color:var(--text-soft);font-size:.82rem;font-weight:760}.route-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.route-filter-field{gap:6px;min-width:0;display:grid}.route-filter-field select{border:1px solid var(--border);border-radius:var(--radius-md);width:100%;min-height:42px;color:var(--text);appearance:none;background:#fffffff0;background-image:linear-gradient(45deg, transparent 50%, var(--text-soft) 50%), linear-gradient(135deg, var(--text-soft) 50%, transparent 50%);background-position:calc(100% - 17px) 18px,calc(100% - 12px) 18px;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding:0 34px 0 12px}.route-filter-field select:focus{border-color:var(--border-strong);outline:none;box-shadow:0 0 0 4px #00529b1f}.route-filter-checks{flex-wrap:wrap;gap:8px;display:flex}.route-filter-checks.inline{gap:8px}.route-filter-stack{gap:10px;display:grid}.route-filter-check{border-radius:var(--radius-md);min-height:38px;color:var(--text);background:#ffffffb3;border:1px solid #738fab33;align-items:center;gap:8px;padding:7px 10px;font-size:.88rem;font-weight:650;line-height:1.3;display:inline-flex}.route-filter-check input{box-sizing:border-box;width:18px;height:18px;block-size:18px;inline-size:18px;appearance:none;min-width:18px;min-height:18px;accent-color:var(--accent);background:#fff;border:1.5px solid #00529b6b;border-radius:5px;flex:none;place-content:center;margin:0;display:inline-grid}.route-filter-check input:before{content:"";opacity:0;border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:9px;transform:rotate(45deg)translateY(-1px)}.route-filter-check input:checked{border-color:var(--accent);background:var(--accent)}.route-filter-check input:checked:before{opacity:1}.route-filter-check input:disabled{background:#eaf1f8b3;border-color:#8a98a86b}.route-filter-check.is-disabled{color:var(--text-faint);background:#eaf1f880}.route-filter-fieldset{border:0;gap:8px;width:100%;min-width:0;margin:0;padding:0;display:grid}.route-filter-fieldset legend{padding:0}.route-filter-actions{border-top:1px solid #738fab2e;justify-content:flex-end;padding:16px 22px 22px;display:flex}.filter-reset-button{flex:none;min-height:40px;padding:0 14px}.filter-reset-button:disabled{cursor:not-allowed;opacity:.48;transform:none}.feedback-modal{grid-template-rows:auto auto;width:min(100%,520px)}.image-upload-modal{grid-template-rows:auto minmax(0,1fr);width:min(100%,620px)}.image-upload-modal-head{align-items:center}.image-upload-form{grid-template-rows:minmax(0,1fr) auto;min-height:0;display:grid}.image-upload-modal-body{align-content:start;gap:14px;min-height:0;padding:18px 22px;display:grid;overflow:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.image-upload-picker{border-radius:var(--radius-md);min-height:148px;color:var(--accent-strong);background:#00529b0b;border:1px dashed #00529b75;place-items:center;font-weight:760;transition:border-color .18s,background-color .18s,color .18s;display:grid}.image-upload-picker:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.image-upload-author-field{text-align:left;gap:8px;display:grid}.image-upload-author-field span{color:var(--text-soft);font-size:.82rem;font-weight:760}.image-upload-author-field input{border:1px solid var(--border);border-radius:var(--radius-md);width:100%;min-height:44px;color:var(--text);background:#fffffff0;padding:10px 14px;line-height:1.5;transition:border-color .18s,box-shadow .18s,background-color .18s}.image-upload-author-field input:focus{border-color:var(--border-strong);outline:none;box-shadow:0 0 0 4px #00529b1f}.image-upload-author-field input:disabled{cursor:wait;opacity:.72}.image-upload-picker:disabled,.image-upload-submit:disabled,.image-upload-remove:disabled{cursor:wait;opacity:.62}.image-upload-queue{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:10px;display:grid}.image-upload-queue-item{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-soft);min-width:0;position:relative;overflow:hidden}.image-upload-queue-item img{object-fit:cover;width:100%;height:100%;display:block}.image-upload-queue-item.is-uploading img{opacity:.56}.image-upload-queue-status{background:#ffffffeb;border-radius:999px;width:13px;height:13px;position:absolute;top:7px;left:7px;box-shadow:0 1px 5px #1f3c5e3d}.image-upload-queue-item.is-uploading .image-upload-queue-status{border:2px solid #00529b47;border-top-color:var(--accent);background:0 0;animation:.8s linear infinite image-upload-spin}.image-upload-queue-item.is-uploaded .image-upload-queue-status{background:#2f855a}.image-upload-queue-item.is-failed .image-upload-queue-status{background:var(--danger)}.image-upload-remove{color:#fff;background:#1f3c5ed1;border:1px solid #ffffffe6;border-radius:999px;place-items:center;width:25px;height:25px;font-size:1rem;line-height:1;display:grid;position:absolute;top:5px;right:5px}.image-upload-remove:hover:not(:disabled){background:var(--danger)}.image-upload-message{margin:0;font-size:.92rem;font-weight:740;line-height:1.5}.image-upload-message.is-success{color:#25764d}.image-upload-message.is-error{color:var(--danger)}.image-upload-actions{padding-top:14px}.image-upload-submit{flex:none;min-width:132px}@keyframes image-upload-spin{to{transform:rotate(360deg)}}.feedback-modal-head{padding-bottom:18px}.feedback-form{min-height:0;display:grid}.feedback-modal-body{gap:10px;padding:18px 22px;display:grid}.feedback-field{text-align:left;gap:8px;display:grid}.feedback-field span{color:var(--text-soft);font-size:.82rem;font-weight:760}.feedback-field textarea,.feedback-field input{border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text);background:#fffffff0;padding:12px 14px;line-height:1.5;transition:border-color .18s,box-shadow .18s,background-color .18s}.feedback-field textarea{resize:vertical;min-height:136px}.feedback-field input{min-height:44px}.feedback-field textarea::placeholder,.feedback-field input::placeholder{color:var(--text-faint)}.feedback-field textarea:focus,.feedback-field input:focus{border-color:var(--border-strong);outline:none;box-shadow:0 0 0 4px #00529b1f}.feedback-field textarea:disabled,.feedback-field input:disabled{cursor:wait;opacity:.72}.feedback-message{text-align:left;font-size:.86rem;line-height:1.45}.feedback-message.is-error{color:var(--danger)}.feedback-message.is-success{color:var(--accent-strong)}.feedback-actions{gap:10px}.feedback-cancel-button,.feedback-submit-button{flex:none;min-height:42px;padding:0 16px}.feedback-submit-button:disabled{cursor:wait;opacity:.64;transform:none}.ticket-overview{gap:18px;margin-top:22px;display:grid}.ticket-overview.compact{margin-top:16px}.ticket-route{border-radius:var(--radius-md);background:linear-gradient(135deg,#00529b14,#ffffffad);border:1px solid #00529b1f;grid-template-columns:minmax(0,1fr) minmax(92px,.44fr) minmax(0,1fr);align-items:center;gap:16px;padding:18px 18px 28px;display:grid}.ticket-station{gap:6px;min-width:0;display:grid}.ticket-station-end{text-align:right}.ticket-station span,.ticket-meta span{color:var(--text-soft);font-size:.78rem;font-weight:700}.ticket-station strong{color:var(--text);overflow-wrap:anywhere;font-size:1.36rem;font-weight:800;line-height:1.1}.ticket-station time{color:var(--accent-strong);font-family:var(--mono);font-size:.98rem;font-weight:760}.ticket-arrow{color:var(--accent);grid-template-columns:minmax(18px,1fr) auto minmax(18px,1fr);align-items:center;gap:8px;display:grid}.ticket-arrow span{opacity:.36;background:currentColor;height:1px}.ticket-arrow-center{justify-content:center;display:inline-flex;position:relative}.ticket-arrow strong{min-width:48px;min-height:34px;font-family:var(--mono);background:#00529b1a;border-radius:999px;justify-content:center;align-items:center;padding:0 12px;font-size:.94rem;font-weight:760;line-height:1;display:inline-flex}.ticket-arrow small{color:var(--text-soft);font-family:var(--sans);white-space:nowrap;font-size:.68rem;font-weight:700;position:absolute;top:calc(100% + 5px);left:50%;transform:translate(-50%)}.ticket-meta-stack,.ticket-meta-grid,.ticket-speed-grid{gap:10px;display:grid}.ticket-meta-grid{grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}.ticket-speed-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ticket-meta{border-radius:var(--radius-md);background:var(--surface-soft);border:1px solid #738fab29;min-width:0;padding:12px 14px}.ticket-meta strong{color:var(--text);font-family:var(--mono);overflow-wrap:anywhere;margin-top:6px;font-size:.94rem;display:block}.overview-grid{flex-wrap:wrap;gap:12px;margin-top:20px}.overview-grid.compact{margin-top:16px}.overview-metric{border-radius:var(--radius-md);background:var(--surface-soft);border:1px solid #738fab29;flex:176px;min-width:0;padding:14px 15px}.overview-metric span{color:var(--text-soft);font-size:.78rem;display:block}.overview-metric strong,.stop-time strong,.fact-row dd,.coach-capacity{color:var(--text);overflow-wrap:anywhere;margin-top:6px;display:block}.overview-metric strong{font-family:var(--mono);font-size:.98rem}.result-footer{flex-wrap:wrap;align-items:center;margin-top:18px}.rate-note{font-size:.84rem}.route-result-button{width:100%;color:inherit;text-align:left;cursor:pointer;transition:transform .18s,border-color .18s,box-shadow .18s}.route-result-button:hover{border-color:var(--border-strong);box-shadow:var(--shadow-lg)}.route-card-head,.route-card-schedule,.route-card-meta{display:grid}.route-card-head{grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:12px}.route-card-head strong{color:var(--text);font-family:var(--mono);font-size:1.2rem}.route-card-head span,.route-card-meta span,.route-card-schedule span{color:var(--text-soft)}.route-card-head span,.route-card-meta span{overflow-wrap:anywhere}.route-card-head span{font-size:.86rem}.route-card-schedule{border-radius:var(--radius-md);background:var(--surface-soft);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;margin-top:16px;padding:14px}.route-card-schedule>div:last-child{text-align:right}.route-card-schedule>div:last-child .route-stop-name{justify-content:flex-end}.route-card-schedule strong{color:var(--text);font-family:var(--mono);margin-top:4px;font-size:1rem;display:block}.route-stop-name{align-items:center;gap:6px;display:inline-flex}.route-stop-name>span{color:var(--text-soft)}.route-stop-badge{border-radius:999px;justify-content:center;align-items:center;width:1.35rem;height:1.35rem;font-size:.72rem;font-weight:800;display:inline-flex}.route-stop-badge.start{color:#25764d;background:#2f855a24}.route-stop-badge.pass{color:var(--accent-strong);background:#00529b1a}.route-stop-badge.end{color:#b56418;background:#d67e2626}.route-card-arrow{text-align:center;justify-items:center;gap:4px;min-width:5.8rem;display:grid}.route-card-arrow:before{content:"→";width:32px;height:32px;color:var(--accent-strong);background:#00529b1a;border-radius:999px;justify-content:center;align-items:center;font-weight:800;display:inline-flex;box-shadow:-42px 0 0 -15px #00529b47,42px 0 0 -15px #00529b47}.route-card-arrow span,.route-card-meta span{font-size:.78rem}.route-card-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.route-card-meta span:last-child{text-align:right}.status-card{border-style:dashed;align-content:center;gap:10px;min-height:220px;display:grid}.status-card.loading{background:#ffffffd1}.status-card.error{background:var(--danger-soft);border-color:#b443433d}.allocation-select-hero .result-card-head{align-items:flex-start}.allocation-choice-list{gap:12px;display:grid}.weekday-allocation-group{border:1px solid var(--border);border-radius:var(--radius-md);background:#ffffffb8;gap:10px;padding:12px;display:grid}.weekday-allocation-head{align-items:baseline;padding:2px 2px 0;display:flex}.weekday-allocation-head strong{color:var(--text);font-size:.98rem;font-weight:780;line-height:1.25}.weekday-allocation-options{gap:10px;display:grid}.allocation-choice-card{width:100%;color:inherit;text-align:left;justify-content:space-between;align-items:center;gap:16px;padding:18px;transition:transform .18s,border-color .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden}.allocation-choice-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-lg);transform:translateY(-1px)}.allocation-choice-main{align-items:center;gap:12px;min-width:0;display:flex}.allocation-choice-main>div{min-width:0}.allocation-choice-main strong{color:var(--text);letter-spacing:0;font-size:1.02rem;font-weight:780;line-height:1.24;display:block}.allocation-choice-main p{color:var(--text-soft);overflow-wrap:anywhere;margin-top:4px;font-size:.88rem;line-height:1.45}.allocation-choice-badge{border-radius:var(--radius-sm);background:var(--accent-soft);min-width:58px;max-width:82px;color:var(--accent-strong);text-align:center;flex:none;padding:7px 9px;font-size:.82rem;font-weight:780;line-height:1.2}.allocation-choice-tags{z-index:1;pointer-events:none;justify-content:flex-end;align-items:center;gap:5px;max-width:min(48%,190px);display:flex;position:absolute;top:9px;right:42px}.allocation-choice-tag{white-space:nowrap;border:1px solid #0000;border-radius:999px;flex:0 auto;min-width:0;padding:3px 6px;font-size:.68rem;font-weight:780;line-height:1.15}.allocation-choice-tag-harmony{color:var(--accent-strong);background:#00529b1a;border-color:#00529b38}.allocation-choice-tag-fuxing{color:#735111;background:#ffcf4f47;border-color:#b4800042}.allocation-choice-tag-smart{color:#8b3f0a;background:#ff8a2d2e;border-color:#cd5d0d3d}.allocation-choice-arrow{color:var(--accent-strong);flex:none;font-size:1.5rem;line-height:1}.detail-section-grid{grid-template-columns:1fr}.detail-card{gap:16px;display:grid}.detail-card-wide{grid-column:1/-1}.fact-grid{flex-direction:column;gap:12px}.fact-row{grid-template-columns:6.5rem minmax(0,1fr);gap:12px;display:grid}.fact-row dd{justify-content:space-between;align-items:flex-start;gap:10px;margin:0;display:flex}.fact-value{align-items:center;gap:4px;min-width:0;display:inline-flex}.fact-image-button{border:1px solid var(--border);width:36px;height:36px;color:var(--accent);background:#ffffffd1;border-radius:50%;flex:0 0 36px;place-items:center;margin-top:-6px;transition:border-color .16s,background-color .16s,color .16s,transform .16s;display:inline-grid}.fact-image-button:hover,.fact-image-button:focus-visible{border-color:var(--border-strong);background:var(--accent-soft);color:var(--accent-strong);transform:translateY(-1px)}.fact-image-button .icon-wrap svg{width:18px;height:18px}.formation-equipment-cell{justify-content:space-between;align-items:center;gap:8px;display:flex}.formation-equipment-cell>span:first-child{min-width:0}.formation-image-button{margin:0}.hint-list{overflow-wrap:anywhere}.stop-name-with-help{align-items:center;gap:4px;display:inline-flex}.hint-list-item>.context-help{vertical-align:middle;margin-inline-start:2px}.hint-list{color:var(--text);gap:8px;margin:0;padding-left:1rem;display:grid}.image-contribution{color:var(--text-soft);border-top:1px solid #738fab33;justify-items:start;gap:12px;margin-top:4px;padding-top:18px;font-size:.92rem;line-height:1.65;display:grid}.image-contribution p{margin:0}.interior-image-link{border-radius:var(--radius-md);background:var(--surface-soft);width:100%;min-height:48px;color:var(--text);text-align:left;border:1px solid #00529b33;justify-content:space-between;align-items:center;gap:16px;padding:10px 14px;font-weight:740;transition:border-color .16s,background-color .16s,color .16s;display:flex}.interior-image-link:hover,.interior-image-link:focus-visible{border-color:var(--border-strong);background:var(--accent-soft);color:var(--accent-strong)}.interior-image-link .icon-wrap{color:var(--accent);flex:none}.model-image-page{gap:28px;display:grid}.model-image-intro,.model-image-group-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.model-image-intro{padding:8px 4px 2px}.model-image-intro p{color:var(--text-soft);overflow-wrap:anywhere;font-size:.84rem;font-weight:700}.model-image-intro h3{color:var(--text);margin-top:3px;font-size:1.2rem;line-height:1.25}.model-image-groups{gap:30px;display:grid}.model-image-group{gap:12px;display:grid}.model-image-group-head{align-items:center;padding:0 4px}.model-image-group-head h4{color:var(--text);font-size:1rem;font-weight:760}.model-image-group-head span{color:var(--text-soft);font-family:var(--mono);font-size:.8rem}.model-image-grid{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}.model-image-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-strong);min-width:0;box-shadow:var(--shadow-md);align-self:start;overflow:hidden}.model-image-frame{background:var(--surface-muted);display:block;overflow:hidden}.model-image-frame img{width:100%;max-width:100%;height:auto;display:block}.model-image-card>p{min-height:52px;color:var(--text);overflow-wrap:anywhere;align-items:center;padding:12px 14px;font-size:.9rem;font-weight:700;line-height:1.45;display:flex}.model-image-error{color:var(--danger);text-align:center;font-size:.86rem}.status-action{width:fit-content;margin-top:6px}.image-contribution-button{min-height:42px;padding:0 16px}.stop-list{gap:10px;display:grid}.stop-row{border-radius:var(--radius-md);background:var(--surface-soft);grid-template-columns:42px minmax(0,1fr) auto;align-items:start;gap:12px;padding:12px 14px;display:grid}.stop-badge{font-family:var(--mono);background:var(--accent-soft);width:32px;height:32px;color:var(--accent-strong);border-radius:999px;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.stop-main strong{color:var(--text);font-weight:720}.stop-time{text-align:right}.stop-code-change{color:#b56418;overflow-wrap:anywhere;flex-wrap:wrap;grid-column:2/-1;align-items:center;gap:2px;margin-top:-4px;font-size:.84rem;font-weight:650;line-height:1.45;display:flex}.stop-code-change-copy{min-width:0}.context-help{flex:0 0 32px;place-items:center;width:32px;height:32px;margin-block:-6px;display:inline-grid;position:relative}.context-help-button{width:32px;height:32px;color:var(--text-soft);background:0 0;border:0;border-radius:999px;place-items:center;display:inline-grid}.context-help-button>span{border:1px solid var(--border);width:22px;height:22px;font-family:var(--mono);background:#ffffffd1;border-radius:999px;place-items:center;font-size:.76rem;font-weight:800;line-height:1;transition:border-color .16s,background-color .16s,color .16s;display:inline-grid}.context-help-button:hover>span,.context-help-button:focus-visible>span{border-color:var(--border-strong);background:var(--accent-soft);color:var(--accent-strong)}.context-help-tooltip{z-index:12;border-radius:var(--radius-sm);color:#fff;text-align:left;white-space:pre-line;overflow-wrap:anywhere;opacity:0;visibility:hidden;pointer-events:none;background:#263f57;border:1px solid #ffffff1f;width:max-content;max-width:min(320px,100vw - 48px);max-height:min(260px,100dvh - 48px);padding:10px 12px;font-size:.86rem;font-weight:520;line-height:1.5;transition:opacity .14s,transform .14s,visibility .14s;position:absolute;bottom:calc(100% + 8px);left:50%;overflow:auto;transform:translate(-50%,4px);box-shadow:0 12px 28px #1f3c5e33}.context-help-dialog{width:min(100%,480px);display:block;position:relative}.context-help-dialog-close{z-index:1;position:absolute;top:12px;right:12px}.context-help-dialog-body{max-height:min(560px,100dvh - 48px);color:var(--text);white-space:pre-line;overflow-wrap:anywhere;padding:20px 62px 20px 22px;font-size:.94rem;line-height:1.7;overflow:auto}.context-help-dialog-body p{margin:0}@media (hover:hover) and (pointer:fine){.context-help:hover .context-help-tooltip,.context-help:focus-within .context-help-tooltip{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%)}}@media (hover:none),(pointer:coarse){.fact-image-button{flex-basis:44px;width:44px;height:44px;margin-block:-10px}.formation-image-button{margin:0}.context-help{flex-basis:44px;width:44px;height:44px;margin:-12px -6px}.context-help-button{width:44px;height:44px}.context-help-dialog-backdrop{padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));align-items:end}.context-help-dialog{max-height:min(600px, calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));border-radius:20px}.context-help-dialog-body{max-height:min(600px, calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));padding:18px 60px 18px 18px}}.formation-list{gap:8px;display:grid}.formation-row{border-radius:var(--radius-md);background:var(--surface-soft);border:1px solid #738fab29;grid-template-columns:84px minmax(0,1.6fr) 84px minmax(0,1.4fr);align-items:center;gap:12px;padding:12px 14px;display:grid}.formation-head{background:0 0;border-style:dashed}.formation-cell{overflow-wrap:anywhere;min-width:0}.formation-head .formation-cell{color:var(--text-soft);font-size:.82rem;font-weight:700}.formation-car{font-family:var(--mono);color:var(--accent-strong);font-weight:700}.mobile-nav{left:max(12px, env(safe-area-inset-left));right:max(12px, env(safe-area-inset-right));bottom:max(12px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow-lg);background:#ffffffeb;border:1px solid #738fab38;border-radius:24px;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:10px;display:grid;position:fixed}.mobile-mode-button{min-height:56px;color:var(--text-soft);border-radius:18px;align-content:center;justify-items:center;gap:4px;font-size:.82rem;font-weight:700;transition:transform .18s,color .18s,background-color .18s;display:grid}.mobile-mode-button.is-active{color:var(--accent-strong);background:linear-gradient(135deg,#00529b29,#00529b0d)}.mobile-mode-button .icon-wrap svg{width:20px;height:20px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #00529b38}@media (width<=479px){.app-shell{width:min(100% - 18px,1380px);padding-top:16px}.panel-card,.result-card,.detail-card,.status-card{border-radius:20px;padding:18px}.stage-head h2{font-size:1.42rem}.action-row{flex-direction:column}.primary-button,.secondary-button{justify-content:center;width:100%}.result-card-head,.result-footer{flex-direction:column;align-items:stretch}.filter-toggle-button{width:100%}.route-filter-modal-backdrop{padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));align-items:end}.route-filter-modal{max-height:min(600px, calc(100vh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));max-height:min(600px, calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));border-radius:20px}.route-filter-modal-head{padding:18px 18px 14px}.route-filter-modal-body{padding:16px 18px}.route-filter-grid{grid-template-columns:1fr}.route-filter-check{width:100%}.route-filter-checks.inline .route-filter-check{flex:96px;width:auto}.route-filter-actions{justify-content:stretch;padding:14px 18px 18px}.filter-reset-button{width:100%}.feedback-modal-body,.image-upload-modal-body{padding:16px 18px}.image-upload-queue{grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:8px}.image-upload-actions{padding:14px 18px 18px}.image-upload-submit{width:100%}.feedback-actions{flex-direction:column}.feedback-cancel-button,.feedback-submit-button{justify-content:center;width:100%}.section-head{flex-direction:row;align-items:flex-start}.section-head>div{min-width:0}.section-head .panel-pill{white-space:nowrap;flex:none;align-self:flex-start;width:fit-content;max-width:100%}.ticket-route{grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);gap:10px;padding:14px 14px 24px}.ticket-station strong{font-size:1.08rem}.ticket-station time{font-size:.88rem}.ticket-arrow{grid-template-columns:1fr;justify-items:center}.ticket-arrow span{display:none}.ticket-arrow strong{min-width:40px;min-height:30px;padding:0 8px;font-size:.82rem}.ticket-arrow small{font-size:.62rem}.route-card-head{grid-template-columns:1fr}.route-card-schedule{grid-template-columns:minmax(0,1fr) 4.5rem minmax(0,1fr);padding:12px}.route-card-arrow{min-width:4.5rem}.route-card-arrow:before{width:28px;height:28px;box-shadow:-32px 0 0 -12px #00529b3d,32px 0 0 -12px #00529b3d}.allocation-choice-tags{gap:4px;max-width:min(54%,156px);top:8px;right:34px}.allocation-choice-tag{padding:2px 5px;font-size:.62rem}.fact-row{grid-template-columns:1fr;gap:4px}.stop-row{grid-template-columns:1fr}.stop-time{text-align:left}.stop-code-change{grid-column:1;margin-top:0}.formation-row{grid-template-columns:1fr;gap:6px}}@media (width>=760px){.app-shell{padding-top:28px}.field-grid{flex-direction:row;align-items:flex-start}.field-grid .field{flex:1 1 0}.detail-section-grid{grid-template-columns:1fr}.model-image-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1024px){.app-shell{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);align-items:start;gap:24px;padding-bottom:36px}.sidebar{gap:16px;display:grid;position:sticky;top:24px}.main-stage{min-width:0}.mobile-nav{display:none}}
