.login-wrap[data-v-07d84e06]{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card[data-v-07d84e06]{width:400px;display:flex;flex-direction:column;gap:16px;align-items:center;text-align:center;padding:0 36px}.login-card h1[data-v-07d84e06]{font-size:28px}.avatar[data-v-07d84e06]{width:240px;height:240px;border-radius:50%;object-fit:cover;filter:drop-shadow(0 12px 28px rgba(var(--primary-rgb),.25))}input[data-v-07d84e06],button[data-v-07d84e06]{width:100%}.error[data-v-07d84e06]{color:var(--danger);font-size:13px}.dashboard[data-v-d9de3fa2]{display:flex;flex-direction:column;gap:16px}.head[data-v-d9de3fa2]{display:flex;align-items:center;justify-content:space-between}h2[data-v-d9de3fa2]{font-size:18px}.head-right[data-v-d9de3fa2]{display:flex;align-items:center;gap:10px}.theme-pick[data-v-d9de3fa2]{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:var(--card);border:1px solid var(--glass-border);border-radius:999px;box-shadow:var(--shadow)}.swatch[data-v-d9de3fa2]{width:18px;height:18px;padding:0;border-radius:50%;border:2px solid transparent;box-shadow:none}.swatch.active[data-v-d9de3fa2]{border-color:#fff;box-shadow:0 0 0 2px var(--primary)}.swatch.custom[data-v-d9de3fa2]{display:inline-flex;cursor:pointer;background:conic-gradient(#f06ba8,#f5c04c,#23a866,#2b7fff,#8b5cf6,#f06ba8);overflow:hidden}.swatch.custom input[data-v-d9de3fa2]{width:100%;height:100%;padding:0;border:none;opacity:0;cursor:pointer}.date-chip[data-v-d9de3fa2]{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;background:#fff;border:1px solid var(--border);border-radius:999px;font-size:13px;color:var(--muted);box-shadow:var(--shadow)}.icon[data-v-d9de3fa2]{width:15px;height:15px;fill:currentColor}.stat-grid[data-v-d9de3fa2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.stat[data-v-d9de3fa2]{cursor:pointer;display:flex;align-items:center;gap:14px;padding:18px;transition:transform .12s,box-shadow .12s}.stat[data-v-d9de3fa2]:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(var(--primary-rgb),.1)}.stat-icon[data-v-d9de3fa2]{width:44px;height:44px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg[data-v-d9de3fa2]{width:22px;height:22px;fill:currentColor}.stat.blue .stat-icon[data-v-d9de3fa2]{background:var(--primary-soft);color:var(--primary)}.stat.green .stat-icon[data-v-d9de3fa2]{background:#e8f8ef;color:#22a45d}.stat.purple .stat-icon[data-v-d9de3fa2]{background:#f1ecff;color:#7c5cff}.stat.orange .stat-icon[data-v-d9de3fa2]{background:#fff3e6;color:#f08c1a}.value[data-v-d9de3fa2]{font-size:26px;font-weight:700;line-height:1.1}.stat.blue .value[data-v-d9de3fa2]{color:var(--primary)}.stat.green .value[data-v-d9de3fa2]{color:#22a45d}.stat.purple .value[data-v-d9de3fa2]{color:#7c5cff}.stat.orange .value[data-v-d9de3fa2]{color:#f08c1a}.label[data-v-d9de3fa2]{margin-top:2px;font-size:13px}.panels[data-v-d9de3fa2]{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.panel-sortable[data-v-d9de3fa2]{position:relative;box-sizing:border-box;flex:0 0 calc(50% - 6px);min-width:280px;transition:transform .16s ease,opacity .16s ease,border-color .16s ease,box-shadow .16s ease}.panel-sortable.dragging[data-v-d9de3fa2]{opacity:.42;transform:scale(.985)}.panel-sortable.drag-over[data-v-d9de3fa2]{border-color:var(--primary);box-shadow:0 0 0 2px rgba(var(--primary-rgb),.12),var(--shadow)}.panel-sortable.resizing[data-v-d9de3fa2]{transition:none;box-shadow:0 0 0 2px rgba(var(--primary-rgb),.16),var(--shadow)}.panel-resize-handle[data-v-d9de3fa2]{position:absolute;right:6px;bottom:6px;z-index:2;width:22px;height:22px;padding:0;border:0;border-radius:7px;background:transparent;color:var(--muted);box-shadow:none;cursor:nwse-resize;touch-action:none}.panel-resize-handle[data-v-d9de3fa2]:before{content:"";position:absolute;right:3px;bottom:3px;width:10px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;opacity:.7}.panel-resize-handle[data-v-d9de3fa2]:hover{background:var(--primary-soft);color:var(--primary)}.panel-resize-handle span[data-v-d9de3fa2]{display:none}.panel-drag-handle[data-v-d9de3fa2]{width:30px;height:30px;margin-left:auto;padding:5px;display:inline-grid;place-items:center;flex:0 0 auto;border:0;border-radius:8px;background:transparent;color:var(--muted);box-shadow:none;cursor:grab;touch-action:none}.panel-drag-handle[data-v-d9de3fa2]:hover{background:var(--primary-soft);color:var(--primary)}.panel-drag-handle[data-v-d9de3fa2]:active{cursor:grabbing}.panel-drag-handle svg[data-v-d9de3fa2]{width:18px;height:18px;fill:currentColor;pointer-events:none}.week-panel[data-v-d9de3fa2]{cursor:pointer}.panel h3[data-v-d9de3fa2]{font-size:15px;margin-bottom:12px;display:flex;align-items:center;gap:7px;min-width:0;flex-wrap:wrap}.panel h3 .icon[data-v-d9de3fa2]{color:var(--primary)}.panel h3 .icon.warn[data-v-d9de3fa2]{color:#f08c1a}.panel h3 .mood-icon[data-v-d9de3fa2]{color:#e98a2f}.reminder-bell[data-v-d9de3fa2]{position:relative;display:inline-flex;align-items:center;justify-content:center}.panel h3 .reminder-icon[data-v-d9de3fa2]{position:relative;z-index:1;color:#d79518}.reminder-bell.active .reminder-icon[data-v-d9de3fa2]{transform-origin:50% 8%;animation:reminder-bell-ring-d9de3fa2 .42s ease-in-out infinite}.reminder-bell.active .reminder-icon[data-v-d9de3fa2]{color:var(--danger)}.reminder-bell.active[data-v-d9de3fa2]:before,.reminder-bell.active[data-v-d9de3fa2]:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;z-index:0;border:2px solid var(--danger);border-radius:50%;pointer-events:none;animation:panel-reminder-sound-wave-d9de3fa2 1.25s ease-out infinite}.reminder-bell.active[data-v-d9de3fa2]:after{animation-delay:.62s}@keyframes reminder-bell-ring-d9de3fa2{0%,to{transform:rotate(-26deg) scale(1.08)}50%{transform:rotate(26deg) scale(1.08)}}@keyframes panel-reminder-sound-wave-d9de3fa2{0%{opacity:.62;transform:scale(.62)}to{opacity:0;transform:scale(1.9)}}@media (prefers-reduced-motion: reduce){.reminder-bell.active .reminder-icon[data-v-d9de3fa2],.reminder-bell.active[data-v-d9de3fa2]:before,.reminder-bell.active[data-v-d9de3fa2]:after{animation:none}.reminder-bell.active[data-v-d9de3fa2]:before,.reminder-bell.active[data-v-d9de3fa2]:after{display:none}}.count[data-v-d9de3fa2]{font-size:12px;font-weight:400;background:var(--primary-soft);color:var(--primary);padding:1px 10px;border-radius:999px;white-space:nowrap}.lesson-list[data-v-d9de3fa2]{list-style:none;display:flex;flex-direction:column;gap:6px;min-width:0}.lesson-list li[data-v-d9de3fa2]{display:flex;gap:10px;align-items:center;font-size:14px;padding:9px 12px;border-radius:10px;background:var(--soft-bg);border:1px solid rgba(var(--primary-rgb),.08);min-width:0;flex-wrap:wrap;overflow-wrap:anywhere}.lesson-list li strong[data-v-d9de3fa2],.lesson-list li .muted[data-v-d9de3fa2]{min-width:0;overflow-wrap:anywhere}.week-dist[data-v-d9de3fa2]{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;padding:4px 2px 0}.dist-col[data-v-d9de3fa2]{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}.dist-n[data-v-d9de3fa2]{font-size:12px;color:var(--muted)}.dist-track[data-v-d9de3fa2]{width:100%;max-width:26px;height:76px;display:flex;align-items:flex-end;background:var(--soft-bg);border-radius:8px;overflow:hidden}.dist-bar[data-v-d9de3fa2]{width:100%;background:linear-gradient(180deg,rgba(var(--primary-rgb),.85),rgba(var(--primary-rgb),.55));border-radius:8px 8px 0 0;min-height:2px;transition:height .3s}.dist-day[data-v-d9de3fa2]{font-size:12px;color:var(--muted)}.dist-col.today .dist-day[data-v-d9de3fa2]{color:var(--primary);font-weight:600}.dist-col.today .dist-n[data-v-d9de3fa2]{color:var(--primary)}.time-pill[data-v-d9de3fa2]{font-size:12px;font-weight:600;color:var(--primary);background:var(--primary-soft);padding:2px 10px;border-radius:999px;white-space:nowrap}.empty[data-v-d9de3fa2]{text-align:center;padding:18px 0}.reminder-panel[data-v-d9de3fa2]{display:flex;flex-direction:column;min-height:220px}.reminder-form[data-v-d9de3fa2]{display:grid;grid-template-columns:minmax(130px,.7fr) minmax(180px,1.8fr) auto auto;gap:7px;align-items:center}.reminder-form input[data-v-d9de3fa2]{min-width:0;width:100%}.reminder-error[data-v-d9de3fa2]{margin-top:7px;color:var(--danger);font-size:12px}.reminder-list[data-v-d9de3fa2]{display:flex;flex-direction:column;gap:7px;margin-top:10px;max-height:300px;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:3px}.completed-reminders-toggle[data-v-d9de3fa2]{display:flex;align-items:center;justify-content:center;gap:5px;width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:7px;background:#8896ad14;color:var(--muted);box-shadow:none;font-size:12px;font-weight:600}.completed-reminders-toggle[data-v-d9de3fa2]:hover{background:#8896ad24;color:var(--text)}.completed-reminders-toggle svg[data-v-d9de3fa2]{width:16px;height:16px;fill:currentColor;transition:transform .16s ease}.completed-reminders-toggle svg.expanded[data-v-d9de3fa2]{transform:rotate(180deg)}.reminder-item[data-v-d9de3fa2]{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 10px;border:1px solid rgba(var(--primary-rgb),.1);border-radius:8px;background:var(--soft-bg)}.reminder-item.editing[data-v-d9de3fa2]{border-color:var(--primary);box-shadow:0 0 0 2px rgba(var(--primary-rgb),.08)}.reminder-item.expired[data-v-d9de3fa2]{border-color:#e5484d6b;background:#e5484d12}.reminder-item.completed[data-v-d9de3fa2]{border-color:#2fa96e33;background:#2fa96e0f}.reminder-item time[data-v-d9de3fa2]{min-width:62px;color:var(--primary);font-size:14px;font-weight:700;white-space:nowrap}.reminder-item.expired time[data-v-d9de3fa2]{color:var(--danger)}.reminder-item.completed time[data-v-d9de3fa2]{color:var(--success)}.reminder-main[data-v-d9de3fa2]{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.reminder-main input[type=checkbox][data-v-d9de3fa2]{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;width:18px;height:18px;padding:0;flex:0 0 auto;border:2px solid var(--muted);border-radius:50%;background:transparent;box-shadow:none;cursor:pointer}.reminder-main input[type=checkbox][data-v-d9de3fa2]:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(var(--primary-rgb),.12)}.reminder-main input[type=checkbox][data-v-d9de3fa2]:checked{border-color:var(--success);background:transparent}.reminder-main input[type=checkbox][data-v-d9de3fa2]:checked:after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border-right:2px solid var(--success);border-bottom:2px solid var(--success);transform:rotate(45deg)}.reminder-item.expired .reminder-main input[type=checkbox][data-v-d9de3fa2]{border-color:var(--danger)}.reminder-main p[data-v-d9de3fa2]{min-width:120px;flex:1 1 120px;line-height:1.5;font-weight:600;overflow-wrap:anywhere}.reminder-item.expired .reminder-main p[data-v-d9de3fa2]{color:var(--danger)}.reminder-item.completed .reminder-main p[data-v-d9de3fa2]{color:var(--success)}.reminder-status[data-v-d9de3fa2]{flex:0 0 auto;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.reminder-status.pending[data-v-d9de3fa2]{color:var(--muted);background:#8896ad1f}.reminder-status.completed[data-v-d9de3fa2]{color:#188e53;background:#e8f8ef}.reminder-status.delayed[data-v-d9de3fa2]{color:var(--danger);background:#e5484d1a}.reminder-actions[data-v-d9de3fa2]{display:flex;gap:2px}.reminder-action[data-v-d9de3fa2]{width:28px;height:28px;padding:5px;border-radius:6px;background:transparent;color:var(--muted);box-shadow:none}.reminder-action[data-v-d9de3fa2]:hover{background:var(--primary-soft);color:var(--primary)}.reminder-action.danger-action[data-v-d9de3fa2]:hover{background:#e5484d1a;color:var(--danger)}.reminder-action svg[data-v-d9de3fa2]{width:16px;height:16px;fill:currentColor}.mood-content[data-v-d9de3fa2]{display:flex;align-items:stretch;min-height:0;overflow:hidden}.mood-panel[data-v-d9de3fa2]{display:flex;flex-direction:column;min-height:0;overflow:hidden}.mood-panel .mood-content[data-v-d9de3fa2]{flex:1;height:0}.mood-current[data-v-d9de3fa2]{width:100%;min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:4px 10px;border:1px solid transparent;background:transparent;box-shadow:none;overflow:hidden}.mood-current.filled[data-v-d9de3fa2]{padding:0;border:0;border-radius:10px}.mood-current[data-v-d9de3fa2]:not(:disabled):hover{border-color:var(--primary-line);background:var(--primary-soft)}.mood-current.filled[data-v-d9de3fa2]:hover{background:transparent}.mood-current[data-v-d9de3fa2]:disabled{cursor:default}.mood-open[data-v-d9de3fa2]{margin-left:auto}.mood-open+.panel-drag-handle[data-v-d9de3fa2]{margin-left:0}.mood-current img[data-v-d9de3fa2]{width:100%;height:100%;min-height:0;object-fit:contain}.mood-placeholder[data-v-d9de3fa2]{width:108px;height:108px;display:grid;place-items:center;border:1px dashed var(--border);border-radius:18px;color:var(--muted);font-size:30px}.mood-options[data-v-d9de3fa2]{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;flex:1}.mood-option[data-v-d9de3fa2]{width:100%;aspect-ratio:1;padding:3px;border:1px solid transparent;border-radius:10px;background:var(--soft-bg);box-shadow:none;cursor:grab;transition:transform .16s ease,border-color .16s ease,background .16s ease,opacity .16s ease}.mood-option[data-v-d9de3fa2]:hover,.mood-option.active[data-v-d9de3fa2]{border-color:var(--primary);background:var(--primary-soft)}.mood-option[data-v-d9de3fa2]:active{cursor:grabbing}.mood-option.dragging[data-v-d9de3fa2]{opacity:.38;transform:scale(.92)}.mood-option.drag-over[data-v-d9de3fa2]{border-color:var(--primary);transform:scale(1.05)}.mood-option img[data-v-d9de3fa2]{width:100%;height:100%;object-fit:contain}.mood-overlay[data-v-d9de3fa2]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:20px;background:#181c2a59}.mood-dialog[data-v-d9de3fa2]{width:min(620px,100%);max-height:calc(100dvh - 40px);padding:18px;border:1px solid var(--glass-border);border-radius:14px;background:var(--card);box-shadow:0 18px 48px #1e28463d;display:flex;flex-direction:column;overflow:hidden}.mood-dialog-head[data-v-d9de3fa2]{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.mood-dialog-head h3[data-v-d9de3fa2]{margin:0;font-size:16px}.mood-dialog .mood-options[data-v-d9de3fa2]{grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:4px}.mood-dialog .mood-option[data-v-d9de3fa2]{min-width:0}.icon-btn[data-v-d9de3fa2]{width:30px;height:30px;padding:0;border-radius:50%;background:transparent;color:var(--muted);font-size:22px;line-height:1;box-shadow:none}.icon-btn[data-v-d9de3fa2]:hover{background:var(--primary-soft);color:var(--primary)}@media (max-width: 768px){.panel-sortable[data-v-d9de3fa2]{flex-basis:100%!important;width:100%;min-width:0}.reminder-form[data-v-d9de3fa2]{grid-template-columns:minmax(105px,.85fr) minmax(0,1.35fr) 52px;gap:6px}.reminder-form>input[data-v-d9de3fa2]{height:36px;box-sizing:border-box}.reminder-form>button.small[data-v-d9de3fa2]:not(.ghost){width:52px;height:36px;padding:0 8px;white-space:nowrap}.reminder-form .ghost[data-v-d9de3fa2]{grid-column:1 / -1;justify-self:end}.reminder-list[data-v-d9de3fa2]{gap:6px;padding-right:2px}.reminder-item[data-v-d9de3fa2]{grid-template-columns:48px minmax(0,1fr) 54px;gap:6px;min-height:44px;padding:8px}.reminder-item time[data-v-d9de3fa2]{min-width:0;font-size:13px}.reminder-main[data-v-d9de3fa2]{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:6px;flex-wrap:nowrap}.reminder-main p[data-v-d9de3fa2]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.35}.reminder-status[data-v-d9de3fa2]{padding:2px 6px;font-size:10px}.reminder-actions[data-v-d9de3fa2]{gap:0;justify-content:flex-end}.reminder-action[data-v-d9de3fa2]{width:27px;height:27px;padding:5px}.mood-panel .mood-content[data-v-d9de3fa2]{flex:none;height:120px}.mood-current img[data-v-d9de3fa2]{min-height:0}.mood-placeholder[data-v-d9de3fa2]{width:86px;height:86px}.mood-dialog[data-v-d9de3fa2]{width:min(520px,100%)}.mood-dialog .mood-options[data-v-d9de3fa2]{grid-template-columns:repeat(8,minmax(0,1fr));gap:5px}}@media (max-width: 768px){.panels[data-v-d9de3fa2]{flex-direction:column}.stat-grid[data-v-d9de3fa2]{grid-template-columns:repeat(2,1fr)}.stat[data-v-d9de3fa2]{padding:14px;gap:10px}.value[data-v-d9de3fa2]{font-size:22px}}.students[data-v-135a95ae]{display:flex;flex-direction:column;gap:16px}.tabs[data-v-135a95ae]{display:flex;gap:8px;flex-wrap:wrap}.tab[data-v-135a95ae]{padding:8px 18px;border:1px solid var(--border);border-radius:999px;background:transparent;cursor:pointer;font-size:13px;color:var(--muted)}.tab.active[data-v-135a95ae]{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700}.lessons-tag[data-v-135a95ae]{font-weight:700}.gift-th[data-v-135a95ae]{color:#e8871e}.lessons-th[data-v-135a95ae]{color:var(--primary)}.gift-tag[data-v-135a95ae]{font-weight:700;color:#e8871e;background:#ff980024}.gift-row td[data-v-135a95ae]{color:#e8871e;font-weight:600;background:#ff980014}.gift-note[data-v-135a95ae]{color:#e8871e;font-size:12px;margin-bottom:8px}h2[data-v-135a95ae]{font-size:16px;margin-bottom:10px}.row[data-v-135a95ae]{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:8px}.row .field[data-v-135a95ae]{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.num[data-v-135a95ae]{width:110px}.overlay[data-v-135a95ae]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal[data-v-135a95ae]{background:#ffffffd9;border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:12px;padding:22px 26px;width:560px;max-width:100%;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.modal-head[data-v-135a95ae]{display:flex;align-items:center;justify-content:space-between}.modal-head h3[data-v-135a95ae]{font-size:16px}.close[data-v-135a95ae]{background:none;border:none;font-size:22px;cursor:pointer;color:var(--muted);padding:0 4px}.field-row[data-v-135a95ae]{display:flex;gap:14px}.field-row .mfield[data-v-135a95ae]{flex:1}.mfield[data-v-135a95ae]{display:flex;flex-direction:column;gap:6px;font-size:13px}.mfield>span[data-v-135a95ae]{color:#333}.mfield i[data-v-135a95ae]{color:#e55;font-style:normal;margin-right:2px}.mfield input[data-v-135a95ae]{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;width:100%}.err[data-v-135a95ae]{color:#e55;font-size:13px}.detail-head[data-v-135a95ae]{display:flex;align-items:center;gap:12px;margin-bottom:10px}.detail-head h2[data-v-135a95ae]{margin-bottom:0}.detail-title[data-v-135a95ae]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.detail-actions[data-v-135a95ae]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.detail-actions button[data-v-135a95ae]{display:inline-flex;align-items:center;gap:5px}.group-manager-bar[data-v-135a95ae]{display:flex;align-items:flex-end;gap:8px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--primary-soft)}.group-create-field[data-v-135a95ae]{display:flex;align-items:center;gap:8px;min-width:0}.group-create-field span[data-v-135a95ae]{color:var(--muted);font-size:12px;white-space:nowrap}.group-create-field input[data-v-135a95ae]{width:220px;max-width:42vw;padding:7px 9px;border:1px solid var(--border);border-radius:7px;background:var(--card)}.group-draggable[data-v-135a95ae]{cursor:grab;transition:opacity .14s ease,background-color .14s ease}.group-draggable[data-v-135a95ae]:active{cursor:grabbing}.group-draggable.dragging[data-v-135a95ae]{opacity:.24;background:var(--primary-soft)}.group-draggable td[data-v-135a95ae]{transition:box-shadow .1s ease,background-color .1s ease}.group-insert-before td[data-v-135a95ae]{box-shadow:inset 0 3px 0 var(--primary);background:var(--primary-soft)}.group-insert-after td[data-v-135a95ae]{box-shadow:inset 0 -3px 0 var(--primary);background:var(--primary-soft)}.drag-handle[data-v-135a95ae]{color:var(--muted);font-weight:800;margin-right:5px;-webkit-user-select:none;user-select:none}.table-group-row td[data-v-135a95ae]{padding:0;background:var(--primary-soft);transition:background-color .15s ease,box-shadow .15s ease}.table-group-row.drop-active td[data-v-135a95ae]{background:var(--card);box-shadow:inset 0 0 0 2px var(--primary),inset 0 0 24px var(--primary-soft)}.student-drag-preview{position:fixed;z-index:9999;margin:0;table-layout:fixed;pointer-events:none;border-collapse:collapse;background:var(--card);box-shadow:0 10px 28px #1f2d442e,0 2px 8px #1f2d441a;opacity:.96;will-change:transform;transition:opacity .13s ease,filter .13s ease}.student-drag-preview td{box-sizing:border-box}.student-drag-preview.settling{opacity:0;filter:brightness(1.03)}body.student-row-dragging{cursor:grabbing!important;-webkit-user-select:none;user-select:none}.table-group-head[data-v-135a95ae]{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:7px 10px}.group-title[data-v-135a95ae]{display:flex;align-items:center;gap:8px;min-width:0}.group-title strong[data-v-135a95ae]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.group-color[data-v-135a95ae]{width:4px;height:20px;border-radius:2px;background:var(--primary);flex-shrink:0}.group-count[data-v-135a95ae]{min-width:22px;height:20px;padding:0 6px;border-radius:10px;background:var(--primary-soft);color:var(--primary);font-size:11px;font-weight:700;line-height:20px;text-align:center}.group-tools[data-v-135a95ae]{display:flex;gap:2px;flex-shrink:0}.icon-btn[data-v-135a95ae]{width:30px;height:30px;padding:5px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--muted);box-shadow:none}.icon-btn[data-v-135a95ae]:hover{color:var(--primary);background:var(--primary-soft)}.icon-btn.danger-icon[data-v-135a95ae]:hover{color:#c81d31;background:#c81d3114}.algo-body[data-v-135a95ae]{max-height:60vh;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.algo-sec h4[data-v-135a95ae]{font-size:14px;color:var(--primary);margin-bottom:4px}.algo-sec p[data-v-135a95ae]{font-size:13px;line-height:1.7}.algo-sec p.muted[data-v-135a95ae]{font-size:12px}.algo-sec[data-v-135a95ae] .algo-purple{color:#7030a0;font-weight:600}.algo-sec[data-v-135a95ae] .algo-orange{color:#c65f10;font-weight:600}.algo-sec[data-v-135a95ae] .algo-red,.align-note[data-v-135a95ae]{color:#c81d31;font-weight:600}.modal-foot[data-v-135a95ae]{display:flex;justify-content:flex-end;gap:10px}.modal-foot button[data-v-135a95ae]{padding:8px 22px}@media (max-width: 768px){.field-row[data-v-135a95ae]{flex-direction:column}.modal[data-v-135a95ae]{padding:14px 16px}.detail-head[data-v-135a95ae]{align-items:flex-start;flex-direction:column}.detail-actions[data-v-135a95ae]{width:100%}.group-manager-bar[data-v-135a95ae]{align-items:stretch;flex-direction:column}.group-create-field[data-v-135a95ae]{align-items:stretch;flex-direction:column;gap:4px}.group-create-field input[data-v-135a95ae]{width:100%;max-width:none}}.schedule[data-v-848d04b9]{display:flex;flex-direction:column;gap:16px}h2[data-v-848d04b9]{font-size:16px;margin-bottom:6px}.picker[data-v-848d04b9]{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.picker select[data-v-848d04b9]{min-width:220px}.msg[data-v-848d04b9]{color:var(--success);display:inline-flex;align-items:center;gap:5px}.msg.error[data-v-848d04b9]{color:var(--danger)}.msg-icon[data-v-848d04b9]{width:16px;height:16px;fill:currentColor;flex:0 0 auto}.add-open[data-v-848d04b9]{display:inline-flex;align-items:center;gap:5px}.add-open .icon[data-v-848d04b9]{width:15px;height:15px;fill:currentColor}.preset-groups[data-v-848d04b9]{display:flex;flex-direction:column;gap:8px}.preset-row[data-v-848d04b9]{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:8px}.preset-period[data-v-848d04b9]{color:var(--text);font-size:13px;font-weight:700;text-align:center}.presets[data-v-848d04b9]{display:flex;gap:8px;flex-wrap:nowrap;min-width:0;overflow-x:auto;padding:2px 2px 5px;scrollbar-width:thin}.presets .preset[data-v-848d04b9]{flex:0 0 auto}.preset-empty[data-v-848d04b9]{align-self:center;color:var(--muted);font-size:12px}.custom-time-row[data-v-848d04b9]{display:flex;margin-top:8px;padding-left:50px}.preset[data-v-848d04b9]{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;color:#333;cursor:pointer}.preset span[data-v-848d04b9]{font-size:12px;color:var(--muted)}.preset.active[data-v-848d04b9]{border-color:var(--primary);color:var(--primary);background:rgba(var(--primary-rgb),.06)}.preset[data-v-848d04b9]{position:relative}.preset .del[data-v-848d04b9]{position:absolute;top:-6px;right:-6px;width:16px;height:16px;border-radius:50%;background:#e55;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.preset .del .icon[data-v-848d04b9]{width:10px;height:10px;fill:currentColor}.preset .edit[data-v-848d04b9]{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;background:var(--primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.preset .edit .icon[data-v-848d04b9]{width:11px;height:11px;fill:currentColor}.save-block[data-v-848d04b9]{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.rename-block[data-v-848d04b9]{display:flex;align-items:center;gap:8px;margin:8px 0 0 50px;flex-wrap:wrap}.rename-block input[data-v-848d04b9]{width:180px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px}.save-block input[data-v-848d04b9]{padding:6px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;width:180px}.save-block .muted[data-v-848d04b9]{font-size:12px}.presets-head[data-v-848d04b9]{display:flex;align-items:center;gap:10px}.preset-tools[data-v-848d04b9]{display:inline-flex;align-items:center;gap:6px}.del-toggle[data-v-848d04b9]{padding:2px 10px;font-size:12px}.del-toggle.on[data-v-848d04b9]{color:#e55;border-color:#e55}.rename-toggle[data-v-848d04b9]{padding:2px 10px;font-size:12px}.rename-toggle.on[data-v-848d04b9]{color:var(--primary);border-color:var(--primary)}.modal[data-v-848d04b9]{background:#ffffffd9;border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:12px;padding:22px 26px;width:560px;max-width:100%;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px}@media (min-width: 769px){.time-block-modal[data-v-848d04b9]{width:min(932px,calc(100vw - 40px))}.time-block-modal .presets[data-v-848d04b9]{flex-wrap:wrap;overflow-x:visible}}.modal-head[data-v-848d04b9]{display:flex;align-items:center;justify-content:space-between}.modal-head h3[data-v-848d04b9]{font-size:16px}.close[data-v-848d04b9]{background:none;border:none;cursor:pointer;color:var(--muted);padding:0 4px;box-shadow:none}.close .icon[data-v-848d04b9]{width:15px;height:15px;fill:currentColor}.field-row[data-v-848d04b9]{display:flex;gap:14px}.field-row .field[data-v-848d04b9]{flex:1}.field[data-v-848d04b9]{display:flex;flex-direction:column;gap:6px;font-size:13px}.field>span[data-v-848d04b9]{color:#333}.field i[data-v-848d04b9]{color:#e55;font-style:normal;margin-right:2px}.field select[data-v-848d04b9],.field input[data-v-848d04b9],.field textarea[data-v-848d04b9]{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;width:100%}.err[data-v-848d04b9]{color:#e55;font-size:13px}.price-view[data-v-848d04b9]{padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);font-size:14px;color:var(--primary);font-weight:600}.modal-foot[data-v-848d04b9]{display:flex;justify-content:flex-end;gap:10px}.modal-foot button[data-v-848d04b9]{padding:8px 22px}.week-card[data-v-848d04b9]{padding:0}.week-head[data-v-848d04b9]{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border)}.grid-scroll[data-v-848d04b9]{overflow-x:auto}.grid[data-v-848d04b9]{display:grid;grid-template-columns:48px repeat(7,minmax(88px,1fr));min-width:664px}.corner[data-v-848d04b9]{border-bottom:1px solid var(--border)}.col-head[data-v-848d04b9]{text-align:center;padding:10px 4px;font-weight:600;font-size:13px;border-bottom:1px solid var(--border);border-left:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.col-head .dname[data-v-848d04b9]{display:inline-flex;align-items:center;gap:6px}.col-head.today[data-v-848d04b9]{color:var(--primary);background:rgba(var(--primary-rgb),.06)}.col-head .date[data-v-848d04b9]{font-size:11px;font-weight:400;color:var(--muted)}.col-head.today .date[data-v-848d04b9]{color:var(--primary)}.time-col[data-v-848d04b9]{display:flex;flex-direction:column}.hour[data-v-848d04b9]{font-size:12px;color:var(--muted);text-align:right;padding:4px 8px 0 0;box-sizing:border-box}.day-col[data-v-848d04b9]{position:relative;border-left:1px solid var(--border)}.day-col.today[data-v-848d04b9]{background:rgba(var(--primary-rgb),.06)}.hour-line[data-v-848d04b9]{border-bottom:1px solid #f0f1f5;box-sizing:border-box}.block[data-v-848d04b9]{position:absolute;left:4px;right:4px;background:#cdeafd;border:1px solid #8fd0f8;border-radius:6px;padding:2px 4px;font-size:11px;line-height:1.3;color:#1668a5;overflow:hidden;cursor:pointer;box-sizing:border-box}.block[data-v-848d04b9]:hover{filter:brightness(.96)}.block.checked[data-v-848d04b9]{background:#e4e6ea;border-color:#c9ccd4;color:#7a7f8c;cursor:default}.block.leave[data-v-848d04b9]{background:#ffedcc;border-color:#f0c877;color:#a06a00}.overlay[data-v-848d04b9]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.dialog[data-v-848d04b9]{background:#ffffffd9;border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:12px;padding:18px 22px;width:320px;max-width:100%;display:flex;flex-direction:column;gap:10px}.dialog h3[data-v-848d04b9]{font-size:15px}.dialog-btns[data-v-848d04b9]{display:flex;flex-direction:column;gap:8px;margin-top:4px}.pick-list[data-v-848d04b9]{list-style:none;display:flex;flex-direction:column;gap:8px;max-height:260px;overflow-y:auto}.pick-list li[data-v-848d04b9]{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--border);border-radius:8px;padding:6px 10px}.b-time[data-v-848d04b9]{font-weight:600;white-space:nowrap}.b-name[data-v-848d04b9]{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.b-course[data-v-848d04b9]{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 768px){.preset-row[data-v-848d04b9]{grid-template-columns:36px minmax(0,1fr);gap:6px}.presets[data-v-848d04b9]{gap:6px}.preset[data-v-848d04b9]{padding:5px 8px}.custom-time-row[data-v-848d04b9]{padding-left:42px}.rename-block[data-v-848d04b9]{margin-left:42px}.grid[data-v-848d04b9]{grid-template-columns:40px repeat(7,minmax(112px,1fr));min-width:824px}.hour[data-v-848d04b9]{font-size:10px;padding-right:4px}.col-head[data-v-848d04b9]{font-size:12px;padding:6px 2px}.field-row[data-v-848d04b9]{flex-direction:column}.modal[data-v-848d04b9]{padding:14px 16px}}.teacher-week>p[data-v-7c9e5dd4]{margin-bottom:14px}.head-line[data-v-7c9e5dd4]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.multi-toggle.on[data-v-7c9e5dd4]{background:#2e9e5b;color:#fff}.danger[data-v-7c9e5dd4]{background:#f5a623;color:#fff}.overlay[data-v-7c9e5dd4]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal[data-v-7c9e5dd4]{background:#ffffffd9;border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:12px;padding:22px 26px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:14px}.modal-head h3[data-v-7c9e5dd4]{font-size:16px}.modal-foot[data-v-7c9e5dd4]{display:flex;justify-content:flex-end;gap:10px}.modal-foot button[data-v-7c9e5dd4]{padding:8px 22px}.multi-toggle.off[data-v-7c9e5dd4]{background:#d64545;color:#fff}.date-line[data-v-7c9e5dd4]{display:inline-flex;align-items:center;gap:6px}.paste-btn[data-v-7c9e5dd4]{padding:1px 8px;font-size:12px;border-radius:8px;background:#f5a623;color:#fff;font-weight:600}.paste-btn[data-v-7c9e5dd4]:disabled{opacity:.6}.sel-box[data-v-7c9e5dd4]{margin-right:6px;vertical-align:-2px;accent-color:var(--primary)}li.selectable[data-v-7c9e5dd4]{cursor:pointer}li.selected[data-v-7c9e5dd4]{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.toast[data-v-7c9e5dd4]{position:fixed;top:20px;left:50%;transform:translate(-50%);background:#282c3ce6;color:#fff;padding:8px 16px;border-radius:999px;font-size:13px;z-index:100}.week-card[data-v-7c9e5dd4]{padding:0;overflow-x:auto}.grid[data-v-7c9e5dd4]{display:grid;grid-template-columns:repeat(7,minmax(105px,1fr));min-width:735px}.day[data-v-7c9e5dd4]{padding:12px 8px;border-left:1px solid var(--border);display:flex;flex-direction:column}ul[data-v-7c9e5dd4]{flex:1}.day-amount[data-v-7c9e5dd4]{margin-top:10px;padding-top:8px;border-top:1px solid var(--border);text-align:center;font-size:13px;font-weight:600;color:var(--primary)}.day-amount.zero[data-v-7c9e5dd4]{color:var(--muted);font-weight:400}.week-total[data-v-7c9e5dd4]{border-top:1px solid var(--border);padding:12px 14px;display:flex;align-items:center;gap:8px;font-size:14px}.week-total strong[data-v-7c9e5dd4]{color:var(--primary);font-size:16px}.week-total .muted[data-v-7c9e5dd4]{font-size:12px}.day[data-v-7c9e5dd4]:first-child{border-left:none}.day.today[data-v-7c9e5dd4]{background:rgba(var(--primary-rgb),.06)}h3[data-v-7c9e5dd4]{font-size:14px;margin-bottom:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding-bottom:10px;border-bottom:1px solid var(--border)}h3 .dname[data-v-7c9e5dd4]{display:inline-flex;align-items:center;gap:6px}.day.today h3[data-v-7c9e5dd4]{color:var(--primary)}h3 .date[data-v-7c9e5dd4]{font-size:12px;font-weight:400;color:var(--muted)}.day.today h3 .date[data-v-7c9e5dd4]{color:var(--primary)}ul[data-v-7c9e5dd4]{list-style:none;display:flex;flex-direction:column;gap:8px}li[data-v-7c9e5dd4]{display:flex;flex-direction:column;gap:2px;padding:8px;border:1px solid var(--border);border-radius:10px;background:#fff}li.empty[data-v-7c9e5dd4]{border:none;padding:4px 0;text-align:center;background:transparent}li span[data-v-7c9e5dd4]{font-size:12px}.time[data-v-7c9e5dd4]{font-weight:600;color:var(--primary)}li.checked[data-v-7c9e5dd4]{background:#eef0f3;border-color:#d7dae0}li.checked .time[data-v-7c9e5dd4]{color:#7a7f8c}li.leave[data-v-7c9e5dd4]{background:#fff6e5;border-color:#f2d9a6}li.leave .time[data-v-7c9e5dd4]{color:#b07f1f}.leave-tag[data-v-7c9e5dd4]{color:#b07f1f;font-weight:400;font-size:12px}@media (max-width: 768px){.grid[data-v-7c9e5dd4]{grid-template-columns:repeat(7,minmax(112px,1fr));min-width:784px}li[data-v-7c9e5dd4]{padding:6px}li span[data-v-7c9e5dd4]{font-size:11px}}.scheduling[data-v-3c39aa83]{display:flex;flex-direction:column;gap:16px}.topbar[data-v-3c39aa83]{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.primary[data-v-3c39aa83]{padding:8px 20px}.toast[data-v-3c39aa83]{position:fixed;top:20px;left:50%;transform:translate(-50%);background:#fff;border:1px solid var(--border);border-radius:999px;padding:8px 18px;box-shadow:0 4px 16px #0000001f;display:flex;align-items:center;gap:8px;z-index:60;font-size:14px}.toast .dot[data-v-3c39aa83]{color:var(--success);display:inline-flex}.toast.error[data-v-3c39aa83]{color:var(--danger);border-color:#cd303066;background:#fff5f5}.toast.error .dot[data-v-3c39aa83]{color:var(--danger)}.week-card[data-v-3c39aa83]{padding:0;overflow-x:auto}.grid[data-v-3c39aa83]{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));min-width:770px}.day[data-v-3c39aa83]{padding:12px 8px;border-left:1px solid var(--border);display:flex;flex-direction:column}.day[data-v-3c39aa83]:first-child{border-left:none}.day.today[data-v-3c39aa83]{background:rgba(var(--primary-rgb),.06)}h3[data-v-3c39aa83]{font-size:14px;margin-bottom:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding-bottom:10px;border-bottom:1px solid var(--border)}h3 .dname[data-v-3c39aa83]{display:inline-flex;align-items:center;gap:6px}.day.today h3[data-v-3c39aa83]{color:var(--primary)}h3 .date[data-v-3c39aa83]{font-size:12px;font-weight:400;color:var(--muted)}.day.today h3 .date[data-v-3c39aa83]{color:var(--primary)}ul[data-v-3c39aa83]{list-style:none;display:flex;flex-direction:column;gap:8px;margin-bottom:10px;flex:1}li[data-v-3c39aa83]{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--border);border-radius:10px;background:#fff}li.empty[data-v-3c39aa83]{border:none;padding:4px 0;text-align:center;background:transparent}li.checked[data-v-3c39aa83]{background:#eef0f3;border-color:#d7dae0}li.checked .time[data-v-3c39aa83]{color:#7a7f8c}li.leave[data-v-3c39aa83]{background:#fff6e5;border-color:#f2d9a6}li.leave .time[data-v-3c39aa83]{color:#b07f1f}.leave-tag[data-v-3c39aa83]{color:#b07f1f;font-weight:400;font-size:12px}.info[data-v-3c39aa83]{display:flex;flex-direction:column}.info span[data-v-3c39aa83]{font-size:12px}.time[data-v-3c39aa83]{font-weight:600;color:var(--primary)}.ops[data-v-3c39aa83]{display:flex;flex-wrap:wrap;gap:5px}.ops button[data-v-3c39aa83]{flex:1 1 calc(50% - 3px);min-width:0;padding:4px 2px;white-space:nowrap;text-align:center}.add-btn[data-v-3c39aa83]{display:inline-flex;align-items:center;justify-content:center;gap:4px}.day-btns[data-v-3c39aa83]{display:flex;gap:5px}.day-btns .add-btn[data-v-3c39aa83]{flex:1}.add-main[data-v-3c39aa83]{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.overlay[data-v-3c39aa83]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal[data-v-3c39aa83]{background:#ffffffd9;border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:12px;padding:22px 26px;width:640px;max-width:100%;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px}@media (min-width: 769px){.time-block-modal[data-v-3c39aa83]{width:min(932px,calc(100vw - 40px))}.time-block-modal .presets[data-v-3c39aa83]{flex-wrap:wrap;overflow-x:visible}}.modal-head[data-v-3c39aa83]{display:flex;align-items:center;justify-content:space-between}.modal-head h3[data-v-3c39aa83]{font-size:16px}.close[data-v-3c39aa83]{background:none;border:none;font-size:22px;cursor:pointer;color:var(--muted);padding:0 4px}.field-row[data-v-3c39aa83]{display:flex;gap:14px}.field-row .field[data-v-3c39aa83]{flex:1}.field[data-v-3c39aa83]{display:flex;flex-direction:column;gap:6px;font-size:13px}.field>span[data-v-3c39aa83]{color:#333}.field i[data-v-3c39aa83]{color:#e55;font-style:normal;margin-right:2px}.field select[data-v-3c39aa83],.field input[data-v-3c39aa83],.field textarea[data-v-3c39aa83]{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;width:100%}.preset-groups[data-v-3c39aa83]{display:flex;flex-direction:column;gap:8px}.preset-row[data-v-3c39aa83]{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:8px}.preset-period[data-v-3c39aa83]{color:var(--text);font-size:13px;font-weight:700;text-align:center}.presets[data-v-3c39aa83]{display:flex;gap:8px;flex-wrap:nowrap;min-width:0;overflow-x:auto;padding:2px 2px 5px;scrollbar-width:thin}.presets .preset[data-v-3c39aa83]{flex:0 0 auto}.preset-empty[data-v-3c39aa83]{align-self:center;color:var(--muted);font-size:12px}.custom-time-row[data-v-3c39aa83]{display:flex;margin-top:8px;padding-left:50px}.preset[data-v-3c39aa83]{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:#fff;color:#333;cursor:pointer}.preset span[data-v-3c39aa83]{font-size:12px;color:var(--muted)}.preset.active[data-v-3c39aa83]{border-color:var(--primary);color:var(--primary);background:rgba(var(--primary-rgb),.06)}.preset[data-v-3c39aa83]{position:relative}.preset .del[data-v-3c39aa83]{position:absolute;top:-6px;right:-6px;width:16px;height:16px;border-radius:50%;background:#e55;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.preset .del .icon[data-v-3c39aa83]{width:10px;height:10px;fill:currentColor}.preset .edit[data-v-3c39aa83]{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;background:var(--primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.preset .edit .icon[data-v-3c39aa83]{width:11px;height:11px;fill:currentColor}.save-block[data-v-3c39aa83]{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}.rename-block[data-v-3c39aa83]{display:flex;align-items:center;gap:8px;margin:8px 0 0 50px;flex-wrap:wrap}.rename-block input[data-v-3c39aa83]{width:180px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px}.save-block input[data-v-3c39aa83]{padding:6px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px;width:180px}.save-block .muted[data-v-3c39aa83]{font-size:12px}.presets-head[data-v-3c39aa83]{display:flex;align-items:center;gap:10px}.preset-tools[data-v-3c39aa83]{display:inline-flex;align-items:center;gap:6px}.del-toggle[data-v-3c39aa83]{padding:2px 10px;font-size:12px}.del-toggle.on[data-v-3c39aa83]{color:#e55;border-color:#e55}.rename-toggle[data-v-3c39aa83]{padding:2px 10px;font-size:12px}.rename-toggle.on[data-v-3c39aa83]{color:var(--primary);border-color:var(--primary)}.price-tip[data-v-3c39aa83]{font-size:12px}.err[data-v-3c39aa83]{color:#e55;font-size:13px}.gift-note[data-v-3c39aa83]{color:#e8871e;font-size:12px}.gift-hint[data-v-3c39aa83]{color:#e8871e;font-size:13px;font-weight:700;background:#ff98001f;border-radius:8px;padding:6px 10px}.gift-opt[data-v-3c39aa83]{color:#e8871e;font-weight:700}.modal-foot[data-v-3c39aa83]{display:flex;justify-content:flex-end;gap:10px}.modal-foot button[data-v-3c39aa83]{padding:8px 22px}@media (max-width: 768px){.preset-row[data-v-3c39aa83]{grid-template-columns:36px minmax(0,1fr);gap:6px}.presets[data-v-3c39aa83]{gap:6px}.preset[data-v-3c39aa83]{padding:5px 8px}.custom-time-row[data-v-3c39aa83]{padding-left:42px}.rename-block[data-v-3c39aa83]{margin-left:42px}.topbar .muted[data-v-3c39aa83]{flex-basis:100%;margin:0}.grid[data-v-3c39aa83]{grid-template-columns:repeat(7,minmax(124px,1fr));min-width:868px}.ops button[data-v-3c39aa83]{font-size:12px;padding:4px 0}.field-row[data-v-3c39aa83]{flex-direction:column}.modal[data-v-3c39aa83]{padding:14px 16px}}.day-amount[data-v-3c39aa83]{margin-top:10px;padding-top:8px;border-top:1px dashed var(--border);font-size:13px;font-weight:600;color:var(--primary);margin-bottom:8px}.day-amount.zero[data-v-3c39aa83]{color:var(--muted);font-weight:400}.week-total[data-v-3c39aa83]{border-top:1px solid var(--border);padding:12px 14px;display:flex;align-items:baseline;gap:8px;font-size:14px}.week-total strong[data-v-3c39aa83]{color:var(--primary);font-size:16px}.week-total .muted[data-v-3c39aa83]{font-size:12px}.price-view[data-v-3c39aa83]{padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);font-size:14px;color:var(--primary);font-weight:600}.stats[data-v-8e5c7304]{display:flex;flex-direction:column;gap:16px}h2[data-v-8e5c7304]{font-size:16px;margin-bottom:10px}.today-tag[data-v-8e5c7304]{font-style:normal;font-size:11px;background:#ffffffb3;color:var(--primary);padding:0 6px;border-radius:999px}h2 .sub[data-v-8e5c7304]{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px}.donut-wrap[data-v-8e5c7304]{display:flex;align-items:center;gap:28px;flex-wrap:wrap}.donut[data-v-8e5c7304]{width:150px;height:150px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.donut-hole[data-v-8e5c7304]{width:96px;height:96px;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.2}.donut-hole strong[data-v-8e5c7304]{font-size:22px}.donut-hole span[data-v-8e5c7304]{font-size:12px}.legend[data-v-8e5c7304]{list-style:none;display:flex;flex-direction:column;gap:8px}.legend li[data-v-8e5c7304]{display:flex;align-items:center;gap:8px;font-size:13px}.legend .dot[data-v-8e5c7304]{width:10px;height:10px;border-radius:50%;flex-shrink:0}.day-grid[data-v-8e5c7304]{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day-cell[data-v-8e5c7304]{border:1px solid var(--border);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:6px;background:#ffffff8c}.day-cell.today[data-v-8e5c7304]{border-color:var(--primary);background:var(--primary-soft)}.day-cell.empty[data-v-8e5c7304]{opacity:.65}.day-name[data-v-8e5c7304]{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:4px}.day-cell.today .day-name[data-v-8e5c7304]{color:var(--primary);font-weight:600}.day-count strong[data-v-8e5c7304]{font-size:20px}.day-count[data-v-8e5c7304]{font-size:12px;color:var(--muted)}.day-cell.today .day-count strong[data-v-8e5c7304]{color:var(--primary)}.day-times[data-v-8e5c7304]{display:flex;flex-wrap:wrap;gap:4px;font-size:12px}.time-chip[data-v-8e5c7304]{background:var(--soft-bg);color:var(--primary);padding:1px 7px;border-radius:999px;font-size:11px}.time-chip.more[data-v-8e5c7304]{background:transparent;color:var(--muted)}@media (max-width: 768px){.day-grid[data-v-8e5c7304]{grid-template-columns:repeat(2,1fr)}}.top-row[data-v-8e5c7304]{display:flex;gap:16px;align-items:stretch;flex-wrap:wrap}.top-main[data-v-8e5c7304]{flex:2;min-width:300px}.top-side[data-v-8e5c7304]{flex:1;min-width:220px}.top-side td[data-v-8e5c7304],.top-side th[data-v-8e5c7304]{white-space:nowrap}.month-table[data-v-8e5c7304]{max-width:520px}.month-table td[data-v-8e5c7304],.month-table th[data-v-8e5c7304]{white-space:nowrap}.month-table tr.month-row td[data-v-8e5c7304]{font-weight:600}.month-table .month-range[data-v-8e5c7304]{font-weight:400;font-size:12px;color:var(--muted)}.month-table tr.week-row td[data-v-8e5c7304]:first-child{padding-left:22px;color:var(--muted);font-size:12px}.month-table tr.week-row.current td[data-v-8e5c7304]{color:var(--primary);font-weight:600}.month-table .today-tag[data-v-8e5c7304]{margin-left:6px;background:var(--primary-soft)}.month-sel[data-v-8e5c7304]{margin-left:8px;padding:3px 8px;border:1px solid var(--border);border-radius:8px;font-size:12px;font-weight:400}.filter-row[data-v-8e5c7304]{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.filter-label[data-v-8e5c7304]{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.filter-row input[data-v-8e5c7304],.filter-row select[data-v-8e5c7304]{padding:6px 10px;border:1px solid var(--border);border-radius:8px;font-size:13px}tr.undone td[data-v-8e5c7304]{color:var(--muted);text-decoration:line-through}tr.undone td[data-v-8e5c7304]:last-child,tr.undone td[data-v-8e5c7304]:nth-child(5){text-decoration:none}.table-scroll[data-v-8e5c7304]{overflow-x:auto}.table-scroll table[data-v-8e5c7304]{min-width:560px}.table-scroll th[data-v-8e5c7304],.table-scroll td[data-v-8e5c7304]{white-space:nowrap}@media (max-width: 768px){.table-scroll th[data-v-8e5c7304],.table-scroll td[data-v-8e5c7304]{font-size:12px;padding:6px 8px}.table-scroll .tag[data-v-8e5c7304]{font-size:11px}.bar-name[data-v-8e5c7304]{width:64px}}.privacy[data-v-5788456e]{display:flex;flex-direction:column;gap:16px}h2[data-v-5788456e]{font-size:16px;margin-bottom:6px}h3[data-v-5788456e]{font-size:15px;margin-bottom:8px}.row[data-v-5788456e]{display:flex;gap:10px;margin-top:12px}code[data-v-5788456e]{background:var(--bg);padding:1px 6px;border-radius:6px;font-size:13px}.pwd-form[data-v-5788456e]{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}.pwd-form input[data-v-5788456e]{width:200px}.pwd-error[data-v-5788456e]{color:var(--danger);font-size:13px;margin-top:8px}.hidden-file[data-v-5788456e]{display:none}.audit-scroll[data-v-5788456e]{max-height:420px;overflow:auto;margin-top:12px}.audit-scroll .nowrap[data-v-5788456e]{white-space:nowrap}.audit-scroll .detail[data-v-5788456e]{word-break:break-all;font-size:12px;color:var(--muted)}.layout[data-v-3f2426ee]{display:flex;min-height:100vh;padding:12px;gap:12px}.sidebar[data-v-3f2426ee]{position:sticky;top:12px;align-self:flex-start;height:calc(100vh - 24px);width:200px;flex-shrink:0;background:var(--card);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);display:flex;flex-direction:column;padding:14px 10px 10px;overflow-y:auto}.collapsed .sidebar[data-v-3f2426ee]{width:64px}.collapsed .brand[data-v-3f2426ee]{justify-content:center;padding-left:0;padding-right:0}.collapsed .menu-item[data-v-3f2426ee]{justify-content:center;padding-left:6px;padding-right:6px}.brand[data-v-3f2426ee]{display:flex;gap:12px;padding:6px 6px 18px;align-items:center}.logo[data-v-3f2426ee]{width:56px;height:56px;border-radius:50%;object-fit:cover}.brand-name[data-v-3f2426ee]{font-size:20px;font-weight:700;line-height:1.4}nav[data-v-3f2426ee]{display:flex;flex-direction:column;gap:6px;flex:1}.menu-item[data-v-3f2426ee]{display:flex;align-items:center;gap:12px;width:100%;padding:11px 14px;background:transparent;color:var(--text);border-radius:999px;font-size:15px;text-align:left;box-shadow:none}.menu-item[data-v-3f2426ee]:hover{background:var(--primary-soft);color:var(--primary)}.menu-item.active[data-v-3f2426ee]{background:var(--primary);color:#fff;font-weight:600;box-shadow:0 2px 8px rgba(var(--primary-rgb),.2)}.menu-icon-wrap[data-v-3f2426ee]{position:relative;display:inline-flex;width:20px;height:20px;flex:0 0 20px;align-items:center;justify-content:center}.menu-icon[data-v-3f2426ee]{position:relative;z-index:1;width:20px;height:20px;fill:currentColor}.menu-item:not(.active) .reminder-alert[data-v-3f2426ee]{color:var(--danger)}.reminder-alert .menu-icon[data-v-3f2426ee]{transform-origin:50% 8%;animation:nav-reminder-bell-ring-3f2426ee .42s ease-in-out infinite}.reminder-alert[data-v-3f2426ee]:before,.reminder-alert[data-v-3f2426ee]:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;z-index:0;border:2px solid currentColor;border-radius:50%;pointer-events:none;animation:reminder-sound-wave-3f2426ee 1.25s ease-out infinite}.reminder-alert[data-v-3f2426ee]:after{animation-delay:.62s}@keyframes nav-reminder-bell-ring-3f2426ee{0%,to{transform:rotate(-26deg) scale(1.08)}50%{transform:rotate(26deg) scale(1.08)}}@keyframes reminder-sound-wave-3f2426ee{0%{opacity:.62;transform:scale(.62)}to{opacity:0;transform:scale(1.8)}}@media (prefers-reduced-motion: reduce){.reminder-alert .menu-icon[data-v-3f2426ee],.reminder-alert[data-v-3f2426ee]:before,.reminder-alert[data-v-3f2426ee]:after{animation:none}.reminder-alert[data-v-3f2426ee]:before,.reminder-alert[data-v-3f2426ee]:after{display:none}}.menu-label[data-v-3f2426ee]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collapse-btn[data-v-3f2426ee]{margin-top:8px;background:transparent;color:var(--muted);padding:6px;box-shadow:none}.collapse-btn[data-v-3f2426ee]:hover{background:var(--primary-soft);color:var(--primary)}.collapse-btn .icon[data-v-3f2426ee]{transition:transform .2s}.backdrop[data-v-3f2426ee]{display:none}main[data-v-3f2426ee]{flex:1;min-width:0}.week-bar[data-v-3f2426ee]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--card);border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-radius:999px;box-shadow:var(--shadow);padding:8px 14px;margin-bottom:12px}.week-btn[data-v-3f2426ee]{display:inline-flex;align-items:center;gap:3px}.week-label[data-v-3f2426ee]{font-size:14px}.week-label.short[data-v-3f2426ee]{display:none}.week-tip[data-v-3f2426ee]{font-size:12px;margin-left:auto}@media (max-width: 768px){.layout[data-v-3f2426ee]{padding:8px;gap:8px}.sidebar[data-v-3f2426ee]{top:8px;height:calc(100vh - 16px);width:56px;padding:10px 6px 8px}.collapsed .sidebar[data-v-3f2426ee]{width:56px}.layout:not(.collapsed) .sidebar[data-v-3f2426ee]{position:fixed;left:8px;top:8px;width:200px;z-index:60;box-shadow:0 12px 36px #1e50a040;padding:14px 10px 10px}.layout:not(.collapsed) .backdrop[data-v-3f2426ee]{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:50}.collapsed .sidebar .brand-text[data-v-3f2426ee],.collapsed .sidebar .menu-label[data-v-3f2426ee]{display:none}.collapsed .logo[data-v-3f2426ee]{width:36px;height:36px}.collapsed .menu-item[data-v-3f2426ee]{justify-content:center;padding:9px 6px}.menu-icon[data-v-3f2426ee]{width:19px;height:19px}main[data-v-3f2426ee]{min-width:0}.week-bar[data-v-3f2426ee]{border-radius:16px;padding:6px 8px;gap:4px;justify-content:center}.week-label.full[data-v-3f2426ee]{display:none}.week-label.short[data-v-3f2426ee]{display:inline;font-size:12px;white-space:nowrap}.week-btn[data-v-3f2426ee]{font-size:11px;padding:4px 6px;flex-shrink:0}.week-tip[data-v-3f2426ee]{display:none}}*{box-sizing:border-box;margin:0;padding:0}:root{--primary: #f06ba8;--primary-dark: #dd4f92;--primary-soft: #fdeef5;--primary-line: #f7c3da;--primary-rgb: 240, 107, 168;--bg-grad: radial-gradient(1000px 500px at 85% -10%, rgba(255, 182, 213, .28), transparent 60%), radial-gradient(800px 420px at -10% 30%, rgba(255, 214, 194, .22), transparent 60%), radial-gradient(900px 480px at 50% 110%, rgba(255, 197, 221, .26), transparent 60%), linear-gradient(160deg, #fff1f6 0%, #fdeef5 45%, #fff4ec 100%);--flow-grad: linear-gradient( 115deg, rgba(255, 178, 212, .6) 0%, rgba(255, 205, 178, .6) 25%, rgba(250, 182, 220, .6) 50%, rgba(216, 190, 255, .6) 75%, rgba(255, 178, 212, .6) 100% );--bg: #fcf2f7;--card: rgba(255, 255, 255, .72);--glass-border: rgba(255, 255, 255, .55);--glass-blur: blur(14px) saturate(160%);--text: #1f2d44;--muted: #8896ad;--danger: #e5484d;--success: #2fa96e;--border: rgba(31, 45, 68, .08);--soft-bg: rgba(var(--primary-rgb), .045);--shadow: 0 4px 18px rgba(var(--primary-rgb), .06), 0 1px 3px rgba(31, 45, 68, .04);--radius: 16px}[data-theme=blue]{--primary: #2b7fff;--primary-dark: #1667e6;--primary-soft: #eaf2ff;--primary-line: #c9dcff;--primary-rgb: 43, 127, 255;--bg-grad: radial-gradient(1000px 500px at 85% -10%, rgba(43, 127, 255, .18), transparent 60%), radial-gradient(800px 420px at -10% 30%, rgba(147, 118, 255, .14), transparent 60%), radial-gradient(900px 480px at 50% 110%, rgba(64, 201, 255, .14), transparent 60%), linear-gradient(160deg, #eaf2ff 0%, #eef4fc 45%, #f3efff 100%);--flow-grad: linear-gradient( 115deg, rgba(168, 208, 255, .6) 0%, rgba(170, 234, 255, .6) 25%, rgba(178, 196, 255, .6) 50%, rgba(196, 214, 255, .6) 75%, rgba(168, 208, 255, .6) 100% );--bg: #eef4fc}[data-theme=purple]{--primary: #8b5cf6;--primary-dark: #7443e0;--primary-soft: #f2ecfe;--primary-line: #d9c8fb;--primary-rgb: 139, 92, 246;--bg-grad: radial-gradient(1000px 500px at 85% -10%, rgba(139, 92, 246, .16), transparent 60%), radial-gradient(800px 420px at -10% 30%, rgba(236, 118, 255, .12), transparent 60%), radial-gradient(900px 480px at 50% 110%, rgba(96, 165, 250, .14), transparent 60%), linear-gradient(160deg, #f4efff 0%, #f3f0fc 45%, #eef2ff 100%);--flow-grad: linear-gradient( 115deg, rgba(208, 180, 255, .6) 0%, rgba(238, 190, 255, .6) 25%, rgba(190, 178, 255, .6) 50%, rgba(222, 198, 255, .6) 75%, rgba(208, 180, 255, .6) 100% );--bg: #f4f0fc}[data-theme=green]{--primary: #23a866;--primary-dark: #188e53;--primary-soft: #e8f8ef;--primary-line: #b8e6cc;--primary-rgb: 35, 168, 102;--bg-grad: radial-gradient(1000px 500px at 85% -10%, rgba(35, 168, 102, .14), transparent 60%), radial-gradient(800px 420px at -10% 30%, rgba(64, 201, 255, .12), transparent 60%), radial-gradient(900px 480px at 50% 110%, rgba(163, 230, 140, .16), transparent 60%), linear-gradient(160deg, #edfbf2 0%, #eff9f2 45%, #eef6ff 100%);--flow-grad: linear-gradient( 115deg, rgba(168, 228, 194, .6) 0%, rgba(190, 240, 230, .6) 25%, rgba(172, 230, 200, .6) 50%, rgba(206, 240, 214, .6) 75%, rgba(168, 228, 194, .6) 100% );--bg: #eff8f2}html{-webkit-text-size-adjust:100%}body{font-family:PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;background:var(--bg-grad);background-attachment:fixed;color:var(--text);font-size:13px}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:var(--flow-grad);background-size:300% 300%;animation:bg-flow 14s ease-in-out infinite}@keyframes bg-flow{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}button{cursor:pointer;border:none;border-radius:999px;padding:7px 16px;font-size:13px;background:var(--primary);color:#fff;transition:background .15s,box-shadow .15s,transform .1s;box-shadow:0 2px 8px rgba(var(--primary-rgb),.16)}button:hover{background:var(--primary-dark)}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:#fff9;color:var(--primary);border:1px solid var(--primary-line);box-shadow:none}button.ghost:hover{background:var(--primary-soft)}button.danger{background:var(--danger);box-shadow:0 2px 8px #e5484d40}button.danger:hover{background:#c93a3f}button.small{padding:4px 11px;font-size:12px}.icon{width:15px;height:15px;fill:currentColor;vertical-align:-2px;flex-shrink:0}input,select,textarea{border:1px solid var(--border);border-radius:10px;padding:7px 11px;font-size:13px;outline:none;background:#ffffffb3;color:var(--text);transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(var(--primary-rgb),.12)}.card{background:var(--card);border:1px solid var(--glass-border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}table{width:100%;border-collapse:collapse}th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--border);font-size:13px;white-space:nowrap}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}th{color:var(--muted);font-weight:600}tbody tr:hover td{background:var(--soft-bg)}.muted{color:var(--muted)}.tag{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;background:var(--primary-soft);color:var(--primary)}.tag.low{background:#e5484d1a;color:var(--danger)}@media (max-width: 768px){body{font-size:12px}.card{padding:12px;border-radius:14px}th,td{padding:6px 7px;font-size:12px}button{font-size:12px;padding:6px 13px}input,select,textarea{font-size:12px;padding:6px 9px}}
