:root{--bg: #f4f7f8;--panel: #ffffff;--panel-soft: #f8fbfc;--text: #172025;--muted: #66757e;--line: #dce5e8;--nav: #11313c;--nav-soft: #1a4552;--blue: #2966d9;--green: #1a8746;--amber: #c97a0a;--orange: #d96a1d;--red: #cb3a2d;--grey: #6b7680;--shadow: 0 18px 40px rgba(16, 39, 49, .08);--radius: 18px;font-family:Aptos,Segoe UI,Tahoma,sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top right,rgba(41,102,217,.08),transparent 24rem),linear-gradient(180deg,#fbfdfe,#f3f7f8);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:100vh}.sidebar{background:#f8fbfc;border-right:1px solid var(--line);box-shadow:10px 0 26px #1027310a;color:var(--text);display:flex;flex-direction:column;gap:22px;min-height:100vh;padding:24px 16px;position:sticky;top:0}.brand{align-items:center;display:flex;gap:12px;padding:4px 10px 16px}.brand-mark{align-items:center;background:#e7f5ee;border:1px solid #cfe7db;border-radius:12px;color:#0f4f2d;display:inline-flex;font-weight:900;height:48px;justify-content:center;width:48px}.brand strong,.brand small{display:block}.brand small,.sidebar-note span{color:var(--muted)}.side-nav{display:grid;gap:5px}.nav-link{align-items:center;border:1px solid transparent;border-radius:12px;color:#31515b;display:flex;gap:12px;min-height:44px;padding:10px 12px}.nav-link:hover,.nav-link.active{background:#e6f3f5;border-color:#d2e6eb;color:#12313b}.nav-link.disabled{color:#93a7b0;cursor:default;min-height:40px}.nav-link.disabled:hover{background:transparent;border-color:transparent;color:#9aaab1}.nav-disabled-block{display:grid;gap:5px}.nav-section-label{border-top:1px solid var(--line);color:#8498a1;font-size:.72rem;font-weight:900;letter-spacing:.12em;margin:14px 8px 4px;padding-top:14px;text-transform:uppercase}.nav-icon,.user-chip>span{align-items:center;background:#eaf2f5;border-radius:9px;color:#24424d;display:inline-flex;font-size:.72rem;font-weight:800;height:28px;justify-content:center;letter-spacing:.04em;width:28px}.nav-link.active .nav-icon{background:#d7ebef;color:#0f313b}.nav-link.disabled .nav-icon{background:#edf3f5;color:#6f858e}.sidebar-note{background:#fff;border:1px solid var(--line);border-radius:14px;display:grid;gap:6px;margin-top:auto;padding:14px}.tabs{display:grid;gap:20px}.tab-list{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-wrap:wrap;gap:8px;padding:8px}.tab-list button{background:transparent;border:0;border-radius:12px;color:var(--muted);cursor:pointer;font-weight:800;min-height:40px;padding:9px 14px}.tab-list button.active,.tab-list button:hover{background:#17323c;color:#fff}.tab-panel{display:grid;gap:20px}.main-shell{min-width:0}.topbar{align-items:center;background:#ffffffe0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;min-height:86px;padding:18px 28px;position:sticky;top:0;z-index:10}.topbar h1,.page-header h2,.panel-heading h3{margin:0}.content-shell{display:grid;gap:20px;padding:28px}.eyebrow,.page-header p,.sync-pill span,.user-chip small,.kpi-card p,.kpi-card small,.summary-metric span,.panel-meta,.legend-item small,.modal-grid dt{color:var(--muted)}.eyebrow{font-size:.75rem;font-weight:800;letter-spacing:.12em;margin:0 0 6px;text-transform:uppercase}.topbar-actions,.page-actions,.filter-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.sync-pill,.user-chip{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:999px;display:flex;gap:10px;padding:8px 12px}.sync-pill{display:grid;gap:2px}.page-header{align-items:end;display:flex;gap:16px;justify-content:space-between}.primary-button,.secondary-button{border:0;border-radius:12px;cursor:pointer;font-weight:750;padding:10px 14px}.primary-button{background:#17323c;color:#fff}.secondary-button{background:#edf4f6;color:#17323c}.kpi-grid,.dashboard-grid,.summary-metrics,.legend-strip{display:grid;gap:16px}.pretrip-kpi-grid,.speed-kpi-grid,.driving-hours-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.esg-kpi-grid,.training-kpi-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.summons-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.kpi-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1.6fr 1fr}.kpi-card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.kpi-card{display:grid;gap:8px;min-height:140px;padding:18px}.kpi-card strong{font-size:clamp(1.6rem,2.4vw,2.25rem);letter-spacing:-.05em}.kpi-marker{border-radius:999px;height:6px;width:42px}.panel{padding:18px}.panel-heading{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:14px}.panel-meta{font-size:.88rem;font-weight:700}.tone-good{--tone: var(--green);--tone-bg: #e7f6ed}.tone-warning{--tone: var(--amber);--tone-bg: #fff4de}.tone-major{--tone: var(--orange);--tone-bg: #fff0e3}.tone-critical{--tone: var(--red);--tone-bg: #ffebe8}.tone-info{--tone: var(--blue);--tone-bg: #eaf1ff}.tone-neutral{--tone: var(--grey);--tone-bg: #eef2f4}.kpi-card,.status-badge{color:var(--tone, var(--text))}.kpi-marker{background:var(--tone, var(--blue))}.status-badge{background:var(--tone-bg, #eef4f7);border-radius:999px;display:inline-flex;font-size:.78rem;font-weight:800;line-height:1;padding:7px 9px;white-space:nowrap}.summary-metrics{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}.summary-metric,.summary-item,.legend-item{background:var(--panel-soft);border:1px solid var(--line);border-radius:14px;padding:14px}.summary-metric strong{display:block;font-size:1.5rem;letter-spacing:-.04em;margin-top:4px}.summary-list{display:grid;gap:10px}.summary-item strong,.legend-item strong{display:block}.summary-item span{color:var(--muted);display:inline-block;font-size:.85rem;font-weight:700;margin-top:2px}.summary-item p{margin:6px 0 0}.legend-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.legend-item{display:grid;gap:6px}.legend-swatch{border-radius:999px;display:inline-flex;height:10px;width:56px}.legend-swatch.tone-good{background:#b8e4c8}.legend-swatch.tone-warning{background:#f6d9a6}.legend-swatch.tone-major{background:#f5c7a3}.legend-swatch.tone-critical{background:#f0b3ad}.legend-swatch.tone-neutral{background:#ccd5da}.filter-bar{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);display:flex;gap:14px;justify-content:space-between;padding:14px}.search-box{align-items:center;display:flex;flex:1;gap:10px}.search-box span{color:var(--muted);font-weight:800}.search-box input,.filter-actions input,.filter-actions select{background:#f7fafb;border:1px solid var(--line);border-radius:12px;min-height:42px;padding:8px 12px}.search-box input{width:100%}.filter-grid{display:grid;gap:14px;grid-template-columns:repeat(5,minmax(0,1fr))}.monthly-report-filter{align-items:end;flex-wrap:wrap;justify-content:flex-start}.monthly-report-period{align-items:end;display:grid;flex:0 0 auto;gap:10px;grid-template-columns:minmax(150px,190px) minmax(110px,140px)}.monthly-report-search{flex:1 1 360px;min-width:260px}.stacked-field{display:grid;gap:8px}.stacked-field span{color:var(--muted);font-weight:800}.stacked-field input,.stacked-field select{background:#f7fafb;border:1px solid var(--line);border-radius:12px;min-height:42px;padding:8px 12px;width:100%}.lorry-form,.incident-form,.esg-form,.training-form,.summons-form{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.stacked-field textarea{background:#f7fafb;border:1px solid var(--line);border-radius:12px;min-height:42px;padding:10px 12px;resize:vertical;width:100%}.wide-field{grid-column:span 2}.choice-field{border:0;display:grid;gap:8px;margin:0;padding:0}.choice-field legend,.optional-fields-title{color:var(--muted);font-weight:800}.choice-row{display:flex;gap:8px}.choice-pill{align-items:center;background:#f7fafb;border:1px solid var(--line);border-radius:12px;cursor:pointer;display:inline-flex;font-weight:800;gap:8px;min-height:42px;padding:8px 12px}.choice-pill.active{background:#e8f2f5;border-color:#9ebbc4;color:#17323c}.choice-pill input{accent-color:#17323c}.optional-fields{background:var(--panel-soft);border:1px dashed var(--line);border-radius:14px;display:grid;gap:14px;grid-column:1 / -1;grid-template-columns:repeat(3,minmax(0,1fr));padding:14px}.optional-fields-title{grid-column:1 / -1}.field-hint{color:var(--muted);font-weight:700}.field-hint.warning{color:var(--amber)}.lorry-form-actions,.incident-form-actions,.esg-form-actions,.training-form-actions,.summons-form-actions{align-items:end;display:flex}.summons-extract-panel{align-items:end;background:var(--panel-soft);border:1px solid var(--line);border-radius:14px;display:grid;gap:14px;grid-template-columns:minmax(0,1fr) auto;margin-bottom:16px;padding:14px}.summons-extract-actions{display:flex}.summons-extract-results{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.esg-report-controls,.training-report-controls{align-items:end;display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.esg-report-actions,.training-report-actions{display:flex;flex-wrap:wrap;gap:10px}.esg-report,.training-report{display:grid;gap:18px}.esg-report-header,.training-report-header{border-bottom:1px solid var(--line);display:grid;gap:4px;padding-bottom:14px}.esg-report-header h3,.training-report-header h3{font-size:1.6rem;margin:0}.esg-report-header span,.esg-executive-summary,.training-report-header span,.training-executive-summary{color:var(--muted);font-weight:700}.esg-executive-summary,.training-executive-summary{background:var(--panel-soft);border:1px solid var(--line);border-radius:14px;line-height:1.6;margin:0;padding:14px}.esg-report-grid,.training-report-grid{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.esg-breakdown,.training-breakdown{background:var(--panel-soft);border:1px solid var(--line);border-radius:14px;display:grid;gap:10px;padding:14px}.esg-breakdown h4,.training-breakdown h4{margin:0}.esg-breakdown-row,.training-breakdown-row{align-items:center;border-top:1px solid var(--line);display:flex;gap:12px;justify-content:space-between;padding-top:10px}.esg-breakdown-row span,.training-breakdown-row span{color:var(--muted);font-weight:700}.esg-report-table-heading,.training-report-table-heading{margin-bottom:0}.sync-alert{border:1px solid var(--line);border-radius:14px;font-weight:800;padding:12px 14px}.sync-alert.warning{background:#fff8e8;border-color:#f1d59d;color:#7a4b06}.sync-alert.critical{background:#fff0ee;border-color:#f0b3ad;color:#9f291f}.evidence-list{display:grid;gap:6px}.evidence-modal{max-height:min(760px,92vh);overflow:auto}.evidence-modal-section{background:var(--panel-soft);border:1px solid var(--line);border-radius:14px;display:grid;gap:10px;margin-bottom:14px;padding:14px}.evidence-modal-section h4{margin:0}.evidence-upload-form{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.evidence-upload-actions{align-items:end;display:flex}.training-signoff{border-top:1px solid var(--line);display:grid;gap:18px;grid-template-columns:repeat(3,minmax(0,1fr));padding-top:18px}.training-signoff div{display:grid;gap:18px}.training-signoff span{color:var(--muted);font-weight:800}.table-actions{display:flex;flex-wrap:wrap;gap:8px}.link-button{background:transparent;border:0;color:var(--blue);cursor:pointer;font-weight:800;padding:0}.attachment-link{justify-self:start}.attachment-actions{align-items:center;display:flex;gap:8px}.attachment-icon-button{align-items:center;background:#eaf2ff;border:1px solid #cfe0ff;border-radius:9px;color:var(--blue);display:inline-flex;font-size:0;height:34px;justify-content:center;width:34px}.attachment-icon-button:before{content:"📎";font-size:1rem;line-height:1}.attachment-icon-button:hover{background:#dceaff}.attachment-missing{align-items:center;background:#eef2f4;border-radius:9px;color:var(--muted);display:inline-flex;font-weight:900;height:34px;justify-content:center;width:34px}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.link-button.danger{color:var(--red)}.primary-button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.55}.form-note{margin:12px 0 0}.form-note-error{color:var(--red);font-weight:700}.table-wrap,.matrix-wrap{overflow:auto}.data-table,.report-matrix{border-collapse:separate;border-spacing:0;min-width:100%;width:max-content}.data-table{min-width:980px;width:100%}.data-table th,.report-matrix th{background:#f6f9fa;color:var(--muted);font-size:.78rem;font-weight:800;letter-spacing:.04em;text-align:left;text-transform:uppercase}.data-table th,.data-table td,.report-matrix th,.report-matrix td{border-bottom:1px solid var(--line);padding:12px 10px;vertical-align:middle}.data-table tbody tr:hover td{background:#f8fbfc}.data-table tbody tr.row-critical td{background:#fff6f5}.data-table tbody tr.row-warning td{background:#fffaf2}.data-table tbody tr.row-good td{background:#fbfefd}.table-link{color:var(--blue);font-weight:800}.area-card{align-items:start;display:grid;gap:12px}.area-card-copy{margin:0;max-width:70ch}.area-card-action{display:inline-flex;justify-self:start}.report-matrix th,.report-matrix td{min-width:74px;text-align:center}.report-matrix .sticky-col{background:#fff;position:sticky;text-align:left;z-index:2}.report-matrix th.sticky-col{background:#f6f9fa;z-index:4}.report-matrix .sticky-1{left:0;min-width:180px}.report-matrix .sticky-2{left:180px;min-width:120px}.matrix-cell{background:var(--tone-bg, #eef4f7);border:0;border-radius:10px;color:var(--tone, var(--text));cursor:pointer;font-weight:800;min-height:34px;min-width:44px;padding:6px 8px}.matrix-value{font-weight:800}.row-lowlight td{background:#fff5f4}.empty-state,.loading{background:var(--panel);border:1px dashed var(--line);border-radius:16px;color:var(--muted);padding:22px;text-align:center}.modal-backdrop{align-items:center;background:#101f267a;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:30}.detail-modal{background:#fff;border-radius:20px;box-shadow:0 24px 60px #0f1f2640;max-width:760px;padding:20px;width:min(100%,760px)}.modal-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.modal-grid dt,.modal-grid dd{margin:0}.modal-grid dd{font-weight:800;margin-top:4px}@media(max-width:1280px){.pretrip-kpi-grid,.driving-hours-kpi-grid,.speed-kpi-grid,.esg-kpi-grid,.training-kpi-grid,.kpi-grid.four,.legend-strip,.summary-metrics,.esg-report-grid,.training-report-grid,.training-signoff{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}}@media(max-width:860px){.app-shell{grid-template-columns:1fr}.sidebar{min-height:auto;position:static}.topbar,.page-header,.filter-bar{align-items:flex-start;flex-direction:column}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.lorry-form,.incident-form,.esg-form,.training-form,.summons-form,.optional-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.esg-report-controls,.training-report-controls,.evidence-upload-form{align-items:stretch;grid-template-columns:1fr}.topbar-actions,.filter-actions{width:100%}.monthly-report-period{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.search-box{align-items:stretch;flex-direction:column}}@media(max-width:620px){.content-shell,.topbar,.sidebar{padding:16px}.pretrip-kpi-grid,.driving-hours-kpi-grid,.speed-kpi-grid,.esg-kpi-grid,.training-kpi-grid,.kpi-grid.four,.legend-strip,.summary-metrics,.esg-report-grid,.training-report-grid,.filter-grid,.lorry-form,.incident-form,.esg-form,.training-form,.summons-form,.evidence-upload-form,.optional-fields,.summons-extract-panel,.summons-extract-results,.modal-grid,.training-signoff,.monthly-report-period{grid-template-columns:1fr}.wide-field{grid-column:span 1}.report-matrix .sticky-col{position:static}}@media print{body{background:#fff}.sidebar,.topbar,.filter-bar,.no-print,.secondary-button,.modal-backdrop{display:none!important}.esg-report-panel,.training-report-panel{border:0}.esg-report,.training-report{color:#000}.content-shell,.panel,.kpi-card{box-shadow:none;padding:0}}
