@import url('https://fonts.googleapis.com/css2?family=Unbounded:wght@500;700;800;900&family=Manrope:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

:root{
  --bg:#0a0a0a;
  --card:#141414;
  --card-2:#181818;
  --border:rgba(255,255,255,.08);
  --text:#f5f5f5;
  --muted:#9a9a9a;
  --red:#e5342a;
  --red-2:#c81e1e;
  --radius:20px;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:'Manrope',sans-serif;
  min-height:100vh;
}
h1,h2,h3,.logo,.headline{
  font-family:'Unbounded',sans-serif;
}
a{color:inherit;text-decoration:none;}

.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 40px;border-bottom:1px solid var(--border);
}
.logo{font-weight:800;font-size:20px;letter-spacing:.5px;}
.topbar-right{display:flex;align-items:center;gap:16px;color:var(--muted);font-size:14px;}
.avatar{
  width:34px;height:34px;border-radius:50%;
  background:linear-gradient(135deg,#333,#111);
  border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;
  padding:13px 26px;border-radius:999px;border:none;cursor:pointer;
  font-family:'Manrope',sans-serif;font-weight:700;font-size:14px;
  transition:transform .15s ease, filter .15s ease;
}
.btn:hover{transform:translateY(-1px);filter:brightness(1.08);}
.btn-light{
  background:linear-gradient(180deg,#fdfdfd,#c9c9c9);color:#0a0a0a;
}
.btn-red{
  background:rgba(229,52,42,.12);color:#fff;border:1px solid rgba(229,52,42,.35);
}
.btn-red:hover{background:rgba(229,52,42,.2);}
.btn-ghost{
  background:transparent;color:var(--text);border:1px solid var(--border);
}
.btn-sm{padding:9px 18px;font-size:13px;}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none;}

.auth-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:24px;
}
.auth-card{
  width:100%;max-width:400px;background:var(--card);
  border:1px solid var(--border);border-radius:var(--radius);
  padding:36px 32px;
}
.auth-card .logo{display:block;text-align:center;margin-bottom:6px;}
.auth-sub{color:var(--muted);text-align:center;font-size:14px;margin-bottom:28px;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px;}
.field input{
  width:100%;padding:13px 14px;border-radius:12px;
  background:var(--card-2);border:1px solid var(--border);color:var(--text);
  font-family:'Manrope',sans-serif;font-size:14px;
}
.field input:focus{outline:none;border-color:rgba(229,52,42,.6);}
.field-hint{font-size:12px;color:var(--muted);margin-top:6px;}
.field-error{font-size:12px;color:var(--red);margin-top:6px;display:none;}
.auth-card .btn{width:100%;margin-top:6px;}
.auth-switch{text-align:center;margin-top:20px;font-size:13px;color:var(--muted);}
.auth-switch a{color:var(--text);font-weight:700;border-bottom:1px solid var(--border);}
.code-badge{
  background:var(--card-2);border:1px solid var(--border);border-radius:12px;
  padding:12px 14px;font-family:monospace;font-size:15px;text-align:center;
  letter-spacing:2px;margin-bottom:16px;color:#fff;
}

.page{max-width:1100px;margin:0 auto;padding:36px 24px 80px;}
.greet{margin-bottom:6px;font-size:26px;font-weight:800;}
.greet-sub{color:var(--muted);font-size:14px;margin-bottom:8px;}
.progress-wrap{
  background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:4px;margin:20px 0 32px;height:10px;overflow:hidden;
}
.progress-bar{height:100%;border-radius:12px;background:linear-gradient(90deg,var(--red),#ff6b5e);}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px;}
.card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  padding:22px;position:relative;overflow:hidden;
}
.card .num{
  position:absolute;right:14px;top:6px;font-size:52px;font-weight:800;
  color:rgba(255,255,255,.04);font-family:'Unbounded',sans-serif;
}
.card-title{font-weight:700;font-size:16px;margin-bottom:6px;}
.card-desc{color:var(--muted);font-size:13px;margin-bottom:18px;line-height:1.5;}
.badge{
  display:inline-block;font-size:11px;font-weight:700;padding:5px 10px;
  border-radius:999px;margin-bottom:14px;
}
.badge-done{background:rgba(60,200,120,.12);color:#4ade80;display:inline-flex;align-items:center;gap:5px;}
.badge-open{background:rgba(255,255,255,.08);color:var(--text);}
.badge-locked{background:rgba(255,255,255,.06);color:var(--muted);}

.greet-row{display:flex;align-items:flex-start;justify-content:space-between;}
.spark-ic{display:inline-flex;color:var(--red);vertical-align:-3px;margin-left:2px;}
.row-2{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;margin:24px 0 28px;}
.continue-card,.curator-card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  padding:22px;
}
.continue-card{background:linear-gradient(135deg,#181818,#121212);}
.continue-label,.curator-title{font-size:12px;color:var(--red);font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;}
.curator-title{color:var(--muted);}
.continue-title{font-family:'Unbounded',sans-serif;font-size:17px;font-weight:700;margin-bottom:6px;}
.continue-desc,.curator-sub{color:var(--muted);font-size:13px;margin-bottom:16px;line-height:1.5;}
.card-actions{display:flex;gap:8px;flex-wrap:wrap;}
.card-actions .btn{gap:6px;}
.btn-red,.btn-light,.btn-ghost{display:inline-flex;align-items:center;gap:7px;}

.trophy-banner{
  display:flex;align-items:center;gap:14px;
  background:linear-gradient(135deg,rgba(229,52,42,.14),rgba(229,52,42,.04));
  border:1px solid rgba(229,52,42,.3);border-radius:16px;padding:18px 20px;margin-bottom:24px;color:var(--red);
}
.trophy-title{font-weight:700;font-size:15px;color:var(--text);}
.trophy-sub{font-size:13px;color:var(--muted);}

.card.locked .card-title,.card.locked .card-desc{filter:blur(4px);user-select:none;}
.lock-overlay{
  position:absolute;inset:0;background:rgba(10,10,10,.55);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  backdrop-filter:blur(1px);
}
.lock-icon{
  width:38px;height:38px;border-radius:50%;background:var(--card-2);
  border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:16px;
}

.section-title{font-family:'Unbounded',sans-serif;font-weight:700;font-size:20px;margin:36px 0 4px;}
.section-sub{color:var(--muted);font-size:13px;margin-bottom:18px;}

.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:28px;}
.stat{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;}
.stat-num{font-family:'Unbounded',sans-serif;font-size:28px;font-weight:800;}
.stat-label{color:var(--muted);font-size:13px;margin-top:4px;}

table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:16px;overflow:hidden;}
th,td{text-align:left;padding:14px 16px;font-size:13px;border-bottom:1px solid var(--border);}
th{color:var(--muted);font-weight:600;text-transform:uppercase;font-size:11px;letter-spacing:.5px;}
tr:last-child td{border-bottom:none;}
.student-row:hover{background:rgba(255,255,255,.03);}
.pill-status{padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;}
.pill-unused{background:rgba(255,255,255,.06);color:var(--muted);}
.pill-used{background:rgba(60,200,120,.12);color:#4ade80;}
.pill-blocked{background:rgba(255,90,90,.14);color:#ff5a5a;}
code.code-cell{font-family:monospace;letter-spacing:1px;}

.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.toast{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--card);border:1px solid var(--border);padding:14px 22px;border-radius:14px;
  font-size:13px;opacity:0;transition:all .25s ease;pointer-events:none;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ---- admin shell with left sidebar ---- */
.admin-shell{display:flex;min-height:100vh;align-items:stretch;}
.admin-sidebar{
  width:230px;flex-shrink:0;background:#0d0d0d;border-right:1px solid var(--border);
  padding:24px 16px;display:flex;flex-direction:column;gap:4px;
  position:sticky;top:0;align-self:flex-start;height:100vh;overflow-y:auto;
}
.admin-sidebar .logo{display:block;padding:0 10px;margin-bottom:26px;}
.admin-nav-link{
  display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:12px;
  color:var(--muted);font-size:14px;font-weight:600;transition:background .15s,color .15s;
}
.admin-nav-link svg{flex-shrink:0;opacity:.85;}
.admin-nav-link:hover{background:rgba(255,255,255,.04);color:var(--text);}
.admin-nav-link.active{background:rgba(229,52,42,.12);color:#fff;}
.admin-nav-link.active svg{color:var(--red);opacity:1;}
.admin-sidebar-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--border);}
.admin-main{flex:1;min-width:0;padding:36px 40px 60px;}
@media (max-width:860px){
  .admin-shell{flex-direction:column;}
  .admin-sidebar{width:100%;flex-direction:row;overflow-x:auto;padding:14px;align-items:center;position:static;height:auto;}
  .admin-sidebar .logo{margin-bottom:0;padding:0 10px 0 0;}
  .admin-sidebar-foot{margin-top:0;padding-top:0;border-top:none;margin-left:auto;}
}

/* ---- personal library (student dashboard) ---- */
.admin-nav-link .count{margin-left:auto;font-size:11px;color:var(--muted);}
.admin-nav-link.active .count{color:var(--red);}
.lib-hero{margin-bottom:44px;}
.lib-eyebrow{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.16em;display:block;margin-bottom:14px;}
.lib-hero h1{font-family:'Unbounded',sans-serif;font-weight:700;font-size:clamp(26px,3.4vw,38px);line-height:1.2;margin-bottom:14px;}
.lib-hero h1 em{font-style:normal;font-weight:500;color:var(--muted);}
.lib-hero p{color:var(--muted);font-size:14px;max-width:480px;line-height:1.6;}

.lib-section-head{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--border);padding-bottom:12px;margin:44px 0 18px;}
.lib-section-head:first-of-type{margin-top:0;}
.lib-section-head h2{font-family:'Unbounded',sans-serif;font-size:14px;font-weight:700;}
.lib-section-head .meta{font-size:11px;color:var(--muted);}

.lib-card{cursor:pointer;}
.lib-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;}
.lib-code{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);}
.lib-fmt{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;}
.lib-fmt-dot{width:5px;height:5px;border-radius:50%;background:var(--muted);}
.lib-fmt-dot.done{background:#4ade80;}
.lib-card-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:12px;border-top:1px solid var(--border);font-size:11px;color:var(--muted);}
.lib-card .arrow{transition:transform .15s ease;}
.lib-card:hover .arrow{transform:translateX(3px);color:var(--red);}
.lib-card.locked{opacity:.4;cursor:default;}

.lib-detail{
  position:fixed;inset:0;z-index:40;background:var(--bg);
  transform:translateY(100%);transition:transform .35s cubic-bezier(.2,.7,.2,1);overflow-y:auto;
}
.lib-detail.open{transform:translateY(0);}
.lib-detail-bar{
  position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;
  padding:18px 32px;border-bottom:1px solid var(--border);background:rgba(10,10,10,.9);backdrop-filter:blur(10px);
}
.lib-detail-inner{max-width:720px;margin:0 auto;padding:44px 32px 100px;}
.lib-detail-eyebrow{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin-bottom:14px;}
.lib-detail-title{font-family:'Unbounded',sans-serif;font-weight:700;font-size:clamp(24px,3vw,34px);line-height:1.2;margin-bottom:12px;}
.lib-detail-sub{color:var(--muted);font-size:14px;max-width:560px;line-height:1.6;margin-bottom:30px;}

.lib-player{
  position:relative;aspect-ratio:16/9;background:var(--card);border:1px solid var(--border);border-radius:20px;
  display:flex;align-items:center;justify-content:center;margin-bottom:28px;overflow:hidden;
}
.lib-player video, .lib-player img{width:100%;height:100%;object-fit:contain;}
.lib-player-wm{position:absolute;bottom:12px;right:14px;font-size:10px;color:var(--muted);font-family:'JetBrains Mono',monospace;opacity:.7;pointer-events:none;}
.lib-doc-link{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--muted);font-size:13px;}
.lib-doc-link:hover{color:var(--text);}

.lib-article{font-size:15px;line-height:1.8;color:var(--text);max-width:620px;}
.lib-article h3{font-family:'Unbounded',sans-serif;font-weight:600;font-size:17px;margin:32px 0 10px;}
.lib-article p{margin-bottom:14px;color:#ccc;}
.lib-article ul{margin:0 0 14px 20px;color:#ccc;}

.lib-locked-note{
  margin-top:44px;padding:16px 18px;border:1px solid var(--border);border-radius:14px;
  display:flex;gap:12px;align-items:flex-start;font-size:12px;color:var(--muted);line-height:1.6;background:var(--card);
}
.lib-watermark{
  position:fixed;inset:0;pointer-events:none;z-index:5;
  display:flex;flex-wrap:wrap;align-content:space-between;opacity:.02;overflow:hidden;
}
.lib-watermark span{font-family:'JetBrains Mono',monospace;font-size:12px;white-space:nowrap;color:#fff;transform:rotate(-28deg);margin:38px 28px;}
