:root{--bg: #f4f6f5;--surface: #ffffff;--text: #1c2b26;--muted: #66766f;--border: #dde4e1;--primary: #0f7a5c;--primary-dark: #0a5c45;--side: #10372c;--danger: #c0392b;--warn: #b7791f;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h2{margin:0 0 16px;font-size:22px;display:flex;align-items:center;gap:10px}h3{margin:0 0 12px;font-size:16px}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted)}.num{text-align:right;font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}input,select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:transparent}button{font:inherit;padding:8px 14px;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--text);cursor:pointer}button:hover{background:#eef2f0}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.primary:hover{background:var(--primary-dark)}button.primary:disabled{opacity:.6;cursor:default}button.link{border:none;background:none;padding:0;color:var(--primary)}button.link:hover{text-decoration:underline;background:none}button.link.danger{color:var(--danger)}.error{background:#fdecea;color:var(--danger);padding:8px 12px;border-radius:6px;margin:8px 0}.success{background:#e3f5ec;color:#11734f;padding:8px 12px;border-radius:6px;margin:8px 0}.info-box{background:#e4effb;color:#1d5fa8;padding:8px 12px;border-radius:6px}.warn-box{background:#fdf3e1;color:#9a6411;padding:8px 12px;border-radius:6px}.warn-text{color:var(--warn)}.small{font-size:12px}button.danger{color:var(--danger);border-color:#f1c6c0}button.danger:hover{background:#fdecea}a.button{display:inline-block;padding:8px 14px;border-radius:6px;border:1px solid var(--border);color:var(--text)}a.button.primary{background:var(--primary);border-color:var(--primary);color:#fff}a.button:hover{text-decoration:none;filter:brightness(.95)}label.checkbox{flex-direction:row!important;align-items:center;gap:8px!important;color:var(--text)!important;font-size:14px!important;margin-bottom:8px}label.checkbox input{width:auto}.cell-input{width:120px;text-align:right;padding:4px 8px}code{background:#eef2f0;padding:1px 5px;border-radius:4px}.stack{display:flex;flex-direction:column;gap:12px}.stack label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.modal-backdrop{position:fixed;inset:0;background:#10372c73;display:grid;place-items:center;z-index:20;padding:16px}.modal{background:#fff;border-radius:12px;padding:20px;width:100%;max-width:440px;box-shadow:0 20px 50px #00000040}.layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:230px;background:var(--side);color:#d6e6df;display:flex;flex-direction:column;padding:20px 0;flex-shrink:0;overflow-y:auto;scrollbar-width:thin}.brand{font-size:22px;font-weight:700;color:#fff;padding:0 20px 20px}.brand span{display:block;font-size:12px;font-weight:400;color:#9fbfb3}.sidebar nav{display:flex;flex-direction:column;flex:1}.sidebar nav a{color:#d6e6df;padding:8px 20px;border-left:3px solid transparent;display:block}.nav-section{margin-bottom:8px}.nav-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#7fa699;padding:8px 20px 4px}.sidebar nav a:hover{background:#ffffff0f;text-decoration:none}.sidebar nav a.active{background:#ffffff1a;border-left-color:#4fd1a5;color:#fff}.me{padding:16px 20px 0;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:2px}.me small{color:#9fbfb3}.me .link{color:#4fd1a5;text-align:left;margin-top:6px}.content{flex:1;padding:24px 28px;min-width:0;overflow-y:auto}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px}.page-head h2{margin:0}.page-head .actions{flex-wrap:wrap}.actions.left{justify-content:flex-start;margin-bottom:12px;flex-wrap:wrap}.tabs.underline{border-bottom:1px solid var(--border);margin-bottom:16px;gap:0}.tabs.underline button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;color:var(--muted)}.tabs.underline button.active{background:none;color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.inline-form.three{grid-template-columns:1fr 180px auto;margin-top:0}tr.subrow>td{background:#f6faf8;padding:8px 16px 16px}.badge.active,.badge.valide,.badge.traitee,.badge.paye,.badge.payee{background:#e3f5ec;color:#11734f}.badge.recue,.badge.brouillon,.badge.ouverte,.badge.suspendue{background:#fdf3e1;color:#9a6411}.badge.en_cours{background:#e4effb;color:#1d5fa8}.badge.accorde{background:#e3f5ec;color:#11734f}.badge.demande{background:#fdf3e1;color:#9a6411}.badge.solde,.badge.cloturee{background:#eef2f0;color:var(--muted)}.table-scroll{max-height:360px;overflow:auto}.badge.rejete,.badge.resiliee,.badge.perdue,.badge.annulee{background:#fdecea;color:var(--danger)}.cards-print{display:flex;gap:24px;flex-wrap:wrap}.id-card{width:85.6mm;height:54mm;border-radius:4mm;padding:4mm 5mm;background:linear-gradient(135deg,#10372c,#0f7a5c);color:#fff;display:flex;flex-direction:column;gap:2mm;font-size:9pt;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}.id-card.back{background:#fff;color:var(--text);border:1px solid var(--border)}.id-card-head{font-size:7.5pt;text-transform:uppercase;letter-spacing:.08em;opacity:.85}.id-card-name{font-size:12pt;font-weight:700}.id-card-grid{display:grid;grid-template-columns:auto 1fr;gap:1mm 3mm;font-size:8pt}.id-card-grid span{opacity:.8}.id-card ul{margin:0;padding-left:4mm;font-size:8pt}@media print{.no-print{display:none!important}body,.content{background:#fff;padding:0}.layout{height:auto;overflow:visible}.content{overflow:visible}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px;overflow-x:auto}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid2 .panel{margin-bottom:0}.grid2{margin-bottom:16px}.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}.tile{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:4px;color:var(--text)}a.tile:hover{text-decoration:none;border-color:var(--primary)}.tile span{color:var(--muted);font-size:13px}.tile strong{font-size:24px}.tile small{color:var(--muted)}.tile.warn strong{color:var(--warn)}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}th,td{padding:9px 10px;border-bottom:1px solid var(--border)}tbody tr:last-child td{border-bottom:none}th.num{text-align:right}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:#eef2f0;color:var(--muted)}.badge.actif,.badge.payee{background:#e3f5ec;color:#11734f}.badge.validee{background:#e4effb;color:#1d5fa8}.badge.en_attente,.badge.suspendu{background:#fdf3e1;color:#9a6411}.badge.rejetee,.badge.radie{background:#fdecea;color:var(--danger)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 16px}.form-grid label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.full{grid-column:1 / -1}.actions{display:flex;justify-content:flex-end;gap:8px}.inline-form{display:grid;grid-template-columns:1fr 1fr 160px 160px auto;gap:8px;margin-top:12px}.filters{display:flex;gap:12px;margin-bottom:12px;align-items:center;flex-wrap:wrap}.filters>input{flex:1;min-width:220px}.filters>select{width:auto}label.inline{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);margin-left:auto}label.inline input{width:auto}.tabs{display:flex;gap:4px;flex-wrap:wrap}.tabs button.active{background:var(--primary);border-color:var(--primary);color:#fff}.details{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.details span{display:block;font-size:12px;color:var(--muted)}.picker{position:relative}.picker ul{position:absolute;z-index:5;left:0;right:0;top:100%;margin:2px 0 0;padding:4px;list-style:none;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 18px #00000014}.picker li button{width:100%;text-align:left;border:none}.picked{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:#f6faf8;color:var(--text)}.bars{display:flex;flex-direction:column;gap:8px}.bar-row{display:grid;grid-template-columns:70px 1fr 130px;gap:10px;align-items:center;font-size:13px}.bar{background:#eef2f0;border-radius:4px;height:14px;overflow:hidden}.bar div{background:var(--primary);height:100%}.login-page{min-height:100vh;display:grid;place-items:center;padding:16px;background:radial-gradient(circle at 15% 20%,rgba(79,209,165,.28),transparent 38%),radial-gradient(circle at 85% 75%,rgba(242,177,52,.22),transparent 40%),radial-gradient(circle at 70% 10%,rgba(15,122,92,.5),transparent 35%),linear-gradient(135deg,#0b241d,#10372c 45%,#0f5c47)}.login-card{width:100%;max-width:400px;padding:28px 30px 22px;border-radius:22px;display:flex;flex-direction:column;gap:16px;color:#e8f2ee;background:linear-gradient(160deg,#1f2d34d1,#121c22e6);border:1px solid rgba(255,255,255,.14);box-shadow:0 24px 60px #00000073,inset 0 1px #ffffff0f;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.login-kicker{text-align:center;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:#b9c9c3}.login-brand{display:flex;align-items:center;gap:16px;justify-content:center}.login-brand h1{margin:0;font-size:20px;color:#fff}.login-brand p{margin:2px 0 0;font-size:12px;color:#c9d6d1}.login-lock{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;color:#e9fff6;background:radial-gradient(circle,#1d3a33,#10231d);border:2px solid rgba(255,255,255,.7);box-shadow:0 0 0 4px #4fd1a526,0 0 26px #4fd1a58c}.login-notice{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:10px;font-size:14px;line-height:1.4;color:#e3f1ff;background:#29628c59;border:1px solid rgba(110,170,220,.45)}.login-notice svg{flex-shrink:0;margin-top:1px;color:#8cc7f2}.float-field{position:relative;display:block}.float-field>span{position:absolute;top:-8px;left:12px;padding:0 5px;font-size:11.5px;color:#d5e2dd;background:#1b2a30;border-radius:4px;line-height:16px}.float-field input{width:100%;padding:13px 14px;border-radius:10px;font-size:15px;color:#fff;background:#ffffff0f;border:1px solid rgba(255,255,255,.35)}.float-field input:focus{outline:none;border-color:#4fd1a5;box-shadow:0 0 0 3px #4fd1a540}.float-field input.with-eye{padding-right:48px}.float-field .eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:6px 8px;border:none;background:none;color:#c9d6d1;border-radius:8px}.float-field .eye:hover{background:#ffffff14;color:#fff}.login-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:13.5px}.login-check{display:flex;align-items:center;gap:8px;color:#e8f2ee;cursor:pointer}.login-check input{width:18px;height:18px;accent-color:#1fa874}.login-link{border:none;background:none;padding:0;color:#7cc8ff;font-weight:600;font-size:13.5px}.login-link:hover{background:none;text-decoration:underline}.login-error{padding:10px 12px;border-radius:10px;font-size:14px;color:#ffd9d4;background:#c0392b4d;border:1px solid rgba(255,120,100,.45)}.login-submit{margin-top:4px;padding:13px;border-radius:12px;font-weight:700;font-size:15px;color:#fff;border:1px solid rgba(255,255,255,.25);background:linear-gradient(135deg,#1fa874,#0f7a5c 55%,#0b5e47);box-shadow:0 8px 20px #0f7a5c59}.login-submit:hover{filter:brightness(1.08);background:linear-gradient(135deg,#1fa874,#0f7a5c 55%,#0b5e47)}.login-submit:disabled{opacity:.6}.login-foot{margin:0;text-align:center;font-size:12px;color:#a9bab4}@media(max-width:900px){.layout{flex-direction:column}.sidebar{width:100%;padding:8px 0 0;overflow:visible;flex-direction:row;flex-wrap:wrap;align-items:center}.brand{flex:1;padding:0 16px 6px;font-size:18px}.brand span,.portail-entite{display:none}.sidebar nav{order:3;flex-basis:100%;flex-direction:row;overflow-x:auto;scrollbar-width:thin;border-top:1px solid rgba(255,255,255,.1)}.nav-section{display:contents}.nav-title{display:none}.sidebar nav a{border-left:none;border-bottom:3px solid transparent;white-space:nowrap;padding:10px 14px}.sidebar nav a.active{border-bottom-color:#4fd1a5}.me{flex-direction:row;align-items:center;gap:10px;padding:0 16px 6px;border-top:none}.me small{display:none}.me .link{margin-top:0}.content{padding:16px}.tiles,.details{grid-template-columns:1fr 1fr}.grid2,.inline-form{grid-template-columns:1fr}}.list-toolbar{display:flex;justify-content:flex-end;margin:-4px 0 8px}.export-buttons{display:inline-flex;gap:4px}.export-buttons button{padding:5px 10px;font-size:13px}.filters .export-buttons{margin-left:auto}.credit{color:var(--muted);align-self:center}.span2{grid-column:span 2}.inline-form.lignes{grid-template-columns:2fr 90px 2fr auto;margin-top:6px}.cell-input.wide{width:auto;min-width:160px;text-align:left}h4{margin:8px 0 4px;font-size:14px}.split{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start}tr.selected td{background:#eef7f3}.perm-table td{vertical-align:top}.perm-cells{display:flex;flex-wrap:wrap;gap:4px 18px}.perm-cells label.checkbox{margin:0}@media(max-width:900px){.split{grid-template-columns:1fr}.span2{grid-column:auto}}.login-check.entite{padding:4px 2px;flex-wrap:wrap;row-gap:0}.login-check.entite .login-hint{flex-basis:100%;padding-left:26px}.login-check.entite input{accent-color:#e08a1e}.login-hint{color:#a9bab4;font-size:12px}.sidebar.portail{background:#13303a}.portail-entite{margin:0 20px 14px;padding:10px 12px;border-radius:8px;background:#ffffff14;color:#fff;font-weight:600;font-size:14px}.portail-entite small{display:block;font-weight:400;color:#9fc0c9;font-size:12px}.panel.droits.ok{border-left:4px solid #1fa874}.panel.droits.ko{border-left:4px solid var(--danger)}.entite-tag{color:#1d5fa8}.otp-box{border:1px dashed #1fa874;background:#f2fbf7;border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.otp-titre{display:flex;flex-direction:column;gap:2px}.otp-box>button.primary{align-self:flex-start}.otp-saisie{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.otp-input{width:150px;font-size:24px;letter-spacing:.35em;text-align:center;font-variant-numeric:tabular-nums;padding:8px 10px}.otp-ok{color:#11734f;font-weight:600}.warn-panel{border-left:4px solid var(--warn)}.badge.otp-valide{background:#e3f5ec;color:#11734f}.badge.otp-envoye{background:#e4effb;color:#1d5fa8}.badge.otp-bloque,.badge.otp-echec_envoi{background:#fdecea;color:var(--danger)}.badge.otp-expire,.badge.otp-annule{background:#eef2f0;color:var(--muted)}
