:root{--bg:#f3f7fb;--panel:#fff;--panel2:#f8fafc;--text:#152033;--muted:#68758a;--line:#d9e2ec;--blue:#2459d3;--blue2:#173d9e;--soft:#edf4ff;--green:#087f5b;--amber:#9a5a00;--red:#c53030;--shadow:0 14px 38px rgba(15,23,42,.09);--radius:20px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Calibri,"Segoe UI",Arial,sans-serif;line-height:1.55}body.dark{--bg:#0e1728;--panel:#172133;--panel2:#202c3f;--text:#eef4ff;--muted:#aab7ca;--line:#344258;--soft:#1d3154;--blue:#83afff;--blue2:#a9c7ff;--green:#63d8b6;--amber:#ffc46b;--red:#ff9292;--shadow:0 16px 42px rgba(0,0,0,.32)}button,select{font:inherit}.hidden{display:none!important}.skip{position:fixed;left:-9999px;top:8px;z-index:999;background:#fff;padding:10px}.skip:focus{left:8px}.student-header{height:68px;position:sticky;top:0;z-index:50;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:9px clamp(14px,3vw,34px)}.student-brand{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none}.brand-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#000;color:#fff;font-weight:900}.student-brand strong,.student-brand small{display:block}.student-brand strong{font-size:19px}.student-brand small{font-size:11px;color:var(--muted)}.header-actions{display:flex;align-items:center;gap:9px}.small-link{color:var(--blue);text-decoration:none;font-weight:800;font-size:13px}.icon-btn,.btn{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:12px;font-weight:800;cursor:pointer}.icon-btn{width:40px;height:40px;display:grid;place-items:center;font-size:20px}.btn{padding:10px 14px}.btn:hover,.icon-btn:hover{border-color:var(--blue);background:var(--soft)}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.quiet{background:var(--panel2)}main{width:min(1120px,calc(100% - 28px));margin:0 auto;padding:26px 0 50px}.class-intro{text-align:center;max-width:760px;margin:10px auto 24px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--blue);font-size:12px;font-weight:900}.class-intro h1{font-size:clamp(34px,6vw,58px);line-height:1.04;margin:8px 0}.class-section{margin:26px 0}.class-section-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.class-section-head h2{margin:0;font-size:21px}.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.class-card{position:relative;text-align:left;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:18px;padding:18px;cursor:pointer;box-shadow:0 6px 18px rgba(15,23,42,.04);min-height:164px;transition:transform .15s,border .15s,box-shadow .15s}.class-card:hover{transform:translateY(-2px);border-color:var(--blue);box-shadow:var(--shadow)}.class-card.recommended{border:2px solid var(--blue);background:linear-gradient(180deg,var(--soft),var(--panel))}.recommend-label{position:absolute;right:12px;top:12px;background:var(--blue);color:#fff;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:900}.class-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:color-mix(in srgb,var(--card-accent,#2459d3) 12%,var(--panel));color:var(--card-accent,#2459d3);margin:0 0 13px;transition:background .15s,color .15s}.class-icon svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.class-card:hover .class-icon{background:var(--card-accent,#2459d3);color:#fff}.class-card>strong,.class-card>.class-description,.class-card>small{display:block}.class-card>strong{font-size:18px}.class-card>.class-description{color:var(--muted);font-size:12px;margin-top:5px}.class-card>small{margin-top:12px;color:var(--card-accent,var(--blue));font-weight:900}.student-toolbar{display:grid;grid-template-columns:auto minmax(280px,1fr) auto;gap:10px;align-items:end;margin-bottom:14px}.topic-select-wrap span{display:block;font-size:11px;font-weight:900;color:var(--muted);margin:0 0 4px 3px}.topic-select-wrap select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--text)}.topic-nav-buttons{display:flex;gap:6px}.student-hero{background:linear-gradient(135deg,#10224d,#2861d0);color:#fff;border-radius:24px;padding:clamp(22px,4vw,36px);box-shadow:var(--shadow)}.student-hero .hero-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.student-hero h1{font-size:clamp(24px,3.5vw,36px);line-height:1.12;margin:7px 0 9px}.student-hero p{margin:0;opacity:.88}.student-badges{display:flex;flex-wrap:wrap;gap:7px;margin-top:15px}.student-badge{display:inline-flex;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.13);border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}.topic-progress{min-width:190px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);border-radius:16px;padding:13px}.topic-progress strong,.topic-progress span{display:block}.topic-progress strong{font-size:23px}.topic-progress span{font-size:11px;opacity:.8}.progress-track{height:8px;background:rgba(255,255,255,.2);border-radius:999px;overflow:hidden;margin-top:9px}.progress-track i{display:block;height:100%;background:#7ff0ca;width:0}.learning-tabs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.learning-tab{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:17px;padding:13px 16px;display:grid;grid-template-columns:36px 1fr;grid-template-rows:auto auto;text-align:left;column-gap:11px;cursor:pointer}.learning-tab>span{grid-row:1/3;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--panel2);color:var(--muted);font-weight:900}.learning-tab strong{font-size:16px}.learning-tab small{color:var(--muted)}.learning-tab.active{border-color:var(--blue);background:var(--soft)}.learning-tab.active>span{background:var(--blue);color:#fff}.problem-area{background:var(--panel);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden}.problem-status{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:13px 18px;background:var(--panel2);border-bottom:1px solid var(--line)}.problem-status strong{display:block}.problem-status small{display:block;color:var(--muted)}.difficulty-chip{display:inline-flex;border-radius:999px;background:var(--soft);color:var(--blue);padding:5px 9px;font-size:11px;font-weight:900}.problem-card{padding:clamp(18px,4vw,34px)}.problem-question-label{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--blue);font-weight:900}.problem-question{font-size:clamp(15px,2vw,18px);line-height:1.65;margin:10px 0 20px;overflow-wrap:anywhere}.problem-question mjx-container,.solution-body mjx-container,.hint-body mjx-container{max-width:100%;overflow-x:auto;overflow-y:hidden;padding:2px 0}.hint-box,.solution-box{border:1px solid var(--line);border-radius:14px;margin-top:10px;overflow:hidden}.hint-box summary,.solution-box summary{cursor:pointer;padding:12px 14px;font-weight:900}.hint-box summary{color:var(--amber)}.solution-box summary{color:var(--blue)}.hint-body,.solution-body{border-top:1px solid var(--line);padding:14px;background:var(--panel2)}.solution-body ol{padding-left:22px}.solution-body li{margin-bottom:8px}.problem-actions{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.problem-actions-left,.problem-actions-right{display:flex;gap:8px;flex-wrap:wrap}.status-btn.active.mastered{background:var(--green);border-color:var(--green);color:#fff}.status-btn.active.review{background:var(--amber);border-color:var(--amber);color:#fff}.problem-dots{display:flex;gap:7px;justify-content:center;padding:0 20px 18px}.problem-dot{width:10px;height:10px;border-radius:50%;border:0;background:var(--line);cursor:pointer;padding:0}.problem-dot.active{background:var(--blue);transform:scale(1.25)}.problem-dot.done{background:var(--green)}.topic-links{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.topic-links.single-card{grid-template-columns:1fr}.topic-link-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:16px}.topic-link-card h3{margin:0 0 9px;font-size:15px;display:flex;align-items:center;gap:8px}.topic-card-icon{width:28px;height:28px;border-radius:9px;display:inline-grid;place-items:center;background:var(--soft);color:var(--blue);font-size:17px;font-weight:900}.topic-chip-row{display:flex;flex-wrap:wrap;gap:7px}.topic-chip{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:999px;padding:7px 10px;font-weight:800;font-size:12px;cursor:pointer}.topic-chip:hover{border-color:var(--blue);background:var(--soft)}.empty{padding:34px;text-align:center;color:var(--muted)}.toast{position:fixed;right:18px;bottom:18px;z-index:200;background:#111827;color:#fff;padding:10px 14px;border-radius:11px;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}@media(max-width:760px){.student-toolbar{grid-template-columns:1fr auto}.student-toolbar>.btn{grid-column:1/3;justify-self:start}.student-hero .hero-top{display:block}.topic-progress{margin-top:18px}.topic-links{grid-template-columns:1fr}.problem-actions{display:block}.problem-actions-right{margin-top:10px}.header-actions .small-link{display:none}}@media(max-width:520px){main{width:min(100% - 18px,1120px);padding-top:16px}.class-grid{grid-template-columns:1fr 1fr}.class-card{min-height:150px;padding:14px}.learning-tab{padding:11px}.student-toolbar{grid-template-columns:1fr auto}.problem-status{align-items:flex-start}.problem-actions-left,.problem-actions-right{display:grid;grid-template-columns:1fr 1fr}.problem-actions .btn{width:100%}}@media(max-width:390px){.class-grid{grid-template-columns:1fr}.learning-tab small{display:none}}

.muted{color:var(--muted)}button:disabled{opacity:.45;cursor:not-allowed}

/* v15 reviewed Topics 1-50 */
.student-goal{max-width:760px;margin:8px 0 12px;color:#e5edff;line-height:1.45;font-size:14px}
.count-objects{display:inline-block;letter-spacing:.14em;white-space:normal;line-height:1.8;font-family:Arial,sans-serif}
.problem-question .count-objects,.solution-body .count-objects{font-size:1.08em}


.source-solution-content{display:grid;gap:10px}.source-solution-title{font-size:12px;font-weight:900;color:var(--blue);text-transform:uppercase;letter-spacing:.06em}.source-solution-content .solution-steps{margin:0;padding-left:24px}.source-solution-content .solution-steps li{margin:0 0 9px;padding-left:2px;line-height:1.55}.source-solution-content p:first-child{margin-top:0}.source-solution-content p:last-child{margin-bottom:0}.source-generated-steps>li>p{display:inline;margin:0}.source-generated-steps>li>.table-wrap{margin-top:8px}.source-final-step{margin-top:8px!important;padding:10px 12px!important;border-radius:10px;background:var(--soft);list-style-position:inside}.source-final-step>b{color:var(--blue)}.source-solution-empty{color:var(--muted);font-style:italic}

/* v44 Student on-page reference materials */
.learning-tabs {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.student-reference-panel {
  padding: clamp(18px, 3vw, 28px);
}
.student-reference-intro {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: flex-start;
  margin-bottom: 18px;
}
.student-reference-intro h2 {
  margin: 4px 0 5px;
  font-size: clamp(22px, 3vw, 30px);
}
.student-reference-intro p {
  margin: 0;
  color: var(--muted);
  max-width: 760px;
}
.student-reference-total {
  min-width: 52px;
  height: 52px;
  padding: 0 12px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  background: var(--soft);
  color: var(--blue);
  font-size: 20px;
  font-weight: 900;
}
.student-reference-filters {
  display: grid;
  grid-template-columns: minmax(180px, 1.35fr) repeat(3, minmax(145px, 1fr));
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--panel2);
}
.student-reference-filters label {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.student-reference-filters input,
.student-reference-filters select {
  width: 100%;
  margin-top: 4px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--panel);
  color: var(--text);
  font: inherit;
}
.student-reference-count {
  margin: 13px 2px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.student-reference-grid {
  display: grid;
  gap: 14px;
}
.student-reference-card {
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: clamp(16px, 2.5vw, 24px);
  background: var(--panel);
}
.student-reference-head {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: flex-start;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}
.student-reference-head strong,
.student-reference-number {
  display: block;
}
.student-reference-number {
  color: var(--blue);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .07em;
  text-transform: uppercase;
  margin-bottom: 3px;
}
.student-reference-badges {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
}
.reference-badge {
  border-radius: 999px;
  padding: 5px 8px;
  background: var(--panel2);
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
}
.reference-badge.primary,
.reference-badge.selected {
  background: var(--soft);
  color: var(--blue);
}
.reference-badge.related {
  color: var(--green);
}
.student-reference-question {
  margin: 18px 0;
  font-size: clamp(15px, 2vw, 18px);
  line-height: 1.65;
  overflow-wrap: anywhere;
}
.student-reference-question mjx-container {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
}
.student-reference-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 14px;
}
.student-reference-more {
  display: flex;
  justify-content: center;
  padding-top: 18px;
}
@media (max-width: 820px) {
  .student-reference-filters {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 620px) {
  .learning-tabs {
    grid-template-columns: 1fr;
  }
  .student-reference-intro,
  .student-reference-head {
    display: block;
  }
  .student-reference-total {
    margin-top: 12px;
    width: fit-content;
  }
  .student-reference-badges {
    justify-content: flex-start;
    margin-top: 10px;
  }
  .student-reference-filters {
    grid-template-columns: 1fr;
  }
}

/* v48 Student landing and topic search */
.student-landing-search {
  width: min(760px, 100%);
  margin: 0 auto 20px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--panel);
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.04);
}
.student-landing-search > label,
.topic-search-wrap > span {
  display: block;
  margin: 0 0 6px 3px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.student-search-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
}
.student-search-row input,
.topic-search-wrap input {
  width: 100%;
  min-width: 0;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel2);
  color: var(--text);
  outline: none;
}
.student-search-row input:focus,
.topic-search-wrap input:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--blue) 14%, transparent);
}
.student-search-status {
  min-height: 18px;
  margin: 6px 3px 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.student-search-results {
  width: min(920px, 100%);
  margin: 0 auto 24px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--panel);
}
.student-search-results-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin-bottom: 10px;
}
.student-search-results-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.student-search-result-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 8px;
}
.student-search-result {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 2px 9px;
  align-items: start;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--panel2);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}
.student-search-result:hover,
.student-search-result:focus-visible {
  border-color: var(--blue);
  background: var(--soft);
}
.student-search-result > span {
  grid-row: 1 / 3;
  color: var(--blue);
  font-size: 11px;
  font-weight: 900;
}
.student-search-result > strong {
  overflow: hidden;
  font-size: 13px;
  line-height: 1.25;
  text-overflow: ellipsis;
}
.student-search-result > small {
  overflow: hidden;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topic-picker-wrap {
  display: grid;
  grid-template-columns: minmax(180px, 0.7fr) minmax(280px, 1.3fr);
  gap: 8px;
  align-items: end;
  min-width: 0;
}
.topic-search-wrap,
.topic-select-wrap {
  min-width: 0;
}
.student-toolbar {
  grid-template-columns: auto minmax(0, 1fr) auto;
}
@media (max-width: 860px) {
  .topic-picker-wrap {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 760px) {
  .student-toolbar {
    grid-template-columns: 1fr auto;
  }
  .student-toolbar > .btn {
    grid-column: 1 / 3;
  }
  .topic-picker-wrap {
    grid-column: 1 / 2;
  }
}
@media (max-width: 520px) {
  .student-search-row {
    grid-template-columns: 1fr;
  }
  .student-search-row .btn {
    justify-self: start;
  }
  .student-search-result-grid {
    grid-template-columns: 1fr;
  }
}
