:root{--bg-color: #f0f4f8;--card-bg-color: #ffffff;--primary-text-color: #102a43;--secondary-text-color: #486581;--accent-color: #3b82f6;--accent-color-hover: #2563eb;--border-color: #dbe2e9;--error-color: #dc2626;--success-color: #16a34a;--shadow-color: rgba(0, 0, 0, .1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Roboto,sans-serif;background-color:var(--bg-color);color:var(--primary-text-color);display:flex;justify-content:center;align-items:flex-start;min-height:100vh;padding:1rem}#root{width:100%;max-width:960px;transition:max-width .2s ease}.app-container{background-color:var(--card-bg-color);padding:2rem;border-radius:12px;box-shadow:0 4px 12px var(--shadow-color)}.nav-tab-container{display:flex;background-color:#e2e8f0;border-radius:10px;padding:4px;margin-bottom:1.75rem;gap:4px}.nav-tab-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;border:none;border-radius:8px;background:transparent;color:var(--secondary-text-color);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease}.nav-tab-btn:hover{color:var(--primary-text-color);background-color:#ffffff80}.nav-tab-btn.active{background-color:var(--card-bg-color);color:var(--accent-color);box-shadow:0 2px 6px #00000014}.sub-nav-container{display:flex;border-bottom:2px solid #e2e8f0;margin-bottom:1.5rem;gap:1rem}.sub-nav-btn{padding:.6rem .5rem;border:none;background:none;font-size:.95rem;font-weight:600;color:var(--secondary-text-color);cursor:pointer;position:relative;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s ease}.sub-nav-btn:hover{color:var(--accent-color)}.sub-nav-btn.active{color:var(--accent-color);border-bottom-color:var(--accent-color)}.stats-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:1rem;text-align:center;transition:transform .15s ease}.stat-card.card-highlight{background:#eff6ff;border-color:#bfdbfe}.stat-card.card-warning{background:#fffbeb;border-color:#fde68a}.stat-card-number{font-size:1.75rem;font-weight:700;color:var(--primary-text-color);line-height:1.2}.stat-card-label{font-size:.85rem;color:var(--secondary-text-color);margin-top:.25rem;font-weight:500}.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1.25rem;padding:.75rem;background-color:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.filter-group{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.filter-input{padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:6px;font-size:.9rem;background-color:#fff}.filter-btn{padding:.5rem .85rem;border:1px solid var(--border-color);background-color:#fff;border-radius:6px;font-size:.85rem;font-weight:500;color:var(--secondary-text-color);cursor:pointer;transition:all .15s ease}.filter-btn:hover,.filter-btn.active{background-color:var(--accent-color);color:#fff;border-color:var(--accent-color)}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .6rem;border-radius:9999px;font-size:.78rem;font-weight:600;white-space:nowrap}.badge-success{background-color:#dcfce7;color:#15803d}.badge-warning{background-color:#fef3c7;color:#b45309}.badge-gray{background-color:#f1f5f9;color:#64748b}.table-responsive{width:100%;overflow-x:auto;border:1px solid var(--border-color);border-radius:8px;margin-bottom:1.5rem}.data-table{width:100%;border-collapse:collapse;font-size:.9rem;text-align:left}.data-table th{background-color:#f1f5f9;color:var(--primary-text-color);font-weight:600;padding:.75rem 1rem;border-bottom:2px solid #e2e8f0;white-space:nowrap}.data-table td{padding:.75rem 1rem;border-bottom:1px solid #f1f5f9;color:var(--primary-text-color);vertical-align:middle}.data-table tr:hover{background-color:#f8fafc}.data-table tr.unreported-row{background-color:#fffdf5}.notice-box{background-color:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:.85rem 1rem;margin-bottom:1.25rem;font-size:.88rem;color:#1e40af;line-height:1.5}.notice-box.warning{background-color:#fffbeb;border-color:#fde68a;color:#92400e}.export-panel{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:1.25rem;margin-bottom:1.5rem}.export-controls-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1rem}.action-btn-group{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.btn-secondary{padding:.6rem 1rem;background-color:#fff;border:1px solid #cbd5e1;border-radius:6px;font-size:.9rem;font-weight:600;color:var(--primary-text-color);cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;transition:all .15s ease}.btn-secondary:hover{background-color:#f1f5f9;border-color:#94a3b8}.btn-primary-action{padding:.6rem 1.2rem;background-color:var(--accent-color);color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;transition:all .15s ease}.btn-primary-action:hover{background-color:var(--accent-color-hover)}.btn-primary-action:disabled{opacity:.6;cursor:not-allowed}.switch-tab-link{background:none;border:none;color:var(--accent-color);font-size:.95rem;font-weight:600;cursor:pointer;text-decoration:underline;margin-top:1rem;display:inline-block}@media print{body{background-color:#fff;padding:0}#root,.app-container{max-width:100%;box-shadow:none;padding:0}.nav-tab-container,.sub-nav-container,.filter-bar,.action-btn-group,.export-panel,.switch-tab-link,.notice-box{display:none!important}.table-responsive{border:none}.data-table{font-size:11pt}.data-table th,.data-table td{border:1px solid #333!important;padding:6px 8px}}.header{text-align:center;margin-bottom:2rem;border-bottom:1px solid var(--border-color);padding-bottom:1.5rem}.header h1{font-size:1.75rem;color:var(--primary-text-color);margin-bottom:.5rem;text-transform:uppercase}.header h2{font-size:1.2rem;font-weight:500;color:var(--secondary-text-color);margin-top:-.25rem;margin-bottom:1rem}.header p{font-size:1.1rem;color:var(--secondary-text-color)}.attendance-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500;color:var(--primary-text-color)}.form-group-subtitle{font-weight:700;color:var(--accent-color);font-size:1.05rem}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:8px;font-size:1rem;font-family:Roboto,sans-serif;transition:border-color .3s,box-shadow .3s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #3b82f64d}.form-group textarea{resize:vertical;min-height:80px}.number-inputs{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:1rem}.submit-btn{padding:.8rem 1.5rem;background-color:var(--accent-color);color:#fff;border:none;border-radius:8px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:background-color .3s;width:100%;margin-top:1rem}.submit-btn:hover{background-color:var(--accent-color-hover)}.submit-btn:disabled{background-color:#94a3b8;cursor:not-allowed}.success-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#102a4399;display:flex;justify-content:center;align-items:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.success-modal{background-color:var(--card-bg-color);padding:2.5rem;border-radius:12px;text-align:center;box-shadow:0 5px 20px #0003;width:90%;max-width:400px}.success-modal h3{color:var(--success-color);font-size:1.5rem;margin-bottom:1rem}.success-modal p{color:var(--primary-text-color);font-size:1.1rem}.confirmation-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#102a4399;display:flex;justify-content:center;align-items:center;z-index:1500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.confirmation-modal{background-color:var(--card-bg-color);padding:2.5rem;border-radius:12px;text-align:center;box-shadow:0 5px 20px #0003;width:90%;max-width:400px;display:flex;flex-direction:column;gap:1rem}.confirmation-modal h3{color:var(--primary-text-color);font-size:1.3rem;margin-bottom:.5rem}.confirm-class-name{font-size:2.5rem;font-weight:700;color:var(--error-color);margin:.5rem 0 1.5rem}.confirmation-actions{display:flex;justify-content:space-between;gap:1rem;width:100%}.confirmation-actions button{flex:1;padding:.7rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:background-color .3s,transform .2s}.confirmation-actions button:hover:not(:disabled){transform:translateY(-2px)}.btn-cancel{background-color:#f1f5f9;color:var(--secondary-text-color);border:1px solid var(--border-color)}.btn-cancel:hover:not(:disabled){background-color:#e2e8f0}.btn-confirm{background-color:var(--accent-color);color:#fff}.btn-confirm:hover:not(:disabled){background-color:var(--accent-color-hover)}.confirmation-actions button:disabled{background-color:#94a3b8;cursor:not-allowed;color:#e2e8f0}.firewall-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#102a43cc;display:flex;justify-content:center;align-items:center;z-index:2000;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);padding:1rem}.firewall-modal{background-color:var(--card-bg-color);padding:2.5rem;border-radius:12px;text-align:center;box-shadow:0 5px 20px #00000040;width:100%;max-width:420px;display:flex;flex-direction:column;gap:1rem}.firewall-modal h3{color:var(--primary-text-color);font-size:1.5rem;margin-bottom:.5rem}.firewall-modal p{color:var(--secondary-text-color);font-size:1rem;line-height:1.5;margin-bottom:1rem}.firewall-modal .form-group{margin-bottom:.5rem}.firewall-modal .submit-btn{margin-top:.5rem}.error-message{color:var(--error-color);font-size:.9rem;font-weight:500;margin-top:-.5rem;margin-bottom:.5rem}.firewall-time-box{background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:.9rem 1rem;text-align:left;margin-bottom:.8rem}.firewall-time-title{font-size:.88rem;font-weight:700;color:#1e3a8a;margin-bottom:.5rem;display:flex;align-items:center;gap:.4rem}.firewall-time-row{display:flex;align-items:center;justify-content:space-between;padding:.35rem .6rem;background:#fff;border-radius:6px;margin-bottom:.35rem;border:1px solid #edf2f7;font-size:.9rem}.firewall-time-badge{font-weight:600;color:#334155;display:flex;align-items:center;gap:.35rem}.firewall-time-val{font-weight:700;color:#2563eb;background:#eff6ff;padding:.15rem .5rem;border-radius:4px}.firewall-note{font-size:.8rem;color:#64748b;line-height:1.4;margin-top:.4rem;font-style:italic}.session-fixed-indicator{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:10px;margin-bottom:1.25rem;transition:all .2s ease}.session-fixed-indicator.morning{background:#eff6ff;border:1.5px solid #bfdbfe;color:#1e40af}.session-fixed-indicator.afternoon{background:#fff7ed;border:1.5px solid #fed7aa;color:#9a3412}.session-fixed-icon{font-size:1.6rem;line-height:1;flex-shrink:0}.session-fixed-details{flex:1;text-align:left}.session-fixed-title{font-size:.95rem;font-weight:600}.session-fixed-title strong{font-weight:800;text-transform:uppercase;letter-spacing:.3px}.session-fixed-indicator.morning .session-fixed-title strong{color:#1d4ed8}.session-fixed-indicator.afternoon .session-fixed-title strong{color:#ea580c}.session-fixed-subtitle{font-size:.8rem;color:#64748b;margin-top:.2rem;line-height:1.35}.session-fixed-lock-badge{font-size:.75rem;font-weight:700;padding:.3rem .65rem;border-radius:20px;background:#fff;border:1px solid #cbd5e1;color:#475569;white-space:nowrap;box-shadow:0 1px 2px #0000000d;display:flex;align-items:center;gap:.25rem}.afternoon-subject-group{background:#fff7ed;border:1.5px solid #fdba74;border-radius:10px;padding:.85rem 1rem;margin-bottom:1.25rem;animation:fadeInSubject .3s ease}@keyframes fadeInSubject{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.afternoon-subject-group label{color:#9a3412!important;font-weight:700!important;display:flex;align-items:center;gap:.35rem;margin-bottom:.4rem}.afternoon-subject-group select{border-color:#fb923c!important;background-color:#fff!important;font-weight:500;color:#1e293b}.afternoon-subject-group select:focus{border-color:#ea580c!important;box-shadow:0 0 0 3px #ea580c40!important}.subject-hint{font-size:.82rem;color:#c2410c;margin-top:.35rem;display:block;line-height:1.35}.subject-tag-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .5rem;background:#ffedd5;color:#c2410c;border:1px solid #fed7aa;border-radius:4px;font-size:.8rem;font-weight:600;margin-left:.35rem}.btn-stats-link{width:100%;padding:.8rem 1rem;border-radius:8px;border:1.5px solid var(--accent-color);background-color:#f0f9ff;color:var(--accent-color);font-size:.95rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:all .2s ease}.btn-stats-link:hover{background-color:var(--accent-color);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #1d4ed826}.resubmit-banner{background-color:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:.9rem 1rem;display:flex;gap:.75rem;align-items:flex-start;font-size:.92rem;color:#1e40af;line-height:1.45}.resubmit-banner strong{color:#1d4ed8}.resubmit-banner p{margin-top:.35rem;color:#1e3a8a;font-size:.88rem}.resubmit-badge{background-color:#dbeafe;color:#1e40af;font-size:.78rem;font-weight:700;padding:.2rem .5rem;border-radius:4px;display:inline-block;margin-bottom:.25rem}.submit-btn.btn-update{background-color:#0284c7}.submit-btn.btn-update:hover{background-color:#0369a1}.submit-status-box{margin-top:.75rem;padding:.6rem .8rem;border-radius:6px;background-color:#f8fafc;border:1px solid #e2e8f0;font-size:.9rem;color:#334155;display:flex;align-items:center;justify-content:center;gap:.5rem}.status-spinner{width:16px;height:16px;border:2px solid #cbd5e1;border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.teacher-dashboard-topbar{display:flex;justify-content:space-between;align-items:center;padding-bottom:1rem;margin-bottom:1.25rem;border-bottom:1px solid #e2e8f0;gap:1rem;flex-wrap:wrap}.btn-back-report{padding:.55rem 1rem;border-radius:8px;border:1px solid #cbd5e1;background-color:#fff;color:#334155;font-size:.9rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;transition:all .2s ease}.btn-back-report:hover{background-color:#f1f5f9;border-color:#94a3b8;color:#0f172a;transform:translateY(-1px)}.btn-excel{background-color:#f0fdf4!important;border-color:#86efac!important;color:#15803d!important;font-weight:600!important}.btn-excel:hover:not(:disabled){background-color:#16a34a!important;color:#fff!important;border-color:#16a34a!important}.portal-container{display:flex;flex-direction:column;gap:1.5rem;animation:fadeIn .3s ease-in-out}.portal-welcome-card{background:linear-gradient(135deg,#f8fafc,#edf2f7);border:1px solid #cbd5e1;border-radius:12px;padding:1.25rem 1.5rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.portal-welcome-title{font-size:1.05rem;font-weight:700;color:#0f172a;display:flex;align-items:center;gap:.5rem}.portal-welcome-desc{font-size:.88rem;color:#475569;margin-top:.25rem}.portal-header-box{background:#fff;border-radius:12px;padding:1.5rem 1.75rem;border:1px solid #e2e8f0;box-shadow:0 2px 8px #0000000a;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.5rem;max-width:680px;margin:0 auto}.portal-main-title{font-size:1.4rem;font-weight:700;color:#1e3a8a;display:flex;align-items:center;justify-content:center;gap:.5rem}.portal-subtitle{font-size:.95rem;color:#64748b;font-weight:500}.portal-status-pill{display:inline-flex;align-items:center;gap:.45rem;padding:.4rem .95rem;border-radius:9999px;font-size:.85rem;font-weight:600;margin-top:.35rem}.portal-status-pill.status-open{background-color:#f0fdf4;color:#15803d;border:1px solid #86efac}.portal-status-pill.status-closed{background-color:#fffbeb;color:#b45309;border:1px solid #fde68a}.portal-action-buttons{display:flex;align-items:stretch;justify-content:center;gap:1.25rem;max-width:680px;margin:1.75rem auto 0;width:100%}.portal-direct-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:.75rem;padding:1.25rem 1.75rem;border-radius:12px;border:none;font-size:1.15rem;font-weight:700;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);text-decoration:none;min-height:64px}.portal-direct-btn:hover{transform:translateY(-2px)}.portal-direct-btn:active{transform:translateY(0)}.portal-direct-btn .btn-icon{font-size:1.4rem;line-height:1}.portal-direct-btn .btn-title{letter-spacing:.2px}.portal-direct-btn.btn-report-action{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;box-shadow:0 4px 14px #2563eb4d}.portal-direct-btn.btn-report-action:hover{background:linear-gradient(135deg,#1d4ed8,#1e40af);box-shadow:0 6px 18px #2563eb66}.portal-direct-btn.btn-stats-action{background:linear-gradient(135deg,#16a34a,#15803d);color:#fff;box-shadow:0 4px 14px #16a34a4d}.portal-direct-btn.btn-stats-action:hover{background:linear-gradient(135deg,#15803d,#166534);box-shadow:0 6px 18px #16a34a66}.portal-password-container{max-width:680px;margin:1.5rem auto 0;width:100%}.portal-password-card{background:#f8fafc;border:1px solid #cbd5e1;border-radius:12px;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.75rem}.portal-password-prompt{font-size:.9rem;color:#475569;font-weight:600;display:flex;align-items:center;gap:.4rem}.portal-password-row{display:flex;gap:.75rem;width:100%}.portal-password-field{flex:1;padding:.75rem 1rem;border:1.5px solid #cbd5e1;border-radius:8px;font-size:.95rem;background:#fff;color:#1e293b;outline:none;transition:border-color .2s}.portal-password-field:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.portal-password-btn{padding:.75rem 1.5rem;background-color:#2563eb;color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:700;cursor:pointer;transition:background-color .2s;white-space:nowrap}.portal-password-btn:hover{background-color:#1d4ed8}.portal-unlocked-banner{max-width:680px;margin:1.25rem auto 0;background:#f0fdf4;border:1px solid #86efac;color:#15803d;padding:.65rem 1rem;border-radius:8px;font-size:.88rem;font-weight:600;text-align:center}@media(max-width:540px){.portal-action-buttons,.portal-password-row{flex-direction:column}.portal-password-btn{width:100%}}.app-top-nav{display:flex;align-items:center;justify-content:space-between;background-color:#f1f5f9;border:1px solid #e2e8f0;border-radius:10px;padding:.4rem;margin-bottom:1.75rem;gap:.5rem;flex-wrap:wrap}.app-top-nav-tabs{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.app-nav-item{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .95rem;border-radius:7px;border:1px solid transparent;background:transparent;color:#475569;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease;text-decoration:none}.app-nav-item:hover{background-color:#e2e8f0;color:#0f172a}.app-nav-item.active{background-color:#fff;color:#1d4ed8;border-color:#cbd5e1;box-shadow:0 1px 4px #00000014}.app-nav-back-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .85rem;border-radius:6px;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .15s ease}.app-nav-back-btn:hover{background:#f8fafc;color:#0f172a;border-color:#94a3b8}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.export-scope-selector{display:flex;align-items:center;gap:.5rem;margin-bottom:1.25rem;padding:.4rem .5rem;background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;width:fit-content;flex-wrap:wrap}.scope-label{font-size:.88rem;font-weight:600;color:#475569;margin-right:.25rem;padding-left:.25rem}.scope-pill-btn{padding:.45rem .85rem;border-radius:6px;border:1px solid transparent;background:transparent;color:#64748b;font-size:.88rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:.35rem}.scope-pill-btn:hover{color:#1e293b;background-color:#e2e8f0}.scope-pill-btn.active{background-color:#fff;color:#1d4ed8;border-color:#cbd5e1;box-shadow:0 1px 3px #00000014}.multiweek-subtabs{display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.5rem;margin-bottom:1rem;border-bottom:1px solid #e2e8f0}.subtab-pill{padding:.4rem .85rem;border-radius:6px;border:1px solid #e2e8f0;background-color:#f8fafc;color:#475569;font-size:.85rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:all .15s ease}.subtab-pill:hover{background-color:#e2e8f0;color:#0f172a}.subtab-pill.active{background-color:#1e3a8a;color:#fff;border-color:#1e3a8a;font-weight:600}@media(max-width:480px){.app-container{padding:1.5rem}.header h1{font-size:1.5rem}.header h2{font-size:1.1rem}.header p{font-size:1rem}.success-modal,.firewall-modal,.confirmation-modal{padding:2rem 1.5rem}}
