:root{--brand: #1B5CFF;--brand-600: #0F47D9;--brand-700: #0B37AE;--brand-50: #EEF3FF;--brand-100: #DCE7FF;--accent: #00BFA6;--accent-50: #E6FAF7;--g1: #0E9F8E;--g1-soft: #E5F7F4;--g2: #E8890C;--g2-soft: #FFF4E3;--g3: #6741D9;--g3-soft: #F1EDFD;--ink-1: #101828;--ink-2: #475467;--ink-3: #7A869A;--ink-4: #A8B2C4;--line: #E6EBF2;--line-2: #F0F3F8;--bg: #F6F8FC;--surface: #FFFFFF;--ok: #0E9F6E;--ok-soft: #E7F8F1;--warn: #F59F00;--warn-soft: #FFF7E6;--danger: #E03131;--danger-soft: #FDECEC;--purple: #6741D9;--purple-soft: #F1EDFD;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-full: 999px;--sh-sm: 0 1px 2px rgba(16, 24, 40, .05);--sh: 0 4px 16px -4px rgba(16, 24, 40, .1), 0 1px 3px rgba(16, 24, 40, .04);--sh-lg: 0 24px 56px -20px rgba(16, 24, 40, .24), 0 2px 8px rgba(16, 24, 40, .06);--sidebar-w: 244px;--header-h: 68px;--font: "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", "Source Han Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "SF Mono", "JetBrains Mono", Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font);font-size:14px;line-height:1.6;color:var(--ink-1);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}ul,ol{list-style:none}img{max-width:100%;display:block}svg{display:block}::selection{background:var(--brand-100);color:var(--brand-700)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d3dbe8;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#b9c4d6}.u-mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.u-num{font-variant-numeric:tabular-nums}.u-muted{color:var(--ink-3)}.u-sm{font-size:12px}.u-center{text-align:center}.u-flex{display:flex}.u-between{display:flex;align-items:center;justify-content:space-between}.u-gap8{gap:8px}.u-gap12{gap:12px}.u-gap16{gap:16px}.u-mt8{margin-top:8px}.u-mt12{margin-top:12px}.u-mt16{margin-top:16px}.u-mt24{margin-top:24px}.u-mb8{margin-bottom:8px}.u-mb16{margin-bottom:16px}.u-hide{display:none!important}.auth-page{min-height:100vh;display:grid;grid-template-columns:1.08fr .92fr;background:var(--surface)}.auth-aside{position:relative;overflow:hidden;padding:56px 64px;display:flex;flex-direction:column;justify-content:space-between;background:radial-gradient(900px 500px at 82% 8%,rgba(0,191,166,.3),transparent 62%),radial-gradient(700px 560px at 12% 92%,rgba(103,65,217,.34),transparent 60%),linear-gradient(150deg,#0a2a78,#123a9e 42%,#1b5cff);color:#fff}.auth-aside:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(circle at 62% 42%,#000 12%,transparent 76%);-webkit-mask-image:radial-gradient(circle at 62% 42%,#000 12%,transparent 76%)}.auth-aside:after{content:"";position:absolute;width:460px;height:460px;right:-170px;top:-130px;border-radius:50%;border:1px solid rgba(255,255,255,.16);box-shadow:0 0 0 60px #ffffff08,0 0 0 130px #ffffff06}.auth-brand{position:relative;z-index:2}.auth-brand .brand-logo{display:block;width:100%;max-width:348px;height:auto;filter:drop-shadow(0 10px 24px rgba(3,12,40,.42))}.auth-mobile-logo{display:none}.brand-mark{width:44px;height:44px;flex:none;border-radius:13px;display:grid;place-items:center;background:linear-gradient(140deg,#4f8cff,#1b5cff 45%,#00bfa6);box-shadow:0 8px 22px -8px #00000073,inset 0 1px #ffffff59}.brand-mark svg{width:25px;height:25px}.brand-text{line-height:1.25}.brand-text strong{display:block;font-size:15px;letter-spacing:.3px;font-weight:600}.brand-text span{font-size:11.5px;color:#ffffffb8;letter-spacing:1.6px}.auth-hero{position:relative;z-index:2;max-width:520px;margin:40px 0}.auth-hero h1{font-size:40px;line-height:1.24;font-weight:700;letter-spacing:-.5px;margin-bottom:20px}.auth-hero h1 em{font-style:normal;background:linear-gradient(100deg,#7df0da,#b9d2ff 60%,#c6b4ff);-webkit-background-clip:text;background-clip:text;color:transparent}.auth-hero p{font-size:15px;line-height:1.9;color:#ffffffc2;max-width:460px}.auth-stages{display:flex;flex-direction:column;gap:10px;margin-top:32px}.auth-stage{display:flex;align-items:center;gap:16px;padding:11px 18px;border-radius:14px;background:#ffffff12;border:1px solid rgba(255,255,255,.13);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform .3s ease,background .3s ease}.auth-stage:hover{transform:translate(4px);background:#ffffff1f}.auth-stage .st-no{font-family:var(--mono);font-size:11px;font-weight:600;width:46px;height:40px;flex:none;display:grid;place-items:center;border-radius:11px;letter-spacing:.5px;white-space:nowrap}.auth-stage:nth-child(1) .st-no{background:#0e9f8e47;color:#7df0da}.auth-stage:nth-child(2) .st-no{background:#e8890c47;color:#ffd79a}.auth-stage:nth-child(3) .st-no{background:#9678ff4d;color:#d3c4ff}.auth-stage:nth-child(4) .st-no{background:#3884ff4d;color:#a9cbff}.auth-stage .st-body strong{display:block;font-size:14px;font-weight:600;margin-bottom:2px}.auth-stage .st-body span{font-size:12px;color:#ffffffa8}.auth-foot{position:relative;z-index:2;display:flex;gap:28px;flex-wrap:wrap;font-size:12px;color:#ffffff8c;padding-top:24px;border-top:1px solid rgba(255,255,255,.12)}.auth-foot b{color:#ffffffe6;font-family:var(--mono);font-size:17px;font-weight:600;margin-right:6px}.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 40px;background:var(--surface);position:relative}.auth-main:before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:linear-gradient(180deg,transparent,var(--line) 15%,var(--line) 85%,transparent)}.auth-box{width:100%;max-width:384px}.auth-tabs{display:flex;gap:4px;padding:4px;background:var(--line-2);border-radius:var(--r-md);margin-bottom:28px}.auth-tabs button{flex:1;padding:9px;border-radius:9px;font-size:14px;font-weight:500;color:var(--ink-3);transition:all .2s}.auth-tabs button.on{background:var(--surface);color:var(--ink-1);font-weight:600;box-shadow:var(--sh-sm)}.login-seg{display:flex;width:100%;margin-bottom:20px}.login-seg .seg-btn{flex:1;font-size:13px;padding:8px 15px}.auth-box h2{font-size:24px;font-weight:700;letter-spacing:-.2px;margin-bottom:6px}.auth-box .sub{font-size:13px;color:var(--ink-3);margin-bottom:26px}.field{margin-bottom:16px}.field>label{display:block;font-size:12.5px;font-weight:500;color:var(--ink-2);margin-bottom:7px}.field .req{color:var(--danger);margin-left:2px}.field .hint{font-size:11.5px;color:var(--ink-4);margin-top:6px}.label-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.label-row>label{display:block;font-size:12.5px;font-weight:500;color:var(--ink-2);margin-bottom:7px}.link-mini{font-size:12px;color:var(--brand);white-space:nowrap;border-bottom:1px solid transparent;transition:border-color .18s}.link-mini:hover{border-bottom-color:var(--brand)}.pane-back{display:inline-block;font-size:12.5px;color:var(--ink-3);margin-bottom:14px;transition:color .18s}.pane-back:hover{color:var(--brand)}.input,.select,.textarea{width:100%;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:14px;color:var(--ink-1);transition:border-color .18s,box-shadow .18s,background .18s;outline:none}.textarea{height:auto;min-height:84px;padding:12px 14px;resize:vertical;line-height:1.7}.input::placeholder,.textarea::placeholder{color:var(--ink-4)}.input:hover,.select:hover,.textarea:hover{border-color:#d3dbe8}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3.5px #1b5cff1f}.input.err{border-color:var(--danger);box-shadow:0 0 0 3.5px #e031311a}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%237A869A' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px;cursor:pointer}.input-wrap{position:relative}.input-wrap .suffix{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--ink-3)}.input-wrap .input{padding-right:58px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:40px;padding:0 18px;border-radius:var(--r-md);font-size:13.5px;font-weight:500;white-space:nowrap;transition:all .18s ease;border:1px solid transparent}.btn svg{width:16px;height:16px;flex:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg,#2A6BFF,var(--brand));color:#fff;box-shadow:0 1px 2px #1018280f,0 6px 16px -6px #1b5cff8c}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,#326fff,#1150e8);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-outline{background:var(--surface);border-color:var(--line);color:var(--ink-2);box-shadow:var(--sh-sm)}.btn-outline:hover:not(:disabled){border-color:#c9d4e6;color:var(--ink-1);background:#fcfdff}.btn-ghost{color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--line-2);color:var(--ink-1)}.btn-soft{background:var(--brand-50);color:var(--brand)}.btn-soft:hover:not(:disabled){background:var(--brand-100)}.btn-danger-soft{background:var(--danger-soft);color:var(--danger)}.btn-danger-soft:hover:not(:disabled){background:#fbdddd}.btn-lg{height:48px;padding:0 24px;font-size:15px;border-radius:13px}.btn-sm{height:32px;padding:0 12px;font-size:12.5px;border-radius:9px}.btn-sm svg{width:14px;height:14px}.btn-block{width:100%}.alert{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:var(--r-md);font-size:12.5px;line-height:1.6;margin-bottom:16px}.alert-error{background:var(--danger-soft);color:#b42318}.alert-warn{background:var(--warn-soft);color:#8a5a00}.alert-info{background:var(--brand-50);color:var(--brand-700)}.alert-ok{background:var(--ok-soft);color:#067647}.alert svg{width:15px;height:15px;flex:none;margin-top:2px}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex:none;background:#0b1220;color:#fff;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:40;background-image:radial-gradient(600px 320px at 50% -6%,rgba(27,92,255,.28),transparent 70%),linear-gradient(180deg,#0b1220,#0a101c)}.sidebar-brand{display:flex;align-items:center;gap:11px;padding:20px 18px 18px;border-bottom:1px solid rgba(255,255,255,.07)}.sidebar-brand .brand-emblem{height:42px;width:auto;flex:none;display:block;filter:drop-shadow(0 4px 10px rgba(0,0,0,.45))}.sidebar-brand .bt{line-height:1.28}.sidebar-brand .bt strong{display:block;font-size:13px;font-weight:600;letter-spacing:.2px}.sidebar-brand .bt span{font-size:10px;color:#ffffff73;letter-spacing:1.2px}.sidebar-user{margin:14px 12px 6px;padding:12px;border-radius:12px;background:#ffffff0e;border:1px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;flex:none;border-radius:10px;display:grid;place-items:center;font-size:14px;font-weight:600;background:linear-gradient(140deg,#3b7bff,#12b5a0);color:#fff}.sidebar-user .su-name{font-size:13px;font-weight:600;line-height:1.3}.sidebar-user .su-meta{font-size:11px;color:#ffffff80}.sidebar-nav{flex:1;overflow-y:auto;padding:8px 10px 16px}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-thumb{background:#ffffff24}.nav-group{margin-top:14px}.nav-group:first-child{margin-top:4px}.nav-label{font-size:10.5px;letter-spacing:1.1px;text-transform:uppercase;color:#ffffff52;padding:0 10px 8px;font-weight:600}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;font-size:13px;color:#ffffffad;transition:all .16s;margin-bottom:2px;cursor:pointer;position:relative}.nav-item:hover{background:#ffffff12;color:#fff}.nav-item.on{background:linear-gradient(90deg,#1b5cff4d,#1b5cff1a);color:#fff;font-weight:500}.nav-item.on:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:16px;border-radius:0 3px 3px 0;background:#4f8cff}.nav-item svg{width:17px;height:17px;flex:none;opacity:.85}.nav-item .lock{margin-left:auto;opacity:.4}.nav-item .dot-done{margin-left:auto;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px #00bfa62e}.sidebar-foot{padding:12px;border-top:1px solid rgba(255,255,255,.07)}.card-mini{padding:11px 12px;border-radius:11px;background:linear-gradient(135deg,#1b5cff38,#00bfa624);border:1px solid rgba(255,255,255,.1)}.card-mini .cm-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.card-mini .cm-name{font-size:12px;font-weight:600}.card-mini .cm-days{font-size:11px;color:#fff9}.card-mini .cm-bar{height:4px;border-radius:99px;background:#ffffff24;overflow:hidden}.card-mini .cm-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#7df0da,#4f8cff)}.main{flex:1;margin-left:var(--sidebar-w);min-width:0;display:flex;flex-direction:column}.topbar{height:var(--header-h);flex:none;background:#ffffffe0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:30}.topbar-left{display:flex;align-items:center;gap:14px;min-width:0}.crumb{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-3)}.crumb b{color:var(--ink-1);font-weight:600}.crumb .sep{color:var(--ink-4)}.topbar-right{display:flex;align-items:center;gap:10px}.grade-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:var(--r-full);font-size:12.5px;font-weight:600}.grade-chip i{width:6px;height:6px;border-radius:50%;background:currentColor}.icon-btn{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--ink-3);transition:all .16s}.icon-btn:hover{background:var(--line-2);color:var(--ink-1)}.icon-btn svg{width:18px;height:18px}.content{flex:1;padding:26px 28px 56px;max-width:1320px;width:100%}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}.card-pad{padding:22px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.card-head h3{font-size:15.5px;font-weight:600;letter-spacing:-.1px}.card-head p{font-size:12.5px;color:var(--ink-3);margin-top:3px}.section-title{display:flex;align-items:baseline;gap:10px;margin:30px 0 14px}.section-title:first-child{margin-top:0}.section-title h2{font-size:17px;font-weight:650;letter-spacing:-.2px}.section-title .st-sub{font-size:12.5px;color:var(--ink-3)}.section-title .st-more{margin-left:auto;font-size:12.5px;color:var(--brand);cursor:pointer}.badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 9px;border-radius:6px;font-size:11.5px;font-weight:500;white-space:nowrap}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-err{background:var(--danger-soft, #FDECEC);color:var(--danger, #D63939)}.badge-warn{background:var(--warn-soft);color:#96600a}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--brand-50);color:var(--brand)}.badge-gray{background:var(--line-2);color:var(--ink-2)}.badge-purple{background:var(--purple-soft);color:var(--purple)}.tag{display:inline-flex;align-items:center;height:21px;padding:0 7px;border-radius:5px;font-size:10.5px;font-weight:600;letter-spacing:.2px;background:var(--line-2);color:var(--ink-2)}.tag-985{background:#fef2f2;color:#b42318}.tag-211{background:#eff4ff;color:#1b5cff}.tag-syl{background:#ecfdf5;color:#047857}.progress{height:6px;border-radius:99px;background:var(--line-2);overflow:hidden}.progress i{display:block;height:100%;border-radius:99px;transition:width .6s cubic-bezier(.16,1,.3,1)}.empty{padding:44px 20px;text-align:center;color:var(--ink-3)}.empty svg{width:40px;height:40px;margin:0 auto 12px;opacity:.35}.empty p{font-size:13px;margin-bottom:14px}.divider{height:1px;background:var(--line);margin:18px 0}.divider-dashed{height:1px;background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 12px);margin:18px 0}.hero{position:relative;border-radius:var(--r-xl);padding:30px 32px;overflow:hidden;color:#fff;background:linear-gradient(120deg,#0e2a6b,#17429e 46%,#1b5cff);box-shadow:0 20px 44px -24px #102a6b99}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(circle at 78% 40%,#000,transparent 72%);-webkit-mask-image:radial-gradient(circle at 78% 40%,#000,transparent 72%)}.hero:after{content:"";position:absolute;right:-100px;top:-120px;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(0,191,166,.38),transparent 66%)}.hero-inner{position:relative;z-index:2;display:flex;justify-content:space-between;gap:32px}.hero-tag{display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 12px;border-radius:var(--r-full);background:#ffffff24;border:1px solid rgba(255,255,255,.18);font-size:11.5px;font-weight:500;letter-spacing:.3px;margin-bottom:16px}.hero h1{font-size:27px;font-weight:700;letter-spacing:-.4px;line-height:1.34;margin-bottom:10px}.hero p{font-size:13.5px;line-height:1.85;color:#ffffffbd;max-width:520px}.hero-actions{display:flex;gap:10px;margin-top:22px}.hero-actions .btn{height:38px}.btn-hero-primary{background:#fff;color:#123a9e;font-weight:600;box-shadow:0 8px 20px -8px #0006}.btn-hero-primary:hover{background:#f2f6ff}.btn-hero-ghost{background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.24)}.btn-hero-ghost:hover{background:#fff3}.hero-side{flex:none;width:240px;display:flex;flex-direction:column;gap:10px}.hero-stat{padding:13px 16px;border-radius:13px;background:#ffffff1a;border:1px solid rgba(255,255,255,.14);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.hero-stat .hs-label{font-size:11px;color:#ffffff9e;margin-bottom:3px}.hero-stat .hs-val{font-size:22px;font-weight:700;font-family:var(--mono);letter-spacing:-.5px}.hero-stat .hs-val small{font-size:11px;font-weight:500;color:#fff9;margin-left:3px;font-family:var(--font)}.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.service-card{position:relative;padding:20px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-sm);cursor:pointer;transition:all .22s cubic-bezier(.16,1,.3,1);overflow:hidden}.service-card:hover{transform:translateY(-3px);box-shadow:var(--sh);border-color:#d5deee}.service-card.locked{cursor:not-allowed}.service-card.locked:hover{transform:none;box-shadow:var(--sh-sm)}.service-card.locked:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#f8fafd8c}.sc-icon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;margin-bottom:14px;position:relative;z-index:1}.sc-icon svg{width:20px;height:20px}.service-card h4{font-size:14.5px;font-weight:600;margin-bottom:5px;position:relative;z-index:1}.service-card .sc-desc{font-size:12.5px;color:var(--ink-3);line-height:1.7;min-height:42px;position:relative;z-index:1}.sc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid var(--line-2);position:relative;z-index:1}.sc-meta{display:flex;align-items:center;gap:10px;font-size:11.5px;color:var(--ink-3)}.sc-meta span{display:inline-flex;align-items:center;gap:4px}.sc-meta svg{width:12px;height:12px}.sc-go{font-size:12.5px;font-weight:600;color:var(--brand);display:inline-flex;align-items:center;gap:3px}.sc-go svg{width:13px;height:13px;transition:transform .2s}.service-card:hover .sc-go svg{transform:translate(3px)}.sc-lock-badge{position:absolute;top:16px;right:16px;z-index:2;display:inline-flex;align-items:center;gap:4px;height:23px;padding:0 9px;border-radius:6px;background:#1018280f;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:11px;color:var(--ink-2);font-weight:500}.sc-lock-badge svg{width:11px;height:11px}.sc-status{position:absolute;top:16px;right:16px;z-index:2;height:22px;padding:0 9px;border-radius:6px;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;background:var(--ok-soft);color:var(--ok)}.task-list{display:flex;flex-direction:column;gap:2px}.task-item{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:11px;transition:background .16s}.task-item:hover{background:var(--bg)}.task-check{width:18px;height:18px;flex:none;margin-top:1px;border-radius:6px;border:1.6px solid var(--line);display:grid;place-items:center;transition:all .18s}.task-item.done .task-check{background:var(--ok);border-color:var(--ok)}.task-item.done .task-check svg{width:11px;height:11px;color:#fff}.task-item.done .task-text{color:var(--ink-4);text-decoration:line-through}.task-text{font-size:13px;line-height:1.6;color:var(--ink-1)}.task-text small{display:block;font-size:11.5px;color:var(--ink-3);margin-top:2px;text-decoration:none}.timeline{position:relative;padding-left:22px}.timeline:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:linear-gradient(180deg,#BBD0FF,#DDE5F0 60%,var(--line-2));border-radius:2px}.tl-item{position:relative;padding-bottom:20px}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:"";position:absolute;left:-21px;top:6px;width:10px;height:10px;border-radius:50%;background:#fff;border:2px solid var(--brand)}.tl-item.done:before{background:var(--ok);border-color:var(--ok)}.tl-item.now:before{box-shadow:0 0 0 4px #1b5cff24}.tl-date{font-size:11.5px;color:var(--ink-3);font-family:var(--mono);margin-bottom:2px}.tl-title{font-size:13px;font-weight:500}.tl-desc{font-size:12px;color:var(--ink-3);margin-top:2px}.test-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:22px}.test-head h1{font-size:22px;font-weight:700;letter-spacing:-.3px;margin-bottom:6px}.test-head p{font-size:13px;color:var(--ink-3);line-height:1.8;max-width:640px}.test-meta{display:flex;gap:18px;margin-top:14px}.test-meta .tm{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}.test-meta svg{width:14px;height:14px;color:var(--ink-3)}.test-progress-bar{position:sticky;top:var(--header-h);z-index:20;background:#f6f8fceb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:12px 0;margin-bottom:8px}.question-list{display:flex;flex-direction:column;gap:12px}.q-card{padding:17px 20px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);transition:border-color .2s,box-shadow .2s}.q-card.answered{border-color:#d8e3f8}.q-top{display:flex;gap:12px;margin-bottom:13px}.q-no{width:26px;height:26px;flex:none;border-radius:8px;display:grid;place-items:center;font-size:11.5px;font-weight:600;font-family:var(--mono);background:var(--line-2);color:var(--ink-3);transition:all .2s}.q-card.answered .q-no{background:var(--brand-50);color:var(--brand)}.q-text{font-size:14px;line-height:1.72;padding-top:2px}.likert{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.likert button{padding:9px 6px;border-radius:10px;border:1px solid var(--line);background:#fcfdff;display:flex;flex-direction:column;align-items:center;gap:5px;transition:all .16s}.likert button:hover{border-color:var(--brand-100);background:var(--brand-50)}.likert button .lk-dot{width:17px;height:17px;border-radius:50%;border:1.8px solid #D3DBE8;transition:all .18s}.likert button .lk-label{font-size:11px;color:var(--ink-3);line-height:1.3;text-align:center}.likert button.on{border-color:var(--brand);background:var(--brand-50)}.likert button.on .lk-dot{border-color:var(--brand);background:var(--brand);box-shadow:inset 0 0 0 3px #fff}.likert button.on .lk-label{color:var(--brand);font-weight:500}.subj-rate{display:flex;flex-direction:column;gap:10px}.sr-row{display:grid;grid-template-columns:72px 1fr 46px;align-items:center;gap:14px}.sr-name{font-size:13px;font-weight:500}.sr-scale{display:flex;gap:6px}.sr-scale button{flex:1;height:34px;border-radius:8px;border:1px solid var(--line);background:#fcfdff;font-size:12px;color:var(--ink-3);transition:all .16s}.sr-scale button:hover{border-color:var(--brand-100);background:var(--brand-50)}.sr-scale button.on{border-color:var(--brand);background:var(--brand);color:#fff;font-weight:600}.sr-val{font-size:12px;color:var(--ink-3);text-align:right;font-family:var(--mono)}.report-hero{border-radius:var(--r-xl);padding:30px 32px;color:#fff;position:relative;overflow:hidden;margin-bottom:20px}.report-hero:after{content:"";position:absolute;right:-80px;bottom:-140px;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 68%)}.rh-label{font-size:11.5px;letter-spacing:1.6px;text-transform:uppercase;opacity:.68;margin-bottom:10px}.rh-code{font-size:44px;font-weight:700;letter-spacing:4px;font-family:var(--mono);line-height:1;margin-bottom:8px}.rh-code-sub{font-size:13px;opacity:.8}.rh-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:26px;position:relative;z-index:2}.rh-cell{padding:12px 14px;border-radius:12px;background:#ffffff1a;border:1px solid rgba(255,255,255,.13)}.rh-cell .rc-l{font-size:11px;opacity:.66;margin-bottom:4px}.rh-cell .rc-v{font-size:18px;font-weight:700;font-family:var(--mono);letter-spacing:-.3px}.rh-cell .rc-v small{font-size:11px;font-weight:500;opacity:.7;margin-left:2px;font-family:var(--font)}.report-grid{display:grid;grid-template-columns:360px 1fr;gap:16px;align-items:start}.chart-box{display:flex;justify-content:center;padding:6px 0 2px}.chart-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:14px}.chart-legend .cl{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-2)}.chart-legend .cl i{width:8px;height:8px;border-radius:2px;flex:none}.dim-list{display:flex;flex-direction:column;gap:14px}.dim-row-top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}.dim-name{font-size:12.5px;font-weight:500;display:flex;align-items:center;gap:7px}.dim-name i{width:7px;height:7px;border-radius:2px}.dim-score{font-size:12.5px;font-family:var(--mono);font-weight:600;color:var(--ink-2)}.dim-score small{color:var(--ink-4);font-weight:400}.advice-item{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid var(--line-2)}.advice-item:last-child{border-bottom:none;padding-bottom:0}.advice-item:first-child{padding-top:0}.ai-num{width:24px;height:24px;flex:none;border-radius:7px;display:grid;place-items:center;font-size:11px;font-weight:700;font-family:var(--mono);background:var(--brand-50);color:var(--brand)}.ai-body h5{font-size:13px;font-weight:600;margin-bottom:4px}.ai-body p{font-size:12.5px;line-height:1.8;color:var(--ink-2)}.combo-card{border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;transition:all .2s;position:relative;background:#fcfdff}.combo-card.best{border-color:var(--brand);background:linear-gradient(160deg,#f5f9ff,#fff 60%);box-shadow:0 8px 24px -12px #1b5cff4d}.combo-rank{position:absolute;top:-1px;right:16px;height:22px;padding:0 10px;display:inline-flex;align-items:center;border-radius:0 0 7px 7px;font-size:10.5px;font-weight:700;letter-spacing:.4px;background:var(--line-2);color:var(--ink-3)}.combo-card.best .combo-rank{background:var(--brand);color:#fff}.combo-name{font-size:17px;font-weight:700;letter-spacing:-.2px;margin-bottom:12px}.combo-name .plus{color:var(--ink-4);font-weight:400;margin:0 3px}.combo-stats{display:flex;gap:22px;margin-bottom:12px}.combo-stats .cs-l{font-size:11px;color:var(--ink-3);margin-bottom:1px}.combo-stats .cs-v{font-size:15px;font-weight:700;font-family:var(--mono)}.combo-bar{height:5px;border-radius:99px;background:var(--line-2);overflow:hidden;margin-bottom:10px}.combo-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#4f8cff,#1b5cff)}.combo-note{font-size:11.5px;color:var(--ink-3);line-height:1.6}.major-row{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--line-2)}.major-row:last-child{border-bottom:none}.mj-icon{width:38px;height:38px;flex:none;border-radius:10px;display:grid;place-items:center;font-size:18px;background:var(--line-2)}.mj-body{flex:1;min-width:0}.mj-top{display:flex;align-items:baseline;gap:8px;margin-bottom:3px}.mj-name{font-size:13.5px;font-weight:600}.mj-majors{font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mj-fit{text-align:right;flex:none;width:78px}.mj-fit .mf-v{font-size:16px;font-weight:700;font-family:var(--mono)}.vol-filter{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:12px;align-items:end}.vol-filter .field{margin-bottom:0}.tier-group{margin-top:26px}.tier-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.tier-badge{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 12px;border-radius:var(--r-full);font-size:12px;font-weight:700;letter-spacing:.3px}.tier-reach{background:#fff0f0;color:#c92a2a}.tier-stable{background:#fff7e6;color:#9a6700}.tier-safe{background:#e9f9f0;color:#087443}.tier-count{font-size:12px;color:var(--ink-3)}.tier-desc{font-size:12px;color:var(--ink-3);margin-left:auto}.vol-list{display:flex;flex-direction:column;gap:8px}.vol-item{display:flex;align-items:center;gap:14px;padding:13px 16px;border-radius:12px;background:var(--surface);border:1px solid var(--line);transition:all .18s}.vol-item:hover{border-color:#d0dcec;box-shadow:var(--sh-sm);transform:translate(2px)}.vi-order{width:26px;height:26px;flex:none;border-radius:7px;display:grid;place-items:center;font-size:11px;font-weight:700;font-family:var(--mono);background:var(--line-2);color:var(--ink-3)}.vi-main{flex:1;min-width:0}.vi-title{display:flex;align-items:center;gap:7px;margin-bottom:2px;flex-wrap:wrap}.vi-school{font-size:13.5px;font-weight:600}.vi-group{font-size:11px;color:var(--ink-3);font-family:var(--mono)}.vi-sub{font-size:11.5px;color:var(--ink-3);display:flex;gap:12px;flex-wrap:wrap}.vi-subspan{display:inline-flex;align-items:center;gap:4px}.vi-right{display:flex;align-items:center;gap:18px;flex:none}.vi-stat{text-align:right}.vi-stat .vs-l{font-size:10.5px;color:var(--ink-4)}.vi-stat .vs-v{font-size:13px;font-weight:600;font-family:var(--mono)}.vi-prob{text-align:right;width:62px}.vi-prob .vp-v{font-size:16px;font-weight:700;font-family:var(--mono);line-height:1.2}.vi-prob .vp-l{font-size:10px;color:var(--ink-4)}.vol-summary{padding:18px 20px;border-radius:var(--r-lg);background:linear-gradient(120deg,#f2f7ff,#f7fbff);border:1px solid #DFE9FA;font-size:13px;line-height:1.85;color:var(--ink-2)}.vol-summary b{color:var(--ink-1);font-weight:600}.profile-grid{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start}.profile-card{text-align:center;padding:28px 22px}.profile-avatar{width:76px;height:76px;margin:0 auto 14px;border-radius:22px;display:grid;place-items:center;font-size:28px;font-weight:600;color:#fff;background:linear-gradient(140deg,#3b7bff,#12b5a0);box-shadow:0 12px 28px -12px #1b5cff99}.profile-name{font-size:18px;font-weight:700;margin-bottom:4px}.profile-meta{font-size:12.5px;color:var(--ink-3)}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.info-row{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px dashed var(--line);font-size:13px}.info-row .ir-l{color:var(--ink-3);flex:none}.info-row .ir-v{text-align:right;font-weight:500}.record-item{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--line-2)}.record-item:last-child{border-bottom:none}.ri-dot{width:8px;height:8px;border-radius:50%;flex:none}.ri-main{flex:1}.ri-title{font-size:13px;font-weight:500}.ri-time{font-size:11.5px;color:var(--ink-4);font-family:var(--mono)}.ri-score{font-size:14px;font-weight:700;font-family:var(--mono)}.activate-box{max-width:520px;margin:40px auto}.card-visual{border-radius:var(--r-xl);padding:26px 28px;color:#fff;position:relative;overflow:hidden;background:linear-gradient(125deg,#0e2a6b,#17429e 50%,#2e6bff);box-shadow:0 24px 48px -24px #102a6b8c;margin-bottom:24px}.card-visual:before{content:"";position:absolute;right:-60px;top:-80px;width:240px;height:240px;border-radius:50%;border:1px solid rgba(255,255,255,.18);box-shadow:0 0 0 40px #ffffff0b}.cv-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:34px;position:relative;z-index:1}.cv-org{font-size:11px;letter-spacing:1.4px;opacity:.8;line-height:1.6}.cv-type{font-size:13px;font-weight:700;letter-spacing:.5px}.cv-code{font-family:var(--mono);font-size:20px;letter-spacing:2.5px;font-weight:600;position:relative;z-index:1}.cv-foot{display:flex;justify-content:space-between;align-items:flex-end;margin-top:14px;position:relative;z-index:1}.cv-label{font-size:10px;opacity:.6;letter-spacing:1px}.cv-val{font-size:12.5px;font-family:var(--mono);letter-spacing:.8px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#10182873;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .18s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:none}}.modal{width:100%;max-width:480px;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--sh-lg);animation:slideUp .24s cubic-bezier(.16,1,.3,1);max-height:calc(100vh - 48px);display:flex;flex-direction:column}.modal-lg{max-width:720px}.modal-head{padding:20px 24px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.modal-head h3{font-size:16px;font-weight:650}.modal-head p{font-size:12.5px;color:var(--ink-3);margin-top:3px}.modal-body{padding:20px 24px;overflow-y:auto}.modal-foot{padding:0 24px 20px;display:flex;justify-content:flex-end;gap:10px}.toast-wrap{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:9px;padding:11px 16px;border-radius:11px;background:#101828;color:#fff;font-size:13px;box-shadow:0 12px 32px -10px #10182880;animation:slideUp .24s cubic-bezier(.16,1,.3,1);max-width:460px}.toast svg{width:15px;height:15px;flex:none}.toast.ok svg{color:#4ade80}.toast.err svg{color:#ff7a7a}.admin-shell{background:var(--bg);min-height:100vh}.admin-top{height:60px;background:#0b1220;display:flex;align-items:center;justify-content:space-between;padding:0 24px;color:#fff}.admin-top .at-brand{display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:600}.admin-top .brand-mark{width:30px;height:30px;border-radius:9px}.admin-top .brand-mark svg{width:17px;height:17px}.admin-body{padding:24px;max-width:1320px;margin:0 auto}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px 16px;font-size:12px;color:var(--ink-3)}.pager-btns{display:flex;gap:6px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.stat-card{padding:18px 20px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-sm)}.stat-card .sc-l{font-size:12px;color:var(--ink-3);margin-bottom:6px}.stat-card .sc-v{font-size:26px;font-weight:700;font-family:var(--mono);letter-spacing:-.8px;line-height:1.1}.stat-card .sc-v small{font-size:12px;font-weight:500;color:var(--ink-3);margin-left:3px;font-family:var(--font)}.stat-card .sc-foot{font-size:11.5px;color:var(--ink-3);margin-top:6px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:12.5px}table.data th{text-align:left;padding:10px 14px;font-size:11.5px;font-weight:600;color:var(--ink-3);background:#fafbfd;border-bottom:1px solid var(--line);white-space:nowrap}table.data td{padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}table.data tr:hover td{background:#fcfdff}table.data td.mono{font-family:var(--mono);font-size:12px}.code-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;letter-spacing:.6px;padding:3px 8px;border-radius:6px;background:var(--line-2);color:var(--ink-1);cursor:pointer}.code-chip:hover{background:var(--brand-50);color:var(--brand)}@media(max-width:1300px){.service-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:1180px){.vol-filter{grid-template-columns:repeat(2,1fr)}.report-grid{grid-template-columns:320px 1fr}.home-bottom,.review-grid,.intro-grid,.dash-grid{grid-template-columns:1fr!important}}@media(max-width:960px){.auth-page{grid-template-columns:1fr}.auth-aside{display:none}.auth-mobile-logo{display:block;width:100%;max-width:320px;margin:0 auto 24px}.auth-main{padding:40px 24px;min-height:100vh}.sidebar{transform:translate(-100%);transition:transform .26s ease}.sidebar.open{transform:none}.main{margin-left:0}.content{padding:20px 16px 48px}.report-grid,.profile-grid{grid-template-columns:1fr}.hero-inner{flex-direction:column}.hero-side{width:100%;flex-direction:row}.hero-stat{flex:1}.rh-grid{grid-template-columns:repeat(2,1fr)}.info-grid{grid-template-columns:1fr}.stat-grid{grid-template-columns:repeat(2,1fr)}.topbar{padding:0 16px}.hero{padding:24px 22px}.hero h1{font-size:22px}.combo-grid,.cat-grid,.path-grid,.major-detail-grid{grid-template-columns:1fr!important}.month-strip{grid-template-columns:repeat(6,1fr)!important}#btnMenu{display:grid!important}}@media(max-width:640px){.service-grid{grid-template-columns:1fr}.likert{grid-template-columns:repeat(5,1fr);gap:5px}.likert button{padding:8px 2px}.likert button .lk-label{font-size:9.5px}.vol-filter{grid-template-columns:1fr}.hero-side{flex-direction:column}.sr-row{grid-template-columns:56px 1fr 38px;gap:8px}.vi-right{gap:10px}.vi-stat.hide-sm{display:none}.rh-grid{grid-template-columns:1fr 1fr}.month-strip{grid-template-columns:repeat(4,1fr)!important}.combo-stats{gap:14px}.test-head{flex-direction:column}.admin-body{padding:16px}.stat-grid{grid-template-columns:1fr}}@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin-left:0}.content{padding:0}body{background:#fff}.card{break-inside:avoid;box-shadow:none}}.seg{display:inline-flex;background:var(--line-2);border-radius:11px;padding:3px;gap:2px}.seg-btn{border:none;background:none;padding:7px 15px;border-radius:9px;font-size:12.5px;color:var(--ink-2);cursor:pointer;font-family:inherit;transition:all .18s ease}.seg-btn:hover{color:var(--ink-1)}.seg-btn.on{background:#fff;color:var(--brand);font-weight:600;box-shadow:0 1px 4px #10182814}@media(max-width:720px){.diag-grid{grid-template-columns:1fr 1fr!important}.seg{width:100%}.seg-btn{flex:1}}
