:root{--primary: #0e7c86;--primary-dark: #0a5f68;--primary-deep: #0b3d63;--primary-soft: #e6f6f8;--teal: #14b8a6;--teal-soft: #ecfdf9;--navy: #0f2a43;--border: #e3ebf1;--border-strong: #cbd9e3;--bg: #f4f7fa;--card: #ffffff;--muted: #64748b;--danger: #dc2626;--success: #0f9d6e;--amber: #b45309;--text: #12283c;--radius: 18px;--radius-sm: 11px;--radius-pill: 999px;--shadow: 0 6px 24px rgba(15, 42, 67, .07);--shadow-lg: 0 16px 48px rgba(15, 42, 67, .14);--font: "Segoe UI", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Roboto, Arial, sans-serif}*{box-sizing:border-box}body{margin:0;font-family:var(--font);background:radial-gradient(1200px 500px at 100% -10%,rgba(14,124,134,.08),transparent 60%),radial-gradient(900px 400px at -10% 0,rgba(11,61,99,.07),transparent 55%),var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased;line-height:1.5}.topbar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(120deg,var(--navy) 0%,#123a5a 45%,#0e7c86 130%);color:#fff;padding:15px 28px;position:sticky;top:0;z-index:30;box-shadow:0 4px 20px #0b3d6347}.brand{font-weight:700;font-size:17px;letter-spacing:.3px;display:flex;align-items:center;gap:12px;color:#f0fafb}.brand-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#2dd4bf,#0e7c86);display:inline-flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #2dd4bf66;color:#fff}.topbar-right{display:flex;align-items:center;gap:14px}.user-chip{display:inline-flex;align-items:center;gap:10px;background:#ffffff17;border:1px solid rgba(255,255,255,.16);padding:6px 16px 6px 6px;border-radius:var(--radius-pill);font-size:13px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.user-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#2dd4bf,#0e7c86);border:1px solid rgba(255,255,255,.5);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff}.user-chip em{color:#bde7ec;font-style:normal;font-size:12px;font-weight:500}.tabs{display:flex;gap:6px;background:var(--card);padding:12px 28px 0;border-bottom:1px solid var(--border);position:sticky;top:61px;z-index:20;box-shadow:0 2px 10px #0f2a430d}.tab{border:none;background:transparent;padding:12px 20px;cursor:pointer;font-size:14px;font-weight:600;color:var(--muted);border-bottom:3px solid transparent;border-radius:10px 10px 0 0;transition:color .15s,background .15s}.tab:hover{color:var(--primary);background:var(--primary-soft)}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:700}.content{padding:28px;max-width:1500px;margin:0 auto}.btn{border:1px solid var(--border-strong);background:var(--card);padding:9px 18px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:600;color:var(--text);transition:all .16s;box-shadow:0 1px 2px #0f2a430d}.btn:hover{background:#f6fafc;border-color:var(--primary);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));border-color:transparent;color:#fff;box-shadow:0 6px 18px #0e7c8652}.btn-primary:hover{background:linear-gradient(135deg,#0e918f,var(--primary-dark));border-color:transparent;box-shadow:0 8px 22px #0e7c8661}.btn-ghost{background:transparent;box-shadow:none;color:var(--muted)}.btn-ghost:hover{background:#f0f6f9;color:var(--primary-dark);border-color:var(--border-strong);transform:none}.topbar .btn-ghost{color:#cfdcf0;border-color:#ffffff38}.topbar .btn-ghost:hover{background:#ffffff24;color:#fff;border-color:#ffffff59}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.link-like{background:none;border:none;color:var(--primary);cursor:pointer;padding:0;font-size:13px;font-weight:600;text-decoration:none}.link-like:hover{text-decoration:underline}.grid-view{width:100%}.grid-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:12px;flex-wrap:wrap}.toolbar-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.table-wrap{overflow:hidden;background:var(--card);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow)}.grid{border-collapse:separate;border-spacing:0;width:100%}.grid th,.grid td{border-bottom:1px solid var(--border);padding:10px 12px;vertical-align:middle;min-width:90px;font-size:13.5px}.grid th{background:#f4f8fb;font-weight:600;color:#3c5670;text-align:left;position:sticky;top:0;white-space:nowrap;letter-spacing:.2px}.grid tr:last-child td{border-bottom:none}.grid tbody tr{transition:background .12s}.grid tbody tr:hover{background:#eef6fb}.grid td input,.grid td select,.grid td textarea{width:100%;border:1px solid transparent;background:transparent;padding:6px 8px;font-size:13.5px;font-family:inherit;border-radius:8px;color:var(--text);transition:border-color .12s,background .12s}.grid td input:hover:not(:disabled),.grid td select:hover:not(:disabled){background:#fff;border-color:var(--border-strong)}.grid td input:focus,.grid td select:focus,.grid td textarea:focus{outline:none;border-color:var(--primary);background:#f7fdfe;box-shadow:0 0 0 3px #0e7c8626}.grid td input:disabled,.grid td select:disabled{color:#9db1c3;cursor:not-allowed;background:transparent}.num{text-align:right;font-variant-numeric:tabular-nums}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.muted{color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:40px 24px;font-size:14px}.error{color:var(--danger);margin:10px 0;background:#fef2f2;border:1px solid #fecaca;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px}.notice{color:#0f6b5d;background:#ecfdf9;border:1px solid #a7f3d0;padding:10px 14px;border-radius:var(--radius-sm);margin-bottom:14px;font-size:13.5px;display:flex;align-items:center;gap:8px;animation:slideIn .2s ease}@keyframes slideIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.card{background:var(--card);border:1px solid var(--border-strong);border-radius:var(--radius);padding:22px;margin-bottom:20px;box-shadow:var(--shadow)}.card h3{margin-top:0;margin-bottom:16px;font-size:16px;color:var(--primary-deep)}.form-card{max-width:820px}.form-card.inline{display:flex;gap:10px;align-items:center;max-width:760px}.form-card label{display:block;margin-bottom:12px;font-size:13px;font-weight:600;color:#2c4a63}.form-card input,.form-card select,.form-card textarea{width:100%;margin-top:6px;padding:9px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;font-family:inherit;color:var(--text);background:#fff;transition:border-color .12s,box-shadow .12s}.form-card input:focus,.form-card select:focus,.form-card textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8624}.grid-form{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.required-star{color:var(--danger, #b91c1c);font-weight:700}.field-error{border-radius:10px;padding:8px;margin:-8px;background:#fff1f0;box-shadow:inset 0 0 0 2px #ef6c6c}.field-error .required-star{color:#a10a0a;font-weight:800}.req-check{display:flex;align-items:center;gap:8px;margin-top:22px}.req-check-label{font-size:13.5px;font-weight:600;color:var(--text)}.req-check input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.grid-form .wide{grid-column:1 / -1}.row{display:flex;gap:10px;margin-top:14px}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;background:radial-gradient(800px 400px at 80% -10%,rgba(45,212,191,.18),transparent 60%),radial-gradient(700px 500px at 10% 110%,rgba(11,61,99,.16),transparent 55%),linear-gradient(140deg,#e8f4f8,#f2fafb 55%,#eef3fb);padding:24px}.login-card{background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.7);border-radius:24px;padding:44px;width:460px;box-shadow:var(--shadow-lg)}.login-header{display:flex;align-items:center;gap:14px;margin-bottom:10px}.login-header .brand-mark{width:52px;height:52px;border-radius:14px;font-size:22px}.login-card h1{font-size:21px;margin:0;color:var(--primary-deep)}.login-card .subtitle{color:var(--muted);margin:0 0 24px 66px;font-size:13.5px}.login-card input{width:100%;padding:11px 14px;margin-top:6px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;background:#fbfdfe;transition:border-color .12s,box-shadow .12s}.login-card input:focus{outline:none;border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px #0e7c8624}.login-card .btn{width:100%;margin-top:16px;padding:12px;border-radius:var(--radius-sm);font-size:15px}.hint{margin-top:24px;font-size:13px;color:var(--muted);border-top:1px solid var(--border);padding-top:16px}.hint .hint-title{font-weight:600;margin-bottom:6px;color:#3c5670}.hint .link-like{display:block;padding:4px 0;font-size:13px}.sys{color:var(--muted);font-size:11px}h2{margin-top:0;font-size:20px;margin-bottom:20px;color:var(--primary-deep)}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;white-space:nowrap}.toolbar-left{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.identities-title{font-size:20px;margin:0;color:var(--text)}.identities-search input{padding:8px 12px;border:1px solid var(--border-strong);border-radius:10px;font-size:13.5px;font-family:inherit;min-width:280px}.identities-search input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.identities-add{margin-bottom:18px}.identities-table .grid td{min-width:0}.identity-muted{opacity:.72;background:#fafafa}.identity-actions{display:flex;gap:6px;white-space:nowrap;align-items:center}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:1px solid transparent;border-radius:8px;background:none;color:var(--primary, #0e7c86);cursor:pointer;transition:background .12s,box-shadow .12s,color .12s}.icon-btn:hover{background:#ecfdf9;box-shadow:0 0 0 2px #0e7c8626}.icon-btn:disabled{opacity:.5;cursor:default;box-shadow:none}.icon-btn-danger{color:var(--danger, #b91c1c)}.icon-btn-danger:hover{background:#fef2f2;box-shadow:0 0 0 2px #b91c1c26}.history-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.history-item{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fbfdff}.history-num{font-weight:700;color:var(--primary-deep, #0f2a43);min-width:46px;flex-shrink:0}.history-summary{flex:1;color:var(--text, #1f2937);font-size:13.5px;line-height:1.5}.identities-table .grid input{width:100%;min-width:80px;padding:4px 8px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;font-family:inherit;color:var(--text);background:#fff}.identities-table .grid input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.btn-link{background:none;border:none;margin:0;padding:0;color:var(--primary);font-size:12.5px;font-weight:600;cursor:pointer;box-shadow:none;border-radius:0;font-family:inherit}.btn-link:hover{text-decoration:underline}.btn-link.danger{color:var(--danger, #b91c1c)}.chip-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;border:1px solid transparent;cursor:pointer;font-family:inherit;padding-right:22px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.chip-select:hover{box-shadow:0 0 0 2px #0e7c8633}.chip-select option{color:var(--text);background:var(--card)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;white-space:nowrap}.status-pill:before{content:"";width:7px;height:7px;border-radius:50%}.status-brouillon{background:#f3f4f6;color:#4b5563}.status-brouillon:before{background:#9ca3af}.status-valide{background:#fff7ed;color:#b45309}.status-valide:before{background:#f59e0b}.status-archive{background:#e6f0fb;color:#1d4b8f}.status-archive:before{background:#2f7bd0}.status-annule{background:#fef2f2;color:#b91c1c}.status-annule:before{background:#ef4444}.status-termine{background:#ecfdf5;color:#047857}.status-termine:before{background:#10b981}.status-cell{min-width:170px}.status-plate{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:150px}.treat-badge{display:inline-flex;align-items:center;gap:5px;border:1px dashed var(--border-strong);background:#fff;color:var(--muted);border-radius:var(--radius-pill);padding:3px 10px;font-size:11.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .12s}.treat-badge:disabled{cursor:default;opacity:.55}.treat-badge:not(:disabled):hover{border-color:var(--primary);color:var(--primary-dark);background:var(--primary-soft)}.treat-badge.treat-done{border-style:solid}.treat-badge.treat-si.treat-done{background:#e0f2fe;border-color:#7dd3fc;color:#0369a1}.treat-badge.treat-rh.treat-done{background:#ede9fe;border-color:#c4b5fd;color:#6d28d9}.treat-label:before{content:"✓ ";font-weight:700}.treat-badge:not(.treat-done) .treat-label:before{content:"＋ "}.treat-stamp{display:inline-flex;flex-direction:column;align-items:flex-start;gap:5px}.treat-stamp-row{display:inline-flex;align-items:center;gap:6px}.treat-stamp-value{font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.treat-stamp-input{width:190px;padding:4px 8px;border:1px solid var(--border-strong);border-radius:8px;font-size:12.5px;font-family:inherit;color:var(--text);background:#fff}.treat-stamp-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.treat-stamp-btn{display:inline-flex;align-items:center;gap:5px;border:1px dashed var(--border-strong);background:#fff;color:var(--muted);border-radius:var(--radius-pill);padding:3px 10px;font-size:11.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .12s}.treat-stamp-btn:hover{border-color:var(--primary);color:var(--primary-dark);background:var(--primary-soft)}.treat-stamp-btn:focus-visible,.treat-stamp-clear:focus-visible{outline:none;box-shadow:0 0 0 2px #0e7c8673}.treat-stamp-clear{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:11px;line-height:1;width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}.treat-stamp-clear:hover{color:var(--danger);background:#fef2f2}select.status-cell,.status-cell{min-width:110px}.status-select{border:1px solid transparent;cursor:pointer;min-width:110px;-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:22px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.status-select:disabled,.status-select:hover:disabled{background-image:none;cursor:not-allowed}.cellselect{display:inline-flex;max-width:100%}.autosuggest{position:relative;align-items:center}.autosuggest-input{width:100%;min-width:150px;max-width:100%;padding:4px 26px 4px 10px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;font-family:inherit;color:var(--text);background:#fff}.autosuggest-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.autosuggest-caret{position:absolute;right:8px;pointer-events:none;color:var(--text-muted, #94a3b8)}.autosuggest-menu .autosuggest-hi{background:#ecfdf9}.autosuggest-menu .autosuggest-hi .fdropdown-option-label{font-weight:600}.identity-autofill{position:relative;width:100%}.identity-autofill input{width:100%;min-width:200px;max-width:100%;padding:6px 10px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;font-family:inherit;color:var(--text);background:#fff}.identity-autofill input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.identity-suggest{position:absolute;top:calc(100% + 6px);left:0;right:0;max-height:260px;overflow-y:auto;background:#fff;border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-lg);z-index:70}.identity-suggest-head{padding:8px 12px;font-size:12px;color:var(--muted, #64748b);border-bottom:1px solid var(--border)}.identity-suggest-item{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--border);flex-wrap:wrap}.identity-suggest-item.autosuggest-hi{background:#ecfdf9}.identity-suggest-name{font-weight:600;color:var(--text)}.identity-suggest-sub{font-size:12.5px;color:var(--muted, #64748b)}.identity-confirm-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;margin:16px 0}.identity-confirm-grid>div{display:flex;flex-direction:column;gap:3px}.identity-confirm-grid .wide{grid-column:1 / -1}.text-danger{color:var(--danger, #b91c1c)}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.cellselect-toggle{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;cursor:pointer;max-width:100%;font-family:inherit;transition:box-shadow .12s,filter .12s}.cellselect-toggle:hover{filter:brightness(.94);box-shadow:0 0 0 2px #0e7c8638}.cellselect-toggle:focus-visible{outline:none;box-shadow:0 0 0 2px #0e7c8673}.cellselect-open,.cellselect-open:hover{filter:none;box-shadow:0 0 0 2px #0e7c8647}.cellselect-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cellselect-toggle .muted{color:var(--muted)}.cellselect-caret{flex-shrink:0;opacity:.65}.cellselect-open .cellselect-caret{opacity:1;transform:rotate(90deg)}.cellselect-menu{min-width:200px;max-width:300px}.cellselect-option{padding:8px 10px;transition:background .1s}.cellselect-option:hover{background:#eef6fb}.excel-findbar{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#fbfdfe,#f5f9fc);position:sticky;top:0;z-index:5}.excel-find-label{font-size:12px;font-weight:700;color:#3c5670;letter-spacing:.3px;text-transform:uppercase}.excel-find-input{flex:0 1 340px;padding:8px 30px 8px 14px;border:1px solid var(--border-strong);border-radius:9px;font-size:13px;background:#fff;transition:border-color .12s,box-shadow .12s}.excel-find-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.excel-find-clear{margin-left:-26px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px}.excel-find-count{margin-left:auto;font-size:12px;color:var(--muted);font-weight:500}.excel-scroll{overflow:auto;max-height:72vh}.grid.excel{border-collapse:separate;border-spacing:0;font-size:13px}.grid.excel th,.grid.excel td{padding:8px 11px;border:1px solid #dce6ee;min-width:100px}.grid.excel thead th{background:#eef4f9;color:#35506a;font-weight:700;border:1px solid #d3dfe9;position:sticky;top:0;z-index:4;white-space:nowrap;font-size:12.5px;letter-spacing:.2px}.grid.excel thead th.th-sort{cursor:pointer;-webkit-user-select:none;user-select:none}.grid.excel thead th.th-sort:hover{background:#e3edf5}.grid.excel thead th.th-sort-active{background:#e0f0f4;color:var(--primary-dark)}.th-label{display:inline-block}.th-arrow{display:inline-block;width:16px;text-align:center;font-size:11px;color:#9db1c3}.th-sort-active .th-arrow{color:var(--primary)}.grid.excel thead th.th-actions,.grid.excel td.th-actions{min-width:60px;text-align:center;border:none;background:transparent}.grid.excel tbody tr:nth-child(2n){background:#f7fafc}.grid.excel tbody tr:nth-child(odd){background:#fff}.grid.excel tbody tr:hover td{background:#eaf4f9}.row-num{color:#9db1c3;min-width:50px}.grid.excel td input,.grid.excel td select,.grid.excel td textarea{border:1px solid transparent;background:transparent;padding:4px 6px;border-radius:6px;font-size:13px;transition:border-color .1s,background .1s}.grid.excel td input:hover,.grid.excel td select:hover{background:#fff;border-color:var(--border-strong)}.grid.excel td input:focus,.grid.excel td select:focus,.grid.excel td textarea:focus{outline:none;border-color:var(--primary);background:#fff;box-shadow:0 0 0 2px #0e7c862e}.grid.excel .empty{padding:32px}.th-with-filter{display:flex;align-items:center;gap:4px}.th-with-filter .th-clickable{display:inline-flex;align-items:center;gap:2px;cursor:pointer;-webkit-user-select:none;user-select:none;flex:1}.grid.excel thead th.th-filtered{background:#fff7ed;color:var(--amber)}.fdropdown{position:relative;display:inline-flex}.fdropdown-toggle{display:inline-flex;align-items:center;gap:2px;background:transparent;border:1px solid transparent;border-radius:5px;padding:2px 4px;font-size:11px;font-weight:600;color:#7b91a6;cursor:pointer;max-width:90px;white-space:nowrap}.fdropdown-toggle:hover{background:#e3edf5}.fdropdown-active.fdropdown-toggle{background:#ffedd5;border-color:#fdba74;color:var(--amber)}.fdropdown-summary{overflow:hidden;text-overflow:ellipsis}.fdropdown-caret{flex-shrink:0}.fdropdown-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;background:#fff;border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-lg);min-width:220px;max-width:300px}.fdropdown-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600;color:#334155}.fdropdown-clear{background:none;border:none;color:var(--primary);cursor:pointer;font-size:12px;font-weight:600}.fdropdown-options{max-height:260px;overflow-y:auto;padding:4px}.fdropdown-option{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:7px;cursor:pointer;font-size:13px}.fdropdown-option:hover{background:#f0f7fa}.fdropdown-option input[type=checkbox]{margin:0;width:15px;height:15px;accent-color:var(--primary);cursor:pointer}.fdropdown-option-label{flex:1}.fdropdown-check{color:var(--primary);font-weight:700}.fdropdown-empty{padding:12px;color:var(--muted);font-size:13px}.fdropdown-footer{padding:8px 12px;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.saved-filters{display:inline-flex}.saved-filters-menu{position:absolute;z-index:60;background:#fff;border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-lg);width:280px;max-width:calc(100vw - 24px);display:flex;flex-direction:column}.saved-filters-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600;color:#334155}.saved-filters-save{padding:10px 12px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.saved-filters-save-label{font-size:12px;color:#64748b}.saved-filters-save-row{display:flex;gap:6px}.saved-filters-save-row input{flex:1;min-width:0;padding:6px 8px;border:1px solid var(--border-strong);border-radius:8px;font-family:inherit;font-size:13px}.saved-filters-notice{margin:0 12px;padding:6px 8px;font-size:12px;color:#047857;background:#ecfdf5;border-radius:6px}.saved-filters-error{margin:0 12px;padding:6px 8px;font-size:12px;color:#b91c1c;background:#fef2f2;border-radius:6px}.saved-filters-list{max-height:240px;overflow-y:auto;padding:4px}.saved-filters-item{display:flex;align-items:center;gap:6px;padding:7px 8px;border-radius:7px}.saved-filters-item:hover{background:#f0f7fa}.saved-filters-name{flex:1;text-align:left;background:none;border:none;cursor:pointer;font-family:inherit;font-size:13px;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-filters-name:hover{color:var(--primary)}.saved-filters-del{background:none;border:none;cursor:pointer;color:#94a3b8;font-size:13px;line-height:1;padding:2px 4px;border-radius:5px}.saved-filters-del:hover{color:#b91c1c;background:#fef2f2}.daterange-mode{display:flex;gap:6px;padding:10px 12px 2px}.daterange-mode-btn{flex:1;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);font-size:12.5px;font-family:inherit;cursor:pointer;transition:all .12s}.daterange-mode-btn:hover{border-color:var(--primary)}.daterange-mode-btn.active{background:var(--primary, #0e7c86);border-color:var(--primary, #0e7c86);color:#fff}.daterange-inputs{display:flex;gap:10px;padding:12px}.daterange-emptyhint{padding:14px 16px;font-size:12.5px;color:var(--text-muted, #6b7280);line-height:1.4}.daterange-input{display:flex;flex-direction:column;gap:4px;flex:1;font-size:12px;color:var(--text-muted, #6b7280)}.daterange-input input[type=date]{padding:6px 8px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;font-family:inherit;color:var(--text);background:#fff}.daterange-input input[type=date]:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.daterange-input input[type=date]:disabled{opacity:.45;background:#f3f4f6;cursor:not-allowed}.btn-sm{padding:6px 12px;font-size:12.5px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b1c2d73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:50;padding:24px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--card);border-radius:var(--radius);padding:24px;max-width:940px;width:100%;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:popIn .18s ease}@keyframes popIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-head h3{margin:0;font-size:16px;color:var(--primary-deep)}.audit th,.audit td{min-width:80px}.app-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--muted);font-size:15px;gap:10px}.app-loading:before{content:"";width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tools-page{display:flex;flex-direction:column;gap:18px}.tools-page>h2{margin:0;color:var(--primary-deep);font-size:22px}.tools-page>.muted{margin:-8px 0 0}.tools-section{display:flex;flex-direction:column;gap:12px}.tools-section h3{margin:0;font-size:16px;color:var(--primary-deep)}.tools-section .row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.tool-hint{margin:0;font-size:12.5px}.tool-days{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text)}.tool-days input{width:90px;padding:6px 10px;border:1px solid var(--border-strong);border-radius:8px;font-family:inherit;font-size:13px}.tool-file{display:inline-flex;flex-direction:column;gap:4px}.tool-file input[type=file]{font-size:13px}.btn-danger{background:linear-gradient(135deg,#dc2626,#b91c1c);border-color:transparent;color:#fff;box-shadow:0 6px 18px #dc26264d}.btn-danger:hover{background:linear-gradient(135deg,#ef4444,#b91c1c);border-color:transparent;color:#fff;box-shadow:0 8px 22px #dc262661}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.stat{display:flex;flex-direction:column;gap:2px;background:#f4fafb;border:1px solid var(--border);border-radius:12px;padding:12px 14px}.stat-num{font-size:22px;font-weight:700;color:var(--primary)}.stat span:last-child{font-size:12px;color:var(--muted)}.stats-page{display:flex;flex-direction:column;gap:20px}.stats-filterbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;background:#fff;border:1px solid var(--border);border-radius:14px;padding:16px 18px}.stats-filter-title{font-size:13px;font-weight:600;color:var(--text);align-self:center}.stats-filter-input{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.stats-filter-input input[type=date]{padding:6px 8px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;font-family:inherit;color:var(--text);background:#fff}.stats-filter-input input[type=date]:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.stats-filter-select{padding:6px 8px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;font-family:inherit;color:var(--text);background:#fff;min-width:190px}.stats-filter-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0e7c8626}.stats-filter-presets{display:flex;flex-wrap:wrap;gap:6px}.stats-preset-btn{padding:6px 12px;font-size:12.5px;font-family:inherit;color:var(--primary-dark);background:var(--primary-soft);border:1px solid transparent;border-radius:999px;cursor:pointer;transition:background .15s,border-color .15s}.stats-preset-btn:hover{background:#dceff2}.stats-preset-btn.active{background:var(--primary);color:#fff;border-color:var(--primary-dark)}.stats-period{font-size:13px;color:var(--muted)}.stats-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}.stats-error{color:#b42318;background:#fef3f2;border:1px solid #fecdca;border-radius:10px;padding:12px 14px;font-size:13px}.stats-loading{color:var(--muted);font-size:13px}.stats-group{background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 20px}.stats-group-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.stats-group-head h3{margin:0;font-size:16px;font-weight:600;color:var(--text)}.stats-group-total{font-size:13px;font-weight:600;color:var(--primary-dark);background:var(--primary-soft);padding:4px 12px;border-radius:999px}.stats-group-body{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.stats-chart{min-width:0;height:auto}.stats-table{width:100%;border-collapse:collapse;font-size:13px}.stats-table th,.stats-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.stats-table th.num,.stats-table td.num{text-align:right}.stats-table th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.stats-table tbody tr.total{font-weight:600;color:var(--primary-dark);background:var(--primary-soft)}.stats-empty{color:var(--muted);font-size:13px;margin:0}@media (max-width: 720px){.stats-group-body{grid-template-columns:1fr}}
