:root{--background: #f7f7f8;--foreground: #171717;--card: #ffffff;--card-foreground: #171717;--popover: #ffffff;--primary: #2563eb;--primary-foreground: #ffffff;--secondary: #eef2ff;--secondary-foreground: #1e3a8a;--muted: #eef0f3;--muted-foreground: #71717a;--border: #e4e4e7;--input: #e4e4e7;--ring: #93c5fd;--success: #16a34a;--success-soft: #dcfce7;--warning: #d97706;--warning-soft: #fef3c7;--destructive: #dc2626;--destructive-soft: #fee2e2;--radius: 8px;--shadow: 0 1px 2px rgba(15, 23, 42, .06);--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;color:var(--foreground);background:var(--background);font-family:var(--font-sans)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--background)}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.boot,.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#0f172ae0,#2563eb94),url(https://images.unsplash.com/photo-1523240795612-9a054b0db644?auto=format&fit=crop&w=1800&q=80) center/cover;color:#fff}.login-card{width:min(420px,calc(100vw - 32px));padding:28px;background:#fffffff7;color:var(--foreground);border:1px solid rgba(255,255,255,.76);border-radius:14px;box-shadow:0 24px 80px #00000040}.login-mark,.brand-symbol{display:grid;place-items:center;color:var(--primary-foreground);background:var(--primary)}.login-mark{width:48px;height:48px;border-radius:12px;margin-bottom:18px}.login-card h1,.page-header h1,.hero-card h2,.section-title h2{margin:0;letter-spacing:0}.login-card h1{font-size:30px;line-height:1.05}.stack{display:grid;gap:12px;margin-top:20px}.muted{color:var(--muted-foreground)}.eyebrow{margin:0 0 6px;color:var(--primary);font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.app-shell{min-height:100vh;display:grid;grid-template-columns:268px minmax(0,1fr)}.app-sidebar{position:sticky;top:0;height:100vh;padding:18px 14px;background:#0f172a;color:#e5e7eb;border-right:1px solid rgba(255,255,255,.08)}.sidebar-head{display:flex;align-items:center;gap:12px;padding:4px 8px 18px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-symbol{width:38px;height:38px;border-radius:10px}.sidebar-head strong,.sidebar-head span{display:block}.sidebar-head span{margin-top:2px;color:#94a3b8;font-size:12px}.nav-list{display:grid;gap:4px;margin-top:18px}.nav-item{width:100%;height:40px;border:0;border-radius:var(--radius);padding:0 10px;color:#cbd5e1;background:transparent;display:grid;grid-template-columns:20px 1fr 16px;align-items:center;gap:8px;text-align:left;cursor:pointer}.nav-item svg:last-child{opacity:0}.nav-item.active svg:last-child{opacity:1}.nav-item:hover,.nav-item.active{color:#fff;background:#ffffff17}.sidebar-card{position:absolute;left:14px;right:14px;bottom:18px;padding:14px;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);background:#ffffff0f}.sidebar-card span,.sidebar-card small{color:#94a3b8}.sidebar-card strong{display:block;margin:8px 0;font-size:34px;color:#fff}.mini-progress,.progress-track{height:8px;overflow:hidden;border-radius:999px;background:var(--muted)}.mini-progress{background:#ffffff1f;margin-bottom:8px}.mini-progress i,.progress-track i{display:block;height:100%;border-radius:inherit;background:var(--primary)}.content-shell{min-width:0;padding:24px}.page-header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}.page-header h1{font-size:clamp(28px,4vw,42px);line-height:1.05}.page-header p:last-child{margin:8px 0 0}.toolbar,.filters,.search-form,.upload-form,.chip-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.view-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.hero-card,.card,.metric-card,.section-title{background:var(--card);color:var(--card-foreground);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.hero-card{grid-column:span 12;min-height:220px;display:grid;grid-template-columns:minmax(0,1fr) 230px;align-items:center;gap:24px;padding:26px;overflow:hidden;position:relative}.hero-card:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#fffffff5,#ffffffb3),url(https://images.unsplash.com/photo-1454165804606-c3d57bc86b40?auto=format&fit=crop&w=1800&q=80) center/cover;z-index:0}.hero-card>*{position:relative;z-index:1}.hero-card h2{margin-top:12px;font-size:clamp(34px,6vw,64px);line-height:.95}.hero-card p{max-width:700px;color:var(--muted-foreground);font-size:17px}.hero-gauge{position:relative;height:190px;display:grid;place-items:center}.hero-gauge strong,.hero-gauge span{position:absolute}.hero-gauge strong{font-size:44px}.hero-gauge span{margin-top:58px;color:var(--muted-foreground);font-size:13px;font-weight:700}.metric-grid{grid-column:span 12;display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.metric-card{min-height:132px;padding:18px;display:grid;gap:7px}.metric-card span,.metric-card small{color:var(--muted-foreground)}.metric-card strong{font-size:34px;line-height:1}.metric-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:var(--radius);color:var(--primary);background:#eff6ff}.metric-card.success .metric-icon{color:var(--success);background:var(--success-soft)}.metric-card.warning .metric-icon{color:var(--warning);background:var(--warning-soft)}.card,.section-title{padding:18px}.section-title{display:flex;justify-content:space-between;gap:16px}.card-head{display:flex;justify-content:space-between;margin-bottom:16px}.card-head>div{display:flex;align-items:center;gap:8px}.card h2,.section-title h2{font-size:20px}.span-5{grid-column:span 5}.span-7{grid-column:span 7}.span-12{grid-column:span 12}.status-list,.ranking-list,.result-list{display:grid;gap:10px}.status-row,.ranking-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,260px);gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.status-row:last-child,.ranking-row:last-child{border-bottom:0}.status-row strong,.status-row span,.ranking-row strong,.ranking-row span,.course-cell strong,.course-cell span{display:block;min-width:0}.status-row span,.ranking-row span,.course-cell span{margin-top:3px;color:var(--muted-foreground);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-cell{min-width:160px;display:grid;grid-template-columns:1fr 44px;gap:8px;align-items:center}.progress-cell span{color:var(--muted-foreground);font-size:12px;font-weight:700;text-align:right}.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius)}table{width:100%;min-width:980px;border-collapse:collapse;background:#fff}th,td{padding:12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}th{color:var(--muted-foreground);background:#fafafa;font-size:12px;font-weight:800;text-transform:uppercase}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafafa}.compact table{min-width:760px}.course-cell{max-width:520px}.course-link{appearance:none;border:0;background:transparent;color:inherit;cursor:pointer;padding:0;text-align:left}.course-link:hover strong{color:var(--primary);text-decoration:underline}.course-cell strong{font-weight:800}.badge{width:max-content;display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:3px 9px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--foreground);font-size:12px;font-weight:800;white-space:nowrap}.badge.success{color:#166534;background:var(--success-soft);border-color:#bbf7d0}.badge.warning{color:#92400e;background:var(--warning-soft);border-color:#fde68a}.badge.secondary{color:var(--muted-foreground);background:var(--muted)}.button{min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--radius);padding:0 13px;color:var(--primary-foreground);background:var(--primary);font-weight:800;text-decoration:none;cursor:pointer}.button:hover{filter:brightness(.98)}.button:disabled{cursor:wait;opacity:.65}.button.outline{color:var(--foreground);background:#fff;border-color:var(--border)}.button.ghost{color:var(--foreground);background:transparent;border-color:transparent}.button.full{width:100%}.field{display:grid;gap:7px;color:var(--muted-foreground);font-size:13px;font-weight:800}.input,.input-shell,select{min-height:40px;border:1px solid var(--input);border-radius:var(--radius);background:#fff}.input{width:100%;padding:0 11px}.input-shell{display:grid;grid-template-columns:20px minmax(0,1fr);gap:8px;align-items:center;padding:0 11px;color:var(--muted-foreground)}.input-shell.large{flex:1 1 420px;min-height:44px}.input-shell input{width:100%;min-width:0;height:38px;border:0;outline:0;background:transparent}select{padding:0 34px 0 11px;color:var(--foreground)}.alert{margin-top:12px;padding:10px 12px;border-radius:var(--radius);font-weight:700}.page-alert{margin:0 0 16px}.alert.success{color:#166534;background:var(--success-soft)}.alert.destructive{color:#991b1b;background:var(--destructive-soft)}.search-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.result-item{display:grid;gap:10px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:#fafafa;text-align:left;width:100%;cursor:pointer;font:inherit}.result-item:hover{border-color:var(--primary);background:#f4f7ff}.empty-state{padding:24px;color:var(--muted-foreground);border:1px dashed var(--border);border-radius:var(--radius);background:#fafafa}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span-5,.span-7{grid-column:span 12}}@media(max-width:900px){.app-shell{display:block}.app-sidebar{position:static;height:auto}.sidebar-card{position:static;margin-top:18px}.content-shell{padding:16px}.page-header{display:grid}.hero-card,.metric-grid,.search-results{grid-template-columns:1fr}}@media(max-width:620px){.content-shell{padding:12px}.hero-card,.card,.section-title{padding:14px}.hero-card h2{font-size:36px}.toolbar,.filters,.search-form,.upload-form{align-items:stretch;flex-direction:column}.button,select,.input-shell{width:100%}.status-row,.ranking-row{grid-template-columns:1fr}}
