:root{--bg: #f3f6f2;--bg-accent: #e7f3ea;--paper: #ffffff;--ink: #1b211c;--muted: #667066;--line: #dde5db;--line-strong: #c9d4c6;--brand: #2f8f57;--brand-hover: #247548;--brand-soft: #e7f6ec;--brand-ink: #1f5c38;--danger: #c45c4a;--danger-soft: #fbecea;--ok: #2f8f57;--ok-soft: #e7f6ec;--warn: #b5812a;--warn-soft: #f8f1e3;--wx: #07c160;--ali: #1f2420;--shadow: 0 10px 40px rgba(27, 33, 28, .06);--shadow-lg: 0 24px 60px rgba(27, 33, 28, .08);--radius: 18px;--nav-h: 68px;--font: "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{min-height:100%}body{color:var(--ink);background:radial-gradient(900px 480px at 88% -10%,#dff0e4 0%,transparent 60%),radial-gradient(700px 420px at -10% 110%,#eef6ea 0%,transparent 55%),var(--bg);font-family:var(--font);font-size:15px;line-height:1.6}#app{position:relative;z-index:1}a{color:var(--brand-ink);text-decoration:none}a:hover{color:var(--brand)}button,input,textarea,select{font:inherit}img{max-width:100%}.shell{min-height:100vh;display:flex;flex-direction:column}.nav{height:var(--nav-h);display:flex;align-items:center;justify-content:flex-end;gap:24px;padding:0 28px;background:#ffffffdb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:750;letter-spacing:.02em}.brand-mark{width:32px;height:32px;border-radius:10px;background:linear-gradient(160deg,#5cbc7a,#2f8f57);box-shadow:inset 0 -6px 10px #00000014;position:relative}.brand-mark:after{content:"";position:absolute;left:11px;top:7px;width:10px;height:14px;border-radius:50%/40% 40% 60% 60%;background:#fff;opacity:.92}.brand small{display:block;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.12em}.nav-links{display:flex;align-items:center;gap:8px}.nav-links a,.nav-links .nav-user{padding:8px 12px;border-radius:999px;color:var(--muted);font-weight:600}.nav-links a.router-link-exact-active{background:var(--brand-soft);color:var(--brand-ink)}.nav-user{color:var(--ink)}.hero{padding:48px 28px 8px;max-width:1120px;margin:0 auto;width:100%}.hero h1{font-size:clamp(32px,5vw,48px);line-height:1.15;letter-spacing:-.03em;font-weight:780;max-width:16em}.hero p{margin-top:12px;color:var(--muted);font-size:16px;max-width:36em}.page{width:100%;max-width:1120px;margin:0 auto;padding:28px 28px 72px;flex:1}.page-narrow{max-width:520px}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:32px 16px}.auth-card{width:min(460px,100%);background:var(--paper);border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow-lg);padding:36px 32px 32px}.auth-card h1{font-size:28px;letter-spacing:-.03em;margin-bottom:8px}.stack{display:grid;gap:12px}.field{display:grid;gap:6px}.field span{font-size:13px;font-weight:650;color:var(--muted)}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;overflow-x:auto}input[type=checkbox]{width:auto}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.product{display:flex;flex-direction:column;min-height:280px;padding:22px;transition:transform .18s ease,box-shadow .18s ease}.product:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.product h3{font-size:20px;letter-spacing:-.02em}.product .desc{color:var(--muted);margin-top:8px;flex:1}.price{margin:18px 0 16px;font-size:28px;font-weight:780;letter-spacing:-.03em}.price small{font-size:13px;font-weight:600;color:var(--muted);margin-left:4px}.pay-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn{border-radius:999px;border:1px solid transparent;padding:10px 18px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:.15s ease}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brand-hover)}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-strong)}.btn-ghost:hover:not(:disabled){background:#f3f6f2}.btn-ali{background:var(--ali);color:#fff}.btn-wx{background:var(--wx);color:#fff}.btn-block{width:100%}.muted{color:var(--muted)}.error{color:var(--danger);background:var(--danger-soft);border-radius:12px;padding:8px 12px}.ok{color:var(--brand-ink);background:var(--ok-soft);border-radius:12px;padding:10px 12px}.hint{background:var(--brand-soft);border-radius:14px;padding:12px 14px;color:var(--brand-ink)}input,textarea,select{width:100%;background:#fbfcfb;border:1px solid var(--line);border-radius:12px;color:var(--ink);padding:11px 12px;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}input:disabled{background:#eef2ed}.empty{padding:48px 16px;text-align:center;color:var(--muted)}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--muted);font-weight:650;padding:10px 8px;border-bottom:1px solid var(--line)}td{text-align:left;padding:14px 8px;border-bottom:1px solid var(--line);vertical-align:middle}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700;background:#eef2ed;color:var(--muted)}.pill-ok{background:var(--ok-soft);color:var(--brand-ink)}.pill-wait{background:var(--warn-soft);color:var(--warn)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#1b211c47;display:flex;align-items:center;justify-content:center;z-index:20;padding:16px}.modal{width:min(440px,100%)}.qr{display:block;width:220px;height:220px;margin:16px auto;background:#fff;padding:10px;border-radius:16px;border:1px solid var(--line)}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.footer{padding:28px;color:var(--muted);font-size:13px;text-align:center}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:#eef2ed;padding:1px 6px;border-radius:6px}@media(max-width:800px){.nav{padding:0 16px}.page,.hero{padding-left:16px;padding-right:16px}.split,.admin-grid{grid-template-columns:1fr}.nav-links .nav-user{display:none}}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.auth-layout{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr}.auth-copy{padding:72px 56px;display:flex;flex-direction:column;justify-content:center}.auth-copy h1{font-size:clamp(36px,5vw,56px);line-height:1.12;letter-spacing:-.04em;font-weight:800;max-width:10em}.auth-copy .lead{margin-top:16px;font-size:17px;color:var(--muted);max-width:28em}.feature-list{margin-top:32px;display:grid;gap:14px;max-width:420px}.feature-list li{list-style:none;display:flex;gap:12px;align-items:flex-start;background:#ffffffb8;border:1px solid var(--line);border-radius:16px;padding:14px 16px}.feature-list b{display:block;font-size:15px}.feature-list span{color:var(--muted);font-size:13px}.dot{width:10px;height:10px;margin-top:6px;border-radius:50%;background:var(--brand);flex-shrink:0}.auth-copy .brand{margin-bottom:36px;width:fit-content}.auth-panel{display:flex;align-items:center;justify-content:center;padding:32px 24px;background:#ffffff73}.steps{display:grid;gap:8px;margin:8px 0 4px}.step{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:14px}.step em{width:22px;height:22px;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink);font-style:normal;font-size:12px;font-weight:800;display:grid;place-items:center}.page-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:20px}.page-head h1{font-size:28px;letter-spacing:-.03em}.product-tag{display:inline-flex;width:fit-content;background:var(--brand-soft);color:var(--brand-ink);font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;margin-bottom:12px}.checkout{max-width:480px;margin:0 auto;text-align:center}.checkout h1{font-size:28px;letter-spacing:-.03em}.cdk-box{margin-top:16px;background:var(--ok-soft);border-radius:16px;padding:16px;text-align:left}.cdk-box strong{display:block;font-size:20px;letter-spacing:.04em;margin:6px 0 8px}.admin-page{max-width:1180px}@media(max-width:900px){.auth-layout{grid-template-columns:1fr}.auth-copy{padding:40px 20px 8px}.auth-copy h1{font-size:34px}}
