*{box-sizing:border-box}
:root{
  --bg:#f5f7fa;
  --panel:#fff;
  --line:#dfe5eb;
  --text:#17212b;
  --muted:#667788;
  --green:#177a48;
  --green2:#e8f5ed;
  --blue:#2e72c7;
  --blue2:#eaf2fb;
  --amber:#b7791f;
  --amber2:#fff7e6;
  --shadow:0 1px 3px rgba(0,0,0,.07)
}
body{
  margin:0;
  font-family:Arial,Helvetica,sans-serif;
  background:var(--bg);
  color:var(--text);
  font-size:12px
}
.topbar{
  height:52px;
  background:#fff;
  border-bottom:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 24px
}
.brand-title{font-size:15px;font-weight:700}
.brand-sub{font-size:10px;color:var(--muted);margin-top:2px}
nav{display:flex;height:100%}
nav a{
  min-width:92px;
  padding:18px 15px 0;
  text-align:center;
  text-decoration:none;
  color:#52606d;
  border-bottom:3px solid transparent;
  font-weight:600
}
nav a.active{color:var(--green);border-bottom-color:var(--green)}
main{max-width:1580px;margin:auto;padding:14px 20px 28px}
.title-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:10px
}
h1{font-size:20px;margin:0 0 3px}
.muted{color:var(--muted)}
.small{font-size:10px}
.live-pill{
  background:var(--green2);
  color:var(--green);
  border:1px solid #cce8d7;
  padding:6px 10px;
  border-radius:20px;
  font-weight:700
}
.dot{
  display:inline-block;
  width:7px;height:7px;
  background:var(--green);
  border-radius:50%;
  margin-right:5px
}
.filterbar{
  background:#fff;
  border:1px solid var(--line);
  border-radius:8px;
  padding:8px 10px;
  display:grid;
  grid-template-columns:1.05fr 1.05fr 1.05fr .9fr .9fr .9fr .9fr auto auto;
  gap:8px;
  align-items:end;
  box-shadow:var(--shadow);
  margin-bottom:10px
}
label{font-size:10px;color:#566574;font-weight:700}
select,input,button{
  width:100%;
  height:30px;
  margin-top:3px;
  border:1px solid #cfd7df;
  border-radius:5px;
  background:#fff;
  padding:0 8px;
  font-size:11px;
  color:#24323f
}
button{cursor:pointer;font-weight:700}
button.secondary{width:auto;min-width:72px}
.kpi-grid{
  display:grid;
  gap:8px;
  margin-bottom:10px
}
.kpi-grid.seven{grid-template-columns:repeat(7,1fr)}
.kpi,.panel{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  box-shadow:var(--shadow)
}
.kpi{padding:10px 12px;min-height:78px}
.kpi span{font-size:10px;color:#607080;font-weight:700}
.kpi strong{display:block;font-size:23px;line-height:1;margin:8px 0 5px}
.kpi small{font-size:9px;color:#7a8996}
.analytics-grid{
  display:grid;
  grid-template-columns:1.05fr 1fr 1.1fr 1.05fr;
  gap:8px;
  margin-bottom:10px
}
.panel{padding:11px 12px}
.panel-title{font-weight:700;font-size:12px;margin-bottom:9px}
.panel-title.big{font-size:15px}
.donut-row{display:flex;align-items:center;gap:16px}
.donut{
  width:90px;height:90px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
  flex:none
}
.donut:after{
  content:"";
  width:55px;height:55px;
  background:#fff;
  border-radius:50%;
  position:absolute
}
.donut>div{z-index:1;text-align:center}
.donut strong{display:block;font-size:17px}
.donut span{font-size:9px;color:var(--muted)}
.legend{flex:1}
.legend>div{
  display:grid;
  grid-template-columns:12px 1fr auto auto;
  gap:5px;
  align-items:center;
  padding:6px 0;
  border-bottom:1px solid #edf0f3
}
.legend>div:last-child{border:0}
.legend span{color:var(--muted);font-size:10px}
.legend-dot{
  display:inline-block;
  width:8px;height:8px;border-radius:50%
}
.legend-dot.inbound{background:var(--green)}
.legend-dot.outbound{background:var(--blue)}
.metric-pairs{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px
}
.metric-pairs>div{
  background:#f8fafb;
  border:1px solid #edf0f3;
  border-radius:6px;
  padding:8px
}
.metric-pairs span{display:block;color:var(--muted);font-size:9px}
.metric-pairs strong{display:block;font-size:16px;margin-top:4px}
.status-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px
}
.status-row>div{
  border-left:3px solid #d8e0e7;
  padding:5px 7px;
  background:#fafbfc
}
.status-row strong{font-size:16px;display:block}
.status-row span{font-size:9px;color:var(--muted)}
.process-panel{margin-bottom:10px}
.panel-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start
}
.process-legend{display:flex;gap:12px;font-size:10px}
.process-chart{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:8px;
  margin-top:8px
}
.phase-metric{
  border:1px solid #e4e9ee;
  border-radius:6px;
  padding:8px
}
.phase-metric h4{font-size:10px;margin:0 0 7px}
.bar-row{
  display:grid;
  grid-template-columns:55px 1fr 42px;
  align-items:center;
  gap:5px;
  font-size:9px;
  margin:5px 0
}
.bar{
  height:7px;
  border-radius:4px;
  background:#edf1f4;
  overflow:hidden
}
.fill{height:100%;border-radius:4px}
.fill.inbound{background:var(--green)}
.fill.outbound{background:var(--blue)}
.platform-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-bottom:10px
}
.ingestion{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:7px
}
.ingestion-card{
  padding:8px;
  border-radius:6px;
  background:#f8fafb;
  border:1px solid #edf0f3
}
.ingestion-card strong{font-size:15px;display:block}
.ingestion-card span{font-size:9px;color:var(--muted)}
.journey-panel{padding:12px}
.journey-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:15px
}
.journey-controls{
  display:grid;
  grid-template-columns:minmax(220px,340px) minmax(280px,420px);
  gap:7px;
  width:min(760px,60%)
}
.phase-cards{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:16px;
  margin:13px 8px 8px
}
.journey-phase{
  position:relative;
  min-height:54px;
  padding:8px 10px;
  border:1px solid #dce3e9;
  border-radius:7px;
  background:#f8fafb
}
.journey-phase:not(:last-child):after{
  content:"→";
  position:absolute;
  right:-14px;
  top:17px;
  color:#83909c;
  font-size:17px
}
.journey-phase.done{
  background:var(--green2);
  border-color:#b9dec8
}
.journey-phase.partial{
  background:var(--amber2);
  border-color:#ead39e
}
.journey-phase strong{display:block;font-size:10px}
.journey-phase span{display:block;font-size:9px;color:var(--muted);margin-top:5px}
.road-wrap{margin:6px 12px 12px}
.road-scenery{
  height:18px;
  color:#4c8a5e;
  font-size:15px;
  letter-spacing:15px;
  overflow:hidden
}
.road{
  height:39px;
  border-radius:5px;
  background:#59636b;
  position:relative;
  overflow:hidden
}
.road-line{
  position:absolute;
  top:19px;
  left:0;right:0;
  border-top:2px dashed #dfe4e7
}
.truck{
  position:absolute;
  top:3px;
  left:0;
  font-size:27px;
  transition:left .8s ease;
  transform:scaleX(-1); /* COMBINED5_TRUCK_FACES_COMPLETE_V1 */
}
.tracker-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-top:1px solid #e5eaee;
  padding-top:10px;
  font-size:11px
}
.step-grid{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:5px;
  margin-top:7px
}
.step-card{
  min-height:64px;
  border:1px solid #dfe5ea;
  border-radius:5px;
  padding:6px;
  background:#fafbfc;
  overflow:hidden
}
.step-card.done{
  background:#edf8f1;
  border-color:#c4e2cf
}
.step-no{
  font-size:8px;
  color:#788793;
  margin-bottom:3px
}
.step-name{
  font-size:9px;
  font-weight:700;
  line-height:1.2;
  min-height:22px
}
.step-mode{
  margin-top:5px;
  font-size:8px;
  color:#6b7985
}
.check{color:var(--green);font-weight:700}
@media(max-width:1150px){
  .kpi-grid.seven{grid-template-columns:repeat(4,1fr)}
  .analytics-grid{grid-template-columns:1fr 1fr}
  .step-grid{grid-template-columns:repeat(8,1fr)}
}



/* COMBINED5_APPOINTMENT_DETAIL_TABLE_V1 */
.appointment-detail-panel{margin-top:20px}.appointment-detail-head{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:14px}.detail-table-filter{min-width:320px;max-width:460px;width:38%;padding:10px 12px;border:1px solid #d7dee8;border-radius:8px;background:#fff}.detail-table-wrap{overflow:auto;max-height:520px;border:1px solid #e3e8ef;border-radius:10px}.detail-table{width:100%;border-collapse:separate;border-spacing:0;min-width:1900px;font-size:13px}.detail-table th,.detail-table td{padding:10px 12px;border-bottom:1px solid #edf0f4;text-align:left;white-space:nowrap}.detail-table th{position:sticky;top:0;background:#f7f9fc;z-index:2;cursor:pointer;user-select:none}.detail-table th:hover{background:#eef3f9}.detail-table th.sort-asc::after{content:" ▲"}.detail-table th.sort-desc::after{content:" ▼"}.detail-table tbody tr:hover{background:#fafcff}.detail-table-count{padding-top:9px}@media(max-width:800px){.appointment-detail-head{align-items:stretch;flex-direction:column}.detail-table-filter{width:100%;max-width:none;min-width:0}}
