.week-view--export[data-v-bd5651cf]{background:var(--surface);border:1px solid var(--border-light);box-shadow:none;overflow:hidden}.week-view--export .print-header[data-v-bd5651cf]{display:block;text-align:center;margin-bottom:12px;padding-bottom:10px;border-bottom:2px solid #1f2937}.week-view--export .week-header[data-v-bd5651cf]{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.week-view--export .week-body[data-v-bd5651cf]{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;min-height:auto;background:var(--surface)}.week-view--export .day-column[data-v-bd5651cf]{min-height:0;padding:8px 7px 10px;border-right:1px solid #e2e8f0;border-radius:0;box-shadow:none;background:#fff}.week-view--export .day-column[data-v-bd5651cf]:last-child{border-right:none}.week-view--export .day-column[data-v-bd5651cf]:hover{background:#fff}.week-view--export .day-column.today[data-v-bd5651cf],.week-view--export .day-column.today[data-v-bd5651cf]:hover{background:#fff7f3}.week-view--export .day-column-mobile-header[data-v-bd5651cf],.week-view--export .day-column-empty[data-v-bd5651cf],.week-view--export .add-course-hint[data-v-bd5651cf],.week-view--export .day-column-add-btn[data-v-bd5651cf]{display:none!important}.week-view--export .print-empty-state[data-v-bd5651cf]{display:flex;align-items:center;justify-content:center;min-height:52px;padding:10px 6px;border:1px dashed #cbd5e1;border-radius:10px;background:#f8fafc;color:#64748b;font-size:10.5pt;font-weight:600}.day-column[data-v-bd5651cf]{transition:background .2s ease;position:relative}.day-column[data-v-bd5651cf]:hover{background:#fff8f0}.day-column.today[data-v-bd5651cf]{background:linear-gradient(180deg,rgba(255,107,107,.05) 0%,transparent 100%)}.day-column.today[data-v-bd5651cf]:hover{background:linear-gradient(180deg,#ff6b6b1a,#ff6b6b08)}.day-column.has-courses[data-v-bd5651cf]{padding-bottom:14px}.day-column-mobile-header[data-v-bd5651cf]{display:none}.day-column-mobile-copy[data-v-bd5651cf]{min-width:0}.day-column-mobile-title-row[data-v-bd5651cf]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.today-badge[data-v-bd5651cf]{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:#ff6b6b1f;color:var(--primary-dark);font-size:11px;font-weight:700}.day-column-empty[data-v-bd5651cf]{width:100%;border:none;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:140px;color:#b2bec3;gap:8px;transition:all .2s ease}.print-empty-state[data-v-bd5651cf]{display:none}.day-column:hover .day-column-empty[data-v-bd5651cf]{color:#636e72}.add-icon[data-v-bd5651cf]{font-size:28px;opacity:.6;transition:all .2s ease}.day-column:hover .add-icon[data-v-bd5651cf]{opacity:1;transform:scale(1.1)}.add-hint[data-v-bd5651cf]{font-size:14px;font-weight:600;opacity:0;transition:opacity .2s ease}.day-column:hover .add-hint[data-v-bd5651cf]{opacity:1}.day-column-add-btn[data-v-bd5651cf],.add-course-hint[data-v-bd5651cf]{display:flex;align-items:center;justify-content:center;padding:10px;margin-top:10px;color:#b2bec3;font-size:12px;font-weight:500;border:none;background:transparent;width:100%;opacity:0;transition:all .2s ease;border-radius:8px;cursor:pointer}.day-column:hover .add-course-hint[data-v-bd5651cf]{opacity:1;background:#ff6b6b1a;color:#e55555}@media (max-width: 768px){.week-view[data-v-bd5651cf]{background:transparent;border:none;box-shadow:none;overflow:visible}.week-header[data-v-bd5651cf]{display:none}.week-body[data-v-bd5651cf]{display:flex;flex-direction:column;gap:14px;min-height:auto;background:transparent}.day-column[data-v-bd5651cf]{min-height:0;padding:18px;border-right:none;border:1px solid var(--border-light);border-radius:18px;background:var(--surface);box-shadow:var(--shadow)}.day-column[data-v-bd5651cf]:hover,.day-column.today[data-v-bd5651cf],.day-column.today[data-v-bd5651cf]:hover{background:var(--surface)}.day-column.today[data-v-bd5651cf]{border-color:color-mix(in srgb,var(--primary) 20%,var(--border-light));box-shadow:0 8px 24px #ff6b6b14}.day-column.has-courses[data-v-bd5651cf]{box-shadow:0 14px 32px #2d343617}.day-column-mobile-header[data-v-bd5651cf]{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.day-column-mobile-title[data-v-bd5651cf]{font-size:20px;font-weight:700;color:var(--text-primary)}.day-column-mobile-meta[data-v-bd5651cf]{margin-top:2px;font-size:13px;color:var(--text-secondary)}.day-column-add-btn[data-v-bd5651cf]{width:auto;min-height:44px;padding:10px 16px;opacity:1;background:var(--border-light);color:var(--text-primary);font-size:13px;font-weight:700;border-radius:12px}.day-column-empty[data-v-bd5651cf]{min-height:auto;padding:22px 16px;border:1px dashed var(--border);border-radius:14px;background:color-mix(in srgb,var(--background) 65%,white)}.add-icon[data-v-bd5651cf]{opacity:1}.add-hint[data-v-bd5651cf]{opacity:1;color:var(--text-secondary)}.add-course-hint[data-v-bd5651cf]{opacity:1;margin-top:12px;padding:14px;border:1px dashed color-mix(in srgb,var(--primary) 20%,var(--border));background:color-mix(in srgb,var(--primary) 8%,white);color:var(--primary-dark);font-size:14px;font-weight:600}}@media print{.week-view[data-v-bd5651cf]{background:var(--surface)!important;border:1px solid var(--border-light)!important;box-shadow:none!important;overflow:hidden!important}.week-header[data-v-bd5651cf]{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important}.week-body[data-v-bd5651cf]{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:0!important;background:var(--surface)!important}.day-column[data-v-bd5651cf]{border-right:1px solid #e2e8f0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important}.day-column[data-v-bd5651cf]:last-child{border-right:none!important}.print-empty-state[data-v-bd5651cf]{display:flex;align-items:center;justify-content:center;min-height:52px;padding:10px 6px;border:1px dashed #cbd5e1;border-radius:10px;background:#f8fafc;color:#64748b;font-size:10.5pt;font-weight:600}.day-column.today[data-v-bd5651cf]{background:#fff7f3!important}}.course-form-modal[data-v-c043f41a]{overflow:hidden}.sheet-caption[data-v-c043f41a]{margin:0 0 4px;color:var(--text-secondary);font-size:12px;font-weight:600}.course-form-body[data-v-c043f41a]{display:flex;flex-direction:column;gap:20px}.step-indicator[data-v-c043f41a]{display:flex;gap:8px;padding:6px;border-radius:14px;background:color-mix(in srgb,var(--background) 70%,white)}.step-pill[data-v-c043f41a]{flex:1;min-height:40px;border:none;border-radius:10px;background:transparent;color:var(--text-secondary);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.step-pill.active[data-v-c043f41a]{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow)}.form-alert[data-v-c043f41a]{padding:12px 14px;border-radius:12px;background:#fef2f2;color:#b91c1c;font-size:14px}.course-step[data-v-c043f41a]{display:flex;flex-direction:column}.weekday-picker[data-v-c043f41a]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.weekday-option[data-v-c043f41a]{min-height:46px;padding:10px 12px;border:1.5px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text-secondary);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.weekday-option.active[data-v-c043f41a]{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,white);color:var(--primary-dark);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent)}.step-helper[data-v-c043f41a]{margin:-4px 0 0;color:var(--text-secondary);font-size:13px}.summary-card[data-v-c043f41a]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;border-radius:14px;background:color-mix(in srgb,var(--background) 70%,white)}.summary-label[data-v-c043f41a]{margin-bottom:4px;color:var(--text-secondary);font-size:12px;font-weight:600}.summary-value[data-v-c043f41a]{color:var(--text-primary);font-size:16px;font-weight:700}.summary-link[data-v-c043f41a]{border:none;background:transparent;color:var(--primary-dark);font-size:14px;font-weight:700;cursor:pointer}.template-grid[data-v-c043f41a]{display:flex;flex-wrap:wrap;gap:10px}.template-pill[data-v-c043f41a]{min-height:40px;padding:8px 14px;border:1px solid color-mix(in srgb,var(--primary) 18%,var(--border));border-radius:999px;background:color-mix(in srgb,var(--primary) 8%,white);color:var(--primary-dark);font-size:13px;font-weight:600;cursor:pointer}.template-pill-copy[data-v-c043f41a]{border-style:dashed;background:color-mix(in srgb,var(--secondary) 12%,white);color:#0f766e}.detail-toggle[data-v-c043f41a]{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin-top:4px;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text-primary);font-size:14px;font-weight:600;cursor:pointer}.detail-chevron[data-v-c043f41a]{transition:transform .2s ease}.detail-chevron.open[data-v-c043f41a]{transform:rotate(180deg)}.advanced-fields[data-v-c043f41a]{margin-top:16px}.course-form-footer[data-v-c043f41a]{flex-wrap:wrap;align-items:center}.delete-btn[data-v-c043f41a]{margin-right:auto}@media (max-width: 768px){.modal-overlay[data-v-c043f41a]{align-items:flex-end;padding:12px 0 0}.course-form-modal[data-v-c043f41a]{max-width:none;max-height:min(92vh,760px);border-right:none;border-bottom:none;border-left:none;border-radius:22px 22px 0 0}.course-form-body[data-v-c043f41a]{gap:18px}.weekday-picker[data-v-c043f41a]{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.weekday-option[data-v-c043f41a]{min-height:44px;font-size:13px}.summary-card[data-v-c043f41a]{align-items:flex-start;flex-direction:column}.course-form-footer[data-v-c043f41a]{position:sticky;bottom:0;padding-bottom:calc(20px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--background) 55%,#FAFAFA)}.course-form-footer .btn[data-v-c043f41a]{flex:1 1 calc(50% - 6px);justify-content:center}.delete-btn[data-v-c043f41a]{order:3;width:100%;margin-right:0}}.theme-switcher[data-v-f4db9206]{display:flex;gap:8px;align-items:center;padding:6px;background:var(--surface);border-radius:12px;border:1px solid var(--border)}.theme-btn[data-v-f4db9206]{width:32px;height:32px;border-radius:50%;border:3px solid transparent;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;position:relative;box-shadow:0 2px 6px #0000001a}.theme-btn[data-v-f4db9206]:hover{transform:scale(1.15);box-shadow:0 4px 12px #00000026}.theme-btn.active[data-v-f4db9206]{border-color:var(--text-primary);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text-primary);transform:scale(1.1)}.check-mark[data-v-f4db9206]{color:#fff;font-size:16px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.3)}.header[data-v-6cbdb04a]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:18px 20px;margin-bottom:24px;padding:24px;border:1px solid rgba(255,107,107,.14);border-bottom:none;border-radius:24px;background:radial-gradient(circle at top left,rgba(255,230,109,.28),transparent 24%),radial-gradient(circle at bottom right,rgba(78,205,196,.18),transparent 22%),linear-gradient(135deg,#ff6b6b1f,#fffffff5),var(--surface);box-shadow:var(--shadow-md)}.header-copy[data-v-6cbdb04a]{max-width:640px}.header-kicker[data-v-6cbdb04a]{display:inline-flex;align-items:center;padding:6px 10px;margin-bottom:10px;border-radius:999px;background:#ff6b6b1f;color:var(--primary-dark);font-size:12px;font-weight:700;letter-spacing:.02em}.header h1[data-v-6cbdb04a]{margin-bottom:10px}.header-copy p[data-v-6cbdb04a]{margin:0;max-width:40ch;color:var(--text-secondary);font-size:16px}.more-menu[data-v-6cbdb04a]{position:relative}.header-actions[data-v-6cbdb04a]{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.header-actions[data-v-6cbdb04a] .theme-switcher{flex-shrink:0}.header-feedback-btn[data-v-6cbdb04a]{min-width:136px}.more-dropdown[data-v-6cbdb04a]{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border-radius:12px;box-shadow:0 10px 40px #00000026;padding:8px;min-width:180px;z-index:100;width:min(260px,calc(100vw - 24px))}.menu-item[data-v-6cbdb04a]{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:none;background:none;border-radius:8px;cursor:pointer;text-align:left;transition:background .15s}.menu-item[data-v-6cbdb04a]:hover{background:#f3f4f6}.menu-item[data-v-6cbdb04a]:disabled{opacity:.55;cursor:not-allowed}.menu-item[data-v-6cbdb04a]:disabled:hover{background:none}.menu-icon[data-v-6cbdb04a]{font-size:20px}.menu-text[data-v-6cbdb04a]{font-size:14px;font-weight:500;color:#2d3436}.empty-state-actions[data-v-6cbdb04a]{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.schedule-toolbar[data-v-6cbdb04a]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px;margin-bottom:20px;padding:22px 24px;border-radius:20px;background:radial-gradient(circle at bottom left,rgba(78,205,196,.24),transparent 24%),linear-gradient(135deg,#ff6b6b1f,#fffffff2),var(--surface);border:1px solid rgba(255,107,107,.14);box-shadow:var(--shadow-md)}.schedule-toolbar-copy h2[data-v-6cbdb04a]{margin:0 0 8px;max-width:16ch;font-size:28px;line-height:1.15}.schedule-toolbar-copy p[data-v-6cbdb04a]{margin:0;color:var(--text-secondary);font-size:15px;max-width:56ch}.schedule-toolbar-badge[data-v-6cbdb04a]{display:inline-flex;align-items:center;padding:6px 10px;margin-bottom:10px;border-radius:999px;background:#4ecdc424;color:#14827a;font-size:12px;font-weight:700;letter-spacing:.02em}.schedule-toolbar-side[data-v-6cbdb04a]{display:flex;align-items:center;gap:16px}.schedule-metrics[data-v-6cbdb04a]{display:grid;grid-template-columns:repeat(3,minmax(92px,1fr));gap:12px}.schedule-metric[data-v-6cbdb04a]{padding:14px 16px;border-radius:16px;background:#ffffffbd;border:1px solid rgba(255,107,107,.14);box-shadow:inset 0 1px #ffffff8c}.schedule-metric strong[data-v-6cbdb04a]{display:block;font-size:24px;line-height:1;color:var(--text-primary)}.schedule-metric span[data-v-6cbdb04a]{display:block;margin-top:6px;color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.02em}.schedule-toolbar-actions[data-v-6cbdb04a]{display:flex;gap:12px;flex-shrink:0}.mobile-action-bar[data-v-6cbdb04a]{display:none}.pdf-export-stage[data-v-6cbdb04a]{position:fixed;top:0;left:-200vw;pointer-events:none;z-index:-1}.pdf-export-sheet[data-v-6cbdb04a]{width:1123px;padding:24px;background:#fff}.browser-guide-banner[data-v-6cbdb04a]{margin-top:-4px}.browser-guide-banner .feedback-badge[data-v-6cbdb04a]{background:#ffe66d52;color:#9a6700}.feedback-banner[data-v-6cbdb04a]{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px;padding:24px;border-radius:20px;background:radial-gradient(circle at top right,rgba(255,230,109,.45),transparent 28%),linear-gradient(135deg,#ff6b6b1f,#4ecdc41f),var(--surface);border:1px solid rgba(255,107,107,.15);box-shadow:var(--shadow-md)}.feedback-copy[data-v-6cbdb04a]{max-width:620px}.feedback-badge[data-v-6cbdb04a]{display:inline-flex;align-items:center;padding:6px 10px;margin-bottom:10px;border-radius:999px;background:#ff6b6b24;color:var(--primary-dark);font-size:12px;font-weight:700;letter-spacing:.02em}.feedback-copy h2[data-v-6cbdb04a]{margin:0 0 8px;font-size:24px;line-height:1.2;color:var(--text-primary)}.feedback-copy p[data-v-6cbdb04a]{margin:0;font-size:15px;color:var(--text-secondary)}.fade-enter-active[data-v-6cbdb04a],.fade-leave-active[data-v-6cbdb04a]{transition:opacity .15s,transform .15s}.fade-enter-from[data-v-6cbdb04a],.fade-leave-to[data-v-6cbdb04a]{opacity:0;transform:translateY(-8px)}@media (max-width: 768px){.header[data-v-6cbdb04a]{grid-template-columns:1fr;align-items:stretch;padding:18px 16px;border-radius:20px}.header h1[data-v-6cbdb04a]{font-size:30px;justify-content:flex-start}.header-copy p[data-v-6cbdb04a]{font-size:15px}.header-actions[data-v-6cbdb04a]{justify-content:flex-start}.header-actions[data-v-6cbdb04a] .theme-switcher{width:100%;justify-content:center}.header-feedback-btn[data-v-6cbdb04a]{flex:1 1 auto;min-width:0}.more-menu[data-v-6cbdb04a]{flex:0 0 auto;min-width:110px}.more-menu .btn[data-v-6cbdb04a]{width:100%;justify-content:center}.schedule-toolbar[data-v-6cbdb04a]{grid-template-columns:1fr;padding:18px}.schedule-toolbar-copy h2[data-v-6cbdb04a]{font-size:22px;max-width:none}.schedule-toolbar-side[data-v-6cbdb04a]{flex-direction:column;align-items:stretch}.schedule-metrics[data-v-6cbdb04a]{grid-template-columns:repeat(3,minmax(0,1fr))}.schedule-metric[data-v-6cbdb04a]{padding:12px}.schedule-metric strong[data-v-6cbdb04a]{font-size:20px}.schedule-toolbar-actions[data-v-6cbdb04a]{display:none}.mobile-action-bar[data-v-6cbdb04a]{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:10px;padding:12px;border-radius:22px;background:#ffffffeb;border:1px solid rgba(255,107,107,.12);box-shadow:0 18px 50px #2d343629;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:90}.mobile-action-bar .btn[data-v-6cbdb04a]{justify-content:center;min-height:52px;font-size:15px}.feedback-banner[data-v-6cbdb04a]{flex-direction:column;align-items:flex-start;padding:20px}.feedback-copy h2[data-v-6cbdb04a]{font-size:21px}.feedback-banner .btn[data-v-6cbdb04a]{width:100%;justify-content:center}}:root,.theme-warm{--primary: #FF6B6B;--primary-light: #FF8E8E;--primary-dark: #E55555;--secondary: #4ECDC4;--accent: #FFE66D;--background: #FFF8F0;--surface: #FFFFFF;--text-primary: #2D3436;--text-secondary: #636E72;--text-muted: #B2BEC3;--border: #DFE6E9;--border-light: #F1F2F6;--danger: #EF4444;--success: #10B981;--header-gradient: linear-gradient(135deg, #FFF8F0 0%, #FFFFFF 100%);--radius: 16px;--radius-sm: 12px;--radius-xs: 8px;--shadow: 0 2px 8px rgba(0, 0, 0, .06);--shadow-md: 0 4px 16px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--primary-shadow: 0 4px 14px rgba(255, 107, 107, .35);--primary-shadow-hover: 0 6px 20px rgba(255, 107, 107, .45)}.theme-fresh{--primary: #4ECDC4;--primary-light: #7EE8E1;--primary-dark: #3ABBB3;--secondary: #FF6B6B;--accent: #FFE66D;--background: #F0FDFA;--surface: #FFFFFF;--text-primary: #2D3436;--text-secondary: #636E72;--text-muted: #B2BEC3;--border: #DFE6E9;--border-light: #F1F2F6;--danger: #EF4444;--success: #10B981;--header-gradient: linear-gradient(135deg, #F0FDFA 0%, #FFFFFF 100%);--primary-shadow: 0 4px 14px rgba(78, 205, 196, .35);--primary-shadow-hover: 0 6px 20px rgba(78, 205, 196, .45)}.theme-pro{--primary: #6366F1;--primary-light: #818CF8;--primary-dark: #4F46E5;--secondary: #4ECDC4;--accent: #FFE66D;--background: #F8F9FC;--surface: #FFFFFF;--text-primary: #2D3436;--text-secondary: #636E72;--text-muted: #B2BEC3;--border: #DFE6E9;--border-light: #F1F2F6;--danger: #EF4444;--success: #10B981;--header-gradient: linear-gradient(135deg, #F8F9FC 0%, #FFFFFF 100%);--primary-shadow: 0 4px 14px rgba(99, 102, 241, .35);--primary-shadow-hover: 0 6px 20px rgba(99, 102, 241, .45)}*{margin:0;padding:0;box-sizing:border-box}button,input,select,textarea{font:inherit}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--background);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100vh;min-height:100dvh}.container{max-width:1200px;margin:0 auto;padding:24px 20px}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--border-light)}.header h1{font-size:28px;font-weight:700;color:var(--text-primary);letter-spacing:-.5px;display:flex;align-items:center;gap:10px}.header h1:before{content:"📚";font-size:28px}.header-actions{display:flex;gap:10px;align-items:center}.btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:12px 20px;border:none;border-radius:var(--radius-xs);font-size:15px;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);text-decoration:none;white-space:nowrap}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.58;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 100%);color:#fff;box-shadow:var(--primary-shadow)}.btn-primary:hover{background:linear-gradient(135deg,var(--primary-dark) 0%,var(--primary) 100%);box-shadow:var(--primary-shadow-hover);transform:translateY(-1px)}.btn-secondary{background:var(--surface);color:var(--text-secondary);border:1.5px solid var(--border)}.btn-secondary:hover{background:var(--border-light);border-color:var(--text-muted);color:var(--text-primary)}.btn-secondary:disabled{background:var(--border-light);color:var(--text-muted);border-color:var(--border)}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 4px 14px #ef44444d}.btn-danger:hover{background:#dc2626;box-shadow:0 6px 20px #ef444466}.btn-icon{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:10px;background:transparent;border:none;cursor:pointer;color:var(--text-secondary);border-radius:var(--radius-xs);transition:all .2s ease}.btn-icon:hover{background:var(--border-light);color:var(--text-primary)}.week-view{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-md);overflow:hidden;border:1px solid var(--border-light)}.week-header{display:grid;grid-template-columns:repeat(7,1fr);background:var(--header-gradient);border-bottom:2px solid var(--border-light)}.week-header-cell{padding:16px 8px;text-align:center;font-weight:700;font-size:15px;color:var(--text-secondary);position:relative}.week-header-cell.today{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 100%);color:#fff}.week-header-cell.today:after{content:"今天";display:block;font-size:11px;font-weight:600;margin-top:2px;opacity:.9}.week-body{display:grid;grid-template-columns:repeat(7,1fr);min-height:450px;background:var(--surface)}.day-column{border-right:1px solid var(--border-light);padding:12px;min-height:350px;transition:background .2s ease}.day-column:last-child{border-right:none}.day-column-header{font-size:12px;color:var(--text-muted);margin-bottom:10px;text-align:center;font-weight:500}.course-card{color:#fff;border-radius:var(--radius-sm);min-height:104px;padding:16px 15px;margin-bottom:10px;font-size:14px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #0000001a;position:relative;overflow:hidden}.course-card:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#ffffff2e,#ffffff0a 48%,#00000014);pointer-events:none}.course-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px #0003}.course-card-name{font-weight:800;margin-bottom:10px;font-size:16px;line-height:1.25;position:relative;z-index:1}.course-card-meta{display:grid;gap:6px;position:relative;z-index:1}.course-card-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;line-height:1.35}.course-card-label{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:#ffffff2e;font-size:11px;font-weight:700;letter-spacing:.02em}.course-card-value{font-size:13px;font-weight:600;opacity:.96}.week-view--export .week-header-cell{padding:12px 4px 10px;background:#f5f7fa;color:#1f2937;font-size:13.5pt;font-weight:800;border-right:1px solid #e2e8f0}.week-view--export .week-header-cell:last-child{border-right:none}.week-view--export .week-header-cell.today{background:#fee9e2;color:#8a3412}.week-view--export .week-header-cell.today:after{margin-top:3px;font-size:9pt}.week-view--export .course-card{break-inside:avoid;page-break-inside:avoid;color:#fff;margin-bottom:8px;min-height:auto;padding:10px 9px;border-radius:12px;box-shadow:none}.week-view--export .course-card:hover{transform:none;box-shadow:none}.week-view--export .course-card:before{background:linear-gradient(135deg,rgba(255,255,255,.12) 0%,transparent 55%)}.week-view--export .course-card-name{margin-bottom:7px;font-size:12.5pt}.week-view--export .course-card-meta{gap:5px}.week-view--export .course-card-label{padding:2px 6px;background:#ffffff29;font-size:8.5pt}.week-view--export .course-card-value{font-size:10.75pt;line-height:1.25}.empty-state{text-align:center;padding:80px 20px;color:var(--text-secondary);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-md);border:1px solid var(--border-light)}.empty-state-icon{font-size:72px;margin-bottom:20px;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.empty-state-text{font-size:18px;font-weight:500;margin-bottom:8px;color:var(--text-primary)}.empty-state-subtext{font-size:14px;color:var(--text-secondary);margin-bottom:28px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:slideUp .3s cubic-bezier(.4,0,.2,1);border:1px solid var(--border-light)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border-light);background:var(--header-gradient)}.modal-header h2{font-size:20px;font-weight:700;color:var(--text-primary)}.modal-body{padding:24px}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:20px 24px;border-top:1px solid var(--border-light);background:color-mix(in srgb,var(--background) 50%,#FAFAFA)}.form-group{margin-bottom:20px}.form-label{display:block;font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.form-label .required{color:var(--primary);margin-left:2px}.form-input,.form-select{width:100%;min-height:48px;padding:12px 14px;border:2px solid var(--border);border-radius:var(--radius-xs);font-size:15px;transition:all .2s ease;background:var(--surface);color:var(--text-primary)}.form-input:focus,.form-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 10%,transparent)}.form-input::placeholder{color:var(--text-muted)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.color-picker{display:flex;gap:10px;flex-wrap:wrap}.color-option{width:40px;height:40px;border-radius:50%;border:3px solid transparent;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #0000001a}.color-option:hover{transform:scale(1.15);box-shadow:0 4px 12px #0003}.color-option.selected{border-color:var(--text-primary);box-shadow:0 0 0 3px var(--surface),0 0 0 6px var(--text-primary);transform:scale(1.1)}@media (max-width: 768px){.container{padding:16px 12px calc(112px + env(safe-area-inset-bottom))}.header{flex-direction:column;gap:16px;align-items:stretch}.header h1{font-size:24px;justify-content:center}.header-actions{justify-content:center;flex-wrap:wrap;gap:8px}.header-actions>.btn,.header-actions>.more-menu{flex:1 1 calc(50% - 4px)}.header-actions>.theme-switcher{width:100%;justify-content:center}.header-actions .btn,.header-actions .more-menu .btn{width:100%;justify-content:center}.week-view{overflow:visible;border-radius:12px}.course-card{padding:18px 16px;border-radius:16px;margin-bottom:12px}.course-card-name{font-size:17px}.course-card-meta{gap:8px}.course-card-label{padding:3px 9px;font-size:12px}.course-card-value{font-size:14px}.empty-state{padding:56px 18px 44px}.form-row{grid-template-columns:1fr}.btn{padding:10px 16px;font-size:14px}.modal{border-radius:12px}.modal-header,.modal-body,.modal-footer{padding-left:16px;padding-right:16px}}@media print{html,body{background:#fff!important;font-size:12pt;line-height:1.3}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}.no-print{display:none!important}.container{max-width:none;padding:0}.week-view{box-shadow:none;border:1px solid #d8dee6;border-radius:0;overflow:hidden}.week-header{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important}.week-body{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;min-height:auto;background:var(--surface)!important}.day-column{display:block!important;min-height:0;min-width:0;padding:8px 7px 10px}.week-header-cell{padding:12px 4px 10px;background:#f5f7fa!important;color:#1f2937!important;font-size:13.5pt;font-weight:800;border-right:1px solid #e2e8f0}.week-header-cell:last-child{border-right:none}.week-header-cell.today{background:#fee9e2!important;color:#8a3412!important}.week-header-cell.today:after{margin-top:3px;font-size:9pt}.course-card{break-inside:avoid;page-break-inside:avoid;color:#fff!important;margin-bottom:8px;min-height:auto;padding:10px 9px;border-radius:12px;box-shadow:none}.course-card:before{background:linear-gradient(135deg,rgba(255,255,255,.12) 0%,transparent 55%)}.course-card-name{margin-bottom:7px;font-size:12.5pt}.course-card-meta{gap:5px}.course-card-label{padding:2px 6px;background:#ffffff29;font-size:8.5pt}.course-card-value{font-size:10.75pt;line-height:1.25}.btn-icon,.day-column-mobile-header,.day-column-empty,.add-course-hint,.mobile-action-bar{display:none!important}.print-header{display:block!important;text-align:center;margin-bottom:12px;padding-bottom:10px;border-bottom:2px solid #1f2937}.print-header h1{font-size:24pt;line-height:1.1;margin-bottom:4px}.print-header p{color:#4b5563;font-size:11pt}}.print-header{display:none}@page{size:landscape;size:A4 landscape;margin:.9cm}
