.greeting-card[data-v-21e8a760]{background:linear-gradient(135deg,#0d9488,#1d4ed8);color:#fff;border-radius:14px;padding:16px;box-shadow:0 2px 8px #0d94882e}.greeting-text[data-v-21e8a760]{font-size:20px;font-weight:700}.greeting-sub[data-v-21e8a760]{font-size:13px;opacity:.85;margin-top:4px}.tab-bar[data-v-21e8a760]{display:flex;align-items:center;gap:4px}.tab-btn[data-v-21e8a760]{padding:5px 12px;border-radius:999px;border:1px solid #e2e8f0;background:transparent;color:#64748b;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.tab-btn.active[data-v-21e8a760]{background:#0ea5a31a;border-color:#0ea5a34d;color:#0d9488}.th-lesson-row[data-v-21e8a760]{padding-left:0!important;overflow:hidden;flex-direction:row!important;align-items:stretch!important}.th-lesson-accent[data-v-21e8a760]{width:4px;flex-shrink:0;align-self:stretch;border-radius:0;background:hsl(var(--hue, 200),55%,55%);margin-right:10px}.th-assign-row[data-v-21e8a760]{display:flex;align-items:stretch;overflow:hidden;border-radius:12px;background:#fffbeb;border:1px solid rgba(245,158,11,.2);box-shadow:0 1px 3px #0000000a}.th-assign-accent[data-v-21e8a760]{width:4px;flex-shrink:0;align-self:stretch;background:#f59e0b}.th-assign-name[data-v-21e8a760]{font-size:.88rem;font-weight:600;color:#78350f}.pill.chip-today[data-v-21e8a760]{background:#0d94881f;border-color:#0d948859;color:#0d9488}.pill.chip-past[data-v-21e8a760]{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8}.pill.chip-soon[data-v-21e8a760]{background:#fef3c7;border-color:#92400e40;color:#92400e}.tc-card[data-v-aabc7dbd]{display:flex;align-items:center;overflow:hidden;border-radius:14px;border:1px solid #e2e8f0;background:#fff;text-decoration:none;box-shadow:0 1px 3px #0000000f;transition:box-shadow .15s,transform .1s}.tc-card[data-v-aabc7dbd]:active{transform:scale(.98)}.tc-accent[data-v-aabc7dbd]{width:5px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,60%)}.tc-body[data-v-aabc7dbd]{flex:1;padding:12px 12px 12px 14px}.tc-name[data-v-aabc7dbd]{font-size:15px;font-weight:700;color:#1e293b}.tc-grade[data-v-aabc7dbd]{font-size:12px;color:#6b7280;margin-top:2px}.skeleton-card[data-v-aabc7dbd]{background:#f1f5f9;border-radius:14px;animation:shimmer-aabc7dbd 1.4s ease infinite;background-image:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0,#f1f5f9 75%);background-size:200% 100%}@keyframes shimmer-aabc7dbd{0%{background-position:-200% 0}to{background-position:200% 0}}.tv-lesson-card[data-v-7ec556d9]{display:flex;align-items:stretch;background:#fff;border-radius:12px;box-shadow:0 1px 4px #0000000f;margin-bottom:8px;overflow:hidden;transition:opacity .15s}.tv-lesson-card.tv-clickable[data-v-7ec556d9]{cursor:pointer}.tv-lesson-card.tv-clickable[data-v-7ec556d9]:active{opacity:.8}.tv-accent[data-v-7ec556d9]{width:4px;flex-shrink:0;background:hsl(var(--hue, 200),55%,55%)}.tv-lesson-body[data-v-7ec556d9]{flex:1;padding:10px 12px;min-width:0}.tv-subject[data-v-7ec556d9]{font-size:.9rem;font-weight:700;color:#1e293b}.tv-time[data-v-7ec556d9]{font-size:.78rem;color:#64748b;margin-top:2px}.tv-meta[data-v-7ec556d9]{font-size:.75rem;color:#94a3b8;margin-top:1px}.tv-arrow[data-v-7ec556d9]{display:flex;align-items:center;padding-right:14px;color:#cbd5e1;font-size:1.1rem;font-weight:700}.tv-assign-card[data-v-7ec556d9]{display:flex;align-items:stretch;background:#fef3c7;border-radius:12px;box-shadow:0 1px 4px #0000000f;margin-bottom:8px;overflow:hidden}.tv-assign-accent[data-v-7ec556d9]{width:4px;flex-shrink:0;background:#f59e0b}.tv-assign-body[data-v-7ec556d9]{flex:1;padding:10px 12px;min-width:0}.tv-assign-name[data-v-7ec556d9]{font-size:.9rem;font-weight:700;color:#78350f}.tv-assign-meta[data-v-7ec556d9]{color:#b45309!important}.tv-due-badge[data-v-7ec556d9]{display:flex;align-items:center;padding-right:12px;font-size:.68rem;font-weight:700;color:#92400e;text-transform:uppercase;letter-spacing:.03em}.tv-day-block[data-v-7ec556d9]{margin-bottom:18px}.tv-day-header[data-v-7ec556d9]{display:flex;align-items:center;gap:6px;margin-bottom:7px;padding:0 2px}.tv-day-name[data-v-7ec556d9]{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.tv-day-date[data-v-7ec556d9]{font-size:.72rem;color:#94a3b8}.tv-day-header.is-today .tv-day-name[data-v-7ec556d9]{color:#0d9488}.tv-today-badge[data-v-7ec556d9]{font-size:.62rem;font-weight:700;background:#0d9488;color:#fff;padding:1px 7px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.tv-day-tabs[data-v-7ec556d9]{display:flex;gap:5px;margin-bottom:14px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.tv-day-tabs[data-v-7ec556d9]::-webkit-scrollbar{display:none}.tv-day-tab[data-v-7ec556d9]{position:relative;flex-shrink:0;padding:6px 16px;border-radius:999px;border:1.5px solid #e2e8f0;background:#fff;color:#64748b;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.tv-day-tab.active[data-v-7ec556d9]{background:#0d9488;border-color:#0d9488;color:#fff}.tv-today-dot[data-v-7ec556d9]{position:absolute;top:5px;right:7px;width:5px;height:5px;border-radius:50%;background:#0d9488}.tv-day-tab.active .tv-today-dot[data-v-7ec556d9]{background:#fff}.tv-empty-day[data-v-7ec556d9]{font-size:.78rem;color:#cbd5e1;padding:3px 2px 6px}.tv-empty[data-v-7ec556d9]{font-size:.85rem;color:#94a3b8;text-align:center;padding:24px 0}.class-hero[data-v-ec3aae5f]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent[data-v-ec3aae5f]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-ec3aae5f]{flex:1;padding:16px}.action-grid[data-v-ec3aae5f]{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}.action-tile[data-v-ec3aae5f]{display:flex;flex-direction:column;align-items:flex-start;padding:14px 14px 12px;border-radius:14px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000f;cursor:pointer;text-align:left;transition:box-shadow .15s,transform .1s}.action-tile[data-v-ec3aae5f]:active{transform:scale(.97)}.action-tile-icon[data-v-ec3aae5f]{width:32px;height:32px;border-radius:8px;background:#f0fdfa;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.action-tile-icon svg[data-v-ec3aae5f]{width:16px;height:16px;stroke:#0d9488}.action-tile-label[data-v-ec3aae5f]{font-size:14px;font-weight:700;color:#1e293b}.action-tile-sub[data-v-ec3aae5f]{font-size:12px;color:#6b7280;margin-top:2px}.action-tile--wide[data-v-ec3aae5f]{grid-column:1 / -1}.notice-compose[data-v-ec3aae5f]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:12px;margin-bottom:10px}.notice-list[data-v-ec3aae5f]{display:flex;flex-direction:column;gap:8px}.notice-card[data-v-ec3aae5f]{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:12px 14px}.subject-chip[data-v-ec3aae5f]{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:#f0fdfa;color:#0d9488}.notice-date[data-v-ec3aae5f]{font-size:11px;color:#94a3b8}.notice-content[data-v-ec3aae5f]{font-size:13px;color:#334155;margin:0}.sched-header[data-v-3953c9c1]{margin-bottom:16px}.sched-header h1[data-v-3953c9c1]{font-size:1.3rem;font-weight:800;color:#1e293b;margin:0 0 10px}.sched-controls[data-v-3953c9c1]{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.pill-toggle[data-v-3953c9c1]{display:flex;background:#f1f5f9;border-radius:999px;padding:3px;gap:2px}.pill-toggle button[data-v-3953c9c1]{padding:5px 16px;border-radius:999px;border:none;background:none;color:#64748b;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s}.pill-toggle button.active[data-v-3953c9c1]{background:#fff;color:#0d9488;box-shadow:0 1px 3px #0000001a}.week-nav[data-v-3953c9c1]{display:flex;align-items:center;gap:6px}.week-btn[data-v-3953c9c1]{width:30px;height:30px;border-radius:50%;border:1.5px solid #e2e8f0;background:#fff;color:#475569;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.week-label[data-v-3953c9c1]{font-size:.8rem;font-weight:600;color:#475569;min-width:110px;text-align:center}.sched-error[data-v-3953c9c1]{color:#b91c1c;font-size:.85rem;margin-top:8px}.convo-list[data-v-ac0c26ef]{display:flex;flex-direction:column}.convo-row[data-v-ac0c26ef]{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #f1f5f9;cursor:pointer;position:relative}.convo-row[data-v-ac0c26ef]:active{background:#f8fafc}.convo-avatar[data-v-ac0c26ef]{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#0d9488,#1d4ed8);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.convo-body[data-v-ac0c26ef]{flex:1;min-width:0}.convo-header-row[data-v-ac0c26ef]{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.convo-name[data-v-ac0c26ef]{font-size:14px;font-weight:600;color:var(--ink, #1e293b)}.convo-time[data-v-ac0c26ef]{font-size:11px;color:#9ca3af;flex-shrink:0}.convo-preview[data-v-ac0c26ef]{font-size:13px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.convo-preview.unread[data-v-ac0c26ef]{color:var(--ink, #1e293b);font-weight:500}.unread-badge[data-v-ac0c26ef]{background:#0d9488;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px;flex-shrink:0}.convo-section[data-v-b35cc4c2]{position:fixed;top:0;left:0;right:0;bottom:72px;display:flex;flex-direction:column;background:#f8fafc;z-index:10;overflow:hidden}.convo-top-bar[data-v-b35cc4c2]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #e2e8f0;flex-shrink:0}.convo-peer-name[data-v-b35cc4c2]{font-size:15px;font-weight:700;color:var(--ink, #1e293b)}.messages-area[data-v-b35cc4c2]{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:4px}.date-divider[data-v-b35cc4c2]{text-align:center;font-size:11px;color:#9ca3af;font-weight:500;margin:12px 0 6px}.bubble-row[data-v-b35cc4c2]{display:flex}.bubble-row.mine[data-v-b35cc4c2]{justify-content:flex-end}.bubble-row.theirs[data-v-b35cc4c2]{justify-content:flex-start}.bubble[data-v-b35cc4c2]{max-width:75%;padding:9px 12px;border-radius:18px;line-height:1.4}.bubble-mine[data-v-b35cc4c2]{background:#0d9488;color:#fff;border-bottom-right-radius:4px}.bubble-theirs[data-v-b35cc4c2]{background:#fff;color:var(--ink, #1e293b);border-bottom-left-radius:4px}.bubble-text[data-v-b35cc4c2]{font-size:14px}.bubble-time[data-v-b35cc4c2]{font-size:10px;margin-top:3px;opacity:.65;text-align:right}.bubble-theirs .bubble-time[data-v-b35cc4c2]{text-align:left}.reply-bar[data-v-b35cc4c2]{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid #e2e8f0;background:#fff;flex-shrink:0}.reply-input[data-v-b35cc4c2]{flex:1;border:1.5px solid #e2e8f0;border-radius:20px;padding:8px 14px;font-size:14px;resize:none;outline:none;line-height:1.4;max-height:120px;overflow-y:auto;font-family:inherit;background:#f8fafc;transition:border-color .15s}.reply-input[data-v-b35cc4c2]:focus{border-color:#0d9488;background:#fff}.send-btn[data-v-b35cc4c2]{width:38px;height:38px;border-radius:50%;background:#0d9488;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}.send-btn[data-v-b35cc4c2]:disabled{opacity:.4;cursor:default}.send-btn[data-v-b35cc4c2]:not(:disabled):active{background:#0f766e}.class-hero[data-v-e6ec8aa3]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012}.class-hero-accent[data-v-e6ec8aa3]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-e6ec8aa3]{flex:1;padding:16px}.att-toggle[data-v-e6ec8aa3]{display:flex;gap:4px;flex-shrink:0;align-self:center}.att-btn[data-v-e6ec8aa3]{width:32px;height:32px;border-radius:8px;border:1.5px solid #e2e8f0;background:#fff;color:#64748b;font-size:12px;font-weight:700;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.att-btn.active[data-v-e6ec8aa3]{background:#0d9488;border-color:#0d9488;color:#fff}.att-btn.absent-btn.active[data-v-e6ec8aa3]{background:#dc2626;border-color:#dc2626}.att-btn.excused-btn.active[data-v-e6ec8aa3]{background:#16a34a;border-color:#16a34a}.week-nav-bar[data-v-e6ec8aa3]{display:flex;align-items:center;gap:6px}.week-nav-btn[data-v-e6ec8aa3]{width:30px;height:30px;border-radius:50%;border:1.5px solid #e2e8f0;background:#fff;color:#475569;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.week-nav-label[data-v-e6ec8aa3]{font-size:.8rem;font-weight:600;color:#475569;flex:1;text-align:center}.hist-skeleton-row[data-v-e6ec8aa3]{display:flex;justify-content:space-between;align-items:center;padding:12px 14px}.hist-card[data-v-e6ec8aa3]{padding:0;overflow:hidden}.hist-row[data-v-e6ec8aa3]{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:none;border:none;cursor:pointer;text-align:left;gap:10px}.hist-row[data-v-e6ec8aa3]:active{background:#f8fafc}.hist-row-left[data-v-e6ec8aa3]{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0}.hist-date[data-v-e6ec8aa3]{font-size:14px;font-weight:700;color:#1e293b}.hist-pills[data-v-e6ec8aa3]{display:flex;flex-wrap:wrap;gap:4px}.hist-pill[data-v-e6ec8aa3]{font-size:11px!important}.hist-chevron[data-v-e6ec8aa3]{width:16px;height:16px;flex-shrink:0;color:#94a3b8;transition:transform .2s}.hist-chevron.open[data-v-e6ec8aa3]{transform:rotate(180deg)}.hist-detail[data-v-e6ec8aa3]{padding:4px 14px 12px;border-top:1px solid #f1f5f9}.pill.pill-excused[data-v-e6ec8aa3]{background:#f0fdf4;border-color:#86efac;color:#166534}.absent-text[data-v-e6ec8aa3]{color:#dc2626!important}.excused-text[data-v-e6ec8aa3]{color:#16a34a!important}.class-hero[data-v-d8b44de2]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012}.class-hero-accent[data-v-d8b44de2]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-d8b44de2]{flex:1;padding:16px}.class-hero[data-v-20780e7e]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent[data-v-20780e7e]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-20780e7e]{flex:1;padding:16px}.action-grid[data-v-20780e7e]{display:grid;grid-template-columns:1fr 1fr;gap:10px}.action-tile[data-v-20780e7e]{display:flex;flex-direction:column;align-items:flex-start;padding:14px 14px 12px;border-radius:14px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000f;cursor:pointer;text-align:left;transition:box-shadow .15s,transform .1s}.action-tile[data-v-20780e7e]:active{transform:scale(.97)}.action-tile-icon[data-v-20780e7e]{width:32px;height:32px;border-radius:8px;background:#f0fdfa;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.action-tile-icon svg[data-v-20780e7e]{width:16px;height:16px;stroke:#0d9488}.action-tile-label[data-v-20780e7e]{font-size:14px;font-weight:700;color:#1e293b}.action-tile-sub[data-v-20780e7e]{font-size:12px;color:#6b7280;margin-top:2px}.year-accordion-header[data-v-20780e7e]{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg2);border:none;cursor:pointer;font-size:14px;text-align:left;color:var(--ink)}.year-accordion-header[data-v-20780e7e]:active{background:#f1f5f9}.hist-chevron[data-v-20780e7e]{width:16px;height:16px;stroke:#94a3b8;flex-shrink:0;transition:transform .2s}.hist-chevron.open[data-v-20780e7e]{transform:rotate(180deg)}.subject-group-header[data-v-20780e7e]{display:flex;align-items:center;justify-content:space-between;padding:6px 0;font-weight:600;font-size:13px;color:#1e293b}.score-row[data-v-20780e7e]{display:flex;align-items:center;gap:8px;padding:6px 10px 6px 0;margin-top:4px;border-radius:8px;background:var(--bg);overflow:hidden}.score-row-accent[data-v-20780e7e]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--shue, 200),50%,65%);border-radius:4px 0 0 4px}.class-hero[data-v-7cf48e93]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent[data-v-7cf48e93]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-7cf48e93]{flex:1;padding:16px}.class-hero[data-v-9349cfaa]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012}.class-hero-accent[data-v-9349cfaa]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-9349cfaa]{flex:1;padding:16px}.score-input[data-v-9349cfaa]{width:80px;text-align:right;flex-shrink:0;align-self:center}.hist-skeleton-row[data-v-9349cfaa]{display:flex;align-items:center;gap:10px;padding:12px 14px}.hist-card[data-v-9349cfaa]{padding:0;overflow:hidden;border-radius:12px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000d}.hist-row[data-v-9349cfaa]{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;background:none;border:none;cursor:pointer;text-align:left}.hist-row[data-v-9349cfaa]:active{background:#f8fafc}.hist-row-left[data-v-9349cfaa]{flex:1;min-width:0}.hist-date[data-v-9349cfaa]{font-size:14px;font-weight:600;color:#1e293b;display:block}.hist-pills[data-v-9349cfaa]{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.hist-pill[data-v-9349cfaa]{font-size:11px}.hist-chevron[data-v-9349cfaa]{width:16px;height:16px;stroke:#94a3b8;flex-shrink:0;transition:transform .2s}.hist-chevron.open[data-v-9349cfaa]{transform:rotate(180deg)}.hist-detail[data-v-9349cfaa]{border-top:1px solid #f1f5f9;padding:10px 12px;background:#fafbfc}.score-badge[data-v-9349cfaa]{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:2px 8px;border-radius:999px;border:1px solid transparent;font-size:13px;font-weight:700;flex-shrink:0}.score-badge--ok[data-v-9349cfaa]{background:#0d94881a;border-color:#0d94884d;color:#0d9488}.score-badge--warn[data-v-9349cfaa]{background:#fef3c7;border-color:#92400e33;color:#92400e}.score-badge--fail[data-v-9349cfaa]{background:#fee2e2;border-color:#dc262633;color:#b91c1c}.score-badge--empty[data-v-9349cfaa]{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8}.class-hero[data-v-1c27c9e9]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012}.class-hero-accent[data-v-1c27c9e9]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-1c27c9e9]{flex:1;padding:16px}.form-row[data-v-1c27c9e9]{display:flex;gap:10px}.form-row .field[data-v-1c27c9e9]{flex:1}.sched-header[data-v-c4391a60]{margin-bottom:16px}.back-btn[data-v-c4391a60]{background:none;border:none;color:#64748b;font-size:.82rem;cursor:pointer;padding:0 0 6px;display:block}.sched-header h1[data-v-c4391a60]{font-size:1.3rem;font-weight:800;color:#1e293b;margin:0 0 10px}.sched-controls[data-v-c4391a60]{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.pill-toggle[data-v-c4391a60]{display:flex;background:#f1f5f9;border-radius:999px;padding:3px;gap:2px}.pill-toggle button[data-v-c4391a60]{padding:5px 16px;border-radius:999px;border:none;background:none;color:#64748b;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s}.pill-toggle button.active[data-v-c4391a60]{background:#fff;color:#0d9488;box-shadow:0 1px 3px #0000001a}.week-nav[data-v-c4391a60]{display:flex;align-items:center;gap:6px}.week-btn[data-v-c4391a60]{width:30px;height:30px;border-radius:50%;border:1.5px solid #e2e8f0;background:#fff;color:#475569;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.week-label[data-v-c4391a60]{font-size:.8rem;font-weight:600;color:#475569;min-width:110px;text-align:center}.sched-error[data-v-c4391a60]{color:#b91c1c;font-size:.85rem;margin-top:8px}.admin-tile-grid[data-v-54ca3df3]{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media (max-width: 420px){.admin-tile-grid[data-v-54ca3df3]{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.admin-tile-grid[data-v-54ca3df3]{grid-template-columns:repeat(4,1fr)}}.year-card-active[data-v-08c7a97d]{border-color:#0ea5a34d;background:#0ea5a308}.year-header[data-v-08c7a97d]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid #f1f5f9}.year-header-info[data-v-08c7a97d]{flex:1;min-width:0}.term-row[data-v-08c7a97d]{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid #f8fafc}.term-row[data-v-08c7a97d]:last-child{border-bottom:none}.term-accent[data-v-08c7a97d]{width:3px;align-self:stretch;flex-shrink:0;background:hsl(var(--thue, 200),55%,65%);border-radius:2px;margin:-8px 0}.term-body[data-v-08c7a97d]{flex:1;min-width:0}.grade-row[data-v-0a315fd7]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f1f5f9}.grade-row[data-v-0a315fd7]:last-child{border-bottom:none}.grade-accent[data-v-0a315fd7]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--hue, 200),55%,58%);border-radius:2px;margin:-10px 0}.grade-body[data-v-0a315fd7]{flex:1;min-width:0}.subject-row[data-v-6616a1d2]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f1f5f9}.subject-row[data-v-6616a1d2]:last-child{border-bottom:none}.subject-accent[data-v-6616a1d2]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--hue, 200),55%,58%);border-radius:2px;margin:-10px 0}.subject-body[data-v-6616a1d2]{flex:1;min-width:0}.category-row[data-v-5fb27e4c]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f1f5f9}.category-row[data-v-5fb27e4c]:last-child{border-bottom:none}.category-accent[data-v-5fb27e4c]{width:4px;align-self:stretch;flex-shrink:0;background:var(--accent);border-radius:2px;margin:-10px 0}.category-body[data-v-5fb27e4c]{flex:1;min-width:0}.weight-badge[data-v-5fb27e4c]{font-size:12px;font-weight:700;color:var(--accent-ink);background:#0ea5a31a;border:1px solid rgba(14,165,163,.2);border-radius:999px;padding:2px 8px;white-space:nowrap}.class-card[data-v-fa97f718]{display:flex;overflow:hidden;border-radius:14px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000d}.class-card-accent[data-v-fa97f718]{width:5px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-card-body[data-v-fa97f718]{flex:1;padding:12px 14px}.class-card-header[data-v-fa97f718]{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}.class-card-actions[data-v-fa97f718]{display:flex;gap:6px;border-top:1px solid #f1f5f9;padding-top:8px;margin-top:4px}.enroll-badge[data-v-fa97f718]{font-size:12px;font-weight:700;color:var(--accent-ink);background:#0ea5a31a;border:1px solid rgba(14,165,163,.2);border-radius:999px;padding:3px 9px;white-space:nowrap}.enroll-row[data-v-20eb6c81]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f1f5f9}.enroll-row[data-v-20eb6c81]:last-child{border-bottom:none}.enroll-avatar[data-v-20eb6c81]{width:34px;height:34px;border-radius:50%;flex-shrink:0;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.enroll-info[data-v-20eb6c81]{flex:1;min-width:0}.enroll-name[data-v-20eb6c81]{font-size:14px;font-weight:600;color:#1e293b}.enroll-code[data-v-20eb6c81]{font-size:11px;color:#94a3b8;margin-top:2px}.year-accordion-header[data-v-d4ef2e0f]{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg2);border:none;cursor:pointer;font-size:14px;text-align:left;color:var(--ink)}.year-accordion-header[data-v-d4ef2e0f]:hover{background:var(--bg)}.score-row[data-v-d4ef2e0f]{display:flex;align-items:center;border-bottom:1px solid #f1f5f9;background:#f8fafc}.score-row[data-v-d4ef2e0f]:last-child{border-bottom:none}.score-row-accent[data-v-d4ef2e0f]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--shue, 200),55%,52%)}.score-row-body[data-v-d4ef2e0f]{flex:1;padding:9px 12px;min-width:0}.score-sub-row[data-v-d4ef2e0f]{display:flex;align-items:center;border-bottom:1px solid #f1f5f9;background:#fff}.score-sub-row[data-v-d4ef2e0f]:last-child{border-bottom:none}.score-sub-accent[data-v-d4ef2e0f]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--shue, 200),40%,80%)}.enroll-row[data-v-d4ef2e0f]{display:flex;align-items:center;padding:10px 14px;border-bottom:1px solid #f1f5f9}.enroll-row[data-v-d4ef2e0f]:last-child{border-bottom:none}.enroll-info[data-v-d4ef2e0f]{flex:1;min-width:0}.enroll-name[data-v-d4ef2e0f]{font-size:14px;font-weight:600;color:#1e293b}.enroll-code[data-v-d4ef2e0f]{font-size:11px;color:#94a3b8;margin-top:2px}.assign-row[data-v-fc02783a]{display:flex;align-items:stretch;border-bottom:1px solid #f1f5f9}.assign-row[data-v-fc02783a]:last-child{border-bottom:none}.assign-accent[data-v-fc02783a]{width:4px;flex-shrink:0;background:hsl(var(--ahue, 200),55%,52%)}.assign-body[data-v-fc02783a]{flex:1;padding:10px 14px;min-width:0}.assign-class[data-v-fc02783a]{font-size:14px;font-weight:600;color:#1e293b}.guardian-card[data-v-2f392f7e]{display:flex;overflow:hidden;border-radius:14px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000d}.guardian-accent[data-v-2f392f7e]{width:4px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.guardian-body[data-v-2f392f7e]{flex:1;padding:12px 14px}.guardian-top[data-v-2f392f7e]{display:flex;align-items:center;gap:10px}.guardian-avatar[data-v-2f392f7e]{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.guardian-info[data-v-2f392f7e]{flex:1;min-width:0}.guardian-name[data-v-2f392f7e]{font-size:14px;font-weight:700;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.guardian-sub[data-v-2f392f7e]{font-size:11px;color:#94a3b8;margin-top:2px}.guardian-actions[data-v-2f392f7e]{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}.guardian-children[data-v-2f392f7e]{margin-top:10px;padding-top:10px;border-top:1px solid #f1f5f9}.result-row[data-v-e15fe82c]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f1f5f9;text-decoration:none;color:inherit}.result-row--link[data-v-e15fe82c]:hover{background:#f8fafc}.result-row--link[data-v-e15fe82c]:active{background:#f1f5f9}.result-row[data-v-e15fe82c]:last-child{border-bottom:none}.result-chevron[data-v-e15fe82c]{font-size:18px;color:#cbd5e1;flex-shrink:0;margin-left:2px}.result-avatar[data-v-e15fe82c]{width:34px;height:34px;border-radius:50%;flex-shrink:0;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.result-info[data-v-e15fe82c]{flex:1;min-width:0}.result-name[data-v-e15fe82c]{font-size:14px;font-weight:700;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-sub[data-v-e15fe82c]{font-size:11px;color:#94a3b8;margin-top:2px}.result-right[data-v-e15fe82c]{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.rank-badge[data-v-e15fe82c]{font-size:11px;font-weight:700;color:#64748b;background:#f1f5f9;border-radius:999px;padding:1px 7px}.result-load-more[data-v-e15fe82c]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid #f1f5f9}.convo-list[data-v-e85f7a37]{display:flex;flex-direction:column}.convo-row[data-v-e85f7a37]{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #f1f5f9;cursor:pointer;position:relative}.convo-row[data-v-e85f7a37]:active{background:#f8fafc}.convo-avatar[data-v-e85f7a37]{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#0d9488,#1d4ed8);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.convo-body[data-v-e85f7a37]{flex:1;min-width:0}.convo-header-row[data-v-e85f7a37]{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.convo-name[data-v-e85f7a37]{font-size:14px;font-weight:600;color:var(--ink, #1e293b)}.convo-time[data-v-e85f7a37]{font-size:11px;color:#9ca3af;flex-shrink:0}.convo-preview[data-v-e85f7a37]{font-size:13px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.convo-preview.unread[data-v-e85f7a37]{color:var(--ink, #1e293b);font-weight:500}.unread-badge[data-v-e85f7a37]{background:#0d9488;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px;flex-shrink:0}.convo-section[data-v-01d04903]{position:fixed;top:0;left:0;right:0;bottom:72px;display:flex;flex-direction:column;background:#f8fafc;z-index:10;overflow:hidden}.convo-top-bar[data-v-01d04903]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #e2e8f0;flex-shrink:0}.convo-peer-name[data-v-01d04903]{font-size:15px;font-weight:700;color:var(--ink, #1e293b)}.messages-area[data-v-01d04903]{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:4px}.date-divider[data-v-01d04903]{text-align:center;font-size:11px;color:#9ca3af;font-weight:500;margin:12px 0 6px}.bubble-row[data-v-01d04903]{display:flex}.bubble-row.mine[data-v-01d04903]{justify-content:flex-end}.bubble-row.theirs[data-v-01d04903]{justify-content:flex-start}.bubble[data-v-01d04903]{max-width:75%;padding:9px 12px;border-radius:18px;line-height:1.4}.bubble-mine[data-v-01d04903]{background:#0d9488;color:#fff;border-bottom-right-radius:4px}.bubble-theirs[data-v-01d04903]{background:#fff;color:var(--ink, #1e293b);border-bottom-left-radius:4px}.bubble-text[data-v-01d04903]{font-size:14px}.bubble-time[data-v-01d04903]{font-size:10px;margin-top:3px;opacity:.65;text-align:right}.bubble-theirs .bubble-time[data-v-01d04903]{text-align:left}.reply-bar[data-v-01d04903]{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid #e2e8f0;background:#fff;flex-shrink:0}.reply-input[data-v-01d04903]{flex:1;border:1.5px solid #e2e8f0;border-radius:20px;padding:8px 14px;font-size:14px;resize:none;outline:none;line-height:1.4;max-height:120px;overflow-y:auto;font-family:inherit;background:#f8fafc;transition:border-color .15s}.reply-input[data-v-01d04903]:focus{border-color:#0d9488;background:#fff}.send-btn[data-v-01d04903]{width:38px;height:38px;border-radius:50%;background:#0d9488;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}.send-btn[data-v-01d04903]:disabled{opacity:.4;cursor:default}.send-btn[data-v-01d04903]:not(:disabled):active{background:#0f766e}.rc-row[data-v-a03a4039]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f1f5f9}.rc-row[data-v-a03a4039]:last-child{border-bottom:none}.rc-avatar[data-v-a03a4039]{width:34px;height:34px;border-radius:50%;flex-shrink:0;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.rc-info[data-v-a03a4039]{flex:1;min-width:0}.rc-name[data-v-a03a4039]{font-size:14px;font-weight:700;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rc-sub[data-v-a03a4039]{display:flex;gap:6px;margin-top:4px;flex-wrap:wrap}.rc-actions[data-v-a03a4039]{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}.chip[data-v-a03a4039]{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px}.chip--ok[data-v-a03a4039]{background:#dcfce7;color:#15803d}.chip--warn[data-v-a03a4039]{background:#fef9c3;color:#a16207}.chip--muted[data-v-a03a4039]{background:#f1f5f9;color:#64748b}.class-hero[data-v-d3c32fe8]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent[data-v-d3c32fe8]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-d3c32fe8]{flex:1;padding:16px}.broadcast-compose[data-v-d3c32fe8]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:12px;margin-bottom:4px}.rc-row[data-v-d3c32fe8]{display:flex;align-items:center;gap:10px;padding:10px 14px}.rc-panel[data-v-d3c32fe8]{padding:10px 14px 12px;border-top:1px solid #f1f5f9;background:#f8fafc}.rc-avatar[data-v-d3c32fe8]{width:34px;height:34px;border-radius:50%;flex-shrink:0;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.rc-info[data-v-d3c32fe8]{flex:1;min-width:0}.rc-name[data-v-d3c32fe8]{font-size:14px;font-weight:700;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rc-sub[data-v-d3c32fe8]{display:flex;gap:6px;margin-top:4px;flex-wrap:wrap}.rc-actions[data-v-d3c32fe8]{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.chip[data-v-d3c32fe8]{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px}.chip--ok[data-v-d3c32fe8]{background:#dcfce7;color:#15803d}.chip--warn[data-v-d3c32fe8]{background:#fef9c3;color:#a16207}.chip--muted[data-v-d3c32fe8]{background:#f1f5f9;color:#64748b}.greeting-card[data-v-7e47306f]{background:linear-gradient(135deg,#0d9488,#1d4ed8);color:#fff;border-radius:14px;padding:16px;box-shadow:0 2px 8px #0d94882e;margin-bottom:14px}.greeting-text[data-v-7e47306f]{font-size:20px;font-weight:700}.greeting-sub[data-v-7e47306f]{font-size:13px;opacity:.85;margin-top:4px}.section-header[data-v-7e47306f]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.section-title[data-v-7e47306f]{font-size:13px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.section-sub[data-v-7e47306f]{font-size:12px;color:#94a3b8}.see-all-link[data-v-7e47306f]{font-size:13px;color:#0d9488;text-decoration:none;font-weight:600}.child-compact-list[data-v-7e47306f]{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}.child-compact-card[data-v-7e47306f]{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000d;text-decoration:none;color:inherit;cursor:pointer;transition:box-shadow .15s,transform .1s;overflow:hidden}.child-compact-card[data-v-7e47306f]:active{transform:scale(.985)}.compact-accent[data-v-7e47306f]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--hue, 200),55%,58%);border-radius:2px 0 0 2px;margin:-12px 0 -12px -14px}.compact-avatar[data-v-7e47306f]{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.compact-info[data-v-7e47306f]{flex:1;min-width:0}.compact-name[data-v-7e47306f]{font-size:14px;font-weight:700;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-sub[data-v-7e47306f]{font-size:11px;color:#94a3b8;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-metrics[data-v-7e47306f]{display:flex;align-items:center;gap:8px;flex-shrink:0}.compact-metric[data-v-7e47306f]{display:flex;flex-direction:column;align-items:center}.metric-value[data-v-7e47306f]{font-size:15px;font-weight:700;color:#1e293b;line-height:1}.metric-label[data-v-7e47306f]{font-size:10px;color:#9ca3af;margin-top:2px}.metric-divider[data-v-7e47306f]{width:1px;height:28px;background:#e2e8f0;flex-shrink:0}.metric-green[data-v-7e47306f]{color:#16a34a}.metric-amber[data-v-7e47306f]{color:#d97706}.metric-red[data-v-7e47306f]{color:#dc2626}.compact-chevron[data-v-7e47306f]{width:16px;height:16px;stroke:#94a3b8;flex-shrink:0}.lesson-row[data-v-7e47306f]{display:flex;align-items:center;gap:0;padding:10px 14px;border-bottom:1px solid #f1f5f9}.lesson-row[data-v-7e47306f]:last-child{border-bottom:none}.lesson-accent[data-v-7e47306f]{width:3px;align-self:stretch;flex-shrink:0;background:hsl(var(--hue, 200),55%,58%);border-radius:2px;margin-right:10px}.lesson-body[data-v-7e47306f]{flex:1;min-width:0}.lesson-subject[data-v-7e47306f]{font-size:13px;font-weight:600;color:#1e293b}.lesson-time[data-v-7e47306f]{font-size:11px;color:#94a3b8;margin-top:2px}.lesson-child-tag[data-v-7e47306f]{font-size:11px;color:#64748b;background:#f1f5f9;padding:2px 7px;border-radius:10px;flex-shrink:0;margin-left:8px}.result-row[data-v-7e47306f]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #f1f5f9}.result-row[data-v-7e47306f]:last-child{border-bottom:none}.result-avatar[data-v-7e47306f]{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.result-info[data-v-7e47306f]{flex:1;min-width:0}.result-subject[data-v-7e47306f]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-child[data-v-7e47306f]{font-size:11px;color:#94a3b8;margin-top:1px}.child-list[data-v-72a1fbf1]{display:flex;flex-direction:column;gap:10px}.child-card[data-v-72a1fbf1]{display:flex;overflow:hidden;border-radius:14px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #0000000f;text-decoration:none;color:inherit;transition:box-shadow .15s,transform .1s}.child-card[data-v-72a1fbf1]:active{transform:scale(.98)}.child-card-accent[data-v-72a1fbf1]{width:5px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.child-card-body[data-v-72a1fbf1]{flex:1;padding:14px 14px 12px;min-width:0}.child-card-top[data-v-72a1fbf1]{display:flex;align-items:center;gap:12px}.child-avatar[data-v-72a1fbf1]{width:40px;height:40px;border-radius:50%;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0}.child-name[data-v-72a1fbf1]{font-size:15px;font-weight:700;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.child-chevron[data-v-72a1fbf1]{width:18px;height:18px;stroke:#94a3b8;flex-shrink:0}.child-card-stats[data-v-72a1fbf1]{display:flex;gap:8px;margin-top:10px;padding-left:52px}.stat-pill[data-v-72a1fbf1]{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 8px;border-radius:8px;background:#f1f5f9;color:#475569}.stat-pill svg[data-v-72a1fbf1]{flex-shrink:0}.stat-good[data-v-72a1fbf1]{background:#dcfce7;color:#166534}.stat-good svg[data-v-72a1fbf1]{stroke:#166534}.stat-ok[data-v-72a1fbf1]{background:#fef9c3;color:#854d0e}.stat-ok svg[data-v-72a1fbf1]{stroke:#854d0e}.stat-low[data-v-72a1fbf1]{background:#fee2e2;color:#991b1b}.stat-low svg[data-v-72a1fbf1]{stroke:#991b1b}.class-hero[data-v-83323353]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent[data-v-83323353]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-83323353]{flex:1;padding:16px}.action-grid[data-v-83323353]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}@media (max-width: 420px){.action-grid[data-v-83323353]{grid-template-columns:1fr 1fr}}.action-tile[data-v-83323353]{display:flex;flex-direction:column;align-items:flex-start;padding:14px 14px 12px;border-radius:14px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000f;cursor:pointer;text-align:left;transition:box-shadow .15s,transform .1s}.action-tile[data-v-83323353]:active{transform:scale(.97)}.action-tile-icon[data-v-83323353]{width:32px;height:32px;border-radius:8px;background:#f0fdfa;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.action-tile-icon svg[data-v-83323353]{width:16px;height:16px;stroke:#0d9488}.action-tile-label[data-v-83323353]{font-size:14px;font-weight:700;color:#1e293b}.action-tile-sub[data-v-83323353]{font-size:12px;color:#6b7280;margin-top:2px}.year-accordion-header[data-v-83323353]{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg2);border:none;cursor:pointer;font-size:14px;text-align:left;color:var(--ink)}.year-accordion-header[data-v-83323353]:active{background:#f1f5f9}.prev-years-toggle[data-v-83323353]{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg2);border:1px solid #e2e8f0;border-radius:12px;cursor:pointer;font-size:14px;font-weight:600;color:#475569;text-align:left}.prev-years-toggle[data-v-83323353]:active{background:#f1f5f9}.hist-chevron[data-v-83323353]{width:16px;height:16px;stroke:#94a3b8;flex-shrink:0;transition:transform .2s}.hist-chevron.open[data-v-83323353]{transform:rotate(180deg)}.subject-group-header[data-v-83323353]{display:flex;align-items:center;justify-content:space-between;padding:6px 0;font-weight:600;font-size:13px;color:#1e293b}.score-row[data-v-83323353]{display:flex;align-items:center;gap:8px;padding:6px 10px 6px 0;margin-top:4px;border-radius:8px;background:var(--bg);overflow:hidden}.score-row-accent[data-v-83323353]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--shue, 200),50%,65%);border-radius:4px 0 0 4px}.convo-list[data-v-9b77609e]{display:flex;flex-direction:column}.convo-row[data-v-9b77609e]{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #f1f5f9;cursor:pointer;position:relative}.convo-row[data-v-9b77609e]:active{background:#f8fafc}.convo-avatar[data-v-9b77609e]{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#0d9488,#1d4ed8);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.convo-body[data-v-9b77609e]{flex:1;min-width:0}.convo-header-row[data-v-9b77609e]{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.convo-name[data-v-9b77609e]{font-size:14px;font-weight:600;color:var(--ink, #1e293b)}.convo-time[data-v-9b77609e]{font-size:11px;color:#9ca3af;flex-shrink:0}.convo-preview[data-v-9b77609e]{font-size:13px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.convo-preview.unread[data-v-9b77609e]{color:var(--ink, #1e293b);font-weight:500}.unread-badge[data-v-9b77609e]{background:#0d9488;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px;flex-shrink:0}.convo-section[data-v-ebbfdbd1]{position:fixed;top:0;left:0;right:0;bottom:72px;display:flex;flex-direction:column;background:#f8fafc;z-index:10;overflow:hidden}.convo-top-bar[data-v-ebbfdbd1]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #e2e8f0;flex-shrink:0}.convo-peer-name[data-v-ebbfdbd1]{font-size:15px;font-weight:700;color:var(--ink, #1e293b)}.messages-area[data-v-ebbfdbd1]{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:4px}.date-divider[data-v-ebbfdbd1]{text-align:center;font-size:11px;color:#9ca3af;font-weight:500;margin:12px 0 6px}.bubble-row[data-v-ebbfdbd1]{display:flex}.bubble-row.mine[data-v-ebbfdbd1]{justify-content:flex-end}.bubble-row.theirs[data-v-ebbfdbd1]{justify-content:flex-start}.bubble[data-v-ebbfdbd1]{max-width:75%;padding:9px 12px;border-radius:18px;line-height:1.4}.bubble-mine[data-v-ebbfdbd1]{background:#0d9488;color:#fff;border-bottom-right-radius:4px}.bubble-theirs[data-v-ebbfdbd1]{background:#fff;color:var(--ink, #1e293b);border-bottom-left-radius:4px}.bubble-text[data-v-ebbfdbd1]{font-size:14px}.bubble-time[data-v-ebbfdbd1]{font-size:10px;margin-top:3px;opacity:.65;text-align:right}.bubble-theirs .bubble-time[data-v-ebbfdbd1]{text-align:left}.reply-bar[data-v-ebbfdbd1]{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid #e2e8f0;background:#fff;flex-shrink:0}.reply-input[data-v-ebbfdbd1]{flex:1;border:1.5px solid #e2e8f0;border-radius:20px;padding:8px 14px;font-size:14px;resize:none;outline:none;line-height:1.4;max-height:120px;overflow-y:auto;font-family:inherit;background:#f8fafc;transition:border-color .15s}.reply-input[data-v-ebbfdbd1]:focus{border-color:#0d9488;background:#fff}.send-btn[data-v-ebbfdbd1]{width:38px;height:38px;border-radius:50%;background:#0d9488;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}.send-btn[data-v-ebbfdbd1]:disabled{opacity:.4;cursor:default}.send-btn[data-v-ebbfdbd1]:not(:disabled):active{background:#0f766e}.class-hero[data-v-63f07854]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent[data-v-63f07854]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-63f07854]{flex:1;padding:14px 16px}.course-list[data-v-63f07854]{display:flex;flex-direction:column;gap:8px;margin-top:12px}.course-card[data-v-63f07854]{display:flex;overflow:hidden;border-radius:12px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000d;cursor:pointer;text-align:left;width:100%;transition:box-shadow .15s,transform .1s}.course-card[data-v-63f07854]:active{transform:scale(.98)}.course-card-accent[data-v-63f07854]{width:5px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.course-card-body[data-v-63f07854]{flex:1;padding:12px 14px;display:flex;align-items:center;gap:10px}.course-name[data-v-63f07854]{font-size:14px;font-weight:700;color:#1e293b}.course-chevron[data-v-63f07854]{width:16px;height:16px;stroke:#94a3b8;flex-shrink:0}.class-hero[data-v-042df631]{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent[data-v-042df631]{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body[data-v-042df631]{flex:1;padding:16px}.detail-section[data-v-042df631]{margin-top:10px;padding:14px}.section-title[data-v-042df631]{font-size:13px;font-weight:700;color:#1e293b;margin-bottom:8px;text-transform:uppercase;letter-spacing:.3px}.score-row[data-v-042df631]{display:flex;align-items:center;gap:8px;padding:8px 10px 8px 0;margin-top:4px;border-radius:8px;background:var(--bg);overflow:hidden}.score-row-accent[data-v-042df631]{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--shue, 200),50%,65%);border-radius:4px 0 0 4px}.report-card-wrapper[data-v-ebd9b722]{max-width:680px;margin:0 auto;padding-bottom:40px}.report-card[data-v-ebd9b722]{background:#fff;border-radius:12px;box-shadow:var(--shadow);overflow:hidden;margin-top:12px}.report-card-toolbar[data-v-ebd9b722]{display:flex;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.rc-header[data-v-ebd9b722]{background:var(--accent);color:#fff;padding:20px 20px 16px}.rc-title[data-v-ebd9b722]{font-size:20px;font-weight:700;letter-spacing:.04em}.rc-school[data-v-ebd9b722]{font-size:14px;margin-top:4px;opacity:.9}.rc-section[data-v-ebd9b722]{padding:14px 20px;border-bottom:1px solid var(--border)}.rc-section[data-v-ebd9b722]:last-child{border-bottom:none}.rc-section-title[data-v-ebd9b722]{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--muted);margin-bottom:8px;text-transform:uppercase}.rc-row[data-v-ebd9b722]{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.rc-name[data-v-ebd9b722]{font-size:18px;font-weight:700}.rc-score-row[data-v-ebd9b722]{display:flex;justify-content:space-between;padding:2px 0 2px 12px}.rc-summary[data-v-ebd9b722]{font-size:15px;background:var(--bg2)}.progress-card[data-v-2d0cfe6b]{padding:14px 16px;display:flex;flex-direction:column;gap:14px}.owl-row[data-v-2d0cfe6b]{display:flex;align-items:center;gap:14px}.owl-emoji[data-v-2d0cfe6b]{font-size:40px;line-height:1;flex-shrink:0}.owl-message[data-v-2d0cfe6b]{display:flex;flex-direction:column;gap:6px}.motivation-text[data-v-2d0cfe6b]{font-size:13px;font-weight:500;color:var(--ink, #1e293b);line-height:1.4}.streak-badge[data-v-2d0cfe6b]{display:inline-block;font-size:13px;font-weight:700;color:#ea580c}.streak-none[data-v-2d0cfe6b]{font-size:12px;color:#9ca3af}.stat-pair[data-v-2d0cfe6b]{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-tile[data-v-2d0cfe6b]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:4px}.stat-number[data-v-2d0cfe6b]{font-size:26px;font-weight:800;line-height:1}.stat-number.teal[data-v-2d0cfe6b]{color:#0d9488}.stat-number.blue[data-v-2d0cfe6b]{color:#1d4ed8}.stat-name[data-v-2d0cfe6b]{font-size:11px;color:#6b7280;font-weight:500;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.mini-bar-track[data-v-2d0cfe6b]{height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.mini-bar-fill[data-v-2d0cfe6b]{height:100%;border-radius:3px;transition:width .5s ease}.mini-bar-fill.att[data-v-2d0cfe6b]{background:#0d9488}.mini-bar-fill.score[data-v-2d0cfe6b]{background:#1d4ed8}.stat-goal-label[data-v-2d0cfe6b]{font-size:11px;color:#6b7280;margin-top:2px}.lesson-row[data-v-2d0cfe6b]{padding-left:0;overflow:hidden;flex-direction:row!important;align-items:stretch!important}.lesson-accent[data-v-2d0cfe6b]{width:4px;align-self:stretch;flex-shrink:0;border-radius:0;background:hsl(var(--hue, 200),55%,55%);margin-right:10px}.lesson-day-chip[data-v-2d0cfe6b]{font-size:11px!important;flex-shrink:0}.pill.chip-today[data-v-2d0cfe6b]{background:#0d94881f;border-color:#0d948859;color:#0d9488}.pill.chip-soon[data-v-2d0cfe6b]{background:#fef3c7;border-color:#92400e40;color:#92400e}.tab-bar[data-v-2d0cfe6b]{display:flex;align-items:center;gap:4px}.tab-btn[data-v-2d0cfe6b]{padding:5px 12px;font-size:12px;font-weight:600;border-radius:999px;border:1px solid #e2e8f0;background:transparent;color:var(--muted, #64748b);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.tab-btn.active[data-v-2d0cfe6b]{background:#0ea5a31a;border-color:#0ea5a34d;color:var(--accent, #0d9488)}.header-card[data-v-4adb8c98]{background:linear-gradient(135deg,var(--teal, #0d9488) 0%,var(--blue, #1d4ed8) 100%);color:#fff;border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px}.header-main[data-v-4adb8c98]{display:flex;flex-direction:column;gap:3px}.header-title[data-v-4adb8c98]{font-size:22px;font-weight:800;letter-spacing:-.3px}.header-sub[data-v-4adb8c98]{font-size:13px;opacity:.8}.header-stats[data-v-4adb8c98]{display:flex;gap:10px}.stat-chip[data-v-4adb8c98]{background:#ffffff2e;border-radius:999px;padding:4px 12px;display:flex;flex-direction:column;align-items:center;min-width:56px}.stat-num[data-v-4adb8c98]{font-size:16px;font-weight:800;line-height:1.2}.stat-lbl[data-v-4adb8c98]{font-size:10px;opacity:.8;text-transform:uppercase;letter-spacing:.06em}.admin-row[data-v-4adb8c98]{display:flex;align-items:center;gap:5px;font-size:12px;opacity:.85;border-top:1px solid rgba(255,255,255,.2);padding-top:8px}.subject-grid[data-v-4adb8c98]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.subject-card[data-v-4adb8c98]{border-radius:12px;padding:11px 12px;background:hsl(var(--accent-hue, 200),60%,96%);border:1px solid hsl(var(--accent-hue, 200),40%,88%);display:flex;flex-direction:column;gap:7px;min-height:68px}.subject-name[data-v-4adb8c98]{font-size:12px;font-weight:700;color:hsl(var(--accent-hue, 200),50%,30%);line-height:1.3}.subject-teacher[data-v-4adb8c98]{display:flex;align-items:center;gap:5px;font-size:11px;color:hsl(var(--accent-hue, 200),40%,40%)}.teacher-dot[data-v-4adb8c98]{width:20px;height:20px;border-radius:50%;background:hsl(var(--accent-hue, 200),50%,85%);color:hsl(var(--accent-hue, 200),50%,30%);font-size:8px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;text-transform:uppercase}.avatar-grid[data-v-4adb8c98]{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 6px}.avatar-bubble-wrap[data-v-4adb8c98]{display:flex;flex-direction:column;align-items:center;gap:5px;padding:6px 2px;border-radius:12px}.avatar-bubble[data-v-4adb8c98]{width:52px;height:52px;border-radius:50%;background:#0ea5a31f;border:1.5px solid rgba(14,165,163,.22);color:var(--accent, #0d9488);font-size:14px;font-weight:800;display:flex;align-items:center;justify-content:center;text-transform:uppercase;letter-spacing:.5px}.avatar-label[data-v-4adb8c98]{font-size:11px;font-weight:500;color:var(--ink, #1e293b);max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.sched-header[data-v-26b733dc]{margin-bottom:16px}.sched-header h1[data-v-26b733dc]{font-size:1.3rem;font-weight:800;color:#1e293b;margin:0 0 10px}.sched-controls[data-v-26b733dc]{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.pill-toggle[data-v-26b733dc]{display:flex;background:#f1f5f9;border-radius:999px;padding:3px;gap:2px}.pill-toggle button[data-v-26b733dc]{padding:5px 16px;border-radius:999px;border:none;background:none;color:#64748b;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s}.pill-toggle button.active[data-v-26b733dc]{background:#fff;color:#0d9488;box-shadow:0 1px 3px #0000001a}.week-nav[data-v-26b733dc]{display:flex;align-items:center;gap:6px}.week-btn[data-v-26b733dc]{width:30px;height:30px;border-radius:50%;border:1.5px solid #e2e8f0;background:#fff;color:#475569;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.week-label[data-v-26b733dc]{font-size:.8rem;font-weight:600;color:#475569;min-width:110px;text-align:center}.sched-error[data-v-26b733dc]{color:#b91c1c;font-size:.85rem;margin-top:8px}.att-line[data-v-72c2a0c8]{display:flex;align-items:center;gap:6px;font-size:13px;margin-bottom:12px}.att-icon[data-v-72c2a0c8]{font-size:15px}.subject-card[data-v-72c2a0c8]{width:100%;text-align:left;padding:12px 14px;cursor:pointer;border:none;transition:box-shadow .15s}.subject-card[data-v-72c2a0c8]:active{box-shadow:0 0 0 2px var(--accent, #0d9488)}.subject-card-row[data-v-72c2a0c8]{display:flex;align-items:flex-start;gap:12px}.subject-card-left[data-v-72c2a0c8]{flex:1;min-width:0}.subject-title[data-v-72c2a0c8]{font-size:14px;font-weight:700;color:var(--ink, #1e293b);margin-bottom:6px}.category-rows[data-v-72c2a0c8]{display:flex;flex-direction:column;gap:3px}.cat-row[data-v-72c2a0c8]{display:flex;align-items:center;gap:6px;font-size:12px}.cat-name[data-v-72c2a0c8]{color:#6b7280;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-avg[data-v-72c2a0c8]{font-size:11px;font-weight:700;padding:1px 6px;border-radius:6px;flex-shrink:0}.subject-avg-chip[data-v-72c2a0c8]{flex-shrink:0;width:52px;height:52px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.avg-number[data-v-72c2a0c8]{font-size:18px;font-weight:800;line-height:1}.avg-label[data-v-72c2a0c8]{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;opacity:.7}.mini-bar-track[data-v-72c2a0c8]{height:4px;background:#e5e7eb;border-radius:2px;overflow:hidden}.mini-bar-fill[data-v-72c2a0c8]{height:100%;background:#0d9488;border-radius:2px;transition:width .4s ease}.tab-bar[data-v-72c2a0c8]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.tab-btn[data-v-72c2a0c8]{padding:5px 14px;font-size:12px;font-weight:600;border-radius:999px;border:1px solid #e2e8f0;background:transparent;color:var(--muted, #64748b);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.tab-btn.active[data-v-72c2a0c8]{background:#0ea5a31a;border-color:#0ea5a34d;color:var(--accent, #0d9488)}.subject-header[data-v-edbe0bb3]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:4px}.big-chip[data-v-edbe0bb3]{flex-shrink:0;width:60px;height:60px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}.big-chip-num[data-v-edbe0bb3]{font-size:20px;font-weight:800;line-height:1}.big-chip-lbl[data-v-edbe0bb3]{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;opacity:.7}.cat-section[data-v-edbe0bb3]{padding:12px 14px}.cat-header[data-v-edbe0bb3]{display:flex;align-items:center;justify-content:space-between;gap:8px}.cat-title[data-v-edbe0bb3]{font-size:13px;font-weight:700;color:var(--ink, #1e293b)}.cat-chip[data-v-edbe0bb3]{font-size:11px;font-weight:700;padding:2px 8px;border-radius:8px;flex-shrink:0}.tab-bar[data-v-c2b7a4d0]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.tab-btn[data-v-c2b7a4d0]{padding:5px 14px;font-size:12px;font-weight:600;border-radius:999px;border:1px solid #e2e8f0;background:transparent;color:var(--muted, #64748b);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.tab-btn.active[data-v-c2b7a4d0]{background:#0ea5a31a;border-color:#0ea5a34d;color:var(--accent, #0d9488)}.course-card[data-v-c2b7a4d0]{display:flex;align-items:stretch;border-radius:14px;overflow:hidden;border:1px solid #e2e8f0;background:#fff;text-align:left;cursor:pointer;transition:box-shadow .15s,transform .1s;box-shadow:0 1px 3px #0000000f;width:100%}.course-card[data-v-c2b7a4d0]:active{transform:scale(.98);box-shadow:0 0 0 2px hsl(var(--accent-hue, 200),60%,75%)}.skeleton-card[data-v-c2b7a4d0]{background:#f1f5f9;border:none;animation:shimmer-c2b7a4d0 1.4s ease infinite;background-image:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0,#f1f5f9 75%);background-size:200% 100%}.course-accent-bar[data-v-c2b7a4d0]{width:5px;flex-shrink:0;background:hsl(var(--accent-hue, 200),55%,60%)}.course-body[data-v-c2b7a4d0]{flex:1;padding:12px 12px 12px 14px;display:flex;flex-direction:column;gap:4px;min-width:0}.course-top[data-v-c2b7a4d0]{display:flex;align-items:center;justify-content:space-between;gap:8px}.course-subject[data-v-c2b7a4d0]{font-size:15px;font-weight:700;color:var(--ink, #1e293b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-arrow[data-v-c2b7a4d0]{color:#94a3b8;flex-shrink:0}.course-meta[data-v-c2b7a4d0]{font-size:12px;color:#6b7280}.course-chips[data-v-c2b7a4d0]{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.course-chip[data-v-c2b7a4d0]{font-size:11px;font-weight:500;padding:2px 8px;border-radius:999px;white-space:nowrap}.course-chip.lesson[data-v-c2b7a4d0]{background:#0ea5a31a;color:#0f766e}.course-chip.task[data-v-c2b7a4d0]{background:#eab3081f;color:#92400e}@keyframes shimmer-c2b7a4d0{0%{background-position:-200% 0}to{background-position:200% 0}}.course-detail-page[data-v-12478a1a]{padding-bottom:8px}.course-hero[data-v-12478a1a]{margin:-16px -16px 16px}.course-hero-strip[data-v-12478a1a]{height:6px;background:hsl(var(--hue, 200),55%,55%)}.course-hero-body[data-v-12478a1a]{padding:14px 16px 16px;background:hsl(var(--hue, 200),40%,97%);border-bottom:1px solid hsl(var(--hue, 200),30%,88%);display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}.back-btn[data-v-12478a1a]{background:none;border:none;padding:2px 0;color:#64748b;font-size:.82rem;cursor:pointer;flex-basis:100%}.course-hero-title[data-v-12478a1a]{flex:1 1 0}.course-hero-title h1[data-v-12478a1a]{font-size:1.25rem;font-weight:700;color:#1e293b;margin:0 0 2px}.course-meta[data-v-12478a1a]{font-size:.82rem;color:#64748b;margin:0}.timetable-btn[data-v-12478a1a]{background:#fff;border:1.5px solid hsl(var(--hue, 200),40%,75%);color:hsl(var(--hue, 200),50%,38%);padding:5px 12px;border-radius:999px;font-size:.8rem;cursor:pointer;white-space:nowrap;align-self:flex-end}.detail-card[data-v-12478a1a]{background:#fff;border-radius:14px;box-shadow:0 1px 4px #00000012;padding:14px 16px;margin-bottom:12px}.detail-card-label[data-v-12478a1a]{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;margin-bottom:10px}.empty-msg[data-v-12478a1a]{font-size:.85rem;color:#94a3b8;margin:0}.class-list[data-v-12478a1a]{display:flex;flex-direction:column;gap:10px}.class-row[data-v-12478a1a]{display:flex;align-items:center;gap:10px}.class-row-day[data-v-12478a1a]{width:38px;height:38px;border-radius:10px;background:hsl(var(--hue, 200),55%,93%);color:hsl(var(--hue, 200),50%,35%);font-size:.65rem;font-weight:700;letter-spacing:.04em;display:flex;align-items:center;justify-content:center;flex-shrink:0}.class-row-info[data-v-12478a1a]{flex:1;min-width:0}.class-row-info strong[data-v-12478a1a]{display:block;font-size:.9rem;color:#1e293b}.class-row-end[data-v-12478a1a]{font-size:.78rem;color:#64748b}.class-row-date[data-v-12478a1a]{font-size:.78rem;color:#94a3b8;white-space:nowrap}.assign-list[data-v-12478a1a]{display:flex;flex-direction:column;gap:10px}.assign-row[data-v-12478a1a]{display:flex;align-items:center;justify-content:space-between;gap:10px}.assign-row-main[data-v-12478a1a]{flex:1;min-width:0}.assign-row-main strong[data-v-12478a1a]{display:block;font-size:.9rem;color:#1e293b}.assign-desc[data-v-12478a1a]{font-size:.78rem;color:#64748b;display:block}.due-chip[data-v-12478a1a]{flex-shrink:0;font-size:.72rem;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}.due-overdue[data-v-12478a1a]{background:#fee2e2;color:#b91c1c}.due-soon[data-v-12478a1a]{background:#fef3c7;color:#92400e}.due-neutral[data-v-12478a1a]{background:#f1f5f9;color:#475569}.score-list[data-v-12478a1a]{display:flex;flex-direction:column;gap:10px}.score-row[data-v-12478a1a]{display:flex;align-items:center;justify-content:space-between;gap:10px}.score-row-info[data-v-12478a1a]{flex:1;min-width:0}.score-row-info strong[data-v-12478a1a]{display:block;font-size:.9rem;color:#1e293b}.score-date[data-v-12478a1a]{font-size:.78rem;color:#94a3b8}.score-chip[data-v-12478a1a]{flex-shrink:0;font-size:.8rem;font-weight:700;padding:3px 10px;border-radius:999px}.error-msg[data-v-12478a1a]{color:#b91c1c;font-size:.85rem;margin-top:8px}.notice-list[data-v-12478a1a]{display:flex;flex-direction:column;gap:10px}.notice-row[data-v-12478a1a]{padding:8px 0;border-bottom:1px solid #f1f5f9}.notice-row[data-v-12478a1a]:last-child{border-bottom:none}.notice-row-content[data-v-12478a1a]{font-size:.88rem;color:#334155;margin:0 0 3px}.notice-row-date[data-v-12478a1a]{font-size:.75rem;color:#94a3b8}.stat-pill[data-v-49830b7e]{display:flex;flex-direction:column;align-items:center;padding:10px 16px;border-radius:10px;min-width:64px}.stat-pill.teal[data-v-49830b7e]{background:#ccfbf1;color:#0f766e}.stat-pill.green[data-v-49830b7e]{background:#dcfce7;color:#15803d}.stat-pill.red[data-v-49830b7e]{background:#fee2e2;color:#b91c1c}.stat-pill.amber[data-v-49830b7e]{background:#fef3c7;color:#b45309}.stat-pill-value[data-v-49830b7e]{font-size:22px;font-weight:800;line-height:1}.stat-pill-label[data-v-49830b7e]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-top:3px;opacity:.8}.month-label[data-v-49830b7e]{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280;margin-bottom:6px}.att-list[data-v-49830b7e]{display:flex;flex-direction:column;gap:4px}.att-row[data-v-49830b7e]{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;background:#f8fafc}.att-row.absent[data-v-49830b7e]{background:#fff5f5}.att-row.late[data-v-49830b7e]{background:#fffbeb}.att-date[data-v-49830b7e]{font-size:13px;font-weight:600;min-width:56px;color:var(--ink, #1e293b)}.att-day[data-v-49830b7e]{font-size:12px;color:#6b7280;flex:1}.att-status-pill[data-v-49830b7e]{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.att-status-pill.present[data-v-49830b7e]{background:#dcfce7;color:#15803d}.att-status-pill.absent[data-v-49830b7e]{background:#fee2e2;color:#b91c1c}.att-status-pill.late[data-v-49830b7e]{background:#fef3c7;color:#b45309}.att-status-pill.excused[data-v-49830b7e]{background:#ede9fe;color:#6d28d9}.convo-list[data-v-11ad694d]{display:flex;flex-direction:column}.convo-row[data-v-11ad694d]{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #f1f5f9;cursor:pointer;position:relative}.convo-row[data-v-11ad694d]:active{background:#f8fafc}.convo-avatar[data-v-11ad694d]{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#0d9488,#1d4ed8);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.convo-body[data-v-11ad694d]{flex:1;min-width:0}.convo-header-row[data-v-11ad694d]{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.convo-name[data-v-11ad694d]{font-size:14px;font-weight:600;color:var(--ink, #1e293b)}.convo-time[data-v-11ad694d]{font-size:11px;color:#9ca3af;flex-shrink:0}.convo-preview[data-v-11ad694d]{font-size:13px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.convo-preview.unread[data-v-11ad694d]{color:var(--ink, #1e293b);font-weight:500}.unread-badge[data-v-11ad694d]{background:#0d9488;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px;flex-shrink:0}.convo-section[data-v-2b514035]{position:fixed;top:0;left:0;right:0;bottom:72px;display:flex;flex-direction:column;background:#f8fafc;z-index:10;overflow:hidden}.convo-top-bar[data-v-2b514035]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#ffffffeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid #e2e8f0;flex-shrink:0}.convo-peer-name[data-v-2b514035]{font-size:15px;font-weight:700;color:var(--ink, #1e293b)}.messages-area[data-v-2b514035]{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:4px}.date-divider[data-v-2b514035]{text-align:center;font-size:11px;color:#9ca3af;font-weight:500;margin:12px 0 6px}.bubble-row[data-v-2b514035]{display:flex}.bubble-row.mine[data-v-2b514035]{justify-content:flex-end}.bubble-row.theirs[data-v-2b514035]{justify-content:flex-start}.bubble[data-v-2b514035]{max-width:75%;padding:9px 12px;border-radius:18px;line-height:1.4}.bubble-mine[data-v-2b514035]{background:#0d9488;color:#fff;border-bottom-right-radius:4px}.bubble-theirs[data-v-2b514035]{background:#fff;color:var(--ink, #1e293b);border-bottom-left-radius:4px}.bubble-text[data-v-2b514035]{font-size:14px}.bubble-time[data-v-2b514035]{font-size:10px;margin-top:3px;opacity:.65;text-align:right}.bubble-theirs .bubble-time[data-v-2b514035]{text-align:left}.reply-bar[data-v-2b514035]{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid #e2e8f0;background:#fff;flex-shrink:0}.reply-input[data-v-2b514035]{flex:1;border:1.5px solid #e2e8f0;border-radius:20px;padding:8px 14px;font-size:14px;resize:none;outline:none;line-height:1.4;max-height:120px;overflow-y:auto;font-family:inherit;background:#f8fafc;transition:border-color .15s}.reply-input[data-v-2b514035]:focus{border-color:#0d9488;background:#fff}.send-btn[data-v-2b514035]{width:38px;height:38px;border-radius:50%;background:#0d9488;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,opacity .15s}.send-btn[data-v-2b514035]:disabled{opacity:.4;cursor:default}.send-btn[data-v-2b514035]:not(:disabled):active{background:#0f766e}:root{color-scheme:light;--bg: #f6f8fb;--bg2: #eef2f7;--ink: #0f172a;--muted: #475569;--accent: #0ea5a3;--accent-ink: #0f766e;--accent2: #1d4ed8;--card: #ffffff;--border: rgba(15, 23, 42, .12);--shadow: 0 1px 0 rgba(15, 23, 42, .05), 0 18px 40px rgba(15, 23, 42, .08);--shadow-tight: 0 1px 0 rgba(15, 23, 42, .05), 0 10px 24px rgba(15, 23, 42, .08);--focus: rgba(14, 165, 163, .32);--danger: #b42318;--danger-bg: #ffe4e8}*{box-sizing:border-box}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;background:radial-gradient(1200px 700px at 12% -20%,#0ea5a32e,#0ea5a300 58%),radial-gradient(900px 520px at 110% 0%,#0f766e24,#0f766e00 55%),linear-gradient(180deg,var(--bg) 0%,var(--bg2) 100%);color:var(--ink);line-height:1.35}a{color:inherit;text-decoration:none}a.router-link-active{color:var(--accent)}.skip-link{position:absolute;left:12px;top:-48px;z-index:300;background:#fff;color:var(--ink);border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-size:12px;font-weight:700}.skip-link:focus,.skip-link:focus-visible{top:10px}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-main h1,.app-main h2{letter-spacing:-.01em}.app-main h1{margin:0;font-size:22px;line-height:1.15}.app-main h2{margin:0;font-size:16px;line-height:1.2}.app-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#ffffffc7;border-bottom:1px solid var(--border);min-height:48px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.header-actions{display:flex;gap:8px;align-items:center}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.02em}.brand-mark{width:18px;height:18px;border-radius:6px;background:radial-gradient(12px 12px at 30% 25%,#fffc,#fff0 55%),linear-gradient(135deg,var(--accent) 0%,var(--accent2) 100%);box-shadow:0 10px 24px #0ea5a338;border:1px solid rgba(255,255,255,.5)}.icon-button{position:relative;line-height:1}.icon-button .status-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;font-size:10px;padding:0 4px}.status-button{gap:0}@keyframes bell-ring{0%,to{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-12deg)}30%{transform:rotate(10deg)}40%{transform:rotate(-8deg)}50%{transform:rotate(6deg)}60%{transform:rotate(-4deg)}70%{transform:rotate(2deg)}80%{transform:rotate(0)}}.bell-ring{transform-origin:50% 2px;animation:bell-ring 1.2s ease-in-out infinite}.status-dot{width:10px;height:10px;border-radius:999px;background:#0f172a40;box-shadow:inset 0 0 0 2px #ffffffb3}.status-dot.online{background:#16a34a}@keyframes pulse-dot{0%,to{box-shadow:0 0 #16a34a80}50%{box-shadow:0 0 0 5px #16a34a00}}.status-dot.pulse{animation:pulse-dot 2s ease-in-out infinite}.status-dot.offline{background:#fb7185}.status-dot.dirty{background:#f59e0b}.status-text{display:none}.status-badge{min-width:18px;height:18px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#0ea5a31f;border:1px solid rgba(14,165,163,.22);color:var(--accent-ink);font-size:11px;font-weight:800}.app-main{flex:1;padding:16px;max-width:760px;width:100%;margin:0 auto}.pill{padding:4px 8px;border-radius:999px;background:#fff;border:1px solid var(--border);font-size:10px;font-weight:600;white-space:nowrap}.pill.warn{background:var(--danger-bg);border-color:#b4231840;color:var(--danger)}.pill.ok{background:#ecfdf3;border-color:#2e7d3247;color:#1f6a2a}.pill.danger{background:#fff1f1;border-color:#c628284d;color:#9f1d1d}.app-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px 16px;background:var(--card);border-top:1px solid var(--border);position:sticky;bottom:0}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:12px;display:block;box-shadow:var(--shadow-tight)}.list{display:grid;gap:10px}.button{display:inline-flex;align-items:center;justify-content:center;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:#ffffffd1;font-weight:600;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform .12s ease,box-shadow .12s ease,background-color .12s ease}.button.primary{background:linear-gradient(135deg,var(--accent) 0%,var(--accent2) 100%);color:#fff;border-color:transparent;box-shadow:0 12px 26px #1d4ed833,0 10px 22px #0ea5a32e}.button.danger{background:#fff1f1;border-color:#c6282859;color:#9f1d1d}.button.tiny{padding:6px 10px;font-size:12px}.button:active{transform:translateY(1px)}.button:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.input{width:100%;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:#ffffffd1}.label{font-size:12px;color:var(--muted)}.status-stack{display:grid;gap:6px;min-height:44px}.status-line{min-height:16px}.status-line.success{color:#0f766e}.list-controls{display:grid;gap:8px}.filter-meta{min-height:16px}.field{display:grid;gap:6px}.select{width:100%;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:#ffffffd1}.row-card{display:flex;justify-content:space-between;align-items:center;gap:8px}.row-card.active{border-color:#0ea5a359;background:#0ea5a30f}.row-actions{display:flex;gap:6px;align-items:center}.segmented{display:inline-flex;gap:6px;padding:4px;border-radius:999px;border:1px solid var(--border);background:#ffffff8c}.segmented .button{border-radius:999px;background:transparent}.segmented .button.active{background:#0ea5a31a;border-color:#0ea5a34d}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.code-block{margin:8px 0 0;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:#0f172a05;overflow:auto;font-size:12px;line-height:1.35}.term-score-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border)}.term-score-summary::-webkit-details-marker{display:none}.score-input{max-width:120px}.status-success{color:#2e7d32}.status-queued{color:#b36b00}.status-error{color:#c62828}.form-grid{display:grid;gap:12px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-actions{display:flex;gap:8px;margin-top:8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--card);border-radius:14px;padding:20px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow)}.modal h2{margin:0 0 16px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.dashboard-card{text-align:center;cursor:pointer}.dashboard-card .count{font-size:24px;font-weight:700;color:var(--accent)}.inline-list{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:4px 10px;border-radius:999px;background:#0f172a0f;border:1px solid rgba(15,23,42,.08);font-size:12px;font-weight:600}.chip.removable{cursor:pointer}.chip.removable:after{content:" ×"}.bottom-nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:0;background:#ffffffdb;border-top:1px solid var(--border);position:fixed;bottom:0;left:0;right:0;z-index:50;box-shadow:0 -12px 28px #0f172a14;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.bottom-nav a{display:flex;flex-direction:column;align-items:center;padding:10px 6px;font-size:11px;font-weight:600;color:var(--muted);text-decoration:none;gap:2px;border-radius:14px;margin:6px;border:1px solid transparent;position:relative}.nav-msg-badge{position:absolute;top:6px;right:4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#e11d48;color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;line-height:1;pointer-events:none}.bottom-nav a.router-link-active{color:var(--accent);background:#0ea5a31a;border:1px solid rgba(14,165,163,.18)}.bottom-nav-more{display:flex;flex-direction:column;align-items:center;padding:10px 6px;font-size:11px;font-weight:600;color:var(--muted);text-decoration:none;gap:2px;border-radius:14px;margin:6px;border:1px solid transparent;background:none;cursor:pointer;position:relative}.bottom-nav-more:hover{color:var(--ink)}.bottom-nav .nav-icon{width:20px;height:20px}.nav-badge{position:absolute;top:2px;right:2px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}.has-bottom-nav .app-main{padding-bottom:72px}.section-header{display:flex;justify-content:space-between;align-items:center;gap:8px}.timeline-item{border-left:3px solid var(--border);padding-left:12px;padding-bottom:12px}.timeline-item:last-child{padding-bottom:0}.offline-badge{padding:8px 12px;background:#0f172a0a;border:1px solid var(--border);border-radius:8px;font-size:12px;color:var(--muted);text-align:center}.offline-global-banner{padding:6px 12px;background:#1e293b;color:#e2e8f0;font-size:12px;text-align:center;border-bottom:1px solid rgba(255,255,255,.08)}.error-toast{position:fixed;top:52px;left:16px;right:16px;background:var(--danger);color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;font-weight:600;z-index:200;cursor:pointer;text-align:center}.pwa-install-banner{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#0ea5a314;border-bottom:1px solid rgba(14,165,163,.18);font-size:13px;gap:8px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a6b;z-index:110;display:flex;align-items:flex-end;justify-content:center;padding:12px}.sheet{width:100%;max-width:560px;background:#fffffff0;border:1px solid rgba(255,255,255,.6);border-radius:16px;box-shadow:var(--shadow);padding:14px}.sheet-header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.sheet-header h2{margin:0;font-size:16px;letter-spacing:-.01em}.sheet-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.kv{border:1px solid var(--border);border-radius:14px;padding:10px 12px;background:#0f172a05}.kv-value{margin-top:6px;font-size:13px;font-weight:700}.sheet-actions{display:flex;gap:8px;margin-top:12px}.sheet-message{margin-top:10px;border-top:1px solid var(--border);padding-top:10px;font-size:13px}:where(a,button,input,select,textarea):focus{outline:none}:where(a,button,input,select,textarea):focus-visible{box-shadow:0 0 0 3px var(--focus)}@media (prefers-reduced-motion: reduce){.button{transition:none}}@media (max-width: 420px){.app-header{align-items:flex-start;flex-wrap:wrap;gap:6px;padding:8px 10px}.brand{min-height:28px}.app-main{padding:12px}.header-actions{gap:6px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.status-text{font-size:11px}.section-header{align-items:flex-start;flex-direction:column}.form-row{grid-template-columns:1fr;gap:8px}.row-card{align-items:flex-start;flex-direction:column}.sheet-grid{grid-template-columns:1fr}.sheet-actions{flex-wrap:wrap}.bottom-nav a{margin:4px 3px;padding:8px 4px}}.skeleton{background:linear-gradient(90deg,var(--border) 25%,rgba(15,23,42,.05) 50%,var(--border) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:6px;min-height:16px}.skeleton-card{height:60px;border-radius:12px}.skeleton-line{height:14px;width:60%;margin-bottom:6px}.skeleton-line.short{width:40%}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}@media print{.app-header,.bottom-nav,.pwa-install-banner,.offline-global-banner,.error-toast,.no-print{display:none!important}.app-main{padding:0!important}.app-shell{background:#fff!important}.report-card{box-shadow:none!important;border:1px solid #ccc!important;border-radius:0!important}}.section-title{font-size:13px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.greeting-card{background:linear-gradient(135deg,#0d9488,#1d4ed8);color:#fff;border-radius:14px;padding:16px;box-shadow:0 2px 8px #0d94882e;margin-bottom:14px}.greeting-text{font-size:20px;font-weight:700}.greeting-sub{font-size:13px;opacity:.85;margin-top:4px}.hist-chevron{width:16px;height:16px;stroke:#94a3b8;flex-shrink:0;transition:transform .2s}.hist-chevron.open{transform:rotate(180deg)}.class-hero{display:flex;overflow:hidden;border-radius:16px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 4px #00000012;margin-bottom:4px}.class-hero-accent{width:6px;flex-shrink:0;align-self:stretch;background:hsl(var(--hue, 200),55%,58%)}.class-hero-body{flex:1;padding:16px}.action-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.action-tile{display:flex;flex-direction:column;align-items:flex-start;padding:14px 14px 12px;border-radius:14px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000f;cursor:pointer;text-align:left;text-decoration:none;color:inherit;transition:box-shadow .15s,transform .1s}.action-tile:active{transform:scale(.97)}.action-tile-icon{width:32px;height:32px;border-radius:8px;background:#f0fdfa;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.action-tile-icon svg{width:16px;height:16px;stroke:#0d9488}.action-tile-label{font-size:14px;font-weight:700;color:#1e293b}.action-tile-sub{font-size:12px;color:#6b7280;margin-top:2px}.person-card{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid #e2e8f0;background:#fff;box-shadow:0 1px 3px #0000000d;text-decoration:none;color:inherit;overflow:hidden;transition:box-shadow .15s,transform .1s}.person-card:active{transform:scale(.985)}.person-accent{width:4px;align-self:stretch;flex-shrink:0;background:hsl(var(--hue, 200),55%,58%);border-radius:2px 0 0 2px;margin:-12px 0 -12px -14px}.person-avatar{width:36px;height:36px;border-radius:50%;flex-shrink:0;background:hsl(var(--hue, 200),45%,92%);color:hsl(var(--hue, 200),55%,38%);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700}.person-info{flex:1;min-width:0}.person-name{font-size:14px;font-weight:700;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-sub{font-size:11px;color:#94a3b8;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-chevron{width:16px;height:16px;stroke:#94a3b8;flex-shrink:0}@media (max-width: 420px){.action-grid{grid-template-columns:1fr 1fr}}.score-chip{flex-shrink:0;min-width:38px;text-align:center;font-size:14px;font-weight:800;line-height:1;padding:5px 8px;border-radius:8px}.score-chip-good{background:#dcfce7;color:#166534}.score-chip-ok{background:#fef9c3;color:#854d0e}.score-chip-low{background:#fee2e2;color:#991b1b}.score-chip-neutral{background:#f1f5f9;color:#475569}@media (min-width: 1024px){.app-shell.is-admin .bottom-nav{display:none}.app-shell.is-admin.has-bottom-nav .app-main{padding-bottom:16px}.admin-layout-body{display:flex;flex:1;min-height:0;overflow:hidden}.admin-sidebar{width:220px;flex-shrink:0;height:100%;overflow-y:auto;background:#ffffffc7;border-right:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:8px 8px 20px;display:flex;flex-direction:column;gap:1px}.admin-sidebar .nav-icon{width:16px;height:16px;flex-shrink:0}.admin-sidebar a,.admin-sidebar .sidebar-nav-btn{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;font-size:13px;font-weight:500;color:var(--muted);text-decoration:none;border:1px solid transparent;transition:background .1s,color .1s;cursor:pointer;background:none;width:100%;text-align:left}.admin-sidebar a:hover{background:#0f172a0d;color:var(--ink)}.admin-sidebar a.router-link-active{color:var(--accent-ink);background:#0ea5a31a;border-color:#0ea5a333;font-weight:600}.sidebar-divider{height:1px;background:var(--border);margin:5px 4px}.sidebar-section-label{font-size:10px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;padding:8px 10px 3px}.admin-layout-body .app-main{flex:1;min-width:0;max-width:960px;margin:0;overflow-y:auto;padding:20px 28px}}@media (max-width: 1023px){.admin-sidebar{display:none}.admin-layout-body{display:contents}}
