*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--paper: #fbf9f8;--surface: #ffffff;--surface-sunken: #f4f0ee;--maroon: #7a2e3c;--maroon-dark: #5c222d;--maroon-light: #9e4a57;--maroon-tint: #f5eaec;--ink: #221e1d;--ink-soft: #554e4c;--ink-muted: #7d7472;--line: #e4dcda;--line-strong: #cfc4c1;--slate: #41505c;--sage: #4e6151;--clay: #8c4a32;--sand: #8a6a34;--sans: "IBM Plex Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;--gutter: 24px;--measure: 1080px}html{scroll-behavior:smooth}body{background-color:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}::selection{background:var(--maroon);color:#fff}a:focus-visible,.card:focus-visible{outline:2px solid var(--maroon);outline-offset:3px}.container{max-width:var(--measure);margin:0 auto;padding:0 var(--gutter)}nav{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--line)}nav .container{display:flex;align-items:center;justify-content:space-between;height:60px}.nav-logo{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--maroon);text-decoration:none;letter-spacing:-.02em}.nav-logo span{color:var(--ink-muted);font-weight:400}.nav-links{display:flex;gap:28px;list-style:none}.nav-links a{font-family:var(--mono);font-size:13px;color:var(--ink-soft);text-decoration:none;padding-bottom:2px;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.nav-links a:hover{color:var(--maroon);border-bottom-color:var(--maroon)}.hero{padding:88px 0 72px;background:var(--surface);border-bottom:1px solid var(--line)}.hero-eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--maroon);background:var(--maroon-tint);padding:6px 12px;margin-bottom:28px}.hero-eyebrow:before{content:"";width:7px;height:7px;background:var(--maroon);flex-shrink:0}.hero h1{font-size:clamp(38px,6.4vw,62px);font-weight:600;line-height:1.08;letter-spacing:-.03em;margin-bottom:14px}.hero h1 .name{color:var(--maroon)}.hero-subtitle{font-size:clamp(17px,2.4vw,22px);font-weight:400;color:var(--ink-soft);letter-spacing:-.01em;margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid var(--line);max-width:680px}.hero-description{max-width:620px;color:var(--ink-soft);font-size:16.5px;line-height:1.7;margin-bottom:44px}.hero-stats{display:flex;flex-wrap:wrap;border-top:2px solid var(--maroon)}.stat{display:flex;flex-direction:column;gap:4px;padding:18px 32px 0 0}.stat+.stat{padding-left:32px;border-left:1px solid var(--line)}.stat-value{font-family:var(--mono);font-size:30px;font-weight:600;color:var(--maroon);line-height:1;letter-spacing:-.02em}.stat-label{font-size:11px;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.1em}.hero-jump{display:inline-flex;align-items:center;gap:8px;margin-top:4px;font-family:var(--mono);font-size:13px;color:var(--maroon);text-decoration:none;border-bottom:1px solid var(--line-strong);padding-bottom:4px;transition:border-color .15s}.hero-jump:hover{border-bottom-color:var(--maroon)}.hero-jump svg{width:14px;height:14px}section{padding:80px 0}#homelab{background:var(--surface);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.section-label{font-family:var(--mono);font-size:12px;color:var(--maroon);text-transform:uppercase;letter-spacing:.14em;margin-bottom:14px}.section-title{font-size:clamp(26px,3.6vw,38px);font-weight:600;letter-spacing:-.025em;margin-bottom:14px}.section-description{color:var(--ink-soft);font-size:16px;max-width:640px;line-height:1.7;margin-bottom:40px;padding-bottom:28px;border-bottom:1px solid var(--line)}.app-logo{width:42px;height:42px;position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--paper)}.app-logo .abbr{font-family:var(--mono);font-size:12px;font-weight:600;color:#fff;z-index:1;letter-spacing:-.02em}.app-logo img{position:absolute;top:6px;right:6px;bottom:6px;left:6px;width:calc(100% - 12px);height:calc(100% - 12px);object-fit:contain;z-index:2}.card{background:var(--surface);border:1px solid var(--line);padding:22px;display:flex;flex-direction:column;position:relative;transition:border-color .15s}#homelab .card{background:var(--paper)}.card:hover{border-color:var(--maroon)}.card>*:last-child{margin-bottom:0}.card-header{display:flex;align-items:center;gap:14px;margin-bottom:14px}.card-title{font-size:16px;font-weight:600;color:var(--ink);letter-spacing:-.01em;line-height:1.3}.card-subtitle{font-family:var(--mono);font-size:11.5px;color:var(--ink-muted);margin-top:3px}.card-desc{font-size:14.5px;color:var(--ink-soft);line-height:1.65;margin-bottom:18px}.card-links{display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}.card-link{font-family:var(--mono);font-size:12.5px;color:var(--ink-muted);text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:color .15s}.card-link:hover{color:var(--maroon)}.card-link svg{width:12px;height:12px;flex-shrink:0}.card-link.live{color:var(--maroon);font-weight:500}.card-link.live:hover{color:var(--maroon-dark)}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}.tag{font-family:var(--mono);font-size:11px;letter-spacing:.02em;padding:3px 8px;color:#fff}.tag-maroon{background:var(--maroon)}.tag-slate{background:var(--slate)}.tag-sage{background:var(--sage)}.tag-clay{background:var(--clay)}.tag-sand{background:var(--sand)}.live-badge{display:inline-flex;align-items:center;gap:7px;align-self:flex-start;font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--maroon);background:var(--maroon-tint);padding:4px 8px;margin-bottom:14px}.live-dot{width:6px;height:6px;background:var(--maroon);flex-shrink:0}.infra-grid,.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.infra-grid .card-wide{grid-column:span 2}.projects-grid .card-full{grid-column:1 / -1}.cluster-apps{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.cluster-pill{display:flex;align-items:center;gap:8px;background:var(--surface-sunken);border:1px solid var(--line);padding:6px 11px}.cluster-pill-logo{width:20px;height:20px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cluster-pill-logo .abbr{font-family:var(--mono);font-size:9px;font-weight:600;color:var(--ink-soft)}.cluster-pill-logo img{position:absolute;top:2px;right:2px;bottom:2px;left:2px;width:calc(100% - 4px);height:calc(100% - 4px);object-fit:contain;z-index:2}.cluster-pill-name{font-family:var(--mono);font-size:12px;color:var(--ink-soft)}.emp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:18px}.emp-sub{background:var(--surface);padding:16px;display:flex;flex-direction:column}.emp-sub-title{font-size:13.5px;font-weight:600;color:var(--ink);margin-bottom:6px}.emp-sub-desc{font-size:12.5px;color:var(--ink-soft);line-height:1.6}.emp-sub-link{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11px;color:var(--maroon);text-decoration:none;margin-top:10px;align-self:flex-start;border-bottom:1px solid transparent;transition:border-color .15s}.emp-sub-link:hover{border-bottom-color:var(--maroon)}.emp-sub-link svg{width:10px;height:10px;flex-shrink:0}footer{border-top:2px solid var(--maroon);padding:32px 0;background:var(--paper)}footer .container{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px}.footer-left{font-size:14px;color:var(--ink-muted)}.footer-left a{font-family:var(--mono);font-size:13px;color:var(--maroon);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s}.footer-left a:hover{border-bottom-color:var(--maroon)}.footer-right{font-family:var(--mono);font-size:12px;color:var(--ink-muted)}.fade-up{opacity:0;transition:opacity .4s ease}.fade-up.in{opacity:1}@media(max-width:860px){.infra-grid .card-wide{grid-column:1 / -1}}@media(max-width:768px){.nav-links{gap:18px}section{padding:60px 0}.hero{padding:60px 0 56px}.hero-stats{gap:20px 0}.stat{padding-right:24px}.stat+.stat{padding-left:24px}}@media(max-width:600px){.stat{flex:1 1 100%;padding-right:0}.stat+.stat{padding-left:0;border-left:none;border-top:1px solid var(--line)}.stat-value{font-size:26px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.fade-up{opacity:1;transition:none}}
