:root{--bg:#f3f5f7;--card:#fff;--text:#20242a;--muted:#667085;--line:#d6dbe2;--accent:#1769aa;--accent-soft:#e9f2fb}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Arial,Helvetica,sans-serif;color:var(--text)}
.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#e8f1f8,#f7f8fa)}.login-card{width:min(430px,calc(100vw - 28px));background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:0 14px 50px rgba(0,0,0,.12)}.login-card h1{font-size:25px;margin-bottom:8px}.login-card p{color:var(--muted)}.login-card form{display:grid;gap:14px;margin-top:22px}.login-card label{font-size:13px;font-weight:700}.login-card input{display:block;width:100%;margin-top:5px;padding:11px;border:1px solid var(--line);border-radius:8px;font:inherit}.login-error{color:#a42020!important;font-weight:700;min-height:18px;margin:0!important}
header{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--line);padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:18px}
h1{font-size:20px;margin:0}header small{color:var(--muted)}nav{display:flex;gap:5px;flex-wrap:wrap}
button,.nav{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 10px;cursor:pointer}.nav.active,.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button.danger-soft{border-color:#d99;color:#922;background:#fff7f7}button.danger-soft:hover{background:#ffe8e8}
main{padding:14px}.view{display:none}.view.active{display:block}.toolbar{display:flex;align-items:center;gap:7px;margin-bottom:8px}.toolbar strong{margin-left:8px}
.planner-layout{display:grid;grid-template-columns:72px minmax(0,1fr) 62px;gap:8px}.left-rail{min-height:620px;border:1px solid var(--line);border-radius:11px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}
.left-rail-title{font-size:10px;color:var(--muted)}#weekNumbers{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:800;letter-spacing:.13em;margin-top:10px}.month-range{writing-mode:vertical-rl;transform:rotate(180deg);font-size:13px;color:var(--muted);margin-top:18px;text-transform:uppercase}
.planner-scroll{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:11px}#planningTable{border-collapse:collapse;min-width:2850px;width:100%}#planningTable th,#planningTable td{border-right:1px solid #e1e5ea;border-bottom:1px solid #e1e5ea;padding:5px;vertical-align:top;min-width:132px}
#planningTable thead th{position:sticky;top:0;background:#f7f8fa;z-index:3}.geo-col{position:sticky;left:0;z-index:7!important;background:#fff!important;min-width:82px!important;width:82px!important;padding:0!important}.geo-avatar{height:100%;min-height:108px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.geo-avatar .avatar{width:34px;height:34px;border-radius:50%;background:#e7ebf0;display:flex;align-items:center;justify-content:center;font-size:19px}.geo-avatar b{font-size:13px}.week-separator{border-left:3px solid #a8b1bc!important}
.cell{min-height:108px}.cell.dragover,.bucket-zone.dragover{outline:2px dashed var(--accent);outline-offset:-3px;background:var(--accent-soft)}.day-total{text-align:right;color:var(--muted);font-size:10px;margin-top:4px}.day-total.over{color:#b42318;font-weight:800}
.right-rail{display:grid;grid-template-rows:1fr 1fr;gap:8px;min-height:620px}.bucket-zone{position:relative;border:2px dashed var(--line);border-radius:11px;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}.bucket-icon{font-size:28px;font-weight:900}.drawer{display:none;position:absolute;right:70px;top:0;width:270px;max-height:470px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px;z-index:30}.drawer.open{display:block}
.task{position:relative;border:1px solid rgba(0,0,0,.14);border-radius:8px;padding:7px 8px 11px;margin-bottom:6px;cursor:grab;min-height:60px}.task.dragging{opacity:.42}.task-meta{font-size:10px;font-weight:800;opacity:.7;display:flex;justify-content:space-between}.task-name{font-size:14px;font-weight:800;line-height:1.12;margin-top:4px}.task-foot{margin-top:6px;padding-left:22px;padding-right:30px;display:flex;justify-content:space-between;align-items:end}.requester{font-size:11px;font-weight:800;opacity:.72}.equipment-icons{display:flex;gap:3px}.eq{font-size:14px;background:rgba(255,255,255,.55);border:1px solid rgba(0,0,0,.12);border-radius:6px;padding:2px 4px}
.comment-handle{position:absolute;left:4px;bottom:0;font-size:19px;font-weight:900;padding:0 5px;border-radius:5px;cursor:pointer;background:rgba(255,255,255,.26)}.copy-handle{position:absolute;right:0;bottom:0;width:31px;height:28px;display:flex;align-items:center;justify-content:center;border-top-left-radius:8px;background:rgba(70,70,70,.18);cursor:copy}.resize-handle{position:absolute;left:31px;right:33px;bottom:0;height:7px;cursor:ns-resize}.resize-handle:after{content:"";display:block;width:32px;height:3px;border-radius:9px;background:rgba(0,0,0,.28);margin:2px auto}
.hint{font-size:11px;color:var(--muted)}.panel{background:#fff;border:1px solid var(--line);border-radius:11px;padding:14px}.section-head{display:flex;align-items:center;justify-content:space-between}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:9px;margin-top:10px}.cards.single{grid-template-columns:1fr}.entity-card{border:1px solid var(--line);border-left:6px solid #70ad47;border-radius:9px;background:#fff;padding:11px;cursor:pointer}.entity-card small{display:block;color:var(--muted);margin-top:4px}
.user-inactive{border-left-color:#9aa0a6;background:#f2f3f4}.phase-pre_etude{border-left-color:#a9adb3}.phase-etude{border-left-color:#ffd966}.phase-execution{border-left-color:#5b9bd5}.status-available{border-left-color:#70ad47}.status-maintenance{border-left-color:#edb95a}.status-out_of_service,.status-archived{border-left-color:#999;background:#f3f3f3}.abs-pending{border-left-color:#9aa0a6;background:#f2f3f4}.abs-approved{border-left-color:#70ad47}.abs-rejected{border-left-color:#d95c5c}.bucket-card{padding:8px;border:1px solid rgba(0,0,0,.12);border-radius:8px;margin-bottom:6px;cursor:grab}.bucket-card b{font-size:12px}.bucket-card small{display:block;margin-top:3px}
.absence-actions{display:flex;gap:7px;margin-top:9px}.absence-actions button{padding:6px 9px}.approve-absence{border-color:#3d8b40;color:#246c28}.reject-absence{border-color:#ba4a4a;color:#8b2424}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.form-grid label{font-size:12px;font-weight:700}.form-grid input,.form-grid select,.form-grid textarea,.comment-form input,.comment-form select{display:block;width:100%;margin-top:4px;border:1px solid var(--line);border-radius:7px;padding:8px;font:inherit}.wide{grid-column:1/-1}.check{display:flex!important;gap:7px;align-items:center}.check input{width:auto!important;margin:0!important}.two-col{display:grid;grid-template-columns:1.2fr .8fr;gap:12px}
.backup-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.backup-grid a{text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:9px;padding:16px;display:flex;flex-direction:column;gap:5px;font-size:24px}.backup-grid b{font-size:14px}.backup-grid small{font-size:11px;color:var(--muted)}
dialog{width:min(720px,94vw);max-height:88vh;overflow:auto;border:1px solid var(--line);border-radius:11px}.dialog-head{display:flex;align-items:start;justify-content:space-between}.dialog-head h2{margin:0}.comments-section{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.comment-row{background:#f5f6f8;border-radius:7px;padding:8px;margin-bottom:6px;font-size:12px}.comment-row b{display:block;margin-bottom:2px}.comment-form{display:grid;grid-template-columns:130px 1fr auto;gap:6px;margin-top:8px}
@media(max-width:900px){header{flex-direction:column;align-items:flex-start}.planner-layout{grid-template-columns:56px minmax(650px,1fr) 56px;overflow-x:auto}.form-grid,.two-col{grid-template-columns:1fr}.wide{grid-column:auto}.backup-grid{grid-template-columns:1fr}.comment-form{grid-template-columns:1fr}}
.today-head{font-weight:900!important;color:#1769aa!important;background:#dceeff!important;box-shadow:inset 0 -4px 0 #1769aa}.current-week{background:#f2f8fd!important}.today-cell{background:#f7fbff!important;box-shadow:inset 2px 0 #1769aa,inset -2px 0 #1769aa}.global-map{height:calc(100vh - 190px);min-height:540px;border:1px solid var(--line);border-radius:10px;margin-top:12px}.task-map{height:260px;border:1px solid var(--line);border-radius:9px}.task-map-section{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.site-label{background:white;border:1px solid #777;border-radius:6px;padding:2px 5px;font-size:11px;font-weight:700;white-space:nowrap}.map-marker{font-size:22px}.leaflet-tooltip.site-short{font-weight:800;font-size:11px}.mobile-actions{display:none}
@media(max-width:700px){main{padding:6px}header{padding:8px;position:relative}nav{overflow-x:auto;flex-wrap:nowrap;width:100%;padding-bottom:4px}.nav{white-space:nowrap;min-height:44px}.planner-layout{grid-template-columns:48px minmax(0,1fr) 48px;gap:4px}.planner-scroll{overflow:auto;touch-action:pan-x pan-y}#planningTable{min-width:2500px}.task{min-height:72px;padding:8px 8px 14px}.copy-handle,.comment-handle{min-width:36px;min-height:34px}.resize-handle{height:14px}.right-rail{min-height:520px}.left-rail{min-height:520px}.panel{padding:10px}.form-grid{display:grid;grid-template-columns:1fr}.form-grid label,.form-grid input,.form-grid select,.form-grid textarea{font-size:16px}.form-grid input,.form-grid select{min-height:44px}dialog{width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0;margin:0}.global-map{height:calc(100vh - 170px);min-height:420px}.task-map{height:300px}.toolbar button{min-width:44px;min-height:44px}.bucket-icon{font-size:22px}}

/* V4 : ordre libre, tactile et cartographie d'affaire */
.task.insert-before{border-top:4px solid var(--accent)!important;margin-top:3px}.touch-source{opacity:.35!important}.touch-ghost{position:fixed!important;z-index:9999!important;width:min(220px,65vw)!important;pointer-events:none!important;opacity:.9!important;box-shadow:0 8px 28px rgba(0,0,0,.25);transform:scale(.96);margin:0!important}.copy-armed{outline:3px solid var(--accent)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:16px;margin:0;width:max-content;max-width:90%;background:#20242a;color:white;padding:8px 12px;border-radius:8px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .15s;z-index:3000}.toast.show{opacity:1}
.geo-position-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0}.geo-position-row small{color:var(--muted)}.position-button{min-height:44px;font-weight:700}
.map-editor-dialog{width:min(980px,96vw);max-height:92vh}.project-map-editor{height:520px;border:1px solid var(--line);border-radius:9px;margin-top:10px}.map-toolbar{display:flex;gap:8px;align-items:end;flex-wrap:wrap;margin-top:12px}.map-toolbar label{font-size:12px;font-weight:700}.map-toolbar select{display:block;margin-top:4px;padding:8px;border:1px solid var(--line);border-radius:7px}.map-feature-list{margin-top:10px}.map-feature-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px;border-bottom:1px solid var(--line)}.map-feature-row small{display:block;color:var(--muted)}
.geo-search{position:relative;display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:6px;margin-top:10px;max-width:720px}.geo-search input{border:1px solid var(--line);border-radius:8px;padding:9px;font:inherit}.geo-results{display:none;position:absolute;left:0;right:0;top:43px;z-index:1000;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.18);max-height:240px;overflow:auto}.geo-results.open{display:block}.geo-result{display:block;width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;text-align:left;padding:9px;background:#fff}.geo-result:hover{background:#eef5fb}.editor-geo-search{max-width:none}
.sandbox-shell{background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden}.sandbox-topbar{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:12px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line)}.sandbox-topbar h2{margin:0;font-size:18px}.sandbox-topbar small{color:var(--muted)}.sandbox-save,.sandbox-load{display:flex;gap:6px;align-items:center}.sandbox-save input,.sandbox-save select,.sandbox-load select{padding:8px;border:1px solid var(--line);border-radius:7px;min-width:150px}.sandbox-workspace{display:grid;grid-template-columns:minmax(0,1fr) 260px;height:calc(100vh - 170px);min-height:620px}.sandbox-map-wrap{position:relative;min-width:0;min-height:0}.sandbox-map{height:100%}.sandbox-tools{position:absolute;z-index:800;left:56px;top:10px;display:flex;gap:5px;background:rgba(255,255,255,.94);padding:6px;border:1px solid var(--line);border-radius:9px;box-shadow:0 3px 12px rgba(0,0,0,.15)}.sandbox-tools button{width:42px;height:42px;padding:7px;display:flex;align-items:center;justify-content:center}.sandbox-tools button.active{background:var(--accent);color:#fff}.sandbox-tools svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.sandbox-tools span{width:1px;background:var(--line);margin:3px}.sandbox-geo-search{position:absolute;z-index:800;left:10px;top:66px;width:min(430px,calc(100% - 20px));margin:0}.sandbox-summary{border-left:1px solid var(--line);padding:12px;overflow:auto;background:#fafbfc}.sandbox-summary h3{margin:3px 0 9px}.metric-group{border:1px solid var(--line);border-left:6px solid var(--metric-color,#777);border-radius:8px;background:#fff;padding:8px;margin-bottom:7px}.metric-group b,.metric-group small{display:block}.metric-group small{color:var(--muted);margin-top:3px}.sandbox-object{display:flex;align-items:center;gap:7px;padding:6px 0;border-bottom:1px solid var(--line);font-size:12px}.sandbox-swatch{width:12px;height:12px;border-radius:50%;background:var(--swatch)}.measure-label{background:#fff;border:1px solid #555;border-radius:5px;padding:2px 5px;font-weight:800;white-space:nowrap}.sandbox-arrow-label{background:#fff;border:1px solid #555;border-radius:6px;padding:4px 7px;font-weight:700;white-space:nowrap}.sandbox-point-label{background:#fff;border:1px solid currentColor;border-radius:10px;padding:1px 5px;font-weight:800}.trimble-link-cell{display:flex;gap:5px;align-items:center}.trimble-link-cell input{min-width:190px}.trimble-open{font-size:18px;font-weight:800}
@media(max-width:1050px){.sandbox-topbar{grid-template-columns:1fr}.sandbox-save,.sandbox-load{flex-wrap:wrap}.sandbox-workspace{grid-template-columns:1fr;height:auto}.sandbox-summary{border-left:0;border-top:1px solid var(--line);max-height:280px}.sandbox-map{height:calc(100vh - 330px);min-height:500px}}
.resize-handle{touch-action:none}.task{touch-action:pan-x pan-y}.touch-source{touch-action:none!important}
@media(max-width:700px){
  .planner-scroll{overscroll-behavior:contain}.task{min-height:78px}.task-name{font-size:15px}.comment-handle,.copy-handle{width:44px;height:40px;display:flex;align-items:center;justify-content:center}.resize-handle{left:44px;right:44px;height:18px}.resize-handle:after{height:4px;width:44px;margin-top:7px}.drawer{position:fixed;left:8px;right:8px;top:110px;width:auto;max-height:65vh}.map-editor-dialog{width:100%;max-width:none;height:100%;max-height:none;margin:0;border-radius:0}.project-map-editor{height:55vh;min-height:360px}.map-toolbar button,.map-toolbar select{min-height:44px;font-size:16px}.map-toolbar label{width:100%}.map-toolbar select{width:100%}.entity-card{min-height:64px}.task-map{height:340px}}

/* V5 : iPhone, tableaux, menu d'actions, RH */
.task,.bucket-card{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
body.touch-dragging,body.touch-dragging *{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}
body.touch-dragging{overscroll-behavior:none}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:9px;margin-top:10px}
.admin-table{border-collapse:collapse;width:100%;min-width:820px;background:#fff}.admin-table th,.admin-table td{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;font-size:12px}.admin-table th{background:#f5f7f9;position:sticky;top:0;z-index:2}.admin-table input,.admin-table select{width:100%;min-width:90px;padding:6px;border:1px solid var(--line);border-radius:6px;background:#fff}.admin-table .mini{width:auto;min-width:0}.admin-table tr.inactive{opacity:.55}.admin-table .phase-badge,.admin-table .status-badge{font-weight:800}.admin-table button{padding:6px 8px}
.task-actions-dialog{width:min(330px,92vw)}.action-stack{display:grid;gap:8px}.action-stack button{min-height:48px;text-align:left;font-size:15px}
.rh-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.rh-grid h3{margin-bottom:4px}
.eq-svg{width:18px;height:18px;display:inline-block;vertical-align:middle}.lidar-dot{fill:#d40000}
@media(max-width:700px){.table-wrap{-webkit-overflow-scrolling:touch}.admin-table{min-width:760px}.rh-grid{grid-template-columns:1fr}.task-actions-dialog{width:calc(100vw - 24px)}.task,.task *{-webkit-user-select:none;user-select:none}.planner-scroll{scroll-behavior:auto}}

/* V6 */
.planner-layout{grid-template-columns:minmax(0,1fr) 62px}
.left-rail{display:none!important}
#planningTable{table-layout:fixed;width:auto;min-width:2722px}
#planningTable col.geo-width{width:82px}
#planningTable col.day-width{width:132px}
#planningTable th,#planningTable td{width:132px;min-width:132px;max-width:132px}
#planningTable .geo-col{width:82px!important;min-width:82px!important;max-width:82px!important;vertical-align:middle!important;text-align:center}
.geo-avatar{min-height:0!important;height:auto!important;padding:20px 0;display:flex;align-items:center;justify-content:center;flex-direction:column}
.month-row th,.week-row th,.day-row th{text-align:center}
.month-head{font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:#eef1f4!important}
.week-head{font-weight:800;background:#f5f6f8!important}
.current-week-head{background:#dcecff!important;color:#0d4e85}
.day-row th{height:50px}
.day-name{display:block;font-size:11px;text-transform:lowercase;color:var(--muted);font-weight:700}
.day-num{display:block;font-size:15px;font-weight:800;margin-top:2px}
.today-head .day-name,.today-head .day-num{color:#0d5fa8}
.today-head{box-shadow:inset 0 -4px 0 #1769aa}
.equipment-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px;margin-top:6px}
.equipment-choice{display:flex!important;align-items:center;gap:7px;border:1px solid var(--line);border-radius:7px;padding:7px;font-weight:500!important}
.equipment-choice input{width:auto!important;margin:0!important}
.lidar-icon{display:inline-flex;align-items:center;gap:1px;color:#d00;font-weight:900}.lidar-icon i{display:inline-block;width:10px;height:1px;background:#d00}
.lidar-scanner-icon{width:22px;height:22px;display:inline-block;vertical-align:middle;overflow:visible}.lidar-body{fill:#f7f7f7;stroke:#171717;stroke-width:1.7;stroke-linejoin:round}.lidar-lens-ring{fill:#171717;stroke:#171717;stroke-width:1}.lidar-lens{fill:#fff;stroke:#171717;stroke-width:1.4}.lidar-details{fill:none;stroke:#171717;stroke-width:1.7;stroke-linecap:round}.lidar-beam{fill:none;stroke:#d60000;stroke-width:1.8;stroke-linecap:round}
.drone-survey-icon{width:25px;height:20px;display:inline-block;vertical-align:middle;overflow:visible}.drone-frame,.drone-rotor{fill:none;stroke:#555;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.drone-camera{fill:#fff;stroke:#555;stroke-width:1.8}.drone-beam{fill:none;stroke:#df7629;stroke-width:1.8;stroke-linecap:round}
.vidoc-icon{width:17px;height:23px;display:inline-block;vertical-align:middle;overflow:visible}.vidoc-body{fill:#202124;stroke:#050505;stroke-width:1}.vidoc-shoulder{fill:#202124;stroke:#050505;stroke-width:1.2;stroke-linejoin:round}.vidoc-camera{fill:#050505;stroke:#8c8c8c;stroke-width:.55}.vidoc-antenna{fill:#2a2a2a;stroke:#050505;stroke-width:1}.vidoc-mark,.vidoc-v{fill:none;stroke:#fff;stroke-width:.8;stroke-linecap:round;stroke-linejoin:round}
.total-station-icon{width:20px;height:23px;display:inline-block;vertical-align:middle;overflow:visible}.station-frame{fill:#151515;stroke:#050505;stroke-width:1;stroke-linejoin:round}.station-opening{fill:#fff;stroke:#151515;stroke-width:1}.station-body{fill:#151515;stroke:#050505;stroke-width:1}.station-lens-ring{fill:#fff;stroke:#151515;stroke-width:1.5}.station-lens{fill:#151515}.station-details{fill:none;stroke:#151515;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.rh-actions{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.export-menu{position:relative}.export-popover{display:none;position:absolute;right:0;top:40px;z-index:40;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px;min-width:180px}.export-popover.open{display:grid;gap:4px}.export-popover button{text-align:left}
@media(max-width:900px){.planner-layout{grid-template-columns:minmax(650px,1fr) 56px}.task-map-section{margin-top:12px}}

/* V7 — largeur planning, lignes plus fines, actions fiables */
:root{--geo-w:82px;--day-w:198px;--rail-w:62px;--row-h:78px}
.planner-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) var(--rail-w)!important;
  gap:8px!important;
  width:100%!important;
  min-width:0!important;
}

/* V8 — standby horizontal, suppression directe et demandes actives */
:root{--rail-w:0px}
.planner-layout{display:block!important}
.right-rail,.drawer{display:none!important}
.standby-zone{margin-top:10px;border:2px dashed #aeb8c4;border-radius:11px;background:#fff;padding:10px;min-height:104px}
.standby-head{display:flex;align-items:baseline;gap:10px;margin-bottom:8px}.standby-head small{color:var(--muted)}
.standby-list{display:flex;gap:8px;align-items:stretch;overflow-x:auto;padding-bottom:2px;min-height:58px}
.standby-list>.bucket-card{flex:0 0 245px;margin:0;min-height:58px}.standby-list>small{color:var(--muted);padding:12px}
.delete-handle{position:absolute;left:3px;bottom:1px;z-index:60;width:28px;height:24px;padding:0!important;margin:0!important;border:0!important;border-radius:5px!important;background:transparent!important;color:#1f2328!important;font-size:16px!important;font-weight:400!important;line-height:1;opacity:.72;display:flex;align-items:center;justify-content:center;touch-action:manipulation}.delete-handle:hover,.delete-handle:focus-visible{background:rgba(255,255,255,.48)!important;opacity:1}
.request-table{min-width:1580px}
@media(max-width:700px){.standby-zone{padding:8px}.standby-head{display:block}.standby-head small{display:block;margin-top:3px}.standby-list>.bucket-card{flex-basis:220px}.delete-handle{width:40px;height:36px;font-size:17px!important}}
.planner-scroll{min-width:0!important;width:100%!important;overflow:auto!important;scrollbar-width:none;cursor:grab}.planner-scroll::-webkit-scrollbar{display:none;width:0;height:0}.planner-scroll.pan-ready,.planner-scroll.panning{cursor:grabbing}.planner-scroll.panning{-webkit-user-select:none;user-select:none}
#planningTable{
  table-layout:fixed!important;
  width:4042px!important;
  min-width:4042px!important;
}
#planningTable col.geo-width{width:var(--geo-w)!important}
#planningTable col.day-width{width:var(--day-w)!important}
#planningTable th:not(.month-head):not(.week-head):not(.geo-col),
#planningTable td{width:var(--day-w)!important;min-width:var(--day-w)!important;max-width:var(--day-w)!important}
#planningTable .geo-col{width:var(--geo-w)!important;min-width:var(--geo-w)!important;max-width:var(--geo-w)!important;overflow:hidden!important}
.geo-avatar{width:var(--geo-w)!important;padding:10px 0!important;min-height:68px!important}
.cell{min-height:68px!important}
#planningTable tbody tr{height:var(--row-h)!important;min-height:var(--row-h)!important}
#planningTable tbody td{height:var(--row-h)!important;min-height:var(--row-h)!important}
#planningTable tbody .cell{min-height:calc(var(--row-h) - 10px)!important;height:100%}
.absence-cell{position:relative;background:repeating-linear-gradient(135deg,#e2e4e7 0,#e2e4e7 8px,#d7dade 8px,#d7dade 16px)!important;cursor:not-allowed}.absence-badge{pointer-events:none;min-height:48px;border:1px solid #aeb3ba;border-radius:7px;background:rgba(245,246,247,.88);color:#51565d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-align:center}.absence-badge b{font-size:13px}.absence-badge span{font-size:9px;font-weight:700;letter-spacing:.04em}
.task{min-height:48px;padding:5px 8px 9px;margin-bottom:4px}
.task-name{font-size:14px}
.comment-handle{
  position:absolute;left:3px;bottom:1px;z-index:60!important;
  width:34px;height:28px;min-width:34px!important;min-height:28px!important;
  padding:0!important;margin:0!important;border:0!important;border-radius:6px!important;
  background:rgba(255,255,255,.45)!important;color:inherit!important;font-size:20px!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  pointer-events:auto!important;touch-action:manipulation!important;
  -webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;
}
.request-table{min-width:1500px}
.request-table .new-row{background:#eef6ff}
.request-table .new-row td{border-bottom:3px solid var(--accent)}
.anydesk-cell{display:flex;gap:5px;align-items:center}.anydesk-cell input{min-width:120px}.anydesk-btn{white-space:nowrap}
.category-picker{display:flex;align-items:center;gap:7px;min-width:155px}.category-picker select{flex:1}.category-icon-preview{flex:0 0 32px;width:32px;height:32px;border:1px solid var(--line);border-radius:7px;background:#fff;display:flex;align-items:center;justify-content:center}.category-icon-preview svg{max-width:26px;max-height:27px}.form-category-picker{margin-top:4px}.form-category-picker select{margin-top:0!important}
.condition-select{font-weight:800!important;border-color:rgba(0,0,0,.12)!important}.condition-neuf{background:#cfe8ff!important;color:#174d7d!important}.condition-bon{background:#cfeeda!important;color:#1d6637!important}.condition-use{background:#fff0a8!important;color:#6c5700!important}.condition-remplacer{background:#ffd39a!important;color:#704000!important}.condition-hs{background:#e85b5b!important;color:#fff!important}.condition-select option{background:#fff;color:#20242a;font-weight:600}.equipment-state-neuf td{background:#edf7ff}.equipment-state-bon td{background:#eef9f1}.equipment-state-use td{background:#fffbea}.equipment-state-remplacer td{background:#fff4e5}.equipment-state-hs td{background:#ffeded}
@media(max-width:1200px){
  :root{--day-w:176px}
  #planningTable{width:3602px!important;min-width:3602px!important}
}
@media(max-width:700px){
  :root{--geo-w:66px;--day-w:160px;--rail-w:50px;--row-h:74px}
  #planningTable{width:3266px!important;min-width:3266px!important}
  .geo-avatar{min-height:64px!important;padding:7px 0!important}
  .cell{min-height:64px!important}
  .task{min-height:54px!important}
  .comment-handle{width:44px!important;height:40px!important;min-width:44px!important;min-height:40px!important}
}

/* V8 final overrides */
:root{--rail-w:0px}
.planner-layout{display:block!important;grid-template-columns:none!important;gap:0!important}
.right-rail,.drawer{display:none!important}
.request-table{min-width:1580px!important}
@media(max-width:700px){:root{--rail-w:0px}.planner-layout{display:block!important}.delete-handle{width:40px!important;height:36px!important;min-width:40px!important;min-height:36px!important;font-size:17px!important}}
.sandbox-arrow-head{font-size:19px;font-weight:900;display:block;transform-origin:center;color:var(--arrow-color,#333)}
.sandbox-arrow-label:before{content:"← ";font-size:16px;font-weight:900}
.hydraulic-box{margin-top:14px;padding:10px;border:1px solid #8fb5d2;border-radius:9px;background:#eef7fd}.hydraulic-box label{display:grid;grid-template-columns:1fr 72px auto;gap:5px;align-items:center;font-size:11px;margin:6px 0}.hydraulic-box input,.hydraulic-box select{width:72px;padding:5px;border:1px solid var(--line);border-radius:5px}.hydraulic-box b,.hydraulic-box strong,.hydraulic-box small{display:block;margin-top:7px}.hydraulic-box strong{font-size:16px;color:#0d5f98}.special-profiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px}.special-profiles>b{grid-column:1/-1}.permission-table{min-width:1500px}.permission-table td:not(:first-child),.permission-table th:not(:first-child){text-align:center}
.user-special-profiles{display:grid;gap:4px;min-width:135px}.user-special-check{display:flex;align-items:center;gap:5px;white-space:nowrap;font-weight:600}.user-special-check input{width:auto!important;min-width:0!important;margin:0}

/* V13 · Portail vidéos, tutoriels et FAQ */
.media-view{background:#101216;color:#fff;border-radius:14px;padding:0 0 28px;overflow:hidden}.media-hero{min-height:230px;padding:46px clamp(22px,5vw,70px);display:flex;align-items:flex-end;justify-content:space-between;gap:20px;background:linear-gradient(90deg,rgba(5,8,12,.96),rgba(5,8,12,.38)),radial-gradient(circle at 80% 20%,#27649b,#101216 58%)}.media-hero span{font-size:11px;letter-spacing:.2em;color:#75b9ef}.media-hero h2{font-size:44px;margin:6px 0}.media-hero p{max-width:620px;color:#d4d9df}.media-filter,.knowledge-filter{display:flex;gap:10px;padding:18px 28px}.media-filter input,.knowledge-filter input{flex:1}.video-shelf{padding:0 28px;margin-top:20px}.video-shelf h3{margin:0 0 10px}.video-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:15px}.video-card{min-width:0;padding-bottom:9px;cursor:pointer}.video-poster{height:126px;background:#282d34;border-radius:8px;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;font-size:45px;box-shadow:0 6px 18px #0008}.video-poster img{width:100%;height:100%;object-fit:cover}.video-poster i{position:absolute;width:42px;height:42px;border-radius:50%;background:#000b;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:17px;opacity:0;transition:.15s}.video-card:hover .video-poster{transform:scale(1.025)}.video-card:hover .video-poster i{opacity:1}.video-card h4{margin:9px 0 2px}.video-card small{color:#9fa8b2}.card-actions{display:flex;gap:6px;margin-top:8px}.card-actions button{padding:5px 8px;font-size:11px}.media-player-dialog{width:min(1000px,94vw)}#mediaPlayer{aspect-ratio:16/9;background:#000}#mediaPlayer video,#mediaPlayer iframe{width:100%;height:100%;border:0}.tutorial-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}.tutorial-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.tutorial-cover{height:160px;background:#e8eef4;display:flex;align-items:center;justify-content:center;font-size:52px}.tutorial-cover img{width:100%;height:100%;object-fit:cover}.tutorial-card>div:last-child{padding:15px}.tutorial-card h3{margin:5px 0}.article-dialog{width:min(900px,94vw)}#tutorialArticle{font-size:16px;line-height:1.6}.article-summary{font-size:18px;color:#58616b}.tutorial-text{margin:18px 0}#tutorialArticle figure{margin:20px 0}#tutorialArticle figure img{max-width:100%;border-radius:9px}#tutorialArticle figcaption{text-align:center;color:#67717c}.tutorial-video{aspect-ratio:16/9}.tutorial-video video,.tutorial-video iframe{width:100%;height:100%;border:0}.tutorial-builder{border:1px solid var(--line);border-radius:9px;padding:10px}.tutorial-block-row{display:grid;grid-template-columns:110px 1fr 1fr 36px;gap:7px;margin-top:8px;align-items:start}.tutorial-block-row textarea{min-height:70px}.tutorial-block-row button{padding:7px}.faq-layout{display:grid;gap:20px}.faq-theme{border-left:4px solid #4387bd;padding-left:15px}.faq-theme.private-rules{border-color:#bb8128;background:#fffaf0;padding:15px;border-radius:8px}.faq-theme details{border-bottom:1px solid var(--line);padding:12px 0}.faq-theme summary{cursor:pointer;font-weight:750}.faq-answer{padding:12px 0;line-height:1.55}.empty-state{padding:30px;text-align:center;color:#7b858f}
@media(max-width:700px){.media-hero{min-height:180px;padding:25px;align-items:flex-start;flex-direction:column}.media-hero h2{font-size:34px}.media-filter,.knowledge-filter{padding:14px;flex-direction:column}.video-shelf{padding:0 14px}.video-row{display:flex;overflow-x:auto}.video-card{min-width:230px}.tutorial-grid{grid-template-columns:1fr}.tutorial-block-row{grid-template-columns:1fr 36px}.tutorial-block-row textarea,.tutorial-block-row input{grid-column:1/-1}}

/* V14 · statuts, historiques, déblais/remblais et stocks */
.profile-badge{display:block;width:max-content;margin-bottom:5px;padding:2px 7px;border-radius:999px;background:#dfe3e7;color:#4f5962;font-size:9px;font-weight:900;letter-spacing:.08em}.profile-special td{background:#f0f7ff!important}.profile-special .profile-badge{background:#bfe0ff;color:#185b8d}.profile-god td{background:#fff8dc!important}.profile-god .profile-badge{background:#d6a51f;color:#fff}.profile-delete{display:block;margin-top:5px!important;color:#782525!important;background:#fff!important;border-color:#d9a3a3!important}.history-dialog{width:min(1000px,95vw)}.history-toolbar{display:flex;gap:9px;margin-bottom:15px}.history-timeline{position:relative;padding-left:26px}.history-timeline:before{content:"";position:absolute;left:9px;top:0;bottom:0;width:2px;background:#ccd4dc}.history-event{position:relative;display:grid;grid-template-columns:155px 1fr;gap:18px;padding:0 0 20px}.history-event:before{content:"";position:absolute;left:-22px;top:6px;width:10px;height:10px;border-radius:50%;background:#4185b8;border:3px solid #fff;box-shadow:0 0 0 2px #4185b8}.history-event time{font-size:12px;color:#68727c}.history-event small,.history-event p span{display:block}.history-event p{margin:7px 0;color:#4e5963}.kind-assignment:before{background:#3c9a61;box-shadow:0 0 0 2px #3c9a61}.kind-comment:before{background:#b7862f;box-shadow:0 0 0 2px #b7862f}.volume-delta{white-space:nowrap;font-weight:800}.positive{color:#21834a!important}.negative{color:#b23a3a!important}
.map-ledger-view{height:calc(100vh - 115px);min-height:630px}.map-ledger-shell{display:grid;grid-template-columns:minmax(0,2fr) minmax(330px,1fr);gap:10px;height:100%}.map-ledger-map-wrap,.map-ledger-side{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.map-ledger-map-wrap{display:grid;grid-template-rows:auto 1fr}.map-ledger-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line)}.map-ledger-toolbar h2{margin:0}.map-ledger-toolbar small{display:block}.map-ledger-map{height:100%;min-height:520px}.map-ledger-side{overflow:auto;padding:12px}.earthwork-columns{display:grid;grid-template-columns:1fr 1fr;gap:10px}.earthwork-columns h3{margin:10px 0}.earthwork-delta{display:grid;gap:3px;padding:11px;border-radius:9px;background:#f0f3f6}.earthwork-delta b{font-size:23px}.volume-label,.stock-volume-label{position:relative;width:100%;height:56px;overflow:hidden;border:1px solid #cbd2d9;border-radius:7px;background:#fff;color:#20252a;box-shadow:0 3px 8px #0002;margin-bottom:8px}.volume-label>i,.stock-volume-label>i{position:absolute;inset:0 auto 0 0;opacity:.34}.volume-label>span,.stock-volume-label>span{position:absolute;inset:0 31px 0 8px;display:flex;flex-direction:column;justify-content:center;z-index:2}.volume-label b,.stock-volume-label b{font-size:16px}.volume-label small,.stock-volume-label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.volume-label>button{position:absolute;right:4px;top:4px;z-index:5;width:24px;height:24px;padding:0;border:0;background:rgba(255,255,255,.75);color:#222;font-weight:400}.volume-map-marker,.stock-map-marker{background:transparent!important;border:0!important}.map-volume-stack{width:250px}.map-volume-stack .volume-label{height:36px;margin:2px 0}.map-volume-stack .volume-label b{font-size:13px}.map-volume-stack .volume-label small{font-size:9px}.stock-filter{display:grid;grid-template-columns:1fr 130px;gap:8px;margin-bottom:10px}.stock-card{margin-bottom:10px}.stock-actions{display:flex;justify-content:flex-end;gap:5px;margin-top:-5px}.stock-actions button{font-size:10px;padding:4px 6px}.stock-volume-label{height:64px}.stock-volume-label>span{right:6px}.stock-volume-label em{font-size:10px;font-style:normal;font-weight:800}.stock-spark{position:absolute;left:43%;right:5px;bottom:4px;width:52%;height:29px;opacity:.75;z-index:1}.stock-summary{display:grid;grid-template-columns:1fr auto;align-items:center;padding:12px;border:1px solid var(--line);border-radius:8px}.stock-summary svg{grid-column:1/-1;width:100%;height:45px;position:static}.stock-reading-list>div{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:7px 0}.stock-reading-list span,.stock-reading-list small{display:block}.stock-reading-list button{padding:3px 8px}.stock-type-list>div{display:grid;grid-template-columns:1fr 55px 90px auto auto;gap:6px;margin-bottom:6px;align-items:center}
@media(max-width:900px){.map-ledger-view{height:auto}.map-ledger-shell{grid-template-columns:1fr}.map-ledger-map{height:58vh}.earthwork-columns{grid-template-columns:1fr 1fr}}@media(max-width:600px){.earthwork-columns{grid-template-columns:1fr}.history-event{grid-template-columns:1fr;gap:3px}.stock-type-list>div{grid-template-columns:1fr 50px}.stock-type-list button{grid-column:auto}.map-ledger-toolbar{align-items:flex-start;flex-direction:column}}
.stock-volume-label>span{right:28px}.stock-label-delete{position:absolute;right:3px;top:3px;z-index:5;width:23px;height:23px;padding:0!important;border:0!important;background:#fff9!important;color:#222!important}
.login-links{display:grid;gap:7px;margin-top:12px}.login-links button{background:#fff}.login-card section[hidden]{display:none}.pending-account{display:block;margin-bottom:5px;padding:3px 6px;border-radius:5px;background:#ffe2a8;color:#6d4900;font-size:9px;font-weight:900}
[hidden]{display:none!important}
