@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";.student-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at top right,#ffd7db,#ffe8eb 45%,#fff1f3)}.student-login-card{width:100%;max-width:440px;background:#fff;border:1px solid #fecdd3;border-radius:20px;box-shadow:0 18px 45px #be185d24;padding:32px;display:grid;gap:18px}.student-login-header h1{margin:0;font-size:28px;font-weight:800;color:#9f1239}.student-login-header p{margin:6px 0 0;color:#881337;font-size:14px}.student-login-form{display:grid;gap:14px}.student-login-field{display:grid;gap:6px}.student-login-field span{font-size:13px;font-weight:600;color:#881337}.student-login-field input{min-height:42px;border-radius:10px;border:1px solid #fda4af;padding:9px 12px;font-family:inherit;font-size:14px;outline:none}.student-login-field input:focus{border-color:#e11d48;box-shadow:0 0 0 3px #e11d481f}.student-login-checkbox{display:flex;align-items:center;gap:8px;color:#9f1239;font-size:13px}.student-login-submit{min-height:44px;border:none;border-radius:12px;background:linear-gradient(135deg,#ef4444,#e11d48);color:#fff;font-size:15px;font-weight:700;cursor:pointer}.student-login-submit:disabled{cursor:not-allowed;opacity:.65}.student-login-error{margin:0;border-radius:10px;border:1px solid #fda4af;background:#ffe4e6;color:#9f1239;padding:10px 12px;font-size:14px}.student-portal{min-height:100vh;background:linear-gradient(180deg,#ffe4e6,#fff1f2 45%,#fff7f7);padding:20px}.student-portal .header-actions{display:flex;gap:10px}.student-portal .action-btn{border:1px solid rgba(255,255,255,.4);background:#ffffff1a;color:#fff;border-radius:10px;min-height:40px;padding:0 16px;font-weight:600;cursor:pointer;transition:all .2s}.student-portal .action-btn:hover{background:#fff3;border-color:#fff9}.student-portal .logout-btn{border:1px solid rgba(255,255,255,.6);background:#be185d33;color:#fff;border-radius:10px;min-height:40px;padding:0 16px;font-weight:600;cursor:pointer}.student-portal .logout-btn:disabled{opacity:.6;cursor:not-allowed}.student-portal .student-main{max-width:1320px;margin:0 auto;display:grid;gap:16px}.student-portal .row{display:flex;flex-wrap:wrap;margin:-6px}.student-portal .col-12,.student-portal .col-sm-6,.student-portal .col-md-6,.student-portal .col-lg-3{width:100%;padding:6px}.student-portal .student-hero{background:linear-gradient(135deg,#fb7185,#f43f5e);color:#fff;border-radius:22px;padding:24px;box-shadow:0 12px 36px #e11d4838}.student-portal .student-hero .today{margin:0 0 6px;color:#ffe4e6;font-size:16px}.student-portal .student-hero h1{margin:0;font-size:clamp(24px,2.8vw,32px)}.student-portal .student-hero p{margin:8px 0 0}.student-portal .student-hero__row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.student-portal .student-hero__user{display:flex;align-items:center;gap:14px}.student-portal .hero-avatar{width:56px;height:56px;border-radius:50%;background:#ffffff3d;border:1px solid rgba(255,255,255,.45);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;flex-shrink:0}.student-portal .hero-account{margin:8px 0 0;font-size:13px;color:#ffe4e6}.student-portal .hero-subtitle{margin:14px 0 0}.student-portal .portal-alert{margin:0;border-radius:12px;background:#fff;border:1px solid #fecdd3;color:#9f1239;padding:12px 14px;font-size:14px}.student-portal .portal-alert--error{border-color:#fb7185;background:#ffe4e6}.student-portal .stat-card{height:100%;background:#fff;border:1px solid #fecdd3;border-radius:16px;padding:16px}.student-portal .stat-card h3{margin:0;font-size:28px;color:#be123c}.student-portal .stat-card p{margin:6px 0 0;color:#881337;font-size:13px}.student-portal .classroom-section{display:grid;gap:10px}.student-portal .section-title{margin:0;color:#9f1239;font-weight:700;font-size:14px}.student-portal .classroom-tabs{display:flex;flex-wrap:wrap;gap:10px}.student-portal .classroom-tab{border:1px solid #fda4af;background:#fff;border-radius:12px;padding:10px 14px;text-align:left;cursor:pointer;flex:1 1 220px;max-width:280px}.student-portal .classroom-tab strong{display:block;color:#9f1239}.student-portal .classroom-tab span{color:#be123c;font-size:12px}.student-portal .classroom-tab--active{border-color:#e11d48;box-shadow:0 0 0 3px #e11d4824}.student-portal .classroom-detail{margin:-6px}.student-portal .classroom-summary,.student-portal .session-panel{height:100%;background:#fff;border:1px solid #fecdd3;border-radius:18px;padding:18px 20px}.student-portal .classroom-summary h2{margin:0;color:#9f1239;font-size:22px}.student-portal .classroom-summary p{margin:8px 0 0;color:#881337}.student-portal .summary-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;color:#be123c;font-size:13px}.student-portal .session-panel h3{margin:0 0 16px;color:#9f1239}.student-portal .session-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.student-portal .session-col{display:flex}.student-portal .session-item{width:100%;border:1px solid #fecdd3;border-radius:14px;padding:12px 14px;background:#fff5f6;transition:all .2s ease}.student-portal .session-item--ongoing{background:#eff6ff;border-color:#bfdbfe;box-shadow:0 4px 12px #3b82f614}.student-portal .session-item--ongoing .session-item__header strong{color:#1e40af}.student-portal .session-item--ongoing .session-item__header .session-datetime,.student-portal .session-item--ongoing .session-item__header .session-datetime .separator-dot{color:#3b82f6}.student-portal .session-item--ongoing .session-note{color:#1e3a8a}.student-portal .session-item--ongoing .file-group h4{color:#2563eb}.student-portal .session-item--upcoming{background:#fff5f6;border-color:#fecdd3}.student-portal .session-item--past{background:#f8fafc;border-color:#e2e8f0}.student-portal .session-item--past .session-item__header strong,.student-portal .session-item--past .session-item__header .session-datetime,.student-portal .session-item--past .session-item__header .session-datetime .separator-dot,.student-portal .session-item--past .session-note,.student-portal .session-item--past .file-group h4{color:#64748b}.student-portal .session-item__header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.student-portal .session-item__header strong{color:#9f1239}.student-portal .session-item__header .session-datetime{margin:4px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:#be123c;font-size:12px}.student-portal .session-item__header .session-datetime .session-date-text{font-size:14px;font-weight:600}.student-portal .session-item__header .session-datetime .session-time-group{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.student-portal .session-item__header .session-datetime .session-time-text{color:#9f1239;font-weight:700;background:#be123c14;padding:1px 6px;border-radius:4px}.student-portal .session-item__header .session-datetime .separator-dot{color:#be123c}.student-portal .session-item__header .session-type-tag{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:11px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:4px;letter-spacing:.02em}.student-portal .session-item__header .session-type-tag--online{background:#3b82f61a;color:#2563eb}.student-portal .session-item__header .session-type-tag--online .dot{background:#2563eb;box-shadow:0 0 8px #2563eb}.student-portal .session-item__header .session-type-tag--offline{background:#64748b1a;color:#64748b}.student-portal .session-item__header .session-type-tag--offline .dot{background:#64748b}.student-portal .session-item__header .session-type-tag .dot{width:6px;height:6px;border-radius:50%}.student-portal .session-note{margin:8px 0 0;color:#881337;font-size:13px}.student-portal .session-badges{display:flex;flex-direction:column;gap:4px;align-items:flex-end}.student-portal .badge{border-radius:999px;font-size:12px;font-weight:700;padding:5px 10px;white-space:nowrap;text-align:center;min-width:90px}.student-portal .badge--success{background:#dcfce7;color:#166534}.student-portal .badge--warning{background:#fef3c7;color:#92400e}.student-portal .badge--danger{background:#fee2e2;color:#991b1b}.student-portal .badge--primary{background:#dbeafe;color:#1d4ed8}.student-portal .badge--info{background:#e0f2fe;color:#0369a1}.student-portal .badge--muted{background:#e4e4e7;color:#52525b}.student-portal .session-online-box{margin:14px 0;background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe;border-radius:12px;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:16px}.student-portal .session-online-box .online-info{display:grid;gap:2px}.student-portal .session-online-box .online-info strong{color:#1e40af;font-size:14px}.student-portal .session-online-box .online-info span{color:#3b82f6;font-size:12px}.student-portal .session-online-box .join-btn{background:#2563eb;color:#fff;padding:8px 16px;border-radius:10px;font-size:13px;font-weight:700;text-decoration:none;display:flex;align-items:center;gap:8px;box-shadow:0 4px 12px #2563eb40;transition:all .2s}.student-portal .session-online-box .join-btn:hover{background:#1d4ed8;transform:translateY(-2px);box-shadow:0 6px 16px #2563eb59}.student-portal .session-online-box .join-btn svg{flex-shrink:0}@media(max-width:600px){.student-portal .session-online-box{flex-direction:column;text-align:center;gap:12px}.student-portal .session-online-box .join-btn{width:100%;justify-content:center}}.student-portal .solution-upload .upload-label{cursor:pointer;display:inline-block}.student-portal .solution-upload .solution-upload__row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.student-portal .solution-upload .btn-upload{display:inline-flex;align-items:center;justify-content:center;background:#be123c;color:#fff;padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600;border:none;cursor:pointer;transition:all .2s}.student-portal .solution-upload .btn-upload:hover{background:#9f1239;transform:translateY(-1px)}.student-portal .solution-upload .btn-upload--loading{background:#fda4af;cursor:not-allowed}.student-portal .solution-upload .btn-upload--disabled{background:#d1d5db;color:#6b7280;cursor:not-allowed;pointer-events:none;opacity:.75}.student-portal .solution-upload .btn-upload--disabled:hover{background:#d1d5db;transform:none}.student-portal .solution-upload .upload-error{color:#e11d48;font-size:11px;margin-top:4px}.student-portal .solution-upload .submission-locked-notice{margin:0;font-size:12px;color:#b91c1c;background:#fff1f2;border:1px solid #fecdd3;border-radius:6px;padding:4px 9px;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}@media(max-width:400px){.student-portal .solution-upload .submission-locked-notice{white-space:normal;font-size:11px}}.student-portal .pg-info{font-size:14px;font-weight:600;color:#9f1239}.student-portal .session-files{margin-top:10px;display:flex;flex-direction:column;gap:12px}.student-portal .file-group{display:flex;flex-direction:column;gap:4px;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.05)}.student-portal .file-group:last-child{border-bottom:none}.student-portal .file-group h4{margin:0;font-size:13px;font-weight:700;color:#9f1239;display:flex;align-items:center;gap:6px}.student-portal .file-group h4:before{content:"•"}.student-portal .file-group p{margin:0;font-size:12px;color:#71717a}.student-portal .file-group a{color:#be123c;font-size:13px;text-decoration:none}.student-portal .file-group a:hover{text-decoration:underline}.student-portal .file-group .file-item{display:flex;align-items:center;justify-content:space-between;gap:8px}.student-portal .file-group .file-item .file-delete-btn{background:transparent;border:0;color:#e11d48;font-size:18px;font-weight:700;cursor:pointer;line-height:1;padding:0 4px;opacity:.6;transition:all .2s}.student-portal .file-group .file-item .file-delete-btn:hover{opacity:1;background:#ffe4e6;border-radius:4px}.student-portal .file-group .file-item .file-delete-btn:disabled{opacity:.3;cursor:not-allowed}.student-portal .empty-state{border-radius:12px;border:1px dashed #fda4af;background:#fff1f2;color:#9f1239;padding:16px}.student-portal .portal-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:20px;padding-top:10px}.student-portal .pg-btn{width:36px;height:36px;border-radius:10px;border:1px solid #fda4af;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;font-weight:700;color:#be123c;transition:all .2s}.student-portal .pg-btn:hover:not(:disabled){background:#ffe4e6;border-color:#e11d48}.student-portal .pg-btn:disabled{opacity:.4;cursor:not-allowed}.student-portal .mt-2{margin-top:8px}.student-portal .d-none{display:none}@media(max-width:992px){.student-portal .session-grid{grid-template-columns:1fr}}@media(max-width:768px){.student-portal{padding:12px}.student-portal .student-main{gap:12px}.student-portal .student-hero{padding:16px;border-radius:16px}.student-portal .student-hero h1{font-size:20px}.student-portal .student-hero .today{font-size:14px;margin-bottom:4px}.student-portal .student-hero .hero-account{margin-top:4px;font-size:12px}.student-portal .student-hero .hero-subtitle{margin-top:10px;font-size:13px;opacity:.9}.student-portal .student-hero .student-hero__user{align-items:flex-start;width:100%}.student-portal .student-hero .hero-avatar{width:44px;height:44px;font-size:16px}.student-portal .stats-row{display:grid!important;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0 0}.student-portal .stats-row>div{width:100%!important;padding:0!important}.student-portal .stat-card{padding:10px;border-radius:12px;height:100%}.student-portal .stat-card h3{font-size:18px}.student-portal .stat-card p{font-size:11px;margin-top:2px}.student-portal .header-actions{display:flex!important;width:100%!important;gap:8px;margin-top:12px}.student-portal .logout-btn,.student-portal .action-btn{flex:1;min-height:34px;font-size:12px;padding:0 8px;white-space:nowrap}.student-portal .session-item__header .session-info-left{min-width:0}.student-portal .session-item__header .session-datetime{flex-direction:column;align-items:flex-start;gap:4px}.student-portal .classroom-tab{max-width:none;flex:1 1 100%}}@media(min-width:576px){.student-portal .col-sm-6{width:50%}}@media(min-width:768px){.student-portal .col-md-6{width:50%}}@media(min-width:992px){.student-portal .col-lg-3{width:25%}}.answer-sheet-page{display:flex;flex-direction:column;gap:24px;font-family:Times New Roman,Times,serif}.answer-sheet-hero{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:28px;border-radius:24px;color:#fff;background:radial-gradient(circle at top right,rgba(255,255,255,.28),transparent 30%),linear-gradient(135deg,#2563eb,#7c3aed);box-shadow:0 20px 50px #2563eb33}.answer-sheet-hero h1{margin:0;font-size:clamp(1.7rem,3vw,2.5rem)}.eyebrow{margin:0 0 8px;font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.82}.hero-description{max-width:780px;margin:12px 0 0;line-height:1.65;opacity:.92}.primary-action,.secondary-action{border:0;border-radius:14px;font-family:Times New Roman,Times,serif;font-weight:800;cursor:pointer;transition:.2s ease}.primary-action{flex:0 0 auto;padding:14px 22px;color:#2563eb;background:#fff}.primary-action:disabled{cursor:not-allowed;opacity:.55}.secondary-action{width:100%;padding:12px 16px;color:#fff;background:linear-gradient(135deg,#2563eb,#4f46e5)}.builder-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;align-items:start}.question-palette,.section-builder,.sheet-preview-panel{border:1px solid rgba(148,163,184,.28);border-radius:22px;background:#ffffffeb;box-shadow:0 16px 45px #0f172a14}.question-palette{position:sticky;top:88px;padding:18px}.panel-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}.panel-header h2{margin:0;color:#0f172a;font-size:1.08rem}.panel-header span{color:#64748b;font-size:.9rem}.palette-list{display:flex;flex-direction:column;gap:12px}.palette-card{display:flex;gap:12px;align-items:center;width:100%;padding:14px;border:1px dashed #cbd5e1;border-radius:16px;font-family:Times New Roman,Times,serif;text-align:left;background:#f8fafc;cursor:grab;transition:.18s ease}.palette-card:hover{border-color:#2563eb;background:#eff6ff;transform:translateY(-1px)}.palette-card strong,.palette-card small{display:block}.palette-card strong{color:#0f172a}.palette-card small{margin-top:3px;color:#64748b}.palette-icon{display:inline-flex;justify-content:center;align-items:center;width:46px;height:46px;border-radius:14px;color:#fff;font-size:.8rem;font-weight:900;background:linear-gradient(135deg,#2563eb,#7c3aed)}.sheet-settings{display:flex;flex-direction:column;gap:14px;margin-top:20px;padding-top:18px;border-top:1px solid #e2e8f0}.sheet-settings label{display:flex;flex-direction:column;gap:7px;color:#334155;font-size:.95rem;font-weight:700}.sheet-settings input[type=text]{padding:11px 12px}.sheet-settings input[type=text],.section-title-input{width:100%;border:1px solid #cbd5e1;border-radius:12px;outline:none;color:#0f172a;font-family:Times New Roman,Times,serif;background:#fff}.sheet-settings input[type=text]:focus,.section-title-input:focus{border-color:#2563eb;box-shadow:0 0 0 4px #2563eb1f}.checkbox-line{flex-direction:row!important;align-items:center}.builder-workspace{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(520px,1.1fr);gap:20px;min-width:0}.section-builder,.sheet-preview-panel{padding:18px}.section-list{display:flex;flex-direction:column;gap:14px}.builder-section{border:1px solid #e2e8f0;border-radius:18px;overflow:hidden;background:#fff}.section-title-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:12px;background:#f8fafc}.section-title-input{padding:10px 12px;font-weight:800}.section-range{color:#64748b;font-size:.86rem;white-space:nowrap}.icon-button{display:inline-flex;justify-content:center;align-items:center;width:30px;height:30px;border:0;border-radius:10px;color:#64748b;font-family:Times New Roman,Times,serif;background:#e2e8f0;cursor:pointer;font-size:1.2rem}.icon-button:hover{color:#dc2626;background:#fee2e2}.icon-button:disabled{cursor:not-allowed;opacity:.45}.drop-zone{min-height:84px;padding:10px 12px 12px}.empty-drop{display:grid;min-height:68px;place-items:center;border:1px dashed #cbd5e1;border-radius:14px;color:#94a3b8;background:#f8fafc}.drop-line{height:8px;border-radius:999px}.drop-line.active{background:#bfdbfe}.question-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:10px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;cursor:grab}.question-number{display:inline-flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:10px;color:#fff;font-weight:900;background:#0f172a}.question-kind{color:#334155;font-weight:700}.mini-answer-preview,.answer-options{display:flex;gap:5px;align-items:center}.mini-answer-preview span,.answer-options span{display:inline-flex;justify-content:center;align-items:center;border:1px solid #0f172a;border-radius:999px;color:#0f172a;font-weight:800}.mini-answer-preview span{width:24px;height:24px;font-size:.72rem}.fill-preview{width:72px!important;height:1px!important;border-width:0 0 2px!important;border-radius:0!important}.sheet-preview-panel{overflow:auto}.a4-sheet{display:flex;flex-direction:column;gap:16px;width:210mm;margin:0 auto;color:#111827;font-family:Times New Roman,Times,serif;transform-origin:top center}.a4-page{width:210mm;height:297mm;padding:12mm 10mm;overflow:hidden;border:1px solid #d1d5db;background:#fff;box-shadow:0 20px 50px #0f172a26}.sheet-header h2{margin:0 0 8mm;text-align:center;font-size:19px;letter-spacing:.03em}.student-info-grid{display:grid;grid-template-columns:1.4fr .6fr;gap:5mm 8mm;margin-bottom:8mm;font-size:13px}.sheet-section-block{break-inside:avoid;page-break-inside:avoid;margin-top:5mm}.sheet-section-block:first-of-type{margin-top:0}.sheet-section-title{display:flex;justify-content:space-between;gap:8mm;align-items:center;margin-bottom:3mm;padding-bottom:1.5mm;border-bottom:1px solid #111827;font-size:14px}.answer-column-group+.answer-column-group{margin-top:5mm}.answer-columns{display:grid;grid-template-columns:repeat(4,1fr);gap:3mm}.answer-column{border:1px solid #111827;min-height:84mm}.column-title{padding:2mm;border-bottom:1px solid #111827;text-align:center;font-size:12px;font-weight:800}.answer-row{display:grid;grid-template-columns:9mm minmax(0,1fr);align-items:center;min-height:8mm;padding:0 2mm;border-bottom:1px solid #e5e7eb;font-size:12px}.answer-row:last-child{border-bottom:0}.answer-number{font-weight:900}.answer-options span{width:6mm;height:6mm;font-size:10px}.answer-fill-line{height:1px;border-bottom:1px solid #111827}@media(max-width:1280px){.builder-layout,.builder-workspace{grid-template-columns:1fr}.question-palette{position:static}.a4-sheet{transform:scale(.78);margin-bottom:-62mm}}@media(max-width:760px){.answer-sheet-hero{align-items:stretch;flex-direction:column}.section-title-row,.question-row{grid-template-columns:1fr}.a4-sheet{transform:scale(.48);margin-left:-55mm;margin-bottom:-150mm}}@media print{body *{visibility:hidden}.a4-page,.a4-page *{visibility:visible}.a4-page{position:relative;box-shadow:none;transform:none;page-break-after:always}}:root{--sm-bg: #f0f4ff;--sm-surface: #ffffff;--sm-surface-soft: #f8faff;--sm-border: #dbe3f0;--sm-text: #1f2937;--sm-text-muted: #637083;--sm-primary: #3b82f6;--sm-primary-dark: #2563eb;--sm-success: #16a34a;--sm-warning: #f59e0b;--sm-danger: #dc2626;--sm-muted: #6b7280;--sm-shadow: 0 4px 24px rgba(37, 99, 235, .07);--sm-shadow-lg: 0 12px 40px rgba(37, 99, 235, .1);--navbar-h: 72px;--sidebar-w: 320px}.mt-4{margin-top:1.5rem!important}.ml-2{margin-left:.5rem!important}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;color:var(--sm-text);background:radial-gradient(ellipse at top left,#e0ecff,#f0f4ff 40%,#f7f9ff);min-height:100vh}.app-root{display:flex;flex-direction:column;min-height:100vh;width:100%}.app-root--with-nav{padding-top:var(--navbar-h)}@media(min-width:861px){.app-root--with-nav{padding-top:0}}.app-content{flex:1;display:flex;flex-direction:column;min-height:100vh}@media(min-width:861px){.app-root--with-nav .app-content{margin-left:var(--sidebar-w)}}.app-main{flex:1;max-width:1360px;margin:0 auto;padding:28px 24px 60px;width:100%}@media(min-width:861px){.app-root--with-nav .app-main{max-width:calc(100vw - var(--sidebar-w));padding:32px 40px;margin:0}}.app-main--student{max-width:none;padding:0}@media(min-width:861px){.app-main--student{max-width:none}}.navbar{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--navbar-h);background:linear-gradient(135deg,#1e293b,#0f172a);border-bottom:1px solid rgba(255,255,255,.06);box-shadow:0 2px 20px #0000002e;transition:all .3s ease}@media(min-width:861px){.navbar{right:auto;width:var(--sidebar-w);height:100vh;border-bottom:0;border-right:1px solid rgba(255,255,255,.06);flex-direction:column}}.navbar-inner{max-width:1360px;margin:0 auto;height:100%;display:flex;align-items:center;gap:8px;padding:0 24px}@media(min-width:861px){.navbar-inner{flex-direction:column;align-items:stretch;padding:40px 20px;gap:40px;width:100%;max-width:none}}.navbar-brand{display:flex;align-items:center;gap:10px;cursor:pointer;margin-right:16px;flex-shrink:0}@media(min-width:861px){.navbar-brand{margin-right:0;margin-bottom:8px;padding:0 12px}}.navbar-logo{color:#60a5fa;display:flex}.navbar-logo svg{width:32px;height:32px}.navbar-title{font-size:20px;font-weight:700;color:#fff;white-space:nowrap}.navbar-toggle{display:none;background:transparent;border:0;color:#94a3b8;cursor:pointer;padding:6px;margin-left:auto}.navbar-menu{display:flex;align-items:center;gap:2px;flex:1}@media(min-width:861px){.navbar-menu{flex-direction:column;align-items:stretch;width:100%;overflow-y:auto;padding-right:4px;gap:8px}.navbar-menu::-webkit-scrollbar{width:4px}.navbar-menu::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:10px}}.navbar-item-container{display:flex;flex-direction:column;gap:6px}.navbar-link{background:transparent;border:0;color:#94a3b8;font-size:17px;font-weight:600;padding:14px 18px;border-radius:14px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;display:flex;align-items:center;gap:14px;width:100%;text-decoration:none}.navbar-link .nav-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;opacity:.7;transition:transform .2s ease}.navbar-link .nav-arrow{margin-left:auto;transition:transform .3s ease;opacity:.5}.navbar-link:hover{color:#fff;background:#ffffff14}.navbar-link:hover .nav-icon{opacity:1;transform:scale(1.1)}.navbar-link--active{color:#fff;background:linear-gradient(135deg,#3b82f633,#8b5cf633);border:1px solid rgba(59,130,246,.3);box-shadow:0 4px 15px #0000001a}.navbar-link--active .nav-icon{color:#60a5fa;opacity:1;filter:drop-shadow(0 0 5px rgba(59,130,246,.5))}.navbar-link--expanded .nav-arrow{transform:rotate(180deg);opacity:1}.navbar-children{display:flex;flex-direction:column;gap:4px;padding-left:48px;margin-top:2px;overflow:hidden}.navbar-child-link{padding:10px 14px;font-size:15px;color:#94a3b8;border-radius:10px;text-decoration:none;transition:all .2s ease;font-weight:500}.navbar-child-link:hover{color:#fff;background:#ffffff0d}.navbar-child-link.active{color:#60a5fa;font-weight:600}.navbar-user{display:flex;align-items:center;gap:10px;margin-left:auto;flex-shrink:0}@media(min-width:861px){.navbar-user{margin-left:0;width:100%;padding:16px 12px;border-top:1px solid rgba(255,255,255,.08);margin-top:auto}}.navbar-avatar{width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;box-shadow:0 4px 12px #3b82f64d}.navbar-info{display:none}@media(min-width:861px){.navbar-info{display:grid;gap:2px;flex:1}}.navbar-username{color:#fff;font-size:14px;font-weight:600}.navbar-user-role{color:#94a3b8;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.navbar-logout{background:transparent;border:0;color:#64748b;cursor:pointer;padding:8px;border-radius:8px;display:flex;transition:all .2s ease}@media(min-width:861px){.navbar-logout{margin-left:auto}}.navbar-logout:hover{color:#f87171;background:#f871711a;transform:translate(2px)}@media(max-width:860px){.navbar-toggle{display:flex}.navbar-menu{display:none;position:absolute;top:var(--navbar-h);left:0;right:0;flex-direction:column;background:#1e293b;padding:12px;border-bottom:1px solid rgba(255,255,255,.06);box-shadow:0 8px 20px #0003;gap:4px;max-height:calc(100vh - var(--navbar-h));overflow-y:auto}.navbar-menu--open{display:flex}.navbar-item-container{width:100%}.navbar-link{width:100%;text-align:left;padding:14px 16px;font-size:16px}.navbar-children{padding-left:44px;margin-bottom:8px}.navbar-child-link{padding:10px 14px;font-size:15px}.navbar-username{display:none}}.page-header{margin-bottom:20px}.page-header h1{margin:0;font-size:26px;font-weight:800}.page-header p{margin:6px 0 0;color:var(--sm-text-muted)}.page-content{display:grid;gap:20px}.ui-card{border:1px solid var(--sm-border);border-radius:16px;background:var(--sm-surface);box-shadow:var(--sm-shadow);transition:box-shadow .2s ease}.ui-card__header{padding:20px 24px 0}.ui-card__header h2{margin:0;font-size:18px;font-weight:700}.ui-card__header p{margin:5px 0 0;color:var(--sm-text-muted);font-size:14px}.ui-card__body{padding:20px 24px}@media(max-width:600px){.ui-card__header{padding:16px 16px 0}.ui-card__body{padding:16px}}.sm-alert{margin:0;padding:12px 16px;border-radius:12px;font-size:14px;font-weight:500}.sm-alert--danger{color:#7f1d1d;background:#fee2e2;border:1px solid #fecaca}.sm-alert--success{color:#14532d;background:#dcfce7;border:1px solid #bbf7d0}.sm-grid{display:grid;gap:20px}.sm-grid--2{grid-template-columns:1fr 1.4fr}@media(max-width:1100px){.sm-grid--2{grid-template-columns:1fr}}@media(max-width:1300px){.students-grid{grid-template-columns:1fr}}.sm-form{display:grid;gap:14px}.sm-form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}@media(max-width:600px){.sm-form-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}.sm-form-grid--session{display:flex;align-items:flex-start;gap:32px;flex-wrap:wrap}.sm-form-grid--session>:nth-child(1){flex:1 1 200px;max-width:280px}@media(max-width:800px){.sm-form-grid--session{flex-direction:column;gap:14px}.sm-form-grid--session>:nth-child(1){flex:none;max-width:none;width:100%}}.sm-form-group-inline{display:flex;align-items:flex-start;gap:32px}@media(max-width:600px){.sm-form-group-inline{flex-direction:column;gap:14px}}.ui-field{display:grid;gap:5px}.ui-field__label{font-size:13px;font-weight:600;color:var(--sm-text)}.ui-field__hint{font-size:12px;color:var(--sm-text-muted)}.ui-control,.login-field input{width:100%;min-height:40px;border:1px solid var(--sm-border);border-radius:10px;padding:8px 12px;background:#fff;color:var(--sm-text);font-size:14px;font-family:inherit;transition:border-color .15s ease,box-shadow .15s ease}textarea.ui-control{min-height:auto}.ui-control:focus,.login-field input:focus{outline:none;border-color:var(--sm-primary);box-shadow:0 0 0 3px #3b82f626}.sm-actions{display:flex;gap:8px;flex-wrap:wrap}.sm-radio-group{display:flex;gap:20px;padding:10px 0}.sm-radio{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.sm-radio input{width:18px;height:18px;accent-color:var(--sm-primary);cursor:pointer}.sm-radio span{font-weight:500}.ui-btn,.login-submit{min-height:38px;border:1px solid transparent;border-radius:10px;padding:8px 16px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s ease;display:inline-flex;align-items:center;justify-content:center;gap:6px}.ui-btn:disabled,.login-submit:disabled{cursor:not-allowed;opacity:.6}.ui-btn--block{width:100%}.ui-btn--primary,.login-submit{background:var(--sm-primary);color:#fff}.ui-btn--primary:hover:not(:disabled),.login-submit:hover:not(:disabled){background:var(--sm-primary-dark);box-shadow:0 4px 12px #3b82f64d}.ui-btn--secondary{background:var(--sm-surface-soft);border-color:var(--sm-border);color:var(--sm-text)}.ui-btn--secondary:hover:not(:disabled){background:#eef2ff}.ui-btn--danger{background:#fff;border-color:#fecaca;color:var(--sm-danger)}.ui-btn--danger:hover:not(:disabled){background:#fef2f2}.ui-btn--ghost{background:transparent;border-color:var(--sm-border);color:var(--sm-text-muted)}.ui-btn--ghost:hover:not(:disabled){background:var(--sm-surface-soft)}.ui-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;white-space:nowrap}.ui-badge--primary{color:#1d4ed8;background:#dbeafe}.ui-badge--success{color:#166534;background:#dcfce7}.ui-badge--warning{color:#92400e;background:#fef3c7}.ui-badge--danger{color:#991b1b;background:#fee2e2}.ui-badge--info{color:#0369a1;background:#e0f2fe}.ui-badge--muted{color:#374151;background:#e5e7eb}.sm-section-divider{margin:18px 0;border-top:1px dashed var(--sm-border)}.sm-empty-state{background:var(--sm-surface-soft);color:var(--sm-text-muted);border:1px dashed var(--sm-border);border-radius:12px;padding:20px;text-align:center;font-size:14px}.classroom-selector{display:flex;flex-wrap:wrap;gap:10px}.classroom-chip{border:1px solid var(--sm-border);background:#fff;border-radius:12px;padding:10px 16px;text-align:left;cursor:pointer;display:grid;gap:3px;transition:all .15s ease;min-width:140px}.classroom-chip strong{font-size:14px}.classroom-chip span{font-size:12px;color:var(--sm-text-muted)}.classroom-chip:hover{border-color:#93c5fd;background:#f8fbff}.classroom-chip--active{border-color:#60a5fa;background:#eff6ff;box-shadow:0 0 0 2px #60a5fa33}.class-list{display:grid;gap:10px}.class-item{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--sm-border);background:#fff;border-radius:12px;padding:12px 14px;transition:all .15s ease}.class-item:hover{box-shadow:var(--sm-shadow)}.class-item__main{display:grid;gap:3px;color:inherit}.class-item__main span{font-size:13px;color:var(--sm-text-muted)}.class-item__meta{display:flex;align-items:center;gap:8px;flex-shrink:0}@media(max-width:600px){.class-item{flex-direction:column;align-items:stretch;gap:12px}.class-item__meta{justify-content:flex-end;padding-top:10px;border-top:1px dashed var(--sm-border)}}.list-toolbar{margin-bottom:14px}.sm-table-wrap{overflow-x:auto;border-radius:12px;border:1px solid var(--sm-border)}.sm-table{width:100%;border-collapse:collapse;min-width:700px}.sm-table th,.sm-table td{border-bottom:1px solid var(--sm-border);padding:10px 12px;text-align:left;vertical-align:top}.sm-table td.sm-actions-cell{vertical-align:middle}.sm-table th{color:#334155;font-size:13px;font-weight:700;background:#f8fbff;position:sticky;top:0}.sm-table tbody tr:hover{background:#fafbff}.sm-table tbody tr:last-child td{border-bottom:none}.sm-subtext{margin:3px 0 0;font-size:12px;color:var(--sm-text-muted)}.session-list{display:flex;flex-wrap:wrap;gap:10px}.session-pill-wrapper{position:relative;display:inline-flex}@media(max-width:500px){.session-pill-wrapper{display:flex;width:100%}}.session-pill{border:1px solid var(--sm-border);background:#fff;border-radius:12px;padding:8px 14px;text-align:left;cursor:pointer;display:grid;gap:2px;min-width:148px;transition:all .15s ease;font-family:inherit}@media(max-width:500px){.session-pill{width:100%}}.session-pill strong{font-size:13px}.session-pill span{font-size:12px;color:var(--sm-text-muted)}.session-pill__meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:2px 0}.session-pill__time{font-size:11px;font-weight:700;color:var(--sm-primary);background:#3b82f61a;padding:1px 6px;border-radius:4px;display:inline-block}.session-pill__type{font-size:10px;font-weight:700;text-transform:uppercase}.session-pill--ongoing{background:#f0f7ff;border-color:#3b82f6;border-left:4px solid #3b82f6}.session-pill--ongoing strong{color:#1e40af}.session-pill--ongoing span{color:#3b82f6}.session-pill--ongoing:hover{border-color:#2563eb;background:#e0f2fe}.session-pill--ongoing.session-pill--active{border-color:#1d4ed8;background:#e0f2fe;box-shadow:0 0 0 3px #3b82f633}.session-pill--upcoming{background:#fff1f2;border-color:#fda4af;border-left:4px solid #fb7185}.session-pill--upcoming strong{color:#be123c}.session-pill--upcoming span{color:#e11d48}.session-pill--upcoming:hover{border-color:#f43f5e;background:#ffe4e6}.session-pill--upcoming.session-pill--active{border-color:#be123c;background:#ffe4e6;box-shadow:0 0 0 3px #e11d4833}.session-pill--past{background:#f1f5f9;border-color:#cbd5e1;border-left:4px solid #94a3b8}.session-pill--past strong,.session-pill--past span{color:#475569}.session-pill--past:hover{border-color:#94a3b8;background:#e2e8f0}.session-pill--past.session-pill--active{border-color:#475569;background:#e2e8f0;box-shadow:0 0 0 3px #47556933}.session-delete-btn{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:1px solid #fecaca;background:#fff;color:var(--sm-danger);font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;opacity:0;line-height:1;z-index:2}.session-pill-wrapper:hover .session-delete-btn{opacity:1}.session-delete-btn:hover{background:#fef2f2}.session-edit-btn{position:absolute;bottom:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:1px solid #bfdbfe;background:#fff;color:var(--sm-primary);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;opacity:0;line-height:1;z-index:2}.session-pill-wrapper:hover .session-edit-btn{opacity:1}.session-edit-btn:hover{background:#eff6ff}.session-sheet{margin-top:16px;display:grid;gap:14px}.session-sheet__header{display:grid;gap:6px}.session-sheet__title{display:flex;align-items:center;gap:12px}@media(max-width:600px){.session-sheet__title{flex-direction:column;align-items:flex-start;gap:6px}}.session-sheet__header h3{margin:0;font-size:17px;font-weight:700}.session-sheet__header p{margin:0;font-size:13px;color:var(--sm-text-muted)}.session-sheet__link{background:#f8fbff;border:1px solid #dbeafe;border-radius:8px;padding:8px 12px;font-size:14px;font-weight:500}.session-sheet__link .sm-link{color:var(--sm-primary);text-decoration:none}.session-sheet__link .sm-link:hover{text-decoration:underline}.status-group{display:flex;gap:6px;flex-wrap:wrap}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f172a,#1e293b,#1e3a5f);padding:20px}.login-card{width:100%;max-width:420px;background:#fff;border-radius:20px;padding:40px 36px;box-shadow:0 20px 60px #00000040}.login-header{text-align:center;margin-bottom:28px}.login-logo{width:64px;height:64px;border-radius:16px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:#fff}.login-header h1{margin:0;font-size:24px;font-weight:800}.login-header p{margin:8px 0 0;color:var(--sm-text-muted);font-size:14px}.login-error{background:#fee2e2;color:#991b1b;padding:10px 14px;border-radius:10px;font-size:14px;margin-bottom:16px;text-align:center}.login-form{display:grid;gap:16px}.login-field{display:grid;gap:6px}.login-field span{font-size:13px;font-weight:600}.login-checkbox{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}.login-checkbox input{width:16px;height:16px;accent-color:var(--sm-primary)}.login-submit{width:100%;min-height:44px;font-size:15px;border-radius:12px;margin-top:4px}.login-submit:hover:not(:disabled){background:var(--sm-primary-dark);box-shadow:0 4px 16px #3b82f659}.login-alt-entry{margin:14px 0 0;text-align:center;font-size:13px;color:var(--sm-text-muted)}.login-alt-entry a{color:var(--sm-primary);font-weight:700;text-decoration:none}.login-alt-entry a:hover{text-decoration:underline}.dashboard{display:grid;gap:24px}.dashboard-welcome h1{margin:0;font-size:28px;font-weight:800}.dashboard-welcome p{margin:6px 0 0;color:var(--sm-text-muted);font-size:15px}.dashboard-loading{text-align:center;padding:40px;color:var(--sm-text-muted)}.dashboard-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.stat-card{border-radius:16px;padding:22px 20px;display:flex;align-items:center;gap:16px;box-shadow:var(--sm-shadow);transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--sm-shadow-lg)}.stat-card--blue{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe}.stat-card--green{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #bbf7d0}.stat-card--purple{background:linear-gradient(135deg,#faf5ff,#f3e8ff);border:1px solid #e9d5ff}.stat-card--orange{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:1px solid #fde68a}.stat-card__icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-card--blue .stat-card__icon{background:#3b82f6;color:#fff}.stat-card--green .stat-card__icon{background:#16a34a;color:#fff}.stat-card--purple .stat-card__icon{background:#8b5cf6;color:#fff}.stat-card--orange .stat-card__icon{background:#f59e0b;color:#fff}.stat-card__value{font-size:28px;font-weight:800;display:block;line-height:1.1}.stat-card__label{font-size:13px;color:var(--sm-text-muted);font-weight:500}.dashboard-classrooms{display:grid;gap:14px}.dashboard-classrooms h2{margin:0;font-size:20px;font-weight:700}.dashboard-class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.dashboard-class-card{border:1px solid var(--sm-border);border-radius:14px;background:#fff;padding:18px 20px;text-decoration:none;color:inherit;transition:all .15s ease;display:grid;gap:8px}.dashboard-class-card:hover{border-color:#93c5fd;box-shadow:var(--sm-shadow);transform:translateY(-1px)}.dashboard-class-card__header{display:flex;justify-content:space-between;align-items:center}.dashboard-class-card__header h3{margin:0;font-size:16px;font-weight:700}.dashboard-class-card__badge{font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px}.badge--active{background:#dcfce7;color:#166534}.badge--inactive{background:#e5e7eb;color:#374151}.dashboard-class-card__stats{display:flex;gap:16px;font-size:13px;color:var(--sm-text-muted)}.dashboard-class-card__code{margin:0;font-size:12px;color:var(--sm-text-muted)}.dashboard-empty{text-align:center;padding:40px}.dashboard-empty p{color:var(--sm-text-muted);margin:0 0 12px}.dashboard-empty__link{color:var(--sm-primary);text-decoration:none;font-weight:600}.payment-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px}.payment-toolbar__left,.payment-toolbar__right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.payment-selected-count{font-size:14px;color:var(--sm-text-muted)}.payment-table-wrap{max-height:70vh;overflow:auto}.payment-table{min-width:auto}.payment-table th,.payment-table td{text-align:center;padding:8px}.payment-sticky-col{position:sticky;left:0;background:#fff;z-index:2;text-align:left!important;min-width:160px}.payment-table thead .payment-sticky-col{background:#f8fbff;z-index:3}.payment-date-col{min-width:70px}.payment-date-col span{display:block;font-size:12px}.payment-cell{cursor:pointer;transition:all .1s ease;-webkit-user-select:none;user-select:none;position:relative}.payment-cell:hover{background:#f0f4ff}.payment-cell--paid{background:#f0fdf4}.payment-cell--unpaid{background:#fff}.payment-cell--absent{background:#f9fafb;cursor:default;opacity:.5}.payment-cell--selected{background:#dbeafe!important;box-shadow:inset 0 0 0 2px #3b82f6}.payment-cell__icon{font-size:18px}.payment-legend{display:flex;gap:20px;flex-wrap:wrap;padding:12px 0 0;font-size:13px;color:var(--sm-text-muted)}.payment-legend__item{display:flex;align-items:center;gap:6px}.payment-legend__icon{font-size:16px}.payment-checkbox{width:24px;height:24px;cursor:pointer;accent-color:var(--sm-primary)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#00000073;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px}.modal-container{background:#fff;border-radius:18px;padding:28px;max-width:420px;width:100%;box-shadow:0 20px 60px #0003}.modal-header{display:flex;align-items:center;gap:14px;margin-bottom:12px}.modal-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-icon--danger{background:#fee2e2;color:#dc2626}.modal-icon--primary{background:#dbeafe;color:#3b82f6}.modal-icon--warning{background:#fef3c7;color:#f59e0b}.modal-title{margin:0;font-size:18px;font-weight:700}.modal-message{margin:0 0 20px;color:var(--sm-text-muted);font-size:14px;line-height:1.5}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.modal-btn{padding:9px 20px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;border:1px solid transparent;font-family:inherit;transition:all .15s ease}.modal-btn--cancel{background:var(--sm-surface-soft);border-color:var(--sm-border);color:var(--sm-text)}.modal-btn--cancel:hover{background:#eef2ff}.modal-btn--danger{background:#dc2626;color:#fff}.modal-btn--danger:hover{background:#b91c1c}.modal-btn--primary{background:#3b82f6;color:#fff}.modal-btn--primary:hover{background:#2563eb}.modal-btn--warning{background:#f59e0b;color:#fff}.modal-btn--warning:hover{background:#d97706}.modal-enter-active,.modal-leave-active{transition:opacity .2s ease}.modal-enter-from,.modal-leave-to{opacity:0}.modal-enter-active .modal-container{animation:modal-pop .25s ease}@keyframes modal-pop{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}.toast{position:fixed;bottom:24px;right:24px;z-index:2000;display:flex;align-items:center;gap:10px;padding:14px 20px;border-radius:12px;box-shadow:0 8px 30px #00000026;cursor:pointer;max-width:400px;font-size:14px;font-weight:500}.toast--success{background:#166534;color:#fff}.toast--error{background:#991b1b;color:#fff}.toast--info{background:#1e40af;color:#fff}.toast-icon{display:flex;flex-shrink:0}.toast-enter-active,.toast-leave-active{transition:all .3s ease}.toast-enter-from{opacity:0;transform:translateY(20px)}.toast-leave-to{opacity:0;transform:translate(100px)}.attachment-section{margin-top:8px}.attachment-section__title{margin:0 0 14px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:6px}.attachment-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media(max-width:860px){.attachment-columns{grid-template-columns:1fr}}.attachment-col{border:1px solid var(--sm-border);border-radius:12px;background:var(--sm-surface);overflow:hidden}.attachment-col__header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:3px solid;font-size:13px;font-weight:700}.attachment-upload-btn{color:#fff;border:0;border-radius:8px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:opacity .15s ease}.attachment-upload-btn:hover:not(:disabled){opacity:.85}.attachment-upload-btn:disabled{opacity:.5;cursor:not-allowed}.attachment-col__body{padding:8px;display:grid;gap:6px}.attachment-empty{padding:14px 10px;text-align:center;font-size:12px;color:var(--sm-text-muted)}.attachment-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--sm-border);border-radius:8px;text-decoration:none;color:inherit;transition:all .15s ease}.attachment-item:hover{background:var(--sm-surface-soft);border-color:#93c5fd}.attachment-item__icon{font-size:18px;flex-shrink:0}.attachment-item__info{flex:1;min-width:0;display:grid;gap:1px}.attachment-item__name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-item__size{font-size:11px;color:var(--sm-text-muted)}.attachment-item__delete{background:transparent;border:0;cursor:pointer;color:var(--sm-danger);font-size:16px;font-weight:700;padding:2px 4px;border-radius:4px;flex-shrink:0;opacity:0;transition:opacity .15s ease;line-height:1}.attachment-item:hover .attachment-item__delete{opacity:1}.attachment-item__delete:hover{background:#fee2e2}.app-footer{flex-shrink:0;background:#fffc;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid rgba(59,130,246,.1);padding:32px 0;margin-top:auto;color:var(--sm-text-muted);position:relative;overflow:hidden}.app-footer:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--sm-primary),transparent);opacity:.3}.footer-inner{max-width:1360px;margin:0 auto;padding:0 24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:24px;position:relative;z-index:1}.footer-copyright{font-size:14px;letter-spacing:-.01em}.footer-copyright strong{color:var(--sm-text);font-weight:700;position:relative}.footer-copyright strong:after{content:"";position:absolute;bottom:-2px;left:0;width:100%;height:1px;background:var(--sm-primary);transform:scaleX(0);transition:transform .3s ease;transform-origin:right}.footer-copyright strong:hover:after{transform:scaleX(1);transform-origin:left}.footer-info{display:flex;align-items:center;gap:24px}.footer-phone{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--sm-text);padding:8px 16px;background:#3b82f60d;border-radius:99px;transition:all .3s ease;border:1px solid transparent}.footer-phone svg{color:var(--sm-primary);transition:transform .3s ease}.footer-phone:hover{background:#3b82f61a;border-color:#3b82f633;transform:translateY(-2px)}.footer-phone:hover svg{transform:rotate(15deg) scale(1.1)}.footer-social{width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:var(--sm-surface);border:1px solid var(--sm-border);color:var(--sm-text-muted);border-radius:12px;transition:all .3s cubic-bezier(.34,1.56,.64,1);box-shadow:0 2px 8px #0000000a}.footer-social:hover{color:#fff;background:#1877f2;border-color:#1877f2;transform:translateY(-4px) rotate(8deg);box-shadow:0 8px 20px #1877f24d}@media(max-width:768px){.app-footer{padding:40px 0}.footer-inner{flex-direction:column;text-align:center;gap:32px}.footer-info{flex-direction:row;justify-content:center;gap:16px}}.student-solutions{display:flex;flex-wrap:wrap;gap:4px}.solution-link{display:flex;align-items:center;justify-content:center;width:32px;min-width:32px;height:28px;background:#fef2f2;border:1px solid #fee2e2;border-radius:6px;text-decoration:none;font-size:16px;transition:all .2s;color:#dc2626}.solution-link:hover{background:#fee2e2;transform:translateY(-1px)}.sm-checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--sm-text);-webkit-user-select:none;user-select:none}.sm-checkbox-label input{width:18px;height:18px;cursor:pointer}.attachment-col__title-wrap{display:flex;align-items:center;gap:12px}.ai-review-cell{display:flex;flex-direction:column;gap:4px}.ai-review-status{display:flex;align-items:center;gap:8px}.sm-link-btn{background:none;border:none;color:var(--sm-primary);text-decoration:underline;padding:0;cursor:pointer;font-size:13px}.sm-link-btn:hover{color:var(--sm-primary-dark)}.ai-review-rerun{font-size:12px}.ai-review-setup{display:flex;flex-direction:column;gap:18px}.ai-review-hero{display:flex;gap:14px;padding:16px;border:1px solid #dbeafe;border-radius:16px;background:linear-gradient(135deg,#eff6ff,#f8fafc 55%,#f5f3ff)}.ai-review-hero h4{margin:0 0 6px;color:var(--sm-text-dark);font-size:16px}.ai-review-hero p{margin:0;color:var(--sm-text);line-height:1.55;font-size:14px}.ai-review-hero__icon{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:14px;background:#fff;box-shadow:0 10px 24px #2563eb29;font-size:22px}.ai-review-option-grid{display:flex;flex-direction:column;gap:12px}.ai-review-option-card{position:relative;display:flex;gap:12px;align-items:flex-start;width:100%;padding:14px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;cursor:pointer;transition:.2s ease;box-shadow:0 6px 18px #0f172a0a}.ai-review-option-card:hover{border-color:#93c5fd;transform:translateY(-1px);box-shadow:0 12px 24px #2563eb1a}.ai-review-option-card:has(input:checked){border-color:var(--sm-primary);background:#eff6ff;box-shadow:0 12px 24px #2563eb1f}.ai-review-option-card input{width:20px;height:20px;flex:0 0 20px;margin-top:2px;accent-color:var(--sm-primary);cursor:pointer}.ai-review-option-card strong{display:block;color:var(--sm-text-dark);margin-bottom:4px}.ai-review-option-card small{display:block;color:var(--sm-text-muted);line-height:1.4}.ai-review-option-card--with-files{flex-direction:column;gap:10px;cursor:default}.ai-review-option-card__header{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:34px;cursor:pointer}.ai-review-option-card__icon{width:32px;height:32px;flex:0 0 32px;display:grid;place-items:center;border-radius:10px;background:#f8fafc}.ai-review-file-list{display:flex;flex-direction:column;gap:8px;width:100%;max-height:260px;overflow-y:auto;padding:8px;border-radius:12px;background:#f8fafc}.ai-review-file-option{display:grid;grid-template-columns:22px 24px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;cursor:pointer}.ai-review-file-option input{width:18px;height:18px;margin:0;accent-color:var(--sm-primary);cursor:pointer}.ai-review-file-option__name{overflow:hidden;color:var(--sm-text-dark);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.ai-review-file-option__size{color:var(--sm-text-muted);font-size:12px}.ai-review-setup-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:4px}.ai-review-details{display:flex;flex-direction:column;gap:20px}.ai-review-score{display:flex;align-items:center;gap:12px;background:#f0fdf4;padding:16px;border-radius:12px;border:1px solid #dcfce7}.ai-review-score .score-label{font-weight:600;color:#166534}.ai-review-score .score-value{font-size:24px;font-weight:800;color:#15803d}.ai-review-summary h4{margin-bottom:8px;color:var(--sm-text-dark)}.ai-review-summary p{line-height:1.6;color:var(--sm-text)}.ai-review-items h4{margin-bottom:12px;color:var(--sm-text-dark)}.ai-review-item{padding:12px;border-bottom:1px solid #f1f5f9}.ai-review-item:last-child{border-bottom:none}.ai-review-item .item-point{margin-bottom:4px;color:var(--sm-text-dark)}.ai-review-item .item-explanation{font-size:14px;color:var(--sm-text);margin-bottom:4px}.ai-review-item .item-suggestion{font-size:13px;color:#0369a1;background:#f0f9ff;padding:6px 10px;border-radius:6px;margin-top:8px}@media(max-width:768px){.attendance-page .sm-table th,.attendance-page .sm-table td{padding:8px 6px;font-size:12px}.attendance-page .status-group{flex-direction:column;align-items:flex-start}.attendance-page .session-sheet__header h3{font-size:15px}.attendance-page .ai-review-option-grid{grid-template-columns:1fr}.attendance-page .ai-review-hero{flex-direction:column}}
