.people-heading{background:radial-gradient(ellipse at 90% 10%,#e9e1ff 0,transparent 60%),linear-gradient(120deg,#e5f0ff,#f7f9ff)}
.people-heading h1{letter-spacing:-1px}.people-summary{display:flex;gap:30px;margin-top:26px}.people-summary strong{font-size:29px;line-height:1.1;font-variant-numeric:tabular-nums}.people-summary span{font-size:14px;color:var(--muted);margin-left:7px}.people-summary>div{border-right:1px solid #cdd9ef;padding-right:30px}.people-summary>div:last-child{border:0}
.people-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding-top:8px}.people-sections{display:flex;gap:25px;font-size:14px;font-weight:650}.people-sections a:hover{color:var(--blue)}.access-status{font-size:14px;color:var(--muted);margin:12px 0 24px}.connections{padding:30px}.connections .section-head{margin-bottom:20px}.view-tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:24px;overflow:auto}.view-tabs button{border:0;border-radius:9px;padding:9px 17px;white-space:nowrap;background:#f2f5fb;color:var(--body);font-size:13px}.view-tabs button[aria-selected=true]{background:var(--ink);color:#fff}.group-overview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:13px}.group-tile{position:relative;text-align:left;border:1px solid var(--line);border-radius:14px;padding:18px 15px;background:#fbfcff;min-width:0;transition:transform .18s,border-color .18s}.group-tile:hover{transform:translateY(-3px);border-color:var(--group-color)}.group-tile[aria-pressed=true]{border-color:var(--group-color);background:#eff4ff}.group-tile:before{content:'';height:3px;position:absolute;top:0;left:18px;right:18px;background:var(--group-color);border-radius:0 0 4px 4px}.group-tile h3{font-size:18px}.group-tile .group-size{position:absolute;right:13px;top:18px;font-size:13px;color:var(--muted)}.group-tile p{font-size:13px;color:var(--body);margin-top:11px}.group-tile small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.graph-caption{font-size:13px;color:var(--muted);margin-top:17px}.chart-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:25px;align-items:center}.chart-svg{display:block;width:100%;max-height:420px;overflow:visible}.chart-svg text{fill:var(--ink);font-family:inherit}.chart-svg [role=button]{cursor:pointer}.chart-svg [role=button]:focus-visible{outline:none;filter:drop-shadow(0 0 4px #13235b)}.chart-legend{display:grid;grid-template-columns:1fr 1fr;gap:10px}.legend-item{border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 13px;display:flex;align-items:center;gap:9px;font-size:12px}.legend-item[aria-pressed=true]{background:#eef3ff;border-color:var(--blue)}.legend-item i{width:8px;height:8px;border-radius:50%}.legend-item span:last-child{margin-left:auto;color:var(--muted)}.route-rows{display:grid;gap:12px}.connection-route{display:grid;grid-template-columns:125px 20px 1fr;gap:12px;align-items:center;padding:17px;border-radius:13px;background:#f6f8fd}.connection-route .route-bus{background:var(--ink);color:#fff;border:0;border-radius:11px;padding:12px;text-align:left}.route-bus strong{display:block;font-size:18px}.route-bus small{font-size:12px;opacity:.7}.route-groups{display:flex;gap:10px;flex-wrap:wrap}.route-group{background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 17px;font-size:13px}.route-group small{display:block;color:var(--muted);font-size:12px}.network-controls{display:flex;align-items:center;gap:12px;font-size:12px;margin-bottom:15px}.network-controls select{max-width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 10px;background:white;color:var(--ink)}.network-controls label{display:flex;gap:8px;align-items:center}.network-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(180px,1fr);align-items:center;gap:20px}.network-list{display:flex;flex-wrap:wrap;gap:8px}.network-person{padding:7px 13px;border:1px solid var(--line);background:white;border-radius:20px;font-size:12px}.network-person[aria-pressed=true]{background:var(--ink);color:white}.network-hint{font-size:14px;color:var(--muted);margin-bottom:14px}.directory-filters{display:grid;grid-template-columns:minmax(0,2fr) 1fr 1fr;gap:14px;padding:19px;border:1px solid var(--line);border-radius:15px;background:#fff}.directory-filters label{min-width:0}.directory-filters span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.directory-filters input,.directory-filters select{width:100%;border:1px solid #dce4f5;border-radius:9px;padding:10px 12px;background:#fafbff;color:var(--ink);min-height:44px}.result-status{font-size:14px;color:var(--muted);margin:15px 0}.text-button{border:0;background:none;color:var(--blue);font-size:12px;cursor:pointer}.person-group{margin-top:28px}.person-group:first-child{margin-top:0}.person-group-title{display:flex;align-items:center;gap:10px;margin-bottom:14px}.person-group-title h3{font-size:21px}.person-group-title small{font-size:13px;color:var(--muted)}.person-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.person-card{display:flex;flex-direction:column;border:1px solid var(--line);background:#fff;border-radius:16px;padding:20px;min-width:0}.person-card-top{display:flex;align-items:center;gap:11px}.name-avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:#edf1ff;color:var(--group-color,#6776b4);font-size:17px;font-weight:650;flex-shrink:0}.person-card h3{font-size:17px;line-height:1.4}.person-meta{display:flex;gap:5px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:4px}.person-role{background:#eee8ff;border-radius:4px;color:#7050b5;padding:0 5px}.person-title{font-size:14px;color:var(--body);margin:15px 0;line-height:1.8;overflow-wrap:anywhere}.person-bottom{border-top:1px solid #edf0f8;padding-top:12px;margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px}.person-phone{font-size:14px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.person-bottom button{border:0;background:#f2f5ff;color:var(--blue);border-radius:7px;font-size:11px;padding:7px 10px}.room-lock{font-size:12px;color:var(--muted);display:block;margin-top:4px}.person-note{font-size:12px;color:#8c643d;margin-bottom:12px}.empty-state{padding:45px;text-align:center;border:1px dashed #bdcbe5;border-radius:14px;color:var(--muted)}.fleet-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.fleet-card{border:1px solid var(--line);border-radius:16px;padding:22px;background:linear-gradient(145deg,#edf3ff,#fff)}.fleet-card h3{font-size:22px}.fleet-card .plate{display:inline-block;margin:10px 0;font-size:14px}.fleet-card p{font-size:14px;color:var(--body)}.fleet-card a{display:block;color:var(--blue);font-size:19px;font-weight:650;white-space:nowrap;margin-top:12px;font-variant-numeric:tabular-nums}.fleet-card small{display:block;font-size:12px;color:var(--muted);margin-top:5px}.directory-source{margin-top:36px;padding:20px 0;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.people-dialog{width:min(470px,calc(100% - 32px));max-height:calc(100dvh - 50px);overflow:auto;border:1px solid var(--line);border-radius:20px;padding:28px;color:var(--ink);box-shadow:0 24px 100px #13235b40}.people-dialog::backdrop{background:#13235b70;backdrop-filter:blur(4px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.dialog-close{border:0;background:#f0f3fb;width:32px;height:32px;border-radius:50%;font-size:23px;color:var(--body);line-height:1}.people-dialog h2{font-size:24px}.people-dialog p{font-size:15px;color:var(--body);margin-top:12px;line-height:1.8}.people-dialog .form-error{color:#a8344d;min-height:24px;margin-bottom:14px}.people-dialog .dialog-footnote{font-size:13px;color:var(--muted)}.detail-data{margin:22px 0;display:grid;grid-template-columns:75px 1fr;gap:13px;font-size:16px}.detail-data dt{color:var(--muted);font-size:14px}.detail-data dd{margin:0;overflow-wrap:anywhere}.detail-data a{color:var(--blue);font-variant-numeric:tabular-nums}.detail-data .room-number{font-size:24px;font-weight:700}.detail-actions{display:flex;gap:9px;flex-wrap:wrap}.detail-actions button{font-size:12px}.load-error{padding:25px;background:#fff3ef;border-radius:12px}.no-scroll{overflow:hidden}
@media(max-width:1100px){.group-overview{grid-template-columns:repeat(5,minmax(0,1fr))}.group-tile{padding:15px 11px}.group-tile .group-size{position:static;display:block;margin-top:4px}.group-tile p{font-size:12px}.person-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fleet-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.connections{padding:21px}.group-overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.group-tile{padding:16px}.group-tile .group-size{position:absolute;right:13px;top:16px;margin:0}.group-tile p{font-size:13px}.people-summary{gap:15px}.people-summary strong{font-size:25px}.people-summary>div{padding-right:15px}.people-summary span{font-size:12px;margin-left:4px}.people-toolbar{align-items:flex-start;flex-wrap:wrap}.people-sections{gap:25px}.people-toolbar .btn{padding:8px 11px;min-height:36px;font-size:11px}.access-status{font-size:13px}.view-tabs{gap:5px}.view-tabs button{padding:8px 11px;font-size:12px}.chart-split,.network-layout{grid-template-columns:1fr}.chart-svg{max-height:340px}.chart-legend{gap:8px}.network-controls label{flex-wrap:wrap}.connection-route{grid-template-columns:75px 12px 1fr;gap:8px;padding:12px}.connection-route .route-bus{padding:9px}.route-bus strong{font-size:16px}.route-bus small{font-size:11px}.route-group{padding:7px 11px}.route-groups{gap:7px}.directory-filters{grid-template-columns:1fr 1fr;padding:14px;gap:10px}.directory-filters .search-field{grid-column:1/-1}.person-grid{grid-template-columns:1fr}.person-card{padding:19px}.person-title{margin:12px 0}.fleet-card{padding:16px}.fleet-card a{font-size:17px}.fleet-card h3{font-size:19px}.people-dialog{padding:23px}.person-group-title h3{font-size:19px}}
@media print{.people-toolbar,.view-tabs,.people-dialog,.directory-filters,.person-bottom button{display:none!important}}

/* Progressive group browsing and on-demand contact disclosure. */
.directory-actions{display:flex;gap:14px;flex-wrap:wrap}.person-bottom .room-button{display:block;padding:0;margin-top:7px;background:none;font-size:11px}.phone-toggle{white-space:nowrap}.phone-toggle:disabled{color:var(--muted)}.phone-reveal{padding:14px 0 0;margin-top:12px;border-top:1px solid var(--line)}.full-phone{display:block;font-size:22px;font-variant-numeric:tabular-nums}.phone-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}.phone-actions button,.phone-actions a{border:1px solid var(--line);background:#f5f7ff;border-radius:7px;padding:6px 11px;font-size:12px;color:var(--blue)}.copy-status{font-size:13px;color:var(--muted)}.network-viewport{overflow:auto;max-height:650px;border:1px solid var(--line);border-radius:12px;background:#fcfdff}.global-network{display:block;max-width:none;height:auto;min-width:650px}.global-network text{fill:var(--ink);font-family:inherit}.global-network [role=button]{cursor:pointer}.global-network [role=button]:focus-visible{outline:2px solid var(--blue)}.network-controls{flex-wrap:wrap}.view-tabs{flex-wrap:wrap;overflow:visible}.chart-legend{min-width:0}.legend-item{min-width:0}.legend-item span:last-child{white-space:nowrap}.directory-filters select{min-width:0}
@media(max-width:700px){.directory-actions{gap:10px}.network-viewport{max-height:420px}.chart-legend{grid-template-columns:1fr 1fr}.legend-item{padding:9px 7px;gap:5px;font-size:11px}.view-tabs button{flex:1 0 27%;padding:8px}.person-bottom .phone-toggle{padding:9px 12px}.directory-actions button{font-size:11px}}
@media print{.phone-reveal{display:none!important}}

/* Bright chart colors shared across the directory. */
.view-tabs{background:#f0f4ff;border:0;border-radius:24px;padding:7px;gap:5px}.view-tabs button{background:transparent;border-radius:18px;color:#4a5f91;font-weight:650}.view-tabs button[aria-selected=true]{background:white;color:#2861ff;box-shadow:0 4px 14px #3b6cff15}.group-tile{background:color-mix(in srgb,var(--group-color) 5%,white)}.group-tile:before{height:4px}.group-tile:hover{box-shadow:0 7px 23px #3978ff12}.name-avatar{background:color-mix(in srgb,var(--group-color) 12%,white)}.connection-route{background:#f4f7ff}.connection-route .route-bus{background:var(--route-color)}.route-group{border-color:color-mix(in srgb,var(--group-color) 40%,white);background:color-mix(in srgb,var(--group-color) 6%,white)}.network-person[aria-pressed=true]{background:#3978ff}.people-page .directory-filters{grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr))}.region-map-viewport{overflow:auto;width:100%;border-radius:16px;background:#fcfdff}.region-map{display:block;width:100%;height:auto;min-width:750px}.region-map text{fill:#182b63;font-family:inherit;paint-order:stroke;stroke:#fcfdff;stroke-width:4px;stroke-linejoin:round}.region-map [role=button]{cursor:pointer}.region-map [role=button]:focus-visible{outline:none;filter:drop-shadow(0 0 5px #3978ff)}.map-intro{font-size:15px;color:var(--muted);margin-bottom:15px}.region-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:17px}.region-chip{border:1px solid #d7e3ff;background:#f5f8ff;border-radius:18px;padding:7px 12px;color:#3263bd;font-size:12px}.region-chip[aria-pressed=true]{border-color:#ff4caa;background:#fff0f8;color:#bc2073}.map-flight{animation:map-flight 7s linear infinite;pointer-events:none}@keyframes map-flight{to{stroke-dashoffset:-777}}
@media(max-width:700px){.people-page .directory-filters{grid-template-columns:1fr 1fr}.people-page .search-field{grid-column:1/-1}.region-chip{padding:7px 10px;font-size:11px}.map-intro{font-size:13px}.region-map-viewport{max-height:480px}.view-tabs{border-radius:17px}}
@media(prefers-reduced-motion:reduce){.map-flight{animation:none}}
@media(max-width:700px){
  .connections{padding:16px}
  .region-map-viewport{overflow:hidden;max-height:none}
  .region-map{min-width:0;width:100%;height:auto}
  .region-map text{font-size:50px;stroke-width:6px}
  .map-label-count{display:none}
  .region-map .map-venue-label{font-size:34px;text-anchor:end;transform:translate(35px,-15px)}
  .region-map [data-region="东营"] text{transform:translate(18px,-20px)}
  .region-map [data-region="泰安"] text{transform:translate(25px,-12px)}
  .region-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .region-chip{min-height:44px;padding:8px 4px;font-size:12px;line-height:1.4;white-space:normal;word-break:keep-all;border-radius:12px}
  .map-intro{font-size:14px}
}
.fleet-card .fleet-roster-link{font-size:18px;white-space:normal;margin:0}.fleet-card .fleet-contact{overflow-wrap:anywhere}.fleet-card .fleet-dial{display:inline-flex;font-size:12px;min-height:38px;padding:8px 13px;background:var(--blue);border-color:var(--blue);color:white;margin-top:14px}
@media(max-width:700px){.fleet-card .fleet-roster-link{font-size:15px}.fleet-card .fleet-contact{font-size:13px}}
