.tab-bar[data-v-1c546f08]{position:fixed;left:14px;right:14px;bottom:calc(22px + env(safe-area-inset-bottom,0px));height:64px;z-index:var(--z-tab-bar);border-radius:24px;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(20px) saturate(1.2);backdrop-filter:blur(20px) saturate(1.2);border:1px solid rgba(33,28,24,.06);box-shadow:var(--shadow-lg);display:grid;grid-template-columns:1fr 1fr 74px 1fr 1fr;align-items:center;padding:0 6px}.tab-bar-lite[data-v-1c546f08]{grid-template-columns:repeat(4,1fr)}.tab-item[data-v-1c546f08]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--color-text-muted, #8b8278);min-height:var(--tap-min)}.tab-icon[data-v-1c546f08]{width:40px;height:30px;border-radius:11px;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),transform var(--transition-fast)}.tab-img[data-v-1c546f08]{width:23px;height:23px;object-fit:contain;opacity:.62;filter:saturate(.85);transition:opacity var(--transition-fast),filter var(--transition-fast),transform var(--transition-fast)}.tab-text[data-v-1c546f08]{font-size:var(--font-2xs);font-weight:550;letter-spacing:.02em;line-height:1}.tab-item.active .tab-icon[data-v-1c546f08]{background:var(--color-primary-soft)}.tab-item.active .tab-img[data-v-1c546f08]{opacity:1;filter:none;transform:scale(1.06)}.tab-item.active .tab-text[data-v-1c546f08]{color:var(--color-primary-dark);font-weight:700}.tab-fab[data-v-1c546f08]{grid-column:3;justify-self:center;align-self:center;width:58px;height:58px;margin-top:-18px;border-radius:50%;border:none;padding:0;background:radial-gradient(circle at 30% 20%,#ff9a63 0%,var(--brand-500) 46%,var(--brand-600) 100%);box-shadow:0 12px 24px -6px #ff6b358c,0 0 0 5px #ffffffe6;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.tab-fab[data-v-1c546f08]:active{transform:scale(.94)}.fab-icon[data-v-1c546f08]{display:flex;align-items:center;justify-content:center}.fab-img[data-v-1c546f08]{width:26px;height:26px;object-fit:contain;display:block}:root{--brand-50: #fff0e8;--brand-100: #ffe3d4;--brand-200: #ffc9ab;--brand-300: #ffa87e;--brand-400: #ff8459;--brand-500: #ff6b35;--brand-600: #e5521f;--brand-700: #c2430f;--brand-800: #9a370e;--brand-900: #7d2f10;--ink-50: #f6f2ec;--ink-100: #f3efe9;--ink-200: #e8e2d8;--ink-300: #d6cfc2;--ink-400: #a8a094;--ink-500: #8b8278;--ink-600: #5c544c;--ink-700: #3f3a35;--ink-800: #27221e;--ink-900: #211c18;--accent-orange-50: #fff0e8;--accent-orange-500: #ff6b35;--accent-orange-600: #e5521f;--course-zhongjiao-tingshuo: #0369a1;--course-zhongjiao-yuexie: #16a34a;--course-hishuo: #7c3aed;--course-peixue-waijiao: var(--accent-orange-600);--feedback-success: #22c55e;--feedback-warning: #f59e0b;--feedback-danger: #ef4444;--feedback-info: #3b82f6;--status-success-bg: rgba(16, 185, 129, .12);--status-success-text: #059669;--status-warning-bg: rgba(245, 158, 11, .12);--status-warning-text: #d97706;--status-danger-bg: rgba(239, 68, 68, .1);--status-danger-text: #dc2626;--status-info-bg: rgba(59, 130, 246, .1);--status-info-text: #2563eb;--status-pending-bg: var(--accent-orange-50);--status-pending-text: var(--color-accent);--status-expired-bg: rgba(225, 29, 72, .1);--status-expired-text: #e11d48;--color-bg: var(--ink-50);--color-bg-elevated: #ffffff;--color-bg-section: var(--ink-100);--color-bg-muted: var(--ink-100);--color-text-primary: var(--ink-900);--color-text-secondary: var(--ink-600);--color-text-muted: var(--ink-500);--color-text-inverse: #ffffff;--color-text-on-brand: #ffffff;--color-border: rgba(33, 28, 24, .08);--color-border-strong: var(--ink-300);--color-focus-ring: var(--brand-500);--color-primary: var(--brand-500);--color-primary-light: var(--brand-400);--color-primary-dark: var(--brand-600);--color-primary-soft: var(--brand-50);--color-accent: var(--accent-orange-500);--color-accent-light: #ff9b70;--color-accent-dark: var(--accent-orange-600);--color-accent-soft: var(--accent-orange-50);--radius-xs: 6px;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 24px;--radius-2xl: 32px;--radius-full: 9999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--space-9: 48px;--space-10: 64px;--font-xs: 13px;--font-2xs: 11px;--font-sm: 14px;--font-md: 16px;--font-lg: 20px;--font-xl: 20px;--font-2xl: 24px;--font-3xl: 28px;--font-4xl: 36px;--line-height-tight: 1.2;--line-height-snug: 1.35;--line-height-normal: 1.5;--line-height-relaxed: 1.7;--font-family-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans SC", "Helvetica Neue", "Microsoft YaHei", Arial, sans-serif;--font-family-serif: Georgia, "Times New Roman", serif;--font-family-mono: "SF Mono", Menlo, Consolas, monospace;--font-family: var(--font-family-sans);--shadow-2xs: 0 1px 1px rgba(33, 28, 24, .04);--shadow-xs: 0 1px 2px rgba(33, 28, 24, .04);--shadow-sm: 0 1px 2px rgba(33, 28, 24, .04), 0 12px 24px -18px rgba(33, 28, 24, .28);--shadow-md: 0 2px 6px rgba(33, 28, 24, .05), 0 12px 24px -16px rgba(33, 28, 24, .24);--shadow-lg: 0 18px 34px -28px rgba(33, 28, 24, .32);--shadow-xl: 0 22px 44px -24px rgba(33, 28, 24, .3);--shadow-brand: 0 12px 24px -14px rgba(229, 82, 31, .5);--gradient-hero: linear-gradient(135deg, var(--brand-400) 0%, var(--brand-600) 100%);--gradient-accent: linear-gradient(135deg, #fbbf24 0%, var(--accent-orange-500) 100%);--gradient-stage: linear-gradient(90deg, var(--brand-500) 0%, var(--brand-300) 100%);--gradient-paper: linear-gradient(180deg, #fdfbf7 0%, var(--ink-50) 100%);--transition-instant: .08s ease;--transition-fast: .18s cubic-bezier(.4, 0, .2, 1);--transition-normal: .28s cubic-bezier(.4, 0, .2, 1);--transition-slow: .42s cubic-bezier(.4, 0, .2, 1);--z-base: 1;--z-tab-bar: 100;--z-fab: 110;--z-sticky: 50;--z-dropdown: 200;--z-modal: 1000;--z-toast: 1100;--tap-min: 44px}.tap-target{position:relative}.tap-target:after{content:"";position:absolute;top:50%;left:50%;width:max(100%,var(--tap-min));height:max(100%,var(--tap-min));transform:translate(-50%,-50%)}@media (prefers-reduced-motion: reduce){:root{--transition-instant: 0s;--transition-fast: 0s;--transition-normal: 0s;--transition-slow: 0s}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{font-family:var(--font-family);font-size:var(--font-md);line-height:var(--line-height-normal);color:var(--color-text-primary);background:var(--gradient-paper);background-attachment:fixed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility;font-variant-numeric:tabular-nums}#app{min-height:100dvh}input,textarea,select{font-size:max(16px,1em)!important}::selection{background:var(--color-primary-soft);color:var(--color-primary-dark)}.page-container{min-height:100dvh;padding:var(--space-6);padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}.card{background:var(--color-bg-elevated);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm);border:1px solid var(--color-border)}.card-elevated{box-shadow:var(--shadow-md)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-min);padding:var(--space-3) var(--space-6);font-family:var(--font-family);font-size:var(--font-md);font-weight:500;line-height:1;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;user-select:none;-webkit-user-select:none;transition:transform var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast),color var(--transition-fast)}.btn-primary{background:var(--color-primary);color:var(--color-text-on-brand);box-shadow:var(--shadow-brand)}.btn-primary:active{transform:translateY(1px);box-shadow:var(--shadow-xs)}.btn-accent{background:var(--color-accent);color:#fff;box-shadow:var(--shadow-brand)}.btn-accent:active{transform:translateY(1px);box-shadow:var(--shadow-xs)}.btn-ghost{background:transparent;color:var(--color-text-primary);border-color:var(--color-border)}.btn-ghost:active{background:var(--color-bg-section)}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px;border-radius:var(--radius-xs)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-ring{0%{box-shadow:0 0 #22c55e80}70%{box-shadow:0 0 0 12px #22c55e00}to{box-shadow:0 0 #22c55e00}}@keyframes celebrate-pop{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes confetti-rise{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(-120px) rotate(360deg);opacity:0}}@keyframes count-up{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.loading-spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.skeleton{background:linear-gradient(90deg,var(--color-bg-muted) 0%,var(--ink-200) 50%,var(--color-bg-muted) 100%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}:root{--color-bg-card: var(--color-bg-elevated);--color-bg-card-soft: var(--color-primary-soft);--color-primary-bg: var(--color-primary-soft);--color-accent-bg: var(--color-accent-soft)}*{box-sizing:border-box}html,body,#app{margin:0;padding:0;min-height:100dvh;font-family:var(--font-family);-webkit-font-smoothing:antialiased}.app{min-height:100dvh;background:var(--color-bg)}.main.has-tab-bar{padding-bottom:calc(86px + env(safe-area-inset-bottom,0px))}.offline-banner{padding:6px var(--space-4);background:var(--color-primary-soft);color:var(--color-primary-dark);font-size:var(--font-sm);text-align:center}.install-banner{display:flex;align-items:center;gap:var(--space-3);padding:8px var(--space-4);background:var(--color-primary);color:var(--color-bg-elevated);font-size:var(--font-sm)}.install-text{flex:1}.install-btn{flex-shrink:0;min-height:32px;padding:0 var(--space-3);border:1px solid rgba(255,255,255,.6);border-radius:var(--radius-full);background:transparent;color:inherit;font-size:var(--font-sm);cursor:pointer}.install-close{flex-shrink:0;border:none;background:transparent;color:inherit;font-size:var(--font-lg);line-height:1;padding:0 4px;cursor:pointer}.toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom,0px));transform:translate(-50%);max-width:78vw;padding:10px var(--space-4);border-radius:var(--radius-sm);background:rgba(48,49,51,.92);color:#fff;font-size:var(--font-sm);line-height:1.4;text-align:center;z-index:var(--z-toast)}.toast-success{background:var(--feedback-success)}.toast-error{background:var(--feedback-danger)}.toast-fade-enter-active,.toast-fade-leave-active{transition:opacity .2s ease}.toast-fade-enter-from,.toast-fade-leave-to{opacity:0}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}
