@import"https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap";*{margin:0;padding:0;box-sizing:border-box}:root{--pup-red: #c0202a;--pup-red-dark: #8b1219;--pup-red-deep: #5c0a0f;--pup-red-light: #f7d6d8;--pup-red-ghost: #fdf1f2;--white: #ffffff;--off-white: #f8f7f5;--ink: #1c1917;--ink-muted: #57534e;--ink-faint: #a8a29e;--border: #e7e5e4;--border-strong: #d6d3d1;--success: #16a34a;--success-light: #dcfce7;--warning: #d97706;--warning-light: #fef3c7;--danger: #dc2626;--danger-light: #fee2e2;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08), 0 2px 4px rgba(0, 0, 0, .04);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .1), 0 4px 8px rgba(0, 0, 0, .06);--shadow-red: 0 4px 16px rgba(192, 32, 42, .18);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px}body{font-family:DM Sans,system-ui,sans-serif;-webkit-font-smoothing:antialiased;background-color:var(--off-white);color:var(--ink);font-size:15px;line-height:1.6}.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--off-white);background-image:radial-gradient(circle at 15% 25%,rgba(192,32,42,.06) 0%,transparent 50%),radial-gradient(circle at 85% 75%,rgba(192,32,42,.04) 0%,transparent 50%);padding:24px}.auth-card{background:var(--white);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:48px 44px;width:100%;max-width:460px;border:1px solid var(--border);position:relative;overflow:hidden}.auth-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--pup-red-dark),var(--pup-red),#e85c65)}.auth-logo{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:32px}.auth-logo-badge{width:56px;height:56px;background:linear-gradient(135deg,var(--pup-red-dark),var(--pup-red));border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:26px;box-shadow:var(--shadow-red)}.auth-logo-name{font-family:"DM Serif Display",serif;font-size:22px;color:var(--pup-red);letter-spacing:.03em}.auth-header{text-align:center;margin-bottom:32px}.auth-title{font-family:"DM Serif Display",serif;color:var(--ink);font-size:28px;font-weight:400;margin-bottom:6px;line-height:1.2}.auth-subtitle{color:var(--ink-muted);font-size:14px}.auth-link{text-align:center;margin-top:24px;color:var(--ink-muted);font-size:14px}.auth-link a{color:var(--pup-red);text-decoration:none;font-weight:600}.auth-link a:hover{color:var(--pup-red-dark);text-decoration:underline}.form-group{margin-bottom:18px}.form-label{display:block;margin-bottom:6px;color:var(--ink);font-weight:500;font-size:13px;letter-spacing:.01em}.form-input,.form-select{width:100%;padding:11px 14px;border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);font-size:15px;font-family:DM Sans,sans-serif;transition:border-color .2s,box-shadow .2s;background:var(--white);color:var(--ink);appearance:none}.form-input:focus,.form-select:focus{outline:none;border-color:var(--pup-red);box-shadow:0 0 0 3px #c0202a1a}.form-input::placeholder{color:var(--ink-faint)}.form-input:disabled{background:var(--off-white);color:var(--ink-muted);cursor:not-allowed}.form-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%2357534e' stroke-width='1.5' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}.form-help{font-size:12px;color:var(--ink-faint);margin-top:5px}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.form-actions{margin-top:24px}.btn{padding:11px 22px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;font-family:DM Sans,sans-serif;cursor:pointer;transition:all .18s ease;border:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;letter-spacing:.01em}.btn-primary{background:var(--pup-red);color:var(--white);width:100%;box-shadow:0 2px 6px #c0202a40}.btn-primary:hover:not(:disabled){background:var(--pup-red-dark);box-shadow:var(--shadow-red);transform:translateY(-1px)}.btn-secondary{background:var(--white);color:var(--pup-red);border:1.5px solid var(--pup-red);width:auto}.btn-secondary:hover:not(:disabled){background:var(--pup-red-ghost)}.btn-danger{background:var(--danger);color:var(--white)}.btn-danger:hover:not(:disabled){background:#b91c1c;transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-back{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:var(--white);color:var(--ink-muted);border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);font-size:13px;font-weight:500;font-family:DM Sans,sans-serif;cursor:pointer;transition:all .18s}.btn-back:hover{color:var(--ink);border-color:var(--ink-muted)}.btn-logout{padding:8px 18px;background:transparent;color:var(--pup-red);border:1.5px solid var(--pup-red-light);border-radius:var(--radius-sm);cursor:pointer;font-family:DM Sans,sans-serif;font-weight:600;font-size:13px;transition:all .18s}.btn-logout:hover{background:var(--pup-red);color:var(--white);border-color:var(--pup-red)}.btn-icon{width:32px;height:32px;border-radius:50%;border:none;background:var(--danger-light);color:var(--danger);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .18s}.btn-icon:hover{background:var(--danger);color:var(--white)}.btn-delete{padding:5px 12px;background:var(--danger-light);color:var(--danger);border:1px solid #fca5a5;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:600;font-family:DM Sans,sans-serif;transition:all .18s}.btn-delete:hover{background:var(--danger);color:var(--white)}.btn-enroll{padding:5px 14px;background:var(--success-light);color:var(--success);border:1px solid #86efac;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:600;font-family:DM Sans,sans-serif;transition:all .18s}.btn-enroll:hover{background:var(--success);color:var(--white)}.btn-remove{padding:5px 12px;background:var(--danger-light);color:var(--danger);border:1px solid #fca5a5;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:600;font-family:DM Sans,sans-serif;transition:all .18s}.btn-remove:hover{background:var(--danger);color:var(--white)}.btn-simulate{padding:5px 12px;background:var(--warning-light);color:var(--warning);border:1px solid #fcd34d;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:600;font-family:DM Sans,sans-serif;transition:all .18s}.btn-simulate:hover{background:var(--warning);color:var(--white)}.dashboard{min-height:100vh;background:var(--off-white)}.dashboard-header{background:var(--white);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100}.dashboard-nav{display:flex;justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto;padding:0 28px;height:64px}.nav-brand{display:flex;align-items:center;gap:12px}.nav-brand-icon{width:34px;height:34px;background:linear-gradient(135deg,var(--pup-red-dark),var(--pup-red));border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.nav-brand-text{display:flex;flex-direction:column;line-height:1.1}.nav-brand-title{font-family:"DM Serif Display",serif;font-size:18px;color:var(--pup-red);font-weight:400}.nav-brand-sub{font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;font-weight:500}.dashboard-title{font-family:"DM Serif Display",serif;color:var(--pup-red);font-size:20px;font-weight:400}.nav-links{display:flex;align-items:center;gap:2px}.nav-link{padding:7px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:all .18s;border:none;background:transparent;font-family:DM Sans,sans-serif;display:inline-flex;align-items:center;gap:6px}.nav-link:hover{color:var(--ink);background:var(--off-white)}.nav-link.active{color:var(--pup-red);background:var(--pup-red-ghost);font-weight:600}.dashboard-user{display:flex;align-items:center;gap:12px}.user-avatar{width:36px;height:36px;background:var(--pup-red-ghost);border:2px solid var(--pup-red-light);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--pup-red-dark);flex-shrink:0}.user-info{text-align:right;line-height:1.2}.user-name{font-weight:600;font-size:14px;color:var(--ink)}.user-role{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.07em}.dashboard-content{max-width:1400px;margin:0 auto;padding:32px 28px}.page-header{margin-bottom:28px}.page-title{font-family:"DM Serif Display",serif;font-size:26px;font-weight:400;color:var(--ink);line-height:1.2}.page-subtitle{color:var(--ink-muted);font-size:14px;margin-top:4px}.welcome-banner{background:linear-gradient(135deg,var(--pup-red-dark) 0%,var(--pup-red) 60%,#d94550 100%);border-radius:var(--radius-lg);padding:28px 32px;margin-bottom:28px;color:var(--white);position:relative;overflow:hidden;box-shadow:var(--shadow-red)}.welcome-banner:before{content:"";position:absolute;top:-40px;right:-40px;width:200px;height:200px;background:#ffffff0d;border-radius:50%}.welcome-banner h2{font-family:"DM Serif Display",serif;font-size:22px;font-weight:400;margin-bottom:6px;position:relative}.welcome-banner p{font-size:14px;opacity:.85;position:relative}.banner-badge{display:inline-flex;align-items:center;gap:6px;background:#ffffff26;border:1px solid rgba(255,255,255,.25);border-radius:20px;padding:4px 12px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;margin-bottom:12px}.welcome-card{background:var(--white);border-radius:var(--radius-lg);padding:28px 32px;box-shadow:var(--shadow-sm);border:1px solid var(--border);border-left:4px solid var(--pup-red);margin-bottom:28px}.welcome-card h2{font-family:"DM Serif Display",serif;color:var(--ink);margin-bottom:8px;font-weight:400;font-size:20px}.welcome-card p{color:var(--ink-muted);font-size:14px}.dashboard-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-bottom:32px}.card-item{background:var(--white);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-sm);border:1px solid var(--border);transition:all .22s ease;position:relative;overflow:hidden}.card-item:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--pup-red),transparent);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.card-clickable{cursor:pointer}.card-clickable:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--pup-red-light)}.card-clickable:hover:after{transform:scaleX(1)}.card-disabled{opacity:.45;cursor:not-allowed}.card-icon{font-size:36px;margin-bottom:16px;display:block}.card-title{color:var(--ink);margin-bottom:8px;font-size:16px;font-weight:600}.card-item p{color:var(--ink-muted);font-size:13px;line-height:1.6}.card-arrow{position:absolute;top:24px;right:24px;color:var(--ink-faint);font-size:18px;transition:all .2s}.card-clickable:hover .card-arrow{color:var(--pup-red);transform:translate(3px)}.quick-stats{margin-top:0}.section-heading{font-family:"DM Serif Display",serif;font-size:18px;font-weight:400;color:var(--ink);margin-bottom:16px}.section-title{font-family:"DM Serif Display",serif;font-size:18px;font-weight:400;color:var(--ink);margin-bottom:4px}.section-subtitle{color:var(--ink-muted);font-size:13px;margin-bottom:24px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px}.stat-card{background:var(--white);border-radius:var(--radius-md);padding:20px 22px;border:1px solid var(--border);display:flex;align-items:center;gap:16px;box-shadow:var(--shadow-sm);transition:box-shadow .2s}.stat-card:hover{box-shadow:var(--shadow-md)}.stat-icon-box{width:44px;height:44px;background:var(--pup-red-ghost);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.stat-icon{font-size:28px;margin-bottom:6px}.stat-content{display:flex;flex-direction:column;gap:2px}.stat-value{font-size:26px;font-weight:700;color:var(--pup-red);line-height:1;font-family:"DM Serif Display",serif}.stat-label{color:var(--ink-muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:500}.stats-note{text-align:center;color:var(--ink-faint);font-size:12px;margin-top:16px;font-style:italic}.subject-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.subjects-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.subject-card{background:var(--white);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm);border:1px solid var(--border);cursor:pointer;transition:all .22s;position:relative;overflow:hidden}.subject-card:before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:var(--pup-red);border-radius:4px 0 0 4px;transform:scaleY(.3);opacity:0;transition:all .22s}.subject-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--pup-red-light)}.subject-card:hover:before{transform:scaleY(1);opacity:1}.subject-code{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--pup-red);background:var(--pup-red-ghost);border:1px solid var(--pup-red-light);padding:3px 10px;border-radius:20px;margin-bottom:10px}.subject-name{font-size:17px;font-weight:600;color:var(--ink);margin-bottom:6px}.subject-description{font-size:13px;color:var(--ink-muted);margin-bottom:16px;line-height:1.5}.subject-meta{display:flex;gap:12px;flex-wrap:wrap}.subject-meta-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--ink-faint);font-weight:500}.management-card{background:var(--white);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:hidden;margin-bottom:24px}.management-card-header{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.management-card-body{padding:24px}.management-section{background:var(--white);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-sm);border:1px solid var(--border);margin-bottom:24px}.tab-navigation{display:flex;background:var(--white);border-radius:var(--radius-md);padding:4px;border:1px solid var(--border);box-shadow:var(--shadow-sm);margin-bottom:24px;gap:2px}.tab-btn{flex:1;padding:9px 18px;border:none;background:transparent;border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:all .18s;font-family:DM Sans,sans-serif;display:flex;align-items:center;justify-content:center;gap:6px}.tab-btn:hover{color:var(--ink);background:var(--off-white)}.tab-btn.active{background:var(--pup-red);color:var(--white);font-weight:600;box-shadow:0 2px 6px #c0202a33}.tab-content{animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.table-container{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border)}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table thead{background:var(--off-white);border-bottom:2px solid var(--border)}.data-table th{padding:12px 16px;text-align:left;font-weight:600;font-size:12px;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.data-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}.data-table tbody tr:last-child{border-bottom:none}.data-table tbody tr:hover{background:var(--pup-red-ghost)}.data-table td{padding:14px 16px;vertical-align:middle}.report-table-container{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border);margin:20px 0}.report-table{width:100%;border-collapse:collapse;font-size:14px}.report-table thead{background:var(--pup-red);color:var(--white)}.report-table th{padding:13px 16px;text-align:left;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.report-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}.report-table tbody tr:hover{background:var(--pup-red-ghost)}.report-table td{padding:13px 16px;font-size:14px}.student-name{font-weight:600;color:var(--ink)}.present-count{color:var(--success);font-weight:700}.late-count{color:var(--warning);font-weight:700}.absent-count{color:var(--danger);font-weight:700}.attendance-table-container{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--white)}.attendance-table{width:100%;border-collapse:collapse;font-size:14px}.attendance-table thead{background:var(--off-white);border-bottom:2px solid var(--border)}.attendance-table th{padding:12px 16px;text-align:left;font-weight:600;font-size:12px;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em}.attendance-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}.attendance-table tbody tr:hover{background:var(--pup-red-ghost)}.attendance-table td{padding:13px 16px}.status-select{padding:5px 10px;border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);font-size:13px;font-family:DM Sans,sans-serif;font-weight:600;cursor:pointer;transition:all .18s}.status-select:focus{outline:none;border-color:var(--pup-red)}.status-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.status-good,.status-present{background:var(--success-light);color:var(--success)}.status-warning,.status-late{background:var(--warning-light);color:var(--warning)}.status-poor,.status-absent{background:var(--danger-light);color:var(--danger)}.status-ongoing{background:var(--pup-red-light);color:var(--pup-red-dark);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.attendance-rate{display:flex;align-items:center;gap:10px}.progress-bar{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.progress-fill{height:100%;border-radius:3px;transition:width .4s ease}.user-management-card{background:var(--white);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.user-form{margin-top:20px}.attendance-controls{display:flex;justify-content:space-between;align-items:flex-start;background:var(--white);border-radius:var(--radius-lg);padding:24px 28px;box-shadow:var(--shadow-sm);border:1px solid var(--border);margin-bottom:20px;gap:20px}.session-info h2{font-family:"DM Serif Display",serif;font-size:20px;font-weight:400;color:var(--ink);margin-bottom:4px}.control-buttons{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.enrollment-section{margin-top:20px}.enrollment-section h3{font-family:"DM Serif Display",serif;font-size:16px;font-weight:400;color:var(--ink);margin-bottom:12px}.student-list{display:flex;flex-direction:column;gap:8px}.student-enrollment-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--off-white);border-radius:var(--radius-sm);border:1px solid var(--border);transition:background .15s}.student-enrollment-item:hover{background:var(--pup-red-ghost)}.student-enrollment-item strong{font-size:14px;color:var(--ink);display:block}.student-meta{font-size:12px;color:var(--ink-faint);display:block;margin-top:2px}.enrollment-card{background:var(--off-white);border-radius:var(--radius-md);padding:16px 20px;margin-bottom:12px;border:1px solid var(--border)}.enrollment-card h3{font-family:"DM Serif Display",serif;font-weight:400;font-size:15px;color:var(--ink);margin-bottom:10px}.enrolled-students{display:flex;flex-wrap:wrap;gap:6px}.enrolled-student-tag{background:var(--white);color:var(--ink-muted);border:1px solid var(--border-strong);padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500}.teacher-assignment-form{max-width:800px}.teacher-assignment-card{background:var(--off-white);border-radius:var(--radius-md);padding:18px 20px;margin-bottom:12px;border:1px solid var(--border)}.teacher-assignment-card h3{font-family:"DM Serif Display",serif;font-weight:400;font-size:16px;color:var(--ink);margin-bottom:4px}.assigned-teachers-list{margin-top:12px;display:flex;flex-direction:column;gap:8px}.teacher-assignment-item{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--white);border-radius:var(--radius-sm);border:1px solid var(--border)}.teacher-info{display:flex;flex-direction:column;gap:2px}.teacher-info strong{font-size:14px;color:var(--ink)}.teacher-email{color:var(--ink-faint);font-size:12px}.schedule-row{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:12px;align-items:end;background:var(--off-white);padding:14px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:8px}.report-filters{background:var(--white);border-radius:var(--radius-lg);padding:28px;margin-bottom:20px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:18px}.filter-actions{display:flex;gap:10px;align-items:center}.report-results{background:var(--white);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.report-header{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border)}.report-header h2{font-family:"DM Serif Display",serif;color:var(--ink);font-size:22px;font-weight:400;margin-bottom:6px}.report-meta{color:var(--ink-muted);font-size:13px}.session-history{margin-top:28px;padding-top:28px;border-top:1px solid var(--border)}.session-history h3{font-family:"DM Serif Display",serif;font-weight:400;color:var(--ink);margin-bottom:14px;font-size:16px}.sessions-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}.session-item{background:var(--off-white);border-radius:var(--radius-sm);padding:12px 14px;border:1px solid var(--border)}.session-date{font-weight:600;font-size:13px;color:var(--ink);margin-bottom:4px}.session-details{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-muted)}.session-status{background:var(--pup-red-ghost);color:var(--pup-red-dark);padding:2px 8px;border-radius:8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.alert{padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:18px;font-weight:500;font-size:14px}.alert-error{background:var(--danger-light);color:#991b1b;border:1px solid #fca5a5}.alert-success{background:var(--success-light);color:#14532d;border:1px solid #86efac}.empty-state{text-align:center;padding:60px 20px;color:var(--ink-muted)}.empty-state h3{font-family:"DM Serif Display",serif;color:var(--ink);margin-bottom:10px;font-size:20px;font-weight:400}.empty-state p{font-size:14px;max-width:440px;margin:0 auto;line-height:1.6}.spinner{border:2.5px solid var(--border);border-top:2.5px solid var(--pup-red);border-radius:50%;width:36px;height:36px;animation:spin .8s linear infinite;margin:20px auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.section-divider{height:1px;background:var(--border);margin:28px 0}@media(max-width:768px){.auth-card{padding:32px 24px}.dashboard-nav{padding:12px 16px;height:auto;flex-wrap:wrap;gap:10px}.nav-links{display:none}.dashboard-content{padding:20px 16px}.dashboard-grid,.subject-grid,.subjects-grid,.form-row{grid-template-columns:1fr}.schedule-row{grid-template-columns:1fr 1fr}.attendance-controls{flex-direction:column;align-items:stretch}.control-buttons{flex-direction:column}.control-buttons .btn{width:100%}.tab-navigation{flex-wrap:wrap}.filter-grid{grid-template-columns:1fr}.filter-actions{flex-direction:column}.filter-actions .btn{width:100%}.stats-grid{grid-template-columns:1fr 1fr}.welcome-banner{padding:22px 20px}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}}
