:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-light:#dbeafe;--color-accent:#7c3aed;--color-accent-hover:#6d28d9;--color-bg:#f8fafc;--color-surface:#fff;--color-border:#e2e8f0;--color-text:#1e293b;--color-text-secondary:#64748b;--color-text-muted:#94a3b8;--color-danger:#dc2626;--color-danger-hover:#b91c1c;--color-success:#16a34a;--color-warning:#d97706;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--border-radius:.375rem;--border-radius-lg:.5rem;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #0000001a}:root[style*=--tenant-primary-color]{--color-primary:var(--tenant-primary-color)}:root[style*=--tenant-accent-color]{--color-accent:var(--tenant-accent-color)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto}input,select,textarea{font-family:inherit;font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);width:100%;line-height:1.5;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);outline:none}input:disabled,select:disabled,textarea:disabled{background-color:var(--color-bg);color:var(--color-text-muted);cursor:not-allowed}button{font-family:inherit;font-size:var(--font-size-sm);border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;border:none;font-weight:500;line-height:1.5;transition:background-color .15s,color .15s}button:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.btn-secondary{background-color:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background-color:var(--color-bg)}.btn-danger{background-color:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background-color:var(--color-danger-hover)}[slot=errorMessage]{font-size:var(--font-size-sm);color:var(--color-danger);margin-top:var(--spacing-xs)}[data-invalid] input,[data-invalid] select{border-color:var(--color-danger)}[data-invalid] input:focus,[data-invalid] select:focus{box-shadow:0 0 0 3px #fecaca}.app-loading{min-height:100vh;font-size:var(--font-size-lg);color:var(--color-text-secondary);justify-content:center;align-items:center;display:flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dashboard-cards{gap:var(--spacing-md);margin-bottom:var(--spacing-xl);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.dashboard-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm)}.dashboard-card--warning{border-color:var(--color-warning);background:#fffbeb}.dashboard-card h3{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.dashboard-card-value{font-size:var(--font-size-2xl);font-weight:700}.dashboard-card-details{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--spacing-xs);gap:var(--spacing-xs);flex-direction:column;display:flex}.dashboard-section{margin-bottom:var(--spacing-xl)}.dashboard-section h2{margin-bottom:var(--spacing-md)}.dashboard-actions{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.text-positive{color:var(--color-success)}.text-negative{color:var(--color-danger)}.text-warning{color:var(--color-warning)}.text-right{text-align:right}.simple-table{border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius);width:100%;overflow:hidden}.simple-table th,.simple-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:left;border-bottom:1px solid var(--color-border)}.simple-table th{background:var(--color-bg);font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.simple-table .clickable-row{cursor:pointer}.simple-table .clickable-row:hover{background:var(--color-primary-light)}.table-row-highlight{background:var(--color-bg);font-style:italic}.tab-bar{gap:var(--spacing-xs);border-bottom:2px solid var(--color-border);margin-bottom:var(--spacing-lg);display:flex}.tab-btn{padding:var(--spacing-sm) var(--spacing-md);color:var(--color-text-secondary);background:0 0;border-bottom:2px solid #0000;margin-bottom:-2px}.tab-btn--active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.report-section{margin-top:var(--spacing-md)}.report-controls{align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);display:flex}.report-controls label{align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);display:flex}.report-summary{gap:var(--spacing-xl);margin-bottom:var(--spacing-lg);display:flex}.report-stat{gap:var(--spacing-xs);flex-direction:column;display:flex}.report-stat-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.report-stat span:last-child{font-size:var(--font-size-xl);font-weight:600}.input-small{width:auto;min-width:120px}.filter-bar{gap:var(--spacing-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap;align-items:center;display:flex}.filter-bar label{align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);display:flex}.pagination{align-items:center;gap:var(--spacing-md);margin-top:var(--spacing-lg);justify-content:center;display:flex}.action-badge{border-radius:var(--border-radius);font-size:var(--font-size-xs);background:var(--color-bg);padding:2px 8px;font-weight:600;display:inline-block}.action-badge--created{color:#1e40af;background:#dbeafe}.action-badge--updated{color:#92400e;background:#fef3c7}.action-badge--deleted{color:#9d174d;background:#fce7f3}.action-badge--login_success{color:#065f46;background:#d1fae5}.action-badge--login_failed{color:#991b1b;background:#fee2e2}.action-badge--anonymized{color:#3730a3;background:#e0e7ff}.changes-cell{max-width:300px}.changes-json{font-size:var(--font-size-xs);background:var(--color-bg);padding:var(--spacing-sm);border-radius:var(--border-radius);white-space:pre-wrap;word-break:break-all;max-height:200px;overflow:auto}.page-header{margin-bottom:var(--spacing-lg);justify-content:space-between;align-items:center;display:flex}.page-header-actions{gap:var(--spacing-sm);display:flex}.auth-page{min-height:100vh;padding:var(--spacing-xl);background:var(--color-bg);justify-content:center;align-items:center;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);width:100%;max-width:420px;padding:var(--spacing-xl) var(--spacing-xl) var(--spacing-lg);box-shadow:var(--shadow-md);text-align:center}.auth-card h1{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-lg)}.auth-logo{max-height:64px;margin-bottom:var(--spacing-md)}.auth-form{gap:var(--spacing-md);text-align:left;flex-direction:column;display:flex}.auth-form label{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs);font-weight:500;display:block}.auth-form button[type=submit]{width:100%;margin-top:var(--spacing-sm);background:var(--color-primary);color:#fff;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base)}.auth-form button[type=submit]:hover:not(:disabled){background:var(--color-primary-hover)}.auth-error{color:var(--color-danger);border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);text-align:left;background:#fef2f2;border:1px solid #fecaca}.auth-link{margin-top:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-primary);display:inline-block}.install-page{min-height:100vh;padding:var(--spacing-xl);background:var(--color-bg);justify-content:center;align-items:flex-start;display:flex}.install-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);width:100%;max-width:640px;padding:var(--spacing-xl);box-shadow:var(--shadow-md);margin-top:var(--spacing-xl)}.install-card>h1{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-xs)}.install-welcome{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.install-steps{gap:var(--spacing-xs);margin-bottom:var(--spacing-xl);padding:var(--spacing-md) 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);display:flex;overflow-x:auto}.install-step-indicator{align-items:center;gap:var(--spacing-xs);white-space:nowrap;font-size:var(--font-size-sm);color:var(--color-text-muted);display:flex}.install-step-indicator+.install-step-indicator:before{content:"›";margin-right:var(--spacing-xs);color:var(--color-border);font-size:var(--font-size-lg)}.step-number{background:var(--color-bg);border:2px solid var(--color-border);width:24px;height:24px;font-size:var(--font-size-xs);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.install-step-indicator.active{color:var(--color-primary);font-weight:600}.install-step-indicator.active .step-number{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.install-step-indicator.completed{color:var(--color-success)}.install-step-indicator.completed .step-number{background:var(--color-success);border-color:var(--color-success);color:#fff}.install-content h2{font-size:var(--font-size-xl);margin-bottom:var(--spacing-md)}.install-form{gap:var(--spacing-md);flex-direction:column;display:flex}.install-form label,.install-field label{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs);font-weight:500;display:block}.install-actions{justify-content:flex-end;gap:var(--spacing-sm);margin-top:var(--spacing-lg);display:flex}.install-actions button{background:var(--color-primary);color:#fff;padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-base)}.install-actions button:hover:not(:disabled){background:var(--color-primary-hover)}.install-actions button.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.install-actions button.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.install-success{color:var(--color-success);border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);background:#f0fdf4;border:1px solid #bbf7d0}.install-warning{color:#92400e;border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);margin-bottom:var(--spacing-md);background:#fffbeb;border:1px solid #fde68a}.install-key-display{margin-top:var(--spacing-md)}.install-key-value{align-items:center;gap:var(--spacing-sm);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-lg);display:flex}.install-key-value code{font-size:var(--font-size-sm);word-break:break-all;color:var(--color-text);flex:1}.install-key-value button{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);flex-shrink:0}.install-key-value button:hover{background:var(--color-bg)}.install-key-section{margin-bottom:var(--spacing-md)}.install-key-section strong{font-size:var(--font-size-sm)}.install-key-section code{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);word-break:break-all;margin-top:var(--spacing-xs);display:block}.install-hint{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:var(--spacing-xs) 0}.nav-sidebar{background-color:var(--color-surface);border-right:1px solid var(--color-border);z-index:100;flex-direction:column;width:250px;min-height:100vh;display:flex;position:fixed;top:0;left:0}.nav-header{padding:var(--spacing-lg);border-bottom:1px solid var(--color-border);align-items:center;gap:var(--spacing-sm);display:flex}.nav-header-logo{border-radius:var(--border-radius);object-fit:contain;width:32px;height:32px}.nav-header-name{font-size:var(--font-size-lg);color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.nav-menu{padding:var(--spacing-sm) 0;flex:1;list-style:none;overflow-y:auto}.nav-item{display:block}.nav-link{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;border-left:3px solid #0000;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s;display:flex}.nav-link:hover{background-color:var(--color-bg);color:var(--color-text);text-decoration:none}.nav-link[data-active=true]{color:var(--color-primary);background-color:var(--color-primary-light);border-left-color:var(--color-primary)}.nav-separator{background-color:var(--color-border);height:1px;margin:var(--spacing-sm) var(--spacing-lg)}.nav-footer{padding:var(--spacing-md) var(--spacing-lg);border-top:1px solid var(--color-border)}.nav-user{justify-content:space-between;align-items:center;gap:var(--spacing-sm);display:flex}.nav-user-name{font-size:var(--font-size-sm);color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.nav-user-email{font-size:var(--font-size-xs);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nav-logout-btn{border:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius);cursor:pointer;white-space:nowrap;background:0 0;flex-shrink:0}.nav-logout-btn:hover{background-color:var(--color-bg);color:var(--color-danger);border-color:var(--color-danger)}.nav-mobile-toggle{top:var(--spacing-md);left:var(--spacing-md);z-index:200;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-sm);cursor:pointer;font-size:var(--font-size-lg);line-height:1;display:none;position:fixed}.nav-overlay{display:none}@media (width<=768px){.nav-mobile-toggle{display:block}.nav-sidebar{transition:transform .2s;transform:translate(-100%)}.nav-sidebar[data-open=true]{transform:translate(0)}.nav-overlay{z-index:99;background-color:#0000004d;display:none;position:fixed;inset:0}.nav-overlay[data-open=true]{display:block}}.tenant-layout{min-height:100vh}.tenant-layout--authenticated{min-height:100vh;display:flex}.tenant-layout__content{padding:var(--spacing-xl);flex:1;min-height:100vh;margin-left:250px}.tenant-layout__content--full{margin-left:0;padding:0}.tenant-loading,.tenant-error{min-height:100vh;font-size:var(--font-size-lg);color:var(--color-text-secondary);justify-content:center;align-items:center;display:flex}.tenant-error{color:var(--color-danger)}.admin-layout{min-height:100vh;display:flex}.admin-layout__content{padding:var(--spacing-xl);flex:1;min-height:100vh;margin-left:250px}@media (width<=768px){.tenant-layout__content,.admin-layout__content{padding:var(--spacing-md);padding-top:calc(var(--spacing-xl) + 40px);margin-left:0}}
