:root,[data-theme=indigo]{--font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--bg-main: #f5f6fa;--bg-surface: #ffffff;--bg-surface-elevated: #ffffff;--bg-hover: #eef2ff;--bg-active: #e0e7ff;--bg-subtle: #f8fafc;--bg-card-subtle: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);--header-bg: rgba(255, 255, 255, .9);--logo-bg: linear-gradient(135deg, #eef2ff 0%, #e0e7ff 100%);--quick-token-bg: linear-gradient(180deg, #ffffff 0%, #f8f9fc 100%);--summary-card-bg: linear-gradient(135deg, #ffffff 0%, #f5f3ff 100%);--table-header-bg: #f8fafc;--table-row-border: #f1f5f9;--input-bg: #ffffff;--nav-active-bg: linear-gradient(135deg, #eef2ff 0%, #e0e7ff 100%);--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--primary-color: #4f46e5;--primary-hover: #4338ca;--primary-active: #3730a3;--primary-light: #eef2ff;--primary-border: #c7d2fe;--border-color: #e2e8f0;--border-focus: #6366f1;--online-color: #10b981;--online-bg: #ecfdf5;--online-border: #a7f3d0;--online-text: #047857;--gradient-primary: linear-gradient(135deg, #4f46e5 0%, #6366f1 100%);--gradient-primary-hover: linear-gradient(135deg, #4338ca 0%, #4f46e5 100%);--gradient-accent: linear-gradient(90deg, #4f46e5, #8b5cf6, #ec4899);--header-height: 64px;--sidebar-width: 270px;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 8px -1px rgba(15, 23, 42, .07), 0 2px 4px -2px rgba(15, 23, 42, .04);--shadow-lg: 0 10px 18px -3px rgba(15, 23, 42, .08), 0 4px 6px -4px rgba(15, 23, 42, .03);--shadow-xl: 0 20px 25px -5px rgba(15, 23, 42, .09), 0 8px 10px -6px rgba(15, 23, 42, .04);--transition-smooth: all .2s cubic-bezier(.16, 1, .3, 1);--transition-fast: all .12s ease-in-out}[data-theme=dark]{--bg-main: #090d16;--bg-surface: #111827;--bg-surface-elevated: #1f2937;--bg-hover: #1f2937;--bg-active: #1e293b;--bg-subtle: #0f172a;--bg-card-subtle: linear-gradient(180deg, #111827 0%, #0f172a 100%);--header-bg: rgba(17, 24, 39, .88);--logo-bg: linear-gradient(135deg, #1e293b 0%, #334155 100%);--quick-token-bg: linear-gradient(180deg, #111827 0%, #0f172a 100%);--summary-card-bg: linear-gradient(135deg, #111827 0%, #1e293b 100%);--table-header-bg: #0d131f;--table-row-border: #1e293b;--input-bg: #0d131f;--nav-active-bg: linear-gradient(135deg, rgba(96, 165, 250, .15) 0%, rgba(59, 130, 246, .1) 100%);--text-primary: #f8fafc;--text-secondary: #cbd5e1;--text-muted: #64748b;--primary-color: #60a5fa;--primary-hover: #3b82f6;--primary-active: #2563eb;--primary-light: rgba(96, 165, 250, .15);--primary-border: #334155;--border-color: #1e293b;--border-focus: #38bdf8;--online-color: #34d399;--online-bg: rgba(16, 185, 129, .12);--online-border: rgba(16, 185, 129, .3);--online-text: #6ee7b7;--gradient-primary: linear-gradient(135deg, #2563eb 0%, #3b82f6 100%);--gradient-primary-hover: linear-gradient(135deg, #1d4ed8 0%, #2563eb 100%);--gradient-accent: linear-gradient(90deg, #38bdf8, #818cf8, #c084fc);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .5);--shadow-md: 0 4px 12px rgba(0, 0, 0, .6);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .7);--shadow-xl: 0 20px 30px rgba(0, 0, 0, .8)}[data-theme=amber]{--bg-main: #faf9f6;--bg-surface: #ffffff;--bg-surface-elevated: #ffffff;--bg-hover: #fef3c7;--bg-active: #fde68a;--bg-subtle: #faf9f6;--bg-card-subtle: linear-gradient(180deg, #ffffff 0%, #fef3c7 100%);--header-bg: rgba(255, 255, 255, .9);--logo-bg: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);--quick-token-bg: linear-gradient(180deg, #ffffff 0%, #fffbeb 100%);--summary-card-bg: linear-gradient(135deg, #ffffff 0%, #fef3c7 100%);--table-header-bg: #faf9f6;--table-row-border: #f5f5f4;--input-bg: #ffffff;--nav-active-bg: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);--text-primary: #1c1917;--text-secondary: #57534e;--text-muted: #a8a29e;--primary-color: #d97706;--primary-hover: #b45309;--primary-active: #92400e;--primary-light: #fffbeb;--primary-border: #fde68a;--border-color: #e7e5e4;--border-focus: #f59e0b;--online-color: #10b981;--online-bg: #ecfdf5;--online-border: #a7f3d0;--online-text: #047857;--gradient-primary: linear-gradient(135deg, #d97706 0%, #b45309 100%);--gradient-primary-hover: linear-gradient(135deg, #b45309 0%, #92400e 100%);--gradient-accent: linear-gradient(90deg, #d97706, #f59e0b, #fbbf24)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--bg-main);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s ease,color .2s ease}.app-shell{display:flex;flex-direction:column;height:100vh;overflow:hidden}.header{height:var(--header-height);background-color:var(--header-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 1.75rem;z-index:50;position:sticky;top:0;transition:background-color .2s ease,border-color .2s ease}.header-brand{display:flex;align-items:center;gap:.85rem}.brand-logo-container{width:38px;height:38px;border-radius:var(--radius-sm);background:var(--logo-bg);display:flex;align-items:center;justify-content:center;border:1px solid var(--primary-border);box-shadow:0 1px 3px #00000014;flex-shrink:0}.brand-logo{font-size:1.35rem;line-height:1}.brand-text-group{display:flex;flex-direction:column;gap:.05rem}.brand-title{font-size:1.15rem;font-weight:800;color:var(--text-primary);letter-spacing:-.025em;line-height:1.2}.brand-section-tag{font-size:.72rem;font-weight:600;color:var(--text-muted);letter-spacing:.02em;text-transform:uppercase}.portal-badge{font-size:.72rem;font-weight:700;background:var(--primary-light);color:var(--primary-color);border:1px solid var(--primary-border);padding:.2rem .65rem;border-radius:var(--radius-full);margin-left:.35rem}.header-actions{display:flex;align-items:center;gap:.85rem}.theme-switcher-wrapper{position:relative;display:inline-block}.theme-switcher-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .75rem;border-radius:var(--radius-full);background-color:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-color);font-size:.8rem;font-weight:700;cursor:pointer;box-shadow:var(--shadow-xs);transition:var(--transition-fast)}.theme-switcher-btn:hover{background-color:var(--bg-hover);border-color:var(--primary-border);transform:translateY(-1px)}.theme-btn-icon{font-size:.95rem;line-height:1}.theme-btn-label{font-weight:700;letter-spacing:-.01em}.theme-btn-arrow{font-size:.65rem;color:var(--text-muted);margin-left:.15rem}.theme-dropdown-menu{position:absolute;right:0;top:calc(100% + .5rem);width:255px;background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);padding:.5rem;z-index:1000;display:flex;flex-direction:column;gap:.25rem;animation:fadeIn .15s ease-out}.theme-dropdown-header{padding:.4rem .6rem .3rem;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);border-bottom:1px solid var(--border-color);margin-bottom:.25rem}.theme-options-list{display:flex;flex-direction:column;gap:.2rem}.theme-option-item{display:flex;align-items:center;justify-content:space-between;padding:.55rem .65rem;border-radius:var(--radius-sm);background:transparent;border:1px solid transparent;cursor:pointer;text-align:left;transition:var(--transition-fast);width:100%}.theme-option-item:hover{background-color:var(--bg-hover)}.theme-option-item.active{background-color:var(--primary-light);border-color:var(--primary-border)}.theme-option-left{display:flex;align-items:center;gap:.55rem}.theme-option-icon{font-size:1.1rem;line-height:1}.theme-option-text{display:flex;flex-direction:column}.theme-option-name{font-size:.82rem;font-weight:700;color:var(--text-primary)}.theme-option-desc{font-size:.68rem;color:var(--text-muted)}.theme-option-right{display:flex;align-items:center;gap:.4rem}.theme-swatch-dots{display:flex;gap:.2rem}.theme-swatch-dot{width:8px;height:8px;border-radius:50%;border:1px solid rgba(0,0,0,.15)}.theme-check{font-size:.85rem;font-weight:800;color:var(--primary-color)}.status-indicator{display:flex;align-items:center;gap:.5rem;padding:.35rem .85rem;border-radius:var(--radius-full);font-size:.82rem;font-weight:600;transition:var(--transition-smooth);letter-spacing:-.01em}.status-indicator.online{background-color:var(--online-bg);color:var(--online-text);border:1px solid var(--online-border);box-shadow:0 1px 2px #10b98114}.status-dot{width:8px;height:8px;border-radius:50%;background-color:var(--online-color);box-shadow:0 0 8px var(--online-color);flex-shrink:0}.status-indicator.offline{background-color:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.status-indicator.offline .status-dot{background-color:#ef4444;box-shadow:0 0 8px #ef444499}.status-indicator.server-disconnected{background-color:#fffbeb;color:#b45309;border:1px solid #fde68a}.status-indicator.server-disconnected .status-dot{background-color:#f59e0b;box-shadow:0 0 8px #f59e0b99}.status-indicator.syncing{background-color:var(--primary-light);color:var(--primary-color);border:1px solid var(--primary-border)}.status-indicator.syncing .status-dot{background-color:var(--primary-color);box-shadow:0 0 8px var(--primary-color);animation:pulse-dot 1.2s infinite ease-in-out}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.status-indicator.pending{background-color:#fffbeb;color:#b45309;border:1px solid #fde68a}.status-indicator.pending .status-dot{background-color:#f59e0b;box-shadow:0 0 8px #f59e0b99}.status-indicator.auth-expired{background-color:#fef2f2;color:#b91c1c;border:1px solid #fca5a5}.sync-now-btn{background:var(--gradient-primary);color:#fff;border:none;padding:.3rem .75rem;border-radius:var(--radius-xs);font-size:.75rem;font-weight:700;cursor:pointer;margin-left:.5rem;box-shadow:0 1px 3px #00000026;transition:var(--transition-fast)}.sync-now-btn:hover{background:var(--gradient-primary-hover)}.sync-now-btn:disabled{opacity:.6;cursor:not-allowed}.pending-token-tag{display:inline-flex;align-items:center;gap:.25rem;font-size:.72rem;font-weight:700;background-color:#fef3c7;color:#92400e;border:1px solid #fde68a;padding:.15rem .45rem;border-radius:var(--radius-xs);margin-left:.35rem}.pending-row-highlight{background-color:#f59e0b14!important}.app-body{display:flex;flex:1;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);flex-shrink:0;background-color:var(--bg-surface);border-right:1px solid var(--border-color);display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - var(--header-height));transition:background-color .2s ease,border-color .2s ease}.sidebar-scrollable{flex:1;overflow-y:auto;padding:1.25rem .85rem}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem}.nav-group-section{margin-bottom:1.35rem}.nav-group-title{display:block;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:0 .75rem .45rem}.nav-group-items{display:flex;flex-direction:column;gap:.2rem}.nav-link{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem;border-radius:var(--radius-sm);color:var(--text-secondary);text-decoration:none;font-weight:600;font-size:.9rem;transition:var(--transition-smooth);border:1px solid transparent}.nav-link:hover{background-color:var(--bg-hover);color:var(--text-primary);transform:translate(2px)}.nav-link.active{background:var(--nav-active-bg);color:var(--primary-color);font-weight:700;border-color:var(--primary-border);box-shadow:0 1px 3px #0000000f}.nav-icon{font-size:1.1rem;display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.nav-label{flex:1;letter-spacing:-.01em}.sidebar-nested-container{display:flex;flex-direction:column;gap:.2rem;margin-left:1.6rem;padding-left:.6rem;border-left:2px solid var(--border-color);margin-top:.25rem;margin-bottom:.35rem}.nested-nav-link{font-size:.8rem;padding:.35rem .6rem;color:var(--text-secondary);border-radius:var(--radius-xs);display:flex;align-items:center;gap:.45rem;text-decoration:none;transition:var(--transition-fast);font-weight:500}.nested-bullet{font-size:.85rem;color:var(--text-muted)}.nested-nav-link:hover{background-color:var(--bg-hover);color:var(--text-primary)}.nested-nav-link.active{background-color:var(--primary-light);color:var(--primary-color);font-weight:700}.sidebar-profile-card{display:flex;flex-direction:column;gap:.65rem;padding:.85rem;margin:.5rem .85rem .85rem;background:var(--bg-card-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-xs)}.sidebar-profile-header{display:flex;align-items:center;gap:.75rem;width:100%}.sidebar-user-avatar{width:36px;height:36px;border-radius:50%;background:var(--gradient-primary);color:#fff;font-weight:700;font-size:.85rem;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 5px #0003;flex-shrink:0}.sidebar-user-info{display:flex;flex-direction:column;overflow:hidden;flex:1}.sidebar-user-name{font-size:.85rem;font-weight:700;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:.72rem;color:var(--text-secondary);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-logout-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:.45rem;padding:.45rem .75rem;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-sm);font-size:.78rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast)}.sidebar-logout-btn:hover{background-color:#fee2e2;border-color:#fca5a5;color:#dc2626;transform:translateY(-1px)}.sidebar-logout-icon{font-size:.85rem;line-height:1}.sidebar-logout-text{font-size:.78rem;line-height:1;font-weight:600}.sidebar-logout-icon-btn{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.95rem;transition:var(--transition-fast);flex-shrink:0;color:var(--text-secondary)}.sidebar-logout-icon-btn:hover{background-color:#fee2e2;border-color:#fca5a5;color:#dc2626;transform:scale(1.05)}.main-content{flex:1;overflow-y:auto;padding:2rem;background-color:var(--bg-main);transition:background-color .2s ease}.page-container{max-width:1040px;margin:0 auto;display:flex;flex-direction:column;gap:1.75rem}.page-header h2{font-size:1.75rem;font-weight:800;color:var(--text-primary);letter-spacing:-.03em}.page-subtitle{color:var(--text-secondary);font-size:.95rem;margin-top:.25rem}.card{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-sm);transition:var(--transition-smooth)}.card h3{font-size:1.15rem;font-weight:700;margin-bottom:.5rem;color:var(--text-primary);letter-spacing:-.02em}.card p{color:var(--text-secondary);font-size:.95rem}.home-container{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:1.85rem}.home-header h2{font-size:1.75rem;font-weight:800;color:var(--text-primary);letter-spacing:-.03em}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem}.status-card{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.35rem 1.5rem;display:flex;align-items:center;gap:1.15rem;box-shadow:var(--shadow-sm);transition:var(--transition-smooth)}.status-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border-focus)}.status-icon-wrapper{width:52px;height:52px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:1.45rem;flex-shrink:0;box-shadow:inset 0 1px 1px #fff6}.status-icon-wrapper.present{background:var(--primary-light);border:1px solid var(--primary-border);color:var(--primary-color)}.status-icon-wrapper.queue{background:#f59e0b26;border:1px solid rgba(245,158,11,.35);color:#d97706}.status-icon-wrapper.tokens{background:#10b98126;border:1px solid rgba(16,185,129,.35);color:#059669}.status-info{display:flex;flex-direction:column}.status-value{font-size:1.65rem;font-weight:800;color:var(--text-primary);line-height:1.15;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.status-title{font-size:.85rem;color:var(--text-secondary);font-weight:600;margin-top:.15rem}.quick-token-section{background:var(--quick-token-bg);border:1px solid var(--primary-border);border-radius:var(--radius-lg);padding:1.75rem;box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:1.35rem;position:relative}.quick-token-section:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-accent);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.section-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.section-title{font-size:1.25rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}.section-subtitle{font-size:.88rem;color:var(--text-secondary);margin-top:.15rem}.feedback-toast{background-color:var(--online-bg);color:var(--online-text);border:1px solid var(--online-border);padding:.5rem 1rem;border-radius:var(--radius-full);font-size:.88rem;font-weight:600;display:flex;align-items:center;gap:.4rem;box-shadow:0 2px 6px #10b98126;animation:fadeIn .2s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1.15rem}.student-card{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:1.15rem;display:flex;flex-direction:column;justify-content:space-between;gap:1rem;box-shadow:var(--shadow-xs);transition:var(--transition-smooth)}.student-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--primary-border)}.student-header{display:flex;align-items:center;gap:.85rem}.student-avatar{width:42px;height:42px;border-radius:50%;color:#fff;font-weight:800;font-size:.92rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 4px #00000026}.student-details{display:flex;flex-direction:column;overflow:hidden}.student-name{font-size:.95rem;font-weight:700;color:var(--text-primary);line-height:1.25;letter-spacing:-.01em}.student-seat{font-size:.78rem;color:var(--text-muted);font-family:var(--font-mono);font-weight:500}.student-body{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding-top:.75rem;border-top:1px dashed var(--border-color)}.token-counter{display:flex;align-items:center;gap:.35rem}.token-icon{font-size:1.15rem}.token-count{font-size:1.25rem;font-weight:800;color:var(--text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.token-unit{font-size:.75rem;color:var(--text-muted);font-weight:600;text-transform:uppercase}.token-action-btn{background:var(--gradient-primary);color:#fff;border:none;border-radius:var(--radius-sm);padding:.5rem .9rem;font-size:.85rem;font-weight:700;cursor:pointer;box-shadow:0 2px 5px #00000026;transition:var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:.25rem}.token-action-btn:hover{background:var(--gradient-primary-hover);box-shadow:0 4px 10px #00000040;transform:translateY(-1px)}.token-action-btn:active{transform:scale(.96)}.student-portal-card{padding:2.25rem;background-color:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--border-color)}.student-portal-header{font-size:1.65rem;font-weight:800;color:var(--text-primary);letter-spacing:-.025em;margin-bottom:.35rem}.student-id{font-size:.9rem;color:var(--text-secondary);font-family:var(--font-mono);margin-bottom:.75rem}.balance{font-size:1.35rem;font-weight:700;color:var(--primary-color);margin-bottom:.85rem}.status{font-size:.95rem;color:var(--text-secondary);margin-bottom:1.25rem}.student-btn{background:var(--gradient-primary);color:#fff;border:none;border-radius:var(--radius-sm);padding:.65rem 1.25rem;font-size:.92rem;font-weight:700;cursor:pointer;transition:var(--transition-fast);box-shadow:0 2px 5px #0003}.student-btn:hover{background:var(--gradient-primary-hover);transform:translateY(-1px)}.student-btn-cancel{background-color:var(--bg-hover);color:var(--text-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:.55rem 1.1rem;font-size:.88rem;font-weight:600;cursor:pointer;transition:var(--transition-fast)}.student-btn-cancel:hover{background-color:var(--bg-active);color:var(--text-primary)}.action-container{display:flex;justify-content:center;gap:.75rem;margin-top:1rem}.loading{padding:1.5rem;text-align:center;color:var(--text-secondary)}.activity-section{display:flex;flex-direction:column;gap:1.25rem}.activity-count{font-size:.8rem;font-weight:700;color:var(--text-muted);background-color:var(--bg-hover);padding:.2rem .65rem;border-radius:var(--radius-full)}.activity-list{display:flex;flex-direction:column;gap:.25rem}.activity-item{display:flex;align-items:center;gap:1rem;padding:.9rem .5rem;border-bottom:1px solid var(--table-row-border);border-radius:var(--radius-sm);transition:background-color .15s ease}.activity-item:hover{background-color:var(--bg-hover)}.activity-item:last-child{border-bottom:none}.activity-icon{font-size:1.35rem;background-color:var(--primary-light);border:1px solid var(--primary-border);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.activity-content{display:flex;flex-direction:column;gap:.2rem}.activity-text{font-size:.92rem;color:var(--text-primary);font-weight:600}.activity-time{font-size:.78rem;color:var(--text-muted)}.attendance-container{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:1.75rem}.attendance-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.attendance-header h2{font-size:1.75rem;font-weight:800;color:var(--text-primary);letter-spacing:-.03em}.attendance-summary-badge{background-color:var(--bg-surface);border:1px solid var(--border-color);padding:.65rem 1.35rem;border-radius:var(--radius-lg);display:flex;align-items:center;gap:.75rem;box-shadow:var(--shadow-sm);font-size:.95rem;color:var(--text-secondary)}.attendance-summary-badge strong{color:var(--primary-color);font-size:1.25rem;font-weight:800}.roster-card{padding:0;overflow:hidden;border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:var(--bg-surface)}.roster-table-header{display:grid;grid-template-columns:140px 1fr 160px;padding:.95rem 1.5rem;background-color:var(--table-header-bg);border-bottom:1px solid var(--border-color);font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.roster-list{display:flex;flex-direction:column}.roster-row{display:grid;grid-template-columns:140px 1fr 160px;align-items:center;padding:.95rem 1.5rem;border-bottom:1px solid var(--table-row-border);transition:background-color .12s ease}.roster-row:last-child{border-bottom:none}.roster-row:hover{background-color:var(--bg-hover)}.roll-number{font-family:var(--font-mono);font-size:.85rem;color:var(--text-secondary);font-weight:600}.student-name-text{font-size:.95rem;font-weight:700;color:var(--text-primary)}.attendance-toggle-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.45rem .95rem;border-radius:var(--radius-sm);font-size:.88rem;font-weight:700;cursor:pointer;border:1px solid transparent;transition:var(--transition-fast);-webkit-user-select:none;user-select:none}.attendance-toggle-btn.present{background-color:var(--online-bg);color:var(--online-text);border-color:var(--online-border);box-shadow:0 1px 2px #10b9811a}.attendance-toggle-btn.present:hover{filter:brightness(1.05);transform:translateY(-1px)}.attendance-toggle-btn.absent{background-color:#ef44441f;color:#ef4444;border-color:#ef44444d;box-shadow:0 1px 2px #ef444414}.attendance-toggle-btn.absent:hover{background-color:#ef44442e;transform:translateY(-1px)}.checkbox-icon{font-size:1.05rem;line-height:1}.participation-container{max-width:1240px;margin:0 auto}.participation-layout{display:grid;grid-template-columns:1fr 340px;gap:1.75rem;align-items:start}.participation-main{display:flex;flex-direction:column;gap:1.75rem}.student-boxes-section{display:flex;flex-direction:column;gap:1.15rem}.section-subheader{display:flex;align-items:center;justify-content:space-between}.section-subheader h3{font-size:1.15rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}.roster-count{font-size:.8rem;font-weight:700;color:var(--text-muted);background-color:var(--bg-hover);padding:.2rem .65rem;border-radius:var(--radius-full)}.alphabetical-student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1.15rem}.student-box{background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:1.15rem;display:flex;flex-direction:column;justify-content:space-between;gap:.95rem;cursor:pointer;transition:var(--transition-smooth);position:relative;box-shadow:var(--shadow-xs)}.student-box:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border-focus)}.student-box.hand-raised{border:2px solid #f59e0b}.student-box.recording{border:2px solid #ef4444;background-color:#ef444414;box-shadow:0 0 12px #ef444440}.box-top{display:flex;align-items:center;justify-content:space-between}.box-avatar{width:40px;height:40px;border-radius:50%;color:#fff;font-weight:800;font-size:.9rem;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #00000026}.hand-badge{font-size:1.25rem}.recording-badge{font-size:.75rem;font-weight:800;color:#dc2626;background-color:#fee2e2;padding:.25rem .55rem;border-radius:var(--radius-full);display:flex;align-items:center;gap:.3rem;border:1px solid #fca5a5}.recording-dot{animation:pulseDot 1s infinite alternate}@keyframes pulseDot{0%{opacity:1}to{opacity:.3}}.box-info{display:flex;flex-direction:column;gap:.15rem}.box-student-name{font-size:.95rem;font-weight:700;color:var(--text-primary);line-height:1.25;letter-spacing:-.01em}.box-roll{font-size:.78rem;color:var(--text-muted);font-family:var(--font-mono);font-weight:500}.box-recording-btn{width:100%;padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.82rem;font-weight:700;border:none;cursor:pointer;transition:var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:.35rem}.box-recording-btn.start-btn{background-color:var(--primary-light);color:var(--primary-color);border:1px solid var(--primary-border)}.box-recording-btn.start-btn:hover{filter:brightness(1.05);transform:translateY(-1px)}.box-recording-btn.stop-btn{background-color:#dc2626;color:#fff;box-shadow:0 2px 4px #dc262640}.box-recording-btn.stop-btn:hover{background-color:#b91c1c}.raised-hands-panel{display:flex;flex-direction:column;gap:1.35rem;position:sticky;top:calc(var(--header-height) + 1.5rem)}.panel-header{display:flex;align-items:center;justify-content:space-between}.panel-title-wrapper{display:flex;align-items:center;gap:.5rem}.panel-icon{font-size:1.25rem}.panel-header h3{font-size:1.15rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}.queue-badge{background-color:#fef3c7;color:#b45309;font-weight:800;font-size:.8rem;padding:.25rem .6rem;border-radius:var(--radius-full);border:1px solid #fde68a}.raised-hands-list{display:flex;flex-direction:column;gap:.85rem}.raised-hand-card{background-color:var(--bg-hover);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:1rem;display:flex;flex-direction:column;gap:.75rem;transition:border-color .15s ease}.raised-hand-card.is-recording{border:2px solid #ef4444;background-color:#ef444414}.request-info{display:flex;flex-direction:column;gap:.15rem}.request-student-name{font-size:.95rem;font-weight:700;color:var(--text-primary)}.request-time{font-size:.78rem;color:var(--text-muted)}.recording-controls{display:flex;flex-direction:column;gap:.5rem}.recording-status-text{font-size:.8rem;font-weight:800;color:#dc2626;animation:pulseDot 1s infinite alternate}.recording-action-btn{width:100%;padding:.55rem .85rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700;border:none;cursor:pointer;transition:var(--transition-fast)}.recording-action-btn.start{background:var(--gradient-primary);color:#fff;box-shadow:0 2px 4px #00000026}.recording-action-btn.start:hover{background:var(--gradient-primary-hover)}.recording-action-btn.stop{background-color:#dc2626;color:#fff;box-shadow:0 2px 4px #dc262640}.recording-action-btn.stop:hover{background-color:#b91c1c}.empty-queue{padding:1.5rem 0;text-align:center;color:var(--text-muted);font-size:.9rem}.quick-token-container{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:1.75rem}.quick-token-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.quick-token-header h2{font-size:1.75rem;font-weight:800;color:var(--text-primary);letter-spacing:-.03em}.total-tokens-summary-card{background:var(--summary-card-bg);border:1px solid var(--primary-border);padding:.85rem 1.5rem;border-radius:var(--radius-lg);display:flex;align-items:center;gap:1rem;box-shadow:var(--shadow-sm)}.total-tokens-icon{font-size:1.75rem}.total-tokens-info{display:flex;flex-direction:column}.total-tokens-value{font-size:1.5rem;font-weight:800;color:var(--primary-color);line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.total-tokens-label{font-size:.78rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em}.token-control-group{display:flex;align-items:center;gap:.5rem}.ctrl-btn{width:32px;height:32px;border-radius:var(--radius-xs);border:1px solid var(--border-color);font-size:1.1rem;font-weight:800;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition-fast)}.ctrl-btn.dec{background-color:var(--bg-hover);color:var(--text-secondary)}.ctrl-btn.dec:hover{background-color:var(--bg-active);color:var(--text-primary)}.ctrl-btn.inc{background:var(--gradient-primary);color:#fff;border-color:var(--primary-color);box-shadow:0 1px 3px #00000026}.ctrl-btn.inc:hover{background:var(--gradient-primary-hover)}.token-count-display{min-width:32px;text-align:center;font-size:1rem;font-weight:800;color:var(--text-primary);-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums}.search-bar-wrapper{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:1.15rem;font-size:1.1rem;color:var(--text-muted);pointer-events:none}.search-input{width:100%;padding:.9rem 2.5rem .9rem 2.85rem;border:1px solid var(--border-color);border-radius:var(--radius-lg);font-size:.95rem;background-color:var(--input-bg);color:var(--text-primary);box-shadow:var(--shadow-sm);outline:none;transition:var(--transition-smooth)}.search-input:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f126}.clear-search-btn{position:absolute;right:1.15rem;background:none;border:none;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:.25rem}.clear-search-btn:hover{color:var(--text-primary)}.recent-students-section{display:flex;flex-direction:column;gap:.95rem}.recent-students-row{display:flex;flex-wrap:wrap;gap:.85rem}.recent-card{flex:1 1 200px;min-width:200px;background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:.85rem 1.15rem;display:flex;align-items:center;justify-content:space-between;gap:.85rem;box-shadow:var(--shadow-xs);transition:var(--transition-smooth)}.recent-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:var(--border-focus)}.recent-card-left{display:flex;align-items:center;gap:.75rem}.recent-avatar{width:36px;height:36px;border-radius:50%;color:#fff;font-weight:800;font-size:.85rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.recent-info{display:flex;flex-direction:column}.recent-name{font-size:.9rem;font-weight:700;color:var(--text-primary);line-height:1.2}.recent-roll{font-size:.72rem;color:var(--text-muted);font-family:var(--font-mono);font-weight:500}.full-roster-section{display:flex;flex-direction:column;gap:1.15rem}.token-roster-table{border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-surface)}.token-table-header{display:grid;grid-template-columns:140px 1fr 160px 140px;padding:.95rem 1.5rem;background-color:var(--table-header-bg);border-bottom:1px solid var(--border-color);font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.token-table-body{display:flex;flex-direction:column}.token-table-row{display:grid;grid-template-columns:140px 1fr 160px 140px;align-items:center;padding:.85rem 1.5rem;border-bottom:1px solid var(--table-row-border);transition:background-color .12s ease}.token-table-row:last-child{border-bottom:none}.token-table-row:hover{background-color:var(--bg-hover)}.token-total-text{font-size:.92rem;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}.action-btn-group{display:flex;align-items:center;gap:.5rem}.no-results{padding:2.5rem 0;text-align:center;color:var(--text-muted);font-size:.95rem}.assignments-container{max-width:1180px;margin:0 auto;display:flex;flex-direction:column;gap:1.75rem}.assignments-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.assignments-header h2{font-size:1.75rem;font-weight:800;color:var(--text-primary);letter-spacing:-.03em}.assignments-summary-badges{display:flex;align-items:center;gap:.85rem}.summary-badge{padding:.55rem 1.15rem;border-radius:var(--radius-lg);display:flex;align-items:center;gap:.6rem;font-size:.88rem;font-weight:700;box-shadow:var(--shadow-sm);border:1px solid transparent}.summary-badge.pending{background-color:#fef3c7;color:#92400e;border-color:#fde68a}.summary-badge.approved{background-color:var(--online-bg);color:var(--online-text);border-color:var(--online-border)}.badge-count{font-size:1.2rem;font-weight:800;font-variant-numeric:tabular-nums}.submissions-card{display:flex;flex-direction:column;gap:1.35rem}.submission-total{font-size:.8rem;font-weight:700;color:var(--text-muted);background-color:var(--bg-hover);padding:.25rem .65rem;border-radius:var(--radius-full)}.submissions-table{border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-surface)}.submissions-table-header{display:grid;grid-template-columns:150px 190px 120px 1fr 160px;gap:.75rem;padding:.95rem 1.35rem;background-color:var(--table-header-bg);border-bottom:1px solid var(--border-color);font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.submissions-table-body{display:flex;flex-direction:column}.submission-row{display:grid;grid-template-columns:150px 190px 120px 1fr 160px;align-items:center;padding:1.15rem 1.35rem;border-bottom:1px solid var(--table-row-border);transition:background-color .12s ease;gap:.75rem}.submission-row:last-child{border-bottom:none}.submission-row:hover{background-color:var(--bg-hover)}.submission-row.is-approved{background-color:#10b9810d}.col-student{display:flex;flex-direction:column;gap:.15rem}.student-roll{font-size:.75rem;color:var(--text-muted);font-family:var(--font-mono);font-weight:500}.col-assignment{display:flex;flex-direction:column;gap:.15rem}.assignment-title{font-size:.92rem;font-weight:700;color:var(--text-primary)}.submission-time{font-size:.75rem;color:var(--text-muted)}.status-pill{display:inline-flex;align-items:center;padding:.3rem .75rem;border-radius:var(--radius-full);font-size:.78rem;font-weight:700;width:fit-content}.status-pill.pending{background-color:#fef3c7;color:#92400e;border:1px solid #fde68a}.status-pill.approved{background-color:var(--online-bg);color:var(--online-text);border:1px solid var(--online-border)}.ai-suggestion-box{background-color:var(--primary-light);border:1px solid var(--primary-border);border-radius:var(--radius-sm);padding:.65rem .95rem;display:flex;flex-direction:column;gap:.3rem}.ai-token-tag{display:flex;align-items:center;gap:.4rem}.ai-spark-icon{font-size:1rem}.ai-tokens-val{font-size:.88rem;font-weight:800;color:var(--primary-color)}.ai-reason-text{font-size:.82rem;color:var(--text-secondary);font-style:italic;line-height:1.35}.action-buttons{display:flex;align-items:center;gap:.5rem}.approve-action-btn{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:var(--radius-xs);padding:.5rem .85rem;font-size:.82rem;font-weight:700;cursor:pointer;box-shadow:0 1px 3px #10b98133;transition:var(--transition-fast)}.approve-action-btn:hover{background:linear-gradient(135deg,#059669,#047857);transform:translateY(-1px)}.edit-action-btn{background-color:var(--bg-hover);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-xs);padding:.5rem .85rem;font-size:.82rem;font-weight:700;cursor:pointer;transition:var(--transition-fast)}.edit-action-btn:hover{background-color:var(--bg-active)}.inline-edit-group{display:flex;align-items:center;gap:.35rem}.edit-token-input{width:52px;height:34px;text-align:center;font-size:.95rem;font-weight:800;background-color:var(--input-bg);color:var(--text-primary);border:1px solid var(--primary-color);border-radius:var(--radius-xs);outline:none}.save-action-btn{background:var(--gradient-primary);color:#fff;border:none;border-radius:var(--radius-xs);padding:.45rem .75rem;font-size:.8rem;font-weight:700;cursor:pointer}.cancel-action-btn{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:.25rem}.history-container{max-width:1180px;margin:0 auto;display:flex;flex-direction:column;gap:1.75rem}.history-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.history-header h2{font-size:1.75rem;font-weight:800;color:var(--text-primary);letter-spacing:-.03em}.event-count-badge{background-color:var(--bg-surface);border:1px solid var(--border-color);padding:.55rem 1.15rem;border-radius:var(--radius-lg);font-size:.9rem;font-weight:700;color:var(--text-secondary);box-shadow:var(--shadow-sm)}.history-filters-card{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;padding:1.1rem 1.5rem}.filter-group{display:flex;align-items:center;gap:.65rem}.filter-label{font-size:.85rem;font-weight:700;color:var(--text-secondary)}.filter-select{padding:.5rem .9rem;border-radius:var(--radius-sm);border:1px solid var(--border-color);background-color:var(--input-bg);color:var(--text-primary);font-size:.88rem;font-weight:600;outline:none;cursor:pointer;transition:border-color .15s ease}.filter-select:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f11a}.reset-filters-btn{background:none;border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:.5rem .85rem;font-size:.82rem;font-weight:700;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast)}.reset-filters-btn:hover{background-color:var(--bg-hover);color:var(--text-primary)}.history-table-card{padding:0;overflow:hidden;border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:var(--bg-surface)}.no-events{padding:3rem 1.5rem;text-align:center;color:var(--text-muted);font-size:.95rem}.history-table{border-radius:var(--radius-md)}.history-table-header{display:grid;grid-template-columns:140px 170px 140px 120px 1fr;gap:1rem;padding:.95rem 1.5rem;background-color:var(--table-header-bg);border-bottom:1px solid var(--border-color);font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.history-table-body{display:flex;flex-direction:column}.history-row{display:grid;grid-template-columns:140px 170px 140px 120px 1fr;align-items:start;padding:1.15rem 1.5rem;border-bottom:1px solid var(--table-row-border);transition:background-color .12s ease;gap:1rem}.history-row:last-child{border-bottom:none}.history-row:hover{background-color:var(--bg-hover)}.history-row.is-correction-row{background-color:#f59e0b0a}.time-text{font-size:.82rem;color:var(--text-muted);font-weight:600}.type-pill{display:inline-flex;align-items:center;padding:.3rem .75rem;border-radius:var(--radius-full);font-size:.78rem;font-weight:700;width:fit-content}.type-pill.attendance{background-color:var(--bg-hover);color:var(--text-secondary);border:1px solid var(--border-color)}.type-pill.participation{background-color:#f3e8ff;color:#6b21a8;border:1px solid #e9d5ff}.type-pill.token-award{background-color:var(--online-bg);color:var(--online-text);border:1px solid var(--online-border)}.type-pill.correction{background-color:#fef3c7;color:#b45309;border:1px solid #fde68a}.change-val{font-size:1rem;font-weight:800;font-variant-numeric:tabular-nums}.change-val.pos{color:#16a34a}.change-val.neg{color:#dc2626}.change-val.neutral{color:var(--text-muted)}.event-desc{font-size:.92rem;color:var(--text-primary);font-weight:500;line-height:1.4}.correction-details-box{margin-top:.5rem;background-color:#f59e0b1a;border-left:3px solid #f59e0b;border-radius:var(--radius-xs);padding:.55rem .85rem;display:flex;flex-direction:column;gap:.25rem;font-size:.82rem}.orig-action{color:#b45309;text-decoration:line-through;opacity:.85}.corr-note{color:#d97706;font-weight:700}.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-main);padding:1.5rem;position:relative;transition:background-color .2s ease}.login-top-bar{position:absolute;top:1.5rem;right:1.5rem;z-index:20}.login-card{background:var(--bg-surface);padding:2.5rem 2rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);border:1px solid var(--border-color);width:100%;max-width:400px;transition:background-color .2s ease,border-color .2s ease}.login-brand{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:2rem}.login-logo-circle{width:52px;height:52px;border-radius:var(--radius-md);background:var(--logo-bg);display:flex;align-items:center;justify-content:center;font-size:1.75rem;border:1px solid var(--primary-border);box-shadow:0 2px 6px #00000026;margin-bottom:.85rem}.login-title{font-size:1.5rem;font-weight:800;color:var(--text-primary);letter-spacing:-.025em}.login-subtitle{font-size:.85rem;color:var(--text-secondary);margin-top:.25rem}.login-error{color:#dc2626;background-color:#fef2f2;border:1px solid #fecaca;padding:.65rem .85rem;border-radius:var(--radius-sm);margin-bottom:1.25rem;text-align:center;font-size:.85rem;font-weight:500}.login-form{display:flex;flex-direction:column;gap:1.15rem}.login-field{display:flex;flex-direction:column;gap:.35rem}.login-field label{font-size:.85rem;font-weight:700;color:var(--text-secondary)}.login-field input{width:100%;padding:.7rem .9rem;border-radius:var(--radius-sm);border:1px solid var(--border-color);font-size:.95rem;background:var(--input-bg);color:var(--text-primary);transition:var(--transition-fast);outline:none}.login-field input:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #6366f126}.login-submit-btn{width:100%;padding:.8rem;background:var(--gradient-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:700;font-size:.95rem;margin-top:.5rem;box-shadow:0 2px 6px #0003;transition:var(--transition-fast)}.login-submit-btn:hover{background:var(--gradient-primary-hover);box-shadow:0 4px 12px #0000004d;transform:translateY(-1px)}.login-submit-btn:active{transform:scale(.98)}
