@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Noto+Sans+TC:wght@300;400;500;600;700&display=swap";
:root{--bg-primary:#16161a;--bg-elevated:#242629;--text-headline:#faf8f5;--text-body:#b8b2a8;--text-muted:#72757e;--accent-primary:#7f5af0;--accent-secondary:#2cb67d;--accent-warm:#c4a882;--border:#ffffff12;--border-hover:#ffffff21;--glass-bg:#ffffff06;--glass-bg-hover:#ffffff0d;--accent-primary-soft:#7f5af01f;--accent-primary-glow:#7f5af033;--gradient-accent:linear-gradient(135deg,#7f5af0 0%,#c084fc 50%,#e879a8 100%);--gradient-btn:linear-gradient(135deg,#7f5af0 0%,#9171f8 100%);--gradient-btn-hover:linear-gradient(135deg,#9171f8 0%,#a78bfa 100%);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:22px;--radius-2xl:28px;--radius-full:9999px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--bg-primary);color:var(--text-body);min-height:100vh;font-family:Noto Sans TC,Space Grotesk,-apple-system,BlinkMacSystemFont,sans-serif;font-size:15px;line-height:1.85;position:relative;overflow-x:hidden}body:before{content:"";opacity:.012;pointer-events:none;z-index:999;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");position:fixed;inset:0}h1,h2,h3,h4{letter-spacing:-.01em;color:var(--text-headline);font-family:Noto Sans TC,Space Grotesk,sans-serif;font-weight:700;line-height:1.3}h1{font-size:2.5rem}h2{font-size:1.75rem}h3{font-size:1.25rem}h4{font-size:1.05rem}@media (max-width:640px){h1{font-size:1.875rem}h2{font-size:1.375rem}}a{color:var(--accent-primary);text-decoration:none;transition:color .2s}a:hover{color:#9171f8}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-4)var(--space-8);border-radius:var(--radius-lg);cursor:pointer;border:none;font-family:Noto Sans TC,Space Grotesk,sans-serif;font-size:.95rem;font-weight:600;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-flex;position:relative;overflow:hidden}.btn-primary{background:var(--gradient-btn);color:#fff;box-shadow:0 4px 20px var(--accent-primary-glow)}.btn-primary:hover{background:var(--gradient-btn-hover);transform:translateY(-2px);box-shadow:0 8px 36px #7f5af059}.btn-primary:active{transform:translateY(0)}.btn-ghost{color:var(--text-body);border:1px solid var(--border);background:0 0}.btn-ghost:hover{color:var(--text-headline);border-color:var(--border-hover);background:var(--glass-bg)}input,textarea,select{width:100%;padding:var(--space-3)var(--space-4);background:var(--glass-bg);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-headline);outline:none;font-family:inherit;font-size:.95rem;transition:border-color .2s,box-shadow .2s}input:focus,textarea:focus,select:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-soft)}input::placeholder{color:var(--text-muted)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse-soft{0%,to{opacity:.5;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes slideInLine{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes growFromCenter{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff0f;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#ffffff1f}::selection{background:var(--accent-primary-soft);color:var(--text-headline)}
