:root{
  --ink:#202430;--muted:#707786;--line:#e5ddd3;--pink:#ff4f9a;
  --shadow:0 20px 50px rgba(36,32,28,.10);--soft:0 10px 22px rgba(36,32,28,.07)
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;color-scheme:light}
body{
  margin:0;font-family:ui-rounded,"Avenir Next","Segoe UI",system-ui,sans-serif;color:var(--ink);
  background:
    radial-gradient(circle at 12% 7%,rgba(255,201,75,.20),transparent 19%),
    radial-gradient(circle at 88% 11%,rgba(88,183,255,.17),transparent 22%),
    linear-gradient(180deg,#fffdf9,#fffbf7)
}
button,textarea,input{font:inherit;color:var(--ink)}
.page{max-width:1240px;margin:auto;padding:28px 22px 60px}
.hero{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:18px;margin-bottom:24px}
.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.16em;font-weight:900;color:var(--muted)}
h1{margin:4px 0 0;font-size:clamp(34px,5vw,58px);line-height:.96}
.welcome{
  text-align:center;font-size:clamp(26px,3.1vw,42px);font-weight:900;color:var(--pink);
  transform:rotate(-2deg);font-family:"Comic Sans MS","Marker Felt","Trebuchet MS",cursive;
  text-shadow:0 3px 0 rgba(255,79,154,.12);white-space:nowrap
}
.hero-right{text-align:right;color:var(--muted);font-size:13px;padding-bottom:6px}
.layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:24px;align-items:start}
.sidebar{position:sticky;top:18px}
.panel{
  background:rgba(255,255,255,.92);backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:24px;box-shadow:var(--soft)
}
.mission{padding:16px}
.mission h2{margin:0 0 12px;font-size:16px}
.mission button{
  width:100%;border:0;background:transparent;text-align:left;padding:10px 11px;border-radius:14px;
  display:flex;align-items:center;gap:10px;cursor:pointer;transition:.14s ease
}
.mission button:hover,.mission button.active{background:#f7f1e9}
.mission button.active{font-weight:900;transform:translateX(2px)}
.dot{width:13px;height:13px;border-radius:50%;box-shadow:inset 0 0 0 2px rgba(255,255,255,.85);flex:none}
.notes{margin-top:14px;padding:14px}
.notes-title{
  margin:0 0 8px;font-size:31px;line-height:1;font-weight:900;color:var(--pink);
  font-family:"Comic Sans MS","Marker Felt","Trebuchet MS",cursive;transform:rotate(-1deg)
}
.notes p{margin:0 0 10px;font-size:12px;color:var(--muted);line-height:1.4}
.notes textarea#teacherNotes{
  width:100%;min-height:200px;resize:vertical;background:#fff3f8;color:#202430;
  border:2px solid #f2bad3;border-radius:16px;padding:12px 13px;outline:none;line-height:1.45
}
.notes textarea#teacherNotes:focus{border-color:var(--pink);box-shadow:0 0 0 3px rgba(255,79,154,.11)}
.save-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:10px}
.save-row button{
  border:0;background:#202430;color:white;padding:10px 12px;border-radius:12px;
  font-size:12px;font-weight:900;cursor:pointer
}
#syncState{font-size:11px;color:#557062;line-height:1.25}
.deck{position:relative;padding:0 14px 18px 0}
.deck:before,.deck:after{content:"";position:absolute;inset:0;border-radius:30px;border:1px solid var(--line);z-index:-2}
.deck:before{transform:translate(8px,8px);background:#fffaf3}
.deck:after{transform:translate(16px,16px);background:#fff5eb;z-index:-3}
.card{
  position:relative;min-height:700px;padding:22px;border-radius:30px;background:var(--card-bg);
  border:1px solid #ded4c7;box-shadow:var(--shadow);overflow:hidden
}
.card:after{
  content:"";position:absolute;right:-70px;top:-75px;width:230px;height:230px;border-radius:50%;
  background:var(--blob);pointer-events:none
}
.card-top{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;position:relative;z-index:1}
.kicker{font-size:12px;text-transform:uppercase;letter-spacing:.15em;font-weight:900;color:var(--accent)}
.concept-title{margin:4px 0;font-size:clamp(28px,4vw,44px);line-height:1.02;text-wrap:balance}
.sub{margin:0;color:var(--muted);font-size:14px}
.top-tools{display:flex;align-items:center;gap:10px;flex:none}
.helpbox{
  width:52px;height:52px;border:0;border-radius:12px;background:var(--accent);color:white;
  font-weight:1000;font-size:29px;cursor:pointer;
  box-shadow:inset 0 -5px rgba(0,0,0,.14),0 7px 0 rgba(32,36,48,.08);transform:rotate(1deg)
}
.visual{margin:22px 0 16px;border-radius:22px;background:#fff;border:1px solid #dcd3ca;padding:10px;overflow:hidden}
.visual svg{display:block;width:100%;height:auto;max-height:260px}
.question{
  background:color-mix(in srgb,var(--accent) 9%,white);color:#202430;
  border:2px solid color-mix(in srgb,var(--accent) 30%,#d7cec4);
  border-radius:20px;padding:18px;position:relative;z-index:1;margin-top:16px
}
.question h3{margin:0 0 12px;font-size:23px;line-height:1.28;color:#202430;text-wrap:pretty}
.choices{display:grid;gap:9px}
.choice{
  border:2px solid color-mix(in srgb,var(--accent) 15%,#d5c9bc);
  background:#fff;color:#202430;border-radius:14px;padding:12px 14px;text-align:left;cursor:pointer;
  font-weight:730;line-height:1.35;transition:.14s ease
}
.choice:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 4%,white)}
.choice.selected{
  border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,white);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)
}
.feedback{margin-top:12px;border-radius:14px;padding:12px 13px;background:#fff;color:#334054;border-left:4px solid var(--accent);display:none;line-height:1.45}
.feedback.show{display:block}
.feedback strong{display:block;margin-bottom:3px;color:#202430}
.concept-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;margin-top:16px}
.concept-nav button{border:1px solid #cfc5bb;border-radius:13px;padding:11px 14px;font-weight:900;cursor:pointer}
.prev-concept{justify-self:start;background:#eee8ff;color:#443765;border-color:#cfc3f2!important}
.prev-concept:hover{background:#e4dcff}
.next-concept{justify-self:end;background:var(--accent);color:white;border-color:transparent!important}
.next-concept:hover{filter:brightness(.97)}
.counter{font-size:12px;color:var(--muted);font-weight:900;text-align:center;white-space:nowrap}
dialog{border:2px solid #2d3340;padding:0;border-radius:24px;background:#fff8e8;color:#202430;box-shadow:0 30px 100px rgba(32,36,48,.25);max-width:640px;width:calc(100% - 36px)}
dialog::backdrop{background:rgba(32,36,48,.38);backdrop-filter:blur(3px)}
.modal{padding:24px;background:#fff8e8;color:#202430}
.modal-head{display:flex;justify-content:space-between;gap:12px;align-items:center}
.modal h3{margin:0;font-size:28px;color:#202430}
.close{border:0;background:#202430;color:white;width:38px;height:38px;border-radius:50%;cursor:pointer;font-size:20px}
.modal p{line-height:1.6;color:#344054;background:white;padding:14px 16px;border-radius:14px;border:1px solid #dfd4c6}
.mini-defs{display:grid;gap:8px;margin-top:14px}
.mini-defs button{border:2px solid #d1a42c;background:#ffe28b;color:#202430;border-radius:12px;padding:10px 12px;text-align:left;cursor:pointer;font-weight:900}
.definition{display:none;margin:7px 0 0 10px;color:#354052;background:white;border-left:4px solid var(--pink);border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.45}
.definition.show{display:block}
.source{margin-top:24px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.7);color:var(--muted);font-size:11px;line-height:1.45}
@media(max-width:860px){
  .hero{grid-template-columns:1fr;align-items:start}.welcome{text-align:left;white-space:normal}.hero-right{text-align:left}
  .layout{grid-template-columns:1fr}.sidebar{position:static}.card{min-height:auto}
  .card-top{gap:10px}.concept-nav{gap:8px}.concept-nav button{padding:10px;font-size:12px}
}

/* ── Atom Lab additions ───────────────────────────────────────────── */
.record-bar{display:inline-block;margin-bottom:14px;padding:7px 14px;border-radius:999px;background:#ffe4e4;color:#b42318;font-weight:900;font-size:13px}
.way-out{display:inline-block;margin-bottom:8px;font-size:13px;font-weight:900;color:var(--muted);text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:5px 12px;background:#fff}
.way-out:hover{color:var(--ink);border-color:#cfc5bb}
/* teacher notes stay hidden until T */
.notes{display:none}
body.teacher .notes{display:block}
.t-hint{display:block;margin-top:6px;opacity:.75}
/* the flip arrows, above the box: left red, right blue */
.flip{display:flex;align-items:center;justify-content:center;gap:18px;margin:18px 0 0;position:relative;z-index:1}
.arrow{width:64px;height:52px;border:0;border-radius:16px;color:#fff;font-size:30px;font-weight:1000;cursor:pointer;
  box-shadow:inset 0 -5px rgba(0,0,0,.16),0 6px 0 rgba(32,36,48,.08);transition:.12s ease}
.arrow.left{background:#e5484d}
.arrow.right{background:#2f6fed}
.arrow:hover{transform:translateY(-1px)}
.arrow:disabled{opacity:.28;cursor:default;transform:none}
.flip .counter{font-size:16px;min-width:64px}
.visual{margin-top:14px}
/* reading cards: one sentence per line, large */
.question.read .line{margin:0 0 10px;font-size:24px;line-height:1.38;font-weight:650}
.question.read .line:last-child{margin-bottom:0}
.question.read .line.big{font-size:40px;font-weight:900;text-align:center;letter-spacing:.02em}
.story{margin:0 0 12px;padding:12px 14px;border-radius:12px;background:#fff;border:1px dashed color-mix(in srgb,var(--accent) 45%,#d7cec4);line-height:1.45}
.pre{margin:0 0 10px;font-size:14px;color:#6b4a14;background:#fff6dc;border-radius:10px;padding:8px 11px}
/* typed answers */
.typed{display:flex;gap:10px}
.typed input{flex:1;min-width:0;font:inherit;font-size:24px;font-weight:800;padding:12px 14px;border-radius:14px;
  border:2px solid color-mix(in srgb,var(--accent) 30%,#d5c9bc);background:#fff;color:#202430;outline:none}
.typed input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
.typed button,.reveal{border:0;border-radius:14px;padding:0 20px;background:var(--accent);color:#fff;font-weight:900;font-size:18px;cursor:pointer}
.reveal{padding:12px 18px}
.answer{margin:0;padding:12px 14px;background:#fff;border-radius:12px;line-height:1.45;font-weight:700}
.mark{display:flex;gap:10px;margin-top:10px}
.mark button{border:0;border-radius:12px;padding:10px 14px;font-weight:900;cursor:pointer}
.mark .yes{background:#d9f5e6;color:#14532d}.mark .no{background:#ffe1e1;color:#8a1c1c}
.feedback.good{border-left-color:#2fa86a}
.feedback.bad{border-left-color:#e5484d}
.feedback.good strong{color:#1f7a4c}.feedback.bad strong{color:#b42318}
.concept-nav button:disabled{opacity:.4;cursor:default}
.notes .save-row+.save-row button{background:#fff;color:#202430;border:1px solid #cfc5bb}
.record{width:100%;min-height:180px;margin-top:10px;font:12px/1.4 ui-monospace,Menlo,monospace;border-radius:12px;border:1px solid #d6cec4;padding:10px}
@media(max-width:860px){.question.read .line{font-size:20px}.question.read .line.big{font-size:32px}.typed input{font-size:20px}}

/* animations */
.visual.scene{position:relative;padding:10px}
.scene-host canvas{display:block;margin:0 auto;border-radius:14px}
.replay{position:absolute;right:14px;bottom:14px;width:40px;height:40px;border:0;border-radius:50%;background:#202430;color:#fff;font-size:20px;font-weight:900;cursor:pointer;opacity:.8}
.replay:hover{opacity:1}
.flag{color:#e5484d;font-size:18px}
.mark-btn{width:100%;margin-top:10px;border:2px solid #f2bad3;background:#fff;color:#b42318;border-radius:12px;padding:9px 12px;font-weight:900;cursor:pointer}
.notes-link{display:block;margin-top:10px;font-size:12px;font-weight:900;color:#2f6fed;text-decoration:none}
#syncState.bad{font-weight:900}
