:root{--ink-900:#161512;--ink-800:#2a2722;--ink-700:#443f37;--ink-600:#6b6457;--ink-500:#8e8676;--ink-400:#b3aa97;--ink-300:#d6cfbd;--ink-200:#ebe5d4;--ink-100:#f5f1e4;--ink-50:#faf8f0;--paper:#fbf8ee;--card:#ffffff;--line:#e7e0cd;--line-strong:#cfc6ad;--brand:#e85d2c;--brand-deep:#c84516;--brand-soft:#fde4d6;--brand-tint:#fff1e7;--status-scheduled:#6b7cff;--status-scheduled-bg:#e8ecff;--status-loading:#d97706;--status-loading-bg:#fef0d6;--status-transit:#2563eb;--status-transit-bg:#dbeafe;--status-delivered:#0d9488;--status-delivered-bg:#ccfbf1;--status-installing:#7c3aed;--status-installing-bg:#ede9fe;--status-done:#15803d;--status-done-bg:#dcfce7;--status-issue:#dc2626;--status-issue-bg:#fee2e2;--d-pad-card:20px;--d-pad-row:14px;--d-gap:16px;--d-radius:14px;--d-radius-sm:10px;--d-font:15px;--d-line:1.45;--shadow-sm:0 1px 2px rgba(22,21,18,0.04),0 1px 1px rgba(22,21,18,0.03);--shadow-md:0 4px 12px rgba(22,21,18,0.06),0 1px 3px rgba(22,21,18,0.04);--shadow-lg:0 18px 40px rgba(22,21,18,0.10),0 4px 12px rgba(22,21,18,0.06);--font-sans:"Inter Tight",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-display:"Fraunces",Georgia,serif;--font-mono:"JetBrains Mono",ui-monospace,monospace}[data-density=compact]{--d-pad-card:14px;--d-pad-row:9px;--d-gap:10px;--d-radius:10px;--d-radius-sm:7px;--d-font:13.5px;--d-line:1.38}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--paper);color:var(--ink-900);font-family:var(--font-sans);font-size:var(--d-font);line-height:var(--d-line);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;padding:0}a{color:inherit}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}[data-density=compact] .app{grid-template-columns:220px 1fr}.side{background:var(--ink-900);color:var(--ink-100);padding:22px 16px;display:flex;flex-direction:column;gap:4px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.side-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 22px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:12px}.side-brand>div{display:flex;flex-direction:column;gap:2px;min-width:0}.side-mark{width:34px;height:34px;border-radius:9px;background:var(--brand);display:grid;place-items:center;color:white;font-weight:700;position:relative;box-shadow:inset 0 -3px 0 rgba(0,0,0,.18)}.side-mark svg{width:20px;height:20px}.side-brand-name{font-family:var(--font-display);font-weight:600;font-size:16px;letter-spacing:-.01em;line-height:1.1;white-space:nowrap}.side-brand-sub{font-size:11px;color:var(--ink-400);letter-spacing:.06em;text-transform:uppercase}.side-section{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-500);padding:14px 8px 6px}.side-link{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:9px;color:var(--ink-200);font-weight:500;font-size:14px;width:100%;text-align:left;white-space:nowrap;transition:background .12s}.side-link svg{width:17px;height:17px;flex-shrink:0}.side-link:hover{background:rgba(255,255,255,.05)}.side-link.active{background:var(--brand);color:white}.side-link.active .side-link-count{background:rgba(0,0,0,.2);color:white}.side-link-count{margin-left:auto;background:rgba(255,255,255,.08);color:var(--ink-300);padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600}.side-user{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px 8px 4px;border-top:1px solid rgba(255,255,255,.08)}.side-user-avatar{width:32px;height:32px;border-radius:50%;background:var(--brand);display:grid;place-items:center;color:white;font-weight:600;font-size:13px}.side-user-name{font-size:13px;font-weight:500}.side-user-role{font-size:11px;color:var(--ink-500)}.main{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:12px;padding:16px 28px;background:var(--paper);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:5}.topbar-title{font-family:var(--font-display);font-weight:600;font-size:22px;letter-spacing:-.015em;margin-right:auto;display:flex;align-items:baseline;gap:10px;white-space:nowrap;flex-shrink:0}.topbar-title small{font-family:var(--font-sans);font-weight:500;font-size:13px;color:var(--ink-600);margin-left:10px;letter-spacing:0;white-space:nowrap}[data-density=compact] .topbar{padding:10px 20px}[data-density=compact] .topbar-title{font-size:18px}.side-newjob{display:flex;align-items:center;gap:10px;padding:11px 14px;margin:4px 0 14px;border-radius:11px;background:var(--brand);color:white;font-weight:600;font-size:14px;letter-spacing:-.005em;width:100%;text-align:left;white-space:nowrap;box-shadow:0 4px 14px -4px rgba(0,0,0,.45),inset 0 -2px 0 rgba(0,0,0,.18);transition:transform .1s,box-shadow .1s,filter .12s}.side-newjob:hover{filter:brightness(1.06);transform:translateY(-1px)}.side-newjob:active{transform:translateY(0)}.side-newjob svg{color:white}.side-newjob-kbd{margin-left:auto;background:rgba(0,0,0,.22);color:white;font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:6px;letter-spacing:.04em}.modal-backdrop{position:fixed;inset:0;background:rgba(15,18,22,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;display:grid;place-items:center;padding:32px 16px;overflow-y:auto;animation:modalFade .18s ease}@keyframes modalFade{0%{opacity:0}to{opacity:1}}.modal{background:white;border-radius:18px;width:100%;max-width:720px;box-shadow:0 24px 60px -12px rgba(0,0,0,.4);display:flex;flex-direction:column;max-height:calc(100vh - 64px);overflow:hidden;animation:modalSlide .22s cubic-bezier(.2,.8,.2,1)}@keyframes modalSlide{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:22px 28px 16px;border-bottom:1px solid var(--line)}.modal-title{font-family:var(--font-display);font-weight:600;font-size:22px;letter-spacing:-.015em}.modal-sub{font-size:13px;color:var(--ink-600);margin-top:3px}.modal-close{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--ink-700)}.modal-close:hover{background:var(--ink-100)}.modal-body{padding:22px 28px;overflow-y:auto;display:flex;flex-direction:column;gap:18px}.quick-action{background:var(--bg-50,#faf8f5);border:1px solid var(--ink-200,#e5e0d8);transition:background .15s,border-color .15s}.quick-action:hover{background:#fff}.qa-icon{width:32px;height:32px}.qa-icon.blue{background:#4a7eb8}.planner-day-row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:white;border:1px solid var(--ink-200,#e5e0d8);border-radius:8px;cursor:pointer;width:100%;text-align:left;transition:border-color .15s,background .15s}.planner-day-row:hover{border-color:var(--brand);background:#fff7f2}.pdr-time{font-family:var(--font-mono,monospace);font-size:11.5px;font-weight:600;color:var(--ink-700,#4a4138);width:96px;flex-shrink:0}.pdr-main{flex:1 1;min-width:0}.pdr-cust{font-size:13px;font-weight:600;color:var(--ink-900,#1a1410);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdr-meta{font-size:11.5px;color:var(--ink-600,#6b6258);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pdr-meta strong{color:var(--ink-900,#1a1410);font-weight:600}.pdr-tag{font-size:9.5px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:4px;color:white}.pdr-tag.delivery{background:var(--brand)}.pdr-tag.install{background:#4a7eb8}.pdr-tag.combo{background:#7a5aaf}.modal-foot{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;border-top:1px solid var(--line);background:var(--ink-50)}.field{display:flex;flex-direction:column;gap:6px}.field-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.field-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:14px;gap:14px}.field-label{font-size:12px;font-weight:600;color:var(--ink-700);letter-spacing:.02em;text-transform:uppercase}.field-label .req{color:var(--brand);margin-left:3px}.field input[type=date],.field input[type=number],.field input[type=text],.field input[type=time],.field select,.field textarea{font-family:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:white;color:var(--ink-900);width:100%;transition:border-color .12s,box-shadow .12s}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(217,119,87,.12)}.field textarea{resize:vertical;min-height:70px}.field-help{font-size:11.5px;color:var(--ink-500)}.picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:8px;gap:8px}.picker-chip{position:relative;display:flex;align-items:center;gap:9px;padding:10px 12px;border:1.5px solid var(--line);border-radius:11px;background:white;text-align:left;cursor:pointer;transition:border-color .12s,background .12s}.picker-chip:hover{border-color:var(--ink-300)}.picker-chip.selected{border-color:var(--brand);background:#fff8f4}.picker-chip.busy{border-color:#f4cfcf;background:#fdf8f6}.picker-chip.busy:hover{border-color:#d99a8d}.picker-chip.busy.selected{border-color:#d65a4e;background:#fdebe7}.picker-chip.busy.selected .pc-name{color:var(--ink-900)}.picker-peek{position:relative;grid-column:1/-1;background:#fafafa;border:1px solid var(--ink-200);border-radius:12px;padding:14px 16px;margin-top:-4px;animation:schedSlide .16s ease-out}.picker-peek-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.picker-peek-mark{width:28px;height:28px;border-radius:8px;color:white;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.picker-peek-title{font-size:13px;font-weight:600;color:var(--ink-900)}.picker-peek-sub{font-size:11.5px;color:var(--ink-600)}.picker-peek-close{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--ink-500);padding:4px;border-radius:6px}.picker-peek-close:hover{background:var(--ink-100);color:var(--ink-900)}.picker-peek-date{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--ink-600);margin-bottom:8px}.peek-timeline{position:relative;height:44px;background:#fff;border:1px solid var(--ink-200);border-radius:8px;overflow:hidden}.peek-hours{position:absolute;inset:0;display:flex}.peek-hour{flex:1 1;border-right:1px dashed var(--ink-100);font-size:9px;color:var(--ink-500);padding:2px 0 0 3px}.peek-hour:last-child{border-right:none}.peek-block{position:absolute;top:18px;bottom:4px;border-radius:5px;padding:0 6px;font-size:10.5px;font-weight:600;color:white;display:flex;align-items:center;white-space:nowrap;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.12)}.peek-block.delivery{background:#d97757}.peek-block.install{background:#4a7eb8}.peek-block.combo{background:#7a5aaf}.peek-block.target{background:repeating-linear-gradient(45deg,rgba(217,119,87,.15),rgba(217,119,87,.15) 4px,rgba(217,119,87,.05) 0,rgba(217,119,87,.05) 8px);border:1.5px dashed var(--brand);color:var(--brand);top:4px;bottom:4px;z-index:3}.peek-block.target.draggable{cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.peek-block.target.draggable:active{cursor:-webkit-grabbing;cursor:grabbing}.peek-block.target.draggable:hover{background:repeating-linear-gradient(45deg,rgba(217,119,87,.28),rgba(217,119,87,.28) 4px,rgba(217,119,87,.12) 0,rgba(217,119,87,.12) 8px)}.peek-target-label{font-size:10px;font-weight:700;white-space:nowrap;overflow:hidden;pointer-events:none;font-family:var(--font-mono,monospace)}.peek-handle{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;background:transparent}.peek-handle.l{left:-4px}.peek-handle.r{right:-4px}.peek-handle:hover{background:rgba(217,119,87,.35)}.peek-empty{display:flex;align-items:center;justify-content:center;height:100%;font-size:11.5px;color:var(--ink-500);font-style:italic}.peek-list{margin-top:10px;display:flex;flex-direction:column;gap:6px}.peek-item{display:grid;grid-template-columns:110px 1fr auto;grid-gap:10px;gap:10px;align-items:center;padding:7px 10px;background:#fff;border:1px solid var(--ink-200);border-radius:8px;font-size:12px}.peek-item-time{font-family:var(--font-mono);font-size:11px;color:var(--ink-700);font-weight:600}.peek-item-customer{color:var(--ink-900);font-weight:500}.peek-item-tag{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:4px}.peek-item-tag.delivery{background:#fdf0ea;color:#c5663f}.peek-item-tag.install{background:#e8f0fb;color:#4a7eb8}.peek-item-tag.combo{background:#efe9f9;color:#7a5aaf}.peek-overlap-banner{display:flex;align-items:center;gap:8px;margin-top:10px;padding:7px 10px;background:#fff4e6;border:1px solid #f4d6a8;border-radius:8px;font-size:11.5px;color:#8a5a18}.peek-overlap-banner svg{color:#d97757;flex-shrink:0}.peek-overlap-banner strong{color:var(--ink-900)}.picker-chip .busy-tag{position:absolute;top:6px;right:8px;background:#c83a2c;color:white;font-size:9px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:999px}.picker-chip .busy-reason{color:#b54a3e}.picker-chip .busy-reason,.picker-chip .paired-hint{font-size:10.5px;margin-top:3px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.picker-chip .paired-hint{color:#1f8a5b}.picker-chip .paired-hint strong{color:#15643f;font-weight:700}.picker-chip.recommended{border-color:#1f8a5b;box-shadow:0 0 0 2px rgba(31,138,91,.18);background:#f3faf6}.picker-chip .paired-tag{position:absolute;top:6px;right:8px;background:#1f8a5b;color:white;font-size:9px;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:999px}.pair-warn{display:flex;align-items:center;gap:8px;margin:10px 0 4px;padding:8px 10px;background:#fff7ed;border:1px solid #f0c995;border-radius:8px;font-size:12px;color:#92400e;line-height:1.4}.pair-warn svg{color:#d97757;flex-shrink:0}.pair-warn strong{color:#1a1410;font-weight:700}.pair-warn-fix{margin-left:auto;flex-shrink:0;background:#d97757;color:white;border:none;border-radius:6px;padding:5px 10px;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap}.pair-warn-fix:hover{background:#c46443}.sched-card{border:1.5px solid var(--brand);border-radius:14px;background:linear-gradient(180deg,#fffaf6,#fff 60%);padding:18px 20px;margin-top:8px;margin-bottom:12px;box-shadow:0 6px 24px -12px rgba(217,119,87,.35);animation:schedSlide .18s ease-out}@keyframes schedSlide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.sched-head{gap:10px;margin-bottom:14px;padding-bottom:12px;border-bottom:1px dashed var(--ink-200)}.sched-head,.sched-head-mark{display:flex;align-items:center}.sched-head-mark{width:28px;height:28px;border-radius:8px;background:var(--brand);color:white;justify-content:center}.sched-head-title{font-size:13px;font-weight:600;color:var(--ink-900)}.sched-head-sub{font-size:11.5px;color:var(--ink-600);margin-top:1px}.sched-head-sub strong{color:var(--ink-900);font-weight:600}.sched-section-title{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--ink-600);margin:14px 0 8px}.sched-time-row{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:10px;gap:10px;align-items:end}.sched-time-row .field{margin:0}.sched-conflict-banner{display:flex;align-items:center;gap:8px;background:#fdf3f2;border:1px solid #f4cfcf;border-radius:8px;padding:8px 12px;margin-top:10px;font-size:12px;color:#a35858}.sched-conflict-banner svg{flex-shrink:0;color:#c83a2c}.sched-foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding-top:14px;border-top:1px dashed var(--ink-200)}.sched-summary{font-size:12.5px;color:var(--ink-600)}.sched-summary strong{color:var(--ink-900);font-weight:600}.sched-actions{display:flex;gap:8px}.sched-confirmed-pill{display:inline-flex;align-items:center;gap:6px;background:#e8f5ed;color:#2a7044;border:1px solid #c5e3d0;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;margin-top:8px}.picker-chip .pc-mark{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-weight:700;font-size:11px;color:white;flex-shrink:0;letter-spacing:.02em}.pc-mark.orange{background:#d97757}.pc-mark.blue{background:#4a7faf}.pc-mark.green{background:#5a8a5b}.pc-mark.purple{background:#7a5aaf}.pc-mark.red{background:#c14d4d}.pc-mark.teal{background:#3a8a8a}.pc-mark.pink{background:#c1538f}.pc-mark.indigo{background:#5a5ab8}.pc-mark.amber{background:#c19a3a}.pc-mark.slate{background:#5a6b7a}.pc-mark.gray{background:#8a8a8a}.picker-chip .pc-meta{display:flex;flex-direction:column;gap:1px;min-width:0}.picker-chip .pc-name{font-weight:600;font-size:13.5px;color:var(--ink-900)}.picker-chip .pc-sub{font-size:11.5px;color:var(--ink-600)}.type-toggle{display:flex;gap:0;border:1px solid var(--line);border-radius:11px;padding:3px;background:var(--ink-50)}.type-toggle button{flex:1 1;padding:9px 12px;border-radius:8px;font-size:13px;font-weight:600;color:var(--ink-700);transition:background .12s,color .12s}.type-toggle button.active{background:white;color:var(--ink-900);box-shadow:0 1px 3px rgba(0,0,0,.08)}.door-list{display:flex;flex-direction:column;gap:8px}.door-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 28px;grid-gap:8px;gap:8px;align-items:center}.door-row input{font-size:13px;padding:8px 10px}.door-row .x{color:var(--ink-500);font-size:18px;line-height:1}.door-row .x:hover{color:var(--brand)}.add-door-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px dashed var(--line);border-radius:9px;font-size:13px;color:var(--ink-700);align-self:flex-start}.add-door-btn:hover{border-color:var(--brand);color:var(--brand)}.req-card{border:1px solid var(--line);border-radius:14px;padding:18px 20px;background:white;display:flex;flex-direction:column;gap:14px}.req-section-head{display:flex;align-items:center;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--line)}.req-section-head .pin{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex-shrink:0}.req-section-head .pin.collect{background:#e8f1f9;color:#2c5d88}.req-section-head .pin.deliver{background:#faecd9;color:#b35423}.req-section-head h3{font-family:var(--font-display);font-weight:600;font-size:16px;letter-spacing:-.01em}.req-section-head .req-tag{margin-left:auto;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-500)}.res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:14px;gap:14px}.res-card{border:1px solid var(--line);border-radius:14px;padding:18px;background:white;display:flex;flex-direction:column;gap:12px;transition:border-color .12s,transform .12s}.res-card:hover{border-color:var(--ink-300)}.res-head{display:flex;align-items:center;gap:12px}.res-mark{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;color:white;font-weight:700;font-size:14px;letter-spacing:.02em;flex-shrink:0}.res-mark.orange{background:#d97757}.res-mark.blue{background:#4a7faf}.res-mark.green{background:#5a8a5b}.res-mark.purple{background:#7a5aaf}.res-mark.red{background:#c14d4d}.res-mark.teal{background:#3a8a8a}.res-mark.pink{background:#c1538f}.res-mark.indigo{background:#5a5ab8}.res-mark.amber{background:#c19a3a}.res-mark.slate{background:#5a6b7a}.res-name{font-family:var(--font-display);font-weight:600;font-size:16px}.res-role{font-size:12px;color:var(--ink-600);margin-top:1px}.res-stats{display:flex;gap:14px;padding-top:10px;border-top:1px solid var(--line)}.res-stat{display:flex;flex-direction:column;gap:1px}.res-stat-num{font-family:var(--font-display);font-weight:600;font-size:18px}.res-stat-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-500)}.res-vehicles{display:flex;flex-wrap:wrap;gap:4px;font-size:11px}.res-vehicles code{background:var(--ink-100);border-radius:5px;padding:2px 6px;font-family:var(--font-mono);font-size:10.5px}.res-action{display:flex;gap:6px;padding-top:8px;border-top:1px solid var(--line)}.res-action button{flex:1 1;padding:7px 10px;border-radius:8px;font-size:12.5px;font-weight:500;color:var(--ink-700);border:1px solid var(--line)}.res-action button:hover{background:var(--ink-50)}.veh-status{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.05em}.veh-status:before{content:"";width:6px;height:6px;border-radius:50%}.veh-status.active{background:#e8f5ec;color:#2f7c4d}.veh-status.active:before{background:#4ea571}.veh-status.idle{background:var(--ink-100);color:var(--ink-700)}.veh-status.idle:before{background:var(--ink-500)}.veh-status.service{background:#fdecec;color:#a3404a}.veh-status.service:before{background:#c25864}.sr-list{display:flex;flex-direction:column;gap:10px}.sr-row{display:grid;grid-template-columns:auto 1fr auto auto auto;grid-gap:14px;gap:14px;align-items:center;padding:14px 18px;background:white;border:1px solid var(--line);border-radius:12px;transition:border-color .12s}.sr-row:hover{border-color:var(--ink-300)}.sr-type{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}.sr-type.collect{background:#e8f1f9;color:#2c5d88}.sr-type.deliver{background:#faecd9;color:#b35423}.sr-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sr-customer{font-weight:600;font-size:14px}.sr-detail{font-size:12px;color:var(--ink-600)}.sr-when{display:flex;flex-direction:column;align-items:flex-end;gap:1px}.sr-date{font-weight:600;font-size:13px}.sr-time{font-size:11.5px;color:var(--ink-600)}.sr-status{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;border-radius:999px}.sr-status.pending{background:#fdf3e0;color:#a07125}.sr-status.scheduled{background:#e8f1f9;color:#2c5d88}.sr-status.completed{background:#e8f5ec;color:#2f7c4d}.sr-action{font-size:12px;font-weight:500;color:var(--ink-700);padding:6px 12px;border-radius:8px;border:1px solid var(--line)}.sr-action:hover{background:var(--ink-50);border-color:var(--ink-300)}.role-switch{display:flex;background:var(--ink-100);border-radius:999px;padding:3px;gap:2px}.role-switch button{padding:6px 12px;font-size:12.5px;font-weight:500;border-radius:999px;color:var(--ink-700)}.role-switch button.active{background:white;color:var(--ink-900);box-shadow:var(--shadow-sm)}.search{display:flex;align-items:center;gap:8px;background:var(--ink-100);padding:7px 12px;border-radius:9px;width:260px;color:var(--ink-600);font-size:13px;white-space:nowrap}.search>span{overflow:hidden;text-overflow:ellipsis}.search svg{width:14px;height:14px}.search kbd{margin-left:auto;background:white;border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:11px;font-family:var(--font-mono);color:var(--ink-600)}.content{padding:24px 28px 60px;max-width:100%;overflow-x:hidden}[data-density=compact] .content{padding:14px 20px 40px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--d-radius);box-shadow:var(--shadow-sm)}.card-pad{padding:var(--d-pad-card)}.card-head{display:flex;align-items:center;gap:10px;padding:14px var(--d-pad-card);border-bottom:1px solid var(--line)}.card-title{font-weight:600;font-size:14.5px;letter-spacing:-.005em}.card-sub{font-size:12.5px;color:var(--ink-600)}.btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;padding:7px 12px;border-radius:8px;background:white;border:1px solid var(--line);font-size:13px;font-weight:500;color:var(--ink-800);transition:all .12s}.btn:hover{border-color:var(--line-strong);background:var(--ink-50)}.btn svg{width:14px;height:14px}.btn-primary{background:var(--brand);color:white;border-color:var(--brand-deep);box-shadow:0 1px 0 var(--brand-deep),0 1px 3px rgba(232,93,44,.25)}.btn-primary:hover{background:var(--brand-deep)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--ink-100)}.btn-icon{padding:7px}.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.pill-scheduled{background:var(--status-scheduled-bg);color:var(--status-scheduled)}.pill-loading{background:var(--status-loading-bg);color:var(--status-loading)}.pill-transit{background:var(--status-transit-bg);color:var(--status-transit)}.pill-delivered{background:var(--status-delivered-bg);color:var(--status-delivered)}.pill-installing{background:var(--status-installing-bg);color:var(--status-installing)}.pill-paused{background:#ede9fe;color:#5b21b6}.pill-done{background:var(--status-done-bg);color:var(--status-done)}.pill-issue{background:var(--status-issue-bg);color:var(--status-issue)}.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:5px;font-weight:500;background:var(--ink-100);color:var(--ink-700);border:1px solid var(--line)}.avatar,.tag{font-size:11px}.avatar{width:26px;height:26px;border-radius:50%;background:var(--ink-200);color:var(--ink-800);display:grid;place-items:center;font-weight:600;border:2px solid white}.avatar-stack{display:flex}.avatar-stack .avatar+.avatar{margin-left:-8px}.avatar-orange{background:var(--brand-soft);color:var(--brand-deep)}.avatar-blue{background:#dbeafe;color:#1d4ed8}.avatar-green{background:#dcfce7;color:#15803d}.avatar-purple{background:#ede9fe;color:#6d28d9}.truck-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 4px;background:var(--ink-100);border-radius:999px;font-size:11.5px;font-weight:500;color:var(--ink-800)}.truck-chip-no{background:var(--ink-900);color:white;font-family:var(--font-mono);font-size:10px;padding:2px 6px;border-radius:999px}.empty{text-align:center;padding:40px 20px;color:var(--ink-600);font-size:13px}.kpi-strip{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--d-gap);gap:var(--d-gap);margin-bottom:var(--d-gap)}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--d-radius);padding:var(--d-pad-card);position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--ink-300)}.kpi-orange:before{background:var(--brand)}.kpi-green:before{background:#15803d}.kpi-red:before{background:#dc2626}.kpi-ink:before{background:var(--ink-700)}.kpi-label{font-size:12px;color:var(--ink-600);font-weight:500}.kpi-value{font-family:var(--font-display);font-weight:600;font-size:36px;letter-spacing:-.02em;line-height:1.1;margin:4px 0 2px}[data-density=compact] .kpi-value{font-size:28px}.kpi-sub{font-size:11.5px;color:var(--ink-600)}.schedule-grid{display:grid;grid-template-columns:1fr 340px;grid-gap:var(--d-gap);gap:var(--d-gap);align-items:start}[data-density=compact] .schedule-grid{grid-template-columns:1fr 300px}.timeline-body{position:relative;display:grid;grid-template-columns:1fr}.timeline-rail{display:grid;border-bottom:1px solid var(--line);background:var(--ink-50)}.timeline-rail:before{content:""}.timeline-hour{padding:8px 6px;font-size:11px;color:var(--ink-600);font-family:var(--font-mono);border-left:1px solid var(--line);text-align:left}.timeline-hour:first-child{border-left:none;grid-column:2}.timeline-rail .timeline-hour:first-child{grid-column:2}.timeline-rail{grid-template-columns:220px repeat(13,1fr)}.timeline-rail>.timeline-hour:first-child{grid-column:2/3}.lane{display:grid;grid-template-columns:220px 1fr;border-bottom:1px solid var(--line);min-height:64px}[data-density=compact] .lane{min-height:48px}.lane-head{padding:10px 14px;border-right:1px solid var(--line);background:var(--ink-50)}.lane-title{font-weight:600;font-size:13px}.lane-sub{font-size:11px;color:var(--ink-600);margin-top:2px}.lane-track{position:relative;display:grid;grid-template-columns:repeat(13,1fr)}.lane-cell{border-left:1px solid var(--line)}.lane-cell:first-child{border-left:none}.lane-block{position:absolute;border-radius:8px;padding:6px 9px;text-align:left;font-size:11.5px;overflow:hidden;border:1px solid;display:flex;flex-direction:column;justify-content:flex-start;gap:1px;transition:transform .12s,box-shadow .12s;z-index:1}.lane-block:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);z-index:3}.lane-block-title{font-weight:600;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;word-break:break-word}.lane-block-dest{font-size:10.5px;font-weight:500;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.lane-block-sub{display:flex;gap:6px;align-items:center;font-size:10px;line-height:1.1;margin-top:1px}.lane-scheduled{background:var(--status-scheduled-bg);border-color:var(--status-scheduled);color:var(--status-scheduled)}.lane-loading{background:var(--status-loading-bg);border-color:var(--status-loading);color:var(--status-loading)}.lane-transit{background:var(--status-transit-bg);border-color:var(--status-transit);color:var(--status-transit)}.lane-delivered{background:var(--status-delivered-bg);border-color:var(--status-delivered);color:var(--status-delivered)}.lane-installing{background:var(--status-installing-bg);border-color:var(--status-installing);color:var(--status-installing)}.lane-done{background:var(--status-done-bg);border-color:var(--status-done);color:var(--status-done)}.lane-issue{background:#fff4e0;border-color:#d97706;color:#92400e}.lane-cancelled{background:#fee2e2;border-color:#dc2626;color:#991b1b}.lane-install-segment{background:#fff1f2;border-color:#f43f5e;color:#9f1239;border-style:dashed}.lane-outstation{background:repeating-linear-gradient(45deg,#fff7ed,#fff7ed 8px,#ffedd5 0,#ffedd5 16px);border-color:#f59e0b;color:#92400e;border-style:dashed}.lane-paused{background:#ede9fe;border-color:#7c3aed;color:#5b21b6}.lane-block-title-row{display:flex;align-items:flex-start;gap:4px;justify-content:space-between}.lane-block-title-strike{text-decoration:line-through;text-decoration-thickness:1.5px}.lane-block-flags{display:flex;gap:3px;flex-shrink:0;align-items:center}.lane-block-flag{font-size:8.5px;font-weight:700;letter-spacing:.04em;padding:1px 5px;border-radius:3px;line-height:1.3;white-space:nowrap}.lane-block-flag-cancel{background:#dc2626;color:#fff}.lane-block-flag-issue{background:#d97706;color:#fff}.lane-block-flag-overnight{background:#f59e0b;color:#fff}.lane-block-flag-resched{background:rgba(0,0,0,.08);color:inherit;font-size:11px;padding:0 4px;font-weight:700}.lane-block-crew{display:inline-flex;align-items:center;background:rgba(0,0,0,.08);color:inherit;font-size:9.5px;padding:1px 6px;border-radius:3px;white-space:nowrap;margin-left:4px}.lane-block-crew,.lane-passengers{font-weight:600;letter-spacing:.02em}.lane-passengers{margin-top:6px;font-size:10.5px;color:#c2410c;line-height:1.2;word-break:break-word}.lane-outstation-tag{background:#fff7ed;color:#92400e;border:1px solid #f59e0b;border-radius:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.lane-leave-tag,.lane-outstation-tag{display:inline-flex;align-items:center;margin-top:6px;padding:2px 7px;font-size:10px;font-weight:700;letter-spacing:.04em;line-height:1.3;white-space:nowrap}.lane-leave-tag{background:#fef9c3;color:#854d0e;border:1px solid #ca8a04;border-radius:4px}.lane-leave-conflict{outline:2px solid #ca8a04;outline-offset:-2px;box-shadow:inset 0 0 0 1px #fef9c3}.lane-block-flag-leave{background:#ca8a04;color:#fff}.lane-deleted{opacity:.45;filter:grayscale(1);text-decoration:line-through}.lane-selected{outline:3px solid #1f6bb8;outline-offset:-3px;box-shadow:0 4px 12px rgba(31,107,184,.25)}.lane-block-flag-deleted{background:#6c6453;color:#fff}.lane-divider{display:flex;align-items:center;background:var(--ink-100);padding:6px 14px;font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-600);font-weight:600;border-bottom:1px solid var(--line)}.timeline{position:relative}.now-line{top:35px;bottom:0;width:2px;pointer-events:none}.now-line,.now-line-pill{position:absolute;background:var(--brand)}.now-line-pill{top:-10px;left:-32px;color:white;font-size:10px;font-weight:600;padding:2px 7px;border-radius:999px;white-space:nowrap;font-family:var(--font-mono)}.schedule-side .job-rows{padding:6px;max-height:720px;overflow-y:auto}.job-row{display:grid;grid-template-columns:56px 1fr auto;align-items:center;grid-gap:10px;gap:10px;padding:10px 12px;border-radius:10px;width:100%;text-align:left;transition:background .12s}.job-row:hover{background:var(--ink-50)}.job-row-time-h{font-family:var(--font-mono);font-size:13px;font-weight:600}.job-row-time-d{font-size:10.5px;color:var(--ink-600)}.job-row-title{font-weight:600;font-size:13px;display:flex;align-items:center;gap:6px}.job-row-sub{font-size:11.5px;color:var(--ink-600)}.dot-high{color:var(--brand);font-size:10px}.kanban-head{display:flex;align-items:center;margin-bottom:var(--d-gap)}.kanban-filters{display:flex;gap:6px}.kanban-legend{margin-left:auto;display:flex;gap:14px;font-size:12px;color:var(--ink-700)}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:currentColor}.kanban-cols{display:grid;grid-template-columns:repeat(7,minmax(220px,1fr));grid-gap:var(--d-gap);gap:var(--d-gap);overflow-x:auto;padding-bottom:12px}.kanban-col{background:var(--ink-50);border-radius:var(--d-radius);border:1px solid var(--line);display:flex;flex-direction:column;min-height:400px}.kanban-col-issue{background:#fff5f5;border-color:#fecaca}.kanban-col-head{padding:12px 14px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}.kanban-col-title{font-weight:600;font-size:13px}.kanban-col-sub{font-size:11px;color:var(--ink-600)}.kanban-col-count{margin-left:auto;background:white;border:1px solid var(--line);border-radius:999px;padding:1px 9px;font-size:11px;font-weight:600}.kanban-col-body{padding:10px;display:flex;flex-direction:column;gap:8px;flex:1 1}.kanban-empty{padding:20px 8px;text-align:center;font-size:11.5px;color:var(--ink-500);border:1px dashed var(--line);border-radius:8px}.kc{background:white;border:1px solid var(--line);border-radius:10px;padding:10px 12px;text-align:left;display:flex;flex-direction:column;gap:6px;position:relative;transition:transform .12s,box-shadow .12s;width:100%}.kc:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.kc-high{border-left:3px solid var(--brand)}.kc-head{display:flex;justify-content:space-between;align-items:center;gap:6px}.kc-id{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-600);font-weight:600}.kc-title{font-weight:600;font-size:13px;line-height:1.3}.kc-meta{display:flex;gap:10px;font-size:11px;color:var(--ink-600)}.kc-meta span{display:inline-flex;align-items:center;gap:4px}.kc-foot{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.kc-issue{background:var(--status-issue-bg);color:var(--status-issue);font-size:11px;padding:6px 8px;border-radius:6px;border:1px solid #fecaca}.kc-unassigned{font-size:10.5px;color:var(--brand-deep);background:var(--brand-tint);padding:2px 7px;border-radius:999px;font-weight:500}.kc-progress{height:3px;background:var(--ink-200);border-radius:999px;overflow:hidden;margin-top:4px}.kc-progress>div{height:100%;background:var(--brand)}.map-screen{display:grid;grid-template-columns:1fr 320px;grid-gap:var(--d-gap);gap:var(--d-gap);height:calc(100vh - 130px)}.map-card{padding:0;overflow:hidden;display:flex;flex-direction:column}.map-canvas{position:relative;flex:1 1;background:var(--paper);overflow:hidden}.map-bg,.map-route{position:absolute;inset:0;width:100%;height:100%}.map-route{pointer-events:none}.map-pin{position:absolute;transform:translate(-50%,-100%);cursor:pointer}.map-warehouse{transform:translate(-50%,-50%)}.map-warehouse-icon{width:36px;height:36px;background:var(--ink-900);color:white;border-radius:8px;display:grid;place-items:center;border:3px solid white;box-shadow:var(--shadow-md)}.map-warehouse-label{background:var(--ink-900);color:white;font-size:10px;padding:2px 7px;border-radius:999px;margin-top:4px;white-space:nowrap;font-family:var(--font-mono);text-align:center}.map-job{color:var(--ink-700);filter:drop-shadow(0 2px 4px rgba(0,0,0,.15));transition:transform .12s}.map-job-scheduled{color:var(--status-scheduled)}.map-job-loading{color:var(--status-loading)}.map-job-transit{color:var(--status-transit)}.map-job-delivered{color:var(--status-delivered)}.map-job-installing{color:var(--status-installing)}.map-job-done{color:var(--status-done)}.map-job-issue{color:var(--status-issue)}.map-job.active,.map-job:hover{transform:translate(-50%,-100%) scale(1.2);z-index:5}.map-pin-no{position:absolute;top:4px;left:50%;transform:translateX(-50%);font-family:var(--font-mono);font-size:9px;font-weight:700;color:white}.map-legend{display:flex;gap:14px;padding:10px 16px;border-top:1px solid var(--line);background:var(--card);font-size:11px;color:var(--ink-700);flex-wrap:wrap}.map-legend-item{display:inline-flex;align-items:center;gap:6px}.map-legend-item .legend-dot{width:8px;height:8px;border-radius:50%}.map-legend-item .pill-scheduled{background:var(--status-scheduled)}.map-legend-item .pill-loading{background:var(--status-loading)}.map-legend-item .pill-transit{background:var(--status-transit)}.map-legend-item .pill-delivered{background:var(--status-delivered)}.map-legend-item .pill-installing{background:var(--status-installing)}.map-legend-item .pill-done{background:var(--status-done)}.map-rail{display:flex;flex-direction:column;gap:8px;overflow-y:auto}.map-rail-head,.map-rail-item{padding:12px 14px}.map-rail-item{background:var(--card);border:1px solid var(--line);border-radius:var(--d-radius-sm);text-align:left;display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:border-color .12s}.map-rail-item:hover{border-color:var(--line-strong)}.map-rail-item.selected{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}.map-rail-row{display:flex;align-items:center;gap:8px}.map-rail-id{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-600);font-weight:600;margin-right:auto}.map-rail-cust{font-weight:600;font-size:13px}.map-rail-meta{display:flex;gap:8px;align-items:center;font-size:11px;color:var(--ink-600);flex-wrap:wrap}.map-rail-meta>span{display:inline-flex;align-items:center;gap:4px}.map-rail-actions{margin-top:4px}.orders-tabs{display:flex;gap:4px;margin-bottom:var(--d-gap);align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--d-radius);padding:6px}.orders-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:8px;font-size:13px;font-weight:500;color:var(--ink-700)}.orders-tab span{background:var(--ink-100);color:var(--ink-700);font-size:11px;font-weight:600;padding:0 7px;border-radius:999px}.orders-tab:hover{background:var(--ink-50)}.orders-tab.active{background:var(--ink-900);color:white}.orders-tab.active span{background:rgba(255,255,255,.15);color:white}.orders-table{width:100%;border-collapse:collapse}.orders-table th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-600);padding:12px 14px;background:var(--ink-50)}.orders-table td,.orders-table th{border-bottom:1px solid var(--line)}.orders-table td{padding:14px;font-size:13px;vertical-align:top}.orders-table tr:last-child td{border-bottom:none}.orders-table tbody tr{cursor:pointer;transition:background .12s}.orders-table tbody tr:hover{background:var(--ink-50)}.orders-id{font-family:var(--font-mono);font-weight:600}.orders-so{font-size:11px;color:var(--ink-600);margin-top:2px}.orders-cust{font-weight:600;display:flex;align-items:center;gap:6px}.orders-site{font-size:11.5px;color:var(--ink-600);margin-top:2px}.assign-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--d-gap);gap:var(--d-gap);margin-bottom:var(--d-gap)}.assign-row{padding:14px var(--d-pad-card);border-bottom:1px solid var(--line)}.assign-row:last-child{border-bottom:none}.assign-row-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}.assign-name{font-weight:600;font-size:14px}.assign-name .muted{font-weight:400;color:var(--ink-600)}.assign-sub{font-size:11.5px;color:var(--ink-600);margin-top:2px}.assign-jobs{display:flex;flex-direction:column;gap:6px}.assign-chip{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--ink-50);border:1px solid var(--line);border-radius:8px;font-size:12.5px}.assign-chip-time{font-family:var(--font-mono);font-weight:600;font-size:11.5px;min-width:40px}.assign-chip-cust{flex:1 1;font-weight:500}.assign-empty{padding:10px;font-size:11.5px;color:var(--ink-500);text-align:center;border:1px dashed var(--line);border-radius:8px}.assign-util{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:11px;color:var(--ink-600)}.assign-util-bar{flex:1 1;height:5px;background:var(--ink-200);border-radius:999px;overflow:hidden}.assign-util-bar>div{height:100%;background:var(--brand);border-radius:999px}.unassigned-row{padding:var(--d-pad-card);display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:10px;gap:10px}.reports-grid{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:var(--d-gap);gap:var(--d-gap)}.bar-chart{display:grid;grid-template-columns:repeat(14,1fr);grid-gap:6px;gap:6px;height:220px;align-items:end}.bar-col{flex-direction:column;align-items:center;gap:6px}.bar-col,.bar-stack{display:flex;height:100%}.bar-stack{gap:2px;align-items:end;width:100%;justify-content:center}.bar{width:7px;border-radius:3px 3px 0 0}.bar-d{background:var(--brand)}.bar-i{background:var(--status-installing)}.bar-label{font-size:10px;color:var(--ink-500);font-family:var(--font-mono)}.bar-ranked{display:flex;flex-direction:column;gap:14px}.bar-ranked-row{display:grid;grid-template-columns:100px 1fr 40px;align-items:center;grid-gap:10px;gap:10px}.bar-ranked-name{font-size:12.5px;font-weight:500}.bar-ranked-track{height:8px;background:var(--ink-100);border-radius:999px;overflow:hidden}.bar-ranked-fill{height:100%;background:var(--brand);border-radius:999px}.bar-ranked-pct{font-family:var(--font-mono);font-size:12px;font-weight:600;text-align:right}.job-detail-overlay{position:fixed;inset:0;background:rgba(22,21,18,.4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:flex-end;z-index:100;animation:fade .2s}@keyframes fade{0%{opacity:0}to{opacity:1}}.job-detail{width:920px;max-width:96vw;background:var(--paper);height:100vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:slide .25s}@keyframes slide{0%{transform:translateX(40px)}to{transform:translateX(0)}}.jd-head{display:flex;align-items:flex-start;gap:12px;padding:18px 24px;border-bottom:1px solid var(--line);background:var(--card);position:-webkit-sticky;position:sticky;top:0;z-index:2;flex-wrap:wrap}.jd-id{font-family:var(--font-mono);font-size:12px;color:var(--ink-600);font-weight:600}.jd-id .muted{color:var(--ink-500)}.jd-cust{font-family:var(--font-display);font-weight:600;font-size:20px;letter-spacing:-.01em}.jd-pipeline{padding:18px 24px;background:var(--card);border-bottom:1px solid var(--line);gap:4px}.jd-pipeline,.jd-stage{display:flex;align-items:center}.jd-stage{gap:8px}.jd-stage-dot{width:26px;height:26px;border-radius:50%;background:var(--ink-100);color:var(--ink-500);display:grid;place-items:center;font-size:11px;font-weight:600;border:2px solid var(--ink-100)}.jd-stage.done .jd-stage-dot{background:var(--status-done);color:white;border-color:var(--status-done)}.jd-stage.current .jd-stage-dot{background:var(--brand);color:white;border-color:var(--brand-tint);box-shadow:0 0 0 4px var(--brand-tint)}.jd-stage-label{font-size:12px;font-weight:500;color:var(--ink-700)}.jd-stage.done .jd-stage-label{color:var(--ink-900)}.jd-stage.current .jd-stage-label{color:var(--brand-deep);font-weight:600}.jd-stage-line{flex:1 1;height:2px;background:var(--ink-200);border-radius:999px;min-width:12px}.jd-stage-line.done{background:var(--status-done)}.jd-grid{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:var(--d-gap);gap:var(--d-gap);padding:24px}.jd-col{display:flex;flex-direction:column;gap:var(--d-gap)}.jd-section-title{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-700);margin-bottom:12px}.jd-kv{display:grid;grid-template-columns:130px 1fr;grid-gap:12px;gap:12px;padding:6px 0;font-size:13px;border-bottom:1px dashed var(--line)}.jd-kv:last-child{border-bottom:none}.jd-kv>span:first-child{color:var(--ink-600);font-weight:500}.jd-kv>span:last-child{font-weight:500}.jd-doors{width:100%;border-collapse:collapse}.jd-doors th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-600);padding:6px 8px}.jd-doors td,.jd-doors th{border-bottom:1px solid var(--line)}.jd-doors td{padding:8px;font-size:12.5px}.jd-doors tr:last-child td{border-bottom:none}.jd-doors code{font-family:var(--font-mono);font-size:11.5px;background:var(--ink-100);padding:1px 6px;border-radius:4px}.muted{color:var(--ink-600);font-weight:400}.jd-photos{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}.jd-photo{width:110px;height:110px;background:linear-gradient(135deg,var(--ink-200),var(--ink-300));border-radius:10px;display:grid;place-items:center;font-size:32px}.jd-sign{flex:1 1;min-width:200px;background:var(--ink-50);border:1px dashed var(--line-strong);border-radius:10px;padding:14px}.jd-sign-name{font-size:12px;color:var(--ink-600)}.jd-sign-sig{font-family:var(--font-display);font-style:italic;font-size:24px;margin:6px 0;color:var(--ink-900)}.jd-sign-time{font-size:11px;color:var(--ink-500);font-family:var(--font-mono)}.jd-log{display:flex;flex-direction:column;gap:10px}.jd-log-row{display:grid;grid-template-columns:60px 1fr;grid-gap:12px;gap:12px;font-size:12.5px;position:relative;padding-left:4px}.jd-log-time{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-600);font-weight:600}.jd-log-text{color:var(--ink-800)}.jd-log-row:before{content:"";position:absolute;left:65px;top:6px;width:6px;height:6px;background:var(--brand);border-radius:50%;border:2px solid var(--paper);box-shadow:0 0 0 1px var(--ink-300)}.planner-toolbar{display:flex;align-items:center;gap:14px;margin-bottom:18px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:10px}.planner-month{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--ink-900);margin-left:10px;letter-spacing:-.01em}.planner-select{font-size:13px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:white;font-family:inherit;color:var(--ink-800);cursor:pointer;min-width:160px}.planner-cal{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}.planner-dow{display:grid;grid-template-columns:repeat(7,1fr);background:var(--ink-50);border-bottom:1px solid var(--line)}.planner-dow>div{padding:9px 12px;font-size:11px;font-weight:600;color:var(--ink-500);text-transform:uppercase;letter-spacing:.07em;border-right:1px solid var(--line)}.planner-dow>div:last-child{border-right:none;color:var(--ink-400)}.planner-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(118px,1fr)}.planner-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 7px 7px;display:flex;flex-direction:column;gap:4px;cursor:pointer;transition:background .1s;position:relative;min-height:118px}.planner-cell:hover{background:#fffaf6}.planner-cell:nth-child(7n){border-right:none}.planner-cell.empty{cursor:default}.planner-cell.empty,.planner-cell.empty:hover{background:var(--ink-50)}.planner-cell.wknd{background:#fafaf8}.planner-cell.wknd:hover{background:#fff5ee}.planner-cell.past{opacity:.7}.planner-cell.today{background:#fff7f0;box-shadow:inset 0 0 0 2px var(--brand)}.planner-cell.today:hover{background:#fff1e6}.planner-cell-head{display:flex;align-items:center;gap:6px}.planner-cell-day{font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--ink-900)}.planner-cell-count,.planner-cell.wknd .planner-cell-day{color:var(--ink-500)}.planner-cell-count{font-size:10.5px;font-weight:600;background:var(--ink-100);padding:1px 6px;border-radius:6px;margin-left:auto}.planner-cell-today{font-size:9.5px;font-weight:700;color:white;background:var(--brand);padding:1px 6px;border-radius:4px;letter-spacing:.05em}.planner-add{align-self:flex-start;display:flex;align-items:center;gap:3px;font-size:11px;color:var(--ink-400);padding:2px 6px;border-radius:5px;border:1px dashed transparent;opacity:0;transition:opacity .1s}.planner-cell:hover .planner-add{opacity:1}.planner-add:hover{color:var(--brand);border-color:var(--brand);background:white}.planner-jobs{flex-direction:column;gap:2px;margin-top:2px;flex:1 1;min-height:0}.planner-job,.planner-jobs{display:flex;overflow:hidden}.planner-job{font-size:10.5px;padding:2px 5px;border-radius:4px;gap:4px;align-items:center;background:white;border-left:1px solid transparent;border:1px solid var(--line);border-left-width:3px;white-space:nowrap}.planner-job.delivery{border-left-color:var(--brand)}.planner-job.install{border-left-color:#5d8ed1}.planner-job.delivery-install{border-left-color:#7a5aaf;background:linear-gradient(90deg,#fff8f4,#f4f0fa)}.planner-job.done{opacity:.55;text-decoration:line-through}.planner-job.delayed{background:#fdf3ea;border-color:#e8c9a0 #e8c9a0 #e8c9a0 #c88a3a}.planner-job.transit{background:#fef5ee;border-left-color:var(--brand);font-weight:500}.pj-time{font-family:var(--font-mono);font-size:9.5px;color:var(--ink-600);flex-shrink:0}.pj-cust{font-size:10.5px;color:var(--ink-800);overflow:hidden;text-overflow:ellipsis}.planner-job.more{color:var(--ink-500);font-style:italic;border:none;padding-left:6px;background:transparent}.planner-cell-bars{display:flex;gap:1px;height:3px;border-radius:2px;overflow:hidden;margin-top:auto}.planner-cell-bars .bar{display:block;height:100%}.planner-cell-bars .bar.deliver{background:var(--brand)}.planner-cell-bars .bar.install{background:#5d8ed1}.planner-legend{display:flex;align-items:center;gap:18px;padding:12px 14px;margin-top:14px;font-size:12px;color:var(--ink-700);background:var(--surface);border:1px solid var(--line);border-radius:10px}.planner-legend i.dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.planner-legend i.dot.deliver{background:var(--brand)}.planner-legend i.dot.install{background:#5d8ed1}.planner-legend i.dot.both{background:linear-gradient(135deg,var(--brand) 50%,#7a5aaf 50%)}.res-lane-wrap{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:auto;max-width:100%}.res-lane-header{display:grid;border-bottom:1px solid var(--line);top:0;z-index:2}.res-lane-corner,.res-lane-header{background:var(--ink-50);position:-webkit-sticky;position:sticky}.res-lane-corner{padding:10px 12px;font-size:11px;font-weight:600;color:var(--ink-500);text-transform:uppercase;letter-spacing:.06em;left:0}.res-lane-corner,.res-lane-day{border-right:1px solid var(--line)}.res-lane-day{padding:6px 0;text-align:center}.res-lane-day.wknd{background:#f3f3f0}.res-lane-day.today{background:#fff7f0;box-shadow:inset 0 -3px 0 var(--brand)}.res-lane-day-num{font-size:12px;font-weight:600;color:var(--ink-800)}.res-lane-day-dow{font-size:9px;color:var(--ink-500);text-transform:uppercase;letter-spacing:.06em}.res-lane-day.today .res-lane-day-num{color:var(--brand)}.res-lane-row{display:grid;border-bottom:1px solid var(--line);min-height:50px}.res-lane-row:last-child{border-bottom:none}.res-lane-name{padding:8px 12px;gap:10px;border-right:1px solid var(--line);background:white;position:-webkit-sticky;position:sticky;left:0;z-index:1}.res-lane-mark,.res-lane-name{display:flex;align-items:center}.res-lane-mark{width:28px;height:28px;border-radius:6px;justify-content:center;color:white;font-size:10.5px;font-weight:600;flex-shrink:0}.res-lane-mark.gray{background:#8a8a8a}.res-lane-mark.orange{background:var(--brand)}.res-lane-mark.blue{background:#5d8ed1}.res-lane-mark.green{background:#6b9362}.res-lane-mark.purple{background:#7a5aaf}.res-lane-label{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink-900)}.res-lane-label,.res-lane-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.res-lane-sub{font-size:10.5px;color:var(--ink-600)}.res-lane-cell{border-right:1px solid var(--line-soft,#f0ede7);padding:4px 2px;display:flex;flex-direction:column;gap:2px;align-items:stretch}.res-lane-cell.wknd{background:#fafaf8}.res-lane-cell.today{background:#fff7f0}.res-lane-block{height:6px;border-radius:2px}.res-lane-block.delivery{background:var(--brand)}.res-lane-block.install{background:#5d8ed1}.res-lane-block.delivery-install{background:linear-gradient(90deg,var(--brand) 50%,#7a5aaf 50%)}.res-lane-block.done{opacity:.4}.res-lane-block.delayed{background:#c88a3a}.quick-action{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:white;cursor:pointer;text-align:left;width:100%;transition:border-color .1s,background .1s}.quick-action:hover{border-color:var(--brand);background:#fffaf6}.qa-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:white;flex-shrink:0}.qa-icon.brand{background:var(--brand)}.qa-icon.blue{background:#5d8ed1}.qa-icon.gray{background:#8a8a8a}.report-hero{display:flex;justify-content:space-between;align-items:flex-end;padding:20px 24px;background:linear-gradient(135deg,var(--ink-900) 0,var(--ink-800) 100%);color:white;border-radius:var(--d-radius);margin-bottom:var(--d-gap);position:relative;overflow:hidden}.report-hero:before{content:"";position:absolute;right:-40px;top:-40px;width:200px;height:200px;border-radius:50%;background:var(--brand);opacity:.15;filter:blur(40px)}.report-eyebrow{font-size:11px;letter-spacing:.12em;color:var(--brand);font-weight:600;text-transform:uppercase}.report-title{font-family:var(--font-display);font-weight:600;font-size:42px;letter-spacing:-.02em;margin:6px 0 4px;line-height:1}[data-density=compact] .report-title{font-size:32px}.report-sub{font-size:13px;color:rgba(255,255,255,.7)}.report-hero-actions{display:flex;gap:8px}.report-hero-actions .btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:white}.report-hero-actions .btn:hover{background:rgba(255,255,255,.18)}.weekly-chart{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:16px;gap:16px;height:280px;align-items:end}.wc-col{display:flex;flex-direction:column;gap:10px;height:100%}.wc-bar-wrap{flex:1 1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}.wc-tasks{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink-700);margin-bottom:4px}.wc-bar{width:64px;display:flex;flex-direction:column-reverse;border-radius:8px 8px 0 0;overflow:hidden;background:var(--ink-100);border:1px solid var(--line)}.wc-seg{width:100%}.wc-seg.wc-done{background:var(--status-done)}.wc-seg.wc-delay{background:var(--status-loading)}.wc-seg.wc-cancel{background:var(--status-issue)}.wc-seg.wc-pend{background:var(--ink-300)}.wc-label{text-align:center;display:flex;flex-direction:column;gap:2px;font-size:11.5px}.wc-label strong{font-weight:600}.wc-label span{color:var(--ink-600);font-size:10.5px}.wc-pct{font-family:var(--font-mono);font-weight:600;font-size:13px!important;color:var(--ink-900)!important;margin-top:4px}.wc-pct.good{color:var(--status-done)!important}.wc-pct.warn{color:var(--status-loading)!important}.wc-pct.muted{color:var(--ink-500)!important}.wc-legend{display:flex;gap:18px;justify-content:center;margin-top:16px;padding-top:16px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-700)}.wc-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle}.wc-dot.wc-done{background:var(--status-done)}.wc-dot.wc-delay{background:var(--status-loading)}.wc-dot.wc-cancel{background:var(--status-issue)}.wc-dot.wc-pend{background:var(--ink-300)}.heatmap{display:flex;flex-direction:column;gap:4px}.hm-head{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px;font-size:10.5px;color:var(--ink-600);text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-bottom:4px}.hm-head span{text-align:center}.hm-row{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px}.hm-cell{aspect-ratio:1.6/1;border-radius:6px;padding:6px 8px;display:flex;flex-direction:column;justify-content:space-between;font-size:11px;position:relative;border:1px solid transparent;min-height:52px}.hm-empty{background:transparent}.hm-zero{background:var(--ink-100);color:var(--ink-500)}.hm-untracked{background:var(--ink-200);color:var(--ink-700);border-color:var(--line)}.hm-good{background:#bbf7d0;color:#14532d;border-color:#86efac}.hm-ok{background:#dcfce7;color:#166534}.hm-warn{background:#fef3c7;color:#854d0e;border-color:#fde68a}.hm-bad{background:#fecaca;color:#7f1d1d;border-color:#fca5a5}.hm-date{font-family:var(--font-mono);font-weight:600;font-size:11px;opacity:.7}.hm-tasks{font-family:var(--font-display);font-weight:600;font-size:18px;line-height:1}.hm-flag{position:absolute;top:4px;right:6px;font-size:9px;font-weight:700;padding:1px 4px;border-radius:3px}.hm-flag-delay{background:var(--status-loading);color:white}.hm-flag-cancel{background:var(--status-issue);color:white;right:22px}.hm-legend{display:flex;gap:14px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:11px;color:var(--ink-700);flex-wrap:wrap}.hm-legend span{display:inline-flex;align-items:center;gap:6px}.hm-swatch{width:14px;height:14px;border-radius:3px}.lb{width:100%;border-collapse:collapse}.lb th{text-align:left;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-600);padding:8px 10px}.lb td,.lb th{border-bottom:1px solid var(--line)}.lb td{padding:10px;font-size:12.5px;vertical-align:middle}.lb tr:last-child td{border-bottom:none}.lb-rank{display:inline-grid;place-items:center;width:22px;height:22px;background:var(--ink-100);border-radius:50%;font-size:11px;font-weight:700;color:var(--ink-700);font-family:var(--font-mono)}.lb tr:first-child .lb-rank{background:var(--brand);color:white}.lb tr:nth-child(2) .lb-rank{background:var(--ink-700);color:white}.lb tr:nth-child(3) .lb-rank{background:var(--ink-400);color:white}.lb-pct{display:flex;align-items:center;gap:8px;min-width:90px}.lb-pct-bar{flex:1 1;height:5px;background:var(--ink-100);border-radius:999px;overflow:hidden}.lb-pct-bar>div{height:100%;background:var(--status-done);border-radius:999px}.lb-pct span{font-family:var(--font-mono);font-size:11px;font-weight:600;min-width:32px;text-align:right}.km-list{gap:16px}.km-list,.km-row{display:flex;flex-direction:column}.km-row{gap:6px}.km-row-head{display:flex;align-items:center;gap:10px;font-size:13px}.km-bar{height:6px;background:var(--ink-100);border-radius:999px;overflow:hidden}.km-bar>div{height:100%;background:var(--brand);border-radius:999px}.km-note{font-size:11.5px;color:var(--ink-600)}.issues-list{max-height:600px;overflow-y:auto;padding:6px}.issue-row{display:grid;grid-template-columns:56px 1fr auto;grid-gap:12px;gap:12px;align-items:flex-start;padding:12px;border-radius:10px;margin-bottom:4px;border:1px solid var(--line)}.issue-row.issue-cancel{background:#fef2f2;border-color:#fecaca}.issue-row.issue-delay{background:#fefce8;border-color:#fef08a}.issue-date{display:flex;flex-direction:column;align-items:center;font-family:var(--font-mono)}.issue-date strong{font-size:14px}.issue-date span{font-size:10px;color:var(--ink-600)}.issue-dest{font-weight:600;font-size:13px;margin-bottom:2px}.issue-meta{font-size:11.5px;color:var(--ink-600);display:flex;gap:6px}.issue-meta code{background:var(--ink-100);padding:1px 5px;border-radius:4px;font-size:11px}.dot-sep{color:var(--ink-400)}.issue-reason{font-size:12px;color:var(--ink-800);margin-top:4px;font-style:italic}.issue-status{display:flex;align-items:center}.dest-list{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.dest-row{display:grid;grid-template-columns:24px 1fr 30px;grid-gap:10px;gap:10px;align-items:center;font-size:12.5px;position:relative;padding-bottom:10px;border-bottom:1px dashed var(--line)}.dest-row:last-child{border-bottom:none}.dest-rank{font-family:var(--font-mono);font-weight:700;font-size:11px;color:var(--ink-500);text-align:right}.dest-name{font-weight:500}.dest-trips{font-family:var(--font-mono);font-weight:600;text-align:right;background:var(--brand-tint);color:var(--brand-deep);padding:2px 8px;border-radius:999px;font-size:11px}.dest-bar{grid-column:1/-1;height:3px;background:var(--ink-100);border-radius:999px;overflow:hidden;margin-top:4px}.dest-bar>div{height:100%;background:var(--brand);border-radius:999px}.report-note{margin-top:14px;padding:12px 14px;background:var(--ink-50);border-left:3px solid var(--brand);border-radius:0 8px 8px 0;font-size:12px;color:var(--ink-800);display:flex;gap:10px;align-items:flex-start}.report-note svg{flex-shrink:0;margin-top:2px;color:var(--brand)}@media print{.dev-bar,.modal-backdrop,.res-action,.side,.side-newjob,.sr-action,.topbar,[data-print-hide],button.btn{display:none!important}.app,.main{display:block!important;margin:0!important}.app,.content,.main{padding:0!important}.app,.content,body{background:white!important;color:black!important}.card,.kpi-card,.report-hero,.reports-grid>*{page-break-inside:avoid;break-inside:avoid}.kpi-strip{grid-template-columns:repeat(4,1fr)!important;gap:8px!important}}