@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{--bg:#101210;--panel:#171a17;--text:#f0f1e9;--muted:#a5aca2;--line:#343b32;--lime:#c8f573;--ink:#11150d;--header:rgba(16,18,16,.92);font-family:'DM Sans',sans-serif;color-scheme:dark}
:root[data-theme=light]{--bg:#f1f2e9;--panel:#e6e8dc;--text:#20271c;--muted:#5c6556;--line:#bdc5b2;--lime:#4a651e;--ink:#fff;--header:rgba(241,242,233,.94);color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--text);font-size:16px;line-height:1.6}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--lime);outline-offset:5px}button{border:0;background:none}p{margin:0;color:var(--muted)}h1,h2,h3,h4{font-family:'Space Grotesk',sans-serif;line-height:1.08;letter-spacing:-.05em;margin:0;font-weight:500}h2{font-size:clamp(36px,4.6vw,66px)}h3{font-size:34px}.mono,.kicker,.tag,.eyebrow{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.1em;line-height:1.5}.kicker{color:var(--lime);display:block;margin-bottom:24px}.container{max-width:1360px;width:calc(100% - 112px);margin:auto}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--lime);color:var(--ink);padding:10px}.skip:focus{top:10px}#progress{position:fixed;left:0;top:0;height:2px;width:0;background:var(--lime);z-index:99}.header{position:sticky;top:0;z-index:30;background:var(--header);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.nav-wrap{display:flex;align-items:center;height:88px;gap:32px}.brand{display:flex;align-items:center;gap:12px;margin-right:auto}.mark{font-family:'Space Grotesk';font-size:22px;letter-spacing:-2px;border:1px solid var(--lime);height:36px;width:41px;display:grid;place-items:center;color:var(--lime);transform:skew(-8deg)}.brandname{font-size:11px;letter-spacing:.07em;font-weight:700;line-height:1.3}.navlinks{display:flex;gap:25px;font-size:12px}.navlinks a{color:var(--muted)}.navlinks a:hover{color:var(--text)}.navtools{display:flex;align-items:center;gap:18px}.iconbtn{padding:4px;font-size:17px}.language{font-size:11px;font-family:'IBM Plex Mono';border-bottom:1px solid var(--lime)}.menubtn{display:none}.hero{min-height:710px;position:relative;padding-top:54px}.herotop{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:37px}.available{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--muted)}.dot{width:6px;height:6px;background:var(--lime);border-radius:50%;box-shadow:0 0 14px #c8f57340}.hero-content{display:grid;grid-template-columns:1.12fr 1fr;align-items:center;position:relative}.hero-text{position:relative;z-index:2}.hero h1{font-size:clamp(53px,6.35vw,94px);line-height:.98;letter-spacing:-.065em;max-width:760px}.hero h1 span{display:block}.hero h1 .accent{color:var(--lime)}.hero h1 .outline{color:transparent;-webkit-text-stroke:1px var(--muted)}.hero-intro{max-width:390px;font-size:14px;margin-top:26px;line-height:1.8}.hero-intro strong{color:var(--text);font-weight:500}.actions{display:flex;align-items:center;gap:26px;flex-wrap:wrap;margin-top:26px}.btn{display:inline-flex;justify-content:center;align-items:center;gap:24px;padding:13px 19px;border:1px solid var(--line);font-size:12px;line-height:1.5;transition:transform .2s,background .2s}.btn:hover{transform:translateY(-3px);background:var(--panel)}.btn.primary{background:var(--lime);border-color:var(--lime);color:var(--ink)}.btn .arr{font-size:18px;line-height:1}.textlink{font-size:12px;border-bottom:1px solid var(--muted);padding:8px 0}.visual{height:490px;position:relative;min-width:0;align-self:start}.visual:before{content:'';position:absolute;inset:5% -2% 9%;background:radial-gradient(ellipse,#b5e7850c,transparent 68%);pointer-events:none}.canvas{width:100%;height:100%;display:block}.lab-coord{position:absolute;right:2px;top:12px;color:var(--muted);writing-mode:vertical-rl;font-size:8px}.lab-label strong{font-family:'Space Grotesk';font-size:49px;font-weight:400;line-height:1}.lab-label small{display:block;font-size:8px;color:var(--lime);letter-spacing:.15em;margin-top:12px}.lab-bottom{position:absolute;bottom:0;left:12%;right:4%;border-top:1px solid var(--line);padding-top:15px}.lab-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.lab-tabs button{font-size:9px;color:var(--muted);border:1px solid var(--line);border-radius:30px;padding:5px 10px}.lab-tabs button[aria-pressed=true]{color:var(--lime);border-color:var(--lime)}.lab-status{font-size:10px;min-height:30px;margin-top:10px;max-width:290px}.hero-bottom{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:34px 0 24px;margin-top:20px;color:var(--muted)}.hero-bottom .mono{font-size:9px}.hero-bottom a{display:flex;gap:18px;align-items:center}.scrollicon{height:24px;width:16px;border:1px solid var(--line);border-radius:12px;position:relative}.scrollicon:after{content:'';height:5px;width:2px;position:absolute;top:5px;left:6px;background:var(--lime)}.credibility{display:flex;justify-content:space-between;gap:16px;padding:26px 0;font-size:11px;color:var(--muted);border-bottom:1px solid var(--line)}.credibility span{display:flex;align-items:center;gap:12px}.credibility i{color:var(--lime);font-style:normal;font-size:15px}.section{padding:100px 0}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:44px}.section-head p{max-width:310px;font-size:13px}.linebreak{white-space:pre-line}.work-list{display:grid;gap:52px}.project{border-top:1px solid var(--line);padding-top:23px;display:grid;grid-template-columns:1fr 1.4fr;gap:45px;align-items:center}.project-copy{padding:12px 0}.project-index{color:var(--muted);display:flex;gap:22px;margin-bottom:32px}.project-index span:first-child{color:var(--project-color)}.project h3{font-size:42px;margin-bottom:17px}.project-copy p{font-size:13px;max-width:345px;line-height:1.8}.tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:25px}.tag{font-size:9px;letter-spacing:0;border:1px solid var(--line);border-radius:25px;padding:5px 10px;color:var(--muted)}.case-link{display:inline-flex;align-items:center;gap:34px;margin-top:29px;font-size:12px;border-bottom:1px solid var(--line);padding-bottom:9px}.case-link span{font-size:19px;color:var(--project-color)}.project-art{min-height:340px;position:relative;border:1px solid var(--line);overflow:hidden;background:var(--panel);display:flex;align-items:center;justify-content:center}.art-label{position:absolute;bottom:13px;left:18px;font-size:8px;letter-spacing:.02em;color:#bcc5b6;z-index:2}.project-art:after{content:'↗';position:absolute;top:16px;right:18px;border:1px solid #ffffff30;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff}.project-art:hover .mock-browser,.project-art:hover .phone{transform:translateY(-7px) rotate(-1deg)}.art-web{background:#293a20}.contours{position:absolute;inset:0;opacity:.28;width:100%;height:100%}.mock-browser{width:79%;background:#f4f0e3;box-shadow:0 22px 45px #0007;border-radius:5px;transform:rotate(-3deg);color:#263c27;transition:transform .5s;position:relative;overflow:hidden;text-align:left}.browser-top{height:19px;background:#e2e1d8;display:flex;gap:4px;padding:7px 9px}.browser-top i{width:4px;height:4px;background:#a9ada3;border-radius:50%}.mock-nav{display:flex;justify-content:space-between;font-size:7px;padding:11px 18px;font-weight:700}.mock-main{padding:18px 24px 30px;position:relative;min-height:192px;overflow:hidden}.mock-main h4{font-size:39px;line-height:.95;letter-spacing:-.05em;position:relative;z-index:2;font-weight:700}.mock-main p{font-size:7px;color:#52614a;max-width:140px;position:relative;z-index:2;margin:10px 0}.mini-btn{font-size:7px;display:inline-block;background:#2d4e26;color:#fff;padding:7px 12px;position:relative;z-index:2}.mountains{position:absolute;right:-15px;bottom:0;width:68%;height:100%;background:linear-gradient(160deg,transparent 40%,#92a37b 40% 55%,transparent 55%),linear-gradient(210deg,transparent 48%,#566e43 48% 64%,#394c2d 64%);clip-path:polygon(0 100%,18% 40%,34% 63%,58% 8%,100% 65%,100% 100%)}.mini-routes{display:flex;justify-content:space-around;background:#e2e7d8;padding:12px;font:8px 'IBM Plex Mono';color:#344b2c}.art-commerce{background:#282335}.commerce-visual{width:80%;height:244px;border:1px solid #63556f;background:#16141c;box-shadow:0 20px 50px #0006;transform:rotate(2deg);padding:19px;color:#f3eaf9;text-align:left}.commerce-nav{font:10px 'Space Grotesk';display:flex;justify-content:space-between;border-bottom:1px solid #493e53;padding-bottom:13px}.commerce-body{display:flex;align-items:center;gap:20px;padding-top:17px}.commerce-body h4{font-size:27px}.commerce-body p{color:#bdb2c8;font-size:7px;margin:9px 0}.sculpture{width:90px;height:128px;margin:0 20px;background:linear-gradient(120deg,#d7c5ed,#605771 40%,#cbb7e8 68%,#756184);border-radius:45% 45% 22% 22%;position:relative;box-shadow:13px 12px 25px #0008;transform:rotate(-13deg)}.sculpture:before{content:'';position:absolute;top:17px;left:23px;width:52px;height:30px;background:#18131d;border-radius:50%;border:7px solid #b9a8c9}.sculpture:after{content:'';position:absolute;bottom:-10px;left:-8px;right:-8px;background:#63576f;height:17px;border-radius:50%}.art-finance{background:#182d3e;gap:23px}.phone{width:144px;height:272px;background:#0f1a25;border:4px solid #547082;border-radius:22px;box-shadow:12px 17px 30px #0007;padding:19px 10px 12px;transform:rotate(-5deg);transition:transform .5s;position:relative;color:#f0f6fc;text-align:left}.phone:before{content:'';position:absolute;top:5px;left:53px;width:30px;height:5px;background:#527082;border-radius:10px}.phone small{font-size:7px;color:#aabfce}.phone h4{font-size:13px;letter-spacing:-.03em;margin:2px 0 16px}.balance{background:#284359;border-radius:10px;padding:10px 8px}.balance strong{font:19px 'Space Grotesk';display:block}.mini-bars{display:flex;gap:5px;height:45px;align-items:end;margin:14px 0}.mini-bars i{display:block;flex:1;background:#8ac8f5;border-radius:2px;min-height:10px}.mini-list{font-size:6px;display:grid;gap:8px}.mini-list div{display:flex;justify-content:space-between;border-bottom:1px solid #314352;padding-bottom:5px}.finance-aside{max-width:130px;text-align:left}.finance-aside h4{font-size:33px;color:#a5d7fb}.finance-aside p{font-size:9px;color:#a9c2d6;margin-top:10px}.finance-aside .mono{font-size:7px;color:#a9c2d6;display:block;margin-top:24px}.focus-panel{background:var(--panel);border:1px solid var(--lime);padding:30px;margin:25px 0 45px}.focus-panel[hidden]{display:none}.focus-top{display:flex;justify-content:space-between;gap:20px}.focus-top h3{font-size:28px}.focus-panel p{font-size:13px;max-width:760px}.segmented{display:flex;flex-wrap:wrap;gap:9px;margin:24px 0 20px}.segmented button{font-size:11px;padding:8px 13px;border:1px solid var(--line);border-radius:20px}.segmented button[aria-pressed=true]{background:var(--lime);color:var(--ink);border-color:var(--lime)}.focus-actions{display:flex;gap:20px;align-items:center;margin-top:20px}.project.recommended{border-top-color:var(--lime)}.recommend-label{font-size:9px;color:var(--lime);margin-top:15px}.experience{border-top:1px solid var(--line)}.experience-grid{display:grid;grid-template-columns:.8fr 1.4fr;gap:75px}.experience-intro p{font-size:13px;margin-top:25px;max-width:300px}.timeline-item{padding:0 0 37px 30px;border-left:1px solid var(--line);position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:'';position:absolute;left:-4px;top:5px;width:7px;height:7px;border-radius:50%;background:var(--lime)}.timeline-meta{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:14px}.timeline-meta strong{font-family:'Space Grotesk';font-size:21px}.timeline-meta span{font:9px 'IBM Plex Mono';color:var(--muted)}.timeline-role{color:var(--lime);font-size:11px;margin-bottom:16px}.timeline-item h3{font-size:29px;margin-bottom:17px;letter-spacing:-.03em}.timeline-item p{font-size:13px;line-height:1.85}.about{border-top:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px}.about-text p{font-size:14px;line-height:1.9;margin-top:25px}.education{border-top:1px solid var(--line);margin-top:30px;padding-top:20px}.education strong{font-size:13px;display:block}.education small{font-size:11px;color:var(--muted)}.skillsbox h3{font-size:32px;margin:0 0 16px}.skillsbox>p{font-size:12px;margin-bottom:24px}.skill-buttons{display:flex;flex-wrap:wrap;gap:9px}.skill-buttons button{border:1px solid var(--line);padding:9px 12px;font-size:11px;border-radius:3px}.skill-buttons button[aria-pressed=true]{border-color:var(--lime);color:var(--lime)}.skill-detail{margin-top:24px;padding:20px;background:var(--panel);min-height:130px}.skill-detail .kicker{margin-bottom:12px}.skill-detail a{font-size:12px;display:block;padding:5px 0}.skill-detail p{font-size:12px}.contact{border-top:1px solid var(--line);padding-bottom:65px}.contact-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:80px}.contact h2{font-size:clamp(40px,5vw,75px);line-height:1.07}.contact h2 em{font-style:normal;color:var(--lime)}.contact-copy p{font-size:14px;margin-top:24px;max-width:390px}.email-address{font-size:clamp(12px,1.4vw,20px);display:block;margin-top:30px;border-bottom:1px solid var(--line);padding-bottom:14px;overflow-wrap:anywhere}.social-links{display:flex;gap:25px;margin-top:22px;font-size:11px}.social-links button{padding:0}.contact-form{padding-top:10px;display:grid;gap:15px}.field label{font-size:10px;display:block;color:var(--muted);margin-bottom:8px}.field input,.field textarea{width:100%;padding:12px 0;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);border-radius:0;font-size:13px}.field textarea{min-height:100px;resize:vertical}.form-note{font-size:10px!important;margin-top:0!important}.footer{border-top:1px solid var(--line);padding:25px 0;display:flex;justify-content:space-between;font-size:10px;color:var(--muted);gap:20px}dialog{background:var(--bg);color:var(--text);border:1px solid var(--line);padding:0;max-height:90dvh}dialog::backdrop{background:#000a;backdrop-filter:blur(8px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid var(--line);gap:20px;position:sticky;top:0;background:var(--bg);z-index:4}.dialog-head button{font-size:19px}.dialog-head strong{font-size:13px;font-weight:500}.case-dialog{width:min(950px,92vw)}.case-content{padding:36px}.case-content h2{font-size:clamp(36px,5vw,66px);max-width:690px}.case-content>p{margin-top:22px;max-width:650px;font-size:14px}.case-content .project-art{margin:30px 0;min-height:330px}.case-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin:32px 0}.case-grid h3{font-size:23px;margin-bottom:14px}.case-grid p{font-size:13px;line-height:1.9}.case-grid .wide{grid-column:1/-1}.case-content .sources{border-top:1px solid var(--line);padding-top:25px;display:flex;gap:25px;font-size:12px}.palette{width:min(590px,90vw);margin-top:15vh}.palette input{width:100%;background:transparent;color:var(--text);border:0;border-bottom:1px solid var(--line);padding:20px 24px;font-size:17px}.palette-results{padding:10px;max-height:50vh;overflow:auto}.palette-results button{display:flex;width:100%;text-align:left;padding:13px;border-radius:4px;justify-content:space-between;font-size:13px}.palette-results button:hover,.palette-results button:focus{background:var(--panel);color:var(--lime)}.palette-results small{color:var(--muted);font-size:10px}.toast{position:fixed;bottom:30px;left:30px;padding:13px 20px;background:var(--lime);color:var(--ink);font-size:12px;z-index:100;max-width:calc(100vw - 60px)}.resume{padding:35px;max-width:850px}.resume h2{font-size:40px}.resume h3{font-size:22px;margin:25px 0 14px}.resume p{font-size:13px}.resume .actions{margin-bottom:20px}.resume ul{font-size:13px;color:var(--muted);padding-left:20px}.rise{animation:rise .8s ease both}.rise.delay{animation-delay:.12s}@keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1500px){.hero{min-height:800px}.visual{height:550px}.hero-intro{font-size:15px}.hero h1{font-size:100px}}@media(max-width:1120px){.container{width:calc(100% - 64px)}.nav-wrap{gap:17px}.navlinks{gap:15px}.brandname{display:none}.navtools{gap:14px}.hero h1{font-size:6.5vw}.visual{height:445px}.project{gap:25px}.experience-grid{gap:35px}.contact-layout{gap:40px}.about-grid{gap:40px}}@media(max-width:780px){.container{width:calc(100% - 40px)}.nav-wrap{height:70px}.navlinks{display:none;position:absolute;top:70px;left:0;right:0;padding:25px;background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;font-size:18px}.navlinks.mobile-open{display:flex}.menubtn{display:block;font-size:23px}.navtools{gap:13px}.navtools .search-trigger{display:none}.hero{padding-top:29px;min-height:0}.herotop{margin-bottom:30px}.herotop .mono{font-size:8px;max-width:190px}.available{font-size:9px}.hero-content{grid-template-columns:1fr}.hero h1{font-size:clamp(49px,10.5vw,78px);line-height:1.02;max-width:600px}.hero-intro{font-size:14px;max-width:390px}.visual{height:350px;margin-top:15px;max-width:540px;width:100%;justify-self:center}.lab-label strong{font-size:40px}.lab-bottom{left:9%;right:5%}.lab-status{font-size:9px;min-height:25px}.lab-tabs button{font-size:9px}.lab-coord{right:2px;top:10px}.hero-bottom{padding:20px 0;margin-top:8px}.hero-bottom .mono{font-size:7px}.credibility{flex-wrap:wrap;gap:12px;padding:20px 0;font-size:10px}.credibility span:last-child{width:100%}.section{padding:64px 0}.section-head{display:block;margin-bottom:30px}.section-head p{margin-top:20px}.project{grid-template-columns:1fr;gap:25px}.project-copy{display:grid;grid-template-columns:1fr auto;gap:0 15px}.project-index,.project h3,.project-copy p{grid-column:1/-1}.project-index{margin-bottom:20px}.project h3{font-size:37px}.project-copy p{max-width:420px}.project .tags{margin-top:20px}.case-link{font-size:10px;gap:15px;margin-top:20px}.project-art{min-height:295px}.work-list{gap:40px}.mock-main h4{font-size:33px}.mock-main{min-height:170px}.experience-grid,.about-grid,.contact-layout{grid-template-columns:1fr;gap:40px}.timeline-item{padding-left:20px}.timeline-meta{align-items:start}.timeline-meta strong{font-size:19px;max-width:240px}.timeline-meta span{font-size:8px}.timeline-item h3{font-size:25px}.about-text p{font-size:13px}.contact h2{font-size:47px}.contact-layout{gap:30px}.footer{padding-bottom:95px;font-size:8px;align-items:start}.case-content{padding:23px}.case-grid{grid-template-columns:1fr;gap:25px}.case-content .project-art{min-height:290px}.focus-panel{padding:23px}.focus-top h3{font-size:25px}.focus-top{display:block}.focus-top .btn{margin-top:15px}.finance-aside{max-width:110px}.sculpture{margin:0 0 0 10px}.art-label{font-size:7px}.resume{padding:23px}.resume h2{font-size:31px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}


.art-ods{background:#243747}.ods-dashboard{width:82%;padding:23px;background:#eef2ed;color:#173444;transform:rotate(-2deg);box-shadow:0 20px 45px #0006;text-align:left}.ods-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #bac6c9;padding-bottom:12px}.ods-heading span{font:600 12px "Space Grotesk"}.ods-heading small{font:6px "IBM Plex Mono"}.ods-dashboard h4{font-size:27px;line-height:1.1;letter-spacing:-.04em;margin:20px 0}.ods-goals{display:grid;grid-template-columns:repeat(9,1fr);gap:5px}.ods-goals span{display:grid;place-items:center;height:27px;color:white;font:700 10px "DM Sans"}.ods-dashboard>p{font:6px "IBM Plex Mono";color:#46616b;margin-top:18px;letter-spacing:.08em}@media(max-width:780px){.ods-dashboard{padding:18px}.ods-dashboard h4{font-size:24px}.ods-heading small{font-size:5px}.ods-goals{gap:4px}.ods-goals span{height:23px}}

/* Skills, credentials and recruitment evidence */
.skills-section,.credentials-section{border-top:1px solid var(--line)}
.skill-tablist{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);margin-bottom:35px}
.skill-tablist button{text-align:left;padding:22px 26px;font:10px 'IBM Plex Mono';letter-spacing:.08em;color:var(--muted);position:relative;transition:background .25s,color .25s}
.skill-tablist button+button{border-left:1px solid var(--line)}
.skill-tablist button span{display:block;font:500 20px/1.3 'Space Grotesk';letter-spacing:-.03em;margin-top:8px;color:var(--text)}
.skill-tablist button[aria-selected=true]{background:var(--panel);color:var(--lime)}
.skill-tablist button[aria-selected=true]:after{content:'';position:absolute;height:2px;bottom:-1px;left:0;right:0;background:var(--lime)}
.skill-panel-heading{margin-bottom:28px;max-width:650px}.skill-panel-heading .kicker{margin-bottom:14px}
.skill-panel-heading h3{font-size:30px;margin-bottom:13px}.skill-panel-heading p{font-size:13px}
.hard-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:30px}
.hard-layout .skill-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hard-layout .skill-buttons button{text-align:left;padding:15px 17px;border-radius:0;display:flex;flex-direction:column;gap:7px;justify-content:center;transition:border-color .2s,background .2s}
.hard-layout .skill-buttons button small{font:8px 'IBM Plex Mono';color:var(--muted)}
.hard-layout .skill-buttons button[aria-pressed=true]{background:var(--panel)}
.hard-layout .skill-detail{margin:0;padding:30px;border:1px solid var(--line);align-self:stretch;min-height:200px}
.hard-layout .skill-detail strong{font-family:'Space Grotesk';font-size:25px!important;line-height:1.25;display:block;margin-bottom:23px}
.hard-layout .skill-detail a{border-bottom:1px solid var(--line);padding:13px 0;transition:color .2s,padding .2s}
.hard-layout .skill-detail a:hover{padding-left:6px;color:var(--lime)}
.soft-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.soft-card{background:var(--panel);border:1px solid var(--line);padding:27px;position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:265px;transition:border-color .3s}
.soft-card:before{content:'';position:absolute;top:0;left:0;width:45px;height:2px;background:var(--lime);transition:width .4s}
.soft-card:hover{border-color:var(--muted)}.soft-card:hover:before{width:100%}
.soft-index{color:var(--lime);display:block;margin-bottom:27px}.soft-card h3{font-size:24px;line-height:1.15;letter-spacing:-.035em;margin-bottom:15px}
.soft-card p{font-size:12px;line-height:1.85;margin-bottom:22px}.soft-card small{display:block;font:8px/1.8 'IBM Plex Mono';color:var(--muted);border-top:1px solid var(--line);padding-top:12px;margin-top:auto}
.personal-context{background:var(--panel);padding:35px;border:1px solid var(--line);align-self:center}
.personal-context>.mono{color:var(--lime);font-size:9px}.personal-context h3{font-size:36px;margin:23px 0;max-width:360px}
.personal-context p{font-size:13px;line-height:1.9}.context-traits{display:grid;gap:12px;margin-top:28px;font-size:11px}
.context-traits span{color:var(--muted)}.context-traits a{border-top:1px solid var(--line);padding-top:12px}.context-traits a:hover{color:var(--lime)}
.education .kicker{margin-bottom:10px;font-size:8px}
.credential-profile{display:grid;grid-template-columns:.7fr 1.3fr;gap:45px;align-items:center;border:1px solid var(--line);background:var(--panel);padding:40px 55px;overflow:hidden;position:relative;transition:border-color .3s}
.credential-profile:hover{border-color:var(--lime)}.credential-art{height:240px;width:240px;max-width:100%;position:relative;color:var(--lime);justify-self:center}
.credential-art svg{width:100%;height:100%;transition:transform 1.1s cubic-bezier(.22,1,.36,1)}.credential-profile:hover .credential-art svg{transform:rotate(45deg)}
.credential-art>span{position:absolute;inset:0;display:grid;place-items:center;font:35px 'Space Grotesk';letter-spacing:-.08em}
.credential-copy .kicker{margin-bottom:18px;font-size:9px}.credential-copy h3{font-size:55px;margin-bottom:19px}.credential-copy h3 span{font-size:28px;display:inline-block;transition:transform .3s;color:var(--lime)}
.credential-profile:hover h3 span{transform:translate(6px,-6px)}.credential-copy p{max-width:500px;font-size:13px;line-height:1.85}
.credential-copy>strong{font-size:12px;font-weight:500;display:inline-flex;gap:27px;margin-top:25px;border-bottom:1px solid var(--line);padding-bottom:10px}
.credential-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin-top:25px}.credential-card{padding:25px;border:1px solid var(--line)}
.credential-card h3{font-size:22px;margin-bottom:15px}.credential-card p{font-size:11px}.credential-card>span:last-child{font-size:11px;display:block;margin-top:25px;color:var(--lime)}
.impact-fact{display:flex;align-items:center;gap:15px;margin-top:20px;padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);max-width:340px}
.impact-fact strong{font:48px/.95 'Space Grotesk';color:var(--project-color,var(--lime));letter-spacing:-.06em;white-space:nowrap}
.impact-fact>span{font-size:10px;color:var(--muted);max-width:135px;line-height:1.6}
.case-evidence{margin:35px 0;padding:28px;background:var(--panel);border:1px solid var(--line)}
.case-evidence .impact-large{margin:0 0 30px;padding:0 0 25px;max-width:none;border-top:0}.impact-large strong{font-size:80px}.impact-large>span{font-size:13px;max-width:230px}
.case-evidence h3{font-size:30px;max-width:590px;line-height:1.15;margin-bottom:13px}.case-evidence>p{font-size:13px}
.capability-list{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:16px 26px;margin:28px 0 0}
.capability-list li{display:flex;gap:12px;align-items:flex-start;padding-top:14px;border-top:1px solid var(--line)}.capability-list li>.mono{color:var(--lime);font-size:9px;margin-top:3px}.capability-list p{font-size:12px;line-height:1.8}
.art-web{min-height:380px}.art-web .mock-browser{width:73%;margin-left:-10%;transform:rotate(-4deg) translateY(-7px)}
.event-ops{position:absolute;bottom:31px;right:22px;width:155px;background:#162413;color:#eff4e8;border:1px solid #6a8751;padding:15px;box-shadow:0 14px 35px #0008;transform:rotate(4deg);transition:transform .45s}
.project-art:hover .event-ops{transform:rotate(0) translateY(-5px)}.event-ops>.mono{font-size:6px;color:#c8f573}.event-ops>strong{font:45px/1 'Space Grotesk';display:block;margin:12px 0 4px;letter-spacing:-.07em}
.event-ops>strong>span{color:#c8f573}.event-ops>small{font:5px 'IBM Plex Mono';color:#b0c49d;display:block;letter-spacing:.04em}
.event-ops>div{display:grid;gap:7px;margin-top:15px}.event-ops>div>span{font-size:7px;padding-top:7px;border-top:1px solid #35482d;display:flex;gap:8px}.event-ops i{font:6px 'IBM Plex Mono';color:#c8f573;font-style:normal}
/* Motion is progressive enhancement: content is visible without JS. */
body,.header,.panel,.btn{transition:background-color .25s,color .25s,border-color .25s}
.hero h1.rise{animation:none}.hero h1>span{animation:headline-enter .9s cubic-bezier(.2,.7,.2,1) both}
.hero h1>span:nth-child(2){animation-delay:.09s}.hero h1>span:nth-child(3){animation-delay:.18s}.hero h1>span:nth-child(4){animation-delay:.27s}
.hero .hero-intro{animation-delay:.36s}.hero .actions{animation-delay:.45s}.hero .visual{animation:visual-enter 1.1s .25s both}
@keyframes headline-enter{from{opacity:0;transform:translateY(30px);clip-path:inset(100% 0 0 0)}to{opacity:1;transform:translateY(0);clip-path:inset(0 0 0 0)}}
@keyframes visual-enter{from{opacity:0;transform:scale(.94) rotate(-4deg)}to{opacity:1;transform:scale(1) rotate(0)}}
.motion-ready .motion-item{opacity:0;transform:translateY(28px);transition:opacity .75s var(--motion-delay,0ms),transform .85s cubic-bezier(.2,.7,.2,1) var(--motion-delay,0ms)}
.motion-ready .motion-item.is-visible,.motion-ready .motion-item:focus-within{opacity:1;transform:translateY(0)}
.motion-ready .project-art.is-visible.tilt-card{transform:perspective(1000px) rotateX(var(--tilt-y,0deg)) rotateY(var(--tilt-x,0deg));transition:opacity .75s,transform .35s cubic-bezier(.2,.7,.2,1)}
.btn .arr,.textlink,.case-link span{transition:transform .25s,color .25s}.btn:hover .arr,.case-link:hover span{transform:translate(3px,-3px)}
.case-link:hover{color:var(--project-color,var(--lime))}.textlink:hover{color:var(--lime)}
dialog[open] .case-content,dialog[open] .resume{animation:case-enter .4s cubic-bezier(.2,.7,.2,1) both}@keyframes case-enter{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
.case-content .capability-list li{animation:case-enter .5s both}.capability-list li:nth-child(2n){animation-delay:.07s}
.timeline{position:relative}.timeline:before{content:'';position:absolute;left:0;top:0;height:100%;width:1px;background:var(--lime);transform:scaleY(var(--timeline-progress,0));transform-origin:top;z-index:1}
.timeline-item:before{transition:box-shadow .3s}.timeline-item.is-visible:before{box-shadow:0 0 0 5px color-mix(in srgb,var(--lime) 10%,transparent)}
.project-art .contours ellipse{stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset 1.8s cubic-bezier(.2,.7,.2,1)}.project-art.is-visible .contours ellipse{stroke-dashoffset:0}
@media(max-width:1120px){.navlinks{gap:15px;font-size:11px}.nav-wrap{gap:20px}.soft-grid{grid-template-columns:1fr 1fr}.credential-profile{padding:35px;gap:30px}.credential-art{width:200px;height:200px}.credential-copy h3{font-size:48px}.hard-layout{grid-template-columns:1.2fr 1fr}}
@media(max-width:780px){.navlinks{font-size:18px}.skill-tablist{margin-bottom:27px}.skill-tablist button{padding:17px 16px;font-size:8px}.skill-tablist button span{font-size:16px}.skill-panel-heading h3{font-size:25px}.hard-layout{grid-template-columns:1fr;gap:20px}.hard-layout .skill-buttons{grid-template-columns:1fr 1fr}.hard-layout .skill-buttons button{padding:13px;font-size:10px}.hard-layout .skill-buttons button small{font-size:7px}.hard-layout .skill-detail{padding:23px;min-height:170px}.soft-grid{grid-template-columns:1fr;gap:12px}.soft-card{min-height:0;padding:23px}.soft-card h3{font-size:23px}.soft-index{margin-bottom:17px}.credential-profile{grid-template-columns:1fr;padding:25px;gap:15px}.credential-art{width:155px;height:155px;justify-self:start}.credential-art>span{font-size:26px}.credential-copy h3{font-size:43px}.credential-copy .kicker{font-size:8px}.credential-grid{grid-template-columns:1fr}.personal-context{padding:26px}.personal-context h3{font-size:30px}.impact-fact{grid-column:1/-1;margin-top:19px;padding:13px 0;max-width:none}.impact-fact strong{font-size:43px}.impact-fact>span{font-size:10px;max-width:180px}.case-evidence{padding:21px}.case-evidence h3{font-size:26px}.capability-list{grid-template-columns:1fr;gap:13px}.impact-large strong{font-size:64px}.impact-large>span{font-size:11px}.art-web{min-height:330px}.art-web .mock-browser{width:79%;margin-left:-6%;transform:rotate(-4deg) translateY(-17px)}.event-ops{width:130px;right:16px;bottom:29px;padding:12px}.event-ops>strong{font-size:37px}.event-ops>.mono{font-size:5px}.event-ops>small{font-size:4px}.event-ops>div>span{font-size:6px}}
@media(prefers-reduced-motion:reduce){.motion-ready .motion-item{opacity:1;transform:none!important}.project-art .contours ellipse{stroke-dashoffset:0}.timeline:before{transform:scaleY(1)}.hero h1>span,.hero .visual,dialog[open] .case-content,dialog[open] .resume,.case-content .capability-list li{animation:none!important}*,*:before,*:after{transition:none!important}}

.credential-profile{padding:25px 40px;grid-template-columns:140px 1fr;gap:35px}.credential-art{width:140px;height:140px}.credential-art>span{font-size:31px}.credential-copy h3{font-size:40px;margin-bottom:10px}.credential-copy .kicker{margin-bottom:12px}.credential-copy>strong{margin-top:15px}
.credential-filters{display:flex;gap:8px;flex-wrap:wrap;margin:32px 0 20px}.credential-filters button{border:1px solid var(--line);border-radius:25px;font-size:11px;padding:8px 13px}.credential-filters button[aria-pressed=true]{background:var(--lime);color:var(--ink);border-color:var(--lime)}
.credential-grid{margin-top:0;gap:16px}.credential-card{background:var(--panel);display:flex;flex-direction:column;min-height:330px;transition:border-color .3s}.credential-card-top{display:flex;justify-content:space-between;align-items:start;gap:10px;margin-bottom:22px}.credential-card img{width:86px;height:86px;object-fit:contain;transition:transform .4s}.credential-card:hover img{transform:translateY(-4px) rotate(-3deg)}.credential-card:hover{border-color:var(--lime)}.credential-type{font:8px/1.6 'IBM Plex Mono';color:var(--muted);border:1px solid var(--line);padding:5px 7px;text-align:right;max-width:110px}.credential-card .kicker{font-size:9px;margin-bottom:12px;letter-spacing:0}.credential-card h3{font-size:23px;line-height:1.16;letter-spacing:-.03em}.credential-card p{font-size:10px;margin-bottom:20px}.credential-card>span:last-child{border-top:1px solid var(--line);padding-top:15px;margin-top:auto;display:flex;justify-content:space-between;gap:15px}.credential-card>span:last-child b{font-weight:400}
@media(max-width:780px){.credential-profile{grid-template-columns:80px 1fr;gap:20px;padding:23px}.credential-art{width:80px;height:80px}.credential-art>span{font-size:20px}.credential-copy h3{font-size:34px}.credential-copy .kicker{font-size:6px}.credential-copy p{font-size:11px}.credential-copy>strong{font-size:10px;gap:15px}.credential-filters{gap:7px;margin-top:25px}.credential-filters button{font-size:10px;padding:7px 10px}.credential-card{min-height:290px}.credential-card h3{font-size:23px}.credential-card-top{margin-bottom:18px}.credential-card img{width:76px;height:76px}}


.visual{--system-center-x:51%;--system-center-y:42%}.lab-label{position:absolute;top:var(--system-center-y);left:var(--system-center-x);width:220px;height:49px;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;text-align:center;pointer-events:none}.lab-label strong{display:block;line-height:1}.lab-label small{position:absolute;top:100%;left:0;right:0;margin-top:12px;text-align:center}@media(max-width:780px){.lab-label{height:40px}}

.project-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px 22px;margin-top:26px;grid-column:1/-1}.project-actions .case-link{margin-top:0}.project-live-link{padding:10px 13px;font-size:11px;gap:16px;color:var(--project-color,var(--lime))}@media(max-width:780px){.project-actions{margin-top:20px;gap:14px 18px}.project-actions .case-link{font-size:10px}.project-live-link{font-size:10px;padding:9px 12px}}

/* Mobile navigation: reveal panel, stagger links and morph the menu icon. */
@media(max-width:780px){
 .navlinks{display:flex;visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-10px);clip-path:inset(0 0 100% 0);transition:opacity .25s ease,transform .32s cubic-bezier(.2,.7,.2,1),clip-path .32s cubic-bezier(.2,.7,.2,1),visibility 0s linear .32s;box-shadow:0 18px 32px #0002}
 .navlinks.mobile-open{visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0);clip-path:inset(0);transition-delay:0s}
 .navlinks a{opacity:0;transform:translateY(-6px);transition:opacity .18s ease,transform .22s ease}
 .navlinks.mobile-open a{opacity:1;transform:translateY(0);transition-delay:calc(65ms + var(--menu-index,0)*35ms)}
 .navlinks a:nth-child(2){--menu-index:1}.navlinks a:nth-child(3){--menu-index:2}.navlinks a:nth-child(4){--menu-index:3}.navlinks a:nth-child(5){--menu-index:4}
 .menubtn{position:relative;display:block;width:36px;height:36px;padding:0;flex-shrink:0}
 .menubtn .menu-line{position:absolute;left:7px;right:7px;height:2px;background:currentColor;border-radius:2px;transform-origin:center;transition:transform .28s cubic-bezier(.2,.7,.2,1),opacity .18s ease}
 .menu-line:nth-child(1){top:10px}.menu-line:nth-child(2){top:17px}.menu-line:nth-child(3){top:24px}
 .menubtn[aria-expanded=true] .menu-line:nth-child(1){transform:translateY(7px) rotate(45deg)}
 .menubtn[aria-expanded=true] .menu-line:nth-child(2){opacity:0;transform:scaleX(.3)}
 .menubtn[aria-expanded=true] .menu-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}
@media(prefers-reduced-motion:reduce){
 .navlinks,.navlinks a,.menubtn .menu-line{transition:none!important;transition-delay:0s!important}
}

.visual-stage{position:absolute;inset:0}
@media(max-width:780px){
 .visual{height:auto;--system-center-y:47%}
 .visual-stage{position:relative;inset:auto;width:100%;height:clamp(260px,75vw,330px)}
 .lab-bottom{position:relative;inset:auto;margin:0 5% 0 9%;padding-top:18px}
 .lab-tabs{row-gap:8px}
 .lab-status{min-height:0;padding-bottom:8px}
}
