*{box-sizing:border-box}:root{--bg: #f4f6fb;--panel: #ffffff;--text: #0f172a;--muted: #4b5563;--border: #e6ebf2;--border-strong: #cbd5e1;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-soft: #eff6ff;--danger: #b91c1c;--danger-bg: #fee2e2;--success: #047857;--success-bg: #d1fae5;--warning-bg: #fef3c7;--warning: #92400e;--sidebar: #0f172a;--sidebar-hover: #1e293b;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 3px rgba(15, 23, 42, .03);--shadow-md: 0 6px 16px rgba(15, 23, 42, .07), 0 2px 6px rgba(15, 23, 42, .04);--shadow-lg: 0 18px 48px rgba(15, 23, 42, .12);--radius: 14px;--radius-sm: 9px;--ring: 0 0 0 3px rgba(37, 99, 235, .28);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px}html,body,#root{min-height:100%}body{font-family:-apple-system,system-ui,Segoe UI,Roboto,sans-serif;margin:0;background:var(--bg);color:var(--text);font-size:clamp(15px,.92rem + .18vw,17px);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.page p,.card p,.subtitle,td,th,li{line-height:1.5}.muted,small.muted{color:var(--muted)}small{font-size:.8125rem}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh;background:linear-gradient(to right,var(--sidebar) 0 240px,var(--bg) 240px)}.app>*{min-width:0}html,body{overflow-x:hidden}.sidebar{background:var(--sidebar);color:#fff;display:flex;flex-direction:column;padding:16px 0;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar .brand{padding:0 20px 16px;font-weight:700;font-size:18px;border-bottom:1px solid #2d3344;margin-bottom:12px}.sidebar nav{display:flex;flex-direction:column;gap:2px;padding:0 8px}.sidebar nav button{color:#cbd5e1;background:none;border:0;padding:10px 14px;border-radius:9px;font-size:14px;font-weight:500;cursor:pointer;text-align:left;transition:background .13s ease,color .13s ease}.sidebar nav button:hover{background:#2d3344;color:#fff}.sidebar nav button.active{background:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}.sidebar nav button:focus-visible{outline:none;box-shadow:0 0 0 2px #ffffffa6}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--primary);color:#fff;padding:10px 16px;border-radius:0 0 8px;font-weight:600}.skip-link:focus{left:0}.main:focus{outline:none}.nav-groups{gap:4px}.nav-group{border:0}.nav-group>summary{list-style:none;cursor:pointer;color:#94a3b8;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:10px 14px 4px;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:6px}.nav-group>summary::-webkit-details-marker{display:none}.nav-group>summary:after{content:"▸";margin-left:auto;font-size:10px;transition:transform .15s ease}.nav-group[open]>summary:after{transform:rotate(90deg)}.nav-group>summary:hover{color:#e2e8f0}.nav-group>summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:6px}.nav-group ul{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column;gap:2px}.nav-group ul button{width:100%}.sidebar .footer{margin-top:auto;padding:16px 20px;font-size:12px;color:#94a3b8}.main{padding:28px clamp(18px,3vw,40px) 96px;width:100%;max-width:none;min-width:0;flex:1}.menu-btn{display:none;background:var(--sidebar);color:#fff;padding:10px 14px;border:0;border-radius:8px;font-size:16px;cursor:pointer;align-items:center;gap:8px}.topbar{display:none;background:var(--sidebar);color:#fff;padding:12px 16px;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.topbar .brand{font-weight:700}.container{max-width:100%;margin:0 auto}h1{margin:0 0 10px;font-size:clamp(21px,1.25rem + .85vw,29px);letter-spacing:-.015em}h2{margin:24px 0 10px;font-size:clamp(18px,1.05rem + .45vw,22px);letter-spacing:-.01em}h3{margin:0 0 14px;font-size:clamp(15px,.95rem + .2vw,17px);letter-spacing:-.005em}.subtitle{color:var(--muted);margin-bottom:20px;font-size:14px;max-width:72ch}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px}.kpi-grid>div{display:flex;flex-direction:column;gap:4px;background:var(--bg, #f8fafc);border:1px solid var(--border);border-radius:12px;padding:16px}.kpi-grid .muted{font-size:12px}.card{background:var(--panel);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-sm);margin-bottom:20px;border:1px solid var(--border);min-width:0;max-width:100%;overflow-wrap:anywhere}.card+.card{margin-top:0}.row{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}.row-3{display:grid;grid-template-columns:3fr 1fr 1fr 1fr auto;gap:10px;align-items:center}.row-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px 18px}label{display:block;font-size:13px;font-weight:500;color:#374151;margin-bottom:6px}.req-star{color:var(--danger);font-weight:700}input,select,textarea{width:100%;max-width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:var(--radius-sm);font-size:14px;font-family:inherit;min-width:0;background:#fff;color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring)}input:disabled,select:disabled,textarea:disabled{background:#f3f5f9;color:#6b7280;cursor:not-allowed}textarea{min-height:72px;resize:vertical;line-height:1.5}input[type=checkbox],input[type=radio]{width:24px;height:24px;min-width:24px;min-height:24px;accent-color:var(--primary);cursor:pointer}button{padding:10px 16px;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;font-weight:600;font-size:13.5px;line-height:1.25;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .08s ease;white-space:nowrap}button:not(.primary):not(.danger):not(.success):not(.danger-solid):not(.modal-close){background:#fff;color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}button:not(.primary):not(.danger):not(.success):not(.danger-solid):not(.modal-close):hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}button.primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}button.primary:hover{background:var(--primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}a.btn{padding:10px 16px;border:1px solid transparent;border-radius:var(--radius-sm);font-weight:600;font-size:13.5px;line-height:1.25;display:inline-flex;align-items:center;gap:7px;text-decoration:none;transition:background .15s ease,border-color .15s ease,color .15s ease}a.btn.primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}a.btn.primary:hover{background:var(--primary-hover)}a.btn.secondary{background:#fff;color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}a.btn.secondary:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}button.secondary{background:#fff;color:var(--text);border-color:var(--border-strong)}button.secondary:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}button.danger{background:var(--danger-bg);color:var(--danger);border-color:transparent}button.success{background:var(--success-bg);color:var(--success);border-color:transparent}button:active{transform:translateY(1px);box-shadow:var(--shadow-sm)}button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}button:focus-visible{outline:none;box-shadow:var(--ring)}.table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--border);max-width:100%;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;background:#fff;font-size:14px}table th,table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border)}table th{background:#f9fafb;font-weight:600;color:#374151;font-size:12.5px;text-transform:uppercase;letter-spacing:.02em}table tbody tr{transition:background .12s ease}table tbody tr:hover{background:#f8fafc}table tbody tr:last-child td{border-bottom:0}.totals{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.totals .line{display:flex;gap:24px}.totals .label{color:var(--muted)}.totals .value{font-weight:600;min-width:120px;text-align:right}.totals .grand{font-size:18px}.errors{background:var(--danger-bg);color:#991b1b;padding:8px 12px;border-radius:8px;margin:8px 0}.actions{display:flex;gap:10px;flex-wrap:wrap}.muted{color:var(--muted);font-size:13px}.badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:600}.badge.active{background:var(--success-bg);color:var(--success)}.badge.terminated{background:var(--danger-bg);color:var(--danger)}.badge.on_leave{background:var(--warning-bg);color:var(--warning)}.badge.planned{background:#e0e7ff;color:#3730a3}.badge.on_hold,.badge.in_progress{background:var(--warning-bg);color:var(--warning)}.badge.done,.badge.completed,.badge.submitted{background:var(--success-bg);color:var(--success)}.badge.cancelled,.badge.blocked{background:var(--danger-bg);color:var(--danger)}.badge.draft{background:var(--border);color:var(--text)}.tree-wrap{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}.tree{list-style:none;padding-left:24px;margin:0;position:relative}.tree.root{padding-left:0}.tree li{margin:8px 0;position:relative}.tree:not(.root)>li:before{content:"";position:absolute;left:-16px;top:18px;width:12px;border-top:2px solid var(--border)}.tree:not(.root)>li:after{content:"";position:absolute;left:-16px;top:-8px;bottom:50%;border-left:2px solid var(--border)}.tree:not(.root)>li:last-child:after{bottom:calc(50% + -0px)}.tree .node{background:#fff;padding:8px 12px;border-radius:8px;border:1px solid var(--border);display:inline-block}@media (max-width: 1024px){.app{grid-template-columns:200px 1fr;background:linear-gradient(to right,var(--sidebar) 0 200px,var(--bg) 200px)}.row-3{grid-template-columns:2fr 1fr 1fr 1fr auto}}@media (max-width: 768px){.app{grid-template-columns:1fr;background:var(--bg)}.sidebar{position:fixed;top:0;left:0;bottom:0;width:80%;max-width:280px;transform:translate(-100%);transition:transform .2s ease;z-index:30;height:100vh}.sidebar.open{transform:translate(0);box-shadow:0 0 30px #0006}.topbar{display:flex}.menu-btn{display:inline-flex}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:25}.row,.row-3{grid-template-columns:1fr}.main{padding:16px}h1{font-size:20px}.timesheet-toolbar .ts-toolbar-buttons button{flex:1 1 calc(50% - 4px);justify-content:center}.timesheet-toolbar .ts-toolbar-buttons [data-testid=ts-back]{flex:1 1 100%;margin-right:0}.timesheet-toolbar .ts-toolbar-group{width:100%;justify-content:stretch}.timesheet-toolbar .ts-toolbar-group button{flex:1 1 calc(50% - 4px)}}@media (max-width: 480px){.card{padding:14px}.main{padding:12px 12px 92px}table th,table td{padding:8px;font-size:14px}button{padding:10px 12px;font-size:14px}.timesheet-toolbar .ts-toolbar-buttons button{flex:1 1 100%}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.modal{background:var(--panel);border-radius:14px;box-shadow:0 20px 60px #00000040;width:100%;max-height:90vh;overflow:auto;animation:slideIn .18s ease}.modal-sm{max-width:420px}.modal-md{max-width:560px}.modal-lg{max-width:780px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-header h3{margin:0;font-size:16px}.modal-close{background:transparent;border:0;font-size:24px;line-height:1;color:var(--muted);cursor:pointer;padding:0 4px;font-weight:400}.modal-close:hover{color:var(--text)}.modal-body{padding:20px}.modal-message{font-size:14px;color:var(--text);margin-bottom:16px;line-height:1.5}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.modal-actions button{min-width:100px}.modal .row-form{margin-bottom:12px}button.danger-solid{background:var(--danger);color:#fff}button.danger-solid:hover{background:#991b1b}.timesheet-toolbar{padding:14px 16px}.timesheet-toolbar .ts-toolbar-buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.timesheet-toolbar .ts-toolbar-group{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center;padding:4px 8px;background:var(--bg);border-radius:10px;border:1px solid var(--border)}.timesheet-toolbar .ts-toolbar-buttons button{flex:0 0 auto}.timesheet-toolbar .ts-toolbar-buttons [data-testid=ts-back]{margin-right:auto}.timesheet-header{padding:18px 20px}.timesheet-header .ts-header-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:18px 24px;align-items:start}.timesheet-header .ts-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:6px;font-weight:600}.timesheet-header .ts-value{font-weight:600;color:var(--text);margin-bottom:6px;font-size:14px;min-height:22px}.timesheet-header .ts-sub{font-size:12px;color:var(--muted);margin-top:4px}.timesheet-header .ts-week-nav{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px}.timesheet-header .ts-week-nav input[type=date]{flex:1 1 130px;min-width:130px}.timesheet-header .ts-actions{display:flex;flex-direction:column;gap:8px}.info-box{background:var(--success-bg);color:var(--success);padding:10px 14px;margin-top:10px;border-radius:var(--radius-sm);font-size:14px;border:1px solid #a7f3d0}table.ts-grid{font-size:13px}table.ts-grid thead th{background:linear-gradient(180deg,#2d6cdf,#1f4e79);color:#fff;padding:8px 6px;text-align:center;font-weight:600;border:1px solid #163a5a}table.ts-grid thead th.day-col{min-width:60px}table.ts-grid thead th .day-num{font-size:16px;font-weight:700}table.ts-grid tbody td{padding:6px 8px;border:1px solid #d5dbe0;vertical-align:middle}table.ts-grid td.mandat{min-width:240px}table.ts-grid td.mandat .muted{font-size:12px}table.ts-grid td.hour-cell{text-align:center;padding:2px}table.ts-grid td.hour-cell input{width:56px;text-align:center;padding:4px;border:1px solid #c0c8d0;border-radius:4px;background:#fff}table.ts-grid td.hour-cell input:focus{outline:2px solid #2d6cdf;outline-offset:-1px}table.ts-grid td.total{text-align:right;background:#f4f6f8;min-width:70px}table.ts-grid tfoot tr.ts-total-row td{background:#1f4e79;color:#fff;padding:8px;border:1px solid #163a5a;font-weight:600}.mifi-page{display:flex;flex-direction:column;gap:16px}.mifi-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.mifi-title{margin:0;font-size:22px}.mifi-subtitle{margin:4px 0 0;color:var(--muted);font-size:13px;max-width:720px}.mifi-tenant-picker{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel);padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.mifi-tenant-picker select{padding:6px 10px;min-width:260px}.mifi-layout{display:grid;grid-template-columns:264px minmax(0,1fr);gap:20px;align-items:start}.mifi-layout>*{min-width:0}.mifi-sidenav{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 10px;box-shadow:var(--shadow-sm);align-self:start;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow-y:auto}.mifi-group+.mifi-group{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.mifi-group-label{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);letter-spacing:.06em;padding:0 10px}.mifi-group-icon,.mifi-tab-icon{flex:0 0 1.25em;width:1.25em;text-align:center;font-style:normal}.mifi-group ul{list-style:none;padding:0;margin:0;display:grid;gap:2px}.mifi-tab-btn{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:9px 10px;border-radius:var(--radius-sm);border:0;border-left:3px solid transparent;background:transparent;color:var(--text);cursor:pointer;font-size:13px;line-height:1.35;transition:background .15s,color .15s,border-color .15s}.mifi-tab-label{min-width:0}.mifi-tab-btn:hover{background:var(--primary-soft)}.mifi-tab-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.mifi-tab-btn.active{background:var(--primary);color:#fff;font-weight:600;border-left-color:var(--primary-strong, var(--primary))}.mifi-tab-btn.active .mifi-tab-icon{filter:none}.mifi-content{padding:20px;min-height:400px}.mifi-empty{display:flex;align-items:center;justify-content:center;min-height:200px;color:var(--muted);font-style:italic}.section-title{margin:0 0 4px;font-size:17px;font-weight:600}.section-help{margin:0 0 14px;color:var(--muted);font-size:13px;line-height:1.5}.banner{padding:10px 14px;border-radius:var(--radius-sm);font-size:14px;display:flex;align-items:center;gap:8px}.banner-error{background:var(--danger-bg);color:var(--danger);border:1px solid #fecaca}.banner-success{background:var(--success-bg);color:var(--success);border:1px solid #a7f3d0}.fieldset{border:1px solid var(--border);border-radius:12px;padding:12px 16px 4px;margin:0 0 16px}.fieldset>legend{font-weight:600;font-size:14px;padding:0 6px;color:var(--text)}.banner-warn{background:var(--warning-bg);color:var(--warning);border:1px solid #fde68a;align-items:flex-start;flex-direction:column;gap:4px}.edit-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin:0 0 12px;border-radius:var(--radius-sm);background:var(--warning-bg);color:#92400e;border:1px solid #fde68a;font-size:13.5px}.itx-wizard{margin:8px 0 14px}.itx-steps{display:flex;flex-wrap:wrap;gap:6px}.itx-step{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;cursor:pointer;background:#fff;color:var(--text);border:1px solid var(--border-strong);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600}.itx-step .itx-step-n{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:11px;background:#e5e7eb;color:#374151}.itx-step.current{border-color:var(--primary);background:var(--primary);color:#fff}.itx-step.current .itx-step-n{background:#fff;color:var(--primary)}.itx-step.done{border-color:var(--success);color:var(--success)}.itx-step.done .itx-step-n{background:var(--success-bg);color:var(--success)}.itx-wizard-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}.itx-wizard-nav .itx-step-current{font-weight:700;font-size:13.5px;text-align:center;flex:1}@media (max-width: 640px){.itx-step .itx-step-label{display:none}.itx-wizard-nav .itx-step-current{font-size:12px}}[data-testid=payroll-income-tax] .table-wrap{margin-top:6px}[data-testid=payroll-income-tax] .table-wrap+button{margin-top:12px}[data-testid=payroll-income-tax] h4{margin-top:18px;margin-bottom:6px}[data-testid=payroll-income-tax] table td:last-child{white-space:nowrap}[data-testid=payroll-income-tax] table td:last-child .link-btn{padding:2px 4px;margin-left:2px}[data-testid=payroll-income-tax] .row-form{margin-top:12px}.pj-field{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center;margin-left:6px;vertical-align:middle}.pj-attach{cursor:pointer;white-space:nowrap;font-size:11.5px;font-weight:600;color:var(--primary);background:var(--primary-soft);border:1px solid #bfdbfe;border-radius:999px;padding:2px 8px}.pj-attach:hover{background:#dbeafe}.pj-chip{display:inline-flex;align-items:center;gap:2px;max-width:100%;background:#f1f5f9;border:1px solid var(--border);border-radius:999px;padding:1px 4px 1px 8px}.pj-chip-pending{background:#fffbeb;border:1px dashed #fcd34d}.pj-chip .pj-name{border:0;background:none;cursor:pointer;padding:1px 0;font-size:11.5px;color:var(--text);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pj-chip .pj-name:hover{text-decoration:underline;color:var(--primary)}.pj-chip .pj-x{border:0;background:none;cursor:pointer;color:var(--muted);font-size:11px;padding:0 2px}.pj-chip .pj-x:hover{color:var(--danger)}.fin-table td,.fin-table th{padding:6px 12px;font-size:13.5px}.fin-table .fin-bold td{font-weight:700;background:#f8fafc}.fin-table .fin-section td{font-weight:700;color:var(--primary);background:var(--primary-soft);text-transform:uppercase;font-size:12px;letter-spacing:.03em}.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px 18px;margin:16px 0}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:12px;color:var(--muted);font-weight:500}.field input,.field select,.field textarea{padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:#fff}.field input:focus,.field select:focus,.field textarea:focus{outline:none;box-shadow:var(--ring);border-color:var(--primary)}.field-actions{justify-content:flex-end;align-self:end}.field-actions-row{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px;margin-top:4px;padding-top:12px;border-top:1px solid var(--border)}.field-actions-row>button{flex:0 0 auto}@media (max-width: 640px){.field-actions-row{flex-direction:column;align-items:stretch}}.field-days{grid-column:1 / -1;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 12px}.field-days legend{font-size:12px;color:var(--muted);font-weight:600;padding:0 4px}.day-toggles{display:flex;flex-wrap:wrap;gap:6px}.day-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--border-strong);border-radius:999px;cursor:pointer;font-size:13px;background:#fff;text-transform:capitalize}.day-chip.on{background:var(--primary);color:#fff;border-color:var(--primary)}.day-chip input{accent-color:var(--primary)}.day-chip:focus-within{outline:2px solid var(--primary);outline-offset:1px}.collapsible{margin:12px 0;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fafbfd}.collapsible>summary{padding:10px 14px;cursor:pointer;font-weight:600;font-size:14px;-webkit-user-select:none;user-select:none}.collapsible>summary:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.collapsible[open]>summary{border-bottom:1px solid var(--border)}.collapsible>.grid-form{padding:14px;margin:0}.filter-row{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.filter-row button{position:relative;padding:6px 12px;border-radius:999px;border:1px solid var(--border-strong);background:#fff;color:var(--text);cursor:pointer;font-size:13px}.filter-row button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.filter-row button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.count-badge{display:inline-block;margin-left:6px;padding:0 6px;border-radius:999px;background:#0000001f;font-size:11px;font-weight:600}.filter-row button.primary .count-badge{background:#ffffff40}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.02em;background:var(--border);color:var(--text)}.badge-active,.badge-trial{background:var(--success-bg);color:var(--success)}.badge-suspended,.badge-draft{background:var(--warning-bg);color:var(--warning)}.badge-terminated,.badge-cancelled,.badge-closed{background:var(--danger-bg);color:var(--danger)}.badge-inactive{background:var(--border);color:var(--muted)}.badge-employee{background:#dbeafe;color:#1e40af}.badge-teacher{background:#e9d5ff;color:#6b21a8}.badge-both{background:#fce7f3;color:#9d174d}.badge-export{background:#d1fae5;color:var(--success);margin-left:4px}.badge-rule{background:var(--primary-soft);color:var(--primary);text-transform:none}.field-error{display:block;margin-top:4px;color:var(--danger);font-size:12px}.badge-ok{background:var(--success-bg);color:var(--success)}.badge-warn{background:var(--warning-bg);color:var(--warning)}.badge-error{background:var(--danger-bg);color:var(--danger)}.badge-muted{background:var(--border);color:var(--muted)}.actions-row{display:flex;gap:6px;flex-wrap:wrap}.actions-row button,.actions-row select{padding:6px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:#fff;color:var(--text);cursor:pointer;font-size:12px}button.danger{background:var(--danger-bg);color:var(--danger);border-color:#fca5a5}button.danger:hover{background:#fecaca}button[disabled]{opacity:.5;cursor:not-allowed}.link-btn{background:transparent;border:0;color:var(--primary);cursor:pointer;padding:0;font-weight:600;text-decoration:underline}.link-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.bullet-list{list-style:none;padding:0;margin:12px 0}.bullet-list li{padding:8px 12px;border-bottom:1px solid var(--border)}.bullet-list li:last-child{border-bottom:0}.empty-cell{text-align:center;color:var(--muted);font-style:italic;padding:18px}.kpi-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}.picker{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin:12px 0;display:flex;flex-wrap:wrap;gap:8px}.picker legend{font-weight:600;font-size:13px;padding:0 6px}.chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;background:var(--bg, #f8fafc);border:1px solid var(--border);border-radius:999px;padding:4px 10px;cursor:pointer}.chip input{accent-color:var(--primary)}.toggle-switch{position:relative;display:inline-block;width:40px;height:22px;cursor:pointer}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--border-strong);border-radius:22px;transition:background .2s}.toggle-slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s}.toggle-switch input:checked+.toggle-slider{background:var(--primary)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(18px)}.toggle-switch input:focus-visible+.toggle-slider{box-shadow:0 0 0 3px #2563eb59}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tabs,.payroll-subtabs{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 20px;padding:0 0 2px;border-bottom:2px solid #e2e6ea}.tabs>button,.payroll-subtabs>button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f4f6f8;color:#2c3542;border:1px solid #d5dbe1;border-bottom:none;border-radius:8px 8px 0 0;padding:10px 18px;min-height:44px;font-size:14px;font-weight:600;line-height:1.2;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.tabs>button:hover,.payroll-subtabs>button:hover{background:#e8edf2}.tabs>button[aria-selected=true],.payroll-subtabs>button[aria-selected=true],.tabs>button[aria-pressed=true],.payroll-subtabs>button[aria-pressed=true]{background:#1d6fb8;color:#fff;border-color:#1d6fb8;box-shadow:0 -2px #14508a inset}.tabs>button:focus-visible,.payroll-subtabs>button:focus-visible{outline:3px solid #ffbf47;outline-offset:2px}.table-wrap{overflow-x:auto}.table-wrap:focus-visible{outline:3px solid #ffbf47;outline-offset:2px}h1[tabindex]:focus-visible,h2[tabindex]:focus-visible,h3[tabindex]:focus-visible,h4[tabindex]:focus-visible,h5[tabindex]:focus-visible,h6[tabindex]:focus-visible,p[tabindex]:focus-visible,label[tabindex]:focus-visible,li[tabindex]:focus-visible,dt[tabindex]:focus-visible,dd[tabindex]:focus-visible,small[tabindex]:focus-visible,span[tabindex]:focus-visible,div[tabindex]:focus-visible,strong[tabindex]:focus-visible,em[tabindex]:focus-visible,b[tabindex]:focus-visible,i[tabindex]:focus-visible,code[tabindex]:focus-visible,kbd[tabindex]:focus-visible,mark[tabindex]:focus-visible,abbr[tabindex]:focus-visible{outline:3px solid #ffbf47;outline-offset:3px;border-radius:4px}table>caption{caption-side:top;text-align:left;font-size:13px;font-weight:600;color:#4a5563;padding:6px 2px}.cal-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}.cal-month-label{font-size:17px;text-transform:capitalize;min-width:160px;text-align:center}.cal-legend{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}.cal-chip{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px}.cal-dow{text-align:center;font-size:12px;font-weight:700;color:var(--muted);padding:6px 0;text-transform:uppercase}.cal-cell{background:#fff;border:1px solid transparent;border-radius:6px;min-height:92px;padding:4px;display:flex;flex-direction:column;gap:3px;cursor:pointer;text-align:left;font:inherit;align-items:stretch}.cal-cell:hover{border-color:var(--primary)}.cal-cell:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.cal-cell-out{background:#f8fafc;opacity:.6}.cal-cell-today{box-shadow:inset 0 0 0 2px var(--primary)}.cal-cell-selected{border-color:var(--primary);background:var(--primary-soft)}.cal-daynum{font-size:12px;font-weight:700;color:var(--text)}.cal-events{display:flex;flex-direction:column;gap:2px;overflow:hidden}.cal-event{font-size:10px;padding:1px 5px;border-radius:4px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.cal-more{font-size:10px;color:var(--muted)}.cal-ev-holiday{background:#fee2e2;color:#991b1b}.cal-ev-task{background:#dbeafe;color:#1e40af}.cal-ev-pedagogical{background:#dcfce7;color:#166534}.cal-editor{margin-top:16px;padding:16px}@media (max-width: 900px){.mifi-layout{grid-template-columns:1fr}.mifi-sidenav{position:static;max-height:none;display:flex;flex-wrap:wrap;gap:4px}.mifi-group{flex:1 1 auto;margin:0;min-width:160px}.mifi-group ul{display:flex;flex-direction:column;gap:2px}}@media (max-width: 600px){.mifi-header{flex-direction:column}.mifi-tenant-picker{width:100%}.mifi-tenant-picker select{min-width:0;width:100%}.grid-form{grid-template-columns:1fr}.cal-cell{min-height:60px}.cal-event{font-size:9px}.cal-legend{margin-left:0;width:100%}}.account-page .account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;align-items:start}.account-meta{margin:0;display:grid;gap:8px}.account-meta>div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border);padding-bottom:6px}.account-meta dt{color:var(--muted);font-size:13px;margin:0}.account-meta dd{margin:0;font-weight:600}.account-meta-line{margin:0 0 12px}.field-full{grid-column:1 / -1}.mfa-methods{display:flex;flex-wrap:wrap;gap:10px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin:0 0 12px}.mfa-methods legend{font-size:13px;font-weight:600;padding:0 6px}.radio-chip{display:inline-flex;align-items:center;gap:6px;font-size:14px;cursor:pointer}.radio-chip input{accent-color:var(--primary);width:18px;height:18px}.totp-setup{margin-top:8px}.totp-secret{display:inline-block;margin:8px 0;padding:8px 12px;background:var(--bg, #f1f5f9);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);font-size:15px;letter-spacing:1px;word-break:break-all}.totp-qr{display:inline-block;margin:8px 0;padding:10px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);line-height:0}.totp-qr svg{width:200px;height:200px;max-width:100%}.modules-table th:first-child,.modules-table td:first-child{position:sticky;left:0;z-index:1;background:var(--surface, #fff);box-shadow:1px 0 0 var(--border);min-width:150px}.modules-table thead th:first-child{z-index:2}.modules-table th{white-space:nowrap}.day-chip{min-height:40px}@media (max-width: 600px){.day-toggles{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.day-chip{justify-content:center;min-height:44px}.account-page .account-grid{grid-template-columns:1fr}}@media (max-width: 560px){table.stacked thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}table.stacked tr{display:block;border:1px solid var(--border);border-radius:10px;margin-bottom:10px;padding:6px 10px;background:var(--surface, #fff)}table.stacked td{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border:0;border-bottom:1px dashed var(--border);text-align:right}table.stacked tr td:last-child{border-bottom:0}table.stacked td:before{content:attr(data-label);font-weight:600;color:var(--muted);text-align:left;flex:0 0 45%}}.ai-fab{position:fixed;right:20px;bottom:20px;z-index:40;width:56px;height:56px;border-radius:50%;border:none;background:var(--primary);color:#fff;font-size:24px;cursor:pointer;box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center}.ai-fab:hover{background:var(--primary-hover)}@media (max-width: 768px){.ai-fab{width:48px;height:48px;font-size:20px;right:12px;bottom:12px}}.ai-panel{position:fixed;right:20px;bottom:88px;z-index:41;width:min(400px,calc(100vw - 32px));height:min(560px,calc(100vh - 140px));background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);display:flex;flex-direction:column;overflow:hidden}.ai-panel-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg)}.ai-panel-head strong{flex:0 0 auto}.ai-panel-head .muted{margin-left:auto}.ai-close{border:none;background:none;cursor:pointer;font-size:15px;color:var(--muted);padding:2px 6px}.ai-body{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.ai-msg{padding:8px 12px;border-radius:12px;font-size:13.5px;max-width:90%;overflow-wrap:anywhere;white-space:pre-wrap}.ai-msg-user{align-self:flex-end;background:var(--primary-soft);color:var(--text);border-bottom-right-radius:4px}.ai-msg-assistant{align-self:flex-start;background:var(--bg);border:1px solid var(--border);border-bottom-left-radius:4px}.ai-actions{padding:6px 12px;border-top:1px solid var(--border)}.ai-actions button{width:100%}.ai-input{display:flex;gap:6px;padding:8px 12px 12px}.ai-input input{flex:1}.ai-input button{flex:0 0 auto;padding:8px 14px}
