*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #14110f;--color-surface: #1f1b18;--color-text: #e8e2d8;--color-text-dim: #ada79d;--color-border: #2a2520;--color-accent: #d97757;--color-accent-hover:#e59677;--bg: var(--color-bg);--bg-alt: var(--color-surface);--surface: var(--color-surface);--border: var(--color-border);--text: var(--color-text);--text-muted: var(--color-text-dim);--accent: var(--color-accent);--accent-hover: var(--color-accent-hover);--tag-bg: #2f2520;--tag-text: #d97757;--danger: #f85149;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--radius: 8px;--max-w: 1080px}html{font-size:16px}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.7}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}.container{max-width:var(--max-w);margin:0 auto;padding:0 1.5rem}.site-nav{position:sticky;top:0;z-index:100;background:#14110feb;backdrop-filter:blur(8px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem}.nav-brand{font-weight:700;font-size:1.1rem;color:var(--text);letter-spacing:-.02em}.nav-brand:hover{color:var(--accent-hover)}.nav-links{list-style:none;display:flex;gap:1.75rem;align-items:center}.nav-links li a{font-size:.9rem;color:var(--text-muted);transition:color .2s}.nav-links li a:hover{color:var(--text)}.nav-links li a.nav-blog{color:var(--accent)}.nav-links li a.nav-blog:hover{color:var(--accent-hover)}.nav-toggle{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.hamburger{display:none;flex-direction:column;justify-content:space-between;width:22px;height:16px;cursor:pointer;padding:0;background:none;border:none;color:var(--text)}.hamburger span{display:block;width:100%;height:2px;background:currentColor;border-radius:2px;transition:transform .2s,opacity .2s}#hero{padding:5rem 1.5rem 4.5rem;text-align:center;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(47,129,247,.12) 0%,transparent 70%)}.hero-inner{max-width:720px;margin:0 auto}.eyebrow{display:inline-block;font-size:.8rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem}#hero h1{font-size:clamp(2.2rem,5vw,3.5rem);font-weight:800;letter-spacing:-.04em;line-height:1.1;color:var(--text);margin-bottom:1.25rem}.hero-tagline{font-size:1.15rem;color:var(--text-muted);max-width:580px;margin:0 auto 2rem}.hero-cta{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.btn{display:inline-block;padding:.65rem 1.4rem;border-radius:var(--radius);font-size:.9rem;font-weight:600;transition:background .2s,border-color .2s,color .2s;cursor:pointer}.btn-primary{background:var(--accent);color:var(--color-bg);border:1px solid var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--color-bg)}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent-hover)}section{padding:4rem 0}section h2{font-size:1.75rem;font-weight:700;letter-spacing:-.03em;margin-bottom:2rem;color:var(--text)}.alt-bg{background:var(--bg-alt)}.section-intro{color:var(--text-muted);margin-top:-1.25rem;margin-bottom:2rem;font-size:1rem}.about-text p{color:var(--text-muted);margin-bottom:1rem;max-width:680px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;transition:border-color .2s}.card:hover{border-color:var(--accent)}.card-icon{font-size:1.75rem;margin-bottom:.75rem}.card h3{font-size:1rem;font-weight:600;margin-bottom:.5rem;color:var(--text)}.card p{font-size:.875rem;color:var(--text-muted);line-height:1.6}.repo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem}.repo-card{display:flex;flex-direction:column;gap:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;color:var(--text);transition:border-color .2s}.repo-card:hover{border-color:var(--accent);color:var(--text)}.repo-header{display:flex;gap:.5rem;margin-bottom:.25rem}.repo-lang{font-size:.75rem;font-weight:600;padding:.2rem .6rem;border-radius:2rem}.repo-lang.powershell{background:#012456;color:#5391fe}.repo-lang.terraform{background:#1a1a35;color:#844fba}.repo-lang.python{background:#1a2e1a;color:#3fb950}.repo-lang.all{background:var(--tag-bg);color:var(--tag-text)}.repo-card h3{font-size:.95rem;font-weight:600;color:var(--accent-hover)}.repo-card p{font-size:.85rem;color:var(--text-muted);line-height:1.55;flex:1}.repo-stars{font-size:.8rem;color:var(--text-muted);margin-top:auto;padding-top:.5rem}.speaking-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.5rem}.speaking-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.speaking-icon{font-size:1.75rem;display:block;margin-bottom:.75rem}.speaking-card h3{font-size:1rem;font-weight:600;margin-bottom:.5rem;color:var(--text)}.speaking-card p{font-size:.875rem;color:var(--text-muted);line-height:1.6}.inline-link{display:inline-block;margin-top:.5rem;font-size:.85rem;font-weight:500}.contact-inner{text-align:center;max-width:540px;margin:0 auto}.contact-inner p{color:var(--text-muted);margin-bottom:2rem}.contact-links{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}footer{border-top:1px solid var(--border);padding:1.5rem 0;text-align:center}footer p{font-size:.8rem;color:var(--text-muted)}footer a{color:var(--text-muted)}footer a:hover{color:var(--accent-hover)}.blog-hero{padding:4rem 1.5rem 3rem;background:radial-gradient(ellipse 60% 50% at 50% 0%,rgba(47,129,247,.08) 0%,transparent 70%);border-bottom:1px solid var(--border);text-align:center}.blog-hero h1{font-size:clamp(1.75rem,4vw,2.75rem);font-weight:800;letter-spacing:-.04em;margin-bottom:.75rem}.blog-hero p{color:var(--text-muted);max-width:520px;margin:0 auto}.blog-list{max-width:var(--max-w);margin:3rem auto;padding:0 1.5rem;display:grid;gap:1.5rem}.blog-card{display:grid;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem;transition:border-color .2s;text-decoration:none;color:inherit}.blog-card:hover{border-color:var(--accent);color:inherit}.blog-card-meta{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:.75rem}.blog-date{font-size:.8rem;color:var(--text-muted)}.blog-tag{font-size:.75rem;font-weight:600;padding:.15rem .6rem;border-radius:2rem;background:var(--tag-bg);color:var(--tag-text)}.blog-card h2{font-size:1.2rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.5rem;color:var(--text)}.blog-card p.blog-excerpt{font-size:.9rem;color:var(--text-muted);line-height:1.65}.blog-empty{text-align:center;color:var(--text-muted);padding:4rem 1.5rem}.post-nav{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);background:var(--bg-alt)}.post-nav a{font-size:.875rem;color:var(--text-muted);display:inline-flex;align-items:center;gap:.35rem}.post-nav a:hover{color:var(--accent-hover)}.post-header{max-width:720px;margin:3rem auto 2rem;padding:0 1.5rem}.post-header h1{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;letter-spacing:-.04em;line-height:1.15;margin-bottom:1rem;color:var(--text)}.post-meta{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;color:var(--text-muted);font-size:.875rem;margin-bottom:.5rem}.post-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.post-content{max-width:720px;margin:0 auto 4rem;padding:0 1.5rem}.prose{color:var(--text-muted);line-height:1.8}.prose h2{font-size:1.4rem;font-weight:700;letter-spacing:-.03em;color:var(--text);margin:2rem 0 .75rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.prose h3{font-size:1.1rem;font-weight:600;color:var(--text);margin:1.5rem 0 .5rem}.prose p{margin-bottom:1.25rem}.prose ul,.prose ol{padding-left:1.5rem;margin-bottom:1.25rem}.prose li{margin-bottom:.4rem}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.prose a:hover{color:var(--accent-hover)}.prose code{font-family:var(--font-mono);font-size:.875em;background:var(--surface);color:var(--tag-text);padding:.15em .4em;border-radius:4px;border:1px solid var(--border)}.prose pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;overflow-x:auto;margin-bottom:1.5rem}.prose pre code{background:none;border:none;padding:0;font-size:.875rem;color:var(--text)}.prose blockquote{border-left:3px solid var(--accent);padding-left:1rem;color:var(--text-muted);font-style:italic;margin:1.5rem 0}.prose hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.prose img{max-width:100%;border-radius:var(--radius);border:1px solid var(--border)}.prose strong{color:var(--text);font-weight:600}@media(max-width:700px){.hamburger{display:flex}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;background:#14110ffa;border-bottom:1px solid var(--border);flex-direction:column;gap:0;padding:.5rem 0}.nav-links li a{display:block;padding:.75rem 1.5rem;font-size:1rem}.nav-toggle:checked~.nav-links{display:flex}.nav-toggle:checked+.hamburger span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle:checked+.hamburger span:nth-child(2){opacity:0}.nav-toggle:checked+.hamburger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.site-nav{position:relative;flex-wrap:wrap;align-items:center}}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}#hero h1{background:linear-gradient(135deg,#d97757,#e59677);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}@supports not (background-clip: text){#hero h1{color:var(--text)}}.section-label{display:block;font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}section h2{position:relative;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.repo-group{margin-bottom:2.5rem}.repo-group:last-child{margin-bottom:0}.repo-group-label{font-family:var(--font-mono);font-size:.75rem;font-weight:600;letter-spacing:.05em;color:var(--accent);margin-bottom:.75rem;text-transform:uppercase}.repo-rows{display:flex;flex-direction:column;gap:.75rem}.repo-row{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:start;background:var(--surface);border:1px solid var(--border);border-left-width:2px;border-radius:4px;padding:1rem 1.25rem;transition:border-color .2s;text-decoration:none;color:inherit}.repo-row:hover{border-color:var(--accent);color:inherit}.repo-row-lang{display:flex;align-items:center;min-width:80px;font-size:.75rem;font-weight:600;color:var(--text-muted)}.repo-row-content h3{font-size:.95rem;font-weight:600;color:var(--accent-hover);margin-bottom:.25rem}.repo-row-content p{font-size:.85rem;color:var(--text-muted);line-height:1.5;margin:0}.repo-row.lang-terraform{border-left-color:#844fba}.repo-row.lang-python{border-left-color:#3fb950}.repo-row.lang-powershell{border-left-color:#5391fe}.repo-row.lang-typescript{border-left-color:#3178c6}.repo-row.lang-javascript{border-left-color:#f1e05a}.repo-row.lang-go{border-left-color:#00add8}.repo-row.lang-csharp{border-left-color:#178600}.repo-row.lang-all{border-left-color:var(--accent)}.work-rows{display:grid;gap:1rem}.work-row{display:grid;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:1.25rem 1.5rem;transition:border-color .2s}.work-row:hover{border-color:var(--accent)}.work-row h3{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.work-row p{font-size:.875rem;color:var(--text-muted);line-height:1.6;margin-bottom:.75rem}.work-row-link{font-size:.85rem;font-weight:500;color:var(--accent)}.work-row-link:hover{color:var(--accent-hover)}.speaking-line{font-size:.95rem;color:var(--text-muted);line-height:1.7}.speaking-line a{font-weight:500}.contact-links .btn{min-width:140px}.cv-page{padding:2rem 0 4rem}.cv-header{text-align:center;padding:2rem 0 3rem;border-bottom:1px solid var(--border);margin-bottom:3rem}.cv-header h1{font-size:2.5rem;font-weight:800;letter-spacing:-.04em;color:var(--text);margin-bottom:.5rem}.cv-role{font-size:1.25rem;font-weight:600;color:var(--accent);margin-bottom:.25rem}.cv-employer{font-size:1rem;color:var(--text-muted);margin-bottom:.25rem}.cv-employer a{color:var(--text-muted)}.cv-employer a:hover{color:var(--accent-hover)}.cv-location{font-size:.95rem;color:var(--text-muted);margin-bottom:1.5rem}.cv-contact{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem 2rem;max-width:720px;margin:0 auto 1.5rem;padding:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.cv-contact-item{display:grid;grid-template-columns:auto 1fr;gap:.5rem;align-items:baseline}.cv-contact dt{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.cv-contact dd{font-size:.9rem;color:var(--text)}.cv-contact dd a{color:var(--accent)}.cv-contact dd a:hover{color:var(--accent-hover)}.cv-languages{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.cv-lang{font-size:.85rem;color:var(--text-muted);padding:.3rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:4px}.cv-section{margin-bottom:3rem}.cv-section:last-child{margin-bottom:0}.cv-summary{font-size:1rem;line-height:1.8;color:var(--text-muted);max-width:820px}.cv-downloads{display:flex;gap:1rem;justify-content:center;margin:2.5rem 0 3rem;flex-wrap:wrap}.cv-experience{display:flex;flex-direction:column;gap:2rem}.cv-job{padding-bottom:2rem;border-bottom:1px solid var(--border)}.cv-job:last-child{border-bottom:none;padding-bottom:0}.cv-job-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:.5rem}.cv-job h3{font-size:1.15rem;font-weight:600;color:var(--text)}.cv-period{font-size:.85rem;font-weight:600;color:var(--accent);font-family:var(--font-mono)}.cv-job-org{font-size:.95rem;color:var(--text-muted);margin-bottom:.75rem}.cv-job-detail{font-size:.95rem;line-height:1.7;color:var(--text-muted)}.cv-engagements{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}.cv-engagement{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.cv-engagement h3{font-size:.95rem;font-weight:600;color:var(--accent-hover);margin-bottom:.5rem}.cv-engagement p{font-size:.875rem;color:var(--text-muted);line-height:1.6;margin:0}.cv-skills-block{margin-bottom:2.5rem}.cv-skills-block:last-child{margin-bottom:0}.cv-skills-block h3{font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.cv-specializations{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem;padding:0}.cv-specializations li{font-size:.9rem;color:var(--text-muted);padding:.4rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:4px}.cv-technical-skills{display:flex;flex-direction:column;gap:1rem}.cv-skill-bar{display:grid;grid-template-columns:200px 1fr;gap:1rem;align-items:center}.cv-skill-name{font-size:.9rem;font-weight:500;color:var(--text)}.cv-skill-track{height:8px;background:var(--surface);border:1px solid var(--border);border-radius:4px;overflow:hidden}.cv-skill-fill{height:100%;width:var(--bar-fill);background:var(--accent);border-radius:3px;transition:width .3s ease}.cv-competencies{display:flex;flex-wrap:wrap;gap:.5rem}.cv-comp-tag{display:inline-block;font-size:.8rem;font-weight:500;padding:.3rem .75rem;background:var(--tag-bg);color:var(--tag-text);border-radius:2rem}.cv-certifications{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem;padding:0}.cv-cert{font-size:.9rem;color:var(--text-muted);padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:4px;display:flex;justify-content:space-between;align-items:center;gap:.5rem}.cv-cert-kind{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);padding:.2rem .5rem;background:var(--tag-bg);border-radius:2rem}.cv-speaking{display:flex;flex-direction:column;gap:1.5rem}.cv-speaking-item{padding:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.cv-speaking-item h3{font-size:1rem;font-weight:600;color:var(--accent-hover);margin-bottom:.5rem}.cv-speaking-item p{font-size:.9rem;color:var(--text-muted);line-height:1.6;margin:0 0 .25rem}.cv-speaking-metric{font-size:.85rem;font-weight:500;color:var(--accent);margin-top:.5rem}.cv-education{display:flex;flex-direction:column;gap:1.5rem}.cv-edu-item{padding:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.cv-edu-item h3{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.cv-edu-item p{font-size:.9rem;color:var(--text-muted);margin:0}@media print{nav,.site-nav,footer,.no-print{display:none!important}body{background:#fff!important;color:#000!important}.cv-header,.cv-contact,.cv-engagement,.cv-speaking-item,.cv-edu-item,.cv-specializations li,.cv-cert,.cv-lang{background:#fff!important;border-color:#ccc!important}.cv-skill-track{background:#f0f0f0!important;border-color:#ccc!important}.cv-skill-fill{background:#333!important}.cv-comp-tag{background:#f0f0f0!important;color:#333!important}.cv-downloads{display:none!important}.cv-section h2{break-before:page}.cv-section:first-of-type h2{break-before:auto}.cv-job,.cv-engagement,.cv-speaking-item{break-inside:avoid}a[href^=http]:after{content:" (" attr(href) ")";font-size:.85em;color:#666}a[href^="/"]:after{content:""}a{color:#000!important;text-decoration:underline}@page{margin:1.5cm 2cm}.cv-role,.cv-period,.cv-speaking-metric,.cv-cert-kind{color:#333!important}.cv-employer,.cv-location,.cv-job-org,.cv-job-detail,.cv-engagement p,.cv-speaking-item p,.cv-specializations li,.cv-cert{color:#444!important}.cv-contact dt{color:#666!important}.cv-contact dd{color:#000!important}.section-label{color:#666!important}h1,h2,h3,.cv-skill-name{color:#000!important}}.work-page{padding:4rem 0}.work-area{margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid var(--border)}.work-area:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}.work-area h3{font-size:1.25rem;font-weight:600;color:var(--text);margin-bottom:.5rem;letter-spacing:-.02em}.work-claim{font-size:1rem;color:var(--text-muted);margin-bottom:1rem;line-height:1.7}.evidence{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75rem}.evidence li{font-size:.9rem;color:var(--text-muted);line-height:1.6;padding-left:1.25rem;position:relative}.evidence li:before{content:"→";position:absolute;left:0;color:var(--accent);font-weight:600}.evidence a{color:var(--accent);font-weight:500;text-decoration:none}.evidence a:hover{color:var(--accent-hover);text-decoration:underline}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-variable.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}pre,code,kbd,samp{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
