.empty-state[data-v-c8bfd8c7]{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-state--default[data-v-c8bfd8c7]{padding:var(--space-8) var(--space-4)}.empty-state--mobile[data-v-c8bfd8c7]{padding:var(--space-6) var(--space-4)}.empty-state--error[data-v-c8bfd8c7]{padding:var(--space-8) var(--space-4)}.empty-state--inline[data-v-c8bfd8c7]{padding:var(--space-4) var(--space-2)}.empty-state__icon[data-v-c8bfd8c7]{color:var(--text-tertiary, #94a3b8);margin-bottom:var(--space-4)}.empty-state--error .empty-state__icon[data-v-c8bfd8c7]{color:var(--color-danger, #ef4444)}.empty-state__icon--brand[data-v-c8bfd8c7]{width:48px;height:48px}.empty-state--mobile .empty-state__icon--brand[data-v-c8bfd8c7]{width:40px;height:40px}.empty-state--inline .empty-state__icon--brand[data-v-c8bfd8c7]{width:32px;height:32px}.empty-state__title[data-v-c8bfd8c7]{margin:0 0 var(--space-2);font-size:var(--text-lg);font-weight:500;color:var(--text-secondary, #64748b)}.empty-state--inline .empty-state__title[data-v-c8bfd8c7]{font-size:var(--text-base)}.empty-state__desc[data-v-c8bfd8c7]{margin:0;font-size:var(--text-sm);color:var(--text-tertiary, #94a3b8);max-width:320px;line-height:var(--line-height-base, 1.5)}.empty-state__action[data-v-c8bfd8c7]{margin-top:var(--space-4)}.form-section[data-v-308f9d7d]{margin-bottom:8px}.form-section__header[data-v-308f9d7d]{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;border:1px solid var(--el-border-color-lighter);border-radius:8px;background:var(--el-fill-color-blank);-webkit-user-select:none;user-select:none}.form-section__header[data-v-308f9d7d]:hover{background:var(--el-fill-color-light)}.form-section__chevron[data-v-308f9d7d]{transition:transform .2s;color:var(--el-text-color-secondary)}.form-section__chevron.is-open[data-v-308f9d7d]{transform:rotate(90deg)}.form-section__title[data-v-308f9d7d]{font-size:13px;font-weight:600;color:var(--el-text-color-primary)}.form-section__badge[data-v-308f9d7d]{margin-left:auto;min-width:18px;height:18px;padding:0 6px;border-radius:9px;font-size:12px;line-height:18px;text-align:center;color:#fff}.form-section__badge.is-error[data-v-308f9d7d]{background:var(--el-color-danger)}.form-section__badge.is-info[data-v-308f9d7d]{background:var(--el-color-info)}.form-section__label[data-v-308f9d7d]{font-size:11px;letter-spacing:.5px;font-weight:600;color:var(--el-color-primary);margin-bottom:10px}.form-section__body[data-v-308f9d7d]{padding:12px 4px 4px}.admin-list-cards[data-v-7dcf7429]{display:grid;gap:var(--space-3)}.alc-card[data-v-7dcf7429]{border-radius:var(--radius-lg)}.alc-card__title[data-v-7dcf7429]{font-size:var(--text-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-2)}.alc-card__fields[data-v-7dcf7429]{display:grid;gap:var(--space-1);margin:0}.alc-field[data-v-7dcf7429]{display:flex;justify-content:space-between;gap:var(--space-3);min-height:28px;align-items:center}.alc-field__label[data-v-7dcf7429]{color:var(--text-secondary);flex-shrink:0}.alc-field__value[data-v-7dcf7429]{text-align:right;color:var(--text-primary);margin:0}.alc-card__actions[data-v-7dcf7429]{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border-color)}.alc-card__actions[data-v-7dcf7429] .el-button{min-height:44px}.alc-empty[data-v-7dcf7429]{text-align:center;color:var(--text-secondary);padding:var(--space-6)}[data-v-7810f66f] .fc{--fc-button-bg-color: var(--el-color-primary, #409eff);--fc-button-border-color: var(--el-color-primary, #409eff);--fc-button-hover-bg-color: var(--el-color-primary-light-3, #66b1ff);--fc-button-hover-border-color: var(--el-color-primary-light-3, #66b1ff);--fc-button-active-bg-color: var(--el-color-primary-dark-2, #337ecc);--fc-button-active-border-color: var(--el-color-primary-dark-2, #337ecc);--fc-today-bg-color: rgba(64, 158, 255, .06)}.dcall[data-v-88cc9d31]{background:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-4);transition:background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.dcall--warning[data-v-88cc9d31]{background:var(--color-warning-soft);border-color:var(--color-warning)}.dcall--critical[data-v-88cc9d31]{background:var(--color-danger-soft);border-color:var(--color-danger);animation:dcall-pulse-88cc9d31 2.4s ease-in-out infinite}.dcall--ack[data-v-88cc9d31]{background:var(--color-info-soft);border-color:var(--color-info)}@keyframes dcall-pulse-88cc9d31{0%,to{box-shadow:var(--shadow-sm)}50%{box-shadow:0 0 0 4px var(--color-danger-soft)}}.dcall__head[data-v-88cc9d31]{display:flex;align-items:flex-start;gap:var(--space-3)}.dcall__mono[data-v-88cc9d31]{flex-shrink:0;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--color-primary);color:#fff;font-size:var(--text-lg);font-weight:var(--font-weight-bold);transition:background-color var(--transition-base)}.dcall--warning .dcall__mono[data-v-88cc9d31]{background:var(--color-warning-darker)}.dcall--critical .dcall__mono[data-v-88cc9d31]{background:var(--color-danger-darker)}.dcall--ack .dcall__mono[data-v-88cc9d31]{background:var(--color-info-darker)}html.dark .dcall--warning .dcall__mono[data-v-88cc9d31]{background:#b45309}html.dark .dcall--critical .dcall__mono[data-v-88cc9d31]{background:#b91c1c}html.dark .dcall--ack .dcall__mono[data-v-88cc9d31]{background:#1d4ed8}.dcall__id[data-v-88cc9d31]{flex:1;min-width:0}.dcall__name[data-v-88cc9d31]{margin:0;font-size:var(--text-2xl);font-weight:var(--font-weight-bold);color:var(--text-primary);line-height:1.2;word-break:break-word}.dcall__sub[data-v-88cc9d31]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-1)}.dcall__room[data-v-88cc9d31]{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;background:var(--neutral-100);color:var(--text-secondary);font-size:var(--text-xs);font-weight:var(--font-weight-medium)}.dcall__wait[data-v-88cc9d31]{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:var(--neutral-100);color:var(--text-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;white-space:nowrap}.dcall__wait-ico[data-v-88cc9d31]{font-size:14px}.dcall__wait--warning[data-v-88cc9d31]{background:var(--color-warning-soft);color:var(--color-warning-darker)}.dcall__wait--critical[data-v-88cc9d31]{background:var(--color-danger-soft);color:var(--color-danger-darker);font-weight:var(--font-weight-bold);font-size:var(--text-base);padding:5px 12px}.dcall__note[data-v-88cc9d31]{margin:var(--space-3) 0 0;padding-left:calc(44px + var(--space-3));color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5}.dcall__foot[data-v-88cc9d31]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-3);padding-left:calc(44px + var(--space-3))}.dcall__status[data-v-88cc9d31]{flex-shrink:0;font-size:var(--text-xs);font-weight:var(--font-weight-medium);padding:2px 8px;border-radius:6px}.dcall__status--pending[data-v-88cc9d31]{background:var(--color-warning-soft);color:var(--color-warning-darker)}.dcall__status--acknowledged[data-v-88cc9d31]{background:var(--color-info-soft);color:var(--color-info-darker)}.dcall__status--completed[data-v-88cc9d31]{background:var(--color-success-soft);color:var(--color-success-darker)}.dcall__status--cancelled[data-v-88cc9d31]{background:var(--neutral-100);color:var(--text-tertiary)}.dcall__action[data-v-88cc9d31]{display:flex;gap:var(--space-2)}@media(max-width:560px){.dcall__note[data-v-88cc9d31],.dcall__foot[data-v-88cc9d31]{padding-left:0}.dcall__foot[data-v-88cc9d31]{flex-direction:column;align-items:stretch}.dcall__status[data-v-88cc9d31]{align-self:flex-start}.dcall__action[data-v-88cc9d31]{flex-direction:column}}@media(prefers-reduced-motion:reduce){.dcall--critical[data-v-88cc9d31]{animation:none}.dcall[data-v-88cc9d31]{transition:none}}.login-page[data-v-b5f78cb8]{box-sizing:border-box;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(32px,6vw,72px) 24px;background:radial-gradient(ellipse 75% 55% at 18% 12%,rgba(90,168,66,.12) 0%,transparent 60%),radial-gradient(ellipse 60% 50% at 88% 90%,rgba(255,222,81,.18) 0%,transparent 60%),#fff9e8;color:var(--text-primary)}.login-shell[data-v-b5f78cb8]{box-sizing:border-box;width:min(100%,980px);display:grid;grid-template-columns:minmax(0,1fr) 396px;gap:clamp(40px,8vw,96px);align-items:center}.login-brand[data-v-b5f78cb8]{display:flex;justify-content:center}.brand-mark[data-v-b5f78cb8]{width:min(100%,440px);aspect-ratio:1 / 1;background:url(/images/login-logo.png) center / contain no-repeat;filter:saturate(.92) contrast(.96) brightness(1.03) drop-shadow(0 6px 18px rgba(120,104,52,.14))}.login-panel[data-v-b5f78cb8]{width:100%}.login-card[data-v-b5f78cb8]{box-sizing:border-box;width:100%;padding:var(--space-5) var(--space-4) var(--space-6);background:var(--surface-color);border-radius:var(--auth-card-radius);box-shadow:var(--auth-card-shadow)}.login-header[data-v-b5f78cb8]{text-align:center;margin-bottom:var(--space-4)}.login-header h2[data-v-b5f78cb8]{margin:0;color:var(--text-primary);font-size:var(--text-2xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}.login-card[data-v-b5f78cb8] .el-form-item{margin-bottom:var(--space-3)}.login-card[data-v-b5f78cb8] .el-form-item__label{padding:0 0 var(--space-1);color:var(--text-primary);font-size:var(--text-base);font-weight:var(--font-weight-semibold);line-height:1.4}.login-card[data-v-b5f78cb8] .el-input__wrapper{min-height:52px;padding:0 var(--space-4);border-radius:var(--radius-md);box-shadow:0 0 0 1px var(--border-color) inset;transition:box-shadow var(--transition-fast)}.login-card[data-v-b5f78cb8] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--brand-primary) inset,0 0 0 2px var(--brand-primary-soft)}.login-card[data-v-b5f78cb8] .el-input__inner{color:var(--text-primary);font-size:var(--text-lg)}.login-card[data-v-b5f78cb8] .el-input__inner::placeholder{color:var(--text-tertiary)}.login-card[data-v-b5f78cb8] .login-button.el-button--primary{--el-button-bg-color: var(--brand-primary);--el-button-border-color: var(--brand-primary);--el-button-hover-bg-color: var(--brand-primary-hover);--el-button-hover-border-color: var(--brand-primary-hover);--el-button-active-bg-color: var(--brand-primary-hover);--el-button-active-border-color: var(--brand-primary-hover);width:100%;min-height:var(--btn-height-lg);border:0;border-radius:var(--radius-md);color:var(--neutral-0);font-size:var(--text-lg);font-weight:var(--font-weight-semibold)}.login-divider[data-v-b5f78cb8]{display:flex;align-items:center;margin:var(--space-5) 0;color:var(--text-tertiary);font-size:var(--text-sm)}.login-divider[data-v-b5f78cb8]:before,.login-divider[data-v-b5f78cb8]:after{content:"";flex:1;height:1px;background:var(--border-color)}.login-divider span[data-v-b5f78cb8]{padding:0 var(--space-3)}.alternate-entry[data-v-b5f78cb8]{box-sizing:border-box;width:fit-content;min-height:var(--btn-height-lg);display:flex;align-items:center;justify-content:center;margin:0 auto;padding:0 var(--space-6);border-radius:var(--radius-md);background:var(--color-info);color:var(--neutral-0);font-size:var(--text-base);font-weight:var(--font-weight-semibold);text-decoration:none;transition:background var(--transition-fast),transform var(--transition-fast)}.alternate-entry[data-v-b5f78cb8]:hover,.alternate-entry[data-v-b5f78cb8]:focus{background:var(--color-info-hover);transform:translateY(-1px)}.login-footer[data-v-b5f78cb8]{width:min(100%,980px);margin-top:clamp(40px,6vw,64px);padding-top:var(--space-5);border-top:1px solid var(--border-color);color:var(--text-tertiary);font-size:var(--text-xs);line-height:var(--line-height-base);text-align:center}.login-footer p[data-v-b5f78cb8]{margin:0}.login-footer .footer-tagline[data-v-b5f78cb8]{margin-bottom:var(--space-1);color:var(--text-primary);font-weight:var(--font-weight-semibold)}@media(max-width:900px){.login-page[data-v-b5f78cb8]{align-items:start;padding:32px 16px}.login-shell[data-v-b5f78cb8]{max-width:432px;grid-template-columns:1fr;gap:24px}.brand-mark[data-v-b5f78cb8]{width:min(100%,280px)}}@media(max-width:420px){.login-page[data-v-b5f78cb8]{padding-right:12px;padding-left:12px}.login-card[data-v-b5f78cb8]{padding:16px 12px 20px}.alternate-entry[data-v-b5f78cb8]{width:100%;padding:0 16px}}@media(prefers-reduced-motion:reduce){.alternate-entry[data-v-b5f78cb8]{transition:none}.alternate-entry[data-v-b5f78cb8]:hover,.alternate-entry[data-v-b5f78cb8]:focus{transform:none}}.pending-actions[data-v-c6bb01f5]{padding:var(--space-4)}.card-title[data-v-c6bb01f5]{font-size:var(--text-base);font-weight:600;color:var(--pt-text-strong);margin:0 0 var(--space-3)}.action-grid[data-v-c6bb01f5]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-3)}.action-tile[data-v-c6bb01f5]{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);background:var(--pt-surface-mute);border:var(--pt-hairline);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.action-tile[data-v-c6bb01f5]:hover{background:var(--pt-surface-mute-soft)}.action-tile.is-empty[data-v-c6bb01f5]{opacity:.85}.tile-count[data-v-c6bb01f5]{font-size:24px;font-weight:700;width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%}.tint-message[data-v-c6bb01f5]{background:var(--pt-tint-message);color:var(--pt-tint-message-fg)}.tint-leave[data-v-c6bb01f5]{background:var(--pt-tint-leave);color:var(--pt-tint-leave-fg)}.tint-calendar[data-v-c6bb01f5]{background:var(--pt-tint-calendar);color:var(--pt-tint-calendar-fg)}.tint-announcement[data-v-c6bb01f5]{background:var(--pt-tint-announcement);color:var(--pt-tint-announcement-fg)}.tile-label[data-v-c6bb01f5]{font-size:var(--text-sm);color:var(--pt-text-muted)}.today-shift[data-v-b8fa4449]{padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.row[data-v-b8fa4449]{display:flex;gap:var(--space-3);align-items:baseline}.label[data-v-b8fa4449]{width:48px;color:var(--pt-text-muted);font-size:var(--text-sm)}.value[data-v-b8fa4449]{flex:1;color:var(--pt-text-strong);font-size:var(--text-base)}.classroom-ops[data-v-e3d457f6]{padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.header[data-v-e3d457f6]{display:flex;justify-content:space-between;align-items:baseline}.title[data-v-e3d457f6]{font-size:var(--text-lg);font-weight:600;color:var(--pt-text-strong)}.meta[data-v-e3d457f6]{font-size:var(--text-sm);color:var(--pt-text-muted)}.kpi-row[data-v-e3d457f6]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-2)}.kpi[data-v-e3d457f6]{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);background:var(--pt-surface-mute);border:var(--pt-hairline);border-radius:var(--radius-md);text-align:left;cursor:pointer}.kpi[data-v-e3d457f6]:hover{background:var(--pt-surface-mute-soft)}.kpi-label[data-v-e3d457f6]{font-size:var(--text-xs);color:var(--pt-text-muted)}.kpi-value[data-v-e3d457f6]{font-size:var(--text-base);font-weight:600;color:var(--pt-text-strong)}.kpi-sub[data-v-e3d457f6]{font-size:var(--text-xs);color:var(--color-warning)}.alert-row[data-v-e3d457f6]{display:flex;gap:var(--space-2);align-items:flex-start;font-size:var(--text-sm)}.alert-label[data-v-e3d457f6]{width:80px;color:var(--pt-text-muted);flex-shrink:0}.alert-content[data-v-e3d457f6]{flex:1;display:flex;gap:var(--space-2);flex-wrap:wrap}.chip[data-v-e3d457f6]{display:inline-flex;align-items:center;padding:2px var(--space-2);border-radius:999px;font-size:var(--text-xs)}.chip.warn[data-v-e3d457f6]{background:var(--color-warning-lighter);color:var(--color-warning)}.chip.happy[data-v-e3d457f6]{background:var(--pt-tint-event);color:var(--pt-tint-event-fg)}.chip.danger[data-v-e3d457f6]{background:var(--color-danger-lighter);color:var(--color-danger)}.quick-links[data-v-3bd72f33]{padding:var(--space-4)}.card-title[data-v-3bd72f33]{font-size:var(--text-base);font-weight:600;color:var(--pt-text-strong);margin:0 0 var(--space-3)}.link-grid[data-v-3bd72f33]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-2)}.link-tile[data-v-3bd72f33]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--pt-surface-mute);border:var(--pt-hairline);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.link-tile[data-v-3bd72f33]:hover{background:var(--pt-surface-mute-soft)}.tile-dot[data-v-3bd72f33]{width:10px;height:10px;border-radius:50%}.tint-message[data-v-3bd72f33]{background:var(--pt-tint-message-fg)}.tint-event[data-v-3bd72f33]{background:var(--pt-tint-event-fg)}.tint-medication[data-v-3bd72f33]{background:var(--pt-tint-medication-fg)}.tint-announcement[data-v-3bd72f33]{background:var(--pt-tint-announcement-fg)}.tint-contact[data-v-3bd72f33]{background:var(--pt-tint-contact-fg)}.tint-activity[data-v-3bd72f33]{background:var(--pt-tint-activity-fg)}.tile-label[data-v-3bd72f33]{font-size:var(--text-sm);color:var(--pt-text-strong)}.portal-home[data-v-a175114e]{display:flex;flex-direction:column;gap:var(--space-4);max-width:1100px;margin:0 auto}.home-header[data-v-a175114e]{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--space-2)}.home-header h2[data-v-a175114e]{margin:0;font-size:var(--text-2xl);font-weight:700;color:var(--pt-text-strong)}.home-header .sub[data-v-a175114e]{margin:4px 0 0;color:var(--pt-text-muted);font-size:var(--text-sm)}.error-banner[data-v-a175114e]{padding:var(--space-3);background:var(--color-danger-lighter);color:var(--color-danger);border-radius:var(--radius-md)}.loading-state[data-v-a175114e]{display:flex;flex-direction:column;gap:var(--space-3)}.skeleton-block[data-v-a175114e]{height:120px;border-radius:var(--radius-md)}.classroom-section[data-v-a175114e]{display:flex;flex-direction:column;gap:var(--space-3)}.empty[data-v-a175114e]{color:var(--pt-text-muted);text-align:center;padding:var(--space-6)}.leave-quota-card[data-v-a175114e]{border-radius:var(--radius-md)}.leave-quota-card .card-header[data-v-a175114e]{font-weight:600;color:var(--pt-text-strong)}.leave-quota-content[data-v-a175114e]{display:flex;flex-direction:column;gap:var(--space-2)}.balance[data-v-a175114e]{display:flex;align-items:baseline;gap:2px}.balance .number[data-v-a175114e]{font-size:var(--text-3xl, 1.875rem);font-weight:700;color:var(--pt-text-strong)}.balance .unit[data-v-a175114e]{font-size:var(--text-lg, 1.125rem);color:var(--pt-text-muted)}.warning-row[data-v-a175114e]{display:flex;align-items:center;gap:var(--space-1);color:var(--color-warning, #e6a23c);font-size:var(--text-sm)}.info-row[data-v-a175114e]{font-size:var(--text-sm);color:var(--pt-text-muted)}.hint[data-v-a175114e]{color:var(--pt-text-muted)}.history-link-row[data-v-a175114e]{margin-top:var(--space-1)}.history-link[data-v-a175114e]{font-size:var(--text-sm);color:var(--el-color-primary);text-decoration:none}.history-link[data-v-a175114e]:hover{text-decoration:underline}.sticky-next[data-v-85d5df30]{position:sticky;top:0;z-index:10;display:flex;gap:12px;align-items:center;padding:12px 16px;margin-bottom:12px;border-radius:6px}.sticky-next--active[data-v-85d5df30]{background:var(--el-color-primary-light-9);cursor:pointer;transition:background-color .15s ease}.sticky-next--active[data-v-85d5df30]:hover{background:var(--el-color-primary-light-8)}.sticky-next--empty[data-v-85d5df30]{background:var(--el-color-success-light-9);cursor:default;justify-content:center;color:var(--el-color-success)}.sticky-next__icon[data-v-85d5df30]{font-size:18px;flex-shrink:0}.sticky-next__detail[data-v-85d5df30]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sticky-next__student[data-v-85d5df30]{margin:0 6px;color:var(--el-text-color-regular)}.sticky-next__text[data-v-85d5df30]{color:var(--el-text-color-regular)}.sticky-next__arrow[data-v-85d5df30]{flex-shrink:0;color:var(--el-color-primary);font-size:13px;font-weight:500}.task-row[data-v-b32c99e1]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.task-row[data-v-b32c99e1]:last-child{border-bottom:none}.task-row--empty[data-v-b32c99e1]{opacity:.6}.task-row__icon[data-v-b32c99e1]{font-size:18px}.task-row__label[data-v-b32c99e1]{font-weight:500}.task-row__count[data-v-b32c99e1]{color:var(--el-color-primary);font-weight:600}.task-row__none[data-v-b32c99e1]{color:var(--el-text-color-secondary);font-size:13px}.task-row__action[data-v-b32c99e1]{margin-left:auto}.slot-card[data-v-b1142789]{margin-bottom:12px}.slot-card--current[data-v-b1142789]{border:2px solid var(--el-color-primary);box-shadow:0 4px 12px #409eff26}.slot-card__header[data-v-b1142789]{display:flex;align-items:center;gap:8px}.slot-card__icon[data-v-b1142789]{font-size:20px}.slot-card__label[data-v-b1142789]{font-weight:600}.slot-card__time[data-v-b1142789]{color:var(--el-text-color-secondary);font-size:13px}.slot-card__empty[data-v-b1142789]{color:var(--el-text-color-secondary);text-align:center;padding:16px 0}.attn-sheet[data-v-04c922c0]{padding:0 16px 24px}.attn-empty[data-v-04c922c0]{padding:40px 0}.attn-row[data-v-04c922c0]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--el-border-color-lighter)}.attn-row[data-v-04c922c0]:last-child{border-bottom:none}.attn-row__name[data-v-04c922c0]{font-weight:500;flex-shrink:0}.attn-error[data-v-04c922c0]{color:var(--el-color-danger);text-align:center;margin-top:12px}.med-sheet[data-v-dbb5b6cf]{padding:0 16px 24px}.med-empty[data-v-dbb5b6cf]{padding:40px 0}.med-row[data-v-dbb5b6cf]{border:1px solid var(--el-border-color-lighter);border-radius:6px;padding:12px;margin-bottom:10px}.med-row__head[data-v-dbb5b6cf]{display:flex;gap:10px;align-items:baseline;margin-bottom:6px}.med-row__student[data-v-dbb5b6cf]{font-weight:500}.med-row__detail[data-v-dbb5b6cf]{color:var(--el-text-color-regular);margin-bottom:8px}.med-row__note[data-v-dbb5b6cf]{color:var(--el-text-color-secondary);font-size:13px}.med-row__actions[data-v-dbb5b6cf]{display:flex;gap:8px}.med-error[data-v-dbb5b6cf]{color:var(--el-color-danger);text-align:center;margin-top:12px}.inc-sheet[data-v-0ec33b58]{padding:16px}.inc-actions[data-v-0ec33b58]{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.inc-error[data-v-0ec33b58]{color:var(--el-color-danger);text-align:center;margin-top:8px}.comm-bar[data-v-c6bc01c5]{margin-bottom:var(--space-3)}.comm-card[data-v-c6bc01c5]{position:relative;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);width:100%;background:var(--pt-surface-card);border:var(--pt-hairline);border-radius:var(--radius-md);cursor:pointer;text-align:left;transition:box-shadow .15s,transform .05s}.comm-card[data-v-c6bc01c5]:hover{box-shadow:var(--pt-elev-2)}.comm-card[data-v-c6bc01c5]:active{transform:scale(.98)}.comm-card.has-unread[data-v-c6bc01c5]{border-left:4px solid var(--color-danger)}.comm-card__icon[data-v-c6bc01c5]{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--pt-tint);color:var(--color-primary);font-size:20px;flex-shrink:0}.comm-card__body[data-v-c6bc01c5]{flex:1;min-width:0}.comm-card__title[data-v-c6bc01c5]{font-size:var(--text-base);font-weight:600;color:var(--text-primary)}.comm-card__sub[data-v-c6bc01c5]{font-size:var(--text-xs);color:var(--pt-text-muted);margin-top:2px}.comm-card__badge[data-v-c6bc01c5]{position:absolute;top:8px;right:12px}.bubble-row[data-v-a269fdb5]{display:flex;margin-bottom:var(--space-3)}.bubble-row.own[data-v-a269fdb5]{justify-content:flex-end}.bubble[data-v-a269fdb5]{max-width:75%;background:var(--pt-surface-card);border-radius:var(--radius-lg);padding:var(--space-2) var(--space-3);box-shadow:var(--pt-elev-1);border:var(--pt-hairline)}.bubble.own[data-v-a269fdb5]{background:var(--color-primary-lighter);border-color:#4f46e526}.bubble.deleted .body[data-v-a269fdb5]{color:var(--pt-text-muted);font-style:italic}.body[data-v-a269fdb5]{margin:0 0 var(--space-1);color:var(--pt-text-strong);white-space:pre-wrap;font-size:var(--text-base);line-height:1.5}.attachments[data-v-a269fdb5]{display:flex;flex-direction:column;gap:2px;margin-top:var(--space-1)}.attachment[data-v-a269fdb5]{font-size:var(--text-xs);color:var(--pt-info-link, var(--color-primary));text-decoration:none}.attachment[data-v-a269fdb5]:hover{text-decoration:underline}.meta[data-v-a269fdb5]{display:flex;gap:var(--space-2);font-size:var(--text-xs);color:var(--pt-text-muted);margin-top:var(--space-1)}.pending-mark[data-v-a269fdb5]{color:var(--color-warning)}.recall-btn[data-v-a269fdb5]{background:none;border:none;cursor:pointer;color:var(--color-danger);font-size:var(--text-xs);padding:0}.composer[data-v-851833e8]{background:var(--pt-surface-card);border-top:var(--pt-hairline);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.file-row[data-v-851833e8]{display:flex;gap:var(--space-2);flex-wrap:wrap}.file-chip[data-v-851833e8]{display:inline-flex;gap:4px;align-items:center;background:var(--pt-surface-mute);padding:2px var(--space-2);border-radius:999px;font-size:var(--text-xs)}.file-chip button[data-v-851833e8]{background:none;border:none;cursor:pointer}.input-row[data-v-851833e8]{display:flex;gap:var(--space-2);align-items:flex-end}textarea[data-v-851833e8]{flex:1;resize:vertical;min-height:60px;padding:var(--space-2);border:1px solid var(--pt-border);border-radius:var(--radius-md);font-family:inherit;font-size:var(--text-base)}.attach-btn[data-v-851833e8]{cursor:pointer;padding:var(--space-2);font-size:18px}.send-btn[data-v-851833e8]{padding:var(--space-2) var(--space-4);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-base)}.send-btn[data-v-851833e8]:disabled{opacity:.5;cursor:not-allowed}.msg-drawer[data-v-acb1d49d]{padding:0 var(--space-2)}.page-header[data-v-acb1d49d]{display:flex;justify-content:flex-end;margin-bottom:var(--space-3)}.thread-list[data-v-acb1d49d]{display:flex;flex-direction:column;gap:var(--space-2)}.thread-row[data-v-acb1d49d]{display:flex;flex-direction:column;gap:4px;text-align:left;padding:var(--space-3);cursor:pointer;width:100%;border:var(--pt-hairline);background:var(--pt-surface-card);border-radius:var(--radius-md)}.row-top[data-v-acb1d49d]{display:flex;justify-content:space-between;align-items:center}.row-mid[data-v-acb1d49d]{font-size:var(--text-sm);color:var(--pt-text-muted)}.row-bot[data-v-acb1d49d]{display:flex;justify-content:space-between;font-size:var(--text-sm);color:var(--pt-text-soft);gap:var(--space-2)}.preview[data-v-acb1d49d]{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.time[data-v-acb1d49d]{color:var(--pt-text-faint);flex-shrink:0}.unread-dot[data-v-acb1d49d]{background:var(--color-danger);color:#fff;padding:0 var(--space-2);border-radius:999px;font-size:var(--text-xs);min-width:20px;text-align:center}.empty[data-v-acb1d49d]{text-align:center;color:var(--pt-text-muted);padding:var(--space-6)}.hint[data-v-acb1d49d]{font-size:var(--text-xs);color:var(--pt-text-muted);margin:4px 0 0}.thread-drawer-header[data-v-acb1d49d]{display:flex;align-items:center;gap:var(--space-3)}.thread-drawer-header .title[data-v-acb1d49d]{display:flex;flex-direction:column;gap:2px;font-size:var(--text-base)}.thread-drawer-header .parent[data-v-acb1d49d]{font-size:var(--text-xs);color:var(--pt-text-muted);font-weight:400}.thread-view[data-v-acb1d49d]{display:flex;flex-direction:column;height:100%}.messages[data-v-acb1d49d]{flex:1;padding:var(--space-3);overflow-y:auto;background:var(--pt-surface-mute)}.load-more[data-v-acb1d49d]{display:block;margin:0 auto var(--space-3);padding:var(--space-1) var(--space-3);background:var(--pt-surface-card);border:var(--pt-hairline);border-radius:999px;cursor:pointer;font-size:var(--text-xs);color:var(--pt-text-muted)}.batch-card[data-v-4bc2ad2e]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;margin:12px 0;cursor:pointer}.left[data-v-4bc2ad2e]{display:flex;align-items:center;gap:12px}.emoji[data-v-4bc2ad2e]{font-size:28px}.title[data-v-4bc2ad2e]{font-weight:600;font-size:15px}.sub[data-v-4bc2ad2e]{font-size:12px;color:var(--el-text-color-secondary)}.btn[data-v-4bc2ad2e]{padding:6px 14px;border:1px solid var(--el-color-primary);background:#fff;color:var(--el-color-primary);border-radius:6px;cursor:pointer}.batch-sheet[data-v-da6714aa]{display:flex;flex-direction:column;gap:12px;padding:0 16px 16px}.header-row[data-v-da6714aa]{display:flex;gap:12px;align-items:center}.table[data-v-da6714aa]{display:flex;flex-direction:column;gap:4px}.table-header[data-v-da6714aa],.table-row[data-v-da6714aa]{display:grid;grid-template-columns:2fr 1fr 1fr 32px;gap:8px;align-items:center;padding:6px 4px}.table-header[data-v-da6714aa]{font-weight:600;border-bottom:1px solid var(--el-border-color-lighter)}.col-num[data-v-da6714aa]{width:100%;padding:6px 8px;border:1px solid var(--el-border-color);border-radius:4px;font-size:16px}.col-name[data-v-da6714aa]{display:flex;flex-direction:column}.col-name .hint[data-v-da6714aa]{font-size:11px;color:var(--el-text-color-secondary)}.status-failed[data-v-da6714aa]{background:var(--el-color-danger-light-9)}.status-failed .failed[data-v-da6714aa]{color:var(--el-color-danger);font-weight:700}.status-ok[data-v-da6714aa]{opacity:.6}.progress[data-v-da6714aa]{text-align:center;color:var(--el-text-color-secondary)}.actions[data-v-da6714aa]{display:flex;justify-content:flex-end;gap:8px}.actions button[data-v-da6714aa]{padding:10px 16px;border-radius:8px;border:1px solid var(--el-border-color);background:#fff;cursor:pointer}.actions button.primary[data-v-da6714aa]{background:var(--el-color-primary);color:#fff;border:none}.actions button.warn[data-v-da6714aa]{background:var(--el-color-warning);color:#fff;border:none}.actions button[data-v-da6714aa]:disabled{opacity:.5;cursor:not-allowed}.class-hub[data-v-75339f1f]{padding:16px;max-width:800px;margin:0 auto}.class-hub__header[data-v-75339f1f]{display:flex;align-items:center;gap:12px;margin-bottom:16px}.class-hub__title[data-v-75339f1f]{margin:0;font-size:20px;font-weight:600}.class-hub__updated[data-v-75339f1f]{color:var(--el-text-color-secondary);font-size:12px;margin-left:auto}.class-hub__empty[data-v-75339f1f]{padding:48px 0}.sticky-month-bar[data-v-88fd21f3]{position:sticky;top:0;z-index:10;background:var(--pt-surface-card);border-bottom:var(--pt-hairline);display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);box-shadow:var(--pt-elev-1)}.sticky-bar__btn[data-v-88fd21f3]{width:36px;height:36px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--pt-text-strong);-webkit-tap-highlight-color:transparent}.sticky-bar__btn[data-v-88fd21f3]:hover{background:var(--pt-surface-mute)}.sticky-bar__label[data-v-88fd21f3]{flex:1;text-align:center;font-weight:600;color:var(--pt-text-strong)}.sticky-bar__today[data-v-88fd21f3]{border:none;background:var(--brand-primary-soft, #eef0fd);color:var(--brand-primary-hover, #4338ca);padding:6px 14px;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background var(--transition-fast)}.sticky-bar__today[data-v-88fd21f3]:hover{background:var(--brand-primary);color:#fff}.sticky-bar-fade-enter-active[data-v-88fd21f3],.sticky-bar-fade-leave-active[data-v-88fd21f3]{transition:opacity .2s ease,transform .2s ease}.sticky-bar-fade-enter-from[data-v-88fd21f3],.sticky-bar-fade-leave-to[data-v-88fd21f3]{opacity:0;transform:translateY(-8px)}.stats-strip[data-v-4fce6e44]{display:flex;align-items:center;gap:var(--space-6);flex-wrap:wrap}.stats-strip__primary[data-v-4fce6e44]{display:flex;align-items:baseline;gap:var(--space-6)}.metric[data-v-4fce6e44]{display:flex;flex-direction:column;gap:2px}.metric__value[data-v-4fce6e44]{font-size:var(--text-4xl);font-weight:700;color:var(--pt-text-strong, var(--text-primary));line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.metric--secondary .metric__value[data-v-4fce6e44]{font-size:var(--text-3xl);font-weight:600;color:var(--pt-text-body, var(--text-primary))}.metric__unit[data-v-4fce6e44]{font-size:.65em;font-weight:500;margin-left:2px;color:var(--pt-text-muted, var(--text-secondary))}.metric__label[data-v-4fce6e44]{font-size:var(--text-sm);color:var(--pt-text-muted, var(--text-secondary));font-weight:500}.stats-strip__chips[data-v-4fce6e44]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-left:auto}.chip[data-v-4fce6e44]{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 8px;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:500;background:var(--neutral-100);color:var(--pt-text-body, var(--text-primary));border:1px solid var(--neutral-200)}.chip__dot[data-v-4fce6e44]{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.chip__value[data-v-4fce6e44]{font-weight:700;font-variant-numeric:tabular-nums;color:var(--pt-text-strong, var(--text-primary))}.chip--warn[data-v-4fce6e44]{background:var(--color-warning-soft);border-color:transparent;color:var(--color-warning-darker)}.chip--danger[data-v-4fce6e44]{background:var(--color-danger-soft);border-color:transparent;color:var(--color-danger-darker)}.chip--info[data-v-4fce6e44]{background:var(--color-info-soft);border-color:transparent;color:var(--color-info-darker)}.stats-strip__clean[data-v-4fce6e44]{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--color-success-darker);margin-left:auto}.clean-dot[data-v-4fce6e44]{width:8px;height:8px;border-radius:50%;background:var(--color-success);box-shadow:0 0 0 3px var(--color-success-soft)}@media(max-width:767.98px){.stats-strip[data-v-4fce6e44]{flex-direction:column;align-items:stretch;gap:var(--space-4)}.stats-strip__primary[data-v-4fce6e44]{justify-content:space-between}.metric__value[data-v-4fce6e44]{font-size:var(--text-3xl)}.metric--secondary .metric__value[data-v-4fce6e44]{font-size:var(--text-2xl)}.stats-strip__chips[data-v-4fce6e44],.stats-strip__clean[data-v-4fce6e44]{margin-left:0}}.mobile-cards[data-v-c7bd8ebd]{display:flex;flex-direction:column;gap:var(--space-2)}.day-card[data-v-c7bd8ebd]{display:flex;background:var(--pt-surface-card, var(--surface-color));border-radius:var(--radius-md);border:var(--pt-hairline, 1px solid var(--neutral-200));overflow:hidden;box-shadow:var(--pt-elev-1);transition:box-shadow var(--transition-fast)}.day-card--weekend[data-v-c7bd8ebd]{background:var(--neutral-50)}.day-card--holiday[data-v-c7bd8ebd]{background:var(--color-warning-soft)}.day-card--anomaly[data-v-c7bd8ebd]{border-color:var(--color-warning)}.day-card__date[data-v-c7bd8ebd]{flex-shrink:0;width:64px;padding:var(--space-3) 0;text-align:center;background:#0f172a08;border-right:1px solid var(--neutral-100);display:flex;flex-direction:column;justify-content:center;gap:2px}.day-card__day-num[data-v-c7bd8ebd]{font-size:var(--text-2xl);font-weight:700;font-variant-numeric:tabular-nums;color:var(--pt-text-strong, var(--text-primary));line-height:1;letter-spacing:-.02em}.day-card__weekday[data-v-c7bd8ebd]{font-size:11px;font-weight:500;color:var(--pt-text-muted, var(--text-secondary))}.day-card__date--weekend[data-v-c7bd8ebd]{background:#0f172a0d}.day-card__date--weekend .day-card__day-num[data-v-c7bd8ebd],.day-card__date--weekend .day-card__weekday[data-v-c7bd8ebd]{color:var(--pt-text-muted, var(--text-secondary))}.day-card__date--holiday[data-v-c7bd8ebd]{background:#f59e0b1f}.day-card__date--holiday .day-card__day-num[data-v-c7bd8ebd],.day-card__date--holiday .day-card__weekday[data-v-c7bd8ebd]{color:var(--color-warning-darker)}.day-card__main[data-v-c7bd8ebd]{flex:1;min-width:0;padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:6px}.day-card__top[data-v-c7bd8ebd]{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}.day-card__date-label[data-v-c7bd8ebd]{font-size:var(--text-xs);color:var(--pt-text-faint, var(--neutral-400));font-variant-numeric:tabular-nums;letter-spacing:.02em}.day-card__holiday[data-v-c7bd8ebd]{font-size:var(--text-sm);font-weight:600;color:var(--color-warning-darker)}.day-card__times[data-v-c7bd8ebd]{display:flex;gap:var(--space-5);padding:2px 0}.time-block[data-v-c7bd8ebd]{display:flex;flex-direction:column;gap:2px}.time-block__label[data-v-c7bd8ebd]{font-size:11px;color:var(--pt-text-muted, var(--text-secondary));font-weight:500;letter-spacing:.02em}.time-block__val[data-v-c7bd8ebd]{font-size:var(--text-base);font-weight:600;color:var(--pt-text-strong, var(--text-primary));font-variant-numeric:tabular-nums}.time-block__unit[data-v-c7bd8ebd]{font-size:.75em;font-weight:500;margin-left:1px;color:var(--pt-text-muted, var(--text-secondary))}.val--warn[data-v-c7bd8ebd]{color:var(--color-warning-darker)}.day-card__shift[data-v-c7bd8ebd]{font-size:11px;color:var(--pt-text-muted, var(--text-secondary));font-variant-numeric:tabular-nums}.day-card__requests[data-v-c7bd8ebd]{display:flex;flex-direction:column;gap:4px;padding-top:6px;border-top:1px dashed var(--neutral-200)}.request-row[data-v-c7bd8ebd]{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}.request-row__type[data-v-c7bd8ebd]{font-size:11px;font-weight:600;color:var(--pt-text-muted, var(--text-secondary));background:var(--neutral-100);padding:1px 6px;border-radius:var(--radius-sm);flex-shrink:0}.request-row__text[data-v-c7bd8ebd]{flex:1;min-width:0;color:var(--pt-text-body, var(--text-primary));display:inline-flex;align-items:baseline;gap:6px}.request-row__hours[data-v-c7bd8ebd]{font-size:var(--text-xs);font-weight:600;color:var(--pt-text-muted, var(--text-secondary));font-variant-numeric:tabular-nums}.status-pill[data-v-c7bd8ebd]{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:500;border-radius:var(--radius-full);white-space:nowrap}.status-pill__dot[data-v-c7bd8ebd]{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.status-pill--ok[data-v-c7bd8ebd]{color:var(--color-success-darker);background:var(--color-success-soft)}.status-pill--warn[data-v-c7bd8ebd]{color:var(--color-warning-darker);background:var(--color-warning-soft)}.status-pill--danger[data-v-c7bd8ebd]{color:var(--color-danger-darker);background:var(--color-danger-soft);font-weight:600}.status-pill--leave[data-v-c7bd8ebd]{color:var(--color-info-darker);background:var(--color-info-soft)}.status-pill--holiday[data-v-c7bd8ebd]{color:var(--color-warning-darker);background:transparent;font-weight:600}.status-pill--weekend[data-v-c7bd8ebd]{color:var(--pt-text-muted, var(--text-secondary));background:transparent;font-weight:400}.badge[data-v-c7bd8ebd]{display:inline-block;padding:2px 8px;font-size:11px;font-weight:600;border-radius:var(--radius-sm);white-space:nowrap;flex-shrink:0}.badge--approved[data-v-c7bd8ebd]{background:var(--neutral-100);color:var(--pt-text-muted, var(--text-secondary));border:1px solid var(--neutral-200)}.badge--pending[data-v-c7bd8ebd]{background:var(--color-warning);color:#fff}.badge--rejected[data-v-c7bd8ebd]{background:transparent;color:var(--color-danger-darker);border:1px solid var(--color-danger)}.attendance-grid[data-v-c9441384]{overflow-x:auto}.att-table[data-v-c9441384]{width:100%;border-collapse:collapse;font-size:var(--text-sm);font-variant-numeric:tabular-nums;table-layout:fixed}.att-table--lower[data-v-c9441384]{margin-top:var(--space-4)}.att-table th[data-v-c9441384],.att-table td[data-v-c9441384]{border-bottom:1px solid var(--neutral-100);padding:8px 4px;text-align:center;min-width:48px;color:var(--pt-text-body, var(--text-primary))}.att-table tbody tr:hover td[data-v-c9441384]:not(.label-col):not(.is-weekend):not(.is-holiday){background:var(--neutral-50)}.day-head[data-v-c9441384]{background:var(--neutral-50);font-weight:600;padding:6px 4px;border-bottom:2px solid var(--neutral-200);vertical-align:middle}.day-head__num[data-v-c9441384]{display:block;font-size:var(--text-base);font-weight:700;color:var(--pt-text-strong, var(--text-primary));font-variant-numeric:tabular-nums}.day-head__week[data-v-c9441384]{display:block;font-size:11px;font-weight:500;color:var(--pt-text-muted, var(--text-secondary));margin-top:1px}.label-col[data-v-c9441384]{min-width:56px;width:56px;font-weight:600;font-size:var(--text-xs);background:var(--neutral-50);color:var(--pt-text-muted, var(--text-secondary));text-align:left;padding-left:var(--space-3);letter-spacing:.02em;border-right:1px solid var(--neutral-100);border-bottom:1px solid var(--neutral-100)}.is-weekend[data-v-c9441384]{background:var(--neutral-50);color:var(--pt-text-muted, var(--text-secondary))}.day-head.is-weekend .day-head__num[data-v-c9441384],.day-head.is-weekend .day-head__week[data-v-c9441384]{color:var(--pt-text-muted, var(--text-secondary))}.is-holiday[data-v-c9441384]{background:var(--color-warning-soft)}.day-head.is-holiday .day-head__num[data-v-c9441384]{color:var(--color-warning-darker)}.day-head.is-holiday .day-head__week[data-v-c9441384]{color:var(--color-warning-darker);opacity:.85}.time-col[data-v-c9441384]{color:var(--pt-text-body, var(--text-primary))}.time-col.late[data-v-c9441384]{color:var(--color-warning-darker);font-weight:600}.hours-col[data-v-c9441384]{font-weight:600;color:var(--pt-text-strong, var(--text-primary))}.hours-col.hours-short[data-v-c9441384]{color:var(--color-warning-darker)}.shift-col[data-v-c9441384]{font-size:11px;color:var(--pt-text-muted, var(--text-secondary));letter-spacing:-.02em}.status-col[data-v-c9441384]{padding:6px 4px}.status-pill[data-v-c9441384]{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:11px;font-weight:500;border-radius:var(--radius-full);white-space:nowrap;background:transparent;color:var(--pt-text-body, var(--text-primary))}.status-pill__dot[data-v-c9441384]{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.status-pill--ok[data-v-c9441384]{color:var(--color-success-darker)}.status-pill--warn[data-v-c9441384]{color:var(--color-warning-darker);background:var(--color-warning-soft)}.status-pill--danger[data-v-c9441384]{color:var(--color-danger-darker);background:var(--color-danger-soft);font-weight:600}.status-pill--leave[data-v-c9441384]{color:var(--color-info-darker);background:var(--color-info-soft)}.status-pill--holiday[data-v-c9441384]{color:var(--color-warning-darker);font-weight:600}.status-pill--weekend[data-v-c9441384]{color:var(--pt-text-muted, var(--text-secondary));font-weight:400}.badge[data-v-c9441384]{display:inline-block;padding:1px 7px;border-radius:var(--radius-sm);font-size:11px;font-weight:600;cursor:help;white-space:nowrap}.badge--approved[data-v-c9441384]{background:var(--neutral-100);color:var(--pt-text-muted, var(--text-secondary));border:1px solid var(--neutral-200)}.badge--pending[data-v-c9441384]{background:var(--color-warning);color:#fff;border:1px solid transparent}.badge--rejected[data-v-c9441384]{background:var(--surface-color, #fff);color:var(--color-danger-darker);border:1px solid var(--color-danger)}@media print{.att-table[data-v-c9441384]{font-size:10px}.att-table th[data-v-c9441384],.att-table td[data-v-c9441384]{border:.5px solid #999;padding:4px 2px}.day-head[data-v-c9441384]{background:#f5f5f5!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.is-weekend[data-v-c9441384],.is-holiday[data-v-c9441384]{background:#fafafa!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.status-pill[data-v-c9441384],.badge[data-v-c9441384]{border:.5px solid #666;background:transparent!important;color:#000!important}}.portal-attendance[data-v-501d68f4]{max-width:1200px;margin:0 auto}.header-card[data-v-501d68f4]{margin-bottom:var(--space-6);background-color:var(--surface-color)}.sheet-header[data-v-501d68f4]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.sheet-header h2[data-v-501d68f4]{margin:0;font-size:var(--text-3xl);font-weight:700;color:var(--text-primary)}.month-nav[data-v-501d68f4]{display:flex;align-items:center;gap:var(--space-4)}.month-nav__btn[data-v-501d68f4]{min-width:var(--touch-target-min);min-height:var(--touch-target-min)}.top-sentinel[data-v-501d68f4]{height:1px;margin-top:calc(var(--space-6) * -1)}.month-label[data-v-501d68f4]{font-size:var(--text-xl);font-weight:600;min-width:140px;text-align:center;color:var(--text-primary)}.employee-info[data-v-501d68f4]{display:flex;gap:var(--space-8);font-size:var(--text-base);color:var(--text-secondary);padding-top:var(--space-3);border-top:1px solid var(--border-color)}.summary-card h3[data-v-501d68f4]{margin:0 0 var(--space-5) 0;font-size:var(--text-xl);font-weight:600;color:var(--text-primary)}.grid-card[data-v-501d68f4]{margin-bottom:var(--space-6);overflow-x:auto}.cards-wrapper[data-v-501d68f4]{margin-bottom:var(--space-6)}@keyframes day-card-flash-501d68f4{0%,to{box-shadow:var(--shadow-sm)}50%{box-shadow:0 0 0 3px var(--color-primary, var(--color-info))}}.day-card.day-card--highlight[data-v-501d68f4]{animation:day-card-flash-501d68f4 1.5s ease-out}@media(prefers-reduced-motion:reduce){.day-card.day-card--highlight[data-v-501d68f4]{animation:none;box-shadow:0 0 0 3px var(--color-primary, var(--color-info))}}@media(max-width:767.98px){.sheet-header[data-v-501d68f4]{flex-direction:column;align-items:flex-start;gap:var(--space-3)}.sheet-header h2[data-v-501d68f4]{font-size:var(--text-2xl)}.month-label[data-v-501d68f4]{font-size:var(--text-lg);min-width:120px}.employee-info[data-v-501d68f4]{flex-direction:column;gap:8px;padding-top:0;border-top:none}.hide-mobile[data-v-501d68f4]{display:none}.summary-card h3[data-v-501d68f4]{font-size:var(--text-lg);margin-bottom:var(--space-3)}}.measurement-sheet[data-v-e8049273]{display:flex;flex-direction:column;gap:12px;padding:0 16px 16px}.row[data-v-e8049273]{display:flex;align-items:center;gap:12px}.row label[data-v-e8049273]{flex:0 0 80px;font-size:14px}.row input[data-v-e8049273]{flex:1;padding:8px 12px;border:1px solid var(--el-border-color, #dcdfe6);border-radius:6px;font-size:16px}.advanced-toggle[data-v-e8049273]{align-self:flex-start;background:transparent;border:none;color:var(--el-color-primary, #409eff);cursor:pointer;padding:4px 0}.advanced[data-v-e8049273]{display:flex;flex-direction:column;gap:12px;padding-left:12px;border-left:2px solid var(--el-border-color-lighter, #ebeef5)}.actions[data-v-e8049273]{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.actions button[data-v-e8049273]{padding:10px 18px;border-radius:8px;border:1px solid var(--el-border-color, #dcdfe6);background:#fff;cursor:pointer}.actions button.primary[data-v-e8049273]{background:var(--el-color-primary, #409eff);color:#fff;border:none}.actions button[data-v-e8049273]:disabled{opacity:.5;cursor:not-allowed}.recorded[data-v-e8049273]{text-align:center;padding:24px}.recorded .ok[data-v-e8049273]{font-size:32px;color:var(--el-color-success, #67c23a);margin-bottom:16px}.milestone-sheet[data-v-a50d811c]{display:flex;flex-direction:column;gap:16px;padding:0 16px 16px}.section-label[data-v-a50d811c]{display:block;font-weight:600;margin-bottom:8px}.chips[data-v-a50d811c]{display:flex;flex-wrap:wrap;gap:8px}.chip[data-v-a50d811c]{display:inline-flex;align-items:center;gap:4px;padding:8px 12px;border-radius:999px;border:1px solid var(--el-border-color);background:#fff;cursor:pointer;font-size:14px}.chip.active[data-v-a50d811c]{background:var(--el-color-primary-light-9);border-color:var(--el-color-primary);color:var(--el-color-primary)}.icon-chip[data-v-a50d811c]{font-size:22px;padding:4px 10px}.row[data-v-a50d811c]{display:flex;gap:12px;align-items:flex-start}.row label[data-v-a50d811c]{flex:0 0 80px;padding-top:8px;font-size:14px}.row input[data-v-a50d811c],.row textarea[data-v-a50d811c]{flex:1;padding:8px 12px;border:1px solid var(--el-border-color);border-radius:6px;font-size:16px;font-family:inherit}.actions[data-v-a50d811c]{display:flex;justify-content:flex-end;gap:8px}.actions button[data-v-a50d811c]{padding:10px 18px;border-radius:8px;border:1px solid var(--el-border-color);background:#fff;cursor:pointer}.actions button.primary[data-v-a50d811c]{background:var(--el-color-primary);color:#fff;border:none}.actions button[data-v-a50d811c]:disabled{opacity:.5;cursor:not-allowed}.recorded[data-v-a50d811c]{text-align:center;padding:24px}.recorded .ok[data-v-a50d811c]{font-size:32px;margin-bottom:16px}.student-detail[data-v-b965e753]{max-width:1000px;margin:0 auto}.loading[data-v-b965e753]{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-3)}.skeleton-block[data-v-b965e753]{height:120px;border-radius:var(--radius-md)}.header[data-v-b965e753]{padding:var(--space-4);margin:var(--space-3) 0;display:flex;flex-direction:column;gap:var(--space-2)}.title-row[data-v-b965e753]{display:flex;align-items:center;gap:var(--space-3)}.title-row h2[data-v-b965e753]{margin:0;font-size:var(--text-2xl);font-weight:700;color:var(--pt-text-strong)}.age[data-v-b965e753]{color:var(--pt-text-muted);font-size:var(--text-base)}.meta[data-v-b965e753]{margin:0;color:var(--pt-text-muted);font-size:var(--text-sm)}.warn-row[data-v-b965e753]{font-size:var(--text-sm);color:var(--color-danger);display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.chip.danger[data-v-b965e753]{background:var(--color-danger-lighter);color:var(--color-danger);padding:2px var(--space-2);border-radius:999px;font-size:var(--text-xs)}.actions[data-v-b965e753]{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.detail-tabs[data-v-b965e753]{margin-top:var(--space-2)}.panel[data-v-b965e753]{padding:var(--space-4);margin-top:var(--space-2)}.panel h4[data-v-b965e753]{margin:var(--space-3) 0 var(--space-2);font-size:var(--text-base);color:var(--pt-text-strong)}.panel h4[data-v-b965e753]:first-child{margin-top:0}.list[data-v-b965e753]{padding:0;margin:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-2)}.list li[data-v-b965e753]{padding:var(--space-2) 0;border-bottom:var(--pt-hairline);font-size:var(--text-sm)}.list li[data-v-b965e753]:last-child{border-bottom:none}.list.compact li[data-v-b965e753]{padding:var(--space-1) 0}.note[data-v-b965e753]{color:var(--pt-text-muted)}.aid[data-v-b965e753]{font-size:var(--text-xs);color:var(--color-warning);margin:4px 0 0}.date[data-v-b965e753]{color:var(--pt-text-faint);margin-left:var(--space-2)}.empty[data-v-b965e753]{color:var(--pt-text-muted);padding:var(--space-3) 0}.stat-row[data-v-b965e753]{display:flex;gap:var(--space-4);margin-bottom:var(--space-3)}.stat b[data-v-b965e753]{font-size:var(--text-xl);color:var(--pt-text-strong)}.status-tag[data-v-b965e753],.severity-tag[data-v-b965e753],.domain-tag[data-v-b965e753],.source-tag[data-v-b965e753],.badge[data-v-b965e753],.published-tag[data-v-b965e753],.draft-tag[data-v-b965e753],.highlight[data-v-b965e753],.mood[data-v-b965e753]{display:inline-block;padding:2px var(--space-2);border-radius:999px;font-size:var(--text-xs);margin-left:var(--space-1)}.domain-tag[data-v-b965e753]{background:var(--pt-tint-event);color:var(--pt-tint-event-fg)}.source-tag[data-v-b965e753]{background:var(--pt-surface-mute);color:var(--pt-text-muted)}.published-tag[data-v-b965e753]{background:var(--color-success-lighter);color:var(--color-success)}.draft-tag[data-v-b965e753]{background:var(--pt-surface-mute);color:var(--pt-text-muted)}.highlight[data-v-b965e753]{background:var(--color-warning-lighter);color:var(--color-warning)}.mood[data-v-b965e753]{background:var(--pt-tint-event);color:var(--pt-tint-event-fg)}.status-tag.出席[data-v-b965e753]{background:var(--color-success-lighter);color:var(--color-success)}.status-tag.缺席[data-v-b965e753]{background:var(--color-danger-lighter);color:var(--color-danger)}.status-tag.遲到[data-v-b965e753]{background:var(--color-warning-lighter);color:var(--color-warning)}.status-tag.病假[data-v-b965e753],.status-tag.事假[data-v-b965e753]{background:var(--pt-surface-mute);color:var(--pt-text-muted)}.severity-tag.嚴重[data-v-b965e753]{background:var(--color-danger-lighter);color:var(--color-danger)}.severity-tag.中度[data-v-b965e753]{background:var(--color-warning-lighter);color:var(--color-warning)}.badge.primary[data-v-b965e753]{background:var(--color-primary-lighter);color:var(--color-primary)}.badge.danger[data-v-b965e753]{background:var(--color-danger-lighter);color:var(--color-danger)}.badge.ok[data-v-b965e753]{background:var(--color-success-lighter);color:var(--color-success)}.med-view[data-v-dc564427]{max-width:1000px;margin:0 auto}.page-header[data-v-dc564427]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.loading[data-v-dc564427]{display:flex;flex-direction:column;gap:var(--space-3)}.skeleton-block[data-v-dc564427]{height:100px;border-radius:var(--radius-md)}.empty[data-v-dc564427]{text-align:center;color:var(--pt-text-muted);padding:var(--space-6)}.groups[data-v-dc564427]{display:flex;flex-direction:column;gap:var(--space-4)}.classroom-group[data-v-dc564427]{display:flex;flex-direction:column;gap:var(--space-2)}.group-header[data-v-dc564427]{display:flex;justify-content:space-between;align-items:center;padding:0 var(--space-2)}.group-header h3[data-v-dc564427]{font-size:var(--text-lg);margin:0;color:var(--pt-text-strong)}.stats[data-v-dc564427]{display:flex;gap:var(--space-2);font-size:var(--text-sm)}.stat.pending[data-v-dc564427]{color:var(--color-warning)}.stat.done[data-v-dc564427]{color:var(--color-success)}.stat.skip[data-v-dc564427]{color:var(--pt-text-muted)}.cards[data-v-dc564427]{display:flex;flex-direction:column;gap:var(--space-2)}.med-card[data-v-dc564427]{display:flex;gap:var(--space-3);padding:var(--space-3);border-left:4px solid var(--color-warning)}.med-card.status-administered[data-v-dc564427]{border-left-color:var(--color-success)}.med-card.status-skipped[data-v-dc564427]{border-left-color:var(--pt-text-muted);opacity:.7}.time[data-v-dc564427]{font-size:var(--text-xl);font-weight:700;color:var(--pt-text-strong);width:64px}.body[data-v-dc564427]{flex:1;display:flex;flex-direction:column;gap:4px}.row.student[data-v-dc564427]{display:flex;gap:var(--space-2);align-items:center}.row.med[data-v-dc564427]{color:var(--pt-text-strong);font-size:var(--text-base)}.row.note[data-v-dc564427]{color:var(--pt-text-muted);font-size:var(--text-sm)}.row.meta[data-v-dc564427]{color:var(--pt-text-faint);font-size:var(--text-xs)}.status-tag[data-v-dc564427],.source-tag[data-v-dc564427]{padding:2px var(--space-2);border-radius:999px;font-size:var(--text-xs)}.status-tag.pending[data-v-dc564427]{background:var(--color-warning-lighter);color:var(--color-warning)}.status-tag.administered[data-v-dc564427]{background:var(--color-success-lighter);color:var(--color-success)}.status-tag.skipped[data-v-dc564427]{background:var(--pt-surface-mute);color:var(--pt-text-muted)}.source-tag[data-v-dc564427]{background:var(--pt-tint-message);color:var(--pt-tint-message-fg)}.actions[data-v-dc564427]{display:flex;flex-direction:column;gap:var(--space-1);align-self:center}.obs-view[data-v-189652d9]{max-width:800px;margin:0 auto}.from-hub-bar[data-v-189652d9]{margin:0 0 12px;padding:4px 0}.page-header[data-v-189652d9]{margin-bottom:var(--space-3)}.page-header h2[data-v-189652d9]{margin:0;color:var(--pt-text-strong)}.form-card[data-v-189652d9],.timeline-card[data-v-189652d9]{padding:var(--space-4);margin-bottom:var(--space-3)}.form-card h3[data-v-189652d9],.timeline-card h3[data-v-189652d9]{margin:0 0 var(--space-3);font-size:var(--text-lg);color:var(--pt-text-strong)}.domain-chips[data-v-189652d9]{display:flex;gap:var(--space-2);flex-wrap:wrap}.chip-btn[data-v-189652d9]{padding:4px var(--space-3);border-radius:999px;border:1px solid var(--pt-border);background:var(--pt-surface-card);cursor:pointer;font-size:var(--text-sm)}.chip-btn.active[data-v-189652d9]{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.hint[data-v-189652d9],.lock-hint[data-v-189652d9]{margin-left:var(--space-2);font-size:var(--text-xs);color:var(--pt-text-muted)}.timeline[data-v-189652d9]{padding:0;margin:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-3)}.timeline li[data-v-189652d9]{padding:var(--space-2) 0;border-bottom:var(--pt-hairline)}.timeline li[data-v-189652d9]:last-child{border-bottom:none}.domain-tag[data-v-189652d9]{display:inline-block;margin-left:var(--space-2);padding:2px var(--space-2);border-radius:999px;font-size:var(--text-xs);background:var(--pt-tint-event);color:var(--pt-tint-event-fg)}.hl[data-v-189652d9]{margin-left:var(--space-1);color:var(--color-warning)}.empty[data-v-189652d9]{text-align:center;color:var(--pt-text-muted);padding:var(--space-4) 0}.portal-leave-form[data-v-dcf6e3a8]{display:flex;flex-direction:column;gap:var(--space-3)}.comp-expiry-warning[data-v-dcf6e3a8]{margin-bottom:var(--space-2)}.form-footer[data-v-dcf6e3a8]{display:flex;justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border-color)}.upload-wrapper[data-v-dcf6e3a8]{width:100%}.upload-tip[data-v-dcf6e3a8]{margin-top:var(--space-2);font-size:var(--text-xs);color:var(--text-secondary);display:flex;align-items:center;gap:4px;line-height:1.4}.portal-breakdown[data-v-dcf6e3a8]{width:100%;display:flex;flex-direction:column;gap:3px;max-height:200px;overflow-y:auto;border:1px solid var(--el-border-color-lighter);border-radius:var(--el-border-radius-base);padding:6px;background:var(--el-fill-color-extra-light)}.pb-row[data-v-dcf6e3a8]{display:flex;align-items:center;gap:8px;padding:2px 4px;font-size:12px}.pb-row.weekend[data-v-dcf6e3a8],.pb-row.holiday[data-v-dcf6e3a8]{opacity:.55}.pb-date[data-v-dcf6e3a8]{min-width:82px;font-variant-numeric:tabular-nums}.pb-tag[data-v-dcf6e3a8]{flex:1;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pb-hours[data-v-dcf6e3a8]{min-width:32px;text-align:right;font-weight:600;color:var(--el-color-primary)}.pb-row.weekend .pb-hours[data-v-dcf6e3a8],.pb-row.holiday .pb-hours[data-v-dcf6e3a8]{color:var(--el-text-color-secondary);font-weight:400}.query-row[data-v-d1498de4]{display:flex;gap:var(--space-3)}.attach-loading[data-v-d1498de4]{display:flex;align-items:center;gap:8px;color:var(--text-secondary);padding:24px;justify-content:center}.attach-grid[data-v-d1498de4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-4)}.attach-item[data-v-d1498de4]{border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden}.attach-thumb[data-v-d1498de4]{width:100%;height:140px;display:block}.attach-file[data-v-d1498de4]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:var(--space-5);text-decoration:none;color:var(--text-primary);height:140px;transition:background-color .2s}.attach-file[data-v-d1498de4]:hover{background-color:var(--bg-color-soft)}.attach-file__name[data-v-d1498de4]{font-size:var(--text-xs);text-align:center;word-break:break-all;color:var(--text-secondary);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attach-file__hint[data-v-d1498de4]{font-size:var(--text-xs);color:var(--color-primary)}@media(max-width:767.98px){.query-row[data-v-d1498de4]{flex-wrap:wrap}}.substitute-card-list[data-v-8b6e3cd9]{display:flex;flex-direction:column;gap:var(--space-3)}.substitute-card[data-v-8b6e3cd9]{background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.card-row.card-top[data-v-8b6e3cd9]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.card-meta[data-v-8b6e3cd9]{display:flex;align-items:center;gap:var(--space-2)}.requester[data-v-8b6e3cd9]{font-weight:600;color:var(--text-primary)}.card-body[data-v-8b6e3cd9]{display:flex;flex-direction:column;gap:4px;font-size:var(--text-sm);color:var(--text-secondary)}.info-line[data-v-8b6e3cd9]{display:flex;gap:var(--space-2)}.info-line .label[data-v-8b6e3cd9]{min-width:36px;color:var(--text-tertiary, var(--text-secondary))}.info-line.reason span[data-v-8b6e3cd9]:last-child{flex:1;word-break:break-word}.card-actions[data-v-8b6e3cd9]{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.action-btn[data-v-8b6e3cd9]{flex:1}.card-actions-disabled[data-v-8b6e3cd9]{text-align:center;color:var(--text-secondary);font-size:var(--text-sm);padding-top:var(--space-2)}.pt-bsheet-overlay[data-v-75976c1d]{position:fixed;inset:0;z-index:var(--z-modal-backdrop, 90);background:var(--pt-scrim, rgba(15, 23, 42, .45));-webkit-backdrop-filter:blur(var(--pt-backdrop-blur, 8px));backdrop-filter:blur(var(--pt-backdrop-blur, 8px));display:flex;align-items:flex-end;justify-content:center}.pt-bsheet-dialog[data-v-75976c1d]{background:var(--pt-surface-card, #fff);border:var(--pt-hairline);border-radius:16px 16px 0 0;box-shadow:var(--pt-elev-3);width:100%;max-width:640px;height:var(--pt-bsheet-h, 60vh);max-height:92vh;transition:height .32s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column;outline:none;padding-bottom:env(safe-area-inset-bottom,0);overscroll-behavior:contain}.pt-bsheet-handle[data-v-75976c1d]{width:36px;height:4px;background:var(--pt-surface-mute, #e5e7eb);border-radius:2px;margin:8px auto 4px}.pt-bsheet-header[data-v-75976c1d]{padding:8px 16px 4px}.pt-bsheet-title[data-v-75976c1d]{font-size:17px;font-weight:600;margin:0}.pt-bsheet-body[data-v-75976c1d]{padding:12px 16px;overflow-y:auto;flex:1}.pt-bsheet-footer[data-v-75976c1d]{padding:12px 16px;border-top:var(--pt-hairline)}.pt-bsheet-enter-active[data-v-75976c1d],.pt-bsheet-leave-active[data-v-75976c1d]{transition:opacity .2s ease}.pt-bsheet-enter-active .pt-bsheet-dialog[data-v-75976c1d],.pt-bsheet-leave-active .pt-bsheet-dialog[data-v-75976c1d]{transition:transform .32s cubic-bezier(.32,.72,0,1)}.pt-bsheet-enter-from[data-v-75976c1d],.pt-bsheet-leave-to[data-v-75976c1d]{opacity:0}.pt-bsheet-enter-from .pt-bsheet-dialog[data-v-75976c1d],.pt-bsheet-leave-to .pt-bsheet-dialog[data-v-75976c1d]{transform:translateY(100%)}@media(prefers-reduced-motion:reduce){.pt-bsheet-dialog[data-v-75976c1d],.pt-bsheet-enter-active[data-v-75976c1d],.pt-bsheet-leave-active[data-v-75976c1d],.pt-bsheet-enter-active .pt-bsheet-dialog[data-v-75976c1d],.pt-bsheet-leave-active .pt-bsheet-dialog[data-v-75976c1d]{transition:none}.pt-bsheet-enter-from .pt-bsheet-dialog[data-v-75976c1d],.pt-bsheet-leave-to .pt-bsheet-dialog[data-v-75976c1d]{transform:none}}.substitute-alert[data-v-9bca956d]{margin-bottom:var(--space-4)}.page-header[data-v-9bca956d]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.rules-card[data-v-9bca956d]{margin-bottom:var(--space-4)}.stats-container[data-v-9bca956d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-5)}.stat-item[data-v-9bca956d]{display:flex;flex-direction:column;gap:8px;padding:var(--space-4);background-color:var(--bg-color);border-radius:var(--radius-md);border:1px solid var(--border-color);transition:transform .2s,box-shadow .2s}.stat-item[data-v-9bca956d]:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}.stat-item.highlight[data-v-9bca956d]{background-color:var(--surface-color);border-color:var(--color-primary-soft);box-shadow:0 4px 6px -1px #6366f11a}.stat-item.highlight .stat-value[data-v-9bca956d]{color:var(--color-primary);font-weight:700;font-size:var(--text-2xl)}.stat-label[data-v-9bca956d]{font-size:var(--text-sm);color:var(--text-secondary)}.stat-value[data-v-9bca956d]{font-size:var(--text-xl);font-weight:600;color:var(--text-primary)}@media(max-width:767.98px){.stats-container[data-v-9bca956d]{grid-template-columns:repeat(2,1fr);gap:10px}.stat-value[data-v-9bca956d]{font-size:var(--text-base)}}.overtime-form[data-v-0aa91e07]{display:flex;flex-direction:column;gap:var(--space-3)}.form-footer[data-v-0aa91e07]{display:flex;justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border-color)}.rules-card[data-v-5beade5a]{margin-bottom:var(--space-4)}.rules-grid[data-v-5beade5a]{display:flex;flex-wrap:wrap;gap:var(--space-3)}.rule-item[data-v-5beade5a]{display:flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--text-secondary)}.query-row[data-v-5beade5a]{display:flex;gap:8px;align-items:center}.month-total[data-v-5beade5a]{margin-left:auto;font-weight:600;color:var(--color-primary)}@media(max-width:767.98px){.query-row[data-v-5beade5a]{flex-wrap:wrap}.month-total[data-v-5beade5a]{margin-left:0;width:100%;font-size:var(--text-sm)}.rules-grid[data-v-5beade5a]{flex-direction:column;gap:8px}}.punch-correction-form[data-v-e9179410]{display:flex;flex-direction:column;gap:var(--space-3)}.form-footer[data-v-e9179410]{display:flex;justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border-color)}.page-header[data-v-082e267a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.page-header h2[data-v-082e267a]{margin:0;font-size:var(--text-2xl);font-weight:700;color:var(--text-primary)}.notice-card[data-v-082e267a]{margin-bottom:var(--space-4)}.notice-content[data-v-082e267a]{display:flex;align-items:center;gap:8px;margin-bottom:var(--space-3);color:var(--text-secondary);font-size:var(--text-sm)}.type-grid[data-v-082e267a]{display:flex;flex-wrap:wrap;gap:var(--space-3)}.type-item[data-v-082e267a]{display:flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--text-secondary)}.query-row[data-v-082e267a]{display:flex;gap:8px;align-items:center}@media(max-width:767.98px){.type-grid[data-v-082e267a]{flex-direction:column;gap:8px}}.schedule-month-header[data-v-5022de59]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3)}.month-nav[data-v-5022de59]{display:flex;align-items:center;gap:var(--space-3)}.ctrl-btn[data-v-5022de59]{min-height:var(--touch-target-min);padding-left:var(--space-4);padding-right:var(--space-4)}.month-label[data-v-5022de59]{font-size:var(--text-lg);font-weight:600;min-width:140px;text-align:center}.month-summary[data-v-5022de59]{display:flex;gap:var(--space-3);color:var(--text-secondary);font-size:var(--text-sm)}.month-summary strong[data-v-5022de59]{color:var(--text-primary)}@media(max-width:767.98px){.month-nav[data-v-5022de59]{justify-content:center}.month-label[data-v-5022de59]{min-width:120px;font-size:var(--text-base)}}.calendar-grid[data-v-504ad99d]{overflow-x:auto}.calendar-header[data-v-504ad99d]{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:1px}.calendar-header-cell[data-v-504ad99d]{text-align:center;font-weight:600;padding:var(--space-2);background:var(--bg-color);color:var(--text-secondary);font-size:var(--text-sm, 13px)}.calendar-row[data-v-504ad99d]{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.calendar-cell[data-v-504ad99d]{min-height:90px;padding:var(--space-2);border:1px solid var(--border-color-light, #ebeef5);position:relative;font-size:13px}.calendar-cell.is-empty[data-v-504ad99d]{background:var(--bg-color, #f5f7fa)}.calendar-cell.is-weekend[data-v-504ad99d]{background:#fafafa;color:var(--text-tertiary)}.calendar-cell.is-today[data-v-504ad99d]{border-color:var(--color-primary, var(--color-info));border-width:2px}.calendar-cell.has-shift[data-v-504ad99d]{background:#f0f9ff}.calendar-cell.no-shift[data-v-504ad99d]{background:#fff}.cell-day[data-v-504ad99d]{font-weight:600;margin-bottom:2px}.cell-shift[data-v-504ad99d]{font-size:13px;color:var(--color-primary, var(--color-info));font-weight:500}.cell-time[data-v-504ad99d]{font-size:12px;color:var(--text-secondary)}.cell-override[data-v-504ad99d],.cell-swap-btn-wrap[data-v-504ad99d]{margin-top:2px}.cell-swap-btn[data-v-504ad99d]{font-size:12px!important;padding:0!important}.calendar-cell.is-tappable[data-v-504ad99d]{cursor:pointer;-webkit-tap-highlight-color:rgba(64,158,255,.15)}.calendar-cell.is-tappable[data-v-504ad99d]:focus-visible{outline:2px solid var(--color-primary, var(--color-info));outline-offset:-2px}@media(max-width:767.98px){.calendar-cell[data-v-504ad99d]{min-height:65px;padding:4px;font-size:12px}.cell-time[data-v-504ad99d]{font-size:10px}.cell-swap-btn-wrap[data-v-504ad99d]{display:none}}.swap-form[data-v-8f6b417a]{padding:var(--space-2) 0}.schedule-page h2[data-v-777ea918],.control-panel[data-v-777ea918]{margin-bottom:var(--space-4)}.controls[data-v-777ea918]{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.ctrl-btn[data-v-777ea918]{min-height:var(--touch-target-min);padding-left:var(--space-4);padding-right:var(--space-4)}.spacer[data-v-777ea918]{flex:1}.calendar-card[data-v-777ea918]{margin-bottom:var(--space-4)}.day-sheet[data-v-777ea918]{padding:0 var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.day-sheet__row[data-v-777ea918]{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) 0;border-bottom:1px solid var(--border-color-light, #ebeef5)}.day-sheet__row[data-v-777ea918]:last-of-type{border-bottom:none}.day-sheet__label[data-v-777ea918]{color:var(--text-secondary);font-size:var(--text-sm)}.day-sheet__val[data-v-777ea918]{font-weight:var(--font-weight-semibold, 600);color:var(--text-primary);font-size:var(--text-base)}.day-sheet__actions[data-v-777ea918]{margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.day-sheet__cta[data-v-777ea918]{width:100%;min-height:var(--touch-target-min)}.day-sheet__hint[data-v-777ea918]{margin:0;font-size:var(--text-xs);color:var(--text-tertiary);text-align:center}.swap-section[data-v-777ea918]{margin-bottom:var(--space-4)}.swap-header[data-v-777ea918]{font-weight:600}@media(max-width:767.98px){.controls[data-v-777ea918]{justify-content:center}.spacer[data-v-777ea918]{display:none}}.query-row[data-v-117267bc]{display:flex;gap:8px}.anomaly-card[data-v-117267bc]{margin-bottom:var(--space-4);transition:opacity .3s}.anomaly-card.confirmed[data-v-117267bc]{opacity:.6}.anomaly-header[data-v-117267bc]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.anomaly-date[data-v-117267bc]{display:flex;align-items:center;gap:8px}.date-text[data-v-117267bc]{font-size:var(--text-lg);font-weight:600}.anomaly-detail[data-v-117267bc]{background:var(--bg-color-soft);padding:var(--space-3) var(--space-4);border-radius:6px}.detail-text[data-v-117267bc]{margin:0 0 4px;font-size:var(--text-base)}.deduction-text[data-v-117267bc]{margin:0;color:var(--color-danger);font-size:var(--text-base)}.confirmed-badge[data-v-117267bc]{margin-top:var(--space-3);text-align:right}.psd[data-v-3d2b425d]{padding:0 var(--space-4) var(--space-6);min-height:100%}.psd-header[data-v-3d2b425d]{padding:var(--space-5) 0 var(--space-3);border-bottom:1px solid var(--border-color, #eef0f3)}.psd-title[data-v-3d2b425d]{display:flex;align-items:center;gap:8px}.psd-name[data-v-3d2b425d]{font-size:22px;font-weight:700;color:var(--text-primary, #1f2937)}.psd-meta[data-v-3d2b425d]{margin-top:4px;color:var(--text-secondary, #6b7280);font-size:13px}.psd-meta .muted[data-v-3d2b425d]{color:var(--text-tertiary, #9ca3af)}.psd-stats[data-v-3d2b425d]{margin-top:var(--space-4);display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.stat[data-v-3d2b425d]{background:var(--color-fill-light, #f7f8fa);border-radius:12px;padding:12px;text-align:center}.stat-value[data-v-3d2b425d]{font-size:22px;font-weight:700;color:var(--color-primary, #16a34a)}.stat-label[data-v-3d2b425d]{font-size:12px;color:var(--text-secondary);margin-top:2px}.psd-tabs[data-v-3d2b425d]{margin-top:var(--space-3)}.psd-list[data-v-3d2b425d]{list-style:none;margin:0;padding:0}.psd-list>li[data-v-3d2b425d]{display:flex;align-items:flex-start;gap:12px;padding:8px 0;border-bottom:1px dashed var(--border-color-light, var(--neutral-100))}.psd-list .k[data-v-3d2b425d]{width:90px;flex-shrink:0;color:var(--text-secondary);font-size:13px}.notes[data-v-3d2b425d]{white-space:pre-wrap}.phone-row[data-v-3d2b425d]{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.phone-row .revealed[data-v-3d2b425d]{font-family:var(--font-mono, monospace);font-weight:600;color:var(--text-primary)}.reveal-btn[data-v-3d2b425d]{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:12px;background:transparent;border:1px solid var(--border-color, #d1d5db);border-radius:6px;color:var(--text-secondary);cursor:pointer}.reveal-btn[data-v-3d2b425d]:hover{background:var(--color-fill-lighter, #fafbfc)}.reveal-btn[data-v-3d2b425d]:disabled{cursor:not-allowed;opacity:.5}.revealed-tag[data-v-3d2b425d]{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--color-success, #16a34a)}.psd-section[data-v-3d2b425d]{margin-top:var(--space-4)}.psd-section-title[data-v-3d2b425d]{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:6px}.bullet[data-v-3d2b425d]{list-style:disc inside;margin:0;padding:0}.bullet li[data-v-3d2b425d]{padding:4px 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.psd-cards[data-v-3d2b425d]{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3)}.psd-card[data-v-3d2b425d]{background:var(--color-fill-light, #f7f8fa);border-radius:12px;padding:12px}.psd-card.emergency[data-v-3d2b425d]{background:var(--color-danger-soft, #fff1f2)}.psd-card-head[data-v-3d2b425d]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.psd-card-row[data-v-3d2b425d]{font-size:14px}.muted[data-v-3d2b425d]{color:var(--text-secondary, #6b7280)}.small[data-v-3d2b425d]{font-size:12px;margin-top:2px}.psd-timeline[data-v-3d2b425d]{list-style:none;margin:0;padding:0}.psd-timeline>li[data-v-3d2b425d]{display:flex;gap:12px;padding:8px 0;align-items:flex-start}.psd-timeline .dot[data-v-3d2b425d]{width:8px;height:8px;margin-top:8px;background:var(--color-primary, #16a34a);border-radius:50%;flex-shrink:0}.empty[data-v-3d2b425d]{padding:20px 0}.portal-students[data-v-ea019f51]{padding:10px}.empty-state[data-v-ea019f51]{padding:60px 0}.classroom-tabs[data-v-ea019f51]{margin-bottom:var(--space-4)}.toolbar[data-v-ea019f51]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);flex-wrap:wrap;gap:8px}.info[data-v-ea019f51]{display:flex;align-items:center;gap:10px}.student-count[data-v-ea019f51]{font-size:var(--text-base);color:var(--text-secondary)}.card-grid[data-v-ea019f51]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-3)}.empty-grid[data-v-ea019f51]{grid-column:1 / -1;padding:40px 0}.student-card[data-v-ea019f51]{background:#fff;border:1px solid var(--border-color-light, #eef0f3);border-radius:14px;padding:14px;cursor:pointer;display:flex;flex-direction:column;gap:10px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;position:relative}.student-card[data-v-ea019f51]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000000f;border-color:var(--color-primary-soft, #c8e6d4)}.student-card[data-v-ea019f51]:focus-visible{outline:2px solid var(--color-primary, #16a34a);outline-offset:2px}.row[data-v-ea019f51]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row.top .name[data-v-ea019f51]{font-size:17px;font-weight:700;color:var(--text-primary)}.health-dot[data-v-ea019f51]{display:inline-flex;align-items:center;gap:2px;background:var(--color-danger-soft, #fff1f2);color:var(--color-danger, #dc2626);padding:2px 6px;border-radius:10px;font-size:12px;font-weight:600}.row.meta[data-v-ea019f51]{font-size:13px;color:var(--text-secondary)}.row.meta .dot[data-v-ea019f51]{color:var(--text-tertiary, #cbd5e1)}.row.attendance[data-v-ea019f51]{background:var(--color-fill-light, #f7f8fa);border-radius:10px;padding:8px 10px;font-size:13px}.att-label[data-v-ea019f51]{color:var(--text-secondary)}.att-value[data-v-ea019f51]{font-weight:700;font-size:16px}.att-high[data-v-ea019f51]{color:var(--color-success, #16a34a)}.att-mid[data-v-ea019f51]{color:var(--color-warning, #d97706)}.att-low[data-v-ea019f51]{color:var(--color-danger, #dc2626)}.att-unknown[data-v-ea019f51]{color:var(--text-tertiary)}.att-last[data-v-ea019f51]{margin-left:auto;color:var(--text-tertiary);font-size:12px}.row.contact[data-v-ea019f51]{font-size:13px;color:var(--text-secondary)}.row.contact .parent[data-v-ea019f51]{color:var(--text-primary);font-weight:500}.phone-block[data-v-ea019f51]{display:inline-flex;align-items:center;gap:4px;margin-left:auto}.phone-block .revealed[data-v-ea019f51]{font-family:var(--font-mono, monospace);font-weight:600;color:var(--text-primary)}.reveal-btn[data-v-ea019f51]{background:transparent;border:1px solid var(--border-color, #d1d5db);border-radius:6px;padding:2px 6px;cursor:pointer;display:inline-flex;align-items:center;color:var(--text-secondary)}.reveal-btn[data-v-ea019f51]:hover{background:var(--color-fill-lighter, #fafbfc)}.reveal-btn[data-v-ea019f51]:disabled{cursor:not-allowed;opacity:.5}.revealed-tag[data-v-ea019f51]{color:var(--color-success, #16a34a);display:inline-flex;align-items:center}.status-tag[data-v-ea019f51]{align-self:flex-start}.card-more[data-v-ea019f51]{margin-left:auto}.card-more-btn[data-v-ea019f51]{background:transparent;border:none;padding:4px;cursor:pointer;color:var(--el-text-color-secondary)}.card-more-btn[data-v-ea019f51]:hover{color:var(--el-color-primary)}.from-hub-bar[data-v-f3b1cafa]{margin:0 0 12px;padding:4px 0}.page-header[data-v-f3b1cafa]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.page-header h3[data-v-f3b1cafa]{margin:0;font-size:1.2rem;font-weight:600}.page-header[data-v-ad1711d1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.page-header h3[data-v-ad1711d1]{margin:0;font-size:1.2rem;font-weight:600}.latest-card[data-v-60ea4039]{background:var(--surface-card, #fff);border-radius:var(--radius-lg, 12px);padding:var(--space-4, 16px);box-shadow:var(--shadow-card, 0 1px 3px rgba(0, 0, 0, .06));display:flex;flex-direction:column;gap:var(--space-2, 8px)}header[data-v-60ea4039]{display:flex;justify-content:space-between;color:var(--pt-text-muted, #6b7280);font-size:var(--text-sm, 13px)}.score-row[data-v-60ea4039]{display:flex;align-items:baseline;gap:var(--space-3, 12px)}.score[data-v-60ea4039]{font-size:2.5rem;font-weight:700;color:var(--pt-text-strong, #111)}.grade-chip[data-v-60ea4039]{padding:4px 12px;border-radius:999px;font-weight:600;color:#fff}.meta[data-v-60ea4039]{display:flex;justify-content:space-between;font-size:var(--text-sm, 13px)}.bonus[data-v-60ea4039]{color:var(--pt-text-muted, #6b7280)}.delta-up[data-v-60ea4039]{color:#1e7e34;font-weight:600}.delta-down[data-v-60ea4039]{color:#b91c1c;font-weight:600}.delta-flat[data-v-60ea4039],.delta-none[data-v-60ea4039]{color:var(--pt-text-muted, #6b7280)}.trend-chart-wrap[data-v-169589c0]{height:240px}.radar-wrap[data-v-cee4eed7]{height:280px}.sign-positive[data-v-cdb5bcba]{color:#1e7e34;font-weight:600}.sign-negative[data-v-cdb5bcba]{color:#b91c1c;font-weight:600}.sign-neutral[data-v-cdb5bcba]{color:var(--pt-text-muted, #6b7280)}.empty[data-v-cdb5bcba]{color:var(--neutral-300, #cbd5e1)}.timeline-item[data-v-a1d0a8cb]{background:var(--surface-card, #fff);border-radius:var(--radius-md, 8px);margin-bottom:var(--space-2, 8px)}.row[data-v-a1d0a8cb]{width:100%;display:grid;grid-template-columns:80px 60px auto 1fr 24px;gap:var(--space-3, 12px);padding:var(--space-3, 12px) var(--space-4, 16px);align-items:center;background:transparent;border:0;cursor:pointer;text-align:left}.row[data-v-a1d0a8cb]:disabled{cursor:default;opacity:.7}.label[data-v-a1d0a8cb]{font-weight:600;color:var(--pt-text-strong, #111)}.score[data-v-a1d0a8cb]{font-size:1.2rem;font-weight:700}.grade-chip[data-v-a1d0a8cb]{padding:2px 10px;border-radius:999px;color:#fff;font-size:.85rem}.status-chip[data-v-a1d0a8cb]{padding:2px 10px;border-radius:999px;background:var(--neutral-100, #f1f5f9);color:var(--pt-text-muted, #6b7280);font-size:.85rem}.chevron[data-v-a1d0a8cb]{transition:transform .2s;color:var(--pt-text-muted, #6b7280)}.chevron.open[data-v-a1d0a8cb]{transform:rotate(90deg)}.detail[data-v-a1d0a8cb]{padding:0 var(--space-4, 16px) var(--space-4, 16px);display:flex;flex-direction:column;gap:var(--space-3, 12px)}.loading[data-v-a1d0a8cb],.error[data-v-a1d0a8cb]{padding:var(--space-3, 12px);color:var(--pt-text-muted, #6b7280)}.error[data-v-a1d0a8cb]{color:#b91c1c}.portal-growth[data-v-6f7bc8e9]{max-width:800px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-4, 16px)}.page-header[data-v-6f7bc8e9]{display:flex;justify-content:space-between;align-items:center}.page-header h2[data-v-6f7bc8e9]{margin:0;font-size:var(--text-xl, 20px);font-weight:700;color:var(--pt-text-strong, #111)}.error-banner[data-v-6f7bc8e9]{padding:var(--space-3, 12px);background:var(--color-danger-lighter, #fee2e2);color:var(--color-danger, #b91c1c);border-radius:var(--radius-md, 8px)}.loading-state[data-v-6f7bc8e9]{display:flex;flex-direction:column;gap:var(--space-3, 12px)}.skeleton-block[data-v-6f7bc8e9]{height:120px;border-radius:var(--radius-md, 8px);background:var(--neutral-100, #f1f5f9)}.empty[data-v-6f7bc8e9]{text-align:center;padding:var(--space-6, 24px);color:var(--pt-text-muted, #6b7280)}.section[data-v-6f7bc8e9]{display:flex;flex-direction:column;gap:var(--space-3, 12px)}.section h3[data-v-6f7bc8e9]{margin:0;font-size:var(--text-lg, 16px);font-weight:600;color:var(--pt-text-strong, #111)}.hint[data-v-6f7bc8e9]{color:var(--pt-text-muted, #6b7280);font-size:var(--text-sm, 13px);margin:0}.portal-dismissal-calls[data-v-550fbe58]{max-width:600px;margin:0 auto;padding:var(--space-4)}.sr-only[data-v-550fbe58]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-head[data-v-550fbe58]{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) 0;margin-bottom:var(--space-3);background:var(--bg-color, var(--neutral-50))}.page-head__title[data-v-550fbe58]{margin:0;font-size:var(--text-3xl);font-weight:var(--font-weight-bold);color:var(--text-primary)}.page-head__count[data-v-550fbe58]{display:inline-block;margin-left:var(--space-2);padding:2px 10px;border-radius:999px;background:var(--color-primary);color:#fff;font-size:var(--text-sm);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;vertical-align:middle}.page-head__tools[data-v-550fbe58]{display:flex;align-items:center;gap:var(--space-3)}.sound-ctl[data-v-550fbe58]{display:inline-flex;align-items:center;gap:var(--space-1)}.sound-ctl__toggle[data-v-550fbe58]{display:inline-flex;align-items:center;gap:6px;min-height:var(--touch-target-min);padding:0 12px;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--surface-color);color:var(--text-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background-color var(--transition-fast)}.sound-ctl__toggle.is-on[data-v-550fbe58]{border-color:var(--color-success);color:#1a7f4b;background:var(--color-success-soft)}.sound-ctl__toggle[data-v-550fbe58]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.sound-ctl__test[data-v-550fbe58]{min-height:var(--touch-target-min);padding:0 10px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-primary);font-size:var(--text-sm);font-weight:var(--font-weight-medium);cursor:pointer}.sound-ctl__test[data-v-550fbe58]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.degrade-hint[data-v-550fbe58]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);margin-bottom:var(--space-2);font-size:var(--text-sm)}.degrade-hint--audio[data-v-550fbe58]{background-color:var(--color-warning-soft);color:var(--text-primary);border:1px solid var(--color-warning)}.degrade-hint--notify[data-v-550fbe58]{background-color:var(--neutral-100, #f3f4f6);color:var(--text-secondary);border:1px solid var(--border-color)}.conn-banner[data-v-550fbe58]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);border:1px solid transparent}.conn-banner--reconnecting[data-v-550fbe58]{background-color:var(--color-warning-soft);color:var(--text-primary);border-color:var(--color-warning)}.conn-banner--exhausted[data-v-550fbe58]{background-color:var(--color-danger-soft);color:var(--text-primary);border-color:var(--color-danger)}.conn-banner__text[data-v-550fbe58]{display:flex;flex-direction:column;gap:2px;font-size:var(--text-sm);font-weight:var(--font-weight-medium)}.conn-banner__sub[data-v-550fbe58]{font-size:var(--text-xs);color:var(--text-secondary);font-weight:var(--font-weight-regular)}.conn-banner__btn[data-v-550fbe58]{flex-shrink:0;min-height:var(--touch-target-min)}.empty[data-v-550fbe58]{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);padding:var(--space-10) var(--space-4)}.empty__ico[data-v-550fbe58]{font-size:48px;color:var(--color-success);margin-bottom:var(--space-2)}.empty__title[data-v-550fbe58]{margin:0;font-size:var(--text-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.empty__sub[data-v-550fbe58]{margin:0;max-width:32ch;font-size:var(--text-sm);color:var(--text-tertiary);line-height:1.6}.call-list[data-v-550fbe58]{display:flex;flex-direction:column;gap:var(--space-3)}.act-btn[data-v-550fbe58]{min-height:var(--touch-target-min);font-weight:var(--font-weight-semibold)}.dcall-list-enter-active[data-v-550fbe58]{transition:opacity .24s cubic-bezier(.25,1,.5,1),transform .24s cubic-bezier(.25,1,.5,1)}.dcall-list-leave-active[data-v-550fbe58]{transition:opacity .16s ease,transform .16s ease}.dcall-list-move[data-v-550fbe58]{transition:transform .24s cubic-bezier(.25,1,.5,1)}.dcall-list-enter-from[data-v-550fbe58]{opacity:0;transform:translateY(8px)}.dcall-list-leave-to[data-v-550fbe58]{opacity:0;transform:translateY(-4px)}@media(max-width:560px){.page-head__tools[data-v-550fbe58]{width:100%;justify-content:space-between}.act-btn[data-v-550fbe58]{width:100%}}@media(prefers-reduced-motion:reduce){.dcall-list-enter-active[data-v-550fbe58],.dcall-list-leave-active[data-v-550fbe58],.dcall-list-move[data-v-550fbe58]{transition:opacity .15s linear}.dcall-list-enter-from[data-v-550fbe58],.dcall-list-leave-to[data-v-550fbe58]{transform:none}}.student-attendance-tabs[data-v-61f367f8]{display:flex;flex-direction:column;gap:var(--space-3)}.tabs-header[data-v-61f367f8]{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}.rollcall-table[data-v-8c50cc2b]{display:flex;flex-direction:column;gap:var(--space-2, 8px)}.rollcall-actions[data-v-8c50cc2b]{display:flex;gap:var(--space-2, 8px);margin-bottom:var(--space-2, 8px);flex-wrap:wrap}.student-list[data-v-8c50cc2b]{display:flex;flex-direction:column;gap:6px}.student-row[data-v-8c50cc2b]{display:flex;gap:var(--space-2, 8px);align-items:center;padding:var(--space-2, 8px);background:var(--pt-surface-card, #fff);border:var(--pt-hairline, 1px solid #e5e7eb);border-radius:var(--radius-md, 8px);flex-wrap:wrap}.student-row.is-absent[data-v-8c50cc2b]{background:var(--color-warning-soft)}.student-no[data-v-8c50cc2b]{font-size:12px;color:var(--pt-text-muted, #9ca3af);min-width:50px}.student-name[data-v-8c50cc2b]{font-weight:500;color:var(--pt-text-strong, #111827);min-width:80px}.remark-input[data-v-8c50cc2b]{flex:1;min-width:120px}.empty-state[data-v-8c50cc2b]{text-align:center;padding:var(--space-6, 24px);color:var(--pt-text-muted, #9ca3af)}@media(max-width:600px){.student-row[data-v-8c50cc2b]{flex-direction:column;align-items:stretch;gap:var(--space-2, 8px)}.student-row[data-v-8c50cc2b] .el-radio-group{display:grid;grid-template-columns:repeat(5,1fr);width:100%}.student-row[data-v-8c50cc2b] .el-radio-group .el-radio-button{width:100%}.student-row[data-v-8c50cc2b] .el-radio-group .el-radio-button__inner{width:100%;min-height:var(--touch-target-min, 44px);padding:8px 2px;font-size:var(--text-xs, 12px);display:flex;align-items:center;justify-content:center}.remark-input[data-v-8c50cc2b]{flex:none;min-width:0;width:100%}}.monthly-stats[data-v-047c80a6]{display:flex;flex-direction:column;gap:var(--space-4, 16px)}.stats-header[data-v-047c80a6]{display:flex;gap:var(--space-3, 12px);align-items:center;flex-wrap:wrap}.empty-state[data-v-047c80a6]{text-align:center;padding:var(--space-6, 24px);color:var(--pt-text-muted, #9ca3af)}.summary-grid[data-v-047c80a6]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.summary-card[data-v-047c80a6]{border-radius:16px}.summary-label[data-v-047c80a6]{color:var(--text-secondary);font-size:13px}.summary-value[data-v-047c80a6]{margin-top:10px;font-size:28px;font-weight:700}.summary-value.is-success[data-v-047c80a6]{color:#166534}.summary-value.is-primary[data-v-047c80a6]{color:var(--color-info-darker)}.summary-value.is-warning[data-v-047c80a6]{color:var(--color-warning-darker)}.summary-value.is-danger[data-v-047c80a6]{color:var(--color-danger-darker)}.summary-value.is-info[data-v-047c80a6]{color:var(--neutral-600)}.chart-card[data-v-047c80a6],.alert-card[data-v-047c80a6]{margin-top:0}.card-title[data-v-047c80a6]{font-weight:600}.chart-container[data-v-047c80a6]{height:280px}.alert-list[data-v-047c80a6]{display:flex;gap:8px;flex-wrap:wrap}.badge[data-v-6b792eb3]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--color-warning-soft);color:#c2410c;border:1px solid #fed7aa;border-radius:999px;font-size:var(--text-xs);font-weight:500;cursor:pointer;transition:background var(--transition-base);-webkit-tap-highlight-color:transparent}.badge[data-v-6b792eb3]:hover{background:#ffedd5}.badge--failed[data-v-6b792eb3]{background:var(--color-danger-soft);color:var(--color-danger-darker);border-color:var(--color-danger-soft)}.badge--failed[data-v-6b792eb3]:hover{background:var(--color-danger-soft)}.badge__icon[data-v-6b792eb3]{font-size:12px}.offline-panel[data-v-745f3488]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-warning-soft);border:1px solid #fde68a;border-radius:var(--radius-md);margin-bottom:var(--space-3)}.offline-panel.is-offline[data-v-745f3488]{background:var(--color-danger-soft);border-color:var(--color-danger-soft)}.status-text[data-v-745f3488]{font-size:var(--text-sm);color:var(--pt-text-strong)}.status-text--offline[data-v-745f3488]{color:var(--color-danger-darker);font-weight:500}.offline-panel__actions[data-v-745f3488]{display:flex;gap:var(--space-2)}.page-header[data-v-0ac62458]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.page-header h3[data-v-0ac62458]{margin:0;font-size:1.2rem;font-weight:600}.review-list[data-v-0ac62458]{margin:6px 0 0;padding-left:18px;font-size:13px;line-height:1.7}.filter-label[data-v-0ac62458]{font-size:12px;color:var(--text-tertiary)}.daily-filters[data-v-0ac62458]{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.save-row[data-v-0ac62458]{margin-top:16px;text-align:right}.contact-book-filter-wrap[data-v-7fa0b564]{display:flex;flex-direction:column;gap:var(--space-3)}.filter-header-row[data-v-7fa0b564]{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.batch-bar[data-v-7fa0b564]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3)}.student-card[data-v-56130d63]{cursor:pointer;transition:transform var(--transition-base),box-shadow var(--transition-base)}.student-card[data-v-56130d63]:hover{transform:translateY(-2px)}.card-top[data-v-56130d63]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2)}.card-name[data-v-56130d63]{font-size:var(--text-lg);font-weight:600;color:var(--text-primary)}.card-body[data-v-56130d63]{display:flex;align-items:flex-start;gap:var(--space-3);min-height:56px}.card-mood[data-v-56130d63]{font-size:32px;line-height:1}.mood-empty[data-v-56130d63]{font-size:24px;color:var(--text-tertiary)}.card-meta[data-v-56130d63]{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.card-note[data-v-56130d63]{font-size:var(--text-sm);color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-photos[data-v-56130d63]{display:flex;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--text-tertiary)}.card-action[data-v-56130d63]{margin-top:var(--space-2);display:flex;justify-content:flex-end}.muted[data-v-56130d63]{color:var(--text-tertiary)}.drawer-form[data-v-67aa935e]{padding:0 var(--space-2);display:flex;flex-direction:column;gap:var(--space-2)}.form-row[data-v-67aa935e]{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.photo-block[data-v-67aa935e]{display:flex;flex-direction:column;gap:var(--space-2);width:100%}.photo-list[data-v-67aa935e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--space-2)}.photo-item[data-v-67aa935e]{display:flex;flex-direction:column;gap:4px}.photo-item[data-v-67aa935e] .el-image{width:100%;height:100px;border-radius:var(--radius-sm);overflow:hidden}.upload-tip[data-v-67aa935e]{font-size:var(--text-xs);margin-top:4px}.drawer-footer[data-v-67aa935e]{display:flex;justify-content:flex-end;gap:var(--space-2)}.muted[data-v-67aa935e]{color:var(--text-tertiary)}.hint[data-v-67aa935e]{font-size:var(--text-sm)}@media(max-width:767.98px){.form-row[data-v-67aa935e]{grid-template-columns:1fr}}.contact-book-page[data-v-43f1e2ea]{display:flex;flex-direction:column;gap:var(--space-4)}.from-hub-bar[data-v-43f1e2ea]{margin:0 0 12px;padding:4px 0}.tpl-list[data-v-43f1e2ea]{display:flex;flex-direction:column;gap:var(--space-2)}.tpl-row[data-v-43f1e2ea]{display:flex;gap:var(--space-2);align-items:center}.hint[data-v-43f1e2ea]{font-size:var(--text-xs);color:var(--pt-text-muted);margin-top:var(--space-2)}.empty[data-v-43f1e2ea]{color:var(--pt-text-muted);padding:var(--space-3);text-align:center}.page-header[data-v-43f1e2ea]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.page-header h2[data-v-43f1e2ea]{margin:0;font-size:var(--text-2xl);font-weight:700;color:var(--text-primary)}.completion-card[data-v-43f1e2ea]{border:1px solid var(--border-color-light)}.completion-row[data-v-43f1e2ea]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.completion-stats[data-v-43f1e2ea]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;color:var(--text-secondary)}.completion-stats .stat strong[data-v-43f1e2ea]{color:var(--text-primary);font-size:var(--text-lg);margin:0 4px}.card-grid[data-v-43f1e2ea]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.portal-calendar[data-v-0762221a]{padding:10px}.sync-alert[data-v-0762221a]{margin-bottom:var(--space-4)}.legend[data-v-0762221a]{display:flex;gap:var(--space-4);margin-top:var(--space-3);flex-wrap:wrap}.legend-item[data-v-0762221a]{display:flex;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--text-secondary)}.legend-dot[data-v-0762221a]{width:10px;height:10px;border-radius:50%}.month-nav[data-v-25fff8d5]{display:flex;align-items:center;gap:var(--space-4)}.month-label[data-v-25fff8d5]{font-size:var(--text-xl);font-weight:600;min-width:140px;text-align:center;color:var(--text-primary)}.stats-card[data-v-25fff8d5],.salary-card[data-v-25fff8d5]{margin-bottom:var(--space-6);border-radius:var(--radius-lg)!important}.stats-card h3[data-v-25fff8d5],.salary-card h3[data-v-25fff8d5]{margin:0 0 var(--space-5) 0;font-size:var(--text-xl);font-weight:600;color:var(--text-primary)}.stats-row[data-v-25fff8d5]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-5)}.stat-item[data-v-25fff8d5]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-5) var(--space-4);background:var(--bg-color);border-radius:var(--radius-md);border:1px solid var(--border-color);transition:transform .2s,box-shadow .2s}.stat-item[data-v-25fff8d5]:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}.stat-value[data-v-25fff8d5]{font-size:28px;font-weight:700;line-height:1.2}.stat-value.blue[data-v-25fff8d5]{color:var(--color-primary)}.stat-value.orange[data-v-25fff8d5]{color:var(--color-warning)}.stat-value.red[data-v-25fff8d5]{color:var(--color-danger)}.stat-value.gray[data-v-25fff8d5]{color:var(--text-secondary)}.stat-label[data-v-25fff8d5]{font-size:var(--text-sm);color:var(--text-secondary);margin-top:8px;font-weight:500}.text-danger[data-v-25fff8d5]{color:var(--color-danger);font-weight:600}.text-warning[data-v-25fff8d5]{color:var(--color-warning);font-weight:600}.net-salary-box[data-v-25fff8d5]{margin-top:var(--space-6);padding:var(--space-6);background:linear-gradient(135deg,var(--color-primary) 0%,#4338ca 100%);border-radius:var(--radius-lg);display:flex;justify-content:space-between;align-items:center;box-shadow:0 10px 15px -3px #4f46e54d}.net-label[data-v-25fff8d5]{color:#ffffffe6;font-size:var(--text-lg);font-weight:500}.net-value[data-v-25fff8d5]{color:var(--surface-color);font-size:32px;font-weight:700;letter-spacing:.5px}@media(max-width:767.98px){.month-label[data-v-25fff8d5]{font-size:var(--text-lg);min-width:120px}.stats-row[data-v-25fff8d5]{grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.stat-item[data-v-25fff8d5]{padding:var(--space-4) var(--space-3)}.stat-value[data-v-25fff8d5]{font-size:var(--text-3xl)}.net-salary-box[data-v-25fff8d5]{flex-direction:column;align-items:flex-start;gap:8px;padding:var(--space-4)}.net-value[data-v-25fff8d5]{font-size:28px}}.portal-announcements[data-v-3bb0cb4c]{padding:10px}.announcement-list[data-v-3bb0cb4c]{display:flex;flex-direction:column;gap:10px}.ann-card[data-v-3bb0cb4c]{background:var(--surface-color);border:1px solid var(--border-color);border-radius:8px;padding:14px var(--space-4);cursor:pointer;transition:box-shadow .15s,border-color .15s}.ann-card[data-v-3bb0cb4c]:hover{box-shadow:0 2px 8px #00000014}.ann-unread[data-v-3bb0cb4c]{border-left:4px solid var(--color-info);background:#f0f7ff}.ann-urgent[data-v-3bb0cb4c]{border-left-color:var(--color-danger)}.ann-urgent.ann-unread[data-v-3bb0cb4c]{background:#fef0f0}.ann-pinned[data-v-3bb0cb4c]{border-top:2px solid var(--color-warning)}.ann-header[data-v-3bb0cb4c]{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:6px}.ann-title-row[data-v-3bb0cb4c]{display:flex;align-items:center}.unread-dot[data-v-3bb0cb4c]{width:8px;height:8px;border-radius:50%;background:var(--color-info);margin-right:8px;flex-shrink:0}.ann-title[data-v-3bb0cb4c]{font-size:15px;font-weight:600;color:var(--text-primary)}.ann-meta[data-v-3bb0cb4c]{font-size:var(--text-xs);color:var(--pt-text-muted);white-space:nowrap}.ann-preview[data-v-3bb0cb4c]{margin-top:8px;font-size:var(--text-sm);color:var(--pt-text-muted);line-height:1.5}.ann-content[data-v-3bb0cb4c]{margin-top:10px;font-size:var(--text-base);color:var(--text-secondary);line-height:1.7;white-space:pre-wrap;padding:10px;background:var(--bg-color);border-radius:4px}.ann-expanded[data-v-3bb0cb4c]{box-shadow:0 2px 12px #0000001a}@media(max-width:767.98px){.ann-header[data-v-3bb0cb4c]{flex-direction:column}.ann-meta[data-v-3bb0cb4c]{margin-top:4px}}.ann-attachments[data-v-3bb0cb4c]{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}.att-item[data-v-3bb0cb4c]{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;min-width:96px}.att-item[data-v-3bb0cb4c]:hover{background:var(--bg-color)}.att-thumb[data-v-3bb0cb4c]{width:80px;height:80px;object-fit:cover;border-radius:4px}.att-name[data-v-3bb0cb4c]{font-size:12px;color:var(--text-secondary);text-align:center;max-width:96px;word-break:break-word}.portal-profile[data-v-6ad01dee]{padding:10px}.profile-card[data-v-6ad01dee]{margin-bottom:var(--space-4)}.card-title[data-v-6ad01dee]{font-size:15px;font-weight:600;color:var(--text-primary)}.card-header[data-v-6ad01dee]{display:flex;justify-content:space-between;align-items:center}.edit-form[data-v-6ad01dee]{max-width:min(600px,100%)}.line-bind-guide[data-v-6ad01dee]{display:flex;gap:20px;align-items:flex-start;padding:14px;background:var(--bg-color, #fafafa);border-radius:8px;border:1px solid var(--border-color-lighter, #ebeef5)}.line-bind-steps[data-v-6ad01dee]{flex:1;min-width:0}.step-title[data-v-6ad01dee]{font-weight:600;font-size:13px;color:var(--text-primary);margin-bottom:6px}.step-list[data-v-6ad01dee]{margin:0 0 10px;padding-left:20px;font-size:13px;color:var(--text-regular, var(--text-secondary));line-height:1.7}.step-list code[data-v-6ad01dee]{background:#0000000d;padding:0 4px;border-radius:3px;font-family:ui-monospace,monospace;font-size:12px}.line-bind-actions[data-v-6ad01dee]{display:flex;gap:8px;flex-wrap:wrap}.line-bind-qr[data-v-6ad01dee]{flex-shrink:0;text-align:center}.line-bind-qr img[data-v-6ad01dee]{display:block;width:160px;height:160px;border-radius:6px;border:1px solid var(--border-color-lighter, #ebeef5);background:#fff}.qr-caption[data-v-6ad01dee]{margin-top:6px;font-size:12px;color:var(--text-secondary, var(--text-tertiary))}.line-bot-url-missing[data-v-6ad01dee]{margin:8px 0 0;padding:8px 10px;background:var(--color-warning-soft);border:1px solid #ffe1a8;border-radius:4px;font-size:12px;color:#b88230}.line-bot-url-missing code[data-v-6ad01dee]{background:#0000000f;padding:0 4px;border-radius:3px;font-family:ui-monospace,monospace}@media(max-width:767.98px){[data-v-6ad01dee] .el-descriptions{--el-descriptions-item-bordered-label-background: var(--bg-color)}.line-bind-guide[data-v-6ad01dee]{flex-direction:column-reverse;align-items:center}.line-bind-steps[data-v-6ad01dee]{width:100%}}.change-password-page[data-v-4fdc9544]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.change-password-card[data-v-4fdc9544]{width:440px;padding:40px;background:var(--surface-color);border-radius:12px;box-shadow:0 20px 60px #0000004d}.header[data-v-4fdc9544]{text-align:center;margin-bottom:28px}.lock-icon[data-v-4fdc9544]{font-size:40px;margin-bottom:12px}.header h2[data-v-4fdc9544]{font-size:22px;color:var(--text-primary);margin:0 0 8px}.header p[data-v-4fdc9544]{color:var(--text-tertiary);font-size:14px;margin:0}.user-hint[data-v-4fdc9544]{margin-top:20px;text-align:center;font-size:13px;color:var(--text-tertiary)}.password-rules[data-v-4fdc9544]{margin-bottom:24px;padding:14px 16px;border-radius:10px;background:var(--bg-color-soft);border:1px solid var(--border-color)}.password-rules__title[data-v-4fdc9544]{font-size:14px;font-weight:600;margin-bottom:8px;color:var(--text-primary)}.password-rules__list[data-v-4fdc9544]{margin:0;padding-left:20px;color:var(--text-secondary);font-size:13px;line-height:1.7}.summary-row[data-v-f243a58e]{margin-bottom:16px}.summary-card[data-v-f243a58e]{text-align:center;padding:4px 0}.card-val[data-v-f243a58e]{font-size:28px;font-weight:700;color:var(--color-info-darker)}.card-label[data-v-f243a58e]{font-size:13px;color:var(--text-secondary);margin-top:4px}.no-course[data-v-f243a58e]{color:var(--text-tertiary)}.empty-hint[data-v-f243a58e]{text-align:center;color:var(--text-tertiary);padding:24px 0;font-size:14px}.session-list[data-v-3f397372]{display:flex;flex-direction:column}.filter-row[data-v-3f397372]{margin-top:12px;margin-bottom:12px}.no-record[data-v-3f397372]{color:var(--text-tertiary);font-size:13px}.present-count[data-v-3f397372]{color:var(--color-success);font-weight:600}.count-sep[data-v-3f397372]{color:var(--text-tertiary)}.empty-hint[data-v-3f397372]{text-align:center;color:var(--text-tertiary);padding:24px 0;font-size:14px}.drawer-top-actions[data-v-abba162b]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:4px}.drawer-filter-bar[data-v-abba162b]{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}.drawer-actions[data-v-abba162b]{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.portal-activity[data-v-fd88dffd]{padding:16px}.page-title[data-v-fd88dffd]{margin:0 0 16px;font-size:20px;font-weight:600}.el-table .unmarked-row td{background-color:var(--color-warning-soft)!important}.portal-leave-history[data-v-75e9041a]{padding:16px}.page-title[data-v-75e9041a]{margin:0 0 16px;font-size:var(--text-2xl, 1.5rem);font-weight:700;color:var(--pt-text-strong, #1a1a2e)}.hint[data-v-75e9041a]{color:var(--el-text-color-secondary);font-size:12px;margin-left:4px}
