.avatar[data-v-e03bcb60]{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);overflow:hidden;flex-shrink:0;font-weight:var(--fw-semibold);color:#fff;user-select:none}.gender-boy[data-v-e03bcb60]{background:var(--color-boy-strong)}.gender-girl[data-v-e03bcb60]{background:var(--color-girl-strong)}.avatar-img[data-v-e03bcb60]{width:100%;height:100%;object-fit:cover}.avatar-initial[data-v-e03bcb60]{line-height:1}.theme-toggle[data-v-a15a26ed]{display:inline-flex;background:var(--color-bg-subtle);border-radius:var(--radius-full);padding:3px;gap:2px}.toggle-item[data-v-a15a26ed]{display:inline-flex;align-items:center;gap:var(--sp-1);padding:6px 12px;border-radius:var(--radius-full);font-size:var(--fs-xs);color:var(--color-text-secondary);transition:background-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard);white-space:nowrap}.toggle-item.active[data-v-a15a26ed]{background:var(--color-bg-elevated);color:var(--color-text);box-shadow:var(--shadow-sm)}.toggle-item[data-v-a15a26ed]:hover:not(.active){color:var(--color-text)}.item-icon[data-v-a15a26ed]{line-height:1;flex-shrink:0}.compact[data-v-a15a26ed]{width:100%;justify-content:space-between}.compact .toggle-item[data-v-a15a26ed]{flex:1;justify-content:center;padding:6px 0}.student-layout[data-v-52768d5c]{min-height:100vh;display:flex;flex-direction:column;background:var(--color-bg)}.top-bar[data-v-52768d5c]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;height:var(--header-height);padding:0 var(--sp-4);background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border);padding-top:var(--safe-top);height:calc(var(--header-height) + var(--safe-top))}.brand[data-v-52768d5c]{display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:var(--fw-semibold);color:var(--color-text);font-size:var(--fs-md)}.brand-icon[data-v-52768d5c]{font-size:18px}.top-actions[data-v-52768d5c]{display:flex;align-items:center;gap:var(--sp-2)}.icon-btn[data-v-52768d5c]{position:relative;width:36px;height:36px;border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;font-size:18px;color:var(--color-text-secondary)}.icon-btn[data-v-52768d5c]:hover{background:var(--color-bg-subtle)}.icon-btn .dot[data-v-52768d5c]{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;border-radius:var(--radius-full);background:var(--color-badge);color:#fff;font-size:10px;font-weight:var(--fw-bold);line-height:16px;text-align:center;border:2px solid var(--color-bg-elevated);box-sizing:content-box}.avatar-btn[data-v-52768d5c]{padding:2px;border-radius:var(--radius-full)}.avatar-btn[data-v-52768d5c]:hover{opacity:.85}.student-main[data-v-52768d5c]{flex:1;width:100%}@media (max-width: 480px){.hidden-sm[data-v-52768d5c]{display:none}}.admin-layout[data-v-7f66317a]{min-height:100vh;display:flex;background:var(--color-bg)}.sidebar[data-v-7f66317a]{display:flex;flex-direction:column;width:220px;background:var(--color-bg-elevated);border-right:1px solid var(--color-border);padding:var(--sp-4) var(--sp-3);position:sticky;top:0;height:100vh;transition:width var(--dur-base) var(--ease-standard);flex-shrink:0}.admin-layout.collapsed .sidebar[data-v-7f66317a]{width:64px;padding:var(--sp-4) var(--sp-2)}.sidebar-head[data-v-7f66317a]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-5);gap:var(--sp-2)}.brand[data-v-7f66317a]{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-text);overflow:hidden;white-space:nowrap}.brand-icon[data-v-7f66317a]{font-size:20px;flex-shrink:0}.collapse-btn[data-v-7f66317a]{width:24px;height:24px;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--fs-sm);flex-shrink:0}.collapse-btn[data-v-7f66317a]:hover{background:var(--color-bg-subtle);color:var(--color-text)}.admin-layout.collapsed .sidebar-head[data-v-7f66317a]{justify-content:center}.admin-layout.collapsed .collapse-btn[data-v-7f66317a]{display:none}.sidebar-nav[data-v-7f66317a]{display:flex;flex-direction:column;gap:2px;flex:1}.nav-item[data-v-7f66317a]{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--fs-base);text-align:left;transition:background-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard);white-space:nowrap;overflow:hidden}.nav-item[data-v-7f66317a]:hover{background:var(--color-bg-subtle);color:var(--color-text)}.nav-item.active[data-v-7f66317a]{background:var(--color-boy-soft);color:var(--color-boy-strong);font-weight:var(--fw-medium)}.nav-icon[data-v-7f66317a]{flex-shrink:0}.admin-layout.collapsed .nav-item[data-v-7f66317a]{justify-content:center;padding:var(--sp-3) 0}.sidebar-footer[data-v-7f66317a]{display:flex;flex-direction:column;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--color-border)}.logout-btn[data-v-7f66317a]{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden}.logout-btn[data-v-7f66317a]:hover{background:var(--color-bg-subtle);color:var(--color-error)}.admin-layout.collapsed .logout-btn[data-v-7f66317a]{justify-content:center;padding:var(--sp-2) 0}.admin-main[data-v-7f66317a]{flex:1;min-width:0;padding:var(--sp-4);padding-bottom:calc(var(--sp-6) + var(--safe-bottom))}@media (min-width: 1024px){.admin-main[data-v-7f66317a]{padding:var(--sp-8)}}.toast-host[data-v-1281d9ce]{position:fixed;top:calc(var(--safe-top) + var(--sp-4));left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:var(--sp-2);pointer-events:none;max-width:calc(100vw - var(--sp-8))}.toast-item[data-v-1281d9ce]{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);background:var(--color-bg-elevated);color:var(--color-text);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--fs-sm);pointer-events:auto;cursor:pointer;min-width:200px;max-width:360px}.toast-icon[data-v-1281d9ce]{flex-shrink:0}.type-success .toast-icon[data-v-1281d9ce]{color:var(--color-success)}.type-error .toast-icon[data-v-1281d9ce]{color:var(--color-error)}.type-warning .toast-icon[data-v-1281d9ce]{color:var(--color-warning)}.type-info .toast-icon[data-v-1281d9ce]{color:var(--color-boy-strong)}.toast-text[data-v-1281d9ce]{flex:1;line-height:1.4}.toast-enter-active[data-v-1281d9ce],.toast-leave-active[data-v-1281d9ce]{transition:all var(--dur-base) var(--ease-bounce)}.toast-enter-from[data-v-1281d9ce],.toast-leave-to[data-v-1281d9ce]{opacity:0;transform:translateY(-12px)}.modal-overlay[data-v-91c9b01b]{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);z-index:1000;backdrop-filter:blur(2px)}.modal-box[data-v-91c9b01b]{width:100%;max-width:420px;max-height:90vh;display:flex;flex-direction:column;background:var(--color-bg-elevated);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);overflow:hidden}.modal-header[data-v-91c9b01b]{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border)}.modal-title[data-v-91c9b01b]{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--color-text)}.modal-close[data-v-91c9b01b]{width:32px;height:32px;border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--color-text-secondary)}.modal-close[data-v-91c9b01b]:hover{background:var(--color-bg-subtle);color:var(--color-text)}.modal-body[data-v-91c9b01b]{padding:var(--sp-5);overflow-y:auto;flex:1}.modal-footer[data-v-91c9b01b]{padding:var(--sp-3) var(--sp-5) var(--sp-5);display:flex;gap:var(--sp-3);justify-content:flex-end}.modal-enter-active[data-v-91c9b01b],.modal-leave-active[data-v-91c9b01b]{transition:opacity var(--dur-base) var(--ease-standard)}.modal-enter-active .modal-box[data-v-91c9b01b],.modal-leave-active .modal-box[data-v-91c9b01b]{transition:transform var(--dur-base) var(--ease-bounce),opacity var(--dur-base) var(--ease-standard)}.modal-enter-from[data-v-91c9b01b],.modal-leave-to[data-v-91c9b01b]{opacity:0}.modal-enter-from .modal-box[data-v-91c9b01b],.modal-leave-to .modal-box[data-v-91c9b01b]{transform:translateY(20px) scale(.96);opacity:0}@media (max-width: 639px){.modal-overlay[data-v-91c9b01b]{align-items:flex-end;padding:0}.modal-box[data-v-91c9b01b]{max-width:100%;max-height:88vh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding-bottom:var(--safe-bottom)}.modal-enter-from .modal-box[data-v-91c9b01b],.modal-leave-to .modal-box[data-v-91c9b01b]{transform:translateY(100%)}}.spinner[data-v-501672b3]{display:inline-block;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:spin-501672b3 .7s linear infinite;opacity:.8}@keyframes spin-501672b3{to{transform:rotate(360deg)}}.base-btn[data-v-7b51ccc5]{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);font-weight:var(--fw-semibold);border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard),opacity var(--dur-fast) var(--ease-standard);white-space:nowrap;user-select:none;-webkit-tap-highlight-color:transparent}.base-btn[data-v-7b51ccc5]:active:not(:disabled){transform:scale(.98)}.base-btn[data-v-7b51ccc5]:disabled{cursor:not-allowed;opacity:.55}.base-btn.block[data-v-7b51ccc5]{width:100%}.size-sm[data-v-7b51ccc5]{height:32px;padding:0 var(--sp-3);font-size:var(--fs-sm)}.size-md[data-v-7b51ccc5]{height:40px;padding:0 var(--sp-4);font-size:var(--fs-base)}.size-lg[data-v-7b51ccc5]{height:48px;padding:0 var(--sp-6);font-size:var(--fs-md)}.variant-primary[data-v-7b51ccc5]{background:var(--color-boy-strong);color:#fff}.variant-primary[data-v-7b51ccc5]:hover:not(:disabled){background:#3a7dc0}.variant-secondary[data-v-7b51ccc5]{background:var(--color-bg-elevated);color:var(--color-text);border:1px solid var(--color-border)}.variant-secondary[data-v-7b51ccc5]:hover:not(:disabled){background:var(--color-bg-subtle)}.variant-ghost[data-v-7b51ccc5]{background:transparent;color:var(--color-text-secondary)}.variant-ghost[data-v-7b51ccc5]:hover:not(:disabled){background:var(--color-bg-subtle);color:var(--color-text)}.variant-danger[data-v-7b51ccc5]{background:var(--color-danger);color:#fff}.variant-danger[data-v-7b51ccc5]:hover:not(:disabled){background:#c6423f}.variant-boy[data-v-7b51ccc5]{background:var(--color-boy-strong);color:#fff}.variant-boy[data-v-7b51ccc5]:hover:not(:disabled){background:#3a7dc0}.variant-girl[data-v-7b51ccc5]{background:var(--color-girl-strong);color:#fff}.variant-girl[data-v-7b51ccc5]:hover:not(:disabled){background:#d87a8a}[data-theme=dark] .variant-primary[data-v-7b51ccc5]:hover:not(:disabled){background:#5a9ae8}[data-theme=dark] .variant-boy[data-v-7b51ccc5]:hover:not(:disabled){background:#5a9ae8}[data-theme=dark] .variant-girl[data-v-7b51ccc5]:hover:not(:disabled){background:#f0a8b5}.btn-loading[data-v-7b51ccc5]{display:inline-flex}.app-root[data-v-95f7f062]{min-height:100vh}.volume-tip[data-v-95f7f062]{font-size:var(--fs-base);color:var(--color-text);line-height:1.6;text-align:center;padding:var(--sp-2) 0}:root{--color-bg: #fbf9f6;--color-bg-elevated: #ffffff;--color-bg-subtle: #f2efea;--color-surface: #ffffff;--color-text: #3d3d3d;--color-text-secondary: #6b6b6b;--color-text-disabled: #b0b0b0;--color-border: #e8e4dd;--color-border-strong: #d4cfc4;--color-boy: #7ba7d9;--color-boy-strong: #4a90d9;--color-boy-soft: #e8f1fb;--color-girl: #f4b8c4;--color-girl-strong: #e8919f;--color-girl-soft: #fdeef1;--note-boy: #59c0e7;--note-boy-gradient: #5fc4ea;--note-boy-text: #0f2a38;--note-boy-border: rgba(89, 192, 231, .25);--note-girl: #ea86c2;--note-girl-gradient: #ed8ec7;--note-girl-text: #2a1018;--note-girl-border: rgba(234, 134, 194, .25);--color-success: #5bb875;--color-warning: #e8a547;--color-error: #d9534f;--color-danger: #d9534f;--color-badge: #e84855;--color-accent: #e8a547;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 30px;--fw-normal: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--lh-tight: 1.3;--lh-base: 1.6;--lh-loose: 1.8;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--shadow-note: 0 2px 6px rgba(0, 0, 0, .1);--dur-fast: .15s;--dur-base: .25s;--dur-slow: .4s;--ease-standard: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--header-height: 56px;--max-content-width: 1200px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px)}[data-theme=dark]{--color-bg: #1a1a1f;--color-bg-elevated: #25252b;--color-bg-subtle: #2d2d34;--color-surface: #25252b;--color-text: #e0e0e0;--color-text-secondary: #a8a8b0;--color-text-disabled: #5c5c66;--color-border: #3a3a42;--color-border-strong: #4a4a55;--color-boy: #5b8bc4;--color-boy-strong: #6fa8e8;--color-boy-soft: #2a3b4d;--color-girl: #d99cab;--color-girl-strong: #f0a8b5;--color-girl-soft: #3d2a30;--note-boy: #2e7a99;--note-boy-gradient: #337f9e;--note-boy-text: #c8eaf5;--note-boy-border: rgba(70, 165, 200, .3);--note-girl: #8c4d70;--note-girl-gradient: #915275;--note-girl-text: #f0cadd;--note-girl-border: rgba(185, 100, 140, .3);--color-success: #7bc890;--color-warning: #f0bc60;--color-error: #e87070;--color-danger: #e87070;--color-badge: #ff5c6a;--color-accent: #f0bc60;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 2px 8px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--shadow-note: 0 2px 6px rgba(0, 0, 0, .35)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{min-height:100vh;line-height:var(--lh-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-weight:var(--fw-semibold);line-height:var(--lh-tight)}ul,ol{list-style:none}img,picture,svg,video{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--color-boy-strong);outline-offset:2px;border-radius:var(--radius-sm)}button,input,select,textarea{font-family:inherit}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:var(--fs-base);color:var(--color-text);background-color:var(--color-bg);transition:background-color var(--dur-base) var(--ease-standard),color var(--dur-base) var(--ease-standard)}#app{min-height:100vh}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.text-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.text-secondary{color:var(--color-text-secondary)}.text-disabled{color:var(--color-text-disabled)}.text-boy{color:var(--color-boy-strong)}.text-girl{color:var(--color-girl-strong)}.text-error{color:var(--color-error)}.text-success{color:var(--color-success)}.text-xs{font-size:var(--fs-xs)}.text-sm{font-size:var(--fs-sm)}.text-base{font-size:var(--fs-base)}.text-md{font-size:var(--fs-md)}.text-lg{font-size:var(--fs-lg)}.text-xl{font-size:var(--fs-xl)}.text-2xl{font-size:var(--fs-2xl)}.text-3xl{font-size:var(--fs-3xl)}.font-normal{font-weight:var(--fw-normal)}.font-medium{font-weight:var(--fw-medium)}.font-semibold{font-weight:var(--fw-semibold)}.font-bold{font-weight:var(--fw-bold)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-6{margin-top:var(--sp-6)}.mt-8{margin-top:var(--sp-8)}.mb-2{margin-bottom:var(--sp-2)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.mb-6{margin-bottom:var(--sp-6)}.mb-8{margin-bottom:var(--sp-8)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.container{width:100%;max-width:var(--max-content-width);margin:0 auto;padding:0 var(--sp-4)}@media (min-width: 640px){.container{padding:0 var(--sp-6)}}@media (min-width: 1024px){.container{padding:0 var(--sp-8)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (min-width: 1024px){::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}}.fade-enter-active,.fade-leave-active{transition:opacity var(--dur-base) var(--ease-standard)}.fade-enter-from,.fade-leave-to{opacity:0}
