*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f5f5;color:#1a1a1a}input,select,button,textarea{font-family:inherit;line-height:1.4}:root{--field-padding: .45rem .6rem;--field-padding-lg: .75rem;--field-height: 2.75rem;--font-field: .9rem;--font-label: .85rem;--font-small: .75rem;--btn-padding-sm: .4rem .75rem;--btn-padding-xs: .3rem .6rem}#app{max-width:600px;margin:0 auto;padding:1rem}header{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-bottom:2px solid #4f46e5;margin-bottom:1rem}.header-brand{display:flex;align-items:center;gap:.6rem;min-width:0}.app-logo{width:2.25rem;height:2.25rem;object-fit:contain;border-radius:4px;flex-shrink:0}header h1{font-size:1.1rem;color:#4f46e5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-footer{margin-top:2rem;padding:1rem 0;text-align:center;font-size:.75rem;color:#9ca3af}.hidden{display:none}button{padding:.5rem 1rem;border:none;border-radius:6px;cursor:pointer;font-size:.9rem}#sign-out-btn{background:#ef4444;color:#fff}.login-form{max-width:320px;margin:2rem auto}.login-form h2{margin-bottom:1rem}.login-form input{width:100%;padding:var(--field-padding-lg);margin-bottom:.75rem;border:1px solid #d1d5db;border-radius:6px;font-size:1rem}.login-form button{width:100%;background:#4f46e5;color:#fff;padding:var(--field-padding-lg);font-size:1rem}.forgot-password-link{text-align:center;margin-top:.75rem}.forgot-password-link a{color:#4f46e5;font-size:.85rem;text-decoration:none}#reset-form{margin-top:.75rem}.error{color:#ef4444;margin-top:.5rem}.success{color:#22c55e;margin-top:.5rem}.welcome-banner{margin-bottom:1rem}.welcome-banner h2{color:#1a1a1a;font-size:1.1rem;margin-bottom:.15rem}.welcome-datetime{color:#6b7280;font-size:.85rem}.class-switcher{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.class-switcher.hidden{display:none}.class-switch-btn{background:#fff;color:#4f46e5;border:1px solid #4f46e5;padding:var(--btn-padding-sm);font-size:var(--font-label)}.class-switch-btn.active{background:#4f46e5;color:#fff}.role-switcher{display:flex;gap:.5rem;margin-bottom:.75rem}.role-switch-btn{background:#fff;color:#4f46e5;border:1px solid #4f46e5;padding:var(--btn-padding-sm);font-size:var(--font-label);font-weight:600}.role-switch-btn.active{background:#4f46e5;color:#fff}.tab{background:#e5e7eb;color:#374151;padding:.5rem .75rem;min-height:44px}.tab.active{background:#4f46e5;color:#fff}.nav-bar{margin-bottom:1rem}.nav-menu-btn{display:flex;align-items:center;gap:.6rem;width:100%;background:#4f46e5;color:#fff;padding:.65rem 1rem;min-height:44px;font-size:1rem;font-weight:600}.nav-menu-icon{font-size:1.1rem;line-height:1}.nav-current-label{flex:1;text-align:left}.nav-drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;visibility:hidden;pointer-events:none}.nav-drawer.open{visibility:visible;pointer-events:auto}.nav-drawer-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#11182780;opacity:0;transition:opacity .2s ease}.nav-drawer.open .nav-drawer-backdrop{opacity:1}.nav-drawer-panel{position:absolute;top:0;left:0;bottom:0;width:min(78vw,300px);background:#fff;box-shadow:2px 0 12px #0003;padding:1rem;display:flex;flex-direction:column;gap:.4rem;overflow-y:auto;transform:translate(-100%);transition:transform .2s ease}.nav-drawer.open .nav-drawer-panel{transform:translate(0)}.nav-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:.5rem;margin-bottom:.25rem;border-bottom:1px solid #e5e7eb}.nav-drawer-title{font-weight:700;color:#374151}.nav-drawer-close{background:transparent;color:#6b7280;font-size:1.1rem;width:auto;padding:.25rem .6rem}.nav-drawer-panel .tab{width:100%;text-align:left}form{margin-bottom:1.5rem}form input,form select{width:100%;padding:var(--field-padding);margin-bottom:.5rem;border:1px solid #d1d5db;border-radius:6px;font-size:var(--font-field)}form button{background:#4f46e5;color:#fff;width:100%}.password-field{position:relative}.password-field input{padding-right:2.75rem}.password-field .password-toggle-btn{position:absolute;top:0;right:0;bottom:0;width:2.75rem;display:flex;align-items:center;justify-content:center;background:transparent;color:#9ca3af;border:none;padding:0;margin:0;cursor:pointer}.password-field .password-toggle-btn:hover{color:#4b5563}ul{list-style:none;margin-bottom:1rem}li{padding:.5rem;border-bottom:1px solid #e5e7eb}li.present{border-left:3px solid #22c55e;padding-left:.75rem}li.absent{border-left:3px solid #ef4444;padding-left:.75rem}.student-row,.co-teacher-row,.student-row-readonly{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0;border-bottom:1px solid #e5e7eb}.status-toggle{display:flex;gap:.25rem}.toggle-btn{padding:var(--btn-padding-sm);font-size:var(--font-label);border-radius:4px;background:#e5e7eb;color:#374151}.toggle-btn.active.present-btn{background:#22c55e;color:#fff}.toggle-btn.active.absent-btn{background:#ef4444;color:#fff}.toggle-btn.active.available-btn{background:#22c55e;color:#fff}.toggle-btn.active.unavailable-btn{background:#ef4444;color:#fff}.availability-toggle{flex-shrink:0}.review-student-row.read-only,.review-teacher-row.read-only{opacity:.7}.toggle-btn:disabled{cursor:default}.attendance-summary{font-size:.9rem;font-weight:600;color:#374151;text-align:center;background:#f3f4f6;border-radius:6px;padding:.5rem .75rem;margin:.75rem 0 0}.attendance-summary strong{font-size:1.15em;color:#4f46e5}#submit-attendance{width:100%;background:#4f46e5;color:#fff;padding:var(--field-padding-lg);margin-top:1rem;font-size:1rem}#submit-attendance:disabled{background:#9ca3af;cursor:not-allowed}h3{margin-bottom:.75rem;color:#374151}h4{margin:.5rem 0;color:#6b7280}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.section-header-row>*{margin:0}.date-range{display:flex;gap:.5rem;align-items:end;margin-bottom:1rem;flex-wrap:wrap}.date-range label{font-size:var(--font-label);color:#6b7280}.date-range input{padding:var(--field-padding);border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-field)}#filter-btn{background:#4f46e5;color:#fff}.grade-filter{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));column-gap:1rem;row-gap:.6rem;align-items:end;margin-bottom:1rem}.grade-filter label{display:flex;flex-direction:column;gap:.25rem;font-size:var(--font-label);color:#6b7280}.grade-filter select,#student-search{height:var(--field-height);min-height:0}.grade-filter select{width:100%;padding:var(--field-padding);border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-field);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#student-search{padding:var(--field-padding);border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-field);width:100%}@media (max-width: 480px){.grade-filter{grid-template-columns:1fr;row-gap:.6rem}.grade-filter select,#student-search{min-height:44px}}.result-count{font-size:.85rem;color:#6b7280;margin-bottom:.5rem}.drag-hint{font-size:var(--font-label);color:#6b7280;margin-bottom:.5rem}.teacher-pool{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;padding:.75rem;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a}.teacher-chip{display:inline-block;padding:.35rem .75rem;background:#eef2ff;color:#4f46e5;border:1px solid #c7d2fe;border-radius:999px;font-size:.8rem;cursor:grab}.teacher-chip:active{cursor:grabbing}.teacher-chip-pending{background:#fff;border-style:dashed}.teacher-chip em,.teacher-tag-pending{font-style:normal;opacity:.75}.no-teachers{color:#9ca3af;font-size:.8rem;font-style:italic}.class-group-filter{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.class-group-filter label{font-weight:600;font-size:var(--font-label);color:#4b5563}.class-group-filter select{flex:none;max-width:320px;height:var(--field-height);min-height:0;padding:var(--field-padding);border-radius:6px;border:1px solid #d1d5db;font-size:var(--font-field);background:#fff}@media (max-width: 480px){.class-group-filter{flex-direction:column;align-items:stretch}.class-group-filter select{max-width:none}}.class-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;margin-top:.75rem;margin-bottom:1rem}.class-card{background:#fff;border-radius:8px;padding:1rem;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;gap:.5rem;transition:background .15s ease,outline .15s ease;min-width:0}.class-card.drag-over{background:#eef2ff;outline:2px dashed #4f46e5;outline-offset:-2px}.class-card-name em{color:#9ca3af;font-size:.8rem;font-style:italic}.class-teachers{display:flex;flex-wrap:wrap;gap:.35rem}.teacher-tag{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .5rem;background:#f3f4f6;color:#374151;border-radius:999px;font-size:.75rem}.remove-teacher-btn{background:none;border:none;color:#9ca3af;padding:0;font-size:.9rem;line-height:1;cursor:pointer}.remove-teacher-btn:hover{color:#ef4444}.assign-teacher-select{align-self:stretch;min-width:0;width:100%;max-width:100%;min-height:auto;box-sizing:border-box;padding:.3rem;border:1px solid #d1d5db;border-radius:4px;font-size:.8rem;color:#6b7280}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-top:.75rem}.status-card{background:#fff;border-radius:8px;padding:1rem;text-align:center;box-shadow:0 1px 3px #0000001a;border-left:4px solid #ef4444}.status-card.submitted{border-left-color:#22c55e}.status-card.needs-rework{border-left-color:#f59e0b}.status-card strong{display:block;font-size:.95rem;margin-bottom:.25rem}.status-card .teacher-name{display:block;font-size:.75rem;color:#9ca3af;margin-bottom:.5rem}.status-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:700}.status-card.waiting .status-badge{background:#fef2f2;color:#ef4444}.status-card.submitted .status-badge{background:#f0fdf4;color:#22c55e}.status-card.needs-rework .status-badge{background:#fffbeb;color:#f59e0b}.status-badge-present{background:#f0fdf4;color:#22c55e}.status-badge-absent{background:#fef2f2;color:#ef4444}.group-picker-list{margin-top:.75rem}.group-picker-count{font-size:var(--font-small);color:#6b7280;margin:0 0 .5rem}.group-picker-ungrouped-hint{font-size:var(--font-small);color:#92400e;background:#fffbeb;border-radius:4px;padding:.4rem .5rem;margin:0 0 .5rem}.group-picker-open-btn{width:auto;background:#4f46e5;color:#fff;padding:var(--btn-padding-sm);font-size:var(--font-label);border-radius:6px;margin-top:.25rem}.presence-dot{display:none;width:.5rem;height:.5rem;border-radius:50%;background:#3b82f6;margin:0 auto .4rem}.status-card.teacher-present .presence-dot{display:block;animation:presence-pulse 1.6s ease-in-out infinite}@keyframes presence-pulse{0%,to{opacity:1}50%{opacity:.35}}.availability-card.all-available{border-left-color:#22c55e}.availability-card.has-unavailable{border-left-color:#ef4444}.availability-card.unassigned{border-left-color:#9ca3af}.availability-card-teacher-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.35rem}.availability-card-teacher-row:first-of-type{margin-top:0}.availability-card-teacher-row .teacher-name{margin-bottom:0}.pending-volunteer-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:#fffbeb;border:1px solid #fde68a;border-left:4px solid #f59e0b;border-radius:6px;padding:.85rem 1rem;margin-bottom:1rem}.pending-volunteer-card-text{display:flex;flex-direction:column;gap:.15rem}.pending-volunteer-card-text strong{color:#92400e;font-size:.95rem}.pending-volunteer-card-text span{font-size:var(--font-small);color:#92400e}#pending-volunteer-review-btn{background:#f59e0b;color:#fff;border:none;padding:var(--btn-padding-sm);border-radius:4px;font-weight:700;white-space:nowrap;cursor:pointer;flex-shrink:0}.status-badge-clickable{cursor:pointer}.status-badge-clickable.loading{opacity:.6;cursor:wait}.review-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182780;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000}.review-modal{position:relative;background:#fff;border-radius:12px;padding:1.5rem;width:100%;max-width:420px;max-height:85vh;overflow-y:auto;text-align:left;box-shadow:0 10px 30px #00000040}.review-modal h4{margin:0 0 .5rem;padding-right:1.5rem;color:#111827}.review-modal h5{margin:.5rem 0 .25rem;color:#6b7280;font-size:.8rem}.review-modal-close{position:absolute;top:.75rem;right:.75rem;background:transparent;color:#9ca3af;font-size:1.25rem;line-height:1;padding:.25rem .5rem}.review-modal-close:hover{color:#374151}.review-list{display:flex;flex-direction:column}.review-student-row,.review-teacher-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid #f3f4f6;font-size:.85rem}.review-actions{display:flex;gap:.5rem;margin-top:.75rem}.save-review-btn{background:#4f46e5;color:#fff}.reject-review-btn{background:#fff;color:#ef4444;border:1px solid #ef4444}.reject-review-btn.confirm-armed{background:#ef4444;color:#fff}.save-review-btn:disabled,.reject-review-btn:disabled{opacity:.5;cursor:default}.review-message{font-size:.85rem}.review-rework-notice{font-size:.85rem;background:#fffbeb;color:#92400e;border:1px solid #fde68a;border-radius:6px;padding:.5rem .75rem;margin:.5rem 0}.rework-notice{font-size:.85rem;background:#fffbeb;color:#92400e;border:1px solid #fde68a;border-radius:6px;padding:.5rem .75rem;margin:.5rem 0 1rem}.self-edit-notice{font-size:.85rem;background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;border-radius:6px;padding:.5rem .75rem;margin:.5rem 0 1rem}.group-context-banner{font-size:.85rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;padding:.5rem .75rem;margin:.5rem 0 1rem}.group-context-label{font-weight:600;color:#374151;margin:.25rem 0}.group-context-other-status{color:#6b7280;margin:.15rem 0}.back-to-groups-btn{width:auto;background:none;border:none;color:#4f46e5;font-size:var(--font-label);padding:.2rem 0;cursor:pointer;text-decoration:underline}.edit-attendance-btn{width:auto;background:#fff;color:#4f46e5;border:1px solid #4f46e5;padding:var(--btn-padding-sm);font-size:var(--font-label);border-radius:6px;margin-top:1rem;cursor:pointer}.lesson-note-section{margin:1rem 0}.lesson-note-section label{display:block;font-size:var(--font-label);color:#4b5563;margin-bottom:.35rem}.lesson-note-textarea{display:block;width:100%;min-height:4.5rem;resize:vertical;box-sizing:border-box;border:1px solid #d1d5db;border-radius:1.1rem;padding:.65rem .9rem;font:inherit;font-size:var(--font-field);line-height:1.4;background:#f0f2f5;color:#111b21}.lesson-note-textarea::placeholder{color:#8696a0}.lesson-note-textarea:focus{outline:none;border-color:#25d366;background:#fff}.lesson-note-counter{text-align:right;font-size:var(--font-small);color:#9ca3af;margin:.25rem 0 0}.lesson-note-counter.warning{color:#d97706}.lesson-note-counter.over-limit{color:#ef4444;font-weight:600}.lesson-note-bubble-wrap{display:flex;justify-content:flex-end;margin-top:.75rem}.lesson-note-bubble{background:#d9fdd3;color:#111b21;border-radius:.9rem .9rem .2rem;padding:.55rem .75rem;max-width:85%;font-size:var(--font-field);line-height:1.4;white-space:pre-wrap;word-break:break-word;box-shadow:0 1px 1px #00000014}.lesson-note-bubble-empty{color:#9ca3af;font-size:var(--font-label);font-style:italic;margin:.25rem 0 1rem}.lesson-note-edit-btn{width:auto;background:none;border:none;color:#4f46e5;font-size:var(--font-label);padding:.2rem 0;cursor:pointer;text-decoration:underline}.lesson-note-edit-actions{display:flex;gap:.4rem;margin-top:.4rem}.lesson-note-save-btn,.lesson-note-cancel-btn{width:auto;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.lesson-note-save-btn{background:#4f46e5;color:#fff;border:none}.lesson-note-save-btn:disabled{opacity:.6;cursor:not-allowed}.lesson-note-cancel-btn{background:#fff;color:#374151;border:1px solid #d1d5db}.session-list{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0 1rem}.session-row{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a}.session-row-today{outline:2px solid #4f46e5;outline-offset:-2px}.session-date{flex:0 0 auto;min-width:6.5rem;font-size:.85rem;color:#374151;font-weight:600}.session-date em{color:#4f46e5;font-style:italic}.session-label-input,.session-type-select{height:var(--field-height);min-height:0}.session-label-input{flex:1 1 auto;min-width:0;padding:var(--field-padding);border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-field)}.session-type-select{flex:0 0 auto;padding:var(--field-padding);border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-field);color:#6b7280}.session-toggle-btn{flex:0 0 auto;padding:var(--btn-padding-xs);border:none;border-radius:999px;font-size:var(--font-small);font-weight:600;cursor:pointer;white-space:nowrap}.session-toggle-btn.session-open{background:#f0fdf4;color:#22c55e}.session-toggle-btn.session-closed{background:#fef2f2;color:#ef4444}.session-label-text{flex:1 1 auto;min-width:0;font-size:.85rem;color:#374151}.session-type-badge{flex:0 0 auto;font-size:.75rem;color:#6b7280;padding:.2rem .5rem;background:#f3f4f6;border-radius:999px}.session-status-badge{flex:0 0 auto;padding:.35rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.session-status-badge.session-open{background:#f0fdf4;color:#22c55e}.session-status-badge.session-closed{background:#fef2f2;color:#ef4444}.no-sessions{color:#9ca3af;font-size:.85rem;font-style:italic}.past-sessions{margin-bottom:1rem}.past-sessions summary{cursor:pointer;font-weight:600;color:#4b5563;padding:.4rem 0}.past-sessions .session-list{margin-top:.5rem}.history-date-block{background:#fff;border-radius:8px;padding:.75rem 1rem;margin-bottom:.6rem;box-shadow:0 1px 3px #0000001a}.history-date-block summary{cursor:pointer;display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;list-style:none}.history-date-block summary::-webkit-details-marker{display:none}.history-date{font-weight:600;color:#374151}.history-date-summary{font-size:var(--font-small);color:#6b7280}.history-group-block{margin-top:.75rem;padding-top:.6rem;border-top:1px solid #f3f4f6}.history-group-block h4{margin:0 0 .4rem;font-size:.9rem;color:#4f46e5}.history-status-block{margin:.4rem 0 .6rem}.history-status-block h5{margin:0 0 .3rem;font-size:var(--font-label);color:#6b7280}.history-name-row{padding:.2rem 0;font-size:var(--font-label);color:#374151}.history-empty{font-size:var(--font-label);color:#9ca3af;font-style:italic;margin:.2rem 0}.insights-columns{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:.75rem}@media (max-width: 640px){.insights-columns{grid-template-columns:1fr}}.insights-card{background:#fff;border-radius:8px;padding:.75rem 1rem;box-shadow:0 1px 3px #0000001a}.insights-card h4{margin:0 0 .5rem;font-size:.9rem;color:#4f46e5}.insight-row{display:flex;align-items:baseline;gap:.5rem;padding:.25rem 0;border-top:1px solid #f3f4f6}.insight-row:first-child{border-top:none}.insight-rank{font-weight:600;color:#9ca3af;min-width:1.25rem}.insight-name{flex:1;font-size:var(--font-label);color:#374151}.insight-stat{font-size:var(--font-small);color:#6b7280;white-space:nowrap}.kudos-pills{display:flex;flex-wrap:wrap;gap:.4rem;margin:.75rem 0}.kudos-pill{width:auto;background:#fff;color:#4f46e5;border:1px solid #4f46e5;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:999px}.kudos-pill.active{background:#4f46e5;color:#fff}.kudos-leaderboard-card{margin-bottom:.75rem}.kudos-award-panel{background:#fff;border-radius:8px;padding:.75rem 1rem;margin-bottom:.75rem;box-shadow:0 1px 3px #0000001a}.kudos-award-panel h4{margin:0 0 .5rem;font-size:.9rem;color:#4f46e5}#kudos-award-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}#kudos-award-form select,#kudos-award-form input[type=text]{flex:1;min-width:140px;padding:.4rem .6rem;border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-label)}#kudos-award-form input[type=number]{width:70px;padding:.4rem .6rem;border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-label)}#kudos-award-form button{width:auto;background:#4f46e5;color:#fff;padding:var(--btn-padding-sm);font-size:var(--font-label);border-radius:6px}.kudos-award-row{background:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:.5rem .75rem;margin-bottom:.4rem}.kudos-award-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.kudos-award-name{font-weight:600;color:#374151}.kudos-award-points{color:#4f46e5;font-size:var(--font-small)}.kudos-award-category{color:#9ca3af;font-size:var(--font-small)}.kudos-award-note{margin-top:.2rem;font-size:var(--font-small);color:#6b7280;font-style:italic}.kudos-award-actions{display:flex;gap:.4rem;margin-top:.4rem}.kudos-award-edit-btn,.kudos-award-edit-save-btn,.kudos-award-edit-cancel-btn{width:auto;background:#fff;color:#4f46e5;border:1px solid #4f46e5;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.kudos-award-delete-btn{width:auto;background:#fff;color:#ef4444;border:1px solid #ef4444;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.kudos-award-delete-btn.confirm-armed{background:#ef4444;color:#fff}.kudos-award-edit-form{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.kudos-award-edit-form input[type=number]{width:70px;padding:.3rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-label)}.kudos-award-edit-form input[type=text]{flex:1;min-width:120px;padding:.3rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-label)}.kudos-category-rename-btn,.kudos-category-rename-save-btn,.kudos-category-rename-cancel-btn{width:auto;background:#fff;color:#4f46e5;border:1px solid #4f46e5;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.kudos-category-delete-btn{width:auto;background:#fff;color:#ef4444;border:1px solid #ef4444;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.kudos-category-delete-btn.confirm-armed{background:#ef4444;color:#fff}.kudos-manage-categories{background:#fff;border-radius:8px;padding:.75rem 1rem;margin-top:.75rem;box-shadow:0 1px 3px #0000001a}.kudos-manage-categories summary{cursor:pointer;font-weight:600;color:#374151;list-style:none}.kudos-manage-categories summary::-webkit-details-marker{display:none}.add-session-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem;background:#f9fafb;border-radius:8px}.add-session-form input[type=text],.add-session-form input[type=date],.add-session-form select{height:var(--field-height);min-height:0;padding:var(--field-padding);border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-field)}.add-session-open-label{display:flex;align-items:center;gap:.3rem;font-size:var(--font-label);color:#4b5563}@media (max-width: 480px){.session-row{flex-wrap:wrap}.session-label-input{flex-basis:100%}}.no-class-message{padding:.75rem 1rem;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e}.pending-setup-message{max-width:32rem;margin:3rem auto;padding:1.5rem;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e;text-align:center}.pending-setup-message h2{margin-top:0}#toast-container{position:fixed;top:1rem;right:1rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem}.toast{background:#4f46e5;color:#fff;padding:.75rem 1.25rem;border-radius:8px;font-size:.85rem;box-shadow:0 4px 12px #00000026;transform:translate(120%);transition:transform .3s ease;max-width:300px}.toast.visible{transform:translate(0)}.records-section{background:#fff;border-radius:8px;padding:1rem 1.25rem;margin-top:1.5rem;box-shadow:0 1px 3px #0000001a}.records-section h3{margin-bottom:1rem}.records-section h4{margin-top:1.25rem}.records-section h4:first-of-type{margin-top:0}.records-accordion-item{padding:0;overflow:hidden}.records-accordion-item summary{cursor:pointer;list-style:none;padding:1rem 1.25rem;font-weight:600;color:#374151}.records-accordion-item summary::-webkit-details-marker{display:none}.records-accordion-item summary:before{content:"";display:inline-block;width:.4rem;height:.4rem;margin-right:.6rem;border-right:2px solid #6b7280;border-bottom:2px solid #6b7280;transform:rotate(-45deg);transition:transform .15s ease}.records-accordion-item[open] summary{color:#4f46e5;border-bottom:1px solid #f3f4f6}.records-accordion-item[open] summary:before{transform:rotate(45deg)}.records-accordion-body{padding:1rem 1.25rem}.records-accordion-body h4{margin-top:1.25rem}.records-accordion-body h4:first-of-type{margin-top:0}.records-date-group{margin-bottom:1.25rem}.records-date-group:last-child{margin-bottom:0}.records-date-group h4{margin-top:0;margin-bottom:.6rem}.records-date-group h5{margin-top:.75rem;margin-bottom:.4rem;color:#6b7280;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em}.records-date-group h5:first-of-type{margin-top:0}.records-team-block{margin-bottom:.75rem}.records-team-block:last-child{margin-bottom:0}.records-team-block>strong{display:block;font-size:.85rem;color:#374151;margin-bottom:.35rem}.records-section .metric-list{background:#f9fafb;box-shadow:none;border:1px solid #f3f4f6}.records-team-block ul{background:#f9fafb;border-radius:6px;overflow:hidden;margin-bottom:0}.records-team-block li:last-child{border-bottom:none}.also-taught-note{color:#9ca3af;font-size:.75rem}.lesson-note-record-teacher{display:block;font-size:.75rem;color:#6b7280;margin-bottom:.3rem}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.5rem;margin-bottom:1rem}.summary-card{background:#fff;border-radius:8px;padding:.75rem;text-align:center;box-shadow:0 1px 3px #0000001a}.summary-card strong{display:block;font-size:.85rem;margin-bottom:.25rem}.summary-card .pct{display:block;font-size:1.25rem;font-weight:700;color:#4f46e5}.summary-card .detail{display:block;font-size:.75rem;color:#9ca3af}.metric-section{margin-bottom:1.25rem}.metric-list{display:flex;flex-direction:column;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.metric-row{display:flex;justify-content:space-between;align-items:center;padding:.6rem .85rem;border-bottom:1px solid #f3f4f6;font-size:.9rem}.metric-row:last-child{border-bottom:none}.metric-stat{font-size:.8rem;color:#6b7280}.volunteer-team-filter label{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.volunteer-team-filter select{flex:none;max-width:320px;height:var(--field-height);min-height:0;padding:var(--field-padding);border:1px solid #d1d5db;border-radius:6px;font-size:var(--font-field)}.volunteer-pending-hint{font-size:var(--font-label);color:#92400e;margin:-.25rem 0 .5rem}.volunteer-entry-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem 0;border-bottom:1px solid #f3f4f6;font-size:.85rem}.volunteer-entry-main{display:flex;flex-direction:column;gap:.15rem;flex:1}.volunteer-entry-note{color:#6b7280;font-size:.8rem}.volunteer-entry-main input{width:auto;padding:.3rem .5rem;margin:0;border:1px solid #d1d5db;border-radius:4px;font-size:.8rem}.volunteer-entry-actions{display:flex;gap:.4rem;flex-shrink:0}.accept-volunteer-entry-btn,.edit-volunteer-entry-btn,.delete-volunteer-entry-btn,.save-volunteer-edit-btn,.cancel-volunteer-edit-btn{width:auto;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.accept-volunteer-entry-btn,.save-volunteer-edit-btn{background:#4f46e5;color:#fff;border:none}.edit-volunteer-entry-btn,.cancel-volunteer-edit-btn{background:#fff;color:#374151;border:1px solid #d1d5db}.delete-volunteer-entry-btn{background:#fff;color:#ef4444;border:1px solid #ef4444}.delete-volunteer-entry-btn.confirm-armed{background:#ef4444;color:#fff}.class-group-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;border:1px solid #e5e7eb;border-radius:6px;margin-bottom:.4rem;background:#fff}.class-group-name{font-weight:600;color:#374151}.class-group-row-actions{display:flex;gap:.4rem}.class-group-rename-btn,.class-group-rename-save-btn,.class-group-rename-cancel-btn{width:auto;background:#fff;color:#4f46e5;border:1px solid #4f46e5;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.class-group-delete-btn{width:auto;background:#fff;color:#ef4444;border:1px solid #ef4444;padding:var(--btn-padding-xs);font-size:var(--font-small);border-radius:4px}.class-group-delete-btn.confirm-armed{background:#ef4444;color:#fff}.class-group-rename-input{flex:1;padding:.3rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-label)}.class-group-add-row{display:flex;gap:.5rem;margin:.75rem 0}.class-group-add-row input{flex:1;padding:.4rem .6rem;border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-label)}#class-group-add-btn{width:auto;background:#4f46e5;color:#fff;padding:var(--btn-padding-sm);font-size:var(--font-label);border-radius:6px}.class-group-student-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem 0;border-bottom:1px solid #f3f4f6}.class-group-student-select{padding:.3rem .5rem;border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-label);min-width:160px}.log-hours-team-picker label{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.log-hours-team-picker select{flex:none;max-width:320px;height:var(--field-height);min-height:0;padding:var(--field-padding);border:1px solid #d1d5db;border-radius:6px;font-size:var(--font-field)}.log-hours-team-name{margin:0}.log-hours-top-row{align-items:center}.log-hours-top-row .log-hours-team-picker{flex:none}#log-hours-note{flex:1;min-width:160px;height:var(--field-height);padding:var(--field-padding);border:1px solid #d1d5db;border-radius:6px;font-size:var(--font-field)}.log-hours-meta{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:.5rem}.log-hours-meta label{display:flex;align-items:center;gap:.5rem;font-size:var(--font-label);flex:1;min-width:220px}.log-hours-meta label:first-child{flex:0 0 auto;min-width:0;white-space:nowrap}.log-hours-meta label input{flex:1;width:auto}.log-hours-controls{display:flex;gap:.5rem;margin-bottom:.5rem}.log-hours-controls input,.log-hours-controls button,.log-hours-controls select{height:var(--field-height);min-height:0;margin-bottom:0}.log-hours-controls input{flex:1}.log-hours-controls button{width:auto;background:#fff;color:#374151;border:1px solid #d1d5db;font-size:var(--font-field);padding:var(--field-padding)}.log-hours-controls select{width:auto;flex:none;font-size:var(--font-field);border:1px solid #d1d5db;border-radius:6px;padding:var(--field-padding)}@media (max-width: 480px){.log-hours-controls{flex-wrap:wrap}.log-hours-controls select,.log-hours-controls input{flex:1 1 100%;min-height:44px}.log-hours-controls button{flex:1 1 auto;min-height:44px}}#log-hours-student-list{max-height:340px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:8px;padding:.25rem .5rem;margin-bottom:1rem}#log-hours-selected-list{max-height:200px;overflow-y:auto;border:1px solid #c7d2fe;background:#eef2ff;border-radius:8px;padding:.25rem .5rem;margin-bottom:1rem}.log-hours-student-row{display:flex;flex-direction:column;align-items:stretch;gap:.15rem;width:100%;background:none;color:#1a1a1a;border:none;border-bottom:1px solid #f3f4f6;padding:.5rem .25rem;font-size:.85rem;text-align:left;cursor:pointer}.log-hours-student-row:last-child{border-bottom:none}.log-hours-student-row:hover{background:#4f46e514}.log-hours-student-top{display:flex;align-items:center;gap:.5rem;width:100%}.log-hours-student-top span:first-of-type{flex:1}.log-hours-student-grade{font-size:.75rem;color:#9ca3af}.log-hours-student-attendance{font-size:.7rem;color:#6b7280}.log-hours-empty-hint{padding:.4rem .25rem;font-size:.8rem;color:#6b7280}.audit-log-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.6rem .85rem;border-bottom:1px solid #f3f4f6;font-size:.85rem}.audit-log-row:last-child{border-bottom:none}.audit-log-main{display:flex;flex-direction:column;gap:.2rem}.audit-log-summary{color:#1f2937}.audit-log-meta{font-size:.75rem;color:#6b7280}.audit-log-role-badge{display:inline-block;padding:.05rem .5rem;border-radius:10px;font-size:.7rem;font-weight:700;text-transform:capitalize}.audit-log-role-admin{background:#eef2ff;color:#4f46e5}.audit-log-role-teacher{background:#f0fdf4;color:#22c55e}.audit-log-time{font-size:.75rem;color:#9ca3af;white-space:nowrap;flex-shrink:0}.availability-date-picker{display:flex;align-items:center;gap:.5rem;font-size:var(--font-label);color:#4b5563;margin-bottom:.75rem}.availability-date-picker select{flex:1;min-width:0;height:var(--field-height);min-height:0;padding:var(--field-padding);border:1px solid #d1d5db;border-radius:4px;font-size:var(--font-field)}#availability-summary{margin-bottom:.5rem}.smile-box-intro{color:#4b5563;margin-bottom:1rem}.smile-box-search-wrap{position:relative;margin-bottom:.5rem}.smile-box-search-results{position:absolute;top:100%;left:0;right:0;z-index:5;background:#fff;border:1px solid #d1d5db;border-top:none;border-radius:0 0 6px 6px;max-height:14rem;overflow-y:auto;box-shadow:0 4px 10px #00000014}.smile-box-result{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;padding:.6rem .9rem;background:#fff;color:#1a1a1a;border:none;border-bottom:1px solid #f3f4f6;font-size:.95rem;cursor:pointer}.smile-box-result:last-child{border-bottom:none}.smile-box-result:hover,.smile-box-result:focus{background:#f5f5ff}.smile-box-result-type{color:#9ca3af;font-size:.8rem}.smile-box-no-match{padding:.6rem .9rem;color:#6b7280;font-size:.85rem}.smile-box-selected-name{font-size:.9rem;color:#4f46e5;font-weight:600;margin-bottom:.6rem}#smile-box-message{width:100%;min-height:5rem;padding:var(--field-padding-lg);border:1px solid #d1d5db;border-radius:6px;font-size:1rem;font-family:inherit;resize:vertical;margin-bottom:.75rem}.smile-box-empty{color:#6b7280}.smile-box-card{background:#fff;border:1px solid #f3f4f6;border-radius:8px;padding:.9rem 1rem;margin-bottom:.75rem}.smile-box-card-top{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.4rem}.smile-box-subject{font-weight:600;color:#4f46e5}.smile-box-date{color:#9ca3af;font-size:.8rem;white-space:nowrap}.smile-box-message{color:#374151;margin-bottom:.4rem;white-space:pre-line}.smile-box-author{color:#6b7280;font-size:.85rem;text-align:right;margin:0}
