:root{--color-bg: #ffffff;--color-canvas: #fafafa;--color-text: #141414;--color-muted: #6f6d6e;--color-line: #ececec;--color-line-strong: #dcdcdc;--color-hover: #f4f4f4;--color-accent: #ff3c00;--color-accent-strong: #d23a06;--color-accent-soft: #ffe3d8;--color-on-accent: #ffffff;--pill-orange-bg: #fdf0e8;--pill-orange-text: #a8551f;--pill-blue-bg: #e6f6fc;--pill-blue-text: #2a6f8c;--pill-green-bg: #e4fbef;--pill-green-text: #237a4b;--pill-rose-bg: #fde7ee;--pill-rose-text: #b0365c;--pill-gray-bg: #f2f2f2;--pill-gray-text: #5f5d5e;--color-danger: var(--pill-rose-text);--color-danger-soft: var(--pill-rose-bg);--color-success: var(--pill-green-text);--color-success-soft: var(--pill-green-bg);--color-lock: var(--pill-blue-text);--color-lock-soft: var(--pill-blue-bg);--color-caution-bg: #fff6dc;--color-caution-line: #ecd28a;--font-sans: "Pretendard", system-ui, "Malgun Gothic", "Apple SD Gothic Neo", sans-serif;--fs-caption: 12px;--fs-body-sm: 13px;--fs-body: 14px;--fs-h3: 16px;--fs-h2: 20px;--fs-kpi: 30px;--fw-medium: 500;--fw-bold: 600;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--border: 1px solid var(--color-line);--focus-ring: 2px solid var(--color-accent-strong);--dur-fast: 85ms;--dur-base: .2s;--sidebar-w: 236px}:root{font-family:var(--font-sans);font-size:var(--fs-body);color:var(--color-text);background:var(--color-bg)}body{margin:0}.fleet-map{height:480px;width:100%;border-radius:12px;margin-top:16px;z-index:0}.fleet-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.fleet-controls input{vertical-align:middle}.map-choice{margin:20px 28px 0 244px}@media(max-width:760px){.map-choice{margin:12px}.fleet-map{height:360px}}h1{font-size:var(--fs-h2);font-weight:var(--fw-bold);letter-spacing:-.01em;margin:0 0 var(--space-1)}h2{font-size:var(--fs-h3);font-weight:var(--fw-bold);margin:0 0 var(--space-3)}h3{font-size:var(--fs-body);font-weight:var(--fw-bold)}b,strong{font-weight:var(--fw-bold)}code{font-size:.85em;background:var(--color-hover);padding:1px var(--space-1);border-radius:var(--radius-sm)}a{color:inherit;text-decoration:none}#root{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100dvh}main{grid-column:2;max-width:1440px;width:100%;box-sizing:border-box;margin:0;padding:var(--space-6) var(--space-8) var(--space-8);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-content:start}.appbar{grid-column:1;grid-row:1 / span 2;position:sticky;top:0;height:100dvh;box-sizing:border-box;display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-5) var(--space-4);background:var(--color-bg);border-right:var(--border)}.brand{display:flex;align-items:center;gap:10px;font-size:var(--fs-h3);font-weight:var(--fw-bold);padding:0 var(--space-2)}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-on-accent);font-size:var(--fs-body-sm)}.side-nav{display:flex;flex-direction:column;gap:2px}.side-nav a{display:flex;align-items:center;gap:10px;padding:9px var(--space-3);border-radius:var(--radius-md);color:var(--color-text);font-weight:var(--fw-medium);transition:background-color var(--dur-base) ease}.side-nav a .icon{color:var(--color-muted);vertical-align:0}.side-nav a:hover{background:var(--color-hover)}.side-nav a[aria-current=page]{background:var(--color-hover);font-weight:var(--fw-bold)}.side-nav a[aria-current=page] .icon{color:var(--color-accent)}.side-nav a.nav-cta{margin-bottom:var(--space-2);border:var(--border);justify-content:center}.side-nav a.nav-cta .icon{color:var(--color-accent)}.nav-group{margin:var(--space-4) var(--space-3) var(--space-1);font-size:11px;font-weight:var(--fw-medium);letter-spacing:.06em;color:var(--color-muted);text-transform:uppercase}.side-nav>.nav-group:first-child{margin-top:0}.appbar-note{margin-top:auto;padding:var(--space-3);border:var(--border);border-radius:var(--radius-lg);font-size:var(--fs-body-sm);color:var(--color-muted)}.top{display:flex;justify-content:flex-start;align-items:flex-start;gap:var(--space-3)}.top>.badge{margin-top:3px}.top p{margin:0;font-size:var(--fs-body-sm)}.card{background:var(--color-bg);border:var(--border);border-radius:var(--radius-lg);padding:var(--space-5);margin:0}.card.comparison{border:0;padding:0;background:transparent;border-radius:0}.muted{color:var(--color-muted)}.small{font-size:var(--fs-body-sm)}.warn{color:var(--color-danger)}.ok{color:var(--color-success);font-weight:var(--fw-bold)}div.warn[role=alert],ul.warn{background:var(--color-danger-soft);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}ul.warn{padding-left:var(--space-8)}.banner{font-size:var(--fs-caption);color:var(--color-muted)}.banner.fixture{padding:10px var(--space-4);border-radius:var(--radius-md);background:var(--color-caution-bg);border:1px solid var(--color-caution-line);color:var(--color-text);font-size:var(--fs-body-sm);font-weight:var(--fw-bold)}.evidence-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin:0;border-top:var(--border)}.evidence-strip>div{padding:var(--space-3) var(--space-4) 0;border-right:var(--border)}.evidence-strip>div:first-child{padding-left:0}.evidence-strip>div:last-child{border-right:0}.evidence-strip dt{color:var(--color-muted);font-size:var(--fs-caption);margin-bottom:var(--space-1)}.evidence-strip dd{margin:0;font-weight:var(--fw-bold)}.evidence-new dd{color:var(--color-danger)}.evidence-new b{color:var(--color-danger);font-size:var(--fs-h2)}.workspace{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);align-items:start}@media(min-width:1680px){.workspace{grid-template-columns:minmax(0,1fr) 380px}}.workspace>:only-child{grid-column:1 / -1}.side{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start}@media(min-width:1680px){.side{grid-template-columns:minmax(0,1fr)}}.badge{display:inline-block;padding:3px 10px;border-radius:var(--radius-sm);font-size:var(--fs-caption);font-weight:var(--fw-medium);background:var(--pill-gray-bg);color:var(--pill-gray-text);margin-right:var(--space-1);white-space:nowrap}.badge.mode-simulated,.badge.fixture{background:var(--pill-orange-bg);color:var(--pill-orange-text)}.badge.lock{background:var(--color-lock-soft);color:var(--color-lock)}.badge.unassigned{background:var(--color-danger-soft);color:var(--color-danger)}.badge.change,.badge.run-completed{background:var(--pill-green-bg);color:var(--pill-green-text)}.badge.run-running{background:var(--pill-blue-bg);color:var(--pill-blue-text)}.badge.run-queued{background:var(--pill-orange-bg);color:var(--pill-orange-text)}.badge.run-failed,.badge.run-cancelled{background:var(--pill-rose-bg);color:var(--pill-rose-text)}.dot{display:inline-block;padding:3px 10px;border-radius:var(--radius-sm);font-size:var(--fs-caption);font-weight:var(--fw-medium);white-space:nowrap}.dot-ok{background:var(--pill-green-bg);color:var(--pill-green-text)}.dot-warn{background:var(--pill-rose-bg);color:var(--pill-rose-text)}.dot-muted{background:var(--pill-gray-bg);color:var(--pill-gray-text)}table{border-collapse:collapse;width:100%}.kv th{text-align:left;width:170px;color:var(--color-muted);font-weight:var(--fw-medium);padding:6px var(--space-2) 6px 0;vertical-align:top}.kv td{padding:6px 0}.grid th,.grid td{border-bottom:var(--border);padding:14px var(--space-3);text-align:left;vertical-align:top;font-size:var(--fs-body-sm)}.grid thead th{color:var(--color-muted);font-weight:var(--fw-medium);font-size:var(--fs-caption);padding-top:10px;padding-bottom:10px}.grid tbody tr:last-child td{border-bottom:0}.grid tbody tr:hover{background:var(--color-canvas)}.grid.small td,.grid.small th{padding:10px var(--space-3)}.table-wrap{overflow-x:auto;border:var(--border);border-radius:var(--radius-lg);background:var(--color-bg)}.card .table-wrap{border:0;border-radius:0;border-top:var(--border)}.late-time{color:var(--color-danger);font-weight:var(--fw-bold)}.issue-text{margin-top:var(--space-1);color:var(--color-text)}.row-locked td:first-child{box-shadow:inset 3px 0 0 var(--color-lock)}.row-unassigned td:first-child{box-shadow:inset 3px 0 0 var(--color-danger)}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.metric{display:grid;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-bg);border:var(--border);word-break:keep-all}.metric-head{display:flex;align-items:center;gap:var(--space-2)}.metric-icon{display:grid;place-items:center;width:24px;height:24px;border-radius:var(--radius-sm);border:var(--border);color:var(--color-muted);flex:none}.metric-label{font-size:var(--fs-body-sm);font-weight:var(--fw-bold)}.metric-body{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-2)}.metric-value{font-size:var(--fs-kpi);font-weight:var(--fw-bold);line-height:1.1;letter-spacing:-.02em}.metric-base{margin-top:var(--space-1);font-size:var(--fs-caption);color:var(--color-muted)}.metric-delta{font-weight:var(--fw-bold)}.metric.worse .metric-delta{color:var(--color-danger)}.metric.better .metric-delta{color:var(--color-success)}.metric-bars{display:flex;align-items:flex-end;gap:4px;height:36px;flex:none}.metric-bars i{display:block;width:10px;border-radius:3px 3px 0 0;background:var(--color-accent-soft)}.metric-bars i.now{background:var(--color-accent)}.tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.tabs button{border:var(--border);background:var(--color-bg);padding:6px var(--space-3);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text);font-size:var(--fs-body-sm);font-weight:var(--fw-medium);transition:background-color var(--dur-base) ease,transform var(--dur-fast) ease-out}.tabs button:hover{background:var(--color-hover)}.tabs button:active{transform:scale(.97)}.tabs button[aria-selected=true]{background:var(--color-hover);border-color:var(--color-line-strong);font-weight:var(--fw-bold)}.issue{border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2);background:var(--color-canvas)}.issue summary{cursor:pointer}.issue ul{margin:6px 0 0;padding-left:18px}button{font:inherit}.card>button{padding:10px var(--space-5);border-radius:var(--radius-md);border:0;background:var(--color-accent-strong);color:var(--color-on-accent);font-weight:var(--fw-bold);cursor:pointer;transition:filter var(--dur-base) ease,transform var(--dur-fast) ease-out}.card>button:hover:not(:disabled){filter:brightness(1.08)}.card>button:active:not(:disabled){transform:scale(.97)}.card>button:disabled{background:var(--color-hover);color:var(--color-muted);cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:var(--focus-ring);outline-offset:2px}select,input[type=search]{font:inherit;padding:7px var(--space-3);border:var(--border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text)}fieldset{border:var(--border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);margin:0 0 var(--space-3)}.timeline{display:grid;gap:var(--space-3);overflow-x:auto;padding-right:22px}.timeline>.lane,.timeline>.vehicle-card{min-width:620px}.timeline-legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);list-style:none;margin:0;padding:0}.timeline-legend li{display:inline-flex;align-items:center;gap:6px}.sw{display:inline-grid;place-items:center;width:18px;height:10px;border-radius:3px;box-sizing:border-box;flex:none}.sw-bar{background:var(--color-bg);border:1px solid var(--color-line-strong)}.sw-dot{width:7px;height:7px;border-radius:50%;background:var(--color-text)}.sw-deadline{width:0;height:12px;border-left:2px dashed var(--color-danger);border-radius:0}.sw-late{background:var(--color-danger-soft);border:1px solid var(--color-danger)}.sw-changed{background:var(--color-success-soft);border:1.5px solid var(--color-success)}.sw-locked{width:22px;height:14px;background:var(--color-lock-soft);color:var(--color-lock)}.vehicle-card{border:var(--border);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);background:var(--color-bg)}.vehicle-card h3{margin:0 0 6px}.lane{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:var(--space-2);min-height:30px}.lane-name{font-size:var(--fs-caption);color:var(--color-muted)}.lane-track{position:relative;height:26px;background:var(--color-canvas);border-radius:var(--radius-sm)}.lane.axis .lane-track{background:transparent;height:34px}.lane-empty{position:absolute;left:var(--space-2);top:5px}.tick{position:absolute;top:0;transform:translate(-50%);font-size:var(--fs-caption);color:var(--color-muted);white-space:nowrap}.deadline-label{position:absolute;bottom:0;transform:translate(-50%);font-size:var(--fs-caption);color:var(--color-danger);font-weight:var(--fw-bold);white-space:nowrap}.deadline{position:absolute;top:-4px;bottom:-4px;border-left:2px dashed var(--color-danger);z-index:2;pointer-events:none}.job-bar{position:absolute;top:3px;height:20px;display:flex;align-items:center;padding:0 6px;box-sizing:border-box;border-radius:var(--radius-sm);background:var(--color-bg);border:1px solid var(--color-line-strong);font-size:var(--fs-caption);font-weight:var(--fw-bold);white-space:nowrap;overflow:hidden}.job-bar.locked{background:var(--color-lock-soft);color:var(--color-lock);border-color:var(--color-lock-soft)}.job-bar.changed{background:var(--color-success-soft);border:1.5px solid var(--color-success)}.job-bar.late{background:var(--color-danger-soft);border-color:var(--color-danger);color:var(--color-danger)}.job-bar .arrival{position:absolute;top:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;background:currentColor}.unassigned-row{margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--color-danger-soft)}.icon{display:inline-block;vertical-align:-2px;flex:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.grid,.metric-value,.metric-base,.evidence-strip dd,.tick,.deadline-label,.job-bar,.kv td{font-variant-numeric:tabular-nums}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.vehicle-card,.grid tbody tr,.metric{animation:rise var(--dur-base) ease both}.vehicle-card:nth-child(3),.grid tbody tr:nth-child(2),.metric:nth-child(2){animation-delay:40ms}.vehicle-card:nth-child(4),.grid tbody tr:nth-child(3),.metric:nth-child(3){animation-delay:80ms}.vehicle-card:nth-child(5),.grid tbody tr:nth-child(4),.metric:nth-child(4){animation-delay:.12s}.vehicle-card:nth-child(n+6),.grid tbody tr:nth-child(n+5),.metric:nth-child(5){animation-delay:.16s}@keyframes breathe{50%{opacity:.55}}.badge.run-queued,.badge.run-running{animation:breathe 1.6s ease-in-out infinite}.skeleton{display:grid;gap:var(--space-3)}.skeleton i{display:block;height:12px;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--color-hover) 0%,var(--color-bg) 40%,var(--color-hover) 80%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}.skeleton i:first-of-type{height:18px}@keyframes shimmer{to{background-position:-200% 0}}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-1);list-style:none;margin:var(--space-1) 0 var(--space-4);padding:0}.step{display:grid;gap:var(--space-2);justify-items:center;font-size:var(--fs-caption);color:var(--color-muted)}.step-bar{width:100%;height:6px;border-radius:var(--radius-pill);background:var(--color-hover)}.step-label{display:inline-flex;align-items:center;gap:6px}.step-mark{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--color-hover);color:var(--color-text);font-size:11px;font-weight:var(--fw-bold)}.step-done{color:var(--color-text)}.step-done .step-bar{background:var(--color-accent)}.step-done .step-mark{background:var(--color-accent-strong);color:var(--color-on-accent)}.step-active .step-bar{background:linear-gradient(90deg,var(--color-accent) 50%,var(--color-hover) 50%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}.step-active .step-mark{background:transparent;border:2px solid var(--color-accent);border-right-color:transparent;color:transparent;animation:spin .9s linear infinite}.step-failed .step-bar,.step-failed .step-mark{background:var(--color-danger);color:var(--color-on-accent)}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:890px){#root{grid-template-columns:minmax(0,1fr)}main{grid-column:1;padding:var(--space-4)}.appbar{grid-column:1;grid-row:auto;position:sticky;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding:10px var(--space-4);border-right:0;border-bottom:var(--border);z-index:10}.side-nav{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-1)}.side-nav a.nav-cta{margin:0}.nav-group,.appbar-note{display:none}}@media(max-width:576px){.top{flex-direction:column}.kv th{width:110px}.card{padding:var(--space-4)}.evidence-strip>div{border-right:0;border-bottom:var(--border);padding:var(--space-3) 0}.lane{grid-template-columns:64px minmax(0,1fr)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.revision fieldset{border:0;padding:0;margin:0 0 var(--space-4)}.revision legend{font-weight:var(--fw-bold);margin-bottom:var(--space-2)}.rev-row{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--border)}.rev-row>b{min-width:3em}.rev-field{display:grid;gap:2px}.rev-inputs{display:flex;gap:var(--space-2)}.rev-field input,.rev-reason textarea{font:inherit;padding:6px 8px;border:var(--border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text)}.rev-choice{display:block;padding:var(--space-1) 0}.rev-reason{display:grid;gap:var(--space-1);margin-bottom:var(--space-3)}.rev-diff{margin:0 0 var(--space-3);padding-left:var(--space-5)}.rev-transitions{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-2) var(--space-4);margin:var(--space-3) 0}.rev-transitions dt{font-size:var(--fs-caption);color:var(--color-muted)}.rev-transitions dd{margin:0;font-weight:var(--fw-medium)}.dispatch h3{margin:var(--space-5) 0 var(--space-2);font-size:var(--fs-h3)}.dispatch fieldset{border:0;padding:0}.dispatch fieldset>button{padding:10px var(--space-5);border-radius:var(--radius-md);border:0;background:var(--color-accent-strong);color:var(--color-on-accent);font-weight:var(--fw-bold);cursor:pointer;margin-top:var(--space-2)}.dispatch fieldset>button:disabled{background:var(--color-hover);color:var(--color-muted);cursor:not-allowed}button.secondary{padding:5px var(--space-3);border-radius:var(--radius-sm);border:var(--border);background:var(--color-bg);color:var(--color-text);cursor:pointer}button.secondary:hover{background:var(--color-hover)}.vehicle-changes{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-3)}.vehicle-change{border-top:var(--border);padding-top:var(--space-2)}.vehicle-change ul,.followups{margin:0;padding-left:var(--space-5)}.followups li{margin-bottom:var(--space-2)}.followups p{margin:2px 0 0}.invite-link{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;margin:var(--space-3) 0}.invite-link p{flex-basis:100%;margin:0}.invite-link input{flex:1 1 260px;min-width:0;font:inherit;padding:6px 8px;border:var(--border);border-radius:var(--radius-sm)}.dispatch .grid{margin-bottom:var(--space-3)}.recipient{max-width:560px;margin:0 auto;padding:var(--space-4)}.recipient-head{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--fw-bold);margin-bottom:var(--space-4)}.recipient .card>button:not(.secondary),.paste-invite button,.push-control>button:not(.secondary),.respond-buttons button{padding:12px var(--space-5);min-height:44px;border-radius:var(--radius-md);border:0;background:var(--color-accent-strong);color:var(--color-on-accent);font-weight:var(--fw-bold);cursor:pointer}.recipient button:disabled{background:var(--color-hover);color:var(--color-muted);cursor:not-allowed}.respond-buttons{display:flex;flex-wrap:wrap;gap:var(--space-2)}.respond-buttons button.danger{background:var(--color-danger)}.paste-invite label{display:grid;gap:var(--space-1);margin-bottom:var(--space-2)}.paste-invite input{font:inherit;padding:10px;border:var(--border);border-radius:var(--radius-sm);min-width:0}.install-guide ol{padding-left:var(--space-5)}.push-control{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.push-control p{flex-basis:100%;margin:0}.recipient-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.recipient-list button[aria-current=true]{border-color:var(--color-accent-strong);font-weight:var(--fw-bold)}.recipient-detail ul{padding-left:var(--space-5)}.recipient-detail li{margin-bottom:var(--space-3)}.rev-add select,.rev-add .rev-field input:not([type]){font:inherit;padding:6px 8px;border:var(--border);border-radius:var(--radius-sm)}.rev-add .rev-row label.small{display:inline-flex;gap:4px;align-items:center}.reference .tabs{margin:var(--space-3) 0}.ref-headline{font-weight:var(--fw-bold);margin:var(--space-3) 0 var(--space-2)}.ref-headline.tone-danger{color:var(--color-danger)}.ref-headline.tone-warn{color:var(--pill-orange-text)}.ref-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-2) var(--space-4);margin:0 0 var(--space-3)}.ref-meta dt{color:var(--color-muted)}.ref-meta dd{margin:0}.ref-blockers{padding-left:var(--space-5)}.reference caption{text-align:left;padding-bottom:var(--space-1)}
