body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg:#f7f7f8;--panel:#fff;--text:#0b0b0c;--muted:#54555a;--border:#e7e7ea;--accent:#0ea5e9;--btn-bg:#f1f2f4;--btn-bg-hover:#e7e8eb;--chip-bg:#f7f7f8;--chip-text:#35363a;--btn-active-bg:var(--accent);--btn-active-text:#fff}body.dark{--bg:#0b0b0c;--panel:#141416;--text:#f2f2f3;--muted:#bbbcc2;--border:#262629;--accent:#7dd3fc;--btn-bg:#1d1e21;--btn-bg-hover:#232428;--chip-bg:#1a1b1e;--chip-text:#d8d9de;--btn-active-bg:var(--accent);--btn-active-text:#0b0b0c}*{box-sizing:border-box}#root,body,html{height:100%}body{background:#f7f7f8;background:var(--bg);color:#0b0b0c;color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Inter,sans-serif;margin:0}a{color:#0ea5e9;color:var(--accent);text-decoration:none}.container{margin:0 auto;max-width:960px;padding:24px}.panel{background:#fff;background:var(--panel);border:1px solid #e7e7ea;border:1px solid var(--border);border-radius:12px;z-index:1}.stack{grid-gap:12px;display:grid;gap:12px}.row{align-items:center;display:flex;gap:12px}.btn{background:#f1f2f4;background:var(--btn-bg);border:1px solid #e7e7ea;border:1px solid var(--border);border-radius:10px;color:#0b0b0c;color:var(--text);padding:8px 12px;transition:background .2s ease,color .2s ease}.btn:hover{background:#e7e8eb;background:var(--btn-bg-hover)}.small{color:#54555a;color:var(--muted);font-size:12px}.h1{font-size:28px}.h1,.h2{font-weight:700;margin:0}.h2{font-size:18px}.grid{display:flex;flex-wrap:wrap;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.tag{background:#f7f7f8;background:var(--chip-bg);border:1px solid #e7e7ea;border:1px solid var(--border);border-radius:999px;color:#35363a;color:var(--chip-text);font-size:12px;padding:4px 8px}.nav-bar{align-items:center;display:flex;justify-content:space-between}.nav-links-desktop{display:flex;gap:12px}.nav-burger{display:none;padding:6px 8px}.nav-resume{display:inline-flex}.nav-mobile{background:#fff;background:var(--panel);border-top:1px solid #e7e7ea;border-top:1px solid var(--border);display:none;padding:8px 12px}.nav-actions{gap:8px}.nav-actions,.nav-right{align-items:center;display:flex}.nav-right{gap:16px;margin-left:auto}.nav-mobile a{display:block;padding:8px 0}@media (max-width:600px){header .nav-links-desktop{display:none}header .nav-burger{display:inline-flex}header .container{padding:12px}header .nav-mobile{display:none}header .nav-mobile.open{display:block}}.filter-rail-wrap{grid-gap:6px;align-items:center;display:grid;gap:6px;grid-template-columns:28px 1fr 28px;position:relative}.filter-rail{-webkit-overflow-scrolling:touch;background:#0000;display:inline-flex;gap:8px;overflow-x:auto;overflow-y:hidden;padding:4px 0;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;white-space:nowrap}.filter-rail::-webkit-scrollbar{display:none}.filter-rail>.btn{scroll-snap-align:start}.carousel-btn{align-items:center;background:#f1f2f4;background:var(--btn-bg);border:1px solid #e7e7ea;border:1px solid var(--border);border-radius:8px;color:#0b0b0c;color:var(--text);display:inline-flex;height:28px;justify-content:center;width:28px}.carousel-btn:hover{background:#e7e8eb;background:var(--btn-bg-hover)}.carousel-btn:disabled{opacity:.35;pointer-events:none}.filter-rail{--fade-left:0px;--fade-right:0px;-webkit-mask-image:linear-gradient(to right,#0000 0,#000 var(--fade-left),#000 calc(100% - var(--fade-right)),#0000 100%);mask-image:linear-gradient(to right,#0000 0,#000 var(--fade-left),#000 calc(100% - var(--fade-right)),#0000 100%);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;scroll-padding:6px}.project-card{display:flex;flex-direction:column;max-width:425px;min-height:360px;padding:16px}.project-thumb{background:#fff;background:var(--panel);border:1px solid #e7e7ea;border:1px solid var(--border);border-radius:6px;height:160px;margin-bottom:10px;object-fit:cover;width:100%}.card-body{display:flex;flex:1 1;flex-direction:column;min-height:0}.card-body p.small{flex-grow:1}.card-body .tags{flex-wrap:wrap;gap:4px;margin-top:8px}.hero-right{flex:0 0 auto;height:160px;margin-left:16px;width:160px}.hero-headshot{background:#fff;background:var(--panel);border:2px solid #e7e7ea;border:2px solid var(--border);border-radius:999px;height:100%;object-fit:cover;width:100%}@media (max-width:700px){.hero-row{align-items:flex-start;flex-direction:column;gap:12px}.hero-right{height:120px;margin-left:0;width:120px}}.tile-logo{background:#f7f7f8;background:var(--bg);border:1px solid #e7e7ea;border:1px solid var(--border);border-radius:6px;height:28px;object-fit:contain;width:28px}header nav a.active{color:#0ea5e9;color:var(--accent);text-decoration:underline;text-underline-offset:3px}footer.panel{font-size:.85rem;opacity:.8;text-align:center}footer a:hover{text-decoration:underline}:root{--dots-spacing:25px;--dots-size:0.5px;--dots-opacity:0.28;--dots-color:var(--text);--dots-drift:2px}body.dark{--dots-opacity:0.50;--dots-color:#fff}body:after,body:before{background:radial-gradient(circle,#0b0b0c .5px,#0000 1px),radial-gradient(circle,#0b0b0c .5px,#0000 1px);background:radial-gradient(circle,var(--dots-color) var(--dots-size),#0000 calc(var(--dots-size) + .5px)),radial-gradient(circle,var(--dots-color) var(--dots-size),#0000 calc(var(--dots-size) + .5px));background-size:50px 50px,50px 50px;background-size:calc(var(--dots-spacing)*2) calc(var(--dots-spacing)*2),calc(var(--dots-spacing)*2) calc(var(--dots-spacing)*2);content:"";inset:0;opacity:.28;opacity:var(--dots-opacity);pointer-events:none;position:fixed;z-index:0}body:before{animation:dotsPulse 7s ease-in-out infinite,dotsDriftBefore 105s linear infinite alternate;animation-delay:-3.5s,0s;background-position:0 0,25px 0;background-position:0 0,var(--dots-spacing) 0}body:after{animation:dotsPulse 7s ease-in-out infinite,dotsDriftAfter 132s linear infinite alternate;animation-delay:0s,0s;background-position:0 25px,25px 25px;background-position:0 var(--dots-spacing),var(--dots-spacing) var(--dots-spacing)}@keyframes dotsPulse{0%,to{opacity:.16;opacity:calc(var(--dots-opacity) - .12)}50%{opacity:.4;opacity:calc(var(--dots-opacity) + .12)}}@keyframes dotsDriftBefore{0%{background-position:0 0,25px 0;background-position:0 0,var(--dots-spacing) 0}to{background-position:2px 2px,23px 2px;background-position:calc(var(--dots-drift)) calc(var(--dots-drift)),calc(var(--dots-spacing) - var(--dots-drift)) calc(var(--dots-drift))}}@keyframes dotsDriftAfter{0%{background-position:0 25px,25px 25px;background-position:0 var(--dots-spacing),var(--dots-spacing) var(--dots-spacing)}to{background-position:2px 23px,23px 23px;background-position:calc(var(--dots-drift)) calc(var(--dots-spacing) - var(--dots-drift)),calc(var(--dots-spacing) - var(--dots-drift)) calc(var(--dots-spacing) - var(--dots-drift))}}@media (prefers-reduced-motion:reduce){body:after,body:before{animation:none}}header{position:-webkit-sticky;position:sticky;top:0;z-index:10}.container{position:relative;z-index:1}.tilt{perspective:800px}.tilt>*{transform:translateZ(0) rotateX(0deg) rotateY(0deg) translateY(0);transform:translateZ(0) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(calc(var(--lift, 0px)*-1));transform-style:preserve-3d;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}@media (prefers-reduced-motion:reduce){.tilt>*{transform:none!important;transition:background .18s ease,box-shadow .18s ease}}@media print{body,html{background:#fff!important;color:#000!important;padding-top:0!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.btn,.carousel-btn,.filter-rail .btn,.theme-toggle,a.btn,button.btn{background:#fff!important;border:1px solid #000!important;box-shadow:none!important;color:#000!important;text-shadow:none!important}header,nav{background:#fff!important;border-bottom:1px solid #000!important;box-shadow:none!important;display:block!important;left:0;right:0;top:0;z-index:9999!important}header,header *,nav{position:static!important}.btn.ghost,.btn:active,.btn:hover,.carousel-btn:active,.carousel-btn:hover{background:#fff!important;border-color:#000!important;color:#000!important}.btn[disabled],button[disabled]{border-color:#000!important;color:#000!important;opacity:1!important}.filter-rail{-webkit-mask-image:none!important;mask-image:none!important;overflow:visible!important}input[type=checkbox],input[type=radio]{accent-color:#000!important}.slider *,.switch *,.theme-toggle *{background:#fff!important;border-color:#000!important}.btn svg,.btn svg *,.carousel-btn svg,.carousel-btn svg *{fill:#000!important;stroke:#000!important}nav .btn{background:#fff!important;border:1px solid #000!important;color:#000!important}body:after,body:before{display:none!important}.container,.grid,.panel,.stack,footer,section{display:block!important}.grid>*,.stack>*,section>*{animation:none!important;opacity:1!important;transform:none!important;transition:none!important}.panel{background:#0000!important;border:1px solid #000!important;box-shadow:none!important;break-inside:auto!important;padding:12px!important;page-break-inside:auto!important}.project-thumb{display:block!important;height:auto!important;margin-bottom:8px!important;max-height:180px!important;object-fit:cover!important;width:100%!important}.project-thumb,.tag{background:#fff!important;border:1px solid #000!important}.caption,.muted,.small,.tag{color:#000!important}a:after{content:" (" attr(href) ")";font-size:.8em}@page{margin:1in}}
/*# sourceMappingURL=main.1cf79fdc.css.map*/