:root{--asphalt: #10161c;--shoulder: #182128;--spray: #e7ecef;--mist: #9aa8b0;--centerline: #d4a45a;--rule: rgba(231, 236, 239, 0.12);--display: "Figtree", system-ui, sans-serif;--body: "Figtree", system-ui, sans-serif}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--asphalt);color:var(--spray);font-family:var(--body);font-size:1.05rem;line-height:1.6}img{max-width:100%;height:auto;display:block}a{color:var(--spray);text-decoration-thickness:1px;text-underline-offset:0.22em}a:hover{color:var(--centerline)}a:focus-visible{outline:2px solid var(--centerline);outline-offset:3px}.skip-link{position:absolute;left:1rem;top:-4rem;z-index:20;padding:0.4rem 0.7rem;background:var(--shoulder)}.skip-link:focus{top:0.75rem}.site-header{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;flex-direction:column;align-items:flex-start;gap:0.45rem 0.8rem;padding:0.9rem 1rem}.layout-page .site-header,.layout-post .site-header,.layout-blog .site-header,.layout-default .site-header{position:sticky;background:rgba(16,22,28,0.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}.wordmark{font-family:var(--display);font-weight:700;font-size:1.15rem;letter-spacing:0.02em;text-transform:lowercase;text-decoration:none}.site-nav{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:0.5rem 0.85rem}.site-nav a{font-size:0.84rem;font-weight:500;letter-spacing:0.02em;text-decoration:none;white-space:nowrap}.nav-github{display:none}.hero{position:relative;height:100vh;height:100svh;max-height:54rem;min-height:28rem;display:grid;align-items:end;overflow:hidden}.hero-stage{position:absolute;inset:-10%;will-change:transform}.hero-image{width:100%;height:100%;object-fit:cover;object-position:58% 38%}.js .hero-image{opacity:0}.js .hero.is-ready .hero-image{opacity:1;transition:opacity 1.1s ease}.hero-flare{position:absolute;top:28%;left:58%;width:min(70vw, 46rem);height:min(70vw, 46rem);border-radius:50%;background:radial-gradient(circle, rgba(255,210,130,0.5) 0%, rgba(255,150,60,0.16) 34%, transparent 68%);transform:translate(-50%, -50%);mix-blend-mode:screen;pointer-events:none;opacity:0.85}.js .hero-flare{opacity:0}.js .hero.is-ready .hero-flare{opacity:0.85;transition:opacity 1.6s ease 0.3s}.hero-grain{position:absolute;inset:0;pointer-events:none;opacity:0.16;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.layout-home .site-header{text-shadow:0 1px 14px rgba(16,22,28,0.7)}.hero-copy{position:relative;z-index:1;padding:0 1.4rem 3.2rem;max-width:46rem}.js .hero-copy>*{opacity:0;transform:translate3d(0, 18px, 0)}.js .hero.is-ready .hero-copy>*{animation:rise 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards}.js .hero.is-ready .hero-copy>*:nth-child(1){animation-delay:0.28s}.js .hero.is-ready .hero-copy>*:nth-child(2){animation-delay:0.42s}.js .hero.is-ready .hero-copy>*:nth-child(3){animation-delay:0.56s}.js .hero.is-ready .hero-copy>*:nth-child(4){animation-delay:0.7s}@keyframes rise{to{opacity:1;transform:none}}.hero-kicker{margin:0 0 0.7rem;color:var(--centerline);font-size:0.78rem;font-weight:600;letter-spacing:0.22em;text-transform:uppercase}.hero h1{margin:0;font-family:var(--display);font-weight:700;font-size:clamp(2.2rem, 6vw, 4.25rem);letter-spacing:-0.02em;line-height:1.08}.hero-lede{margin:1rem 0 0;max-width:28rem;color:var(--mist);font-size:1.12rem}.hero-actions{display:flex;flex-wrap:wrap;gap:0.85rem 1.4rem;margin:1.35rem 0 0}.text-link{font-weight:600;letter-spacing:0.02em}.band{padding:3.5rem 1.4rem 1.5rem}.band-head{display:flex;flex-direction:column;align-items:flex-start;gap:0.8rem 1.5rem;margin-bottom:1.6rem}.eyebrow{margin:0 0 0.35rem;color:var(--centerline);font-size:0.75rem;font-weight:600;letter-spacing:0.2em;text-transform:uppercase}.band h1,.band h2{margin:0;font-family:var(--display);font-size:clamp(1.6rem, 3vw, 2.2rem);font-weight:700;letter-spacing:-0.02em}.photo-grid{list-style:none;margin:0;padding:0;display:grid;gap:0.55rem}.js .photo-grid li{opacity:0;transform:translate3d(0, 28px, 0)}.js .photo-grid li.is-in{opacity:1;transform:none;transition:opacity 0.7s ease,transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);transition-delay:calc(var(--i, 0) * 70ms)}.photo-grid a{--rx: 0deg;--ry: 0deg;--sx: 50%;--sy: 50%;position:relative;display:block;overflow:hidden;text-decoration:none;background:var(--shoulder);min-height:14rem;transform:perspective(900px) rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;transition:transform 0.18s ease-out}.photo-grid a::after{content:"";position:absolute;inset:0;background:radial-gradient(420px circle at var(--sx) var(--sy), rgba(255,220,160,0.2), transparent 55%);opacity:0;pointer-events:none;transition:opacity 0.25s ease}.photo-grid a:hover::after,.photo-grid a:focus-visible::after{opacity:1}.photo-grid img{width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 0.7s ease}.photo-grid a:hover img,.photo-grid a:focus-visible img{transform:scale(1.1)}.photo-caption{position:absolute;left:0.8rem;bottom:0.7rem;font-size:0.78rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;text-shadow:0 1px 8px rgba(16,22,28,0.85)}.photos,.writing{padding-bottom:4rem}.blog-cue{margin:1.6rem 0 0;color:var(--mist)}.post-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.post-list li{display:grid;gap:0.2rem 1.5rem;padding:1rem 0;border-bottom:1px solid var(--rule)}.post-list time{color:var(--mist);font-size:0.88rem}.post-list a{font-weight:600;text-decoration:none}.prose{width:min(42rem, calc(100% - 2.8rem));margin:2.4rem auto 4.5rem}.prose a{color:var(--centerline)}.prose-head{margin-bottom:1.6rem}.prose h1{margin:0;font-family:var(--display);font-weight:700;font-size:clamp(2rem, 5vw, 3.2rem);letter-spacing:-0.02em;line-height:1.12}.prose h2,.prose h3{font-family:var(--display);font-weight:700;letter-spacing:-0.02em}.prose img{margin:1.4rem 0}.layout-page .prose img{width:100%}.layout-page .prose img.portrait{width:auto;max-width:18rem}.prose iframe{width:100%;max-width:100%;height:auto;aspect-ratio:16 / 9;border:0}.prose pre,.prose code{font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;font-size:0.9em}.prose pre{overflow:auto;padding:1rem;background:var(--shoulder)}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0.8rem 1.5rem;padding:1.4rem;border-top:1px solid var(--rule);color:var(--mist);font-size:0.92rem}.footer-name,.footer-links{margin:0}.footer-links{display:flex;flex-wrap:wrap;gap:0.8rem 1.1rem}.footer-links a{color:var(--mist);text-decoration:none}.footer-links a:hover{color:var(--centerline)}@media (min-width: 760px){.site-header{flex-direction:row;align-items:center;justify-content:space-between;padding:1.25rem 2.2rem;gap:1rem}.site-nav{justify-content:flex-end;gap:0.9rem 1.15rem}.site-nav a{font-size:0.92rem;letter-spacing:0.04em}.nav-github{display:inline}.band-head{flex-direction:row;align-items:flex-end;justify-content:space-between}.hero-copy,.band,.site-footer{padding-left:2.2rem;padding-right:2.2rem}.post-list li{grid-template-columns:9.5rem 1fr;align-items:baseline}.photo-grid{grid-template-columns:repeat(12, 1fr);grid-auto-rows:minmax(4.5rem, 11vw)}.photo-grid li:nth-child(1){grid-column:span 8;grid-row:span 4}.photo-grid li:nth-child(2){grid-column:span 4;grid-row:span 4}.photo-grid li:nth-child(3){grid-column:span 4;grid-row:span 3}.photo-grid li:nth-child(4){grid-column:span 4;grid-row:span 3}.photo-grid li:nth-child(5){grid-column:span 4;grid-row:span 3}.photo-grid li:nth-child(6){grid-column:span 6;grid-row:span 3}.photo-grid li:nth-child(7){grid-column:span 6;grid-row:span 3}.photo-grid li:nth-child(8){grid-column:span 12;grid-row:span 3}.photo-grid a{height:100%;min-height:0}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.js .hero-image,.js .hero-flare,.js .hero.is-ready .hero-image,.js .hero.is-ready .hero-flare,.js .hero-copy>*,.js .hero.is-ready .hero-copy>*,.js .photo-grid li,.js .photo-grid li.is-in,.photo-grid img,.photo-grid a{opacity:1;transform:none;animation:none;transition:none}.hero-stage{inset:0}.photo-grid a:hover img,.photo-grid a:focus-visible img{transform:none}}
