:root{--color-primary:#185fa5;--color-primary-hover:#0c447c;--color-primary-light:#e6f1fb;--color-success:#1d9e75;--color-success-hover:#0f6e56;--color-success-light:#e1f5ee;--color-danger:#e24b4a;--color-danger-hover:#a32d2d;--color-danger-light:#fee2e2;--color-warning:#ef9f27;--color-warning-light:#faeeda;--color-warning-text:#854f0b;--color-purple:#534ab7;--color-brand-accent:#cc1b1b;--color-bg:#f7f8fa;--color-bg-card:#fff;--color-bg-hover:#f3f4f6;--color-bg-surface:#f9fafb;--color-text:#1f2937;--color-text-secondary:#6b7280;--color-text-muted:#9ca3af;--color-text-dark:#374151;--color-text-on-primary:#fff;--color-border:#e5e7eb;--color-border-input:#d1d5db;--badge-new-bg:#f3f4f6;--badge-new-text:#374151;--badge-work-bg:#e6f1fb;--badge-work-text:#185fa5;--badge-done-bg:#e1f5ee;--badge-done-text:#0f6e56;--badge-pending-bg:#faeeda;--badge-pending-text:#854f0b;--badge-cancelled-bg:#fee2e2;--badge-cancelled-text:#991b1b;--kpi-work:#185fa5;--kpi-done:#1d9e75;--kpi-sum:#534ab7;--priority-a:#cc1b1b;--priority-b:#185fa5;--priority-c:#6b7280;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-body:14px;--font-size-sm:12px;--font-size-xs:11px;--font-size-h1:18px;--font-size-h2:15px;--font-size-label:12px;--font-size-section:10px;--font-size-badge:11px;--font-size-nav:13px;--font-size-menu:15px;--font-size-kpi:28px;--font-size-kpi-sm:20px;--line-height:1.5;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--letter-spacing-label:.03em;--letter-spacing-section:.05em;--space-xs:4px;--space-sm:6px;--space-md:8px;--space-lg:10px;--space-xl:12px;--space-2xl:14px;--space-3xl:16px;--space-4xl:20px;--space-5xl:24px;--radius-sm:6px;--radius-md:8px;--radius-card:10px;--radius-badge:12px;--radius-full:9999px;--shadow-card:0 1px 3px #0000000f;--shadow-card-hover:0 2px 8px #00000014;--shadow-tile-hover:0 4px 12px #10182814;--shadow-focus:0 0 0 3px #185fa51f;--height-btn:38px;--height-btn-sm:32px;--height-nav:48px;--height-row:32px;--transition-fast:.15s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);font-size:var(--font-size-body);line-height:var(--line-height);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;min-height:100vh}.app{flex-direction:column;min-height:100vh;display:flex}.content{padding:var(--space-4xl);flex:1;width:100%;max-width:1100px;margin:0 auto}.navbar{background:var(--color-bg-card);border-bottom:1px solid var(--color-border);padding:0 var(--space-4xl);height:var(--height-nav);z-index:100;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.navbar-brand{font-weight:var(--font-weight-bold);font-size:var(--font-size-h2);color:var(--color-text);position:relative}.navbar-brand:before{content:"";background:var(--color-brand-accent);border-radius:2px;width:32px;height:3px;position:absolute;bottom:-2px;left:0}.navbar-info{gap:var(--space-3xl);font-size:var(--font-size-sm);color:var(--color-text-secondary);align-items:center;display:flex}.navbar-tenant{font-weight:var(--font-weight-medium)}.btn{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-3xl);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;height:var(--height-btn);transition:background var(--transition-fast), box-shadow var(--transition-fast);border:none;font-family:inherit;text-decoration:none;display:inline-flex}.btn:focus{box-shadow:var(--shadow-focus);outline:none}.btn-primary{background:var(--color-primary);color:var(--color-text-on-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-danger{background:var(--color-danger);color:var(--color-text-on-primary)}.btn-danger:hover{background:var(--color-danger-hover)}.btn-ghost{color:var(--color-text-dark);border:1px solid var(--color-border-input);background:0 0}.btn-ghost:hover{background:var(--color-bg-hover)}.btn-sm{height:var(--height-btn-sm);padding:var(--space-md) var(--space-xl);font-size:var(--font-size-xs)}.btn:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{background:var(--color-bg-card);border:1px solid var(--color-border-input);border-radius:var(--radius-md);width:100%;color:var(--color-text);font-size:var(--font-size-body);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:10px 12px;font-family:inherit}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:var(--shadow-focus)}textarea{resize:vertical;min-height:60px}.field{margin-bottom:var(--space-2xl)}.lbl{color:var(--color-text-secondary);font-size:var(--font-size-label);font-weight:var(--font-weight-medium);margin-bottom:var(--space-xs);text-transform:uppercase;letter-spacing:var(--letter-spacing-label);display:block}.alert{border-radius:var(--radius-md);margin-bottom:var(--space-3xl);font-size:var(--font-size-sm);padding:10px 14px}.alert-error{background:var(--color-danger-light);border:1px solid var(--color-danger);color:#991b1b}.login-page{min-height:100vh;padding:var(--space-4xl);justify-content:center;align-items:center;display:flex}.login-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-4xl);width:100%;max-width:380px;box-shadow:var(--shadow-card)}.login-title{font-size:var(--font-size-h2);font-weight:var(--font-weight-semibold);text-align:center;margin-bottom:var(--space-3xl)}.page-header{margin-bottom:var(--space-3xl);justify-content:space-between;align-items:center;display:flex}.page-header h1{font-size:var(--font-size-h1);font-weight:var(--font-weight-semibold)}.search-bar{margin-bottom:var(--space-3xl)}.search-bar input{max-width:400px}.table-wrapper{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);max-height:calc(100vh - 280px);overflow:auto}.table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.table thead{z-index:10;background:var(--color-bg);position:sticky;top:0}.table th{text-align:left;font-weight:var(--font-weight-medium);color:var(--color-text-secondary);font-size:var(--font-size-label);text-transform:uppercase;letter-spacing:var(--letter-spacing-label);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:10px 16px}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.sortable:hover{color:var(--color-primary)}.sort-icon{opacity:.5;margin-left:2px;font-size:10px}.table-row{border-bottom:1px solid var(--color-bg-hover);cursor:pointer;transition:background var(--transition-fast);grid-template-columns:2fr 1fr 1fr 1.5fr;align-items:center;padding:10px 16px;display:grid}.table-row:hover{background:var(--color-bg-hover)}.table-row.selected{background:var(--color-primary-light)}.td{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.td-muted{color:var(--color-text-secondary)}.skeleton-table{padding:16px}.skeleton-row{background:linear-gradient(90deg, var(--color-bg-hover) 25%, var(--color-bg) 50%, var(--color-bg-hover) 75%);border-radius:var(--radius-md);background-size:200% 100%;height:44px;margin-bottom:8px;animation:1.5s infinite skeleton}@keyframes skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{text-align:center;color:var(--color-text-secondary);font-size:var(--font-size-body);padding:48px 20px}.pagination{justify-content:center;align-items:center;gap:var(--space-3xl);margin-top:var(--space-3xl);font-size:var(--font-size-sm);color:var(--color-text-secondary);display:flex}.pagination button{background:var(--color-bg-card);border:1px solid var(--color-border-input);border-radius:var(--radius-md);padding:var(--space-md) var(--space-xl);cursor:pointer;font-size:var(--font-size-sm);transition:background var(--transition-fast);font-family:inherit}.pagination button:hover:not(:disabled){background:var(--color-bg-hover)}.pagination button:disabled{opacity:.4;cursor:not-allowed}.side-panel-overlay{z-index:200;background:#0000004d;justify-content:flex-end;display:flex;position:fixed;inset:0}.side-panel{background:var(--color-bg-card);width:440px;max-width:90vw;height:100vh;padding:var(--space-4xl);overflow-y:auto;box-shadow:-4px 0 24px #0000001f}.side-panel-header{margin-bottom:var(--space-4xl);justify-content:space-between;align-items:center;display:flex}.side-panel-header h2{font-size:var(--font-size-h1);font-weight:var(--font-weight-semibold)}.detail-row{border-bottom:1px solid var(--color-bg-hover);justify-content:space-between;padding:10px 0;display:flex}.detail-row:last-child{border-bottom:none}.detail-actions,.form-actions{gap:var(--space-md);margin-top:var(--space-4xl);display:flex}.loading-screen{justify-content:center;align-items:center;height:100vh;display:flex}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.text-muted{color:var(--color-text-secondary)}.text-sm{font-size:var(--font-size-sm)}.text-danger{color:var(--color-danger)}.app-layout{min-height:100vh;display:flex}.sidebar{background:var(--color-bg-card);border-right:1px solid var(--color-border);z-index:50;flex-direction:column;width:220px;min-width:220px;height:100vh;display:flex;position:sticky;top:0}.sidebar-brand{border-bottom:1px solid var(--color-border);padding:16px 20px}.sidebar-brand-text{font-weight:var(--font-weight-bold);font-size:var(--font-size-h2);color:var(--color-text);position:relative}.sidebar-brand-text:before{content:"";background:var(--color-brand-accent);border-radius:2px;width:32px;height:3px;position:absolute;bottom:-2px;left:0}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:12px 8px;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:color var(--transition-fast), background var(--transition-fast);align-items:center;gap:10px;padding:10px 12px;text-decoration:none;display:flex}.sidebar-link:hover{color:var(--color-text);background:var(--color-bg-hover)}.sidebar-link.active{color:var(--color-primary);background:var(--color-primary-light)}.sidebar-icon{text-align:center;width:24px;font-size:16px}.sidebar-label{flex:1}.sidebar-footer{border-top:1px solid var(--color-border);font-size:var(--font-size-xs);padding:12px 20px}.sidebar-tenant{font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:2px}.sidebar-user{color:var(--color-text-secondary);text-overflow:ellipsis;margin-bottom:8px;overflow:hidden}.main-content{padding:var(--space-4xl);flex:1;min-width:0;max-width:1100px}.kanban-board{gap:16px;min-height:calc(100vh - 160px);padding-bottom:16px;display:flex;overflow-x:auto}.kanban-column{background:var(--color-bg);border-radius:var(--radius-card);border:1px solid var(--color-border);flex-direction:column;flex:1;min-width:280px;max-width:320px;display:flex}.kanban-column-header{border-top:3px solid var(--color-primary);border-radius:var(--radius-card) var(--radius-card) 0 0;background:var(--color-bg-card);align-items:center;gap:8px;padding:12px 16px;display:flex}.kanban-column-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);flex:1}.kanban-column-count{font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-bg-hover);border-radius:var(--radius-full);padding:2px 8px}.kanban-column-sum{font-size:var(--font-size-xs);color:var(--color-purple);font-weight:var(--font-weight-medium)}.kanban-cards{flex-direction:column;flex:1;gap:8px;padding:8px;display:flex;overflow-y:auto}.kanban-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:grab;transition:box-shadow var(--transition-fast);padding:12px}.kanban-card:hover{box-shadow:var(--shadow-card-hover)}.kanban-card:active{cursor:grabbing}.kanban-card-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);margin-bottom:4px}.kanban-card-amount{font-size:var(--font-size-xs);color:var(--color-purple);font-weight:var(--font-weight-medium)}.kanban-card-more{text-align:center;font-size:var(--font-size-xs);color:var(--color-text-secondary);padding:8px}.row-overdue td{background:#e24b4a0a}
