/* Extensão visual da Parte 2. O tema e as telas da Parte 1 são preservados. */
.roster-tools,.roster-bottom{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;margin:22px 0}
.roster-switch{display:flex;gap:8px;flex-wrap:wrap}.roster-switch .selected{background:#e6efff;border:2px solid #2860b8}
.roster-grid{gap:20px}.student-card{border:2px solid #dce9ed;border-bottom:5px solid #83be96;border-radius:20px;background:white;overflow:hidden;min-width:0}
.student-main{border:0;background:transparent;width:100%;height:100%;display:flex;align-items:center;flex-direction:column;gap:12px;padding:20px 14px;color:#244976;overflow-wrap:anywhere}
.student-main:hover{background:#f5f9ff}.student-main:focus-visible{outline-offset:-5px}.student-main .name{font-size:21px;font-weight:900;line-height:1.2;text-align:center}
.student-avatar{display:grid;place-items:center;width:98px;height:98px;flex-shrink:0;border-radius:50%;background:#fff2cb;border:4px solid #e5efff;overflow:hidden;font-size:66px;line-height:1}
.student-avatar img{display:block;width:100%;height:100%;object-fit:cover}.student-avatar.large{width:145px;height:145px;font-size:99px;border-width:6px}
.hypothesis{font-size:15px;font-weight:800;text-align:center;background:#eff4fb;border-radius:14px;padding:6px 10px;line-height:1.35}.presence-state{color:#236339;font-weight:900;font-size:14px}
.student-card.absent{background:#f3f1ed;border-color:#babdbd}.student-card.absent .presence-state{color:#626973}.student-card.absent .student-avatar{opacity:.7}.profile-link{font-weight:800;color:#285cb0}
.local-note{font-size:14px;color:#62718a;line-height:1.6;margin-top:22px}.saved-notice{border-radius:12px;padding:14px 18px;margin-bottom:20px;background:#e9f8e8;color:#235e34;font-weight:800}
.profile-summary{display:flex;align-items:center;gap:30px}.profile-summary h2{font-size:36px;overflow-wrap:anywhere}.profile-summary p{margin:12px 0 5px;color:#5c6e85}.profile-hypothesis{font-size:24px;color:#224c92}
.status-badge{display:inline-block;background:#e6f5e8;color:#226439;border-radius:16px;padding:5px 12px;font-size:14px;font-weight:900;margin-top:10px}.archived-badge{background:#edf0f4;color:#5a6478;border-radius:16px;padding:5px 12px;font-size:14px;font-weight:900}
.profile-summary .created-date{font-size:14px;margin-top:18px}.profile-actions{justify-content:flex-start}.archive-action{color:#875824}.history-panel{margin-top:30px}.history-panel h2{font-size:29px}.history-list{list-style:none;padding:0;margin:25px 0 0}.history-list li{display:flex;gap:26px;border-left:4px solid #8db2e8;border-bottom:1px solid #edf0f7;padding:18px 20px;font-size:18px;line-height:1.6}.history-list time{color:#65768e;white-space:nowrap;font-size:15px}.history-list small{display:block;color:#68768b;font-size:14px}.history-arrow{color:#38814e}
.student-form{display:grid;grid-template-columns:250px 1fr;gap:45px}.form-avatar{display:flex;flex-direction:column;align-items:center;gap:15px;text-align:center}.form-avatar p{font-size:14px;line-height:1.6;color:#64758c}.form-fields{display:flex;flex-direction:column;gap:12px}.form-fields label{font-size:20px;font-weight:900}.form-fields input,.form-fields select{font:inherit;font-size:19px;padding:14px;border:2px solid #c7d9ed;border-radius:12px;background:white;color:#173c79;min-width:0;width:100%}.form-fields input:focus-visible,.form-fields select:focus-visible,.upload-label:focus-within{outline:3px solid #f1c744;outline-offset:3px}.field-hint{color:#61718b;font-size:15px;line-height:1.6;margin-top:4px}.form-fields label:not(:first-child){margin-top:15px}.form-error,.form-avatar .form-error{color:#9c2929;font-weight:800;line-height:1.5}.form-error:empty{display:none}
.upload-label{cursor:pointer}.form-avatar input[type=file]{font:inherit;font-size:14px;max-width:100%;color:#567092}.student-form button:disabled{opacity:.55}.archive-dialog{width:min(520px,92vw);border:2px solid #bfd3ee;border-radius:24px;padding:30px;color:#23497b;font:inherit;box-shadow:0 20px 90px #05295640}.archive-dialog::backdrop{background:#0a204b80}.archive-dialog h2{font-size:31px}.archive-dialog p{font-size:18px;line-height:1.6;margin-top:15px}.archive-dialog .archive-name{font-weight:900;overflow-wrap:anywhere}
@media(max-width:950px){.roster-grid{grid-template-columns:repeat(3,1fr)}.student-form{grid-template-columns:200px 1fr;gap:25px}}
@media(max-width:650px){.roster-grid{grid-template-columns:repeat(2,1fr);gap:12px}.student-main{padding:16px 9px}.student-main .name{font-size:19px}.hypothesis{font-size:14px}.student-avatar{width:85px;height:85px;font-size:58px}.student-form{grid-template-columns:1fr}.profile-summary{flex-direction:column;align-items:flex-start}.profile-summary h2{font-size:30px}.history-list li{flex-direction:column;gap:6px;padding:15px}.roster-tools .primary{width:100%}.roster-switch{width:100%}.roster-switch button{flex:1}.profile-hypothesis{font-size:21px}}

.test-participants-title{grid-column:1/-1;border-top:2px solid #d4dfef;padding-top:1rem;font-size:1.2rem}.test-participants-title small{display:block;font-size:.85rem;font-weight:400;margin-top:.4rem}

.roster-review{margin:1rem 0}.roster-review-row{padding:1rem 0;border-bottom:1px solid #d4dfef}.roster-review-row h2{font-size:1.05rem}.roster-review-row label{display:block;margin:.5rem 0}.roster-review-row select{max-width:100%;padding:.5rem}#class-roster-error{color:#a32121}

/* Shared class selection: database records remain the source of truth. */
.class-participants{margin:24px 0;padding:24px;background:#fff;border-radius:20px;grid-column:1/-1}
.class-participant-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin:18px 0}
.class-participant{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px;border:2px solid #cbd5e1;border-radius:16px;background:#fff;color:#173569;cursor:pointer}
.class-participant[aria-pressed=true]{border-color:#166534;background:#edf9ed}
.class-participant:focus-visible{outline:3px solid #173569;outline-offset:3px}
.class-participants details{margin-top:20px}.class-participants summary{cursor:pointer;font-weight:bold}
.class-group-members label{display:inline-flex!important;align-items:center;gap:10px;margin:6px;padding:10px;border:1px solid #cbd5e1;border-radius:12px}

.avatar-library{max-width:100%}.avatar-library>div{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.avatar-library button{padding:2px;border:2px solid #bdd3df;border-radius:12px;background:white;cursor:pointer}.avatar-library button:focus-visible{outline:3px solid #215fad}.avatar-library img{display:block;max-width:100%}
