:root{--blue: #1677ff;--blue-deep: #0958d9;--blue-soft: #e8f3ff;--blue-mist: #f3f8ff;--ink: #1f2329;--ink-2: #4e5969;--ink-3: #86909c;--price: #ff4d4f;--line: #e5e6eb;--line-soft: #f0f1f5;--paper: #ffffff;--page: #f5f7fb;--shadow: 0 8px 24px rgba(22, 119, 255, .08);--shadow-soft: 0 4px 14px rgba(15, 35, 70, .06);--radius: 8px;--radius-lg: 12px;--font-display: "Outfit", "Noto Sans SC", sans-serif;--font-body: "Noto Sans SC", "Outfit", sans-serif}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(900px 420px at 12% -8%,rgba(22,119,255,.12),transparent 55%),radial-gradient(700px 380px at 92% 0%,rgba(64,169,255,.1),transparent 50%),linear-gradient(180deg,#f3f8ff 0%,var(--page) 38%,#eef2f8 100%);background-attachment:fixed;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}img{max-width:100%;display:block}.container{width:min(1180px,calc(100% - 40px));margin:0 auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius);padding:11px 22px;cursor:pointer;font-weight:600;letter-spacing:.01em;transition:transform .2s ease,background .2s ease,box-shadow .2s ease,color .2s ease}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 8px 18px #1677ff47}.btn-primary:hover{background:var(--blue-deep)}.btn-ghost{background:#fff;color:var(--blue);border:1px solid rgba(22,119,255,.35)}.btn-ghost:hover{background:var(--blue-soft)}.btn-dark{background:#1f2329;color:#fff}.btn-dark:hover{background:#000}.page-title{margin:0 0 22px;font-family:var(--font-display);font-size:1.75rem;font-weight:700;letter-spacing:-.02em;color:var(--ink)}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft)}.fade-up{animation:fadeUp .65s ease both}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes floatY{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes riseIn{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
