:root{--bg: #071018;--bg-elev: #0d1620;--bg-soft: #111c28;--line: rgba(180, 220, 230, .12);--text: #e8f1f4;--muted: #8aa0ab;--brand: #2fd4c2;--brand-deep: #14998c;--danger: #e85d6c;--warn: #e8b84a;--radius: 14px;--font-display: "Space Grotesk", "Noto Sans SC", sans-serif;--font-body: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--shadow: 0 20px 50px rgba(0, 0, 0, .35)}*{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0;font-family:var(--font-body);font-weight:400;color:var(--text);background:var(--bg);line-height:1.65;letter-spacing:.01em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--brand);text-decoration:none}a:hover{color:#6eefe2}button,input,select,textarea{font:inherit}.app-shell{position:relative;min-height:100vh;overflow-x:hidden}.bg-glow{position:fixed;inset:-20% auto auto -10%;width:55vw;height:55vw;background:radial-gradient(circle,rgba(47,212,194,.18),transparent 65%);pointer-events:none;z-index:0;animation:drift 14s ease-in-out infinite alternate}.bg-grid{position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse at 50% 20%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse at 50% 20%,#000 20%,transparent 75%);pointer-events:none;z-index:0}@keyframes drift{0%{transform:translate(0) scale(1)}to{transform:translate(8%,12%) scale(1.08)}}.page{position:relative;z-index:1;width:min(1080px,calc(100% - 32px));margin:0 auto;padding:0 0 64px}.topnav{display:flex;align-items:center;justify-content:space-between;height:72px;margin-bottom:8px}.brand{font-family:var(--font-display);font-weight:700;font-size:1.45rem;letter-spacing:.02em;color:#fff;line-height:1.2}.brand span{color:var(--brand)}.nav-links{display:flex;gap:18px;align-items:center}.nav-links a{color:var(--muted);font-size:.95rem;font-weight:500;transition:color .2s;line-height:1.4}.nav-links a.router-link-active,.nav-links a:hover{color:#fff}.hero{padding:48px 0 36px;animation:rise .7s ease both}.hero h1{font-family:var(--font-display);font-size:clamp(2.4rem,6.5vw,3.8rem);font-weight:700;line-height:1.15;margin:0 0 18px;letter-spacing:-.02em;word-break:break-word}.hero p{max-width:36rem;color:var(--muted);font-size:1.05rem;line-height:1.75;margin:0 0 28px}.cta-row{display:flex;gap:12px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;background:linear-gradient(135deg,var(--brand),var(--brand-deep));color:#041016;font-family:var(--font-body);font-weight:600;padding:11px 18px;border-radius:999px;font-size:.95rem;line-height:1.3;transition:transform .18s ease,box-shadow .18s ease,opacity .18s;box-shadow:0 8px 24px #2fd4c238}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.ghost{background:#ffffff0f;color:var(--text);box-shadow:none;border:1px solid var(--line)}.btn.danger{background:var(--danger);color:#fff;box-shadow:none}.section-title{font-family:var(--font-body);font-weight:700;font-size:1.35rem;line-height:1.4;margin:28px 0 14px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.card{background:#0d1620e0;border:1px solid var(--line);border-radius:var(--radius);padding:18px;transition:border-color .2s,transform .2s}.card:hover{border-color:#2fd4c259;transform:translateY(-2px)}.card h3{margin:0 0 8px;font-family:var(--font-body);font-size:1rem;font-weight:600;line-height:1.4}.card .price{font-family:var(--font-display);font-size:1.6rem;color:var(--brand);font-weight:700;line-height:1.3}.card .muted{color:var(--muted);font-size:.85rem;margin-top:6px;line-height:1.5}.panel{background:#0d1620eb;border:1px solid var(--line);border-radius:18px;padding:22px;margin-bottom:16px;box-shadow:var(--shadow);animation:rise .55s ease both}.panel h2{font-family:var(--font-body);font-weight:700;margin:0 0 16px;font-size:1.25rem;line-height:1.4}label{display:block;font-size:.85rem;color:var(--muted);margin:12px 0 6px;line-height:1.4}input,select,textarea{width:100%;background:#071018;border:1px solid var(--line);color:var(--text);border-radius:12px;padding:11px 12px;font-family:var(--font-body);line-height:1.4}input:focus,select:focus,textarea:focus{outline:none;border-color:#2fd4c28c;box-shadow:0 0 0 3px #2fd4c21f}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:end}.row>*{flex:1;min-width:140px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.login-box{max-width:420px;margin:48px auto}.flash{padding:12px 14px;border-radius:12px;margin-bottom:14px;line-height:1.55;word-break:break-word}.flash-ok{background:#2fd4c21f;color:#7adfd8}.flash-err{background:#e85d6c24;color:#ff9aa5}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th,.table td{text-align:left;padding:11px 8px;border-bottom:1px solid rgba(255,255,255,.06);vertical-align:middle;line-height:1.45;word-break:break-word}.table th{color:var(--muted);font-weight:500}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;background:#2fd4c224;color:var(--brand);line-height:1.4}.badge.dev{background:#e8b84a29;color:var(--warn)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.stat{background:var(--bg-soft);border-radius:14px;padding:16px;border:1px solid var(--line)}.stat .k{color:var(--muted);font-size:.8rem;line-height:1.4}.stat .v{font-family:var(--font-body);font-size:1.2rem;font-weight:700;margin-top:6px;line-height:1.35;word-break:break-word}.foot{position:relative;z-index:1;width:min(1080px,calc(100% - 32px));margin:0 auto;padding:20px 0 40px;color:#5f7380;font-size:.85rem;border-top:1px solid rgba(255,255,255,.05)}.tiny-btn{padding:5px 10px;font-size:.75rem;border-radius:8px}.muted{color:var(--muted)}.radio-card{cursor:pointer;position:relative}.radio-card input{position:absolute;opacity:0;pointer-events:none}.radio-card.active{border-color:#2fd4c28c;box-shadow:0 0 0 1px #2fd4c240}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-width:640px){.topnav{height:auto;padding:16px 0;flex-direction:column;align-items:flex-start;gap:12px}.nav-links{gap:12px;flex-wrap:wrap}.hero{padding-top:24px}}
