:root{--bg: #FFFFFF;--bg-alt: #F4F8FC;--card: #FFFFFF;--card-border: #E2E9F2;--text: #0B1220;--text-muted: #55647A;--sky: #38BDF8;--cyan: #0EA5E9;--blue: #2563EB;--blue-deep: #1E3A8A;--steel: #8B9BB0;--steel-light: #D6DEE8;--navy: #0B1220;--grad-main: linear-gradient(120deg, var(--sky) 0%, var(--blue) 60%, var(--blue-deep) 100%);--grad-cool: linear-gradient(120deg, var(--steel) 0%, var(--cyan) 100%);--font-display: "Space Grotesk", "Segoe UI", sans-serif;--font-body: "Inter", "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--radius: 16px;--radius-sm: 10px;--wrap: 1160px;--header-h: 76px;--gutter: 1.5rem}@media(prefers-reduced-motion: no-preference){:root{--transition: 200ms ease}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:var(--header-h)}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased}img,svg{max-width:100%;vertical-align:middle}img{display:block;height:auto}ul,ol{margin:0 0 1em;padding-left:2rem}button{font:inherit;color:inherit}a{color:inherit}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.skip-link{position:absolute;left:-999px;top:0;background:var(--blue);color:#fff;padding:10px 16px;z-index:999;border-radius:0 0 8px 0}.skip-link:focus{left:0}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;line-height:1.15;margin:0 0 .5em;letter-spacing:-0.01em;color:var(--navy)}h1{font-size:2.5rem}h2{font-size:clamp(1.5rem,3vw,2.2rem)}h3{font-size:1.2rem}h4{font-size:1.05rem}h5,h6{font-size:1rem}.hero-text h1{font-family:"Lato",var(--font-display)}p{margin:0 0 1em;color:var(--text-muted)}.text-accent{background:linear-gradient(120deg, var(--blue) 0%, var(--sky) 100%);-webkit-background-clip:text;background-clip:text;color:rgba(0,0,0,0)}.eyebrow{font-family:var(--font-mono);font-size:.85rem;color:var(--blue);margin:0 0 .6em;letter-spacing:.02em}.container{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:24px}.wrap-narrow{max-width:760px}.section{padding:4rem 0}.section-tight{padding:1rem 0 2.5rem}.section-alt{background:var(--bg-alt)}.section-top-tight{padding-top:0}.page-head{padding-bottom:2rem}.page-head.has-hero-graphic{position:relative;overflow:hidden;background-image:url("/svg/hero-right.svg");background-repeat:no-repeat;background-position:top right;background-size:280px auto}.page-intro{color:var(--text-muted);max-width:640px}.about-lead{font-size:1.1rem;color:var(--text-muted);text-align:center}.section-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.link-more{font-family:var(--font-display);font-weight:600;text-decoration:none;color:var(--blue);white-space:nowrap}.link-more:hover{color:var(--sky)}.card-grid{display:grid;grid-template-columns:1fr;gap:var(--gutter)}@media(min-width: 576px){.card-grid{grid-template-columns:repeat(2, 1fr)}}@media(min-width: 992px){.card-grid{grid-template-columns:repeat(3, 1fr)}}.empty-state{grid-column:1/-1;color:var(--text-muted);font-family:var(--font-mono)}.contact-band{background:var(--bg-alt);border-top:1px solid var(--card-border);border-bottom:1px solid var(--card-border)}.contact-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--gutter)}@media(max-width: 860px){.contact-inner{flex-direction:column;text-align:center}}.contact-text h2{color:var(--navy)}.contact-text p{color:var(--text-muted);max-width:460px}@media(max-width: 860px){.contact-text p{max-width:none}}.btn{display:inline-block;padding:.85em 1.6em;border:1px solid rgba(0,0,0,0);border-radius:999px;font-family:var(--font-display);font-weight:600;font-size:.95rem;line-height:1.6;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;transition:transform var(--transition),box-shadow var(--transition),opacity var(--transition),border-color var(--transition),color var(--transition)}.btn-primary{background:var(--grad-main);color:#fff;box-shadow:0 10px 24px -8px rgba(37,99,235,.45)}.btn-primary:hover,.btn-primary:focus-visible{color:#fff;transform:translateY(-2px);box-shadow:0 14px 28px -6px rgba(37,99,235,.55)}.btn-ghost{background:#fff;color:var(--text);border-color:var(--card-border)}.btn-ghost:hover,.btn-ghost:focus-visible{border-color:var(--blue);color:var(--blue)}.site-header{position:sticky;top:0;z-index:100;background:var(--bg);border-bottom:1px solid var(--card-border)}.header-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;min-height:var(--header-h);padding-block:10px}.logo{display:flex;align-items:center;text-decoration:none;line-height:0}.logo-img{display:block;flex-shrink:0;height:56px;width:155px;max-width:none;max-height:56px}.nav-toggle{display:flex;flex-direction:column;gap:5px;padding:8px;background:none;border:none;cursor:pointer}.nav-toggle span{width:22px;height:2px;background:var(--navy);border-radius:2px;transition:transform var(--transition),opacity var(--transition)}.nav-toggle[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.main-nav{flex-basis:100%;padding:1.5rem 0 1rem}.js .main-nav:not(.is-open){display:none}.main-nav ul{display:flex;flex-direction:column;gap:1.25rem;margin:0;padding:0;list-style:none}.nav-link{position:relative;padding:0 0 4px;font-family:var(--font-display);font-weight:500;font-size:1.1rem;color:var(--text-muted);text-decoration:none;transition:color var(--transition)}.nav-link:hover,.nav-link.is-active{color:var(--navy)}.nav-link.is-active::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--grad-main);border-radius:2px}@media(min-width: 860.02px){.nav-toggle{display:none}.main-nav{display:block !important;flex-basis:auto;margin-left:auto;padding:0}.main-nav ul{flex-direction:row;gap:2rem}.nav-link{font-size:1rem}}.hero{position:relative;overflow:hidden;padding:3.5rem 0 4.5rem;background-color:var(--bg-alt);background-image:url("/svg/hero-right.svg"),url("/svg/hero-left.svg");background-repeat:no-repeat,no-repeat;background-position:right center,left bottom;background-size:auto 100%,250px}@media(max-width: 860px){.hero{background-image:linear-gradient(rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.75)),url("/svg/hero-right.svg"),url("/svg/hero-left.svg");background-repeat:no-repeat,no-repeat,no-repeat;background-position:center,right center,left bottom;background-size:100% 100%,auto 100%,250px}}.hero-text{max-width:800px}.hero-lead{color:var(--text-muted);font-size:1.05rem;max-width:480px}.hero-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:1rem;margin-top:1.8rem}.feature-row{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:1.8rem 3rem 1.6rem}.feature-chip{display:flex;align-items:center;padding-left:2rem}.feature-chip:first-child{padding-left:0}.feature-chip svg{display:block;height:75px;width:auto}@media(max-width: 550px){.feature-row{display:grid;grid-template-columns:repeat(2, max-content);justify-content:center;gap:1.2rem 2rem;margin-inline:0}.feature-chip{justify-content:center;padding-left:0}}.contact-pill{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;width:fit-content;margin:0 auto 1.6rem;padding:.7em 1.3em;background:var(--navy);border-radius:999px;font-family:var(--font-mono);font-size:.82rem}.contact-pill a{display:inline-flex;align-items:center;gap:.4rem;color:#fff;text-decoration:none;transition:color var(--transition)}.contact-pill a:hover{color:var(--sky)}.contact-pill svg{width:15px;height:15px}@media(max-width: 520px){.contact-pill{font-size:.72rem;padding:.6em 1em}}@media(max-width: 450px){.contact-pill{width:auto;margin-inline:0;padding:0;gap:.5rem;flex-direction:column;align-items:stretch;background:none}.contact-pill a{justify-content:center;padding:.7em 1.3em;background:var(--navy);border-radius:999px;transition:background var(--transition)}.contact-pill a:hover{background:var(--blue-deep);color:#fff}.contact-pill .pill-sep{display:none}}.pill-sep{color:rgba(255,255,255,.3)}.card{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);box-shadow:0 4px 16px -8px rgba(11,18,32,.08);transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition)}.card:hover{transform:translateY(-4px);border-color:var(--blue);box-shadow:0 16px 32px -12px rgba(37,99,235,.25)}.card-link{display:flex;flex-direction:column;flex:1;color:inherit;text-decoration:none}.card-top{height:6px}.card-top-article{background:var(--grad-main)}.card-top-portfolio{background:var(--grad-cool)}.card-cover{height:160px;background-size:cover;background-position:center}.card-body{flex:1 1 auto;padding:1.4rem;background:var(--card)}.card-body h3{margin-bottom:.4em}.card-body p{font-size:.95rem;margin-bottom:.8em}.card-date{font-family:var(--font-mono);font-size:.78rem;color:var(--blue)}.tag-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}.tag{padding:.3em .7em;font-family:var(--font-mono);font-size:.72rem;background:#eef3fa;color:var(--text-muted);border:1px solid var(--card-border);border-radius:999px}.tag-mono{background:#e8f1fd;color:var(--blue);border-color:#cfe2fa}.back-link{display:inline-block;margin-bottom:1.2rem;font-family:var(--font-mono);font-size:.85rem;color:var(--text-muted);text-decoration:none}.back-link:hover{color:var(--blue)}.article-meta{font-family:var(--font-mono);font-size:.85rem;color:var(--text-muted);margin-bottom:1rem}.project-cover{height:320px;margin:1.5rem 0;background-size:cover;background-position:center;border-radius:var(--radius)}.project-meta{display:flex;flex-wrap:wrap;gap:2rem;padding:1rem 0;margin-bottom:.5rem;border-top:1px solid var(--card-border);border-bottom:1px solid var(--card-border)}.project-meta>div{display:flex;flex-direction:column;gap:.2rem}@media(max-width: 520px){.project-meta{gap:1.2rem}}.meta-label{font-family:var(--font-mono);font-size:.72rem;color:var(--blue);text-transform:uppercase;letter-spacing:.05em}.project-links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2rem}.prose{margin-top:2rem}.prose :is(h2,h3){margin-top:1.6em}.prose p,.prose li{color:var(--text)}.prose a{color:var(--blue)}.prose li{margin-bottom:.3em}.prose code{padding:.15em .4em;font-family:var(--font-mono);font-size:.9em;background:var(--bg-alt);border:1px solid var(--card-border);border-radius:4px}.prose pre{margin:0 0 1.2em;padding:1.2rem;overflow-x:auto;background:var(--bg-alt);border:1px solid var(--card-border);border-radius:var(--radius-sm)}.prose pre code{padding:0;background:none;border:none}.prose blockquote{margin:1.5em 0;padding:.2em 1.2em;border-left:3px solid var(--blue);color:var(--text-muted)}.prose img{margin:1.5em 0;border-radius:var(--radius-sm)}.prose hr{border:0;border-top:1px solid var(--card-border);margin:2em 0}.prose table{width:100%;margin-bottom:1.2em;border-collapse:collapse;font-size:.95rem}.prose th,.prose td{padding:.6em .8em;text-align:left;border-bottom:1px solid var(--card-border)}.prose th{font-family:var(--font-display);color:var(--navy)}.site-footer{padding:2.5rem 0;color:var(--text-muted);font-size:.88rem}.footer-inner{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:1.5rem;text-align:center}.footer-logo{flex-shrink:0;height:40px;width:111px;max-width:none;max-height:40px;opacity:.85}.footer-meta{display:flex;flex-direction:column;align-items:center}.footer-meta p{margin:0}.footer-links{display:flex;justify-content:center;gap:1rem}.footer-links a{color:var(--text-muted);text-decoration:none}.footer-links a:hover{color:var(--blue)}.pagination{display:flex;flex-wrap:wrap;justify-content:center;margin:2.5rem 0 0;padding:0;list-style:none}.pagination .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;margin:0 4px;font-family:var(--font-mono);font-size:.85rem;color:var(--text-muted);text-decoration:none;background:var(--card);border:1px solid var(--card-border);border-radius:999px;transition:border-color var(--transition),color var(--transition),background var(--transition)}.pagination .page-item:not(.disabled) .page-link:hover{border-color:var(--blue);color:var(--blue)}.pagination .page-item.active .page-link{background:var(--grad-main);border-color:rgba(0,0,0,0);color:#fff}.pagination .page-item.disabled .page-link{opacity:.4;cursor:not-allowed}