@import "https://fonts.googleapis.com/css2?family=Fraunces:wght@400;600;700;800&family=JetBrains+Mono:wght@400;600&family=Space+Grotesk:wght@400;500;600;700&display=swap";:root,[data-theme=default]{--color-primary:#d46a3b;--color-accent:#1b7f6c;--color-inline-code:hsl(9, 70%, 35%);--color-bg:#f6efe6;--color-page:#f4ede3;--color-surface:#fffaf2;--color-surface-strong:#ffffff;--color-contrast-lower:#fff4e6;--color-contrast-low:#e7dccf;--color-contrast-medium-low:#c6b7a7;--color-contrast-medium:#a18e7a;--color-contrast-medium-high:#6f5f4f;--color-contrast-high:#2d231b;--color-contrast-higher:#120d0a;--color-text:var(--color-contrast-high);--color-header:rgba(255, 250, 242, 0.9);--color-header-border:rgba(45, 35, 27, 0.08);--page-gradient:radial-gradient(1200px 700px at 10% -10%, rgba(244, 194, 78, 0.35), transparent 60%),
    radial-gradient(900px 800px at 90% 10%, rgba(27, 127, 108, 0.18), transparent 65%),
    linear-gradient(180deg, #f7f1e9 0%, #f1e7db 100%);--shadow-soft:0 18px 40px -28px rgba(24, 17, 12, 0.35);--shadow-strong:0 30px 60px -40px rgba(24, 17, 12, 0.6);--radius-lg:24px;--radius-md:16px;--radius-sm:10px;--font-display:"Fraunces", "Iowan Old Style", "Palatino", serif;--font-body:"Space Grotesk", "Roboto", "Helvetica Neue", "Helvetica", "Arial", sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", "Consolas", "Liberation Mono", monospace;--font-size-sm:clamp(0.8rem, 0.17vw + 0.76rem, 0.89rem);--font-size-base:clamp(1rem, 0.34vw + 0.91rem, 1.19rem);--font-size-md:clamp(1.25rem, 0.61vw + 1.1rem, 1.58rem);--font-size-lg:clamp(1.56rem, 1vw + 1.31rem, 2.11rem);--font-size-xl:clamp(1.95rem, 1.56vw + 1.56rem, 2.81rem);--font-size-xxl:clamp(2.44rem, 2.38vw + 1.85rem, 3.75rem);--font-size-xxxl:clamp(3.05rem, 3.54vw + 2.17rem, 5rem)}[data-theme]{background-color:var(--color-bg);color:var(--color-contrast-high)}[data-theme=dark]{--color-primary:#f1a46f;--color-accent:#45b59f;--color-inline-code:hsl(9, 82%, 70%);--color-bg:#14110e;--color-page:#100d0b;--color-surface:#1e1914;--color-surface-strong:#241e18;--color-contrast-lower:#201a15;--color-contrast-low:#322a23;--color-contrast-medium-low:#5b4e42;--color-contrast-medium:#7c6c5c;--color-contrast-medium-high:#b1a392;--color-contrast-high:#ede5db;--color-contrast-higher:#ffffff;--color-text:var(--color-contrast-high);--color-header:rgba(20, 17, 14, 0.88);--color-header-border:rgba(255, 255, 255, 0.08);--page-gradient:radial-gradient(1000px 500px at 15% -10%, rgba(244, 194, 78, 0.16), transparent 60%),
    radial-gradient(900px 700px at 85% 15%, rgba(69, 181, 159, 0.12), transparent 65%),
    linear-gradient(180deg, #15110e 0%, #0f0b08 100%);--shadow-soft:0 20px 45px -30px rgba(0, 0, 0, 0.6);--shadow-strong:0 40px 70px -45px rgba(0, 0, 0, 0.75)}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}html,body{height:100%}body{display:flex;flex-direction:column;position:relative;min-height:100%;background:var(--page-gradient);background-color:var(--color-page);overflow-x:hidden}main{flex:1 0 auto}footer{flex-shrink:0}a{color:var(--color-primary);text-decoration:none}a:hover,a:active,a:focus,a:focus-within{color:var(--color-text);text-decoration:underline}h1{font-size:var(--font-size-xl);line-height:calc(8px + 2ex)}h2{font-size:var(--font-size-lg);line-height:calc(8px + 2ex)}h3{font-size:var(--font-size-md);line-height:calc(8px + 2ex)}h4{font-size:var(--font-size-base);line-height:calc(8px + 2ex)}h5{font-size:var(--font-size-sm);line-height:calc(8px + 2ex)}h6{font-size:var(--font-size-sm);line-height:calc(8px + 2ex)}table{border-collapse:collapse;display:block;overflow-x:auto}td,th{border:1px solid var(--color-contrast-medium-low);padding:10px 20px;font-size:.9rem;line-height:1.4rem}th{border:1px solid var(--color-contrast-medium);background-color:var(--color-contrast-medium-low);color:var(--color-contrast-high);font-size:1rem}td{text-align:center}tr:nth-child(even) td{background-color:var(--color-contrast-lower);color:var(--color-contrast-high)}tr:nth-child(odd) td{background-color:var(--color-contrast-low);color:var(--color-contrast-high)}blockquote{background:var(--color-contrast-lower);border-left:10px solid var(--color-contrast-low);margin:1.5em 10px;padding:.7em 10px;quotes:"\201C" "\201D"}blockquote p{display:inline}blockquote::before{color:var(--color-contrast-low);content:open-quote;font-size:4em;line-height:.1em;margin-right:.25em;vertical-align:-.4em}pre{font-size:1rem;line-height:1.6rem;overflow-x:auto}code{overflow-x:scroll}code,pre,kbd,samp{font-family:var(--font-mono)}pre:not([style]){background-color:#272822;color:#f8f8f2;padding:20px}p>code,li>code{background-color:var(--color-contrast-lower);font-size:1rem;color:var(--color-inline-code);padding:2px 5px;border-radius:5px}form{display:flex;flex-wrap:wrap;row-gap:10px}form input,form textarea{border:1px solid var(--color-contrast-medium-low);padding:10px 12px;font-size:1rem;background-color:var(--color-contrast-lower);color:var(--color-contrast-high)}@media(min-width:576px){form input,form textarea{padding:15px 12px;min-width:250px}}form button{cursor:pointer}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@font-face{font-family:roboto;src:local("Roboto Thin"),url(/fonts/Roboto/Roboto-Thin.ttf)format("truetype");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Thin Italic"),url(/fonts/Roboto/Roboto-ThinItalic.ttf)format("truetype");font-weight:100;font-style:italic;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Light"),url(/fonts/Roboto/Roboto-Light.ttf)format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Light Italic"),url(/fonts/Roboto/Roboto-LightItalic.ttf)format("truetype");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Regular"),url(/fonts/Roboto/Roboto-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Italic"),url(/fonts/Roboto/Roboto-Italic.ttf)format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Medium"),url(/fonts/Roboto/Roboto-Medium.ttf)format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Italic"),url(/fonts/Roboto/Roboto-MediumItalic.ttf)format("truetype");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Bold"),url(/fonts/Roboto/Roboto-Bold.ttf)format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Bold Italic"),url(/fonts/Roboto/Roboto-BoldItalic.ttf)format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Black"),url(/fonts/Roboto/Roboto-Black.ttf)format("truetype");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Black Italic"),url(/fonts/Roboto/Roboto-BlackItalic.ttf)format("truetype");font-weight:900;font-style:italic;font-display:swap}body{color:var(--color-text);font-family:var(--font-body);font-size:125%;line-height:1.55;letter-spacing:-.01em}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em}.summary-text,.project-list-summary,.post-list-summary{font-weight:300;font-size:var(--font-size-base);line-height:calc(8px + 2ex);color:var(--color-contrast-medium-high)}.meta-text,.project-list-meta,.post-list-meta{color:var(--color-contrast-medium);font-size:var(--font-size-sm);line-height:calc(8px + 2ex);font-weight:400;display:flex;flex-wrap:wrap;gap:6px 15px}.fallback-text{color:var(--color-contrast-medium);font-size:var(--font-size-md);line-height:calc(8px + 2ex)}.clearfix::after{clear:both;content:'';display:table}.container,.single-container-post,.single-container,.container--sm{max-width:1180px;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media(min-width:576px){.container,.single-container-post,.single-container,.container--sm{padding-left:20px;padding-right:20px}}.container--sm{max-width:768px}.hide-text{overflow:hidden;padding:0;text-indent:101%;white-space:nowrap}.visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.section{padding:clamp(48px,6vw,96px)0}header{position:sticky;top:0;z-index:20;background:var(--color-header);border-bottom:1px solid var(--color-header-border);backdrop-filter:blur(12px)}.main-nav{display:flex;flex-direction:column;justify-content:space-between;padding:12px 0;row-gap:16px}.main-nav .nav-toggle{position:absolute;top:20px;right:20px;cursor:pointer}@media(min-width:900px){.main-nav{flex-direction:row;align-items:center;padding:0}.main-nav .nav-toggle{display:none}}.logo{font-size:var(--font-size-md);line-height:calc(8px + 2ex);font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;text-decoration:none;width:fit-content}.logo:hover{text-decoration:none}.menu-link{color:var(--color-text)}.menu-link:hover{color:var(--color-contrast-higher)}.menu{display:none;flex-direction:column;margin:0;padding:0;border-bottom:1px solid var(--color-contrast-low);border-top:1px solid var(--color-contrast-low)}.menu--active{display:flex}.menu .menu-item,.menu .menu-item--align{display:block;list-style-type:none}.menu .menu-item--align{align-self:center;margin-left:20px}.menu .menu-link{display:flex;font-size:1rem;font-weight:500;text-align:center;text-decoration:none;cursor:pointer;padding:.9rem 1rem;border-radius:999px;transition:background-color .2s ease,color .2s ease,transform .2s ease}.menu .menu-link:hover{background-color:var(--color-contrast-low);color:var(--color-contrast-higher);transform:translateY(-1px)}.menu .drop-icon{margin-left:10px}@media(min-width:900px){.menu{display:flex;flex-direction:row;gap:10px;border:none}.menu .menu-item:hover .sub-menu,.menu .menu-item--align:hover .sub-menu{background-color:var(--color-surface-strong);border:1px solid var(--color-contrast-low);border-radius:var(--radius-md);padding:8px;display:block;z-index:1}}.sub-menu{display:none}.sub-menu--active{display:block;z-index:1}.sub-menu .menu-link{font-weight:initial}@media(min-width:900px){.sub-menu{display:none;position:absolute;box-shadow:var(--shadow-soft)}.sub-menu--active{display:none}}.footer{background:linear-gradient(180deg,transparent,var(--color-contrast-lower));border-top:1px solid var(--color-contrast-low)}.footer-socials{max-width:300px;margin:0 auto}.footer-copyright{text-align:center;font-size:var(--font-size-base);line-height:calc(8px + 2ex);color:var(--color-contrast-medium-high)}:root{--switch-width:48px;--switch-height:24px;--switch-padding:3px;--switch-animation-duration:0.2s}.switch{display:flex;flex-shrink:0;align-items:center;width:48px;width:var(--switch-width);height:24px;height:var(--switch-height);border-radius:50em;padding:3px 0;padding:var(--switch-padding)0;position:absolute;top:65px;right:20px}@media(min-width:900px){.switch{position:relative;top:unset;right:unset}}.switch-input,.switch-label{position:absolute;left:0;top:0}.switch-input{margin:0;padding:0;opacity:0;height:0;width:0;pointer-events:none}.switch-input:checked+.switch-label{background-color:#526fe5;background-color:var(--color-primary)}.switch-input:checked+.switch-label+.switch-marker{left:calc(100% - 29px);left:calc(100% - var(--switch-height) + var(--switch-padding))}.switch-input:focus+.switch-label,.switch-input:active+.switch-label{--color-shadow:hsla(228, 74%, 61%, 0.2);box-shadow:undefined;box-shadow:0 0 0 3px var(--color-shadow)}.switch-input:focus+.switch-label,.switch-input:active+.switch-label{box-shadow:0 0 0 3px rgba(82,111,229,.2);box-shadow:0 0 0 3px var(--color-shadow)}.switch-label{width:100%;height:100%;color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#d3d3d4;background-color:var(--color-contrast-low);border-radius:inherit;z-index:1;transition:background .2s;transition:background var(--switch-animation-duration)}.switch-marker{position:relative;background-color:#fff;background-color:var(--color-contrast-high);width:20px;width:calc(var(--switch-height) - var(--switch-padding)*2);height:20px;height:calc(var(--switch-height) - var(--switch-padding)*2);border-radius:50%;z-index:2;pointer-events:none;box-shadow:0 1px 1px rgba(0,0,0,.25);left:3px;left:var(--switch-padding);transition:left .2s;transition:left var(--switch-animation-duration);will-change:left}.social-links{width:100%;opacity:.9}.social-icons,.social-icons--share{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-around;list-style:none;padding:0;margin:0}.social-icons--share{justify-content:flex-start;gap:10px 15px}.social-icons--share li{border:1px solid var(--color-contrast-medium-low);border-radius:100px;padding:12px;display:flex;justify-content:center;align-items:center}.btn-group{display:flex;flex-wrap:wrap;gap:12px 16px;margin-top:30px}.btn-secondary,.btn-primary{border:1px solid transparent;border-radius:999px;padding:.55rem 1.35rem;display:inline-block;font-size:var(--font-size-base);line-height:calc(8px + 2ex);font-weight:600;letter-spacing:.01em;transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease,color .2s ease}@media(min-width:576px){.btn-secondary,.btn-primary{padding:.6rem 1.5rem}}.btn-secondary:hover,.btn-primary:hover,.btn-secondary:active,.btn-primary:active,.btn-secondary:focus,.btn-primary:focus,.btn-secondary:focus-within,.btn-primary:focus-within{text-decoration:none}.btn-primary{background:linear-gradient(135deg,var(--color-primary),var(--color-accent));color:var(--color-surface-strong);box-shadow:var(--shadow-soft)}.btn-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-strong)}.btn-secondary{border-color:var(--color-contrast-low);background-color:transparent;color:var(--color-text)}.btn-secondary:hover{background-color:var(--color-contrast-low);transform:translateY(-2px)}.newsletter-header{color:var(--color-contrast-high);margin-bottom:0}.newsletter-desc{color:var(--color-contrast-medium-high);font-size:var(--font-size-base);line-height:calc(8px + 2ex)}#newsletter-form input{border-right:none}.pagination{list-style-type:none;display:flex;flex-wrap:wrap;justify-content:flex-start;gap:15px 10px;margin-top:50px;padding:0;font-size:var(--font-size-base);line-height:calc(8px + 2ex)}.page-link{color:var(--color-contrast-medium-high);padding:8px 15px;background-color:var(--color-surface-strong);border:1px solid var(--color-contrast-low);border-radius:999px;transition:background-color .2s ease,color .2s ease,transform .2s ease}.page-link:hover{color:var(--color-contrast-higher);background-color:var(--color-contrast-low);transform:translateY(-1px)}.page-link:hover,.page-link:active,.page-link:focus,.page-link:focus-within{text-decoration:none}.page-item.disabled>a{color:var(--color-contrast-low);cursor:unset}.page-item.active>a{background-color:var(--color-primary);color:var(--color-contrast-lower)}.draft::after{content:'Draft';color:#c90808;border:1px solid #c90808;border-radius:5px;font-size:var(--font-size-sm);line-height:calc(8px + 2ex);padding:2px 5px;font-weight:300}.clipboard-button{position:absolute;right:0;padding:2px 7px 5px;margin:5px;color:#767676;border-color:#767676;background-color:#ededed;border:1px solid;border-radius:6px;z-index:1;opacity:0;transition:.1s}.clipboard-button>svg{fill:#767676}.clipboard-button:hover{cursor:pointer;border-color:#696969;background-color:#e0e0e0}.clipboard-button:hover>svg{fill:#696969}.clipboard-button:focus{outline:0}.highlight{position:relative}.highlight:hover>.clipboard-button{opacity:1;transition:.2s}.code-language{position:relative;padding:6px 15px;border-radius:5px;background-color:#272822;color:#7f7f7f;z-index:1000;top:25px;font-size:var(--font-size-base);line-height:calc(8px + 2ex)}.highlight>pre{padding:20px}.markdown{font-size:var(--font-size-base);line-height:calc(8px + 2ex)}.markdown p>img,.markdown figure>img{max-width:100%;height:auto}.markdown figure{margin-left:0;margin-right:0}.markdown figcaption{font-size:var(--font-size-sm);line-height:calc(8px + 2ex);color:var(--color-contrast-medium);font-weight:300}@media(min-width:1200px){.toc{position:sticky;top:2rem;align-self:start;order:2;display:flex;flex-direction:column;align-items:center;height:90vh;overflow-y:scroll}}.toc-header,.toc-drop-icon{font-size:var(--font-size-sm);line-height:calc(8px + 2ex);font-weight:500;margin:0;text-align:center}.toc-contents{display:none;font-size:var(--font-size-sm);line-height:calc(8px + 2ex)}.toc-contents--active{display:block}@media(min-width:1200px){.toc-contents{display:block}.toc-contents--active{display:none}}#js-toc-toggle{display:inline-flex;align-items:center;column-gap:10px;padding:10px 20px;background-color:var(--color-contrast-lower);border-radius:20px}#js-toc-toggle:hover{cursor:pointer;color:var(--color-primary)}.page-header,.page-header--c{background:linear-gradient(135deg,var(--color-surface),var(--color-contrast-lower));padding:32px;margin:0 0 50px;border-radius:var(--radius-lg);border:1px solid var(--color-contrast-low);box-shadow:var(--shadow-soft)}.page-header--c{text-align:center}.page-header-title{margin:0;color:var(--color-contrast-high);font-weight:600;font-size:var(--font-size-lg);line-height:calc(8px + 2ex)}.page-header-desc{margin:0;margin-top:15px;color:var(--color-contrast-medium);font-weight:400;font-size:var(--font-size-base);line-height:calc(8px + 2ex)}@keyframes rise-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.hero{display:flex;flex-wrap:wrap;align-items:center;gap:3rem 5vw;position:relative;background:var(--color-surface);border:1px solid var(--color-contrast-low);border-radius:var(--radius-lg);padding:clamp(32px,4vw,60px);box-shadow:var(--shadow-soft);overflow:hidden}.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(500px 300px at 0% 0%,rgba(244,194,78,.2),transparent 65%);pointer-events:none}@media(min-width:768px){.hero{flex-wrap:nowrap}}@media(min-width:900px){.hero{padding:clamp(40px,6vw,80px)}}.hero-info{position:relative;z-index:1;display:flex;flex-direction:column;gap:16px;max-width:100%;animation:rise-in .7s ease-out both}.hero-info .hero-title{font-weight:700;margin:0;line-height:1.05;font-size:var(--font-size-xxl);line-height:calc(8px + 2ex)}@media(min-width:900px){.hero-info .hero-title{font-size:var(--font-size-xxxl);line-height:calc(8px + 2ex)}}.hero-info .hero-subtitle{color:var(--color-contrast-medium-high);font-size:var(--font-size-base);line-height:calc(8px + 2ex);max-width:40ch;margin:0}.hero-owner{display:flex;flex-direction:column;align-items:center;row-gap:20px;position:relative;z-index:1;animation:rise-in .7s ease-out .15s both}.hero-owner .hero-avatar{max-width:300px;width:100%;height:auto;border-radius:var(--radius-lg);border:1px solid var(--color-contrast-low);box-shadow:var(--shadow-soft)}@media(min-width:768px){.hero-owner .hero-avatar{width:100%;max-width:unset}}.home-section-title,.home-section-posts-title{margin-bottom:50px;font-family:var(--font-display);animation:rise-in .6s ease-out both}.home-section-title::after,.home-section-posts-title::after{background:linear-gradient(90deg,var(--color-primary),transparent);content:"";display:block;height:2px;position:relative;width:80px;top:8px}.home-section-posts-title{margin:0}.home-title-dropdown{display:flex;flex-wrap:wrap;align-items:center;gap:16px 30px;margin-bottom:50px;animation:rise-in .6s ease-out .1s both}#select-posts{font-size:var(--font-size-sm);line-height:calc(8px + 2ex);padding:.45rem 1rem;border:1px solid var(--color-contrast-low);border-radius:999px;color:var(--color-contrast-high);background-color:var(--color-surface-strong)}.see-more{margin-top:30px}.tech-stack .home-section-title,.tech-stack .home-section-posts-title{margin-bottom:30px}.tech-stack-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}.tech-stack-card{background-color:var(--color-surface);border:1px solid var(--color-contrast-low);border-radius:var(--radius-md);padding:20px 22px;box-shadow:var(--shadow-soft);transition:transform .2s ease,box-shadow .2s ease}.tech-stack-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-strong)}.tech-stack-title{margin:0 0 12px;font-weight:600;font-size:var(--font-size-md);line-height:calc(8px + 2ex)}.tech-stack-items{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}.tech-stack-item{font-size:var(--font-size-sm);line-height:calc(8px + 2ex);padding:6px 12px;border-radius:999px;background-color:var(--color-contrast-lower);border:1px solid var(--color-contrast-low);color:var(--color-contrast-high)}#contact-form{flex-direction:column;row-gap:15px;max-width:500px;margin-top:30px}#contact-form button{align-self:flex-start}.single-feature-img{display:flex}.single-feature-img img{margin:30px 0;max-width:100%;height:auto;filter:grayscale(50%)}.single-terms{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start;margin-top:20px}.single-container{max-width:900px}.single-container-post{max-width:900px}@media(min-width:1200px){.single-container-post{max-width:1180px;display:grid;grid-template-columns:1fr 15em;gap:1rem}}.single-post-contents{overflow:auto}.series{font-size:var(--font-size-base);line-height:calc(8px + 2ex);margin:2rem 0}.series-this-post{color:var(--color-primary);border:1px solid var(--color-primary);border-radius:5px;padding:.3rem;font-size:var(--font-size-sm);line-height:calc(8px + 2ex);font-weight:500;margin-left:10px}.single-next-previous{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:baseline}.single-next-previous>*{background-color:transparent;border:1px solid var(--color-contrast-medium-low);border-radius:12px;padding:10px;font-size:var(--font-size-base);line-height:calc(8px + 2ex);max-width:300px}.single-next-previous>*:hover{text-decoration:none;border:1px solid var(--color-contrast-high)}.related-posts{font-size:var(--font-size-base);line-height:calc(8px + 2ex)}.terms{display:flex;flex-wrap:wrap;justify-content:center;gap:15px 15px}.term{border:1px solid var(--color-primary);border-radius:20px;font-size:var(--font-size-sm);line-height:calc(8px + 2ex);padding:.4rem .6rem}.term:hover{text-decoration:none;border:1px solid var(--color-contrast-high);color:var(--color-contrast-high)}@media(min-width:576px){.term{padding:.5rem .7rem}}.term-count{color:var(--color-contrast-high);margin-left:2px}.error-404{margin-top:50px}.error-404 h1{margin:0}.error-404 p{margin-top:10px}.post-entry{margin:20px 0;max-width:750px;padding:22px 24px;background-color:var(--color-surface);border:1px solid var(--color-contrast-low);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);transition:transform .2s ease,box-shadow .2s ease}.post-entry:hover{transform:translateY(-3px);box-shadow:var(--shadow-strong)}.post-entry-divider{display:none}.post-list-title{font-weight:600;margin:0;font-size:var(--font-size-md);line-height:calc(8px + 2ex)}.post-list-title a{text-decoration:none;color:var(--color-contrast-high)}.post-list-title a:hover{color:var(--color-primary)}.post-list-summary{margin:10px 0 0}.post-list-meta{margin-top:10px}.post-list-dates{font-weight:400}.post-list-categories{display:inline-flex;column-gap:10px}.project-list{display:flex;flex-wrap:wrap;align-items:flex-start;gap:2rem 1rem}.project-list>*{flex:1 1 350px}.project-entry{border:1px solid var(--color-contrast-low);border-radius:var(--radius-md);background-color:var(--color-surface);box-shadow:var(--shadow-soft);max-width:750px;transition:transform .2s ease,box-shadow .2s ease}.project-entry:hover{transform:translateY(-4px);box-shadow:var(--shadow-strong)}.project-entry-img{position:relative;border-radius:var(--radius-md)var(--radius-md)0 0;min-height:1rem}.project-entry-img img{width:100%;height:20vh;object-fit:cover;border-radius:var(--radius-md)var(--radius-md)0 0;border-bottom:1px solid var(--color-contrast-low);z-index:-1;position:relative;filter:saturate(1.1)}.project-entry-type{position:absolute;top:0;right:0;padding:.2rem .4rem;background-color:var(--color-surface-strong);border-left:1px solid var(--color-contrast-low);border-bottom:1px solid var(--color-contrast-low);border-top-right-radius:var(--radius-md)}.project-entry-type a{font-size:var(--font-size-sm);line-height:calc(8px + 2ex)}.project-entry-info{padding:1.2rem}@media(min-width:576px){.project-entry-info{padding:1.5rem}}.project-entry-title{margin:0;font-weight:400}.project-entry-title a{color:var(--color-contrast-high)}.project-entry-title a:hover{text-decoration:none;color:var(--color-primary)}.project-list-meta{margin-top:10px}