@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Space+Grotesk:wght@400;500;600;700&display=swap";:root{--ink:#101312;--paper:#f4f1e9;--muted:#505750;--line:#d9d7cb;--lime:#d7f35d;--lime-text:#596800;--coral:#ff795f;--blue:#8ba9ff;--footer-bg:#c9d4ec;--white:#fffdf7}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:hidden}body{background:var(--paper);color:var(--ink);margin:0;font-family:Space Grotesk,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit}.coral-txt{color:var(--coral)}.section-wrap{width:min(1160px,100% - 64px);margin:0 auto}.site-header{justify-content:space-between;align-items:center;width:calc(100% - 64px);max-width:1160px;margin:auto;padding:28px 0;display:flex;position:relative}.wordmark{letter-spacing:.03em;font-family:DM Mono,monospace;font-size:12px}.wordmark span{background:var(--ink);color:var(--lime);place-items:center;width:27px;height:27px;margin-right:9px;font-weight:500;display:inline-grid}.main-nav{align-items:center;gap:29px;font-size:13px;display:flex}.main-nav>a:not(.nav-contact){color:var(--muted)}.main-nav>a:hover,.text-link:hover{color:var(--coral)}.nav-contact{align-items:center;gap:5px;font-weight:600;display:flex}.language-toggle{border:1px solid var(--line);color:var(--muted);cursor:pointer;letter-spacing:.08em;background:0 0;align-items:center;gap:6px;padding:8px 10px;font-family:DM Mono,monospace;font-size:10px;display:inline-flex}.language-toggle .is-active{color:var(--ink);font-weight:500}.language-toggle:hover{border-color:var(--ink);color:var(--ink)}.nav-contact svg,.footer-contact span{align-items:center;display:inline-flex}.footer-contact span{gap:7px}.menu-button{background:0 0;border:0;display:none}.hero{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);align-items:center;gap:70px;min-height:630px;padding:80px 0 120px;display:grid}.eyebrow,.section-label,.project-type,.period,.skill-number,.visual-caption,.footer-bottom,.stack{letter-spacing:.08em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:12px}.eyebrow{color:var(--muted);align-items:center;gap:9px;display:flex}.status-dot{background:var(--lime);border:1px solid var(--ink);border-radius:50%;width:8px;height:8px}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.08em;max-width:750px;margin:26px 0 31px;font-size:clamp(55px,7.5vw,106px);line-height:.91}h2{letter-spacing:-.07em;font-size:clamp(38px,5vw,67px);line-height:.95}em{color:var(--coral);font-style:normal}u{color:var(--lime);font-style:normal;text-decoration:none}.hero-summary{color:var(--muted);max-width:500px;font-size:17px;line-height:1.6}.hero-actions{align-items:center;gap:28px;margin-top:36px;display:flex}.button{align-items:center;gap:14px;padding:15px 19px;font-size:13px;font-weight:600;display:inline-flex}.button-primary{background:var(--ink);color:var(--paper)}.button-primary:hover{background:var(--coral);color:var(--ink)}.button-secondary{border:1px solid var(--ink)}.button-secondary:hover{background:var(--lime)}.text-link{border-bottom:1px solid var(--ink);padding-bottom:4px;font-size:13px}.hero-visual{aspect-ratio:736/682;background:var(--ink);position:relative;overflow:hidden}.visual-grid{background-image:linear-gradient(#f4f1e91a 1px,#0000 1px),linear-gradient(90deg,#f4f1e91a 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0}.hero-visual:before{background:var(--lime);content:"";width:250px;height:220px;position:absolute;top:64px;right:-45px;transform:rotate(25deg)}.hero-visual:after{border:1px solid var(--coral);content:"";width:215px;height:215px;position:absolute;top:145px;left:-65px;transform:rotate(-25deg)}.monogram{color:var(--paper);letter-spacing:-.18em;z-index:1;font-size:180px;font-weight:700;line-height:.8;position:absolute;top:31%;left:12%}.monogram span{color:var(--coral)}.visual-caption{color:var(--paper);opacity:.75;z-index:1;justify-content:space-between;display:flex;position:absolute;bottom:22px;left:25px;right:25px}.section-label{color:var(--muted);padding-top:7px}.about{border-top:1px solid var(--line);grid-template-columns:180px 1fr;gap:60px;padding:90px 0 120px;display:grid}.about-content{max-width:840px}.about h2{max-width:720px}.about-text{column-count:2;column-gap:35px;margin:55px 0 50px}.about-text p{break-inside:avoid;color:var(--muted);margin:0 0 12px;font-size:16px;line-height:1.65}.about-text p:nth-child(3){break-before:column}.facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.fact-card{background:var(--white);border:1px solid var(--line);border-top:3px solid var(--lime);border-radius:0;min-width:0;padding:17px 15px}.fact-card:nth-child(2){border-top-color:var(--coral)}.fact-card:nth-child(3){border-top-color:var(--blue)}.fact-card span{color:var(--muted);font-family:DM Mono,monospace;font-size:11px;line-height:1.5}.fact-card b{color:var(--ink);margin-bottom:9px;font-family:Space Grotesk,sans-serif;font-size:25px;line-height:1.12;display:block}.skills-band{background:var(--ink);color:var(--paper);padding:84px 0 96px}.skills-band .section-label{color:#949990}.skills-grid{grid-template-columns:repeat(3,1fr);gap:1px;margin-top:64px;display:grid}.methodology-in-skills{padding:36px 0 0}.methodology-in-skills .methodology-content{margin-top:0}.methodology-kicker{color:var(--lime);letter-spacing:.08em;text-transform:uppercase;margin-bottom:20px;font-family:DM Mono,monospace;font-size:11px}.methodology-in-skills .methodology-intro h2{color:var(--paper)}.methodology-in-skills .methodology-intro p{color:#c4c7bf;max-width:700px;margin-bottom:0}.methodology-in-skills .methodology-list{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:42px;display:grid}.methodology-in-skills .methodology-item{--step-accent:var(--lime);box-shadow:none;background:0 0;border:1px solid #f4f1e93d;border-top:0;border-left:0;border-radius:0;min-height:220px;padding:24px 24px 26px;transition:none;display:block}.methodology-in-skills .methodology-list{border-top:1px solid #f4f1e93d}.methodology-in-skills .methodology-item:nth-child(3n){border-right:0}.methodology-in-skills .methodology-item:nth-last-child(-n+3){border-bottom:0}.methodology-in-skills .methodology-step-2,.methodology-in-skills .methodology-step-5{--step-accent:var(--coral)}.methodology-in-skills .methodology-step-3,.methodology-in-skills .methodology-step-6{--step-accent:var(--blue)}.methodology-in-skills .methodology-number{color:var(--step-accent);margin-bottom:24px;padding:0;font-family:DM Mono,monospace;font-size:34px;line-height:1;display:block}.methodology-in-skills .methodology-item h3{color:var(--paper);letter-spacing:-.03em;margin:0 0 10px;font-size:20px}.methodology-in-skills .methodology-item p{color:#c4c7bf;margin:0;font-size:13px;line-height:1.65}.skill-card{border-left:1px solid #3d423d;min-height:265px;padding:0 32px;position:relative}.skill-card:first-child{padding-left:10px}.skill-card svg{color:var(--lime);margin:42px 0 28px}.skill-card.coral svg{color:var(--coral)}.skill-card.blue svg{color:var(--blue)}.skill-number{color:#949990;position:absolute;top:0;right:31px}.skill-card h3{letter-spacing:-.05em;font-size:23px}.skill-card p{color:#a9aea5;max-width:260px;font-size:14px;line-height:1.6}.methodology-content{grid-template-columns:minmax(260px,.75fr) minmax(0,1.25fr);gap:70px;margin-top:35px;display:grid}.methodology-intro h2{margin:0 0 28px;font-size:clamp(36px,4.5vw,60px)}.methodology-intro p{color:var(--muted);font-size:15px;line-height:1.7}.methodology-list{border-top:1px solid var(--line)}.methodology-item{border-bottom:1px solid var(--line);grid-template-columns:35px 28px 1fr;align-items:start;gap:18px;padding:22px 0;display:grid}.methodology-number{color:var(--coral);padding-top:3px;font-family:DM Mono,monospace;font-size:11px}.methodology-item svg{color:var(--ink);margin-top:1px}.methodology-item h3{letter-spacing:-.03em;margin-bottom:7px;font-size:18px}.methodology-item p{color:var(--muted);max-width:520px;margin:0;font-size:13px;line-height:1.6}.experience{border-top:1px solid var(--line);grid-template-columns:180px 1fr;gap:60px;padding:50px 0;display:grid}.experience-list{max-width:830px}.experience-item{border-top:1px solid var(--line);grid-template-columns:150px 1fr;gap:50px;padding:26px 0 36px;display:grid}.period{color:var(--coral);padding-top:7px}.experience-item h3{letter-spacing:-.05em;margin-bottom:7px;font-size:26px}.experience-item p{color:var(--muted);max-width:600px;line-height:1.6}.experience-description{color:var(--muted);max-width:600px;margin:0;padding:0;line-height:1.8;list-style:none}.experience-description li:before{color:var(--coral);content:"•";margin-right:10px}.experience-item .company{color:var(--ink);margin-bottom:18px;font-size:13px}.experience-summary{margin-bottom:15px}.experience-extra{grid-template-rows:0fr;transition:grid-template-rows .22s;display:grid}.experience-extra.is-expanded{grid-template-rows:1fr}.experience-extra-inner{min-height:0;overflow:hidden}.experience-toggle{color:var(--muted);cursor:pointer;text-align:left;text-transform:uppercase;background:0 0;border:0;align-items:center;gap:8px;margin:9px 0 0;padding:4px 0;font-family:DM Mono,monospace;font-size:10px;display:inline-flex}.experience-toggle span{color:var(--coral);font-size:16px;line-height:1}.experience-toggle:hover{color:var(--ink)}.experience-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.experience-stack{border-top:1px solid var(--line);margin-top:20px;padding-top:12px;display:block}.experience-stack p{color:var(--muted);margin:0;font-family:DM Mono,monospace;font-size:11px;line-height:1.7}.projects{border-top:1px solid var(--line);padding:72px 0 108px}.projects-heading{grid-template-columns:180px 1fr;gap:60px;display:grid}.projects-heading h2{margin:0}.project-list{grid-template-columns:repeat(3,1fr);gap:18px;margin-top:65px;display:grid}.project-card{background:var(--white);border:1px solid var(--line);border-top:3px solid var(--lime);box-shadow:none;color:inherit;cursor:pointer;text-align:left;border-radius:0;width:100%;min-height:400px;padding:23px 25px;transition:transform .2s}.project-card:hover{transform:translateY(-2px)}.project-card.coral{border-top-color:var(--coral)}.project-card.blue{border-top-color:var(--blue)}.project-card-button{appearance:none}.project-top{justify-content:space-between;display:flex}.project-top span{font-family:DM Mono,monospace;font-size:13px}.project-image{aspect-ratio:16/9;object-fit:cover;width:calc(100% + 50px);margin:22px -25px 0;display:block}.project-type{color:var(--muted);margin:58px 0 15px}.project-card h3{letter-spacing:-.06em;margin-bottom:20px;font-size:27px}.project-card>p:not(.project-type){color:var(--muted);font-size:14px;line-height:1.65}.stack{border-top:1px solid var(--line);flex-wrap:wrap;gap:8px 15px;margin-top:40px;padding-top:16px;display:flex}.stack span{font-size:9px}.project-modal-backdrop{z-index:20;background:#101312b8;justify-content:center;align-items:center;padding:30px;display:flex;position:fixed;inset:0}.project-modal{background:var(--paper);border:1px solid #1013121f;width:min(940px,100%);max-width:940px;max-height:90vh;position:relative;overflow:auto}.project-modal-close{background:var(--ink);color:var(--paper);cursor:pointer;z-index:2;border:0;place-items:center;padding:10px;display:inline-grid;position:absolute;top:18px;right:18px}.project-modal-image{width:100%;display:block}.project-modal-content{padding:76px 30px 38px}.project-modal-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.project-modal-heading .project-type{margin-top:0}.project-modal-heading h3{margin-bottom:0}.project-website-link{border:1px solid #10131233;flex-shrink:0;align-items:center;gap:10px;margin-top:7px;padding:12px 14px;transition:border-color .2s,transform .2s;display:inline-flex}.project-website-link-mobile{display:none}@media (width>=761px){.project-website-link-mobile{display:none}}.project-website-link:hover{border-color:var(--ink);transform:translate(2px)}.project-website-link span{letter-spacing:.08em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:10px}.project-gallery{border:1px solid #1013121a;margin:32px 0 30px}.project-gallery-feature{background:#fffdf7;padding:10px;position:relative;overflow:hidden}.project-gallery-enlarge{cursor:pointer;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.project-gallery-feature img{object-fit:contain;width:100%;height:100%;max-height:70vh;display:block}.project-gallery-controls{color:var(--ink);justify-content:space-between;align-items:center;padding:8px 10px;display:flex;position:absolute;bottom:14px;left:14px;right:14px}.project-gallery-caption{background:var(--paper);padding:18px 20px 20px}.project-gallery-caption .detail-label{color:var(--ink);margin-bottom:7px}.project-gallery-caption p{color:var(--muted);margin:0}.project-gallery-controls span{letter-spacing:.08em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:10px}.project-gallery-button{color:var(--paper);cursor:pointer;background:#949990;border:0;place-items:center;padding:8px;display:inline-grid}.image-viewer-backdrop{z-index:30;background:#101312f0;justify-content:center;align-items:center;padding:30px;display:flex;position:fixed;inset:0}.image-viewer{touch-action:pan-y;flex-direction:column;align-items:center;width:100%;max-width:1200px;max-height:100%;display:flex;position:relative}.image-viewer img{object-fit:contain;max-width:100%;max-height:calc(100vh - 100px);display:block}.image-viewer p{color:var(--paper);letter-spacing:.08em;text-align:center;text-transform:uppercase;margin:16px 0 0;font-family:DM Mono,monospace;font-size:11px}.image-viewer-button{color:var(--ink);cursor:pointer;z-index:1;background:#f4f1e9e6;border:0;place-items:center;padding:12px;display:inline-grid;position:absolute;top:50%;transform:translateY(-50%)}.image-viewer-button-previous{left:0}.image-viewer-button-next{right:0}.image-viewer-close{background:var(--paper);color:var(--ink);cursor:pointer;border:0;place-items:center;padding:10px;display:inline-grid;position:absolute;top:0;right:0;transform:translateY(-100%)}.project-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:30px;display:grid}.detail-label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px;font-family:DM Mono,monospace;font-size:10px;display:block}.project-detail-grid p{color:var(--ink);margin:0;line-height:1.7}.project-results{background:var(--white);border:1px solid var(--line);border-top:3px solid var(--lime);border-radius:4px;margin-top:30px;padding:24px}.project-results .detail-label{margin-bottom:18px}.project-results ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 24px;margin:0;padding:0;list-style:none;display:grid}.project-results li{align-items:center;gap:10px;line-height:1.4;display:flex}.project-results li svg{color:var(--coral);flex:none}.project-modal-stack{margin-top:30px}.project-links{gap:12px;margin-top:30px}.project-link{border:1px solid #10131233;justify-content:space-between;align-items:center;gap:16px;padding:15px 18px;transition:border-color .2s,transform .2s;display:flex}.project-link:hover{border-color:var(--ink);transform:translate(2px)}.project-link span{letter-spacing:.08em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:11px}.footer{background:var(--footer-bg)}.footer-inner{grid-template-columns:minmax(0,1fr) minmax(280px,.7fr);gap:60px 80px;padding:120px 0 25px;display:grid;position:relative}.footer h2{margin:25px 0 40px}.footer-description{color:var(--muted);max-width:540px;margin:-20px 0 30px;line-height:1.65}.footer .button{background:var(--ink);color:var(--paper)}.footer .button:hover{background:var(--coral);color:var(--ink)}.footer-contact{grid-template-columns:1fr;margin-top:8px;display:grid}.footer-contact a{border-top:1px solid #10131247;border-bottom:1px solid #10131247;grid-template-columns:1fr auto;align-items:center;gap:3px;padding:17px 0;display:grid}.footer-contact a+a{border-top:0}.footer-contact span{text-transform:uppercase;font-family:DM Mono,monospace;font-size:11px}.footer-contact strong{font-size:14px;font-weight:500}.footer-contact a:hover strong,.footer-contact a:hover svg{color:var(--coral)}.footer-bottom{border-top:1px solid #10131247;grid-column:1/-1;justify-content:space-between;margin-top:35px;padding-top:18px;display:flex}.socials{gap:14px;display:flex}.socials a:hover{color:var(--coral)}.reveal{animation:.7s both reveal}.reveal-on-scroll{opacity:0;transition:opacity .7s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.22,.61,.36,1);transition-delay:var(--reveal-delay,0s);transform:translateY(24px)}.reveal-on-scroll.is-visible{opacity:1;transform:translateY(0)}.delay-1{animation-delay:.12s}.role-hero{letter-spacing:-.07em;margin-top:25px;margin-bottom:0;font-size:clamp(38px,5vw,67px);line-height:.95}.dev-hero{margin-top:10px;margin-bottom:20px}.stack-hero{letter-spacing:.08em;font-family:DM Mono,monospace;font-size:1rem;font-weight:500}.marca-about{letter-spacing:.08em;margin-bottom:10px;font-family:DM Mono,monospace;font-size:1rem;font-weight:500}.mb-0{margin-bottom:0}@keyframes reveal{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (width<=760px){.project-gallery-feature,.project-gallery-enlarge{place-items:center;display:grid}.project-gallery-feature img{object-fit:contain;max-height:60vh}.image-viewer-backdrop{padding:0}.image-viewer{justify-content:center;width:100vw;max-width:none;height:100dvh}.image-viewer img{max-width:100vw;max-height:100dvh}.image-viewer-close{position:fixed;top:16px;right:16px;transform:none}.image-viewer-button{background:#f4f1e9d1;position:fixed}.image-viewer-button-previous{left:12px}.image-viewer-button-next{right:12px}.image-viewer p{margin:0;position:fixed;bottom:18px;left:20px;right:20px}.project-detail-grid{grid-template-columns:1fr}.project-results{padding:20px}.project-results ul{grid-template-columns:1fr}.project-modal-content{padding:68px 20px 30px}.project-modal-heading{display:block}.project-modal-backdrop{padding:10px}.project-website-link-desktop{display:none}.project-website-link-mobile{margin-top:30px;display:grid}.project-modal-heading .project-website-link{margin-top:18px}.section-wrap,.site-header{width:calc(100% - 40px)}.site-header{padding:20px 0}.menu-button{display:block}.main-nav{background:var(--paper);border-bottom:1px solid var(--line);z-index:3;flex-direction:column;gap:22px;padding:25px 20px 30px;display:none;position:absolute;top:67px;left:0;right:0}.main-nav.is-open{display:flex}.language-toggle{margin-top:2px}.hero{flex-direction:column;gap:50px;min-height:auto;padding:75px 0 90px;display:flex}.hero-copy{width:100%}.hero-visual{aspect-ratio:736/682;width:100%}.monogram{font-size:130px}.hero-actions{flex-direction:column;align-items:flex-start;gap:22px}.about,.methodology,.experience,.projects-heading{display:block}.methodology{padding:32px 0 0}.methodology-content{margin-top:40px;display:block}.methodology-intro p{margin-bottom:45px}.methodology-item{grid-template-columns:30px 24px 1fr;gap:14px}.methodology-in-skills .methodology-list{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:30px}.methodology-in-skills .methodology-item{min-height:0;padding:20px 16px}.methodology-in-skills .methodology-item:nth-child(3n){border-right:1px solid #f4f1e93d}.methodology-in-skills .methodology-item:nth-child(2n){border-right:0}.methodology-in-skills .methodology-item:nth-last-child(-n+3){border-bottom:1px solid #f4f1e93d}.methodology-in-skills .methodology-item:nth-last-child(-n+2){border-bottom:0}.methodology-in-skills .methodology-number{margin-bottom:18px;font-size:29px}.about-content{margin-top:45px}.about-text{column-count:1;margin:35px 0}.about-text p:nth-child(3){break-before:auto}.about-text p+p{margin-top:12px}.facts{grid-template-columns:1fr}.fact-card b{font-size:21px}.skills-grid,.project-list{grid-template-columns:1fr;margin-top:0}.skill-card,.skill-card:first-child{border-top:1px solid #3d423d;border-left:0;min-height:230px;padding:28px 0 0}.skill-card:first-child{border-top:0}.skill-card svg{margin:0 0 25px}.skill-number{top:25px}.experience{padding:30px 0}.experience-list{margin-top:45px}.experience-item{display:block}.experience-item .period{margin-bottom:18px}.projects-heading h2,.project-list{margin-top:45px}.project-card{min-height:360px}.footer-inner{padding-top:75px;display:block}.footer-contact{grid-template-columns:1fr;margin-top:65px}.footer-contact a,.footer-contact a+a{padding:17px 0}.footer-bottom{flex-wrap:wrap;justify-content:center;gap:15px;margin-top:60px}.socials{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal-on-scroll{opacity:1;transform:none}}.projects-all-link{justify-content:center;margin-top:34px;display:flex}.projects-directory-header{border-top:1px solid var(--line);padding:36px 0 68px}.projects-back-link{color:var(--muted);text-transform:uppercase;align-items:center;gap:8px;font-family:DM Mono,monospace;font-size:11px;display:inline-flex}.projects-back-link:hover,.project-case-link:hover,.additional-project-actions a:hover{color:var(--coral)}.projects-directory-heading{grid-template-columns:180px minmax(0,1fr);gap:60px;margin-top:50px;display:grid}.projects-directory-heading h1{letter-spacing:-.07em;max-width:850px;margin:0;font-size:clamp(42px,6vw,76px);line-height:.96}.projects-directory-heading p{color:var(--muted);max-width:760px;margin:24px 0 0;font-size:16px;line-height:1.65}.portfolio-group{border-top:1px solid var(--line);padding:42px 0 66px}.portfolio-group-title{letter-spacing:-.05em;margin:0 0 32px;font-size:clamp(27px,3vw,38px)}.additional-project-list{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.catalogue-project-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:18px;display:grid}.catalogue-project{--catalogue-accent:var(--lime);--catalogue-text-accent:var(--lime-text);background:var(--white);border:1px solid var(--line);border-top:3px solid var(--catalogue-accent);box-shadow:none;color:var(--ink);border-radius:4px;flex-direction:column;min-width:0;padding:19px;text-decoration:none;transition:transform .2s;display:flex}.catalogue-project:hover{transform:translateY(-2px)}.catalogue-project:focus-visible,.case-study-row a:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.catalogue-project-coral{--catalogue-accent:var(--coral);--catalogue-text-accent:var(--coral)}.catalogue-project-blue{--catalogue-accent:var(--blue);--catalogue-text-accent:var(--blue)}.catalogue-project-period,.catalogue-project-category{color:var(--muted);font-family:DM Mono,monospace;font-size:10px;line-height:1.5}.catalogue-project-period{color:var(--catalogue-text-accent)}.catalogue-project-category{text-transform:uppercase;margin-top:7px}.catalogue-project h3{letter-spacing:-.04em;margin:12px 0 7px;font-size:21px;line-height:1.12}.catalogue-project-institution,.catalogue-project-role{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.catalogue-project-role{margin-top:10px}.catalogue-project-role span{color:var(--ink);text-transform:uppercase;margin-right:5px;font-family:DM Mono,monospace;font-size:9px}.catalogue-project-description{line-clamp:4;-webkit-line-clamp:4;color:var(--muted);overflow-wrap:normal;word-break:normal;-webkit-box-orient:vertical;max-width:100%;margin:13px 0 0;font-size:12px;line-height:1.55;display:-webkit-box;overflow:hidden}.catalogue-project-stack{color:var(--muted);flex-wrap:wrap;gap:3px 0;margin-top:14px;font-family:DM Mono,monospace;font-size:9px;line-height:1.5;display:flex}.catalogue-project-stack span+span:before{color:var(--catalogue-accent);content:"·";margin:0 6px}.catalogue-project-link{color:var(--ink);text-transform:uppercase;align-items:center;gap:6px;margin-top:auto;padding-top:16px;font-family:DM Mono,monospace;font-size:10px;display:inline-flex}.catalogue-project-link svg{color:var(--catalogue-accent)}.case-studies-section{padding-top:58px;padding-bottom:72px}.case-studies-kicker{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-family:DM Mono,monospace;font-size:10px}.case-studies-section .portfolio-group-title{margin-bottom:14px}.case-studies-intro{color:var(--muted);max-width:780px;margin:0 0 28px;line-height:1.6}.case-study-list{display:grid}.case-study-row{--case-accent:var(--lime);--case-text-accent:var(--lime-text);border-top:1px solid var(--line);grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr);align-items:center;gap:30px;padding:24px 0;display:grid}.case-study-row.coral{--case-accent:var(--coral);--case-text-accent:var(--coral)}.case-study-row.blue{--case-accent:var(--blue);--case-text-accent:var(--blue)}.case-study-row>img{aspect-ratio:16/10;object-fit:cover;width:100%;display:block}.case-study-row-content .project-case-meta span:first-child{color:var(--case-text-accent)}.case-study-row-content h3{letter-spacing:-.04em;margin:11px 0 10px;font-size:clamp(24px,3vw,36px);line-height:1.08}.case-study-row-role{color:var(--muted);margin:0;font-size:12px}.case-study-row-role span{color:var(--ink);text-transform:uppercase;margin-right:6px;font-family:DM Mono,monospace;font-size:9px}.case-study-row-impact{color:var(--muted);max-width:680px;margin:12px 0 0;font-size:13px;line-height:1.6}.case-study-row .project-case-link{color:var(--ink);margin-top:14px}.case-study-row .project-case-link svg{color:var(--case-accent)}.project-case-study{--case-accent:var(--lime);--case-text-accent:var(--lime-text);border-top:2px solid var(--case-accent);padding:28px 0 40px}.project-case-study.coral{--case-accent:var(--coral);--case-text-accent:var(--coral)}.project-case-study.blue{--case-accent:var(--blue);--case-text-accent:var(--blue)}.project-case-overview{grid-template-columns:minmax(260px,.78fr) minmax(0,1fr);align-items:start;gap:34px;display:grid}.project-case-image{aspect-ratio:16/10;object-fit:cover;width:100%;display:block}.project-case-meta{color:var(--muted);text-transform:uppercase;flex-wrap:wrap;gap:8px 18px;font-family:DM Mono,monospace;font-size:10px;line-height:1.5;display:flex}.project-case-meta span:first-child{color:var(--case-text-accent)}.project-case-intro h1{letter-spacing:-.05em;margin:18px 0 14px;font-size:clamp(28px,3.5vw,42px);line-height:1.02}.project-case-intro>p{color:var(--muted);max-width:700px;margin:0;font-size:14px;line-height:1.65}.project-case-link,.additional-project-actions a{color:var(--ink);text-transform:uppercase;align-items:center;gap:7px;margin-top:18px;font-family:DM Mono,monospace;font-size:11px;display:inline-flex}.project-case-details{border-top:1px solid var(--line);margin-top:30px;padding-top:24px}.project-case-study .project-results{margin-top:26px}.project-case-stack{margin-top:24px}.project-case-links{flex-wrap:wrap;display:flex}.project-case-links .project-link{flex:220px}.additional-project{background:var(--white);border:1px solid var(--line);border-top:3px solid var(--lime);box-shadow:none;border-radius:4px;min-width:0;padding:22px}.additional-project-coral{border-top-color:var(--coral)}.additional-project-blue{border-top-color:var(--blue)}.additional-project-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 22px;display:flex}.additional-project-period{color:var(--coral);font-family:DM Mono,monospace;font-size:11px}.additional-project-heading h1{letter-spacing:-.04em;flex:360px;margin:0;font-size:24px}.additional-project-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 30px;margin:20px 0 0;display:grid}.additional-project-meta-item dt{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;font-family:DM Mono,monospace;font-size:10px}.additional-project-meta-item dd{color:var(--ink);margin:0;font-size:13px;line-height:1.6}.additional-project-meta-item dd p{margin:0}.additional-project-meta-item dd p+p{margin-top:10px}.additional-project-actions{flex-wrap:wrap;gap:0 24px;display:flex}.additional-project-actions a{margin-top:20px}.project-detail-page{border-top:1px solid var(--line);padding-top:36px;padding-bottom:76px}.project-detail-page>.projects-back-link{margin-bottom:34px}.project-detail-page .project-case-study{border-bottom:1px solid var(--line)}.project-not-found{border-top:1px solid var(--line);margin-top:24px;padding:36px 0 50px}.project-not-found h1{margin-bottom:28px;font-size:clamp(34px,5vw,58px)}@media (width<=760px){.projects-directory-header{padding:28px 0 48px}.projects-directory-heading{margin-top:36px;display:block}.projects-directory-heading .section-label{margin-bottom:24px}.portfolio-group{padding:32px 0 44px}.project-case-overview{grid-template-columns:1fr;gap:22px}.catalogue-project-description{line-clamp:5;-webkit-line-clamp:5}.catalogue-project-grid{grid-template-columns:1fr}.case-study-row{grid-template-columns:1fr;gap:18px}.project-case-details{grid-template-columns:1fr;gap:20px}.project-case-study .project-results{padding:18px}.project-case-study .project-results ul{grid-template-columns:1fr}.additional-project-meta{grid-template-columns:1fr;gap:14px}.additional-project-list{grid-template-columns:1fr}.additional-project-heading h1{flex-basis:100%}.project-detail-page{padding-top:26px;padding-bottom:50px}}@media (width>=761px) and (width<=1100px){.catalogue-project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.catalogue-project-description{line-clamp:5;-webkit-line-clamp:5}}.resume{padding-bottom:100px}.resume-hero{padding:70px 0 60px}.resume-hero h1{max-width:none;font-size:clamp(44px,7vw,88px)}.resume-hero .role-hero{margin-top:0}.resume-hero .stack-hero{margin:18px 0 28px}.resume-summary p{color:var(--muted);max-width:720px;font-size:17px;line-height:1.6}.resume-metrics{grid-template-columns:repeat(5,1fr);gap:18px;display:grid}.resume-metric{background:var(--white);border:1px solid var(--line);border-top:3px solid var(--lime);break-inside:avoid;align-content:start;gap:10px;padding:22px 20px;display:grid}.resume-metric:nth-child(3n+2){border-top-color:var(--coral)}.resume-metric:nth-child(3n){border-top-color:var(--blue)}.resume-metric strong{letter-spacing:-.06em;font-size:30px}.resume-metric span{color:var(--muted);font-size:13px;line-height:1.5}.resume-section{border-top:1px solid var(--line);margin-top:70px;padding-top:28px}.resume-section>.section-label,.resume-split .section-label{margin-bottom:28px}.resume-chips,.resume-list{margin:0;padding:0;list-style:none}.resume-chips{flex-wrap:wrap;gap:10px;display:flex}.resume-chips li{background:var(--white);border:1px solid var(--line);letter-spacing:.04em;padding:9px 14px;font-family:DM Mono,monospace;font-size:12px}.resume-timeline{gap:18px;display:grid}.resume-job{background:var(--white);border:1px solid var(--line);border-left:3px solid var(--lime);break-inside:avoid;padding:26px 28px}.resume-job:nth-child(2){border-left-color:var(--coral)}.resume-job:nth-child(3){border-left-color:var(--blue)}.resume-job-head{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.resume-job h3,.resume-split h3{letter-spacing:-.06em;margin-bottom:6px;font-size:27px}.resume-role{color:var(--muted);margin-bottom:0}.resume-job ul{color:var(--muted);margin:18px 0 0;padding-left:20px;line-height:1.65}.resume-job-stack{border-top:1px solid var(--line);margin:20px 0 0;padding-top:16px}.resume-cases{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.resume-case{break-inside:avoid;cursor:default;min-height:0}.resume-case:hover{transform:none}.resume-case .project-type{margin:36px 0 15px}.resume-stack{grid-template-columns:repeat(3,1fr);gap:28px 40px;display:grid}.resume-stack>div{break-inside:avoid}.resume-stack .project-type,.resume-split .project-type{margin:0 0 14px}.resume-split{grid-template-columns:1fr 1fr;gap:60px;display:grid}.resume-split .project-type{margin-top:32px}.resume-list{color:var(--muted);gap:8px;display:grid}.resume-list li:before{content:"— "}.resume-split>div{break-inside:avoid}@media (width<=1100px){.resume-metrics{grid-template-columns:repeat(3,1fr)}.resume-cases{grid-template-columns:1fr}}@media (width<=760px){.resume-hero{padding:40px 0}.resume-metrics,.resume-stack,.resume-split{grid-template-columns:1fr}.resume-job-head{flex-direction:column;gap:10px}.resume-job{padding:22px 20px}.resume-actions{flex-direction:column;align-items:stretch;gap:12px}.resume-actions .button{justify-content:space-between}}.resume-page{display:contents}.print-only{display:none}.resume-unit{color:var(--ink);letter-spacing:.06em;text-transform:uppercase;margin:8px 0 0;font-family:DM Mono,monospace;font-size:12px}.resume-job-meta{text-align:right;justify-items:end;gap:6px;display:grid}.resume-location{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:12px}.resume-job-description{color:var(--ink);margin:16px 0 0;line-height:1.6}@media (width<=760px){.resume-job-meta{text-align:left;justify-items:start}}@media print{@page{margin:0;size:A4}html,body{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff}.site-header,.footer,.resume-actions,.screen-only{display:none!important}.print-only{display:block}.resume{width:100%;margin:0;padding:0}.resume-page{box-sizing:border-box;flex-direction:column;width:210mm;height:296.5mm;padding:10mm 13mm 9mm;display:flex;overflow:hidden}.resume-page-1{break-after:page;page-break-after:always}.resume-page-2{break-before:avoid;justify-content:space-between}.resume-page-1{justify-content:space-between}.resume-page-2 .resume-job{padding:14px 16px}.resume-page-2 .resume-job ul{font-size:10.5px;line-height:1.5}.resume-page-2 .resume-job h3{font-size:16px}.resume-page-2 .resume-case{padding:14px}.resume-page-2 .resume-case>p:not(.project-type){font-size:9.6px;line-height:1.5}.resume-page-2 .resume-case h3{font-size:14px}.resume-page-2 .resume-chips li{padding:4px 10px;font-size:9.5px}.resume-page-2 .resume-stack{gap:14px 18px}.resume-page-2 .resume-section{margin-top:0;padding-top:14px}.resume-page-2 .resume-experience-cont{padding-top:0}.resume-page-2 .resume-list,.resume-page-2 .resume-split .resume-role{font-size:10.5px}.resume-hero{padding:0 0 12px}.resume-hero .eyebrow{font-size:9px}.resume-hero h1{margin:8px 0 4px;font-size:38px}.resume-hero .role-hero{font-size:24px}.resume-hero .stack-hero{margin:6px 0 10px;font-size:10.5px}.resume-summary p{max-width:none;margin-bottom:5px;font-size:10.5px;line-height:1.5}.resume-metrics{grid-template-columns:repeat(5,1fr);gap:8px}.resume-metric{gap:4px;padding:9px 10px}.resume-metric strong{font-size:16px}.resume-metric span{font-size:8.5px;line-height:1.35}.resume-section{margin-top:15px;padding-top:11px}.resume-experience-cont{border-top:0;margin-top:0;padding-top:0}.section-label{padding-top:0;font-size:9.5px}.resume-section>.section-label,.resume-split .section-label{break-after:avoid;margin-bottom:9px}.resume-chips{gap:5px}.resume-chips li{padding:3px 8px;font-size:8.5px}.resume-timeline{gap:9px}.resume-job,.resume-case,.resume-stack>div,.resume-split>div{break-inside:avoid;page-break-inside:avoid}.resume-job{padding:10px 14px}.resume-job-head{gap:12px}.resume-job h3,.resume-split h3{margin-bottom:2px;font-size:14px}.resume-role{font-size:10.5px}.resume-unit,.resume-location,.resume-job .period{font-size:8.5px}.resume-unit{margin-top:3px}.resume-job-meta{gap:3px}.resume-job ul{margin-top:7px;padding-left:16px;font-size:9.5px;line-height:1.4}.resume-job-stack{margin-top:7px;padding-top:6px;font-size:8px}.resume-cases{grid-template-columns:repeat(3,1fr);gap:8px}.resume-case{padding:10px 12px}.resume-case .project-top{display:none}.resume-case .project-type{margin:0 0 6px;font-size:8px}.resume-case h3{margin-bottom:5px;font-size:12.5px}.resume-case>p:not(.project-type){font-size:8.8px;line-height:1.4}.resume-case .stack{gap:4px 8px;margin-top:8px;padding-top:6px;font-size:8px}.resume-stack{grid-template-columns:repeat(3,1fr);gap:9px 18px}.resume-job-head{flex-direction:row;align-items:flex-start}.resume-job-meta{text-align:right;justify-items:end}.resume-split{grid-template-columns:1fr 1fr}.resume-stack .project-type,.resume-split .project-type{margin:0 0 5px;font-size:8px}.resume-split{gap:28px}.resume-split .project-type{margin-top:8px}.resume-split .resume-role{font-size:10px}.resume-list{gap:3px;font-size:9.5px}.resume-contact a{padding:6px 0}.resume-contact span{font-size:8.5px}.resume-contact strong{font-size:10px}.resume a{color:inherit}}
