:root{--color-primary:#1d4ed8;--color-primary-dark:#1e40af;--color-primary-light:#3b82f6;--color-parent:#d97706;--color-parent-dark:#b45309;--color-teacher:#0f766e;--color-teacher-dark:#115e59;--color-text-main:#0f172a;--color-text-sub:#475569;--color-text-light:#94a3b8;--color-border:#e2e8f0;--color-bg-page:#f8fafc;--color-warning:#f59e0b;--color-danger:#ef4444;--gradient-page:linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);--gradient-parent:linear-gradient(135deg, #d97706 0%, #b45309 100%);--gradient-teacher:linear-gradient(135deg, #0f766e 0%, #115e59 100%);--gradient-primary:linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%);--glass-bg:#fff;--glass-border:#e2e8f0;--shadow-card:0 8px 24px #0f172a0f;--shadow-btn:0 6px 18px #1d4ed83d;--shadow-modal:0 20px 40px #0f172a33;--max-width:1200px;--page-padding:24px;--radius-card:14px;--radius-btn:10px;--radius-input:10px;--spacing-base:24px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--gradient-page);color:var(--color-text-main);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,Segoe UI,sans-serif;line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none;transition:color .2s}button{cursor:pointer;background:0 0;border:none;font-family:inherit}ul,ol{list-style:none}.glass-card{background:var(--glass-bg);border-radius:var(--radius-card);box-shadow:var(--shadow-card);border:1px solid var(--glass-border);padding:28px}.btn{border-radius:var(--radius-btn);justify-content:center;align-items:center;height:48px;padding:0 20px;font-size:15px;font-weight:600;transition:all .2s;display:inline-flex}.btn-sm{height:40px;font-size:14px}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-btn)}.btn-primary:hover{filter:brightness(1.04);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-ghost{color:var(--color-primary);border:1px solid var(--color-primary);background:0 0}.btn-ghost:hover{background:#1d4ed814}.btn-parent{background:var(--gradient-parent);color:#fff}.btn-teacher{background:var(--gradient-teacher);color:#fff}.input-group{margin-bottom:20px}.input-label{color:var(--color-text-sub);margin-bottom:8px;font-size:14px;display:block}.input-wrapper{border:1px solid var(--color-border);border-radius:var(--radius-input);background:#fff;flex-wrap:nowrap;align-items:center;height:48px;transition:all .2s;display:flex;position:relative}.input-wrapper>.btn,.input-wrapper>button{white-space:nowrap;flex-shrink:0;min-width:fit-content}.input-wrapper:focus-within{border-color:var(--color-primary-light);box-shadow:0 0 0 3px #3b82f624}.input-field{height:100%;color:var(--color-text-main);background:0 0;border:none;outline:none;flex:1;padding:0 14px;font-size:15px}.input-field::placeholder{color:var(--color-text-light)}.input-icon{width:44px;color:var(--color-text-light);justify-content:center;align-items:center;font-size:16px;display:flex}.text-primary{color:var(--color-primary)}.text-parent{color:var(--color-parent)}.text-teacher{color:var(--color-teacher)}.text-main{color:var(--color-text-main)}.text-sub{color:var(--color-text-sub)}.text-light{color:var(--color-text-light)}.fw-bold{font-weight:700}.fw-semibold{font-weight:600}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mt-4{margin-top:32px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.mb-3{margin-bottom:24px}.mb-4{margin-bottom:32px}@media (width<=480px){.auth-layout{gap:16px}.brand-section{display:none}.brand-title{font-size:22px}.form-section{flex:1}}.mobile-scroll-x{-webkit-overflow-scrolling:touch;scrollbar-width:none;overflow-x:auto}.mobile-scroll-x::-webkit-scrollbar{display:none}.table-wrap{-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px;overflow-x:auto}.touch-target{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.mobile-stack>*+*{margin-top:12px}.grid-2{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}@media (width<=480px){.grid-2{grid-template-columns:1fr}}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}@media (width<=640px){.grid-3{grid-template-columns:repeat(2,1fr)}}@media (width<=400px){.grid-3{grid-template-columns:1fr}}@media (width<=768px){.glass-card{border-radius:12px;padding:20px 16px}.btn{height:44px;padding:0 16px;font-size:14px}.input-wrapper{height:44px}.input-field{font-size:14px}}@supports (padding-bottom:env(safe-area-inset-bottom)){.bottom-nav{padding-bottom:env(safe-area-inset-bottom)}}.announcement-bar[data-v-10a79c45]{cursor:pointer;z-index:50;background:linear-gradient(135deg,#f0f9ff 0%,#e0f2fe 100%);border-bottom:1px solid #bae6fd;position:relative;overflow:hidden}.announcement-inner[data-v-10a79c45]{max-width:var(--max-width,1200px);padding:6px var(--page-padding,24px);color:#0369a1;align-items:center;gap:10px;height:32px;margin:0 auto;font-size:13px;line-height:1.5;display:flex}.announcement-label[data-v-10a79c45]{color:#fff;white-space:nowrap;background:#38bdf8;border-radius:4px;flex-shrink:0;padding:1px 8px;font-size:11px;font-weight:700}.marquee-wrap[data-v-10a79c45]{flex:1;align-items:center;height:100%;display:flex;position:relative;overflow:hidden}.marquee-track[data-v-10a79c45]{white-space:nowrap;animation:30s linear infinite marquee-10a79c45;display:flex}.marquee-wrap:hover .marquee-track[data-v-10a79c45]{animation-play-state:paused}.marquee-content[data-v-10a79c45]{flex-shrink:0;padding-right:0}@keyframes marquee-10a79c45{0%{transform:translate(0)}to{transform:translate(-50%)}}.announcement-overlay[data-v-10a79c45]{z-index:9999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#00000080;justify-content:center;align-items:center;animation:.2s fadeIn-10a79c45;display:flex;position:fixed;inset:0}.announcement-modal[data-v-10a79c45]{background:#fff;border-radius:16px;width:90%;max-width:480px;animation:.3s cubic-bezier(.34,1.56,.64,1) modalSlideUp-10a79c45;overflow:hidden;box-shadow:0 25px 80px #00000040}.modal-header[data-v-10a79c45]{justify-content:space-between;align-items:center;padding:20px 24px 0;display:flex}.modal-header h3[data-v-10a79c45]{color:#111827;flex:1;margin:0;padding-right:12px;font-size:18px;font-weight:700}.modal-close[data-v-10a79c45]{cursor:pointer;color:#6b7280;background:#f3f4f6;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:18px;transition:all .2s;display:flex}.modal-close[data-v-10a79c45]:hover{color:#111827;background:#e5e7eb}.modal-body[data-v-10a79c45]{padding:16px 24px 20px}.modal-time[data-v-10a79c45]{color:#9ca3af;margin:0 0 12px;font-size:12px}.modal-content[data-v-10a79c45]{color:#374151;white-space:pre-wrap;margin:0;font-size:15px;line-height:1.8}.modal-footer[data-v-10a79c45]{padding:0 24px 20px}.btn-ok[data-v-10a79c45]{color:#fff;cursor:pointer;background:#6366f1;border:none;border-radius:10px;width:100%;padding:10px;font-size:15px;font-weight:600;transition:all .2s}.btn-ok[data-v-10a79c45]:hover{background:#4f46e5}@keyframes fadeIn-10a79c45{0%{opacity:0}to{opacity:1}}@keyframes modalSlideUp-10a79c45{0%{opacity:0;transform:translateY(30px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.navbar[data-v-917e4e55]{border-bottom:1px solid var(--color-border);z-index:100;background:#fff;height:60px;position:sticky;top:0;box-shadow:0 1px 2px #0f172a0a}.navbar-container[data-v-917e4e55]{max-width:var(--max-width);height:100%;padding:0 var(--page-padding);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.nav-left[data-v-917e4e55]{align-items:center;gap:48px;display:flex}.logo[data-v-917e4e55]{align-items:center;gap:8px;display:flex}.logo-icon[data-v-917e4e55]{width:32px;height:32px;color:var(--color-primary-dark);background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}.logo-text[data-v-917e4e55]{color:#0f172a;font-size:18px;font-weight:600}.nav-menu[data-v-917e4e55]{gap:32px;display:flex}.nav-menu a[data-v-917e4e55]{color:#64748b;padding-bottom:16px;font-size:14px;font-weight:600;transition:color .2s;position:relative}.nav-menu a[data-v-917e4e55]:hover{color:#0f172a}.nav-menu a.active[data-v-917e4e55]{color:var(--color-primary-dark);font-weight:600}.nav-menu a.active[data-v-917e4e55]:after{content:"";background:var(--color-primary);border-radius:2px 2px 0 0;width:100%;height:2px;position:absolute;bottom:0;left:0}.nav-right[data-v-917e4e55]{align-items:center;display:flex}.nav-link[data-v-917e4e55]{color:#475569;font-size:14px;transition:color .2s}.nav-link[data-v-917e4e55]:hover{color:var(--color-primary-dark)}.nav-link-with-badge[data-v-917e4e55]{align-items:center;display:inline-flex;position:relative}.text-badge[data-v-917e4e55]{color:#fff;background-color:#dc2626;border-radius:10px;padding:2px 5px;font-size:11px;font-weight:700;line-height:1;position:absolute;top:-8px;right:-20px}.divider[data-v-917e4e55]{color:#cbd5e1;margin:0 8px}.user-actions[data-v-917e4e55]{align-items:center;gap:16px;display:flex}.icon-btn[data-v-917e4e55]{cursor:pointer;color:#64748b;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;transition:color .2s;display:flex}.icon-btn[data-v-917e4e55]:hover{color:var(--color-primary-dark)}.notification-btn[data-v-917e4e55]{justify-content:center;align-items:center;display:flex;position:relative}.badge[data-v-917e4e55]{background-color:#ff3b30;border:1px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:2px;right:2px}.nav-icon[data-v-917e4e55]{width:20px;height:20px}.notification-container[data-v-917e4e55]{position:relative}.notification-dropdown[data-v-917e4e55]{border:1px solid var(--color-border);z-index:200;background:#fff;border-radius:12px;width:300px;margin-top:16px;position:absolute;top:100%;right:-20px;overflow:hidden;box-shadow:0 12px 24px #0f172a1f}.notification-dropdown[data-v-917e4e55]:before{content:"";background:#fff;border-top:1px solid #0000000d;border-left:1px solid #0000000d;width:12px;height:12px;position:absolute;top:-6px;right:30px;transform:rotate(45deg)}.dropdown-header[data-v-917e4e55]{border-bottom:1px solid var(--color-border);background:#f8fafc;padding:16px 20px}.dropdown-header h4[data-v-917e4e55]{color:#1d1d1f;margin:0;font-size:14px;font-weight:600}.dropdown-body[data-v-917e4e55]{max-height:360px;overflow-y:auto}.note-item[data-v-917e4e55]{border-bottom:1px solid #f1f5f9;padding:16px 20px;transition:background-color .2s}.note-item[data-v-917e4e55]:last-child{border-bottom:none}.note-item[data-v-917e4e55]:hover{background-color:#f8fafc}.note-title[data-v-917e4e55]{color:#1d1d1f;margin-bottom:4px;font-size:14px;font-weight:500}.note-content[data-v-917e4e55]{color:#86868b;margin-bottom:8px;font-size:13px;line-height:1.4}.note-time[data-v-917e4e55]{color:#a1a1a6;font-size:11px}.user-menu-container[data-v-917e4e55]{position:relative}.avatar[data-v-917e4e55]{border:1px solid var(--color-border);color:#64748b;cursor:pointer;background:#f8fafc;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:all .2s;display:flex}.avatar[data-v-917e4e55]:hover{border-color:var(--color-primary-light);color:var(--color-primary-dark)}.avatar-icon[data-v-917e4e55]{width:20px;height:20px}.user-dropdown[data-v-917e4e55]{border:1px solid var(--color-border);z-index:200;background:#fff;border-radius:10px;width:160px;margin-top:12px;animation:.15s dropdownFadeIn-917e4e55;position:absolute;top:100%;right:0;overflow:hidden;box-shadow:0 12px 24px #0f172a24}@keyframes dropdownFadeIn-917e4e55{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.user-dropdown[data-v-917e4e55]:before{content:"";background:#fff;border-top:1px solid #0000000d;border-left:1px solid #0000000d;width:12px;height:12px;position:absolute;top:-6px;right:12px;transform:rotate(45deg)}.user-dropdown-item[data-v-917e4e55]{color:#1d1d1f;cursor:pointer;align-items:center;gap:10px;padding:12px 16px;font-size:14px;font-weight:500;transition:background .15s;display:flex}.user-dropdown-item[data-v-917e4e55]:hover{background:#f8fafc}.user-dropdown-item.logout[data-v-917e4e55]{color:#ff3b30}.user-dropdown-item.logout[data-v-917e4e55]:hover{background:#fff1f0}.dropdown-item-icon[data-v-917e4e55]{width:18px;height:18px}@media (width<=768px){.navbar-container[data-v-917e4e55]{padding:0 16px}.nav-menu[data-v-917e4e55]{display:none}.desktop-only[data-v-917e4e55]{display:none!important}.mobile-only[data-v-917e4e55]{display:flex!important}}.desktop-only[data-v-917e4e55]{display:inline-flex}.mobile-only[data-v-917e4e55]{display:none!important}.hamburger[data-v-917e4e55]{cursor:pointer;z-index:210;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;width:32px;height:32px;padding:4px;display:none;position:relative}.hamburger-line[data-v-917e4e55]{transform-origin:50%;background:#475569;border-radius:2px;width:22px;height:2px;transition:all .25s;display:block}.hamburger-line.open[data-v-917e4e55]:first-child{transform:translateY(7px)rotate(45deg)}.hamburger-line.open[data-v-917e4e55]:nth-child(2){opacity:0}.hamburger-line.open[data-v-917e4e55]:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.mobile-menu-overlay[data-v-917e4e55]{z-index:190;background:#0000004d;position:fixed;inset:0}.mobile-menu[data-v-917e4e55]{border-bottom:1px solid var(--color-border);z-index:200;background:#fff;padding:8px 0;animation:.2s mobileMenuSlideIn-917e4e55;position:fixed;top:60px;left:0;right:0;box-shadow:0 8px 20px #0000001a}@keyframes mobileMenuSlideIn-917e4e55{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.mobile-menu-item[data-v-917e4e55]{color:#475569;padding:14px 20px;font-size:15px;font-weight:500;text-decoration:none;transition:background .15s;display:block}.mobile-menu-item[data-v-917e4e55]:hover,.mobile-menu-item[data-v-917e4e55]:active{background:#f8fafc}.mobile-menu-item.active[data-v-917e4e55]{color:var(--color-primary-dark);background:#eff6ff}.mobile-menu-item.logout-item[data-v-917e4e55]{color:#ef4444;border-top:1px solid var(--color-border);cursor:pointer;margin-top:4px}.logout-toast[data-v-917e4e55]{color:#fff;z-index:999;background:#111827;border-radius:10px;padding:10px 14px;font-size:13px;position:fixed;top:76px;right:24px;box-shadow:0 10px 25px #0000002e}.toast-fade-enter-active[data-v-917e4e55],.toast-fade-leave-active[data-v-917e4e55]{transition:opacity .2s,transform .2s}.toast-fade-enter-from[data-v-917e4e55],.toast-fade-leave-to[data-v-917e4e55]{opacity:0;transform:translateY(-6px)}.bottom-nav[data-v-75f8ac72]{z-index:120;background:#fffffff2;border-top:1px solid #e5e7eb;height:56px;display:none;position:fixed;bottom:0;left:0;right:0}.nav-item[data-v-75f8ac72]{color:#6b7280;flex:1;justify-content:center;align-items:center;font-size:13px;text-decoration:none;display:inline-flex}.nav-item.active[data-v-75f8ac72]{color:#10a881;font-weight:700}@media (width<=768px){.bottom-nav[data-v-75f8ac72]{display:flex}}.app-main[data-v-308a9c18]{min-height:calc(100vh - 120px);padding:var(--page-padding);max-width:var(--max-width);margin:0 auto}.app-main.no-padding[data-v-308a9c18]{max-width:100%;min-height:100vh;padding:0}.app-main.full-bleed[data-v-308a9c18]{min-height:calc(100vh - 60px)}.app-footer[data-v-308a9c18]{height:60px;color:var(--color-text-light);justify-content:center;align-items:center;font-size:12px;display:flex}.footer-content[data-v-308a9c18]{align-items:center;gap:12px;display:flex}.divider[data-v-308a9c18]{color:var(--color-border)}.footer-link[data-v-308a9c18]:hover{color:var(--color-primary)}@media (width<=768px){.app-main[data-v-308a9c18]{padding:24px 16px 76px}.app-main.full-bleed[data-v-308a9c18]{min-height:calc(100vh - 116px);padding:0}}
