:root{
  --background: 0 0% 100%;
  --foreground: 222 47% 11%;
  --card: 0 0% 100%;
  --card-foreground: 222 47% 11%;
  --popover: 0 0% 100%;
  --popover-foreground: 222 47% 11%;
  --primary: 217 91% 60%;
  --primary-foreground: 0 0% 100%;
  --secondary: 210 40% 96%;
  --secondary-foreground: 222 47% 11%;
  --muted: 210 40% 96%;
  --muted-foreground: 215 16% 47%;
  --accent: 210 40% 96%;
  --accent-foreground: 222 47% 11%;
  --destructive: 0 84% 60%;
  --destructive-foreground: 0 0% 100%;
  --border: 214 32% 91%;
  --input: 214 32% 91%;
  --ring: 217 91% 60%;
  --radius: .75rem;
  --surface: 210 40% 98%;
  --sidebar-background: 0 0% 98%;
  --sidebar-foreground: 240 5.3% 26.1%;
  --sidebar-primary: 240 5.9% 10%;
  --sidebar-primary-foreground: 0 0% 98%;
  --sidebar-accent: 240 4.8% 95.9%;
  --sidebar-accent-foreground: 240 5.9% 10%;
  --sidebar-border: 220 13% 91%;
  --sidebar-ring: 217 91% 60%;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family: Inter, system-ui, -apple-system, sans-serif;
  color:hsl(var(--foreground));
  background:hsl(var(--background));
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.container{max-width:1200px;margin:0 auto;padding:0 24px}
.muted{color:hsl(var(--muted-foreground))}
.badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 10px;border-radius:999px;
  font-size:12px;font-weight:600;
}
.badge-primary{background:hsl(var(--primary) / .1);color:hsl(var(--primary))}
.badge-muted{background:hsl(var(--muted));color:hsl(var(--muted-foreground))}
.badge-green{background:#dcfce7;color:#15803d}
.badge-orange{background:#ffedd5;color:#c2410c}
.app-header{
  position:sticky;top:0;z-index:20;background:hsl(var(--background) / .8);
  backdrop-filter:blur(12px);border-bottom:1px solid hsl(var(--border) / .7);
}
.app-header .inner{display:flex;align-items:center;justify-content:space-between;height:72px}
.brand{display:flex;align-items:center;gap:12px;font-weight:700;letter-spacing:-.02em}
.brand-mark{
  width:40px;height:40px;border-radius:14px;
  display:grid;place-items:center;color:white;font-weight:800;
  background:linear-gradient(135deg,hsl(var(--primary)),#7c3aed);
  box-shadow:0 10px 20px -10px hsl(var(--primary) / .6);
}
.nav-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border-radius:14px;padding:12px 18px;font-size:14px;font-weight:600;
  transition:.18s ease;border:1px solid transparent;
}
.btn:hover{transform:translateY(-1px)}
.btn-primary{
  background:hsl(var(--primary));color:hsl(var(--primary-foreground));
}
.btn-primary:hover{opacity:.92}
.btn-outline{
  background:hsl(var(--background));color:hsl(var(--foreground));
  border-color:hsl(var(--border));
}
.btn-ghost{
  background:transparent;color:hsl(var(--muted-foreground));
}
.hero{
  padding:84px 0 56px;
}
.hero-grid{
  display:grid;grid-template-columns:1.15fr .85fr;gap:32px;align-items:center;
}
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  background:hsl(var(--primary) / .08);color:hsl(var(--primary));
  padding:8px 12px;border-radius:999px;font-size:13px;font-weight:600;
  margin-bottom:18px;
}
h1{
  margin:0 0 18px;font-size:clamp(42px, 7vw, 76px);line-height:1.02;
  letter-spacing:-.05em;font-weight:800;
}
.hero p{
  margin:0 0 24px;font-size:18px;line-height:1.7;color:hsl(var(--muted-foreground));
  max-width:720px;
}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap}
.panel{
  background:hsl(var(--card));border:1px solid hsl(var(--border));
  border-radius:24px;box-shadow:0 0 0 1px rgba(0,0,0,.03),0 10px 30px -10px rgba(0,0,0,.08);
}
.hero-card{padding:24px}
.metrics{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.metric{
  background:hsl(var(--surface));border-radius:18px;padding:18px;border:1px solid hsl(var(--border) / .7);
}
.metric .k{font-size:28px;font-weight:700;letter-spacing:-.03em}
.metric .t{margin-top:4px;color:hsl(var(--muted-foreground));font-size:13px;line-height:1.5}
.section{padding:28px 0}
.section h2{
  margin:0 0 18px;font-size:32px;letter-spacing:-.03em;font-weight:700;
}
.grid-3,.grid-4{display:grid;gap:18px}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.card{
  background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:22px;
  padding:24px;box-shadow:0 0 0 1px rgba(0,0,0,.03),0 10px 30px -10px rgba(0,0,0,.06);
}
.card h3{margin:0 0 10px;font-size:20px;letter-spacing:-.02em}
.card p{margin:0;color:hsl(var(--muted-foreground));line-height:1.7}
.footer{
  border-top:1px solid hsl(var(--border));margin-top:48px;padding:28px 0 40px;color:hsl(var(--muted-foreground));
}

.auth-page{
  min-height:100vh;background:
  radial-gradient(circle at top left, hsl(var(--primary) / .12), transparent 25%),
  linear-gradient(180deg,#f8fbff 0%, #ffffff 100%);
  display:grid;place-items:center;padding:28px;
}
.auth-shell{
  width:min(100%, 460px);
}
.auth-card{
  background:hsl(var(--card));border:1px solid hsl(var(--border));
  border-radius:24px;padding:28px;
  box-shadow:0 0 0 1px rgba(0,0,0,.03),0 10px 30px -10px rgba(0,0,0,.12);
}
.auth-card h1{font-size:34px;line-height:1.1;margin:14px 0 12px}
.auth-card p{margin:0 0 20px;color:hsl(var(--muted-foreground));line-height:1.7}
.input-group{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.input-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
label{font-size:14px;font-weight:500}
input{
  width:100%;height:48px;border-radius:14px;border:1px solid hsl(var(--input));
  background:white;padding:0 14px;font-size:14px;outline:none;
}
input:focus{border-color:hsl(var(--primary));box-shadow:0 0 0 4px hsl(var(--primary) / .12)}
.small{font-size:14px;color:hsl(var(--muted-foreground))}
.auth-link{color:hsl(var(--primary))}
.auth-link:hover{text-decoration:underline}

.dashboard-layout{
  display:flex;min-height:100vh;width:100%;background:hsl(var(--background));
}
.sidebar{
  position:fixed;inset:0 auto 0 0;width:240px;
  border-right:1px solid hsl(var(--sidebar-border));
  background:hsl(var(--sidebar-background));z-index:30;
  display:flex;flex-direction:column;
}
.sidebar-top{
  display:flex;align-items:center;height:64px;padding:0 20px;border-bottom:1px solid hsl(var(--sidebar-border));
}
.sidebar-nav{padding:20px 12px;display:flex;flex-direction:column;gap:6px}
.side-link{
  display:flex;align-items:center;gap:10px;
  min-height:44px;padding:0 14px;border-radius:14px;
  color:hsl(var(--sidebar-foreground));font-size:14px;font-weight:500;
}
.side-link:hover{background:hsl(var(--sidebar-accent))}
.side-link.active{background:hsl(var(--sidebar-accent));color:hsl(var(--sidebar-accent-foreground))}
.main{
  flex:1;margin-left:240px;min-width:0;background:hsl(var(--background));
}
.main-inner{padding:32px}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px;flex-wrap:wrap}
.page-head h1{font-size:30px;line-height:1.1;margin:0}
.page-head p{margin:8px 0 0;color:hsl(var(--muted-foreground))}
.top-actions{display:flex;gap:12px;flex-wrap:wrap}
.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.dropzone{
  margin-top:18px;
  border:2px dashed hsl(var(--border));
  background:hsl(var(--accent) / .3);
  border-radius:22px;
  min-height:240px;
  display:grid;place-items:center;text-align:center;padding:28px;
}
.dropzone h3{margin:0 0 8px;font-size:18px}
.dropzone p{margin:0;color:hsl(var(--muted-foreground));line-height:1.6}
.actions-end{display:flex;justify-content:flex-end;gap:12px;padding-top:10px}
.table-card{
  overflow:hidden;background:hsl(var(--card));border:1px solid hsl(var(--border));
  border-radius:22px;box-shadow:0 0 0 1px rgba(0,0,0,.03),0 10px 30px -10px rgba(0,0,0,.06);
}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse}
th,td{padding:15px 24px;text-align:left}
th{
  border-bottom:1px solid hsl(var(--border));
  font-size:12px;text-transform:uppercase;letter-spacing:.08em;
  color:hsl(var(--muted-foreground));font-weight:500;
}
td{
  border-bottom:1px solid hsl(var(--border) / .7);
  font-size:14px;vertical-align:top;
}
tbody tr:last-child td{border-bottom:none}
.stat-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:18px;flex-wrap:wrap}
.stat-row h2{margin:0;font-size:24px}
.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.result-card{padding:22px}
.result-rank{font-size:13px;color:hsl(var(--primary));font-weight:600;margin-bottom:8px}
.result-sum{font-size:34px;font-weight:700;letter-spacing:-.03em;margin:12px 0}
.accordion-item{
  margin-top:16px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:20px;padding:18px;
}
.note-box{
  background:hsl(var(--surface));border:1px solid hsl(var(--border));border-radius:18px;padding:18px;
}
.spacer{height:8px}
@media (max-width: 1100px){
  .hero-grid,.grid-4,.result-grid,.upload-grid{grid-template-columns:1fr}
  .grid-3{grid-template-columns:1fr}
}
@media (max-width: 880px){
  .sidebar{position:relative;width:100%;height:auto}
  .main{margin-left:0}
  .dashboard-layout{flex-direction:column}
  .input-row{grid-template-columns:1fr}
}
