.login-page[data-v-ba63238c]{background:#f5f7fa;min-height:100vh;padding-bottom:2rem;position:relative}.header-bg[data-v-ba63238c]{z-index:0;background:linear-gradient(#e8f4fd 0%,#f5f7fa 100%);height:21.75rem;position:absolute;top:0;left:0;right:0;overflow:hidden}.header-bg .decoration-bars[data-v-ba63238c]{opacity:.4;gap:1.5rem;height:100%;display:flex;position:absolute;top:0;left:-3.625rem;right:0}.header-bg .decoration-bars .bar[data-v-ba63238c]{background:linear-gradient(#4a90d926 0%,#4a90d90d 100%);border-radius:.5rem;width:4.3125rem;height:8.625rem;transform:rotate(12deg)}.header-bg .decoration-bars .bar-1[data-v-ba63238c]{margin-top:-3.75rem}.header-bg .decoration-bars .bar-2[data-v-ba63238c]{margin-top:-5.0625rem}.header-bg .decoration-bars .bar-3[data-v-ba63238c]{margin-top:-2.5rem}.header-bg .decoration-bars .bar-4[data-v-ba63238c]{margin-top:-1.1875rem}.header-spacer[data-v-ba63238c]{z-index:1;height:3.5rem;position:relative}.welcome-section[data-v-ba63238c]{z-index:1;margin-bottom:1.5rem;padding:1rem 1.6875rem 0;position:relative}.welcome-section .title[data-v-ba63238c]{color:#000;margin-bottom:.25rem;font-size:2.25rem;font-weight:900;line-height:2.75rem}.welcome-section .subtitle[data-v-ba63238c]{color:#3f3e3e;font-size:1.25rem;line-height:1.75rem}.login-card[data-v-ba63238c]{z-index:1;background:linear-gradient(182deg,#e8f1fe -26.42%,#fff 18.04%);border-radius:1.125rem 1.125rem 0 0;margin:0 1rem;padding:1.71875rem 1.375rem 1.75rem;position:relative}.form-container[data-v-ba63238c]{flex-direction:column;gap:1.625rem;display:flex}.form-item[data-v-ba63238c]{flex-direction:column;gap:.5rem;display:flex}.form-label[data-v-ba63238c]{color:#333;font-size:1rem;font-weight:500;line-height:1.5rem}.input-wrapper[data-v-ba63238c]{border-bottom:1px solid #d9d9d9;align-items:center;gap:.5rem;height:3.125rem;padding:.875rem .625rem .75rem 1rem;display:flex}.form-input[data-v-ba63238c]{color:#333;background:0 0;border:none;outline:none;flex:1;font-size:1rem;line-height:1.5rem}.form-input[data-v-ba63238c]::placeholder{color:#a7a5a4ba}.eye-btn[data-v-ba63238c]{cursor:pointer;color:#999;background:0 0;border:none;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;padding:0;display:flex}.eye-icon[data-v-ba63238c]{width:1.5rem;height:1.5rem}.login-btn[data-v-ba63238c]{color:#fff;cursor:pointer;background:#487ffc;border:none;border-radius:.5rem;width:100%;height:2.875rem;margin-top:3.5rem;font-size:1rem;font-weight:500;transition:all .2s}.login-btn[data-v-ba63238c]:hover:not(:disabled){background:#3a6fd9}.login-btn[data-v-ba63238c]:disabled{opacity:.7;cursor:not-allowed}.error-message[data-v-ba63238c]{color:#ff3b30;text-align:center;background:#ff3b301a;border-radius:.375rem;margin-top:1rem;padding:.75rem;font-size:.875rem}.list-cell[data-v-8e5141a2]{cursor:pointer;background:#fff;border-radius:.75rem;align-items:center;padding:1rem;transition:background .2s;display:flex}.list-cell[data-v-8e5141a2]:active{background:#f5f5f5}.list-cell.active[data-v-8e5141a2]{background:#e8f4fd}.list-cell.active .title[data-v-8e5141a2]{color:#4a90d9}.list-cell .title[data-v-8e5141a2]{color:#1a1a1a;flex:1;font-size:1rem}.list-cell .value[data-v-8e5141a2]{color:#666;margin-right:.5rem;font-size:.875rem}.list-cell .arrow[data-v-8e5141a2]{color:#999;width:1.25rem;height:1.25rem}.select-school-page[data-v-e702fa07]{background:#f5f7fa;min-height:100vh;padding:1rem}.page-desc[data-v-e702fa07]{color:#666;margin-bottom:1.5rem;font-size:.875rem}.school-list[data-v-e702fa07]{flex-direction:column;gap:.75rem;display:flex}.loading[data-v-e702fa07],.error[data-v-e702fa07]{text-align:center;color:#666;padding:2rem;font-size:.875rem}.error[data-v-e702fa07]{color:#ff3b30}.page-layout[data-v-5ad817c5]{background:#f5f7fa;min-height:100vh;padding-bottom:2rem;position:relative}.safe-area-top[data-v-5ad817c5]{height:env(safe-area-inset-top,0rem);background:0 0}.header-bg[data-v-5ad817c5]{z-index:0;background:linear-gradient(#e8f4fd 0%,#f5f7fa 100%);height:21.75rem;position:absolute;top:0;left:0;right:0;overflow:hidden}.header-bg .decoration-bars[data-v-5ad817c5]{opacity:.4;gap:1.5rem;height:100%;display:flex;position:absolute;top:0;left:-3.625rem;right:0}.header-bg .decoration-bars .bar[data-v-5ad817c5]{background:linear-gradient(#4a90d926 0%,#4a90d90d 100%);border-radius:.5rem;width:4.3125rem;height:8.625rem;transform:rotate(12deg)}.header-bg .decoration-bars .bar-1[data-v-5ad817c5]{margin-top:-3.75rem}.header-bg .decoration-bars .bar-2[data-v-5ad817c5]{margin-top:-5.0625rem}.header-bg .decoration-bars .bar-3[data-v-5ad817c5]{margin-top:-2.5rem}.header-bg .decoration-bars .bar-4[data-v-5ad817c5]{margin-top:-1.1875rem}.header[data-v-5ad817c5]{z-index:1;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:flex;position:relative}.header .btn-back[data-v-5ad817c5],.header .btn-placeholder[data-v-5ad817c5],.header .header-spacer[data-v-5ad817c5]{width:2.5rem;height:2.5rem}.header .btn-back[data-v-5ad817c5]{cursor:pointer;color:#1a1a1a;background:0 0;border:none;flex-direction:row;justify-content:center;align-items:center;display:flex}.header .btn-back svg[data-v-5ad817c5]{width:1.5rem;height:1.5rem}.header .title[data-v-5ad817c5]{color:#1a1a1a;text-align:center;flex:1;margin:0;font-size:1.125rem;font-weight:600}.main-content[data-v-5ad817c5]{z-index:1;flex-direction:column;gap:.75rem;padding:0 1rem;display:flex;position:relative}.tab-bar[data-v-7cb84c93]{height:3.5rem;padding-bottom:env(safe-area-inset-bottom,0);z-index:100;background:#fff;border-top:1px solid #f0f0f0;display:flex;position:fixed;bottom:0;left:0;right:0}.tab-item[data-v-7cb84c93]{cursor:pointer;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.25rem;transition:all .2s;display:flex}.tab-item.active .tab-icon[data-v-7cb84c93],.tab-item.active .tab-label[data-v-7cb84c93]{color:#4a90d9}.tab-icon[data-v-7cb84c93]{color:#999;width:1.5rem;height:1.5rem}.tab-label[data-v-7cb84c93]{color:#999;font-size:.625rem}.grade-list-page[data-v-75cc2919]{flex-direction:column;min-height:calc(100vh - 6rem);display:flex}.grade-list[data-v-75cc2919]{flex-direction:column;gap:.75rem;display:flex}.loading[data-v-75cc2919],.error[data-v-75cc2919],.empty[data-v-75cc2919]{text-align:center;color:#666;padding:2rem;font-size:.875rem}.error[data-v-75cc2919]{color:#ff3b30}.profile-page[data-v-1f873db3]{flex-direction:column;min-height:calc(100vh - 6rem);display:flex}.profile-content[data-v-1f873db3]{flex-direction:column;gap:1rem;display:flex}.info-card[data-v-1f873db3]{background:#fff;border-radius:.75rem;justify-content:space-between;align-items:center;padding:1rem;display:flex}.info-card .label[data-v-1f873db3]{color:#666;font-size:.875rem}.info-card .value[data-v-1f873db3]{color:#1a1a1a;font-size:1rem;font-weight:500}.menu-list[data-v-1f873db3],.class-list[data-v-2089094b]{flex-direction:column;gap:.75rem;display:flex}.loading[data-v-2089094b],.error[data-v-2089094b],.empty[data-v-2089094b]{text-align:center;color:#666;padding:2rem;font-size:.875rem}.error[data-v-2089094b]{color:#ff3b30}.student-list[data-v-5cdd654c]{flex-direction:column;gap:.75rem;display:flex}.student-item[data-v-5cdd654c]{cursor:pointer;background:#fff;border-radius:.75rem;align-items:center;padding:1rem;transition:background .2s;display:flex}.student-item[data-v-5cdd654c]:active{background:#f5f5f5}.student-name[data-v-5cdd654c]{color:#1a1a1a;flex:1;font-size:1rem}.student-gender[data-v-5cdd654c]{margin-right:.75rem}.gender-icon[data-v-5cdd654c]{width:1.25rem;height:1.25rem}.gender-icon.male[data-v-5cdd654c]{color:#3b82f6}.gender-icon.female[data-v-5cdd654c]{color:#ec4899}.face-status[data-v-5cdd654c]{align-items:center;display:flex}.status-icon[data-v-5cdd654c]{width:1.25rem;height:1.25rem}.status-icon.recorded[data-v-5cdd654c]{color:#22c55e}.status-icon.unrecorded[data-v-5cdd654c]{color:#9ca3af}.loading[data-v-5cdd654c],.error[data-v-5cdd654c],.empty[data-v-5cdd654c]{text-align:center;color:#666;padding:2rem;font-size:.875rem}.error[data-v-5cdd654c]{color:#ff3b30}.face-capture[data-v-df329d7d]{z-index:1000;background:#000;flex-direction:column;display:flex;position:fixed;inset:0}.capture-header[data-v-df329d7d]{background:#00000080;align-items:center;padding:1rem;display:flex}.close-btn[data-v-df329d7d]{color:#fff;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;display:flex}.close-btn svg[data-v-df329d7d]{width:1.5rem;height:1.5rem}.title[data-v-df329d7d]{text-align:center;color:#fff;flex:1;font-size:1rem}.capture-body[data-v-df329d7d]{flex:1;justify-content:center;align-items:center;display:flex;position:relative}.camera-preview[data-v-df329d7d]{width:100%;height:100%;position:relative}.camera-preview video[data-v-df329d7d]{object-fit:cover;width:100%;height:100%}.camera-preview video.mirrored[data-v-df329d7d]{transform:scaleX(-1)}.mask-overlay[data-v-df329d7d]{z-index:1;background:#00000080;position:absolute;inset:0;-webkit-mask-image:radial-gradient(45vw,#0000 100%,#000 100%);mask-image:radial-gradient(45vw,#0000 100%,#000 100%)}.face-guide[data-v-df329d7d]{z-index:2;flex-direction:column;align-items:center;display:flex;position:absolute;top:60%;left:50%;transform:translate(-50%,-50%)}.guide-circle[data-v-df329d7d]{border:none;border-radius:50%;width:90vw;height:90vw}.guide-text[data-v-df329d7d]{flex-direction:column;align-items:center;gap:.5rem;margin-top:1rem;display:flex}.guide-text p[data-v-df329d7d]{color:#fffc;text-align:center;font-size:.875rem;line-height:1.4}.image-preview[data-v-df329d7d]{background:#000;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.image-preview img[data-v-df329d7d]{object-fit:contain;max-width:90%;max-height:70vh}.preview-text[data-v-df329d7d]{color:#fffc;margin-top:1rem;font-size:.875rem}.capture-footer[data-v-df329d7d]{background:#00000080;flex-direction:column;align-items:center;gap:1rem;padding:1.5rem;display:flex}.camera-actions[data-v-df329d7d]{justify-content:space-between;align-items:center;width:100%;max-width:20rem;padding:0 1rem;display:flex}.switch-btn[data-v-df329d7d]{cursor:pointer;background:#fff3;border:2px solid #ffffff4d;border-radius:50%;justify-content:center;align-items:center;width:3rem;height:3rem;transition:all .2s;display:flex}.switch-btn[data-v-df329d7d]:active{transform:scale(.9)}.switch-btn svg[data-v-df329d7d]{color:#fff;width:1.5rem;height:1.5rem}.btn-placeholder[data-v-df329d7d]{width:3rem;height:3rem}.capture-btn[data-v-df329d7d]{cursor:pointer;background:#fff;border:4px solid #ffffff4d;border-radius:50%;justify-content:center;align-items:center;width:4rem;height:4rem;transition:transform .2s;display:flex}.capture-btn[data-v-df329d7d]:active{transform:scale(.9)}.capture-btn svg[data-v-df329d7d]{color:#000;width:2.5rem;height:2.5rem}.preview-actions[data-v-df329d7d]{gap:1rem;width:100%;max-width:20rem;display:flex}.retry-btn[data-v-df329d7d],.upload-btn[data-v-df329d7d]{cursor:pointer;border-radius:.75rem;flex:1;padding:.875rem;font-size:1rem;transition:opacity .2s}.retry-btn[data-v-df329d7d]:active,.upload-btn[data-v-df329d7d]:active{opacity:.8}.retry-btn[data-v-df329d7d]:disabled,.upload-btn[data-v-df329d7d]:disabled{opacity:.5;cursor:not-allowed}.retry-btn[data-v-df329d7d]{color:#fff;background:#fff3;border:1px solid #ffffff4d}.upload-btn[data-v-df329d7d]{color:#fff;background:#4a90d9;border:none}.upload-progress[data-v-df329d7d]{align-items:center;gap:.75rem;width:100%;max-width:20rem;display:flex}.progress-bar[data-v-df329d7d]{background:#fff3;border-radius:.25rem;flex:1;height:.5rem;overflow:hidden}.progress-fill[data-v-df329d7d]{background:#4a90d9;height:100%;transition:width .3s}.progress-text[data-v-df329d7d]{color:#fff;font-size:.75rem}.error-guide[data-v-df329d7d]{background:#000;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.error-content[data-v-df329d7d]{flex-direction:column;align-items:center;max-width:80%;padding:2rem;display:flex}.error-icon[data-v-df329d7d]{color:#f97316;width:4rem;height:4rem;margin-bottom:1rem}.error-title[data-v-df329d7d]{color:#fff;margin-bottom:1.5rem;font-size:1rem}.error-suggestions[data-v-df329d7d]{margin:0;padding:0;list-style:none}.error-suggestions li[data-v-df329d7d]{color:#fffc;text-align:center;margin-bottom:.75rem;font-size:.875rem;line-height:1.6}.error-suggestions li[data-v-df329d7d]:before{content:"•";margin-right:.5rem}.error-actions[data-v-df329d7d]{width:100%;max-width:20rem;display:flex}.loading[data-v-a3fd4da0],.error[data-v-a3fd4da0]{text-align:center;color:#666;padding:2rem;font-size:.875rem}.error[data-v-a3fd4da0]{color:#ff3b30}.student-info[data-v-a3fd4da0]{padding:0 1rem}.avatar-section[data-v-a3fd4da0]{justify-content:center;padding:2rem 0;display:flex}.avatar[data-v-a3fd4da0]{background:#fff;border-radius:50%;justify-content:center;align-items:center;width:6rem;height:6rem;display:flex;overflow:hidden}.avatar img[data-v-a3fd4da0]{object-fit:cover;width:100%;height:100%}.avatar-placeholder[data-v-a3fd4da0]{color:#999;width:4rem;height:4rem}.avatar-placeholder svg[data-v-a3fd4da0]{width:100%;height:100%}.info-section[data-v-a3fd4da0]{background:#fff;border-radius:.75rem;margin-bottom:1.5rem;padding:1rem}.info-item[data-v-a3fd4da0]{border-bottom:1px solid #e8e8e8;justify-content:space-between;padding:.75rem 0;display:flex}.info-item[data-v-a3fd4da0]:last-child{border-bottom:none}.label[data-v-a3fd4da0]{color:#666;font-size:.875rem}.value[data-v-a3fd4da0]{color:#1a1a1a;font-size:.875rem}.value.recorded[data-v-a3fd4da0]{color:#22c55e}.value.unrecorded[data-v-a3fd4da0]{color:#9ca3af}.audit-status[data-v-a3fd4da0]{border-radius:.25rem;margin-left:.5rem;padding:.125rem .5rem;font-size:.75rem}.audit-status.normal[data-v-a3fd4da0]{color:#22c55e;background:#22c55e1a}.audit-status.pending_audit[data-v-a3fd4da0]{color:#f97316;background:#f973161a}.action-section[data-v-a3fd4da0]{padding:1rem 0}.capture-btn[data-v-a3fd4da0]{color:#fff;cursor:pointer;background:#4a90d9;border:none;border-radius:.75rem;width:100%;padding:.875rem;font-size:1rem;transition:opacity .2s}.capture-btn[data-v-a3fd4da0]:active{opacity:.8}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{color:#1a1a1a;background:#f5f7fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}#app{width:100vw;min-height:100vh;margin:0 auto}button{font-family:inherit}
