:root{--font-body: "Literata", Georgia, "Times New Roman", serif;--font-heading: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace;--color-text: #303840;--color-text-secondary: #525d68;--color-text-tertiary: #747e8a;--color-bg: #e6e9ed;--color-surface: #edf0f3;--color-border: #c5cad2;--color-frame: #ffffff;--color-frame-border: #acacac;--color-link: #3d6aa8;--color-link-hover: #2c4f82;--color-code-bg: #dce0e5;--color-sem-h2: #801a60;--color-sem-h3: #7e19bc;--color-sem-h4: #167a50;--color-sem-h5: #7a5500;--color-sem-h6: #7a1840;--color-sem-label: #5c6a00;--color-sem-strong: #7c4500;--color-sem-em: #5242a3;--color-sem-num: #3d793c;--color-sem-code: #8b7030;--color-sem-code-bg: #f5f0dc;--color-sem-code-border: #d4c090;--color-sem-quote: #1e81a2;--color-sem-brack-0: #a05820;--color-sem-brack-1: #20608a;--color-sem-question: #9a3a70;--color-sem-separator: #887030;--width-content: 800px;--width-page: 70dvw;--deco-blob-1: rgba(61, 106, 168, .12);--deco-blob-2: rgba(140, 100, 180, .09);--deco-blob-3: rgba(100, 170, 160, .08);--deco-dots: rgba(0, 0, 0, .04);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem}@media(max-width:1150px){:root{--width-page: 100%}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:18px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-body);color:var(--color-text);background-color:var(--color-bg);background-image:radial-gradient(circle 1px at center,var(--deco-dots) 1px,transparent 0),radial-gradient(ellipse 900px 700px at 0% 5%,var(--deco-blob-1),transparent 70%),radial-gradient(ellipse 700px 600px at 95% 20%,var(--deco-blob-2),transparent 70%),radial-gradient(ellipse 800px 600px at 40% 95%,var(--deco-blob-3),transparent 70%);background-size:24px 24px,auto,auto,auto;background-attachment:fixed;line-height:1.7}a{color:var(--color-link);text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}a:hover{color:var(--color-link-hover)}img{max-width:100%;height:auto;display:block}::selection{background-color:#7fd4e1}:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.skip-link{position:absolute;top:-100%;left:var(--space-md);z-index:10000;padding:var(--space-sm) var(--space-md);background:var(--color-bg);color:var(--color-link);font-family:var(--font-heading);font-size:.875rem;text-decoration:none;border:2px solid var(--color-link);border-radius:4px}.skip-link:focus{top:var(--space-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--color-text-tertiary)}[data-theme=dark]{--color-text: #e8e8e6;--color-text-secondary: #c0c0be;--color-text-tertiary: #909090;--color-bg: #1a1a1a;--color-surface: #222220;--color-border: #333331;--color-frame: #2a2a28;--color-frame-border: #3a3a38;--color-link: #6ba3f5;--color-link-hover: #93bbf8;--color-code-bg: #2a2a28;--color-sem-h2: #e870c0;--color-sem-h3: #c080ff;--color-sem-h4: #3ac890;--color-sem-h5: #e8a44a;--color-sem-h6: #f07090;--color-sem-label: #bbd147;--color-sem-strong: #f0a832;--color-sem-em: #b49fff;--color-sem-num: #36be3f;--color-sem-code: #c8a830;--color-sem-code-bg: #252210;--color-sem-code-border: #4a4020;--color-sem-quote: #2dd3f1;--color-sem-brack-0: #e8a050;--color-sem-brack-1: #60b0e0;--color-sem-question: #f080c0;--color-sem-separator: #d0b860;--deco-blob-1: rgba(60, 120, 220, .1);--deco-blob-2: rgba(130, 80, 200, .08);--deco-blob-3: rgba(40, 180, 160, .06);--deco-dots: rgba(255, 255, 255, .03)}[data-theme=dark] ::selection{background-color:#1d6b75}.theme-loader{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background-color:var(--color-bg);opacity:0;pointer-events:none;transition:opacity .2s ease}.theme-loader.active{opacity:1;pointer-events:all}.theme-loader-spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-text-secondary);border-radius:50%;animation:theme-spin .6s linear infinite}@keyframes theme-spin{to{transform:rotate(360deg)}}::view-transition-old(root){animation:vt-out .15s cubic-bezier(.4,0,1,1) both}::view-transition-new(root){animation:vt-in .25s cubic-bezier(0,0,.2,1) both}@keyframes vt-out{to{opacity:0;translate:0 -6px}}@keyframes vt-in{0%{opacity:0;translate:0 10px}}::view-transition-old(*):not(::view-transition-old(root)),::view-transition-new(*):not(::view-transition-new(root)){animation-duration:.25s;animation-timing-function:cubic-bezier(.22,1,.36,1)}@keyframes page-fade-up{0%{opacity:0;translate:0 14px}}.post-card{--i: 0;animation:page-fade-up .3s cubic-bezier(.22,1,.36,1) calc(var(--i) * 40ms) both;will-change:opacity,transform}.post-card:nth-child(1){--i: 0}.post-card:nth-child(2){--i: 1}.post-card:nth-child(3){--i: 2}.post-card:nth-child(4){--i: 3}.post-card:nth-child(5){--i: 4}.post-card:nth-child(6){--i: 5}.post-card:nth-child(7){--i: 6}.post-card:nth-child(8){--i: 7}.post-card.anim-done{will-change:auto}.home-header{animation:page-fade-up .3s cubic-bezier(.22,1,.36,1) both;will-change:opacity,transform}.home-header.anim-done{will-change:auto}.astro-code,.astro-code span{color:var(--shiki-light)!important;background-color:var(--shiki-light-bg)!important;font-style:var(--shiki-light-font-style)!important;font-weight:var(--shiki-light-font-weight)!important;text-decoration:var(--shiki-light-text-decoration)!important}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}
