@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght,SOFT,WONK@9..144,500,20,1;9..144,600,20,1&display=swap');

:root{--ink:#193633;--muted:#536b68;--paper:#f8f7f1;--teal:#123b39;--lime:#d7eea3;--line:#dbe4dc;--serif:Fraunces,Georgia,serif;--sans:'DM Sans',system-ui,sans-serif}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--sans)}
a{color:inherit}
img{max-width:100%;display:block}
:focus-visible{outline:3px solid #7cad41;outline-offset:4px}
.shell{width:min(100% - 56px,1240px);margin-inline:auto}
.site-header{position:relative;z-index:5;background:var(--paper);border-bottom:1px solid var(--line)}
.nav{min-height:84px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.wordmark{display:inline-flex;align-items:center;gap:11px;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:-.03em}
.mark{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--teal);color:var(--lime);font:600 24px var(--serif)}
.nav nav{display:flex;align-items:center;gap:34px}
.nav nav a{font-size:14px;font-weight:700;text-decoration:none}
.nav nav a:hover,.text-link:hover,.footer-inner a:hover{text-decoration:underline;text-underline-offset:5px}
.hero{display:grid;grid-template-columns:minmax(0,1.13fr) minmax(300px,.87fr);align-items:center;gap:clamp(40px,6vw,100px);padding-block:95px 112px}
.hero-copy{padding-block:24px}
.eyebrow{margin:0 0 26px;color:#4b746e;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.dot{display:inline-block;width:9px;height:9px;margin-right:9px;border-radius:50%;background:#7cac42}
h1,h2,h3,p{margin-top:0}
.hero h1{max-width:720px;margin:0 0 28px;font:600 clamp(3.6rem,6.2vw,6.6rem)/.98 var(--serif);letter-spacing:-.055em}
em{font-style:normal;color:#558264}
.lead{max-width:540px;margin-bottom:32px;color:#3e5652;font-size:clamp(19px,2vw,23px);line-height:1.5}
.hero-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.button{display:inline-flex;align-items:center;justify-content:space-between;gap:28px;min-height:54px;padding:14px 19px;border-radius:7px;font-size:14px;font-weight:700;text-decoration:none;transition:transform .2s,background .2s}
.button:hover{transform:translateY(-2px)}
.button.primary{background:var(--teal);color:white}
.button.primary:hover{background:#1e5550}
.button.secondary{border:1px solid #9eb6ae;background:transparent;color:var(--teal)}
.button.secondary:hover{background:#edf3ea}
.text-link{font-size:14px;font-weight:700;text-decoration:none}
.hero-note{display:flex;gap:16px;align-items:start;max-width:460px;margin-top:76px;color:#6d7c73;font-size:13px;line-height:1.45}
.small-line{flex:none;width:31px;height:1px;margin-top:9px;background:#8ca99a}
.portrait-wrap{position:relative}
.portrait-frame{padding:18px;background:#e5e8d8;border-radius:46% 46% 5px 5px;overflow:hidden}
.portrait-frame img{width:100%;aspect-ratio:540/535;object-fit:cover;object-position:center;border-radius:46% 46% 3px 3px;filter:saturate(.85)}
.portrait-caption{display:flex;justify-content:space-around;gap:4px;margin-top:17px;color:#607672;font:500 13px var(--serif);font-style:italic}
.spaces-section{background:#e9f0e7;padding-block:96px 114px}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:34px}
.section-heading .eyebrow{margin-bottom:10px}
.section-heading h2,.about-copy h2,.contact-inner h2{margin:0;font:600 clamp(2.7rem,4.5vw,4.5rem)/1.05 var(--serif);letter-spacing:-.045em}
.section-heading>p{max-width:390px;margin-bottom:7px;color:#516963;font-size:17px}
.space-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.space-card{display:flex;flex-direction:column;min-height:385px;padding:30px;border:1px solid rgba(20,55,50,.1);border-radius:10px;text-decoration:none;transition:transform .22s,box-shadow .22s;box-shadow:0 8px 24px rgba(28,54,45,.045)}
.space-card:hover{transform:translateY(-6px);box-shadow:0 18px 34px rgba(28,54,45,.12)}
.space-card.biology{background:#f9f9f2}
.space-card.emmett{background:#e6eeec}
.space-card.chinese{background:#f7efe7}
.space-number{font-size:11px;font-weight:700;letter-spacing:.13em;color:#59716e}
.space-icon{display:grid;place-items:center;width:55px;height:55px;margin-top:42px;border-radius:50%;background:#dae8d3;color:#2d6251;font:600 27px var(--serif)}
.emmett .space-icon{background:#cce4df}
.chinese .space-icon{background:#ebdec8}
.space-card h3{margin:20px 0 9px;font:600 30px/1.1 var(--serif);letter-spacing:-.025em}
.space-card p{max-width:320px;margin-bottom:24px;color:#556a65;font-size:15px}
.card-action{display:flex;justify-content:space-between;gap:16px;margin-top:auto;padding-top:15px;border-top:1px solid #cddbd0;font-size:13px;font-weight:700}
.about-section{display:grid;grid-template-columns:1fr 2fr;gap:40px;padding-block:115px 125px}
.about-label{display:flex;flex-direction:column;justify-content:space-between}
.about-symbol{color:#bdd6aa;font:500 160px/1 var(--serif)}
.about-copy h2{margin-bottom:31px}
.about-copy p{max-width:690px;color:#4e645f;font-size:19px;line-height:1.7}
.contact-section{padding-block:76px 85px;background:var(--teal);color:white}
.contact-inner{display:flex;align-items:end;justify-content:space-between;gap:30px}
.contact-inner .eyebrow{margin-bottom:14px;color:#b7d89b}
.contact-inner h2{margin-bottom:13px}
.contact-inner p:last-child{margin:0;color:#c9d9d4}
.button.light{flex:none;background:var(--lime);color:var(--teal)}
.site-footer{background:#0b2d2b;color:#b7ceca}
.footer-inner{display:flex;justify-content:space-between;gap:20px;padding-block:25px;font-size:13px}
.footer-inner a{text-decoration:none}
.simple-page{min-height:75vh;padding-block:70px 110px}
.back-link{display:inline-block;margin-bottom:70px;color:#4d7566;font-size:14px;font-weight:700;text-decoration:none}
.simple-page .eyebrow{margin-bottom:13px}
.simple-page h1{margin-bottom:24px;font:600 clamp(4rem,8vw,7rem)/1 var(--serif);letter-spacing:-.05em}
.simple-lead{max-width:650px;margin-bottom:56px;color:#4b655d;font-size:21px}
.next-card{display:flex;align-items:center;gap:25px;max-width:750px;margin-bottom:45px;padding:30px;background:#e9f0e7;border-radius:10px}
.next-card>span{font:500 52px var(--serif);color:#367261}
.next-card h2{margin-bottom:4px;font:600 25px var(--serif)}
.next-card p{margin:0;color:#526a63}
.page-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.auth-page,.teacher-page{min-height:75vh;padding-block:70px 110px}
.auth-page h1,.teacher-page h1{margin-bottom:20px;font:600 clamp(3rem,7vw,6rem)/1 var(--serif);letter-spacing:-.05em}
.auth-lead{max-width:760px;color:#4b655d;font-size:20px}
.auth-card{max-width:760px;margin-top:34px;padding:28px;border:1px solid var(--line);border-radius:10px;background:white}
.auth-card .button{margin-top:12px;margin-right:8px}
.student-login{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:end;margin-top:20px}
.student-login label{display:grid;gap:7px;color:var(--muted);font-size:13px;font-weight:700}
.student-login input,.student-login select{width:100%;min-height:48px;padding:10px 12px;border:1px solid #9eb6ae;border-radius:7px;background:white;color:var(--ink);font:16px var(--sans)}
.student-login .button{grid-column:1/-1;width:max-content}
.password-intro,.student-login #password-status{grid-column:1/-1;margin:0;color:#4c6559;font-size:13px}
.teacher-login{display:flex;align-items:center;gap:15px;margin-top:28px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:13px;font-weight:700}
.teacher-login .button{margin:0}
.privacy-note{max-width:760px;margin-top:20px;color:#657872;font-size:14px}
.teacher-heading{display:flex;justify-content:space-between;align-items:end;gap:28px}
.teacher-heading .page-actions{flex:none}
.student-progress{display:grid;gap:18px;margin-top:28px}
.student-card{padding:24px;border:1px solid var(--line);border-radius:10px;background:white}
.student-card h2{margin-bottom:4px;font:600 28px var(--serif)}
.student-meta{margin-bottom:18px;color:var(--muted);font-size:14px}
.quiz-record{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.quiz-record summary,.attempt-record summary{cursor:pointer;font-weight:700}
.attempt-record{margin:12px 0;padding:12px 0 0 16px;border-left:3px solid #dce9d2}
.answer-table{width:100%;margin-top:12px;border-collapse:collapse;font-size:14px}
.answer-table th,.answer-table td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.answer-table th{color:#526a63;font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.answer-correct{color:#2d6c46;font-weight:700}.answer-wrong{color:#9a3f37;font-weight:700}
.empty-state{padding:25px;border:1px dashed #aabdb6;border-radius:10px;color:var(--muted)}
@media(max-width:850px){.hero{grid-template-columns:1fr;padding-block:60px 80px}.hero-copy{padding:0}.hero-note{margin-top:40px}.portrait-wrap{max-width:520px}.space-grid{grid-template-columns:1fr 1fr}.about-section{grid-template-columns:1fr 2fr}.about-symbol{font-size:110px}}
@media(max-width:620px){.shell{width:min(100% - 36px,1240px)}.nav{min-height:70px}.nav nav{gap:14px}.nav nav a{font-size:12px}.nav nav a[href="/#contact"]{display:none}.hero{gap:35px;padding-block:49px 70px}.hero h1{font-size:clamp(3.5rem,12vw,5.1rem)}.lead{font-size:18px}.hero-actions{gap:21px}.portrait-wrap{max-width:460px}.spaces-section{padding-block:70px 85px}.section-heading{display:block}.section-heading>p{margin-top:16px}.space-grid{grid-template-columns:1fr}.space-card{min-height:335px}.space-icon{margin-top:26px}.about-section{display:block;padding-block:85px}.about-symbol{display:none}.about-copy h2{margin-bottom:20px}.about-copy p{font-size:17px}.contact-inner{display:block}.contact-inner .button{margin-top:27px}.footer-inner{display:block}.footer-inner a{display:block;margin-top:8px}.simple-page,.auth-page,.teacher-page{padding-block:45px 70px}.back-link{margin-bottom:60px}.next-card{align-items:start;padding:23px}.teacher-heading{display:block}.teacher-heading .page-actions{margin-top:20px}.student-login{grid-template-columns:1fr}.student-login .button{grid-column:auto}.teacher-login{display:block}.answer-table{display:block;overflow-x:auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.button,.space-card{transition:none}}

/* Biology teacher dashboard */
.auth-page .back-link{margin-bottom:38px}
.auth-page h1{margin-bottom:12px}
.auth-page .auth-lead{font-size:clamp(17px,2vw,20px);line-height:1.45}
.auth-page .auth-card{position:relative;padding-top:132px;overflow:hidden;box-shadow:0 12px 35px #123b390d}
.auth-page .auth-card:before{content:'';position:absolute;inset:0 0 auto;height:103px;background:linear-gradient(90deg,#123b3959,#123b3905),url('/racs/bio/forest-canopy.jpg') center 48%/cover,#123b39}
.auth-page .teacher-login{padding:18px;border:0;border-radius:12px;background:#edf4e9}
.auth-page .teacher-login .button{background:#fff}
.auth-mode-choice{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:5px;border:1px solid #aecbb1;border-radius:12px;background:#eaf3e7}
.auth-mode-choice button{min-height:48px;padding:9px 12px;border:0;border-radius:8px;background:transparent;color:#2e6150;font:800 15px var(--sans);cursor:pointer}
.auth-mode-choice button[aria-pressed="true"]{background:#174a39;color:#fff;box-shadow:0 3px 8px #123b3929}
.auth-mode-choice button:focus-visible{outline:3px solid #e98755;outline-offset:3px}
.recovery-toggle{grid-column:1/-1;width:max-content;max-width:100%;padding:5px 0;border:0;background:none;color:#245e51;font:700 13px var(--sans);text-align:left;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.student-login #recovery-field{grid-column:1/-1}
.student-login #recovery-code{max-width:260px;letter-spacing:.09em;text-transform:uppercase}
.student-recovery{display:flex;align-items:center;flex-wrap:wrap;gap:10px 20px;margin:0 0 24px;padding:18px 20px;border:2px solid #9fbf95;border-radius:14px;background:#eef7e8}
.student-recovery>div{flex:1 1 220px}
.student-recovery strong{font-size:16px;color:#174a39}
.student-recovery p{margin:1px 0 0;color:#53695e;font-size:12px}
.student-recovery .button{min-height:42px;padding:9px 12px;white-space:nowrap}
.student-recovery .button:disabled{opacity:.55;cursor:wait}
.student-recovery .recovery-result{flex:1 0 100%;min-height:0;font-weight:700;overflow-wrap:anywhere}
.name-review-panel{margin-top:16px;padding:18px 22px;border:1px solid #d3dba9;border-radius:14px;background:#f8fae9}
.name-review-panel h3{margin:0;font-size:19px;color:#234f3d}
.name-review-panel h3 span{margin-left:8px;padding:3px 8px;border-radius:99px;background:#f0cf80;font-size:12px}
.name-review-panel .privacy-note{max-width:none;margin:6px 0 12px}
.name-review-request{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-top:1px solid #d8e2c7}
.name-review-request p{margin:0}
.name-review-request small{display:block;margin-top:4px;color:#52695e}
.name-review-request>div{display:flex;flex-wrap:wrap;gap:8px}
.name-review-request .button{min-height:40px;padding:8px 12px}
.legacy-accounts{margin-top:28px;padding:18px 22px;border:1px solid #d3dba9;border-radius:14px;background:#f8fae9}
.legacy-accounts>summary{cursor:pointer;font-weight:800;color:#234f3d}
@media(max-width:620px){.name-review-request{display:block}.name-review-request>div{margin-top:10px}}
.export-warning{max-width:900px;margin:13px 0 0;color:#53695e;font-size:13px}
.export-warning strong{color:#245e51}
.heatmap-swipe-cue{display:none}
.teacher-page{max-width:1320px}
.teacher-page .back-link{margin-bottom:34px}
.teacher-page h1{margin-bottom:15px}
.teacher-page h1 span{color:#e77748}
.teacher-page .auth-lead{margin-bottom:0}
.teacher-heading{display:block;padding:clamp(28px,5vw,58px);border:0;border-radius:24px;background:linear-gradient(90deg,#103529ef 0%,#103529d9 52%,#1035296b 100%),url('/racs/bio/forest-canopy.jpg') center 45%/cover;color:#fff}
.teacher-heading .eyebrow,.teacher-heading .auth-lead{color:#e6f1de}
.teacher-heading .page-actions{display:flex;flex-wrap:wrap;margin-top:26px}
.teacher-heading .button.secondary{border-color:#ecf5e9;background:#ecf5e9;color:#123b39}
.teacher-heading .button.secondary:hover{background:#fff}
.teacher-page{padding-top:27px}
.teacher-page .back-link{margin-bottom:16px}
.teacher-heading{padding:28px 38px}
.teacher-heading h1{margin:4px 0 7px;font-size:clamp(3rem,5vw,4.5rem)}
.teacher-heading .auth-lead{max-width:670px;font-size:17px;line-height:1.35}
.teacher-heading .page-actions{margin-top:17px}
.copy-status{margin:11px 0 0;color:#f4f6e8;font-size:13px;font-weight:700;overflow-wrap:anywhere}
.copy-status:empty{display:none}
.teacher-note{display:flex;align-items:center;gap:21px;margin:25px 0 10px;padding:21px 25px;border-radius:18px;background:#e7efdc;color:#244b3d}
.teacher-note>span{display:grid;place-items:center;flex:none;width:54px;height:54px;border-radius:50%;background:#cde4ab;color:#2e6543;font:600 35px var(--serif)}
.teacher-note p{max-width:900px;margin:0;font-size:14px}
.dashboard-controls{display:flex;flex-wrap:wrap;gap:12px;margin:30px 0 18px}
.teacher-page .dashboard-controls{margin:14px 0 10px}
.dashboard-controls label{display:grid;gap:5px;color:#3b6353;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.dashboard-controls select{min-width:200px;max-width:min(85vw,400px);min-height:48px;padding:9px 32px 9px 14px;border:1px solid #a8bdb0;border-radius:10px;background:#fff;color:var(--ink);font:600 15px var(--sans);letter-spacing:normal;text-transform:none}
.class-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:20px 0 12px}
.class-choice{display:grid;gap:7px;min-height:86px;padding:15px 17px;border:2px solid #c8dfc4;border-radius:15px;background:#f5faf0;color:#153e30;text-align:left;font:700 15px/1.2 var(--sans);cursor:pointer}
.class-choice small{font-size:12px;font-weight:600;color:#497258}
.class-choice.active{border-color:#247845;background:#d9efbf;box-shadow:0 5px 0 #8fbd6e}
.class-choice:focus-visible,.launch-actions .button:focus-visible,.concept-disclosure summary:focus-visible{outline:3px solid #ee9b4a;outline-offset:3px}
.dashboard-controls .unit-picker{width:100%;max-width:560px;font-size:13px}
.dashboard-controls .unit-picker select{width:100%;max-width:none;border:2px solid #79a963;background:#fffef7;font-size:17px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.launch-panel{padding:23px;border:1px solid #bcd7b7;border-radius:20px;background:#f1f9e9;box-shadow:0 5px 20px #1b57300c}
.launch-top{display:flex;align-items:center;justify-content:space-between;gap:24px}
.launch-top p{margin:9px 0 0;color:#315c43;font-size:14px}
.launch-top p strong{font:700 29px/1 var(--serif);color:#145b36}
.launch-actions{display:flex;flex-wrap:wrap;gap:9px;justify-content:flex-end}
.launch-actions label{display:grid;gap:2px;font-size:12px;font-weight:800}
.launch-actions select{min-width:86px;min-height:38px;padding:7px;border:1px solid #a8bdb0;border-radius:8px;background:#fff;color:var(--ink);font:inherit}
.launch-actions .button{min-height:52px}
.launch-actions .cluster-launch{background:#d95435;border-color:#d95435;color:#fff}
.launch-description{margin:14px 0 0;color:#315d45;font-size:14px;font-weight:700}
.missing-learners{max-width:680px;line-height:1.5}
.approval-panel{margin:13px 0 23px;padding:18px 21px;border:1px solid #d6e7d0;border-radius:16px;background:#fff}
.approval-panel h3{margin:0 0 7px;font:600 22px/1.2 var(--serif)}
.approval-panel h3 span{display:inline-block;padding:5px 8px;border-radius:999px;background:#ed7150;color:#fff;font:800 11px var(--sans)}
.approval-panel>p{margin:0;color:#597163;font-size:13px}
.approval-request{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 0;border-top:1px solid #e2eee0}
.approval-request p{margin:0;line-height:1.4}.approval-request small{color:#688073}
.approval-request>div{display:flex;gap:7px}
.approval-request .button{min-height:38px;padding:7px 10px;font-size:12px}
.roster-editor{margin-top:17px;border-top:1px solid #c9dfc5;padding-top:12px}
.roster-editor summary{width:max-content;color:#216542;font-size:13px;font-weight:800;cursor:pointer}
.roster-editor p{font-size:12px;color:#516a58}
.roster-editor form,.score-form{display:grid;gap:9px;max-width:480px}
.roster-editor textarea,.score-form textarea,.score-form select{width:100%;padding:10px;border:1px solid #a9cba8;border-radius:9px;background:#fff;color:#193b2e;font:inherit}
.score-form{margin-top:12px}.score-form label{display:grid;gap:4px;font-size:12px;font-weight:800}
.score-form select{max-width:170px}.score-form .button{justify-self:start}
.concept-disclosure{margin-top:26px}.concept-disclosure>summary{display:block;max-width:440px;padding:15px 20px;border:2px solid #62a362;border-radius:13px;background:#e1f3d5;color:#17533c;font-size:17px;font-weight:800;cursor:pointer;list-style:none}
.concept-disclosure>summary::-webkit-details-marker{display:none}.concept-disclosure>summary:after{content:'  +';font-size:22px}.concept-disclosure[open]>summary:after{content:'  −'}
.live-class-section .dashboard-section-title{margin-top:24px}
.live-class-section .dashboard-section-title{margin-top:15px}
.live-class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 28px}
.live-class-card{display:flex;flex-direction:column;align-items:flex-start;gap:12px;min-width:0;padding:20px;border:1px solid #c9ddcc;border-radius:16px;background:#f7fbf5}
.live-class-card.is-live{border-color:#3a865e;background:#e5f2df}
.live-class-head h3{margin:7px 0 5px;font:600 23px/1.13 var(--serif)}
.live-class-head p,.live-count{margin:0;color:#456455;font-size:13px;line-height:1.4}
.live-pill{display:inline-block;padding:4px 8px;border-radius:99px;background:#d8e8d8;color:#235940;font-size:11px;font-weight:800;text-transform:uppercase}
.is-live .live-pill{background:#287b52;color:#fff}
.live-class-card .button{min-height:41px}
.live-class-card details{width:100%}
.live-class-card summary{cursor:pointer;color:#245b43;font-weight:700}
.live-learners{display:grid;gap:5px;max-height:240px;overflow:auto;margin:9px 0 0;padding:0;list-style:none}
.live-learners li{display:flex;flex-wrap:wrap;gap:2px 8px;padding:7px;border-radius:7px;background:#fff;font-size:13px}
.live-learners li small{color:#557466}
.live-learners .test-learner{background:#e5e9e5;color:#46584d}
.dashboard-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.dashboard-stats>div{min-height:123px;padding:21px 22px;border:1px solid #d4e3d4;border-radius:16px;background:#fff}
.dashboard-stats span{display:block;max-width:220px;color:#48685b;font-size:13px;font-weight:700}
.dashboard-stats strong{display:block;margin-top:12px;color:#174b3a;font:600 39px/1 var(--serif);letter-spacing:-.04em}
.period-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.period-tile{display:grid;gap:7px;min-height:117px;padding:16px;border:1px solid #d1dfd2;border-radius:14px;background:#fff;color:var(--ink);text-align:left;font:inherit;cursor:pointer}
.period-tile span{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.period-tile strong{font:600 23px/1.1 var(--serif)}
.period-tile small{font-size:11px;line-height:1.3}
.period-tile.active{outline:3px solid #427a52;outline-offset:2px}
.period-tile.support{background:#e5f0ff;color:#194d7d}.period-tile.growing{background:#ffe8c8;color:#835017}.period-tile.strong{background:#dc4b32;color:#fff}
.dashboard-section-title{display:flex;align-items:end;justify-content:space-between;gap:30px;margin:52px 0 19px}
.dashboard-section-title .eyebrow{margin-bottom:6px}
.dashboard-section-title h2{margin-bottom:0;font:600 clamp(2rem,3.3vw,3.2rem)/1.08 var(--serif);letter-spacing:-.035em}
.dashboard-section-title>p{max-width:430px;margin-bottom:2px;color:#4f665e;font-size:14px}
.block-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}
.block-tile{display:grid;align-content:space-between;gap:8px;min-height:153px;padding:18px;border:1px solid #d3dfd2;border-radius:16px;background:#fff;color:var(--ink);text-align:left;font:inherit;cursor:pointer;transition:transform .17s,border-color .17s,box-shadow .17s}
.block-tile:hover{transform:translateY(-3px);box-shadow:0 9px 24px #19363316}
.block-tile.active{border:2px solid #277255;box-shadow:inset 0 0 0 2px #fff,0 5px 17px #19363318}
.block-tile span{max-width:260px;font-size:14px;font-weight:700;line-height:1.3}
.block-tile strong{font:600 29px/1 var(--serif)}
.block-tile small{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.block-tile.support{background:#e5f0ff;color:#194d7d}.block-tile.growing{background:#ffe8c8;color:#835017}.block-tile.strong{background:#dc4b32;color:#fff}
.heatmap-scroll{overflow-x:auto;border:1px solid #cbdbd0;border-radius:16px;background:#fff}
.concept-heatmap{width:100%;min-width:max-content;border-collapse:separate;border-spacing:0;font-size:13px}
.concept-heatmap caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.concept-heatmap th,.concept-heatmap td{width:132px;min-width:132px;padding:13px 11px;border-right:1px solid #e4ece4;border-bottom:1px solid #e4ece4;text-align:center;vertical-align:middle}
.concept-heatmap th:first-child{position:sticky;left:0;z-index:1;width:175px;min-width:175px;background:#f7faf4;text-align:left}
.concept-heatmap thead th{height:88px;background:#f7faf4;color:#234a3b;font-size:12px;line-height:1.2}
.concept-heatmap thead th:first-child{z-index:2}
.concept-heatmap th span,.concept-heatmap th small,.concept-heatmap tbody th small,.heat-cell small{display:block}
.concept-heatmap th small{margin-top:5px;color:#55736a;font-size:10px;font-weight:700}
.concept-heatmap tbody th{font-size:13px}
.concept-heatmap tbody th a{font-weight:700;text-decoration:none;text-underline-offset:3px}
.concept-heatmap tbody th a:hover{text-decoration:underline}
.concept-heatmap .class-row th{background:#dfeeda}
.heat-cell span{display:block;font-size:19px;font-weight:700}
.heat-cell small{margin-top:2px;font-size:10px;font-weight:600}
.heat-cell.support{background:#dceaff;color:#1c4e7b}.heat-cell.growing{background:#ffe1af;color:#75480e}.heat-cell.strong{background:#c9482b;color:#fff}.heat-cell.empty{background:#f3f6f1;color:#62776d}
.class-plot{margin-top:17px;padding:22px;border:1px solid #d4e3d4;border-radius:16px;background:#fff}
.class-plot h3{margin:0 0 4px;font:600 23px var(--serif)}
.class-plot>p{margin:0 0 17px;color:#516b5e;font-size:13px}
.class-plot-bars{display:grid;gap:10px}
.class-plot-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(100px,2fr) 85px;align-items:center;gap:12px;font-size:12px}
.class-plot-row>span{font-weight:700}
.class-plot-row strong{text-align:right}
.class-plot .meter-track{margin:0}
.class-plot .meter-track.support span{background:#3b83ca}.class-plot .meter-track.growing span{background:#f4a346}.class-plot .meter-track.strong span{background:#d64c32}
.class-plot .class-insight{margin:17px 0 0;padding-top:13px;border-top:1px solid #e0e9e0;color:#325746}
.teacher-page .student-progress{margin-top:0}
.teacher-page .student-card{padding:0;overflow:hidden;border-radius:16px}
.student-card>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 25px;list-style:none;cursor:pointer}
.student-card>summary::-webkit-details-marker{display:none}
.student-card>summary strong{display:block;font:600 27px var(--serif)}
.student-card>summary small{display:block;margin-top:3px;color:#60746a;font-size:12px;font-weight:600}
.student-card>summary:after{content:'+';order:3;color:#417659;font:500 25px var(--serif)}
.student-card[open]>summary:after{content:'−'}
.student-score{margin-left:auto;padding:8px 11px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.student-score.support{background:#e3efff;color:#23517d}.student-score.growing{background:#ffe5be;color:#70420c}.student-score.strong{background:#c9482b;color:#fff}.student-score.empty{background:#edf1e9;color:#5c7167}
.student-card-body{padding:0 25px 25px;border-top:1px solid var(--line)}
.test-student{border-color:#b8beb9!important;background:#eef0ed!important}
.test-student .student-card-body,.test-student .report-columns section,.test-student .writing-response{background:#f2f3f1}
.test-student .student-score,.test-badge{display:inline-block;background:#d5d9d5!important;color:#35443d!important}
.test-badge{margin-left:8px;padding:4px 7px;border-radius:5px;font:700 10px var(--sans)!important;letter-spacing:.06em;text-transform:uppercase}
.concept-heatmap .test-row th,.concept-heatmap .test-row td{background:#e9ece9;color:#43534a}
.concept-heatmap .test-row .heat-cell span{color:#43534a}
.report-intro{display:flex;flex-wrap:wrap;gap:7px 30px;margin:19px 0;color:#435e52;font-size:13px}
.report-intro p{margin:0}
.report-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:22px 0}
.report-columns section{padding:19px;border:1px solid #dce8dc;border-radius:12px;background:#fafcf8}
.report-columns h3{margin-bottom:13px;font:600 21px var(--serif)}
.topic-meters{display:grid;gap:14px;margin:0;padding:0;list-style:none}
.topic-meter>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12px}
.topic-meter strong{font-weight:700}.topic-meter span{color:#51695d;white-space:nowrap}
.meter-track{height:10px;margin-top:5px;border-radius:99px;background:#e6ebe3;overflow:hidden}
.meter-track span{display:block;height:100%;border-radius:99px}
.topic-meter.support .meter-track span{background:#3b83ca}.topic-meter.growing .meter-track span{background:#f4a346}.topic-meter.strong .meter-track span{background:#d64c32}
.record-heading{margin:26px 0 8px;font:600 23px var(--serif)}
.teacher-page .quiz-record{margin-top:0;padding:14px 0}
.teacher-page .answer-table{min-width:580px}
.writing-responses{display:grid;gap:12px;margin-top:15px}
.writing-response{padding:18px;border:1px solid #d6e5d5;border-radius:13px;background:#f9fbf7}
.writing-response-heading{display:flex;align-items:start;justify-content:space-between;gap:12px}
.writing-response-heading small{color:#5b7767;font-size:11px;font-weight:800;letter-spacing:.06em}
.writing-response h4{margin:3px 0 0;font:600 21px var(--serif)}
.writing-status{flex:none;padding:5px 9px;border-radius:99px;font-size:11px;font-weight:800}
.writing-status.submitted{background:#d5e9c6;color:#215934}.writing-status.draft{background:#e1edfb;color:#295679}
.writing-prompt{margin:11px 0;color:#486056;font-size:13px}
.writing-answer{margin:0;padding:15px;border-left:3px solid #84a968;background:#fff;color:#203d31;white-space:pre-wrap;overflow-wrap:anywhere}
.writing-time{display:block;margin-top:9px;color:#5b7567}
@media(max-width:950px){.dashboard-stats,.block-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-section-title{display:block}.dashboard-section-title>p{margin-top:9px}}
@media(max-width:950px){.live-class-grid{grid-template-columns:1fr}}
@media(max-width:700px){.class-picker{grid-template-columns:1fr}.class-choice{min-height:61px}.launch-top,.approval-request{display:block}.launch-actions{justify-content:flex-start;margin-top:16px}.approval-request>div{margin-top:9px}}
@media(max-width:620px){.class-plot{padding:15px}.class-plot-row{grid-template-columns:1fr 1.3fr 70px;gap:7px;font-size:11px}}
@media(max-width:620px){.teacher-page .back-link{margin-bottom:25px}.teacher-heading .page-actions{gap:8px}.teacher-heading .button{min-height:43px;padding:8px 11px;font-size:12px}.teacher-note{align-items:start;padding:16px}.teacher-note>span{width:38px;height:38px;font-size:25px}.dashboard-stats{gap:8px}.dashboard-stats>div{min-height:104px;padding:14px}.dashboard-stats strong{font-size:30px}.dashboard-section-title{margin-top:38px}.block-grid{gap:8px}.block-tile{min-height:140px;padding:12px}.block-tile strong{font-size:24px}.student-card>summary{padding:16px}.student-card>summary strong{font-size:23px}.student-card-body{padding:0 16px 18px}.report-columns{grid-template-columns:1fr}.heatmap-swipe-cue{display:block;margin:2px 0 8px;color:#426c5c;font-size:12px;font-weight:800}}
@media(prefers-reduced-motion:reduce){.block-tile{transition:none}}
@media(max-width:620px){
  .teacher-page{padding-top:25px}
  .teacher-page .back-link{margin-bottom:15px}
  .teacher-heading{padding:20px 18px;border-radius:16px}
  .teacher-heading .eyebrow{margin-bottom:7px;font-size:10px}
  .teacher-heading h1{margin-bottom:6px;font-size:clamp(2.6rem,12vw,3.4rem)}
  .teacher-heading .auth-lead{font-size:15px;line-height:1.35}
  .teacher-heading .page-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:14px}
  .teacher-heading .button{justify-content:center;min-height:40px;padding:8px 9px;font-size:11px;line-height:1.2;text-align:center}
  .teacher-note{gap:0;margin:12px 0 7px;padding:12px 14px}
  .teacher-note>span{display:none}
  .teacher-note p{font-size:12px;line-height:1.38}
  .export-warning{margin:8px 0 0;font-size:12px;line-height:1.35}
  .dashboard-controls{gap:8px;margin:18px 0 12px}
  .dashboard-controls label{flex:1 1 145px}
  .dashboard-controls select{min-width:0;width:100%;min-height:42px;font-size:13px}
  .dashboard-stats>div{min-height:82px;padding:11px}
  .dashboard-stats strong{margin-top:7px;font-size:27px}
  .dashboard-stats span{font-size:11px}
}
body[data-teacher-theme="ing"]{--teacher-deep:#123c6e;--teacher-accent:#e7b852;--teacher-accent-text:#f6d98f;--teacher-soft:#e8f0ff}
body[data-teacher-theme="snyder"]{--teacher-deep:#12624b;--teacher-accent:#ad7648;--teacher-accent-text:#ffe1bc;--teacher-soft:#e4f3e9}
body[data-teacher-theme="stewart"]{--teacher-deep:#8b1949;--teacher-accent:#e57ea2;--teacher-accent-text:#ffe0ec;--teacher-soft:#fff0f5}
body[data-teacher-theme] .teacher-heading{background:linear-gradient(90deg,var(--teacher-deep) 0%,color-mix(in srgb,var(--teacher-deep) 88%,transparent) 56%,color-mix(in srgb,var(--teacher-deep) 45%,transparent) 100%),var(--teacher-scene,url('/racs/bio/forest-canopy.jpg')) center 45%/cover;image-rendering:pixelated}
body[data-teacher-theme] .teacher-page h1 span,body[data-teacher-theme] .teacher-heading .eyebrow{color:var(--teacher-accent-text)}
body[data-teacher-theme] .class-choice.active{border-color:var(--teacher-deep);background:var(--teacher-soft);box-shadow:0 5px 0 var(--teacher-accent)}
body[data-teacher-theme] .launch-actions .button.primary{background:var(--teacher-deep);border-color:var(--teacher-deep)}

/* Teacher windows use the account palette across the whole screen. */
.teacher-shell{height:100dvh;overflow:hidden;--paper:var(--teacher-soft);--ink:#153049;--muted:#39576b;--line:color-mix(in srgb,var(--teacher-deep) 35%,white);background:linear-gradient(160deg,color-mix(in srgb,var(--teacher-deep) 24%,transparent),color-mix(in srgb,var(--teacher-deep) 65%,transparent)),var(--teacher-scene,url('/racs/bio/forest-canopy.jpg')) center/cover fixed,var(--teacher-deep);font-family:var(--sans);color:var(--ink)}
.teacher-shell[data-teacher-theme="ing"]{--teacher-scene:url('/racs/img/bio/pixel-world-ing.png')}
.teacher-shell[data-teacher-theme="snyder"]{--ink:#173a2c;--muted:#42604b;--teacher-scene:url('/racs/img/bio/pixel-world-snyder.png')}
.teacher-shell[data-teacher-theme="stewart"]{--ink:#50213a;--muted:#7b465a;--teacher-scene:url('/racs/img/bio/pixel-world-stewart.png')}
.teacher-shell:before{content:'';position:fixed;inset:0;background:var(--teacher-scene) center/cover;image-rendering:pixelated;z-index:-1}
.teacher-brand{height:44px;display:flex;align-items:center;gap:18px;padding:0 22px;background:linear-gradient(180deg,color-mix(in srgb,var(--teacher-deep) 88%,white),var(--teacher-deep));border-bottom:3px solid var(--teacher-accent);color:white;box-shadow:0 3px 0 #0a233d55}
.teacher-brand>a{color:white;font:800 20px/1 var(--sans);text-decoration:none;letter-spacing:-.04em}
.teacher-brand>a span{color:var(--teacher-accent-text)}
.teacher-brand>span{font-size:12px;font-weight:700}
.teacher-brand .button{margin-left:auto;min-height:28px;padding:3px 11px;font-size:11px}
.teacher-shell .teacher-page{width:calc(100% - 28px);max-width:none;height:calc(100dvh - 44px);min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:8px;padding:12px 0 10px}
.teacher-shell .teacher-heading{position:relative;min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 18px;border:2px solid var(--teacher-accent);border-radius:9px;background:linear-gradient(110deg,var(--teacher-deep),color-mix(in srgb,var(--teacher-deep) 80%,transparent)),var(--teacher-scene,url('/racs/bio/forest-canopy.jpg')) center 40%/cover;box-shadow:inset 0 2px 0 #ffffff45,0 3px 0 #0c203c55}
.teacher-shell .teacher-heading h1{margin:0;font:800 28px/1.1 var(--sans);letter-spacing:-.04em}
.teacher-shell .teacher-heading .eyebrow{margin:0 0 3px;font-size:10px;letter-spacing:.1em}
.teacher-shell .teacher-heading .page-actions{display:flex;gap:8px;margin:0}
.teacher-shell .teacher-heading .button{min-height:34px;padding:6px 12px;font-size:12px;line-height:1.2}
.teacher-shell .copy-status{position:absolute;right:18px;bottom:-2px;max-width:60%;margin:0;transform:translateY(100%);font-size:11px;z-index:2;pointer-events:none}
.teacher-shell .copy-status:empty{display:none}
.teacher-tabs{display:flex;gap:6px;min-height:35px;padding-top:2px}
.teacher-tabs>button{padding:7px 18px;border:1px solid var(--teacher-deep);border-bottom-width:3px;border-radius:6px 6px 2px 2px;background:var(--teacher-soft);color:var(--teacher-deep);font:800 13px/1.2 var(--sans);box-shadow:inset 1px 1px 0 white,1px 1px 0 #14283e4d;cursor:pointer}
.teacher-tabs>button[aria-selected="true"]{background:var(--teacher-deep);color:white;border-bottom-color:var(--teacher-accent)}
.teacher-tabs>button:focus-visible,.teacher-shell .button:focus-visible{outline:3px solid var(--teacher-accent);outline-offset:2px}
.teacher-workspace{min-height:0;overflow:hidden;border:2px solid var(--teacher-deep);border-radius:3px 8px 8px;background:color-mix(in srgb,var(--teacher-soft) 94%,transparent);box-shadow:inset 2px 2px 0 white,3px 4px 0 #14283e80}
.teacher-workspace>#student-progress,.teacher-workspace>#teacher-tools{height:100%;overflow:auto;padding:14px;overscroll-behavior:contain;scrollbar-color:var(--teacher-deep) var(--teacher-soft)}
.teacher-workspace [hidden]{display:none!important}
.teacher-workspace>.auth-card{margin:16px}
.teacher-shell .class-picker{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0 0 10px}
.teacher-shell .class-choice{min-height:55px;padding:8px 10px;border-radius:5px;border:1px solid var(--line);background:color-mix(in srgb,var(--teacher-soft) 60%,white);color:var(--ink);box-shadow:inset 1px 1px 0 white,1px 2px 0 var(--line)}
.teacher-shell .class-choice.active{background:var(--teacher-deep);border-color:var(--teacher-deep);color:white;box-shadow:inset 1px 1px 0 #ffffff40,0 3px 0 var(--teacher-accent)}
.teacher-shell .class-choice span{font-size:13px}
.teacher-shell .class-choice small{margin-top:3px;font-size:10px;color:inherit;opacity:.9}
.teacher-shell .dashboard-controls{margin:5px 0 10px}
.teacher-shell .dashboard-controls label{color:var(--muted);font-size:11px}
.teacher-shell .dashboard-controls select{min-height:38px;font-size:14px;border:1px solid var(--teacher-deep);background:white;color:var(--ink);border-radius:4px}
.teacher-shell .launch-panel,.teacher-shell .approval-panel,.teacher-shell .name-review-panel,.teacher-shell .dashboard-stats>div,.teacher-shell .student-card,.teacher-shell .report-columns section,.teacher-shell .writing-response{border-color:var(--line);border-radius:6px;background:color-mix(in srgb,var(--teacher-soft) 40%,white);color:var(--ink);box-shadow:inset 1px 1px 0 white,1px 2px 0 var(--line)}
.teacher-shell .launch-panel{padding:13px 16px}
.teacher-shell .launch-top p,.teacher-shell .launch-description,.teacher-shell .privacy-note,.teacher-shell .missing-learners{color:var(--muted)}
.teacher-shell .launch-actions .button,.teacher-shell .button{border-radius:4px;border:1px solid var(--teacher-deep);box-shadow:inset 1px 1px 0 #ffffff65,1px 2px 0 #17283955;min-height:35px;padding:7px 12px}
.teacher-shell .button.primary{background:var(--teacher-deep);color:#fff}
.teacher-shell .button.secondary{background:var(--teacher-soft);color:var(--teacher-deep)}
.teacher-shell .live-pill{background:var(--teacher-deep);color:#fff}
.teacher-shell .approval-panel{padding:12px 16px;margin:10px 0}
.teacher-shell .approval-panel h3{font-size:16px;color:var(--ink);margin-bottom:6px}
.teacher-shell .dashboard-stats{gap:8px;margin-top:12px}
.teacher-shell .dashboard-stats>div{min-height:75px;padding:11px 14px}
.teacher-shell .dashboard-stats span{color:var(--muted);font-size:11px}
.teacher-shell .dashboard-stats strong{color:var(--teacher-deep);margin-top:5px;font:800 29px/1 var(--sans)}
.teacher-shell .dashboard-section-title{margin:14px 0}
.teacher-shell .dashboard-section-title h2{font:800 22px/1.1 var(--sans)}
.teacher-shell .dashboard-section-title>p{color:var(--muted)}
.teacher-shell .student-card>summary strong{font:800 20px/1.2 var(--sans)}
.teacher-shell .heatmap-section,.teacher-shell .concept-chart-section{background:color-mix(in srgb,var(--teacher-soft) 40%,white);border-color:var(--line);border-radius:6px}
.teacher-shell .tool-heading,.teacher-shell .wizard-heading{display:flex;gap:16px;align-items:center;margin:0 0 15px}
.teacher-shell .tool-heading h2,.teacher-shell .wizard-heading h2{margin:0;font:800 25px/1.15 var(--sans);letter-spacing:-.025em;color:var(--teacher-deep)}
.teacher-shell .tool-heading p,.teacher-shell .wizard-heading p{margin:5px 0 0;color:var(--muted);font-size:14px}
.wizard-heading>span{font-size:48px;color:var(--teacher-deep);text-shadow:2px 2px var(--teacher-accent)}
.wizard-lessons{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.wizard-lesson,.species-form,.game-review-card,.species-card{padding:18px;border:1px solid var(--teacher-deep);border-radius:7px;background:color-mix(in srgb,var(--teacher-soft) 45%,white);box-shadow:inset 2px 2px 0 white,2px 3px 0 var(--line)}
.wizard-lesson h3,.species-card h3,.game-review-card h3{margin:0 0 12px;font:800 20px/1.2 var(--sans);color:var(--teacher-deep)}
.wizard-lesson ol{padding-left:24px;font-size:16px;line-height:1.65}
.wizard-lesson li{margin-bottom:8px}
.teacher-shell kbd{display:inline-block;padding:1px 7px;border:1px solid var(--line);border-bottom-width:3px;border-radius:4px;background:white;font:700 12px var(--sans)}
.teacher-shell .wizard-lesson label,.species-form label,.game-review-card label{display:grid;gap:5px;font-size:12px;font-weight:800;color:var(--muted)}
.teacher-shell .wizard-lesson input,.teacher-shell .wizard-lesson textarea,.teacher-shell .wizard-lesson select,.species-form input,.species-form textarea,.game-review-card textarea,.game-review-card select{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:3px;background:white;color:var(--ink);font:500 14px/1.4 var(--sans)}
.wizard-lesson .button{margin:8px 0 15px}
.pointer-preview{display:flex;gap:16px;align-items:center;margin-top:18px;padding:10px 16px;border:1px solid var(--line);background:var(--teacher-soft);border-radius:4px}
.pointer-preview>span{font-size:54px;line-height:1;color:var(--teacher-deep);text-shadow:1px 2px var(--teacher-accent)}
.pointer-preview p{margin:0;font-size:13px}
.species-workspace{display:grid;grid-template-columns:minmax(240px,340px) minmax(0,1fr);gap:15px;align-items:start}
.species-form{display:grid;gap:12px}
.species-form-row{display:flex;gap:12px;align-items:center}
.species-form .check-label{display:flex;align-items:center;gap:6px;font-size:11px}
.species-form .check-label input{width:auto}
.species-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.species-card{padding:0;overflow:hidden}
.species-card>img{display:block;width:100%;height:150px;object-fit:cover;background:var(--teacher-deep)}
.species-photo-error{height:150px;display:grid;place-content:center;text-align:center;background:var(--teacher-deep);color:white;font-size:13px}
.species-photo-error>span{font-size:32px;line-height:1}
.species-card>div{padding:12px}
.species-card p{margin:0 0 12px;font-size:13px}
.species-card .species-date{color:var(--muted);font-size:10px;font-weight:800}
.species-card .button{padding:6px 8px;font-size:11px;min-height:30px}
.tool-actions{display:flex;align-items:end;flex-wrap:wrap;gap:7px}
.tool-empty{grid-column:1/-1;min-height:245px;display:grid;place-content:center;text-align:center;padding:20px;border:2px dashed var(--line);color:var(--muted)}
.tool-empty>span{font-size:72px;color:var(--teacher-deep)}
.tool-empty h3{margin:0;font:800 22px var(--sans)}
.tool-empty p{margin:8px 0 0;font-size:13px}
.game-review-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.game-review-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.game-review-top h3{margin:5px 0 0}
.game-status{display:inline-block;padding:3px 8px;border-radius:3px;font-size:10px;font-weight:800;background:#e8d9b4;color:#563d13}
.game-status.approved{background:#bce9c8;color:#135730}
.game-check{display:inline-block;margin-left:6px;font-size:10px;font-weight:800;color:var(--muted)}
.upcoming-games{margin-top:24px;border-top:1px solid var(--line);padding-top:18px}
.upcoming-games h2{font:800 23px/1.2 var(--sans);color:var(--teacher-deep)}
.upcoming-games ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:0;list-style:none}
.upcoming-games li{display:flex;align-items:start;gap:12px;justify-content:space-between;padding:12px;border:1px solid var(--line);border-radius:4px;background:var(--teacher-soft)}
.upcoming-games h3{margin:0 0 5px;font:800 15px var(--sans)}
.upcoming-games p{margin:0;color:var(--muted);font-size:12px}
.upcoming-games li>span{font-size:10px;font-weight:800;color:var(--muted)}
.auth-shell{--teacher-deep:#123f73;--teacher-accent:#e2b752;--teacher-accent-text:#ffe9a6;height:100dvh;overflow:hidden;background:#24395d url('/racs/img/bio/pixel-world-ing-morning.png') center/cover;display:flex;flex-direction:column}
.auth-shell .auth-page{min-height:0;flex:1;overflow:auto;padding:16px 0;max-width:900px}
.auth-shell .auth-page h1{font:850 clamp(1.6rem,3vw,2.2rem)/1.05 var(--sans);margin:0;color:#fff;text-shadow:1px 2px #173352}
.auth-shell .auth-lead{font-size:15px;line-height:1.3;margin:8px 0;color:#fff;text-shadow:1px 1px #173352}
.auth-shell .auth-card{margin-top:8px;padding:14px 18px;background:#f3f8ffe6;max-width:none}
.auth-shell .auth-card:before{display:none}
.auth-shell .student-login{gap:8px 14px;margin-top:8px}
.auth-shell .student-login input,.auth-shell .student-login select{min-height:38px;padding:7px 10px}
.auth-shell .auth-card .button{margin-top:0;min-height:36px;padding:7px 12px}
.auth-shell .teacher-login{padding:8px 10px;margin-top:10px;background:#e5efffa6}
.auth-shell .privacy-note{color:white;text-shadow:1px 1px #173352;font-size:12px;margin:6px 0}
.teacher-shell .teacher-workspace{background:color-mix(in srgb,var(--teacher-soft) 78%,transparent)}
.teacher-shell .game-review-card,.teacher-shell .wizard-lesson,.teacher-shell .species-form{background:color-mix(in srgb,var(--teacher-soft) 92%,transparent)}
.teacher-shell{isolation:isolate}
.teacher-shell:before{background-image:url('/racs/img/bio/pixel-biology-edge.png'),var(--teacher-scene);background-position:-30px 62%,center;background-size:150px auto,cover;background-repeat:no-repeat}
.teacher-shell:after{content:'';position:fixed;inset:44px 0 auto;height:25vh;z-index:-1;pointer-events:none;background:var(--teacher-canopy,url('/racs/img/bio/pixel-canopy-ing-clean.png')) center top/100% auto no-repeat;image-rendering:pixelated}
.teacher-shell[data-teacher-theme="snyder"]{--teacher-canopy:url('/racs/img/bio/pixel-canopy-snyder-clean.png')}
.teacher-shell[data-teacher-theme="stewart"]{--teacher-canopy:url('/racs/img/bio/pixel-canopy-stewart-clean.png')}
@media(max-width:900px){.teacher-shell:before{background-image:var(--teacher-scene);background-position:center;background-size:cover}}
@media(max-width:620px){.auth-shell .auth-page{padding:9px 0}.auth-shell .auth-card{padding:10px 12px}.auth-shell .student-login{grid-template-columns:1fr 1fr}.auth-shell .student-login #last-name-help,.auth-shell .student-login .auth-mode-choice,.auth-shell .student-login .recovery-toggle{grid-column:1/-1}}
.game-review-card .tool-actions{justify-content:space-between;margin-top:10px}
.game-review-card [role="status"],.species-form [role="status"],.wizard-lesson [role="status"]{min-height:20px;margin:5px 0 0;font-size:12px;font-weight:700}
@media(max-width:850px){.teacher-shell .class-picker{grid-template-columns:repeat(3,minmax(0,1fr))}.species-gallery{grid-template-columns:1fr}.wizard-lessons{grid-template-columns:1fr}.teacher-shell .teacher-heading{padding:9px 12px}.teacher-shell .teacher-heading h1{font-size:24px}}
@media(max-width:560px){.teacher-brand{padding:0 12px}.teacher-brand>span{display:none}.teacher-shell .teacher-page{width:calc(100% - 14px);gap:5px;padding-top:7px}.teacher-shell .teacher-heading{align-items:start}.teacher-shell .teacher-heading h1{font-size:22px}.teacher-shell .teacher-heading .page-actions{flex-direction:column;gap:4px}.teacher-shell .teacher-heading .button{min-height:27px;font-size:10px;padding:4px 7px}.teacher-tabs{gap:3px}.teacher-tabs>button{flex:1;padding:6px 4px;font-size:10px}.teacher-workspace>#student-progress,.teacher-workspace>#teacher-tools{padding:9px}.teacher-shell .class-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.teacher-shell .class-choice span{font-size:11px}.teacher-shell .class-choice small{font-size:9px}.game-review-list,.species-workspace{grid-template-columns:1fr}.teacher-shell .copy-status{right:8px;font-size:10px;max-width:80%;background:var(--teacher-deep);color:white}.teacher-shell .tool-heading h2,.teacher-shell .wizard-heading h2{font-size:20px}}

.concept-dashboard {
  --ink: #183b39;
  --muted: #55716e;
  color: var(--ink);
  background: #f7fbf5;
  border: 1px solid #d3e5d7;
  border-radius: 24px;
  padding: clamp(18px, 3vw, 32px);
}
.concept-dashboard header { display: flex; justify-content: space-between; gap: 1rem; }
.concept-dashboard h2 { font-size: clamp(2rem, 4vw, 3.4rem); line-height: 1; margin: .15em 0 .3em; }
.concept-dashboard h3 { font-size: 1.25rem; margin: 0 0 .25rem; }
.concept-dashboard p { color: var(--muted); margin: .4rem 0; }
.concept-eyebrow { color: #387d63 !important; font-size: .78rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.concept-filters { display: flex; flex-wrap: wrap; align-items: end; gap: .7rem; margin: 1.35rem 0; }
.concept-filters label, .concept-distribution label { display: grid; gap: .3rem; font-size: .8rem; font-weight: 750; }
.concept-filters select, .concept-distribution select, .concept-filters button {
  min-height: 42px; border: 1px solid #aac9b6; border-radius: 10px; padding: .5rem .7rem;
  color: var(--ink); background: #fff; font: inherit;
}
.concept-filters button { cursor: pointer; background: #215f4d; color: #fff; border-color: #215f4d; font-weight: 750; }
.concept-filters button:hover { background: #174c3e; }
.concept-filters :focus-visible, .concept-distribution :focus-visible { outline: 3px solid #ed8d2a; outline-offset: 2px; }
.concept-note { font-size: .84rem; }
.concept-grid-scroll { overflow: auto; max-height: min(65vh, 630px); border: 1px solid #d0dfd5; border-radius: 16px; background: #fff; }
.concept-grid-scroll table { width: max-content; min-width: 100%; border-collapse: separate; border-spacing: 0; font-size: .86rem; }
.concept-grid-scroll caption { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.concept-grid-scroll th, .concept-grid-scroll td { border-bottom: 1px solid #e2ece5; padding: .43rem; text-align: center; }
.concept-grid-scroll thead th { position: sticky; top: 0; z-index: 2; background: #eaf3e8; min-width: 105px; font-weight: 800; }
.concept-grid-scroll th:first-child { position: sticky; left: 0; z-index: 1; text-align: left; min-width: 170px; background: #fff; }
.concept-grid-scroll thead th:first-child { z-index: 3; background: #eaf3e8; }
.concept-grid-scroll th small { display: block; color: var(--muted); font-size: .68rem; font-weight: 500; }
.concept-grid-scroll .selected-average th:first-child, .concept-grid-scroll .selected-average td { background: #eaf5e3; }
.concept-grid-scroll .overall-average th:first-child, .concept-grid-scroll .overall-average td { background: #f3f6f0; }
.concept-heat { display: grid; place-items: center; gap: .08rem; min-width: 70px; min-height: 48px; border-radius: 10px; background: var(--heat, #e8f0f1); line-height: 1; }
.concept-heat strong { font-size: 1.1rem; letter-spacing: -.04em; }
.concept-heat small { font-size: .65rem; opacity: .9; }
.concept-heat.cool { color: #123f57; }
.concept-heat.warm, .concept-heat.fire { color: #fff; text-shadow: 0 1px 1px #752c35; }
.concept-heat.fire { box-shadow: inset 0 0 0 2px #cf3c37, 0 0 13px #ff9a44; }
.concept-heat.empty { color: #78928c; }
.concept-distribution { margin-top: 1.5rem; padding-top: 1.3rem; border-top: 1px solid #d4e5d6; }
.concept-distribution > label { width: max-content; margin: .9rem 0; }
.concept-distribution-row { display: grid; grid-template-columns: minmax(145px, 1fr) minmax(220px, 2fr) auto; align-items: center; gap: 1rem; min-height: 76px; border-top: 1px solid #dce9dc; }
.concept-distribution-row > span { font-weight: 700; }
.concept-distribution-row small { display: block; color: var(--muted); font-weight: 400; }
.concept-violin { display: block; width: 100%; height: 62px; overflow: visible; }
.concept-violin .shape { fill: #ec7750; stroke: #a73b3d; stroke-width: .6; }
.concept-violin .axis { stroke: #839e9b; stroke-width: .4; }
.concept-violin .median { stroke: #173e45; stroke-width: .8; }
.concept-violin text { fill: var(--muted); font-size: 6px; }
.concept-median { white-space: nowrap; color: #af3d2c; font-size: .9rem; }
.concept-plot-empty { font-size: .83rem; }
@media (max-width: 640px) {
  .concept-dashboard { padding: 16px; }
  .concept-filters label, .concept-filters select { width: 100%; }
  .concept-distribution-row { grid-template-columns: 1fr; gap: .2rem; padding: .7rem 0; }
  .concept-violin { max-width: 380px; }
}
