.catalog-shell { max-width:1280px; margin:auto; padding:48px clamp(20px,4vw,48px) 80px; }
.topic-menu { display:flex; flex-wrap:wrap; gap:10px; padding:16px 0; border-bottom:1px solid var(--line); margin-bottom:28px; }
.author-card { border:1px solid var(--line); border-left:4px solid var(--green); border-radius:10px; background:var(--panel); padding:24px; margin:12px 0; }
.author-card .catalog-actions { margin-top:16px; }
.author-card > .button { margin:8px 8px 8px 0; }
.question-editor { max-width:900px; width:100%; box-sizing:border-box; }
.choice-option { display:flex!important; align-items:center; gap:12px; padding:10px 0; }
.choice-option input[type=radio] { width:20px; height:20px; flex:0 0 20px; accent-color:var(--green); }
.choice-option input[type=text] { flex:1; min-width:0; }
.choice-option .button { padding:10px 14px; }
.topic-prose { white-space:pre-wrap; overflow-wrap:anywhere; }
#topic-workspace #content-actions { margin-top:0; }
@media(max-width:650px) { .author-card {padding:16px;} .topic-menu .button { flex:1; } .choice-option {gap:6px;} .choice-option .button{padding:8px;} }
#teachers-dialog,#content-dialog { width:min(900px,calc(100% - 32px)); }
#content-body fieldset { margin:20px 0; padding:20px; display:grid; gap:14px; }
#content-body label { display:grid; gap:8px; }
#content-actions { margin-top:24px; }
#content-body .topic-answer { border-top:1px solid var(--line); padding-top:20px; }
.catalog-heading,.catalog-subheading { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:30px; }
.catalog-heading { position:relative; padding-top:16px; }
.catalog-heading:before { content:""; display:block; position:absolute; width:72px; height:48px; right:0; top:-20px; background:radial-gradient(circle,var(--green) 1.5px,transparent 2px) 0 0 / 12px 12px; opacity:.45; pointer-events:none; }
.catalog-heading h1 { font:400 clamp(28px,3vw,42px)/1.25 "Merriweather",Georgia,serif; margin:12px 0; overflow-wrap:anywhere; }
.catalog-heading p,.catalog-subheading p { color:var(--muted); margin:0; max-width:700px; }
.catalog-subheading { margin:52px 0 24px; padding-top:30px; border-top:1px solid var(--line); }
.catalog-subheading h2 { font:400 24px "Merriweather",Georgia,serif; margin:10px 0; }
.catalog-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr)); gap:22px; }
.catalog-card { position:relative; min-width:0; background:var(--panel); border:1px solid var(--line); border-top:3px solid var(--green); border-radius:4px 4px 12px 12px; padding:26px; display:flex; flex-direction:column; align-items:start; box-shadow:var(--shadow); }
.catalog-card:after { content:""; width:12px; height:12px; border:1px solid var(--green); position:absolute; right:22px; top:24px; transform:rotate(0); transition:transform .3s; }
.catalog-card:hover:after { transform:rotate(25deg); }
.catalog-card h3 { margin:16px 0 8px; font-size:20px; line-height:1.4; overflow-wrap:anywhere; padding-right:10px; }
.catalog-card p { color:var(--muted); margin:0 0 24px; overflow-wrap:anywhere; white-space:pre-line; }
.catalog-card .catalog-actions { margin-top:auto; }
.catalog-actions { display:flex; flex-wrap:wrap; gap:10px; }
.catalog-empty { grid-column:1/-1; padding:30px; color:var(--muted); background:var(--green-soft); border:1px dashed var(--line); border-radius:8px; }
.catalog-dialog { width:min(590px,calc(100% - 32px)); max-height:90dvh; background:var(--panel); color:var(--ink); border:1px solid var(--line); border-top:3px solid var(--green); border-radius:10px; padding:30px; box-shadow:0 24px 100px #0004; }
.catalog-dialog::backdrop { background:#101c27a6; backdrop-filter:blur(3px); }
.catalog-dialog h2 { font:400 25px/1.4 "Merriweather",Georgia,serif; margin:12px 24px 24px 0; }
.catalog-dialog p { overflow-wrap:anywhere; }
.dialog-close { position:absolute; right:12px; top:8px; width:36px; height:36px; border:0; color:var(--ink); background:transparent; font-size:26px; }
.form-hint { font-size:12px; color:var(--muted); margin:0; font-weight:400; }
.catalog-dialog textarea { resize:vertical; min-width:0; width:100%; font:inherit; padding:12px; background:var(--bg); color:var(--ink); border:1px solid var(--line); border-radius:5px; }
.catalog-dialog input { background:var(--bg); color:var(--ink); }
.catalog-dialog fieldset { border:1px solid var(--line); border-radius:5px; margin:0; padding:14px; min-width:0; }
.catalog-dialog legend { font-size:12px; font-weight:600; }
.topic-options { display:grid; gap:10px; margin-top:16px; }
.form-stack .check-row { display:flex; align-items:start; gap:10px; font-size:12px; font-weight:400; }
.check-row input { width:16px; height:16px; flex-shrink:0; margin-top:3px; accent-color:var(--green); }
.student-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr)); gap:18px; }
.student-card { min-width:0; background:var(--panel); border:1px solid var(--line); border-top:3px solid var(--green); border-radius:8px; padding:24px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:16px; }
.student-card h3 { margin:12px 0 4px; font:700 20px/1.35 "Merriweather",Georgia,serif; overflow-wrap:anywhere; }
.student-card p { margin:0; color:var(--muted); overflow-wrap:anywhere; }
.student-metrics,.student-detail-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.student-metrics span,.student-detail-summary div { display:grid; gap:3px; color:var(--muted); font-size:11px; text-transform:uppercase; }
.student-metrics strong,.student-detail-summary strong { color:var(--ink); font-size:18px; }
.student-activity { font-size:12px; margin-top:auto!important; }
.monitor-summary { min-width:100px; display:grid; gap:2px; text-align:right; color:var(--muted); font-size:12px; }
.monitor-summary strong { color:var(--ink); font:700 28px "Merriweather",Georgia,serif; }
.student-detail-summary { padding:20px 0; border-block:1px solid var(--line); margin:20px 0; }
.student-unit-list { display:grid; gap:8px; }
.student-unit-row { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 0; border-bottom:1px solid var(--line); }
.student-unit-row div { display:grid; gap:5px; min-width:0; }.student-unit-row strong { overflow-wrap:anywhere; }.student-unit-row > span { color:var(--muted); font-size:12px; text-align:right; }
@media(max-width:700px) { .catalog-heading { align-items:start; flex-direction:column; }.catalog-dialog { padding:24px 20px; }.catalog-card { padding:22px; }.user-nav { flex-wrap:wrap; gap:8px; justify-content:flex-end; } }
@media(prefers-reduced-motion:reduce) { .catalog-card:after { transition:none; } }
.learning-table { overflow:auto; margin:16px 0; }
.learning-table table { width:100%; border-collapse:collapse; font-size:13px; }
.learning-table th,.learning-table td { padding:10px; border:1px solid var(--line); text-align:left; }
.learning-table th { background:var(--green-soft); }
.learning-warning { color:var(--ink); border-left:3px solid #d6952a; padding-left:8px; }
.student-joined strong { color:var(--ink); }
.student-dialog { width:min(1050px,calc(100% - 32px)); }
.learning-questions .question-prompt { display:block; min-width:260px; max-width:480px; white-space:normal; }
.answer-tolerance { display:block; line-height:1.5; font-size:12px; color:var(--muted); margin-top:5px; }
.result-list small { display:block; margin-top:4px; }
.gradebook-table {width:100%;border-collapse:collapse;margin:1rem 0;}
.gradebook-table th,.gradebook-table td {padding:.8rem;text-align:left;border-bottom:1px solid var(--border,#889999);min-width:110px;}
.wide-dialog { width:min(980px,calc(100% - 32px)); }
.daily-challenge,.review-panel { margin-top:38px; padding:28px; border:1px solid var(--line); border-left:5px solid var(--green); border-radius:10px; background:linear-gradient(135deg,var(--panel),var(--green-soft)); box-shadow:var(--shadow); }
.daily-challenge h2,.review-panel h2 { margin:10px 0; font:700 24px/1.35 "Merriweather",Georgia,serif; }
.challenge-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:20px 0; }
.challenge-option { text-align:left; padding:14px; border:1px solid var(--line); border-radius:7px; background:var(--panel); color:var(--ink); font:inherit; }
.challenge-option:hover:not(:disabled) { border-color:var(--green); transform:translateY(-1px); }
.challenge-option.correct { border-color:var(--green); background:var(--green-soft); }
.challenge-option.incorrect { border-color:#c25454; background:#c2545415; }
.challenge-result { padding:14px; border-radius:7px; background:var(--panel); }
.daily-challenge { transition:padding .4s var(--ease-premium),margin .4s var(--ease-premium),background-color .3s ease; }
.daily-challenge.is-complete { padding:18px 22px; }
.daily-challenge-complete { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.daily-challenge-complete h2 { margin:5px 0 2px; font-size:19px; }
.daily-challenge-complete p { margin:0; color:var(--muted); font-size:12px; }
.challenge-complete-badge { display:grid; place-items:center; flex:0 0 42px; width:42px; height:42px; border-radius:50%; color:white; background:var(--green); font-size:22px; box-shadow:0 0 0 6px var(--green-soft); }
.challenge-details { margin-top:12px; padding-top:10px; border-top:1px solid var(--line); color:var(--muted); font-size:12px; }
.challenge-details summary { width:max-content; max-width:100%; color:var(--green-dark); font-weight:700; cursor:pointer; }
.challenge-details h3 { margin:14px 0 8px; color:var(--ink); font-size:15px; }
.challenge-details p { margin:6px 0; }
.review-meta { display:flex; flex-wrap:wrap; gap:10px; margin:14px 0; color:var(--muted); }
.review-chip { padding:6px 10px; border-radius:999px; background:var(--green-soft); border:1px solid var(--line); font-size:12px; }
.review-last-report { margin:18px 0; padding:18px; border:1px solid var(--line); border-radius:10px; background:var(--panel); }
.review-last-report h3,.review-report-dialog h3 { margin:0 0 12px; }
.review-report-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:14px 0 18px; }
.review-report-summary span { display:flex; flex-direction:column; gap:3px; padding:12px; border:1px solid var(--line); border-radius:9px; background:var(--green-soft); color:var(--muted); font-size:12px; }
.review-report-summary strong { color:var(--ink); font:700 20px/1.2 "Merriweather",Georgia,serif; }
.review-results { display:grid; gap:10px; padding:0; list-style:none; }
.review-result { display:grid; grid-template-columns:32px 1fr; gap:10px; padding:13px; border:1px solid var(--line); border-radius:9px; }
.review-result>span { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; font-weight:800; }
.review-result.is-correct>span { background:rgba(46,139,111,.18); color:var(--green); }
.review-result.is-incorrect>span { background:rgba(191,74,74,.16); color:#bf4a4a; }
.review-result p { margin:5px 0; }
.review-result small { color:var(--muted); }
.review-history-list { display:grid; gap:10px; margin:16px 0; }
.review-history-item { width:100%; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:14px 16px; border:1px solid var(--line); border-radius:10px; background:var(--panel); color:var(--ink); text-align:left; cursor:pointer; transition:border-color .18s ease,transform .18s ease,background .18s ease; }
.review-history-item:hover { transform:translateY(-1px); border-color:var(--green); background:var(--green-soft); }
.review-history-item span { display:grid; gap:4px; }
.review-history-item small { color:var(--muted); }
.review-history-item b { color:var(--green); font:700 20px/1 "Merriweather",Georgia,serif; }
#review-weekly-fields { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
#review-weekly-fields .form-hint { grid-column:1/-1; margin:0; }
@media (max-width:700px) { .review-report-summary { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:560px) { #review-weekly-fields { grid-template-columns:1fr; } #review-weekly-fields .form-hint { grid-column:auto; } }
.xp-panel { position:fixed; z-index:25; right:0; top:75px; bottom:0; width:310px; overflow:auto; padding:22px; border-left:1px solid var(--line); border-top:4px solid var(--green); background:var(--panel); color:var(--ink); box-shadow:-10px 12px 35px #0002; transition:transform .2s ease; }
body.signed-in main { transition:padding-right .2s ease; }
body.signed-in.xp-expanded main { padding-right:350px; }
.xp-panel-head { display:flex; justify-content:space-between; align-items:center; }
.xp-panel-head button { border:0; background:transparent; color:var(--muted); font-size:22px; cursor:pointer; }
.xp-total { font:900 30px "Merriweather",Georgia,serif; margin:12px 0 4px; }
.xp-progress { height:8px; overflow:hidden; border-radius:20px; background:var(--line); }.xp-progress span{display:block;height:100%;background:var(--green);}
.xp-stats { display:flex; justify-content:space-between; margin:12px 0 20px; color:var(--muted); font-size:12px; }
.xp-hint { color:var(--muted); font-size:12px; line-height:1.45; }
.leaderboard-tabs { display:grid; grid-template-columns:1fr 1fr; gap:4px; margin-top:18px; padding:4px; border-radius:8px; background:var(--green-soft); }
.leaderboard-tabs button { border:0; border-radius:6px; padding:9px; background:transparent; color:var(--muted); font-weight:800; cursor:pointer; }
.leaderboard-tabs button.active { background:var(--green); color:white; }.leaderboard-tabs button:disabled{opacity:.4;cursor:not-allowed}
.leaderboard { margin-top:16px; }.leaderboard h3{font-size:14px;margin:0 0 8px}.leaderboard ol{margin:0;padding:0;list-style:none}.leaderboard li{display:flex;justify-content:space-between;gap:8px;padding:9px 7px;border-bottom:1px solid var(--line);color:var(--muted)}.leaderboard li.current-user{background:var(--green-soft);color:var(--ink);border-radius:6px}.leaderboard li b{display:inline-grid;place-items:center;width:20px;height:20px;margin-right:4px;border-radius:50%;background:var(--line);font-size:11px}.leaderboard strong{color:var(--ink);white-space:nowrap}.leaderboard-empty{padding:14px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:13px}
.xp-panel-open { position:fixed; z-index:24; right:18px; bottom:18px; border:0; border-radius:999px; padding:13px 17px; background:var(--green); color:white; font-weight:800; box-shadow:var(--shadow); }
.xp-earned { display:inline-block; margin-left:12px; padding:5px 9px; border-radius:999px; background:var(--green); color:white; font-weight:800; font-size:12px; }
.input-with-suffix { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:10px; }
.input-with-suffix input { width:100%; }
@media(max-width:900px){body.signed-in.xp-expanded main{padding-right:0}.xp-panel{top:76px;right:10px;bottom:10px;width:calc(100vw - 20px);border:1px solid var(--line);border-top:4px solid var(--green);border-radius:10px}.challenge-options{grid-template-columns:1fr}}
.gradebook-table caption {text-align:left;font-weight:700;padding:.5rem 0;}

/* Fluid course workspace and non-overlapping progress rail. */
:root { --xp-panel-width:clamp(292px,24vw,344px); }
.catalog-shell { width:100%; max-width:1360px; padding:clamp(30px,4vw,52px) var(--page-gutter) 88px; }
.catalog-heading { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:24px clamp(24px,4vw,56px); }
.catalog-heading>div:first-child { min-width:0; }
.catalog-heading .catalog-actions { max-width:520px; justify-content:flex-end; }
.catalog-grid { grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr)); gap:clamp(14px,2vw,24px); }
.catalog-card { min-height:225px; overflow:hidden; transition:transform .3s var(--ease-premium),box-shadow .3s ease,border-color .25s ease; }
.catalog-card:before { content:""; position:absolute; inset:0; background:linear-gradient(115deg,transparent 25%,#ffffff0d 48%,transparent 72%); transform:translateX(-120%); transition:transform .7s var(--ease-premium); pointer-events:none; }
@media(hover:hover) and (pointer:fine) {
  .catalog-card:hover { transform:translateY(-5px); box-shadow:0 22px 54px #17212b18; }
  .catalog-card:hover:before { transform:translateX(120%); }
}
.daily-challenge,.review-panel { overflow:hidden; }
.challenge-option { transition:transform .22s var(--ease-premium),border-color .2s ease,background-color .2s ease; }
.xp-panel {
  top:var(--header-height); width:var(--xp-panel-width); padding:clamp(18px,2vw,26px);
  box-shadow:-18px 20px 50px #10182020; transition:transform .42s var(--ease-premium),opacity .25s ease;
}
body.signed-in.xp-expanded main { padding-right:calc(var(--xp-panel-width) + 24px); }
.xp-panel:not(.hidden) { animation:xp-rail-in .42s var(--ease-premium) both; }
@keyframes xp-rail-in { from{opacity:0;transform:translateX(28px)} to{opacity:1;transform:none} }
.xp-panel-open { transition:transform .3s var(--ease-premium),box-shadow .3s ease; }
.xp-stats { gap:8px; flex-wrap:wrap; }
.leaderboard li span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.catalog-dialog { width:min(620px,calc(100% - 32px)); }
@media(max-width:1240px) {
  body.signed-in.xp-expanded .catalog-heading { grid-template-columns:1fr; align-items:start; }
  body.signed-in.xp-expanded .catalog-heading .catalog-actions { justify-content:flex-start; max-width:none; }
}
@media(max-width:1020px) {
  body.signed-in.xp-expanded main { padding-right:0; }
  .xp-panel { top:calc(var(--header-height) + 8px); right:10px; bottom:10px; width:min(340px,calc(100vw - 20px)); border:1px solid var(--line); border-top:4px solid var(--green); border-radius:12px; }
}
@media(max-width:760px) {
  .catalog-shell { padding:28px 16px 64px; }
  .catalog-heading { grid-template-columns:1fr; align-items:start; gap:18px; }
  .catalog-heading .catalog-actions { width:100%; max-width:none; justify-content:flex-start; }
  .catalog-heading .catalog-actions .button { flex:1 1 145px; }
  .catalog-card { min-height:0; padding:21px; }
  .daily-challenge,.review-panel { margin-top:26px; padding:22px 18px; }
  .challenge-options { grid-template-columns:1fr; }
  .daily-challenge.is-complete { padding:17px 18px; }
}
@media(max-width:480px) {
  .catalog-heading .catalog-actions { display:grid; grid-template-columns:1fr 1fr; }
  .catalog-heading .catalog-actions .button:last-child:nth-child(odd) { grid-column:1/-1; }
  .catalog-dialog { width:calc(100% - 20px); padding:24px 18px; }
  .xp-panel { width:calc(100vw - 12px); right:6px; bottom:6px; }
}
@media(prefers-reduced-motion:reduce) { .xp-panel:not(.hidden),.catalog-card { animation:none; transform:none; } }
.xp-staff-view,.review-resume { border:1px solid color-mix(in srgb,var(--green) 35%,transparent); background:color-mix(in srgb,var(--green) 9%,transparent); border-radius:8px; padding:14px; }
.xp-staff-view p,.review-resume { margin:6px 0 0; line-height:1.55; }
