﻿@import"https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap";@import"https://fonts.googleapis.com/css2?family=Geist+Mono:ital,wght@0,100..900;1,100..900&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Quicksand:wght@300..700&display=swap";:root{color-scheme:light dark;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--font-headings: "Quicksand", apple-system, BlinkMacSystemFont;--radius-sm: 0.25rem;--radius-md: 0.5rem;--radius-lg: 0.75rem;--bg: light-dark(#fcfcfc, #15161d);--bg-secondary: light-dark(#f1f2f4, #1c1d26);--headings: light-dark(#1e293b, #74c0fc);--text: light-dark(#374151, #adb5bd);--text-secondary: light-dark(#6b7280, #9CA3AF);--links: light-dark(#4f46e5, #91A7FF);--highlight: light-dark(#FFECB2; #41C7C7);--code-text: light-dark(#9D174D, #91A7FF);--share-text: light-dark(#999, #C4C4C4);--color-menu: light-dark(#C70039, #f8c348);--border: light-dark(rgba(15, 23, 42, 0.08), rgba(255, 255, 255, 0.08));--border-subtle: light-dark(rgba(15, 23, 42, 0.05), rgba(255, 255, 255, 0.05))}html[data-theme=dark] html,html[data-theme=dark] body{color-scheme:dark}html[data-theme=light] html,html[data-theme=light] body{color-scheme:light}@media(prefers-color-scheme: dark){body[data-theme=auto] html,body[data-theme=auto] body{color-scheme:dark}}@media(prefers-color-scheme: light){body[data-theme=auto] html,body[data-theme=auto] body{color-scheme:light}}html{height:100%}body{font-family:"Inter",-apple-system,"avenir next",avenir,roboto,noto,ubuntu,"helvetica neue",helvetica,sans-serif;font-size:1rem;line-height:2;margin:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}pre,code{font-family:"Roboto Mono","Courier New",monospace;font-family:var(--font-mono);font-size:.92rem}h1{font-size:clamp(1.85rem,1.5rem + 1.6vw,2.4rem);letter-spacing:-0.025em;font-weight:700;line-height:1.15}h2{font-size:clamp(1.4rem,1.2rem + 1vw,1.7rem);letter-spacing:-0.02em;font-weight:600;line-height:1.2}h3{font-size:clamp(1.1rem,1rem + .4vw,1.25rem);letter-spacing:-0.01em;font-weight:600}h2,h3,h4,h5{margin-top:1.6em}hr{margin:1em 0}hr.page-break{text-align:center;border:0}hr.page-break:before{content:"-----"}hr.page-break:after{content:attr(data-content) "-----"}p{margin:1.25em 0}li{margin:.4em 0}.w{max-width:720px;margin:0 auto;padding:2em 2em}@media screen and (max-width: 600px){.w{padding:2em 1.25em}}table{width:100%;border-collapse:collapse;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}table,th,td{border:1px solid var(--border);padding:.55em .75em}th{background-color:var(--bg-subtle);font-weight:600;text-align:left}div.highlighter-rouge{position:relative}div.highlighter-rouge pre code,pre code.highlighter-rouge{display:block;overflow-x:auto;padding:1em}.code-lang{position:absolute;top:.5em;left:.75em;font-family:var(--font-mono);font-size:.65rem;letter-spacing:.06em;text-transform:uppercase;font-weight:500;color:var(--text-secondary);opacity:.7;user-select:none;pointer-events:none}blockquote{font-style:normal;border:none;border-left:3px solid var(--links);padding:.75em 1.25em;margin:1.5em 0;color:var(--text-secondary);background-color:var(--bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0}blockquote p{margin:.4em 0}blockquote p:first-child{margin-top:0}blockquote p:last-child{margin-bottom:0}img{max-width:100%;display:block}.page-content img{border-radius:.5em;box-shadow:0 2px 8px rgba(0,0,0,.08)}html,body{background-color:var(--bg);color:var(--text)}h1,h2,h3,h4,h5,h6{color:var(--headings);font-family:var(--font-headings);font-weight:700;line-height:1.25}p,strong,b,em,small,li,hr,table,figcaption{color:var(--text)}.highlight,pre code,blockquote{border-radius:.5em}blockquote{background-color:var(--bg-secondary);border:1px var(--border) solid}a{color:var(--links)}*:target{background-color:var(--bg-secondary)}@media(prefers-reduced-motion: no-preference){html.transition,html.transition *,html.transition *:before,html.transition *:after{transition:all 250ms !important;transition-delay:0 !important}}.dashed{border-top:1px var(--text) dashed;margin:.5em 0}mark{padding:.4em;background-color:var(--highlight);font-size:.6em;letter-spacing:1px}.post-date{color:var(--text-secondary);margin-top:1rem;font-size:.7em;font-family:"Roboto Mono","Courier New",monospace}.post-meta{margin:.5rem 0 2.5rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border-subtle)}.post-meta-line{display:flex;flex-wrap:wrap;align-items:center;gap:.5em;font-family:var(--font-mono);font-size:.78rem;color:var(--text-secondary);letter-spacing:.01em;text-transform:uppercase}.post-meta-sep{opacity:.5}.post-meta-author{font-weight:500;color:var(--text)}.post-meta-tags{margin-top:.85rem;display:flex;flex-wrap:wrap;gap:.4em}.post-meta-tags .tag{margin-right:0}.post-meta .soopr-btn{margin-top:1rem}.has-dropcap>p:first-of-type::first-letter{font-family:var(--font-sans);font-size:3.6em;line-height:.85;float:left;margin:.08em .1em 0 -0.04em;font-weight:700;letter-spacing:-0.04em;color:var(--headings)}.home-date{font-family:var(--font-mono);font-size:.85em;color:var(--text-secondary)}.post-list-item a{text-decoration:none}.text-bold{font-weight:bold}.text-upcase{text-transform:uppercase;letter-spacing:1px}p code,li code{background-color:var(--bg-subtle);padding:.15rem .4rem;color:var(--code-text);font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);font-size:.875em}.code-copy{position:absolute;top:.5em;right:.5em;padding:.25em .65em;font-size:.72rem;font-family:var(--font-sans);font-weight:500;color:var(--text-secondary);background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;opacity:0;transition:opacity .2s ease,color .2s ease}div.highlighter-rouge:hover .code-copy{opacity:1}.code-copy:hover{color:var(--links)}@media screen and (max-width: 600px){.code-copy{opacity:1}}.back-link{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text);text-decoration:none;transition:color .3s ease}.back-link:hover{color:var(--links)}@media screen and (max-width: 600px){.back-link{width:36px;height:36px}}.post-title{margin-bottom:-1.5rem}.project-title{margin-bottom:.8rem}.credits{font-size:.8em;color:var(--text);margin:8em auto -4em auto;text-align:center}.credits a{color:var(--text);text-decoration:none;font-weight:bold}.credits a:hover{color:var(--links)}.tag{font-family:var(--font-mono);color:var(--text-secondary);padding:.3em .85em;margin-right:.4em;border-radius:1em;background-color:var(--bg-subtle);border:1px solid var(--border-subtle);font-size:.72em;font-weight:500;text-transform:lowercase;text-decoration:none;display:inline-block;letter-spacing:.01em;transition:color .2s ease,border-color .2s ease}.tag:hover{color:var(--links);border-color:var(--links)}.tag-cloud{display:flex;flex-wrap:wrap;gap:.4em;margin:1.5em 0 3em;padding:1.25em;background-color:var(--bg-subtle);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}.tag-cloud-item{display:inline-flex;align-items:baseline;gap:.35em}.tag-cloud-item .tag-count{font-size:.7em;color:var(--text-secondary);opacity:.7}.tag-section{margin:2.5em 0}.tag-section-title{display:flex;align-items:baseline;gap:.6em;border-bottom:1px solid var(--border-subtle);padding-bottom:.4em}.tag-section-count{font-family:var(--font-mono);font-size:.7rem;font-weight:400;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.not-found{text-align:left;padding:2em 0}.not-found-code{font-family:var(--font-mono);font-size:clamp(4rem,3rem + 5vw,7rem);font-weight:500;color:var(--links);line-height:1;letter-spacing:-0.04em;margin-bottom:.2em}.not-found-title{margin-top:0;margin-bottom:.5em}.not-found-lede{font-size:1.05rem;color:var(--text-secondary);max-width:36em;margin-bottom:2em}.not-found-actions{display:flex;flex-wrap:wrap;gap:.75em;margin-bottom:3em}.not-found-cta{display:inline-block;padding:.6em 1.1em;background-color:var(--links);color:var(--bg);text-decoration:none;border-radius:var(--radius-md);font-weight:500;font-size:.92rem;transition:opacity .2s ease,transform .2s ease}.not-found-cta:hover{opacity:.9;transform:translateY(-1px);color:var(--bg)}.not-found-cta-secondary{background-color:var(--bg-subtle);color:var(--text);border:1px solid var(--border)}.not-found-cta-secondary:hover{color:var(--text);border-color:var(--links)}.not-found-recent{margin-top:2em}.not-found-recent h3{font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);font-weight:500;margin-bottom:.5em}.post-nav{display:flex;justify-content:left;padding-top:2.5em;border-bottom:1px solid var(--border);font-size:.9em;gap:2.5em;position:sticky;top:0;z-index:1000;background-color:var(--bg)}.post-nav a{color:var(--links);text-decoration:none;max-width:45%}.post-nav a:hover{text-decoration:underline}.post-nav a.active{color:red}.post-nav .post-nav-next{margin-left:auto;text-align:right}@media screen and (max-width: 600px){.post-nav{flex-direction:column;gap:1em}.post-nav a{max-width:100%}.post-nav .post-nav-next{text-align:left}}.toc{background-color:var(--bg-secondary);border-radius:.5em;padding:1em 1.5em;margin:1.5em 0;font-size:.9em}.toc summary{cursor:pointer;font-weight:600;font-family:var(--font-sans);color:var(--headings);margin-bottom:.5em}.toc ul{margin:0;padding-left:1.5em}.toc li{margin:.3em 0}.toc a{color:var(--text);text-decoration:none}.toc a:hover{color:var(--links)}.toc .toc-sub{padding-left:1em}@media(prefers-reduced-motion: no-preference){.page-content a:not(.tag):not(.card a):not(.back-link):not(.not-found-cta){text-decoration:none;background-image:linear-gradient(var(--links), var(--links));background-size:0% 1px;background-position:left bottom;background-repeat:no-repeat;transition:background-size .3s ease}.page-content a:not(.tag):not(.card a):not(.back-link):not(.not-found-cta):hover{background-size:100% 1px}.page-content{animation:fadeIn .4s ease-out}}::selection{background:var(--highlight);color:var(--headings)}html[data-theme=dark]{scrollbar-color:var(--bg-secondary) var(--bg)}.search{margin:1.5em 0;position:relative}.search-input{width:100%;padding:.65em .9em;font-family:var(--font-sans);font-size:.95rem;color:var(--text);background-color:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-md);outline:none;transition:border-color .2s ease,background-color .2s ease}.search-input:focus{border-color:var(--links);background-color:var(--bg)}.search-input::placeholder{color:var(--text-secondary)}.search-results{list-style:none;margin:.4em 0 0;padding:0}.search-results .search-result a{display:flex;justify-content:space-between;align-items:baseline;gap:1em;padding:.55em .75em;border-radius:var(--radius-sm);text-decoration:none;color:var(--text)}.search-results .search-result a:hover{background-color:var(--bg-subtle)}.search-results .search-result-title{font-weight:500}.search-results .search-result-date{font-family:var(--font-mono);font-size:.75rem;color:var(--text-secondary);flex-shrink:0}.search-results .search-empty{padding:.75em;color:var(--text-secondary);font-style:italic}.fn-tooltip{position:absolute;max-width:min(420px,90vw);padding:.75em 1em;background-color:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 6px 24px rgba(0,0,0,.12);font-size:.9rem;line-height:1.55;z-index:1000;opacity:0;pointer-events:none;transition:opacity .15s ease}.fn-tooltip p{margin:0}.fn-tooltip p+p{margin-top:.5em}.fn-tooltip.visible{opacity:1}details:not(.toc):not([class*=markdown-alert]){margin:1.5em 0;padding:.75em 1.15em;background-color:var(--bg-subtle);border:1px solid var(--border-subtle);border-radius:var(--radius-md);transition:border-color .2s ease}details:not(.toc):not([class*=markdown-alert])[open]{border-color:var(--border)}details:not(.toc):not([class*=markdown-alert])>summary{cursor:pointer;font-weight:600;color:var(--headings);list-style:none;display:flex;align-items:center;gap:.55em}details:not(.toc):not([class*=markdown-alert])>summary::-webkit-details-marker{display:none}details:not(.toc):not([class*=markdown-alert])>summary::before{content:"›";display:inline-block;font-family:var(--font-mono);transition:transform .2s ease;color:var(--text-secondary)}details:not(.toc):not([class*=markdown-alert])[open]>summary::before{transform:rotate(90deg)}details:not(.toc):not([class*=markdown-alert])>*:not(summary){margin-top:.75em}.link-preview{position:absolute;max-width:min(360px,80vw);padding:.85em 1em;background-color:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 28px rgba(0,0,0,.12);z-index:1000;opacity:0;pointer-events:none;transition:opacity .15s ease;font-size:.85rem;line-height:1.5}.link-preview .lp-title{font-weight:600;color:var(--headings);margin-bottom:.25em}.link-preview .lp-excerpt{color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.link-preview .lp-meta{margin-top:.4em;font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);opacity:.7}.link-preview.visible{opacity:1}@view-transition{navigation:auto}@media(prefers-reduced-motion: no-preference){::view-transition-old(root),::view-transition-new(root){animation-duration:.25s}}.button-class{background-color:#007bff;color:#fff;padding:1px 20px;text-decoration:none;border-radius:5px;display:inline-block}ul.social-class{text-align:center}ul.social-class li{display:inline-block;opacity:.7;padding:.5rem 0 0 0}ul.social-class li:last-child{padding-right:0}ul.social-class li:hover,ul.social-class li:focus{opacity:1}ul.social-class a{font-size:1.2rem}ul.social-class a img{width:40%}.center-image{display:block;margin-left:auto;margin-right:auto;width:30%}ul.horizontal-list{display:flex;margin-top:0em;padding-left:0;list-style:none;flex-wrap:wrap;font-family:var(--font-sans);gap:.8em}ul.horizontal-list li{display:inline}ul.horizontal-list li a{text-decoration:none;font-weight:500}ul.horizontal-list li:not(.card){margin-right:1em}.card-link::before{content:"";position:absolute;inset:0;z-index:1}.card{position:relative;padding:1.1em 1.15em;border:1px solid var(--border);width:calc(33.333% - .6em);box-sizing:border-box;height:auto;text-align:center;font-size:1em;align-items:flex-start;background-color:var(--bg-secondary);border-radius:var(--radius-md);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.card:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.06);border:1.5px var(--links) solid}.card .header{color:var(--links);font-weight:600;letter-spacing:-0.005em}.card .body{font-size:.85em;color:var(--text-secondary);line-height:1.55}.card hr{margin:.5em 0;border-top:1px solid var(--border-subtle)}@media screen and (max-width: 600px){ul.horizontal-list li.card{width:100%;display:block}ul.horizontal-list li.card a,ul.horizontal-list li.card .header{font-size:1em}.card:hover{transform:none;box-shadow:none}}.highlight .hll{background-color:#515151}.highlight{background:#1a1f35;color:#f2f0ec}.highlight .c{color:#747369}.highlight .err{color:#f2777a}.highlight .k{color:#c9c}.highlight .l{color:#f99157}.highlight .n{color:#f2f0ec}.highlight .o{color:#6cc}.highlight .p{color:#f2f0ec}.highlight .ch{color:#747369}.highlight .cm{color:#747369}.highlight .cp{color:#747369}.highlight .cpf{color:#747369}.highlight .c1{color:#747369}.highlight .cs{color:#747369}.highlight .gd{color:#f2777a}.highlight .ge{font-style:italic}.highlight .gh{color:#f2f0ec;font-weight:bold}.highlight .gi{color:#9c9}.highlight .gp{color:#747369;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#6cc;font-weight:bold}.highlight .kc{color:#c9c}.highlight .kd{color:#c9c}.highlight .kn{color:#6cc}.highlight .kp{color:#c9c}.highlight .kr{color:#c9c}.highlight .kt{color:#fc6}.highlight .ld{color:#9c9}.highlight .m{color:#f99157}.highlight .s{color:#9c9}.highlight .na{color:#69c}.highlight .nb{color:#f2f0ec}.highlight .nc{color:#fc6}.highlight .no{color:#f2777a}.highlight .nd{color:#6cc}.highlight .ni{color:#f2f0ec}.highlight .ne{color:#f2777a}.highlight .nf{color:#69c}.highlight .nl{color:#f2f0ec}.highlight .nn{color:#fc6}.highlight .nx{color:#69c}.highlight .py{color:#f2f0ec}.highlight .nt{color:#6cc}.highlight .nv{color:#f2777a}.highlight .ow{color:#6cc}.highlight .w{color:#f2f0ec}.highlight .mb{color:#f99157}.highlight .mf{color:#f99157}.highlight .mh{color:#f99157}.highlight .mi{color:#f99157}.highlight .mo{color:#f99157}.highlight .sa{color:#9c9}.highlight .sb{color:#9c9}.highlight .sc{color:#f2f0ec}.highlight .dl{color:#9c9}.highlight .sd{color:#747369}.highlight .s2{color:#9c9}.highlight .se{color:#f99157}.highlight .sh{color:#9c9}.highlight .si{color:#f99157}.highlight .sx{color:#9c9}.highlight .sr{color:#9c9}.highlight .s1{color:#9c9}.highlight .ss{color:#9c9}.highlight .bp{color:#f2f0ec}.highlight .fm{color:#69c}.highlight .vc{color:#f2777a}.highlight .vg{color:#f2777a}.highlight .vi{color:#f2777a}.highlight .vm{color:#f2777a}.highlight .il{color:#f99157}/*# sourceMappingURL=main.css.map */