:root{--primary-50: #eefbf7;--primary-100: #d1f5ec;--primary-200: #a5e9da;--primary-300: #6fd7c3;--primary-400: #3ebfa7;--primary-500: #17a589;--primary-600: #0d8a72;--primary-700: #0b6e5c;--primary: var(--primary-600);--primary-hover: var(--primary-700);--primary-soft: var(--primary-50);--primary-soft-border: var(--primary-200);--gray-50: #f7f9fb;--gray-100: #eef2f6;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--ok: #14875a;--ok-soft: #e8f7f0;--ok-border: #a9e2c6;--danger: #d12d2d;--danger-soft: #fdf0f0;--danger-border: #f6c6c6;--warn: #b45309;--warn-soft: #fdf5e6;--warn-border: #f2d9a4;--info: #1f6feb;--info-soft: #eef4fe;--info-border: #bcd6fb;--violet: #6d33d6;--violet-soft: #f3eefe;--violet-border: #d9cbfa;--bg: #f5f8fa;--bg-surface: #ffffff;--bg-subtle: var(--gray-50);--border: var(--gray-200);--border-strong: var(--gray-300);--text: var(--gray-900);--text-secondary: var(--gray-600);--text-muted: var(--gray-500);--text-disabled: var(--gray-400);--primary-light: var(--primary-100);--radius-xs: 8px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-xl: 22px;--radius-full: 999px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 14px rgba(15, 23, 42, .07);--shadow-lg: 0 12px 30px rgba(15, 23, 42, .12);--shadow-focus: 0 0 0 3px rgba(23, 165, 137, .24);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--fs-2xs: 11px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 15px;--fs-md: 16px;--fs-lg: 18px;--fs-xl: 20px;--fs-2xl: 24px;--fs-3xl: 32px;--fs-4xl: 44px;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1);--dur-fast: .14s;--dur: .2s;--dur-slow: .32s;--tabbar-h: 62px;--appbar-h: 54px;color-scheme:light}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,sans-serif;font-size:16px;line-height:1.6;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;overscroll-behavior-y:none}h1,h2,h3,h4{margin:0;font-weight:650;line-height:1.3;letter-spacing:-.01em}p{margin:0}a{color:var(--primary);text-decoration:none}button{font-family:inherit}::selection{background:var(--primary-200)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:var(--radius-xs)}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.appbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--sp-3);height:var(--appbar-h);padding:0 var(--sp-4);background:#ffffffeb;-webkit-backdrop-filter:saturate(1.6) blur(12px);backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--border)}.appbar-title{flex:1;min-width:0;font-size:var(--fs-md);font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.appbar-sub{display:block;font-size:var(--fs-2xs);font-weight:400;color:var(--text-muted);margin-top:1px}.appbar-back{flex:none;width:44px;height:44px;margin-left:-10px;display:grid;place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer}.appbar-back:active{background:var(--gray-100)}.appbar-action{flex:none;min-height:44px;padding:0 var(--sp-3);display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text-secondary);font-size:var(--fs-sm);font-weight:550;cursor:pointer}.app-main{flex:1;min-width:0;padding:var(--sp-4);padding-bottom:calc(var(--sp-6) + env(safe-area-inset-bottom))}.app-main-has-tabs{padding-bottom:calc(var(--tabbar-h) + var(--sp-6) + env(safe-area-inset-bottom))}.app-main-centered{max-width:720px;margin:0 auto;width:100%}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#fffffff0;-webkit-backdrop-filter:saturate(1.6) blur(12px);backdrop-filter:saturate(1.6) blur(12px);border-top:1px solid var(--border)}.tabbar-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:none;color:var(--text-disabled);font-size:var(--fs-2xs);font-weight:550;cursor:pointer;position:relative;padding:0;transition:color var(--dur) var(--ease)}.tabbar-item svg{width:21px;height:21px}.tabbar-item.active{color:var(--primary);font-weight:650}.tabbar-item.active:before{content:"";position:absolute;top:0;width:26px;height:3px;border-radius:0 0 3px 3px;background:var(--primary)}.tabbar-item:active{opacity:.7}.page{max-width:720px;margin:0 auto}.page>*:not(.modal-mask):not(.modal):not(.toast-host):not(.toaster):not(.sheet){animation:fade-rise var(--dur-slow) var(--ease-out) both}.page-plain{max-width:none}.page h1{font-size:var(--fs-2xl);margin:0 0 var(--sp-3)}.page>h1{margin-bottom:var(--sp-4)}.section-title{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-5) 0 var(--sp-3);font-size:var(--fs-md);font-weight:650}.section-title:first-child{margin-top:0}.section-title svg{width:18px;height:18px;color:var(--primary)}.section-count{margin-left:auto;font-size:var(--fs-xs);font-weight:500;color:var(--text-muted)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-4);margin-bottom:var(--sp-3);box-shadow:var(--shadow-sm)}.card-flush{padding:0;overflow:hidden}.card-pressable{cursor:pointer;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur) var(--ease)}.card-pressable:active{transform:scale(.985);box-shadow:var(--shadow-xs)}.card-title-row{display:flex;align-items:flex-start;gap:var(--sp-2)}.card-title{flex:1;min-width:0;font-size:var(--fs-md);font-weight:650;line-height:1.45}.card-divider{height:1px;background:var(--border);margin:var(--sp-3) calc(var(--sp-4) * -1)}.meta{color:var(--text-muted);font-size:var(--fs-sm);line-height:1.7;margin:var(--sp-1) 0}.meta-strong{color:var(--text-secondary);font-weight:600}.stem{font-size:var(--fs-md);line-height:1.75;white-space:pre-wrap;margin:var(--sp-3) 0;color:var(--text)}.stem-img{max-width:100%;border-radius:var(--radius-sm);display:block;margin-bottom:var(--sp-3)}.explanation{background:var(--bg-subtle);border-left:3px solid var(--primary-300);border-radius:var(--radius-xs);padding:var(--sp-3);font-size:var(--fs-sm);line-height:1.75;color:var(--text-secondary);margin:var(--sp-3) 0 0}.explanation-title{font-weight:650;color:var(--text);margin-bottom:4px;display:flex;align-items:center;gap:5px}.score-hero{text-align:center;padding:var(--sp-6) var(--sp-4)}.score-big{font-size:var(--fs-4xl);font-weight:750;line-height:1.05;letter-spacing:-.03em;color:var(--primary);margin:var(--sp-2) 0}.score-big.score-warn{color:var(--warn)}.score-sub{font-size:var(--fs-base);color:var(--text-muted);font-weight:400}.score-inline{font-size:var(--fs-lg);font-weight:700;color:var(--primary)}.badge-row{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-1) 0;flex-wrap:wrap}.badge-row .meta{flex:1;margin:0;min-width:0}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--fs-xs);font-weight:600;line-height:1.6;background:var(--gray-100);color:var(--text-muted);white-space:nowrap}.badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.75}.badge-no-dot:before{display:none}.badge-ai{background:var(--violet-soft);color:var(--violet)}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-bad{background:var(--danger-soft);color:var(--danger)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-state-not_started{background:var(--gray-100);color:var(--text-muted)}.badge-state-in_progress{background:var(--warn-soft);color:var(--warn)}.badge-state-completed{background:var(--ok-soft);color:var(--ok)}.badge-state-closed{background:var(--danger-soft);color:var(--danger)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:46px;padding:10px var(--sp-5);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text);font-size:var(--fs-md);font-weight:600;cursor:pointer;text-align:center;transition:transform var(--dur-fast) var(--ease),background var(--dur) var(--ease),opacity var(--dur) var(--ease)}.btn:active:not(:disabled){transform:scale(.978)}.btn svg{width:18px;height:18px;flex:none}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 2px 8px #0d8a7238}.btn-primary:active:not(:disabled){background:var(--primary-hover)}.btn-tonal{background:var(--primary-soft);border-color:var(--primary-soft-border);color:var(--primary-700)}.btn-ghost{background:transparent;border-color:transparent;color:var(--primary)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-block{display:flex;width:100%;margin:var(--sp-3) 0 0}.btn-sm{min-height:36px;padding:5px var(--sp-3);font-size:var(--fs-sm);border-radius:var(--radius-xs);position:relative}.btn-sm:after{content:"";position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);min-height:44px;height:100%}.btn-lg{min-height:52px;font-size:var(--fs-lg)}.btn:disabled{opacity:.5;box-shadow:none}.btn-row{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}.btn-row .btn{flex:1;margin:0}.btn .spinner{border-color:#fff6;border-top-color:#fff}.field{display:block;margin-bottom:var(--sp-4)}.field>span,.field-label{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--text-secondary);margin-bottom:var(--sp-2)}.field input{width:100%;min-height:48px;padding:11px 13px;font-size:16px;font-family:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.field input::placeholder{color:var(--text-disabled)}.field input:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.field-hint{font-size:var(--fs-xs);color:var(--text-muted);margin-top:6px;line-height:1.6}.option-list{margin-top:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2)}.option{display:flex;align-items:flex-start;width:100%;min-height:52px;text-align:left;background:var(--bg-surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:13px var(--sp-4);font-size:var(--fs-md);color:var(--text);line-height:1.6;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}.option:active{transform:scale(.99)}.option.selected{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-700);font-weight:600}.option.correct{border-color:var(--ok);background:var(--ok-soft);color:var(--ok)}.option.wrong{border-color:var(--danger);background:var(--danger-soft);color:var(--danger)}.mark{flex:none;width:22px;height:22px;margin-right:var(--sp-3);margin-top:1px;border:1.5px solid var(--border-strong);border-radius:50%;display:grid;place-items:center;font-size:var(--fs-xs);font-weight:700;color:transparent;transition:all var(--dur) var(--ease)}.mark-square{border-radius:5px}.option.selected .mark{border-color:var(--primary);background:var(--primary);color:#fff}.option-key{flex:none;font-weight:700;margin-right:var(--sp-2);min-width:18px}.option-text{flex:1;min-width:0}.q-nav{display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:var(--sp-2);margin-top:var(--sp-2)}.q-nav-item{position:relative;min-height:46px;border:1.5px solid var(--border);border-radius:var(--radius-xs);background:var(--bg-surface);font-size:var(--fs-base);font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all var(--dur-fast) var(--ease)}.q-nav-item.answered{background:var(--primary-soft);border-color:var(--primary-300);color:var(--primary-700)}.q-nav-item.current{border-color:var(--primary);border-width:2px;color:var(--primary-700);box-shadow:0 0 0 3px var(--primary-50)}.q-nav-item.answered:after{content:"";position:absolute;right:5px;bottom:5px;width:5px;height:5px;border-radius:50%;background:var(--primary)}.footer-bar{position:sticky;bottom:0;display:flex;gap:var(--sp-2);background:#f5f8faf5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:var(--sp-3) 0;padding-bottom:calc(var(--sp-3) + env(safe-area-inset-bottom));margin:0 calc(var(--sp-4) * -1);padding-left:var(--sp-4);padding-right:var(--sp-4);border-top:1px solid var(--border)}.footer-bar .btn{flex:1;margin:0}.submit-card{margin-top:var(--sp-4)}.save-state{font-size:var(--fs-xs);display:inline-flex;align-items:center;gap:5px}.save-saved{color:var(--ok)}.save-saving{color:var(--text-muted)}.save-error{color:var(--danger)}.countdown{font-weight:700;font-variant-numeric:tabular-nums}.countdown.expired{color:var(--danger)}.countdown-warn{color:var(--warn)}.progress{height:6px;border-radius:var(--radius-full);background:var(--gray-200);overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--primary-400),var(--primary-600));transition:width var(--dur-slow) var(--ease-out)}.error-banner{position:relative;background:var(--danger-soft);border:1px solid var(--danger-border);color:var(--danger);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);line-height:1.6;margin-bottom:var(--sp-3)}.notice{position:relative;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);font-size:var(--fs-sm);line-height:1.6;border:1px solid transparent;margin-bottom:var(--sp-3)}.notice-info{background:var(--info-soft);border-color:var(--info-border);color:var(--info)}.notice-warn{background:var(--warn-soft);border-color:var(--warn-border);color:var(--warn)}.notice-ok{background:var(--ok-soft);border-color:var(--ok-border);color:var(--ok)}.notice-title{font-weight:650;margin-bottom:2px}.hint{color:var(--text-muted);font-size:var(--fs-sm);line-height:1.65}.todo{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--radius-full);background:var(--warn-soft);border:1px solid var(--warn-border);font-size:var(--fs-xs);font-weight:600;color:var(--warn)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-8) var(--sp-4);text-align:center}.empty-icon{width:64px;height:64px;border-radius:var(--radius-lg);background:var(--primary-soft);color:var(--primary-500);display:grid;place-items:center}.empty-icon svg{width:30px;height:30px}.empty-title{font-size:var(--fs-md);font-weight:650;color:var(--text-secondary)}.empty-desc{font-size:var(--fs-sm);color:var(--text-muted);max-width:300px;line-height:1.65}.empty-actions{margin-top:var(--sp-2);width:100%;max-width:280px}.spinner{width:16px;height:16px;flex:none;border:2px solid var(--primary-200);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}.spinner-lg{width:26px;height:26px;border-width:3px}.loading-block{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-7) var(--sp-4);color:var(--text-muted);font-size:var(--fs-sm)}.skeleton{position:relative;overflow:hidden;background:var(--gray-100);border-radius:var(--radius-xs)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.72),transparent);animation:shimmer 1.4s infinite}.skeleton-text{height:13px;margin:8px 0}.skeleton-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-4);margin-bottom:var(--sp-3)}.appbar-back,.appbar-action,.btn-sm,.chip button,.q-nav-item,.tabbar-item,.tabbar-item svg{touch-action:manipulation}.q-nav-item{min-height:46px}.hint,.meta,.field-hint,.level-legend-item,.empty-desc,.notice,.error-banner{font-size:max(var(--fs-xs),12px)}.cmp-dual{margin:var(--sp-3) 0 var(--sp-2)}.cmp-track-row{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:5px}.cmp-track-label{flex:none;width:58px;font-size:var(--fs-2xs);color:var(--text-muted);text-align:right}.cmp-track{flex:1;height:8px;background:var(--gray-100);border:1px solid var(--border);border-radius:var(--radius-full);overflow:hidden}.cmp-track-fill{display:block;height:100%;border-radius:var(--radius-full);transition:width var(--dur-slow) var(--ease-out)}.cmp-track-me{background:linear-gradient(90deg,var(--primary-400),var(--primary-600))}.cmp-track-avg{background:linear-gradient(90deg,#e0a44c,var(--warn))}.cmp-track-num{flex:none;width:42px;font-size:var(--fs-2xs);font-weight:650;color:var(--text-secondary);font-variant-numeric:tabular-nums}.cmp-delta{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:650;padding:1px 8px;border-radius:var(--radius-full)}.cmp-delta-up{background:var(--ok-soft);color:var(--ok)}.cmp-delta-down{background:var(--danger-soft);color:var(--danger)}.cmp-delta-flat{background:var(--gray-100);color:var(--text-muted)}.cmp-legend{color:var(--text-disabled);font-size:var(--fs-2xs);margin-left:var(--sp-2)}.trend-wrap{margin:var(--sp-3) 0 var(--sp-4)}.trend-chart{width:100%;height:auto;display:block;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-1)}.trend-grid{stroke:var(--border);stroke-width:1;stroke-dasharray:4 4}.trend-axis-text{font-size:10px;fill:var(--text-muted)}.trend-line{fill:none;stroke:var(--primary);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.trend-area{fill:url(#trendGradient)}.trend-dot{fill:var(--primary);stroke:var(--bg-surface);stroke-width:2}.score-updated{display:flex;align-items:center;gap:var(--sp-2);background:var(--warn-soft);border:1px solid var(--warn-border);border-radius:var(--radius-sm);padding:10px var(--sp-3);font-size:var(--fs-sm);font-weight:600;color:var(--warn);margin:var(--sp-3) 0}.level-mastered{color:#14875a}.level-consolidating{color:#1f6feb}.level-weak{color:#d12d2d;font-weight:650}.level-untested{color:var(--text-disabled)}.level-legend{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-4)}.level-legend-item{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--radius-full);font-size:var(--fs-xs);font-weight:600;border:1px solid var(--border)}.level-legend-item:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.level-legend-item.mastered{background:var(--ok-soft);border-color:var(--ok-border);color:var(--ok)}.level-legend-item.consolidating{background:var(--info-soft);border-color:var(--info-border);color:var(--info)}.level-legend-item.weak{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger)}.level-legend-item.untested{background:var(--gray-100);color:var(--text-muted)}.level-group-title{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:650;margin:var(--sp-5) 0 var(--sp-3)}.level-group-title:first-of-type{margin-top:0}.level-group-title .count{font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);background:var(--gray-100);border-radius:var(--radius-full);padding:2px 8px}.kp-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}.kp-item:last-child{border-bottom:0}.kp-item-main{flex:1;min-width:0}.kp-name{font-size:var(--fs-base);font-weight:600;line-height:1.4}.kp-stat{font-size:var(--fs-xs);color:var(--text-muted);margin-top:3px}.kp-ring{flex:none;width:46px;height:46px;position:relative;display:grid;place-items:center}.kp-ring svg{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotate(-90deg)}.kp-ring-text{font-size:var(--fs-xs);font-weight:700;color:var(--text-secondary)}.practice-tip{background:var(--primary-soft);border-color:var(--primary-soft-border)}.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin:var(--sp-2) 0}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border:1px solid var(--border);border-radius:var(--radius-full);font-size:var(--fs-xs);font-weight:550;color:var(--text-secondary);background:var(--bg-surface)}.chip-weak{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger)}.result-mark{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);font-weight:700;padding:2px 9px;border-radius:var(--radius-full)}.result-mark-ok{background:var(--ok-soft);color:var(--ok)}.result-mark-bad{background:var(--danger-soft);color:var(--danger)}.my-answer{background:var(--bg-subtle);border-radius:var(--radius-xs);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);line-height:1.7}.my-answer .label{color:var(--text-muted);margin-right:6px}.auth-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(170deg,var(--primary-700) 0%,var(--primary-600) 34%,var(--bg) 34.1%,var(--bg) 100%)}.auth-hero{padding:var(--sp-8) var(--sp-5) var(--sp-6);color:#fff;text-align:center}.auth-hero-mark{width:58px;height:58px;margin:0 auto var(--sp-4);border-radius:var(--radius-md);background:#ffffff2e;border:1px solid rgba(255,255,255,.26);display:grid;place-items:center}.auth-hero h1{font-size:var(--fs-2xl);color:#fff}.auth-hero p{margin-top:var(--sp-2);font-size:var(--fs-sm);color:#ffffffd9}.auth-body{flex:1;padding:0 var(--sp-4) var(--sp-6)}.auth-card{background:var(--bg-surface);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-lg);max-width:480px;margin:0 auto}.auth-foot{text-align:center;font-size:var(--fs-xs);color:var(--text-muted);line-height:1.7;padding:var(--sp-5) var(--sp-4) calc(var(--sp-6) + env(safe-area-inset-bottom));max-width:440px;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{transform:translate(100%)}}@keyframes fade-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.pop-in{animation:pop-in var(--dur-slow) var(--ease-spring) both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(min-width:760px){.app-main{padding:var(--sp-5) var(--sp-6);padding-bottom:calc(var(--sp-7) + env(safe-area-inset-bottom))}.app-main-has-tabs{padding-bottom:calc(var(--tabbar-h) + var(--sp-7) + env(safe-area-inset-bottom))}.tabbar{max-width:720px;margin:0 auto;border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-left:1px solid var(--border);border-right:1px solid var(--border)}}
