:root{--color-neutral-50:#f6f7f9;--color-neutral-100:#eef1f5;--color-neutral-200:#e7eaf0;--color-neutral-300:#d8dde6;--color-neutral-500:#6b7280;--color-neutral-600:#4b5563;--color-neutral-800:#1f2933;--color-neutral-900:#111827;--color-white:#fff;--color-primary-50:#eff6ff;--color-primary-100:#bfdbfe;--color-primary-400:#60a5fa;--color-primary-500:#3b82f6;--color-primary-600:#2563eb;--color-primary-700:#1d4ed8;--color-success-500:#16a34a;--color-warning-500:#f59e0b;--color-error-500:#ef4444;--color-info-500:#06b6d4;--color-warning-bg:#fffbeb;--color-warning-line:#fde68a;--color-warning-text:#b45309;--course-1-bg:#eef4ff;--course-1-line:#c3d8fb;--course-1-text:#1e40af;--course-2-bg:#ecf8f0;--course-2-line:#bce6cd;--course-2-text:#166534;--course-3-bg:#f3efff;--course-3-line:#d4c6fb;--course-3-text:#5b21b6;--course-4-bg:#fdf2e7;--course-4-line:#f6d5b0;--course-4-text:#9a3412;--course-5-bg:#ecf9fb;--course-5-line:#b7e3ec;--course-5-text:#155e75;--course-6-bg:#fdeef1;--course-6-line:#f6c4ce;--course-6-text:#9f1239;--course-7-bg:#eef1fd;--course-7-line:#c7cff9;--course-7-text:#3730a3;--course-8-bg:#fdf8e3;--course-8-line:#f2e2a0;--course-8-text:#713f12;--color-brand:var(--color-primary-500);--color-brand-hover:var(--color-primary-600);--color-brand-active:var(--color-primary-700);--color-brand-subtle:var(--color-primary-50);--color-brand-line:var(--color-primary-100);--color-text-primary:var(--color-neutral-900);--color-text-body:var(--color-neutral-800);--color-text-secondary:var(--color-neutral-600);--color-text-tertiary:var(--color-neutral-500);--color-text-inverse:var(--color-white);--color-bg-page:var(--color-neutral-50);--color-bg-surface:var(--color-white);--color-bg-subtle:var(--color-neutral-100);--color-bg-hover:#f1f4f8;--color-bg-corner:#fbfcfe;--color-border-default:var(--color-neutral-200);--color-border-strong:var(--color-neutral-300);--color-border-focus:var(--color-primary-500);--color-feedback-success:var(--color-success-500);--color-feedback-warning:var(--color-warning-500);--color-feedback-error:var(--color-error-500);--color-feedback-info:var(--color-info-500);--spacing-2xs:3px;--spacing-xs:6px;--spacing-sm:9px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:24px;--spacing-2xl:32px;--font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--font-size-xs:11px;--font-size-sm:12px;--font-size-md:13.5px;--font-size-body:14px;--font-size-lg:15px;--font-size-xl:16px;--font-size-2xl:18px;--font-size-stat:26px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-bold:600;--font-weight-heavy:700;--line-height-tight:1.35;--line-height-normal:1.55;--radius-sm:8px;--radius-md:10px;--radius-lg:12px;--radius-xl:14px;--radius-full:9999px;--shadow-card:0 1px 2px #1018280a, 0 6px 18px #1018280d;--shadow-hover:0 4px 12px #10182817;--shadow-pop:0 12px 32px #1018281f, 0 2px 6px #1018280f;--shadow-btn:0 1px 2px #2563eb47;--motion-duration-fast:.15s;--motion-duration-normal:.18s;--motion-duration-slow:.22s;--motion-duration-reveal:.5s;--motion-easing-standard:cubic-bezier(.2, .7, .2, 1);--z-index-grid-corner:6;--z-index-sticky:50;--z-index-float:80;--z-index-modal:100;--z-index-confirm:110;--topbar-h:60px;--topbar-h-mobile:56px;--side-panel-w:296px;--ph-desktop:64px;--ph-tablet:52px;--ph-mobile:56px;--tc-w:84px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-gutter:stable}body{font-family:var(--font-family-sans);font-size:var(--font-size-body);line-height:var(--line-height-normal);color:var(--color-text-body);background:var(--color-bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}h1,h2,h3,h4{color:var(--color-text-primary);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}a{color:var(--color-brand);text-decoration:none}.reveal{animation:fadeUp var(--motion-duration-reveal) var(--motion-easing-standard) both}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.num{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.btn-mini{border:1px solid var(--color-border-default);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-brand);background:var(--color-bg-surface);transition:background var(--motion-duration-fast) var(--motion-easing-standard);padding:4px 14px}.btn-mini:hover{background:var(--color-bg-hover)}.btn-mini:disabled{opacity:.5;cursor:not-allowed}.btn-mini--primary{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-text-inverse)}.btn-mini--primary:hover{background:var(--color-brand-hover)}.btn-mini--danger{color:var(--color-feedback-error)}.btn-add{border:1px solid var(--color-border-default);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-brand);background:var(--color-bg-surface);padding:4px 14px}.btn-add:hover{background:var(--color-brand-subtle)}.date-input,.text-input{height:34px;padding:0 var(--spacing-sm);border:1px solid var(--color-border-default);border-radius:var(--radius-sm);background:var(--color-bg-surface);color:var(--color-text-body);font-size:var(--font-size-sm)}.date-input:focus,.text-input:focus{border-color:var(--color-brand);box-shadow:0 0 0 2px var(--color-brand-subtle);outline:none}.field{border:none;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.field legend.field__label{margin-bottom:6px;padding:0}.field__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-body)}.select-wrap{min-width:150px}.edit-actions{gap:var(--spacing-sm);margin-top:var(--spacing-sm);display:flex}.edit-error{margin-top:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-feedback-error)}.chip{font-size:var(--font-size-xs);color:var(--color-text-inverse);background:var(--color-brand);border-radius:var(--radius-full);padding:2px 10px}.modal-mask{z-index:var(--z-index-modal);padding:var(--spacing-lg);background:#0f172a6b;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{gap:var(--spacing-md);background:var(--color-bg-surface);border-radius:var(--radius-xl);width:min(400px,100%);box-shadow:var(--shadow-pop);padding:var(--spacing-xl);flex-direction:column;display:flex}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.modal-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.panel-note{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.sp-empty{padding:var(--spacing-xl) 0;text-align:center;color:var(--color-text-tertiary);font-size:var(--font-size-sm)}.modal-mask[data-v-f8fe8c81]{z-index:var(--z-index-modal);padding:var(--spacing-lg);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#11182773;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal[data-v-f8fe8c81]{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);width:min(720px,100%);max-height:min(88vh,720px);box-shadow:var(--shadow-modal);flex-direction:column;display:flex;overflow:hidden}.modal-head[data-v-f8fe8c81]{padding:var(--spacing-lg) var(--spacing-xl);border-bottom:1px solid var(--color-border-default);justify-content:space-between;align-items:center;display:flex}.m-title[data-v-f8fe8c81]{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.modal-close[data-v-f8fe8c81]{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--color-text-tertiary);transition:background var(--motion-duration-fast) var(--motion-easing-standard), color var(--motion-duration-fast) var(--motion-easing-standard);justify-content:center;align-items:center;display:flex}.modal-close[data-v-f8fe8c81]:hover{background:var(--color-bg-hover);color:var(--color-text-body)}.modal-close svg[data-v-f8fe8c81]{width:17px;height:17px}.steps[data-v-f8fe8c81]{padding:var(--spacing-lg) var(--spacing-xl) 0;align-items:center;list-style:none;display:flex}.steps-item[data-v-f8fe8c81]{align-items:center;gap:var(--spacing-sm);color:var(--color-text-tertiary);display:flex}.steps-dot[data-v-f8fe8c81]{border-radius:var(--radius-full);width:22px;height:22px;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);background:var(--color-bg-subtle);color:var(--color-text-tertiary);transition:background var(--motion-duration-normal) var(--motion-easing-standard), color var(--motion-duration-normal) var(--motion-easing-standard);justify-content:center;align-items:center;display:flex}.steps-label[data-v-f8fe8c81]{font-size:var(--font-size-sm);white-space:nowrap}.steps-item.current .steps-dot[data-v-f8fe8c81]{background:var(--color-brand);color:var(--color-text-inverse)}.steps-item.current .steps-label[data-v-f8fe8c81]{color:var(--color-text-body);font-weight:var(--font-weight-medium)}.steps-item.done .steps-dot[data-v-f8fe8c81]{background:var(--color-brand-subtle);color:var(--color-brand)}.steps-line[data-v-f8fe8c81]{height:2px;margin:0 var(--spacing-sm);background:var(--color-bg-subtle);flex:1}.steps-line.done[data-v-f8fe8c81]{background:var(--color-brand)}.step-body[data-v-f8fe8c81]{padding:var(--spacing-xl);overflow-y:auto}.upload-zone[data-v-f8fe8c81]{align-items:center;gap:var(--spacing-sm);padding:48px var(--spacing-xl);border:1.5px dashed var(--color-border-strong);border-radius:var(--radius-md);cursor:pointer;text-align:center;transition:border-color var(--motion-duration-fast) var(--motion-easing-standard), background var(--motion-duration-fast) var(--motion-easing-standard);flex-direction:column;display:flex}.upload-zone[data-v-f8fe8c81]:hover{border-color:var(--color-brand);background:var(--color-brand-subtle)}.upload-zone.is-error[data-v-f8fe8c81]{border-color:var(--color-feedback-error)}.upload-zone__icon[data-v-f8fe8c81]{width:34px;height:34px;color:var(--color-brand)}.upload-zone__title[data-v-f8fe8c81]{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-body)}.upload-zone__hint[data-v-f8fe8c81]{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.upload-zone__input[data-v-f8fe8c81]{display:none}.form-error[data-v-f8fe8c81]{margin-top:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-feedback-error)}.parse-state[data-v-f8fe8c81]{align-items:center;gap:var(--spacing-md);padding:var(--spacing-xl) 0;flex-direction:column;display:flex}.parse-state__title[data-v-f8fe8c81]{font-size:var(--font-size-md);color:var(--color-text-body)}.progress[data-v-f8fe8c81]{border-radius:var(--radius-full);background:var(--color-bg-subtle);width:100%;height:6px;overflow:hidden}.progress__bar[data-v-f8fe8c81]{border-radius:var(--radius-full);background:var(--color-brand);height:100%;transition:width var(--motion-duration-normal) var(--motion-easing-standard)}.parse-state__hint[data-v-f8fe8c81]{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.parse-error[data-v-f8fe8c81]{align-items:center;gap:var(--spacing-md);padding:var(--spacing-xl) 0;flex-direction:column;display:flex}.parse-error__title[data-v-f8fe8c81]{font-size:var(--font-size-md);color:var(--color-feedback-error);text-align:center}.summary[data-v-f8fe8c81]{margin-bottom:var(--spacing-md)}.summary__line[data-v-f8fe8c81]{align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary);flex-wrap:wrap;display:flex}.summary__source[data-v-f8fe8c81]{border-radius:var(--radius-full);background:var(--color-bg-subtle);color:var(--color-text-body);padding:2px 8px}.summary__stat.ok[data-v-f8fe8c81]{color:var(--color-brand);font-weight:var(--font-weight-medium)}.summary__stat.err[data-v-f8fe8c81]{color:var(--color-feedback-error);font-weight:var(--font-weight-medium)}.preview[data-v-f8fe8c81]{border:1px solid var(--color-border-default);border-radius:var(--radius-md);overflow-x:auto}.preview__grid[data-v-f8fe8c81]{grid-template-rows:auto repeat(10,minmax(34px,auto));grid-template-columns:44px repeat(7,minmax(64px,1fr));min-width:560px;display:grid}.preview__head[data-v-f8fe8c81]{padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-subtle);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);text-align:center;border-bottom:1px solid var(--color-border-default)}.preview__period[data-v-f8fe8c81]{font-size:var(--font-size-xs);color:var(--color-text-tertiary);border-bottom:1px solid var(--color-border-default);border-right:1px solid var(--color-border-default);justify-content:center;align-items:center;display:flex}.preview__cell[data-v-f8fe8c81]{border-bottom:1px solid var(--color-border-default);border-right:1px solid var(--color-border-default);min-height:34px;padding:2px}.preview__cell.has-course[data-v-f8fe8c81]{padding:2px}.preview-course[data-v-f8fe8c81]{border-radius:var(--radius-sm);border:1px solid var(--color-brand-line);background:var(--color-brand-subtle);height:100%;color:var(--color-brand);font-size:var(--font-size-xs);text-align:center;word-break:break-all;justify-content:center;align-items:center;padding:3px 5px;line-height:1.35;display:flex}.preview-course--lab[data-v-f8fe8c81]{color:#8a5a00;background:#fff7e6;border-color:#f6d5b0}.issue-list[data-v-f8fe8c81]{margin-top:var(--spacing-md);padding:var(--spacing-md);border:1px solid var(--color-feedback-error,#f87171);border-radius:var(--radius-md);background:var(--color-feedback-error-subtle,#fef2f2)}.issue-list__title[data-v-f8fe8c81]{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-feedback-error,#b91c1c)}.issue-list__item[data-v-f8fe8c81]{margin-top:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--color-text-body)}.footer[data-v-f8fe8c81]{justify-content:flex-end;gap:var(--spacing-sm);margin-top:var(--spacing-xl);display:flex}.btn[data-v-f8fe8c81]{height:38px;padding:0 var(--spacing-lg);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);transition:background var(--motion-duration-fast) var(--motion-easing-standard), opacity var(--motion-duration-fast) var(--motion-easing-standard)}.btn--primary[data-v-f8fe8c81]{background:var(--color-brand);color:var(--color-text-inverse)}.btn--primary[data-v-f8fe8c81]:hover{background:var(--color-brand-hover)}.btn--primary[data-v-f8fe8c81]:disabled{opacity:.45;cursor:not-allowed}.btn--ghost[data-v-f8fe8c81]{border:1px solid var(--color-border-default);color:var(--color-text-body)}.btn--ghost[data-v-f8fe8c81]:hover{background:var(--color-bg-hover)}.btn[data-v-f8fe8c81]:disabled{opacity:.45;cursor:not-allowed}.form-row[data-v-f8fe8c81]{align-items:center;gap:var(--spacing-lg);margin-bottom:var(--spacing-xl);display:flex}.form-label[data-v-f8fe8c81]{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-body);flex:none}.mode-group[data-v-f8fe8c81]{gap:var(--spacing-sm);border:none;flex-direction:column;margin:0;padding:0;display:flex}.mode-group legend[data-v-f8fe8c81]{margin-bottom:var(--spacing-sm)}.mode-option[data-v-f8fe8c81]{align-items:flex-start;gap:var(--spacing-sm);padding:var(--spacing-md);border:1px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--motion-duration-fast) var(--motion-easing-standard), background var(--motion-duration-fast) var(--motion-easing-standard);display:flex}.mode-option input[data-v-f8fe8c81]{opacity:0;pointer-events:none;position:absolute}.mode-option.checked[data-v-f8fe8c81]{border-color:var(--color-brand);background:var(--color-brand-subtle)}.mode-option__dot[data-v-f8fe8c81]{border:2px solid var(--color-border-strong);border-radius:var(--radius-full);flex:none;justify-content:center;align-items:center;width:16px;height:16px;margin-top:2px;display:flex}.mode-option.checked .mode-option__dot[data-v-f8fe8c81]{border-color:var(--color-brand)}.mode-option.checked .mode-option__dot[data-v-f8fe8c81]:after{content:"";border-radius:var(--radius-full);background:var(--color-brand);width:8px;height:8px}.mode-option__main[data-v-f8fe8c81]{flex-direction:column;gap:2px;display:flex}.mode-option__title[data-v-f8fe8c81]{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-body)}.mode-option__desc[data-v-f8fe8c81]{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.overwrite-warn[data-v-f8fe8c81]{margin-top:var(--spacing-md);padding:var(--spacing-md);border:1px solid var(--color-feedback-warning,#f59e0b);border-radius:var(--radius-md);background:var(--color-feedback-warning-subtle,#fffbeb);font-size:var(--font-size-sm);color:#92400e;line-height:1.6}.done-state[data-v-f8fe8c81]{align-items:center;gap:var(--spacing-sm);padding:56px var(--spacing-xl);text-align:center;flex-direction:column;display:flex}.done-state__icon[data-v-f8fe8c81]{width:44px;height:44px;color:var(--color-brand)}.done-state__title[data-v-f8fe8c81]{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.done-state__hint[data-v-f8fe8c81]{font-size:var(--font-size-sm);color:var(--color-text-tertiary);margin-bottom:var(--spacing-md)}.modal-enter-active[data-v-f8fe8c81],.modal-leave-active[data-v-f8fe8c81]{transition:opacity var(--motion-duration-normal) var(--motion-easing-standard)}.modal-enter-active .modal[data-v-f8fe8c81]{transition:transform var(--motion-duration-normal) var(--motion-easing-standard)}.modal-enter-from[data-v-f8fe8c81],.modal-leave-to[data-v-f8fe8c81]{opacity:0}.modal-enter-from .modal[data-v-f8fe8c81]{transform:translateY(12px)scale(.98)}.topbar[data-v-01541eec]{z-index:var(--z-index-sticky);height:var(--topbar-h-mobile);align-items:center;gap:var(--spacing-md);padding:0 var(--spacing-lg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border-default);background:#ffffffeb;display:flex;position:sticky;top:0}.brand[data-v-01541eec]{align-items:center;gap:var(--spacing-sm);color:var(--color-text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-heavy);white-space:nowrap;display:flex}.logo[data-v-01541eec]{color:var(--color-brand)}.page-title[data-v-01541eec]{color:var(--color-text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);white-space:nowrap}.seg[data-v-01541eec]{background:var(--color-bg-subtle);border-radius:var(--radius-md);gap:2px;width:fit-content;margin-inline:auto;padding:3px;display:flex}.seg-btn[data-v-01541eec]{justify-content:center;align-items:center;gap:var(--spacing-xs);border-radius:var(--radius-md);width:104px;font-size:var(--font-size-md);color:var(--color-text-tertiary);transition:color var(--motion-duration-normal) var(--motion-easing-standard), background-color var(--motion-duration-normal) var(--motion-easing-standard), box-shadow var(--motion-duration-normal) var(--motion-easing-standard);padding:6px 14px;display:flex}.seg-btn svg[data-v-01541eec]{width:16px;height:16px}.seg-btn.active[data-v-01541eec]{background:var(--color-bg-surface);color:var(--color-text-primary);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-card)}.top-actions[data-v-01541eec]{align-items:center;gap:var(--spacing-sm);margin-left:auto;display:flex}.import-wrap[data-v-01541eec]{position:relative}.btn-import[data-v-01541eec]{align-items:center;gap:var(--spacing-xs);height:34px;padding:0 var(--spacing-lg);border-radius:var(--radius-md);background:var(--color-brand);color:var(--color-text-inverse);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-btn);transition:background var(--motion-duration-fast) var(--motion-easing-standard);display:flex}.btn-import[data-v-01541eec]:hover{background:var(--color-brand-hover)}.btn-import svg[data-v-01541eec]{width:15px;height:15px}.btn-import__label[data-v-01541eec]{display:inline}@media (width<=767px){.btn-import[data-v-01541eec]{justify-content:center;width:34px;padding:0}.btn-import__label[data-v-01541eec]{display:none}.semester-select[data-v-01541eec]{max-width:110px}}@media (width<=360px){.semester-select[data-v-01541eec]{max-width:76px}}.import-menu[data-v-01541eec]{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);min-width:140px;box-shadow:var(--shadow-pop);padding:var(--spacing-xs);z-index:var(--z-index-modal);position:absolute;top:calc(100% + 6px);right:0}.import-menu button[data-v-01541eec]{text-align:left;width:100%;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-size:var(--font-size-md);color:var(--color-text-body);display:block}.import-menu button[data-v-01541eec]:hover{background:var(--color-bg-hover)}.btn-icon[data-v-01541eec]{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--color-text-secondary);transition:background var(--motion-duration-fast) var(--motion-easing-standard), color var(--motion-duration-fast) var(--motion-easing-standard);justify-content:center;align-items:center;display:flex;position:relative}.btn-icon[data-v-01541eec]:hover{background:var(--color-bg-hover)}.btn-icon.active[data-v-01541eec]{background:var(--color-brand-subtle);color:var(--color-brand)}.btn-icon svg[data-v-01541eec]{width:18px;height:18px}.btn-badge[data-v-01541eec]{min-width:15px;height:15px;color:var(--color-text-inverse);background:var(--color-feedback-warning);border-radius:var(--radius-full);justify-content:center;align-items:center;padding:0 4px;font-size:10px;line-height:1;display:flex;position:absolute;top:2px;right:2px}.reminder-wrap[data-v-01541eec]{position:relative}.reminder-menu[data-v-01541eec]{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);width:280px;box-shadow:var(--shadow-pop);padding:var(--spacing-xs);z-index:var(--z-index-modal);position:absolute;top:calc(100% + 6px);right:0}.reminder-menu__head[data-v-01541eec]{padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-tertiary)}.reminder-item[data-v-01541eec]{align-items:flex-start;gap:var(--spacing-sm);width:100%;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);text-align:left;display:flex}.reminder-item[data-v-01541eec]:hover{background:var(--color-bg-hover)}.reminder-item__kind[data-v-01541eec]{color:var(--color-brand);background:var(--color-brand-subtle);border-radius:var(--radius-full);flex:none;margin-top:1px;padding:2px 7px;font-size:10px}.reminder-item__main[data-v-01541eec]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.reminder-item__title[data-v-01541eec]{font-size:var(--font-size-md);color:var(--color-text-body);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.reminder-item__meta[data-v-01541eec]{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.reminder-empty[data-v-01541eec]{padding:var(--spacing-lg) var(--spacing-md);text-align:center;font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.menu-backdrop[data-v-01541eec]{z-index:calc(var(--z-index-modal) - 1);position:fixed;inset:0}.user-wrap[data-v-01541eec]{position:relative}.user-btn[data-v-01541eec]{border-radius:var(--radius-full);height:34px;transition:background var(--motion-duration-fast) var(--motion-easing-standard);align-items:center;gap:6px;padding:0 8px;display:flex}.user-btn[data-v-01541eec]:hover{background:var(--color-bg-hover)}.user-avatar[data-v-01541eec]{border-radius:var(--radius-full);background:var(--color-brand);width:24px;height:24px;color:var(--color-text-inverse);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);justify-content:center;align-items:center;display:flex}.user-name[data-v-01541eec]{font-size:var(--font-size-md);color:var(--color-text-body);white-space:nowrap;text-overflow:ellipsis;max-width:80px;overflow:hidden}.user-menu[data-v-01541eec]{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);width:200px;box-shadow:var(--shadow-pop);padding:var(--spacing-xs);z-index:var(--z-index-modal);position:absolute;top:calc(100% + 6px);right:0}.user-menu__head[data-v-01541eec]{justify-content:space-between;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-md);border-bottom:1px solid var(--color-border-default);margin-bottom:var(--spacing-xs);display:flex}.user-menu__name[data-v-01541eec]{font-size:var(--font-size-md);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.user-menu__role[data-v-01541eec]{font-size:10px;font-weight:var(--font-weight-bold);color:var(--color-brand);background:var(--color-brand-subtle);border-radius:var(--radius-full);padding:2px 7px}.user-menu button[data-v-01541eec]{text-align:left;width:100%;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);font-size:var(--font-size-md);color:var(--color-text-body);display:block}.user-menu button[data-v-01541eec]:hover{background:var(--color-bg-hover)}@media (width>=768px){.topbar[data-v-01541eec]{height:var(--topbar-h)}}.tabbar[data-v-0f8686e2]{z-index:var(--z-index-sticky);background:var(--color-bg-surface);border-top:1px solid var(--color-border-default);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.tab[data-v-0f8686e2]{min-height:48px;font-size:var(--font-size-xs);color:var(--color-text-tertiary);transition:color var(--motion-duration-fast) var(--motion-easing-standard);flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 0 7px;display:flex}.tab svg[data-v-0f8686e2]{width:20px;height:20px}.tab.active[data-v-0f8686e2]{color:var(--color-brand);font-weight:var(--font-weight-medium)}@media (width>=768px){.tabbar[data-v-0f8686e2]{display:none}}.toast-region[data-v-7e84d295]{left:50%;top:calc(var(--topbar-h-mobile) + var(--spacing-md));z-index:var(--z-index-modal);align-items:center;gap:var(--spacing-sm);pointer-events:none;flex-direction:column;display:flex;position:fixed;transform:translate(-50%)}@media (width>=768px){.toast-region[data-v-7e84d295]{top:calc(var(--topbar-h) + var(--spacing-md))}}.toast[data-v-7e84d295]{align-items:center;gap:var(--spacing-sm);max-width:min(88vw,420px);padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-left:4px solid var(--toast-color);border-radius:var(--radius-md);box-shadow:var(--shadow-pop);font-size:var(--font-size-md);color:var(--color-text-body);display:flex}.toast__icon[data-v-7e84d295]{color:var(--toast-color);flex:none;display:flex}.toast__icon svg[data-v-7e84d295]{width:18px;height:18px}.toast--success[data-v-7e84d295]{--toast-color:var(--color-feedback-success)}.toast--warning[data-v-7e84d295]{--toast-color:var(--color-feedback-warning)}.toast--error[data-v-7e84d295]{--toast-color:var(--color-feedback-error)}.toast--info[data-v-7e84d295]{--toast-color:var(--color-feedback-info)}.toast-enter-active[data-v-7e84d295],.toast-leave-active[data-v-7e84d295]{transition:opacity var(--motion-duration-fast) var(--motion-easing-standard), transform var(--motion-duration-fast) var(--motion-easing-standard)}.toast-enter-from[data-v-7e84d295],.toast-leave-to[data-v-7e84d295]{opacity:0;transform:translateY(-8px)}.confirm-mask[data-v-4b34913b]{z-index:var(--z-index-confirm);padding:var(--spacing-lg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a6b;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm[data-v-4b34913b]{background:var(--color-bg-surface);border-radius:var(--radius-xl);width:min(400px,100%);box-shadow:var(--shadow-pop);padding:var(--spacing-xl)}.confirm-title[data-v-4b34913b]{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.confirm-desc[data-v-4b34913b]{margin-top:var(--spacing-sm);font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text-secondary)}.confirm-foot[data-v-4b34913b]{justify-content:flex-end;gap:var(--spacing-sm);margin-top:var(--spacing-xl);display:flex}.btn[data-v-4b34913b]{height:38px;padding:0 var(--spacing-lg);border-radius:var(--radius-md);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);transition:background var(--motion-duration-fast) var(--motion-easing-standard), opacity var(--motion-duration-fast) var(--motion-easing-standard)}.btn--primary[data-v-4b34913b]{background:var(--color-brand);color:var(--color-text-inverse)}.btn--primary[data-v-4b34913b]:hover{background:var(--color-brand-hover)}.btn--danger[data-v-4b34913b]{background:var(--color-feedback-error);color:var(--color-text-inverse)}.btn--danger[data-v-4b34913b]:hover{filter:brightness(.94)}.btn--ghost[data-v-4b34913b]{border:1px solid var(--color-border-default);color:var(--color-text-body)}.btn--ghost[data-v-4b34913b]:hover{background:var(--color-bg-hover)}.modal-enter-active[data-v-4b34913b]{animation:pop-4b34913b var(--motion-duration-slow) var(--motion-easing-standard) both}.modal-leave-active[data-v-4b34913b]{transition:opacity var(--motion-duration-fast) var(--motion-easing-standard)}.modal-leave-to[data-v-4b34913b]{opacity:0}@keyframes pop-4b34913b{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=767px){.confirm-mask[data-v-4b34913b]{align-items:flex-end;padding:0}.confirm[data-v-4b34913b]{border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;padding-bottom:calc(var(--spacing-xl) + env(safe-area-inset-bottom))}.modal-enter-active[data-v-4b34913b]{animation:sheetUp-4b34913b var(--motion-duration-normal) var(--motion-easing-standard) both}@keyframes sheetUp-4b34913b{0%{transform:translateY(100%)}to{transform:translateY(0)}}}.access-page[data-v-0b185ce1]{min-height:100dvh;padding:var(--spacing-xl);background:var(--color-bg-page);justify-content:center;align-items:center;display:flex}.access-card[data-v-0b185ce1]{gap:var(--spacing-lg);width:min(360px,100%);padding:var(--spacing-xl);background:var(--color-bg-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-pop);flex-direction:column;display:flex}.access-brand[data-v-0b185ce1]{align-items:center;gap:var(--spacing-sm);flex-direction:column;display:flex}.access-logo[data-v-0b185ce1]{border-radius:var(--radius-md);background:var(--color-brand-subtle);width:48px;height:48px;color:var(--color-brand);justify-content:center;align-items:center;display:flex}.access-logo svg[data-v-0b185ce1]{width:26px;height:26px}.access-brand h1[data-v-0b185ce1]{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.access-sub[data-v-0b185ce1]{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.mode-tabs[data-v-0b185ce1]{background:var(--color-bg-subtle);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.mode-tab[data-v-0b185ce1]{border-radius:var(--radius-md);font-size:var(--font-size-md);color:var(--color-text-tertiary);transition:color var(--motion-duration-normal) var(--motion-easing-standard), background-color var(--motion-duration-normal) var(--motion-easing-standard);flex:1;padding:6px 0}.mode-tab.active[data-v-0b185ce1]{background:var(--color-bg-surface);color:var(--color-text-primary);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-card)}.field[data-v-0b185ce1]{gap:var(--spacing-sm);flex-direction:column;display:flex}.field__label[data-v-0b185ce1]{font-size:var(--font-size-md);color:var(--color-text-body);font-weight:var(--font-weight-medium)}.pass-input[data-v-0b185ce1]{height:40px;padding:0 var(--spacing-md);border:1px solid var(--color-border-default);border-radius:var(--radius-sm);background:var(--color-bg-subtle);color:var(--color-text-body);font-size:var(--font-size-md)}.pass-input[data-v-0b185ce1]:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 2px var(--color-brand-subtle);outline:none}.pass-input.invalid[data-v-0b185ce1]{border-color:var(--color-feedback-error)}.field-error[data-v-0b185ce1]{font-size:var(--font-size-sm);color:var(--color-feedback-error)}.remember-row[data-v-0b185ce1]{align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;display:flex}.remember-check[data-v-0b185ce1]{width:15px;height:15px;accent-color:var(--color-brand)}.btn-submit[data-v-0b185ce1]{border-radius:var(--radius-md);background:var(--color-brand);height:40px;color:var(--color-text-inverse);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-btn);transition:background var(--motion-duration-fast) var(--motion-easing-standard)}.btn-submit[data-v-0b185ce1]:hover{background:var(--color-brand-hover)}.btn-submit[data-v-0b185ce1]:disabled{opacity:.6;cursor:not-allowed}.app[data-v-4577ad20]{flex-direction:column;min-height:100dvh;display:flex}.app-main[data-v-4577ad20]{padding-bottom:calc(64px + env(safe-area-inset-bottom));flex:1}@media (width>=768px){.app-main[data-v-4577ad20]{padding-bottom:0}}.page-enter-active[data-v-4577ad20],.page-leave-active[data-v-4577ad20]{transition:opacity var(--motion-duration-normal) var(--motion-easing-standard)}.page-enter-from[data-v-4577ad20],.page-leave-to[data-v-4577ad20]{opacity:0}
