.evidence-summary{margin-top:18px}.evidence-summary p{color:var(--muted)}.evidence-summary.complete{border-color:#31d3a466}.evidence-summary.incomplete{border-color:#f4c86f66}.evidence-summary strong{color:var(--yellow)}
.control-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.control-action{padding:7px 9px;font-size:.75rem}
.remove-user{margin-top:10px}
.audit-history{margin-top:18px}.audit-history small{color:var(--muted)}
.purchase-groups{display:grid;gap:12px}.purchase-category{padding:14px;border:1px solid #ffffff12;border-radius:12px;background:#ffffff05}.purchase-category h3{margin:0 0 6px}.purchase-category>strong{color:var(--green)}
.brand-logo{width:40px;height:40px}.header-actions{display:flex;align-items:center;gap:12px}.language-switcher{display:flex;gap:3px;padding:3px;border:1px solid #ffffff18;border-radius:9px}.language-button{border:0;border-radius:6px;padding:6px 8px;background:transparent;color:var(--muted);cursor:pointer;font-weight:700}.language-button.active{background:#72b9ff22;color:var(--text)}
.system-status-bar{display:flex;gap:8px;flex-wrap:wrap;margin:-16px 0 24px}.system-status-bar span{pointer-events:none;padding:7px 10px;border:1px solid #ffffff14;border-radius:999px;background:#ffffff06;color:var(--muted);font-size:.78rem;font-weight:800}.system-status-bar .system-pill{color:var(--text)}.system-status-bar .online{border-color:#31d3a466;background:#31d3a414}.system-status-bar .offline{border-color:#f77d7d66;background:#f77d7d14}
.schedule-panel{margin-top:18px}.schedule-panel h3{margin:0}.schedule-panel .list-item strong{color:var(--yellow)}
.risk-indicator{margin-bottom:18px;padding:16px 20px;border:1px solid #f4c86f66;border-left:4px solid var(--yellow);border-radius:12px;background:#f4c86f12}.risk-indicator strong{display:block;margin-top:5px;font-size:1.5rem}.risk-indicator.risk-red{border-color:#f77d7d66;border-left-color:var(--red);background:#f77d7d12}.risk-indicator.risk-orange{border-left-color:var(--yellow);background:#f4c86f12}.risk-indicator.risk-green{border-color:#31d3a466;border-left-color:var(--green);background:#31d3a412}
.ai-panel{margin-top:18px}.ai-panel p{color:var(--muted)}
.auto-analysis-answer{margin:12px 0;padding:14px;border:1px solid #31d3a444;border-radius:12px;background:#31d3a410}.auto-analysis-answer p{margin:8px 0 0;white-space:pre-wrap;color:var(--text)}
.auto-analysis-image-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.auto-analysis-image-grid img{width:140px;height:140px;object-fit:cover;border-radius:10px;border:1px solid #ffffff18;background:#fff;cursor:zoom-in}
.document-group{display:grid;gap:8px;margin-top:14px}.document-group:first-child{margin-top:0}.document-group h4{margin:0;color:var(--blue);font-size:.85rem;letter-spacing:.03em;text-transform:uppercase}
.document-explanation{margin-top:10px;padding:14px;border:1px solid #31d3a444;border-radius:12px;background:#31d3a410}.document-explanation strong{color:var(--green)}.document-explanation p{margin:8px 0 0;color:var(--text);line-height:1.5}
.time-month-group{margin-top:10px;padding:10px 12px;border:1px solid #ffffff14;border-radius:12px;background:#ffffff05}.time-month-group:first-child{margin-top:0}.time-month-group summary{cursor:pointer;font-weight:800;color:var(--yellow);list-style:none;display:flex;align-items:center;gap:8px}.time-month-group summary::-webkit-details-marker{display:none}.time-month-group summary::before{content:'▸';transition:transform .15s}.time-month-group[open] summary::before{transform:rotate(90deg)}.time-month-group .list-item{margin-top:8px}.time-entry-actions{display:flex;gap:8px;flex-wrap:wrap}
.worker-detail-calendar{border-left:3px solid transparent;padding-left:12px;transition:border-color .2s}.worker-detail-calendar.payment-critical{border-left-color:var(--status-critical)}.worker-detail-calendar.payment-attention{border-left-color:var(--status-attention)}.worker-detail-calendar.payment-pending{border-left-color:var(--status-pending)}.worker-detail-calendar.payment-good{border-left-color:var(--status-good)}.worker-detail-calendar .work-calendar-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.worker-detail-calendar .work-calendar-head .worker-status{padding:2px 7px;font-size:.65rem}.worker-detail-calendar .work-calendar-head small{flex-basis:100%;order:3}
.worker-paid-quick{width:36px;min-height:36px!important;padding:0!important;border-radius:999px;font-size:.95rem!important;line-height:1;flex:none}
.status-swatches{display:flex;gap:8px;align-items:center}.status-swatch{width:28px;height:28px;min-height:28px!important;padding:0!important;border-radius:50%;border:2px solid transparent;cursor:pointer;opacity:.55;transition:opacity .15s,transform .15s,border-color .15s}.status-swatch:hover{opacity:.85}.status-swatch.active{opacity:1;border-color:#fff;transform:scale(1.08)}.status-swatch-pending{background:var(--status-pending)}.status-swatch-critical{background:var(--status-critical)}.status-swatch-paid{background:var(--status-good)}
button.worker-status{background:transparent;font:inherit;cursor:pointer;transition:transform .1s,box-shadow .15s}button.worker-status:not(:disabled):hover{transform:scale(1.04);box-shadow:0 0 0 3px currentColor inset}button.worker-status:disabled{cursor:default;opacity:.7}
.worker-detail-entries-inline{margin-top:12px;padding-top:12px;border-top:1px solid var(--roster-line)}
.worker-actions-cell{width:150px}
.measure-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.measure-actions .secondary{margin-top:0}.ar-meter-overlay,.photo-meter-overlay{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;background:#000;touch-action:none}.ar-meter-overlay canvas,.photo-meter-overlay canvas{position:relative;flex:1;width:100%;min-height:0}.ar-meter-panel{position:relative;left:auto;right:auto;bottom:auto;flex:none;margin:12px;display:grid;gap:8px;padding:14px;border:1px solid #ffffff30;border-radius:14px;background:#08131fcc;backdrop-filter:blur(8px);max-height:45vh;overflow-y:auto}.ar-meter-panel strong{font-size:1.1rem}.ar-meter-panel span{color:var(--green);font-weight:800}.ar-meter-panel .secondary{margin-top:0}.photo-meter-finish-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.photo-meter-finish-row .primary{margin-top:0}
.photo-meter-accuracy-warning{display:block;color:var(--yellow);font-weight:700;line-height:1.4}
.production-panel{margin-top:18px}.production-head p{margin:6px 0 0;color:var(--muted)}.production-form{gap:18px}.production-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.production-grid fieldset{display:grid;gap:12px;margin:0;padding:16px;border:1px solid #ffffff14;border-radius:14px;background:linear-gradient(180deg,#ffffff08,#ffffff03)}.production-grid legend{padding:0 6px;color:var(--blue);font-weight:800;letter-spacing:.02em}.production-submit{justify-self:end;min-width:240px}.production-results{display:grid;grid-template-columns:.85fr 1.15fr;gap:16px;align-items:start}.production-results .list{margin-top:16px}#capture-metadata{display:grid;gap:12px;padding-top:4px}.production-panel input[readonly]{border-color:#31d3a466;background:#0b241f;color:#bdf7e6;font-weight:800}
.rge-layout{align-items:start}.rge-modules-panel{margin-top:18px}.rge-modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:18px}.rge-module{padding:16px}.rge-module h3{margin:0 0 10px;color:var(--blue)}.rge-module ul{margin:0;padding-left:18px;color:var(--muted)}.rge-module li{margin-bottom:7px}
*[hidden]{display:none!important}
:root{--bg:#08131f;--panel:#102235;--panel2:#142b43;--text:#edf5ff;--muted:#9fb3c9;--blue:#72b9ff;--green:#31d3a4;--yellow:#f4c86f;--red:#f77d7d}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 20% 0,#163a59 0,#08131f 32%,#07111d 100%);color:var(--text);font-family:Inter,Segoe UI,sans-serif}.app-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:30px;padding:24px;background:#071321e8;border-right:1px solid #ffffff12;backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--blue),#3c8ef7);color:#071522;font-weight:900}.sidebar nav{display:grid;gap:8px}.nav,.secondary,.primary{border:0;border-radius:10px;padding:12px 14px;font:inherit;font-weight:700;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.nav{background:transparent;color:var(--muted);text-align:left}.nav.active,.nav:hover{background:#72b9ff18;color:var(--text)}.nav:hover,.secondary:hover,.primary:hover{transform:translateY(-1px)}.secondary{margin-top:auto;background:#ffffff08;border:1px solid #ffffff18;color:var(--text)}main{padding:32px;max-width:1400px;width:100%}header,.section-head{display:flex;justify-content:space-between;align-items:center;gap:20px}header{margin-bottom:28px;padding:18px 20px;border:1px solid #ffffff10;border-radius:18px;background:#08131f99;backdrop-filter:blur(14px)}h1,h2{margin:5px 0 0}h2{font-size:1.7rem}small{color:var(--muted)}.status{padding:6px 10px;border-radius:999px;background:#31d3a41c;color:var(--green)}.view{display:none}.view.active{display:block}.hero,.panel,article{border:1px solid #ffffff14;border-radius:18px;background:linear-gradient(180deg,#132842e8,#0d1d30e8);box-shadow:0 18px 50px #0004}.hero{padding:32px;margin-bottom:18px}.hero h2{font-size:clamp(1.8rem,4vw,3.2rem);max-width:700px}.hero p{color:var(--muted);max-width:620px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.cards article{padding:22px}.cards strong{display:block;font-size:2.2rem;margin-top:10px}.panel{padding:22px}.grid-two{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.list{display:grid;gap:10px;margin-top:18px}.list-item{padding:15px;border:1px solid #ffffff12;border-radius:12px;background:#ffffff07}.list-item strong,.list-item small{display:block}.list-item small{margin-top:5px}.ok{border-left:3px solid var(--green)}.warn{border-left:3px solid var(--yellow)}.bad{border-left:3px solid var(--red)}form{display:grid;gap:12px;margin-top:18px}label{display:grid;gap:6px;color:var(--muted);font-size:.85rem}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #ffffff18;border-radius:9px;background:#071522;color:var(--text);font:inherit}input:focus,select:focus,textarea:focus{outline:2px solid #72b9ff66;border-color:#72b9ff66}textarea{min-height:90px;resize:vertical}.primary{background:linear-gradient(135deg,var(--blue),#3c8ef7);color:#061522;box-shadow:0 10px 28px #3c8ef72e}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.metric{font-size:2.5rem;color:var(--green);margin-top:24px}.modal{position:fixed;inset:0;z-index:10;display:grid;place-items:center;background:#030b14dd;backdrop-filter:blur(8px)}.modal.hidden{display:none}.login-card{width:min(400px,calc(100% - 32px));padding:28px;border:1px solid #72b9ff33;border-radius:18px;background:#102235}.login-card h1{margin:28px 0}.error{color:var(--red);min-height:20px}.toast{position:fixed;right:22px;top:22px;z-index:20;padding:13px 16px;border-radius:10px;background:#183a31;color:var(--text);opacity:0;transform:translateY(-8px);transition:.2s}.toast.show{opacity:1;transform:translateY(0)}@media(max-width:850px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid #ffffff12}.sidebar nav{grid-template-columns:repeat(2,1fr)}main{padding:20px}header{margin-bottom:20px;padding:16px}.grid-two,.cards,.measure-actions,.production-grid,.production-results{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}.production-submit{justify-self:stretch;min-width:0}.section-head{align-items:flex-start;flex-direction:column}}

/* Professional layout polish */
.app-shell{grid-template-columns:280px minmax(0,1fr)}
.sidebar{gap:18px;padding:22px 18px}
.sidebar .brand{padding:10px 8px 16px;border-bottom:1px solid #ffffff12}
.sidebar nav{gap:6px;overflow:auto;padding-right:4px}
.nav-group{margin:14px 10px 4px;color:#72b9ff;text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;font-weight:900}
.nav{border:1px solid transparent;border-radius:12px;padding:10px 12px}
.nav.active{border-color:#72b9ff33;background:linear-gradient(135deg,#72b9ff22,#31d3a414)}
.sidebar>.secondary{margin-top:0}
.sidebar nav+.secondary{margin-top:auto}
main{min-width:0;margin:0 auto;padding:28px;width:min(100%,1500px)}
header{position:relative;margin-bottom:18px;background:linear-gradient(135deg,#0d2035e8,#08131fcc);box-shadow:0 18px 50px #0003}
.system-status-bar{margin:0 0 22px}
.view.active{animation:fadeIn .16s ease-out}
@keyframes fadeIn{from{opacity:.65;transform:translateY(4px)}to{opacity:1;transform:none}}
.hero{display:grid;gap:8px;margin-bottom:16px;padding:28px;border-color:#72b9ff24;background:linear-gradient(135deg,#173554e8,#0d1d30e8)}
.hero h2{max-width:850px}
.risk-indicator{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px}
.risk-indicator strong{margin:0}
.cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.cards article,.panel,.hero,.list-item,.purchase-category{box-shadow:0 14px 34px #00000024}
.section-head{margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #ffffff10}
.grid-two{grid-template-columns:minmax(320px,.92fr) minmax(340px,1.08fr);align-items:start}
form.panel{margin-top:0}
form.panel h3,.panel h3{margin-top:0}
label{font-weight:700}
input,select,textarea{min-height:44px;border-radius:11px;background:#061421}
.primary,.secondary{min-height:42px}
.list{margin-top:12px}
.list-item{display:grid;gap:6px;border-radius:14px;background:linear-gradient(180deg,#ffffff09,#ffffff04)}
.list-item button{justify-self:start}
.purchase-groups{gap:14px}
.purchase-category{border-radius:16px;background:linear-gradient(180deg,#ffffff08,#ffffff03)}
#budget-summary .list-item,#documents .list-item,#users .list-item,#messages .list-item,#time-entries .list-item{border-left:3px solid #72b9ff55}
.project-switcher{min-width:260px;margin-top:12px;padding:12px;border:1px solid #72b9ff26;border-radius:14px;background:#07152299;color:var(--blue)}
.project-switcher select{margin-top:6px;background:#061421}
.chantier-progress{border-left:3px solid var(--green);background:linear-gradient(135deg,#31d3a418,#72b9ff10)}
.time-live-calculation{margin:14px 0;padding:14px;border:1px solid #f4c86f44;border-radius:14px;background:#f4c86f10}
.quick-worker-form{margin-top:18px;padding:16px;border:1px solid #72b9ff26;border-radius:16px;background:linear-gradient(180deg,#72b9ff10,#ffffff04)}
.quick-worker-form h3{margin:0}
.quick-workers{margin-top:14px}.worker-actions{display:flex;gap:8px;flex-wrap:wrap}
select[data-project-assignment][multiple]{min-height:120px;padding:7px}
select[data-project-assignment][multiple] option{padding:7px 8px}
select[data-project-assignment][multiple]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.hours-pdf-panel{margin-top:14px;padding:12px;border:1px solid #31d3a433;border-radius:14px;background:#31d3a40f}.hours-pdf-panel small{display:block;margin-top:8px}
.time-live-calculation.ready{border-color:#31d3a466;background:#31d3a412}
.time-live-calculation strong{display:block;color:var(--yellow);font-size:1.05rem}
.time-live-calculation.ready strong{color:var(--green)}
.work-calendar{margin:16px 0;padding:18px;border:1px solid #ffffff14;border-radius:18px;background:linear-gradient(180deg,#ffffff08,#ffffff03);box-shadow:0 14px 34px #00000024}
.work-calendar-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.calendar-title{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.calendar-title>small{color:var(--muted);font-size:.72rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}
.calendar-nav{display:flex;align-items:center;gap:10px}
.calendar-nav-btn{width:30px;height:30px;padding:0;border:1px solid #ffffff20;border-radius:9px;background:#ffffff08;color:var(--text);font-size:1rem;line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .15s,border-color .15s,transform .1s}
.calendar-nav-btn:hover{background:#72b9ff22;border-color:#72b9ff55;transform:translateY(-1px)}
.calendar-nav-btn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.calendar-month-label{min-width:150px;text-align:center;font-size:1.05rem;text-transform:capitalize}
.calendar-nav-today{padding:7px 12px;font-size:.78rem;border:1px solid #ffffff20;border-radius:999px;background:#ffffff08;color:var(--text);cursor:pointer;font-weight:800;transition:background .15s,border-color .15s}
.calendar-nav-today:hover:not(:disabled){background:#72b9ff22;border-color:#72b9ff55}
.calendar-nav-today:disabled{opacity:.4;cursor:default}
.calendar-stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.calendar-stat{display:flex;flex-direction:column;gap:2px;padding:8px 14px;border:1px solid #ffffff12;border-radius:12px;background:#071522}
.calendar-stat strong{font-size:1.05rem;color:var(--text)}
.calendar-stat small{color:var(--muted);font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.calendar-weekdays span{color:var(--muted);font-size:.72rem;font-weight:900;text-align:center;text-transform:uppercase}
.calendar-hint{margin:8px 0 10px;color:var(--muted);font-size:.82rem}
.calendar-legend{display:inline-flex;gap:12px;flex-wrap:wrap}
.legend-work,.legend-rendezvous{display:inline-flex;align-items:center;gap:5px}
.legend-work::before,.legend-rendezvous::before{content:'';width:8px;height:8px;border-radius:50%}
.legend-work{color:var(--green)}
.legend-work::before{background:var(--green)}
.legend-rendezvous{color:var(--yellow)}
.legend-rendezvous::before{background:var(--yellow)}
.calendar-cell{min-height:58px;padding:8px 7px;border:1px solid #ffffff12;border-radius:12px;background:#071522;color:var(--text);display:grid;gap:4px;place-items:center;text-align:center;cursor:pointer;font:inherit;transition:border-color .15s,transform .1s,box-shadow .15s}
.calendar-cell-weekday{display:none}
.calendar-cell:hover{border-color:#72b9ff66;transform:translateY(-1px);box-shadow:0 8px 18px #00000030}
.calendar-cell:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.calendar-cell small{font-size:.68rem;color:var(--green)}
.calendar-cell.weekend{opacity:.5;background:#ffffff05}
.calendar-cell.today{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue) inset}
.calendar-cell.today strong{color:var(--blue)}
.calendar-cell.worked{border-color:#31d3a466;background:#31d3a418;color:#dffcf4}
.calendar-cell.worked.entry-pending{border-color:#f4c86f88;background:#f4c86f22;color:#fff6df}
.calendar-cell.worked.entry-rejected{border-color:#f77d7d88;background:#f77d7d22;color:#ffe1e1}
.calendar-cell.has-rendezvous{border-color:#f4c86f99;background:#f4c86f12}
.calendar-cell.has-rendezvous.worked{background:linear-gradient(135deg,#31d3a418,#f4c86f18)}
.calendar-quick-edit{display:flex;align-items:center;justify-content:center;gap:3px;margin:2px auto 0;padding:1px 3px 1px 6px;border:1px solid currentColor;border-radius:999px;background:#00000030;color:inherit;font:inherit;font-size:.68rem;font-weight:800;transition:transform .1s,background .15s}
button.calendar-quick-edit{cursor:pointer}
button.calendar-quick-edit:hover{transform:scale(1.06);background:#00000050}
.calendar-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;padding:0;border:0;border-radius:50%;background:#ffffff22;color:inherit;font-size:.6rem;line-height:1;cursor:pointer}
.calendar-icon-btn:hover{background:#ffffff40}
.calendar-icon-btn.danger{color:#ffd5d5}
.calendar-icon-btn.danger:hover{background:#f77d7d55}
.production-live-calc{margin-top:8px;padding:10px 12px;border:1px solid #31d3a444;border-radius:10px;background:#31d3a40d;font-weight:800;font-variant-numeric:tabular-nums;color:var(--green)}
.quick-workers-group{margin-top:14px;padding:12px 14px;border:1px solid #ffffff14;border-radius:12px;background:#ffffff05}
.quick-workers-group summary{cursor:pointer;font-weight:800;color:var(--yellow);list-style:none;display:flex;align-items:center;gap:8px}
.quick-workers-group summary::-webkit-details-marker{display:none}
.quick-workers-group summary::before{content:'▸';transition:transform .15s}
.quick-workers-group[open] summary::before{transform:rotate(90deg)}
.chantier-controls-details{margin-top:14px;padding:12px 14px;border:1px solid #ffffff14;border-radius:12px;background:#ffffff05}
.chantier-controls-details summary{cursor:pointer;font-weight:800;color:var(--yellow);list-style:none;display:flex;align-items:center;gap:8px}
.chantier-controls-details summary::-webkit-details-marker{display:none}
.chantier-controls-details summary::before{content:'▸';transition:transform .15s}
.chantier-controls-details[open] summary::before{transform:rotate(90deg)}
.chantier-controls-details .list-item{margin-top:10px}
.quick-workers-search{width:100%;margin-top:10px}
.quick-workers-list{display:grid;gap:8px;margin-top:10px}
.time-year-summary{margin-top:10px;padding:12px 14px;border:1px solid #31d3a444;border-radius:12px;background:#31d3a40d}.time-year-summary strong{display:block;color:var(--green)}.time-year-summary small{color:var(--muted)}
.quick-edit-popover{position:absolute;z-index:80;display:grid;gap:8px;width:200px;padding:12px;border:1px solid #9bd5ff35;border-radius:12px;background:#102235;box-shadow:0 18px 40px #0008;color:var(--text)}.quick-edit-popover strong{font-size:.8rem;color:var(--blue)}.quick-edit-popover label{display:grid;gap:4px;font-size:.75rem;color:var(--muted)}.quick-edit-popover input{min-height:38px}.quick-edit-actions{display:flex;flex-wrap:wrap;gap:6px}.quick-edit-actions button{flex:1;min-width:0;min-height:36px;padding:6px 8px;font-size:.75rem}.quick-edit-actions .danger{background:#f77d7d1f;color:#ffb3b3;border-color:#f77d7d55}
.calendar-rendezvous{display:block;max-width:100%;overflow:hidden;color:var(--yellow);font-size:.64rem;font-weight:900;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}
.calendar-rendezvous.calendar-absence{color:var(--red)}
.calendar-add-rdv{border-style:dashed;opacity:.4;background:transparent;transition:opacity .15s,transform .1s}
.calendar-cell:hover .calendar-add-rdv,.calendar-add-rdv:hover,.calendar-add-rdv:focus-visible{opacity:1}
.calendar-cell.empty{border:0;background:transparent;pointer-events:none}
.worker-month-summary{margin:16px 0;padding:14px;border:1px solid #72b9ff26;border-radius:16px;background:linear-gradient(180deg,#72b9ff10,#ffffff04)}
.worker-month-summary .section-head{margin-bottom:10px}
.worker-month-summary h3{margin:0}
.worker-month-summary-table-wrap{overflow-x:auto}
.worker-month-summary-table{width:100%;border-collapse:collapse;min-width:520px}
.worker-month-summary-table th,.worker-month-summary-table td{padding:10px 8px;border-bottom:1px solid #ffffff12;text-align:left;vertical-align:top}
.worker-month-summary-table thead th{color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.04em}
.worker-month-summary-table tbody th{color:var(--text)}
.worker-month-summary-table tbody td{color:var(--green);font-variant-numeric:tabular-nums}
.worker-month-summary-table tbody td small{color:var(--muted);font-size:.72rem}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.document-actions,.control-actions{align-items:center}
.rge-modules{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.production-panel,.ai-panel,.schedule-panel,.audit-history,.rge-modules-panel{margin-top:18px}
@media(max-width:1050px){.app-shell{grid-template-columns:230px minmax(0,1fr)}main{padding:22px}.grid-two{grid-template-columns:1fr}.risk-indicator{align-items:flex-start;flex-direction:column}}
@media(max-width:850px){.app-shell{grid-template-columns:1fr}.sidebar{gap:14px}.sidebar nav{grid-template-columns:1fr 1fr;max-height:none}.nav-group{grid-column:1/-1;margin-top:10px}.sidebar nav+.secondary{margin-top:0}main{padding:16px}.hero{padding:22px}.cards{grid-template-columns:1fr}.header-actions{width:100%;justify-content:space-between}}

/* Legacy product refinement: clearer auth, task-first mobile navigation, and stronger states. */
:root{--surface-0:#06111d;--surface-1:#0b1b2c;--surface-2:#102235;--border-soft:#ffffff14;--border-focus:#9bd5ff;--radius-control:11px;--radius-panel:16px;--shadow-panel:0 18px 44px #0000002e}
body{background:linear-gradient(180deg,var(--surface-0),#071522 62%,#06111d);font-family:Inter,Segoe UI,sans-serif;color:var(--text)}
button,a,input,select,textarea{ -webkit-tap-highlight-color:transparent }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--border-focus);outline-offset:3px}
.modal{align-items:center;overflow-y:auto;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:#020a14f5;backdrop-filter:none}
.modal .login-card{max-height:calc(100dvh - 32px);overflow:auto;scrollbar-gutter:stable;background:linear-gradient(180deg,#112941,#0d2033);border-color:#9bd5ff35;box-shadow:0 24px 70px #0008}
.modal .login-card::-webkit-scrollbar{width:8px}.modal .login-card::-webkit-scrollbar-thumb{border-radius:99px;background:#9bd5ff45}
body:has(#login-modal:not(.hidden)){overflow:hidden}body:has(#login-modal:not(.hidden)) .app-shell{visibility:hidden;pointer-events:none}
.login-card .brand{padding-bottom:16px;border-bottom:1px solid var(--border-soft)}.login-card h1{margin:22px 0 12px;font-size:clamp(1.9rem,4vw,2.55rem);letter-spacing:-.04em}.login-card p:not(.error){line-height:1.55}.login-card label{color:var(--text);font-weight:700}.login-card input,.login-card select{min-height:48px;border-radius:var(--radius-control);background:#061421;border-color:#ffffff20}.login-card input:focus,.login-card select:focus{border-color:var(--border-focus);box-shadow:0 0 0 4px #72b9ff18;outline:none}.login-card button{min-height:46px}.login-card button[disabled]{cursor:progress;opacity:.7;transform:none}.login-card button[aria-busy=true]{position:relative;color:transparent}.login-card button[aria-busy=true]::after{content:'';position:absolute;width:16px;height:16px;border:2px solid #07152266;border-top-color:#071522;border-radius:50%;animation:spin .7s linear infinite}.error[role=alert]{padding:10px 12px;border:1px solid #f77d7d66;border-radius:var(--radius-control);background:#f77d7d12;color:#ffd5d5;line-height:1.4}.error:empty{display:none}
.toast{max-width:min(440px,calc(100vw - 32px));border:1px solid #31d3a466;background:#0d3028;color:#e7fff7;box-shadow:var(--shadow-panel);line-height:1.4}.toast.show{animation:toastIn .2s ease-out}.status{border:1px solid #31d3a466;background:#31d3a412}
.cards article{min-height:116px;display:flex;flex-direction:column;justify-content:center;gap:8px}.cards article small{letter-spacing:.04em}.panel,.hero,.cards article{box-shadow:var(--shadow-panel)}.list-item{border-color:#ffffff18}.list-item:has(button,a):hover{border-color:#72b9ff55;background:#72b9ff0d}.nav{min-height:44px}.nav.active{box-shadow:inset 3px 0 0 var(--blue)}
.mobile-nav-toggle,.mobile-nav-backdrop{display:none}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes toastIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media(max-width:850px){.mobile-nav-toggle{position:fixed;top:12px;right:14px;z-index:40;display:inline-flex;align-items:center;justify-content:center;min-width:64px;min-height:44px;padding:0 12px;border:1px solid #72b9ff55;border-radius:12px;background:#0d2035ee;color:var(--text);font-weight:800;box-shadow:0 12px 30px #0005}.mobile-nav-backdrop{position:fixed;inset:0;z-index:25;border:0;background:#020a14b8}.app-shell.mobile-nav-open .mobile-nav-backdrop{display:block}.sidebar{position:fixed;inset:0 auto 0 0;z-index:30;width:min(300px,86vw);height:100dvh;transform:translateX(-105%);transition:transform .2s cubic-bezier(.16,1,.3,1);box-shadow:18px 0 50px #0008}.app-shell.mobile-nav-open .sidebar{transform:none}.sidebar nav{grid-template-columns:1fr;overflow:auto}.nav-group{grid-column:auto}.app-shell main{padding-top:72px}.app-shell.mobile-nav-open main{pointer-events:none}.header-actions{padding-right:70px}.modal .login-card{max-height:calc(100dvh - 24px);width:min(460px,100%)} }
@media(max-width:850px){header{align-items:flex-start;flex-direction:column}.header-actions{width:100%;padding-right:0}}
.risk-indicator #project-risk-detail{display:block;flex:1;color:var(--muted);font-size:.84rem}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
.user-row{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(220px,1.25fr) auto;align-items:center;gap:16px;padding:15px 16px;border:1px solid var(--border-soft);border-left:3px solid #72b9ff55;border-radius:14px;background:linear-gradient(180deg,#ffffff09,#ffffff04)}
.user-row+.user-row{margin-top:10px}.user-identity{display:flex;align-items:center;gap:9px;min-width:0}.user-identity strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-role{display:inline-flex;flex:none;padding:4px 8px;border:1px solid #72b9ff38;border-radius:999px;color:var(--blue);font-size:.72rem;font-weight:800}.user-meta{display:grid;gap:4px;min-width:0;color:var(--text)}.user-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-meta small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-row-actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}.user-row-actions button{min-height:38px;padding:8px 10px;font-size:.78rem}.user-row-actions .danger{border-color:#f77d7d55;color:#ffd5d5;background:#f77d7d0d}.user-row-actions .danger:hover{border-color:var(--red);background:#f77d7d20}.user-row-actions button[disabled]{cursor:not-allowed;opacity:.4}.user-empty{display:grid;gap:6px;padding:28px 16px;border:1px dashed #72b9ff44;border-radius:14px;color:var(--muted);text-align:center}.user-empty strong{color:var(--text)}.user-edit-modal{z-index:60}.user-edit-modal .login-card{width:min(580px,calc(100% - 28px));max-height:calc(100dvh - 28px);overflow:auto;margin:0}.user-edit-modal .section-head{align-items:flex-start;margin-bottom:16px}.user-edit-modal .section-head h2{font-size:1.35rem}.icon-close{width:40px;height:40px;border:1px solid #ffffff20;border-radius:10px;background:#ffffff08;color:var(--text);font-size:1.4rem;line-height:1}.icon-close:hover{border-color:#9bd5ff66;background:#72b9ff12}.user-edit-summary{display:grid;gap:3px;padding:12px 14px;border:1px solid #72b9ff2e;border-radius:12px;background:#72b9ff0b}.user-edit-summary strong{font-size:1.05rem}.user-edit-readonly{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;padding:12px 14px;border:1px solid var(--border-soft);border-radius:12px;background:#ffffff05}.user-edit-readonly span{color:var(--muted);font-size:.8rem}.user-edit-readonly strong{font-size:.85rem}.user-edit-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:4px}.user-edit-actions button{min-width:120px}.user-edit-modal .error{margin:0}
@media(max-width:850px){.user-row{grid-template-columns:1fr;gap:9px}.user-identity{align-items:flex-start;flex-direction:column;gap:4px}.user-meta small{white-space:normal}.user-row-actions{justify-content:stretch}.user-row-actions button{flex:1}.user-edit-actions{position:sticky;bottom:-1px;padding-top:12px;background:linear-gradient(180deg,transparent,var(--surface-2) 20%)}.user-edit-actions button{flex:1}}

/* Workforce roster: dense comparison first, operational detail on demand. */
:root{--status-critical:#f77d7d;--status-critical-bg:#f77d7d14;--status-attention:#f39a4a;--status-attention-bg:#f39a4a14;--status-pending:#f4c86f;--status-pending-bg:#f4c86f14;--status-good:#31d3a4;--status-good-bg:#31d3a414;--roster-line:#ffffff12;--roster-header:#9fb3c9;--drawer-width:min(780px,100vw)}
.worker-roster-shell{display:grid;gap:14px}.worker-roster-toolbar,.worker-roster-panel,.worker-add-panel{border:1px solid var(--roster-line);border-radius:var(--radius-panel);background:var(--surface-1);box-shadow:0 14px 34px #0000001c}.worker-roster-toolbar{padding:20px}.worker-roster-heading,.worker-roster-panel-head,.worker-add-panel-head,.worker-detail-header,.worker-detail-period,.worker-detail-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.worker-roster-heading h2{margin:5px 0 7px;font-size:clamp(1.55rem,3vw,2.15rem);letter-spacing:-.04em}.worker-roster-heading p,.worker-add-panel-head p{margin:0;color:var(--muted);max-width:650px}.worker-roster-toolbar-actions{display:flex;align-items:flex-end;gap:10px}.roster-month-field{min-width:150px}.worker-roster-toolbar label{color:var(--muted);font-size:.78rem;font-weight:800}.worker-roster-toolbar input,.worker-roster-toolbar select{margin-top:5px;min-height:44px}.worker-add-toggle{white-space:nowrap}.roster-control-row{display:grid;grid-template-columns:minmax(260px,1fr) 190px;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--roster-line)}.roster-search-field{min-width:0}.worker-roster-summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:0;margin:18px 0 0;padding:14px 0 0;border-top:1px solid var(--roster-line)}.worker-roster-summary>div{display:grid;gap:3px;padding:0 16px;border-left:1px solid var(--roster-line)}.worker-roster-summary>div:first-child{padding-left:0;border-left:0}.worker-roster-summary dt{color:var(--roster-header);font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.worker-roster-summary dd{margin:0;color:var(--text);font-size:1.45rem;font-weight:850;font-variant-numeric:tabular-nums}.worker-roster-summary small{font-size:.73rem}.worker-roster-summary .summary-critical dd{color:var(--status-critical)}.worker-roster-summary .summary-attention dd{color:var(--status-attention)}.worker-roster-summary .summary-total dd{color:var(--status-good)}.worker-roster-panel{padding:0;overflow:hidden}.worker-roster-panel-head{padding:16px 18px 13px;border-bottom:1px solid var(--roster-line);align-items:center}.worker-roster-panel-head h3{margin:0}.worker-roster-panel-head small{font-size:.76rem}.worker-roster-scroll{overflow-x:auto}.worker-roster-table{width:100%;border-collapse:collapse;min-width:960px;font-size:.83rem}.worker-roster-table th,.worker-roster-table td{padding:13px 12px;border-bottom:1px solid var(--roster-line);text-align:left;vertical-align:middle}.worker-roster-table thead th{background:#071522;color:var(--roster-header);font-size:.69rem;font-weight:850;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap}.worker-roster-table thead th:first-child,.worker-roster-table tbody th{padding-left:18px}.worker-roster-table tbody tr{background:transparent;transition:background .15s ease}.worker-roster-table tbody tr:hover{background:#72b9ff08}.worker-roster-table tbody tr:last-child th,.worker-roster-table tbody tr:last-child td{border-bottom:0}.worker-roster-table tbody th{font-weight:400}.worker-roster-table td strong{font-size:.95rem;font-variant-numeric:tabular-nums}.worker-roster-table td small,.worker-roster-table th small{display:block;margin-top:3px;color:var(--muted);font-size:.72rem}.numeric-heading{text-align:right!important}.worker-name-cell{display:flex;align-items:center;gap:8px;min-width:190px}.worker-detail-primary{display:grid;gap:3px;min-width:0;padding:0;border:0;background:transparent;color:var(--text);text-align:left;font:inherit;cursor:pointer}.worker-detail-primary strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worker-detail-primary span{color:var(--blue);font-size:.69rem;font-weight:800;opacity:0;transform:translateX(-4px);transition:opacity .15s ease,transform .15s ease}.worker-roster-table tbody tr:hover .worker-detail-primary span,.worker-detail-primary:focus-visible span{opacity:1;transform:none}.worker-contact,.worker-projects{max-width:225px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worker-projects{color:var(--muted)}.user-role{padding:3px 7px}.worker-roster-table td:nth-child(2),.worker-roster-table td:nth-child(3),.worker-amount{text-align:right;font-variant-numeric:tabular-nums}.worker-roster-table td:nth-child(4) span,.worker-roster-table td:nth-child(4) small{white-space:nowrap}.worker-payment-cell{min-width:165px}.worker-status{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid currentColor;border-radius:999px;font-size:.7rem;font-weight:850;line-height:1.1;white-space:nowrap}.worker-status-dot{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px currentColor;background-clip:padding-box}.worker-status-detail{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-critical{color:var(--status-critical)}.status-attention{color:var(--status-attention)}.status-pending{color:var(--status-pending)}.status-good{color:var(--status-good)}.status-empty{color:var(--muted)}.worker-status.status-critical{background:var(--status-critical-bg)}.worker-status.status-attention{background:var(--status-attention-bg)}.worker-status.status-pending{background:var(--status-pending-bg)}.worker-status.status-good{background:var(--status-good-bg)}.worker-status.status-empty{background:#ffffff06}.worker-next-rdv{display:block;white-space:nowrap}.worker-actions-cell{width:112px}.worker-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.worker-row-actions button{min-height:44px}.worker-detail-action{padding:9px 11px!important;color:var(--blue);font-size:.77rem!important}.worker-action-menu-wrap{position:relative}.worker-action-menu-trigger{width:44px;padding:0!important;font-size:1.35rem!important;line-height:1}.worker-action-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:12;display:grid;min-width:220px;padding:5px;border:1px solid #9bd5ff35;border-radius:12px;background:#102235;box-shadow:0 18px 40px #0008}.worker-action-menu[hidden]{display:none}.worker-action-menu button{min-height:42px;padding:9px 10px;border:0;border-radius:8px;background:transparent;color:var(--text);font:inherit;font-size:.8rem;text-align:left;cursor:pointer}.worker-action-menu button:hover,.worker-action-menu button:focus-visible{background:#72b9ff12}.worker-action-menu button.danger{color:#ffd5d5}.worker-roster-state{display:grid;place-items:center;gap:7px;padding:34px 18px;text-align:center}.worker-roster-state strong{color:var(--text)}.worker-roster-state small{max-width:420px}.worker-roster-state button{margin-top:4px}.worker-add-panel{padding:18px}.worker-add-panel-head{align-items:center;margin-bottom:12px}.worker-add-panel-head h3{margin:4px 0}.worker-add-panel .panel{margin-top:0;box-shadow:none;background:#ffffff04}.worker-add-actions{display:flex;justify-content:flex-end;gap:9px}.worker-add-actions button{min-width:150px}.worker-detail-modal{z-index:70;display:flex;justify-content:flex-end;align-items:stretch;padding:0;background:#020a14d9;backdrop-filter:blur(4px)}.worker-detail-card{display:grid;align-content:start;gap:16px;width:var(--drawer-width);height:100dvh;overflow:auto;padding:24px;background:linear-gradient(180deg,#112941,#0b1b2c);border-left:1px solid #9bd5ff35;box-shadow:-24px 0 70px #0008}.worker-detail-header{align-items:flex-start;padding-bottom:14px;border-bottom:1px solid var(--roster-line)}.worker-detail-header h2{margin:5px 0 5px;font-size:1.6rem}.worker-detail-header p{margin:0;color:var(--muted);line-height:1.45}.worker-detail-period{align-items:flex-end}.worker-detail-period label{flex:1;max-width:190px;color:var(--muted);font-size:.78rem;font-weight:800}.worker-detail-period input{margin-top:5px}.worker-detail-period>.worker-status{align-self:center}.worker-detail-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;border:1px solid var(--roster-line);border-radius:14px;overflow:hidden;background:var(--roster-line)}.worker-detail-summary>div{display:grid;gap:4px;padding:12px 10px;background:#0c2032}.worker-detail-summary small{font-size:.7rem}.worker-detail-summary strong{font-size:1.1rem;font-variant-numeric:tabular-nums}.worker-detail-summary span{color:var(--muted);font-size:.7rem}.worker-detail-summary .detail-summary-amount strong{color:var(--status-good)}.worker-detail-section{padding:15px;border:1px solid var(--roster-line);border-radius:14px;background:#ffffff04}.worker-detail-section-head{align-items:center;margin-bottom:10px}.worker-detail-section-head h3{margin:4px 0 0}.worker-detail-section-head small{font-size:.69rem}.worker-detail-calendar{margin:0;padding:0;border:0;background:transparent}.worker-detail-calendar .work-calendar-head{margin-bottom:10px}.worker-detail-calendar .calendar-hint{margin:0 0 10px}.worker-detail-calendar .calendar-cell{min-height:48px;padding:6px}.worker-detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px}.worker-detail-payment{min-height:80px}.detail-payment-status{display:grid;gap:7px;padding:13px;border-left:3px solid currentColor;border-radius:10px;background:#ffffff05}.detail-payment-status>div{display:flex;justify-content:space-between;align-items:center;gap:12px}.detail-payment-status>div>strong{font-size:1.25rem;font-variant-numeric:tabular-nums}.detail-payment-status p{margin:0;color:var(--text);font-size:.86rem}.detail-payment-status>small{color:var(--muted)}.detail-payment-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px}.detail-payment-actions button{min-height:42px}.worker-detail-list{display:grid;gap:8px}.detail-list-item{padding:10px;border:1px solid var(--roster-line);border-radius:10px;background:#071522}.detail-list-item strong,.detail-list-item small{display:block}.detail-list-item small{margin-top:4px}.detail-list-filter{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.detail-list-filter button{min-height:36px;padding:6px 9px;font-size:.75rem}.worker-detail-modal .icon-close{flex:none}.worker-detail-modal .modal{display:none}
@media(max-width:1050px){.worker-roster-table{min-width:900px}.worker-detail-summary{grid-template-columns:repeat(3,1fr)}.worker-detail-summary .detail-summary-amount{grid-column:span 1}}

/* Targeted professional refinement: risk-first dashboard, denser KPI summary, calmer surfaces. */
#dashboard-view .hero{position:relative;padding:28px 30px 24px;margin-bottom:14px;background:linear-gradient(135deg,#173554e8,#0d1d30e8);box-shadow:0 16px 34px #00000022}
#dashboard-view .hero small{color:#a9d6f8;font-weight:850;letter-spacing:.1em}
.hero-progress{margin-top:8px;height:10px;border-radius:999px;background:#ffffff14;overflow:hidden;box-shadow:inset 0 1px 3px #00000040}
.hero-progress-bar{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue),var(--green));box-shadow:0 0 12px #72b9ff55;transition:width .4s ease}
.site-progress-panel .section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.site-progress-label{font-size:1.5rem;letter-spacing:-.02em;background:linear-gradient(135deg,var(--text) 40%,#9bd5ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.site-progress-panel .hero-progress{margin-bottom:16px}
#dashboard-view .risk-indicator{display:grid;grid-template-columns:1fr auto;gap:6px 18px;align-items:center;padding:17px 20px;margin-bottom:16px;border-radius:14px;box-shadow:0 12px 28px #00000022}
#dashboard-view .risk-indicator-heading{display:flex;align-items:center;gap:10px;grid-column:1/-1}
#dashboard-view .risk-indicator-heading small{font-size:.75rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
#dashboard-view .risk-state{padding:4px 8px;border:1px solid currentColor;border-radius:999px;font-size:.68rem;font-weight:850;line-height:1.1;text-transform:uppercase}
#dashboard-view .risk-indicator strong{grid-column:1;margin:0;font-size:1.55rem;letter-spacing:-.02em}
#dashboard-view .risk-indicator #project-risk-detail{grid-column:1;color:var(--muted);font-size:.88rem}
#dashboard-view .risk-action{grid-column:1/-1;padding-top:9px;border-top:1px solid #ffffff18;color:var(--text);font-size:.82rem;font-weight:750}
#dashboard-view .risk-red .risk-state{color:var(--red);background:#f77d7d14}
#dashboard-view .risk-orange .risk-state{color:var(--yellow);background:#f4c86f14}
#dashboard-view .risk-green .risk-state{color:var(--green);background:#31d3a414}
#dashboard-view .cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--roster-line);border-radius:14px;overflow:hidden;background:#0b1b2c}
#dashboard-view .cards article{min-height:98px;padding:17px 16px;border:0;border-right:1px solid var(--roster-line);border-bottom:1px solid var(--roster-line);border-radius:0;background:transparent;box-shadow:none}
#dashboard-view .cards article:nth-child(3n){border-right:0}
#dashboard-view .cards article:nth-child(n+4){border-bottom:0}
#dashboard-view .cards article:last-child{border-right:0}
#dashboard-view .cards article small{font-size:.73rem;line-height:1.3}
#dashboard-view .cards article strong{font-size:1.65rem;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
#dashboard-view .schedule-panel{box-shadow:none}
.primary{background:var(--blue);box-shadow:none}
.primary:hover{background:#8bc8ff}
.primary:active,.secondary:active,.nav:active{transform:translateY(1px)}
/* Global professional system: calm surfaces, consistent rhythm, semantic emphasis. */
:root{
	--surface-0:#06111d;--surface-1:#0b1b2c;--surface-2:#102235;--surface-3:#142b43;
	--text:#edf5ff;--muted:#9fb3c9;--blue:#72b9ff;--blue-strong:#3c8ef7;
	--green:#31d3a4;--yellow:#f4c86f;--red:#f77d7d;--focus:#9bd5ff;
	--border-soft:#ffffff14;--border-strong:#ffffff22;--roster-line:#ffffff12;
	--radius-control:11px;--radius-card:14px;--radius-panel:16px;--radius-modal:18px;
	--shadow-panel:0 18px 44px #0000002e;--shadow-drawer:-24px 0 70px #0008;
	--content-width:1500px;
}
html{background:var(--surface-0);color-scheme:dark;scroll-behavior:smooth}
body{min-width:320px;background:linear-gradient(180deg,var(--surface-0),#071522 62%,#06111d);font-size:16px;line-height:1.45;letter-spacing:-.005em}
main{width:min(100%,var(--content-width));padding:28px 32px}
.sidebar{background:#071321f2;border-right:1px solid var(--border-soft);box-shadow:12px 0 36px #00000012}
.sidebar .brand{padding-bottom:18px}
.brand-mark{background:var(--blue);box-shadow:0 8px 20px #72b9ff26}
header{border-color:var(--border-soft);background:#0b1b2ce6;box-shadow:0 12px 28px #0000001a}
header h1{font-size:clamp(1.45rem,2vw,2rem);letter-spacing:-.035em}
h2{letter-spacing:-.035em}
.section-head{gap:24px}
.section-head>span{color:var(--muted);font-size:.8rem}
.hero,.panel,.cards article{box-shadow:var(--shadow-panel)}
.panel,.hero{border-color:var(--border-soft)}
.list-item{border-color:var(--border-soft);box-shadow:none}
.list-item strong{line-height:1.3}
label{font-size:.82rem;line-height:1.35}
input,select,textarea{border-color:var(--border-soft);border-radius:var(--radius-control)}
input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}
.primary,.secondary{border-radius:var(--radius-control);font-size:.9rem;letter-spacing:.005em}
.primary{background:var(--blue);color:#061522;box-shadow:none}
.primary:hover{background:#8bc8ff}
.secondary{background:#ffffff09;border-color:var(--border-strong)}
.secondary:hover{background:#ffffff12;border-color:#72b9ff55}
.nav-group{color:#a9d6f8}
.status{background:#31d3a412;color:var(--green);border:1px solid #31d3a466}
.metric{font-variant-numeric:tabular-nums}
.cards article strong,.worker-detail-summary strong,.worker-roster-table td strong{font-variant-numeric:tabular-nums}
.error[role=alert]{font-size:.84rem}
.toast{border-radius:var(--radius-control);box-shadow:var(--shadow-panel)}
.view.active{animation:fadeIn .18s cubic-bezier(.16,1,.3,1)}
/* Worker-owned profile photo: manager forms never edit worker avatars. */
#user-form .image-field,#user-edit-form .image-field{display:none!important}
.worker-profile-panel{display:grid;gap:16px;margin-top:14px;padding:18px;background:linear-gradient(135deg,#102b43,#0b1b2c);border-color:#72b9ff35}
.worker-profile-heading{display:flex;align-items:center;gap:13px}
.worker-profile-heading h3{margin:3px 0 4px}
.worker-profile-heading p{margin:0;color:var(--muted);font-size:.86rem}
.worker-avatar--profile{width:64px;height:64px;border-radius:16px;font-size:1rem}
.worker-profile-actions{display:flex;gap:9px;flex-wrap:wrap}
.worker-profile-actions .file-trigger{margin:0;min-height:44px}
.worker-profile-status{display:block;min-height:20px}
.worker-profile-status[data-state="loading"]{color:var(--yellow)}
.worker-profile-status[data-state="success"]{color:var(--green)}
.worker-profile-status[data-state="error"]{color:var(--red)}
/* Identity: company branding, worker recognition, chantier assignment matrix */
:root{--identity-surface:#ffffff05;--identity-border:#ffffff12;--identity-fallback:#102b44;--identity-initials:#bde0ff;--assignment-cell-size:48px;--company-drawer-width:min(480px,100vw)}
.company-identity-strip{display:flex;align-items:center;gap:10px;padding:10px;margin:-4px 0 4px;border:1px solid var(--identity-border);border-radius:12px;background:var(--identity-surface)}
.company-identity-copy{display:grid;gap:1px;min-width:0;flex:1}
.company-identity-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.86rem}
.company-identity-copy small{font-size:.68rem}
.icon-button{flex:none;width:32px;height:32px;padding:0;border:1px solid var(--identity-border);border-radius:8px;background:transparent;color:var(--muted);font-size:.95rem;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}
.icon-button:hover,.icon-button:focus-visible{border-color:#72b9ff66;background:#72b9ff12;color:var(--text)}
.login-company-preview{display:flex;align-items:center;gap:10px;padding:9px 10px;margin-top:-2px;border:1px solid var(--identity-border);border-radius:11px;background:var(--identity-surface)}
.login-company-preview strong{display:block;font-size:.85rem}
.login-company-preview small{font-size:.7rem}
.identity-logo,.worker-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;overflow:hidden;font-weight:850;letter-spacing:.02em;text-transform:uppercase;background:var(--identity-fallback);color:var(--identity-initials)}
.identity-logo img,.worker-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.identity-logo{width:34px;height:34px;border-radius:8px;border:1px solid var(--identity-border);font-size:.68rem}
.identity-logo--login{width:32px;height:32px;font-size:.66rem}
.identity-logo--form{width:72px;height:72px;font-size:1.1rem;border-radius:12px}
.worker-avatar{width:30px;height:30px;border-radius:50%;border:1px solid #9bd5ff24;font-size:.62rem}
.worker-avatar--drawer{width:44px;height:44px;font-size:.78rem}
.worker-avatar--form{width:72px;height:72px;font-size:1.1rem}
.worker-detail-heading{display:flex;align-items:flex-start;gap:12px;min-width:0}
.image-field{display:grid;gap:8px;padding:14px;border:1px solid var(--roster-line);border-radius:12px;background:#ffffff04}
.image-field-label{display:flex;align-items:center;gap:6px;color:var(--text);font-size:.82rem;font-weight:800}
.image-field-label small{color:var(--muted);font-weight:700;text-transform:none}
.image-field-row{display:flex;align-items:center;gap:12px}
.image-field-actions{display:flex;gap:8px;flex-wrap:wrap}
.file-trigger{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 14px;margin:0;cursor:pointer}
.assignment-card{width:var(--drawer-width)}
.assignment-search-field{color:var(--muted);font-size:.78rem;font-weight:800}
.assignment-search-field input{margin-top:5px;min-height:44px}
.assignment-scroll{overflow:auto;border:1px solid var(--roster-line);border-radius:14px}
.assignment-table{width:100%;border-collapse:collapse;min-width:520px}
.assignment-table th,.assignment-table td{padding:9px 10px;border-bottom:1px solid var(--roster-line);text-align:center;vertical-align:middle}
.assignment-table thead th{position:sticky;top:0;background:#071522;color:var(--roster-header);font-size:.68rem;font-weight:850;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.assignment-table tbody th{position:sticky;left:0;z-index:2;background:#0c2032;text-align:left;display:flex;align-items:center;gap:8px;white-space:nowrap}
.assignment-table thead th:first-child{position:sticky;left:0;z-index:3;text-align:left}
.assignment-cell{width:var(--assignment-cell-size);height:var(--assignment-cell-size);display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid #ffffff24;border-radius:8px;background:transparent;cursor:pointer;transition:border-color .12s ease}
.assignment-cell:hover,.assignment-cell:focus-visible{border-color:#72b9ff66}
.assignment-cell span{width:12px;height:12px;border-radius:50%}
.assignment-cell--assigned{border-color:var(--status-good)}
.assignment-cell--assigned span{background:var(--status-good)}
.assignment-savebar{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin-top:4px;border:1px solid #9bd5ff35;border-radius:12px;background:#0d2033;box-shadow:0 -12px 28px #0006}
.assignment-savebar>div{display:flex;gap:8px}
.worker-assignment-toggle{white-space:nowrap}
@media(max-width:850px){.company-identity-strip{margin:-2px 0 6px}.assignment-card{width:100%;padding:18px 15px}.assignment-table tbody th{min-width:140px}.assignment-savebar{flex-direction:column;align-items:stretch}.assignment-savebar>div{justify-content:stretch}.assignment-savebar>div button{flex:1}}
@media(max-width:850px){
	#dashboard-view .hero{padding:21px 20px 18px}
	#dashboard-view .hero h2{font-size:clamp(1.65rem,8vw,2.25rem)}
	#dashboard-view .risk-indicator{grid-template-columns:1fr;gap:7px;padding:16px 17px}
	#dashboard-view .risk-indicator strong,#dashboard-view .risk-indicator #project-risk-detail{grid-column:1}
	#dashboard-view .risk-action{grid-column:1;margin-top:3px}
	#dashboard-view .cards{grid-template-columns:repeat(2,minmax(0,1fr));border-radius:14px}
	#dashboard-view .cards article{min-height:82px;padding:14px 13px}
	#dashboard-view .cards article:nth-child(2n){border-right:0}
	#dashboard-view .cards article:nth-child(n+5){border-bottom:0}
}
.list{display:grid;gap:10px}
.list-item{padding:16px 18px;transition:border-color .15s ease,background .15s ease,transform .1s ease}
.list-item:has(button,a):hover{transform:translateY(-1px)}
.list-item strong{font-size:.93rem;letter-spacing:-.01em}
.list-item small{color:var(--muted);font-size:.78rem;line-height:1.5}
.worker-roster-table thead th{border-bottom:2px solid var(--roster-line);padding:0}
.sort-header{display:inline-flex;align-items:center;gap:5px;width:100%;padding:13px 12px;border:0;background:transparent;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;text-align:inherit;cursor:pointer}
.numeric-heading .sort-header{justify-content:flex-end}
.sort-header:hover{color:var(--text)}
.sort-header::after{content:'';width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:5px solid currentColor;opacity:.35;transition:opacity .15s,transform .15s}
.sort-header.active::after{opacity:1}
.sort-header[aria-sort="descending"]::after{transform:rotate(180deg)}
.worker-roster-table tbody tr:hover{background:#72b9ff0f}
.detail-list-item{transition:border-color .15s ease}
.detail-list-item:hover{border-color:#72b9ff40}
button[disabled],button[aria-busy="true"]{cursor:not-allowed;opacity:.6}
.time-entries-scroll{overflow-x:auto;margin-top:8px}
.time-entries-table{width:100%;min-width:640px;border-collapse:collapse;font-size:.8rem}
.time-entries-table th,.time-entries-table td{padding:9px 10px;border-bottom:1px solid var(--roster-line,#ffffff14);text-align:left;vertical-align:middle;white-space:nowrap}
.time-entries-table thead th{color:var(--muted);font-size:.66rem;font-weight:850;letter-spacing:.06em;text-transform:uppercase}
.time-entries-table tbody tr:last-child td{border-bottom:0}
.time-entries-table tbody tr:hover{background:#72b9ff08}
.entry-status-pill{display:inline-block;padding:3px 8px;border-radius:999px;border:1px solid currentColor;font-size:.68rem;font-weight:800}
.entry-status-approved{color:var(--green)}
.entry-status-pending{color:var(--yellow)}
.entry-status-rejected{color:var(--red)}
.time-entries-table .time-entry-actions{display:flex;gap:6px;flex-wrap:wrap}
.time-entries-table .time-entry-actions button{min-height:34px;padding:5px 8px;font-size:.72rem}
.chat-recipient-field{margin-bottom:10px}
.chat-thread{display:flex;flex-direction:column;gap:8px;max-height:360px;min-height:120px;overflow-y:auto;padding:12px;border:1px solid var(--roster-line,#ffffff14);border-radius:14px;background:#071522}
.chat-empty{align-self:center;margin:auto;color:var(--muted)}
.chat-bubble-row{display:flex;align-items:flex-end;gap:6px;max-width:88%}
.chat-bubble-row.received{align-self:flex-start}
.chat-bubble-row.sent{align-self:flex-end;flex-direction:row-reverse}
.chat-avatar{width:26px;height:26px;font-size:.56rem}
.chat-bubble{min-width:0;padding:8px 11px;border-radius:14px;font-size:.85rem;line-height:1.4}
.chat-bubble.received{border-bottom-left-radius:4px;background:#16324a;color:var(--text)}
.chat-bubble.sent{border-bottom-right-radius:4px;background:#1c5f8a;color:#eaf6ff}
.chat-bubble-text{white-space:pre-wrap;word-break:break-word}
.chat-bubble-meta{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:4px}
.chat-bubble-meta small{color:#ffffffa8;font-size:.66rem}
.chat-ticks{font-size:.72rem;letter-spacing:-1px;color:#ffffff80}
.chat-ticks.read{color:#53b7ff}
.chat-delete{border:0;background:transparent;color:#ffffff90;font-size:.75rem;line-height:1;padding:2px 4px;cursor:pointer}
.chat-delete:hover{color:#fff}
.production-summary-card{display:grid;gap:5px;padding:14px 16px;border:1px solid #72b9ff2e;border-radius:14px;background:#72b9ff0b}
.production-summary-card strong{font-size:1.02rem}
.production-summary-card span{color:var(--text);font-size:.85rem}
.production-summary-card small{color:var(--muted)}
.production-report-list{display:grid;gap:8px}
.production-report-row{padding:10px 12px;border:1px solid var(--roster-line,#ffffff14);border-radius:12px;background:#ffffff04}
.production-report-main{display:flex;align-items:center;justify-content:space-between;gap:10px}
.production-report-row>small{display:block;margin-top:3px;color:var(--muted)}
.production-report-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;font-size:.78rem;color:var(--text)}
.production-method-tag{padding:2px 7px;border:1px solid #9bd5ff35;border-radius:999px;color:var(--blue);font-size:.68rem;font-weight:800}
.production-method-ar{border-color:#31d3a466;color:var(--green)}
.production-method-photo{border-color:#f4c86f66;color:var(--yellow)}
.production-method-ai{border-color:#f77d7d66;color:var(--red)}
.production-method-manual{border-color:#9bd5ff35;color:var(--blue)}
.production-report-actions{display:flex;gap:6px;margin-top:8px}
.production-report-actions button{min-height:34px;padding:5px 10px;font-size:.75rem}
::selection{background:#72b9ff4a;color:#fff}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#72b9ff30;border-radius:999px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:#72b9ff55;background-clip:padding-box}
.view.active{animation:viewFadeIn .25s ease}
@keyframes viewFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.nav{position:relative;transition:transform .15s ease,background .15s ease,color .15s ease}
.nav.active{font-weight:800}
.nav.active::before{content:'';position:absolute;left:-2px;top:50%;transform:translateY(-50%);width:3px;height:60%;border-radius:999px;background:linear-gradient(180deg,var(--blue),#3c8ef7)}
.brand-mark{box-shadow:0 8px 20px #3c8ef755}
h1,h2,h3{letter-spacing:-.01em}
.hero h2{background:linear-gradient(135deg,var(--text) 40%,#9bd5ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero,.panel,article,.login-card{transition:border-color .2s ease,box-shadow .2s ease}
.list-item,.cards article,article.list-item{transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.list-item:hover{transform:translateY(-2px);border-color:#72b9ff3a;box-shadow:0 10px 24px #0006}
.status{transition:background .2s ease}
.primary,.secondary,.nav,button{transition:transform .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease}
.primary:active:not(:disabled){transform:scale(.97)}
.secondary:hover{border-color:#72b9ff44;background:#72b9ff10}
.worker-roster-row{transition:background .15s ease}
.worker-status{transition:transform .15s ease}
button.worker-status:hover:not(:disabled){transform:scale(1.04)}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid #72b9ff88;outline-offset:2px}
.chat-bubble{transition:transform .12s ease}
::placeholder{color:#9fb3c980}
.nav-badge{position:absolute;top:6px;right:8px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--red);color:#fff;font-size:.66rem;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px #071321;animation:navBadgePop .2s ease}
@keyframes navBadgePop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
body{background:radial-gradient(circle at 15% -10%,#2a5c8a55 0,transparent 45%),radial-gradient(circle at 100% 0,#31d3a422 0,transparent 40%),radial-gradient(circle at 20% 0,#163a59 0,#08131f 32%,#07111d 100%)}
header{position:relative;overflow:hidden;border-color:#72b9ff2a}
header::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--blue),var(--green),var(--yellow),var(--red))}
.brand-mark{background:linear-gradient(135deg,var(--blue),#7c5cff);box-shadow:0 10px 26px #7c5cff4c}
.hero,.panel,article{border-color:#72b9ff26;box-shadow:0 20px 48px #0006,inset 0 1px 0 #ffffff0a}
.hero{position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;top:-60%;right:-20%;width:60%;height:220%;background:radial-gradient(circle,#72b9ff28 0,transparent 65%);pointer-events:none}
.cards article{position:relative;border-left:3px solid var(--blue)}
.cards article:nth-child(2){border-left-color:var(--green)}
.cards article:nth-child(3){border-left-color:var(--yellow)}
.cards article:nth-child(4){border-left-color:#7c5cff}
.cards article:nth-child(5){border-left-color:var(--red)}
.cards strong{background:linear-gradient(135deg,var(--text),#9bd5ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.primary{background:linear-gradient(135deg,#8fd0ff,var(--blue) 45%,#3c8ef7);box-shadow:0 14px 32px #3c8ef755;font-weight:800;letter-spacing:.01em}
.secondary{border-color:#72b9ff2e}
.status{border:1px solid #31d3a444;font-weight:800}
.sidebar{border-right-color:#72b9ff1c}
.nav.active{background:linear-gradient(90deg,#72b9ff22,transparent)}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--blue),#7c5cff)}
@media(max-width:700px){.time-entries-table{min-width:0}.time-entries-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.time-entries-table,.time-entries-table tbody,.time-entries-table tr,.time-entries-table td{display:block;width:100%}.time-entries-table tr{padding:10px 0;border-bottom:1px solid var(--roster-line,#ffffff14)}.time-entries-table tr:last-child{border-bottom:0}.time-entries-table td{display:grid;grid-template-columns:90px 1fr;gap:8px;padding:4px 0;border:0;white-space:normal}.time-entries-table td::before{content:attr(data-label);color:var(--muted);font-size:.68rem;font-weight:800;text-transform:uppercase}}

@media(max-width:850px){.grid-two > *{min-width:0}.panel{min-width:0}.worker-roster-heading,.worker-roster-panel-head,.worker-add-panel-head{align-items:flex-start;flex-direction:column}.worker-roster-toolbar-actions{width:100%;min-width:0;align-items:stretch;flex-direction:column}.roster-month-field{width:100%;flex:1}.worker-add-toggle{width:100%;min-width:0;flex:1}.roster-control-row{grid-template-columns:1fr}.worker-roster-summary{grid-template-columns:repeat(2,1fr);gap:14px 0}.worker-roster-summary>div{padding:0 12px}.worker-roster-summary>div:nth-child(odd){padding-left:0;border-left:0}.worker-roster-summary>div:nth-child(n+3){padding-top:12px;border-top:1px solid var(--roster-line)}.worker-roster-table{display:block;min-width:0}.worker-roster-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.worker-roster-table tbody,.worker-roster-table tr,.worker-roster-table th,.worker-roster-table td{display:block;width:100%}.worker-roster-table tr{padding:14px 15px;border-bottom:1px solid var(--roster-line)}.worker-roster-table tr:last-child{border-bottom:0}.worker-roster-table th,.worker-roster-table td{padding:6px 0;border:0;text-align:left}.worker-roster-table th{padding-bottom:10px}.worker-roster-table td{display:grid;grid-template-columns:105px 1fr;align-items:center;gap:8px}.worker-roster-table td::before{content:attr(data-label);color:var(--roster-header);font-size:.7rem;font-weight:850;text-transform:uppercase;letter-spacing:.05em}.worker-roster-table td:nth-child(2),.worker-roster-table td:nth-child(3),.worker-amount{text-align:left}.worker-roster-table td[data-label="Actions"]{display:block;padding-top:10px}.worker-roster-table td[data-label="Actions"]::before{display:none}.worker-name-cell{justify-content:space-between;min-width:0}.worker-detail-primary span{opacity:1;transform:none}.worker-contact,.worker-projects{max-width:none;white-space:normal}.worker-payment-cell{min-width:0}.worker-status-detail{max-width:none;white-space:normal}.worker-row-actions{justify-content:stretch}.worker-row-actions>.worker-detail-action{flex:1}.worker-action-menu{right:0;left:auto}.worker-add-actions{flex-direction:column-reverse}.worker-add-actions button{width:100%}.worker-detail-card{width:100%;padding:18px 15px}.worker-detail-summary{grid-template-columns:repeat(2,1fr)}.worker-detail-summary .detail-summary-amount{grid-column:span 2}.worker-detail-columns{grid-template-columns:1fr}.worker-detail-period{align-items:stretch;flex-direction:column}.worker-detail-period label{max-width:none;width:100%}.worker-detail-period>.worker-status{align-self:flex-start}.worker-detail-calendar .calendar-cell{min-height:46px;padding:5px 2px}.worker-detail-calendar .calendar-rendezvous{font-size:.58rem}.detail-payment-status>div{align-items:flex-start;flex-direction:column}}
@media(max-width:850px),(pointer:coarse){main{padding:10px}.hero{padding:16px}.panel{padding:14px}.grid-two{gap:10px}header{padding:12px}#dashboard-view .hero{padding:14px 12px}#dashboard-view .cards article{padding:10px 9px}.worker-roster-toolbar{padding:12px}.worker-roster-panel-head{padding:12px 12px 10px}.worker-add-panel{padding:12px}.chat-thread{padding:8px;max-height:320px}.chat-bubble-row{max-width:96%}fieldset{padding:12px}.work-calendar{padding:6px;margin:12px 0}.worker-detail-card{padding:12px 6px}.worker-detail-section{padding:8px}.calendar-grid{gap:3px;grid-auto-rows:min-content}.calendar-cell-weekday{display:none}.calendar-icon-btn{display:none}.calendar-cell{min-width:0;height:auto;padding:3px 2px 5px;min-height:62px;font-size:.95rem;gap:2px}.calendar-quick-edit{min-width:0;padding:1px 5px;font-size:.62rem}.calendar-rendezvous{font-size:.58rem}.calendar-add-rdv{font-size:.58rem;padding:1px 5px}.worker-detail-calendar .calendar-cell{padding:3px 2px 5px;min-height:62px;height:auto}}

/* ===== Light professional theme override (appended; does not touch dark rules above) ===== */
html{color-scheme:light}
:root{
	--bg:#f4f6f9;--panel:#ffffff;--panel2:#f8fafc;
	--surface-0:#f4f6f9;--surface-1:#ffffff;--surface-2:#ffffff;--surface-3:#f8fafc;
	--text:#1a2733;--muted:#64748b;
	--blue:#2f6fed;--blue-strong:#1d4ed8;--green:#16a34a;--yellow:#d97706;--red:#dc2626;--focus:#2f6fed;
	--border-soft:#0f172a14;--border-focus:#2f6fed;--border-strong:#0f172a26;--roster-line:#0f172a14;--roster-header:#64748b;
	--shadow-panel:0 18px 44px #0f172a1a;--shadow-drawer:-24px 0 70px #0f172a33;
	--status-critical:#dc2626;--status-critical-bg:#fee2e2;
	--status-attention:#ea580c;--status-attention-bg:#ffedd5;
	--status-pending:#d97706;--status-pending-bg:#fef3c7;
	--status-good:#16a34a;--status-good-bg:#dcfce7;
	--identity-surface:#f8fafc;--identity-border:#0f172a14;--identity-fallback:#dbeafe;--identity-initials:#1d4ed8;
}
body{background:radial-gradient(circle at 15% -10%,#e6f0ff 0,transparent 45%),radial-gradient(circle at 100% 0,#e6fbf1 0,transparent 40%),#f4f6f9;color:var(--text)}
.sidebar{background:#ffffffe8;border-right-color:#0f172a12;box-shadow:12px 0 36px #0f172a0d}
header{background:linear-gradient(135deg,#ffffffe8,#ffffffcc);border-color:#0f172a10;box-shadow:0 12px 28px #0f172a12}
header::before{opacity:.85}
.mobile-nav-toggle{background:#ffffffee;color:var(--text);border-color:#2f6fed55;box-shadow:0 12px 30px #0f172a1f}
.mobile-nav-backdrop{background:#0f172acc}
.nav-group{color:var(--blue)}
.nav:hover{background:#2f6fed14;color:var(--text)}
.nav.active{background:linear-gradient(90deg,#2f6fed1a,transparent);border-color:#2f6fed33;color:var(--text)}
.nav.active::before{background:linear-gradient(180deg,var(--blue),var(--blue-strong))}
.nav-badge{box-shadow:0 0 0 2px #ffffff}
.hero,#dashboard-view .hero{background:linear-gradient(135deg,#eaf1ff,#ffffff)}
.hero,.panel,article{background:#ffffff;border-color:var(--border-soft);box-shadow:0 10px 28px #0f172a12,inset 0 1px 0 #ffffff}
.hero::before{opacity:.5}
#dashboard-view .hero small{color:var(--blue)}
.hero h2,.cards strong,.site-progress-label{background:linear-gradient(135deg,var(--text) 40%,var(--blue));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
#dashboard-view .cards{background:#ffffff}
.risk-indicator{border-color:#d9770666;background:#fef3c7}
.risk-indicator.risk-red{border-color:#dc262666;background:#fee2e2}
.risk-indicator.risk-orange{border-color:#d9770666;background:#fef3c7}
.risk-indicator.risk-green{border-color:#16a34a66;background:#dcfce7}
#dashboard-view .risk-red .risk-state{background:#fee2e2}
#dashboard-view .risk-orange .risk-state{background:#fef3c7}
#dashboard-view .risk-green .risk-state{background:#dcfce7}
#dashboard-view .risk-action{border-top-color:#0f172a18}
.cards article:nth-child(4){border-left-color:#6d43e0}
input,select,textarea{background:#ffffff;color:var(--text)}
input:focus,select:focus,textarea:focus{outline-color:#2f6fed66;border-color:#2f6fed66}
.login-card{background:#ffffff}
.login-card input,.login-card select{background:#f8fafc;border-color:#0f172a1a}
.login-card input:focus,.login-card select:focus{box-shadow:0 0 0 4px #2f6fed18}
.login-card button[aria-busy=true]::after{border-color:#ffffff55;border-top-color:#ffffff}
.modal .login-card{background:#ffffff}
.modal .login-card::-webkit-scrollbar-thumb{background:#2f6fed45}
.error[role=alert]{background:#fee2e2;color:#991b1b;border-color:#dc262655}
.primary{background:linear-gradient(135deg,#5b8def,var(--blue) 55%,var(--blue-strong));color:#ffffff;box-shadow:0 14px 32px #2f6fed3a}
.primary:hover{filter:brightness(.94)}
.secondary{background:#0f172a08;border-color:var(--border-strong);color:var(--text)}
.secondary:hover{background:#0f172a12;border-color:#2f6fed55}
.toast{background:#f0fdf4;color:#065f46;border-color:#16a34a55;box-shadow:var(--shadow-panel)}
.status{background:#dcfce7;color:#166534;border-color:#16a34a55}
.system-status-bar span{border-color:#0f172a14;background:#f8fafc}
.system-status-bar .online{border-color:#16a34a66;background:#dcfce7}
.system-status-bar .offline{border-color:#dc262666;background:#fee2e2}
.list-item{background:#ffffff;border-color:var(--border-soft)}
.list-item:has(button,a):hover{border-color:#2f6fed55;background:#2f6fed0d}
.list-item:hover{border-color:#2f6fed3a;box-shadow:0 10px 24px #0f172a1a}
#budget-summary .list-item,#documents .list-item,#users .list-item,#messages .list-item,#time-entries .list-item{border-left-color:var(--blue)}
.purchase-category{background:#f8fafc}
.quick-workers-group,.chantier-controls-details{background:#f8fafc}
.quick-worker-form{background:linear-gradient(180deg,#eff6ff,#f8fafc);border-color:#2f6fed26}
.user-row{background:linear-gradient(180deg,#ffffff,#f8fafc)}
.user-row-actions .danger{border-color:#dc262655;color:#991b1b;background:#fef2f2}
.user-row-actions .danger:hover{background:#fee2e2}
.user-empty{border-color:#2f6fed44}
.user-edit-summary{background:#eff6ff}
.user-edit-readonly{background:#f8fafc}
.icon-close{background:#0f172a08;border-color:#0f172a20}
.icon-close:hover{border-color:#2f6fed66;background:#2f6fed14}
.quick-edit-popover{background:#ffffff;box-shadow:0 18px 40px #0f172a26;border-color:#2f6fed35}
.quick-edit-actions .danger{background:#fee2e2;color:#991b1b;border-color:#dc262655}
.calendar-cell{background:#f8fafc}
.calendar-cell.weekend{background:#eef2f7}
.calendar-cell.worked{border-color:#16a34a66;background:#dcfce7;color:#166534}
.calendar-cell.worked.entry-pending{border-color:#d9770688;background:#fef3c7;color:#92400e}
.calendar-cell.worked.entry-rejected{border-color:#dc262688;background:#fee2e2;color:#991b1b}
.calendar-cell.has-rendezvous{border-color:#d9770699;background:#fef3c7}
.calendar-cell.has-rendezvous.worked{background:linear-gradient(135deg,#dcfce7,#fef3c7)}
.calendar-nav-btn,.calendar-nav-today{background:#0f172a08;color:var(--text);border-color:#0f172a1a}
.calendar-nav-btn:hover,.calendar-nav-today:hover:not(:disabled){background:#2f6fed1a;border-color:#2f6fed55}
.calendar-icon-btn{background:#0f172a1c}
.calendar-icon-btn:hover{background:#0f172a35}
.calendar-icon-btn.danger{color:#991b1b}
.calendar-icon-btn.danger:hover{background:#dc262633}
.calendar-stat{background:#f8fafc}
.work-calendar{background:#ffffff}
.status-swatch.active{border-color:#1a2733}
.time-live-calculation{background:#fef9e7;border-color:#d9770644}
.time-live-calculation.ready{border-color:#16a34a66;background:#f0fdf4}
.hours-pdf-panel{background:#f0fdf4;border-color:#16a34a33}
.production-panel input[readonly]{border-color:#16a34a66;background:#dcfce7;color:#065f46}
.production-grid fieldset{background:#f8fafc}
.production-summary-card{background:#eff6ff;border-color:#2f6fed2e}
.production-report-row{background:#f8fafc}
.production-live-calc,.time-year-summary{background:#f0fdf4;border-color:#16a34a44}
.project-switcher{background:#f8fafc;color:var(--blue);border-color:#2f6fed26}
.project-switcher select{background:#ffffff}
.chat-thread{background:#f8fafc}
.chat-bubble.received{background:#eef2f7;color:var(--text)}
.chat-bubble.sent{background:var(--blue);color:#ffffff}
.chat-bubble-row.received .chat-bubble-meta small,.chat-bubble-row.received .chat-ticks,.chat-bubble-row.received .chat-delete{color:#64748b}
.chat-bubble-row.sent .chat-bubble-meta small,.chat-bubble-row.sent .chat-ticks,.chat-bubble-row.sent .chat-delete{color:#ffffffb0}
.chat-bubble-row.sent .chat-ticks.read{color:#ffffff}
.chat-bubble-row.sent .chat-delete:hover{color:#ffffff}
.chat-bubble-row.received .chat-delete:hover{color:#1a2733}
.worker-roster-table thead th,.assignment-table thead th{background:#f8fafc}
.worker-roster-table tbody tr:hover{background:#2f6fed0d}
.worker-detail-summary>div{background:#f8fafc}
.worker-action-menu{background:#ffffff;box-shadow:0 18px 40px #0f172a26;border-color:#2f6fed35}
.worker-action-menu button:hover,.worker-action-menu button:focus-visible{background:#2f6fed14}
.worker-action-menu button.danger{color:#dc2626}
.worker-detail-card{background:#ffffff;border-left-color:var(--border-soft)}
.worker-profile-panel{background:#ffffff;border-color:var(--border-soft)}
.assignment-savebar{background:#ffffff;box-shadow:0 -12px 28px #0f172a1f;border-color:#2f6fed35}
.assignment-table tbody th{background:#ffffff}
.assignment-cell{border-color:#0f172a1a}
.assignment-cell:hover,.assignment-cell:focus-visible{border-color:#2f6fed66}
.worker-avatar{border-color:#2f6fed24}
.image-field{background:#f8fafc}
.detail-payment-status{background:#f8fafc}
.detail-list-item{background:#f8fafc}
.detail-list-item:hover{border-color:#2f6fed40}
.production-method-tag{border-color:#2f6fed35}
.status-critical{color:var(--status-critical)}.status-attention{color:var(--status-attention)}.status-pending{color:var(--status-pending)}.status-good{color:var(--status-good)}
.auto-analysis-answer{background:#f0fdf4;border-color:#16a34a44}
.document-explanation{background:#f0fdf4;border-color:#16a34a44}
.auto-analysis-image-grid img{border-color:#0f172a18}
::selection{background:#2f6fed33;color:#0f172a}
::-webkit-scrollbar-thumb{background:#0f172a26}
::-webkit-scrollbar-thumb:hover{background:#0f172a40}
::placeholder{color:#94a3b880}

/* ===== Weather-per-chantier widget ===== */
.weather-strip{margin-bottom:18px}
.weather-days{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:12px}
.weather-day{display:grid;justify-items:center;gap:4px;padding:12px 8px;border:1px solid var(--border-soft);border-radius:12px;background:#f8fafc;text-align:center}
.weather-day-name{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.weather-day-icon{font-size:1.6rem;line-height:1}
.weather-day-temps{font-size:.85rem;font-weight:800}
.weather-day-temps small{color:var(--muted);font-weight:600}
.weather-day-rain{font-size:.68rem;color:var(--blue)}
.chantier-weather-strip{margin-top:14px}
@media(max-width:850px){.weather-days{grid-template-columns:repeat(5,minmax(56px,1fr));overflow-x:auto}}

.status.offline{background:#fef3c7;color:#92400e;border-color:#d9770655}

/* ===== Professional refresh: IBM Plex type, blueprint-inspired palette, dark sidebar ===== */
:root{
	--bg:#eef1f6;--panel:#ffffff;--panel2:#fafbfd;
	--surface-0:#eef1f6;--surface-1:#ffffff;--surface-2:#ffffff;--surface-3:#fafbfd;
	--text:#1c2530;--muted:#48566d;
	--blue:#2454d1;--blue-strong:#173a99;--green:#1a8754;--yellow:#c2620a;--red:#c53030;--focus:#2454d1;
	--border-soft:#dde3ec;--border-focus:#2454d1;--border-strong:#c9d2df;--roster-line:#e8edf3;--roster-header:#8a97ac;
	--shadow-panel:0 1px 2px #1c25300c,0 10px 28px #1c253012;--shadow-drawer:-24px 0 70px #1c253026;
	--status-critical:#c53030;--status-critical-bg:#fbeaea;
	--status-attention:#c2620a;--status-attention-bg:#fbeee0;
	--status-pending:#c2620a;--status-pending-bg:#fbeee0;
	--status-good:#1a8754;--status-good-bg:#e6f4ec;
	--identity-surface:#fafbfd;--identity-border:#dde3ec;--identity-fallback:#dfe9fb;--identity-initials:#173a99;
}
body{font-family:"IBM Plex Sans",Inter,Segoe UI,sans-serif}
h1,h2,h3,.primary,.secondary,.nav{font-family:"IBM Plex Sans",Inter,Segoe UI,sans-serif}
#progress-value,#site-progress-value,#open-controls,#total-hours,#payroll-total,#budget-remaining,
.cards strong,.worker-roster-table td strong,.worker-amount,.metric,.status-swatches ~ *,
.time-live-calculation strong,.detail-summary-amount strong,.worker-roster-summary dd,
.worker-detail-summary strong,.production-live-calc,#time-summary,.chantier-progress-label,
.site-progress-label,#hero-progress-bar,.weather-day-temps{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}

/* Sidebar: dark, matches the mockup's app-shell */
.sidebar{background:#141b2b;border-right-color:transparent;box-shadow:4px 0 24px #1c25301a}
.sidebar .brand{border-bottom-color:#ffffff16}
.sidebar .brand strong{color:#ffffff}
.company-identity-strip{background:#ffffff0d;border-color:#ffffff16}
.company-identity-strip strong{color:#ffffff}
.company-identity-strip small{color:#8a97ac}
#company-identity-edit{color:#8a97ac}
#company-identity-edit:hover{color:#ffffff;background:#ffffff14}
.nav-group{color:#5f6d87}
.nav{color:#aab5c9;display:flex;align-items:center;gap:10px}
.nav-icon{width:17px;height:17px;flex:none;opacity:.85}
.nav:hover{background:#ffffff0d;color:#dfe5f0}
.nav.active{background:#5b8def29;color:#ffffff;border-color:transparent}
.nav.active .nav-icon{opacity:1;color:#5b8def}
.nav.active::before{background:linear-gradient(180deg,var(--blue),#5b8def)}
#logout-button{background:#ffffff0d;border-color:#ffffff1c;color:#dfe5f0}
#logout-button:hover{background:#ffffff16;border-color:#ffffff2c}
.mobile-nav-toggle{background:#141b2bee;color:#fff;border-color:#5b8def55}

/* KPI cards: side stripe + icon */
.cards article{border-left-width:3px;padding:17px 19px}
.kpi-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.kpi-icon{width:16px;height:16px;opacity:.45;flex:none}
#dashboard-view .cards article:nth-child(1){border-left-color:var(--red)}
#dashboard-view .cards article:nth-child(2){border-left-color:var(--blue)}
#dashboard-view .cards article:nth-child(3){border-left-color:var(--yellow)}
#dashboard-view .cards article:nth-child(4){border-left-color:var(--blue)}
#dashboard-view .cards article:nth-child(5){border-left-color:var(--green)}
#dashboard-view .cards article:nth-child(6){border-left-color:var(--green)}

/* Hero: blueprint grid + deeper gradient */
.hero,#dashboard-view .hero{background:linear-gradient(135deg,#2f343c,#1c1f24 62%,#121316);position:relative;overflow:hidden}
.hero::before{background:radial-gradient(circle,#ffffff20 0,transparent 65%)}
.hero::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#ffffff0e 1px,transparent 1px) 0 0/36px 36px,linear-gradient(0deg,#ffffff0e 1px,transparent 1px) 0 0/36px 36px;mask-image:radial-gradient(circle at 85% 15%,black,transparent 65%);pointer-events:none}
.hero small,#dashboard-view .hero small{color:#ffffffb8}
.hero h2,#dashboard-view .hero h2{background:linear-gradient(135deg,#ffffff,#d8dbe0);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.cards strong,.site-progress-label{background:linear-gradient(135deg,var(--text),var(--blue));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero p{color:#ffffffcc}
.risk-indicator{background:#fbeee0;border-color:#c2620a44}
.risk-indicator.risk-red{background:#fbeaea;border-color:#c5303044}
.risk-indicator.risk-orange{background:#fbeee0;border-color:#c2620a44}
.risk-indicator.risk-green{background:#e6f4ec;border-color:#1a875444}

/* Worker roster: header row + row hover, matches mockup table */
.worker-roster-table thead th{background:var(--panel2);color:var(--roster-header)}
.worker-roster-table tbody tr:hover{background:var(--panel2)}
.worker-avatar{background:linear-gradient(135deg,var(--blue),var(--blue-strong));color:#fff;font-family:"IBM Plex Mono",monospace}
.identity-logo{background:var(--identity-fallback);color:var(--identity-initials)}
.worker-status{font-family:"IBM Plex Sans",sans-serif}
.assignment-table thead th{background:var(--panel2)}

/* Buttons: crisper, less glow */
.primary{background:linear-gradient(135deg,var(--blue),var(--blue-strong));box-shadow:0 10px 24px #2454d13a}
.primary:hover{filter:brightness(1.08)}
.secondary{background:var(--panel);border-color:var(--border-soft);color:var(--text)}
.secondary:hover{border-color:var(--blue);color:var(--blue);background:#eef3fd}
.status{background:var(--status-good-bg);color:#0f5c37;border-color:#1a875444}

::selection{background:#2454d133;color:#0f172a}

/* In-view tabs: each view keeps its own sections one click away, in context, instead of the sidebar
   listing every section as a separate top-level entry. */
.mobile-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.mobile-tab{flex:1;min-width:130px;padding:11px 10px;border-radius:11px;border:1px solid var(--border-soft);background:var(--panel);color:var(--muted);font:inherit;font-weight:700;font-size:.85rem;cursor:pointer}
.mobile-tab.active{background:linear-gradient(135deg,var(--blue),var(--blue-strong));color:#fff;border-color:transparent;box-shadow:0 8px 20px #2454d13a}
.view .panel[data-tab-hidden]{display:none}
.grid-two > .panel:not([data-tab-hidden]){grid-column:1/-1}

/* Labels: a touch more presence (size + color) per feedback */
label{font-size:.86rem;color:#3d5a8a}
.list > small,.list > p{display:block;padding:22px 18px;border:1.5px dashed var(--border-strong);border-radius:12px;text-align:center;color:var(--muted);font-size:.9rem;background:#fafbfd}

/* Refine generic .list-item (documents, purchases, messages fallback, time entries) to match the new system */
.list{gap:10px}
.list-item{padding:14px 16px;border-radius:12px;border-left-width:3px;background:var(--panel);box-shadow:var(--shadow-panel)}
.list-item strong{font-size:.92rem;font-weight:700;color:var(--text);letter-spacing:-.005em}
.list-item small{color:var(--muted);font-size:.79rem;line-height:1.55;margin-top:3px}
.list-item:hover{border-left-color:var(--blue);box-shadow:0 6px 18px #1c25300f}
.list-item .document-actions,.list-item .production-report-actions{margin-top:10px;padding-top:10px;border-top:1px solid var(--border-soft)}
.document-group h4{color:var(--blue-strong);font-weight:700}
.purchase-category h3,.purchase-groups h3{color:var(--text)}

/* Calendar: darker, clearer cells per feedback */
.calendar-cell{background:#eef1f6;border-color:var(--border-soft);color:var(--text)}
.calendar-cell strong{color:var(--text);font-weight:700}
.calendar-cell.weekend{opacity:.72;background:#e4e9f0}
.calendar-cell.empty{background:transparent;border-color:transparent}
.calendar-add-rdv{opacity:.62;border-color:var(--border-strong);color:var(--muted)}
.calendar-cell:hover .calendar-add-rdv,.calendar-add-rdv:hover,.calendar-add-rdv:focus-visible{opacity:1;color:var(--blue);border-color:var(--blue)}
.calendar-cell.worked{border-color:#16a34a;background:#bbf0cf;color:#0d5b32}
.calendar-cell.worked strong{color:#0d5b32}
.calendar-cell.worked.entry-pending{border-color:#c2620a;background:#fce0b0;color:#7a3c05}
.calendar-cell.worked.entry-pending strong{color:#7a3c05}
.calendar-cell.worked.entry-rejected{border-color:#c53030;background:#f7c6c6;color:#7a1d1d}
.calendar-cell.worked.entry-rejected strong{color:#7a1d1d}
.calendar-cell.has-rendezvous{border-color:#c2620a;background:#fce0b0}
.calendar-cell.has-rendezvous strong{color:#7a3c05}
.calendar-cell.has-rendezvous.worked{background:linear-gradient(135deg,#bbf0cf,#fce0b0)}
.calendar-quick-edit{color:inherit;font-weight:800}
.calendar-stat{background:#eef1f6;border-color:var(--border-soft)}
.calendar-stat strong{color:var(--text)}

/* Fix: quick-edit pills (8.0h, +RDV, Absence) inherited a dark overlay meant for the old dark theme — invisible on light cells */
.calendar-quick-edit{background:#ffffffcc;color:currentColor;border-color:currentColor;box-shadow:0 1px 3px #1c253022}
.calendar-quick-edit:hover{background:#ffffff}
.calendar-cell.worked .calendar-quick-edit{color:#0d5b32}
.calendar-cell.worked.entry-pending .calendar-quick-edit{color:#7a3c05}
.calendar-cell.worked.entry-rejected .calendar-quick-edit{color:#7a1d1d}
.calendar-cell.has-rendezvous .calendar-quick-edit{color:#7a3c05}
.calendar-icon-btn{background:#0000001c;color:inherit}
.calendar-icon-btn:hover{background:#00000035}
.calendar-icon-btn.danger{color:#c53030}
.calendar-icon-btn.danger:hover{background:#c5303033}

/* Fix: +RDV/+Absence quick-add pills inherited opacity:.4 from the old dark theme's ghost-button style — nearly invisible on light cells */
.calendar-add-rdv{opacity:.85;border-color:#7a879c;background:#ffffffb3}
.calendar-add-rdv:hover{opacity:1;background:#eef3fd;border-color:var(--blue);color:var(--blue)}

/* Sidebar: neutral graphite gradient */
.sidebar{background:linear-gradient(165deg,#2a2e35,#17191d)}

/* Extend the hero blue gradient to the top header bar, present on every page */
header{background:linear-gradient(120deg,#2f343c,#1c1f24 68%,#121316);border-color:transparent;box-shadow:0 8px 24px #1c25301f;position:relative;overflow:hidden}
header::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#ffffff0e 1px,transparent 1px) 0 0/34px 34px,linear-gradient(0deg,#ffffff0e 1px,transparent 1px) 0 0/34px 34px;mask-image:radial-gradient(circle at 90% 0%,black,transparent 70%);pointer-events:none}
header #current-role{color:#c7ccd3;position:relative}
header #page-title{color:#ffffff;position:relative}
header .status{background:#ffffff1c;color:#ffffff;border-color:#ffffff30;position:relative}

/* The logo is now a self-contained white SVG badge — drop the leftover .brand-mark blue/purple glow */
.brand-logo{box-shadow:none;background:none}

/* Primary buttons: graphite instead of blue, matching the sidebar/header theme */
.primary{background:linear-gradient(135deg,#3c424b,#1c1f24);box-shadow:0 10px 24px #1c25303a}
.primary:hover{filter:brightness(1.15)}

/* Replace remaining blue accents with graphite: tokens cascade to buttons, KPI text, worker avatars, etc. */
:root{--blue:#4a5058;--blue-strong:#1c1f24;--focus:#5a6169;--border-focus:#5a6169}
.nav.active{background:#ffffff20;color:#ffffff}
.nav.active .nav-icon{color:#ffffff}
.nav.active::before{background:linear-gradient(180deg,#8a92a0,#4a5058)}
.mobile-nav-toggle{border-color:#ffffff33}
.secondary:hover{background:#eef1f6}
.calendar-add-rdv:hover{background:#eef1f6}
.identity-fallback{background:#e4e7ec}
:root{--identity-fallback:#e4e7ec;--identity-initials:#3c424b}

/* Login card: drop the leftover blue border tint and input focus glow */
.modal .login-card{border-color:#4a505835}
.login-card input:focus,.login-card select:focus{box-shadow:0 0 0 4px #4a505818}
.login-card::-webkit-scrollbar-thumb{background:#4a505845}

/* Calendar: hide +RDV/+Absence quick-add on days that already have an entry, until hovered/focused — declutters cells that were already showing hours or a rendezvous. Uses visibility (not display) so cell height stays constant and the grid doesn't reflow/jump row to row. */
.calendar-cell.worked .calendar-add-rdv,.calendar-cell.has-rendezvous .calendar-add-rdv{visibility:hidden;pointer-events:none}
.calendar-cell.worked:hover .calendar-add-rdv,.calendar-cell.has-rendezvous:hover .calendar-add-rdv,
.calendar-cell.worked:focus-within .calendar-add-rdv,.calendar-cell.has-rendezvous:focus-within .calendar-add-rdv{visibility:visible;pointer-events:auto}

/* Login card: fill the whole screen on narrow phones instead of floating as a small centered card */
@media(max-width:520px){
	#login-modal.modal{padding:0;align-items:stretch}
	#login-modal .login-card{width:100%;max-width:none;height:100%;max-height:none;border-radius:0;box-shadow:none;padding:20px 18px calc(20px + env(safe-area-inset-bottom,0px));padding-top:max(20px,env(safe-area-inset-top,0px))}
}

/* Calendar: mark absence entries in red, distinct from RDV (kept amber) */
.calendar-cell.has-rendezvous .calendar-quick-edit.calendar-absence{color:#c53030}
.calendar-cell.has-absence{border-color:#c53030;background:#fbeaea}
.calendar-cell.has-absence strong{color:#7a1d1d}
.calendar-cell.has-absence.worked{background:linear-gradient(135deg,#bbf0cf,#fbeaea)}

/* Sidebar nav: expandable submenu (e.g. Tâches et communication -> Temps de travail / Communication) */
.nav-item-group{display:flex;flex-direction:column;gap:2px}
.nav-submenu{display:flex;flex-direction:column;gap:2px;padding-left:14px;margin:2px 0 4px}
.nav-sub{display:flex;align-items:center;gap:8px;padding:8px 10px;border:0;border-left:2px solid #ffffff1c;border-radius:8px;background:transparent;color:#aab5c9;font:inherit;font-size:.85rem;font-weight:600;text-align:left;cursor:pointer}
.nav-sub:hover{background:#ffffff0d;color:#dfe5f0;border-left-color:#ffffff40}
