:root{--bg-primary: #f4f7f5;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-hover: #eef5f0;--bg-active: #e2ede6;--bg-input: #f0f5f2;--border: #d4ddd7;--border-light: #c0ccc4;--text-primary: #1a2e22;--text-secondary: #5a7265;--text-muted: #8a9e92;--accent: #2d8a4e;--accent-hover: #23703f;--accent-light: #d4f0de;--accent-glow: rgba(45, 138, 78, .15);--success: #1fa85a;--warning: #e5a100;--danger: #d93636;--prio-obligatoire-bg: #fde8e8;--prio-obligatoire: #c0392b;--prio-tres-eleve-bg: #fef3e2;--prio-tres-eleve: #d4760a;--prio-eleve-bg: #fef9e2;--prio-eleve: #b8960a;--prio-moyen-bg: #e6f7ed;--prio-moyen: #1a8a4a;--prio-faible-bg: #eef1ef;--prio-faible: #7a8e82;--radius: 10px;--radius-sm: 6px;--radius-lg: 16px;--shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 4px 16px rgba(0, 0, 0, .04);--shadow-lg: 0 4px 24px rgba(0, 0, 0, .08);--transition: .2s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased}.hidden{display:none!important}#login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#e8f5ec,#f4f7f5 30%,#fff 70%,#e8f5ec)}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:48px 40px;width:400px;box-shadow:var(--shadow-lg)}.login-logo{text-align:center;margin-bottom:36px}.logo-icon{width:56px;height:56px;background:linear-gradient(135deg,var(--accent),#4caf70);border-radius:14px;display:inline-flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;color:#fff;margin-bottom:16px;box-shadow:0 4px 16px var(--accent-glow)}.login-logo h1{font-size:26px;font-weight:700;letter-spacing:-.5px;color:var(--text-primary)}.login-subtitle{color:var(--text-secondary);font-size:14px;margin-top:4px}.form-group{margin-bottom:20px}.form-group label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.form-group input{width:100%;padding:12px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:14px;font-family:inherit;transition:var(--transition)}.form-group input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.form-group input::placeholder{color:var(--text-muted)}.login-error{color:var(--danger);font-size:13px;min-height:20px;text-align:center;margin-bottom:8px}.btn-login{width:100%;padding:12px;background:linear-gradient(135deg,var(--accent),#38a85c);border:none;border-radius:var(--radius);color:#fff;font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;transition:var(--transition)}.btn-login:hover{transform:translateY(-1px);box-shadow:0 6px 20px var(--accent-glow)}.btn-login:active{transform:translateY(0)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:60px;background:var(--bg-secondary);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;box-shadow:0 1px 4px #0000000a}.header-left{display:flex;align-items:center;gap:10px}.logo-small{width:34px;height:34px;background:linear-gradient(135deg,var(--accent),#4caf70);border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800;color:#fff}.brand-name{font-weight:700;font-size:18px;letter-spacing:-.3px}.header-tabs{display:flex;gap:4px}.tab-btn{display:flex;align-items:center;gap:8px;padding:8px 18px;background:transparent;border:none;border-radius:var(--radius);color:var(--text-secondary);font-size:14px;font-weight:500;font-family:inherit;cursor:pointer;transition:var(--transition)}.tab-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.tab-btn.active{color:var(--accent);background:var(--accent-light);font-weight:600}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;padding:0 7px;background:var(--border);border-radius:12px;font-size:11px;font-weight:600;color:var(--text-secondary)}.active .tab-count{background:var(--accent);color:#fff}.btn-icon{padding:8px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:var(--transition)}.btn-icon:hover{color:var(--danger);background:#d9363614}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;gap:16px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.toolbar-left{flex:1;max-width:500px}.search-box{display:flex;align-items:center;gap:10px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);padding:0 14px;transition:var(--transition)}.search-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.search-box svg{color:var(--text-muted);flex-shrink:0}.search-box input{flex:1;padding:10px 0;background:none;border:none;color:var(--text-primary);font-size:14px;font-family:inherit;outline:none}.search-box input::placeholder{color:var(--text-muted)}.search-box kbd{font-family:inherit;font-size:11px;padding:2px 6px;background:var(--bg-active);border:1px solid var(--border);border-radius:4px;color:var(--text-muted)}.toolbar-right{display:flex;align-items:center;gap:12px}.selection-info{font-size:13px;color:var(--text-secondary);white-space:nowrap}.btn-action{display:flex;align-items:center;gap:6px;padding:9px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:var(--transition);white-space:nowrap}.btn-action:hover{background:var(--bg-hover);border-color:var(--border-light)}.btn-action.btn-accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn-action.btn-accent:hover{background:var(--accent-hover);box-shadow:0 2px 10px var(--accent-glow)}.filters-bar{display:flex;align-items:center;gap:12px;padding:12px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-wrap:wrap}.filters-row{display:flex;gap:10px;flex-wrap:wrap;flex:1}.filter-group{position:relative}.filter-btn{display:flex;align-items:center;gap:6px;padding:7px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;font-family:inherit;cursor:pointer;transition:var(--transition);white-space:nowrap}.filter-btn:hover{border-color:var(--border-light);color:var(--text-primary)}.filter-btn.has-filter{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}.filter-btn.has-exclusion{border-color:var(--danger);color:var(--danger);background:#fde8e8}.filter-btn .filter-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:var(--accent);border-radius:9px;font-size:10px;font-weight:700;color:#fff}.filter-btn .filter-badge.exclusion-badge{background:var(--danger)}.filter-dropdown{position:absolute;top:100%;left:0;margin-top:6px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:50;min-width:260px;max-height:360px;display:none;flex-direction:column}.filter-dropdown.open{display:flex}.filter-dropdown.align-right{left:auto;right:0}.filter-dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);gap:8px}.filter-dropdown-header .filter-toggle-all{font-size:12px;color:var(--accent);background:none;border:none;cursor:pointer;font-family:inherit;font-weight:500}.filter-dropdown-header .filter-toggle-all:hover{text-decoration:underline}.filter-dropdown-search{padding:8px 12px;border-bottom:1px solid var(--border)}.filter-dropdown-search input{width:100%;padding:7px 10px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:13px;font-family:inherit;outline:none}.filter-dropdown-search input:focus{border-color:var(--accent)}.filter-dropdown-list{overflow-y:auto;padding:6px;max-height:260px}.filter-option{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text-primary);transition:var(--transition)}.filter-option:hover{background:var(--bg-hover)}.filter-option input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}.filter-option .option-count{margin-left:auto;font-size:11px;color:var(--text-muted)}.btn-clear-filters{display:flex;align-items:center;gap:4px;padding:6px 12px;background:#d936360f;border:1px solid rgba(217,54,54,.15);border-radius:var(--radius-sm);color:var(--danger);font-size:12px;font-family:inherit;cursor:pointer;transition:var(--transition);white-space:nowrap}.btn-clear-filters:hover{background:#d936361a}.table-container{flex:1;overflow:auto}#data-table{width:100%;border-collapse:collapse;font-size:13px}#data-table thead{position:sticky;top:0;z-index:10}#data-table th{background:var(--bg-primary);padding:11px 14px;text-align:left;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);border-bottom:2px solid var(--border);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition)}#data-table th:hover{color:var(--text-primary)}#data-table th.sort-asc,#data-table th.sort-desc{color:var(--accent)}#data-table th .sort-icon{display:inline-block;margin-left:4px;font-size:10px;opacity:.4}#data-table th.sort-asc .sort-icon,#data-table th.sort-desc .sort-icon{opacity:1}#data-table th:first-child{cursor:default}#data-table td{padding:9px 14px;border-bottom:1px solid #edf2ef;color:var(--text-primary);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#data-table tbody tr{transition:var(--transition)}#data-table tbody tr:hover{background:var(--bg-hover)}#data-table tbody tr.selected{background:var(--accent-light)}#data-table td:first-child,#data-table th:first-child{padding-left:24px;width:44px}.row-checkbox{accent-color:var(--accent);width:16px;height:16px;cursor:pointer}.priority-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.3px}.priority-badge.prio-obligatoire{background:var(--prio-obligatoire-bg);color:var(--prio-obligatoire)}.priority-badge.prio-tres-eleve{background:var(--prio-tres-eleve-bg);color:var(--prio-tres-eleve)}.priority-badge.prio-eleve{background:var(--prio-eleve-bg);color:var(--prio-eleve)}.priority-badge.prio-moyen{background:var(--prio-moyen-bg);color:var(--prio-moyen)}.priority-badge.prio-faible{background:var(--prio-faible-bg);color:var(--prio-faible)}.email-link{color:var(--accent);text-decoration:none;transition:var(--transition)}.email-link:hover{color:var(--accent-hover);text-decoration:underline}.no-email{color:var(--text-muted);font-style:italic}.no-results{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;color:var(--text-muted);gap:16px}.no-results p{font-size:16px}.table-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:var(--bg-secondary);border-top:1px solid var(--border);position:sticky;bottom:0;z-index:10}.footer-left{display:flex;align-items:center;gap:16px;font-size:13px;color:var(--text-secondary)}.footer-left select{padding:5px 8px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:inherit;font-size:13px;cursor:pointer}.showing-info{color:var(--text-muted)}.pagination{display:flex;align-items:center;gap:4px}.page-btn{min-width:36px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;font-family:inherit;cursor:pointer;transition:var(--transition)}.page-btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border)}.page-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.page-btn:disabled{opacity:.3;cursor:default}.page-ellipsis{color:var(--text-muted);padding:0 4px;font-size:13px}.stats-bar{display:flex;gap:16px;padding:16px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-wrap:wrap}.stat-card{display:flex;flex-direction:column;gap:2px;padding:14px 20px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);min-width:140px}.stat-card .stat-value{font-size:24px;font-weight:700;color:var(--accent)}.stat-card .stat-label{font-size:12px;color:var(--text-secondary)}.generator-panel{padding:20px 24px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}.generator-panel h3{font-size:15px;font-weight:600;margin-bottom:12px;color:var(--text-primary)}.generator-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.gen-field{display:flex;flex-direction:column;gap:4px}.gen-field label{font-size:12px;font-weight:500;color:var(--text-secondary)}.gen-field input,.gen-field select{padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:inherit;font-size:13px}.gen-field input:focus,.gen-field select:focus{outline:none;border-color:var(--accent)}.gen-field input{min-width:200px}.btn-generate{padding:9px 18px;background:var(--accent);border:none;border-radius:var(--radius-sm);color:#fff;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:var(--transition)}.btn-generate:hover{background:var(--accent-hover)}.gen-preview{margin-top:10px;padding:10px 14px;background:var(--accent-light);border-radius:var(--radius-sm);font-size:13px;color:var(--accent);font-family:SF Mono,Fira Code,monospace}#app{display:flex;flex-direction:column;min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-light)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}#app{animation:fadeIn .3s ease}.login-card{animation:fadeIn .4s ease}@media(max-width:900px){.toolbar{flex-direction:column;align-items:stretch}.toolbar-left{max-width:none}.toolbar-right{justify-content:flex-end}.filters-row{flex-direction:column}.app-header{padding:0 12px}.search-box kbd{display:none}.stats-bar,.generator-form{flex-direction:column}}
