@charset "UTF-8";@font-face{font-family:Fira Sans;src:url(/assets/fira-sans-400-B4NCpCez.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Fira Sans;src:url(/assets/fira-sans-700-CGmKhsUU.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Archivo;src:url(/assets/archivo-display-BJl10YAv.woff2) format("woff2");font-weight:800;font-style:italic;font-display:swap}@font-face{font-family:Fira Code;src:url(/assets/fira-code-DqNxJTED.woff2) format("woff2");font-weight:400 500;font-style:normal;font-display:swap}:root{font-family:Fira Sans,Arial,sans-serif;color:#eceae3;background:#0b0b0b;color-scheme:dark;font-synthesis:none;-webkit-font-smoothing:antialiased;--background: #0b0b0b;--text: #eceae3;--muted: #b8b8b6;--accent: #f2c94c;--interaction: #eceae3;--focus: #f2c94c;--signal: #f0782d;--line: #41413d;--page-surface: linear-gradient(#0b0b0b99, #0b0b0b99), url(/assets/grain-figma-s77HAZmc.png) repeat #0b0b0b}*{box-sizing:border-box}html{scrollbar-gutter:stable;scroll-padding-top:105px}body{margin:0}a{color:inherit;text-decoration:none}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit}a,summary{touch-action:manipulation}img{display:block;max-width:100%}::selection{color:var(--background);background:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:5px}[tabindex="-1"]:focus{outline:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.portfolio-page{background:var(--page-surface);padding-inline:clamp(16px,3vw,56px)}.site-header{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;min-height:88px;max-width:1540px;margin:0 auto;background:var(--page-surface)}.brand{display:inline-flex;gap:13px;align-items:center;min-width:44px;min-height:64px;font-size:15px;font-weight:700}.brand img{width:44px;height:50px;object-fit:contain}.header-nav{display:flex;gap:34px;font-size:15px}.header-nav a,.site-footer a{display:inline-flex;align-items:center;min-height:44px}.header-nav a{position:relative;min-width:44px;justify-content:center}.header-nav .nav-active:after,.header-nav a:hover:after{content:"";position:absolute;inset:auto 0 3px;height:2px;background:var(--interaction)}.header-nav a:hover,.site-footer a:hover,.brand:hover{color:var(--interaction)}.page-frame{max-width:1540px;margin:0 auto;border:1px solid #62625a;position:relative;isolation:isolate;overflow:clip;background:var(--page-surface)}.page-content{max-width:1312px;margin:0 auto;padding:54px clamp(26px,4.4vw,64px) 80px}.spectrum{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:-1}.spectrum svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.wire{animation:wire-power 1.5s cubic-bezier(.3,.6,.2,1) calc(var(--wire-index) * 40ms) both}.wire-sheath{stroke:#0b0b0b}.wire-highlight{stroke:#fff;opacity:.16}.wire-clamp{fill:#151513;stroke:#5c5c55;stroke-width:1}@keyframes wire-power{0%{stroke-dasharray:1;stroke-dashoffset:1}to{stroke-dasharray:1;stroke-dashoffset:0}}.hero{display:grid;grid-template-columns:1fr 1.15fr;grid-template-areas:"masthead masthead" "intro artwork";gap:44px 64px;padding-bottom:76px;align-items:center}.hero-masthead{grid-area:masthead;min-width:0}.name-display{font-family:Archivo,Arial,sans-serif;font-size:clamp(60px,11vw,154px);font-weight:800;font-style:italic;line-height:.94;letter-spacing:-.055em;text-transform:uppercase;margin:0;padding-right:.09em;white-space:nowrap}.name-display>span:first-child{margin-right:.12em}.name-display,.not-found h1{overflow-wrap:anywhere}.hero-meta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 30px;margin-top:26px;padding-block:18px;border-block:1px solid var(--line);background:var(--page-surface)}.hero-roles{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0;font-size:16px;line-height:1.6}.hero-roles>span:last-child{color:var(--interaction)}.hero-location{color:var(--muted);font-size:14px;line-height:1.6;margin:0}.hero-artwork{grid-area:artwork;margin:0;overflow:hidden;border:1px solid #77776d;border-radius:2px}.hero-artwork img{width:101%;max-width:none;margin-left:-1%;height:auto;aspect-ratio:1.45;object-fit:cover;object-position:50% 45%}.hero-introduction{grid-area:intro;min-width:0;background:var(--page-surface);padding-block:12px}.hero h2{font-size:clamp(30px,3.3vw,47px);font-weight:700;line-height:1.12;letter-spacing:-.035em;margin:0 0 25px;max-width:18ch;text-wrap:balance}.hero-description{color:#c8c8c5;font-size:17px;line-height:1.7;margin:0;max-width:40ch}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:16px 24px;margin-top:30px}.button{display:inline-flex;justify-content:center;align-items:center;gap:26px;padding:13px 20px;min-height:48px;border:1px solid var(--interaction);border-radius:2px;background:var(--interaction);color:var(--background);font-size:15px;font-weight:700;line-height:1.5;transition:background .15s ease,border-color .15s ease}.button:hover{background:#fffef8;border-color:#fffef8}.button-outline{color:var(--text);background:var(--page-surface)}.button-outline:hover{color:var(--background)}.section{position:relative;padding:70px 0 84px;border-top:1px solid var(--line)}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:36px;margin-bottom:44px}.section-heading>p{max-width:34ch;font-size:17px;line-height:1.7;color:#c8c8c5;margin:0;background:var(--page-surface)}.display-heading{font-family:Archivo,Arial,sans-serif;font-size:clamp(36px,4.5vw,65px);font-style:italic;font-weight:800;line-height:1;letter-spacing:-.04em;word-spacing:.07em;text-transform:uppercase;margin:0;padding-right:.12em;text-wrap:balance}.about-section .display-heading{font-size:clamp(36px,4vw,57px)}.about-columns{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(36px,7vw,100px);background:var(--page-surface)}.about-columns h3{margin:0 0 23px;font-size:26px;letter-spacing:-.025em;line-height:1.3}.about-story p{font-size:17px;line-height:1.8;color:#c8c8c5;margin:0 0 20px}.about-story .personal-note{border-top:1px solid var(--line);padding-top:23px;margin:30px 0 0;font-size:15px;color:var(--text)}.skills-panel h3{font-size:20px;margin-bottom:26px}.skill-group{margin-bottom:23px;padding-bottom:23px;border-bottom:1px solid var(--line)}.skill-group h4{color:var(--muted);font-size:13px;font-weight:400;margin:0 0 12px}.skill-group ul{display:flex;flex-wrap:wrap;gap:8px 18px;padding:0;margin:0;list-style:none}.skill-group li{font-size:15px;line-height:1.5}.approach-note{display:flex;gap:17px;margin-top:27px}.approach-note>span{color:var(--interaction);font-size:30px}.approach-note p{color:var(--muted);margin:0;font-size:16px;line-height:1.7;max-width:35ch}.contact-section{display:grid;grid-template-columns:.8fr 1.5fr;gap:50px;align-items:start;padding:44px;background:#111110;border:1px solid #62625a;border-radius:2px}.contact-section .display-heading{color:var(--interaction);font-size:clamp(60px,6.5vw,90px)}.contact-content{min-width:0;padding-top:6px}.contact-content>p{font-size:clamp(21px,2vw,29px);line-height:1.45;letter-spacing:-.02em;margin:0 0 26px}.contact-content>.contact-detail{max-width:45ch;font-size:16px;line-height:1.7;color:var(--muted);letter-spacing:normal;margin-top:-10px}.email-link{display:inline-flex;align-items:center;gap:30px;font-size:clamp(22px,2.8vw,38px);border-bottom:1px solid #7a7a72;padding-block:8px 14px;letter-spacing:-.035em}.email-link:hover{color:var(--interaction);border-color:var(--interaction)}.email-link>span{font-size:26px}.contact-email{display:flex;align-items:center;flex-wrap:wrap;gap:16px 22px}.copy-email{min-height:44px;padding:9px 14px;color:var(--text);background:transparent;border:1px solid #74746d;cursor:pointer;font-size:14px}.copy-email:hover{color:var(--interaction);border-color:var(--interaction)}.contact-content>.copy-status{min-height:1.6em;margin:10px 0 0;font-size:14px;line-height:1.6;color:var(--interaction);letter-spacing:normal}html:not([data-interactive=true]) :is(.copy-email,.copy-status){display:none}.contact-links{display:flex;align-items:center;flex-wrap:wrap;gap:28px;margin-top:8px}.text-link,.back-link{display:inline-flex;align-items:center;gap:18px;min-height:44px;font-size:15px}.text-link{border-bottom:1px solid #74746d;font-weight:700;align-self:flex-start}.text-link:hover,.back-link:hover{color:var(--interaction);border-color:var(--interaction)}.back-link{color:#c8c8c5}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:90px;max-width:1540px;margin:0 auto;font-size:13px;color:var(--muted)}.site-footer>a{gap:12px}.site-footer a:hover{text-decoration:underline;text-underline-offset:5px}.skip-link{position:fixed;top:8px;left:18px;background:var(--interaction);color:#0b0b0b;padding:14px 20px;z-index:20;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.not-found{background:var(--page-surface);padding:65px 0 110px;min-height:60vh}.not-found>p:first-child{font:14px Fira Code,monospace;color:var(--interaction)}.not-found h1{font-family:Archivo,Arial,sans-serif;font-style:italic;font-weight:800;text-transform:uppercase;font-size:clamp(38px,5vw,70px);line-height:1.05;letter-spacing:-.04em;max-width:14ch;margin:28px 0}.not-found p{font-size:18px;color:var(--muted)}.not-found .button{margin-top:20px}@media (max-width: 1100px){.hero{gap:38px}.hero-masthead{align-items:center}.name-display{font-size:10.7vw}.hero-roles{font-size:15px}.hero h2{font-size:33px}.hero-description{font-size:16px}.hero-actions{gap:13px 20px}.button{padding-inline:16px;gap:18px}.section-heading>p{font-size:16px}.about-columns{gap:40px}.contact-section{gap:35px;padding:32px}}@media (max-width: 800px){html{scroll-padding-top:94px}.portfolio-page{padding-inline:16px}.site-header{min-height:76px}.brand{font-size:14px;gap:8px}.brand img{width:36px;height:43px}.header-nav{gap:24px;font-size:14px}.page-content{padding:34px 26px 48px}.hero{grid-template-columns:1fr 1fr;gap:30px 28px;padding-bottom:48px}.hero-masthead{gap:18px}.name-display{font-size:10.7vw}.hero-roles{font-size:15px;gap:4px 20px}.hero h2{font-size:28px}.hero-artwork img{aspect-ratio:.9}.hero-actions{margin-top:23px}.section{padding-top:46px;padding-bottom:52px}.section-heading{align-items:flex-start;gap:24px;margin-bottom:32px}.display-heading{font-size:40px}.section-heading>p{font-size:15px}.about-section .section-heading{flex-direction:column}.about-section .display-heading{font-size:44px}.about-columns{grid-template-columns:1fr;gap:38px}.about-columns h3{font-size:23px}.about-story p{font-size:16px}.skills-panel{border-top:1px solid var(--line);padding-top:30px}.skills-panel h3{font-size:20px}.contact-section{padding:30px;gap:22px;grid-template-columns:1fr}.contact-section .display-heading{font-size:64px}.contact-section .display-heading br{display:none}.contact-content>p{font-size:22px}.email-link{font-size:29px}.footer-note{display:none}}@media (max-width: 580px){.brand span{display:none}.page-content{padding-inline:24px}.hero{display:flex;flex-direction:column;align-items:stretch;gap:30px}.hero-masthead{display:block;position:relative}.hero-masthead:after{content:"";position:absolute;top:100%;inset-inline:0;height:30px;background:var(--page-surface);pointer-events:none}.name-display{white-space:normal;font-size:clamp(44px,13.6vw,72px);line-height:.94;letter-spacing:-.055em}.name-display span{display:block}.hero-meta{flex-direction:column;align-items:flex-start;gap:10px;margin-top:22px;padding-block:14px}.hero-roles{flex-direction:column;gap:0;font-size:14px;line-height:1.7}.hero-location{font-size:12px}.hero-introduction{padding:0}.hero h2{font-size:clamp(29px,7.6vw,37px);margin-bottom:18px;max-width:20ch;text-wrap:initial}.hero-description{font-size:16px;line-height:1.7}.hero-artwork{order:1}.hero-artwork img{aspect-ratio:1.4}.hero-actions{gap:12px 20px}.button{font-size:14px;padding:12px 16px;gap:20px}.text-link,.back-link{font-size:14px}.section-heading{flex-direction:column;gap:20px}.display-heading{font-size:clamp(33px,8.9vw,47px)}.about-section .display-heading{font-size:clamp(30px,8.5vw,45px)}.section-heading>p{font-size:16px}.contact-section .display-heading{font-size:57px}.contact-section{padding:26px 20px}.contact-content>.contact-detail{font-size:15px}.contact-content>p>br{display:none}.email-link{font-size:clamp(20px,5.8vw,29px);gap:16px}.email-link>span{font-size:23px}.site-footer{min-height:78px;font-size:12px;gap:10px}.not-found{padding-block:35px 70px}}@media (max-width: 360px){.portfolio-page{padding-inline:12px}.page-content{padding-inline:19px}.header-nav{gap:20px}.hero-roles{font-size:13px}.contact-section{padding-inline:16px}.contact-section .email-link{font-size:18px;gap:10px}.hero-actions{gap:16px}.hero-actions .button{gap:14px;padding-inline:13px}.site-footer{font-size:11px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.flagship-project{background:var(--page-surface)}.flagship-main{display:grid;gap:34px;padding:8px 0 36px}.flagship-copy{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:64px}.flagship-heading,.flagship-description{min-width:0}.award-badge{display:inline-block;color:var(--accent);font-size:13px;font-weight:400;line-height:1.6;padding:8px 12px;border:1px solid #5e5126;border-radius:4px;background:#1b190f}.project-category{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font:12px/1.6 Fira Code,monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 18px}.project-category>span{height:6px;width:6px;background:var(--signal)}.flagship-copy .project-title{font-size:clamp(34px,3.6vw,50px);line-height:1.08;letter-spacing:-.035em;margin:0 0 22px;max-width:17ch;text-wrap:balance}.flagship-description>p{font-size:18px;line-height:1.7;color:#c8c8c5;margin:0 0 20px;max-width:49ch}.technology-list{display:flex;flex-wrap:wrap;gap:7px 15px;margin:0;padding:0;list-style:none;font-size:13px;line-height:1.6;color:var(--muted)}.flagship-copy .technology-list{margin-top:19px}.flagship-copy .button{margin-top:26px}.case-study-link svg{flex-shrink:0}.project-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;border-block:1px solid var(--line);background:var(--page-surface)}.project-metrics>div{display:grid;grid-row:span 3;grid-template-rows:subgrid;row-gap:0;align-content:start;padding:28px;border-right:1px solid var(--line)}.project-metrics>div:first-child{padding-left:0}.project-metrics>div:last-child{border:0;padding-right:0}.project-metrics dt{order:1;font-size:15px;line-height:1.45;max-width:25ch}.project-metrics dd{order:0;margin:0 0 13px;font-size:46px;line-height:1.1;font-weight:700;letter-spacing:-.045em}.project-metrics .metric-note{order:2;margin:13px 0 0;font-size:12px;color:var(--muted);font-weight:400;line-height:1.65;letter-spacing:0;max-width:37ch}.personal-projects{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:54px}.project-card{display:flex;flex-direction:column;background:var(--page-surface);min-width:0}.project-card-copy{padding:28px 0 0;display:flex;flex-direction:column;flex:1}.project-card-copy .project-category{margin-top:0}.project-card .project-title{font-size:32px;letter-spacing:-.03em;margin:0 0 15px}.project-card-copy>p:not(.project-category){color:#c8c8c5;font-size:17px;line-height:1.7;margin:0 0 23px;max-width:51ch}.project-card-copy>.project-highlight{border-left:2px solid #8d9884;padding-left:16px;font-size:15px!important}.project-card:last-child .project-highlight{border-color:#bda466}.project-card .technology-list{margin-top:auto}.project-card .text-link{margin-top:20px}.works-page .selected-work{border:0;padding-top:36px}.works-page .section-heading>.display-heading{background:var(--page-surface)}.project-index{margin:-8px 0 48px}.project-index ul{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:24px;list-style:none;padding:0;margin:0}.project-index a{display:flex;align-items:center;gap:12px;min-height:76px;padding:14px 0;border-block:1px solid var(--line);font-size:15px;line-height:1.5;background:var(--page-surface)}.project-index small{display:block;color:var(--muted);font:11px/1.6 Fira Code,monospace;letter-spacing:.06em;text-transform:uppercase;margin-top:4px}.project-index a>span:last-child{margin-left:auto;color:var(--interaction)}.project-index a:hover{color:var(--interaction);border-color:var(--interaction)}.selected-work article[id]{scroll-margin-top:12px}@media (max-width: 800px){.project-index ul{grid-template-columns:1fr;gap:0}.project-index li+li a{border-top:0}.project-index a{min-height:64px}}.project-preview{margin:0;min-width:0;border:1px solid #494943;border-radius:2px;background:#0d0d0c;overflow:hidden;transition:border-color .15s ease}.project-preview:has(a:hover),.project-preview:has(a:focus-visible){border-color:var(--interaction)}.project-preview a:focus-visible{outline-offset:-5px}.preview-stage{display:flex;align-items:center;aspect-ratio:16/10;overflow:hidden}.preview-stage img{display:block;width:100%;height:100%;object-fit:contain;min-width:0;transition:transform .18s ease}.preview-stage:hover img{transform:scale(1.015)}.preview-stage:hover{background:#191918}.preview-suite{display:grid;grid-template-columns:.69fr 1.35fr;aspect-ratio:2/1;gap:24px;padding:24px;background:#151513}.preview-suite img{border:1px solid #484842;border-radius:4px;background:#0b0b0b}.project-preview figcaption{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:5px 12px;padding:12px 16px;color:#d4d3cc;font-size:12px;line-height:1.5;border-top:1px solid #494943}.project-preview .preview-label{color:#b8b8b0}.preview-mobile-caption{display:none}.preview-crop{align-items:flex-start;aspect-ratio:1.3;background:#0b0b0b}.preview-crop img{object-fit:cover;object-position:top;-webkit-mask-image:linear-gradient(#000 80%,transparent);mask-image:linear-gradient(#000 80%,transparent)}.project-endorsement{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,auto);align-items:end;gap:26px 55px;margin:0;padding:50px 0 46px;border-bottom:1px solid var(--line)}.project-endorsement blockquote{margin:0;padding-left:28px;border-left:2px solid var(--accent);font-size:clamp(24px,2.4vw,34px);line-height:1.35;letter-spacing:-.02em;color:var(--text);max-width:32ch;text-wrap:balance}.project-endorsement figcaption{font-size:14px;line-height:1.6;padding-bottom:4px}.project-endorsement figcaption span{display:block;color:var(--muted);font-size:12px;margin-top:7px}.case-study{--case-accent: #c5cec1;--case-surface: #181b17;margin:0 auto}.case-fantasy-hockey{--case-accent: #d1cdc0;--case-surface: #1b1b18}.case-wikirivals{--case-accent: #d7c697;--case-surface: #201e17}.case-hero{display:grid;grid-template-columns:1fr 1.15fr;align-items:center;gap:48px;margin:32px 0 44px}.case-hero .preview-suite{padding:16px;gap:14px;aspect-ratio:1.6}.case-header{background:var(--page-surface);padding-block:15px}.case-header .project-category{margin-bottom:22px}.case-header h1{font-family:Archivo,Arial,sans-serif;font-style:italic;font-weight:800;text-transform:uppercase;font-size:clamp(40px,4.1vw,61px);line-height:1.02;letter-spacing:-.035em;word-spacing:.04em;margin:0 0 24px;padding-right:.1em;text-wrap:balance}.case-subtitle{color:#c8c8c5;font-size:23px;line-height:1.5;max-width:28ch;margin:0;letter-spacing:-.015em}.case-header .award-badge{margin-top:26px}.case-opening-links{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:26px}.case-opening-links .text-link{font-size:14px;gap:12px}.case-result{display:grid;grid-template-columns:220px 1fr;gap:36px;border-block:1px solid var(--line);padding:30px 0;background:var(--page-surface)}.case-result>p{font-size:14px;color:var(--muted);margin:6px 0 0;line-height:1.6}.case-result strong{font-size:31px;line-height:1.25;font-weight:700;letter-spacing:-.025em;color:var(--case-accent)}.case-result div>p{font-size:16px;line-height:1.7;margin:13px 0 0;max-width:68ch;color:#c8c8c5}.case-meta{padding:32px 0;border-bottom:1px solid var(--line);background:var(--page-surface)}.case-meta dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:30px;margin:0}.case-meta dt{font-size:13px;color:var(--muted);margin:0 0 11px}.case-meta dd{font-size:14px;line-height:1.7;margin:0;max-width:35ch}.case-meta .technology-list{font-size:13px;gap:5px 12px}.case-product-capture{margin:48px 0 0;background:var(--page-surface)}.capture-image-link{display:block;border:1px solid var(--line);background:#0b0b0b}.capture-image-link:hover{border-color:var(--case-accent)}.capture-image-link img{display:block;width:100%;height:auto;max-height:630px;object-fit:contain}.capture-enlarge{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:44px;padding:9px 14px;border-top:1px solid var(--line);background:#191918;color:#dfded6;font-size:13px;line-height:1.5}.capture-enlarge>span{font-size:22px;line-height:1}.case-product-capture figcaption{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;padding-top:20px}.case-product-capture figcaption strong{display:block;font-size:16px;line-height:1.6}.case-product-capture figcaption p{max-width:80ch;margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.75}.capture-links{display:flex;flex-direction:column;flex-shrink:0}.capture-links a{padding-block:11px;min-height:44px;font-size:14px;color:var(--case-accent);text-decoration:underline;text-underline-offset:5px}.capture-links a:hover{color:var(--text)}.case-section .case-product-capture{margin:30px 0}.capture-portrait{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:26px}.capture-portrait figcaption{flex-direction:column;gap:10px}.image-viewer{width:min(1280px,100vw - 48px);height:min(900px,100dvh - 48px);max-width:none;max-height:none;margin:auto;padding:0;border:1px solid #72726a;background:#111110;color:var(--text);overflow:hidden}.image-viewer:not([open]){display:none}.image-viewer[open]{display:flex;flex-direction:column}.image-viewer::backdrop{background:#000c}.image-viewer-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:16px 20px;border-bottom:1px solid #44443f}.image-viewer-header h2{margin:0;font-size:20px;font-weight:700;line-height:1.35;letter-spacing:-.02em}.image-viewer button{display:inline-flex;align-items:center;justify-content:center;gap:14px;flex-shrink:0;min-height:44px;padding:9px 14px;border:1px solid #7c7c72;border-radius:3px;color:var(--text);background:#1b1b18;cursor:pointer;font-size:14px}.image-viewer button:hover,.image-viewer button[aria-pressed=true]{color:#111110;background:var(--interaction);border-color:var(--interaction)}.image-viewer-header button>span{font-size:22px;line-height:1}.image-viewer-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px;padding:12px 20px}.image-viewer-actions a{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--interaction);font-size:14px;text-decoration:underline;text-underline-offset:4px}.image-viewer-actions>span{color:var(--muted);font-size:13px}.image-viewer-stage{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;background:#080808}.image-viewer-stage img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.image-viewer-stage[data-actual-size=true]{display:block}.image-viewer-stage:focus-visible{outline-offset:-4px}.image-viewer-stage[data-actual-size=true] img{max-width:none;max-height:none}.image-viewer-source{flex-shrink:0;border-top:1px solid #44443f}.image-viewer-source summary{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:44px;padding:10px 20px;color:#cfcec7;cursor:pointer;font-size:13px;list-style:none}.image-viewer-source summary::-webkit-details-marker{display:none}.image-viewer-source summary>span:before{content:"+";font-size:20px}.image-viewer-source[open] summary>span:before{content:"−"}.image-viewer-caption{max-height:25dvh;overflow-y:auto;margin:0 20px 14px;padding:4px 0;color:#cfcec7;font-size:13px;line-height:1.6}.case-reading-layout{display:grid;grid-template-columns:210px minmax(0,740px);justify-content:space-between;gap:64px;margin:68px 0 48px}.case-body>.case-product-capture{margin:0 0 48px}.case-contents{position:sticky;top:114px;align-self:start;background:var(--page-surface)}.case-contents>p{margin:0 0 15px;color:var(--muted);font-size:13px}.case-contents-toggle{display:none}.case-contents-links{max-height:max(44px,100dvh - 162px);overflow-y:auto;overscroll-behavior:contain}.case-contents a{display:block;padding:12px 14px;min-height:44px;border-left:2px solid var(--line);color:var(--muted);font-size:14px;line-height:1.45}.case-contents a:hover{color:var(--case-accent);text-decoration:underline;text-underline-offset:5px}.case-contents a:focus-visible{outline-offset:-4px}.case-contents a[aria-current=location]{color:var(--case-accent);background:var(--case-surface);border-left-color:var(--case-accent);font-weight:700}html:not([data-interactive=true]) .case-contents{position:static}html:not([data-interactive=true]) .case-contents-toggle{display:none}html:not([data-interactive=true]) .case-contents>p{display:block}html:not([data-interactive=true]) .case-contents-links{display:block;max-height:none}html:not([data-interactive=true]) .case-page :is(.case-section,.case-details,.case-product-capture){scroll-margin-top:0}.case-body{min-width:0;background:var(--page-surface)}.case-section{border-top:1px solid var(--line);padding-top:42px;margin-bottom:44px}.case-overview{border:0;padding-top:0}.case-summary{margin:0;border-top:1px solid var(--line)}.case-summary>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:24px;padding:22px 0;border-bottom:1px solid var(--line)}.case-summary dt{padding-top:5px;font:13px/1.6 Fira Code,monospace;color:var(--case-accent)}.case-summary dd{margin:0;max-width:60ch;font-size:18px;line-height:1.7;color:var(--text)}.case-section>h2,.case-details>h2{margin:0 0 22px;font-size:30px;line-height:1.2;letter-spacing:-.03em;text-wrap:balance}.case-section>p{max-width:64ch;font-size:17px;line-height:1.8;margin:0 0 21px;color:#c8c8c5}.case-section>p:last-child{margin-bottom:0}.case-section>.case-callout{max-width:none;margin-top:27px;padding:18px 22px;border-left:2px solid var(--case-accent);background:var(--case-surface);font-size:15px;line-height:1.8;color:#d5d5ce}.case-flow{margin:28px 0;padding:24px;background:var(--case-surface);border:1px solid #3a4141}.case-flow figcaption{font-size:15px;font-weight:700;line-height:1.5;margin-bottom:24px}.case-flow ol{display:flex;list-style:none;counter-reset:flow;padding:0;margin:0;gap:20px}.case-flow li{flex:1;min-width:0;counter-increment:flow}.case-flow li:before{content:counter(flow) ".";display:block;font:13px Fira Code,monospace;color:var(--case-accent);margin-bottom:12px}.case-flow strong{display:block;font-size:15px;line-height:1.5;margin-bottom:7px}.case-flow li>span{display:block;font-size:13px;line-height:1.6;color:#c8c8c5}.case-details{border-bottom:1px solid #51514b;padding-top:12px}.case-details>h2{margin-bottom:28px}.case-details details{border-top:1px solid #51514b}.case-details summary{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 0;font-size:18px;line-height:1.5;cursor:pointer;list-style:none}.case-details summary::-webkit-details-marker{display:none}.case-details summary>span:before{content:"+";font:22px Fira Code,monospace}.case-details details[open] summary>span:before{content:"−"}.case-details summary:hover{color:var(--case-accent)}.detail-content{padding:6px 0 29px;display:flex;flex-direction:column;gap:28px}.detail-item{display:grid;grid-template-columns:175px 1fr;gap:30px}.detail-item h3{font-size:15px;line-height:1.6;margin:0}.detail-item p{font-size:16px;line-height:1.8;color:#c8c8c5;margin:0}.source-note{font-size:12px;line-height:1.8;color:var(--muted);margin:26px 0 0;max-width:80ch}.case-navigation{display:flex;align-items:center;justify-content:space-between;gap:35px;border-top:1px solid var(--line);padding:34px 0;background:var(--page-surface)}.next-project{text-align:right;max-width:70%;padding-block:8px}.next-project>span{display:block;color:var(--muted);font-size:13px;margin-bottom:10px}.next-project strong{display:block;font-size:30px;font-weight:700;line-height:1.2;letter-spacing:-.025em}.next-project strong>span{display:inline-block;padding-left:12px;color:var(--interaction)}.next-project:hover strong{color:var(--interaction)}@media (max-width: 1050px){.flagship-copy{gap:36px}.flagship-copy .project-title{font-size:38px}.flagship-description>p{font-size:17px}.personal-projects{gap:30px}.project-metrics>div{padding-inline:20px}}@media (max-width: 800px){.flagship-main{gap:28px;padding-top:0;padding-bottom:28px}.flagship-copy{grid-template-columns:1fr;gap:24px}.flagship-copy .project-title{font-size:36px;max-width:19ch}.flagship-description>p{max-width:54ch}.preview-suite{gap:16px;padding:16px}.personal-projects{gap:26px}.project-card .project-title{font-size:28px}.project-card-copy>p:not(.project-category){font-size:16px}.project-metrics dd{font-size:37px}.project-metrics dt{font-size:14px}.project-metrics>div{padding:24px 18px}}@media (max-width: 580px){.case-study-link{gap:12px;background:transparent;color:var(--text);border-color:#74746d}.case-study-link:hover{background:#1b1b19;border-color:var(--interaction)}.personal-projects{grid-template-columns:1fr;gap:45px;margin-top:40px}.preview-suite{display:block;aspect-ratio:596/866;padding:0}.preview-suite img:first-child{object-fit:contain;border:0}.preview-suite img:last-child{display:none}.preview-desktop-caption{display:none}.preview-mobile-caption{display:inline}.project-endorsement{grid-template-columns:1fr;gap:20px;padding-block:34px 30px}.project-endorsement blockquote{padding-left:20px;font-size:22px}.project-endorsement figcaption{padding-left:22px}.case-hero .preview-crop{aspect-ratio:1.05}.project-card-copy{padding-top:23px}.project-category{font-size:11px}.flagship-copy .project-title{font-size:33px;max-width:16ch}.project-metrics{grid-template-columns:minmax(82px,max-content) minmax(0,1fr);column-gap:20px}.project-metrics>div,.project-metrics>div:first-child,.project-metrics>div:last-child{grid-column:1/-1;grid-row:auto;grid-template-columns:subgrid;grid-template-rows:none;row-gap:7px;border-right:0;border-bottom:1px solid var(--line);padding:24px 0}.project-metrics>div:last-child{border-bottom:0}.project-metrics dt{grid-column:2;order:0;align-self:center;font-size:15px}.project-metrics dd:not(.metric-note){grid-column:1;grid-row:1/3;margin:0;font-size:34px;align-self:start}.project-metrics .metric-note{grid-column:2;margin:0;font-size:12px}}@media (max-width: 360px){.project-metrics{grid-template-columns:minmax(75px,max-content) minmax(0,1fr);column-gap:15px}.project-metrics dd:not(.metric-note){font-size:31px}}@media (max-width: 1100px){.case-hero{gap:32px}.case-header h1{font-size:4.3vw}.case-subtitle{font-size:21px}.case-reading-layout{grid-template-columns:170px minmax(0,1fr);gap:40px}.case-flow{padding:20px}.case-flow ol{gap:15px}.detail-item{grid-template-columns:1fr;gap:10px}}@media (max-width: 800px){.case-hero{grid-template-columns:1fr;gap:30px;margin-top:25px}.case-header{padding:0}.case-header h1{font-size:clamp(37px,7.5vw,56px);max-width:18ch}.case-subtitle{max-width:40ch}.case-header .award-badge{margin-top:20px}.case-hero .visual-wikirivals .visual-canvas{min-height:330px}.case-result{grid-template-columns:1fr;gap:15px;padding-block:25px}.case-result strong{font-size:28px}.case-result>p{margin:0}.case-meta dl{grid-template-columns:1fr 1fr;gap:25px}.case-reading-layout{grid-template-columns:1fr;gap:28px;margin-top:35px}.case-contents{top:76px;z-index:5;border:1px solid var(--line)}.case-contents>p{display:none}.case-contents-toggle{display:flex;justify-content:space-between;align-items:center;gap:20px;width:100%;min-height:68px;padding:10px 15px;border:0;color:var(--text);background:var(--page-surface);text-align:left;cursor:pointer}.contents-label{display:block;font-size:12px;color:var(--muted);line-height:1.5}.contents-current{display:block;font-size:14px;font-weight:700;line-height:1.5;margin-top:3px}.case-contents-toggle>span:last-child{font-size:25px;color:var(--case-accent)}.case-contents-links{display:none;max-height:var(--case-menu-max-height, min(50dvh, 100dvh - 160px));border-top:1px solid var(--line);padding-block:8px}.case-contents[data-expanded=true] .case-contents-links{display:block;position:absolute;top:100%;left:-1px;right:-1px;border:1px solid var(--line);background:var(--page-surface)}.case-contents[data-expanded=true][data-placement=above] .case-contents-links{top:auto;bottom:100%}.case-contents a{padding:12px 15px;border-left-color:transparent}.case-page :is(.case-section,.case-details,.case-product-capture){scroll-margin-top:76px}.case-section{padding-top:34px;margin-bottom:35px}.case-overview{padding-top:0}.case-section>h2,.case-details>h2{font-size:28px;text-wrap:initial}.case-section>p{font-size:16px}.case-summary>div{grid-template-columns:1fr;gap:6px;padding-block:18px}.case-summary dt{padding-top:0}.case-summary dd{font-size:17px}.case-flow ol{gap:20px}.next-project strong{font-size:25px}}@media (max-width: 580px){.case-header h1{font-size:clamp(31px,8.5vw,44px)}.case-hero .preview-suite{padding:0;aspect-ratio:596/866}.image-viewer{width:calc(100vw - 24px);height:calc(100dvh - 24px)}.image-viewer-header{padding:12px;gap:12px}.image-viewer-header h2{font-size:17px}.image-viewer-actions{padding:10px 12px;gap:6px 16px}.image-viewer-actions>span{flex-basis:100%}.image-viewer-source summary{padding-inline:12px}.image-viewer-caption{margin-inline:12px;font-size:12px}.case-product-capture{margin-top:30px}.capture-portrait{display:block}.case-product-capture figcaption{flex-direction:column;gap:5px;padding-top:15px}.capture-links{flex-direction:row;flex-wrap:wrap;gap:0 22px}.case-subtitle{font-size:20px}.case-result strong{font-size:26px}.case-meta dl{gap:24px 20px}.case-meta :is(.case-credit,.case-technologies){grid-column:1/-1}.case-meta dd{max-width:none;font-size:15px}.case-meta .technology-list{font-size:14px}.case-section>h2,.case-details>h2{font-size:27px}.case-section>.case-callout{padding:17px 19px;font-size:14px}.case-flow ol{display:grid;gap:20px}.case-flow li{display:grid;grid-template-columns:22px 1fr;gap:0 10px}.case-flow li:before{grid-row:1/3;padding-top:3px}.case-flow strong{margin-bottom:4px}.case-flow li>span{grid-column:2;font-size:14px}.case-details summary{font-size:17px;gap:18px}.detail-item h3{font-size:16px}.detail-item p{font-size:15px}.case-navigation{flex-direction:column;align-items:flex-start;gap:18px}.next-project{text-align:left;max-width:100%}}@media (max-height: 600px){.image-viewer-header{padding:8px 12px}.image-viewer-header h2{font-size:16px}.image-viewer-actions{padding:4px 12px}.image-viewer-actions>span{display:none}}
