:root{color-scheme:dark;--black: oklch(7.5% .009 260);--panel: oklch(10.5% .012 260);--ink: oklch(94% .008 105);--muted: oklch(64% .014 250);--line: oklch(25% .016 255);--acid: oklch(89% .22 118);--blue: oklch(74% .17 233);--orange: oklch(74% .19 48);--teal: oklch(78% .13 185);--accent: var(--acid);--font: "Chivo", "Helvetica Neue", Arial, sans-serif;--display: "League Gothic", "Arial Narrow", sans-serif;--edge: clamp(1rem, 2.4vw, 2.25rem);--ease: cubic-bezier(.16, 1, .3, 1)}[data-accent=teal]{--accent: var(--teal)}[data-accent=blue]{--accent: var(--blue)}[data-accent=orange]{--accent: var(--orange)}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:var(--black);color:var(--ink);font-family:var(--font);font-synthesis:none;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:var(--black)}:focus-visible{outline:2px solid var(--ink);outline-offset:-4px}.skip-link{position:fixed;z-index:100;top:.75rem;left:.75rem;padding:.7rem .9rem;background:var(--ink);color:var(--black);font-size:.75rem;font-weight:700;transform:translateY(-170%)}.skip-link:focus,.skip-link:focus-visible{transform:translateY(0)}.home-page{min-height:100svh}.home-layout{display:grid;grid-template-columns:minmax(19rem,.34fr) minmax(0,.66fr);min-height:100svh}.profile{position:relative;display:grid;grid-template-columns:minmax(25rem,1.25fr) minmax(20rem,.75fr);align-items:end;gap:clamp(2rem,6vw,7rem);padding:var(--edge);overflow:hidden;border-bottom:1px solid var(--line)}.profile:before{position:absolute;right:50%;bottom:0;left:0;height:1px;background:var(--line);content:"";transform:translateY(-50%)}.contact-links{position:absolute;top:var(--edge);right:var(--edge);display:flex;gap:1.5rem;font-size:.76rem;font-weight:600}.contact-links a:hover{color:var(--acid)}.profile>h1{position:relative;z-index:1;margin:0;font-size:clamp(5.6rem,10.5vw,10.5rem);font-weight:500;letter-spacing:-.075em;line-height:.72}.profile>h1 span{display:block}.profile>h1 span:last-child{color:var(--acid)}.profile-copy{align-self:end;max-width:33rem}.profile-copy>p{max-width:33rem;margin:0 0 clamp(1.5rem,4vh,3rem);font-size:clamp(1.05rem,1.5vw,1.35rem);line-height:1.45}.skills{display:grid;grid-template-columns:4rem 1fr;gap:1.5rem;padding-top:.9rem;border-top:1px solid var(--line)}.skills h2{margin:0;color:var(--muted);font-size:.76rem;font-weight:500}.skills ul{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;margin:0;padding:0;list-style:none;font-size:clamp(.8rem,1vw,.95rem);line-height:1.45}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(20rem,1fr)}.project-card{position:relative;display:flex;min-width:0;flex-direction:column;justify-content:space-between;padding:var(--edge);overflow:hidden;border-right:1px solid var(--line);border-bottom:1px solid var(--line);isolation:isolate;container-type:inline-size}.project-card:nth-child(2n){border-right:0}.project-card:before{position:absolute;z-index:-1;inset:0;background:var(--project-color);content:"";transform:translateY(101%);transition:transform .5s var(--ease)}.project-cliprelay{--project-color: var(--acid)}.project-quizcraft{--project-color: var(--blue)}.project-detroit{--project-color: var(--teal)}.project-detroit .project-lockup{height:4.5rem;max-width:12rem}.project-detroit:hover .project-lockup img,.project-detroit:focus-visible .project-lockup img{filter:brightness(0)}.project-bulletproof{--project-color: var(--orange)}.project-card:hover:before,.project-card:focus-visible:before{transform:translateY(0)}.project-arrow{position:absolute;top:var(--edge);right:var(--edge);color:var(--project-color);font-size:1.3rem;transition:color .25s ease,transform .3s var(--ease)}.project-card:hover .project-arrow,.project-card:focus-visible .project-arrow{color:var(--black);transform:translate(.25rem,-.25rem)}.project-card p{max-width:21rem;margin:0;padding-right:2.75rem;color:var(--muted);font-size:clamp(.82rem,1vw,.96rem);line-height:1.5;transition:color .25s ease}.project-title{display:grid;gap:1.4rem;flex:1;align-content:end}.project-lockup{position:relative;display:block;max-width:15rem;height:5rem}.project-lockup img{display:block;width:100%;height:100%;object-fit:contain;object-position:left center;transition:opacity .25s ease}.project-lockup .lockup-ink{position:absolute;inset:0;opacity:0}.project-card:hover .lockup-color,.project-card:focus-visible .lockup-color{opacity:0}.project-card:hover .lockup-ink,.project-card:focus-visible .lockup-ink{opacity:1}.project-card h2{margin:0;font-family:var(--display);font-size:clamp(3rem,18cqi,5.5rem);font-weight:400;letter-spacing:-.025em;line-height:.86;text-transform:uppercase;transition:color .25s ease,transform .4s var(--ease)}.project-card:hover p,.project-card:hover h2,.project-card:focus-visible p,.project-card:focus-visible h2{color:var(--black)}.project-card:hover h2,.project-card:focus-visible h2{transform:none}.detail-page{min-height:100svh;overflow-x:hidden}.detail-shell{display:grid;grid-template-columns:minmax(16rem,.62fr) minmax(30rem,1.38fr);min-height:100svh}.detail-rail{position:sticky;top:0;display:grid;grid-template-rows:auto 1fr;height:100svh;padding:var(--edge);border-right:1px solid var(--line);background:linear-gradient(var(--line) 1px,transparent 1px) 0 0 / 100% 50%,var(--panel)}.back-link{width:max-content;color:var(--muted);font-size:.76rem;font-weight:600}.back-link:hover{color:var(--accent)}.rail-title{align-self:center;transform:translateY(-3vh)}.rail-logo{width:clamp(11rem,18vw,15rem);height:auto;margin-bottom:2.5rem}.rail-title h1{margin:0;font-size:clamp(3.5rem,6vw,7.4rem);font-weight:500;letter-spacing:-.075em;line-height:.88;overflow-wrap:anywhere}.detail-content{display:grid;align-items:center;min-height:100svh;padding:clamp(3rem,7vw,8rem)}.detail-body{max-width:58rem}.detail-lede{max-width:24ch;margin:0 0 clamp(3rem,8vh,6rem);font-size:clamp(1.8rem,3.5vw,4rem);font-weight:400;letter-spacing:-.048em;line-height:1.08}.detail-lede strong{color:var(--accent);font-weight:500}.detail-notes{max-width:46rem;margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.detail-notes li{padding:1rem 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:clamp(.82rem,1vw,.95rem);line-height:1.5}.detail-stack{max-width:46rem;margin-top:2rem}.detail-stack h2{margin:0 0 1rem;color:var(--accent);font-size:.75rem;font-weight:500}.detail-stack dl{display:grid;gap:.65rem;margin:0;font-size:clamp(.82rem,1vw,.95rem);line-height:1.5}.detail-stack dl>div{display:grid;grid-template-columns:minmax(0,8rem) minmax(0,1fr);gap:1rem}.detail-stack dt{color:var(--muted)}.detail-stack dd{margin:0}.detail-links{display:flex;gap:1.5rem;margin-top:2.5rem;font-size:.82rem;font-weight:600}.detail-links a:hover{color:var(--accent)}.detail-figure{position:relative;margin:clamp(3rem,8vh,6rem) 0 0;padding-top:1.1rem;border-top:1px solid var(--line);overflow:hidden}.detail-figure:before{position:absolute;top:0;right:0;left:0;height:1px;background:var(--accent);content:"";transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}.detail-figure.is-revealed:before{transform:scaleX(1)}.detail-figure-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.2rem;color:var(--muted);font-size:.76rem;font-weight:600}.detail-figure-head strong{color:var(--ink);font-weight:600}.detail-figure-head .figure-count{color:var(--muted);font-variant-numeric:tabular-nums}.detail-figure figure{position:relative;margin:0}.detail-figure figure,.detail-figure img{opacity:1}.detail-figure.is-revealed figure,.detail-figure.is-revealed img{transform:translateY(0);opacity:1}.detail-figure img{display:block;width:100%;height:auto;border:1px solid var(--line)}.detail-figure figcaption{display:flex;justify-content:space-between;gap:1rem;margin-top:.7rem;color:var(--muted);font-size:.72rem;line-height:1.5}.detail-figure figcaption .fig-tag{color:var(--accent);font-weight:600}@media(max-width:760px){.detail-figure{margin-top:3rem}.detail-figure img{border-radius:0}}@media(max-width:760px){.home-page{min-height:100svh}.home-layout{height:auto;min-height:100svh;grid-template-rows:auto auto}.profile{display:grid;grid-template-columns:.8fr 1.2fr;align-items:end;gap:1rem;padding-top:5rem;padding-bottom:2rem}.profile:before{display:none}.contact-links{right:var(--edge);left:var(--edge);justify-content:space-between}.profile>h1{font-size:clamp(4.2rem,20vw,6.4rem);line-height:.75}.profile-copy>p{margin-bottom:1.2rem;font-size:clamp(.78rem,3vw,.93rem);line-height:1.45}.skills{grid-template-columns:1fr;gap:.5rem;padding-top:.65rem}.skills ul{gap:.18rem .7rem;font-size:clamp(.68rem,2.6vw,.8rem)}.project-grid{grid-template-columns:1fr;grid-auto-flow:row;grid-auto-columns:auto;grid-auto-rows:minmax(15rem,auto);overflow:visible}.project-card{display:grid;grid-template-columns:1fr 1rem;grid-template-rows:auto 1fr;align-items:start;gap:.8rem;border-right:0;border-bottom:1px solid var(--line)}.project-card:last-child{border-bottom:0}.project-card:before{transform:translate(-101%)}.project-card:hover:before,.project-card:focus-visible:before{transform:translate(0)}.project-arrow{position:static;grid-column:2;grid-row:1;justify-self:end}.project-card p{grid-column:1;grid-row:1;padding:0;font-size:clamp(.68rem,2.5vw,.8rem)}.project-title{grid-column:1 / -1;grid-row:2;align-self:end;gap:1rem}.project-lockup{width:100%;height:3.5rem}.project-card h2{grid-column:auto;grid-row:auto;align-self:end;font-size:clamp(3.2rem,15vw,4.6rem)}.detail-shell{grid-template-columns:1fr}.detail-rail{position:relative;height:42svh;min-height:19rem;border-right:0;border-bottom:1px solid var(--line)}.detail-content{min-height:auto;padding:clamp(3rem,12vw,5rem) var(--edge)}.detail-lede{margin-bottom:3rem}}@media(max-width:430px){.profile{grid-template-columns:.9fr 1.1fr}.profile>h1{font-size:clamp(3.9rem,18vw,5rem)}.project-card{grid-template-columns:1fr 1rem;gap:.6rem}.project-card h2{font-size:clamp(3rem,14vw,3.9rem)}}@media(max-height:700px)and (min-width:761px){.profile>h1{font-size:clamp(4.6rem,8vw,7rem)}.profile-copy>p{margin-bottom:1rem;font-size:1rem}.project-card h2{font-size:clamp(3rem,18cqi,5.5rem)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.project-index{display:grid;grid-template-rows:1fr;min-width:0;min-height:100svh}.home-layout{grid-template-columns:1fr;grid-template-rows:auto 1fr;width:100%;min-height:100svh}.profile{grid-template-columns:1fr 1fr;gap:3rem;padding:6rem var(--edge) 3.5rem}.profile:before{display:none}.profile>h1{font-size:clamp(3.5rem,5.8vw,8rem);line-height:.9}.profile>h1 span{display:inline}.profile>h1 span+span{margin-left:.16em}.profile-copy{max-width:43rem;justify-self:end}.profile-copy>p{max-width:43rem;font-size:clamp(.95rem,1vw,1.3rem);margin-bottom:1rem}.skills{padding-top:.65rem}.project-index{min-height:0}.project-grid{grid-auto-rows:minmax(15rem,1fr)}.project-card{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:clamp(1.5rem,3vw,4rem);padding-block:clamp(1.5rem,3vh,3rem)}.project-title{display:flex;flex-direction:column;align-items:flex-start;gap:clamp(.8rem,1.5vh,1.5rem);min-width:0}.project-lockup{width:100%;height:clamp(2.5rem,4vw,5rem);max-width:17rem}.project-detroit .project-lockup{height:clamp(2.5rem,4vw,5rem)}.project-card h2{font-size:clamp(2.6rem,3.3vw,5.5rem)}.project-card p{max-width:32ch;padding:0;font-size:clamp(.82rem,.9vw,1.1rem)}.project-preview{display:block;width:100%;height:auto;max-height:32vh;object-fit:contain;border:1px solid var(--line)}@media(min-width:1800px){.home-page{--edge: clamp(2.25rem, 3vw, 6rem)}.profile{padding-top:8.5rem;padding-bottom:4rem}.project-lockup{max-width:20rem}}@media(max-width:1000px){.profile{gap:1.5rem}.profile>h1 span{display:block}.profile>h1 span+span{margin-left:0}.project-card{grid-template-columns:1fr}.project-preview{display:none}.project-title{padding-top:0}.project-card h2{font-size:clamp(3rem,6vw,4.5rem)}}@media(max-width:760px){.profile{grid-template-columns:1fr;gap:1.5rem;padding-top:5.5rem}.profile>h1{font-size:clamp(3rem,10vw,4.5rem)}.profile>h1 span{display:inline}.profile>h1 span+span{margin-left:.16em}.profile-copy{justify-self:stretch}.project-card{min-height:15rem;grid-template-rows:auto}.project-card h2{align-self:auto}.project-title{grid-row:auto;grid-column:1;align-self:center}.project-arrow{position:absolute;top:var(--edge);right:var(--edge)}.project-card p{font-size:.875rem;max-width:34ch}}@media(min-width:1001px)and (max-height:850px){.profile{padding-bottom:3rem}.project-preview{max-height:24vh}}
