html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}:root{--font-body:"Atkinson Hyperlegible", sans-serif;--font-accent:"Josefin Sans", sans-serif;--font-mono:"Monaco", "Menlo", "Ubuntu Mono", monospace;--color-white:oklch(100% 0 0);--accent-primary:oklch(63% 0.15 200);--accent-secondary:oklch(50% 0.15 200);--syntax-keyword:oklch(78% 0.15 320);--syntax-type:oklch(85% 0.1 200);--syntax-function:oklch(85% 0.15 140);--syntax-string:oklch(90% 0.12 100);--syntax-number:oklch(80% 0.15 280);--syntax-operator:oklch(78% 0.15 320);--syntax-comment:oklch(55% 0.08 240);--syntax-deleted:oklch(65% 0.15 20);--syntax-output:oklch(35% 0.02 240);--syntax-highlight-line:oklch(28% 0.02 260);--bg-primary:oklch(97.8% 0.004 180);--bg-secondary:oklch(100% 0 0);--bg-accent:oklch(98% 0.02 220);--text-primary:oklch(20% 0.04 180);--text-secondary:oklch(45% 0.02 180);--text-muted:oklch(60% 0 0);--accent-hover:var(--accent-secondary);--border-color:var(--text-primary);--shadow-color:var(--text-primary);--max-width-container:1100px;--transition-fast:all 0.2s ease;--transition-medium:all 0.3s ease;--transition-colors:color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;--transition-transform:transform 0.2s ease, box-shadow 0.2s ease;--space-2xs:0.25rem;--space-xs:0.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--space-2xl:4rem;--border-thin:2px;--border-medium:3px;--border-thick:4px;--shadow-sm:3px 3px 0 var(--shadow-color);--shadow-md:4px 4px 0 var(--shadow-color);--shadow-lg:6px 6px 0 var(--shadow-color)}[data-theme=dark]{--bg-primary:oklch(18% 0.02 200);--bg-secondary:oklch(22% 0.03 200);--bg-accent:oklch(18% 0.04 180);--text-primary:oklch(82% 0.08 180);--text-secondary:oklch(75% 0.06 180);--text-muted:oklch(65% 0.04 180);--accent-hover:oklch(75% 0.16 200)}[data-theme=light]{--syntax-function:oklch(45% 0.15 140);--syntax-string:oklch(45% 0.12 60);--syntax-number:oklch(50% 0.15 280);--syntax-deleted:oklch(50% 0.15 15);--syntax-keyword:oklch(58% 0.15 320);--syntax-type:oklch(65% 0.1 200)}*{margin:0;padding:0;box-sizing:border-box}::selection{background-color:var(--accent-primary);color:var(--color-white)}:focus-visible{outline:3px solid var(--accent-primary);outline-offset:2px}:focus:not(:focus-visible){outline:none}body{font-family:var(--font-body);font-size:1.125rem;line-height:1.7;background-color:var(--bg-primary);color:var(--text-primary);padding:var(--space-lg);transition:background-color .3s ease,color .3s ease}h1,h2,h3,h4,h5,h6{font-family:var(--font-accent);margin-top:var(--space-lg);margin-bottom:var(--space-sm);color:var(--accent-primary)}h1{font-size:clamp(1.5rem,4vw,2rem)}h2{font-size:1.2rem}h3,h4,h5,h6{font-size:1.125rem}p{margin-bottom:1.25rem}p:last-child{margin-bottom:0}a{color:var(--accent-primary);text-decoration:none;border-bottom:var(--border-thin)solid var(--accent-primary);padding-bottom:.125rem}a:hover{color:var(--accent-hover);border-bottom-color:var(--accent-hover)}hr{border:none;height:var(--border-medium);background-color:var(--border-color);margin:var(--space-lg)0;box-shadow:0 3px 0 var(--shadow-color);position:relative}hr::before{content:"";position:absolute;top:-3px;left:50%;transform:translateX(-50%);width:20px;height:9px;background-color:var(--accent-primary);box-shadow:2px 2px 0 var(--shadow-color)}code{background-color:var(--bg-accent);color:var(--text-primary);padding:.125rem .375rem;font-family:var(--font-mono);font-size:1rem}.container{max-width:var(--max-width-container);margin:0 auto;padding:0}.btn{font-family:var(--font-accent);font-weight:700;display:inline-block;padding:.75rem 1.25rem;text-decoration:none;border:var(--border-medium)solid var(--border-color);box-shadow:var(--shadow-md);transition:var(--transition-transform),var(--transition-colors);font-size:.9rem;cursor:pointer}.btn:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}.btn--primary{background-color:var(--accent-primary);color:var(--bg-primary)}.btn--primary:hover{background-color:var(--accent-hover);color:var(--bg-accent)}.btn--secondary{background-color:var(--bg-accent);color:var(--text-primary)}.btn--secondary:hover{background-color:var(--bg-secondary)}.btn--small{padding:var(--space-xs).875rem;font-size:.8rem;border:var(--border-thin)solid var(--border-color);box-shadow:var(--shadow-sm)}.btn--small:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-md)}.card{border:var(--border-thin)solid var(--border-color);box-shadow:var(--shadow-md)}.card--highlight{background-color:var(--bg-accent);border-left:var(--border-thick)solid var(--accent-primary)}.header{padding:var(--space-sm)0;margin-bottom:1.25rem}.header-content{display:flex;justify-content:space-between;align-items:center}.header-controls{display:flex;gap:var(--space-sm);align-items:center}.site-title{font-size:clamp(1.8rem,5vw,2.5rem);color:var(--accent-primary);text-decoration:none;border:none;padding:0}.site-title:hover{color:var(--accent-hover);border:none}.site-title a{border:none}.site-description{font-family:var(--font-accent);color:var(--text-secondary);font-weight:400}.nav{position:fixed;top:0;left:-100%;width:80%;max-width:18.75rem;height:100vh;background-color:var(--bg-secondary);border-right:var(--border-medium)solid var(--accent-primary);transition:left .3s ease;z-index:1000;overflow-y:auto;padding-top:5rem}.nav.nav-open{left:0;box-shadow:0 0 20px oklch(0% 0 0/.3)}.nav-list{list-style:none;display:flex;flex-direction:column;padding:1.25rem 0}.nav-item{border-bottom:var(--border-thin)solid var(--accent-primary)}.nav-item:first-child{border-top:var(--border-thin)solid var(--accent-primary)}.nav-link{display:block;padding:1.25rem 1.875rem;text-decoration:none;color:var(--text-primary);transition:var(--transition-colors);border:none;width:100%}.nav-link:hover{background-color:var(--accent-primary);color:var(--color-white);border:none}.social-icons{display:flex;justify-content:center;gap:1.25rem;margin-top:var(--space-lg);padding-top:var(--space-md);border-top:var(--border-medium)solid var(--border-color)}.social-icons a{display:flex;align-items:center;justify-content:center;padding:.75rem;border:var(--border-thin)solid var(--border-color);background-color:var(--bg-secondary);color:var(--text-primary);box-shadow:var(--shadow-sm);transition:var(--transition-transform),var(--transition-colors);text-decoration:none}.social-icons a:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-md);background-color:var(--accent-primary);color:var(--color-white)}.social-icons svg{width:1.25rem;height:1.25rem;stroke:currentColor}.theme-toggle{font-size:1.2rem}[data-theme=light] .theme-icon-light{display:none}[data-theme=dark] .theme-icon-dark{display:none}.menu-toggle{display:block;background:0 0;border:none;cursor:pointer;padding:.625rem;position:relative;width:2.5rem;height:2.5rem}.menu-toggle span{display:block;width:1.5625rem;height:3px;background-color:var(--text-primary);margin:.3125rem 0;transition:var(--transition-medium);position:absolute;left:50%;transform:translateX(-50%)}.menu-toggle span:nth-child(1){top:.5rem}.menu-toggle span:nth-child(2){top:1.125rem}.menu-toggle span:nth-child(3){top:1.75rem}.menu-toggle.menu-active span:nth-child(1){transform:translateX(-50%)rotate(45deg);top:1.125rem}.menu-toggle.menu-active span:nth-child(2){opacity:0}.menu-toggle.menu-active span:nth-child(3){transform:translateX(-50%)rotate(-45deg);top:1.125rem}.footer{padding:1.875rem;text-align:center;margin-top:var(--space-xl)}.footer-text{font-family:var(--font-accent);font-weight:700;color:var(--text-secondary)}.post-card{position:relative;margin-bottom:1.875rem;border:var(--border-medium)solid var(--border-color);box-shadow:var(--shadow-lg);background-color:var(--accent-primary);color:var(--color-white);overflow:hidden}.post-card-link{display:flex;flex-direction:column;justify-content:flex-end;border:none;padding:0;color:inherit;text-decoration:none}.post-card-link:hover{border:none;color:inherit}.post-card--cover .post-card-link{min-height:22rem}.post-card--cover .card-cover{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:center 30%;border:none;box-shadow:none}.post-card--cover::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(to bottom,transparent 0%,transparent 35%,color-mix(in oklch,var(--accent-primary) 60%,transparent) 58%,var(--accent-primary) 82%);pointer-events:none}.post-header{padding:1.5625rem 1.875rem}.post-card-link .post-header{position:relative;z-index:2}.post-card .post-excerpt{margin:var(--space-2xs)0 0;padding:0;color:var(--color-white);opacity:.92}.post-card-link .post-title{margin-bottom:var(--space-2xs)}.post-card-link .post-meta{margin:0}.post-title{font-size:1.8rem;line-height:1.3;margin:0 0 .75rem;color:var(--color-white)}.post-card--cover .post-meta{position:absolute;top:0;right:0;z-index:2;margin:var(--space-xl)var(--space-xl)var(--space-lg);text-align:right;color:var(--color-white);font-weight:700;text-shadow:0 1px 4px oklch(0% 0 0/.75);opacity:1}.post-card--hero .post-card-link{min-height:30rem}.post-card--hero .post-header{padding-top:var(--space-lg)}.post-card--hero .post-title{font-size:2.2rem;margin-bottom:0}@media(max-width:480px){.post-card--cover .post-card-link{min-height:16rem}.post-card--hero .post-card-link{min-height:20rem}.post-card--hero .post-title{font-size:1.8rem}}.post-content{padding:0;max-width:65ch}.post-meta{font-size:.85rem;opacity:.9}.pin-icon{width:.9rem;height:.9rem;vertical-align:-.1rem;stroke:currentColor}.post-excerpt{line-height:1.7;font-weight:400}.post-single ul,.post-single ol{margin:1.25rem 0;padding-left:var(--space-lg)}.post-single li{margin-bottom:var(--space-xs);line-height:1.7}.post-single blockquote{border-left:var(--border-thick)solid var(--accent-primary);padding-left:var(--space-sm);margin:var(--space-md)0;font-style:italic;color:var(--text-secondary)}.post-single pre code{background:0 0;padding:var(--space-sm)}.series-nav{margin-top:var(--space-lg);padding:var(--space-md);border:var(--border-medium)solid var(--border-color);box-shadow:var(--shadow-md);max-width:65ch}.series-nav__label{font-family:var(--font-accent);font-size:.85rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:var(--space-sm)}.series-nav__links{display:flex;flex-direction:column;gap:var(--space-xs)}.series-nav__prev,.series-nav__next{font-size:.95rem;border-bottom:none}.search-container{max-width:var(--max-width-container);margin:0 auto}.search-form{display:flex;gap:var(--space-sm);margin-bottom:var(--space-lg);align-items:flex-start}.search-input{flex:1;font-family:var(--font-body);padding:.75rem 1.25rem;border:var(--border-medium)solid var(--border-color);background-color:var(--bg-secondary);color:var(--text-primary);box-shadow:var(--shadow-md);transition:var(--transition-fast)}.search-input:focus{outline:none;transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--shadow-color);background-color:var(--bg-accent)}.search-results{margin-top:var(--space-lg)}.search-summary{margin-bottom:var(--space-md);color:var(--accent-primary)}.no-results{text-align:center;padding:var(--space-xl)0}.author-info{padding:1.5625rem;margin:1.875rem 0}.author-name{font-size:1.2rem;margin-bottom:var(--space-xs);color:var(--accent-primary)}.author-bio{line-height:1.6;color:var(--text-secondary)}.tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:2.1875rem;padding-top:1.25rem;border-top:var(--border-thin)solid var(--border-color)}.terms-container{max-width:var(--max-width-container);margin:0 auto}.page-title{font-family:var(--font-accent);font-size:clamp(1.8rem,5vw,2.5rem);color:var(--accent-primary);margin-bottom:var(--space-lg);text-transform:uppercase;letter-spacing:2px}.terms-list{margin-top:var(--space-lg)}.flex-wrap{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--space-lg);margin:var(--space-xl)0}.page-info{font-family:var(--font-accent);font-weight:700;color:var(--text-secondary);font-size:.9rem}.highlight{border:var(--border-medium)solid var(--border-color);box-shadow:var(--shadow-md);margin:var(--space-md)0;overflow:hidden}.highlight pre{margin:0;overflow-x:auto;font-size:1rem;font-family:var(--font-mono);line-height:1.5}.bg,.chroma{color:var(--text-primary);background-color:var(--bg-secondary);padding-inline:var(--space-sm)}.chroma a{border:none}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:var(--syntax-highlight-line)}.chroma .lnt,.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:var(--syntax-comment)}.chroma .line{display:flex}.chroma .k,.chroma .kc,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nt{color:var(--syntax-keyword)}.chroma .kt{color:var(--syntax-type)}.chroma .kd,.chroma .nb,.chroma .nl,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm{color:var(--syntax-type);font-style:italic}.chroma .na,.chroma .nc,.chroma .nf,.chroma .fm{color:var(--syntax-function)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--syntax-string)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--syntax-number)}.chroma .o,.chroma .ow{color:var(--syntax-operator)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs{color:var(--syntax-comment)}.chroma .cp,.chroma .cpf{color:var(--syntax-keyword)}.chroma .gd{color:var(--syntax-deleted)}.chroma .gi{color:var(--syntax-function);font-weight:700}.chroma .go{color:var(--syntax-output)}.chroma .bp{font-style:italic}.chroma .ge{text-decoration:underline}.chroma .gh,.chroma .gu{font-weight:700}.chroma .gl{text-decoration:underline}.post-footer-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-top:2.1875rem;padding-top:1.25rem;border-top:var(--border-thin)solid var(--border-color)}.post-footer-row .tags{margin-top:0;padding-top:0;border-top:none}.bluesky-share{display:inline-flex;align-items:center;gap:var(--space-xs);margin-left:auto}.bluesky-comments-section{max-width:65ch;margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:var(--border-medium)solid var(--border-color)}.bluesky-comments-section h3{margin-top:0}.bsky-comment{border-left:var(--border-medium)solid var(--accent-primary);padding:var(--space-sm)var(--space-md);margin:var(--space-sm)0;background-color:var(--bg-accent)}.bsky-comment__header{display:flex;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-xs);flex-wrap:wrap}.bsky-comment__avatar{width:24px;height:24px;border-radius:50%}.bsky-comment__author{font-weight:700}.bsky-comment__date{color:var(--text-muted);font-size:.85em}.bsky-comment__text{line-height:1.6;white-space:pre-wrap}.bsky-comment__replies{margin-left:var(--space-sm)}@media(min-width:1200px){.post-content{padding-left:var(--space-lg);padding-top:var(--space-md)}}@media(max-width:768px){body{padding:var(--space-sm)}.post-header{padding:1.25rem}.pagination{flex-direction:column;gap:var(--space-sm)}}@media(max-width:480px){.nav-link{padding:.75rem .9375rem}.post-header{padding:.9375rem}}.mermaid{width:100%;overflow-x:auto;text-align:center;margin:var(--space-md)0;font-family:var(--font-body);color:var(--text-primary)}.mermaid svg{max-width:100%;height:auto}.mermaid .node rect,.mermaid .node polygon,.mermaid .node ellipse{fill:var(--bg-secondary);stroke:var(--border-color);stroke-width:2px;rx:0;filter:drop-shadow(3px 3px 0 var(--shadow-color))}.mermaid .node.accent rect,.mermaid .node.accent polygon,.mermaid .node.accent ellipse{fill:var(--accent-primary);stroke:var(--border-color)}.mermaid .node.accent .nodeLabel{color:var(--color-white)}.mermaid .edgePath path{stroke:var(--accent-primary);stroke-width:2px}.mermaid marker path{fill:var(--accent-primary);stroke:var(--accent-primary)}.mermaid .edgeLabel{background-color:var(--bg-primary);color:var(--accent-primary);padding:2px 6px;font-weight:600}.mermaid .cluster rect{fill:var(--bg-accent);stroke:var(--border-color);stroke-width:2px;rx: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}}