.app-root{min-height:100vh;background-color:#fff}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text-color);background-color:var(--bg-color);line-height:1.5;transition:background-color .3s,color .3s}:root{--btn-font-size: 16px;--btn-font-weight: 600;--btn-radius: 28px;--btn-padding-y: 12px;--btn-padding-x: 28px;--color-primary-start: #ff7a45;--color-primary-end: #ff4d4f;--color-secondary-start: #4f8cff;--color-secondary-end: #2f54eb;--color-accent-start: #13c2c2;--color-accent-end: #1890ff;--color-light-text: #ffffff;--color-dark-text: #1f1f1f;--bg-color: #f5f5f5;--text-color: #333333;--header-bg-color: #ffffff;--border-color: #e0e0e0;--hover-bg-color: #f5f5f5;--token-bg-color: #fff7e6;--token-border-color: #ffd591;--token-text-color: #d46b08;--tag-neutral-bg: #f4f6f8;--tag-neutral-border: #dce1e6;--tag-neutral-text: #3c4043;--tag-blue-bg: #e8f0fe;--tag-blue-border: #aecbfa;--tag-blue-text: #1a73e8;--tag-gray-bg: #fafafa;--tag-gray-border: #e0e0e0;--tag-gray-text: #424242;--tag-green-bg: #e8f5e9;--tag-green-border: #c8e6c9;--tag-green-text: #2e7d32;--tag-orange-bg: #fff3e0;--tag-orange-border: #ffe0b2;--tag-orange-text: #e65100;--card-bg: #ffffff;--input-bg: #ffffff;--input-border: #d9d9d9;--text-secondary: #666666;--shadow-color: rgba(0, 0, 0, .1);--modal-bg: #ffffff;--footer-bg: #f8f9fa;--primary-color: #1890ff;--primary-hover-color: #40a9ff;--primary-bg: #e6f7ff;--primary-border-color: #91d5ff;--primary-shadow: rgba(24, 144, 255, .2);--success-color: #52c41a;--success-bg: #f6ffed;--success-hover-bg: #d9f7be;--success-hover-color: #73d13d;--warning-color: #fa8c16;--warning-bg: #fff7e6;--warning-hover-bg: #ffe7ba;--warning-hover-color: #ffa940;--error-color: #ff4d4f;--error-bg: #fff1f0;--error-hover-bg: #ffccc7}html.dark-mode{--bg-color: #121212;--text-color: #e0e0e0;--header-bg-color: #1e1e1e;--border-color: #333333;--hover-bg-color: #2c2c2c;--token-bg-color: #2b2111;--token-border-color: #59421b;--token-text-color: #ffa940;--color-dark-text: #e0e0e0;--tag-neutral-bg: #2c2c2c;--tag-neutral-border: #444444;--tag-neutral-text: #e0e0e0;--tag-blue-bg: #111d2c;--tag-blue-border: #15395b;--tag-blue-text: #177ddc;--tag-gray-bg: #1f1f1f;--tag-gray-border: #333333;--tag-gray-text: #a0a0a0;--tag-green-bg: #162312;--tag-green-border: #274916;--tag-green-text: #49aa19;--tag-orange-bg: #2b2111;--tag-orange-border: #59421b;--tag-orange-text: #d87a16;--card-bg: #1e1e1e;--input-bg: #2c2c2c;--input-border: #444444;--text-secondary: #a0a0a0;--shadow-color: rgba(0, 0, 0, .5);--modal-bg: #1e1e1e;--footer-bg: #1a1a1a;--primary-color: #177ddc;--primary-hover-color: #1890ff;--primary-bg: #111d2c;--primary-border-color: #15395b;--primary-shadow: rgba(23, 125, 220, .2);--success-color: #49aa19;--success-bg: #162312;--success-hover-bg: #274916;--success-hover-color: #52c41a;--warning-color: #d87a16;--warning-bg: #2b2111;--warning-hover-bg: #59421b;--warning-hover-color: #fa8c16;--error-color: #a61d24;--error-bg: #2a1215;--error-hover-bg: #58181c}button{font-family:inherit;outline:none}.btn-pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:var(--btn-padding-y) var(--btn-padding-x);border-radius:var(--btn-radius);font-size:var(--btn-font-size);font-weight:var(--btn-font-weight);line-height:1.2;border:none;cursor:pointer;transition:transform .25s ease,box-shadow .25s ease,background .25s ease,color .25s ease;text-decoration:none;white-space:nowrap}.btn-pill:focus-visible{outline:2px solid rgba(79,140,255,.5);outline-offset:2px}.btn-pill--primary{background:linear-gradient(135deg,var(--color-primary-start) 0%,var(--color-primary-end) 100%);color:var(--color-light-text);box-shadow:0 10px 24px #ff7d554d}.btn-pill--primary:hover{transform:translateY(-3px);box-shadow:0 14px 30px #ff7d5566}.btn-pill--secondary{background:linear-gradient(135deg,var(--color-secondary-start) 0%,var(--color-secondary-end) 100%);color:var(--color-light-text);box-shadow:0 10px 24px #2f54eb47}.btn-pill--secondary:hover{transform:translateY(-3px);box-shadow:0 14px 30px #2f54eb61}.btn-pill--accent{background:linear-gradient(135deg,var(--color-accent-start) 0%,var(--color-accent-end) 100%);color:var(--color-light-text);box-shadow:0 10px 24px #1890ff42}.btn-pill--accent:hover{transform:translateY(-3px);box-shadow:0 14px 30px #1890ff5c}.btn-pill--outline{background:#ffffff;color:var(--color-secondary-end);border:1px solid rgba(47,84,235,.25);box-shadow:0 6px 18px #2f54eb1f}.btn-pill--outline:hover{transform:translateY(-3px);border-color:#2f54eb73;box-shadow:0 10px 24px #2f54eb2e}.btn-pill--ghost{background:transparent;color:var(--color-light-text);border:1px solid rgba(255,255,255,.4);box-shadow:none}.btn-pill--ghost:hover{background:rgba(255,255,255,.15);transform:translateY(-3px)}.btn-pill--light{background:#ffffff;color:var(--color-secondary-start);box-shadow:0 8px 22px #ffffff47}.btn-pill--light:hover{transform:translateY(-3px);box-shadow:0 12px 28px #ffffff61}.btn-pill .btn-icon{font-size:18px;line-height:1}.btn-pill .btn-text{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:none}ul,ol{list-style:none}img{max-width:100%;height:auto;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:#f5f5f5}::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:#999}::selection{background-color:#1890ff;color:#fff}.container{max-width:1200px;margin:0 auto;padding:0 20px}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter-from,.fade-leave-to{opacity:0}@media (max-width: 1200px){.container{max-width:100%}}.text-center{text-align:center}.text-primary{color:#1890ff}.bg-primary{background-color:#1890ff}.bg-gray{background-color:#f5f5f5}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading{animation:spin 1s linear infinite}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .6s ease-out}
