:root{
  --chalk-bg:#FBF1E4; --chalk-text:#5B4636; --chalk-dim:#A9876E; --rail:#EEDFCB;
  --saffron:#E8985B; --herb:#8FBF8A; --tomato:#D9707D; --card-bg:#FFFBF3; --card-border:#EEDFCB;
  --input-bg:#FFFFFF; --sky:#2F6FB5; --sky-bg:#D3E4F7; --tan:#A67C4E; --tan-bg:#EBDAC0; --tan-text:#5E4126;
  font-size:18px; /* bumps every rem-based size in this file ~12% */
}
*{box-sizing:border-box;}
body{margin:0;background:var(--chalk-bg);background-image:radial-gradient(circle at 15% 5%, rgba(240,168,184,0.12), transparent 40%),radial-gradient(circle at 85% 95%, rgba(143,191,138,0.10), transparent 40%);color:var(--chalk-text);font-family:'Nunito',sans-serif;min-height:100vh;padding:24px 16px 60px;}
.board{max-width:960px;margin:0 auto;}
.board-header{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px dashed var(--rail);padding-bottom:14px;margin-bottom:20px;flex-wrap:wrap;gap:12px;}
.board-title{font-family:'Pacifico',cursive;font-size:2rem;font-weight:400;color:var(--tomato);line-height:1;}
.board-sub{font-family:'JetBrains Mono',monospace;font-size:0.75rem;color:var(--chalk-dim);letter-spacing:.04em;margin-top:5px;}
.pastry-garland{display:flex;justify-content:center;gap:14px;margin-bottom:6px;font-size:1.4rem;}
.pastry-garland span{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;background:#FFFBF3;border:2px solid var(--card-border);border-radius:50%;box-shadow:0 2px 6px rgba(180,140,110,0.18);}
.child-switcher{display:flex;justify-content:center;gap:8px;margin-bottom:16px;}
.child-pill{font-family:'Nunito',sans-serif;font-weight:700;font-size:0.85rem;padding:8px 18px;border-radius:20px;border:2px solid var(--card-border);background:#FFFBF3;color:var(--chalk-dim);cursor:pointer;transition:all .15s ease;}
.child-pill.active{background:var(--tomato);border-color:var(--tomato);color:#fff;box-shadow:0 3px 8px rgba(217,112,125,0.35);}
.child-pill:hover:not(.active){border-color:var(--tomato);color:var(--tomato);}
.toggle{position:relative;width:104px;height:34px;background:var(--rail);border-radius:20px;cursor:pointer;display:flex;align-items:center;padding:3px;border:1px solid #E8D5C4;}
.toggle-knob{position:absolute;top:3px;left:3px;width:60px;height:26px;background:var(--saffron);border-radius:16px;transition:left .25s ease;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-size:0.6rem;color:#5B4636;font-weight:700;}
.toggle.parent .toggle-knob{left:41px;background:var(--herb);}
.progress-row{display:flex;align-items:center;gap:12px;margin-bottom:22px;}
.progress-track{flex:1;height:8px;background:var(--rail);border-radius:6px;overflow:hidden;}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--saffron),var(--herb));width:0%;transition:width .4s ease;}
.progress-label{font-family:'JetBrains Mono',monospace;font-size:0.7rem;color:var(--chalk-dim);white-space:nowrap;}
.stations{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;}
.station{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;padding:14px 15px 12px;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;position:relative;box-shadow:0 2px 8px rgba(180,140,110,0.10);}
.station:hover{transform:translateY(-2px);border-color:#F0A8B8;}
.station.done{border-color:var(--herb);}
.station.burning{border-color:var(--saffron);}
.station.active{outline:2px solid var(--saffron);}
.station-tag{font-family:'JetBrains Mono',monospace;font-size:0.62rem;letter-spacing:.06em;color:var(--chalk-dim);text-transform:uppercase;}
.station-title{font-size:1rem;font-weight:600;margin:5px 0 2px;}
.station-lesson{font-size:0.8rem;color:var(--chalk-dim);margin-bottom:10px;}
.station-footer{display:flex;justify-content:space-between;align-items:center;}
.task-count{font-family:'JetBrains Mono',monospace;font-size:0.68rem;color:var(--chalk-dim);}
.stamp{font-family:'Pacifico',cursive;font-weight:700;font-size:0.85rem;color:var(--herb);border:2px solid var(--herb);border-radius:6px;padding:1px 8px;transform:rotate(-6deg);opacity:0;transition:opacity .2s ease;}
.station.done .stamp{opacity:0.9;}
.station.burning .stamp{opacity:0.9;color:var(--saffron);border-color:var(--saffron);}
.due-control{display:flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;font-size:0.72rem;color:var(--chalk-dim);margin-bottom:16px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:8px;padding:8px 12px;flex-wrap:wrap;}
.due-control button:not(.btn){background:var(--rail);border:1px solid var(--card-border);color:var(--chalk-text);border-radius:5px;width:24px;height:24px;cursor:pointer;font-family:'JetBrains Mono',monospace;}
.due-status{font-weight:700;}
.due-status.ok{color:var(--herb);}
.review-badge{position:absolute;top:8px;right:8px;background:var(--saffron);color:#5B4636;font-family:'JetBrains Mono',monospace;font-size:0.58rem;font-weight:700;padding:2px 6px;border-radius:9px;text-transform:uppercase;}
.sentback-badge{position:absolute;top:8px;right:8px;background:var(--tomato);color:#fff;font-family:'Nunito',sans-serif;font-size:0.75rem;font-weight:800;padding:2px 6px;border-radius:9px;}
.sentback-banner{background:#FBE3E6;border:1px solid var(--tomato);border-radius:10px;padding:12px 14px;margin-bottom:16px;}
.sentback-banner-title{font-family:'Nunito',sans-serif;font-weight:800;font-size:1.1rem;color:#C0526A;margin-bottom:8px;}
.sentback-chips{display:flex;flex-wrap:wrap;gap:6px;}
.sentback-chip{background:var(--tomato);color:#fff;font-family:'Nunito',sans-serif;font-weight:700;font-size:0.9rem;padding:6px 12px;border-radius:14px;cursor:pointer;}
.sentback-chip:hover{opacity:0.85;}
.advance-banner{background:#E7F3E3;border:1px solid var(--herb);border-radius:10px;padding:14px 16px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.advance-banner-title{font-family:'Nunito',sans-serif;font-weight:800;font-size:1.1rem;color:#4F7A4A;}

.detail{background:var(--card-bg);border:1px solid var(--card-border);border-radius:10px;padding:18px;margin-top:16px;display:none;}
.detail.open{display:block;}
.week-report{background:var(--card-bg);border:1px solid var(--card-border);border-radius:10px;padding:18px;margin-top:16px;}
.week-report-title{font-family:'Nunito',sans-serif;font-weight:800;color:var(--saffron);font-size:1.3rem;margin-bottom:12px;}
.week-report-subject{font-family:'JetBrains Mono',monospace;font-size:0.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--chalk-dim);margin:16px 0 8px;}
.week-report-subject:first-of-type{margin-top:0;}
.detail-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px;}
.detail-title{font-size:1.1rem;font-weight:700;}
.detail-tag{font-family:'JetBrains Mono',monospace;font-size:0.7rem;color:var(--chalk-dim);}
.detail-close{background:none;border:none;color:var(--chalk-dim);font-size:1rem;cursor:pointer;}

.task-row{border:1px solid var(--card-border);border-radius:8px;margin-bottom:8px;overflow:hidden;}
.task-head{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;background:#FFF6EC;}
.task-head .dot{width:9px;height:9px;border-radius:50%;background:var(--rail);flex-shrink:0;}
.task-head.done .dot{background:var(--herb);}
.task-head.review .dot{background:var(--saffron);}
.task-head span.label{font-size:0.88rem;flex:1;}
.task-head .status-text{font-family:'JetBrains Mono',monospace;font-size:0.65rem;color:var(--chalk-dim);}
.task-body{padding:14px;display:none;background:var(--input-bg);}
.task-body.open{display:block;}
.lesson-text{font-size:0.87rem;line-height:1.55;color:var(--chalk-text);margin-bottom:12px;}
.lesson-text p{margin:0 0 8px;}
.lesson-text .quote{color:var(--chalk-dim);font-style:italic;border-left:2px solid var(--rail);padding-left:10px;margin:8px 0;}
.vocab-table{width:100%;font-size:0.8rem;border-collapse:collapse;margin-bottom:10px;}
.vocab-table td{padding:6px 4px;border-bottom:1px solid var(--rail);vertical-align:top;}
.vocab-table td:first-child{font-weight:700;color:var(--saffron);white-space:nowrap;}
.mc-options{display:flex;flex-direction:column;gap:6px;margin:10px 0;}
.mc-option{padding:8px 10px;border:1px solid var(--rail);border-radius:6px;font-size:0.85rem;cursor:pointer;background:#FFF9F1;}
.mc-option:hover{border-color:#F0A8B8;}
.mc-option.selected{border-color:var(--saffron);background:#FCEFD9;}
.mc-option.correct{border-color:var(--herb);background:#E7F3E3;}
.mc-option.incorrect{border-color:var(--tomato);background:#FBE3E6;}
textarea{width:100%;min-height:80px;background:#FFFFFF;border:1px solid var(--rail);border-radius:6px;color:var(--chalk-text);font-family:'Nunito',sans-serif;font-size:0.85rem;padding:10px;resize:vertical;}
input[type=text]{width:100%;background:#FFFFFF;border:1px solid var(--rail);border-radius:6px;color:var(--chalk-text);font-family:'JetBrains Mono',monospace;font-size:0.85rem;padding:8px 10px;}
input[type=number]{background:#FFFFFF;border:1px solid var(--rail);border-radius:5px;color:var(--chalk-text);font-family:'JetBrains Mono',monospace;font-size:0.78rem;padding:4px 6px;}
.word-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.fluency-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;padding:8px 10px;border:1px solid var(--card-border);border-radius:8px;flex-wrap:wrap;}
.fluency-row.correct{border-color:var(--herb);background:#F1F8EF;}
.fluency-row.incorrect{border-color:var(--tomato);background:#FBE3E6;}
.fluency-word{font-size:1.3rem;font-weight:700;color:var(--chalk-text);margin-right:auto;}
.fluency-icon{font-size:1.1rem;}
.word-row label{font-size:0.8rem;color:var(--chalk-dim);width:150px;flex-shrink:0;}
.btn{font-family:'JetBrains Mono',monospace;font-size:0.72rem;padding:7px 14px;border-radius:6px;border:1px solid var(--card-border);background:var(--rail);color:var(--chalk-text);cursor:pointer;margin-top:8px;white-space:nowrap;flex-shrink:0;}
.btn.primary{background:var(--saffron);color:#5B4636;border-color:var(--saffron);font-weight:600;}
.btn.done{background:var(--herb);color:#5B4636;border-color:var(--herb);}
.btn:disabled{opacity:0.5;cursor:default;}
.btn.read-aloud-btn{display:inline-flex;align-items:center;gap:6px;background:#FFFBF3;border:1.5px solid var(--saffron);color:var(--saffron);font-weight:700;margin-bottom:12px;}
.btn.read-aloud-btn:hover{background:var(--saffron);color:#fff;}
.btn.word-audio-btn{margin-top:0;margin-left:6px;padding:2px 7px;font-size:0.75rem;background:#FFFBF3;border:1.5px solid var(--saffron);color:var(--saffron);}
.btn.word-audio-btn:hover{background:var(--saffron);color:#fff;}
.score-result{margin-top:10px;font-family:'JetBrains Mono',monospace;font-size:0.8rem;padding:8px 10px;border-radius:6px;}
.score-result.pass{background:#E7F3E3;color:var(--herb);}
.score-result.retry{background:#FBE3E6;color:#C0526A;}
.dict-result{padding:8px 10px;border-radius:6px;margin-bottom:6px;font-size:0.85rem;background:var(--card-bg);border:1px solid var(--card-border);}
.dict-result-typed{color:var(--chalk-text);}
.dict-icon{font-weight:700;margin-right:4px;}
.dict-result.correct .dict-icon{color:var(--herb);}
.dict-result.incorrect .dict-icon{color:var(--tomato);}
.dict-result-answer{font-family:'JetBrains Mono',monospace;font-size:0.78rem;color:var(--saffron);margin-top:3px;}
.word-chip{display:inline-block;padding:3px 8px;border-radius:5px;font-family:'JetBrains Mono',monospace;font-size:0.78rem;margin:2px 3px 2px 0;}
.word-chip.chip-correct{background:#E7F3E3;color:var(--herb);}
.word-chip.chip-incorrect{background:#FBE3E6;color:#C0526A;}
.chip-note{font-size:0.68rem;opacity:0.8;}
.grammar-check{border-top:1px dashed var(--rail);margin-top:8px;padding-top:8px;}
.grammar-line{font-family:'JetBrains Mono',monospace;font-size:0.76rem;margin-bottom:3px;}
.grammar-line.pass{color:var(--herb);}
.grammar-line.fail{color:#C0526A;}
.burn-note{font-family:'JetBrains Mono',monospace;font-size:0.7rem;color:var(--tomato);margin-top:4px;max-width:400px;}
.task-head.locked-task{opacity:0.55;cursor:default;}
.task-head.locked-task .status-text{color:var(--chalk-dim);}
.because-tip{font-size:0.82rem;line-height:1.5;color:var(--chalk-text);background:#FCEFD9;border-left:3px solid var(--saffron);border-radius:6px;padding:8px 10px;margin-bottom:8px;}
.bk .because-tip{font-size:15px;border-radius:12px;}
.parent-feedback{background:#FCEFD9;border:1px solid var(--saffron);color:var(--saffron);font-size:0.82rem;border-radius:6px;padding:8px 10px;margin-bottom:8px;}
.correction-box{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px;padding:8px;border-radius:6px;background:#FFF9F1;border:1px dashed var(--saffron);}
.correction-box input[type=text]{width:auto;flex:1;min-width:120px;}
.correction-box.confirmed{background:#E7F3E3;border:1px solid var(--herb);color:var(--herb);font-weight:600;font-family:'JetBrains Mono',monospace;font-size:0.8rem;display:block;}
.correction-box.wrong{border-color:#C0526A;}
.correction-msg{width:100%;font-family:'JetBrains Mono',monospace;font-size:0.72rem;color:#C0526A;}
.sample-answer{background:var(--tan-bg);border:1px solid var(--tan);color:var(--chalk-text);font-size:0.82rem;line-height:1.45;border-radius:6px;padding:8px 10px;margin:6px 0;}
.sample-answer b{color:var(--herb);}
.parent-notes{background:#FDF3E7;border:1px solid var(--saffron);color:var(--chalk-text);font-size:0.82rem;line-height:1.5;border-radius:6px;padding:10px 12px;margin:10px 0;}
.parent-notes b{display:block;color:var(--saffron);margin-bottom:6px;}
.parent-notes p{margin:6px 0;}
.preview-key{margin-top:8px;display:flex;flex-direction:column;gap:6px;}
.preview-key-item{background:var(--tan-bg);border-left:3px solid var(--tan);border-radius:4px;padding:8px 10px;font-size:0.82rem;line-height:1.4;}
.preview-key-item-dim{background:var(--chalk-bg);border-left:3px solid var(--rail);border-radius:4px;padding:8px 10px;font-size:0.82rem;line-height:1.4;opacity:.65;}
.preview-sentence{font-size:0.87rem;line-height:1.6;}
.preview-sentence .tag{color:var(--chalk-dim);font-size:0.75rem;}
.pos-row{display:flex;flex-wrap:wrap;gap:2px;margin:12px 0;padding:10px;background:var(--input-bg);border-radius:8px;}
.word-slot{position:relative;display:flex;flex-direction:column;align-items:center;margin:4px 8px;cursor:pointer;min-width:44px;}
.word-text{font-size:0.92rem;color:var(--chalk-text);white-space:nowrap;}
.word-label{font-family:'JetBrains Mono',monospace;font-size:0.62rem;border:1px dashed var(--rail);border-radius:4px;padding:2px 6px;margin-top:4px;color:var(--chalk-dim);text-align:center;white-space:nowrap;}
.word-label.correct{border:1px solid var(--herb);color:var(--herb);}
.word-label.incorrect{border:1px solid var(--tomato);color:var(--tomato);}
.word-label.key{border:1px solid var(--tan);color:var(--tan-text);background:var(--tan-bg);}
.pos-popup{position:fixed;max-width:min(320px,calc(100vw - 16px));max-height:min(360px,calc(100vh - 16px));overflow-y:auto;background:var(--card-bg);border:1px solid var(--card-border);border-radius:8px;padding:6px;display:grid;grid-template-columns:repeat(2,1fr);gap:4px;z-index:20;box-shadow:0 6px 16px rgba(0,0,0,.5);}
.pos-popup button{font-family:'JetBrains Mono',monospace;font-size:0.66rem;padding:5px 7px;background:var(--rail);border:1px solid var(--card-border);border-radius:4px;color:var(--chalk-text);cursor:pointer;white-space:nowrap;}
.pos-popup button:hover{border-color:var(--saffron);}
.word-slot.plain-word{cursor:default;opacity:.5;}
.phrase-word.in-phrase .word-text{background:#FCEFD9;border-radius:4px;padding:0 3px;}
.phrase-word.pending-start .word-text{outline:2px solid var(--saffron);border-radius:4px;}
.phrase-type-picker{background:var(--card-bg);border:1px solid var(--saffron);border-radius:8px;padding:12px;margin-top:8px;font-size:0.82rem;display:flex;flex-direction:column;gap:8px;}
.tag-review{margin-top:10px;display:flex;flex-direction:column;gap:6px;}
.tag-review-item{background:#FBE3E6;border-left:3px solid var(--tomato);border-radius:4px;padding:8px 10px;font-size:0.82rem;line-height:1.4;}
.ext-link{display:inline-block;font-family:'JetBrains Mono',monospace;font-size:0.75rem;color:var(--saffron);border:1px solid var(--saffron);border-radius:6px;padding:6px 12px;text-decoration:none;margin-bottom:10px;}
.review-queue{margin-top:28px;}
.review-queue h3{font-family:'Nunito',sans-serif;font-weight:800;color:var(--saffron);font-size:1.25rem;margin-bottom:10px;}
.review-item{background:var(--card-bg);border:1px solid var(--card-border);border-radius:10px;padding:12px 14px;margin-bottom:8px;}
.review-item strong{display:block;font-size:0.92rem;margin-bottom:2px;}
.review-item .meta{font-family:'JetBrains Mono',monospace;font-size:0.7rem;color:var(--chalk-dim);margin-bottom:6px;}
.review-item .submitted-text{font-size:0.83rem;color:var(--chalk-text);background:#FFF6EC;border-radius:6px;padding:8px 10px;margin:6px 0;white-space:pre-wrap;}
.review-item.answer-log-correct{border-left:4px solid var(--herb);background:#F1F8EF;}
.review-item.answer-log-wrong{border-left:4px solid var(--tomato);background:#FDF0F1;}
.review-item.needs-attention{border-left:6px solid var(--sky);background:var(--sky-bg);box-shadow:0 0 0 1px var(--sky);}
.review-actions button{font-family:'JetBrains Mono',monospace;font-size:0.7rem;padding:5px 11px;border-radius:6px;border:1px solid var(--card-border);background:var(--rail);color:var(--chalk-text);cursor:pointer;margin-right:6px;margin-top:6px;}
.review-actions button.approve{background:var(--herb);color:#5B4636;border-color:var(--herb);}
.graded-note{font-family:'JetBrains Mono',monospace;font-size:0.72rem;color:var(--herb);margin-top:4px;}
.empty-note{color:var(--chalk-dim);font-size:0.85rem;font-style:italic;}
footer{margin-top:36px;text-align:center;font-family:'JetBrains Mono',monospace;font-size:0.66rem;color:#B89A82;}

/* --- setup / connection screen --- */
.setup-overlay{position:fixed;inset:0;background:rgba(91,70,54,0.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;}
.setup-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;padding:26px;max-width:480px;width:100%;box-shadow:0 12px 32px rgba(91,70,54,0.25);}
.setup-card h2{font-family:'Nunito',sans-serif;font-weight:800;color:var(--tomato);margin:0 0 10px;font-size:1.4rem;}
.setup-card p{font-size:0.85rem;line-height:1.5;margin:0 0 12px;}
.setup-card input[type=text]{margin-bottom:10px;}
.setup-error{color:var(--tomato);font-size:0.8rem;margin-bottom:10px;}
.loading-note{text-align:center;color:var(--chalk-dim);font-family:'JetBrains Mono',monospace;font-size:0.8rem;padding:40px 0;}

/* Tag picker is docked BELOW the sentence (in flow), never floated over it: the sentence words must always stay visible. */
.word-slot.active-word .word-text{outline:2px solid var(--saffron);border-radius:4px;}
.pos-tray{margin:0 0 12px;padding:10px;background:var(--card-bg);border:1px solid var(--saffron);border-radius:8px;}
.pos-tray-title{font-size:0.82rem;color:var(--chalk-text);margin-bottom:8px;}
.pos-tray-options{display:flex;flex-wrap:wrap;gap:6px;}
.pos-tray-options button{font-family:'JetBrains Mono',monospace;font-size:0.72rem;padding:6px 10px;background:var(--rail);border:1px solid var(--card-border);border-radius:4px;color:var(--chalk-text);cursor:pointer;}
.pos-tray-options button:hover{border-color:var(--saffron);}
.pos-tray-options button.picked{background:var(--saffron);color:#000;border-color:var(--saffron);}
.pos-tray-options button.tray-done{border-color:var(--herb);color:var(--herb);}
/* A student's submitted answer waiting on parent review: blue, so it stands out from the tan teacher notes. */
.submitted-text.student-answer,.review-item .submitted-text.student-answer{background:var(--sky-bg);border-left:4px solid var(--sky);color:#1F3F66;}
.review-jump-chip{display:inline-block;background:var(--sky-bg);border:1px solid var(--sky);color:#1F3F66;border-radius:14px;padding:4px 10px;font-size:0.78rem;cursor:pointer;margin:0 6px 6px 0;}
.review-jump-chip:hover{background:var(--sky);color:#fff;}
.waiting-on-you{margin:0 0 16px;padding:12px 14px;background:var(--sky-bg);border:1px solid var(--sky);border-left:6px solid var(--sky);border-radius:10px;}
.waiting-on-you h3{font-family:'Nunito',sans-serif;font-weight:800;color:var(--sky);font-size:1.25rem;margin:0 0 8px;}
.btn.redo-btn{background:#FFFBF3;border:1.5px solid var(--tan);color:var(--tan-text);margin-top:12px;}
.btn.redo-btn:hover{background:var(--tan-bg);}
.sendback-box{margin-top:10px;font-size:0.82rem;}
.sendback-box summary{cursor:pointer;color:var(--tan-text);font-weight:600;}
.sendback-box textarea{margin-top:6px;}

/* Title on top-center; big color-coded kid picker so it's obvious whose work this is. */
.board{--kid:#3E9C9A;}
.board[data-child="kenley"]{--kid:#3E9C9A;}
.board[data-child="adelyn"]{--kid:#D9707D;}
.board-titlebar{text-align:center;margin:4px 0 8px;}
.board-titlebar .board-title{font-size:2.4rem;}
.who-label{text-align:center;font-family:'JetBrains Mono',monospace;font-size:0.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--chalk-dim);margin-bottom:8px;}
.child-switcher{gap:10px;margin-bottom:14px;}
.child-pill{flex:1;max-width:170px;font-size:1.05rem;padding:9px 16px;border-radius:12px;border-width:2.5px;text-align:center;}
.child-pill.kid-kenley{border-color:#3E9C9A;color:#3E9C9A;}
.child-pill.kid-adelyn{border-color:#D9707D;color:#D9707D;}
.child-pill.kid-kenley.active{background:#3E9C9A;border-color:#3E9C9A;color:#fff;box-shadow:0 4px 12px rgba(62,156,154,0.45);}
.child-pill.kid-adelyn.active{background:#D9707D;border-color:#D9707D;color:#fff;box-shadow:0 4px 12px rgba(217,112,125,0.45);}
.child-pill:not(.active){opacity:.7;}
.child-pill:hover:not(.active){opacity:1;}
.board-header{border-bottom:4px solid var(--kid);}
.kid-banner{display:inline-block;background:var(--kid);color:#fff;font-family:'Pacifico',cursive;font-size:1.15rem;padding:3px 14px;border-radius:14px;margin-bottom:6px;}

/* Subject cards get a top edge in the selected kid's color. */
.station{border-top:4px solid color-mix(in srgb, var(--kid) 60%, #fff);}
.station:hover{border-color:var(--kid);}
.station.done{border-color:var(--herb);border-top-color:var(--herb);}
.station.burning{border-top-color:var(--saffron);}

/* Whole page takes a soft tint of the selected kid's color; cards stay cream so they pop. */
body[data-child="kenley"]{background:#E2F1EE;background-image:none;}
body[data-child="adelyn"]{background:#FCE5E9;background-image:none;}
.board-titlebar .board-title{color:#B39A86;}

/* Finished sections fade back so what's left stands out. */
.station.done{opacity:.6;}
.station.done:hover,.station.done.active{opacity:1;}
/* Stamp slams down when a plate is newly served. */
@keyframes stampIn{0%{transform:scale(2.6) rotate(-18deg);opacity:0;}55%{transform:scale(0.9) rotate(-6deg);opacity:1;}75%{transform:scale(1.12) rotate(-6deg);}100%{transform:scale(1) rotate(-6deg);opacity:.9;}}
.station.done.stamp-new{opacity:1;animation:stationFade 1.8s ease 1.2s forwards;}
.station.done.stamp-new .stamp{animation:stampIn .55s cubic-bezier(.2,.9,.3,1.2) both;}
@keyframes stationFade{to{opacity:.6;}}
/* Calmer parent view; the colored banner + header line + kid picker still say whose page it is. */
body[data-view="parent"][data-child]{background:#F0EAE0;background-image:none;}
/* Bigger tap targets on touch screens (iPad). 16px inputs also stop iOS zooming in on focus. */
@media (pointer:coarse){
  .btn{min-height:44px;padding:10px 18px;font-size:0.8rem;}
  .child-pill{min-height:48px;}
  .task-head{min-height:52px;}
  .mc-option{padding:14px 12px;}
  .word-slot{min-width:60px;padding:6px 4px;}
  .word-label{padding:6px 10px;font-size:0.72rem;}
  .pos-tray-options button{min-height:46px;padding:10px 16px;font-size:0.8rem;}
  .review-actions button{min-height:44px;padding:10px 18px;}
  .review-jump-chip{padding:9px 14px;}
  .sentback-chip{padding:9px 14px;}
  .sendback-box summary{padding:10px 0;}
  .due-control button:not(.btn){width:40px;height:40px;}
  .detail-close{min-height:44px;padding:8px 14px;}
  input,textarea,select{font-size:16px;}
}
.advance-banner-sub{font-size:0.85rem;color:var(--chalk-text);margin:4px 0 8px;line-height:1.4;}
.advance-banner-quiet{background:transparent;border:1px dashed var(--rail);padding:8px 12px;}
.advance-banner-quiet .advance-banner-sub{margin:0 0 6px;color:var(--chalk-dim);}
.advance-banner .btn[disabled]{opacity:.5;cursor:not-allowed;}
.cf-report{background:var(--tan-bg);border-left:3px solid var(--tan);border-radius:6px;padding:10px 12px;margin:8px 0;font-size:0.84rem;line-height:1.5;}
.cf-summary{color:var(--chalk-dim);margin:3px 0 6px;font-size:0.78rem;}
.cf-miss-title{margin-top:8px;font-weight:700;}
.cf-miss{margin:3px 0;}
.cf-empty,.cf-note{color:var(--chalk-dim);font-size:0.76rem;margin-top:6px;}
.why-note{margin-top:6px;border-radius:4px;padding:8px 10px;font-size:0.82rem;line-height:1.45;}
.why-note.why-right{background:#E7F3E3;border-left:3px solid var(--herb);}
.why-note.why-miss{background:var(--tan-bg);border-left:3px solid var(--tan);}
.attempt-history{margin:8px 0;font-size:0.84rem;}
.attempt-history summary{cursor:pointer;font-weight:700;color:var(--tan-text);padding:4px 0;}
.attempt{background:var(--tan-bg);border-left:3px solid var(--tan);border-radius:4px;padding:8px 10px;margin:6px 0;}
.attempt-head{margin-bottom:4px;}
.attempt-dim{color:var(--chalk-dim);font-size:0.78rem;}
.attempt-text{white-space:pre-wrap;line-height:1.5;margin:4px 0;}
.attempt-line{margin:2px 0;line-height:1.45;}
.attempt-current-label{font-family:'JetBrains Mono',monospace;font-size:0.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--sky);margin:8px 0 2px;}

/* Grade sheet (report card) */
.grade-overlay{position:fixed;inset:0;z-index:50;background:#F0EAE0;overflow-y:auto;padding:16px;}
.grade-toolbar{max-width:820px;margin:0 auto 12px;display:flex;gap:8px;justify-content:flex-end;}
.grade-sheet{max-width:820px;margin:0 auto;background:#fff;border:1px solid var(--card-border);border-radius:10px;padding:28px 32px;color:#3F3226;font-size:0.9rem;}
.grade-title{font-family:'Pacifico',cursive;color:#B39A86;font-size:1.3rem;text-align:center;}
.grade-sheet h2{text-align:center;margin:4px 0;font-size:1.5rem;font-weight:800;}
.grade-sheet h3{margin:22px 0 6px;font-size:1.05rem;font-weight:800;display:flex;justify-content:space-between;border-bottom:2px solid var(--rail);padding-bottom:4px;}
.grade-h3-pct{color:var(--tan-text);}
.grade-meta{text-align:center;color:var(--chalk-dim);font-size:0.8rem;margin-bottom:14px;}
.grade-overall{text-align:center;background:var(--tan-bg);border-radius:10px;padding:12px;margin:10px 0 16px;}
.grade-overall-num{font-size:2.4rem;font-weight:800;line-height:1;}
.grade-overall-letter{font-size:1.3rem;font-weight:800;color:var(--tan-text);}
.grade-overall-label{font-size:0.78rem;color:var(--chalk-dim);margin-top:2px;}
.grade-table{width:100%;border-collapse:collapse;font-size:0.84rem;}
.grade-table th{text-align:left;background:var(--rail);padding:6px 8px;font-size:0.74rem;text-transform:uppercase;letter-spacing:.04em;}
.grade-table td{padding:6px 8px;border-bottom:1px solid var(--rail);vertical-align:top;}
.grade-table .num{text-align:right;white-space:nowrap;}
.grade-dim{color:var(--chalk-dim);font-size:0.78rem;}
.grade-foot{margin-top:20px;font-size:0.74rem;color:var(--chalk-dim);line-height:1.5;border-top:1px solid var(--rail);padding-top:10px;}
@media print{
  body.grade-open .board,body.grade-open .setup-overlay,body.grade-open #loadingNote,.no-print{display:none !important;}
  body.grade-open{background:#fff !important;padding:0;}
  .grade-overlay{position:static;background:#fff;padding:0;overflow:visible;}
  .grade-sheet{border:none;padding:0;max-width:none;}
  .grade-table tr{page-break-inside:avoid;}
}
.grade-sheet h4{margin:12px 0 4px;font-size:0.86rem;font-weight:800;color:var(--tan-text);}
.grade-sheet ul{margin:0 0 6px;padding-left:20px;line-height:1.5;}
.grade-sheet p{margin:4px 0;line-height:1.5;}
.g-chip{display:inline-block;padding:2px 9px;border-radius:10px;font-size:0.76rem;font-weight:700;white-space:nowrap;}
.g-strong{background:#DDF0D9;color:#3E7A38;}
.g-solid{background:#EAF3D9;color:#5B7A2E;}
.g-dev{background:var(--tan-bg);color:var(--tan-text);}
.g-review{background:#FBE0D0;color:#B4502C;}
.g-none{background:var(--rail);color:var(--chalk-dim);}
.g-test{background:var(--tan-bg);color:var(--tan-text);font-size:0.68rem;}
.grade-test-row td{background:#FBF6EC;font-weight:600;}
.grade-entry{margin:8px 0;padding:8px 10px;background:#fff;border:1px solid var(--sky);border-radius:6px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:0.84rem;}
.grade-entry input{width:80px;padding:6px 8px;border:1px solid var(--rail);border-radius:5px;font-size:0.9rem;}
.grade-entry-letter{font-weight:800;min-width:70px;}
.grade-entry-note{flex-basis:100%;color:var(--chalk-dim);font-size:0.74rem;}
.projects-box{margin:18px 0;padding:14px 16px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:12px;}
.projects-box h3{margin:0 0 8px;font-family:'Nunito',sans-serif;font-weight:800;color:var(--tan-text);}
.project-form{display:flex;flex-direction:column;gap:8px;margin:10px 0;padding:10px;background:var(--tan-bg);border-radius:8px;}
.project-form label{display:flex;flex-direction:column;gap:3px;font-size:0.8rem;font-weight:700;}
.project-form input,.project-form select{padding:7px 9px;border:1px solid var(--rail);border-radius:6px;font-size:0.9rem;font-family:'Nunito',sans-serif;}
.project-card{margin-top:10px;}
.project-kid{border:1px solid var(--rail);border-radius:10px;margin:8px 0;overflow:hidden;}
.g-soon{background:#fff;color:var(--tan-text);border:1px dashed var(--tan);}
.std-summary{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px;}
.grade-sheet .grade-table td div.grade-dim{margin-top:2px;}
.g-manual{background:#fff;color:var(--chalk-dim);border:1px dashed var(--chalk-dim);}
.std-entries{margin-top:4px;}
.std-entry{font-size:0.8rem;margin:2px 0;color:var(--chalk-text);}
.std-x{border:none;background:none;color:var(--chalk-dim);cursor:pointer;font-size:1rem;line-height:1;padding:0 4px;}
.std-log{margin-top:6px;border:1px dashed var(--tan);background:#fff;color:var(--tan-text);border-radius:6px;padding:4px 10px;font-size:0.76rem;cursor:pointer;font-family:'Nunito',sans-serif;font-weight:700;}
.std-form{display:flex;flex-direction:column;gap:5px;margin-top:6px;padding:8px;background:var(--tan-bg);border-radius:6px;}
.std-form input,.std-form select{padding:5px 7px;border:1px solid var(--rail);border-radius:5px;font-size:0.82rem;font-family:'Nunito',sans-serif;}
@media print{.std-log,.std-form,.std-x{display:none !important;}}
