.student-roster{background:#fff;padding:18px;border-radius:14px;margin:18px 0}.student-roster summary{cursor:pointer;font-weight:700}.student-list{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.student-link{display:inline-block;padding:10px 14px;background:#f1f7f2;border-radius:10px;text-decoration:none}.review-actions{border-top:1px solid #e1e9e4;margin-top:16px}.review-actions button{margin:5px 0}.review-entry{background:#f5faf6;padding:20px;border-radius:12px;margin:14px 0}.review-entry p{white-space:pre-wrap}.criterion{display:flex;align-items:center;gap:12px;padding:10px;font-weight:400}.criterion input{width:20px;height:20px;flex:none}fieldset{border:1px solid #c5dccc;border-radius:12px;margin:14px 0}legend{font-weight:700;padding:0 8px}textarea{font:inherit;width:100%;padding:12px;border:1px solid #bad2c3;border-radius:10px}.review-retry{margin:12px 0;background:#fff2cd}.star-total{font-size:32px;color:#a16e00}.student-hero{background:#fff;border-radius:18px;padding:26px;margin:24px 0}@media(min-width:850px){#review-criteria{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}#review-criteria fieldset{margin:8px 0;padding:10px}#review-criteria .criterion{padding:8px 2px;align-items:flex-start;font-size:16px}#review-dialog{max-width:1100px}#review-comment{min-height:90px}}

.batch-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:18px 0}.student-choice,.group-choice{display:flex;align-items:center;gap:8px}.student-choice input,.group-choice input{width:20px;height:20px;flex:none}.reward-popup{position:fixed;inset:0;z-index:2147483647;pointer-events:none;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#12382b66;animation:reward-fade 3s both}.reward-popup p{position:relative;z-index:2;background:white;color:#245b43;padding:24px;border-radius:24px;max-width:min(90vw,800px);font-size:clamp(20px,3vw,32px);font-weight:bold;text-align:center;box-shadow:0 15px 60px #0003}.reward-star{font-size:100px;animation:reward-bounce .7s ease-out}.reward-confetti{position:absolute;left:var(--x);top:-5%;width:12px;height:20px;background:#ffc938;animation:reward-fall 2.6s var(--delay) linear both}.reward-confetti:nth-child(3n){background:#72dbb5}.reward-confetti:nth-child(3n+1){background:#ffa6ca}@keyframes reward-fall{to{transform:translateY(110vh) rotate(700deg)}}@keyframes reward-bounce{from{transform:scale(.1) rotate(-40deg)}to{transform:scale(1)}}@keyframes reward-fade{0%{opacity:0}10%,85%{opacity:1}100%{opacity:0}}@media(prefers-reduced-motion:reduce){.reward-popup,.reward-star,.reward-confetti{animation:none}.reward-confetti{display:none}}

.review-more{position:relative}.review-more summary{cursor:pointer;padding:10px;border-radius:10px;border:1px solid #b7cec2;background:white}.review-more-items{display:flex;flex-wrap:wrap;gap:8px;padding:10px 0}.review-more:not([open]) .review-more-items{display:none}

.remote-qr{max-width:340px;margin:16px auto;background:white}.remote-qr svg{display:block;width:100%;height:auto}.remote-pair-dialog{max-width:560px}.remote-pair-dialog a{display:block;margin:14px 0}.remote-status{margin:8px 0}

.reward-popup p{max-height:72vh;overflow:auto;overflow-wrap:anywhere;font-size:clamp(18px,2.2vw,30px)}
