:root{--nav:#082542;--nav2:#0b3b63;--blue:#0b66d8;--green:#16a34a;--orange:#f97316;--gray:#64748b;--red:#dc2626;--text:#0f172a;--muted:#64748b;--line:#e5e7eb;--bg:#f7f9fc;--card:#fff}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:linear-gradient(160deg,var(--nav),var(--nav2));color:#fff;padding:18px 14px;z-index:5;overflow:auto}.brand{font-size:20px;font-weight:800;margin-bottom:24px}.brand span{margin-left:8px}.sidebar a{display:block;color:#eaf2ff;text-decoration:none;padding:11px 14px;border-radius:8px;margin:3px 0}.sidebar a:hover,.sidebar a.active{background:#0b66d8}.sidebar p{font-size:11px;text-transform:uppercase;color:#b6c9db;margin:24px 10px 8px}.main{margin-left:250px;min-height:100vh}.main-full{min-height:100vh}.topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:4}.hamburger{border:0;background:transparent;font-size:20px;margin-right:16px}.user{display:flex;gap:12px;align-items:center}.content{padding:24px}.card,.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 5px 18px rgba(15,23,42,.06)}.cards{display:grid;grid-template-columns:repeat(5,minmax(160px,1fr));gap:16px;margin-bottom:20px}.stat{padding:18px;display:grid;grid-template-columns:46px 1fr;gap:4px 14px;align-items:center}.stat span{font-size:28px;background:#eaf3ff;border-radius:10px;padding:10px;text-align:center}.stat strong{font-size:26px}.stat small{color:var(--muted)}.stat a{grid-column:1/3;color:var(--blue);font-weight:600;text-decoration:none;margin-top:8px}.grid{display:grid;gap:16px;margin-bottom:16px}.grid.two{grid-template-columns:1fr 1.45fr}.card{padding:18px;margin-bottom:16px}h1,h2{margin:0 0 14px}h1{font-size:22px}h2{font-size:16px}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:12px;color:#334155;background:#f8fafc;white-space:nowrap}td{font-size:13px}a{color:var(--blue)}.badge{display:inline-block;padding:5px 9px;border-radius:8px;font-size:12px;font-weight:700;white-space:nowrap}.green{background:#dcfce7;color:#15803d}.blue{background:#dbeafe;color:#1d4ed8}.orange{background:#ffedd5;color:#c2410c}.gray{background:#e5e7eb;color:#475569}.red{background:#fee2e2;color:#991b1b}.btn{border:1px solid var(--line);background:#fff;color:#0f172a;text-decoration:none;padding:10px 14px;border-radius:8px;display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:700;white-space:nowrap}.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn.success{background:var(--green);color:#fff;border-color:var(--green)}.btn.danger{background:#fff;color:#b91c1c;border-color:#fecaca}.btn.small{padding:6px 8px;font-size:12px}.right{float:right}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.actions-row,.actions-cell{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.form-grid label{font-weight:700;display:flex;flex-direction:column;gap:6px}.form-grid input,.form-grid select,.form-grid textarea,.filters input,.filters select,.task-form input,.task-form select{border:1px solid #cbd5e1;border-radius:8px;padding:10px;background:#fff;width:100%}textarea{min-height:90px}.span2{grid-column:span 2}.actions{display:flex;justify-content:flex-end;gap:10px}.filters{display:flex;gap:10px;margin-bottom:14px}.details{display:grid;grid-template-columns:170px 1fr;gap:10px}.details dt{color:var(--muted);font-weight:700}.details dd{margin:0}.commentbox{border:1px solid var(--line);border-radius:8px;background:#f8fafc;padding:16px;min-height:100px}.timeline{border-left:3px solid #cbd5e1;margin-left:10px}.timeline li{margin-bottom:16px;padding-left:8px}.alert{padding:12px 14px;border-radius:10px;margin-bottom:14px}.alert.success{background:#dcfce7;color:#166534}.alert.error{background:#fee2e2;color:#991b1b}.inline{display:inline}.linkbtn{border:0;background:transparent;color:var(--blue);cursor:pointer}.task-form{display:grid;grid-template-columns:120px 1fr auto;gap:6px}.donut{width:180px;height:180px;border-radius:50%;position:relative;margin:16px auto}.donut:after{content:"";position:absolute;inset:44px;background:#fff;border-radius:50%}.legend{display:flex;flex-direction:column;gap:6px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px}.dot.orange{background:var(--orange)}.dot.bleu{background:var(--blue)}.dot.vert{background:var(--green)}.dot.gris{background:#94a3b8}.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(150deg,#082542,#0b66d8)}.login{width:min(420px,92vw);padding:28px}.login label{display:block;margin:12px 0;font-weight:700}.login input{width:100%;padding:12px;border:1px solid #cbd5e1;border-radius:8px}.full{width:100%;justify-content:center}.check{justify-content:center;flex-direction:row!important;align-items:center;gap:8px}.check input{width:auto!important}.hint{font-size:12px;color:var(--muted);align-self:center}.avatar{background:#e2e8f0;border-radius:50%;padding:6px}@media(max-width:1200px){.cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:1050px){.cards,.grid.two,.form-grid{grid-template-columns:1fr}.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.span2{grid-column:auto}.content{padding:14px}table{font-size:12px}.toolbar{align-items:flex-start;flex-direction:column}.filters{flex-direction:column}.task-form{grid-template-columns:1fr}}@media print{.sidebar,.topbar,.toolbar .btn,form{display:none!important}.main{margin:0}.content{padding:0}.card{box-shadow:none;border:1px solid #ddd}}

/* Logo KARUKER'O */
.sidebar-logo{background:#fff;border-radius:12px;padding:10px 12px;margin:0 0 14px;box-shadow:0 8px 22px rgba(0,0,0,.14);text-align:center}
.sidebar-logo img{display:block;max-width:100%;height:auto;margin:0 auto}
.login-logo{text-align:center;margin-bottom:18px}
.login-logo img{display:block;max-width:260px;width:100%;height:auto;margin:0 auto 10px}
.login h1{text-align:center;margin-bottom:6px}
.login p{text-align:center;color:var(--muted);margin-top:0;margin-bottom:18px}

/* Améliorations intervention : détails équipement + historique */
.card-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.equipment-card .details{grid-template-columns:155px 1fr}.timeline-meta{font-size:12px;color:var(--muted);margin:4px 0 6px}.muted{color:var(--muted)}.status-timeline{padding-left:14px}.status-timeline li{padding-bottom:8px}

/* Calendrier permanent de la programmation */
.programmation-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px;align-items:start}.programmation-calendar{position:sticky;top:82px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:14px;box-shadow:0 5px 18px rgba(15,23,42,.05)}.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.calendar-nav{width:32px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;font-size:20px;line-height:1}.calendar-nav:hover{background:#f8fafc}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.calendar-weekdays span{font-size:11px;font-weight:800;color:var(--muted);text-align:center;padding:5px 0}.calendar-day,.calendar-empty{height:34px;border-radius:9px}.calendar-day{border:1px solid transparent;background:#fff;cursor:pointer;font-weight:700;color:#334155}.calendar-day:hover{border-color:#93c5fd;background:#eff6ff}.calendar-day.today{border-color:#cbd5e1}.calendar-day.selected{background:var(--blue);color:#fff;border-color:var(--blue)}.calendar-help{font-size:12px;color:var(--muted);margin:12px 0 0;line-height:1.35}@media(max-width:1050px){.programmation-layout{grid-template-columns:1fr}.programmation-calendar{position:static;order:-1}}
.tasks-batch-form select,.tasks-batch-form input{border:1px solid #cbd5e1;border-radius:8px;padding:9px;background:#fff;width:100%}.tasks-batch-form td:nth-child(7){min-width:140px}.tasks-batch-form td:nth-child(8){min-width:220px}.card-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.muted{color:var(--muted)}.small-text{font-size:12px;margin-top:-6px;margin-bottom:0}@media(max-width:1050px){.card-title-row{flex-direction:column}.tasks-batch-form td:nth-child(7),.tasks-batch-form td:nth-child(8){min-width:180px}}
.protected-label{display:inline-block;margin-left:6px;font-size:11px;color:#92400e;background:#fef3c7;border-radius:999px;padding:3px 7px;font-weight:700}.actions-cell .small-text{max-width:220px;display:inline-block}

/* Interface dédiée agents */
.agent-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:16px}
.agent-intervention-card{display:flex;flex-direction:column;gap:12px}
.agent-intervention-card h2{font-size:17px;margin-bottom:4px}
.agent-card-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.agent-intervention-card .details{grid-template-columns:125px 1fr;gap:7px 10px}
.notice-card{border-left:4px solid var(--blue);background:#f8fbff}
.role-help{font-size:12px;color:var(--muted);line-height:1.45;margin:6px 0 0}

/* Icônes vectorielles inline */
:root{--violet:#7c3aed}
.icon{width:18px;height:18px;display:inline-block;vertical-align:-0.2em;flex:0 0 auto;stroke-width:2}
.sidebar nav a{display:flex;align-items:center;gap:10px}
.sidebar nav a .icon{width:18px;height:18px;opacity:.95}
.brand{display:flex;align-items:center;gap:8px}
.brand .brand-icon{width:22px;height:22px;color:#dbeafe}
.hamburger{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;color:#334155}
.hamburger:hover{background:#f1f5f9}
.hamburger .icon{width:22px;height:22px}
.topbar-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--line);border-radius:999px;color:#334155;background:#fff}
.topbar-icon .icon{width:18px;height:18px}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:#e2e8f0;border-radius:999px;color:#334155;padding:0}
.avatar .icon{width:18px;height:18px}
.stat .stat-icon{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;background:#eaf3ff;border-radius:10px;padding:10px;text-align:center;color:var(--blue);font-size:inherit}
.stat .stat-icon .icon{width:26px;height:26px}
.btn .icon{width:16px;height:16px;margin-right:2px}
.violet{background:#ede9fe;color:#6d28d9}.dot.violet{background:var(--violet)}
@media(min-width:1201px){.cards{grid-template-columns:repeat(6,minmax(150px,1fr))}}

/* Suppression programmation + sélection multiple interventions */
.check-col{width:42px;text-align:center}.check-col input{width:16px;height:16px;cursor:pointer}.danger-zone{border-color:#fecaca}.delete-choice-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px;margin:16px 0}.delete-choice-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:#f8fafc;display:flex;flex-direction:column;gap:4px}.delete-choice-card strong{font-size:26px}.delete-choice-card span{font-size:12px;color:var(--muted);line-height:1.35}.delete-choice-card.warning{background:#fff7ed;border-color:#fed7aa}.delete-choice-card.protected{background:#eef2ff;border-color:#c7d2fe}.form-help-block{margin:14px 0 10px}.form-help-block h3{font-size:15px;margin:0 0 4px}.form-help-block p{margin:0;color:var(--muted);line-height:1.45}.soft-separator{border:0;border-top:1px solid var(--line);margin:18px 0}.strong-danger{background:#b91c1c!important;color:#fff!important;border-color:#b91c1c!important}@media(max-width:1050px){.delete-choice-grid{grid-template-columns:1fr 1fr}}@media(max-width:650px){.delete-choice-grid{grid-template-columns:1fr}}

/* Affectation multi-agents */
select[data-agent-multi]{min-height:142px;line-height:1.35}.field-help{display:block;font-size:12px;font-weight:500;color:var(--muted);line-height:1.35;margin-top:2px}

/* Ajustements ergonomie sidebar/topbar */
.sidebar{overflow:hidden;padding:10px 12px}
.sidebar-logo{padding:7px 9px;margin-bottom:8px;border-radius:10px}
.sidebar-logo img{max-height:42px;width:auto}
.brand{font-size:17px;margin-bottom:10px}
.sidebar a{padding:7px 10px;margin:1px 0;font-size:13px;line-height:1.2}
.sidebar p{margin:10px 8px 5px;font-size:10px;letter-spacing:.04em}
.sidebar nav a{gap:8px}
.sidebar nav a .icon{width:16px;height:16px}
.topbar-title{display:flex;align-items:center;gap:10px;min-width:0}
.topbar-title strong{display:inline-flex;align-items:center;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}
.topbar-section-icon{width:20px;height:20px;color:var(--blue);flex:0 0 auto}

/* Sélection agents façon liste déroulante, avec cases à cocher */
.form-field{font-weight:700;display:flex;flex-direction:column;gap:6px}.field-title{display:block}.checkbox-select{position:relative;width:100%;font-weight:500}.checkbox-select-button{width:100%;min-height:40px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;padding:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;color:#0f172a;font:inherit}.checkbox-select.open .checkbox-select-button{border-color:#93c5fd;box-shadow:0 0 0 3px rgba(147,197,253,.25)}.checkbox-select-caret{color:var(--muted);font-size:12px}.checkbox-select-panel{display:none;position:absolute;z-index:30;top:calc(100% + 6px);left:0;right:0;max-height:240px;overflow:auto;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 14px 34px rgba(15,23,42,.16);padding:6px}.checkbox-select.open .checkbox-select-panel{display:block}.checkbox-option{display:flex!important;flex-direction:row!important;align-items:center!important;gap:9px;padding:8px 9px;border-radius:8px;font-weight:600;color:#0f172a}.checkbox-option:hover{background:#f8fafc}.checkbox-option input{width:16px!important;height:16px!important;flex:0 0 auto}.checkbox-option-all{border-bottom:1px solid var(--line);margin-bottom:4px;color:var(--blue)}

/* Notifications */
.notification-menu{position:relative}.notification-toggle{position:relative;border:1px solid var(--line);font:inherit}.notification-badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:999px;background:var(--red);color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 5px;border:2px solid #fff}.notification-panel{display:none;position:absolute;right:0;top:44px;width:min(380px,calc(100vw - 28px));background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 44px rgba(15,23,42,.18);z-index:50;overflow:hidden}.notification-menu.open .notification-panel{display:block}.notification-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px;border-bottom:1px solid var(--line)}.notification-list{max-height:360px;overflow:auto}.notification-item{display:grid;grid-template-columns:10px 1fr;gap:10px;padding:12px 14px;text-decoration:none;color:var(--text);border-bottom:1px solid #f1f5f9}.notification-item:hover{background:#f8fafc}.notification-item.unread{background:#f8fbff}.notification-item strong{display:block;font-size:13px;margin-bottom:3px}.notification-item small{display:block;color:#475569;line-height:1.35}.notification-item em{display:block;margin-top:5px;color:var(--muted);font-style:normal;font-size:11px}.notification-dot{width:9px;height:9px;border-radius:999px;background:var(--blue);margin-top:4px}.notification-dot.success{background:var(--green)}.notification-dot.warning{background:var(--orange)}.notification-dot.danger{background:var(--red)}.notification-empty{padding:18px 14px;margin:0;color:var(--muted);text-align:center}.notification-read-form{padding:10px 14px;background:#f8fafc;text-align:right}.notification-read-form .linkbtn{font-weight:700}

/* Correctif demandé : plus d'icône menu dans l'en-tête + notifications en popup */
.hamburger{display:none!important}
.topbar-title{display:flex;align-items:center;gap:10px;min-width:0}
.topbar-section-icon{width:21px;height:21px;color:var(--blue);flex:0 0 auto}
.topbar-title strong{display:inline-flex;align-items:center;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}
.notification-toggle{cursor:pointer}
.notification-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.36);z-index:70}
.notification-panel{display:none;position:fixed;right:auto;top:50%;left:50%;transform:translate(-50%,-50%);width:min(520px,calc(100vw - 32px));max-height:min(78vh,650px);background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 70px rgba(15,23,42,.28);z-index:80;overflow:hidden}
.notification-menu.open .notification-backdrop{display:block}
.notification-menu.open .notification-panel{display:flex;flex-direction:column}
.notification-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;border-bottom:1px solid var(--line)}
.notification-head-actions{display:flex;align-items:center;gap:8px}
.notification-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#334155;cursor:pointer}
.notification-close:hover{background:#f8fafc}
.notification-close .icon{width:17px;height:17px}
.notification-list{max-height:calc(78vh - 130px);overflow:auto}
.notification-read-form{padding:10px 14px;background:#f8fafc;text-align:right;border-top:1px solid var(--line)}
@media(max-width:650px){.notification-panel{width:calc(100vw - 20px);max-height:82vh}.notification-list{max-height:calc(82vh - 130px)}}


/* Sélecteur moderne d'agents affectés */
.agent-picker{position:relative;width:100%;font-weight:500}
.agent-picker-control{width:100%;min-height:48px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;color:#0f172a;font:inherit;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
.agent-picker-control:hover{border-color:#94a3b8;background:#fbfdff}
.agent-picker.open .agent-picker-control{border-color:#60a5fa;box-shadow:0 0 0 3px rgba(96,165,250,.22)}
.agent-picker-summary{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}
.agent-picker-main{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15}
.agent-picker-chips{display:flex;gap:5px;flex-wrap:wrap;min-height:0}
.agent-picker-chip{display:inline-flex;align-items:center;max-width:165px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:11px;font-weight:800;padding:3px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-picker-right{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}
.agent-picker-count{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:24px;border-radius:999px;background:#f1f5f9;color:#64748b;font-size:12px;font-weight:900;padding:0 8px}
.agent-picker-count.is-active{background:#dbeafe;color:#1d4ed8}
.agent-picker-caret{color:#64748b;font-size:13px;line-height:1;transition:transform .18s ease}.agent-picker.open .agent-picker-caret{transform:rotate(180deg)}
.agent-picker-panel{display:none;position:absolute;z-index:45;top:calc(100% + 8px);left:0;right:0;background:#fff;border:1px solid #cbd5e1;border-radius:14px;box-shadow:0 22px 55px rgba(15,23,42,.20);padding:10px;overflow:hidden}
.agent-picker.open .agent-picker-panel{display:block}
.agent-picker-search{position:sticky;top:0;background:#fff;padding-bottom:8px;z-index:1}
.agent-picker-search input{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;background:#f8fafc;font:inherit;font-weight:600;outline:none}
.agent-picker-search input:focus{border-color:#60a5fa;background:#fff;box-shadow:0 0 0 3px rgba(96,165,250,.18)}
.agent-picker-list{max-height:255px;overflow:auto;padding-right:2px;display:flex;flex-direction:column;gap:6px}
.agent-picker-option{display:grid!important;grid-template-columns:18px 34px 1fr!important;align-items:center!important;gap:10px;padding:9px 10px;border:1px solid transparent;border-radius:12px;color:#0f172a;background:#fff;font-weight:600;cursor:pointer;transition:background .14s ease,border-color .14s ease}
.agent-picker-option:hover{background:#f8fafc;border-color:#e2e8f0}
.agent-picker-option.is-filtered-out{display:none!important}

.agent-picker-option input{width:17px!important;height:17px!important;margin:0!important;accent-color:var(--blue);cursor:pointer}
.agent-picker-avatar{width:34px;height:34px;border-radius:999px;background:#eaf3ff;color:#0b66d8;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;letter-spacing:.02em;flex:0 0 auto}
.agent-picker-avatar-all{background:#dcfce7;color:#15803d}
.agent-picker-text{display:flex;flex-direction:column;gap:2px;min-width:0}.agent-picker-text strong{font-size:13px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-picker-text small{font-size:11px;color:#64748b;font-weight:700;line-height:1.2}
.agent-picker-option-all{border-color:#bfdbfe;background:#eff6ff;margin-bottom:9px}.agent-picker-option-all:hover{background:#dbeafe;border-color:#93c5fd}
.agent-picker-empty{padding:14px;text-align:center;color:#64748b;font-weight:700;background:#f8fafc;border-radius:10px}
@media(max-width:650px){.agent-picker-panel{position:fixed;left:12px;right:12px;top:95px;max-height:calc(100vh - 115px);overflow:auto}.agent-picker-list{max-height:45vh}.agent-picker-option{grid-template-columns:18px 32px 1fr!important}.agent-picker-avatar{width:32px;height:32px}.agent-picker-chip{max-width:115px}}

/* Listes déroulantes recherchables : contrat, site, équipement, gamme, type de gamme */
.native-select-hidden{position:absolute!important;width:1px!important;height:1px!important;margin:0!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important;white-space:nowrap!important}
.searchable-select{position:relative;width:100%;font-weight:500}.searchable-select-control{width:100%;min-height:40px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;padding:10px 11px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;color:#0f172a;font:inherit;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.searchable-select-control:hover{border-color:#94a3b8;background:#fbfdff}.searchable-select.open .searchable-select-control{border-color:#60a5fa;box-shadow:0 0 0 3px rgba(96,165,250,.20)}.searchable-select.is-empty .searchable-select-label{color:#64748b}.searchable-select.is-disabled{opacity:.65}.searchable-select-label{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.searchable-select-caret{color:#64748b;font-size:13px;line-height:1;transition:transform .18s ease}.searchable-select.open .searchable-select-caret{transform:rotate(180deg)}.searchable-select-panel{display:none;position:absolute;z-index:44;top:calc(100% + 7px);left:0;right:0;background:#fff;border:1px solid #cbd5e1;border-radius:12px;box-shadow:0 18px 45px rgba(15,23,42,.18);padding:9px;overflow:hidden}.searchable-select.open .searchable-select-panel{display:block}.searchable-select-search{position:sticky;top:0;background:#fff;padding-bottom:8px;z-index:1}.searchable-select-search input{width:100%;border:1px solid #cbd5e1;border-radius:9px;padding:9px 11px;background:#f8fafc;font:inherit;font-weight:600;outline:none}.searchable-select-search input:focus{border-color:#60a5fa;background:#fff;box-shadow:0 0 0 3px rgba(96,165,250,.16)}.searchable-select-list{max-height:235px;overflow:auto;display:flex;flex-direction:column;gap:5px;padding-right:2px}.searchable-select-option{width:100%;border:1px solid transparent;border-radius:9px;background:#fff;color:#0f172a;padding:9px 10px;text-align:left;font:inherit;font-weight:700;line-height:1.25;white-space:normal;cursor:pointer}.searchable-select-option:hover{background:#f8fafc;border-color:#e2e8f0}.searchable-select-option.selected{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.searchable-select-option.disabled{color:#94a3b8;cursor:not-allowed}.searchable-select-option.is-filtered-out{display:none!important}.searchable-select-empty{padding:13px;text-align:center;color:#64748b;font-weight:700;background:#f8fafc;border-radius:9px}
@media(max-width:650px){.searchable-select-panel{position:fixed;left:12px;right:12px;top:95px;max-height:calc(100vh - 115px);overflow:auto}.searchable-select-list{max-height:45vh}}

/* Regroupement des interventions par site */
.site-group-row td{background:#eef6ff!important;color:#0f3f6e;font-weight:900;border-top:1px solid #bfdbfe;border-bottom:1px solid #bfdbfe;padding:10px 12px}.site-group-title{display:inline-flex;align-items:center;gap:8px}.site-group-title:before{content:"";width:9px;height:9px;border-radius:999px;background:var(--blue);display:inline-block}.agent-site-group{margin-bottom:18px}.agent-site-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px;padding:10px 12px;border:1px solid #bfdbfe;background:#eef6ff;border-radius:12px;color:#0f3f6e}.agent-site-heading h2{margin:0;font-size:15px}.agent-site-count{font-size:12px;font-weight:900;color:#1d4ed8;background:#dbeafe;border-radius:999px;padding:4px 9px}.agent-site-cards{display:grid;gap:14px}


/* Correctifs ergonomie formulaires : la case Actif n'occupe plus toute la largeur de la grille. */
.form-grid label.check,
label.check{
  display:inline-flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:8px!important;
  justify-self:start!important;
  align-self:end!important;
  width:auto!important;
  max-width:max-content!important;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:9px;
  background:#fff;
  cursor:pointer;
}
.form-grid label.check input,
label.check input{
  width:16px!important;
  height:16px!important;
  flex:0 0 auto;
  margin:0!important;
}
.filters .searchable-select{min-width:190px;max-width:280px}
.filters input{min-width:220px}
@media(max-width:1050px){.filters .searchable-select{max-width:none}.filters input{min-width:0}}

/* =========================================================
   RESPONSIVE GLOBAL — ordinateur / tablette / téléphone
   Objectif : conserver l'application utilisable partout,
   sans dépendre d'un menu hamburger et sans barre verticale
   accolée à la sidebar.
   ========================================================= */
html{min-width:0;-webkit-text-size-adjust:100%}
body{min-width:0;overflow-x:hidden}.main,.main-full,.content,.card,.toolbar,.topbar,.user{min-width:0}.topbar-title{display:flex;align-items:center;gap:10px;min-width:0}.topbar-title strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-section-icon{flex:0 0 auto}.user>span:not(.avatar){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar{transition:none}.sidebar nav{min-width:0}.sidebar nav a{min-width:0}.sidebar nav a span{min-width:0;overflow:hidden;text-overflow:ellipsis}.btn,.linkbtn,input,select,textarea,button{font:inherit}.btn{min-height:38px}.btn.small{min-height:32px}.card img,canvas,svg{max-width:100%}.table-wrap{border-radius:12px;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:720px}.card .table-wrap{margin-left:-2px;margin-right:-2px}.filters{align-items:center;flex-wrap:wrap}.filters input,.filters select,.filters .searchable-select{flex:1 1 190px}.filters .btn{flex:0 0 auto}.actions-row,.actions,.actions-cell{min-width:0}.actions-cell form{display:inline-flex}.actions-cell .btn{white-space:nowrap}.form-card{max-width:1480px}.form-grid label,.form-grid .searchable-select,.agent-picker{min-width:0}.programmation-calendar{width:100%}.details{min-width:0}.details dd{min-width:0;overflow-wrap:anywhere}.agent-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr))}.login-wrap{padding:18px}.soft-separator{border:0;border-top:1px solid var(--line);margin:18px 0}

@media (max-width:1320px){
  .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
  .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .span2{grid-column:span 2}
}

@media (max-width:1050px){
  body{background:#f4f7fb}
  .sidebar{position:sticky!important;top:0;left:auto;right:auto;bottom:auto;inset:auto;width:100%;height:auto;max-height:none;overflow:visible;padding:9px 10px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 10px;align-items:center;border-bottom:1px solid rgba(255,255,255,.14);box-shadow:0 8px 25px rgba(15,23,42,.16);transform:none!important;z-index:40}
  .sidebar-logo{width:74px;margin:0;padding:6px 8px;border-radius:10px;grid-row:1 / span 2;align-self:stretch;display:flex;align-items:center;justify-content:center}
  .sidebar-logo img{max-height:46px;object-fit:contain}
  .brand{margin:0;font-size:16px;display:flex;align-items:center;gap:8px;min-width:0;height:22px}.brand span{margin-left:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand .icon{width:16px;height:16px}
  .sidebar nav{display:flex;align-items:center;gap:6px;overflow-x:auto;overflow-y:hidden;padding:3px 0 5px;margin:0;scrollbar-width:none;-webkit-overflow-scrolling:touch;min-width:0}.sidebar nav::-webkit-scrollbar{display:none}.sidebar nav p{display:none}.sidebar nav a{flex:0 0 auto;margin:0;padding:8px 10px;border-radius:999px;font-size:12px;line-height:1;white-space:nowrap;min-height:34px}.sidebar nav a .icon{width:15px;height:15px}.sidebar nav a:hover{background:rgba(255,255,255,.10)}.sidebar nav a.active{background:#0b66d8}
  .main{margin-left:0;min-height:auto}.topbar{position:static;height:auto;min-height:58px;padding:10px 14px;gap:12px;align-items:center}.content{padding:14px}.toolbar{gap:10px}.toolbar h1{font-size:20px}.toolbar>div:first-child{min-width:0}.grid.two{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:14px}.stat strong{font-size:23px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.span2{grid-column:span 2}.programmation-layout{grid-template-columns:1fr}.programmation-calendar{position:static;order:-1}.filters{gap:8px}.filters .searchable-select,.filters input{max-width:none;min-width:0}.task-form{grid-template-columns:1fr}.table-wrap{overflow-x:auto}.table-wrap table{min-width:760px}
}

@media (max-width:760px){
  .sidebar{grid-template-columns:58px minmax(0,1fr);padding:8px}.sidebar-logo{width:58px}.sidebar-logo img{max-height:38px}.brand{font-size:14px}.brand-icon{display:none}.sidebar nav a{padding:8px 9px;font-size:11px;min-height:32px}.sidebar nav a .icon{width:14px;height:14px}
  .topbar{align-items:flex-start;flex-direction:column}.topbar-title{width:100%;font-size:15px}.user{width:100%;justify-content:space-between;gap:8px;flex-wrap:wrap}.user>span:not(.avatar){font-size:12px;max-width:calc(100vw - 170px)}.avatar{padding:5px}.notification-toggle.topbar-icon{width:38px;height:38px}.user form{margin-left:auto}.linkbtn{padding:6px 0}
  .content{padding:10px}.card{border-radius:12px;padding:13px;margin-bottom:12px}.card-title-row{gap:8px}.toolbar{flex-direction:column;align-items:stretch}.toolbar .actions-row{justify-content:flex-start}.actions-row .btn,.toolbar .btn{justify-content:center}.cards{grid-template-columns:1fr}.stat{grid-template-columns:38px minmax(0,1fr);gap:4px 10px}.stat span{font-size:20px;padding:8px}.stat strong{font-size:22px}.stat a{grid-column:1/3}.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}.actions{justify-content:stretch;flex-direction:column}.actions .btn,.actions button{width:100%;justify-content:center}.filters{flex-direction:column;align-items:stretch}.filters .btn{width:100%;justify-content:center}.details{grid-template-columns:1fr;gap:4px}.details dt{margin-top:7px}.details dd{padding-bottom:2px}.agent-intervention-card .details,.equipment-card .details{grid-template-columns:1fr}.commentbox{padding:12px}.donut{width:150px;height:150px}.donut:after{inset:37px}.programmation-calendar{padding:12px}.calendar-day,.calendar-empty{height:38px}.calendar-head strong{font-size:14px}.agent-picker-control{min-height:46px}.agent-picker-main{white-space:normal}.agent-picker-chips{display:none}.agent-picker-panel,.searchable-select-panel{top:74px!important;left:8px!important;right:8px!important;width:auto!important}.notification-panel{width:calc(100vw - 18px)!important;max-height:86vh!important}.notification-list{max-height:calc(86vh - 130px)!important}.notification-head{padding:13px}.login{padding:20px}.login-logo img{max-width:210px}

  /* Tables converties en cartes sur téléphone. Les libellés sont ajoutés par JS. */
  .table-wrap{overflow:visible;border-radius:0}.table-wrap table{min-width:0;width:100%;background:transparent}.table-wrap thead{display:none}.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%}.table-wrap tbody tr{background:#fff;border:1px solid var(--line);border-radius:14px;margin:0 0 12px;padding:8px 10px;box-shadow:0 4px 14px rgba(15,23,42,.05)}.table-wrap tbody tr.site-group-row{padding:0;border:0;box-shadow:none;background:transparent;margin:14px 0 8px}.table-wrap tbody tr.site-group-row td{display:block;background:#eef6ff!important;border-radius:12px;padding:10px 12px}.table-wrap tbody tr.site-group-row td:before{display:none}.table-wrap td{border:0!important;padding:8px 0;display:grid!important;grid-template-columns:minmax(110px,42%) minmax(0,1fr);gap:8px;align-items:start}.table-wrap td:before{content:attr(data-label);font-weight:900;color:#64748b;font-size:11px;text-transform:uppercase;letter-spacing:.02em}.table-wrap td[data-label=""],.table-wrap td.check-col{grid-template-columns:auto 1fr}.table-wrap td[data-label=""]:before,.table-wrap td.check-col:before{content:"Sélection"}.table-wrap td.actions-cell{display:flex!important;flex-wrap:wrap;gap:7px;align-items:center}.table-wrap td.actions-cell:before{content:attr(data-label);flex:0 0 100%}.table-wrap td.actions-cell .btn,.table-wrap td.actions-cell form{flex:1 1 auto}.table-wrap td.actions-cell .btn{justify-content:center}.table-wrap input[type="checkbox"]{width:18px;height:18px}.tasks-batch-form select,.tasks-batch-form input{min-height:38px}.tasks-batch-form td:nth-child(7),.tasks-batch-form td:nth-child(8){min-width:0}.badge{white-space:normal}.btn{white-space:normal;text-align:center}
}

@media (max-width:430px){
  body{font-size:13px}.content{padding:8px}.card{padding:11px}.topbar{padding:9px 10px}.toolbar h1{font-size:18px}.btn{width:100%;justify-content:center}.actions-row{flex-direction:column;align-items:stretch}.sidebar nav a span{max-width:115px;overflow:hidden;text-overflow:ellipsis}.user>span:not(.avatar){display:none}.notification-toggle.topbar-icon{width:36px;height:36px}.agent-picker-option{grid-template-columns:18px 30px 1fr!important;padding:8px}.agent-picker-avatar{width:30px;height:30px}.searchable-select-option{padding:9px}.table-wrap td{grid-template-columns:1fr;gap:3px}.table-wrap td:before{font-size:10px}.login{width:100%;padding:18px}.login-logo img{max-width:190px}
}

@media (hover:none){
  .btn:hover,.sidebar a:hover,.searchable-select-control:hover,.agent-picker-control:hover{filter:none}
}

/* =========================================================
   OPTIMISATION RESPONSIVE 2 — petits PC portables / tablettes
   Demande : lorsqu'on passe sous la taille d'un écran de PC
   portable, les éléments doivent se redimensionner et se
   réarranger sans casser l'organisation générale.
   ========================================================= */

/* Petits PC portables : on garde la sidebar à gauche mais on compacte tout. */
@media (max-width:1366px) and (min-width:1181px){
  body{font-size:13px}
  .sidebar{width:218px;padding:8px 10px;overflow:hidden}
  .main{margin-left:218px}
  .sidebar-logo{padding:6px 8px;margin-bottom:6px;border-radius:9px}
  .sidebar-logo img{max-height:34px}
  .brand{font-size:15px;margin-bottom:6px;line-height:1.1}
  .brand .icon{width:15px;height:15px}.brand span{margin-left:5px}
  .sidebar p{margin:8px 7px 4px;font-size:9px;letter-spacing:.03em}
  .sidebar nav a{padding:6px 8px;margin:1px 0;font-size:12px;line-height:1.1;gap:7px;min-height:28px;border-radius:7px}
  .sidebar nav a .icon{width:14px;height:14px}

  .topbar{height:54px;min-height:54px;padding:0 16px}
  .topbar-title strong{font-size:14px}.topbar-section-icon{width:18px;height:18px}
  .user{gap:8px}.user>span:not(.avatar){font-size:12px;max-width:260px}.avatar{padding:5px}.topbar-icon{width:32px;height:32px}

  .content{padding:16px}.toolbar{margin-bottom:12px;gap:10px}.toolbar h1{font-size:20px}.card{padding:14px;margin-bottom:12px;border-radius:11px}.card-title-row{margin-bottom:8px}h2{font-size:15px;margin-bottom:10px}
  .cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}
  .stat{padding:12px;grid-template-columns:38px minmax(0,1fr);gap:3px 10px}.stat span{font-size:20px;padding:8px}.stat strong{font-size:22px}.stat small{font-size:12px}.stat a{margin-top:5px}
  .grid{gap:12px;margin-bottom:12px}.grid.two{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr)}

  .form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.span2{grid-column:span 2}
  .form-grid input,.form-grid select,.form-grid textarea,.filters input,.filters select,.task-form input,.task-form select{padding:8px 9px;min-height:36px}.searchable-select-control{min-height:36px;padding:8px 10px}.agent-picker-control{min-height:42px;padding:7px 9px}.agent-picker-chip{max-width:132px}.field-help{font-size:11px}
  textarea{min-height:78px}.actions{gap:8px}.btn{padding:8px 11px;min-height:34px;font-size:12px}.btn.small{padding:5px 7px;min-height:29px}

  .programmation-layout{grid-template-columns:minmax(0,1fr) 270px;gap:12px}.programmation-calendar{top:66px;padding:11px}.calendar-head{margin-bottom:8px}.calendar-nav{width:28px;height:28px}.calendar-weekdays span{font-size:10px;padding:3px 0}.calendar-day,.calendar-empty{height:30px;border-radius:7px}.calendar-help{font-size:11px;margin-top:8px}

  .filters{gap:8px;margin-bottom:12px;flex-wrap:wrap}.filters .searchable-select{min-width:170px;max-width:240px}.filters input{min-width:190px}.table-wrap table{min-width:680px}th,td{padding:9px 8px}th{font-size:11px}td{font-size:12px}.badge{font-size:11px;padding:4px 7px}.details{grid-template-columns:145px 1fr;gap:7px}.commentbox{padding:12px;min-height:78px}.donut{width:155px;height:155px}.donut:after{inset:38px}
}

/* PC portable bas en hauteur : évite une sidebar trop haute. */
@media (max-height:780px) and (min-width:1181px){
  .sidebar{padding-top:7px;padding-bottom:7px}
  .sidebar-logo{padding:5px 7px;margin-bottom:5px}.sidebar-logo img{max-height:30px}
  .brand{font-size:14px;margin-bottom:5px}.sidebar p{margin:7px 6px 3px;font-size:8.8px}.sidebar nav a{padding:5px 8px;min-height:26px;font-size:11.5px}.sidebar nav a .icon{width:13px;height:13px}
}

/* Tablette paysage / très petit laptop : le menu passe en bandeau horizontal,
   mais les formulaires restent en deux colonnes pour conserver l'organisation. */
@media (max-width:1180px) and (min-width:761px){
  body{font-size:13px;background:#f4f7fb}
  .sidebar{position:sticky!important;top:0;left:auto;right:auto;bottom:auto;inset:auto;width:100%;height:auto;max-height:none;overflow:visible;padding:8px 10px;display:grid;grid-template-columns:74px minmax(0,1fr);gap:6px 10px;align-items:center;border-bottom:1px solid rgba(255,255,255,.14);box-shadow:0 8px 25px rgba(15,23,42,.16);transform:none!important;z-index:40}
  .sidebar-logo{width:74px;margin:0;padding:5px 8px;border-radius:10px;grid-row:1 / span 2;align-self:stretch;display:flex;align-items:center;justify-content:center}.sidebar-logo img{max-height:44px;object-fit:contain}
  .brand{margin:0;font-size:15px;display:flex;align-items:center;gap:7px;min-width:0;height:20px}.brand span{margin-left:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand .icon{width:15px;height:15px}
  .sidebar nav{display:flex;align-items:center;gap:6px;overflow-x:auto;overflow-y:hidden;padding:2px 0 5px;margin:0;scrollbar-width:none;-webkit-overflow-scrolling:touch;min-width:0}.sidebar nav::-webkit-scrollbar{display:none}.sidebar nav p{display:none}.sidebar nav a{flex:0 0 auto;margin:0;padding:8px 10px;border-radius:999px;font-size:12px;line-height:1;white-space:nowrap;min-height:34px}.sidebar nav a .icon{width:15px;height:15px}
  .main{margin-left:0;min-height:auto}.topbar{position:static;height:auto;min-height:54px;padding:9px 14px;gap:12px}.content{padding:14px}.toolbar{gap:10px;margin-bottom:12px}.toolbar h1{font-size:20px}.grid.two{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:13px}.stat strong{font-size:22px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.span2{grid-column:span 2}.filters{gap:8px;flex-wrap:wrap}.filters .searchable-select,.filters input{max-width:none;min-width:0}.programmation-layout{grid-template-columns:minmax(0,1fr) 270px;gap:12px}.programmation-calendar{position:sticky;top:12px;padding:12px}.calendar-day,.calendar-empty{height:31px}.table-wrap{overflow-x:auto}.table-wrap table{min-width:780px}.agent-picker-panel,.searchable-select-panel{max-width:calc(100vw - 28px)}
}

/* Tablette portrait : calendrier et grands blocs passent au-dessus, tout en gardant
   des champs compacts et lisibles. */
@media (max-width:920px) and (min-width:761px){
  .programmation-layout{grid-template-columns:1fr}.programmation-calendar{position:static;order:-1}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span2{grid-column:span 2}.toolbar{align-items:flex-start;flex-direction:column}.toolbar .actions-row{width:100%;justify-content:flex-start}.filters{align-items:stretch}.filters .searchable-select,.filters input,.filters .btn{flex:1 1 210px}.table-wrap table{min-width:720px}
}

/* Téléphone large : on garde une interface compacte, sans forcer inutilement
   tous les boutons à prendre toute la largeur. */
@media (max-width:760px) and (min-width:431px){
  .toolbar .actions-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.toolbar .actions-row .btn{width:100%}.actions-cell .btn{min-width:120px}.calendar-day,.calendar-empty{height:36px}.agent-picker-main{font-size:13px}.agent-picker-count{height:22px;min-width:24px}.filters .searchable-select-control,.filters input{min-height:42px}
}

/* Très petits téléphones : priorité à la lisibilité et à l'absence de débordement. */
@media (max-width:430px){
  .sidebar{grid-template-columns:52px minmax(0,1fr);gap:5px}.sidebar-logo{width:52px;padding:4px 6px}.sidebar-logo img{max-height:34px}.brand{height:18px}.sidebar nav a{min-height:30px;padding:7px 8px}.content{padding:7px}.card{padding:10px;border-radius:11px}.topbar-title strong{font-size:14px}.stat{padding:10px}.stat strong{font-size:20px}.form-grid input,.form-grid select,.form-grid textarea,.searchable-select-control,.agent-picker-control{min-height:40px}.agent-picker-panel,.searchable-select-panel{left:7px!important;right:7px!important;top:70px!important}.notification-panel{width:calc(100vw - 14px)!important}.calendar-day,.calendar-empty{height:34px}.calendar-help{font-size:11px}.table-wrap tbody tr{border-radius:12px;padding:7px 9px}.table-wrap td{padding:7px 0}.btn.small{min-height:32px}
}


/* =========================================================
   Correction ergonomie - Mes interventions agent
   Objectif : réduire la hauteur du bloc recherche/filtres.
   ========================================================= */
.agent-filter-panel{
  padding:10px 12px!important;
  margin-bottom:12px!important;
}
.agent-filter-panel .agent-filters{
  margin-bottom:0!important;
  display:grid!important;
  grid-template-columns:minmax(240px,1.6fr) minmax(170px,.9fr) minmax(160px,.8fr) auto auto;
  align-items:center!important;
  gap:8px!important;
}
.agent-filter-panel .agent-filters input,
.agent-filter-panel .agent-filters select,
.agent-filter-panel .agent-filters .searchable-select,
.agent-filter-panel .agent-filters .searchable-select-control{
  min-height:36px!important;
}
.agent-filter-panel .agent-filters input{
  min-width:0!important;
  padding:8px 10px!important;
}
.agent-filter-panel .agent-filters .searchable-select{
  min-width:0!important;
  max-width:none!important;
}
.agent-filter-panel .agent-filters .searchable-select-control{
  padding:8px 10px!important;
}
.agent-filter-panel .agent-filters .btn{
  min-height:36px!important;
  padding:8px 11px!important;
  font-size:12px!important;
}

@media (max-width:1180px){
  .agent-filter-panel .agent-filters{
    grid-template-columns:minmax(260px,1fr) minmax(180px,.7fr) minmax(160px,.7fr) auto auto;
  }
}
@media (max-width:920px){
  .agent-filter-panel .agent-filters{
    grid-template-columns:1fr 1fr;
  }
  .agent-filter-panel .agent-filters input{
    grid-column:1 / -1;
  }
  .agent-filter-panel .agent-filters .btn{
    width:100%;
    justify-content:center;
  }
}
@media (max-width:560px){
  .agent-filter-panel{
    padding:9px!important;
    margin-bottom:10px!important;
  }
  .agent-filter-panel .agent-filters{
    grid-template-columns:1fr;
    gap:6px!important;
  }
  .agent-filter-panel .agent-filters input,
  .agent-filter-panel .agent-filters .searchable-select-control,
  .agent-filter-panel .agent-filters .btn{
    min-height:34px!important;
    padding-top:7px!important;
    padding-bottom:7px!important;
  }
}

/* =========================================================
   Navigation active + page modèles d'export
   ========================================================= */
.sidebar nav a.active{
  background:#0b66d8!important;
  color:#fff!important;
  box-shadow:inset 3px 0 0 rgba(255,255,255,.95),0 8px 18px rgba(11,102,216,.22);
  font-weight:800;
}
.sidebar nav a.active .icon{opacity:1;filter:drop-shadow(0 1px 0 rgba(0,0,0,.08))}
.file-current{border:1px dashed #cbd5e1;background:#f8fafc;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:7px;min-width:0}
.file-current span{display:flex;align-items:center;gap:8px;min-width:0;overflow-wrap:anywhere}
.file-current .icon{width:18px;height:18px;flex:0 0 auto;color:var(--blue)}
.export-file-field input[type="file"]{padding:9px;background:#fff}
.check-compact{align-self:start;justify-content:flex-start!important;width:max-content;max-width:100%;padding:6px 8px;border-radius:8px;background:#f8fafc;border:1px solid var(--line)}
.check-compact input{cursor:pointer}
.table-wrap td .icon{width:16px;height:16px;vertical-align:-3px;margin-right:4px}
@media(max-width:760px){.file-current{grid-column:auto}.check-compact{width:100%;justify-content:flex-start!important}.sidebar nav a.active{box-shadow:inset 0 -3px 0 rgba(255,255,255,.9),0 6px 14px rgba(11,102,216,.18)}}

/* Export d'une intervention terminée */
.export-template-form {
    display: grid;
    gap: 1rem;
}

.export-template-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: .85rem;
}

.export-template-card {
    border: 1px solid var(--border, #e5e7eb);
    border-radius: 16px;
    padding: .9rem;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .75rem;
    align-items: flex-start;
    background: var(--card, #fff);
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.export-template-card:hover,
.export-template-card:focus-within {
    border-color: var(--primary, #2563eb);
    box-shadow: 0 10px 25px rgba(15, 23, 42, .08);
}

.export-template-card input[type="radio"] {
    margin-top: .25rem;
    width: 18px;
    height: 18px;
}

.export-template-card:has(input[type="radio"]:checked) {
    border-color: var(--primary, #2563eb);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}

.export-template-content {
    display: grid;
    gap: .35rem;
    min-width: 0;
}

.export-template-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
}

.export-actions-row {
    justify-content: flex-end;
}

@media (max-width: 640px) {
    .export-template-grid {
        grid-template-columns: 1fr;
    }
    .export-template-title-row {
        align-items: flex-start;
        flex-direction: column;
    }
    .export-actions-row {
        justify-content: stretch;
    }
    .export-actions-row .btn {
        width: 100%;
    }
}

/* =========================================================
   Export intervention : sélection du modèle plus esthétique
   ========================================================= */
.export-choice-card{
  background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);
}
.export-choice-head{align-items:flex-start}
.export-count-badge{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:32px;padding:0 12px;border-radius:999px;
  background:#eff6ff;color:#1d4ed8;font-weight:800;font-size:12px;
  border:1px solid #bfdbfe;white-space:nowrap;
}
.export-template-form-modern{gap:18px}
.modern-export-grid{
  grid-template-columns:repeat(auto-fit,minmax(290px,1fr));
  gap:14px;
}
.modern-export-card{
  position:relative;
  padding:0;
  overflow:hidden;
  border:1px solid #dbe3ee;
  border-radius:18px;
  background:#fff;
  box-shadow:0 6px 18px rgba(15,23,42,.05);
}
.modern-export-card input[type="radio"]{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.modern-export-card:hover,
.modern-export-card:focus-within{
  transform:translateY(-1px);
  box-shadow:0 14px 30px rgba(15,23,42,.10);
  border-color:#93c5fd;
}
.modern-export-card:has(input[type="radio"]:checked){
  border-color:#2563eb;
  box-shadow:0 0 0 3px rgba(37,99,235,.12),0 16px 34px rgba(37,99,235,.14);
}
.modern-export-content{
  display:grid;
  gap:14px;
  padding:16px;
}
.export-template-topline{
  display:grid;
  grid-template-columns:54px minmax(0,1fr);
  gap:12px;
  align-items:flex-start;
}
.export-template-type-mark{
  width:54px;height:54px;border-radius:16px;
  display:inline-flex;align-items:center;justify-content:center;
  font-weight:900;letter-spacing:.03em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65);
}
.export-type-mark-excel{background:#dcfce7;color:#166534}
.export-type-mark-word{background:#dbeafe;color:#1d4ed8}
.export-type-mark-pdf{background:#fee2e2;color:#b91c1c}
.export-type-letter{font-size:15px;line-height:1}
.export-template-meta{display:grid;gap:6px;min-width:0}
.modern-export-title-row{align-items:flex-start}
.modern-export-title-row strong{
  font-size:15px;line-height:1.25;display:block;min-width:0;
}
.export-template-description{display:block;line-height:1.45}
.export-template-info-list{
  display:flex;flex-wrap:wrap;gap:8px;
}
.export-info-pill{
  display:inline-flex;align-items:center;gap:6px;
  max-width:100%;
  padding:7px 10px;border-radius:999px;
  background:#f8fafc;border:1px solid #e2e8f0;
  color:#475569;font-size:12px;font-weight:700;
}
.export-info-pill .icon{width:15px;height:15px;color:#64748b;flex:0 0 auto}
.export-template-footer{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  border-top:1px solid #edf2f7;padding-top:12px;
}
.export-select-hint{font-size:12px;color:#64748b;font-weight:700}
.export-selected-state{
  display:none;align-items:center;gap:6px;
  padding:6px 10px;border-radius:999px;
  background:#dbeafe;color:#1d4ed8;font-size:12px;font-weight:800;
}
.modern-export-card:has(input[type="radio"]:checked) .export-selected-state{display:inline-flex}
.modern-export-card:has(input[type="radio"]:checked) .export-select-hint{color:#1d4ed8}
.export-empty-state{padding:18px}
.export-variable-guide code{
  display:inline-block;padding:3px 7px;border-radius:8px;
  background:#f1f5f9;color:#0f172a;font-size:12px;font-weight:800;
}
@media(max-width:760px){
  .modern-export-grid{grid-template-columns:1fr}
  .export-template-topline{grid-template-columns:46px minmax(0,1fr)}
  .export-template-type-mark{width:46px;height:46px;border-radius:14px}
  .export-template-footer{flex-direction:column;align-items:flex-start}
  .export-count-badge{align-self:flex-start}
}

/* Export PDF depuis modèle Word */
.export-info-pill-success{background:#ecfdf5!important;border-color:#bbf7d0!important;color:#166534!important}
.export-info-pill-success .icon{color:#16a34a!important}
.export-info-pill-warning{background:#fff7ed!important;border-color:#fed7aa!important;color:#9a3412!important}
.export-info-pill-warning .icon{color:#f97316!important}

/* Exports : icônes vectorielles Word / Excel / PDF */
.export-type-icon{width:28px;height:28px;stroke-width:1.9}
.export-type-mark-excel{background:#dcfce7;color:#166534}
.export-type-mark-word{background:#dbeafe;color:#1d4ed8}
.export-type-mark-pdf{background:#fee2e2;color:#b91c1c}
.export-template-type-mark .export-type-icon{display:block;margin:auto}

/* =========================================================
   Filtre temporel compact - interface agent Mes interventions
   ========================================================= */
.agent-time-filters{
  grid-template-columns:minmax(230px,1.5fr) minmax(160px,.85fr) minmax(150px,.75fr) minmax(175px,.85fr) auto!important;
}
.agent-time-filters .agent-filter-actions{
  display:flex;
  align-items:center;
  gap:8px;
  justify-content:flex-end;
}
.agent-custom-period{
  display:none;
  grid-column:1 / -1;
  align-items:center;
  gap:8px;
  padding:8px 10px;
  border:1px solid #e2e8f0;
  border-radius:12px;
  background:#f8fafc;
}
.agent-custom-period.is-visible{
  display:flex;
}
.agent-custom-period label{
  display:flex;
  align-items:center;
  gap:7px;
  font-size:12px;
  color:#475569;
  font-weight:800;
  white-space:nowrap;
}
.agent-custom-period input[type="date"]{
  min-height:34px!important;
  padding:7px 9px!important;
  max-width:165px;
}
.agent-period-summary{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-top:8px;
  padding:7px 10px;
  border-radius:999px;
  background:#eff6ff;
  color:#1d4ed8;
  font-size:12px;
  font-weight:700;
}
.agent-period-summary .icon{width:16px;height:16px;flex:0 0 auto}
@media(max-width:1240px){
  .agent-time-filters{
    grid-template-columns:minmax(220px,1fr) minmax(150px,.75fr) minmax(145px,.7fr) minmax(170px,.75fr)!important;
  }
  .agent-time-filters .agent-filter-actions{grid-column:1 / -1;justify-content:flex-end}
}
@media(max-width:920px){
  .agent-time-filters{grid-template-columns:1fr 1fr!important}
  .agent-time-filters .agent-search-input{grid-column:1 / -1}
  .agent-time-filters .agent-filter-actions{grid-column:1 / -1}
  .agent-custom-period{grid-column:1 / -1}
}
@media(max-width:560px){
  .agent-time-filters{grid-template-columns:1fr!important}
  .agent-time-filters .agent-filter-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .agent-custom-period.is-visible{display:grid;grid-template-columns:1fr;gap:6px}
  .agent-custom-period label{justify-content:space-between;width:100%}
  .agent-custom-period input[type="date"]{max-width:none;width:70%!important}
  .agent-period-summary{border-radius:12px;align-items:flex-start;line-height:1.35}
}

/* =========================================================
   Administration : association Gamme / Tâches simplifiée
   ========================================================= */
.association-toolbar{align-items:flex-start}
.association-filter-card{padding:14px 16px}
.association-contract-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}
.association-contract-form label{display:flex;flex-direction:column;gap:6px;font-weight:800;min-width:min(360px,100%)}
.association-contract-form select,
.association-search{
  width:100%;border:1px solid #cbd5e1;border-radius:10px;background:#fff;padding:10px 12px;font:inherit;font-weight:600;outline:none;
}
.association-contract-form select:focus,
.association-search:focus{border-color:#60a5fa;box-shadow:0 0 0 3px rgba(96,165,250,.18)}
.association-workspace{display:grid;grid-template-columns:340px minmax(0,1fr);gap:16px;align-items:start}
.association-gammes-card{position:sticky;top:82px;max-height:calc(100vh - 108px);overflow:auto}
.compact-title-row{margin-bottom:10px}
.association-gamme-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.association-gamme-item{display:grid;gap:5px;text-decoration:none;color:var(--text);border:1px solid #e2e8f0;border-radius:14px;padding:12px;background:#fff;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease,transform .15s ease}
.association-gamme-item:hover{border-color:#93c5fd;background:#fbfdff;box-shadow:0 10px 22px rgba(15,23,42,.08);transform:translateY(-1px)}
.association-gamme-item.active{border-color:var(--blue);background:#eff6ff;box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.association-gamme-main{font-weight:900;line-height:1.25}
.association-gamme-sub{font-size:12px;color:#475569;font-weight:700}
.association-gamme-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.association-sites{display:block;font-size:11px;line-height:1.35;margin-top:2px}
.association-detail{min-width:0}
.association-selected-card{background:linear-gradient(180deg,#fff,#fbfdff)}
.association-rule-box{display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:flex-start;border:1px solid #bfdbfe;background:#eff6ff;border-radius:14px;padding:12px;margin-top:8px}
.association-rule-box .icon{width:22px;height:22px;color:#1d4ed8;margin-top:2px}
.association-rule-box p{margin:3px 0 0;color:#475569;font-size:12px;line-height:1.45}
.association-task-columns{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:16px}
.association-task-card{min-width:0}
.association-task-list{display:flex;flex-direction:column;gap:8px;margin-top:10px;max-height:540px;overflow:auto;padding-right:3px}
.association-task-row{display:grid!important;grid-template-columns:20px minmax(0,1fr) 190px;gap:10px;align-items:center;border:1px solid #e2e8f0;border-radius:14px;background:#fff;padding:10px;cursor:pointer;transition:background .14s ease,border-color .14s ease}
.association-task-row:hover{background:#f8fafc;border-color:#cbd5e1}
.association-task-row.simple{grid-template-columns:20px minmax(0,1fr)}
.association-task-row>input[type="checkbox"]{width:17px!important;height:17px!important;margin:0!important;accent-color:var(--blue)}
.association-task-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.association-task-text strong{font-size:13px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.association-task-text small{font-size:11px;color:#64748b;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.association-task-settings{display:grid;grid-template-columns:70px 1fr;gap:8px;align-items:center}
.association-task-settings input[type="number"]{width:70px;border:1px solid #cbd5e1;border-radius:9px;padding:7px 8px;background:#fff;font-weight:800}
.mini-check{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;color:#475569;white-space:nowrap}
.mini-check input{width:15px!important;height:15px!important;accent-color:var(--blue)}
.association-actions-row{justify-content:flex-end;margin-top:12px;border-top:1px solid #edf2f7;padding-top:12px}
@media(max-width:1180px){.association-workspace{grid-template-columns:1fr}.association-gammes-card{position:static;max-height:none}.association-gamme-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.association-task-columns{grid-template-columns:1fr}}
@media(max-width:760px){.association-contract-form label{min-width:100%}.association-gamme-list{grid-template-columns:1fr}.association-task-row{grid-template-columns:20px minmax(0,1fr);align-items:flex-start}.association-task-settings{grid-column:2;grid-template-columns:70px 1fr}.association-actions-row{justify-content:stretch}.association-actions-row .btn{width:100%;justify-content:center}}

/* =========================================================
   Tableau de bord : filtre contrat
   ========================================================= */
.dashboard-filter-card{padding:14px 16px;margin-bottom:16px}
.dashboard-contract-filter{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0}
.dashboard-filter-title{display:flex;flex-direction:column;gap:4px;min-width:240px}
.dashboard-filter-title strong{display:inline-flex;align-items:center;gap:8px;font-size:15px}
.dashboard-filter-title .icon{width:18px;height:18px;color:var(--blue)}
.dashboard-filter-fields{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dashboard-filter-fields select{min-width:260px;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;background:#fff;font-weight:700;color:#0f172a}
.dashboard-current-contract{margin-top:10px;display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:700;border:1px solid #bfdbfe}
@media(max-width:760px){
  .dashboard-contract-filter{align-items:stretch;flex-direction:column}
  .dashboard-filter-fields{display:grid;grid-template-columns:1fr;gap:8px;width:100%}
  .dashboard-filter-fields select,.dashboard-filter-fields .btn{width:100%;justify-content:center;min-width:0}
  .dashboard-contract-filter[data-auto-filter].auto-filter-pending::after{position:static;margin-top:4px;text-align:right}
}

/* Filtres dynamiques : plus besoin du bouton rechercher/appliquer */
.filters[data-auto-filter],
.dashboard-contract-filter[data-auto-filter],
.association-contract-form[data-auto-filter]{
  position:relative;
}
/* La notification de filtrage est conservée uniquement sur le tableau de bord.
   Sur les autres pages, aucune pastille n'est affichée afin d'éviter les mouvements d'interface. */
.dashboard-contract-filter[data-auto-filter].auto-filter-pending::after{
  content:"Filtrage automatique...";
  position:absolute;
  right:0;
  bottom:-22px;
  color:var(--muted);
  font-size:12px;
  font-weight:700;
  line-height:1;
  pointer-events:none;
}
.filters[data-auto-filter].auto-filter-loading,
.dashboard-contract-filter[data-auto-filter].auto-filter-loading,
.association-contract-form[data-auto-filter].auto-filter-loading{
  opacity:.72;
  pointer-events:none;
}
.dashboard-filter-fields .searchable-select,
.filters .searchable-select{
  min-width:220px;
}
.association-contract-form .searchable-select{
  width:min(420px,100%);
}
@media(max-width:760px){
  .dashboard-filter-fields .searchable-select,
  .filters .searchable-select,
  .association-contract-form .searchable-select{
    min-width:0;
    width:100%;
  }
}

/* Correction finale : sur mobile, la pastille du tableau de bord reste stable */
@media(max-width:760px){
  .dashboard-contract-filter[data-auto-filter].auto-filter-pending::after{
    position:static!important;
    margin-top:4px;
    text-align:right;
    width:100%;
  }
}

/* Recherche dynamique Association Gamme / Tâches */
.association-filtered-out{display:none!important}
.association-no-results{border:1px dashed #cbd5e1;background:#f8fafc;border-radius:12px;padding:12px;margin-top:10px;font-size:13px}

/* =========================================================
   Correctifs de base IIS / login / alignement actions
   ========================================================= */
/* La page de connexion est rendue sans sidebar. On supprime la topbar et le padding
   pour que le design login occupe réellement toute la page, y compris sous IIS. */
.main-full > .topbar{display:none!important}
.main-full > .content{padding:0!important;min-height:100vh}
.main-full .login-wrap{min-height:100vh;width:100%;padding:18px}
.main-full .login{margin:0 auto}
.main-full .alert{width:min(520px,calc(100% - 32px));margin:14px auto -8px;position:relative;z-index:2}

/* Alignement stable des boutons d'action dans les tableaux.
   Important : une cellule <td> doit rester en display:table-cell. Le flex est appliqué
   dans le conteneur interne .actions-inline pour ne pas casser l'alignement des lignes. */
.align-middle-table th,
.align-middle-table td,
.admin-table th,
.admin-table td,
.interventions-table th,
.interventions-table td{
  vertical-align:middle!important;
}
td.actions-cell{
  display:table-cell!important;
  vertical-align:middle!important;
  min-width:190px;
  white-space:nowrap;
}
.actions-inline,
.actions-cell:not(td){
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start;
  gap:8px;
  flex-wrap:wrap;
}
.actions-cell form,
.actions-inline form,
.actions-row form{
  display:inline-flex!important;
  align-items:center!important;
  margin:0!important;
  padding:0!important;
}
.actions-cell .btn,
.actions-cell button.btn,
.actions-cell a.btn,
.actions-inline .btn,
.actions-row .btn{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:32px!important;
  line-height:1!important;
  margin:0!important;
  white-space:nowrap!important;
}
.actions-cell .btn.small,
.actions-inline .btn.small{padding:6px 10px!important;font-size:12px!important}
.actions-cell .btn.danger,.actions-inline .btn.danger{border-color:#fecaca}
.toolbar .actions-row{align-items:center!important}
.closure-action-form{display:inline-flex!important;align-items:center!important;margin:0!important;padding:0!important}

@media(max-width:760px){
  .table-wrap td.actions-cell{
    display:table-cell!important;
    vertical-align:middle!important;
    white-space:normal;
  }
  .table-wrap td.actions-cell .actions-inline{
    display:grid!important;
    grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
    gap:8px!important;
    width:100%;
  }
  .table-wrap td.actions-cell .btn,
  .table-wrap td.actions-cell form{width:100%!important;min-width:0!important}
}


/* Correctif IIS/encodage : alignement propre du bouton Déconnexion */
.topbar .user .logout-form{
  margin:0;
  padding:0;
  display:inline-flex;
  align-items:center;
}
.topbar .user .logout-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:36px;
  padding:0 8px;
  line-height:1;
  font:inherit;
  font-weight:700;
  text-decoration:none;
}
.topbar .user .logout-link:hover{
  text-decoration:underline;
}



/* Compatibilité avec les anciennes classes déjà présentes dans certaines vues */
.violet{
  background:#f3e8ff!important;
  color:#7e22ce!important;
  border:1px solid #e9d5ff!important;
}

/* =========================================================
   Badges de statuts d'intervention : couleurs distinctes
   ========================================================= */

.badge.status-a-faire{
  background:#fff7ed!important;
  color:#c2410c!important;
  border:1px solid #fed7aa!important;
}

.badge.status-en-cours{
  background:#dbeafe!important;
  color:#1d4ed8!important;
  border:1px solid #bfdbfe!important;
}

.badge.status-a-cloturer{
  background:#f3e8ff!important;
  color:#7e22ce!important;
  border:1px solid #e9d5ff!important;
}

.badge.status-terminee{
  background:#dcfce7!important;
  color:#15803d!important;
  border:1px solid #bbf7d0!important;
}

.badge.status-annulee,
.badge.status-default{
  background:#f1f5f9!important;
  color:#475569!important;
  border:1px solid #cbd5e1!important;
}

.badge.status-hors-service{
  background:#fee2e2!important;
  color:#991b1b!important;
  border:1px solid #fecaca!important;
}

/* Compatibilité avec les anciennes classes couleur */
.badge.orange{background:#fff7ed!important;color:#c2410c!important;border:1px solid #fed7aa!important;}
.badge.blue,.badge.bleu{background:#dbeafe!important;color:#1d4ed8!important;border:1px solid #bfdbfe!important;}
.badge.violet{background:#f3e8ff!important;color:#7e22ce!important;border:1px solid #e9d5ff!important;}
.badge.green,.badge.vert{background:#dcfce7!important;color:#15803d!important;border:1px solid #bbf7d0!important;}
.badge.gray,.badge.gris{background:#f1f5f9!important;color:#475569!important;border:1px solid #cbd5e1!important;}
.badge.red,.badge.rouge{background:#fee2e2!important;color:#991b1b!important;border:1px solid #fecaca!important;}


/* =========================================================
   Photos des interventions
   ========================================================= */

.intervention-photos-field{
  border:1px dashed #cbd5e1;
  border-radius:12px;
  padding:12px;
  background:#f8fafc;
}

.photo-input-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(180px,1fr));
  gap:10px;
  margin:10px 0;
}

.photo-input-card{
  display:flex!important;
  flex-direction:column;
  gap:8px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  font-weight:700;
}

.photo-input-card input{
  border:1px solid #cbd5e1;
  border-radius:8px;
  padding:9px;
  background:#fff;
}

.intervention-photo-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(160px,1fr));
  gap:12px;
  margin:10px 0;
}

.intervention-photo-card{
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  padding:8px;
  overflow:hidden;
}

.intervention-photo-card img{
  width:100%;
  height:170px;
  object-fit:cover;
  border-radius:10px;
  display:block;
}

.intervention-photo-link{
  color:var(--text);
  text-decoration:none;
}

.intervention-photo-link span{
  display:block;
  margin-top:8px;
  font-weight:700;
}

.intervention-photo-link small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-weight:400;
}

.photo-delete-option{
  display:flex!important;
  flex-direction:row!important;
  align-items:center;
  gap:8px;
  margin-top:8px;
  font-size:12px;
  color:#991b1b;
}

.photo-delete-option input{
  width:auto!important;
}

@media(max-width:700px){
  .photo-input-grid,
  .intervention-photo-grid{
    grid-template-columns:1fr;
  }
}


/* =========================================================
   Aperçus photos équipements / interventions
   ========================================================= */

.is-hidden{display:none!important;}

.equipment-photo-field,
.equipment-intervention-preview{
  border:1px dashed #cbd5e1;
  border-radius:12px;
  padding:12px;
  background:#f8fafc;
}

.equipment-photo-preview,
.equipment-detail-photo{
  width:100%;
  max-height:260px;
  object-fit:cover;
  border-radius:12px;
  border:1px solid var(--line);
  display:block;
  background:#fff;
}

.equipment-photo-preview-link,
.equipment-detail-photo-link{
  display:block;
  text-decoration:none;
  margin-bottom:10px;
}

.equipment-photo-placeholder{
  min-height:150px;
  border:1px dashed #cbd5e1;
  border-radius:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--muted);
  background:#fff;
  margin-bottom:10px;
}

.equipment-detail-placeholder{
  min-height:220px;
}

.equipment-card .equipment-detail-photo{
  margin-bottom:12px;
}

.field-error{
  display:block;
  margin-top:6px;
  color:#991b1b;
  font-weight:700;
  font-size:12px;
}

.intervention-photo-new-preview span{
  display:block;
  margin-top:8px;
  font-size:12px;
  color:var(--muted);
  word-break:break-word;
}


/* =========================================================
   Correctif détail équipement : texte conservé + photo à droite
   ========================================================= */

.equipment-detail-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:28px;
  align-items:stretch;
}

.equipment-detail-text .details{
  margin:0;
}

.equipment-detail-photo-zone{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:100%;
  padding:6px 0;
}

.equipment-detail-photo-link{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  text-decoration:none;
}

.equipment-detail-photo{
  width:min(100%,420px);
  height:280px;
  object-fit:cover;
  border-radius:16px;
  border:1px solid var(--line);
  background:#fff;
  display:block;
  box-shadow:0 14px 32px rgba(15,23,42,.08);
}

.equipment-detail-placeholder{
  width:min(100%,420px);
  height:280px;
  min-height:280px;
  font-size:12px;
  text-align:center;
  margin:0 auto;
}

@media(max-width:1180px){
  .equipment-detail-layout{
    grid-template-columns:minmax(0,1fr) minmax(320px,420px);
    gap:22px;
  }

  .equipment-detail-photo,
  .equipment-detail-placeholder{
    width:min(100%,380px);
    height:250px;
    min-height:250px;
  }
}

@media(max-width:900px){
  .equipment-detail-layout{
    grid-template-columns:1fr;
    gap:18px;
  }

  .equipment-detail-photo-zone,
  .equipment-detail-photo,
  .equipment-detail-placeholder{
    width:100%;
  }

  .equipment-detail-photo{
    max-width:520px;
    height:auto;
    aspect-ratio:4 / 3;
  }

  .equipment-detail-placeholder{
    max-width:520px;
    height:auto;
    min-height:220px;
  }
}


.red-text{color:#991b1b;font-weight:700}.field-error{color:#991b1b;font-size:12px}.muted.small-text{font-size:12px}

/* Lot 2 - Patrimoine / équipements V2 */
.filters-wide{flex-wrap:wrap;align-items:flex-end}.filters-wide input,.filters-wide select{min-width:190px;max-width:320px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.detail-list{display:grid;grid-template-columns:175px 1fr;gap:10px 14px;margin:0}.detail-list dt{font-weight:800;color:var(--muted)}.detail-list dd{margin:0;min-width:0}.kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));gap:16px;margin-bottom:16px}.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:0 5px 18px rgba(15,23,42,.06)}.kpi span{display:block;color:var(--muted);font-weight:800;font-size:12px;margin-bottom:7px}.kpi strong{font-size:20px}.equipment-photo-preview.large{max-width:100%;max-height:380px;object-fit:contain}.form-field{display:flex;flex-direction:column;gap:8px}.field-title{font-weight:800}.field-help{font-size:12px;color:var(--muted)}@media(max-width:1050px){.grid-2,.kpi-grid{grid-template-columns:1fr}.detail-list{grid-template-columns:1fr}.filters-wide input,.filters-wide select{max-width:none}}

/* Lot 2.1 - Cascades progressives des formulaires équipements */
.select-loading + .searchable-select .searchable-select-control,
select.select-loading {
  cursor: progress;
}
.select-loading + .searchable-select .searchable-select-label::after {
  content: "";
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-left: 8px;
  border: 2px solid #cbd5e1;
  border-top-color: #0b66d8;
  border-radius: 50%;
  animation: cascade-spin .75s linear infinite;
}
@keyframes cascade-spin { to { transform: rotate(360deg); } }

/* Lot 4 - Interventions V2 */
.intervention-v2-form .intervention-selection-summary{
  border:1px solid var(--line);
  background:#f8fafc;
  border-radius:12px;
  padding:12px 14px;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.intervention-task-selector{
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px;
  background:#fff;
}
.intervention-task-list{
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
  margin-top:10px;
}
.intervention-task-choice{
  display:flex;
  gap:12px;
  align-items:flex-start;
  border:1px solid var(--line);
  border-radius:12px;
  padding:10px 12px;
  background:#f8fafc;
  cursor:pointer;
}
.intervention-task-choice input{
  margin-top:4px;
}
.intervention-task-choice span{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.intervention-task-choice small,
.intervention-task-choice em{
  color:var(--muted);
  font-style:normal;
  font-size:12px;
}
.intervention-task-choice input:disabled + span{
  opacity:.78;
}
.notice-card{
  border-left:5px solid #7c3aed;
}
.commentbox{
  min-height:42px;
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px;
}

/* Lot 5.2 - Associations équipements / déclinaisons */
.stack-radio {
  align-items: flex-start;
  flex-direction: column;
  gap: .45rem;
}
.checkbox-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: .5rem;
}
.checkbox-card {
  align-items: flex-start;
  border: 1px solid var(--border, #d9e2ec);
  border-radius: 10px;
  padding: .55rem .65rem;
  background: rgba(255,255,255,.65);
}
.checkbox-card small {
  display: block;
  color: var(--muted, #64748b);
  margin-top: .15rem;
}
.equipment-declinaison-table td:last-child {
  min-width: 360px;
}


/* Lot 5.2.1 - En mode bâtiment complet, afficher les équipements sans association mais les rendre non sélectionnables. */
tr.is-planning-unavailable{opacity:.62;background:#fff7ed;}
tr.is-planning-unavailable td{color:#64748b;}
tr.is-planning-unavailable input[type="checkbox"]{cursor:not-allowed;}

/* Lot 5.6 - Correction terrain : photo équipement */
.equipment-photo-correction-zone{
  border:1px dashed #cbd5e1;
  border-radius:12px;
  padding:12px;
  background:#f8fafc;
}
.equipment-photo-correction-grid{
  display:grid;
  grid-template-columns:minmax(180px, 260px) 1fr;
  gap:14px;
  align-items:start;
}
@media(max-width:780px){
  .equipment-photo-correction-grid{grid-template-columns:1fr;}
}

/* Lot 6 - Interface agent terrain */
.agent-terrain-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.agent-terrain-card{border-left:4px solid var(--blue)}
.task-card-list{display:grid;gap:14px;margin-top:12px}
.task-card{border:1px solid var(--line);border-radius:14px;background:#fff;padding:14px;box-shadow:0 8px 20px rgba(15,23,42,.05)}
.task-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.task-card-head h3{margin:3px 0 0;font-size:16px;line-height:1.25}.task-order{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#eef6ff;color:#1d4ed8;font-size:12px;font-weight:900;padding:3px 8px}
.task-card-grid{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(220px,1fr) minmax(240px,1fr);gap:12px;align-items:start}.task-card-grid label{display:flex;flex-direction:column;gap:6px}.task-card-grid label span,.terrain-transmission-card label span{font-size:12px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.task-card-grid textarea,.terrain-transmission-card textarea{resize:vertical;min-height:44px}.task-comment-field{grid-column:auto}.task-card-meta{margin:10px 0 0}.task-card-actions{margin-top:10px;justify-content:flex-end}.terrain-transmission-card button[disabled]{opacity:.55;cursor:not-allowed;filter:grayscale(.2)}
@media(max-width:820px){.task-card-grid{grid-template-columns:1fr}.task-card-head{flex-direction:column}.task-card-actions .btn{width:100%}}

/* Lot 7 - Exports V2 */
.export-center-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}.export-card h2{display:flex;align-items:center;gap:8px}.export-filter-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}.export-filter-form label{min-width:0}.export-actions-form{justify-content:flex-end;margin-top:4px}.export-single-form{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:14px}.export-kpi-grid{grid-template-columns:repeat(3,minmax(170px,1fr))}@media(max-width:1180px){.export-center-grid{grid-template-columns:1fr}.export-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.export-filter-form{grid-template-columns:1fr}.export-filter-form .span2{grid-column:auto}.export-actions-form{justify-content:stretch}.export-actions-form .btn{width:100%;justify-content:center}.export-kpi-grid{grid-template-columns:1fr}}

/* Lot 7.2 — compteur local des exports */
.export-count-box{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--muted)}
.export-count-box strong{display:inline-flex;min-width:42px;justify-content:center;background:#eaf3ff;color:#1d4ed8;border-radius:8px;padding:5px 9px;font-size:16px}

/* Lot 7.4 - exports intervention depuis la liste */
.compact-select{
  border:1px solid #cbd5e1;
  border-radius:8px;
  background:#fff;
  min-height:38px;
  padding:8px 10px;
  font-weight:700;
  color:#0f172a;
}
.compact-select-small{
  min-height:32px;
  padding:5px 7px;
  font-size:12px;
  max-width:92px;
}
.actions-inline .compact-select-small{flex:0 0 auto}
@media(max-width:760px){.actions-inline .compact-select-small{max-width:none;width:100%}}

/* Lot 7.5 - sélection et export via fenêtre de choix */
.export-modal-backdrop{
  position:fixed;
  inset:0;
  z-index:1000;
  background:rgba(15,23,42,.48);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
}
.export-modal-card{
  width:min(460px,100%);
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  box-shadow:0 22px 70px rgba(15,23,42,.24);
  padding:20px;
}
.export-modal-card h2{margin-bottom:8px;font-size:18px}
.export-format-choice{display:flex;flex-direction:column;gap:7px;font-weight:800;margin:14px 0}
.export-format-choice select{border:1px solid #cbd5e1;border-radius:8px;background:#fff;min-height:42px;padding:9px 10px;font-weight:700;color:#0f172a;width:100%}
.export-modal-actions{justify-content:flex-end;margin-top:14px}
@media(max-width:620px){.export-modal-actions{flex-direction:column;align-items:stretch}.export-modal-actions .btn{width:100%;justify-content:center}}

/* Lot 8 - Clôture manager */
.closure-bulk-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  margin-bottom:12px;
}
.closure-bulk-grid label,
.closure-control-grid label{
  display:flex;
  flex-direction:column;
  gap:7px;
}
.closure-bulk-grid label span,
.closure-control-grid label span{
  font-size:12px;
  font-weight:900;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.03em;
}
.closure-bulk-grid textarea,
.closure-control-grid textarea{
  resize:vertical;
  min-height:78px;
}
.closure-bulk-actions{justify-content:flex-end;margin-bottom:12px}
.closure-table td:nth-child(8),
.closure-table td:nth-child(9){text-align:center;white-space:nowrap}
.closure-manager-card{border-left:5px solid #16a34a}
.btn.warning{background:#f59e0b;color:#fff;border-color:#f59e0b}
.btn.warning:hover{filter:brightness(.96)}
@media(max-width:820px){
  .closure-bulk-grid{grid-template-columns:1fr}
  .closure-bulk-actions{flex-direction:column;align-items:stretch}
  .closure-bulk-actions .btn{width:100%;justify-content:center}
}

/* Lot 9 - Tableau de bord de pilotage */
.dashboard-pilotage-card{border-left:5px solid var(--blue)}
.dashboard-pilotage-form{display:block}
.dashboard-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;align-items:end;margin-top:12px}
.dashboard-filter-grid label{display:flex;flex-direction:column;gap:6px;font-weight:800;min-width:0}
.dashboard-filter-grid label span{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.dashboard-filter-grid input,.dashboard-filter-grid select{border:1px solid #cbd5e1;border-radius:8px;background:#fff;padding:10px;width:100%;min-height:40px}
.dashboard-filter-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.dashboard-kpi-cards .stat{border-top:4px solid #dbeafe}
.dashboard-status-cards .stat{padding:14px}
.dashboard-status-cards .stat strong{font-size:23px}
.dashboard-bars{display:flex;flex-direction:column;gap:12px}.dashboard-bar-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(140px,1fr) auto;gap:12px;align-items:center}.dashboard-bar-label{display:flex;flex-direction:column;gap:3px;min-width:0}.dashboard-bar-label strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-bar-label small{color:var(--muted)}.dashboard-bar-track{height:10px;background:#e5e7eb;border-radius:999px;overflow:hidden}.dashboard-bar-track span{display:block;height:100%;background:var(--blue);border-radius:999px}.dashboard-grid-main .table-wrap table,.dashboard-grid-analysis .table-wrap table{min-width:680px}.dashboard-current-contract{margin-top:10px;color:var(--muted)}
@media(max-width:1320px){.dashboard-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-filter-actions{justify-content:flex-start}}
@media(max-width:760px){.dashboard-filter-grid{grid-template-columns:1fr}.dashboard-filter-actions{flex-direction:column;align-items:stretch}.dashboard-filter-actions .btn{width:100%;justify-content:center}.dashboard-bar-row{grid-template-columns:1fr}.dashboard-bar-label strong{white-space:normal}.dashboard-status-cards{grid-template-columns:1fr}}


/* Lot 10 - Journal d'activité */
.activity-json-preview {
    white-space: pre-wrap;
    word-break: break-word;
    max-width: 560px;
    max-height: 220px;
    overflow: auto;
    padding: 0.75rem;
    border-radius: 0.75rem;
    background: rgba(15, 23, 42, 0.06);
    font-size: 0.82rem;
}

/* Lot 11 - Centre de notifications */
.nav-counter{
  margin-left:auto;
  min-width:22px;
  height:22px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 6px;
  background:#dc2626;
  color:#fff;
  font-size:11px;
  font-weight:900;
}
.notification-panel-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-top:1px solid var(--line);
  padding:10px 12px;
}
.notification-panel-footer form{margin:0}
.notification-center-card{border-left:5px solid #2563eb}
.notification-filter-form{grid-template-columns:repeat(6,minmax(0,1fr));align-items:end}
.notification-center-table .notification-row-unread{background:#eff6ff}
.notification-center-table td:nth-child(2){white-space:nowrap}
.notification-inline-link{margin-top:4px;display:inline-flex}
@media(max-width:1100px){.notification-filter-form{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.notification-filter-form{grid-template-columns:1fr}.notification-panel-footer{flex-direction:column;align-items:stretch}.notification-panel-footer .linkbtn{text-align:center}.notification-panel-footer form button{width:100%}}

/* Lot 12 - Capture GPS mobile */
.gps-capture-card{
  border:1px solid var(--line);
  background:#f8fafc;
  border-radius:12px;
  padding:14px;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.gps-capture-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.gps-capture-grid{
  display:grid;
  grid-template-columns:1.2fr 1fr 1fr;
  gap:12px;
}
.gps-status{min-height:18px}
.gps-status-ok{color:#15803d;font-weight:800}
.gps-status-error{color:#b91c1c;font-weight:800}
.gps-status-loading{color:#1d4ed8;font-weight:800}
@media(max-width:820px){
  .gps-capture-head{flex-direction:column;align-items:stretch}
  .gps-capture-head .btn{width:100%;justify-content:center;min-height:46px}
  .gps-capture-grid{grid-template-columns:1fr}
}


/* LOT 14.3 - Affinage mise en page du commentaire global agent */
.task-cards-form{display:block;width:100%;min-width:0}
.task-global-comment-card{
  margin-top:18px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#f8fafc;
  padding:18px;
  display:grid;
  gap:14px;
  clear:both;
}
.task-global-comment-head h3{
  margin:0 0 6px;
  font-size:18px;
}
.task-global-comment-head .small-text{
  margin:0;
}
.task-global-comment-field{
  display:flex;
  flex-direction:column;
  gap:8px;
  width:100%;
  min-width:0;
}
.task-global-comment-field span{
  font-size:12px;
  font-weight:900;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.03em;
}
.task-global-comment-field textarea{
  width:100%;
  border:1px solid #cbd5e1;
  border-radius:10px;
  padding:12px 14px;
  background:#fff;
  resize:vertical;
  min-height:110px;
  line-height:1.5;
}
.task-global-comment-actions{
  display:flex;
  justify-content:flex-start;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
@media(max-width:760px){
  .task-global-comment-card{padding:14px;margin-top:14px;gap:12px}
  .task-global-comment-actions{justify-content:stretch}
  .task-global-comment-actions .btn,
  .task-global-comment-actions button{width:100%;justify-content:center}
}

/* =========================================================
   LOT 14.4 - Ergonomie des listes interventions / équipements
   Objectif : listes plus lisibles, actions plus propres,
   meilleure utilisation tablette/mobile sans changement métier.
   ========================================================= */
.list-filter-card{
  border-radius:16px;
  padding:16px;
  background:linear-gradient(180deg,#fff,#fbfdff);
}
.list-filter-card .filters{
  margin-bottom:10px;
}
.list-filter-card .filters input,
.list-filter-card .filters select,
.list-filter-card .searchable-select-control{
  min-height:42px;
  border-radius:10px;
}
.list-filter-summary{
  margin:8px 0 0;
  padding:8px 10px;
  border-radius:10px;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.list-filter-summary strong{
  color:#0b66d8;
  font-size:15px;
}
.list-results-card,
.equipment-list-card,
.closure-action-card{
  border-radius:16px;
}
.list-table-wrap{
  border:1px solid var(--line);
  border-radius:14px;
  overflow:auto;
  background:#fff;
}
.list-comfort-table{
  border-collapse:separate;
  border-spacing:0;
}
.list-comfort-table thead th{
  position:sticky;
  top:0;
  z-index:1;
  background:#f8fafc;
  color:#475569;
  font-size:11px;
  letter-spacing:.025em;
  text-transform:uppercase;
  border-bottom:1px solid #dbe3ee;
}
.list-comfort-table tbody tr{
  transition:background .15s ease, box-shadow .15s ease;
}
.list-comfort-table tbody tr:hover:not(.site-group-row){
  background:#f8fbff;
}
.list-comfort-table td{
  line-height:1.35;
  vertical-align:middle!important;
}
.list-comfort-table td small{
  display:inline-block;
  margin-top:3px;
  color:#64748b;
  line-height:1.25;
}
.strong-link{
  font-weight:900;
  text-decoration:none;
}
.strong-link:hover{
  text-decoration:underline;
}
.date-cell{
  white-space:nowrap;
  font-weight:700;
  color:#334155;
}
.list-comfort-table .check-col{
  width:42px;
  text-align:center;
}
.list-comfort-table .check-col input[type="checkbox"]{
  width:18px;
  height:18px;
  cursor:pointer;
}
.list-comfort-table .actions-cell{
  min-width:210px;
}
.list-comfort-table .actions-inline{
  gap:7px;
}
.list-comfort-table .actions-inline .btn.small{
  border-radius:9px;
  min-height:34px!important;
}
.equipment-list-table td[data-label="Désignation"],
.intervention-list-table td[data-label="Libellé"],
.closure-table td[data-label="Intervention"]{
  min-width:190px;
}
.equipment-list-table td[data-label="Type complet"],
.intervention-list-table td[data-label="Équipement"],
.closure-table td[data-label="Équipement"]{
  min-width:220px;
}
.site-group-row .site-group-title{
  font-weight:900;
  color:#0f172a;
}
.agent-list-cards{
  gap:18px;
}
.agent-list-cards .agent-terrain-card{
  border-radius:16px;
  border-left-width:5px;
  box-shadow:0 8px 24px rgba(15,23,42,.06);
}
.agent-list-cards .agent-terrain-card h2 a{
  text-decoration:none;
}
.agent-list-cards .agent-terrain-card h2 a:hover{
  text-decoration:underline;
}
.agent-card-actions{
  margin-top:auto;
  padding-top:4px;
}
.agent-card-actions .btn{
  min-height:40px;
}
@media(max-width:1180px){
  .list-comfort-table .actions-cell{
    min-width:180px;
  }
  .list-filter-card .filters .searchable-select,
  .list-filter-card .filters input{
    flex:1 1 220px;
  }
}
@media(max-width:760px){
  .list-filter-card{
    padding:13px;
  }
  .list-filter-summary{
    display:flex;
    width:100%;
    justify-content:center;
    text-align:center;
  }
  .list-table-wrap{
    border:0;
    border-radius:0;
    background:transparent;
    overflow:visible;
  }
  .list-comfort-table tbody tr:not(.site-group-row){
    padding:12px;
    border-radius:16px;
    box-shadow:0 8px 22px rgba(15,23,42,.06);
  }
  .list-comfort-table tbody tr:hover:not(.site-group-row){
    background:#fff;
  }
  .list-comfort-table td{
    padding:9px 0!important;
  }
  .list-comfort-table td:before{
    color:#64748b;
  }
  .list-comfort-table .check-col{
    width:100%;
    text-align:left;
  }
  .list-comfort-table td.actions-cell{
    display:block!important;
    min-width:0;
  }
  .list-comfort-table td.actions-cell:before{
    display:block;
    margin-bottom:8px;
  }
  .list-comfort-table td.actions-cell .actions-inline{
    grid-template-columns:1fr;
  }
  .list-comfort-table .actions-inline .btn,
  .list-comfort-table .actions-inline form,
  .agent-card-actions .btn,
  .agent-card-actions form{
    width:100%;
  }
  .agent-list-cards{
    grid-template-columns:1fr;
    gap:12px;
  }
}

/* =========================================================
   LOT 14.5 - Confort mobile/tablette global
   Objectif : rendre les écrans plus agréables au doigt,
   clarifier les en-têtes et éviter les zones trop serrées.
   ========================================================= */

@media (max-width:1180px){
  html{
    scroll-padding-top:12px;
  }

  body{
    -webkit-text-size-adjust:100%;
  }

  .content{
    max-width:100%;
    overflow-x:hidden;
  }

  .toolbar{
    background:#fff;
    border:1px solid var(--line);
    border-radius:16px;
    padding:14px;
    box-shadow:0 8px 24px rgba(15,23,42,.05);
  }

  .toolbar h1{
    margin-bottom:6px;
    line-height:1.2;
  }

  .toolbar .muted{
    margin-top:0;
    line-height:1.35;
  }

  .toolbar .actions-row{
    width:100%;
    gap:8px;
  }

  .toolbar .actions-row .btn,
  .toolbar .actions-row button{
    min-height:42px;
  }

  .card{
    box-shadow:0 8px 24px rgba(15,23,42,.055);
  }

  .card-title-row{
    gap:10px;
  }

  .card-title-row h2{
    line-height:1.25;
  }

  .btn,
  button,
  input,
  select,
  textarea,
  .searchable-select-control,
  .agent-picker-control{
    font-size:14px;
  }

  .btn,
  button.btn,
  .searchable-select-control,
  .agent-picker-control{
    min-height:42px;
  }

  input,
  select,
  textarea{
    min-height:42px;
  }

  textarea{
    line-height:1.5;
  }

  .filters,
  .filters-wide{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr));
    align-items:end;
    gap:10px!important;
  }

  .filters > *,
  .filters-wide > *,
  .filters .searchable-select,
  .filters-wide .searchable-select,
  .filters input,
  .filters-wide input,
  .filters select,
  .filters-wide select,
  .filters .btn,
  .filters-wide .btn{
    min-width:0!important;
    max-width:none!important;
    width:100%!important;
  }

  .filters .btn,
  .filters-wide .btn{
    justify-content:center;
  }

  .list-filter-card{
    position:relative;
  }

  .list-filter-summary{
    line-height:1.35;
  }

  .actions-row,
  .actions{
    gap:8px;
  }

  .badge{
    line-height:1.15;
  }

  .details,
  .detail-list{
    gap:8px 12px;
  }
}

@media (max-width:920px){
  .topbar{
    border-bottom:1px solid #dbe3ee;
    box-shadow:0 4px 18px rgba(15,23,42,.05);
  }

  .topbar-title strong{
    max-width:56vw;
  }

  .user{
    gap:8px;
  }

  .content{
    padding:12px;
  }

  .toolbar{
    padding:13px;
    margin-bottom:12px;
  }

  .toolbar .actions-row{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .toolbar .actions-row .btn,
  .toolbar .actions-row button,
  .toolbar .actions-row form{
    width:100%;
  }

  .toolbar .actions-row .btn,
  .toolbar .actions-row button{
    justify-content:center;
  }

  .card{
    padding:14px;
    border-radius:15px;
    margin-bottom:12px;
  }

  .cards{
    gap:12px;
  }

  .stat{
    border-radius:15px;
  }

  .form-grid{
    gap:12px;
  }

  .form-grid label,
  .filters label{
    gap:6px;
  }

  .commentbox{
    min-height:82px;
    line-height:1.5;
  }

  .photo-input-card,
  .intervention-photo-card,
  .task-card,
  .agent-terrain-card,
  .agent-intervention-card{
    border-radius:15px;
  }

  .task-card-grid{
    gap:12px;
  }

  .task-comment-field{
    grid-column:1 / -1;
  }
}

@media (max-width:760px){
  body{
    background:#f5f7fb;
  }

  .sidebar{
    border-radius:0 0 18px 18px;
  }

  .sidebar nav{
    padding-bottom:7px!important;
  }

  .sidebar nav a{
    min-height:38px!important;
    padding:9px 11px!important;
  }

  .topbar{
    min-height:50px;
    padding:9px 12px;
  }

  .content{
    padding:10px;
    padding-bottom:22px;
  }

  .toolbar{
    border-radius:15px;
    padding:12px;
  }

  .toolbar h1{
    font-size:20px;
  }

  .toolbar .actions-row{
    grid-template-columns:1fr;
  }

  .filters,
  .filters-wide,
  .agent-filter-panel .agent-filters{
    grid-template-columns:1fr!important;
    gap:8px!important;
  }

  .filters .btn,
  .filters-wide .btn,
  .agent-filter-panel .agent-filters .btn{
    min-height:42px!important;
  }

  .list-filter-card{
    padding:12px;
  }

  .list-filter-summary{
    padding:9px 10px;
    border-radius:12px;
  }

  .list-comfort-table tbody tr:not(.site-group-row){
    margin-bottom:10px;
  }

  .list-comfort-table td{
    line-height:1.42;
  }

  .list-comfort-table td:before{
    margin-bottom:2px;
  }

  .list-comfort-table .actions-inline{
    gap:8px!important;
  }

  .list-comfort-table .actions-inline .btn,
  .list-comfort-table .actions-inline button,
  .list-comfort-table .actions-inline form{
    min-height:42px!important;
  }

  .btn.small{
    min-height:38px!important;
    padding:8px 10px!important;
  }

  .details,
  .detail-list{
    grid-template-columns:1fr!important;
  }

  .details dt,
  .detail-list dt{
    margin-top:4px;
  }

  .details dd,
  .detail-list dd{
    padding-bottom:6px;
    border-bottom:1px solid #eef2f7;
  }

  .details dd:last-child,
  .detail-list dd:last-child{
    border-bottom:0;
  }

  .equipment-detail-photo,
  .equipment-detail-placeholder,
  .intervention-photo-card img{
    border-radius:14px;
  }

  .task-global-comment-card{
    border-radius:15px;
  }

  .task-global-comment-field textarea{
    min-height:120px;
  }

  .notification-panel,
  .agent-picker-panel,
  .searchable-select-panel{
    border-radius:16px!important;
  }

  .searchable-select-option,
  .agent-picker-option{
    min-height:42px;
  }
}

@media (max-width:430px){
  .content{
    padding:8px;
    padding-bottom:20px;
  }

  .toolbar{
    padding:11px;
  }

  .toolbar h1{
    font-size:19px;
  }

  .card{
    padding:12px;
  }

  .card-title-row{
    align-items:stretch;
  }

  .card-title-row .badge{
    align-self:flex-start;
  }

  .topbar-title strong{
    max-width:50vw;
  }

  .btn,
  button.btn,
  .searchable-select-control,
  .agent-picker-control,
  input,
  select,
  textarea{
    font-size:13px;
  }

  .task-order{
    font-size:12px;
  }

  .site-group-title{
    line-height:1.25;
  }
}

/* =========================================================
   LOT 14.6 - Dashboard + navigation générale
   Objectif : accueil plus lisible, navigation plus confortable
   ========================================================= */

/* Navigation générale */
.sidebar{
  box-shadow:12px 0 32px rgba(8,37,66,.18);
}
.sidebar nav{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.sidebar nav p{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:20px;
  margin-bottom:7px;
  padding:0 8px;
  letter-spacing:.06em;
}
.sidebar nav p:after{
  content:"";
  height:1px;
  flex:1;
  background:rgba(255,255,255,.14);
}
.sidebar nav a{
  position:relative;
  transition:background .16s ease, transform .16s ease, color .16s ease;
}
.sidebar nav a:hover{
  transform:translateX(2px);
}
.sidebar nav a.active{
  background:rgba(11,102,216,.96)!important;
  box-shadow:0 10px 22px rgba(11,102,216,.24);
}
.sidebar nav a.active:before{
  content:"";
  position:absolute;
  left:5px;
  top:50%;
  width:4px;
  height:22px;
  border-radius:999px;
  background:#fff;
  transform:translateY(-50%);
}
.topbar{
  backdrop-filter:saturate(145%) blur(10px);
  background:rgba(255,255,255,.94);
}
.topbar-title{
  min-width:0;
  display:flex;
  align-items:center;
  gap:10px;
}
.topbar-title strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.topbar-menu-button{
  display:none;
  width:40px;
  height:40px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  color:#0f172a;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  box-shadow:0 6px 16px rgba(15,23,42,.06);
}
.topbar-menu-button .icon{width:20px;height:20px}
.sidebar-backdrop{
  display:none;
}
body.sidebar-mobile-open{
  overflow:hidden;
}

/* Dashboard : carte de pilotage */
.dashboard-pilotage-card{
  position:relative;
  overflow:hidden;
  border-left:0!important;
  border-color:#dbeafe;
  background:
    radial-gradient(circle at top right, rgba(11,102,216,.12), transparent 34%),
    linear-gradient(135deg,#fff 0%,#f8fbff 56%,#eef6ff 100%);
  box-shadow:0 16px 40px rgba(15,23,42,.08);
}
.dashboard-pilotage-card:before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:4px;
  background:linear-gradient(90deg,var(--blue),#38bdf8,#16a34a);
}
.dashboard-pilotage-title{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
}
.dashboard-pilotage-title strong{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:22px;
  line-height:1.15;
  color:#0f2f52;
}
.dashboard-pilotage-title .icon{
  width:24px;
  height:24px;
  color:var(--blue);
}
.dashboard-pilotage-title .muted{
  flex-basis:100%;
  max-width:860px;
  font-size:13px;
  line-height:1.45;
}
.dashboard-filter-grid{
  background:rgba(255,255,255,.72);
  border:1px solid rgba(191,219,254,.72);
  border-radius:16px;
  padding:14px;
}
.dashboard-current-contract{
  display:inline-flex;
  flex-wrap:wrap;
  gap:5px;
  align-items:center;
  padding:9px 12px;
  border-radius:999px;
  background:#fff;
  border:1px solid #dbeafe;
  color:#475569!important;
  box-shadow:0 8px 20px rgba(15,23,42,.05);
}
.dashboard-current-contract strong{
  color:#0f172a;
}

/* Dashboard : KPI */
.dashboard-kpi-cards,
.dashboard-status-cards{
  align-items:stretch;
}
.dashboard-kpi-cards .stat,
.dashboard-status-cards .stat{
  position:relative;
  overflow:hidden;
  border-radius:16px;
  border:1px solid #e2e8f0;
  box-shadow:0 10px 26px rgba(15,23,42,.06);
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.dashboard-kpi-cards .stat:hover,
.dashboard-status-cards .stat:hover{
  transform:translateY(-2px);
  box-shadow:0 16px 34px rgba(15,23,42,.10);
  border-color:#bfdbfe;
}
.dashboard-kpi-cards .stat:after,
.dashboard-status-cards .stat:after{
  content:"";
  position:absolute;
  right:-34px;
  top:-34px;
  width:92px;
  height:92px;
  border-radius:999px;
  background:rgba(11,102,216,.06);
}
.dashboard-kpi-cards .stat .stat-icon,
.dashboard-status-cards .stat .stat-icon{
  position:relative;
  z-index:1;
  border-radius:14px;
}
.dashboard-kpi-cards .stat strong,
.dashboard-status-cards .stat strong{
  position:relative;
  z-index:1;
  line-height:1;
}
.dashboard-kpi-cards .stat small,
.dashboard-status-cards .stat small{
  position:relative;
  z-index:1;
  font-weight:800;
  line-height:1.25;
}
.dashboard-kpi-cards .stat a{
  position:relative;
  z-index:1;
  justify-self:start;
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:6px 10px;
  border-radius:999px;
  background:#eff6ff;
  text-decoration:none;
  font-size:12px;
}
.dashboard-status-cards .stat{
  min-height:92px;
}

/* Dashboard : graphiques, tableaux et analyses */
.dashboard-grid-main,
.dashboard-grid-analysis{
  gap:18px;
}
.dashboard-grid-main .card,
.dashboard-grid-analysis .card,
.dashboard-equipment-alert-card,
.dashboard-recent-card{
  border-radius:18px;
}
.dashboard-visual-card{
  display:flex;
  flex-direction:column;
  align-items:center;
}
.dashboard-visual-card h2{
  align-self:stretch;
}
.dashboard-visual-card .donut{
  width:205px;
  height:205px;
  box-shadow:inset 0 0 0 1px rgba(226,232,240,.8), 0 12px 28px rgba(15,23,42,.08);
}
.dashboard-visual-card .donut:after{
  inset:52px;
  box-shadow:inset 0 0 0 1px #eef2f7;
}
.dashboard-visual-card .legend{
  width:100%;
  margin-top:4px;
  padding:12px;
  border-radius:14px;
  background:#f8fafc;
}
.dashboard-card-toolbar{
  margin-bottom:12px;
  padding:0!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.dashboard-card-toolbar h2{
  margin:0;
}
.dashboard-watch-card .table-wrap,
.dashboard-equipment-alert-card .table-wrap,
.dashboard-recent-card .table-wrap{
  border:1px solid #e2e8f0;
  border-radius:14px;
  overflow:auto;
  background:#fff;
}
.dashboard-watch-card table,
.dashboard-equipment-alert-card table,
.dashboard-recent-card table{
  margin:0;
}
.dashboard-watch-card th,
.dashboard-equipment-alert-card th,
.dashboard-recent-card th{
  background:#f8fbff;
}
.dashboard-bars{
  gap:14px!important;
}
.dashboard-bar-row{
  padding:12px;
  border:1px solid #e2e8f0;
  border-radius:14px;
  background:#fff;
}
.dashboard-bar-track{
  height:12px!important;
  background:#edf2f7!important;
}
.dashboard-bar-track span{
  background:linear-gradient(90deg,var(--blue),#38bdf8)!important;
}
.dashboard-equipment-alert-card{
  border-color:#fed7aa;
  background:linear-gradient(180deg,#fff,#fffaf5);
}
.dashboard-equipment-alert-card > p{
  max-width:1050px;
  line-height:1.45;
}

@media (max-width:1180px) and (min-width:761px){
  .sidebar nav p:after{display:none}
  .sidebar nav a:hover{transform:none}
  .sidebar nav a.active:before{display:none}
  .dashboard-pilotage-title strong{font-size:20px}
  .dashboard-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding:12px}
  .dashboard-visual-card .donut{width:185px;height:185px}
  .dashboard-visual-card .donut:after{inset:48px}
}

@media (max-width:760px){
  .topbar-menu-button{
    display:inline-flex;
    flex:0 0 auto;
  }
  .topbar-title{
    flex:1 1 auto;
  }
  .sidebar{
    position:fixed!important;
    inset:0 auto 0 0!important;
    width:min(86vw,320px)!important;
    height:100vh!important;
    max-height:none!important;
    overflow:auto!important;
    display:block!important;
    padding:14px!important;
    border-radius:0 20px 20px 0!important;
    transform:translateX(-105%)!important;
    transition:transform .22s ease;
    z-index:80!important;
  }
  .sidebar.open{
    transform:translateX(0)!important;
  }
  .sidebar nav{
    display:flex!important;
    flex-direction:column!important;
    overflow:visible!important;
    gap:2px!important;
    padding-bottom:20px!important;
  }
  .sidebar nav p{
    display:flex!important;
    margin:18px 8px 7px!important;
  }
  .sidebar nav a{
    width:100%;
    border-radius:12px!important;
    justify-content:flex-start;
    white-space:normal!important;
  }
  .sidebar nav a.active:before{display:block}
  .sidebar-logo{
    width:100%!important;
    min-height:54px;
    margin:0 0 12px!important;
  }
  .sidebar-logo img{max-height:46px!important}
  .brand{height:auto!important;margin-bottom:10px!important;font-size:18px!important}
  .sidebar-backdrop{
    position:fixed;
    inset:0;
    background:rgba(15,23,42,.42);
    z-index:70;
    opacity:0;
    pointer-events:none;
    transition:opacity .2s ease;
  }
  body.sidebar-mobile-open .sidebar-backdrop{
    display:block;
    opacity:1;
    pointer-events:auto;
  }
  .dashboard-pilotage-card{
    border-radius:16px;
  }
  .dashboard-pilotage-title strong{
    font-size:19px;
  }
  .dashboard-filter-grid{
    padding:12px;
    border-radius:14px;
  }
  .dashboard-current-contract{
    width:100%;
    border-radius:14px;
    align-items:flex-start;
  }
  .dashboard-kpi-cards,
  .dashboard-status-cards{
    grid-template-columns:1fr!important;
  }
  .dashboard-kpi-cards .stat,
  .dashboard-status-cards .stat{
    min-height:86px;
  }
  .dashboard-visual-card .donut{
    width:175px;
    height:175px;
  }
  .dashboard-visual-card .donut:after{
    inset:45px;
  }
  .dashboard-bar-row{
    padding:11px;
  }
}

/* =========================================================
   LOT 14.6.1 - Correctif sidebar scrollable
   Objectif : éviter que le bas du menu soit coupé lorsque
   l'écran est moins haut ou que l'affichage/police est agrandi.
   ========================================================= */
@media (min-width:1181px){
  .sidebar{
    height:100vh!important;
    height:100dvh!important;
    max-height:100vh!important;
    max-height:100dvh!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
    padding-bottom:18px!important;
  }

  .sidebar nav{
    padding-bottom:18px!important;
  }

  .sidebar nav a{
    min-width:0;
  }

  .sidebar nav a span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  .sidebar::-webkit-scrollbar{
    width:8px;
  }

  .sidebar::-webkit-scrollbar-track{
    background:rgba(255,255,255,.08);
    border-radius:999px;
  }

  .sidebar::-webkit-scrollbar-thumb{
    background:rgba(255,255,255,.32);
    border-radius:999px;
  }

  .sidebar:hover::-webkit-scrollbar-thumb{
    background:rgba(255,255,255,.48);
  }
}

@media (max-height:760px) and (min-width:1181px){
  .sidebar{
    padding-top:6px!important;
    padding-bottom:12px!important;
  }

  .sidebar-logo{
    margin-bottom:4px!important;
  }

  .brand{
    margin-bottom:5px!important;
  }

  .sidebar nav p{
    margin-top:7px!important;
    margin-bottom:3px!important;
  }

  .sidebar nav a{
    min-height:25px!important;
  }
}

/* Tablette / petit laptop : si le menu est en bandeau horizontal,
   on affiche un léger indice de défilement pour retrouver tous les menus. */
@media (max-width:1180px) and (min-width:761px){
  .sidebar nav{
    scrollbar-width:thin!important;
    scrollbar-color:rgba(255,255,255,.36) transparent!important;
    padding-bottom:8px!important;
  }

  .sidebar nav::-webkit-scrollbar{
    display:block!important;
    height:5px;
  }

  .sidebar nav::-webkit-scrollbar-track{
    background:rgba(255,255,255,.08);
    border-radius:999px;
  }

  .sidebar nav::-webkit-scrollbar-thumb{
    background:rgba(255,255,255,.34);
    border-radius:999px;
  }
}

/* =========================================================
   LOT 14.7 - Formulaires principaux : lisibilité + confort terrain
   ========================================================= */
.form-page-toolbar{
  background:linear-gradient(135deg,#ffffff,#f8fbff);
  border:1px solid var(--line);
  border-radius:18px;
  padding:18px 20px;
  box-shadow:0 10px 24px rgba(15,23,42,.055);
}
.form-page-toolbar h1{
  margin-bottom:6px;
}
.form-page-toolbar p{
  max-width:920px;
  line-height:1.5;
  margin-bottom:0;
}
.form-card,
.comfort-form-card,
.form-step-card,
.form-info-card,
.form-actions-card{
  border-radius:18px;
}
.comfort-form-card,
.form-step-card{
  padding:20px;
}
.form-step-card>h2,
.comfort-form-card>h2{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:14px;
  font-size:17px;
}
.form-step-card>h2::before,
.comfort-form-card>h2::before{
  content:"";
  width:8px;
  height:24px;
  border-radius:999px;
  background:var(--blue);
  flex:0 0 auto;
}
.form-grid.two{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.form-grid.three{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.span3{
  grid-column:span 3;
}
.comfort-form{
  gap:16px;
  align-items:start;
}
.comfort-form>label,
.comfort-form>.form-field{
  background:#fbfdff;
  border:1px solid #e5edf6;
  border-radius:14px;
  padding:13px;
  min-width:0;
}
.comfort-form>label{
  font-weight:850;
}
.comfort-form>label:focus-within,
.comfort-form>.form-field:focus-within,
.equipment-photo-field:focus-within,
.gps-capture-card:focus-within{
  border-color:#93c5fd;
  box-shadow:0 0 0 3px rgba(147,197,253,.20);
  background:#fff;
}
.comfort-form input,
.comfort-form select,
.comfort-form textarea,
.comfort-form .searchable-select-control,
.equipment-comfort-form input,
.equipment-comfort-form select,
.equipment-comfort-form textarea,
.equipment-comfort-form .searchable-select-control{
  min-height:44px;
  border-radius:10px;
}
.comfort-form textarea{
  line-height:1.5;
  resize:vertical;
}
.comfort-form small.red-text,
.equipment-comfort-form small.red-text{
  display:block;
  margin-top:2px;
}
.comfort-form .field-title,
.equipment-comfort-form .field-title{
  font-size:13px;
  letter-spacing:.01em;
}
.comfort-form .field-help,
.equipment-comfort-form .field-help{
  line-height:1.45;
}
.comfort-form .hint,
.equipment-comfort-form .hint{
  border:1px solid #dbeafe;
  background:#eff6ff;
  color:#1e3a8a;
  border-radius:14px;
  padding:12px 14px;
  line-height:1.45;
}
.equipment-comfort-form .gps-capture-card,
.equipment-comfort-form .equipment-photo-field,
.intervention-v2-form .intervention-selection-summary,
.intervention-v2-form .intervention-task-selector{
  border-radius:16px;
}
.intervention-v2-form .intervention-selection-summary{
  padding:14px 16px;
  display:grid;
  gap:5px;
  background:#f8fafc;
  border:1px solid var(--line);
}
.intervention-v2-form .intervention-selection-summary strong{
  font-size:13px;
  text-transform:uppercase;
  color:var(--muted);
  letter-spacing:.03em;
}
.intervention-v2-form .intervention-task-selector{
  padding:15px;
  background:#f8fafc;
  border:1px solid var(--line);
}
.intervention-task-list{
  display:grid;
  gap:9px;
}
.intervention-task-choice{
  background:#fff;
  border:1px solid #e2e8f0;
  border-radius:12px;
  padding:10px 12px;
  align-items:flex-start!important;
  justify-content:flex-start!important;
}
.intervention-task-choice span{
  display:grid;
  gap:3px;
}
.intervention-task-choice small,
.intervention-task-choice em{
  color:var(--muted);
  font-size:12px;
  line-height:1.35;
}
.radio-row.stack-radio{
  display:grid;
  gap:9px;
}
.radio-row.stack-radio .check{
  justify-content:flex-start;
  background:#fff;
  border:1px solid #e2e8f0;
  border-radius:12px;
  padding:10px 12px;
  line-height:1.35;
}
.radio-row.stack-radio .check:has(input:checked){
  border-color:#93c5fd;
  background:#eff6ff;
}
.form-action-bar,
.comfort-form .actions.form-action-bar{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:10px;
  padding-top:4px;
}
.comfort-form .actions.form-action-bar{
  border-top:1px solid #edf2f7;
  padding-top:16px;
}
.form-actions-card{
  background:#fbfdff;
  border-style:dashed;
}
.form-actions-card .form-action-bar{
  margin:0;
}
.form-actions-card .btn,
.form-action-bar .btn,
.form-action-bar button{
  min-height:42px;
}
.planning-comfort-form{
  display:block;
}
.planning-comfort-form .compact-toolbar{
  background:#f8fafc;
  border:1px solid #eef2f7;
  border-radius:16px;
  padding:14px 16px;
}
.planning-comfort-form .alert{
  line-height:1.45;
}
.form-selection-table th{
  background:#f1f5f9;
}
.form-selection-table tbody tr{
  transition:background .15s ease, box-shadow .15s ease;
}
.form-selection-table tbody tr:hover{
  background:#fbfdff;
}
.form-selection-table td{
  vertical-align:middle;
}
.form-selection-table .check-col{
  width:46px;
  text-align:center;
}
.form-selection-table input[type="checkbox"]{
  width:18px;
  height:18px;
}
.checkbox-grid{
  gap:9px;
}
.checkbox-card{
  justify-content:flex-start!important;
  align-items:flex-start!important;
  border-radius:12px;
  padding:9px 10px;
  background:#fff;
}
.checkbox-card span{
  display:grid;
  gap:2px;
  min-width:0;
}
.checkbox-card small{
  color:var(--muted);
}
.notice-card{
  border-radius:15px;
  line-height:1.5;
}
@media(max-width:1180px){
  .form-grid.three{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .span3{
    grid-column:span 2;
  }
}
@media(max-width:900px){
  .form-page-toolbar{
    padding:15px;
    border-radius:16px;
  }
  .comfort-form-card,
  .form-step-card{
    padding:15px;
  }
  .form-grid.two,
  .form-grid.three,
  .comfort-form,
  .equipment-comfort-form{
    grid-template-columns:1fr!important;
  }
  .span2,
  .span3{
    grid-column:auto!important;
  }
  .form-action-bar,
  .comfort-form .actions.form-action-bar,
  .form-actions-card .form-action-bar{
    justify-content:stretch;
    flex-direction:column-reverse;
    align-items:stretch;
  }
  .form-action-bar .btn,
  .form-action-bar button,
  .form-actions-card .btn,
  .form-actions-card button{
    width:100%;
    justify-content:center;
  }
}
@media(max-width:760px){
  .comfort-form>label,
  .comfort-form>.form-field,
  .equipment-comfort-form>label,
  .equipment-comfort-form>.form-field{
    padding:12px;
    border-radius:13px;
  }
  .comfort-form input,
  .comfort-form select,
  .comfort-form textarea,
  .comfort-form .searchable-select-control,
  .equipment-comfort-form input,
  .equipment-comfort-form select,
  .equipment-comfort-form textarea,
  .equipment-comfort-form .searchable-select-control{
    min-height:46px;
  }
  .planning-comfort-form .compact-toolbar{
    padding:12px;
  }
  .planning-comfort-form .compact-toolbar .actions-row{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
  }
  .planning-comfort-form .compact-toolbar .actions-row .btn,
  .planning-comfort-form .compact-toolbar .actions-row button{
    width:100%;
    justify-content:center;
  }
}

/* =========================================================
   LOT 14.7.1 - Correctif menu mobile : dernier élément visible
   Objectif : permettre le défilement complet de la sidebar sur téléphone,
   même avec police système agrandie ou barre navigateur basse.
   ========================================================= */
@media (max-width:760px){
  .sidebar{
    height:100vh!important;
    height:100dvh!important;
    max-height:100vh!important;
    max-height:100dvh!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
    padding-bottom:calc(34px + env(safe-area-inset-bottom, 0px))!important;
  }

  .sidebar nav{
    padding-bottom:calc(96px + env(safe-area-inset-bottom, 0px))!important;
  }

  .sidebar nav a:last-child{
    margin-bottom:18px!important;
  }
}


/* =========================================================
   LOT 14.8 - Pages détail / consultation
   ========================================================= */

.detail-page-head{
  gap:18px;
}

.detail-page-head h1{
  line-height:1.15;
  letter-spacing:-.03em;
}

.detail-page-head .actions-row,
.detail-page-head .actions{
  align-items:center;
}

.detail-card{
  position:relative;
  overflow:hidden;
}

.detail-card::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:3px;
  background:linear-gradient(90deg, rgba(37,99,235,.9), rgba(20,184,166,.35), transparent);
  opacity:.75;
}

.detail-kpi-grid .stat-card,
.detail-summary-card,
.kpi-grid.detail-kpi-grid .kpi{
  border-radius:18px;
  box-shadow:0 12px 30px rgba(15,23,42,.07);
}

.detail-summary-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px;
  margin-bottom:16px;
}

.detail-summary-card{
  padding:18px;
  min-height:98px;
}

.detail-summary-card span{
  display:block;
  color:var(--muted);
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
  margin-bottom:8px;
}

.detail-summary-card strong{
  display:block;
  font-size:20px;
  line-height:1.25;
  color:var(--text);
}

.detail-card .details,
.detail-card .detail-list{
  row-gap:12px;
}

.detail-card .details dt,
.detail-card .detail-list dt{
  color:#64748b;
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.035em;
}

.detail-card .details dd,
.detail-card .detail-list dd{
  color:#0f172a;
  font-weight:650;
}

.equipment-show-main-grid{
  grid-template-columns:minmax(0,1fr) minmax(360px,520px);
  align-items:stretch;
}

.equipment-show-photo-card{
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}

.equipment-show-photo-card .equipment-photo-preview-link{
  display:flex;
  align-items:center;
  justify-content:center;
  flex:1;
  margin:0;
}

.equipment-show-photo-card .equipment-photo-preview.large{
  width:100%;
  max-height:none;
  height:320px;
  object-fit:cover;
  border-radius:16px;
  box-shadow:0 14px 32px rgba(15,23,42,.08);
}

.equipment-show-photo-card .equipment-photo-placeholder{
  min-height:260px;
  margin:0;
  border-radius:16px;
}

.equipment-history-card .table-wrap,
.programmation-generated-card .table-wrap,
.activity-log-card .table-wrap,
.notification-center-card .table-wrap{
  border-radius:16px;
  border:1px solid var(--line);
  background:#fff;
  overflow:auto;
}

.detail-data-table{
  width:100%;
}

.detail-data-table th{
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:#64748b;
  background:#f8fafc;
}

.detail-data-table td{
  vertical-align:middle;
}

.programmation-info-card{
  margin-bottom:16px;
}

.activity-log-card,
.notification-center-card{
  border-left:0;
}

.detail-visible-count{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:8px 12px;
  border-radius:999px;
  background:#f8fafc;
  border:1px solid var(--line);
}

.activity-log-table code{
  display:inline-block;
  max-width:220px;
  overflow:hidden;
  text-overflow:ellipsis;
  vertical-align:bottom;
}

.activity-json-preview{
  max-height:260px;
  overflow:auto;
  border-radius:12px;
}

.notification-center-table td:nth-child(3){
  min-width:260px;
}

.notification-center-table .actions-inline{
  gap:8px;
}

.intervention-detail-main-grid,
.intervention-bottom-grid{
  align-items:start;
}

.intervention-comments-card .commentbox{
  min-height:44px;
  border-radius:12px;
}

.intervention-status-history-card .timeline li{
  padding-bottom:14px;
}

@media(max-width:1180px){
  .detail-summary-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .equipment-show-main-grid{
    grid-template-columns:1fr;
  }

  .equipment-show-photo-card .equipment-photo-preview.large{
    height:auto;
    max-height:420px;
    aspect-ratio:4 / 3;
  }
}

@media(max-width:760px){
  .detail-page-head{
    align-items:stretch;
  }

  .detail-page-head .actions-row,
  .detail-page-head .actions{
    width:100%;
    justify-content:stretch;
  }

  .detail-page-head .actions-row .btn,
  .detail-page-head .actions-row form,
  .detail-page-head .actions-row button,
  .detail-page-head .actions .btn,
  .detail-page-head .actions form,
  .detail-page-head .actions button{
    width:100%;
    justify-content:center;
  }

  .detail-summary-grid{
    grid-template-columns:1fr;
    gap:12px;
  }

  .detail-summary-card{
    min-height:auto;
    padding:15px;
  }

  .equipment-show-photo-card .equipment-photo-preview.large{
    max-height:360px;
  }

  .detail-card .details,
  .detail-card .detail-list{
    grid-template-columns:1fr!important;
  }

  .detail-data-table thead{
    display:none;
  }

  .detail-data-table,
  .detail-data-table tbody,
  .detail-data-table tr,
  .detail-data-table td{
    display:block;
    width:100%;
  }

  .detail-data-table tr{
    border:1px solid var(--line);
    border-radius:16px;
    margin:0 0 12px;
    padding:10px 12px;
    background:#fff;
    box-shadow:0 10px 22px rgba(15,23,42,.05);
  }

  .detail-data-table td{
    border:0!important;
    padding:8px 0!important;
    display:grid;
    grid-template-columns:minmax(108px,38%) minmax(0,1fr);
    gap:12px;
    align-items:start;
  }

  .detail-data-table td::before{
    content:attr(data-label);
    color:#64748b;
    font-size:11px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.035em;
  }

  .detail-data-table td[colspan]{
    display:block;
  }

  .detail-data-table td[colspan]::before{
    content:"";
    display:none;
  }

  .activity-log-table code{
    max-width:100%;
    white-space:normal;
    word-break:break-word;
  }

  .notification-center-table td:nth-child(3){
    min-width:0;
  }

  .notification-center-table .actions-inline,
  .detail-data-table .actions-inline{
    display:grid;
    grid-template-columns:1fr;
  }

  .notification-center-table .actions-inline .btn,
  .notification-center-table .actions-inline form,
  .notification-center-table .actions-inline button{
    width:100%;
    justify-content:center;
  }
}

@media(max-width:520px){
  .detail-data-table td{
    grid-template-columns:1fr;
    gap:4px;
  }

  .detail-data-table td::before{
    margin-bottom:2px;
  }
}

/* LOT 14.8.1 - Correctif filtres locaux sur tableaux mobile
   Les tableaux convertis en cartes forçaient parfois l'affichage des lignes
   masquées par les filtres. Cette règle garantit que les lignes filtrées
   restent invisibles sur mobile comme sur desktop. */
.table-wrap tr[hidden],
.table-wrap tbody tr[hidden],
.table-wrap tr.is-filtered-out,
.table-wrap tbody tr.is-filtered-out,
.table-wrap tr[aria-hidden="true"],
.table-wrap tbody tr[aria-hidden="true"]{
  display:none!important;
}

/* LOT 14.8.3 - Correctif popup notifications
   La fenêtre de notifications ne doit jamais remonter sous l'en-tête
   de l'application ni sortir de l'écran lorsque la fenêtre est petite
   ou que la taille d'affichage du navigateur est agrandie. */
.notification-panel{
  position:fixed!important;
  top:calc(env(safe-area-inset-top, 0px) + 78px)!important;
  bottom:calc(env(safe-area-inset-bottom, 0px) + 16px)!important;
  left:50%!important;
  right:auto!important;
  transform:translateX(-50%)!important;
  width:min(520px, calc(100vw - 32px))!important;
  max-height:none!important;
  overflow:hidden!important;
}
.notification-menu.open .notification-panel{
  display:flex!important;
  flex-direction:column!important;
}
.notification-panel .notification-head{
  flex:0 0 auto!important;
}
.notification-panel .notification-list{
  flex:1 1 auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:auto!important;
}
.notification-panel .notification-read-form,
.notification-panel .notification-panel-footer{
  flex:0 0 auto!important;
}

@media(max-height:620px){
  .notification-panel{
    top:calc(env(safe-area-inset-top, 0px) + 58px)!important;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 10px)!important;
  }
}

@media(max-width:650px){
  .notification-panel{
    top:calc(env(safe-area-inset-top, 0px) + 10px)!important;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 10px)!important;
    width:calc(100vw - 18px)!important;
    border-radius:16px!important;
  }
}

/* =========================================================
   LOT 14.8.4 - Correctif popup notifications visible
   Le correctif 14.8.3 positionnait la popup comme une grande modale
   verticale. Sur certains écrans, elle pouvait se retrouver trop basse
   ou être perçue comme une simple bande blanche.
   Ici, on revient à une popup fixe, sous la topbar, alignée à droite
   sur ordinateur, avec une hauteur limitée et une liste scrollable.
   ========================================================= */
.notification-backdrop{
  z-index:1100!important;
  background:rgba(15,23,42,.30)!important;
}

.notification-panel{
  position:fixed!important;
  top:calc(env(safe-area-inset-top, 0px) + 72px)!important;
  right:24px!important;
  bottom:auto!important;
  left:auto!important;
  transform:none!important;
  width:min(460px, calc(100vw - 48px))!important;
  max-height:calc(100vh - 96px)!important;
  max-height:calc(100dvh - 96px)!important;
  min-height:0!important;
  background:#fff!important;
  border:1px solid var(--line)!important;
  border-radius:18px!important;
  box-shadow:0 26px 80px rgba(15,23,42,.28)!important;
  z-index:1200!important;
  overflow:hidden!important;
}

.notification-menu.open .notification-panel{
  display:flex!important;
  flex-direction:column!important;
}

.notification-panel .notification-head{
  flex:0 0 auto!important;
  min-height:54px!important;
  background:#fff!important;
}

.notification-panel .notification-list{
  flex:1 1 auto!important;
  min-height:72px!important;
  max-height:none!important;
  overflow:auto!important;
  -webkit-overflow-scrolling:touch;
}

.notification-panel .notification-panel-footer,
.notification-panel .notification-read-form{
  flex:0 0 auto!important;
  background:#f8fafc!important;
}

@media(max-height:620px){
  .notification-panel{
    top:calc(env(safe-area-inset-top, 0px) + 58px)!important;
    max-height:calc(100vh - 70px)!important;
    max-height:calc(100dvh - 70px)!important;
  }
}

@media(max-width:760px){
  .notification-panel{
    top:calc(env(safe-area-inset-top, 0px) + 72px)!important;
    right:10px!important;
    left:10px!important;
    width:auto!important;
    max-height:calc(100vh - 92px)!important;
    max-height:calc(100dvh - 92px)!important;
    border-radius:16px!important;
  }
}

@media(max-width:760px) and (max-height:560px){
  .notification-panel{
    top:calc(env(safe-area-inset-top, 0px) + 10px)!important;
    max-height:calc(100vh - 20px)!important;
    max-height:calc(100dvh - 20px)!important;
  }
}

/* =========================================================
   LOT 14.8.5 - Menu en mode paysage tablette / téléphone
   Objectif : éviter le bandeau horizontal trop serré en paysage.
   Sur tablette/téléphone en paysage, le menu devient un panneau
   latéral ouvrable avec le bouton menu, entièrement scrollable.
   ========================================================= */
@media (max-width:1180px) and (orientation:landscape) and (pointer:coarse),
       (max-width:920px) and (orientation:landscape){
  .topbar-menu-button{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    flex:0 0 auto!important;
  }

  .topbar{
    position:sticky!important;
    top:0!important;
    z-index:65!important;
    min-height:50px!important;
    height:auto!important;
    padding:7px 12px!important;
    gap:10px!important;
  }

  .topbar-title{
    flex:1 1 auto!important;
    min-width:0!important;
  }

  .topbar-title strong{
    max-width:100%!important;
    font-size:14px!important;
  }

  .user{
    flex:0 0 auto!important;
    gap:7px!important;
  }

  .user > span:not(.avatar){
    max-width:190px!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
    font-size:12px!important;
  }

  .sidebar{
    position:fixed!important;
    inset:0 auto 0 0!important;
    width:min(86vw,340px)!important;
    height:100vh!important;
    height:100dvh!important;
    max-height:100vh!important;
    max-height:100dvh!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch!important;
    overscroll-behavior:contain!important;
    display:block!important;
    padding:12px 14px calc(88px + env(safe-area-inset-bottom, 0px))!important;
    border-radius:0 18px 18px 0!important;
    border-bottom:0!important;
    box-shadow:18px 0 40px rgba(15,23,42,.24)!important;
    transform:translateX(-105%)!important;
    transition:transform .22s ease!important;
    z-index:90!important;
  }

  .sidebar.open{
    transform:translateX(0)!important;
  }

  .sidebar-logo{
    width:100%!important;
    min-height:48px!important;
    margin:0 0 10px!important;
    padding:6px 10px!important;
    border-radius:12px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
  }

  .sidebar-logo img{
    max-height:42px!important;
    width:auto!important;
    object-fit:contain!important;
  }

  .brand{
    height:auto!important;
    margin:0 0 10px!important;
    font-size:17px!important;
    line-height:1.2!important;
  }

  .sidebar nav{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:2px!important;
    overflow:visible!important;
    padding:0 0 calc(72px + env(safe-area-inset-bottom, 0px))!important;
    margin:0!important;
    min-width:0!important;
  }

  .sidebar nav p{
    display:flex!important;
    margin:14px 8px 6px!important;
    font-size:10px!important;
    letter-spacing:.04em!important;
  }

  .sidebar nav a{
    flex:0 0 auto!important;
    width:100%!important;
    min-height:38px!important;
    margin:1px 0!important;
    padding:9px 11px!important;
    border-radius:12px!important;
    justify-content:flex-start!important;
    white-space:normal!important;
    line-height:1.18!important;
    font-size:13px!important;
  }

  .sidebar nav a .icon{
    width:17px!important;
    height:17px!important;
    flex:0 0 auto!important;
  }

  .sidebar nav a span,
  .sidebar nav a{
    min-width:0!important;
  }

  .sidebar nav a:last-child{
    margin-bottom:24px!important;
  }

  .main{
    margin-left:0!important;
    min-height:100vh!important;
  }

  .sidebar-backdrop{
    position:fixed!important;
    inset:0!important;
    background:rgba(15,23,42,.42)!important;
    z-index:80!important;
    opacity:0!important;
    pointer-events:none!important;
    transition:opacity .2s ease!important;
  }

  body.sidebar-mobile-open{
    overflow:hidden!important;
  }

  body.sidebar-mobile-open .sidebar-backdrop{
    display:block!important;
    opacity:1!important;
    pointer-events:auto!important;
  }

  .content{
    padding-top:12px!important;
  }
}

@media (max-width:760px) and (orientation:landscape){
  .sidebar{
    width:min(84vw,310px)!important;
    padding-top:10px!important;
  }

  .sidebar-logo{
    min-height:42px!important;
    margin-bottom:8px!important;
  }

  .sidebar-logo img{
    max-height:34px!important;
  }

  .brand{
    font-size:15px!important;
    margin-bottom:8px!important;
  }

  .sidebar nav p{
    margin:10px 8px 4px!important;
  }

  .sidebar nav a{
    min-height:34px!important;
    padding:8px 10px!important;
    font-size:12.5px!important;
  }

  .user > span:not(.avatar){
    display:none!important;
  }

  .logout-form{
    display:none!important;
  }
}

/* LOT 14.8.6 - Correctif programmation : filtres équipements + affectation agents */
.planning-comfort-form [data-planning-equipment-row][hidden],
.planning-comfort-form [data-planning-equipment-row].is-hidden,
.planning-comfort-form [data-planning-equipment-row].is-filtered-out{
  display:none!important;
}
.planning-comfort-form [data-planning-empty-row][hidden],
.planning-comfort-form [data-planning-empty-row].is-hidden{
  display:none!important;
}
.planning-comfort-form .comfort-form-card,
.planning-comfort-form .form-step-card{
  overflow:visible;
}
.planning-comfort-form .agent-picker{
  z-index:80;
}
.planning-comfort-form .agent-picker.open{
  z-index:120;
}
.planning-comfort-form .agent-picker-panel{
  z-index:140;
}
