:root{--color-bg: oklch(.94 .035 78);--color-surface: oklch(.91 .045 78);--color-hairline: oklch(.84 .04 78);--color-ink: oklch(.18 .035 82);--color-muted: oklch(.52 .018 78);--color-dim: oklch(.68 .018 78);--color-accent: oklch(.68 .145 74);--color-accent-deep: oklch(.55 .15 68);--color-dark-bg: oklch(.17 .035 185);--color-dark-ink: oklch(.92 .03 78);--color-dark-muted: oklch(.72 .02 190);--font-display: "Chakra Petch", "Helvetica Neue", Arial, sans-serif;--font-body: "Zen Old Mincho", Georgia, "Times New Roman", serif;--font-mono: "Azeret Mono", "Courier New", monospace;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--sp-10: 2.5rem;--sp-12: 3rem;--sp-16: 4rem;--sp-20: 5rem;--sp-24: 6rem;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--z-sticky: 100;--z-dropdown: 200;--z-modal-bg: 300;--z-modal: 400;--z-toast: 500;--z-tooltip: 600;--page-pad: clamp(1.5rem, 6vw, 6rem);--max-w: 72rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;color-scheme:light}body{background:var(--color-bg);color:var(--color-ink);font-family:var(--font-body);font-size:1rem;line-height:1.65;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-kerning:normal;overflow-x:hidden}img,svg,video{display:block;max-width:100%}a{color:inherit;text-decoration:none}ol,ul{list-style:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:1px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.site-nav{position:fixed;top:0;left:0;right:0;z-index:var(--z-sticky);display:flex;align-items:center;justify-content:space-between;padding:var(--sp-5) var(--page-pad);background:#f8e9d2eb;border-bottom:1px solid var(--color-hairline);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.wordmark{font-family:var(--font-display);font-size:.6875rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--color-ink);transition:color .2s var(--ease-out-expo)}.wordmark:hover{color:var(--color-accent)}.nav-links{display:flex;align-items:center;gap:var(--sp-8)}.nav-links a{font-family:var(--font-display);font-size:.625rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);transition:color .2s var(--ease-out-expo)}.nav-links a:hover{color:var(--color-ink)}.hero{display:block;position:relative;min-height:100svh}.hero-text{position:relative;z-index:1;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding-top:calc(var(--sp-16) + 3.5rem);padding-right:52%;padding-bottom:clamp(3.5rem,9vw,7rem);padding-left:var(--page-pad)}.hero-text:before{content:"";position:absolute;inset:0;background:linear-gradient(to right,#f8e9d2 0% 38%,#f8e9d2a6 62%,#f8e9d200);opacity:.9;z-index:-1;pointer-events:none}.hero-name{font-family:var(--font-display);font-weight:300;font-size:clamp(2.75rem,6.5vw,6.25rem);line-height:.92;letter-spacing:-.015em;text-transform:uppercase;color:var(--color-ink);text-wrap:balance;animation:rise-in .7s var(--ease-out-expo) 80ms both}.hero-name span{display:block}.hero-rule{width:52px;height:1.5px;background:var(--color-accent);margin:var(--sp-6) 0;transform-origin:left center;animation:rule-extend .5s var(--ease-out-expo) .36s both}.hero-role{font-family:var(--font-display);font-size:clamp(.75rem,1.4vw,.875rem);font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);animation:rise-in .5s var(--ease-out-expo) .46s both}.hero-tagline{font-family:var(--font-body);font-size:clamp(.875rem,1.4vw,1rem);font-weight:400;color:var(--color-muted);margin-top:var(--sp-3);max-width:34ch;line-height:1.6;animation:rise-in .5s var(--ease-out-expo) .54s both}.hero-cta{display:inline-flex;align-items:center;gap:var(--sp-2);align-self:flex-start;margin-top:var(--sp-8);padding:.75rem 1.625rem;background:var(--color-accent);color:var(--color-ink);font-family:var(--font-display);font-size:.625rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;transition:background .2s var(--ease-out-expo),transform .2s var(--ease-out-expo);animation:rise-in .48s var(--ease-out-expo) .62s both}.hero-cta:hover{background:var(--color-accent-deep);transform:translateY(-1px)}.hero-cta svg{flex-shrink:0;transition:transform .2s var(--ease-out-expo)}.hero-cta:hover svg{transform:translate(3px)}.hero-visual{position:absolute;inset:0;width:100%;height:100%;overflow:visible;background:transparent;z-index:0}.hero-visual>svg{position:absolute;inset:0;width:100%;height:100%}.section{padding:var(--sp-24) var(--page-pad);border-top:1px solid var(--color-hairline)}.section-inner{max-width:var(--max-w);margin:0 auto}.section--dark{background:var(--color-dark-bg);border-top-color:transparent}.work-heading{font-family:var(--font-mono);font-size:.5625rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--color-dim);margin-bottom:var(--sp-8)}.work-list{display:flex;flex-direction:column}.work-item{border-top:1px solid var(--color-hairline)}.work-item:last-child{border-bottom:1px solid var(--color-hairline)}.work-link{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-6);padding:var(--sp-6) 0;position:relative}.work-link:hover .work-title{color:var(--color-ink);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:4px;text-decoration-thickness:1.5px}.work-title{font-family:var(--font-display);font-size:clamp(1.0625rem,2.2vw,1.5rem);font-weight:300;letter-spacing:.02em;text-transform:uppercase;color:var(--color-ink);transition:color .2s var(--ease-out-expo);flex:1;min-width:0}.work-meta{display:flex;align-items:baseline;gap:var(--sp-5);flex-shrink:0}.work-category{font-family:var(--font-mono);font-size:.625rem;color:var(--color-muted);letter-spacing:.06em}.work-year{font-family:var(--font-mono);font-size:.625rem;color:var(--color-dim);font-variant-numeric:tabular-nums;letter-spacing:.06em;width:2.5rem;text-align:right}.about-layout{display:flex;align-items:center;gap:var(--sp-16)}.about-content{flex:1;min-width:0}.about-portrait-wrap{flex:0 0 clamp(220px,28vw,340px);display:flex;justify-content:center;align-items:center}.about-portrait{width:clamp(180px,20vw,260px);height:clamp(180px,20vw,260px);border-radius:50%;object-fit:cover;object-position:center top;display:block;outline:1.5px solid var(--color-accent);outline-offset:5px}.about-heading{font-family:var(--font-display);font-size:clamp(1.75rem,3.5vw,2.75rem);font-weight:300;letter-spacing:-.01em;text-transform:uppercase;color:var(--color-dark-ink);margin-bottom:var(--sp-10);text-wrap:balance}.about-body{max-width:60ch}.about-body p{font-family:var(--font-body);font-size:1.0625rem;line-height:1.8;color:var(--color-dark-muted);text-wrap:pretty}.about-body p+p{margin-top:var(--sp-5)}.about-link{color:var(--color-dark-ink);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:3px}.site-footer{border-top:1px solid var(--color-hairline);padding:var(--sp-8) var(--page-pad);background:var(--color-bg)}.footer-inner{max-width:var(--max-w);margin:0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-4)}.contact-email{font-family:var(--font-display);font-size:.8125rem;font-weight:400;letter-spacing:.04em;color:var(--color-muted);transition:color .2s var(--ease-out-expo)}.contact-email:hover{color:var(--color-accent)}.footer-links{display:flex;align-items:center;gap:var(--sp-6)}.footer-links a{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.06em;color:var(--color-dim);transition:color .2s var(--ease-out-expo)}.footer-links a:hover{color:var(--color-accent)}.footer-copy{font-family:var(--font-mono);font-size:.5625rem;letter-spacing:.06em;color:var(--color-dim);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--color-hairline);max-width:var(--max-w);margin-left:auto;margin-right:auto;width:100%}@keyframes rise-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes rule-extend{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media(max-width:768px){.hero-text{padding-right:var(--page-pad);min-height:100svh}.hero-text:before{background:linear-gradient(to bottom,#f8e9d2d9,#f8e9d2bf 60%,#f8e9d200)}}@media(max-width:600px){.nav-links{gap:var(--sp-5)}.nav-links a{font-size:.5625rem;letter-spacing:.08em}.work-meta{flex-direction:column;gap:var(--sp-1);align-items:flex-end}.work-category{display:none}.about-layout{flex-direction:column-reverse;gap:var(--sp-8)}.about-portrait-wrap{flex:none;justify-content:flex-start}.about-portrait{width:clamp(100px,28vw,140px);height:clamp(100px,28vw,140px)}.footer-inner{flex-direction:column;align-items:flex-start}.footer-links{flex-wrap:wrap;gap:var(--sp-4)}}.nav-links a[aria-current=page]{color:var(--color-ink);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:5px;text-decoration-thickness:1.5px}.contours{display:block;width:100%;height:100%}.plate{margin:0}.plate-frame{position:relative;aspect-ratio:16 / 10;background:var(--color-surface);border:1px solid var(--color-hairline);overflow:hidden}.plate-img{width:100%;height:100%;object-fit:cover}.plate-empty{position:absolute;inset:0;display:grid;place-items:center}.plate-contours{position:absolute;inset:0;color:var(--color-accent);opacity:.55}.plate-fig{position:relative;font-family:var(--font-mono);font-size:.625rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--color-muted)}.plate-corners{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.plate-corners path{fill:none;stroke:var(--color-accent);stroke-width:1.4;opacity:.5;vector-effect:non-scaling-stroke}.plate-cap{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.04em;line-height:1.5;color:var(--color-muted);margin-top:var(--sp-3)}.work-page{padding:calc(var(--sp-16) + 3.5rem) var(--page-pad) var(--sp-24);max-width:var(--max-w);margin:0 auto}.work-page-head{max-width:46rem;margin-bottom:var(--sp-20)}.work-page-kicker{font-family:var(--font-mono);font-size:.625rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--color-muted)}.work-page-title{font-family:var(--font-display);font-weight:300;font-size:clamp(2.5rem,6vw,4.5rem);line-height:.95;letter-spacing:-.015em;text-transform:uppercase;color:var(--color-ink);text-wrap:balance;margin:var(--sp-4) 0 var(--sp-5)}.work-page-lede{font-family:var(--font-body);font-size:clamp(1rem,1.5vw,1.125rem);line-height:1.65;color:var(--color-muted);max-width:48ch;text-wrap:pretty}.gallery{display:grid;grid-template-columns:repeat(2,1fr);align-items:start;gap:var(--sp-16) var(--sp-12)}.gallery-item{animation:rise-in .6s var(--ease-out-expo) both}.gallery-item:nth-child(1){animation-delay:60ms}.gallery-item:nth-child(2){animation-delay:.14s}.gallery-item:nth-child(3){animation-delay:.22s}.gallery-item:nth-child(4){animation-delay:.3s}.gallery-item:nth-child(n+5){animation-delay:.36s}.gallery-link{display:block}.gallery-thumb{transition:transform .26s var(--ease-out-expo)}.gallery-link:hover .plate-frame{border-color:var(--color-accent)}.gallery-link:hover .gallery-thumb{transform:translateY(-3px)}.gallery-link:focus-visible .plate-frame{border-color:var(--color-accent)}.gallery-meta{margin-top:var(--sp-5)}.gallery-num{font-family:var(--font-mono);font-size:.625rem;font-weight:500;letter-spacing:.1em;color:var(--color-muted)}.gallery-title{font-family:var(--font-display);font-weight:300;font-size:clamp(1.25rem,2.4vw,1.75rem);line-height:1.1;letter-spacing:.01em;text-transform:uppercase;color:var(--color-ink);margin-top:var(--sp-2);text-wrap:balance;overflow-wrap:break-word}.gallery-link:hover .gallery-title,.gallery-link:focus-visible .gallery-title{text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:4px;text-decoration-thickness:1.5px}.gallery-blurb{font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--color-muted);margin-top:var(--sp-3);max-width:40ch;text-wrap:pretty}.gallery-tags{display:flex;align-items:baseline;gap:var(--sp-4);margin-top:var(--sp-4)}.gallery-cat,.gallery-year{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.06em;color:var(--color-muted)}.gallery-year{font-variant-numeric:tabular-nums}.resume-page{padding:calc(var(--sp-16) + 3.5rem) var(--page-pad) var(--sp-24);max-width:var(--max-w);margin:0 auto}.resume-head{max-width:46rem;margin-bottom:var(--sp-12);animation:rise-in .7s var(--ease-out-expo) 80ms both}.resume-kicker{font-family:var(--font-mono);font-size:.625rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--color-muted)}.resume-title{font-family:var(--font-display);font-weight:300;font-size:clamp(2.5rem,6vw,4.5rem);line-height:.95;letter-spacing:-.015em;text-transform:uppercase;color:var(--color-ink);text-wrap:balance;margin:var(--sp-4) 0 var(--sp-5)}.resume-lede{font-family:var(--font-body);font-size:clamp(1rem,1.5vw,1.125rem);line-height:1.65;color:var(--color-muted);max-width:48ch;text-wrap:pretty}.resume-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4) var(--sp-6);margin-top:var(--sp-8)}.resume-cta{display:inline-flex;align-items:center;gap:var(--sp-2);padding:.75rem 1.625rem;background:var(--color-accent);color:var(--color-ink);font-family:var(--font-display);font-size:.625rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;transition:background .2s var(--ease-out-expo),transform .2s var(--ease-out-expo)}.resume-cta:hover{background:var(--color-accent-deep);transform:translateY(-1px)}.resume-cta svg{flex-shrink:0;transition:transform .2s var(--ease-out-expo)}.resume-cta:hover svg{transform:translateY(2px)}.resume-ghost{display:inline-flex;align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:.625rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted);transition:color .2s var(--ease-out-expo)}.resume-ghost:hover{color:var(--color-ink)}.resume-ghost svg{flex-shrink:0;transition:transform .2s var(--ease-out-expo)}.resume-ghost:hover svg{transform:translate(1px,-1px)}.resume-doc{margin:0;display:flex;flex-direction:column;align-items:center;animation:rise-in .7s var(--ease-out-expo) .2s both}.resume-sheet{position:relative;width:100%;max-width:50rem;background:#fff;border:1px solid var(--color-hairline)}.resume-sheet-img{display:block;width:100%;height:auto}.resume-sheet .plate-corners{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.resume-cap{font-family:var(--font-mono);font-size:.5625rem;letter-spacing:.06em;line-height:1.5;color:var(--color-dim);text-align:center;margin-top:var(--sp-5);max-width:50rem}.case{padding:calc(var(--sp-16) + 3.5rem) var(--page-pad) var(--sp-16);max-width:60rem;margin:0 auto}.case-back{display:inline-block;font-family:var(--font-mono);font-size:.625rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted);margin-bottom:var(--sp-12);transition:color .2s var(--ease-out-expo)}.case-back:hover{color:var(--color-ink)}.case-head{position:relative}.case-contours{position:absolute;top:-3rem;right:-4rem;width:clamp(240px,36vw,460px);aspect-ratio:1;color:var(--color-accent);opacity:.5;pointer-events:none;z-index:0;animation:rise-in .9s var(--ease-out-expo) both}.case-head-inner{position:relative;z-index:1;max-width:44rem;animation:rise-in .7s var(--ease-out-expo) 80ms both}.case-num{display:flex;align-items:center;gap:var(--sp-3);font-family:var(--font-mono);font-size:.75rem;letter-spacing:.1em;color:var(--color-muted)}.case-draft{font-family:var(--font-mono);font-size:.5625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink);border:1px solid var(--color-accent);padding:.1rem .45rem}.case-title{font-family:var(--font-display);font-weight:300;font-size:clamp(2rem,5vw,3.5rem);line-height:.98;letter-spacing:-.012em;text-transform:uppercase;color:var(--color-ink);text-wrap:balance;overflow-wrap:break-word;margin-top:var(--sp-3)}.case-rule{width:52px;height:1.5px;background:var(--color-accent);margin:var(--sp-6) 0;transform-origin:left center;animation:rule-extend .5s var(--ease-out-expo) .42s both}.case-summary{font-family:var(--font-body);font-size:clamp(1.0625rem,1.6vw,1.25rem);line-height:1.6;color:var(--color-ink);max-width:46ch;text-wrap:pretty}.case-facts{display:flex;flex-wrap:wrap;gap:var(--sp-6) var(--sp-10);margin-top:var(--sp-8);padding-top:var(--sp-6);border-top:1px solid var(--color-hairline)}.case-fact--wide{flex-basis:100%}.case-fact dt{font-family:var(--font-mono);font-size:.5625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted)}.case-fact dd{font-family:var(--font-mono);font-size:.8125rem;color:var(--color-ink);margin-top:.4rem}.case-cta{display:inline-flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-10);padding:.75rem 1.625rem;background:var(--color-accent);color:var(--color-ink);font-family:var(--font-display);font-size:.625rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;transition:background .2s var(--ease-out-expo),transform .2s var(--ease-out-expo)}.case-cta:hover{background:var(--color-accent-deep);transform:translateY(-1px)}.case-cta svg{flex-shrink:0;transition:transform .2s var(--ease-out-expo)}.case-cta:hover svg{transform:translate(3px)}.case-cta-pending{display:inline-flex;align-items:center;margin-top:var(--sp-10);padding:.75rem 1.25rem;font-family:var(--font-mono);font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-muted);border:1px dashed var(--color-hairline)}.case-prose{margin-top:var(--sp-16);max-width:65ch}.case-prose>*+*{margin-top:var(--sp-5)}.case-prose p{font-family:var(--font-body);font-size:1.0625rem;line-height:1.8;color:var(--color-ink);text-wrap:pretty}.case-prose strong{font-weight:500;color:var(--color-ink)}.case-prose a{color:var(--color-ink);text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:3px}.case-prose blockquote{padding:var(--sp-4) 0;border-top:1px solid var(--color-hairline);border-bottom:1px solid var(--color-hairline);font-family:var(--font-body);font-size:.9375rem;font-style:italic;color:var(--color-muted)}.case-plates{margin-top:var(--sp-16);max-width:65ch;display:flex;flex-direction:column;gap:var(--sp-12)}.case-pager{margin-top:var(--sp-24);padding-top:var(--sp-8);border-top:1px solid var(--color-hairline);display:flex;justify-content:space-between;gap:var(--sp-8)}.case-pager-link{display:flex;flex-direction:column;gap:.35rem}.case-pager-next{text-align:right;align-items:flex-end}.case-pager-dir{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted)}.case-pager-name{font-family:var(--font-display);font-weight:400;font-size:.9375rem;letter-spacing:.04em;text-transform:uppercase;color:var(--color-ink)}.case-pager-link:hover .case-pager-name{text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:4px;text-decoration-thickness:1.5px}@media(max-width:720px){.gallery{grid-template-columns:1fr;gap:var(--sp-12)}.case-contours{top:-1.5rem;right:-2.5rem;width:clamp(180px,48vw,280px);opacity:.4}}@media(max-width:560px){.case-pager{flex-direction:column;gap:var(--sp-8)}.case-pager-next{text-align:left;align-items:flex-start}}
