:root{--bg: #0b1220;--surface: #131b2e;--surface-2: #1c2540;--surface-3: #25304f;--border: #2a365a;--border-soft: #1f2a47;--text: #e6eaf2;--text-muted: #94a3b8;--text-dim: #64748b;--primary: #6366f1;--primary-hover: #818cf8;--primary-soft: rgba(99, 102, 241, .15);--success: #10b981;--success-soft: rgba(16, 185, 129, .15);--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .15);--warning: #f59e0b;--warning-soft: rgba(245, 158, 11, .15);--info: #38bdf8;--info-soft: rgba(56, 189, 248, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .25);--shadow: 0 4px 16px rgba(0, 0, 0, .35);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .45);--radius: 10px;--radius-sm: 6px;--radius-lg: 14px;--sidebar-width: 240px;--header-height: 56px}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--primary-hover);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{color:var(--text);font-weight:600;letter-spacing:-.01em}h1{font-size:1.5rem;margin:0 0 1rem}h2{font-size:1.15rem;margin:0 0 1rem}h3{font-size:1rem;margin:1.5rem 0 .6rem;color:var(--text)}p{margin:.5rem 0}code{background:var(--surface-3);color:var(--text);padding:.12rem .35rem;border-radius:4px;font-size:.85em;font-family:JetBrains Mono,ui-monospace,monospace}header{background:var(--surface);color:var(--text);padding:.9rem 1.5rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;border-bottom:1px solid var(--border)}header h1{margin:0;font-size:1.1rem;font-weight:600}header nav{display:flex;gap:1rem;align-items:center}header nav span{font-size:.85rem;color:var(--text-muted)}header nav a{color:var(--text-muted);font-size:.85rem}header nav a:hover{color:var(--text);text-decoration:none}main{max-width:1200px;margin:1.5rem auto;padding:0 1rem}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:hidden}.sidebar-brand{padding:1.2rem 1.4rem;font-size:1.15rem;font-weight:700;letter-spacing:-.02em;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;gap:.5rem}.sidebar-brand .brand-dot{width:10px;height:10px;border-radius:50%;background:var(--primary);box-shadow:0 0 12px var(--primary)}.sidebar-nav{flex:1;padding:.8rem .6rem;overflow-y:auto;display:flex;flex-direction:column;gap:.15rem}.sidebar-nav button,.sidebar-nav a{display:flex;align-items:center;gap:.7rem;width:100%;text-align:left;background:transparent;color:var(--text-muted);border:none;padding:.65rem .85rem;border-radius:var(--radius-sm);font-size:.9rem;font-weight:500;cursor:pointer;margin:0;transition:background .15s,color .15s}.sidebar-nav button:hover,.sidebar-nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.sidebar-nav button.active,.sidebar-nav a.active{background:var(--primary-soft);color:var(--primary-hover)}.sidebar-nav .nav-section{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);padding:1rem .85rem .3rem;font-weight:600}.sidebar-nav .nav-icon{font-size:1rem;flex-shrink:0}.sidebar-footer{border-top:1px solid var(--border-soft);padding:1rem 1.2rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sidebar-footer .user{display:flex;flex-direction:column;font-size:.85rem;min-width:0}.sidebar-footer .user strong{color:var(--text);font-weight:600}.sidebar-footer .user small{color:var(--text-dim);font-size:.75rem}.sidebar-footer .logout-btn{background:transparent;color:var(--text-muted);border:1px solid var(--border);padding:.4rem .7rem;font-size:.8rem;margin:0}.sidebar-footer .logout-btn:hover{background:var(--danger-soft);color:var(--danger);border-color:var(--danger)}.content{padding:1.8rem 2rem;min-width:0;overflow-x:hidden}.content>h1,.content>h2{margin-top:0}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}.page-header h1{margin:0}.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:1.4rem;box-shadow:var(--shadow-sm);margin-bottom:1.2rem}.card h2{margin-top:0;font-size:1.05rem;color:var(--text)}.card h3:first-child{margin-top:0}.row{display:flex;gap:1rem;flex-wrap:wrap}.col{flex:1;min-width:200px}label{display:block;margin:.5rem 0 .2rem;font-size:.8rem;color:var(--text-muted);font-weight:500}input,select,textarea{width:100%;padding:.55rem .7rem;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem;font-family:inherit;transition:border-color .15s,background .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);background:var(--surface-3)}input::placeholder,textarea::placeholder{color:var(--text-dim)}textarea{resize:vertical;min-height:80px}select option{background:var(--surface-2);color:var(--text)}button{background:var(--primary);color:#fff;border:none;padding:.6rem 1.1rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.88rem;font-weight:500;font-family:inherit;margin:.25rem .25rem 0 0;transition:background .15s,transform .05s}button:hover{background:var(--primary-hover)}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--surface-3);color:var(--text)}button.secondary:hover{background:var(--border)}button.danger{background:var(--danger)}button.danger:hover{background:#f87171}button.success{background:var(--success)}button.success:hover{background:#34d399}button.btn-sm{padding:.3rem .7rem;font-size:.78rem;background:transparent;color:var(--text-muted);border:1px solid var(--border)}button.btn-sm:hover{background:var(--surface-3);color:var(--text);border-color:var(--surface-3)}button.btn-sm.success{color:var(--success);border-color:#10b98159}button.btn-sm.success:hover{background:var(--success-soft);color:var(--success);border-color:var(--success)}button.btn-sm.danger{color:var(--danger);border-color:#ef444459}button.btn-sm.danger:hover{background:var(--danger-soft);color:var(--danger);border-color:var(--danger)}.tabs{display:flex;gap:.35rem;margin-bottom:1.2rem;flex-wrap:wrap}.tabs button{background:var(--surface-2);color:var(--text-muted);margin:0;border:1px solid var(--border-soft)}.tabs button:hover{background:var(--surface-3);color:var(--text)}.tabs button.active{background:var(--primary-soft);color:var(--primary-hover);border-color:var(--primary)}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--surface)}table{width:100%;border-collapse:collapse;min-width:600px}th,td{text-align:left;padding:.7rem .8rem;border-bottom:1px solid var(--border-soft);font-size:.85rem}th{background:var(--surface-2);font-weight:600;color:var(--text-muted);text-transform:uppercase;font-size:.72rem;letter-spacing:.04em;border-bottom:1px solid var(--border)}tbody tr:hover{background:var(--surface-2)}tbody tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:.2rem .55rem;border-radius:12px;font-size:.72rem;font-weight:600;background:var(--surface-3);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.badge[data-s=EN_ATTENTE]{background:var(--warning-soft);color:var(--warning)}.badge[data-s=ACCEPTEE]{background:var(--info-soft);color:var(--info)}.badge[data-s=EN_COURS]{background:var(--primary-soft);color:var(--primary-hover)}.badge[data-s=TERMINEE],.badge[data-s=TERMINE],.badge[data-s=CONFIRME]{background:var(--success-soft);color:var(--success)}.badge[data-s=REFUSEE],.badge[data-s=ANNULEE],.badge[data-s=ANNULE],.badge[data-s=ECHEC]{background:var(--danger-soft);color:var(--danger)}.badge[data-s=DISPONIBLE]{background:var(--success-soft);color:var(--success)}.badge[data-s=OCCUPE]{background:var(--warning-soft);color:var(--warning)}.badge[data-s=HORS_LIGNE]{background:var(--surface-3);color:var(--text-dim)}.alert{padding:.75rem 1rem;border-radius:var(--radius-sm);margin:.5rem 0;font-size:.88rem;border:1px solid transparent}.alert.error{background:var(--danger-soft);color:var(--danger);border-color:var(--danger)}.alert.success{background:var(--success-soft);color:var(--success);border-color:var(--success)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;margin-bottom:1rem}.stat-card{background:var(--surface-2);border:1px solid var(--border-soft);padding:1.1rem 1.2rem;border-radius:var(--radius);position:relative;overflow:hidden;transition:transform .15s,border-color .15s}.stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary)}.stat-card:hover{border-color:var(--border);transform:translateY(-2px)}.stat-value{font-size:1.7rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.stat-label{font-size:.8rem;color:var(--text-muted);margin-top:.3rem}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1.2rem}.kpi-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:1.3rem 1.4rem;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden;transition:transform .15s,border-color .15s,box-shadow .15s}.kpi-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--border)}.kpi-card:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at top right,var(--accent-soft, transparent) 0%,transparent 60%);pointer-events:none}.kpi-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft, var(--surface-2));color:var(--accent, var(--text));border-radius:12px;font-size:1.5rem;flex-shrink:0;position:relative;z-index:1}.kpi-body{min-width:0;position:relative;z-index:1;flex:1}.kpi-value{font-size:1.8rem;font-weight:700;color:var(--text);letter-spacing:-.02em;line-height:1.1}.kpi-value .kpi-unit{font-size:.85rem;font-weight:500;color:var(--text-muted);margin-left:.15rem}.kpi-label{font-size:.8rem;color:var(--text-muted);margin-top:.35rem;text-transform:uppercase;letter-spacing:.04em}.kpi-primary{--accent: var(--primary);--accent-soft: var(--primary-soft)}.kpi-info{--accent: var(--info);--accent-soft: var(--info-soft)}.kpi-success{--accent: var(--success);--accent-soft: var(--success-soft)}.kpi-warning{--accent: var(--warning);--accent-soft: var(--warning-soft)}.kpi-danger{--accent: var(--danger);--accent-soft: var(--danger-soft)}.dash-row-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.2rem}@media (max-width: 1100px){.dash-row-2{grid-template-columns:1fr}}.card-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1rem;gap:.5rem;flex-wrap:wrap}.card-head h2{margin:0}.action-list{display:flex;flex-direction:column;gap:.5rem}.action-item{display:flex;align-items:center;gap:.9rem;padding:.8rem 1rem;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius-sm);text-decoration:none;color:var(--text);transition:background .15s,border-color .15s,transform .05s}.action-item:hover{background:var(--surface-3);border-color:var(--border);text-decoration:none}.action-item:active{transform:translateY(1px)}.action-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--surface);border-radius:8px;font-size:1.1rem;flex-shrink:0}.action-body{flex:1;font-size:.88rem;color:var(--text-muted)}.action-body strong{display:inline-block;min-width:1.5rem;margin-right:.35rem;font-size:1.05rem;color:var(--text)}.action-arrow{color:var(--text-dim);font-size:1.3rem}.action-item.action-warn{border-color:var(--warning)}.action-item.action-warn .action-icon{background:var(--warning-soft);color:var(--warning)}.action-item.action-warn .action-body strong{color:var(--warning)}.action-item.action-info{border-color:var(--info)}.action-item.action-info .action-icon{background:var(--info-soft);color:var(--info)}.action-item.action-info .action-body strong{color:var(--info)}.action-item.action-danger{border-color:var(--danger)}.action-item.action-danger .action-icon{background:var(--danger-soft);color:var(--danger)}.action-item.action-danger .action-body strong{color:var(--danger)}.bar-list{display:flex;flex-direction:column;gap:.9rem}.bar-row{display:flex;flex-direction:column;gap:.35rem}.bar-label{display:flex;justify-content:space-between;align-items:baseline;font-size:.85rem;color:var(--text)}.bar-value{font-weight:600;color:var(--text)}.bar-value small{color:var(--text-muted);font-weight:400;margin-left:.2rem}.bar-track{height:7px;background:var(--surface-2);border-radius:4px;overflow:hidden}.bar-fill{height:100%;background:var(--primary);border-radius:4px;transition:width .4s ease;min-width:2px}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin-bottom:1.2rem}.status-card{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:.9rem 1rem;position:relative;overflow:hidden}.status-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--bar-color, var(--primary))}.status-num{font-size:1.6rem;font-weight:700;color:var(--text);line-height:1}.status-lbl{font-size:.78rem;color:var(--text-muted);margin-top:.35rem}.status-pct{font-size:.8rem;color:var(--bar-color, var(--primary));margin-top:.35rem;font-weight:600}.status-warn{--bar-color: var(--warning)}.status-info{--bar-color: var(--info)}.status-ok{--bar-color: var(--success)}.status-bad{--bar-color: var(--danger)}.stacked-bar{display:flex;height:14px;background:var(--surface-2);border-radius:7px;overflow:hidden}.stacked-bar .seg{transition:flex-grow .3s ease}.stacked-bar .seg-warn{background:var(--warning)}.stacked-bar .seg-info{background:var(--info)}.stacked-bar .seg-ok{background:var(--success)}.stacked-bar .seg-bad{background:var(--danger)}.muted{color:var(--text-muted);font-size:.85rem}.actions{display:flex;gap:.35rem;flex-wrap:wrap}.filter-row{display:flex;gap:1rem;align-items:end;margin-bottom:1rem;flex-wrap:wrap}.filter-row label{margin:0;font-size:.8rem;color:var(--text-muted)}.filter-row select,.filter-row input{min-width:180px}.modal{display:none;position:fixed;inset:0;background:#020617cc;backdrop-filter:blur(4px);z-index:100;overflow-y:auto;padding:1rem}.modal.open{display:flex;align-items:flex-start;justify-content:center}.modal .card{max-width:500px;width:100%;margin:2rem 0;box-shadow:var(--shadow-lg)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--surface-3)}@media (max-width: 900px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;width:100%;border-right:none;border-bottom:1px solid var(--border)}.sidebar-nav{flex-direction:row;overflow-x:auto;padding:.5rem;gap:.25rem}.sidebar-nav .nav-section{display:none}.sidebar-nav button,.sidebar-nav a{flex-shrink:0;width:auto}.sidebar-footer{padding:.7rem 1rem}.content{padding:1rem}}@media (max-width: 720px){header{padding:.8rem 1rem}header h1{font-size:1rem}main{margin:1rem auto;padding:0 .7rem}.card{padding:1rem;border-radius:var(--radius-sm)}th,td{padding:.5rem .4rem;font-size:.8rem}input,select,textarea{font-size:16px}}
