:root{--surface:#0b0e1a;--surface-warm:#0f1220;--heading:#ecedf2;--text:#9599ab;--text-soft:#636780;--accent:#3776ab;--accent-warm:#ffd43b;--border:#ffffff0f;--glass:#ffffff08;--glass-hover:#ffffff0f;--code-bg:#0d111f}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:60px}body{background:var(--surface);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.6}::selection{color:#fff;background:#3776ab4d}code,pre{font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:.875em}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:.4s cubic-bezier(.16,1,.3,1) both fadeSlideUp}@keyframes itemFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stagger-item{animation:.35s cubic-bezier(.16,1,.3,1) both itemFadeIn}.gradient-text{background:linear-gradient(135deg,#3776ab 0%,#4b8bbe 30%,#ffd43b 70%,#3776ab 100%) 0 0/200% 200%;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;animation:8s infinite shimmer}@keyframes shimmer{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.glass-card{-webkit-backdrop-filter:blur(24px);border:1px solid var(--border);background:#ffffff06;border-radius:14px;transition:all .25s}.glass-card:hover{background:#ffffff0b;border-color:#ffffff1a}.bg-base{z-index:-5;background:var(--surface);position:fixed;inset:0}.bg-glow{z-index:-4;pointer-events:none;background:radial-gradient(60% 50% at 20% 15%,#3776ab1f 0%,#0000 65%),radial-gradient(40% 35% at 80% 80%,#ffd43b0a 0%,#0000 55%),radial-gradient(30% 25%,#3776ab08 0%,#0000 50%);position:fixed;inset:0}.bg-grid{z-index:-3;pointer-events:none;background-image:linear-gradient(#ffffff05 1px,#0000 1px),linear-gradient(90deg,#ffffff05 1px,#0000 1px);background-size:48px 48px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(70% 60%,#000 25%,#0000 70%);mask-image:radial-gradient(70% 60%,#000 25%,#0000 70%)}.bg-noise{z-index:-2;pointer-events:none;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.code-block{background:var(--code-bg);border:1px solid var(--border);color:#cdd6f4;border-radius:12px;padding:20px 24px;font-size:14px;line-height:1.7;overflow-x:auto}.code-block .copy-btn{border:1px solid var(--border);color:var(--text-soft);cursor:pointer;opacity:0;background:#ffffff0a;border-radius:6px;padding:4px 10px;font-family:inherit;font-size:11px;transition:opacity .2s,background .15s;position:absolute;top:12px;right:12px}.code-block:hover .copy-btn{opacity:1}.code-block .copy-btn:hover{color:var(--heading);background:#ffffff14}.code-keyword{color:#cba6f7}.code-func{color:#89b4fa}.code-string{color:#a6e3a1}.code-number{color:#fab387}.code-comment{color:#6c7086;font-style:italic}.code-operator{color:#89dceb}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff0f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff1f}.code-window{background:var(--code-bg);border:1px solid #ffffff14;border-radius:12px;overflow:hidden;box-shadow:0 8px 40px #0006}.code-window-header{border-bottom:1px solid var(--border);background:#ffffff08;align-items:center;gap:8px;padding:10px 16px;display:flex}.code-window-dot{border-radius:50%;width:10px;height:10px}.code-window-body{color:#cdd6f4;white-space:pre;padding:20px 24px;font-family:JetBrains Mono,monospace;font-size:13px;line-height:1.8;overflow-x:auto}.progress-bar{z-index:200;background:linear-gradient(90deg,#3776ab,#ffd43b);width:0;height:2px;transition:width .1s linear;position:fixed;top:0;left:0}kbd{color:var(--text-soft);background:#ffffff0f;border:1px solid #ffffff14;border-radius:4px;padding:2px 6px;font-family:inherit;font-size:11px;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:3px solid #3776ab26;border-top-color:#3776ab;border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}
