:root{--bg:#f0f2f5;--sidebar:#1a1a2e;--sidebar-hover:#16213e;--primary:#0f3460;--accent:#e94560;--card:#fff;--text:#1a1a2e;--text-light:#6b7280;--border:#e5e7eb;--success:#10b981;--warning:#f59e0b;--danger:#ef4444}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow-x:hidden}.app{min-height:100vh;display:flex}.sidebar{background:var(--sidebar);color:#fff;z-index:100;width:240px;padding:0;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.sidebar-backdrop,.mobile-menu-btn,.sidebar-close{display:none}.mobile-menu-btn-hidden{opacity:0;pointer-events:none}.sidebar-logo{border-bottom:1px solid #ffffff1a;align-items:center;gap:10px;padding:20px;font-size:1.3rem;font-weight:700;display:flex}.sidebar-logo-text{align-items:center;gap:10px;display:inline-flex}.sidebar-section{text-transform:uppercase;letter-spacing:1px;color:#fff6;padding:12px 20px 4px;font-size:.7rem}.sidebar a{color:#ffffffb3;align-items:center;gap:10px;padding:10px 20px;font-size:.9rem;text-decoration:none;transition:all .2s;display:flex}.sidebar a:hover,.sidebar a.active{background:var(--sidebar-hover);color:#fff}.sidebar a.active{border-right:3px solid var(--accent)}.main{flex:1;min-width:0;margin-left:240px;padding:24px}.page-title{color:var(--primary);margin-bottom:20px;font-size:1.5rem;font-weight:700}.card{background:var(--card);border-radius:12px;margin-bottom:20px;padding:20px;box-shadow:0 1px 3px #00000014}.card-title{color:var(--text-light);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;font-size:.85rem;font-weight:600}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.kpi-card{background:var(--card);border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014}.kpi-card .label{color:var(--text-light);margin-bottom:4px;font-size:.8rem}.kpi-card .value{color:var(--primary);font-size:1.8rem;font-weight:700}.kpi-card .sub{color:var(--text-light);margin-top:2px;font-size:.75rem}.charts-grid{grid-template-columns:repeat(auto-fit,minmax(480px,1fr));gap:20px;margin-bottom:24px;display:grid}.filters{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.filters input,.filters select{border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px 12px;font-size:.9rem}.filters input:focus,.filters select:focus{border-color:var(--primary);outline:none}table{border-collapse:collapse;white-space:nowrap;width:100%;min-width:100%;font-size:.85rem}thead th{background:var(--bg);text-align:left;color:var(--text-light);border-bottom:2px solid var(--border);padding:10px 12px;font-weight:600;position:sticky;top:0}tbody td{border-bottom:1px solid var(--border);padding:8px 12px}tbody tr:hover{background:#f8f9fa}.badge{border-radius:12px;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge-green{color:#065f46;background:#d1fae5}.badge-red{color:#991b1b;background:#fee2e2}.badge-blue{color:#1e40af;background:#dbeafe}.badge-yellow{color:#92400e;background:#fef3c7}.badge-gray{color:#374151;background:#f3f4f6}.pagination{color:var(--text-light);justify-content:space-between;align-items:center;margin-top:16px;font-size:.85rem;display:flex}.pagination button{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:6px;padding:6px 14px;font-size:.85rem}.pagination button:disabled{opacity:.4;cursor:default}.pagination button:not(:disabled):hover{background:var(--bg)}.pagination .pg-btns{gap:8px;display:flex}.detail-header{align-items:center;gap:16px;margin-bottom:20px;display:flex}.detail-header .back-btn{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:6px;padding:6px 12px;font-size:.85rem}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:20px;display:grid}.detail-field .label{color:var(--text-light);font-size:.75rem}.detail-field .value{font-size:1rem;font-weight:600}.tab-bar{border-bottom:2px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.tab-bar button{cursor:pointer;color:var(--text-light);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:8px 16px;font-size:.85rem}.tab-bar button.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.loading{color:var(--text-light);justify-content:center;align-items:center;padding:60px;font-size:1rem;display:flex}.clickable{cursor:pointer;color:var(--primary);font-weight:600}.clickable:hover{text-decoration:underline}.login-page{background:linear-gradient(135deg, var(--sidebar) 0%, var(--primary) 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#fff;border-radius:16px;width:380px;padding:40px;box-shadow:0 20px 60px #0000004d}.login-logo{color:var(--primary);text-align:center;margin-bottom:4px;font-size:2rem;font-weight:800}.login-subtitle{text-align:center;color:var(--text-light);margin-bottom:28px;font-size:.85rem}.login-error{color:#991b1b;background:#fee2e2;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:.85rem}.login-field{margin-bottom:16px}.login-field label{color:var(--text-light);margin-bottom:4px;font-size:.8rem;font-weight:600;display:block}.login-field input{border:1px solid var(--border);border-radius:8px;width:100%;padding:10px 12px;font-size:.95rem}.login-field input:focus{border-color:var(--primary);outline:none}.login-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;margin-top:8px;padding:12px;font-size:1rem;font-weight:600}.login-btn:hover{opacity:.9}.login-btn:disabled{opacity:.5;cursor:default}.login-hint{text-align:center;color:var(--text-light);margin-top:16px;font-size:.75rem}.sidebar-user{color:#fffc;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:12px 20px;font-size:.85rem;display:flex}.sidebar-bottom{border-top:1px solid #ffffff1a;margin-top:auto;padding-top:4px}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:12px;width:560px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-header h3{font-size:1.1rem;font-weight:700}.modal-close{cursor:pointer;color:var(--text-light);background:0 0;border:none;font-size:1.5rem;line-height:1}.modal-body{padding:20px}.form-grid{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;display:grid}.form-field label{color:var(--text-light);margin-bottom:3px;font-size:.8rem;font-weight:600;display:block}.form-field input,.form-field select{border:1px solid var(--border);border-radius:6px;width:100%;padding:8px 10px;font-size:.9rem}.form-field input:focus,.form-field select:focus{border-color:var(--primary);outline:none}.form-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding-top:8px;display:flex}.btn-primary{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:.85rem;font-weight:600}.btn-primary:hover{opacity:.9}.btn-secondary{color:var(--text);border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:6px;padding:8px 16px;font-size:.85rem}.btn-danger-solid{background:var(--danger);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:.85rem;font-weight:600}.btn-danger-solid:hover{opacity:.9}.btn-sm{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:4px;margin-right:4px;padding:4px 10px;font-size:.78rem}.btn-sm:hover{background:var(--bg)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:#fee2e2}.btn-export{color:#fff;cursor:pointer;background:#065f46;border:none;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-size:.8rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-export:hover{opacity:.9}.btn-export:disabled{opacity:.7;cursor:wait}.confirm-card{background:#fff;border-radius:16px;width:460px;max-width:92vw;overflow:hidden;box-shadow:0 20px 60px #0000004d}.confirm-body{align-items:flex-start;gap:16px;padding:24px 24px 18px;display:flex}.confirm-icon{border-radius:999px;flex:none;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.confirm-icon.danger{color:#b91c1c;background:#fee2e2}.confirm-icon.info{color:#1d4ed8;background:#dbeafe}.confirm-text h3{color:var(--text);margin:0 0 6px;font-size:1.05rem}.confirm-text p{color:var(--text-light);margin:0;font-size:.92rem;line-height:1.45}.confirm-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding:16px 24px 24px;display:flex}@media (width<=1024px){.app{display:block}.mobile-menu-btn{z-index:120;border:1px solid var(--border);color:var(--primary);background:#fff;border-radius:999px;align-items:center;gap:8px;margin:12px 12px 0;padding:10px 14px;font-size:.9rem;font-weight:600;display:inline-flex;position:sticky;top:12px;left:12px;box-shadow:0 8px 24px #0f34601f}.sidebar-backdrop{z-index:105;background:#0f172a73;border:none;display:block;position:fixed;inset:0}.sidebar{z-index:110;width:min(88vw,320px);transition:transform .25s;transform:translate(-100%);box-shadow:12px 0 36px #00000038}.sidebar.sidebar-open{transform:translate(0)}.sidebar-logo{justify-content:space-between}.sidebar-close{color:#fff;cursor:pointer;background:#ffffff14;border:none;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.main{margin-left:0;padding:20px}.charts-grid{grid-template-columns:1fr}}@media (width<=768px){table{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.main{padding:16px}.page-title{margin-bottom:16px;font-size:1.25rem}.card,.kpi-card,.login-card{padding:16px}.kpi-grid,.charts-grid,.detail-grid,.form-grid{grid-template-columns:1fr}.charts-grid{gap:16px}.filters,.form-actions,.pagination,.confirm-actions,.detail-header{flex-direction:column;align-items:stretch}.filters>*,.form-actions>*,.confirm-actions>*,.pagination .pg-btns button{width:100%}.tab-bar{white-space:nowrap;padding-bottom:4px;overflow-x:auto}.tab-bar button{flex:none}.modal-content,.confirm-card,.login-card{width:min(100%,92vw)}.modal-body,.confirm-body,.confirm-actions{padding-left:16px;padding-right:16px}.confirm-body{flex-direction:column}}
