@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap");:root{--ink:#14213A;--navy:#0F1B31;--gold:#D9922B;--paper:#F4F6F9;--line:#E6EAF0;--text:#1B2436;--sub:#6B7688;--primary:#2F72D6;--success:#2E9E6B;--danger:#D64545;--purple:#7C5CD6;--radius-sm:8px;--radius-md:9px;--radius-lg:14px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}button{cursor:pointer;font-family:inherit;transition:all .15s ease}input[type=number]::-webkit-inner-spin-button{opacity:.4}.trow:hover td{background:#FAFBFC}.fld{border:1px solid var(--line);border-radius:9px;padding:9px 13px;font-size:13.5px;outline:none;min-width:200px;font-family:inherit;background:#fff;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}.fld:focus{border-color:#9AA6BC;box-shadow:0 0 0 3px rgba(20,33,58,.08)}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.btn-primary{color:#fff;border:none;border-radius:9px;padding:9px 15px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn-primary:hover{filter:brightness(1.08)}.btn-outline{background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 15px;font-size:13px;font-weight:600;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn-outline:hover{border-color:#CBD2DD;background:#FBFCFD}.btn-ghost{background:none;border:none;color:var(--sub);font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:4px}.btn-ghost:hover{color:var(--ink)}.btn-danger,.btn-success,.btn-warning{color:#fff;border:none;border-radius:var(--radius-md);padding:9px 15px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn-danger:hover,.btn-success:hover,.btn-warning:hover{filter:brightness(1.08)}.btn-success{background:var(--success)}.btn-danger{background:var(--danger)}.btn-warning{background:var(--gold)}.btn-icon{width:34px;height:34px;padding:0;border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;color:var(--sub);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.btn-icon:hover{border-color:#CBD2DD;background:#FBFCFD;color:var(--ink)}.spinner{display:inline-block;border-radius:50%;border:2.5px solid var(--line);border-top-color:var(--primary);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--line) 25%,#F0F2F6 37%,var(--line) 63%);background-size:400% 100%;animation:pulse 1.4s ease infinite}@keyframes pulse{0%{background-position:100% 50%}to{background-position:0 50%}}.table-sticky-head th{position:sticky;top:0;z-index:1}.navitem:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.choice-card{transition:transform .15s ease,box-shadow .15s ease}.choice-card:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(20,33,58,.1)}.overlay{position:fixed;inset:0;background:rgba(11,21,38,.6);backdrop-filter:blur(2px);display:flex;justify-content:flex-end;z-index:200;animation:fade .15s ease}.drawer{background:#fff;width:100%;max-width:520px;height:100%;overflow:auto;display:flex;flex-direction:column;animation:slide .2s ease}.overlay:has(.drawer:not(.drawer-right)){justify-content:center;align-items:center}.overlay:has(.drawer:not(.drawer-right)) .drawer{height:auto;max-height:90vh;border-radius:16px;margin:20px}@keyframes slide{0%{transform:translateX(30px);opacity:.5}to{transform:none;opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes kpiIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.kpi-card-in{animation:kpiIn .35s ease both}.kpi-card-in:nth-child(2){animation-delay:.04s}.kpi-card-in:nth-child(3){animation-delay:.08s}.kpi-card-in:nth-child(4){animation-delay:.12s}.kpi-card-in:nth-child(5){animation-delay:.16s}.kpi-card-in:nth-child(6){animation-delay:.2s}.kpi-card-in:nth-child(n+7){animation-delay:.24s}@media (prefers-reduced-motion:reduce){.kpi-card-in{animation:none}}@media (max-width:820px){.grid-collapse{grid-template-columns:1fr!important}}@media (max-width:640px){.lp-nav{display:none!important}}.app-shell{display:flex;min-height:100vh;background:var(--paper)}.app-sidebar{width:260px;background:var(--navy);color:#fff;display:flex;flex-direction:column;flex-shrink:0;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:300;transition:transform .2s ease}.app-burger,.app-sidebar-backdrop{display:none}@media (max-width:880px){.app-sidebar{position:fixed;inset:0 auto 0 0;transform:translateX(-100%);box-shadow:0 0 40px rgba(0,0,0,.35)}.app-sidebar.is-open{transform:translateX(0)}.app-burger{display:inline-flex}.app-sidebar-backdrop.is-open{display:block;position:fixed;inset:0;background:rgba(11,21,38,.5);z-index:250;animation:fade .15s ease}}@media (max-width:480px){.app-header{flex-wrap:wrap;row-gap:8px}.app-header-right{flex-shrink:1!important;min-width:0}.app-header-right>div:first-child{min-width:0}.app-header-right>div:first-child>div{white-space:normal!important;overflow-wrap:anywhere}}@media print{body *{visibility:hidden}.maquette-print-area,.maquette-print-area *{visibility:visible}.maquette-print-area{position:absolute!important;inset:0!important;width:100%!important;max-width:none!important;max-height:none!important;overflow:visible!important}.maquette-print-area .no-print{display:none!important}.maquette-print-page{page-break-inside:avoid}}.scroll-hint-x{background:linear-gradient(90deg,#fff 30%,rgba(255,255,255,0)),linear-gradient(90deg,rgba(255,255,255,0),#fff 70%) 100% 0,linear-gradient(90deg,rgba(11,21,38,.12),rgba(11,21,38,0)),linear-gradient(270deg,rgba(11,21,38,.12),rgba(11,21,38,0)) 100% 0;background-repeat:no-repeat;background-color:#fff;background-size:24px 100%,24px 100%,10px 100%,10px 100%;background-attachment:local,local,scroll,scroll}@media print{body:has(.datatable-print-area) *{visibility:hidden}.datatable-print-area,.datatable-print-area *{
    /* !important nécessaire : le sélecteur `body:has(...) *` ci-dessus a une
       spécificité CSS plus élevée (0,1,1) que `.datatable-print-area` seul
       (0,1,0) — sans !important, la règle "tout cacher" l'emportait
       silencieusement et l'impression produisait une page blanche. */visibility:visible!important}.datatable-print-area{position:absolute!important;inset:0!important;width:100%!important}.no-print{display:none!important}}@media print{body:has(.conseil-print-area) *{visibility:hidden}.conseil-print-area,.conseil-print-area *{
    /* !important nécessaire : cf. .datatable-print-area — le sélecteur
       `body:has(...) *` a une spécificité plus élevée que la classe seule. */visibility:visible!important}.conseil-print-area{position:absolute!important;inset:0!important;width:100%!important}.conseil-print-header{display:block!important}}body{overflow-x:hidden}@media (max-width:880px){input,select,textarea{font-size:16px}.btn-danger,.btn-ghost,.btn-outline,.btn-primary,.btn-success,.btn-warning{min-height:40px;padding-top:10px;padding-bottom:10px}.btn-icon{width:40px;height:40px}}.app-sidebar,.scroll-hint-x,main{-webkit-overflow-scrolling:touch}.app-sidebar{transition:transform .25s cubic-bezier(.4,0,.2,1)}.app-sidebar-backdrop{transition:opacity .2s ease}@media (max-width:880px){.app-burger{width:40px;height:40px}.app-sidebar nav button{min-height:44px;padding-top:11px;padding-bottom:11px;font-size:14.5px}.app-sidebar>div:last-child button{min-height:44px}}.rt-cards{display:none}@media (max-width:720px){.rt-table-view{display:none!important}.rt-cards{display:flex;flex-direction:column;gap:10px;padding:12px}}.rt-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;display:flex;flex-direction:column;gap:8px}.rt-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.rt-card-title{font-size:14.5px;font-weight:700;color:var(--ink)}.rt-card-sub{font-size:12px;color:var(--sub);font-family:monospace}.rt-card-body{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.rt-card-field{display:flex;flex-direction:column;gap:1px;min-width:0;overflow:hidden}.rt-card-label{font-size:10.5px;font-weight:700;color:var(--sub);text-transform:uppercase;letter-spacing:.3px}.rt-card-value{font-size:13px;color:var(--ink);font-weight:600}.rt-card-actions{display:flex;gap:8px;padding-top:6px;border-top:1px solid var(--line);margin-top:2px}.dt-toolbar-advanced{display:inline-flex}@media (max-width:720px){.dt-toolbar-advanced{display:none!important}}.dt-mobile-sort{display:none}@media (max-width:720px){.dt-mobile-sort{display:flex;width:100%}}@media print{body:has(.programmation-print-area) *{visibility:hidden}.programmation-print-area,.programmation-print-area *{visibility:visible!important}.programmation-print-area{position:absolute!important;inset:0!important;width:100%!important}.programmation-print-header{display:block!important}.no-print{display:none!important}}@media print{body:has(.timetable-print-area) *{visibility:hidden}.timetable-print-area,.timetable-print-area *{
    /* !important nécessaire : cf. .datatable-print-area — le sélecteur
       `body:has(...) *` a une spécificité plus élevée que la classe seule.
       Bug signalé par l'utilisateur : impression de l'emploi du temps =
       page blanche, confirmé par mesure DOM (visibility restait 'hidden'
       malgré cette règle). */visibility:visible!important}.timetable-print-area{position:absolute!important;inset:0!important;width:100%!important}.timetable-print-header{display:block!important}.no-print{display:none!important}}