/* EduTrack Part 4 dense-interface presentation layer. Existing fields, columns, validation and handlers remain unchanged. */
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:var(--et-space-5)!important}.form-group{display:flex;flex-direction:column;gap:var(--et-space-2)!important;min-width:0}.form-group label,.field-label,.form-label{font-size:.76rem!important;font-weight:700!important;color:var(--et-color-text-secondary)!important;line-height:1.3!important}.form-group label.required::after,.field-label.required::after,.form-label.required::after{content:' *';color:var(--et-color-danger);font-weight:800}.form-group small,.form-help,.helper-text{color:var(--et-color-text-muted)!important;font-size:.72rem!important;line-height:1.45}.form-group input,.form-group select,.form-group textarea,.field-input,.form-control{min-height:var(--et-touch-target);border:1px solid var(--et-color-border)!important;border-radius:var(--et-radius-sm)!important;background:var(--et-color-surface)!important;color:var(--et-color-text)!important;font:400 .88rem/1.35 var(--et-font-body)!important;padding:var(--et-space-3)!important;transition:border-color var(--et-duration-fast) ease,box-shadow var(--et-duration-fast) ease!important}.form-group textarea{min-height:96px;resize:vertical}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.field-input:focus,.form-control:focus{border-color:var(--et-color-primary)!important;box-shadow:0 0 0 3px rgba(14,124,134,.12)!important;outline:0!important}.form-group input[aria-invalid="true"],.form-group select[aria-invalid="true"],.form-group textarea[aria-invalid="true"],.field-error,.score-field-error{border-color:var(--et-color-danger)!important;background:#fff8f7!important;box-shadow:0 0 0 3px rgba(192,57,43,.1)!important}.validation-error,.field-error-message,.error-message{color:var(--et-color-danger)!important;font-size:.74rem!important;line-height:1.4}.filter-bar,.search-bar,.toolbar,.table-toolbar{display:flex;align-items:end;gap:var(--et-space-3)!important;flex-wrap:wrap;padding:var(--et-space-4)!important;border:1px solid var(--et-color-border);border-radius:var(--et-radius-md);background:#fbfcfe;margin-bottom:var(--et-space-5)!important}.filter-bar .form-group,.table-toolbar .form-group{flex:1 1 160px;min-width:140px}.search-bar input{min-height:var(--et-touch-target)!important;border-radius:var(--et-radius-sm)!important;border:1px solid var(--et-color-border)!important}.search-bar::before{color:var(--et-color-text-muted)!important}.btn-bar,.button-bar,.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--et-space-3);flex-wrap:wrap;margin-top:var(--et-space-5)}
.tbl-wrap,.table-wrap,.attend-table-wrap,[class$="-table-wrap"],[class$="-tbl-wrap"]{overflow-x:auto!important;overflow-y:visible;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#b8c8d9 transparent}.tbl-wrap::after,.table-wrap::after,.attend-table-wrap::after{content:'Swipe horizontally to view more';display:block;padding:var(--et-space-2) var(--et-space-3);color:var(--et-color-text-muted);font-size:.68rem;text-align:right;background:#fbfcfe;border-top:1px solid var(--et-color-border)}.tbl-wrap table,.table-wrap table,.attend-table,.score-table,.broadsheet-table,.pa-table,.heatmap-table{border-collapse:separate;border-spacing:0}.tbl-wrap thead th,.table-wrap thead th,.attend-table th,.score-table th,.broadsheet-table th{position:sticky;top:0;z-index:2;background:#f3f7fb!important;color:var(--et-color-text-secondary)!important;border-bottom:1px solid var(--et-color-border)!important;font-size:.7rem!important;font-weight:800!important;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.tbl-wrap tbody tr:hover td,.table-wrap tbody tr:hover td,.attend-table tbody tr:hover td,.score-table tbody tr:hover td{background:rgba(14,124,134,.045)!important}.tbl-wrap td,.tbl-wrap th,.table-wrap td,.table-wrap th{padding:var(--et-space-3) var(--et-space-4)!important;vertical-align:middle}.score-table,.attend-table,.broadsheet-table{min-width:44rem!important}.score-table .score-input{min-width:64px;min-height:40px;border-radius:var(--et-radius-sm);text-align:center}.score-table .score-input:focus{border-color:var(--et-color-primary);box-shadow:0 0 0 3px rgba(14,124,134,.12)}.score-table th:first-child,.score-table td:first-child,.attend-table th.left:first-child,.attend-table td.left:first-child,.broadsheet-table th:first-child,.broadsheet-table td:first-child{position:sticky;left:0;z-index:3;background:var(--et-color-surface)!important;box-shadow:4px 0 8px rgba(13,27,62,.06)}.score-table thead th:first-child,.attend-table thead th.left:first-child,.broadsheet-table thead th:first-child{z-index:4;background:#f3f7fb!important}.attend-status-btn{min-width:40px;min-height:40px;border-radius:var(--et-radius-pill)!important;cursor:pointer;touch-action:manipulation}.status-badge,.grade-pill,.badge{display:inline-flex;align-items:center;justify-content:center;min-height:26px;padding:0 var(--et-space-3);border-radius:var(--et-radius-pill);font-size:.7rem;font-weight:800;white-space:nowrap}
.modal-overlay,.ems-sync-overlay{z-index:4000!important;background:rgba(13,27,62,.48)!important;backdrop-filter:blur(2px);padding:var(--et-space-4)!important}.modal,.ems-sync-modal{border:1px solid rgba(219,227,238,.9);border-radius:var(--et-radius-lg)!important;box-shadow:var(--et-shadow-lg)!important;max-height:min(90vh,820px);overscroll-behavior:contain}.modal-header{padding:var(--et-space-5) var(--et-space-6)!important;background:var(--et-color-surface)!important;border-bottom:1px solid var(--et-color-border)!important}.modal-header h3{font-family:var(--et-font-display)!important;font-size:1rem!important}.modal-close{min-width:var(--et-touch-target)!important;min-height:var(--et-touch-target)!important;background:var(--et-color-bg)!important;color:var(--et-color-text-secondary)!important}.modal-close:focus-visible{outline:3px solid rgba(18,168,181,.32);outline-offset:2px}.modal-body{padding:var(--et-space-6)!important}.modal-footer{padding:var(--et-space-4) var(--et-space-6)!important;background:#fbfcfe;border-top:1px solid var(--et-color-border)!important;position:sticky;bottom:0;z-index:2}.tabs,.tab-bar{display:flex;gap:var(--et-space-2);flex-wrap:wrap;border-bottom:1px solid var(--et-color-border);margin-bottom:var(--et-space-5)}.tabs button,.tab-bar button,.tab{min-height:var(--et-touch-target);border:0;border-bottom:3px solid transparent;background:transparent;color:var(--et-color-text-muted);font-weight:700;padding:0 var(--et-space-4);cursor:pointer}.tabs button:hover,.tab-bar button:hover,.tab:hover,.tabs button.active,.tab-bar button.active,.tab.active{color:var(--et-color-primary);border-bottom-color:var(--et-color-primary)}.pagination{display:flex;align-items:center;justify-content:center;gap:var(--et-space-2);flex-wrap:wrap;margin-top:var(--et-space-5)}.pagination button,.pagination a{min-width:var(--et-touch-target);min-height:var(--et-touch-target);display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--et-color-border);border-radius:var(--et-radius-sm);background:var(--et-color-surface);color:var(--et-color-text-secondary);cursor:pointer}.pagination button:hover,.pagination a:hover,.pagination .active{border-color:var(--et-color-primary);color:var(--et-color-primary);background:rgba(14,124,134,.06)}select{position:relative;z-index:5}@media(max-width:700px){.form-grid{grid-template-columns:1fr!important;gap:var(--et-space-4)!important}.filter-bar,.search-bar,.toolbar,.table-toolbar{align-items:stretch;padding:var(--et-space-3)!important}.filter-bar .form-group,.table-toolbar .form-group{flex-basis:100%;min-width:100%}.btn-bar,.button-bar,.form-actions{justify-content:stretch}.btn-bar>* ,.button-bar>*,.form-actions>*{flex:1 1 100%}.modal-overlay,.ems-sync-overlay{align-items:flex-end!important;padding:0!important}.modal,.ems-sync-modal{max-width:100%!important;width:100%!important;border-radius:var(--et-radius-lg) var(--et-radius-lg) 0 0!important;max-height:92vh}.modal-body{padding:var(--et-space-4)!important}.modal-footer{padding:var(--et-space-3) var(--et-space-4)!important}.modal-footer>*{flex:1 1 0}.tbl-wrap::after,.table-wrap::after,.attend-table-wrap::after{font-size:.64rem}.score-table,.attend-table,.broadsheet-table{min-width:44rem!important}}@media(prefers-reduced-motion:reduce){.form-group input,.form-group select,.form-group textarea,.modal-close{transition:none!important}}
