.page-enter-active,.page-leave-active{transition:opacity .18s ease,transform .18s ease}.page-enter-from{opacity:0;transform:translateY(8px)}.page-leave-to{opacity:0;transform:translateY(-8px)}.nav-burger,.nav-links-mobile-auth,.mobile-menu,.tabbar{display:none}.dropdown-enter-active,.dropdown-leave-active{transition:opacity .2s ease}.dropdown-enter-from,.dropdown-leave-to{opacity:0}@media (max-width: 720px){.nav-links-desktop{display:none}.nav-links-mobile-auth{display:flex;gap:var(--s-2);align-items:center}.nav-links-mobile-auth a{font-size:var(--fs-sm);padding:var(--s-2) var(--s-4)}.nav-links-mobile-auth .nav-cta{background:linear-gradient(135deg,var(--indigo-500),var(--indigo-600));color:#fff;border-radius:var(--r-full)}.nav-burger{display:flex;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;background:transparent;border:none;cursor:pointer;padding:0 9px}.nav-burger span{display:block;height:2px;width:100%;background:var(--ink-900);border-radius:2px;transition:transform .25s ease,opacity .2s ease}.nav-burger.active span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-burger.active span:nth-child(2){opacity:0}.nav-burger.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-menu{display:block;position:fixed;top:57px;left:0;right:0;z-index:99;background:#f7f8fbfa;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--ink-200);box-shadow:var(--shadow-card)}.mobile-menu-panel{display:flex;flex-direction:column;padding:var(--s-2) var(--s-4) var(--s-4)}.mobile-menu-panel a{padding:var(--s-4) var(--s-2);font-size:var(--fs-base);color:var(--ink-700);border-bottom:1px solid var(--ink-200);font-weight:500}.mobile-menu-panel a.router-link-active{color:var(--indigo-600)}.mobile-menu-panel .mobile-logout{color:var(--err);border-bottom:none}main.has-tabbar{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:100;height:calc(60px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fffffff2;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--ink-200)}.tabbar-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink-500);font-size:11px}.tabbar-item .tabbar-icon{font-size:21px;line-height:1}.tabbar-item.router-link-active{color:var(--indigo-600)}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--ink-0: oklch(100% 0 0);--ink-50: oklch(98% .005 260);--ink-100: oklch(96% .006 260);--ink-200: oklch(93% .008 260);--ink-300: oklch(87% .01 260);--ink-500: oklch(60% .02 260);--ink-700: oklch(32% .02 260);--ink-900: oklch(18% .02 260);--indigo-50: oklch(97% .02 268);--indigo-100: oklch(93% .04 268);--indigo-300: oklch(75% .12 268);--indigo-500: oklch(55% .18 268);--indigo-600: oklch(48% .18 268);--indigo-700: oklch(42% .17 268);--peach-300: oklch(86% .06 30);--peach-400: oklch(80% .09 20);--peach-500: oklch(72% .13 18);--peach-600: oklch(63% .14 18);--amber-500: oklch(76% .14 78);--ok: oklch(63% .15 145);--warn: oklch(72% .13 55);--err: oklch(60% .2 15);--info: oklch(62% .15 240);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-6: 24px;--s-8: 32px;--s-12: 48px;--s-16: 64px;--s-24: 96px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 24px;--r-full: 999px;--shadow-float: 0 2px 4px oklch(18% .02 260 / .04), 0 12px 32px oklch(18% .02 260 / .08);--shadow-card: 0 1px 2px oklch(18% .02 260 / .05), 0 4px 16px oklch(18% .02 260 / .06);--shadow-ring: 0 0 0 3px oklch(55% .18 268 / .18);--fs-xs: 12px;--fs-sm: 13px;--fs-base: 16px;--fs-lg: 20px;--fs-xl: 25px;--fs-2xl: 31px;--fs-3xl: 39px;--font-sans: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--font-ui: "Plus Jakarta Sans", "Inter", system-ui, sans-serif}html{font-size:16px}body{font-family:var(--font-sans);background:var(--ink-50);color:var(--ink-700);font-size:var(--fs-base);line-height:1.65;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"tnum"}#app{min-height:100vh}a{color:var(--indigo-500);text-decoration:none;font-weight:500;transition:color .15s}a:hover{color:var(--indigo-700)}h1,h2,h3,h4,h5,h6{font-family:var(--font-ui),var(--font-sans);color:var(--ink-900);line-height:1.25;letter-spacing:-.01em;font-weight:700}.container{max-width:1080px;margin:0 auto;padding:var(--s-8) var(--s-6)}.nav{position:sticky;top:0;z-index:100;border-bottom:1px solid var(--ink-200);background:#f7f8fbd9;backdrop-filter:saturate(160%) blur(12px);-webkit-backdrop-filter:saturate(160%) blur(12px)}.nav-inner{max-width:1080px;margin:0 auto;padding:var(--s-3) var(--s-6);display:flex;justify-content:space-between;align-items:center}.nav-brand{font-family:var(--font-ui);font-size:var(--fs-lg);font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:var(--s-2)}.nav-brand .brand-icon{font-size:22px;background:linear-gradient(135deg,var(--indigo-500),var(--peach-500));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.nav-brand .brand-text{background:linear-gradient(135deg,var(--indigo-600),var(--peach-600));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.nav-links{display:flex;gap:var(--s-6);align-items:center;font-family:var(--font-ui);font-size:var(--fs-sm)}.nav-links a{color:var(--ink-700);padding:var(--s-2) var(--s-3);border-radius:var(--r-full);transition:all .15s ease}.nav-links a:hover{color:var(--indigo-700);background:var(--indigo-50);text-decoration:none}.nav-links a.router-link-active{color:var(--indigo-700);background:var(--indigo-50)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);padding:var(--s-3) var(--s-6);border:none;border-radius:var(--r-sm);font-family:var(--font-ui);font-size:14px;font-weight:600;letter-spacing:.01em;cursor:pointer;min-height:44px;transition:transform .15s ease,box-shadow .2s ease,background-color .15s ease,border-color .15s ease,color .15s ease;text-decoration:none;-webkit-user-select:none;user-select:none}.btn:focus-visible{outline:none;box-shadow:var(--shadow-ring)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--indigo-500),var(--indigo-600));color:var(--ink-0);box-shadow:0 1px #ffffff4d inset,0 6px 18px #3350c159}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 1px #ffffff4d inset,0 10px 24px #3350c166}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--ink-100);color:var(--indigo-700);border:1px solid var(--indigo-300)}.btn-secondary:hover:not(:disabled){background:var(--indigo-50)}.btn-outline{background:transparent;color:var(--ink-700);border:1px solid var(--ink-200)}.btn-outline:hover:not(:disabled){background:var(--ink-100);border-color:var(--ink-300)}.card{background:var(--ink-100);border-radius:var(--r-lg);padding:var(--s-8);box-shadow:var(--shadow-card);border:1px solid oklch(96% .006 260)}.card>h2:first-child,.card>h3:first-child{margin-top:0}.label{display:block;font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:600;margin-bottom:var(--s-2);color:var(--ink-900);letter-spacing:.01em}.input{width:100%;padding:var(--s-3) var(--s-4);border:1px solid var(--ink-200);border-radius:var(--r-sm);font-size:var(--fs-base);font-family:var(--font-sans);color:var(--ink-900);background:#fff;transition:border-color .15s ease,box-shadow .15s ease;outline:none;min-height:44px}.input::placeholder{color:var(--ink-500)}.input:focus{border-color:var(--indigo-500);box-shadow:var(--shadow-ring)}.input:disabled{background:var(--ink-100);color:var(--ink-500)}textarea.input{min-height:100px;resize:vertical}.form-group{margin-bottom:var(--s-4)}.test-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:var(--s-6);margin-top:var(--s-6)}.test-card{background:var(--ink-100);border-radius:var(--r-lg);padding:var(--s-8);cursor:pointer;position:relative;overflow:hidden;border:1px solid oklch(96% .006 260);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;display:flex;flex-direction:column;gap:var(--s-3);text-decoration:none;color:inherit}.test-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(600px 160px at var(--mx, 20%) var(--my, 0%),oklch(93% .04 268 / .7),transparent 60%);opacity:0;transition:opacity .3s ease;pointer-events:none}.test-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-float);border-color:var(--indigo-300)}.test-card:hover:before{opacity:1}.test-card .test-icon-wrap{width:52px;height:52px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;font-size:28px;background:var(--indigo-50);flex-shrink:0}.test-card .test-title{font-size:var(--fs-lg);font-weight:700;color:var(--ink-900);line-height:1.3}.test-card .test-desc{color:var(--ink-500);font-size:var(--fs-sm);line-height:1.6;flex:1}.test-card .test-meta{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-ui);font-size:var(--fs-xs);color:var(--ink-500);padding-top:var(--s-3);border-top:1px solid oklch(96% .006 260)}.progress-bar{width:100%;height:8px;background:var(--ink-200);border-radius:var(--r-full);overflow:hidden;margin:var(--s-6) 0}.progress-fill{height:100%;background:linear-gradient(90deg,var(--indigo-500),var(--peach-500));border-radius:var(--r-full);transition:width .35s cubic-bezier(.2,.7,.3,1)}.option{padding:var(--s-4) var(--s-5);border:1px solid var(--ink-200);border-radius:var(--r-md);cursor:pointer;transition:all .18s ease;background:#fff;margin-bottom:var(--s-2);font-family:var(--font-sans);font-size:var(--fs-base);color:var(--ink-700);min-height:52px;display:flex;align-items:center}.option:hover{border-color:var(--indigo-300);background:var(--indigo-50)}.option.selected{border-color:var(--indigo-500);background:linear-gradient(135deg,var(--indigo-50),oklch(95% .04 20 / .55));color:var(--ink-900);box-shadow:0 1px #ffffff80 inset}.score-circle{width:140px;height:140px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:700;margin:0 auto;background:radial-gradient(circle at 30% 25%,oklch(75% .1 268 / .5),transparent 45%),linear-gradient(135deg,var(--indigo-600),var(--indigo-500) 55%,var(--peach-500));box-shadow:0 20px 40px #3350c159;position:relative}.score-circle:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;border:1px solid oklch(100% 0 0 / .25)}.score-circle .score{font-family:var(--font-ui);font-size:40px;letter-spacing:-.03em}.score-circle .label{font-family:var(--font-ui);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;opacity:.9}.tag{display:inline-flex;align-items:center;padding:var(--s-1) var(--s-3);border-radius:var(--r-full);font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em;line-height:1.6}.tag-primary{background:var(--indigo-50);color:var(--indigo-700)}.tag-success{background:#d8efd8;color:var(--ok)}.tag-warning{background:#ffeadc;background:oklch(95% .04 55);color:#ac5700;color:oklch(55% .14 55)}.tag-danger{background:#ffdee0;background:oklch(93% .05 15);color:var(--err)}.tag-peach{background:#ffe7e6;background:oklch(95% .04 20);color:var(--peach-600)}.tag-amber{background:#fff0d9;background:oklch(96% .04 78);color:#966800;color:oklch(55% .14 78)}.empty{text-align:center;padding:var(--s-12) var(--s-6);color:var(--ink-500)}.empty .empty-emoji{font-size:48px;margin-bottom:var(--s-4)}.err{color:var(--err);font-family:var(--font-ui);font-size:var(--fs-sm);padding:var(--s-3);background:#ffdee0;background:oklch(93% .05 15);border-radius:var(--r-sm);border:1px solid oklch(88% .07 15)}.hero{padding:var(--s-16) var(--s-6) var(--s-12);text-align:center}.hero h1{font-size:clamp(2.4rem,5vw,3.4rem);letter-spacing:-.03em;margin-bottom:var(--s-4);background:linear-gradient(135deg,var(--indigo-700) 0%,var(--indigo-500) 40%,var(--peach-600));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero p{font-size:var(--fs-lg);color:var(--ink-500);max-width:52ch;margin:0 auto var(--s-6)}.section-title{font-family:var(--font-ui);font-size:var(--fs-lg);font-weight:700;margin-top:var(--s-12);margin-bottom:var(--s-4);color:var(--ink-900)}.hr-soft{height:1px;background:var(--ink-200);border:none;margin:var(--s-6) 0}@media (max-width: 720px){html{font-size:15px}.container{padding:var(--s-4) var(--s-4) var(--s-6)}.nav-inner{padding:var(--s-2) var(--s-4)}.nav-links{gap:var(--s-3);font-size:var(--fs-sm)}.hero{padding:var(--s-8) var(--s-4) var(--s-6)}.hero h1{font-size:clamp(1.7rem,7vw,2.3rem)}.hero p{font-size:var(--fs-base)}.test-grid{grid-template-columns:1fr;gap:var(--s-3);margin-top:var(--s-4)}.test-card{padding:var(--s-4);gap:var(--s-2)}.card{padding:var(--s-4);border-radius:var(--r-md)}.section-title{margin-top:var(--s-8);margin-bottom:var(--s-3)}.score-circle{width:116px;height:116px}.score-circle .score{font-size:34px}.option{min-height:50px;padding:var(--s-3) var(--s-4)}.btn{width:100%}.nav .btn,.q-actions .btn,.coming-soon .btn{width:auto}.q-actions .btn{flex:1}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
