:root{--sp-bg:#f5f7fb;--sp-card:#fff;--sp-text:#172033;--sp-muted:#7b8496;--sp-line:#e8ebf2;--sp-primary:#335cff;--sp-primary-soft:#eef1ff;--sp-sidebar:#0e1628;--sp-sidebar-2:#17213a;--sp-success:#23915b;--sp-danger:#c44747;--sp-warning:#b97b18;--sp-shadow:0 8px 28px rgba(31,45,79,.055);--sp-ink:#172033}
[data-bs-theme=dark]{--sp-bg:#0d111b;--sp-card:#141b29;--sp-text:#edf2ff;--sp-muted:#9ca8bd;--sp-line:#263147;--sp-primary-soft:#202c53;--sp-sidebar:#090e18;--sp-sidebar-2:#121a2b;--sp-shadow:0 8px 28px rgba(0,0,0,.22);--sp-ink:#edf2ff}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:var(--sp-bg);color:var(--sp-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:276px;background:linear-gradient(180deg,var(--sp-sidebar),#0a1120);color:#fff;padding:22px 16px 18px;z-index:1040;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:4px 8px}.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#4776ff,#8a5cff);display:grid;place-items:center;font-weight:800;color:#fff;box-shadow:0 10px 28px rgba(71,118,255,.35);flex:0 0 auto}.brand-mark.large{width:60px;height:60px;border-radius:18px;font-size:20px;margin:auto}.brand strong,.brand small,.sidebar-footer span,.sidebar-footer small{display:block}.brand strong{letter-spacing:-.02em}.brand small{font-size:11px;color:#9ba5ba;margin-top:2px;max-width:155px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-close{margin-left:auto;color:#fff}.sidebar-nav{overflow-y:auto;overflow-x:hidden;padding-right:3px;scrollbar-width:thin;scrollbar-color:#26334e transparent;flex:1}.sidebar .nav-link{color:#bcc6da;border-radius:11px;padding:9px 11px;margin:2px 0;display:flex;gap:10px;align-items:center;font-size:13px;transition:.16s}.sidebar .nav-link i{font-size:16px;width:20px;text-align:center}.sidebar .nav-link:hover,.sidebar .nav-link.active{background:var(--sp-sidebar-2);color:#fff}.sidebar .nav-link.active{box-shadow:inset 3px 0 #6b85ff}.nav-section{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#66738d;margin:21px 11px 6px;font-weight:700}.sidebar-footer{border-top:1px solid #1e2940;padding:13px 9px 0;margin-top:12px;color:#7e8ba5}.sidebar-footer small{font-weight:700;color:#a7b1c5}.sidebar-footer span{font-size:10px;margin-top:2px}.sidebar-backdrop{display:none}.main{margin-left:276px;padding:24px 30px 54px;min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:25px}.topbar-left,.topbar-tools{display:flex;align-items:center;gap:12px}.topbar h1{font-size:27px;margin:0;font-weight:760;letter-spacing:-.035em}.topbar p{margin:3px 0 0;color:var(--sp-muted);font-size:12px}.topbar-icon{width:40px;height:40px;border:1px solid var(--sp-line);background:var(--sp-card);color:var(--sp-text);border-radius:12px;display:grid;place-items:center}.global-search{width:310px;height:42px;border:1px solid var(--sp-line);background:var(--sp-card);border-radius:13px;align-items:center;padding:0 13px;gap:9px}.global-search i{color:var(--sp-muted)}.global-search input{border:0;background:transparent;outline:0;color:var(--sp-text);width:100%;font-size:13px}.user-box{display:flex;align-items:center;gap:10px;background:var(--sp-card);border:1px solid var(--sp-line);padding:7px 9px;border-radius:14px;box-shadow:var(--sp-shadow)}.user-box strong,.user-box small{display:block;line-height:1.25}.user-box strong{font-size:12px}.user-box small{color:var(--sp-muted);font-size:10px}.avatar{width:36px;height:36px;border-radius:50%;background:var(--sp-primary-soft);color:#5b75ef;display:grid;place-items:center;font-weight:800;flex:0 0 auto}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.kpi-grid.platform{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi-card{background:var(--sp-card);border:1px solid var(--sp-line);border-radius:18px;padding:18px;display:flex;align-items:center;gap:13px;min-height:102px;box-shadow:var(--sp-shadow)}.kpi-card small{display:block;color:var(--sp-muted);font-size:11px;margin-bottom:5px}.kpi-card strong{font-size:23px;letter-spacing:-.035em}.kpi-icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:var(--sp-primary-soft);color:#5570ec;font-size:20px}.card-panel{background:var(--sp-card);border:1px solid var(--sp-line);border-radius:18px;padding:19px;box-shadow:var(--sp-shadow)}.panel-head,.page-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:17px}.panel-head h3{font-size:17px;margin:0;font-weight:720}.panel-head p,.page-actions p{margin:4px 0 0;color:var(--sp-muted)}.table{--bs-table-bg:transparent;--bs-table-color:var(--sp-text);margin-bottom:0}.table thead th{font-size:10px;text-transform:uppercase;letter-spacing:.055em;color:var(--sp-muted);border-bottom-color:var(--sp-line);font-weight:750}.table td{border-bottom-color:var(--sp-line);padding-top:13px;padding-bottom:13px;vertical-align:middle}.table a{font-weight:650}.status-badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:var(--sp-primary-soft);color:#5269c7;font-size:10px;font-weight:750;white-space:nowrap}.status-badge.success{background:rgba(35,145,91,.12);color:var(--sp-success)}.status-badge.danger{background:rgba(196,71,71,.13);color:var(--sp-danger)}.status-badge.warning{background:rgba(185,123,24,.13);color:var(--sp-warning)}.btn{border-radius:10px}.btn-primary{background:var(--sp-primary);border-color:var(--sp-primary)}.form-control,.form-select{border-radius:10px;border-color:var(--sp-line);background-color:var(--sp-card);color:var(--sp-text);min-height:39px}.form-control:focus,.form-select:focus{border-color:#8297ff;box-shadow:0 0 0 .2rem rgba(51,92,255,.12)}.form-label{font-size:11px;font-weight:700;color:var(--sp-muted);margin-bottom:5px}.modal-content{border:1px solid var(--sp-line);border-radius:18px;background:var(--sp-card)}.modal-header,.modal-footer{border-color:var(--sp-line)}.login-page{min-height:100vh;background:radial-gradient(circle at 10% 10%,#eef2ff 0,transparent 34%),radial-gradient(circle at 90% 90%,#f4edff 0,transparent 30%),var(--sp-bg);display:grid;place-items:center;padding:30px}.login-panel{width:min(100%,460px)}.login-brand{text-align:center;margin-bottom:22px}.login-brand h2{margin:12px 0 4px}.login-brand p{color:var(--sp-muted)}.demo-note{font-size:12px;color:var(--sp-muted);background:var(--sp-bg);padding:10px 12px;border-radius:10px}.empty-state{text-align:center;color:var(--sp-muted);padding:34px 15px;border:1px dashed var(--sp-line);border-radius:14px}.timeline-item{position:relative;padding:0 0 16px 18px;border-left:2px solid var(--sp-line);margin-left:4px}.timeline-item:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--sp-primary);position:absolute;left:-5.5px;top:4px}.timeline-item strong,.timeline-item small{display:block}.timeline-item small{color:var(--sp-muted);font-size:10px;margin-top:2px}.timeline-item p{margin:6px 0 0;color:var(--sp-muted)}.job-info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.job-info-grid small,.job-info-grid strong{display:block}.job-info-grid small{color:var(--sp-muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em}.job-info-grid strong{margin-top:4px}.job-tabs{gap:6px;flex-wrap:nowrap;overflow:auto;padding-bottom:4px}.job-tabs .nav-link{white-space:nowrap;border-radius:10px;color:var(--sp-muted);background:var(--sp-card);border:1px solid var(--sp-line)}.job-tabs .nav-link.active{background:var(--sp-primary);border-color:var(--sp-primary);color:#fff}.tech-chip{display:inline-flex;align-items:center;gap:5px;background:var(--sp-primary-soft);border-radius:999px;padding:7px 10px;color:var(--sp-text)}.tech-chip small{color:var(--sp-muted)}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.photo-grid figure{margin:0;border:1px solid var(--sp-line);border-radius:14px;overflow:hidden;background:var(--sp-card)}.photo-grid img{width:100%;height:165px;object-fit:cover;display:block}.photo-grid figcaption{padding:8px 10px}.photo-grid figcaption strong,.photo-grid figcaption small{display:block}.photo-grid figcaption small{color:var(--sp-muted)}.signature-pad{display:block;width:100%;height:180px;background:#fff;border:1px dashed #b7c0d0;border-radius:12px;touch-action:none}.signature-record{border:1px solid var(--sp-line);border-radius:13px;padding:10px;margin-bottom:10px}.signature-record img{height:65px;max-width:100%;display:block;background:#fff;border-radius:7px;margin-bottom:7px}.signature-record strong,.signature-record small{display:block}.signature-record small{color:var(--sp-muted)}.dispatch-tech,.role-row,.stock-list>div,.report-row,.notification-item{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--sp-line)}.dispatch-tech:last-child,.role-row:last-child,.stock-list>div:last-child,.report-row:last-child,.notification-item:last-child{border-bottom:0}.dispatch-tech strong,.dispatch-tech small,.role-row strong,.role-row small,.report-row small{display:block}.dispatch-tech small,.role-row small,.report-row small{color:var(--sp-muted);font-size:10px}.report-row{justify-content:space-between}.stock-list>div{justify-content:space-between}.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 14px}.permission-grid h6{grid-column:1/-1;margin:14px 0 2px;border-bottom:1px solid var(--sp-line);padding-bottom:7px}.permission-grid label{border:1px solid var(--sp-line);border-radius:10px;padding:9px;display:grid;grid-template-columns:18px 1fr;gap:2px 6px}.permission-grid label small{grid-column:2;color:var(--sp-muted);font-size:9px}.notification-item.unread{background:var(--sp-primary-soft);margin-inline:-10px;padding-inline:10px;border-radius:10px}.portal-body{background:var(--sp-bg)}.portal-header{max-width:1180px;margin:16px auto 0;padding:13px 18px;background:var(--sp-card);border:1px solid var(--sp-line);border-radius:15px;display:flex;align-items:center;justify-content:space-between}.portal-header strong,.portal-header small{display:block}.portal-header small{color:var(--sp-muted)}.portal-main{max-width:1180px;margin:0 auto;padding:22px 14px 50px}.portal-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;background:linear-gradient(135deg,#274fe4,#7756e9);color:#fff;border-radius:20px;padding:25px;margin-bottom:20px}.portal-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.portal-card{background:var(--sp-card);border:1px solid var(--sp-line);border-radius:15px;padding:15px}.dt-container .dt-search input,.dt-container .dt-length select{border:1px solid var(--sp-line);border-radius:9px;background:var(--sp-card);color:var(--sp-text);padding:5px 8px}.dt-container .dt-info,.dt-container .dt-length,.dt-container .dt-search{font-size:11px;color:var(--sp-muted)}.fc{--fc-border-color:var(--sp-line);--fc-page-bg-color:var(--sp-card);--fc-neutral-bg-color:var(--sp-bg);--fc-list-event-hover-bg-color:var(--sp-primary-soft)}.fc .fc-button{border-radius:8px!important;background:var(--sp-primary)!important;border-color:var(--sp-primary)!important}.alert{border-radius:13px}.report-chart{max-height:300px}
@media(max-width:1200px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:991px){.sidebar{transform:translateX(-100%);transition:.23s}.sidebar.open{transform:translateX(0)}.sidebar-backdrop.show{display:block;position:fixed;inset:0;background:rgba(4,9,18,.48);z-index:1035}.main{margin-left:0;padding:20px}.topbar{gap:12px}.user-box>div{display:none}.job-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.permission-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.kpi-grid,.kpi-grid.platform,.portal-card-grid{grid-template-columns:1fr}.topbar h1{font-size:21px}.topbar-tools{gap:6px}.user-box{padding:6px}.topbar-icon{width:36px;height:36px}.page-actions,.panel-head{align-items:flex-start;flex-direction:column}.page-actions>.btn,.page-actions>div>.btn{width:auto}.main{padding:14px}.card-panel{padding:13px;border-radius:15px}.job-info-grid,.permission-grid{grid-template-columns:1fr}.photo-grid{grid-template-columns:1fr}.portal-hero{align-items:flex-start;flex-direction:column}.table{font-size:12px}.topbar p{display:none}}

/* Lead pipeline */
.lead-board{display:grid;grid-template-columns:repeat(7,minmax(230px,1fr));gap:14px;overflow-x:auto;padding-bottom:12px}.lead-column{background:var(--bs-tertiary-bg);border:1px solid var(--bs-border-color);border-radius:16px;min-height:520px}.lead-column>header{display:flex;justify-content:space-between;align-items:center;padding:14px;border-bottom:1px solid var(--bs-border-color)}.lead-column>header span{background:var(--bs-secondary-bg);border-radius:999px;padding:2px 8px;font-size:.75rem}.lead-dropzone{min-height:450px;padding:10px}.lead-dropzone.drag-over{outline:2px dashed var(--bs-primary);outline-offset:-6px;border-radius:12px}.lead-card{background:var(--bs-body-bg);border:1px solid var(--bs-border-color);box-shadow:0 4px 14px rgba(15,23,42,.05);border-radius:12px;padding:12px;margin-bottom:10px;cursor:grab}.lead-card>span,.lead-card>small{display:block;color:var(--bs-secondary-color);margin-top:4px}.lead-card.dragging{opacity:.45}.asset-qr-sheet{max-width:420px;margin:20px auto;text-align:center}.asset-qr-sheet #assetQr{display:flex;justify-content:center;margin-bottom:18px}.asset-qr-sheet small,.asset-qr-sheet code{display:block;margin-top:8px;word-break:break-all}@media print{.sidebar,.topbar,.page-actions,.sidebar-backdrop{display:none!important}.main{margin:0!important;padding:0!important}.asset-qr-sheet{box-shadow:none!important;border:0!important}}
.barcode-label{max-width:520px;padding:36px}.collab-comment{border-bottom:1px solid var(--bs-border-color);padding:.7rem 0}.collab-comment:last-child{border:0}@media print{.sidebar,.topbar,.page-actions,.btn,a[href]{display:none!important}.barcode-label{box-shadow:none!important;border:1px solid #bbb!important;margin:40px auto!important}}
