:root{--bg: oklch(100% 0 0);--surface: oklch(96.5% 0 0);--surface-strong: oklch(94% 0 0);--fg: oklch(28% 0 0);--muted: oklch(62% 0 0);--border: oklch(85% 0 0);--accent: oklch(74% .16 56);--accent-ink: oklch(54% .13 52);--shadow: 0 22px 60px color-mix(in oklab, black 10%, transparent);--radius-xl: 28px;--radius-lg: 22px;--radius-md: 16px;--container: 1180px;--font-display: "Space Grotesk", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-body);background:radial-gradient(circle at 50% 24%,#fffffffa 0,#fafaf8fa 40%,#f4f4f2f5),linear-gradient(180deg,#fff,#f8f8f6);color:var(--fg);line-height:1.55;text-rendering:optimizeLegibility;overflow-x:hidden;position:relative}.grid-morph-field{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;display:grid;grid-template-columns:repeat(var(--grid-columns),18px);grid-auto-rows:18px;gap:8px;justify-content:center;align-content:center;padding:1rem;pointer-events:none;opacity:.6;-webkit-mask-image:radial-gradient(circle at center,#0000002e,#000000c7 42%,#000000f5);mask-image:radial-gradient(circle at center,#0000002e,#000000c7 42%,#000000f5)}.grid-cell{position:relative;display:block;width:18px;height:18px;border:1px solid rgba(15,15,15,.1);border-radius:3px;background:#ffffff57;transition:transform .14s cubic-bezier(.22,1,.36,1),border-color .18s ease,background-color .18s ease,opacity .18s ease}.grid-cell.is-active{border-color:#1d1d1d24;background:#ffffffe0;transform:scale(.9)}.grid-cell.is-strong{border-color:#1d1d1d2e;background:#fffffff5;box-shadow:0 0 0 1px #ffffffb8}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:3px solid color-mix(in oklab,var(--accent) 70%,white);outline-offset:3px;border-radius:10px}.page-shell{min-height:100vh;position:relative;z-index:1;isolation:isolate}.site-nav{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:color-mix(in oklab,white 85%,transparent);border-bottom:1px solid color-mix(in oklab,var(--border) 70%,white)}.nav-inner,.section-inner,.footer-inner{width:min(var(--container),calc(100% - 2rem));margin:0 auto}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:78px}.brand-mark,h1,h2,h3{font-family:var(--font-display);color:var(--fg)}.brand-mark{font-size:1rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.nav-links{display:flex;gap:1.25rem;flex-wrap:wrap;align-items:center;font-size:.92rem;color:var(--muted)}.nav-links a,.contact-switch-trigger,.contact-link-shell a{position:relative;overflow:hidden;transition:color .22s ease,border-color .22s ease,background-color .22s ease,transform .22s ease;z-index:0}.nav-links a:before,.contact-switch-trigger:before,.contact-link-shell a:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,color-mix(in oklab,var(--accent) 82%,white),color-mix(in oklab,var(--accent) 58%,white));transform:translate(-102%);transition:transform .26s cubic-bezier(.22,1,.36,1);z-index:-1}.nav-links a{padding:.4rem .7rem;border-radius:999px}.nav-links a:hover{color:#fff;transform:translateY(-1px)}.nav-links a:hover:before,.contact-switch-trigger:hover:before,.contact-link-shell a:hover:before{transform:translate(0)}.hero{padding:clamp(4.5rem,8vw,8rem) 0 2rem}.hero-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.9fr);gap:2rem;align-items:center}.eyebrow,.section-label{display:inline-flex;align-items:center;gap:.55rem;margin-bottom:1rem;color:var(--accent-ink);font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.eyebrow:before,.section-label:before{content:"";width:.9rem;height:.9rem;border-radius:999px;background:var(--accent)}.hero-title{max-width:12ch;margin:0;font-size:clamp(3.4rem,8vw,6.7rem);line-height:.93;letter-spacing:-.03em}.hero-subtitle{margin-top:1rem;max-width:44rem;font-size:clamp(1.15rem,2vw,1.5rem);line-height:1.32;color:color-mix(in oklab,var(--fg) 88%,white)}.hero-body{margin-top:1.4rem;max-width:62ch;color:var(--muted)}.hero-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2rem}.button,.button-secondary,.project-summary-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.88rem 1.2rem;border-radius:999px;border:1px solid var(--border);font:inherit;position:relative;overflow:hidden;transition:color .22s ease,border-color .22s ease,background-color .22s ease,transform .22s ease;z-index:0}.button:before,.button-secondary:before,.project-summary-toggle:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,color-mix(in oklab,var(--accent) 82%,white),color-mix(in oklab,var(--accent) 58%,white));transform:translate(-102%);transform-origin:left;transition:transform .26s cubic-bezier(.22,1,.36,1);z-index:-1}.button>*,.button-secondary>*,.project-summary-toggle>*{position:relative;z-index:1}.button{border-color:color-mix(in oklab,var(--accent) 35%,var(--border));background:color-mix(in oklab,white 72%,var(--accent) 28%);color:var(--accent-ink)}.button-secondary,.project-summary-toggle{background:#fffc}.button:hover,.button-secondary:hover,.project-summary-toggle:hover{color:#fff;border-color:color-mix(in oklab,var(--accent) 82%,black 8%);transform:translateY(-1px)}.button:hover:before,.button-secondary:hover:before,.project-summary-toggle:hover:before{transform:translate(0)}.hero-portrait-wrap{display:grid;gap:1rem}.hero-portrait-frame,.hero-aside,.section,.project-card,.skill-card,.contact-switch,.footer-inner{border-radius:var(--radius-xl);background:#ffffffc7;box-shadow:var(--shadow);border:1px solid color-mix(in oklab,var(--border) 78%,white)}.hero-portrait-frame img{display:block;width:100%;border-radius:var(--radius-xl)}.hero-aside{padding:1.35rem}.proof-list{display:grid;gap:1rem}.proof-item{display:grid;gap:.35rem}.proof-kicker{color:var(--accent-ink);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.proof-value,.section-copy,.project-summary,.detail-block p,.contact-state,.footer-inner{color:var(--muted)}.section{padding:2rem 0;background:transparent;box-shadow:none;border:none}.split-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,34ch);gap:2rem;margin-bottom:2rem}.section-heading{margin:0;font-size:clamp(2.2rem,4vw,4rem);line-height:.98}.project-list,.contact-grid,.group-grid{display:grid;gap:1rem}.reveal-card{--reveal-shift: -96px;opacity:0;transform:translate3d(var(--reveal-shift),0,0) rotate(-1.5deg);filter:blur(10px);transition:opacity .72s cubic-bezier(.22,1,.36,1),transform .82s cubic-bezier(.22,1,.36,1),filter .72s cubic-bezier(.22,1,.36,1);will-change:transform,opacity,filter}.reveal-card[data-reveal=right]{--reveal-shift: 96px;transform:translate3d(var(--reveal-shift),0,0) rotate(1.5deg)}.reveal-card.is-visible{opacity:1;transform:translateZ(0) rotate(0);filter:blur(0)}.project-card,.skill-card,.contact-switch{padding:1.5rem}.project-head{display:flex;justify-content:space-between;gap:1rem}.project-title{margin:0;font-size:1.45rem}.project-meta,.link-list,.tech-list{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.8rem}.project-tag,.chip,.tech-pill{display:inline-flex;align-items:center;gap:.45rem;border-radius:999px;padding:.5rem .8rem;background:color-mix(in oklab,var(--accent) 13%,white);color:var(--accent-ink)}.project-details{margin-top:1rem}.project-summary-toggle{width:100%;justify-content:space-between;cursor:pointer}.project-body{margin-top:1rem;display:grid;gap:1rem}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.detail-block{padding:1rem;border-radius:var(--radius-md);background:color-mix(in oklab,white 88%,var(--surface-strong) 12%)}.skill-card h3{margin-top:0}.tech-logo{display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border-radius:999px;background:#ffffffb3;font-size:.8rem;font-weight:700}.tech-logo img,.tech-logo svg,.contact-logo svg{width:1rem;height:1rem;object-fit:contain}.tech-logo-raster{border-radius:999px}.tech-logo-raster-monochrome{filter:grayscale(1) brightness(.63) contrast(1.08)}.tech-logo svg,.contact-logo svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.contact-logo svg path:first-child:only-child,.contact-logo svg path:first-child:last-child,.tech-logo svg path:first-child:only-child,.tech-logo svg path:first-child:last-child{fill:currentColor;stroke:none}.contact-switch-trigger{width:100%;display:flex;justify-content:space-between;gap:1rem;border:1px solid transparent;background:transparent;cursor:pointer;padding:.35rem;text-align:left;border-radius:var(--radius-md)}.contact-switch-main{display:flex;gap:1rem;align-items:center}.contact-logo,.contact-switch-icon{display:inline-flex;align-items:center;justify-content:center;width:2.7rem;height:2.7rem;border-radius:999px;border:1px solid var(--border)}.contact-panel{display:none;margin-top:1rem}.contact-switch.is-open .contact-panel{display:block}.contact-link-shell{display:grid;gap:.3rem}.contact-switch-trigger:hover{color:#fff;border-color:color-mix(in oklab,var(--accent) 82%,black 8%);transform:translateY(-1px)}.contact-switch-trigger:hover .contact-state,.contact-switch-trigger:hover .contact-name{color:#fff}.contact-switch-trigger:hover .contact-logo,.contact-switch-trigger:hover .contact-switch-icon{border-color:#ffffff8c}.contact-link-shell a{display:inline-flex;width:fit-content;padding:.3rem .55rem;border-radius:999px}.contact-link-shell a:hover{color:#fff}.footer{padding:0 0 2rem}.footer-inner{padding:1.2rem 1.4rem}@media (max-width: 1024px){.hero-grid,.split-section,.detail-grid{grid-template-columns:1fr}}@media (max-width: 720px){.nav-links{display:none}.hero-title,.section-heading{max-width:none}.project-head{flex-direction:column}}@media (prefers-reduced-motion: reduce){.grid-morph-field{display:none}.reveal-card,.reveal-card[data-reveal=right],.reveal-card.is-visible{opacity:1;transform:none;filter:none;transition:none}}
