:root{--color-base-100:oklch(100% 0 0);--color-base-200:oklch(97% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(20% 0 0);--color-primary:oklch(85% .199 91.936);--color-primary-content:oklch(42% .095 57.708);--color-secondary:oklch(75% .183 55.934);--color-secondary-content:oklch(40% .123 38.172);--color-accent:oklch(0% 0 0);--color-accent-content:oklch(100% 0 0);--color-neutral:oklch(37% .01 67.558);--color-neutral-content:oklch(92% .003 48.717);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(39% .09 240.876);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(70% .191 22.216);--color-error-content:oklch(39% .141 25.723);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--bg:var(--color-base-200);--surface:var(--color-base-100);--surface-2:var(--color-base-200);--border:var(--color-base-300);--text:var(--color-base-content);--muted:color-mix(in oklab, var(--color-base-content) 60%, var(--color-base-100));--primary:var(--color-primary);--primary-text:var(--color-primary-content);--primary-ink:var(--color-primary-content);--danger:var(--color-error-content);--danger-bg:var(--color-error);--danger-bg-text:var(--color-error-content);--success:var(--color-success-content);--warning-bg:var(--color-warning);--warning-text:var(--color-warning-content);--radius:var(--radius-field);--shadow:0 1px 2px #0000000f;color:var(--text);background:var(--bg);accent-color:var(--primary);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1{margin:0 0 16px;font-size:1.4rem}h2{margin:0 0 12px;font-size:1.1rem}a{color:var(--primary-ink)}.muted{color:var(--muted)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.shell{align-items:flex-start;min-height:100vh;display:flex}.shell-main{flex:1;min-width:0}.sidebar{z-index:10;background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex:none;gap:12px;width:220px;height:100vh;padding:12px 10px;transition:width .18s;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar.collapsed{width:57px}.sidebar-head{align-items:center;gap:10px;display:flex}.sidebar-head .btn-icon{flex:none}.brand{color:var(--text);font-size:1.15rem;font-weight:700;text-decoration:none}.brand img{border-radius:4px;height:36px;display:block}.nav{flex-direction:column;flex:1;gap:2px;display:flex}.nav a,.sidebar-action{border-radius:var(--radius);color:var(--muted);font:inherit;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;align-items:center;gap:12px;padding:8px;text-decoration:none;display:flex}.nav a svg,.sidebar-action svg{flex:none}.nav a:hover,.sidebar-action:hover{background:var(--surface-2);color:var(--text)}.nav a.active{color:var(--primary-text);background:var(--primary)}.sidebar.collapsed .nav-label,.sidebar.collapsed .brand{display:none}@media (prefers-reduced-motion:reduce){.sidebar{transition:none}}.banner{background:var(--warning-bg);color:var(--warning-text);flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:10px 20px;display:flex}.page{max-width:1500px;margin:0 auto;padding:20px}.btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:7px 14px;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.btn-primary:hover:not(:disabled){background:var(--primary);filter:brightness(.94)}.btn-danger{color:var(--danger)}.btn-danger-solid{background:var(--danger-bg);border-color:var(--danger-bg);color:var(--danger-bg-text)}.btn-danger-solid:hover:not(:disabled){background:var(--danger-bg);filter:brightness(.94)}.btn-small{padding:3px 10px;font-size:.87rem}.btn-icon{border-radius:var(--radius);width:36px;height:36px;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.btn-icon:hover{background:var(--surface-2)}.chantier-nom{align-items:center;gap:6px;display:flex}.chantier-toggle{flex:none;gap:4px;width:auto;min-width:36px;padding:0 6px}input,select,textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;min-width:0;padding:7px 10px}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--primary-ink);outline-offset:1px}input[type=checkbox]{width:16px;height:16px;padding:0}input[type=color]{width:40px;height:34px;padding:2px}.input-short{width:90px}.input-invalid{border-color:var(--danger-bg)}.form{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--muted);font-size:.85rem;font-weight:600}.field-missing{color:var(--danger);vertical-align:-2px;margin-left:4px;display:inline-flex}.field-hint{color:var(--muted);font-size:.82rem}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spacer{flex:1}.back-to-top{z-index:40;border-radius:50%;justify-content:center;width:44px;height:44px;padding:0;font-size:1.4rem;line-height:1;position:fixed;bottom:24px;right:24px;box-shadow:0 4px 14px #00000040}@media print{.back-to-top{display:none}}.modal-backdrop{z-index:50;background:#00000073;justify-content:center;align-items:flex-start;padding:8vh 16px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:var(--radius-box);width:100%;max-width:480px;padding:20px;box-shadow:0 10px 40px #0000004d}.modal-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.modal-header h2{margin:0}.confirm-message{margin:0 0 20px}.modal-actions{justify-content:flex-end;gap:10px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-box);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:16px}.alert{border-radius:var(--radius-box);border:1px solid var(--border);background:var(--surface-2);padding:10px 14px}.alert-error{border-color:var(--danger-bg);color:var(--danger)}.alert-warning{background:var(--warning-bg);color:var(--warning-text);border-color:#0000}.badge{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:.8rem;font-weight:600;display:inline-flex}.badge-warning{background:var(--warning-bg);color:var(--warning-text)}.badge-done{color:var(--success)}.badge-error{color:var(--danger)}.badge-processing,.badge-pending{color:var(--primary-ink)}.progress{background:var(--border);border-radius:999px;height:6px;overflow:hidden}.progress-bar{border-radius:inherit;background-color:var(--primary);background-image:linear-gradient(90deg,#0000,#ffffff59,#0000);background-repeat:no-repeat;background-size:120px 100%;height:100%;transition:width .6s;animation:1.6s linear infinite progress-shine}@keyframes progress-shine{0%{background-position:-120px 0}to{background-position:calc(100% + 120px) 0}}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none;animation:none}}.doc-progress{flex-direction:column;gap:3px;min-width:140px;margin-top:4px;font-size:.8rem;display:flex}.batch-progress{flex-direction:column;gap:8px;margin-top:16px;display:flex}.category-list{flex-direction:column;gap:2px;display:flex}.dot{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-box);background:var(--surface);text-align:center;flex-direction:column;align-items:center;gap:10px;padding:24px 16px;display:flex}.dropzone.drag-over{border-color:var(--primary);background:var(--surface-2)}.dropzone.disabled{opacity:.6}.upload-list{flex-direction:column;gap:4px;margin:12px 0 0;padding:0;font-size:.9rem;list-style:none;display:flex}.upload-list li{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.filters{flex-wrap:wrap;align-items:flex-end;gap:10px;margin:16px 0;display:flex}.filters .field{flex:0 160px}.filters .field-grow{flex:220px}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-box);overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:8px 10px}.table th{color:var(--muted);white-space:nowrap;background:var(--surface-2);font-size:.82rem}.table th.num,.table td.num{text-align:right}.table th.center,.table td.center{text-align:center}.table tr:last-child td{border-bottom:none}.table .table-total td{border-top:2px solid var(--border);white-space:nowrap;font-weight:600}.table-clickable tbody tr{cursor:pointer}.table-clickable tbody tr:hover{background:var(--surface-2)}.th-sort{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}.thumb{object-fit:cover;background:var(--surface-2);width:44px;height:44px;color:var(--muted);border-radius:4px;justify-content:center;align-items:center;font-size:.7rem;font-weight:700;display:flex}.cell-numero{min-width:90px}.cell-numero input{width:110px;padding:3px 6px}.empty{text-align:center;color:var(--muted);padding:32px 16px}.detail{grid-template-columns:minmax(0,.85fr) minmax(0,1.3fr);align-items:start;gap:20px;display:grid}.detail-preview{flex-direction:column;gap:8px;height:calc(100vh - 40px);display:flex;position:sticky;top:20px}.preview-frame{border:1px solid var(--border);border-radius:var(--radius-box);background:var(--surface-2);flex:1;width:100%;min-height:0}.preview-image{overflow:auto}.preview-image img{max-width:none;display:block}.numero-interne{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.numero-interne input{width:180px;font-size:1.1rem;font-weight:600}.grid-fields{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;display:grid}.grid-fields .field-wide{grid-column:1/-1}.lines-table input,.lines-table select{width:100%;padding:4px 6px}.lines-table th,.lines-table td{padding:6px}.lines-table td.num input{text-align:right;width:68px}.lines-table .col-desc{min-width:170px}.lines-table .col-cat{min-width:180px}.suggested select{border-color:var(--primary-ink);border-style:dashed}.ocr-raw{background:var(--surface-2);border-radius:var(--radius);white-space:pre-wrap;word-break:break-word;max-height:400px;margin:10px 0 0;padding:12px;font-size:.82rem;overflow:auto}.timesheet-header{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:12px;display:flex}.timesheet-header .field{flex:0 150px}.timesheet-total{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.1rem;font-weight:700}.timesheet-approved{border-left:4px solid var(--color-success)}.timesheet-table input,.timesheet-table select{width:100%;padding:4px 6px}.timesheet-mention{flex-direction:column;gap:4px;min-width:110px;display:flex}.timesheet-chantiers{flex-direction:column;gap:4px;display:flex}.timesheet-chantier{align-items:center;gap:4px;display:flex}.timesheet-chantier .btn-icon{flex:none;width:28px;height:28px}.timesheet-chantier .btn-icon:disabled{opacity:.3;cursor:default;background:0 0}.timesheet-table th,.timesheet-table td{padding:6px}.timesheet-table .col-time{width:104px}.timesheet-table .col-date{width:140px}.timesheet-table .col-text{min-width:150px}.repris input{border-color:var(--primary-ink);border-style:dashed}.suppliers-table input,.suppliers-table select{width:100%;padding:4px 6px}.suppliers-table .col-name{min-width:240px}.badge-vente{color:var(--primary-ink)}.stat-tiles{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:16px;display:grid}.stat-tiles .card+.card{margin-top:0}.stat-tile{color:var(--text);flex-direction:column;gap:2px;text-decoration:none;display:flex}.stat-tile:hover{border-color:var(--primary)}.stat-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.dashboard-grid .card+.card{margin-top:0}.dashboard-wide{grid-column:1/-1}.bar-list{flex-direction:column;gap:8px;display:flex}.bar-row{grid-template-columns:minmax(0,.9fr) minmax(60px,1fr) 130px;align-items:center;gap:12px;display:grid}.bar-row:hover .bar-fill{filter:brightness(1.15)}.bar-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bar-link{color:var(--text);flex-wrap:nowrap;gap:6px;text-decoration:none}.bar-link:hover{text-decoration:underline}.bar-track{height:12px}.bar-fill{background:var(--primary);border-radius:0 4px 4px 0;min-width:2px;height:100%}.sparkline polyline{fill:none;stroke:var(--primary-ink);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.bulk-suggest td select{width:100%;padding:4px 6px}details>summary{cursor:pointer;font-weight:600}.section-repliable>summary{font-size:1.1rem}.section-repliable-corps{margin-top:12px}@media (width<=900px){.page{padding:12px}.detail,.dashboard-grid{grid-template-columns:minmax(0,1fr)}.detail-preview{height:60vh;position:static}}.apprenti h3{margin:0 0 8px;font-size:1rem}.apprenti+.apprenti{border-top:1px solid var(--border);margin-top:24px;padding-top:16px}.cfa-annee{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.cfa-calendar{border-collapse:collapse;table-layout:fixed;width:100%;min-width:960px;font-size:.8rem}.cfa-calendar th{background:var(--surface-2);border:1px solid var(--border);padding:.3rem}.cfa-calendar td{border:1px solid var(--border);padding:0}.cfa-calendar td.cfa-vide{background:var(--surface-2)}.cfa-jour{white-space:nowrap;justify-content:space-between;gap:.25rem;width:100%;padding:.15rem .35rem;display:flex}.cfa-weekend{background:var(--surface-2);color:var(--muted)}.cfa-present{background:var(--primary);color:var(--primary-text);font-weight:600}.planning-semaine{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.planning-table th,.planning-table td{padding:6px 4px}.planning-table .planning-jour,.planning-table .planning-sous-titre{text-align:center;border-left:1px solid var(--border)}.planning-table .planning-sous-titre{font-weight:400}.planning-table .planning-salarie{font-size:inherit;color:var(--text)}.planning-salarie-contenu{justify-content:space-between;align-items:center;gap:4px;display:flex}.planning-nom{flex:1}.planning-actions .btn-icon,.planning-poignee.btn-icon{width:26px;height:26px;color:var(--muted)}.planning-poignee.btn-icon{cursor:grab;flex:none}.planning-poignee.btn-icon:active{cursor:grabbing}.planning-table tr.planning-drag{opacity:.4}.planning-table tr.planning-drop-before>*{box-shadow:inset 0 2px 0 var(--primary-ink)}.planning-table tr.planning-drop-after>*{box-shadow:inset 0 -2px 0 var(--primary-ink)}.planning-actions{flex:none;display:inline-flex}.planning-actions .btn-icon.planning-action-active{background:var(--surface-2);color:var(--primary-ink)}.planning-copie{justify-content:space-between;align-items:center;gap:12px;display:flex}.planning-actions .btn-icon:disabled{opacity:.25;cursor:default;background:0 0}.planning-table .planning-affectation{border-left:1px solid var(--border);min-width:115px}.planning-table select,.planning-table input{width:100%;padding:4px 6px;font-size:.9rem}.planning-table .planning-horaire select{appearance:none;text-align:center;font-variant-numeric:tabular-nums;width:98px;padding:4px 2px}.planning-table .planning-note{border-left:1px solid var(--border);min-width:120px}.planning-affectation[data-mention] select{font-weight:600}.planning-affectation[data-mention=Absent] select{color:var(--danger)}.planning-affectation[data-mention=Congés] select{background:var(--warning-bg);color:var(--warning-text)}.planning-affectation[data-mention=CFA] select{color:var(--primary-ink)}.planning-affectation[data-mention=Dépôt] select{color:var(--muted)}.planning-cfa-auto select{border-style:dashed;font-style:italic}.plages{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.plages li{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:8px;display:flex}.plages li>span:first-child{flex:1}.print-only{display:none}@media print{@page{size:A4 landscape;margin:10mm}:root{--bg:#fff;--surface:#fff;--surface-2:var(--color-base-200);--border:oklch(65% 0 0);--text:#000;--muted:#444;--primary-ink:var(--color-primary-content);--danger:var(--color-error-content);--success:var(--color-success-content);--warning-bg:var(--color-warning);--warning-text:var(--color-warning-content)}.sidebar,.banner,.no-print{display:none!important}.print-only{display:inline}.page{max-width:none;padding:0}.table-wrap{border:none;overflow:visible}.planning-table{font-size:9pt}.planning-table th,.planning-table td{border:1px solid var(--border);padding:3px 5px}.planning-table tr:last-child td{border-bottom:1px solid var(--border)}.planning-table tr{break-inside:avoid}.planning-table .planning-affectation{min-width:0}.planning-table .planning-horaire{white-space:nowrap}.planning-affectation[data-mention]{font-weight:600}.planning-affectation[data-mention=Absent]{color:var(--danger)}.planning-affectation[data-mention=CFA]{color:var(--primary-ink)}}.bilan-detail>td{background:var(--surface-2);padding:12px 16px}.bilan-detail .table{background:var(--surface);border:1px solid var(--border)}.bilan-chantier{min-width:260px}.auth-screen{place-items:center;min-height:100vh;padding:16px;display:grid}.auth-card{width:min(400px,100%)}.auth-card h1{margin:0;font-size:1.4rem}.auth-logo{align-self:center;max-width:160px}.auth-loading{padding:24px}.sidebar-user{border-top:1px solid var(--border);flex-direction:column;gap:2px;padding-top:8px;display:flex}.sidebar-user .sidebar-action.active{color:var(--text)}.admin-tile{border:1px solid var(--border);font:inherit;text-align:left;cursor:pointer}.admin-temporary{justify-content:space-between;align-items:center;gap:12px;margin-top:0;display:flex}.admin-temporary code{background:var(--surface);-webkit-user-select:all;user-select:all;border-radius:4px;padding:1px 6px;font-size:1rem}.admin-log-table td{vertical-align:top}.admin-nowrap{white-space:nowrap}.admin-small{font-size:.82rem}.admin-json{border-radius:var(--radius);background:var(--surface-2);white-space:pre-wrap;word-break:break-word;max-width:640px;max-height:320px;margin:6px 0 0;padding:8px;font-size:.8rem;overflow:auto}.admin-pagination{margin-top:10px}.nav a{position:relative}.nav-badge{background:var(--warning-bg);min-width:20px;color:var(--warning-text);text-align:center;border-radius:999px;margin-left:auto;padding:0 6px;font-size:.75rem;font-weight:700;line-height:20px}.nav-badge-danger{background:var(--danger-bg);color:var(--danger-bg-text)}.sidebar.collapsed .nav-badge{min-width:16px;padding:0 4px;font-size:.65rem;line-height:16px;position:absolute;top:2px;right:2px}.vehicules-table td{vertical-align:top}.vehicule-intervalle{white-space:nowrap;align-items:center;gap:4px;display:flex}.vehicule-intervalle input{width:72px}.vehicule-echeance{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.vehicule-choice{align-items:center;gap:6px;display:inline-flex}.echeances-vehicules{margin-bottom:16px}.echeances-vehicules ul{flex-direction:column;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.echeances-vehicules li{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.vehicule-rappel{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;font-size:.85rem;display:flex}.vehicule-rappel input{width:140px}.btn-link{color:var(--primary-ink);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}
