:root{--bg:#faf7f2;--surface:#fff;--surface-warm:#f4eee5;--text:#2b2724;--muted:#7a716a;--border:#ebe4da;--primary:#2a5298;--primary-soft:#e8eef8;--primary-text:#fff;--accent:#e2583e;--accent-soft:#fdece7;--danger:#c8322b;--success:#2f7d4f;--radius:14px;--radius-sm:8px;--shadow:0 1px 2px #3c28140d, 0 6px 20px #3c28140f;--shadow-hover:0 2px 4px #3c28140f, 0 12px 32px #3c28141f;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}*,:after,:before{box-sizing:border-box}body{background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}a{color:var(--primary);text-decoration:none}img{max-width:100%;display:block}h1,h2,h3{line-height:1.3}.container{width:100%;max-width:1200px;margin:0 auto;padding-left:16px;padding-right:16px}input,select,textarea{font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:10px 12px}input:focus,select:focus,textarea:focus{outline:3px solid color-mix(in srgb,var(--primary) 20%,transparent);border-color:var(--primary)}button{font:inherit;cursor:pointer}.button,.button-outline,.button-small{background:var(--primary);color:var(--primary-text);text-align:center;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:6px;transition:background .15s,transform .1s;display:inline-flex}.button{padding:11px 24px;font-weight:600}.button:hover:not(:disabled){background:color-mix(in srgb,var(--primary) 88%,#000)}.button:active:not(:disabled){transform:translateY(1px)}.button.accent{background:var(--accent)}.button.accent:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#000)}.button-outline{background:var(--surface);color:var(--primary);border-color:var(--primary);padding:10px 22px;font-weight:600}.button-outline:hover:not(:disabled){background:var(--primary-soft)}.button-small{padding:5px 14px;font-size:14px}.button-outline:disabled,.button:disabled{opacity:.45;cursor:not-allowed}.link-button{color:var(--primary);background:0 0;border:none;padding:0}.error-text{color:var(--danger)}.price{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}
