@import"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap";.skills-viewport{overflow:hidden;-webkit-mask-image:linear-gradient(to right,transparent 0%,#000 14%,#000 86%,transparent 100%);mask-image:linear-gradient(to right,transparent 0%,#000 14%,#000 86%,transparent 100%)}.skills-track{display:flex;width:max-content;align-items:center;gap:var(--space-10);animation:skills-drift 42s linear infinite;will-change:transform}@keyframes skills-drift{0%{transform:translate(0)}to{transform:translate(-50%)}}.skill-item{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.skill-item img{height:56px;width:auto;display:block;opacity:.78;transition:opacity var(--dur-quick) var(--ease-out-quiet)}.skills-viewport:hover .skill-item img{opacity:1}.skill-item .skill-label{font-family:var(--font-sans);font-size:var(--fs-meta);font-weight:var(--fw-body-md);letter-spacing:var(--tracking-meta-wide);text-transform:uppercase;color:var(--text-secondary)}@media (prefers-reduced-motion: reduce){.skills-track{animation:none}}:root{--paper-100: #F4F4F2;--paper-200: #EFEFEC;--paper-300: #E7E7E3;--paper-400: #C9C9C4;--ink-900: #0A0A0A;--ink-700: #1E1E1C;--ink-500: #6B6B68;--ink-400: #8A8A86;--ink-300: #B3B3AE;--bg-canvas: var(--paper-100);--bg-recessed: var(--paper-200);--text-primary: var(--ink-900);--text-heading: var(--ink-900);--text-secondary: var(--ink-500);--text-quiet: var(--ink-400);--text-disabled: var(--ink-300);--text-inverse: var(--paper-100);--rule-strong: var(--ink-900);--rule-soft: var(--paper-300);--rule-quiet: var(--paper-400);--selection-bg: var(--ink-900);--selection-fg: var(--paper-100)}::selection{background:var(--selection-bg);color:var(--selection-fg)}:root{--font-serif-display: "Cormorant Garamond", "Canela", "Ivy Presto", "GT Sectra", "Hoefler Text", Georgia, serif;--font-sans: "Inter", "Suisse Int'l", "Helvetica Neue", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fs-display-xl: clamp(72px, 11vw, 188px);--fs-display-l: clamp(56px, 7.5vw, 124px);--fs-display-m: clamp(40px, 4.6vw, 76px);--fs-display-s: clamp(28px, 2.8vw, 44px);--fs-body-l: 19px;--fs-body: 16px;--fs-body-s: 14px;--fs-meta: 12px;--fs-meta-xs: 11px;--fw-display: 400;--fw-display-md: 500;--fw-body: 400;--fw-body-md: 500;--fw-body-bold: 600;--lh-display-tight: .95;--lh-display: 1.04;--lh-heading: 1.18;--lh-body: 1.55;--lh-meta: 1.45;--tracking-display: -.02em;--tracking-display-tight: -.035em;--tracking-body: 0em;--tracking-meta: .08em;--tracking-meta-wide: .16em;--type-name: var(--fw-display) var(--fs-display-xl)/var(--lh-display-tight) var(--font-serif-display);--type-display: var(--fw-display) var(--fs-display-l)/var(--lh-display) var(--font-serif-display);--type-section: var(--fw-display) var(--fs-display-m)/var(--lh-display) var(--font-serif-display);--type-sub: var(--fw-display) var(--fs-display-s)/var(--lh-heading) var(--font-serif-display);--type-body-lede: var(--fw-body) var(--fs-body-l)/var(--lh-body) var(--font-sans);--type-body: var(--fw-body) var(--fs-body)/var(--lh-body) var(--font-sans);--type-body-small: var(--fw-body) var(--fs-body-s)/var(--lh-body) var(--font-sans);--type-meta: var(--fw-body) var(--fs-meta)/var(--lh-meta) var(--font-sans);--type-eyebrow: var(--fw-body-md) var(--fs-meta)/var(--lh-meta) var(--font-sans)}html{font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.serif,[class*=display]{font-family:var(--font-serif-display);font-feature-settings:"liga","dlig","onum";letter-spacing:var(--tracking-display)}.tabular{font-variant-numeric:tabular-nums}.eyebrow{font:var(--type-eyebrow);letter-spacing:var(--tracking-meta-wide);text-transform:uppercase;color:var(--text-secondary)}:root{--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--space-10: 128px;--space-11: 160px;--space-12: 200px;--space-13: 240px;--space-14: 320px;--page-max: 1680px;--page-gutter: clamp(24px, 6vw, 96px);--section-gap: clamp(120px, 14vw, 240px);--row-gap: var(--space-9);--para-gap: var(--space-5);--grid-cols: 14;--grid-gap: var(--space-5);--hairline: 1px solid var(--rule-strong);--hairline-soft: 1px solid var(--rule-soft);--hairline-quiet: 1px solid var(--rule-quiet);--radius-0: 0;--radius-1: 1px;--z-pattern: 0;--z-content: 10;--z-nav: 50;--z-overlay: 100}:root{--dur-instant: .12s;--dur-quick: .24s;--dur-base: .42s;--dur-slow: .72s;--dur-drift: 1.6s;--ease-out-quiet: cubic-bezier(.22, .61, .36, 1);--ease-in-quiet: cubic-bezier(.55, .06, .68, .19);--ease-in-out-quiet: cubic-bezier(.65, .05, .36, 1);--ease-linear: linear;--transition-hover: color var(--dur-quick) var(--ease-out-quiet), opacity var(--dur-quick) var(--ease-out-quiet), border-color var(--dur-quick) var(--ease-out-quiet);--transition-reveal: opacity var(--dur-slow) var(--ease-out-quiet), transform var(--dur-slow) var(--ease-out-quiet)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg-canvas)}body{min-height:100vh;background:var(--bg-canvas);color:var(--text-primary);font:var(--type-body)}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--fw-display);letter-spacing:var(--tracking-display)}p{margin:0}p+p{margin-top:var(--para-gap)}a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:1px;transition:var(--transition-hover)}a:hover{opacity:.55}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}img,svg,video{display:block;max-width:100%;height:auto}hr{border:0;border-top:var(--hairline);margin:0}:focus-visible{outline:1px solid var(--ink-900);outline-offset:4px}@keyframes scroll-hint-drift{0%,to{transform:translateY(0);opacity:.55}50%{transform:translateY(6px);opacity:1}}
