:root{--ink:#14201b;--muted:#647069;--paper:#f3f5f1;--surface:#fff;--line:#dce2dc;--accent:#e35c36;--green:#1c6b4c;--dark:#111815;--warning:#a65a1b;--shadow:0 18px 44px rgba(25,38,31,.08)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,"Noto Sans TC","Microsoft JhengHei",sans-serif;color:var(--ink);background:var(--paper)}button,input,select{font:inherit}.hidden{display:none!important}.eyebrow{margin:0 0 7px;font-size:11px;letter-spacing:.17em;font-weight:800;color:#7a857f}.muted{color:var(--muted);line-height:1.7}.error{color:#b43f2f;min-height:1.5em}.primary,.secondary{border:0;border-radius:9px;padding:12px 18px;font-weight:800;cursor:pointer}.primary{background:var(--accent);color:#fff;box-shadow:0 7px 18px rgba(227,92,54,.22)}.primary:hover{background:#cc4d2b}.secondary{background:#eef1ed;color:var(--ink)}.compact{padding:10px 15px}.login-shell{min-height:100svh;display:grid;place-items:center;background:radial-gradient(circle at 70% 20%,#283c31 0,#111815 45%,#0d120f 100%);position:relative;overflow:hidden}.login-shell:after{content:"";position:absolute;width:48vw;height:48vw;border:1px solid rgba(255,255,255,.08);border-radius:50%;right:-8vw;bottom:-20vw}.login-panel{width:min(440px,calc(100vw - 34px));background:#f7f8f5;padding:50px;border-radius:4px;box-shadow:0 30px 80px rgba(0,0,0,.3);z-index:1}.login-panel h1{font-size:40px;margin:0 0 14px;letter-spacing:-.04em}.login-panel label{display:grid;gap:8px;font-size:13px;font-weight:800;margin:28px 0 16px}.login-panel input{height:48px;border:1px solid var(--line);background:white;border-radius:8px;padding:0 13px}.login-panel .primary{width:100%}.app-shell{min-height:100svh;display:grid;grid-template-columns:232px minmax(0,1fr)}.sidebar{background:var(--dark);color:#fff;min-height:100svh;padding:26px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100svh}.brand{display:flex;gap:12px;align-items:center;padding:0 7px 34px}.brand-mark{display:grid;place-items:center;width:40px;height:40px;background:var(--accent);font-weight:900;border-radius:6px}.brand strong{display:block;font-size:16px}.brand small{color:#8e9c95;font-size:11px}.sidebar nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#96a29b;padding:13px 11px;text-align:left;border-radius:7px;cursor:pointer;font-weight:700}.nav-item span{font-size:10px;margin-right:12px;color:#5c6a63}.nav-item.active,.nav-item:hover{color:#fff;background:#1e2924}.nav-item.active span{color:var(--accent)}.sidebar-foot{margin-top:auto;border-top:1px solid #2b3731;padding:20px 7px 0;display:grid;grid-template-columns:10px 1fr;gap:9px;align-items:start}.safety-dot{width:8px;height:8px;margin-top:5px;background:#52bd83;border-radius:50%;box-shadow:0 0 0 4px rgba(82,189,131,.12)}.sidebar-foot p{margin:0;font-size:11px;line-height:1.55}.sidebar-foot span{color:#7f8d86}.text-button{grid-column:2;border:0;background:none;color:#8c9992;padding:8px 0;text-align:left;cursor:pointer;font-size:11px}main{min-width:0;padding:0 40px 60px}.topbar{height:112px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.topbar h2{font-size:26px;margin:0;letter-spacing:-.03em}.top-actions{display:flex;gap:10px;align-items:end}.date-control{display:grid;gap:5px;font-size:10px;font-weight:800;color:var(--muted)}.date-control input{height:40px;border:1px solid var(--line);background:white;border-radius:8px;padding:0 11px}.page{display:none;padding-top:25px}.page.active{display:block;animation:fade .25s ease}@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.status-line{display:flex;align-items:center;gap:11px;color:var(--muted);font-size:12px}.status-spacer{flex:1}.badge{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;background:#e4f3e9;color:var(--green);font-weight:800;font-size:11px}.badge.neutral{background:#edf0ed;color:#657069}.badge.warning{background:#fff0e3;color:var(--warning)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid var(--line);margin:22px 0 28px}.metrics>div{padding:23px 24px 22px 0}.metrics>div+div{padding-left:24px;border-left:1px solid var(--line)}.metrics span{display:block;color:var(--muted);font-size:12px}.metrics strong{font-size:34px;line-height:1.4;letter-spacing:-.04em}.metrics small{margin-left:5px;color:var(--muted)}.workspace-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,.7fr);gap:18px}.route-workspace,.exception-panel,.case-section{background:var(--surface);box-shadow:var(--shadow);padding:25px;border-radius:4px}.section-head{display:flex;justify-content:space-between;align-items:start;gap:15px}.section-head h3{margin:0;font-size:17px}.section-head>p{margin:3px 0;color:var(--muted);font-size:11px}.readonly-tag{font-size:10px;color:var(--muted);border:1px solid var(--line);padding:6px 8px;border-radius:4px}.route-line{height:96px;display:flex;align-items:center;padding:10px 6px}.route-node{position:relative;flex:1;display:flex;align-items:center}.route-node:not(:last-child):after{content:"";height:2px;background:#d6ddd7;flex:1;margin:0 8px}.node-dot{width:14px;height:14px;border-radius:50%;background:var(--surface);border:4px solid var(--green);box-shadow:0 0 0 4px #eef5f1}.route-node.company .node-dot{border-color:var(--accent);box-shadow:0 0 0 4px #fff0eb}.node-label{position:absolute;top:23px;left:0;transform:translateX(-35%);font-size:10px;white-space:nowrap;font-weight:800}.segment-list{border-top:1px solid var(--line)}.segment-row{display:grid;grid-template-columns:minmax(150px,1fr) 80px 92px 82px;gap:10px;padding:12px 0;border-bottom:1px solid #eef1ee;align-items:center;font-size:12px}.segment-row strong{font-size:13px}.segment-row span{color:var(--muted)}.segment-row .yes{color:var(--green);font-weight:800}.segment-row .no{color:#8a938e}.exception-panel{background:#17221d;color:#fff}.exception-panel .eyebrow{color:#788b81}.count{display:grid;place-items:center;width:27px;height:27px;background:var(--accent);border-radius:50%;font-size:12px}.exception-item{padding:20px 0;border-bottom:1px solid #2a3731}.exception-item strong{display:block;font-size:13px;margin-bottom:7px}.exception-item p{color:#9aa8a1;font-size:11px;line-height:1.6;margin:0}.case-section{margin-top:18px}.table-wrap{overflow:auto;margin-top:20px}table{border-collapse:collapse;width:100%;min-width:780px}th{text-align:left;color:#79847e;font-size:10px;letter-spacing:.06em;border-bottom:1px solid var(--line);padding:10px 12px}td{padding:15px 12px;border-bottom:1px solid #edf0ed;font-size:12px}td strong{font-size:13px}.ok{color:var(--green);font-weight:800}.settings-intro{display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid var(--line);padding-bottom:24px}.settings-intro h3{font-size:25px;margin:0 0 6px}.settings-intro p:last-child{margin:0;color:var(--muted);font-size:12px}.settings-form{display:grid;gap:18px;margin-top:20px}.settings-form fieldset{background:#fff;border:0;padding:25px;display:grid;grid-template-columns:repeat(4,1fr);gap:18px;box-shadow:var(--shadow)}.settings-form legend{float:left;width:100%;font-size:15px;font-weight:900;margin-bottom:20px}.settings-form label{display:grid;gap:7px;color:#536159;font-size:11px;font-weight:800}.settings-form input,.settings-form select{height:41px;border:1px solid var(--line);border-radius:7px;background:#fbfcfa;padding:0 10px;color:var(--ink)}.settings-form .wide{grid-column:span 2}.toggle{display:flex!important;align-items:center;gap:9px!important;align-self:end;height:41px}.toggle input{display:none}.toggle span{width:36px;height:20px;background:#cdd4cf;border-radius:20px;position:relative;transition:.2s}.toggle span:after{content:"";position:absolute;width:14px;height:14px;left:3px;top:3px;border-radius:50%;background:#fff;transition:.2s}.toggle input:checked+span{background:var(--green)}.toggle input:checked+span:after{transform:translateX(16px)}.toast{position:fixed;right:25px;bottom:25px;background:#17221d;color:#fff;padding:13px 17px;border-radius:7px;opacity:0;pointer-events:none;transition:.2s;font-size:12px}.toast.show{opacity:1}.connections-grid{background:#fff;box-shadow:var(--shadow)}.connection-row{display:grid;grid-template-columns:60px minmax(0,1fr) auto;align-items:center;gap:20px;padding:28px;border-bottom:1px solid var(--line)}.connection-row h3{margin:0 0 7px}.connection-row p:last-child{margin:0;color:var(--muted);font-size:12px}.connection-row.locked{background:#fafbf9}.connection-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;font-weight:900}.connection-icon.gps{background:#fff0e9;color:var(--accent)}.connection-icon.lark{background:#e8efff;color:#3767c9}.connection-icon.lock{background:#ecefed;color:#6d7772}.connection-actions{display:flex;align-items:center;gap:10px}
.live-route-summary{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 2px;border-block:1px solid var(--line)}.live-route-summary strong{font-size:14px}.live-route-summary span{font-size:11px;color:var(--muted);text-align:right;line-height:1.6}.pending{color:var(--warning);font-weight:800}
@media(max-width:1050px){.metrics{grid-template-columns:repeat(2,1fr)}.metrics>div:nth-child(3){border-left:0}.workspace-grid{grid-template-columns:1fr}.settings-form fieldset{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.app-shell{display:block}.sidebar{position:static;height:auto;min-height:0;padding:15px}.brand{padding-bottom:12px}.sidebar nav{grid-template-columns:repeat(3,1fr)}.nav-item{text-align:center;padding:10px 5px}.nav-item span{display:none}.sidebar-foot{display:none}main{padding:0 16px 40px}.topbar{height:auto;padding:18px 0;align-items:end}.topbar .eyebrow{display:none}.top-actions{gap:7px}.topbar h2{font-size:20px}.date-control input{width:137px}.metrics strong{font-size:28px}.metrics>div{padding:18px 10px 18px 0}.metrics>div+div{padding-left:12px}.segment-row{grid-template-columns:1fr 60px 75px}.segment-row>*:last-child{display:none}.settings-form fieldset{grid-template-columns:1fr}.settings-form .wide{grid-column:auto}.settings-intro{align-items:start;gap:12px}.connection-row{grid-template-columns:48px 1fr}.connection-actions{grid-column:2}.login-panel{padding:35px 25px}}
