:root{--bg: #f1f5f9;--surface: #ffffff;--surface-alt: #f8fafc;--hover-bg: #fafbfc;--input-bg: #ffffff;--text: #0f172a;--muted: #64748b;--border: #e2e8f0;--primary: #2563eb;--primary-dark: #1d4ed8;--primary-soft: #eff6ff;--success: #059669;--success-soft: #dcfce7;--danger: #dc2626;--danger-soft: #fee2e2;--warn: #d97706;--warn-soft: #fef3c7;--radius: 10px;--shadow: 0 1px 3px rgba(15, 23, 42, .08), 0 1px 2px rgba(15, 23, 42, .04);--overlay: rgba(15, 23, 42, .55);color-scheme:light}:root[data-theme=dark]{--bg: #0b1220;--surface: #111a2e;--surface-alt: #16213a;--hover-bg: #16213a;--input-bg: #0f1729;--text: #e2e8f0;--muted: #8b98ac;--border: #23304a;--primary: #3b82f6;--primary-dark: #60a5fa;--primary-soft: rgba(59, 130, 246, .16);--success: #34d399;--success-soft: rgba(52, 211, 153, .16);--danger: #f87171;--danger-soft: rgba(248, 113, 113, .16);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .16);--shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .25);--overlay: rgba(2, 6, 15, .65);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;transition:background-color .15s ease,color .15s ease}a{color:var(--primary);text-decoration:none}h1,h2,h3{margin:0 0 .5rem}.app{display:flex;min-height:100vh}.sidebar{width:240px;background:#0f172a;color:#cbd5e1;flex-shrink:0;display:flex;flex-direction:column;padding:1rem 0}.sidebar .brand{font-size:1.35rem;font-weight:800;color:#fff;padding:.5rem 1.25rem 1rem}.sidebar .role-chip{margin:0 1.25rem 1rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:#93c5fd;background:#2563eb2e;padding:.25rem .5rem;border-radius:6px;display:inline-block;width:fit-content}.sidebar nav{display:flex;flex-direction:column;gap:2px;padding:0 .75rem}.sidebar nav a{color:#cbd5e1;padding:.6rem .75rem;border-radius:8px;font-weight:500;display:flex;align-items:center;gap:.5rem}.sidebar nav a:hover{background:#ffffff0f;color:#fff}.sidebar nav a.active{background:var(--primary);color:#fff}.sidebar .spacer{flex:1}.sidebar .logout{margin:0 1.25rem;background:none;border:1px solid #334155;color:#cbd5e1;padding:.5rem;border-radius:8px;cursor:pointer}.sidebar .logout:hover{background:#1e293b;color:#fff}.sidebar .app-version{margin:.75rem 1.25rem 0;font-size:.7rem;color:#64748b;letter-spacing:.03em}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:.85rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.topbar .title{font-weight:700;font-size:1.05rem}.topbar-actions{display:flex;align-items:center;gap:.6rem}.content{padding:1.5rem;max-width:1200px;width:100%}.grid{display:grid;gap:1rem}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.card h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.stat{font-size:2rem;font-weight:800}.stat.small{font-size:1.35rem}.field{margin-bottom:.9rem}.field label{display:block;font-weight:600;margin-bottom:.3rem;font-size:.82rem}.field .req{color:var(--danger)}input,select,textarea{width:100%;padding:.55rem .7rem;border:1px solid var(--border);border-radius:8px;font:inherit;background:var(--input-bg);color:var(--text)}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}textarea{min-height:70px;resize:vertical}.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.hint{display:block;margin-top:.3rem;font-size:.76rem;color:var(--muted)}.btn{background:var(--primary);color:#fff;border:none;padding:.6rem 1.1rem;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;transition:background-color .15s ease}.btn:hover{background:var(--primary-dark)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.secondary{background:var(--input-bg);color:var(--text);border:1px solid var(--border)}.btn.secondary:hover{background:var(--surface-alt)}.btn.danger{background:var(--danger)}.btn.sm{padding:.35rem .6rem;font-size:.8rem}.icon-btn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:7px;color:var(--muted);cursor:pointer;padding:0;flex-shrink:0;transition:background-color .12s ease,color .12s ease}.icon-btn:hover{background:var(--primary-soft);color:var(--primary)}.icon-btn.danger:hover{background:var(--danger-soft);color:var(--danger)}.row-actions{display:flex;gap:.25rem;white-space:nowrap}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:.82rem}table.compact th,table.compact td{padding:.5rem .7rem}th,td{text-align:left;padding:.7rem .85rem;border-bottom:1px solid var(--border);white-space:nowrap}th{background:var(--surface-alt);color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.03em;position:sticky;top:0;z-index:1}tr:last-child td{border-bottom:none}tbody tr:nth-child(2n) td{background:var(--surface-alt)}tr:hover td{background:var(--hover-bg)}tr.group-row{cursor:pointer}tr.group-row td{font-weight:600}tr.group-row:hover td{background:var(--primary-soft)}.badge{padding:.15rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600}.badge.active{background:var(--success-soft);color:var(--success)}.badge.pending{background:var(--warn-soft);color:var(--warn)}.badge.revoked,.badge.rejected{background:var(--danger-soft);color:var(--danger)}.group-badge{display:inline-flex;align-items:center;gap:.4rem;color:var(--primary);background:var(--primary-soft);padding:.2rem .6rem;border-radius:999px;font-size:.78rem}.group-badge svg{flex-shrink:0}.alert{padding:.7rem .9rem;border-radius:8px;margin-bottom:1rem;font-weight:500}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.success{background:var(--success-soft);color:var(--success)}.muted{color:var(--muted)}.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1rem}.toolbar .field{margin-bottom:0}.pagination{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);display:flex;align-items:flex-start;justify-content:center;padding:4vh 1rem;z-index:100;overflow-y:auto}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;border:1px solid var(--border)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:1rem}.modal-body{padding:1.25rem}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1rem}.doc-view-meta{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1rem;margin:0 0 1rem}.doc-view-meta dt{color:var(--muted);font-size:.78rem;font-weight:600}.doc-view-meta dd{margin:0}.doc-view-file img{max-width:100%;border-radius:8px;border:1px solid var(--border);display:block}.date-input{position:relative}.date-input-trigger{width:100%;text-align:left;background:var(--input-bg);border:1px solid var(--border);border-radius:8px;padding:.55rem .7rem;cursor:pointer;font:inherit;color:var(--text)}.date-input-trigger:hover{border-color:var(--primary)}.date-input-panel{position:absolute;z-index:30;margin-top:.3rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem;width:240px}.date-input-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem;font-weight:700;font-size:.85rem}.date-input-nav button{width:auto;background:none;border:none;cursor:pointer;font-size:1rem;padding:.15rem .5rem;border-radius:6px;color:var(--text)}.date-input-nav button:hover{background:var(--surface-alt)}.date-input-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.date-input-dow{color:var(--muted);font-size:.7rem;margin-bottom:.25rem}.date-input-day{background:none;border:none;padding:.4rem 0;border-radius:6px;cursor:pointer;font:inherit}.date-input-day:hover{background:var(--primary-soft)}.date-input-day.selected{background:var(--primary);color:#fff}.date-input-clear{margin-top:.5rem;width:100%;background:none;border:1px solid var(--border);border-radius:6px;padding:.35rem;cursor:pointer;font-size:.8rem;color:var(--muted)}.date-input-clear:hover{background:var(--surface-alt)}.taxpayer-switcher{position:relative}.taxpayer-switcher-trigger{background:var(--input-bg);border:1px solid var(--border);border-radius:8px;padding:.4rem .8rem;cursor:pointer;font:inherit;text-align:left;min-width:220px;color:var(--text)}.taxpayer-switcher-trigger:hover{border-color:var(--primary)}.taxpayer-switcher-label{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.taxpayer-switcher-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:40;width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.6rem}.taxpayer-switcher-panel input{margin-bottom:.5rem}.taxpayer-switcher-list{max-height:280px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.taxpayer-switcher-item{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;width:100%;text-align:left;background:none;border:none;padding:.5rem .6rem;border-radius:8px;cursor:pointer;font:inherit;color:var(--text)}.taxpayer-switcher-item:hover{background:var(--surface-alt)}.taxpayer-switcher-item.active{background:var(--primary-soft)}.login-wrap{display:grid;place-items:center;min-height:100vh;padding:1rem}.login-card{width:100%;max-width:380px}.login-card .brand{font-size:1.8rem;font-weight:800;text-align:center;margin-bottom:.25rem}.login-card .sub{text-align:center;color:var(--muted);margin-bottom:1.5rem}
