*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--navy: #1e3a5f;--navy-light: #2d5494;--blue: #3b82f6;--blue-light: #dbeafe;--amber: #f59e0b;--amber-light:#fef3c7;--green: #16a34a;--green-light:#dcfce7;--red: #dc2626;--red-light: #fee2e2;--orange: #ea580c;--orange-light:#fff7ed;--purple: #7c3aed;--purple-light:#f3e8ff;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--font-sans: "Georgia", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "Courier New", Courier, monospace;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--transition: .15s ease}html{font-size:16px}body{font-family:var(--font-sans);font-size:14px;line-height:1.6;color:var(--gray-900);background:var(--gray-50);min-height:100vh;-webkit-font-smoothing:antialiased}.app-shell{display:grid;grid-template-rows:56px 1fr;grid-template-columns:240px 1fr;min-height:100vh}.topbar{grid-column:1 / -1;background:var(--navy);color:#fff;display:flex;align-items:center;padding:0 1.5rem;gap:1rem;box-shadow:var(--shadow-sm);z-index:10}.topbar-logo{font-size:16px;font-weight:700;letter-spacing:-.02em;color:#fff;text-decoration:none}.topbar-logo span{color:var(--amber)}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}.sidebar{background:#fff;border-right:1px solid var(--gray-200);padding:1.25rem 0;overflow-y:auto}.sidebar-section{padding:0 .75rem;margin-bottom:1.5rem}.sidebar-label{font-size:10px;font-weight:700;color:var(--gray-400);text-transform:uppercase;letter-spacing:.08em;padding:0 .5rem;margin-bottom:4px}.sidebar-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-md);font-size:13px;color:var(--gray-600);cursor:pointer;text-decoration:none;transition:var(--transition);border:none;background:none;width:100%;text-align:left}.sidebar-item:hover{background:var(--gray-100);color:var(--gray-900)}.sidebar-item.active{background:var(--blue-light);color:var(--navy);font-weight:500}.sidebar-item i{font-size:16px}.main-content{padding:1.5rem;overflow-y:auto}.card{background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:1.25rem}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--gray-100)}.card-title{font-size:14px;font-weight:600;color:var(--gray-800)}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-md);font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:var(--transition)}.btn-primary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn-primary:hover{background:var(--navy-light)}.btn-secondary{background:#fff;color:var(--gray-700);border-color:var(--gray-300)}.btn-secondary:hover{background:var(--gray-50)}.btn-danger{background:var(--red);color:#fff}.btn-danger:hover{background:#b91c1c}.btn-sm{padding:4px 10px;font-size:11px}.btn-icon{padding:6px}.form-group{margin-bottom:1rem}.form-label{display:block;font-size:12px;font-weight:600;color:var(--gray-600);margin-bottom:4px}.form-input{width:100%;padding:8px 12px;border:1px solid var(--gray-300);border-radius:var(--radius-md);font-size:13px;font-family:var(--font-sans);background:#fff;color:var(--gray-900);transition:var(--transition)}.form-input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #3b82f61a}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px}thead tr{background:var(--gray-50)}th{padding:8px 10px;text-align:left;font-weight:600;font-size:11px;color:var(--gray-500);border-bottom:1px solid var(--gray-200);white-space:nowrap}td{padding:7px 10px;border-bottom:1px solid var(--gray-100)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--gray-50)}.badge{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600;white-space:nowrap}.badge-blue{background:var(--blue-light);color:#1e40af}.badge-green{background:var(--green-light);color:#166534}.badge-amber{background:var(--amber-light);color:#92400e}.badge-red{background:var(--red-light);color:#991b1b}.badge-orange{background:var(--orange-light);color:#9a3412}.badge-purple{background:var(--purple-light);color:#6b21a8}.badge-gray{background:var(--gray-100);color:var(--gray-600)}.badge-navy{background:var(--navy);color:#fff}.upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:2rem 1rem;border:2px dashed var(--gray-300);border-radius:var(--radius-lg);cursor:pointer;text-align:center;transition:var(--transition);min-height:140px;background:#fff}.upload-zone:hover,.upload-zone.drag{border-color:var(--blue);background:var(--blue-light)}.upload-zone.loaded{border-color:var(--green);border-style:solid;background:var(--green-light)}.tabs{display:flex;border-bottom:1px solid var(--gray-200);margin-bottom:1.25rem;gap:0}.tab{display:flex;align-items:center;gap:5px;padding:8px 14px;font-size:13px;font-weight:500;color:var(--gray-500);cursor:pointer;border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:var(--transition)}.tab:hover{color:var(--gray-800)}.tab.active{color:var(--navy);border-bottom-color:var(--navy)}.text-muted{color:var(--gray-500)}.text-sm{font-size:12px}.text-xs{font-size:11px}.font-medium{font-weight:500}.font-bold{font-weight:700}.text-right{text-align:right}.text-center{text-align:center}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.p-4{padding:16px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--gray-50)}.auth-card{background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:2.5rem 2rem;width:100%;max-width:420px;box-shadow:var(--shadow-md)}.auth-logo{text-align:center;margin-bottom:2rem;font-size:22px;font-weight:700;color:var(--navy)}.auth-logo span{color:var(--amber)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{animation:spin .8s linear infinite;display:inline-block}.alert{padding:10px 14px;border-radius:var(--radius-md);font-size:12px;line-height:1.6;display:flex;gap:8px;align-items:flex-start}.alert-warning{background:var(--amber-light);color:#92400e;border:1px solid #fcd34d}.alert-success{background:var(--green-light);color:#166534;border:1px solid #86efac}.alert-danger{background:var(--red-light);color:#991b1b;border:1px solid #fca5a5}.alert-info{background:var(--blue-light);color:#1e40af;border:1px solid #93c5fd}.stat-card{background:var(--gray-50);border-radius:var(--radius-md);padding:.875rem 1rem;border:1px solid var(--gray-200)}.stat-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--gray-400);margin-bottom:4px}.stat-value{font-size:20px;font-weight:600;color:var(--gray-900)}.stat-sub{font-size:11px;color:var(--gray-400);margin-top:2px}.row-match{background:#f0fdf4!important}.row-minor{background:#fefce8!important}.row-moderate{background:#fff7ed!important}.row-sig{background:#fef2f2!important}.row-only-a{background:#eff6ff!important}.row-only-b{background:#faf5ff!important}@media (max-width: 768px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}
