:root{color-scheme:dark;--bg: #07090f;--bg-soft: #0b1019;--text: #f5f8fb;--muted: #93a0b4;--line: rgba(255, 255, 255, .1);--glass: rgba(10, 16, 27, .58);--cyan: #8be9ff;--cyan-strong: #61dafb;--violet: #9b87ff;--max: 1220px;--pad: clamp(1.25rem, 4vw, 4rem)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 68% 20%,rgba(50,118,160,.12),transparent 28rem),radial-gradient(circle at 20% 70%,rgba(88,68,180,.08),transparent 34rem),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.14;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:linear-gradient(to bottom,black,transparent 75%);mask-image:linear-gradient(to bottom,black,transparent 75%)}a{color:inherit;text-decoration:none}#webgl{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}#app{position:relative;z-index:2}.topbar{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:1rem var(--pad);border-bottom:1px solid rgba(255,255,255,.05);background:#07090f94;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand{display:inline-flex;align-items:center;gap:.7rem;font-weight:800;letter-spacing:.14em;font-size:.8rem}.brand__mark{display:flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;border-radius:6px;border:1px solid rgba(56,189,248,.45);background:radial-gradient(circle at center,#0f172af2,#020617fa);box-shadow:0 0 12px #38bdf838 inset,0 0 10px #38bdf82e;overflow:hidden;transition:border-color .25s ease,box-shadow .25s ease,transform .2s ease}.brand:hover .brand__mark{border-color:#38bdf8;box-shadow:0 0 18px #38bdf866 inset,0 0 14px #38bdf859;transform:scale(1.05)}#brand-core{width:38px;height:38px;display:block}.nav{display:flex;align-items:center;gap:clamp(1rem,2.5vw,2.4rem);color:#c4ccd8;font-size:.84rem}.nav a{transition:color .16s ease,border-color .16s ease,background .16s ease}.nav a:hover{color:#fff}.nav__cta{padding:.6rem .9rem;border:1px solid rgba(139,233,255,.22);background:#8be9ff0f}.section{width:min(calc(100% - var(--pad) * 2),var(--max));margin:0 auto}.hero{min-height:100svh;display:flex;align-items:center;position:relative;padding-top:7rem;padding-bottom:4rem}.hero__content{max-width:790px}.eyebrow{margin:0 0 1.2rem;color:var(--cyan);font-size:.74rem;font-weight:800;letter-spacing:.22em}.hero h1,.section-heading h2,.split-section h2,.contact-section h2{margin:0;text-wrap:balance;letter-spacing:-.055em;line-height:.95}.hero h1{max-width:880px;font-size:clamp(3.3rem,8.4vw,8rem);font-weight:780}.hero h1 span{color:transparent;-webkit-text-stroke:1px rgba(203,225,241,.68)}.hero__lead{max-width:650px;margin:2rem 0 0;color:#aab5c4;font-size:clamp(1rem,1.4vw,1.25rem)}.hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.1rem}.button{display:inline-flex;min-height:3rem;align-items:center;justify-content:center;padding:.8rem 1.2rem;border:1px solid transparent;font-weight:700;font-size:.88rem;transition:transform .16s ease,background .16s ease,border-color .16s ease}.button:hover{transform:translateY(-2px)}.button--primary{color:#061017;background:var(--cyan);box-shadow:0 10px 40px #61dafb24}.button--primary:hover{background:#b4f3ff}.button--ghost{border-color:#ffffff24;background:#ffffff08}.hero__meta{display:flex;flex-wrap:wrap;gap:1rem 2.2rem;margin-top:2rem;color:var(--muted);font-size:.78rem}.status{display:inline-flex;align-items:center;gap:.5rem}.status i{width:.48rem;height:.48rem;border-radius:999px;background:#8bffba;box-shadow:0 0 16px #8bffbaa6}.scroll-hint{position:absolute;right:0;bottom:2.5rem;display:flex;align-items:center;gap:.8rem;color:#617086;font-size:.62rem;letter-spacing:.25em;transform:rotate(90deg) translate(40%);transform-origin:right bottom}.scroll-hint div{width:4rem;height:1px;background:#617086}.content-section{padding-top:8rem;padding-bottom:8rem}.section-heading{display:grid;grid-template-columns:1fr minmax(280px,.65fr);column-gap:4rem;align-items:end;margin-bottom:3rem}.section-heading .eyebrow{grid-column:1 / -1}.section-heading h2,.split-section h2,.contact-section h2{font-size:clamp(2.7rem,6vw,5.5rem)}.section-heading>p:last-child{margin:0;color:var(--muted)}.services-grid,.projects-grid{display:grid;gap:1rem}.services-grid{grid-template-columns:repeat(3,1fr)}.projects-grid{grid-template-columns:repeat(2,1fr)}.glass-card{position:relative;overflow:hidden;border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.glass-card:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(120deg,rgba(139,233,255,.08),transparent 32%,transparent 70%,rgba(155,135,255,.05));opacity:0;transition:opacity .18s ease}.glass-card:hover:before{opacity:1}.service-card{min-height:240px;padding:1.4rem}.service-card__index{color:#63758c;font-size:.72rem}.service-card h3{margin:4.2rem 0 .7rem;font-size:1.55rem}.service-card p,.project-card p,.about-copy p,.contact-section>p:not(.eyebrow){color:var(--muted)}.project-card{min-height:330px;padding:1.5rem;display:flex;flex-direction:column}.project-card__topline{display:flex;justify-content:space-between;gap:1rem;color:#77879b;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em}.project-card h3{margin:3.8rem 0 .7rem;font-size:clamp(1.8rem,3vw,2.6rem);letter-spacing:-.04em}.project-status{display:inline-flex;align-items:center}.project-status--live{color:#8bffba}.project-status--prototype{color:#ffd48b}.project-status--lab{color:#bbadff}.tags,.skills{display:flex;flex-wrap:wrap;gap:.45rem}.tags{margin-top:auto;padding-top:1rem}.tags span,.skills span{border:1px solid rgba(255,255,255,.09);background:#ffffff06;color:#9facbd;padding:.42rem .62rem;font-size:.68rem}.project-link{align-self:flex-start;margin-top:1.2rem;color:var(--cyan);font-size:.78rem}.project-link--muted{color:#5f6f83}.project-link--internal{color:var(--cyan-strong);font-weight:600;display:inline-flex;align-items:center;gap:.3rem}.project-link--internal:hover{text-decoration:underline;color:#fff}.homelab-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem;margin-top:2.5rem}.homelab-stat-card{padding:1.6rem;display:flex;flex-direction:column}.homelab-stat-card__number{font-size:2.2rem;font-weight:800;letter-spacing:-.04em;background:linear-gradient(135deg,var(--cyan-strong),var(--violet));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.3rem}.homelab-stat-card__label{font-size:.85rem;font-weight:700;color:var(--text);margin-bottom:.6rem}.homelab-stat-card p{color:var(--muted);font-size:.88rem;line-height:1.45;margin:0}.homelab-pillars-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem;margin-top:2rem}.homelab-pillar{padding:1.8rem;display:flex;flex-direction:column}.homelab-pillar__header{margin-bottom:1.2rem}.homelab-pillar__tag{display:inline-block;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--cyan);margin-bottom:.4rem}.homelab-pillar h3{font-size:1.4rem;margin:0;letter-spacing:-.02em}.homelab-pillar ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.9rem}.homelab-pillar li{font-size:.88rem;color:var(--muted);line-height:1.5;position:relative;padding-left:1.1rem}.homelab-pillar li:before{content:"•";position:absolute;left:0;color:var(--cyan-strong);font-weight:700}.homelab-pillar li strong{color:#e2e8f0}.homelab-pillar code{background:#ffffff14;padding:.15rem .35rem;border-radius:4px;font-size:.82rem;color:var(--cyan)}.homelab-audit-card{margin-top:2rem;padding:2rem}.homelab-audit-card__header{margin-bottom:1.5rem}.homelab-audit-card__header h3{font-size:1.5rem;margin:.3rem 0 0}.homelab-audit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem}.homelab-audit-item{display:flex;flex-direction:column;gap:.4rem}.audit-badge{display:inline-flex;align-items:center;align-self:flex-start;padding:.2rem .55rem;border-radius:999px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.3rem}.audit-badge--ok{background:#8bffba1f;color:#8bffba;border:1px solid rgba(139,255,186,.3)}.homelab-audit-item h4{font-size:1.05rem;margin:0;color:var(--text)}.homelab-audit-item p{font-size:.86rem;color:var(--muted);line-height:1.45;margin:0}.case-study-page{padding:8rem var(--pad) 5rem;min-height:100vh}.case-study-container{max-width:960px;margin:0 auto}.case-study-header{margin-bottom:3.5rem}.back-link{display:inline-flex;align-items:center;color:var(--cyan);font-size:.85rem;font-weight:600;margin-bottom:1.8rem;transition:transform .2s ease,color .2s ease}.back-link:hover{color:#fff;transform:translate(-4px)}.case-study-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem;flex-wrap:wrap;gap:.8rem}.read-time{font-size:.78rem;color:var(--muted);font-weight:600}.case-study-title{font-size:clamp(2.2rem,4.5vw,3.4rem);letter-spacing:-.04em;line-height:1.15;margin:.5rem 0 1.2rem;color:var(--text)}.case-study-lead{font-size:clamp(1.05rem,2vw,1.25rem);color:var(--muted);line-height:1.6;margin-bottom:1.8rem}.case-study-tags{display:flex;flex-wrap:wrap;gap:.5rem}.case-study-tags span{background:#8be9ff14;border:1px solid rgba(139,233,255,.2);color:var(--cyan);font-size:.72rem;padding:.35rem .65rem;border-radius:4px}.case-study-section{margin-bottom:4rem}.case-study-section h2{font-size:1.8rem;letter-spacing:-.03em;margin-bottom:1.2rem;color:var(--text);border-bottom:1px solid var(--line);padding-bottom:.6rem}.case-study-section p{font-size:1.02rem;line-height:1.7;color:#cbd5e1;margin-bottom:1.2rem}.case-study-section strong{color:#fff}.diagram-card{padding:1.8rem;margin:2rem 0;overflow-x:auto}.diagram-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--cyan);margin-bottom:1rem;font-weight:700}.ascii-diagram{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.76rem;line-height:1.35;color:#a5f3fc;background:#0000008c;padding:1.2rem;border-radius:6px;border:1px solid rgba(255,255,255,.05);margin:0;overflow-x:auto}.case-study-list{list-style:none;padding:0;margin:1.5rem 0;display:flex;flex-direction:column;gap:1.1rem}.case-study-list li{font-size:.98rem;color:#cbd5e1;line-height:1.6;position:relative;padding-left:1.4rem}.case-study-list li:before{content:"✔";position:absolute;left:0;color:#8bffba;font-size:.85rem}.case-study-footer{padding:2.4rem;margin-top:4rem;display:flex;justify-content:space-between;align-items:center;gap:2rem;flex-wrap:wrap}.case-study-footer h3{font-size:1.4rem;margin:0 0 .4rem}.case-study-footer p{margin:0;font-size:.92rem;color:var(--muted)}.case-study-footer__actions{display:flex;gap:.9rem;flex-wrap:wrap}.split-section{display:grid;grid-template-columns:1fr 1fr;gap:5rem;padding-top:8rem;padding-bottom:9rem}.about-copy{padding-top:3.2rem}.about-copy p{margin-top:0;font-size:clamp(1.1rem,2vw,1.35rem)}.skills{margin-top:2rem}.contact-section{min-height:78svh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding-top:7rem;padding-bottom:7rem}.contact-section>p:not(.eyebrow){max-width:650px;font-size:1.05rem}.contact-section .button{margin-top:1.4rem}footer{display:flex;justify-content:space-between;gap:1rem;padding:1.2rem var(--pad) 2rem;color:#5b6878;font-size:.72rem}.no-webgl #webgl{display:none}@media(max-width:900px){.nav a:not(.nav__cta){display:none}.hero{align-items:flex-start;padding-top:9rem}.hero__content{max-width:100%}.hero h1{font-size:clamp(3rem,15vw,6rem)}.hero__lead{max-width:34rem}.scroll-hint{display:none}.section-heading{display:block}.section-heading h2{margin-bottom:1.4rem}.services-grid,.projects-grid,.split-section{grid-template-columns:1fr}.split-section{gap:1rem}.about-copy{padding-top:0}}@media(max-width:600px){:root{--pad: 1.05rem}.topbar{padding-top:.8rem;padding-bottom:.8rem}.brand{font-size:.72rem}.hero{min-height:100svh}.hero h1{font-size:clamp(2.75rem,14vw,4.5rem)}.content-section,.split-section{padding-top:5.5rem;padding-bottom:5.5rem}.project-card{min-height:300px}footer{flex-direction:column}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.homelab-page .case-study-container{max-width:1180px}.homelab-page .case-study-header{max-width:940px}.homelab-page .lab-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:2rem}.homelab-page .lab-summary{padding:1.5rem}.homelab-page .lab-summary strong{display:block;font-size:2rem;color:var(--cyan);margin:.8rem 0}.homelab-page .lab-summary p{color:var(--muted);line-height:1.65;font-size:.9rem;margin:0}.homelab-page .lab-index{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:4rem}.homelab-page .lab-index a{border:1px solid var(--line);border-radius:5px;padding:.55rem .8rem;font-size:.78rem;color:var(--muted)}.homelab-page .lab-index a:hover{color:var(--cyan);border-color:var(--cyan)}.homelab-page section[id]{scroll-margin-top:7rem}.homelab-page .lab-service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.homelab-page .lab-service{padding:1.4rem;border-top:2px solid rgba(139,233,255,.28)}.homelab-page .lab-role{font-size:.7rem;color:var(--cyan);text-transform:uppercase;letter-spacing:.09em}.homelab-page .lab-service h3,.homelab-page .lab-flow h3{font-size:1.12rem;margin:.75rem 0;color:var(--text)}.homelab-page .lab-service p,.homelab-page .lab-flow p{font-size:.9rem;line-height:1.75;margin:0}.homelab-page .lab-flows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.5rem 0}.homelab-page .lab-flow{padding:1.5rem}.homelab-page .lab-flow .lab-route{font-family:ui-monospace,monospace;color:var(--cyan);font-size:.85rem;margin-bottom:1rem}.homelab-page .lab-note{border-left:2px solid var(--cyan);padding:.8rem 1rem;background:#8be9ff0a}.homelab-page .lab-lifecycle{padding:0;list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;counter-reset:phase}.homelab-page .lab-lifecycle li{padding:1.2rem;border:1px solid var(--line);border-radius:8px;counter-increment:phase}.homelab-page .lab-lifecycle li:before{content:"0" counter(phase);display:block;color:var(--cyan);font-family:ui-monospace,monospace;margin-bottom:.8rem}.homelab-page .lab-lifecycle strong{display:block;margin-bottom:.7rem}.homelab-page .lab-lifecycle span{color:var(--muted);font-size:.88rem;line-height:1.65}.homelab-page a:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}@media(max-width:900px){.homelab-page .lab-service-grid,.homelab-page .lab-lifecycle{grid-template-columns:repeat(2,minmax(0,1fr))}.homelab-page .lab-overview{grid-template-columns:1fr}}@media(max-width:600px){.homelab-page .lab-service-grid,.homelab-page .lab-flows,.homelab-page .lab-lifecycle{grid-template-columns:1fr}.homelab-page .lab-index{margin-bottom:2.5rem}.homelab-page .case-study-section h2{font-size:1.5rem}}
