@charset "UTF-8";@font-face{font-family:Plus Jakarta Sans;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIZaomQNQcsA88c7O9yZ4KMCoOg4KozySKCdSNG9OcqYQ0lCS_aOKyYRw.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIZaomQNQcsA88c7O9yZ4KMCoOg4KozySKCdSNG9OcqYQ0lCS_YOKyYRw.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIZaomQNQcsA88c7O9yZ4KMCoOg4KozySKCdSNG9OcqYQ0lCS_ZOKyYRw.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans;font-style:italic;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIZaomQNQcsA88c7O9yZ4KMCoOg4KozySKCdSNG9OcqYQ0lCS_XOKw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yyygA.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yyygA.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yyygA.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yyygA.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yyygA.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yyygA.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yyygA.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yyygA.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yyygA.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yyygA.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--moov-orange: #ff6600;--primary: var(--moov-orange);--primary-hover: #e65c00;--primary-muted: #ff9933;--primary-soft: rgba(255, 102, 0, .12);--accent-blue: #0d4a8f;--accent-blue-soft: rgba(13, 74, 143, .1);--sidebar-bg-start: #0a3d72;--sidebar-bg-end: #061f3d;--sidebar-text: rgba(255, 255, 255, .88);--sidebar-muted: rgba(255, 255, 255, .7);--sidebar-active-bg: rgba(255, 102, 0, .18);--sidebar-active-accent: #ff6600;--bg: #f0f4fa;--bg-card: #ffffff;--bg-elevated: #ffffff;--surface-muted: #f8fafc;--text: #0b1f36;--text-muted: #475569;--border: #e2e8f0;--border-strong: #cbd5e1;--success: #059669;--danger: #dc2626;--warning: #d97706;--info: #2563eb;--status-brouillon: #64748b;--status-soumis: #2563eb;--status-valide: #059669;--status-rejete: #dc2626;--status-installe: #7c3aed;--status-active: #047857;--radius: 14px;--radius-lg: 20px;--radius-sm: 10px;--radius-xs: 8px;--radius-btn: 12px;--shadow-sm: 0 1px 2px rgba(15, 39, 68, .06);--shadow: 0 4px 24px rgba(15, 39, 68, .08), 0 0 0 1px rgba(255, 102, 0, .05) inset;--shadow-md: 0 8px 32px rgba(15, 39, 68, .1), 0 0 0 1px rgba(255, 102, 0, .04) inset;--shadow-lg: 0 20px 50px rgba(15, 39, 68, .12);--transition: .18s cubic-bezier(.4, 0, .2, 1);--ring: 0 0 0 3px rgba(255, 102, 0, .28)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif;background:linear-gradient(155deg,#e4eaf3 0%,var(--bg) 42%,#e8eef6 100%),radial-gradient(ellipse 85% 58% at 12% 6%,rgba(255,102,0,.13) 0%,transparent 52%),radial-gradient(ellipse 78% 52% at 94% 92%,rgba(13,74,143,.14) 0%,transparent 50%),var(--bg);color:var(--text);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative}p,li,label,td,th{color:inherit}small{color:var(--text-muted)}body:before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg width='72' height='72' viewBox='0 0 72 72' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%230f2744' fill-opacity='0.025' d='M0 0h72v72H0z'/%3E%3Cpath fill='%230f2744' fill-opacity='0.03' d='M36 0l36 36-36 36L0 36z'/%3E%3C/svg%3E");opacity:1;pointer-events:none;z-index:0}.layout{display:flex;min-height:100vh;position:relative;z-index:1}.main-content{flex:1;display:flex;flex-direction:column;overflow-x:hidden}.page-content{flex:1;padding:28px 32px 40px}.content-shell{width:min(1240px,100%);margin:0 auto}.sidebar{width:268px;min-width:268px;background:linear-gradient(180deg,rgba(255,102,0,.14) 0%,transparent 38%),linear-gradient(175deg,var(--sidebar-bg-start) 0%,#072d52 45%,var(--sidebar-bg-end) 100%);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:100;border-right:1px solid rgba(255,255,255,.07);box-shadow:4px 0 28px #061f3d59,inset -4px 0 0 0 var(--moov-orange);transition:transform var(--transition),box-shadow var(--transition);overflow-y:auto}.sidebar-logo{padding:22px 18px;display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-logo .sidebar-logo-img{width:52px;height:52px;border-radius:22px;object-fit:cover;background:#fff;padding:6px;border:1px solid rgba(255,102,0,.28);box-shadow:0 4px 18px #ff660024,0 12px 28px #0000002e}.sidebar-logo .logo-text{color:#fff;font-weight:700;font-size:14px;line-height:1.25;letter-spacing:-.02em}.sidebar-logo .logo-text small{color:var(--sidebar-muted);font-size:11px;font-weight:500}.sidebar-nav{padding:14px 10px;flex:1}.nav-group-label{color:var(--sidebar-muted);font-size:10px;text-transform:uppercase;letter-spacing:.14em;font-weight:700;padding:16px 10px 8px;margin-top:4px}.nav-item{display:flex;align-items:center;gap:11px;padding:11px 12px;margin-bottom:3px;border-radius:var(--radius-xs);color:var(--sidebar-text);text-decoration:none;font-size:13.5px;font-weight:500;transition:background var(--transition),color var(--transition),box-shadow var(--transition);cursor:pointer;border:1px solid transparent}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:var(--sidebar-active-bg);color:#fff;border-color:#ffffff14;box-shadow:inset 3px 0 0 var(--sidebar-active-accent)}.nav-item .nav-icon{font-size:17px;width:22px;text-align:center;opacity:.95}.sidebar-user{padding:16px 14px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:11px;background:#0000001f}.user-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--moov-orange) 0%,var(--primary-muted) 100%);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:14px;flex-shrink:0;box-shadow:0 2px 8px #0003}.user-info .user-name{color:#fff;font-size:13px;font-weight:600}.user-info .user-role{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--sidebar-active-accent);margin-top:3px}.logout-btn{margin-left:auto;background:#ffffff14;border:none;color:var(--sidebar-text);cursor:pointer;font-size:15px;padding:8px;border-radius:var(--radius-xs);transition:background var(--transition),color var(--transition)}.logout-btn:hover{color:#fecaca;background:#ef444433}.topbar{height:60px;background:#fffffff5;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(226,232,240,.95);display:flex;align-items:center;padding:0 28px;justify-content:space-between;position:sticky;top:0;z-index:90;box-shadow:0 1px #ff66000f,0 4px 22px #0f27440f}.topbar-left{display:flex;align-items:center;gap:10px}.topbar-meta{font-size:13px;color:#334155;font-weight:500}.topbar-title{font-size:17px;font-weight:700;color:var(--text);letter-spacing:-.02em}.topbar-right{display:flex;align-items:center;gap:10px}.mobile-menu-btn{display:none;width:38px;height:38px;border-radius:var(--radius-btn);border:1px solid var(--border);background:var(--bg-card);cursor:pointer;color:var(--text);transition:border-color var(--transition),background var(--transition)}.mobile-menu-btn:hover{border-color:var(--border-strong);background:var(--surface-muted, #f8fafc)}.mobile-overlay{display:none}.page-wrapper{margin-left:268px;width:calc(100% - 268px);display:flex;flex-direction:column;min-height:100vh}.card{background:#fffffffa;border-radius:var(--radius-lg);box-shadow:var(--shadow);border:1px solid rgba(255,255,255,.9);padding:24px 26px}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.card-title{font-size:15px;font-weight:700;color:var(--text);letter-spacing:-.01em}.stat-card{background:#fffffffa;border-radius:var(--radius-lg);padding:22px 24px;border:1px solid rgba(255,255,255,.85);box-shadow:var(--shadow);display:flex;align-items:center;gap:16px;transition:box-shadow var(--transition),transform var(--transition),border-color var(--transition)}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:#ff66002e}.stat-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.stat-icon.orange{background:var(--primary-soft)}.stat-icon.blue{background:var(--accent-blue-soft)}.stat-icon.green{background:#0596691f}.stat-icon.red{background:#dc26261a}.stat-icon.purple{background:#7c3aed1a}.stat-value{font-size:28px;font-weight:800;color:var(--text);line-height:1;letter-spacing:-.03em}.stat-label{color:var(--text-muted);font-size:12px;font-weight:500;margin-top:5px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border-radius:var(--radius-btn);font-size:13px;font-weight:600;cursor:pointer;border:none;transition:background var(--transition),box-shadow var(--transition),transform var(--transition),border-color var(--transition),color var(--transition);text-decoration:none;white-space:nowrap;font-family:inherit}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn-primary{background:linear-gradient(180deg,var(--primary) 0%,var(--primary-hover) 100%);color:#fff;box-shadow:0 2px 10px #f606}.btn-primary:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 6px 20px #ff66006b}.btn-secondary{background:#eff6ff;color:var(--accent-blue);border:1px solid #bfdbfe}.btn-secondary:hover:not(:disabled){background:#dbeafe;border-color:#93c5fd}.btn-success{background:var(--success);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.06)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.06)}.btn-warning{background:var(--warning);color:#fff}.btn-sm{padding:7px 13px;font-size:12px}.btn-icon{padding:8px}.btn:disabled{opacity:.48;cursor:not-allowed;transform:none!important;box-shadow:none!important}.form-group{margin-bottom:18px}.form-label{display:block;font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:7px}.form-label .required{color:var(--danger);margin-left:2px}.form-control{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;color:var(--text);background:#fff;transition:border-color var(--transition),box-shadow var(--transition);font-family:inherit;outline:none}.form-control::placeholder{color:#64748b;opacity:1}.form-control:focus{border-color:#ff6600a6;box-shadow:var(--ring)}.form-control.is-invalid{border-color:var(--danger)}.form-error{color:var(--danger);font-size:12px;margin-top:5px}.form-hint{color:var(--text-muted);font-size:12px;margin-top:5px}select.form-control{cursor:pointer}textarea.form-control{resize:vertical;min-height:92px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.form-check{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px}.form-check input[type=checkbox]{width:17px;height:17px;margin-top:2px;accent-color:var(--primary);cursor:pointer}.form-check label{font-size:13px;color:var(--text);cursor:pointer}.table-wrapper{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid rgba(226,232,240,.95);background:#fffffffa;box-shadow:0 1px #ff66000a inset}table{width:100%;border-collapse:collapse}thead tr{background:linear-gradient(180deg,#f8fafc,#f1f5f9)}th{padding:13px 16px;text-align:left;font-size:11px;font-weight:700;color:#334155;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:14px 16px;border-bottom:1px solid var(--border);font-size:13.5px;color:var(--text)}tr:last-child td{border-bottom:none}tbody tr{transition:background var(--transition)}tbody tr:hover{background:#ff66000a}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.badge-brouillon{background:#64748b1f;color:var(--status-brouillon)}.badge-soumis{background:#2563eb1f;color:var(--status-soumis)}.badge-valide{background:#0596691f;color:var(--status-valide)}.badge-rejete{background:#dc26261f;color:var(--status-rejete)}.badge-installe{background:#7c3aed1f;color:var(--status-installe)}.badge-active{background:#0478571f;color:var(--status-active)}.badge-prepaye{background:var(--primary-soft);color:var(--primary-hover)}.badge-postpaye{background:#2563eb1f;color:var(--info)}.alert{padding:13px 16px;border-radius:var(--radius-xs);font-size:13px;margin-bottom:16px;display:flex;align-items:flex-start;gap:10px}.alert-danger{background:#dc262614;border:1px solid rgba(220,38,38,.22);color:#991b1b}.alert-success{background:#05966914;border:1px solid rgba(5,150,105,.22);color:#065f46}.alert-warning{background:#d9770614;border:1px solid rgba(217,119,6,.22);color:#92400e}.alert-info{background:#2563eb14;border:1px solid rgba(37,99,235,.22);color:#1e40af}.spinner-overlay{display:flex;align-items:center;justify-content:center;padding:60px}.spinner{width:38px;height:38px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.divider{height:1px;background:var(--border);margin:20px 0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:28px;flex-wrap:wrap}.page-title{font-size:clamp(20px,2.2vw,26px);font-weight:800;color:var(--text);letter-spacing:-.03em;line-height:1.2}.page-header .page-subtitle{font-weight:500}.page-subtitle{color:#334155;font-size:13.5px;margin-top:6px;max-width:52ch}.two-col-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.steps{display:flex;gap:0;margin-bottom:32px}.step{flex:1;display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--bg-card);border:1px solid var(--border);position:relative}.step:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.step:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.step.active{background:var(--primary-soft);border-color:#ff660059}.step.done{background:#0596690f;border-color:#05966947}.step-num{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0;color:var(--text-muted)}.step.active .step-num{border-color:var(--primary);color:var(--primary-hover);background:#fff}.step.done .step-num{border-color:var(--success);background:var(--success);color:#fff}.step-label{font-size:12.5px;font-weight:600;color:var(--text-muted)}.step.active .step-label{color:var(--primary-hover)}.step.done .step-label{color:var(--success)}.modal-overlay{position:fixed;inset:0;background:#0f274473;display:flex;align-items:center;justify-content:center;z-index:9999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fadeIn .2s ease}.modal{background:#fffffffa;border-radius:var(--radius-lg);padding:28px;min-width:440px;max-width:600px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);border:1px solid var(--border);animation:slideUp .25s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.modal-title{font-size:17px;font-weight:700}.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text-muted);padding:4px;border-radius:var(--radius-xs)}.modal-close:hover{background:#f1f5f9}.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}.upload-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:32px;text-align:center;cursor:pointer;transition:border-color var(--transition),background var(--transition);background:#fafbfc}.upload-zone:hover,.upload-zone.dragover{border-color:#ff660073;background:var(--primary-soft)}.upload-icon{font-size:36px;margin-bottom:10px}.upload-text{color:var(--text-muted);font-size:13px}.upload-text strong{color:var(--primary-hover)}.upload-list{list-style:none;margin-top:14px}.upload-list li{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-xs);margin-bottom:6px;font-size:13px}.sig-container{border:2px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff}.sig-pad{display:block;width:100%;height:160px;cursor:crosshair}.sig-actions{display:flex;gap:8px;padding:10px 12px;background:#f8fafc;border-top:1px solid var(--border)}.sig-placeholder{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--border-strong);font-size:13px;pointer-events:none;-webkit-user-select:none;user-select:none}.text-muted{color:var(--text-muted)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:28px}.dashboard-split{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}.toolbar-row{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap;align-items:center}.toolbar-row.align-start{align-items:flex-start}.form-search{max-width:220px;margin-left:auto}.form-search-wide{max-width:320px}.table-empty{text-align:center;color:#334155;padding:48px;opacity:1}.table-empty--compact{padding:40px}.cell-actions{display:flex;gap:4px}.cell-actions.gap-6{gap:6px}.page-narrow{max-width:760px;margin:0 auto}.page-header-tight{margin-bottom:18px}.user-name-cell{display:flex;align-items:center;gap:10px}.user-avatar-chip{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--moov-orange),var(--primary-muted));display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;font-size:14px;flex-shrink:0;box-shadow:0 2px 8px #ff660040}.username-code{background:#1e293b;padding:3px 8px;border-radius:8px;font-size:12px;color:#e2e8f0;font-family:ui-monospace,monospace}.stat-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}.font-size-sm{font-size:12.5px}.font-size-xs-muted{font-size:11.5px;color:var(--text-muted)}[style*="color:#6b7280"]{color:#475569!important}[style*="color:#9ca3af"]{color:#64748b!important}@media (max-width: 768px){.sidebar{transform:translate(-100%);z-index:120;width:280px;min-width:280px}.sidebar.open{transform:translate(0);box-shadow:var(--shadow-lg)}.mobile-overlay{display:block;position:fixed;inset:0;background:#0f274466;z-index:110}.mobile-menu-btn{display:inline-flex;align-items:center;justify-content:center}.page-wrapper{margin-left:0;width:100%}.topbar{padding:0 14px}.topbar-date{display:none}.page-content{padding:16px}.content-shell{width:100%}.page-header{flex-direction:column;align-items:flex-start}.two-col-grid,.dashboard-split{grid-template-columns:1fr}.toolbar-row .form-search,.toolbar-row .form-search-wide{max-width:100%;margin-left:0;width:100%}.steps{flex-direction:column}.step:first-child,.step:last-child{border-radius:var(--radius-sm)}.form-row,.form-row-3{grid-template-columns:1fr}.modal{min-width:unset;width:95%}.stat-grid-3{grid-template-columns:1fr}}
