:root{color:#18212f;background:#f5f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px}*{box-sizing:border-box}body{margin:0}button,.button,input,select,textarea{font:inherit;border:1px solid #cbd5e1;border-radius:6px}button,.button{color:#18212f;cursor:pointer;background:#fff;align-items:center;gap:8px;min-height:38px;padding:8px 12px;text-decoration:none;display:inline-flex}button:hover,.button:hover{border-color:#2563eb}button:disabled{cursor:wait;opacity:.6}.disabled-link{cursor:not-allowed;opacity:.55;pointer-events:none}input,select,textarea{background:#fff;width:100%;min-height:36px;padding:7px 9px}textarea{resize:vertical;min-height:96px}input[type=checkbox]{width:auto;min-height:auto}.app-shell{max-width:1480px;margin:0 auto;padding:28px}.app-layout{grid-template-columns:210px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#e5e7eb;background:#111827;grid-template-rows:auto minmax(0,1fr) auto;align-self:start;width:210px;height:100vh;min-height:0;padding:14px 10px;display:grid;position:sticky;top:0}.sidebar-brand{border-bottom:1px solid #94a3b83d;gap:6px;margin-bottom:10px;padding:0 6px 10px;display:grid}.sidebar-logo{object-fit:contain;object-position:left center;width:100%;max-width:156px;height:auto;max-height:34px;display:block}.sidebar-logo-card{background:#fff;border-radius:6px;margin-bottom:6px;padding:6px 7px;display:inline-flex}.sidebar-brand-content{gap:2px;min-width:0;display:grid}.sidebar-brand strong{color:#fff;font-size:14px;line-height:1.15}.sidebar-brand span,.sidebar-user span,.nav-group>span{color:#94a3b8;text-transform:uppercase;font-size:10px;font-weight:760}.main-content{min-width:0;padding:28px}.login-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{background:#fff;border:1px solid #dbe3ef;border-radius:8px;gap:14px;width:100%;max-width:420px;padding:28px;display:grid;position:relative;overflow:hidden}.login-panel.has-error{animation:.32s ease-out auth-panel-shake}.auth-challenge-panel h1,.auth-challenge-panel>p{text-align:center}.auth-challenge-panel>p{max-width:320px;margin-left:auto;margin-right:auto}.auth-challenge-panel .notice{text-align:left}.auth-challenge-panel .otp-field{width:100%;max-width:350px;margin:2px auto}.auth-challenge-panel>button{justify-content:center}.public-layout{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:18px;display:grid}.public-layout .login-panel{max-width:none;position:sticky;top:18px}.public-layout .login-panel h1{font-size:22px}.login-panel p{color:#5f6f86;margin:-4px 0 4px}.login-qr{justify-self:center;width:100%;max-width:220px}.primary-passkey-button{color:#fff;background:#18212f;border-color:#18212f;justify-content:center}.primary-passkey-button:hover{background:#263449;border-color:#263449}.auth-fingerprint-active{animation:.9s ease-in-out infinite auth-fingerprint-pulse}.otp-field{cursor:text;display:block;position:relative}.otp-native-input{caret-color:#0000;opacity:.01;z-index:2;position:absolute;inset:0}.otp-slots{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.otp-slot{aspect-ratio:1;color:#18212f;background:#f8fafc;border:1px solid #cbd5e1;border-radius:6px;justify-content:center;align-items:center;min-width:0;font-size:20px;font-weight:760;transition:background-color .16s,border-color .16s,box-shadow .16s,transform .16s;display:flex}.otp-slot.active{background:#fff;border-color:#2563eb;transform:translateY(-2px);box-shadow:0 0 0 3px #2563eb21}.otp-slot.filled{background:#eff6ff;border-color:#93c5fd;animation:.22s ease-out otp-slot-fill}.auth-success-panel{place-items:center;min-height:300px}.auth-success{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:22px;width:100%;min-height:240px;animation:.36s cubic-bezier(.16,1,.3,1) both auth-success-enter;display:flex}.auth-success-visual{width:132px;height:132px;position:relative}.auth-success-mark,.auth-success-ring,.auth-particle{position:absolute;top:50%;left:50%}.auth-success-mark{color:#fff;z-index:2;background:#087a5b;border:1px solid #056248;border-radius:50%;justify-content:center;align-items:center;width:78px;height:78px;margin:-39px;animation:.52s cubic-bezier(.16,1,.3,1) .12s both auth-mark-pop;display:flex;box-shadow:0 14px 32px #087a5b3d}.auth-success-mark svg{stroke-dasharray:50;stroke-dashoffset:50px;animation:.38s ease-out .34s both auth-check-draw}.auth-success-ring{border:1px solid #087a5b59;border-radius:50%;transform:translate(-50%,-50%)scale(.35)}.auth-success-ring.inner{width:102px;height:102px;animation:.62s ease-out 90ms both auth-ring-expand}.auth-success-ring.outer{width:132px;height:132px;animation:.72s ease-out .16s both auth-ring-expand}.auth-particle{animation:auth-particle-burst .68s var(--particle-delay) cubic-bezier(.16, 1, .3, 1) both;background:#10b981;width:7px;height:7px;margin:-3px;transform:translate(0)rotate(0)scale(0)}.auth-particle.particle-1{background:#2563eb;border-radius:50%;width:6px;height:6px}.auth-particle.particle-2{background:#7dd3fc;width:9px;height:4px}.auth-success-copy{gap:5px;animation:.42s ease-out .36s both auth-copy-enter;display:grid}.auth-success-copy strong{color:#123c34;font-size:22px}.auth-success-copy span{color:#5f6f86;font-size:13px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes auth-panel-shake{0%,to{transform:translate(0)}30%{transform:translate(-5px)}65%{transform:translate(4px)}}@keyframes auth-fingerprint-pulse{0%,to{opacity:.55;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}@keyframes otp-slot-fill{0%{transform:scale(.88)}to{transform:scale(1)}}@keyframes auth-success-enter{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes auth-mark-pop{0%{opacity:0;transform:scale(.3)rotate(-18deg)}70%{opacity:1;transform:scale(1.08)rotate(2deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes auth-check-draw{to{stroke-dashoffset:0}}@keyframes auth-ring-expand{0%{opacity:0;transform:translate(-50%,-50%)scale(.35)}45%{opacity:.75}to{opacity:0;transform:translate(-50%,-50%)scale(1)}}@keyframes auth-particle-burst{0%{opacity:0;transform:translate(0)rotate(0)scale(0)}22%{opacity:1}to{opacity:0;transform:translate(var(--particle-x), var(--particle-y)) rotate(var(--particle-rotation)) scale(1)}}@keyframes auth-copy-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.login-panel.has-error,.auth-fingerprint-active,.otp-slot.filled,.auth-success,.auth-success-mark,.auth-success-mark svg,.auth-success-ring,.auth-particle,.auth-success-copy{animation:none}.auth-particle,.auth-success-ring{display:none}.auth-success-mark svg{stroke-dashoffset:0}}.topbar{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:22px;display:flex}h1,h2{margin:0}h1{font-size:30px;font-weight:760}h2{font-size:17px}.topbar p,.muted{color:#5f6f86;margin:6px 0 0}.sync-status{color:#64748b;flex-wrap:wrap;align-items:center;gap:6px;margin-top:9px;font-size:13px;display:flex}.sync-status strong{color:#253244}.sync-status.success:before{content:"";background:#10b981;border-radius:999px;width:8px;height:8px}.sync-status.error:before{content:"";background:#ef4444;border-radius:999px;width:8px;height:8px}.sync-status.partial:before{content:"";background:#f59e0b;border-radius:999px;width:8px;height:8px}.sync-warning{color:#b45309;font-weight:700}.sync-status.none:before{content:"";background:#94a3b8;border-radius:999px;width:8px;height:8px}.toolbar,.inline-actions{align-items:center;gap:10px;display:flex}.toolbar input{width:150px}.month-picker{grid-template-columns:38px 178px 38px;align-items:center;gap:6px;display:grid}.month-picker button{justify-content:center;padding:8px}.month-display{background:#fff;border:1px solid #cbd5e1;border-radius:6px;align-items:center;min-height:38px;padding:3px 8px;display:grid}.month-display strong{text-transform:capitalize;font-size:13px;font-weight:760;line-height:1.1}.month-display input{border:0;width:100%;min-height:0;padding:0}.month-display input:focus{outline:none}.view-switcher,.nav-group{grid-auto-rows:max-content;align-content:start;gap:4px;display:grid}.view-switcher{scrollbar-width:none;min-height:0;padding-right:2px;overflow-y:auto}.view-switcher::-webkit-scrollbar{display:none}.nav-group{border-bottom:1px solid #94a3b82e;padding:0 0 8px}.nav-group:last-child{border-bottom:0}.nav-group>span{margin:6px 7px 1px}.view-switcher button{color:#cbd5e1;text-overflow:ellipsis;white-space:nowrap;background:0 0;border-color:#0000;justify-content:flex-start;align-self:start;gap:7px;width:100%;min-height:28px;padding:4px 7px;font-size:13px;font-weight:720;overflow:hidden}.view-switcher button svg{flex:0 0 16px}.view-switcher button:hover{color:#fff;background:#ffffff14;border-color:#0000}.view-switcher button.active{color:#fff;background:#2563eb;border-color:#2563eb}.sidebar-user{border-top:1px solid #94a3b83d;gap:5px;padding:10px 6px 0;display:grid}.sidebar-user strong{color:#fff;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sidebar-user button{color:#e5e7eb;background:#ffffff14;border-color:#94a3b859;justify-content:center;min-height:28px;padding:4px 7px;font-size:13px}.mobile-topbar,.mobile-bottom-nav,.mobile-nav-backdrop,.mobile-nav-close,.mobile-login-slot,.mobile-contract-cards,.mobile-report-cards,.admin-user-cards,.technician-mobile-cards,.technicians-mobile-controls,.contracts-result-meta,.mobile-action-label,.usage-mobile-controls{display:none}.desktop-login-slot{display:block}.notice{background:#fff7ed;border:1px solid #fed7aa;border-radius:6px;margin-bottom:18px;padding:12px 14px}.notice.compact{margin-top:16px}.executive-comment{color:#26364b;background:#fff;border:1px solid #dbe3ef;border-left:4px solid #2563eb;border-radius:8px;margin-bottom:18px;padding:16px 18px;line-height:1.55}.executive-comment strong{color:#0f172a}.stats{grid-template-columns:repeat(7,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}.executive-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.risk-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.project-stats{grid-template-columns:repeat(6,minmax(0,1fr))}.integration-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{text-align:left;background:#fff;border:1px solid #dbe3ef;border-radius:8px;padding:18px}.metric span{color:#617085;display:block}.metric strong{margin-top:4px;font-size:28px;display:block}.metric small{color:#64748b;margin-top:8px;font-size:12px;font-weight:700;display:block}.metric-button{cursor:pointer;align-items:stretch;width:100%;min-height:auto;display:block}.metric-button:hover,.metric-button.active{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.executive-stats .metric{min-height:118px}.executive-stats .metric strong{font-size:34px}.metric.warn strong{color:#b45309}.metric.danger strong{color:#b91c1c}.metric.money strong,.money-number{color:#047857;font-weight:760}.workspace{grid-template-columns:minmax(0,1fr) 360px;gap:18px;margin-bottom:18px;display:grid}.executive-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;margin-bottom:18px;display:grid}.executive-drilldown{margin-bottom:18px}.drilldown-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.drilldown-summary-card{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;padding:13px 14px}.drilldown-summary-card span{color:#64748b;font-size:13px;display:block}.drilldown-summary-card strong{color:#172033;margin-top:3px;font-size:22px;display:block}.drilldown-summary-card.warn strong{color:#b45309}.drilldown-summary-card.danger strong{color:#b91c1c}.drilldown-summary-card.money strong{color:#047857}.trend-kpis{grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;display:grid}.trend-chart{grid-auto-columns:minmax(54px,1fr);grid-auto-flow:column;align-items:end;gap:12px;min-height:260px;padding-top:8px;display:grid;overflow-x:auto}.trend-column{grid-template-rows:auto 180px auto;align-items:center;gap:8px;min-width:54px;display:grid}.trend-value{color:#52637a;text-align:center;white-space:nowrap;font-size:12px;font-weight:760}.trend-bar-shell{background:#eef2f7;border-radius:8px;justify-content:center;align-items:end;width:100%;height:180px;display:flex;overflow:hidden}.trend-bar{background:#2563eb;border-radius:8px 8px 0 0;width:100%}.trend-bar.danger{background:#dc2626}.trend-bar.money{background:#059669}.trend-bar-shell.stacked{flex-direction:column-reverse;justify-content:end;align-items:end}.trend-bar.contract{background:#2563eb;border-radius:0}.trend-bar.non-contract{background:#38bdf8;border-radius:8px 8px 0 0}.trend-label{color:#64748b;font-size:12px;font-weight:700}.breakdown-panel{margin-bottom:18px}.breakdown-grid{grid-template-columns:minmax(0,1fr) 360px;gap:24px;display:grid}.breakdown-grid h3{color:#52637a;text-transform:uppercase;margin:0 0 8px;font-size:13px}.compact-list{gap:8px;display:grid}.compact-row{border-bottom:1px solid #e2e8f0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 0;display:grid}.compact-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compact-row small{color:#64748b;text-overflow:ellipsis;margin-top:2px;font-size:12px;font-weight:500;display:block;overflow:hidden}.compact-row strong{font-variant-numeric:tabular-nums}.bar-list,.ranked-list{gap:11px;display:grid}.bar-row{grid-template-columns:170px minmax(120px,1fr) 88px;align-items:center;gap:12px;display:grid}.bar-label{gap:2px;min-width:0;display:grid}.bar-label strong,.rank-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rank-name small{color:#64748b;text-overflow:ellipsis;margin-top:2px;font-size:12px;font-weight:500;display:block;overflow:hidden}.bar-label span{color:#64748b;font-size:12px}.bar-track{background:#eef2f7;border-radius:999px;height:12px;overflow:hidden}.bar-fill{background:#2563eb;border-radius:999px;height:100%}.bar-value{font-variant-numeric:tabular-nums;text-align:right;font-weight:760}.ranked-row{border-bottom:1px solid #e2e8f0;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 0;display:grid}.rank{color:#52637a;background:#eef2f7;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:760;display:inline-flex}.ranked-row strong{font-variant-numeric:tabular-nums}.panel{background:#fff;border:1px solid #dbe3ef;border-radius:8px;padding:18px}.panel.wide{min-width:0}.panel-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.collapsible-heading{border-bottom:1px solid #e2e8f0;margin-bottom:16px;padding-bottom:12px}.filters{gap:10px;display:flex}.filters select{min-width:170px}.billing-toolbar{grid-template-columns:minmax(260px,1fr) auto;align-items:center;gap:12px;margin-bottom:14px;display:grid}.billing-filters{gap:6px;display:flex}.billing-filters button{white-space:nowrap;min-height:36px}.billing-filters button.active{color:#fff;background:#2563eb;border-color:#2563eb}.billing-completeness,.billing-status{white-space:nowrap;border:1px solid #cbd5e1;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:760;display:inline-flex}.billing-completeness.complete,.billing-status.ok{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.billing-completeness.incomplete,.billing-status.missing,.billing-status.zero{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.billing-status.adjusted{color:#b45309;background:#fff7ed;border-color:#fed7aa}.billing-table td small{color:#64748b;max-width:320px;margin-top:3px;display:block}.empty-table-cell{color:#64748b;text-align:center;padding:28px!important}.search-input{min-width:280px}.search-with-icon{background:#fff;border:1px solid #cbd5e1;border-radius:6px;align-items:center;gap:8px;width:min(560px,100%);max-width:560px;padding:0 10px;display:flex}.search-with-icon svg{color:#64748b;flex:none}.search-with-icon input{border:0;min-width:0;padding-left:0}.search-with-icon input:focus{outline:none}.admin-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.subtabs{border-bottom:1px solid #e2e8f0;flex-wrap:wrap;gap:8px;margin-bottom:16px;padding-bottom:12px;display:flex}.subtabs button{min-height:32px;padding:6px 11px}.subtabs button.active{color:#fff;background:#2563eb;border-color:#2563eb}.database-imports{max-width:640px}.mapping-admin{gap:18px;display:grid}.mapping-bulk-form{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:minmax(260px,1fr) minmax(280px,1.4fr) minmax(220px,1fr) auto;gap:12px;padding:14px;display:grid}.mapping-bulk-form h2{margin-bottom:4px}.mapping-bulk-form button{justify-content:center;align-self:end}.jira-mappings-table{min-width:1120px}.integration-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;margin-top:8px;display:grid}.integration-grid h3,.integration-section h3{color:#52637a;text-transform:uppercase;margin:0 0 10px;font-size:13px}.integration-section{border-top:1px solid #e2e8f0;margin-top:18px;padding-top:18px}.definition-list{gap:10px;margin:0;display:grid}.definition-list div,.month-distribution div{border-bottom:1px solid #e2e8f0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 0;display:grid}.definition-list dt{color:#64748b;font-weight:720}.definition-list dd{text-align:right;text-overflow:ellipsis;white-space:nowrap;max-width:360px;margin:0;font-weight:760;overflow:hidden}.month-distribution{gap:2px;display:grid}.month-distribution span{color:#253244}.month-distribution strong{font-variant-numeric:tabular-nums}.table-count{color:#52637a;background:#f1f5f9;border-radius:999px;padding:6px 10px;font-size:13px;font-weight:760}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:980px}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid #e2e8f0;padding:10px}th{color:#52637a;text-transform:uppercase;font-size:12px;font-weight:760}td{color:#253244}.clickable-row{cursor:pointer}.clickable-row:hover td{background:#f8fafc}.mobile-contract-card{text-align:left;background:#fff;border:1px solid #dbe3ef;border-radius:8px;gap:12px;width:100%;padding:13px;display:grid}.mobile-contract-card-toggle{text-align:left;background:0 0;border:0;gap:11px;width:100%;min-height:0;padding:0;display:grid}.mobile-contract-card-header{justify-content:space-between;align-items:start;gap:12px;display:flex}.mobile-contract-card-header>span{gap:4px;min-width:0;display:grid}.mobile-contract-card-header strong{line-height:1.25}.mobile-contract-card-header small{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:700}.mobile-contract-card-header svg{flex:none;margin-top:2px;transition:transform .16s}.mobile-contract-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobile-contract-card-summary,.mobile-contract-card-grid{display:none}.mobile-contract-card-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobile-contract-card-summary span{color:#64748b;gap:2px;font-size:12px;display:grid}.mobile-contract-card-summary strong{color:#172033;font-size:17px}.mobile-contract-card-summary .negative-number strong{color:#b91c1c}.mobile-contract-progress{background:#e8edf4;border-radius:999px;height:5px;display:none;overflow:hidden}.mobile-contract-progress>span{border-radius:inherit;background:#2563eb;height:100%;display:block}.mobile-contract-progress>span.over{background:#dc2626}.mobile-contract-card-grid span{color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;gap:2px;padding:8px;font-size:12px;display:grid}.mobile-contract-card-grid strong{color:#172033;font-size:18px}.mobile-contract-card-grid .money-number{color:#047857}.mobile-contract-card-grid .negative-number{color:#b91c1c}.mobile-contract-details{color:#fff;background:#25364f;border-color:#25364f;grid-column:1/-1;justify-content:center}.usage-heading-title{align-items:center;gap:8px;display:flex}.summary-table{min-width:1120px}.employee-table{min-width:760px;font-size:16px}.employee-table th,.employee-table td{padding:14px 12px}.employee-table td:nth-child(n+2){text-align:right}.numeric-header .sort-button{justify-content:flex-end}.sort-button{color:inherit;text-transform:uppercase;background:0 0;border:0;justify-content:flex-start;width:100%;min-height:auto;padding:0;font-size:12px;font-weight:760}.sort-button:hover{color:#2563eb;border-color:#0000}.sort-button.active{color:#172033}.sort-button svg{color:#94a3b8;flex:none}.technicians-table{min-width:1060px}.technicians-table th,.technicians-table td{padding:10px 8px}.technicians-table td:nth-child(n+2),.technicians-table th:nth-child(n+2){text-align:right}.technicians-table td:first-child,.technicians-table th:first-child{min-width:260px}.technicians-table th:nth-child(2),.technicians-table td:nth-child(2){width:88px}.technicians-table th{white-space:normal;line-height:1.15}.technician-toggle{color:inherit;background:0 0;border:0;justify-content:flex-start;width:100%;min-height:auto;padding:0;font-weight:700}.technician-toggle:disabled{cursor:default;opacity:1}.technician-toggle:hover{color:#2563eb;border-color:#0000}.target-toggle{white-space:nowrap;justify-content:flex-end;align-items:center;gap:6px;display:inline-flex}.target-toggle span{color:#52627a;min-width:22px;font-size:12px;font-weight:700}.absence-manager{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;gap:10px;margin-bottom:14px;padding:12px;display:grid}.absence-form{grid-template-columns:minmax(180px,1.2fr) 140px 140px 120px minmax(170px,auto) minmax(160px,1fr) auto;gap:8px;display:grid}.absence-form input,.absence-form select{min-width:0}.absence-list{flex-wrap:wrap;gap:8px;display:flex}.absence-list>span{background:#fff;border:1px solid #dbe3ef;border-radius:999px;align-items:center;gap:6px;padding:5px 6px 5px 10px;display:inline-flex}.absence-list button{min-height:28px;padding:3px 8px}.rotated-icon{transform:rotate(180deg)}.technician-daily-row>td{background:#f8fafc;padding:0 12px 14px}.technician-daily-panel{border:1px solid #dbe3ef;border-radius:8px;gap:10px;padding:12px;display:grid}.compact-heading{margin-bottom:0}.compact-heading h3{margin:0;font-size:15px}.technician-person-summary{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.technician-person-summary>div,.technician-person-breakdown span{background:#fff;border:1px solid #dbe3ef;border-radius:8px;gap:4px;min-width:0;padding:10px;display:grid}.technician-person-summary span,.technician-person-breakdown small{color:#52627a;text-transform:uppercase;font-size:11px;font-weight:760}.technician-person-summary strong,.technician-person-breakdown strong{color:#172033;text-overflow:ellipsis;white-space:nowrap;font-size:17px;overflow:hidden}.technician-person-breakdown{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;display:grid}.technician-daily-table{min-width:920px;font-size:13px}.technician-daily-table th,.technician-daily-table td{padding:9px 10px}.technician-daily-table td:nth-child(n+2),.technician-daily-table th:nth-child(n+2){text-align:right}.admin-contracts-table{min-width:1500px;font-size:14px}.contracts-list{gap:8px;display:grid}.contract-list-item{background:#fff;border:1px solid #dbe3ef;border-radius:8px;overflow:hidden}.contract-list-item.expanded{border-color:#b8c7dd;box-shadow:0 10px 24px #0f172a0f}.contract-list-summary{text-align:left;border:0;border-radius:0;grid-template-columns:minmax(260px,1fr) auto 22px;align-items:center;gap:16px;width:100%;min-height:64px;padding:12px 16px;display:grid}.contract-list-summary:hover{background:#f8fafc;border-color:#0000}.contract-summary-main{gap:4px;min-width:0;display:grid}.contract-summary-main strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.contract-summary-main span{color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.contract-summary-meta{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.contract-chip{color:#334155;white-space:nowrap;background:#eef4fb;border:1px solid #dbe3ef;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:760}.contract-chip.success{color:#047857;background:#ecfdf5;border-color:#bbf7d0}.contract-chip.muted-chip{color:#64748b;background:#f1f5f9}.contract-summary-chevron{color:#64748b;transition:transform .16s}.contract-list-item.expanded .contract-summary-chevron{transform:rotate(180deg)}.contract-details-panel{background:#f8fafc;border-top:1px solid #dbe3ef;grid-template-columns:minmax(280px,2fr) 130px 120px repeat(3,minmax(130px,1fr)) repeat(2,minmax(160px,1fr)) 130px;gap:12px;padding:14px 16px 16px;display:grid}.contract-details-panel label{gap:5px;min-width:0;display:grid}.contract-details-panel label>span{color:#52627a;text-transform:uppercase;font-size:11px;font-weight:760}.contract-details-panel input,.contract-details-panel select{min-width:0}.contract-active-toggle{align-content:end;padding-bottom:4px}.contract-details-actions{justify-content:flex-end;align-items:end;gap:8px;display:flex}.projects-admin-table{min-width:1680px;font-size:14px}.projects-report-table{min-width:1320px}.projects-report-table small{color:#64748b;margin-top:2px;font-size:12px;display:block}.contract-create-form{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:150px minmax(260px,2fr) 130px 110px 130px 145px 145px minmax(150px,1fr) minmax(150px,1fr) 110px auto;gap:10px;margin-bottom:14px;padding:12px;display:grid}.contract-terms-panel{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;gap:14px;margin-top:18px;padding:16px;display:grid}.contract-list-item .contract-terms-panel{background:#fff;border-bottom:0;border-left:0;border-right:0;border-radius:0;margin-top:0}.contract-current-term{background:#ecfdf5;border:1px solid #bbf7d0;border-radius:8px;gap:4px;padding:12px 14px;display:grid}.contract-current-term span,.contract-term-form label>span,.term-edit-grid label>span{color:#52627a;text-transform:uppercase;font-size:11px;font-weight:760}.contract-current-term strong{color:#065f46}.term-warnings{gap:8px;display:grid}.contract-term-form{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:145px 145px 130px 120px 130px minmax(160px,1fr) auto auto;gap:10px;padding:12px;display:grid}.contract-term-form label,.term-edit-grid label{gap:5px;min-width:0;display:grid}.contract-term-form button{justify-content:center}.contract-terms-timeline{gap:12px;display:grid;position:relative}.contract-term-card{grid-template-columns:18px minmax(0,1fr);gap:12px;display:grid}.term-timeline-marker{align-self:stretch;position:relative}.term-timeline-marker:before{content:"";background:#dbe3ef;width:2px;position:absolute;top:16px;bottom:-12px;left:8px}.contract-term-card:last-child .term-timeline-marker:before{display:none}.term-timeline-marker:after{content:"";background:#94a3b8;border:3px solid #fff;border-radius:999px;width:10px;height:10px;position:absolute;top:14px;left:3px;box-shadow:0 0 0 1px #dbe3ef}.contract-term-card.current .term-timeline-marker:after{background:#10b981;box-shadow:0 0 0 1px #34d399}.contract-term-card.future .term-timeline-marker:after{background:#2563eb;box-shadow:0 0 0 1px #93c5fd}.term-card-body{background:#fff;border:1px solid #dbe3ef;border-radius:8px;gap:12px;padding:12px;display:grid}.contract-term-card.current .term-card-body{border-color:#86efac}.term-card-heading{justify-content:space-between;align-items:start;gap:12px;display:flex}.term-card-heading>div{gap:3px;min-width:0;display:grid}.term-card-heading strong{color:#172033}.term-card-heading span:not(.contract-chip){color:#64748b;font-size:13px}.term-edit-grid{grid-template-columns:145px 145px 130px 120px 130px minmax(180px,1fr);gap:10px;display:grid}.term-base-grid{grid-template-columns:repeat(3,minmax(120px,1fr));gap:10px;display:grid}.term-base-grid span{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;gap:3px;padding:10px;display:grid}.term-base-grid small{color:#64748b;font-size:12px}.term-card-actions{justify-content:flex-end;gap:8px;display:flex}.contract-terms-table{min-width:1080px;font-size:14px}.contract-terms-table th,.contract-terms-table td{vertical-align:middle}.contract-terms-table input{min-width:110px}.project-create-form{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:14px;padding:12px;display:grid}.project-create-form input:nth-child(2),.project-create-form input:nth-child(3){grid-column:span 2}.project-create-form button[type=submit]{justify-content:center}.project-create-form input,.project-create-form select,.projects-admin-table input,.projects-admin-table select,.contract-create-form input,.contract-create-form select{min-width:0}.checkbox-label{color:#253244;white-space:nowrap;align-items:center;gap:8px;min-height:36px;display:inline-flex}.admin-contracts-table th{z-index:1;background:#fff;line-height:1.05;position:sticky;top:0}.admin-contracts-table td{vertical-align:top;padding:12px 10px}.admin-contracts-table input,.projects-admin-table input,.projects-admin-table select{min-height:34px}.status-filter{flex-wrap:wrap;gap:8px;margin:0 0 14px;display:flex}.status-filter button{color:#253244;background:#fff;border:1px solid #cfd9e8;border-radius:8px;min-height:34px;padding:7px 12px;font-weight:700}.status-filter button.active{color:#fff;background:#172033;border-color:#172033}.admin-contracts-table input[type=date]{min-width:138px}.admin-contracts-table input[type=number]{min-width:86px}.admin-contracts-table th:first-child,.admin-contracts-table td:first-child{width:180px}.admin-contracts-table th:nth-child(2),.admin-contracts-table td:nth-child(2){width:310px}.admin-contracts-table th:nth-child(3),.admin-contracts-table td:nth-child(3){width:130px}.admin-contracts-table th:nth-child(4),.admin-contracts-table td:nth-child(4){width:170px}.admin-contracts-table th:nth-child(9),.admin-contracts-table td:nth-child(9),.admin-contracts-table th:nth-child(10),.admin-contracts-table td:nth-child(10){width:180px}.contract-id-cell span{max-width:170px;font-weight:650;line-height:1.25;display:block}.center-cell{text-align:center}.icon-button{justify-content:center;min-width:38px;padding:8px}.strong-number{font-weight:760}.negative-number{color:#b91c1c;font-weight:760}.drawer-backdrop{z-index:20;background:#0f172a47;position:fixed;inset:0}.details-drawer{background:#fff;grid-template-rows:auto auto auto minmax(0,1fr);gap:18px;width:min(720px,92vw);max-width:720px;height:100%;margin-left:auto;padding:24px;display:grid;overflow-y:auto;box-shadow:-18px 0 45px #0f172a2e}.drawer-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.drawer-header h2{font-size:20px;line-height:1.25}.drawer-header p{color:#64748b;margin:6px 0 0}.drawer-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.drawer-metrics .metric{padding:14px}.drawer-metrics .metric strong{font-size:22px}.drawer-money{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;padding:13px 14px}.drawer-section h3{color:#52637a;text-transform:uppercase;margin:0 0 10px;font-size:13px}.worklog-list{gap:10px;display:grid}.worklog-item{border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:12px;display:grid}.worklog-item span,.worklog-item p{color:#64748b}.worklog-item span{margin-top:3px;display:block}.worklog-item p{grid-column:1/-1;margin:0}.status-badge{white-space:nowrap;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:760;display:inline-flex}.status-badge.reported{color:#166534;background:#e8f5ee}.status-badge.exceeded{color:#166534;background:#dcfce7}.status-badge.not_reported{color:#9a3412;background:#fff7ed}.status-badge.active{color:#166534;background:#e8f5ee}.status-badge.paused{color:#1d4ed8;background:#eff6ff}.status-badge.done{color:#475569;background:#f1f5f9}.status-badge.archived{color:#64748b;background:#f8fafc}.status-badge.neutral{color:#334155;background:#eef2f7}.file-import{cursor:pointer;border:1px dashed #94a3b8;border-radius:8px;justify-content:center;align-items:center;gap:10px;min-height:82px;padding:16px;display:flex}.file-import input{display:none}.admin-separator{border-top:1px solid #e2e8f0;margin:22px 0}.admin-dashboard{min-width:0}.admin-tabs{scrollbar-width:none;background:#fff;border:1px solid #dbe3ef;border-radius:8px;align-items:center;gap:4px;padding:5px;display:flex;overflow-x:auto}.admin-tabs::-webkit-scrollbar{display:none}.admin-tabs button{color:#52637a;background:0 0;border-color:#0000;flex:none;align-items:center;gap:8px;min-height:38px;display:inline-flex}.admin-tabs button:hover{background:#f1f5f9}.admin-tabs button.active{color:#fff;background:#25364f;border-color:#25364f}.admin-tabs button small{color:#52637a;background:#eef2f7;border-radius:999px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11px;font-weight:800;display:inline-flex}.admin-tabs button.active small{color:#fff;background:#ffffff29}.admin-content{gap:16px;padding-top:20px;display:grid}.admin-section-heading h2{margin:0;font-size:22px}.admin-section-heading p{color:#64748b;margin:4px 0 0}.admin-list-toolbar{justify-content:space-between;align-items:center;display:flex}.admin-list-toolbar>span{color:#64748b;font-size:14px}.admin-list-toolbar>span strong{color:#253244}.admin-content .table-scroll,.admin-content>.system-info{background:#fff;border:1px solid #dbe3ef;border-radius:8px}.admin-content>.system-info{max-width:760px;padding:16px}.audit-admin{gap:12px;display:grid}.audit-filters{grid-template-columns:minmax(240px,1fr) minmax(190px,240px) minmax(210px,280px);gap:10px;display:grid}.audit-filters .search-with-icon{width:100%;max-width:none}.audit-list{background:#fff;border:1px solid #dbe3ef;border-radius:8px;min-height:90px;overflow:hidden}.audit-event+.audit-event{border-top:1px solid #e2e8f0}.audit-event-summary{color:#253244;text-align:left;background:#fff;border:0;border-radius:0;grid-template-columns:145px 180px minmax(220px,1.2fr) minmax(180px,1fr) 120px 20px;align-items:center;gap:12px;width:100%;min-height:70px;padding:12px 14px;display:grid}.audit-event-summary:hover,.audit-event.expanded .audit-event-summary{background:#f8fafc}.audit-time,.audit-ip{color:#64748b;font-variant-numeric:tabular-nums;font-size:12px}.audit-action{color:#334155;background:#eef2f7;border-radius:999px;justify-self:start;padding:5px 8px;font-size:12px;font-weight:760}.audit-entity,.audit-actor{gap:3px;min-width:0;display:grid}.audit-entity strong,.audit-actor strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.audit-entity small,.audit-actor small{color:#64748b;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.audit-event-details{background:#f8fafc;border-top:1px solid #e2e8f0;gap:8px;padding:12px 14px 14px 171px;display:grid}.audit-change{grid-template-columns:170px minmax(0,1fr) 18px minmax(0,1fr);align-items:center;gap:10px;display:grid}.audit-change>strong{color:#52637a;text-transform:uppercase;font-size:12px}.audit-change>span{overflow-wrap:anywhere;background:#fff;border:1px solid #dbe3ef;border-radius:5px;min-height:34px;padding:7px 9px}.audit-change>svg{color:#94a3b8}.audit-metadata{color:#64748b;border-top:1px solid #dbe3ef;flex-wrap:wrap;gap:8px 18px;margin-top:4px;padding-top:10px;font-size:12px;display:flex}.audit-pagination{color:#64748b;justify-content:space-between;align-items:center;font-size:13px;display:flex}.audit-pagination>div{gap:6px;display:flex}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.system-info{gap:10px;display:grid}.system-info div{border-top:1px solid #e2e8f0;gap:3px;padding-top:10px;display:grid}.system-info div:first-child{border-top:0;padding-top:0}.system-info span{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:760}.system-info strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.users-admin{gap:16px;display:grid}.account-settings{gap:16px;max-width:1040px;display:grid}.account-overview{background:#fff;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;display:grid}.account-avatar{color:#334155;background:#eef2f7;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.account-overview>div:nth-child(2){gap:2px;min-width:0;display:grid}.account-overview>div:nth-child(2) span{color:#64748b;overflow-wrap:anywhere}.account-security-status,.security-setting-heading{align-items:center;gap:8px;display:flex}.security-setting-heading{justify-content:space-between;align-items:start}.security-setting-heading p{margin:4px 0 0}.mfa-panel{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;gap:12px;padding:14px;display:grid}.mfa-setup{align-items:center;gap:16px;display:flex}.mfa-setup img{background:#fff;border:1px solid #dbe3ef;border-radius:8px;width:160px;height:160px;padding:8px}.mfa-setup div{gap:10px;display:grid}.security-key-section{border-top:1px solid #dbe3ef;gap:12px;padding-top:14px;display:grid}.security-key-heading{justify-content:space-between;align-items:start;gap:16px;display:flex}.security-key-heading p{margin:4px 0 0}.security-key-list{display:grid}.security-key-row{border-top:1px solid #e5eaf1;grid-template-columns:22px minmax(0,1fr) 38px;align-items:center;gap:10px;padding:10px 0;display:grid}.security-key-row span{gap:2px;min-width:0;display:grid}.security-key-row small{color:#64748b;overflow-wrap:anywhere}.security-key-form{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;align-items:center;gap:10px;display:grid}.user-form{background:#fff;border:1px solid #dbe3ef;border-radius:8px;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) 130px minmax(160px,1fr) 150px auto;align-items:center;gap:10px;padding:14px;display:grid}.password-field{align-items:center;gap:8px;min-width:0;display:flex;position:relative}.password-field input{min-width:0}.password-input-wrap{align-items:center;gap:8px;width:100%;display:flex;position:relative}.password-help{color:#52637a;cursor:help;background:#eef2f7;border:1px solid #cbd5e1;border-radius:999px;flex:0 0 22px;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:760;display:inline-flex;position:relative}.password-help:focus{outline-offset:2px;outline:2px solid #93c5fd}.password-tooltip{color:#fff;opacity:0;pointer-events:none;visibility:hidden;z-index:30;background:#172033;border-radius:6px;width:260px;padding:9px 10px;font-size:12px;font-weight:520;line-height:1.35;transition:opacity .14s,transform .14s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 12px 30px #0f172a38}.password-tooltip:after{content:"";border:6px solid #0000;border-top-color:#172033;position:absolute;top:100%;left:50%;transform:translate(-50%)}.password-help:hover .password-tooltip,.password-help:focus .password-tooltip{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.users-table{min-width:860px}.users-table td:first-child{min-width:230px}.users-table td small{color:#64748b;margin-top:3px;font-size:12px;display:block}.users-table td:last-child{text-align:right}.user-card-drawer{grid-template-rows:auto auto auto minmax(0,1fr);width:min(560px,94vw);max-width:560px}.access-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.access-summary div{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;padding:12px}.access-summary span{color:#64748b;text-transform:uppercase;font-size:12px;font-weight:760;display:block}.access-summary strong{margin-top:3px;font-size:20px;display:block}.user-card-form{align-content:start;gap:14px;display:grid}.user-card-form>label{color:#52637a;gap:6px;font-size:13px;font-weight:760;display:grid}.user-card-switches,.user-card-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.user-card-actions{border-top:1px solid #e2e8f0;justify-content:flex-end;padding-top:14px}.permission-checklist{border:1px solid #dbe3ef;border-radius:8px;gap:8px;margin:0;padding:12px;display:grid}.permission-checklist legend{color:#52637a;padding:0 6px;font-size:13px;font-weight:760}.group-picker-list{gap:8px;display:grid}.group-picker-row{border-bottom:1px solid #e2e8f0;grid-template-columns:auto minmax(0,1fr);align-items:flex-start;gap:10px;padding-bottom:8px;display:grid}.group-picker-row:last-child{border-bottom:0;padding-bottom:0}.group-picker-row input{margin-top:3px}.group-picker-row span{gap:2px;display:grid}.group-picker-row small{color:#64748b;line-height:1.35}.effective-access{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;gap:9px;padding:12px;display:grid}.effective-access h3,.permission-section h4{color:#52637a;text-transform:uppercase;margin:0;font-size:13px}.access-chip-list{flex-wrap:wrap;gap:7px;display:flex}.access-chip-list span{color:#253244;background:#fff;border:1px solid #cbd5e1;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:720}.permissions-admin,.permission-groups{gap:12px;display:grid}.permission-group-card{border:1px solid #dbe3ef;border-radius:8px;gap:12px;padding:14px;display:grid}.permission-group-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.permission-group-header p{margin-top:4px}.permission-section-grid{gap:14px;display:grid}.permission-section{gap:8px;display:grid}.permission-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;display:grid}.checkbox-label{white-space:nowrap;align-items:center;gap:8px;display:flex}.checkbox-label input{width:auto;min-height:auto}.history{margin:16px 0 0;padding:0;list-style:none}.history li{border-top:1px solid #e2e8f0;gap:3px;padding:10px 0;display:grid}.history span{color:#64748b;font-size:13px}.empty{color:#64748b;align-items:center;gap:10px;min-height:80px;display:flex}@media (width<=980px){.app-layout{display:block}.sidebar{height:auto;min-height:auto;position:static}.main-content{padding:18px}.topbar,.workspace,.executive-grid,.public-layout{display:block}.toolbar{flex-wrap:wrap;align-items:stretch;margin-top:16px}.stats,.billing-toolbar{grid-template-columns:1fr}.billing-filters{flex-wrap:wrap}.trend-kpis,.bar-row{grid-template-columns:1fr}.bar-value{text-align:left}.breakdown-grid{grid-template-columns:1fr}.panel{margin-bottom:18px}.drawer-metrics{grid-template-columns:1fr 1fr}.worklog-item,.user-form{grid-template-columns:1fr}.technician-person-summary,.technician-person-breakdown{grid-template-columns:repeat(2,minmax(0,1fr))}.contract-list-summary{grid-template-columns:minmax(0,1fr) 22px}.contract-summary-chevron{grid-area:1/2}.contract-summary-meta{grid-column:1/-1;justify-content:flex-start}.contract-details-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.contract-details-panel label:first-child,.contract-details-actions{grid-column:1/-1}}@media (width<=768px){:root{font-size:14px}body{overflow-x:hidden}.app-layout{min-height:100vh;display:block}.mobile-topbar{z-index:30;background:#fffffff5;border-bottom:1px solid #dbe3ef;justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:8px 12px;display:flex;position:sticky;top:0}.mobile-topbar-title{gap:1px;min-width:0;display:grid}.mobile-topbar strong,.mobile-topbar span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mobile-topbar strong{color:#0f172a;font-size:17px;line-height:1.2}.mobile-topbar span{color:#64748b;text-transform:uppercase;font-size:10px;font-weight:700}.mobile-account-button{background:#eef2f7;border-color:#0000;flex:none;justify-content:center;width:40px;min-height:38px;padding:8px}.mobile-bottom-nav{padding:5px 6px calc(5px + env(safe-area-inset-bottom));z-index:35;background:#fffffffa;border-top:1px solid #dbe3ef;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-bottom-nav button{color:#64748b;background:0 0;border:0;border-radius:6px;flex:1 1 0;justify-items:center;gap:2px;min-width:0;min-height:48px;padding:5px 3px;font-size:10px;display:grid}.mobile-bottom-nav button.active{color:#1d4ed8;background:#eef4ff;font-weight:760}.mobile-bottom-nav button span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.mobile-nav-backdrop{z-index:40;background:#0f172a75;border:0;border-radius:0;min-height:0;padding:0;display:block;position:fixed;inset:0}.sidebar{z-index:50;grid-template-rows:auto minmax(0,1fr) auto;width:min(82vw,300px);max-width:300px;height:100vh;min-height:0;transition:transform .16s;display:grid;position:fixed;top:0;left:0;overflow:hidden;transform:translate(-105%)}.sidebar.open{transform:translate(0)}.sidebar-brand{justify-content:space-between;align-items:start;display:flex}.sidebar-brand>div{gap:3px;min-width:0;display:grid}.mobile-nav-close{color:#e5e7eb;background:#ffffff14;border-color:#94a3b859;flex:none;justify-content:center;width:32px;min-height:30px;padding:5px;display:inline-flex}.main-content{padding:14px 12px calc(78px + env(safe-area-inset-bottom))}.mobile-login-slot{margin-bottom:14px;display:block}.desktop-login-slot{display:none}.topbar{grid-template-columns:minmax(0,1fr);justify-content:stretch;align-items:stretch;gap:10px;margin-bottom:12px;display:grid}.topbar>div:first-child>h1,.topbar>div:first-child>p,.admin-refresh-toolbar{display:none}.sync-status{align-items:flex-start;margin-top:0;font-size:12px}.sync-status>span:not(.sync-warning){display:none}.report-toolbar{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:0;display:grid}.report-toolbar>button,.report-toolbar>.button{display:none}.report-toolbar .month-picker{grid-column:1/-1}.desktop-action-label{display:none}.mobile-action-label{display:inline}.month-picker{grid-template-columns:38px minmax(0,1fr) 38px}.month-display{min-width:0}.stats,.executive-stats,.risk-stats,.project-stats,.integration-stats,.trend-kpis{grid-template-columns:1fr}.metric{padding:14px}.metric strong,.executive-stats .metric strong{font-size:28px}.technician-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:14px}.technician-stats .metric{min-height:88px;padding:11px}.technician-stats .metric span{font-size:10px;line-height:1.2}.technician-stats .metric strong{font-size:22px}.panel{padding:14px}.panel-heading{align-items:stretch;gap:10px;display:grid}.usage-panel,.technicians-panel{background:0 0;border:0;padding:0}.contracts-breakdown-panel{display:none}.contracts-report-panel{background:0 0;border:0;padding:0}.contracts-report-heading{margin-bottom:10px}.contracts-report-heading .filters{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.contracts-report-heading .search-input{background:#fff;grid-column:1/-1;max-width:none}.contracts-result-meta{color:#64748b;margin:0 0 8px;font-size:12px;font-weight:700;display:block}.mobile-report-cards{gap:10px;display:grid}.contracts-report-table{display:none}.contract-report-card{background:#fff;border:1px solid #dbe3ef;border-radius:8px;overflow:hidden}.contract-report-card.expanded{border-color:#b8c8df}.contract-report-toggle{color:inherit;text-align:left;background:0 0;border:0;border-radius:0;gap:10px;width:100%;padding:13px;display:grid}.contract-report-toggle:hover{border-color:#0000}.contract-report-heading-row{grid-template-columns:minmax(0,1fr) 18px;align-items:start;gap:8px;width:100%;display:grid}.contract-report-heading-row>span{gap:3px;min-width:0;display:grid}.contract-report-heading-row strong{color:#172033;overflow-wrap:anywhere;font-size:15px;line-height:1.25}.contract-report-heading-row small{color:#64748b;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.contract-report-heading-row>svg{color:#64748b;margin-top:2px;transition:transform .15s}.contract-report-badges{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.contract-report-badges>small{color:#52637a;background:#eef2f7;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:760}.contract-report-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;display:grid}.contract-report-summary>span{gap:2px;display:grid}.contract-report-summary>span:last-child{text-align:right}.contract-report-summary small,.contract-report-kpis small,.contract-report-owners small{color:#64748b;font-size:10px}.contract-report-summary strong{color:#172033;font-size:19px}.contract-report-progress{background:#e8edf4;border-radius:999px;width:100%;height:5px;display:block;overflow:hidden}.contract-report-progress i{border-radius:inherit;background:#2563eb;height:100%;display:block}.contract-report-progress i.over{background:#dc2626}.contract-report-details{border-top:1px solid #e2e8f0;gap:12px;padding:13px;display:grid}.contract-report-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.contract-report-kpis>span,.contract-report-owners>span{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;gap:4px;min-width:0;padding:9px;display:grid}.contract-report-kpis strong,.contract-report-owners strong{overflow-wrap:anywhere}.contract-report-owners{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.contract-report-footer{justify-content:space-between;align-items:center;gap:10px;display:flex}.contract-report-footer>span{color:#64748b;font-size:12px}.contract-report-footer button{color:#fff;background:#25364f;border-color:#25364f}.admin-user-cards{gap:8px;display:grid}.desktop-users-table{display:none}.admin-user-card{text-align:left;background:#fff;border:1px solid #dbe3ef;gap:10px;width:100%;padding:12px;display:grid}.admin-user-card-heading{grid-template-columns:minmax(0,1fr) 18px;align-items:start;gap:8px;width:100%;display:grid}.admin-user-card-heading>span{gap:3px;min-width:0;display:grid}.admin-user-card-heading strong{color:#172033;font-size:15px}.admin-user-card-heading small{color:#64748b;overflow-wrap:anywhere}.admin-user-card-heading>svg{color:#64748b;margin-top:2px}.admin-user-card-badges{flex-wrap:wrap;gap:6px;display:flex}.admin-user-card-security{border-top:1px solid #e2e8f0;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:10px;width:100%;padding-top:9px;display:grid}.admin-user-card-security>span{gap:2px;min-width:0;display:grid}.admin-user-card-security small{color:#64748b;font-size:10px}.admin-user-card-security strong{color:#334155;overflow-wrap:anywhere;font-size:12px}.technicians-heading{grid-template-columns:minmax(0,1fr);margin-bottom:8px}.technicians-heading .search-input{background:#fff;max-width:none}.technicians-mobile-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px;display:grid}.technicians-mobile-controls select{min-width:0}.desktop-absence-manager,.desktop-technicians-table{display:none}.technician-mobile-cards{gap:10px;display:grid}.technician-mobile-card{background:#fff;border:1px solid #dbe3ef;border-radius:8px;overflow:hidden}.technician-mobile-card.expanded{border-color:#b8c8df}.technician-mobile-toggle{color:inherit;text-align:left;background:0 0;border:0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;gap:11px;width:100%;padding:13px;display:grid}.technician-mobile-toggle:hover{border-color:#0000}.technician-mobile-heading{align-items:flex-start;gap:5px;min-width:0;display:grid}.technician-mobile-heading>strong{color:#172033;overflow-wrap:anywhere;font-size:16px;line-height:1.2}.technician-mobile-heading>small{border-radius:999px;justify-self:start;padding:3px 7px;font-size:10px;font-weight:760}.technician-mobile-heading>small.on-plan{color:#047857;background:#dcfce7}.technician-mobile-heading>small.behind{color:#a16207;background:#fef3c7}.technician-mobile-heading>small.excluded{color:#64748b;background:#eef2f7}.technician-mobile-toggle>svg{color:#64748b;margin-top:2px;transition:transform .15s}.technician-mobile-hours{gap:2px;display:grid}.technician-mobile-hours.align-right{text-align:right}.technician-mobile-hours small{color:#64748b;font-size:11px}.technician-mobile-hours strong{color:#172033;font-size:20px}.technician-progress{background:#e8edf4;border-radius:999px;grid-column:1/-1;height:5px;display:block;overflow:hidden}.technician-progress i{border-radius:inherit;background:#2563eb;height:100%;display:block}.technician-progress i.complete{background:#10b981}.technician-mobile-details{border-top:1px solid #e2e8f0;gap:14px;padding:13px;display:grid}.technician-mobile-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.technician-mobile-kpis>span{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;gap:4px;min-width:0;padding:10px;display:grid}.technician-mobile-kpis small,.technician-mobile-breakdown small,.technician-target-switch small,.technician-mobile-days small,.technician-mobile-absences small{color:#64748b;font-size:10px;line-height:1.25}.technician-mobile-kpis strong{font-size:16px}.technician-mobile-breakdown{border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;grid-template-columns:repeat(3,minmax(0,1fr));padding:10px 0;display:grid}.technician-mobile-breakdown span{text-align:center;gap:3px;min-width:0;display:grid}.technician-mobile-breakdown span+span{border-left:1px solid #e2e8f0}.technician-mobile-breakdown strong{font-size:15px}.technician-target-switch{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:10px;display:flex}.technician-target-switch>span{gap:2px;display:grid}.technician-target-switch input{flex:none;width:18px;height:18px}.technician-mobile-section-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.technician-mobile-section-heading>strong{color:#334155;text-transform:uppercase;font-size:12px}.technician-mobile-section-heading button{min-height:32px;padding:5px 9px}.technician-mobile-absences,.technician-mobile-days{gap:6px;display:grid}.technician-mobile-absences>div,.technician-mobile-days>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;display:flex}.technician-mobile-absences span,.technician-mobile-days span{gap:2px;min-width:0;display:grid}.technician-mobile-absences strong{text-transform:capitalize}.technician-mobile-absences button{flex:none;justify-content:center;width:34px;min-height:32px;padding:5px}.technician-days-toggle{justify-content:center;width:100%;margin-top:2px}.technician-mobile-empty{color:#64748b;font-size:12px}.technician-mobile-absence-form{background:#f8fafc;border:1px solid #dbe3ef;border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;display:grid}.technician-mobile-absence-form>label:not(.checkbox-label){color:#52627a;text-transform:uppercase;gap:4px;font-size:10px;font-weight:760;display:grid}.technician-mobile-absence-form>label:nth-child(3),.technician-mobile-absence-form>.checkbox-label,.technician-mobile-absence-form>input,.technician-mobile-absence-form>button{grid-column:1/-1}.technician-mobile-absence-form>button{justify-content:center}.usage-panel-heading{grid-template-columns:minmax(0,1fr);width:100%;margin-bottom:8px}.usage-panel-heading .search-input{background:#fff;max-width:none}.usage-mobile-controls{grid-template-columns:minmax(0,1fr) 40px;gap:8px;margin-bottom:10px;display:grid}.usage-mobile-controls .icon-button{justify-content:center;width:40px;padding:8px}.filters,.admin-tools,.inline-actions,.mapping-bulk-form,.absence-form,.contract-term-form,.term-edit-grid{grid-template-columns:1fr;align-items:stretch;gap:8px;display:grid}.security-key-form{grid-template-columns:1fr}.account-overview{grid-template-columns:42px minmax(0,1fr)}.account-security-status{flex-wrap:wrap;grid-column:1/-1;align-items:flex-start}.contract-list-summary{gap:10px;min-height:0;padding:12px}.contract-summary-main strong,.contract-summary-main span{white-space:normal}.contract-summary-meta{gap:5px}.contract-chip{font-size:11px}.contract-details-panel{grid-template-columns:1fr;padding:12px}.contract-active-toggle,.contract-details-actions{place-content:stretch;padding-bottom:0}.contract-details-actions{grid-template-columns:1fr;display:grid}.term-card-heading,.term-card-actions,.technician-person-summary,.technician-person-breakdown,.term-base-grid{grid-template-columns:1fr;justify-content:stretch;align-items:stretch;display:grid}.filters select,.search-input,.search-with-icon{width:100%;min-width:0}.table-scroll{-webkit-overflow-scrolling:touch;margin-left:-14px;margin-right:-14px;padding:0 14px;overflow-x:auto}.table-scroll table{min-width:760px}.table-scroll .admin-contracts-table,.table-scroll .projects-admin-table{min-width:1180px}.mobile-contract-cards{gap:10px;display:grid}.mobile-contract-card-summary,.mobile-contract-progress,.mobile-contract-card-grid.open{display:grid}.contract-usage-table{display:none}.public-layout,.workspace,.executive-grid,.breakdown-grid{grid-template-columns:1fr;display:grid}.public-layout .login-panel{order:-1;position:static}.login-shell{padding:14px}.login-panel{gap:9px;padding:22px}.mobile-login-slot .login-panel{padding:14px}.mobile-login-slot .login-panel h1{font-size:20px;line-height:1.15}.mobile-login-slot .login-panel p{overflow-wrap:anywhere;margin:-2px 0 2px;font-size:13px;line-height:1.35}.mobile-login-slot .login-panel input,.mobile-login-slot .login-panel button{min-height:34px}.drawer-backdrop{z-index:60}.details-drawer{box-shadow:none;border-radius:0;grid-template-rows:auto auto auto minmax(0,1fr);gap:14px;width:100vw;max-width:none;height:100vh;padding:18px 14px 28px}.drawer-header{gap:12px;display:grid}.drawer-header h2{font-size:19px}.drawer-header button{justify-self:start}.drawer-metrics{grid-template-columns:1fr 1fr}.drilldown-summary{grid-template-columns:1fr}.drawer-metrics .metric{padding:12px}.drawer-metrics .metric strong{font-size:20px}.drawer-money{line-height:1.4}.worklog-list{gap:8px}.worklog-item{background:#f8fafc;grid-template-columns:1fr;padding:11px}.worklog-item>div:last-of-type{border-top:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding-top:8px;display:flex}.worklog-item>div:last-of-type span{text-align:right;margin-top:0}.permission-grid{grid-template-columns:1fr}.checkbox-label{white-space:normal}}@media (width<=720px){.admin-tabs{grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow:visible}.admin-tabs button{justify-content:flex-start;align-items:center;width:100%;min-width:0;min-height:48px;padding-inline:10px}.admin-tabs button span{overflow-wrap:anywhere;text-align:left;white-space:normal;line-height:1.15}.admin-tabs button svg,.admin-tabs button small{flex:none}.access-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.access-summary strong,.access-summary span{overflow-wrap:anywhere;white-space:normal}.password-tooltip{width:min(260px,100vw - 48px);left:auto;right:0;transform:translateY(4px)}.password-tooltip:after{left:auto;right:5px;transform:none}.password-help:hover .password-tooltip,.password-help:focus .password-tooltip{transform:translateY(0)}.audit-filters{grid-template-columns:1fr}.audit-event-summary{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px 12px;padding:12px}.audit-action{grid-area:1/1}.audit-time{grid-area:1/2;padding-top:5px}.audit-entity{grid-area:2/1/auto/-1}.audit-actor{grid-area:3/1}.audit-ip{display:none}.audit-event-summary>svg{grid-area:3/2;align-self:center}.audit-event-details{padding:12px}.audit-change{grid-template-columns:1fr 18px 1fr}.audit-change>strong{grid-column:1/-1}}
