:root{--nav:#0f2746;--nav2:#173c68;--blue:#2563eb;--blue-soft:#eff6ff;--bg:#f4f7fb;--card:#fff;--text:#172033;--muted:#65748b;--line:#dde5ef;--green:#16834a;--orange:#c66a09;--red:#c73535;--shadow:0 8px 28px rgba(15,39,70,.08);--radius:16px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif}button,input,select,textarea{font:inherit}a{color:var(--blue);text-decoration:none}.platform-shell{display:grid;grid-template-columns:275px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;overflow:auto;padding:20px 15px;background:linear-gradient(180deg,var(--nav),#09192d);color:#fff;z-index:50}.brand{display:flex;align-items:center;gap:12px;color:#fff;padding:4px 8px 21px;border-bottom:1px solid rgba(255,255,255,.12)}.brand-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:var(--blue);font-weight:900}.brand strong,.brand small{display:block}.brand small{color:#a9bdd6;font-size:12px;margin-top:2px}.main-nav{padding-top:15px}.nav-heading{margin:20px 10px 6px;color:#7893b3;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em}.nav-item{display:flex;align-items:center;gap:10px;margin:3px 0;padding:10px 12px;border-radius:11px;color:#c9d7e8;font-weight:650}.nav-item span{width:20px;text-align:center}.nav-item:hover,.nav-item.active{background:var(--blue);color:#fff}.nav-item.disabled{opacity:.52;cursor:not-allowed}.nav-item.disabled:hover{background:transparent;color:#c9d7e8}.nav-item em{margin-left:auto;font-size:9px;font-style:normal;text-transform:uppercase}.platform-main{min-width:0}.guest-main{grid-column:1/-1}.topbar{position:sticky;top:0;z-index:30;min-height:70px;padding:10px 25px;display:flex;align-items:center;justify-content:space-between;gap:20px;background:rgba(255,255,255,.94);backdrop-filter:blur(9px);border-bottom:1px solid var(--line)}.topbar-context b,.topbar-context span{display:block}.topbar-context b{font-size:17px}.topbar-context span{color:var(--muted);font-size:12px}.topbar-user{display:flex;align-items:center;gap:13px}.topbar-user form{margin:0}.mobile-menu{display:none;border:0;background:transparent;font-size:23px}.page-container{width:min(1460px,95%);margin:0 auto;padding:26px 0 45px}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.page-heading h1{margin:0;font-size:28px;letter-spacing:-.5px}.page-heading p{margin:5px 0 0;color:var(--muted)}.grid{display:grid;gap:16px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.two-columns{grid-template-columns:1.35fr 1fr}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:19px;box-shadow:var(--shadow)}.card h2,.card h3{margin-top:0}.stat-label{color:var(--muted);font-size:12px;font-weight:700}.stat-value{display:block;margin:6px 0;font-size:30px;font-weight:850}.stat-foot{color:var(--muted);font-size:12px}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--blue);border-radius:10px;padding:9px 13px;background:var(--blue);color:#fff;font-weight:750;cursor:pointer}.button.secondary{background:#fff;color:var(--blue)}.button.ghost{background:#fff;border-color:var(--line);color:var(--text)}.button.small{padding:7px 10px;font-size:12px}.actions{display:flex;gap:8px;flex-wrap:wrap}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.badge.blue{background:var(--blue-soft);color:var(--blue)}.badge.green{background:#ecfdf3;color:var(--green)}.badge.orange{background:#fff6e7;color:var(--orange)}.badge.red{background:#fff0f0;color:var(--red)}.module-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.module-tile{padding:15px;border:1px solid var(--line);border-radius:13px;background:#fff}.module-tile strong,.module-tile small{display:block}.module-tile small{color:var(--muted);margin-top:4px}.module-tile.future{background:#fafbfc}.establishment-list{display:grid;gap:9px}.establishment-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.establishment-row:last-child{border:0}.empty-state{padding:25px;text-align:center;color:var(--muted);border:1px dashed #b9c7d8;border-radius:13px;background:#f8fafc}.flash{margin-bottom:16px;padding:12px 14px;border-radius:11px;border:1px solid}.flash.success{color:#11673c;background:#edfdf4;border-color:#b7eccd}.flash.danger{color:#9d2f2f;background:#fff1f1;border-color:#f2c4c4}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px;border-bottom:1px solid var(--line);text-align:left}.table th{background:#f8fafc;color:var(--muted);font-size:11px;text-transform:uppercase}.muted{color:var(--muted)}@media(max-width:1100px){.stats-grid{grid-template-columns:repeat(2,1fr)}.two-columns{grid-template-columns:1fr}}@media(max-width:900px){.platform-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-290px;width:275px;transition:left .2s}.sidebar.open{left:0}.mobile-menu{display:block}.topbar{padding:10px 16px}.topbar-context{margin-right:auto}.page-container{width:92%}.topbar-user>span{display:none}}@media(max-width:620px){.stats-grid,.module-list{grid-template-columns:1fr}.page-heading{display:block}.page-heading .actions{margin-top:13px}.topbar-context span{display:none}}

/* Correctif formulaires existants */
.page-container form {
    margin: 0;
}

.page-container form > div,
.page-container .form-group {
    margin-bottom: 16px;
}

.page-container label {
    display: block;
    margin-bottom: 6px;
    color: var(--text);
    font-size: 13px;
    font-weight: 700;
}

.page-container input[type="text"],
.page-container input[type="email"],
.page-container input[type="tel"],
.page-container input[type="number"],
.page-container input[type="date"],
.page-container input[type="datetime-local"],
.page-container input[type="password"],
.page-container select,
.page-container textarea {
    display: block;
    width: 100%;
    min-height: 42px;
    padding: 9px 11px;
    border: 1px solid #cbd5e1;
    border-radius: 9px;
    background: #fff;
    color: var(--text);
    outline: none;
    transition: border-color .15s, box-shadow .15s;
}

.page-container textarea {
    min-height: 95px;
    resize: vertical;
}

.page-container input:focus,
.page-container select:focus,
.page-container textarea:focus {
    border-color: var(--blue);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}

.page-container input[type="checkbox"],
.page-container input[type="radio"] {
    width: 17px;
    height: 17px;
    accent-color: var(--blue);
}

.page-container fieldset {
    margin: 0 0 18px;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: #fff;
}

.page-container legend {
    padding: 0 7px;
    font-weight: 800;
}

.page-container form button[type="submit"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 9px 14px;
    border: 1px solid var(--blue);
    border-radius: 10px;
    background: var(--blue);
    color: #fff;
    font-weight: 750;
    cursor: pointer;
}

.page-container form button[type="submit"]:hover {
    background: #1d4ed8;
}

@media (min-width: 760px) {
    .page-container form {
        max-width: 100%;
    }

    .page-container form input,
    .page-container form select,
    .page-container form textarea {
        max-width: 680px;
    }
}

/* PDP : champs texte libres en pleine largeur */
.page-container input[name="intitule"],
.page-container input[name="lieu_intervention_libre"],
.page-container input[name="horaires_intervention"],
.page-container input[name="objet_intervention"],
.page-container textarea[name="description_travaux"],
.page-container textarea[name="observations"] {
    width: 100% !important;
    max-width: none !important;
}

/* Intitulé sur toute la largeur de sa ligne */
.page-container input[name="intitule"] {
    min-height: 44px;
}

/* Précision libre alignée sur les autres champs */
.page-container input[name="lieu_intervention_libre"] {
    min-height: 42px;
}


/* Entreprises extérieures */
.page-container .grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.page-container .form-group {
    min-width: 0;
    margin-bottom: 0;
}

.page-container .form-group.full,
.page-container .remember-row.full {
    grid-column: 1 / -1;
}

.page-container .form-group input,
.page-container .form-group select,
.page-container .form-group textarea {
    width: 100%;
    max-width: none;
}

.page-container .button-secondary {
    background: #fff;
    border-color: var(--line);
    color: var(--text);
}

.page-container .button-secondary:hover {
    border-color: var(--blue);
    color: var(--blue);
}

.page-container .company-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.page-container .archive-button {
    border-color: #f2c4c4;
    background: #fff;
    color: var(--red);
}

@media (max-width: 760px) {
    .page-container .grid {
        grid-template-columns: 1fr;
    }

    .page-container .form-group.full,
    .page-container .remember-row.full {
        grid-column: auto;
    }
}

/* Champs texte sans attribut type */
.page-container input:not([type]),
.page-container input[type="text"],
.page-container input[type="search"],
.page-container input[type="url"] {
    display: block;
    width: 100% !important;
    max-width: none !important;
    min-height: 42px;
    padding: 9px 11px;
    border: 1px solid #cbd5e1;
    border-radius: 9px;
    background: #fff;
    color: var(--text);
    outline: none;
    transition: border-color .15s, box-shadow .15s;
}

.page-container input:not([type]):focus,
.page-container input[type="text"]:focus,
.page-container input[type="search"]:focus,
.page-container input[type="url"]:focus {
    border-color: var(--blue);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}

/* Filtre annuel global */
.global-year-filter {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 5px 6px 5px 11px;
    border: 1px solid #dbe5f0;
    border-radius: 12px;
    background: #f8fafc;
}

.global-year-filter label {
    color: #64748b;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.global-year-filter select {
    min-width: 115px;
    height: 34px;
    padding: 0 30px 0 11px;
    border: 1px solid #bfdbfe;
    border-radius: 9px;
    outline: none;
    background-color: #eff6ff;
    color: #1d4ed8;
    font-weight: 800;
    cursor: pointer;
}

.global-year-filter select:hover {
    border-color: #60a5fa;
    background-color: #dbeafe;
}

.global-year-filter select:focus {
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .14);
}

@media (max-width: 700px) {
    .global-year-filter {
        padding-left: 6px;
    }

    .global-year-filter label {
        display: none;
    }

    .global-year-filter select {
        min-width: 90px;
    }
}

/* Filtre annuel global, version compacte */
.global-year-filter {
    gap: 6px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.global-year-filter label {
    color: #64748b;
    font-size: 11px;
    letter-spacing: 0;
}

.global-year-filter select {
    min-width: 88px;
    width: 88px;
    height: 34px;
    padding: 0 26px 0 10px;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    background-color: #ffffff;
    color: #1d4ed8;
    font-size: 13px;
}

.global-year-filter select:hover {
    border-color: #93c5fd;
    background-color: #f8fafc;
}
