:root {
  font-family: "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  color: #182b35;
  background: #edf1f2;
  font-variant-numeric: tabular-nums;
}
body { background: #edf1f2; }
button, input, select { font: inherit; }
button:focus-visible, input:focus-visible, select:focus-visible, a:focus-visible {
  outline: 3px solid #e2b642;
  outline-offset: 2px;
}
.top { background: #102c35; border-bottom: 3px solid #d9af40; color: #f3f6f4; }
.top-inner { max-width: 1580px; padding: 14px 30px; }
.brand { font-size: 18px; letter-spacing: .02em; }
.brand-mark { background: #d9af40; color: #102c35; border-radius: 7px; }
.top-right { color: #a8bdc1; }
.top-right strong { color: #e4c875; }
.shell {
  max-width: 1580px;
  display: grid;
  grid-template-columns: 214px minmax(0, 1fr);
  grid-template-rows: auto auto 1fr;
  column-gap: 18px;
  padding: 18px 30px 50px;
}
.query-modes { grid-column: 1 / -1; grid-row: 1; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-bottom: 14px; }
.query-mode {
  display: flex; align-items: center; gap: 14px; text-align: left;
  min-width: 0; padding: 13px 17px; border-radius: 10px;
  border: 1px solid #cfdadd; border-bottom: 3px solid #cfdadd;
  background: #fff; color: #233b44; box-shadow: 0 2px 4px #15333a08;
}
.query-mode:hover { border-color: #95abb0; background: #f8fbfa; }
.query-mode.active { border-color: #d9af40; background: #fffdf6; }
.mode-icon { display: grid; place-items: center; width: 36px; height: 36px; flex: none; border-radius: 7px; background: #e9f0ef; font-size: 12px; font-weight: 800; color: #1f5a61; }
.query-mode.active .mode-icon { background: #e6c75f; color: #23343a; }
.query-mode span:nth-child(2) { min-width: 0; }
.query-mode b, .query-mode small { display: block; }
.query-mode b { font-size: 15px; }
.query-mode small { color: #71858b; font-size: 11px; margin-top: 3px; }
.mode-arrow { margin-left: auto; color: #81959a; font-size: 20px; }
.hero {
  grid-column: 1 / -1; grid-row: 2; margin: 0 0 15px; padding: 22px 25px 18px;
  border: 0; border-radius: 12px; box-shadow: 0 9px 23px #0d30321a;
  background: radial-gradient(circle at 85% -50%,#34777b 0,transparent 42%), linear-gradient(115deg,#10333e,#1b5058);
  color: #fff;
}
.eyebrow { color: #e0c66d; font-size: 10px; letter-spacing: .2em; }
.hero h1 { color: #fff; font-size: clamp(26px,3vw,38px); margin: 5px 0; }
.route-description { color: #ccdbda; font-size: 13px; }
.search-row { margin-top: 16px; }
.field, .button { border-radius: 7px; min-height: 38px; padding: 8px 11px; border-color: #c9d6d8; color: #1a3339; }
.field::placeholder { color: #88999e; }
.button { background: #fff; transition: background .15s, border-color .15s; }
.button:hover { background: #f1f6f5; border-color: #7b9ca0; }
.button.primary, .button.primary:hover { background: #e6bf54; color: #183038; border-color: #e6bf54; }
.button.soft { background: #e9f3f1; color: #1c5960; border-color: #c8dfdb; }
.search-row label.field { color: #29424a; }
.status-line { color: #c5d8d8; }
.status-line.error { color: #ffe49f; }
.metrics { margin-top: 17px; gap: 1px; border: 1px solid #487079; background: #487079; overflow: hidden; border-radius: 7px; }
.metric { border: 0; border-radius: 0; background: #173e47; padding: 10px 15px; }
.metric b { color: #fff; font-size: 22px; }
.metric span { color: #a5c1c2; font-size: 11px; }
.tabs { grid-column: 1; grid-row: 3; position: sticky; top: 16px; align-self: start; display: flex; flex-direction: column; gap: 3px; margin: 0; padding: 8px; border: 1px solid #d4dfe0; border-radius: 10px; background: #fff; overflow: visible; }
.tab { width: 100%; text-align: left; border: 0; border-radius: 6px; padding: 11px 12px; color: #50656b; background: transparent; font-size: 13px; }
.tab:hover { background: #edf3f2; }
.tab.active { background: #16434b; color: #fff; }
.tabs [data-tab="driver"], .tabs [data-tab="fleet"], .tabs [data-tab="spots"] { display: none; }
.panel { grid-column: 2; grid-row: 3; min-width: 0; padding: 22px 24px; margin: 0; border-radius: 10px; border: 1px solid #d4dfe0; box-shadow: 0 4px 11px #0d30320b; }
.panel h2 { font-size: 21px; letter-spacing: .01em; }
.panel-head { margin-bottom: 18px; }
.sub { color: #687d83; line-height: 1.5; }
.controls { align-items: center; }
.table-wrap { border-radius: 7px; border-color: #dce5e6; }
.table { min-width: 760px; font-size: 12px; }
.table th { background: #edf3f2; color: #3d5d64; position: sticky; top: 0; z-index: 1; }
.table th, .table td { padding: 10px 11px; border-bottom-color: #e7eeee; }
.table tbody tr:nth-child(even) { background: #fafcfc; }
.table tbody tr:hover { background: #eaf5f2; }
.table .number { color: #12656d; }
.pill { background: #e6f1ed; color: #1b6468; }
.hint { border-color: #d5e2e1; background: #f2f7f6; color: #48666b; }
.day-button { background: #f5f8f7; border-color: #cbdad9; color: #34565d; }
.day-button.active { background: #1b5860; border-color: #1b5860; color: #fff; }
.mini-stat, .analysis-card, .source-card { border-color: #dce5e5; background: #f8fbfa; }
.analysis-card strong { color: #15636c; }
.mapbox, .stop-list { border-radius: 7px; }
.stop-row .seq { background: #e4f1ed; color: #1a686d; }
#toast { background: #163b44; border-radius: 7px; }
body[data-query-mode="driver"] .hero, body[data-query-mode="fleet"] .hero, body[data-query-mode="history"] .hero, body[data-query-mode="spots"] .hero,
body[data-query-mode="driver"] .tabs, body[data-query-mode="fleet"] .tabs, body[data-query-mode="history"] .tabs, body[data-query-mode="spots"] .tabs { display: none; }
body[data-query-mode="driver"] .panel.active, body[data-query-mode="fleet"] .panel.active, body[data-query-mode="history"] .panel.active, body[data-query-mode="spots"] .panel.active { grid-column: 1 / -1; grid-row: 2; }
@media (max-width: 900px) {
  .top-inner { padding: 11px 16px; }
  .shell { display: block; padding: 14px 14px 35px; }
  .query-modes { gap: 6px; }
  .query-mode { padding: 10px; gap: 7px; }
  .mode-icon, .mode-arrow { display: none; }
  .query-mode b { font-size: 13px; }
  .query-mode small { font-size: 10px; }
  .hero { padding: 18px; margin: 0 0 12px; }
  .tabs { position: static; flex-direction: row; overflow-x: auto; padding: 5px; margin-bottom: 10px; }
  .tab { width: auto; white-space: nowrap; padding: 9px 11px; }
  .panel { padding: 17px; }
}
@media (max-width: 600px) {
  .brand { font-size: 15px; }
  .top-right span { display: none; }
  .query-mode { justify-content: center; text-align: center; min-height: 56px; }
  .query-mode small { display: none; }
  .search-row > .field, .search-row > .button { flex: 1 1 100%; max-width: none; }
  .metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .panel-head .controls { width: 100%; }
  .panel-head .controls > * { flex: 1 1 130px; }
}
.journey-hero{display:flex;justify-content:space-between;gap:12px;align-items:center;background:linear-gradient(110deg,#e3f2e3,#e8f4fa);border:1px solid #cae4e4;border-radius:12px;padding:15px 17px;margin:14px 0}.journey-hero small,.journey-hero span{color:#587a89;font-size:12px}.journey-hero h3{margin:4px 0;font-size:22px;color:#164b63}.journey-hero #journeyElapsed{font-size:13px;font-weight:800;color:#146483;text-align:right}.journey-map{height:340px;border:1px solid #cbdfe7;border-radius:12px;background:#e8f2f4;overflow:hidden}.journey-actions,.journey-choice-head{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.journey-actions .button{flex:1}.journey-choice-head{border-top:1px solid #e5edf0;padding-top:15px}.journey-path{display:grid;gap:7px}.journey-step{display:grid;grid-template-columns:150px 1fr auto;gap:8px;align-items:center;border-left:4px solid #67a63f;background:#f6faf7;border-radius:7px;padding:9px 12px;font-size:12px}.journey-step b{color:#155578}.journey-step small{color:#63818c}.journey-choices{display:grid;gap:8px}.journey-choice{width:100%;display:grid;grid-template-columns:72px 1fr 56px;align-items:center;text-align:left;gap:13px;border:1px solid #dae5e9;border-radius:11px;background:#fff;padding:13px;color:#1a4256}.journey-choice:hover{border-color:#1877aa;background:#f3fbff}.journey-choice small{display:block;margin-top:3px;color:#718b98}.journey-choice strong{background:#0872ba;color:#fff;border-radius:7px;padding:8px;text-align:center}.journey-badge{background:#237e72;color:#fff;border-radius:6px;padding:6px;text-align:center;font-weight:800;font-size:12px}.journey-badge.walking{background:#b5822a}.journey-alight{position:relative;z-index:2;background:#fff;border:1px solid #bdd8e3;border-radius:12px;box-shadow:0 12px 28px #173b5525;padding:14px;margin:12px 0}.journey-alight[hidden],.journey-solution[hidden],#journeyScene[hidden]{display:none}.journey-alight h3{margin:0}.journey-alight p{font-size:12px;color:#66808c}.journey-alight-list{max-height:350px;overflow:auto}.journey-alight-list button{width:100%;display:flex;justify-content:space-between;gap:8px;padding:10px;border:0;border-bottom:1px solid #edf2f4;background:#fff;text-align:left}.journey-alight-list button:hover{background:#eef7fa}.journey-alight-list small{color:#6b8794}.journey-solution{background:#f5fafb;border:1px solid #cce4e9;border-radius:12px;padding:16px;margin:14px 0}.journey-solution h3{margin:0;color:#154c66}.journey-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px}.journey-compare>div{background:#fff;border:1px solid #dce9ec;border-radius:9px;padding:12px}.journey-compare p{font-size:12px;line-height:1.55;border-bottom:1px solid #eaf0f3;padding-bottom:7px}.journey-finish{padding:20px;background:#eaf7df;border-radius:10px;color:#325e25;font-weight:800}.journey-mini{margin-top:22px;border-top:1px solid #e1eaf0;padding-top:13px}.journey-mini summary{cursor:pointer;font-size:13px;font-weight:800;color:#527186}.journey-mini .panel-head{margin-top:13px}
@media(max-width:600px){.journey-map{height:270px}.journey-hero h3{font-size:18px}.journey-step{grid-template-columns:1fr}.journey-compare{grid-template-columns:1fr}.journey-choice{grid-template-columns:57px 1fr 49px;gap:8px;padding:10px}.journey-choice strong{padding:7px 3px}}
.spot-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr);gap:14px}.spot-map{height:460px;border:1px solid #d1e4e7;border-radius:12px;background:#f4f8f1}.spot-layout .controls{margin-bottom:10px}.spot-list{max-height:460px;overflow:auto;display:grid;gap:8px}.spot-card{border:1px solid #d8e7e8;border-radius:9px;background:#fff;padding:10px;color:#315669;font-size:12px}.spot-card>div{display:flex;gap:9px}.spot-card img{width:74px;height:65px;object-fit:cover;border-radius:6px}.spot-card span{display:grid;gap:3px}.spot-card small{color:#66818d}.spot-card p{margin:8px 0}.spot-card .button{min-height:30px;padding:4px 7px;font-size:11px;margin-right:4px}.spot-tools{border:1px solid #dce9e9;border-radius:10px;padding:12px 15px;margin-top:12px}.spot-tools summary{cursor:pointer;font-weight:800;color:#195875}.spot-tools .controls{margin-top:12px}.spot-tools input{flex:1 1 140px}.spot-tools textarea{display:block;width:100%;min-height:76px;margin:10px 0}.spot-upload{display:grid;gap:9px;padding-top:10px}.spot-upload .controls{margin:0}.spot-upload input[type=file]{font-size:12px}.profile-editor{display:flex;gap:12px;align-items:start;border:1px solid #d9e8e9;border-radius:10px;padding:12px;margin:12px 0}.profile-editor img{width:66px;height:66px;object-fit:cover;border-radius:50%}.profile-editor>div{display:grid;gap:5px;flex:1}.profile-editor label{font-size:11px;font-weight:800;color:#47717e}.profile-editor input[type=file]{font-size:11px}.profile-editor .button{justify-self:start}.notice-form{display:grid;gap:8px;padding:12px 0}.notice-form textarea{min-height:75px}.notice-item{border-bottom:1px solid #e1eaed;padding:7px 0}.notice-item small{display:block;color:#6c8791}.notice-item p{margin:5px 0;color:#4d6878}.notice-item .pill{margin-right:3px}
@media(max-width:800px){.spot-layout{grid-template-columns:1fr}.spot-map{height:320px}.spot-list{max-height:380px}}
.spot-popup-photo{display:block;width:min(220px,70vw);max-height:180px;object-fit:cover;border-radius:7px;margin-top:7px}.spot-card[data-spot-id]{cursor:pointer}.spot-card[data-spot-id]:hover{border-color:#1871d1;background:#f6fbff}
.spot-popup-group{max-height:250px;overflow:auto;margin-top:5px}.spot-popup-entry{padding:5px 0;border-bottom:1px solid #e1e9ed;line-height:1.5}.spot-popup-entry:last-child{border-bottom:0}
.spot-header-link{flex:none;display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border:1px solid #9cc959;border-radius:9px;background:#eaf6d9;color:#214d28;text-decoration:none;font-size:12px;font-weight:850;white-space:nowrap}.spot-header-link:hover{background:#fff}.spot-map-icon{display:grid;place-items:center;border-radius:50%;box-shadow:0 2px 9px #143c3c40;transition:transform .15s}.spot-map-icon:hover{transform:scale(1.12)}.spot-map-icon span{width:100%;height:100%;display:grid;place-items:center;border-radius:50%;border:2px solid #fff;font-size:17px;font-weight:900}.spot-map-icon-archive span{background:#f7fbf0;color:#4f9825;border-color:#75ad43}.spot-map-icon-community span{background:#fff1da;color:#af6a13;border-color:#e7a843}.spot-map-icon-pending span{background:#fff2dd;color:#b76d12;border-color:#e6a23e}.spot-map-icon-cluster span{background:linear-gradient(145deg,#246970,#7aad3d);color:#fff;border-color:#fff;font-size:13px}.spot-selected-icon span{display:grid;place-items:center;width:30px;height:30px;border:3px solid #fff;border-radius:50%;background:#dc9c28;color:#fff;box-shadow:0 2px 8px #183a3c80;font-size:23px;line-height:1}.spot-picking{cursor:crosshair!important;outline:3px solid #e3b33a;outline-offset:2px}.spot-picking .leaflet-container{cursor:crosshair!important}
.spot-map-frame{position:relative}.spot-map-frame .spot-map{border-color:#bdd9d0;box-shadow:0 9px 24px #1e4b4d12}.spot-map-legend{position:absolute;left:12px;top:12px;z-index:450;display:grid;gap:3px;padding:10px 12px;border:1px solid #dce8e1;border-radius:10px;background:#fffffff2;box-shadow:0 4px 12px #1b3d3424;pointer-events:none;color:#254b4d;font-size:11px}.spot-map-legend b{font-size:13px;color:#1a534b}.spot-map-legend small{color:#5f7e81}.spot-map-legend span{display:flex;align-items:center;gap:4px;white-space:nowrap}.spot-map-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:5px}.spot-map-legend .legend-archive{background:#78ae43}.spot-map-legend .legend-community{background:#e1a640}.spot-card{border-color:#d6e5dc;box-shadow:0 2px 8px #1d58430a;transition:border-color .15s,transform .15s}.spot-card:hover{transform:translateY(-1px)}.spot-map-icon-archive span,.spot-map-icon-community span,.spot-map-icon-pending span{font-size:14px}
@media(max-width:600px){.spot-header-link{padding:6px 8px;font-size:11px}.spot-header-link::first-letter{font-size:14px}}
.spot-card span{min-width:0;overflow-wrap:anywhere}.spot-popup-entry{overflow-wrap:anywhere}
.spot-community-intro{font-size:12px;color:#587581;margin:10px 0}.spot-community-status{min-height:1.3em;font-size:12px;color:#a75026}.spot-community-feed{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.spot-community-group{min-width:0}.spot-community-group h3{font-size:14px;color:#205d60;margin:9px 0}.spot-community-group h3 small{color:#66848a;font-weight:500}.spot-community-card{display:flex;gap:11px;border:1px solid #d7e8df;border-radius:10px;background:#fff;padding:9px;margin:8px 0}.spot-community-card>img{width:94px;height:90px;object-fit:cover;border-radius:7px;flex:none}.spot-community-body{min-width:0;flex:1;font-size:12px;color:#345d68}.spot-community-body b{font-size:13px}.spot-community-body small{display:block;color:#6e8790;margin:3px 0}.spot-community-body p{margin:5px 0;overflow-wrap:anywhere}.spot-community-actions{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-top:8px}.spot-community-actions>button,.spot-stars button{border:1px solid #bfd5d0;border-radius:6px;background:#f6fbf6;color:#235d53;padding:5px 8px;cursor:pointer;font-size:11px}.spot-community-actions>button:hover,.spot-stars button:hover{background:#e1f2e0}.spot-community-actions button:disabled{opacity:.5}.spot-rating-score{font-weight:800;color:#a87715}.spot-stars{display:inline-flex;gap:2px}.spot-stars button{font-size:18px;line-height:1;color:#dca82c;padding:3px 5px}.spot-community-consent{display:flex;align-items:flex-start;gap:7px;font-size:12px;color:#3e6672;line-height:1.5}.spot-community-consent input{flex:none;width:auto;margin-top:3px}
@media(max-width:700px){.spot-community-feed{grid-template-columns:1fr}.spot-community-card>img{width:80px;height:80px}}
.spot-community-actions>button.selected,.spot-stars button.selected{background:#d9edcf;border-color:#75a747;color:#235c26;font-weight:850}

:root { background: #f0f5f8; }
body { background: #f0f5f8; }
a { color: #0769ae; }
.top { background: #0566a8; border-bottom-color: #8cc63f; }
.top-right strong { color: #d7f19b; }
.brand-mark { background: #fff; width: 38px; height: 38px; border-radius: 7px; }
.brand-mark img { width: 24px; height: 24px; image-rendering: auto; }
.livery-chip { display: flex; align-items: center; gap: 8px; margin-left: auto; margin-right: 16px; border-radius: 6px; padding: 3px 8px 3px 3px; background: #ffffffee; color: #165782; font-size: 10px; font-weight: 750; letter-spacing: .03em; }
.livery-chip img { width: 43px; height: 27px; object-fit: contain; }
.hero { position: relative; overflow: hidden; background: linear-gradient(110deg,#064f90,#0071bc 74%,#0a81bf); box-shadow: 0 9px 23px #075d9a21; }
.hero::before { content: ""; position: absolute; height: 9px; left: 0; right: 0; bottom: 0; background: #8cc63f; }
.hero-livery { position: absolute; top: 18px; right: 24px; width: 171px; height: 87px; padding: 4px; border-radius: 8px; background: #fff; box-shadow: 0 8px 18px #003d7040; transform: rotate(3deg); pointer-events: none; }
.hero-livery img { display: block; width: 100%; height: 100%; object-fit: contain; }
.hero h1, .hero .route-description { max-width: calc(100% - 185px); }
.hero .search-row, .hero .metrics, .hero .route-results { position: relative; z-index: 1; }
.eyebrow { color: #cced90; }
.route-description, .status-line { color: #dcecf5; }
.metric { background: #075a9b; }
.metrics { border-color: #4c99c5; background: #4c99c5; }
.metric span { color: #d2e6f1; }
.query-mode.active { border-color: #8cc63f; background: #f8fce9; }
.query-mode.active .mode-icon { background: #8cc63f; color: #164f7d; }
.query-mode:hover { border-color: #7db6d5; background: #f4faff; }
.query-mode.active:hover { border-color: #8cc63f; background: #f8fce9; }
.mode-icon { background: #e5f1f6; color: #0764a3; }
.button.primary, .button.primary:hover { background: #8cc63f; color: #164064; border-color: #8cc63f; }
.button.soft { background: #e9f4fa; color: #0969a8; border-color: #c6e1ef; }
.button:hover { border-color: #68a7ce; }
.tab.active { background: #0870b2; }
.tab:hover { background: #e8f4f9; }
.table th { background: #eaf4f9; color: #225c7e; }
.table tbody tr:hover { background: #eef8fc; }
.table .number { color: #056db3; }
.pill { background: #eaf6d9; color: #427b0e; }
.day-button.active { background: #0870b2; border-color: #0870b2; }
.analysis-card strong { color: #0870b2; }
.hint { background: #f2f8fb; border-color: #d5e7f0; color: #466977; }
.model-search { padding: 13px; border-radius: 8px; border: 1px solid #d7e7ee; background: #f6fafc; }
.model-search::before { content: "车型筛选"; color: #27739d; font-size: 12px; font-weight: 800; }
.model-search input:first-of-type { min-width: 220px; }
.model-search input:nth-of-type(2) { min-width: 170px; }
.model-field { position: relative; flex: 0 1 260px; min-width: 220px; }
.model-field > input { width: 100%; }
.model-suggestions { display: none; position: absolute; top: calc(100% + 4px); left: 0; right: 0; max-height: 260px; overflow-y: auto; border: 1px solid #bdd7e5; border-radius: 7px; background: #fff; box-shadow: 0 12px 24px #174e6c23; z-index: 40; }
.model-suggestions.active { display: block; }
.model-option { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; border: 0; border-bottom: 1px solid #e7eff2; background: #fff; color: #19445d; padding: 9px 11px; text-align: left; font-size: 12px; }
.model-option:last-child { border-bottom: 0; }
.model-option:hover, .model-option:focus-visible { background: #eef8e0; }
.model-option small { color: #6b8491; white-space: nowrap; }
.account-button { flex: none; border: 1px solid #c9eb93; border-radius: 9px; padding: 9px 12px; background: #f3fbdc; color: #235b14; font-size: 12px; font-weight: 800; }
.account-button:hover { background: #fff; }
.private-lock { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px; margin-bottom: 13px; border: 1px solid #d4e6f0; border-radius: 10px; background: #f3f8fb; color: #235c78; font-size: 13px; font-weight: 800; }
.private-lock[hidden] { display: none; }
.private-cell { color: #7992a1; font-size: 12px; }
.arrival-metrics { display: flex; flex-wrap: wrap; gap: 4px 9px; margin-top: 6px; color: #66818d; font-size: 11px; }
.arrival-metrics b { color: #155a7c; font-weight: 800; }
.auth-overlay { position: fixed; inset: 0; z-index: 2000; display: grid; place-items: center; padding: 16px; background: #0c263ab8; }
.auth-overlay[hidden], .auth-card [hidden] { display: none; }
.auth-card { position: relative; width: min(100%, 430px); padding: 28px; border: 1px solid #cbe4ed; border-radius: 18px; background: #fff; color: #18394d; box-shadow: 0 24px 80px #071d3059; }
.auth-card { max-height: 92vh; overflow-y: auto; }
.auth-overlay{overflow-y:auto;overscroll-behavior:contain;align-items:start}
.auth-card{max-height:calc(100dvh - 24px);margin:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.auth-card #authLoggedIn{padding-bottom:16px}
.auth-card h2 { margin: 8px 0 5px; font-size: 24px; }
.auth-icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: #e9f5d8; }
.auth-sub, .auth-note { color: #5d7785; font-size: 13px; line-height: 1.5; }
.auth-note { margin-bottom: 0; font-size: 11px; }
.auth-close { position: absolute; top: 14px; right: 16px; border: 0; background: transparent; color: #64808d; font-size: 26px; }
.auth-card form { display: grid; gap: 8px; margin-top: 20px; }
.auth-card form label { font-size: 12px; font-weight: 800; }
.auth-card form button { margin-top: 5px; }
.auth-message { min-height: 18px; margin-top: 12px; color: #bd4538; font-size: 12px; }
.auth-account { margin: 19px 0 8px; padding: 13px; border-radius: 9px; background: #f0f8e4; }
.auth-account strong { display: block; margin-top: 3px; }
.auth-contact { margin: 17px 0; padding: 14px; border: 1px solid #cfe4ef; border-radius: 11px; background: #f4f9fc; }
.auth-contact strong { display: block; color: #1b526c; font-size: 14px; }
.auth-contact p { margin: 7px 0 11px; color: #5d7785; font-size: 12px; line-height: 1.5; }
.auth-contact-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.auth-contact-actions .button { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; font-size: 12px; }
@media (max-width: 700px) {
  .top-inner { flex-wrap: wrap; }
  .account-button { margin-left: auto; }
  .livery-chip { order: 3; width: 100%; justify-content: center; margin: 2px 0 0; padding-right: 3px; }
  .livery-chip span { display: block; }
  .hero-livery { width: 92px; height: 49px; right: 15px; top: 15px; }
  .hero h1, .hero .route-description { max-width: calc(100% - 100px); }
  .model-field, .model-search input, .model-search button { flex: 1 1 100%; }
}
.retired-record,.retired-record a,.table .retired-record.number{color:#89949f!important;filter:grayscale(1);text-decoration-color:#a0a8af}.retired-number:after{content:' 已报废';font-size:10px;font-weight:700;margin-left:4px;color:#89949f}
.history-query-grid{display:grid;gap:10px}.history-query{border:1px solid #dce6ef;border-radius:12px;background:#fbfdff}.history-query[open]{background:#fff;box-shadow:0 4px 15px #213a5409}.history-query summary{cursor:pointer;list-style:none;padding:15px 17px;font-weight:800;color:#254b69}.history-query summary::-webkit-details-marker{display:none}.history-query summary:after{content:'⌄';float:right;color:#6d879b}.history-query[open] summary:after{content:'⌃'}.history-query-body{padding:0 17px 18px}.history-query .route-results{display:block;box-shadow:none;max-height:190px;margin:9px 0 14px}.history-query h3{font-size:16px;margin:24px 0 8px}
.availability-strip{padding:9px 18px;background:#e9f5dc;color:#285b24;text-align:center;font-size:12px;font-weight:700;border-bottom:1px solid #cae5ac}
.availability-overlay{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;padding:22px;background:#103b56ed}
.availability-overlay[hidden]{display:none}
.availability-card{width:min(100%,520px);padding:30px;border-radius:18px;border-top:7px solid #8cc63f;background:#fff;box-shadow:0 24px 80px #071d3059}
.availability-card h1{font-size:28px;margin:14px 0 10px;color:#153e59}
.availability-card p{color:#456575;line-height:1.7}
.availability-card small{color:#658090}
.availability-tag{display:inline-block;padding:5px 10px;border-radius:30px;background:#e9f5dc;color:#346d24;font-size:12px;font-weight:800}
.shell { grid-template-rows: auto auto auto 1fr; }
.top-disclosures { grid-column: 1 / -1; grid-row: 1; display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.top-disclosures details { position: relative; min-width: 160px; border: 1px solid #cbdce7; border-radius: 9px; background: #fff; color: #245674; font-size: 12px; }
.top-disclosures summary { cursor: pointer; padding: 8px 12px; font-weight: 800; }
.top-disclosures .disclosure-body { padding: 3px 13px 14px; line-height: 1.65; max-width: 700px; }
.top-disclosures #noticesPane { flex: 1 1 300px; }
.top-disclosures #noticesList a { display: block; padding: 5px 0; color: #0869a8; }
.top-disclosures #adminPane { flex: 1 1 210px; }
.admin-link{display:inline-flex;align-items:center;border:1px solid #cbdce7;border-radius:9px;background:#fff;padding:8px 12px;color:#245674;text-decoration:none;font-size:12px;font-weight:800}
.admin-link[hidden]{display:none}
.chart-caption{grid-column:1/-1;border-top:1px solid #e0ebee;padding:13px 0 2px;display:grid;gap:3px}
.chart-caption b{font-size:13px;color:#215c71}.chart-caption small{font-size:11px;color:#758b94}
.journey-route-group{border:1px solid #d7e5e7;border-radius:10px;overflow:hidden;background:#fff}
.journey-route-group summary{display:grid;grid-template-columns:75px 1fr auto;align-items:center;gap:12px;padding:12px;cursor:pointer;list-style:none}
.journey-route-group summary::-webkit-details-marker{display:none}
.journey-route-group summary small{display:block;margin-top:3px;color:#718b98;font-size:11px}
.journey-route-group summary strong{color:#0b72a8;font-size:11px}
.journey-route-trips{display:grid;gap:5px;padding:7px;background:#f4f9fa}
.journey-route-trips .journey-choice{grid-template-columns:75px 1fr 55px;padding:8px 10px}
.journey-route-trips .journey-choice>span:first-child{font-size:12px;font-weight:800;color:#176284}
.journey-route-trips .journey-choice>span:first-child small{font-size:11px;font-weight:600;color:#638292}
.journey-route-summary{display:grid;grid-template-columns:75px 1fr;align-items:center;gap:12px;padding:12px}
.journey-route-summary small{display:block;margin-top:3px;color:#718b98;font-size:11px}
.journey-more-trips{border-top:1px solid #dce9ed;margin-top:5px}
.journey-more-trips summary{display:block;color:#0b72a8;font-size:12px;font-weight:800;text-align:center;padding:10px;cursor:pointer}
.journey-more-trips .journey-choice{margin:5px 0}
.journey-choices[hidden]{display:none}
.journey-alight{scroll-margin-top:82px}
.journey-time-comparison{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}
.journey-time-comparison>div{background:#fff;border:1px solid #dce9ec;border-radius:9px;padding:9px 11px}
.journey-time-comparison small{display:block;color:#63818c;font-size:11px}
.journey-time-comparison b{display:block;color:#174e67;font-size:18px;margin:2px 0}
@media(max-width:520px){.journey-time-comparison{grid-template-columns:repeat(2,minmax(0,1fr))}}
.journey-solution{padding:clamp(18px,4vw,32px);background:linear-gradient(160deg,#ecf6f7,#fff 42%);border:1px solid #cce4e9}
.journey-result-heading{padding:14px 0 22px;text-align:center}
.journey-result-heading small{color:#548391;font-size:12px;letter-spacing:.13em}
.journey-result-heading h3{font-size:clamp(24px,5vw,38px);margin:8px 0;color:#14495e}
.journey-result-heading p{font-size:17px;color:#4c6976}
.journey-result-heading strong{display:inline-block;padding:7px 16px;border-radius:999px;background:#e5f4df;color:#38682c}
.journey-result-actions{display:flex;gap:10px;justify-content:center;margin-top:18px}
.journey-result-actions .button{min-width:130px}
.journey-map-fog{position:relative}
.journey-map-fog:after{content:'雾中识路 · 首次乘车后显示线路地图';position:absolute;z-index:1000;inset:0;display:grid;place-items:center;padding:24px;text-align:center;color:#f4f9f8;font-weight:800;background:linear-gradient(145deg,#315b6be8,#648278e8)}
@media(max-width:600px){.journey-result-actions .button{flex:1;min-width:0}.journey-choice small{line-height:1.35}}
.notice-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:4px 0 12px}.notice-summary span{background:#f3f8f8;border:1px solid #dce9e9;border-radius:8px;padding:8px;font-size:11px;color:#55737d}.notice-summary b{display:block;font-size:18px;color:#176184}
.notice-list{display:grid;gap:9px}.notice-item{display:block;border:1px solid #dce8ea;border-left:4px solid #80bd39;border-radius:8px;padding:12px;background:#fff;color:#234b5e;text-decoration:none}.notice-item b{font-size:13px}.notice-item small{margin-top:5px}.notice-item p{font-size:12px;line-height:1.55}.notice-item .pill{background:#e9f4df;color:#447828}.notice-item a{display:inline-block;font-size:11px;font-weight:800}
.top-inner{min-height:60px;padding-top:8px;padding-bottom:8px}.top-right span{display:none}.livery-chip{background:transparent;margin-right:4px}.livery-chip img{width:35px;height:22px}.availability-strip{padding:5px 12px;font-size:10px}.query-modes{gap:5px;background:#f3f7f8}.query-mode{min-height:46px;padding:8px 12px;border:1px solid #d7e3e5;border-radius:8px;box-shadow:none}.query-mode small,.mode-arrow,.mode-icon{display:none}.query-mode b{font-size:13px}.query-mode.active{background:#dff2d6;border-color:#85bf41}.hero{padding:15px 19px 13px;margin-bottom:10px}.hero h1{font-size:25px}.hero .search-row{margin-top:10px}.hero .metrics{margin-top:10px}
@media(max-width:600px){.top-inner{gap:7px}.brand{font-size:14px}.brand-mark{width:30px;height:30px}.livery-chip{display:none}.account-button{font-size:11px;padding:5px 7px}.query-modes{position:sticky;top:0;z-index:750;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:4px 0}.query-mode{min-height:37px;padding:5px 2px;justify-content:center}.query-mode b{font-size:11px}.hero{padding:13px}.hero h1{font-size:22px}.hero .metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.metric{padding:7px 5px}.metric b{font-size:14px}.metric span{font-size:9px}.tabs{top:43px}}
.admin-stats { display: grid; grid-template-columns: repeat(2,minmax(120px,1fr)); gap: 8px; }
.admin-stats div { padding: 8px; border-radius: 7px; background: #edf6fa; }
.admin-stats b, .admin-stats span { display: block; }
.admin-stats b { color: #086aaa; font-size: 20px; }
.admin-stats span { color: #5c7d8f; font-size: 10px; }
.admin-events { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.admin-events span { padding: 4px 7px; border-radius: 5px; background: #f0f6ef; font-size: 11px; }
.query-modes { grid-row: 2; position: sticky; top: 0; z-index: 750; padding: 7px 0; background: #f0f5f8; }
.hero { grid-row: 3; }
.tabs { grid-row: 4; top: 84px; z-index: 700; max-height: calc(100vh - 100px); overflow-y: auto; }
.panel { grid-row: 4; }
body[data-query-mode="driver"] .panel.active, body[data-query-mode="fleet"] .panel.active, body[data-query-mode="history"] .panel.active { grid-row: 3; }
.refresh-note { align-self: center; color: #dcecf5; font-size: 11px; font-weight: 700; }
.number-link { border: 0; background: none; padding: 0; color: #056db3; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.number-link:hover { color: #004b85; }
.vehicle-stop-control { align-items: center; margin: 12px 0; font-size: 12px; }
.vehicle-stop-control label { font-weight: 800; color: #245674; }
.vehicle-stop-control small { color: #748b9a; }
.selected-stop-estimate { margin-top: 5px; color: #0a6c8d; font-size: 11px; font-weight: 700; }
#scheduleDirections .day-button, #futureDirections .day-button { padding: 5px 8px; font-size: 11px; }
.analysis-grid { grid-template-columns: repeat(2, minmax(180px, 300px)) minmax(200px, 1fr); }
.travel-chart { margin-top: 15px; display: grid; gap: 6px; }
.chart-row { display: grid; grid-template-columns: 65px 1fr 25px; gap: 8px; align-items: center; font-size: 11px; color: #4d6d81; }
.chart-track { height: 12px; border-radius: 7px; background: #e9f1f6; overflow: hidden; }
.chart-track i { display: block; height: 100%; border-radius: 7px; background: linear-gradient(90deg, #0870b2, #8cc63f); }
.fleet-detail { margin-top: 20px; padding: 17px; border: 1px solid #c8dfed; border-radius: 12px; background: #f8fcff; }
.fleet-detail[hidden] { display: none; }
.fleet-detail h3 { margin: 0 0 8px; }
.fleet-detail-meta { color: #557586; font-size: 12px; line-height: 1.6; }
.hour-chart { display: flex; align-items: end; gap: 3px; height: 85px; margin: 14px 0; padding: 7px; border-bottom: 1px solid #b7cfdd; }
.hour-bar { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: end; align-items: center; color: #708b9a; font-size: 10px; }
.hour-bar i { width: 100%; max-width: 16px; border-radius: 3px 3px 0 0; background: #0870b2; }
.favorite-control { margin: 16px 0; padding: 13px; border: 1px solid #cde3eb; border-radius: 9px; background: #f5fafc; }
.favorite-control label { display: block; margin-bottom: 8px; font-weight: 800; font-size: 12px; }
.favorite-control small { display: block; margin-top: 8px; color: #537186; }
.remember-choice { display: flex; align-items: center; gap: 8px; font-weight: 500 !important; }
.game-choices { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; margin-top: 14px; }
.game-choices .button { text-align: left; }
.game-choices .correct { background: #dff3cf; border-color: #7aaf52; }
.game-choices .wrong { background: #fff0e9; border-color: #dc8b70; }
#gameResult { margin-top: 11px; font-weight: 800; }
.pattern-bars { display: grid; gap: 5px; margin-top: 13px; }
.pattern-bars .chart-row { grid-template-columns: minmax(130px, 230px) 1fr 28px; }
@media (max-width: 900px) {
  .query-modes { top: 0; }
  .tabs { position: sticky; top: 70px; z-index: 700; background: #f0f5f8; max-height: none; }
  .analysis-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .top-disclosures { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .top-disclosures #noticesPane, .top-disclosures #adminPane { grid-column: 1 / -1; }
  .query-modes { grid-template-columns: repeat(4,minmax(0,1fr)); gap: 3px; }
  .query-mode { min-height: 46px; padding: 5px 3px; }
  .query-mode b { font-size: 11px; }
  .tabs { top: 51px; }
  .game-choices { grid-template-columns: 1fr; }
  #panel-history .table-wrap { overflow: visible; border: 0; }
  #panel-history .table { min-width: 0; }
  #panel-history .table thead { display: none; }
  #panel-history .table tbody tr { display: block; margin: 0 0 10px; border: 1px solid #dce8ed; border-radius: 9px; background: #fff; overflow: hidden; }
  #panel-history .table td { display: flex; align-items: start; justify-content: space-between; gap: 9px; white-space: normal; padding: 7px 10px; text-align: right; }
  #panel-history .table td::before { content: attr(data-label); flex: 0 0 72px; text-align: left; color: #648294; font-weight: 700; }
  #panel-history .history-query-body { padding: 0 10px 14px; }
}

.top-disclosures{position:relative;z-index:800;display:grid;grid-template-columns:minmax(0,1fr);gap:7px;margin-bottom:12px}
.top-info{display:grid;grid-template-columns:minmax(0,1.8fr) repeat(2,minmax(0,1fr));gap:8px;min-width:0}
.top-info details{position:relative;min-width:0;border:1px solid #cfdfdc;border-radius:9px;background:#fff;box-shadow:0 2px 7px #153b3409}
.top-info details[open]{z-index:10;border-color:#8ebd7a}
.top-info summary{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:39px;padding:8px 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#315960;font-size:12px;font-weight:800}
.top-info #noticesPane{flex:none;border-color:#b8d9ad;background:linear-gradient(95deg,#f4faec,#fff)}
.top-info #noticesPane summary{color:#315c32}
.top-info #noticeDate{margin:0;color:#638168;font-size:10px;font-weight:600;white-space:nowrap}
.top-info .disclosure-body{position:absolute;top:calc(100% + 5px);left:0;z-index:11;width:min(510px,calc(100vw - 32px));max-height:min(55vh,470px);overflow:auto;padding:14px 16px;border:1px solid #d3e3dc;border-radius:9px;background:#fff;box-shadow:0 14px 28px #1e40312e;font-size:12px;line-height:1.7}
.top-info #noticesPane .disclosure-body{width:min(640px,calc(100vw - 32px))}
.top-info details:last-child .disclosure-body{left:auto;right:0}
.top-shortcuts{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px}
.top-shortcuts .admin-link{min-height:32px;padding:6px 12px;border-color:#d9e6e3;background:#f8fbfa;color:#285c66;font-size:11px}
.top-shortcuts .admin-link:hover{border-color:#9fc9b1;background:#eef7ec}
@media(max-width:700px){.top-info{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.top-info #noticesPane{grid-column:1/-1}.top-info summary{padding:8px 10px;font-size:11px}.top-shortcuts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px}.top-shortcuts .admin-link{justify-content:center}.top-info details:nth-child(2) .disclosure-body{left:0}.top-info details:nth-child(3) .disclosure-body{left:auto;right:0}}
.sun-map-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:9px;margin:12px 0;padding:12px;border:1px solid #d5e7e8;border-radius:10px;background:#f5faf9}.sun-map-tools label{grid-column:1/-1;color:#245568;font-size:13px;font-weight:800}.sun-map-tools label strong{margin-left:8px;color:#0b7094}.sun-map-tools input[type=range]{width:100%;accent-color:#187a9a}.sun-map-tools small{grid-column:1/-1;color:#587784;line-height:1.5}.spot-camera-icon span{width:34px;height:34px;background:#14799d;border-color:#fff;font-size:18px}.spot-camera-handle{display:grid;place-items:center;border:3px solid #fff;border-radius:50%;background:#11789e;color:#fff;box-shadow:0 2px 8px #17394580;font-size:21px;cursor:grab}.spot-vehicle-end{display:grid;place-items:center;border:3px solid #fff;border-radius:50%;background:#258045;color:#fff;box-shadow:0 2px 8px #17394580;font-size:17px;cursor:grab}.notice-modal{position:fixed;inset:0;z-index:2600;display:grid;place-items:center;padding:16px;background:#133543bd;overflow:auto}.notice-modal-card{width:min(100%,550px);max-height:min(85vh,760px);overflow:auto;padding:24px;border:1px solid #b9d8d0;border-radius:16px;background:#fff;box-shadow:0 18px 50px #12334255}.notice-modal-card h2{margin:5px 0 16px;color:#174a5c}.notice-modal-items{display:grid;gap:10px}.notice-modal-items article{border:1px solid #dce9e5;border-left:4px solid #83b845;border-radius:9px;padding:12px}.notice-modal-items h3{margin:7px 0 4px;font-size:15px;color:#24576a}.notice-modal-items small{display:block;color:#68818d}.notice-modal-items p{font-size:12px;line-height:1.6}.notice-modal-items a{font-size:12px;color:#126a9b}.notice-modal-actions{display:flex;justify-content:flex-end;margin-top:18px}@media(max-width:600px){.sun-map-tools{grid-template-columns:1fr}.notice-modal-card{padding:18px}}
.spot-vehicle-end span{display:block;line-height:1}
.query-modes{grid-template-columns:repeat(6,minmax(0,1fr))}.query-mode-link{text-decoration:none}.query-mode-link:hover{text-decoration:none}
.account-button{display:inline-flex;align-items:center;gap:7px;min-width:0}.account-button img,.account-initial{width:25px;height:25px;flex:none;border-radius:50%;object-fit:cover}.account-initial{display:grid;place-items:center;background:#e7f3d6;color:#136396;font-size:12px;font-weight:800}.account-initial[hidden],.account-button img[hidden]{display:none}
body[data-query-mode="spots"] .panel.active{grid-row:3;grid-column:1/-1}body[data-query-mode="spots"] .hero,body[data-query-mode="spots"] .tabs{display:none}.tabs [data-tab="spots"]{display:none}
@media(max-width:800px){.query-modes{grid-template-columns:repeat(3,minmax(0,1fr))}.query-mode{min-height:42px}.query-mode b{font-size:12px}.tabs{top:94px}}
@media(max-width:600px){.query-modes{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.query-mode{min-height:38px}.query-mode b{font-size:11px}.tabs{top:89px}.account-button img,.account-initial{width:22px;height:22px}}
.service-hours{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:8px}.service-hours>span{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border:1px solid #cae1d7;border-radius:7px;background:#fff;color:#315d66;font-size:12px}.service-hours b{color:#176b77;font-size:15px}.service-hours small{color:#68818a;font-size:11px}
.metrics{grid-template-columns:repeat(6,minmax(0,1fr))}.terminal-count-note{margin-top:8px;color:#647d80;font-size:11px}.terminal-metric{min-width:0}.terminal-metric b{color:#137765}.terminal-metric span{display:block;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.4}
@media(max-width:900px){.metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.query-modes{grid-template-columns:repeat(5,minmax(0,1fr))}.query-more{position:relative;min-width:0}.query-more>summary{height:100%;list-style:none;cursor:pointer}.query-more>summary::-webkit-details-marker{display:none}.query-more.active>summary,.query-more[open]>summary{border-color:#8cc63f;background:#f8fce9}.query-more-menu{position:absolute;right:0;top:calc(100% + 7px);z-index:900;width:max(245px,100%);display:grid;gap:5px;padding:7px;border:1px solid #cddedb;border-radius:10px;background:#fff;box-shadow:0 13px 28px #12363b29}.query-more-menu .query-mode{width:100%;min-height:46px;text-align:left}.query-more-menu .query-mode span{min-width:0}.query-more-menu .query-mode small{display:block}
@media(max-width:800px){.query-modes{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:480px){.query-modes{grid-template-columns:repeat(3,minmax(0,1fr))}.query-more-menu{width:min(260px,95vw)}}
.unified-search{position:relative;display:flex;align-items:center;gap:8px;min-width:0;padding:8px 10px;border:1px solid #cadcd7;border-radius:10px;background:#fff;box-shadow:0 2px 8px #173c340b}.unified-search>label{flex:none;color:#285e64;font-size:12px;font-weight:800}.unified-search>.field{flex:1;min-width:0;min-height:34px;border:0;background:#f4f8f7}.unified-search>.button{min-height:34px;padding:5px 14px}.unified-results{position:absolute;top:calc(100% + 5px);left:0;right:0;z-index:950;max-height:min(65vh,580px);overflow:auto;padding:8px;border:1px solid #c4d9d3;border-radius:10px;background:#fff;box-shadow:0 16px 30px #173c3440}.unified-results[hidden]{display:none}.unified-group{padding:6px 0}.unified-group+ .unified-group{border-top:1px solid #e7eeee}.unified-group>b{display:block;padding:2px 10px 5px;color:#64818a;font-size:11px}.unified-group button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;border-radius:7px;background:transparent;color:#234f57;text-align:left;cursor:pointer}.unified-group button:hover,.unified-group button:focus-visible{background:#eff7ed}.unified-group button span{font-size:13px;font-weight:700}.unified-group button small{color:#728c8d;font-size:11px}.unified-empty{padding:12px;color:#687f81;font-size:12px}
@media(max-width:600px){.unified-search{gap:5px;padding:6px}.unified-search>label{font-size:11px}.unified-search>.button{padding:5px 8px}.unified-group button{align-items:flex-start;flex-direction:column;gap:2px}}
.theme-choice{display:grid;gap:6px;margin:10px 0 14px;color:#496b77;font-size:12px;font-weight:750}.theme-choice select{width:100%}
body[data-theme="tonglu"] .top{background:#176c69;border-bottom-color:#9ec79d}body[data-theme="tonglu"] .hero{background:linear-gradient(110deg,#1c5e5a,#388d79 78%,#71ae83)}body[data-theme="tonglu"] .query-mode.active,body[data-theme="tonglu"] .tab.active,body[data-theme="tonglu"] .button.primary{background:#227d69;border-color:#227d69;color:#fff}
body[data-theme="chunan"] .top{background:#155b82;border-bottom-color:#b2dbe7}body[data-theme="chunan"] .hero{background:linear-gradient(110deg,#17466f,#2385aa 78%,#62afc2)}body[data-theme="chunan"] .query-mode.active,body[data-theme="chunan"] .tab.active,body[data-theme="chunan"] .button.primary{background:#247f9f;border-color:#247f9f;color:#fff}
body[data-theme="jiande"] .top{background:#574e48;border-bottom-color:#c7a87d}body[data-theme="jiande"] .hero{background:linear-gradient(110deg,#5a5046,#8a7660 78%,#a88c72)}body[data-theme="jiande"] .query-mode.active,body[data-theme="jiande"] .tab.active,body[data-theme="jiande"] .button.primary{background:#80634b;border-color:#80634b;color:#fff}
#directionSelect{min-height:36px;max-width:min(230px,58vw);padding:5px 8px;font-size:12px}#scheduleDirections,#futureDirections{gap:5px}#scheduleDirections .day-button,#futureDirections .day-button{min-height:31px;padding:4px 8px;font-size:11px;line-height:1.3}
.map-bus-icon{background:none;border:0}.map-bus-pin{position:relative;display:grid;place-items:center;width:34px;height:34px;border:2px solid #fff;border-radius:11px;background:#187b78;color:#fff;box-shadow:0 2px 9px #183c4870}.map-bus-pin:after{content:'';position:absolute;bottom:-5px;left:12px;width:8px;height:8px;background:#187b78;transform:rotate(45deg);border-right:2px solid #fff;border-bottom:2px solid #fff}.map-bus-pin svg{width:20px;height:20px;position:relative;z-index:1}.mapbox .stop-label{font-size:10px;background:#f9fffd;border-color:#b4d4c9;color:#215a61;box-shadow:0 1px 4px #173d3c2b}
body:not(.driver-authorized) .query-mode[data-query-mode="driver"],body:not(.driver-authorized) .tab[data-tab="driver"],body:not(.driver-authorized) #panel-driver{display:none!important}
.predicted-times{display:flex;flex-wrap:wrap;gap:7px;margin:9px 0 20px}.predicted-times span{display:inline-flex;align-items:center;gap:6px;border:1px solid #c9e2d4;border-radius:7px;background:#f4faf4;padding:7px 9px;color:#23596b;font-size:12px;font-weight:700}.predicted-times small{font-size:10px;color:#6f8b84;font-weight:500}
.query-modes{grid-template-columns:repeat(7,minmax(0,1fr))}@media(max-width:800px){.query-modes{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:600px){.query-modes{grid-template-columns:repeat(2,minmax(0,1fr))}}
.support-card{margin-top:15px;padding:11px 13px;border:1px solid #d7e6df;border-radius:10px;background:#f8fbf8;color:#355f67;font-size:12px}.support-card summary{cursor:pointer;font-weight:800}.support-card p{line-height:1.65}.support-card label{display:flex;align-items:flex-start;gap:8px;line-height:1.5}.support-card label input{margin-top:3px}.support-card .button{display:block;margin:10px 0 6px}.support-card small{display:block;color:#69828a}#vipStatus{color:#317b70;font-size:12px;font-weight:800}

.spot-camera-handle span{display:block;line-height:1;font-size:16px}@media(max-width:800px){.spot-layout .spot-tools{margin:11px 0 2px}.spot-layout .spot-map{height:300px}}

.spot-filter-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.spot-filter-toolbar input{min-width:0;flex:1 1 140px}
@media(max-width:650px){
 .spot-filter-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:9px}
 .spot-filter-toolbar .field{width:100%;min-width:0;font-size:12px}
 .spot-filter-toolbar .button{grid-column:1/-1;min-height:36px}
 .spot-layout .spot-map{height:245px}
 .spot-map-legend{left:7px;top:7px;padding:6px 8px;font-size:9px}
 .spot-map-legend b{font-size:11px}
 .spot-list{max-height:none;overflow:visible;margin-top:9px}
 .sun-tools[open]{position:fixed;left:8px;right:8px;bottom:8px;z-index:1400;max-height:54dvh;overflow:auto;margin:0!important;padding:12px 13px;border:1px solid #aecfc9;border-radius:15px;background:#fff;box-shadow:0 -10px 35px #163d4660}
 .sun-tools[open] summary{position:sticky;top:-12px;z-index:2;margin:-12px -13px 8px;padding:12px 13px;background:#fff;border-radius:15px 15px 0 0}
 .sun-tools .controls{display:grid;grid-template-columns:1fr 1fr}
 .sun-tools .controls>*{width:100%;min-width:0}
}

.vip-color-field:not([hidden]){display:flex;align-items:center;flex-wrap:wrap;gap:7px}.vip-color-field input[type=color]{width:40px;height:30px;padding:2px;border:1px solid #bfd3d7;border-radius:7px;background:#fff}.vip-color-field small{color:#667f88;font-weight:400}
