:root{--ink:#171713;--paper:#f2f0e9;--white:#fbfaf5;--orange:#ff5c35;--blue:#295dff;--line:rgba(23,23,19,.22);--mono:"DM Mono",monospace;--sans:"Manrope",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit}img{display:block;max-width:100%}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.2;z-index:20;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E")}.site-header{min-height:78px;padding:16px clamp(20px,4vw,64px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--ink);font:12px var(--mono);text-transform:uppercase;letter-spacing:.04em}.wordmark{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:500}.wordmark-mark{display:grid;place-items:center;width:36px;height:36px;color:var(--white);background:var(--ink);font-size:11px}nav{display:flex;gap:32px}nav a{text-decoration:none}nav a:hover,.text-link:hover,.project-copy>a:hover,.contact-links a:hover{color:var(--orange)}.status{justify-self:end;display:flex;align-items:center;gap:9px}.status i{width:8px;height:8px;border-radius:50%;background:#16a34a;box-shadow:0 0 0 4px #16a34a22}.hero{min-height:calc(100vh - 78px);padding:clamp(56px,8vw,120px) clamp(20px,4vw,64px) 60px;display:grid;grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);gap:clamp(50px,7vw,120px);align-items:center;max-width:1600px;margin:auto}.eyebrow{margin:0 0 26px;font:500 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase}.hero h1{margin:0;font-size:clamp(54px,6.6vw,112px);line-height:.9;letter-spacing:-.075em;font-weight:600}.hero h1 span{color:var(--orange);font-style:italic;font-weight:500}.hero-intro{max-width:570px;margin:36px 0 0 8vw;padding-left:22px;border-left:1px solid var(--ink);font-size:clamp(15px,1.3vw,19px);line-height:1.65}.hero-actions{margin:38px 0 0 8vw;display:flex;gap:28px;align-items:center}.button{min-height:52px;padding:0 20px;display:inline-flex;justify-content:space-between;align-items:center;gap:28px;text-decoration:none;font:500 12px var(--mono);text-transform:uppercase;border:1px solid var(--ink);transition:.2s}.button:hover{transform:translate(-3px,-3px);box-shadow:5px 5px 0 var(--ink)}.button-primary{color:var(--white);background:var(--ink)}.text-link{font:500 12px var(--mono);text-transform:uppercase;text-underline-offset:5px}.coordinates{display:flex;gap:20px;margin-top:70px;font:10px var(--mono);text-transform:uppercase;opacity:.65}.coordinates span+span{padding-left:20px;border-left:1px solid var(--line)}.hero-figure{margin:0;align-self:center}.image-frame{position:relative;padding:13px;border:1px solid var(--ink);background:var(--white);transform:rotate(1.2deg)}.image-frame:before{content:"";position:absolute;z-index:-1;inset:22px -17px -17px 22px;background:var(--orange)}.image-frame img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:saturate(.82) contrast(1.04)}.photo-label{position:absolute;left:25px;bottom:25px;padding:8px 10px;color:var(--white);background:var(--ink);font:10px var(--mono);text-transform:uppercase}.corner{position:absolute;width:30px;height:30px;border-color:var(--orange)}.corner-tl{top:5px;left:5px;border-top:3px solid;border-left:3px solid}.corner-br{right:5px;bottom:5px;border-right:3px solid;border-bottom:3px solid}.hero-figure figcaption{margin:30px 0 0 22px;display:flex;justify-content:space-between;font:10px var(--mono);text-transform:uppercase}.ticker{overflow:hidden;border-block:1px solid var(--ink);background:var(--orange)}.ticker div{min-width:max-content;padding:14px 3vw;display:flex;align-items:center;gap:34px;font:500 11px var(--mono);text-transform:uppercase}.ticker b{font-size:17px}.section{padding:clamp(80px,11vw,170px) clamp(20px,6vw,100px)}.section-heading{display:grid;grid-template-columns:1.1fr .9fr;align-items:end;gap:10vw;max-width:1400px;margin:0 auto 70px}.section h2{margin:0;font-size:clamp(42px,6vw,92px);line-height:.95;letter-spacing:-.065em}.section-heading>p{max-width:520px;margin:0;font-size:16px;line-height:1.7}.project-list{max-width:1400px;margin:auto;border-top:1px solid var(--ink)}.project{padding:30px 0;display:grid;grid-template-columns:50px minmax(300px,1.15fr) minmax(300px,.85fr);gap:clamp(25px,4vw,65px);border-bottom:1px solid var(--ink)}.project-number{padding-top:4px;font:500 11px var(--mono)}.project-visual{min-height:340px;position:relative;overflow:hidden;display:grid;place-items:center;border:1px solid var(--ink);font-family:var(--mono)}.visual-orange{background:var(--orange)}.visual-grid{position:absolute;inset:0;opacity:.3;background-image:linear-gradient(var(--ink) 1px,transparent 1px),linear-gradient(90deg,var(--ink) 1px,transparent 1px);background-size:28px 28px}.visual-orange p{z-index:1;padding:20px;background:var(--paper);border:1px solid;text-align:center;font-size:12px;line-height:1.6;box-shadow:9px 9px 0 var(--ink)}.visual-orange b{position:absolute;right:20px;top:14px;font-size:35px}.visual-blue{color:var(--white);background:var(--blue)}.visual-blue p{z-index:2;text-align:center;font-size:11px;line-height:1.6}.visual-blue i{width:16px;height:16px;z-index:2;border-radius:50%;background:var(--orange);box-shadow:0 0 0 12px #ffffff26}.orbit{position:absolute;width:230px;height:230px;border:1px solid #ffffffaa;border-radius:50%}.orbit-two{transform:rotate(60deg) scaleX(.4)}.orbit-one{transform:rotate(-25deg) scaleY(.4)}.visual-paper{grid-template-columns:auto 60px 46px 60px auto;gap:12px;background:var(--white);font-size:9px}.visual-paper b{display:grid;place-items:center;width:46px;height:46px;color:var(--white);background:var(--ink);font-size:20px;border-radius:50%}.diagram-line{height:1px;background:var(--ink)}.visual-paper small{position:absolute;bottom:20px;right:20px;padding:5px 8px;color:var(--white);background:var(--orange);font-size:8px;transform:rotate(-3deg)}.project-copy{padding:6px 20px 6px 0;display:flex;flex-direction:column}.project-meta{display:flex;justify-content:space-between;font:10px var(--mono);text-transform:uppercase}.project-copy h3{margin:auto 0 18px;font-size:clamp(27px,3vw,43px);line-height:1;letter-spacing:-.04em}.project-copy p{margin:0 0 22px;max-width:520px;font-size:14px;line-height:1.7}.project-copy ul{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 28px;padding:0;list-style:none}.project-copy li{padding:6px 9px;border:1px solid var(--line);font:9px var(--mono);text-transform:uppercase}.project-copy>a{align-self:flex-start;font:500 11px var(--mono);text-transform:uppercase;text-underline-offset:5px}.about{display:grid;grid-template-columns:minmax(260px,.65fr) minmax(500px,1.35fr);gap:9vw;color:var(--white);background:var(--ink)}.about-stamp{align-self:center;justify-self:center;width:min(100%,370px);aspect-ratio:1;padding:40px;display:flex;flex-direction:column;justify-content:space-between;border:1px solid #ffffffaa;border-radius:50%;text-align:center;font:11px var(--mono);transform:rotate(-8deg)}.about-stamp b{font-size:clamp(40px,5vw,72px);line-height:1;letter-spacing:-.07em}.about-stamp small{font-size:9px;text-transform:uppercase}.about-copy h2{max-width:900px}.about-columns{margin-top:55px;display:grid;grid-template-columns:1fr 1fr;gap:50px;color:#ffffffb8;font-size:15px;line-height:1.8}.currently{margin:55px 0 0;border-top:1px solid #ffffff40}.currently div{padding:17px 0;display:grid;grid-template-columns:160px 1fr;border-bottom:1px solid #ffffff40;font-size:12px}.currently dt{font-family:var(--mono);text-transform:uppercase;color:var(--orange)}.currently dd{margin:0}.contact{text-align:center;background:var(--orange)}.contact .eyebrow{margin-bottom:36px}.contact h2{max-width:1000px;margin-inline:auto}.contact>p:not(.eyebrow){max-width:570px;margin:30px auto;line-height:1.7}.button-light{min-width:min(100%,360px);background:var(--white);margin-top:8px}.contact-links{max-width:900px;margin:90px auto 0;padding-top:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:30px;border-top:1px solid}.contact-links a{display:flex;justify-content:space-between;font:10px var(--mono);text-transform:uppercase;text-underline-offset:5px}footer{padding:20px clamp(20px,4vw,64px);display:flex;justify-content:space-between;gap:20px;color:var(--white);background:var(--ink);font:9px var(--mono);text-transform:uppercase}
@media(max-width:980px){.site-header{grid-template-columns:1fr auto}.site-header nav{display:none}.hero{min-height:auto;grid-template-columns:1fr}.hero-copy{max-width:800px}.hero-figure{max-width:760px}.project{grid-template-columns:35px 1fr}.project-copy{grid-column:2;min-height:310px}.about{grid-template-columns:1fr}.about-stamp{width:300px}}
@media(max-width:680px){.site-header{min-height:66px;padding-block:12px}.wordmark-mark{width:32px;height:32px}.status{font-size:0}.hero{padding-top:65px;gap:55px}.hero h1{font-size:clamp(48px,15vw,72px)}.hero-intro,.hero-actions{margin-left:0}.hero-actions{align-items:flex-start;flex-direction:column}.coordinates{gap:10px;flex-wrap:wrap;margin-top:50px}.coordinates span+span{padding-left:10px}.section-heading{grid-template-columns:1fr;gap:30px}.project{grid-template-columns:25px 1fr;gap:14px}.project-visual{min-height:270px}.project-copy{min-height:340px;padding-right:0}.visual-paper{grid-template-columns:auto 25px 40px 25px auto;gap:6px}.about{padding-block:90px}.about-stamp{width:230px;padding:30px}.about-columns{grid-template-columns:1fr;gap:12px}.currently div{grid-template-columns:1fr;gap:8px}.contact-links{grid-template-columns:1fr}footer{flex-direction:column}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important}}

/* About timeline — intentionally closer to a marked-up notebook than a résumé. */
.about{display:block;color:var(--ink);background:#dedbce;background-image:linear-gradient(#17171310 1px,transparent 1px);background-size:100% 32px;overflow:hidden}.about-heading{max-width:1400px;margin:0 auto 100px;display:grid;grid-template-columns:1fr 1.5fr .8fr;gap:5vw;align-items:end}.about-heading h2{font-weight:600}.about-heading h2 em{color:var(--orange);font-weight:500}.about-heading>p:last-child{margin:0 0 4px;font:12px/1.7 var(--mono);transform:rotate(-2deg)}.story{position:relative;max-width:1280px;margin:auto}.story:before{content:"";position:absolute;top:-35px;bottom:-25px;left:50%;width:2px;background:repeating-linear-gradient(to bottom,var(--ink) 0 8px,transparent 8px 17px);transform:translateX(-1px) rotate(.35deg);opacity:.55}.story-row{position:relative;min-height:460px;display:grid;grid-template-columns:1fr 90px 1fr;gap:25px;align-items:center}.story-copy{max-width:430px;justify-self:end;padding:30px 15px 30px 0}.story-copy time{display:inline-block;margin-bottom:15px;padding:7px 10px;color:var(--white);background:var(--ink);font:10px var(--mono);transform:rotate(-1deg)}.story-copy h3{margin:0 0 18px;font-size:clamp(29px,3vw,47px);line-height:.98;letter-spacing:-.05em}.story-copy p{margin:0;font-size:14px;line-height:1.75}.story-dash{position:relative;width:74px;height:2px;background:var(--ink);transform:rotate(-3deg)}.story-dash:after{content:"";position:absolute;right:-4px;top:-5px;width:11px;height:11px;border-radius:50%;background:var(--orange);border:2px solid var(--ink)}.memory-stack{position:relative;width:min(88%,450px);aspect-ratio:4/3;justify-self:center}.memory{position:absolute;inset:0;padding:18px;border:1px solid var(--ink);display:flex;flex-direction:column;justify-content:space-between;font-family:var(--mono);box-shadow:7px 8px 0 #17171322}.memory-back{background:var(--orange);transform:rotate(7deg) translate(14px,-8px)}.memory-back span{font-size:9px}.memory-front{background:var(--white);transform:rotate(-3deg);background-image:linear-gradient(90deg,transparent 49.7%,#17171325 50%,transparent 50.3%),linear-gradient(transparent 49.7%,#17171325 50%,transparent 50.3%)}.memory-front b{margin:auto;text-align:center;font-size:12px}.memory-front small{font-size:9px;text-transform:uppercase}.blueprint{color:var(--white);background-color:var(--blue);background-image:linear-gradient(#ffffff25 1px,transparent 1px),linear-gradient(90deg,#ffffff25 1px,transparent 1px);background-size:24px 24px;transform:rotate(2.5deg)}.circuit{background-color:#efe8cf;background-image:radial-gradient(var(--ink) 1px,transparent 1px);background-size:15px 15px;transform:rotate(-1.5deg)}.final-memory{color:var(--white);background:var(--ink);transform:rotate(3deg)}.story-row-flip .story-copy{grid-column:3;grid-row:1;justify-self:start;padding-left:15px;padding-right:0}.story-row-flip .story-dash{grid-column:2;grid-row:1;transform:rotate(2deg)}.story-row-flip .story-dash:after{left:-4px;right:auto}.story-row-flip .memory-stack{grid-column:1;grid-row:1}.story-row-flip .memory-front{transform:rotate(3deg)}.story-row-flip .memory-back{transform:rotate(-6deg) translate(-14px,-5px)}.margin-note{max-width:1280px;margin:65px auto 0;text-align:right;font:10px var(--mono);transform:rotate(-1deg)}

@media(max-width:850px){.about-heading{grid-template-columns:1fr;margin-bottom:75px}.about-heading>p:last-child{max-width:380px}.story:before{left:18px}.story-row,.story-row-flip{min-height:auto;margin-bottom:100px;padding-left:55px;grid-template-columns:1fr}.story-copy,.story-row-flip .story-copy{grid-column:1;grid-row:1;justify-self:start;padding:0;max-width:600px}.story-dash,.story-row-flip .story-dash{position:absolute;left:-37px;top:20px;width:55px;grid-column:auto;grid-row:auto}.memory-stack,.story-row-flip .memory-stack{grid-column:1;grid-row:2;justify-self:start;margin-top:40px;width:min(86%,500px)}}
@media(max-width:520px){.about{padding-inline:20px}.about-heading{margin-bottom:60px}.story-row,.story-row-flip{padding-left:38px;margin-bottom:90px}.story:before{left:9px}.story-dash,.story-row-flip .story-dash{left:-28px;width:40px}.memory-stack,.story-row-flip .memory-stack{width:90%;margin-left:6px}.margin-note{text-align:left}}

.software-strip{min-height:150px;display:grid;grid-template-columns:minmax(250px,.32fr) 1fr;border-block:1px solid var(--ink);background:var(--white);overflow:hidden}.software-label{position:relative;z-index:2;padding:28px clamp(20px,4vw,64px);display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--ink);background:var(--orange)}.software-label span{margin-bottom:11px;font:9px var(--mono);letter-spacing:.12em}.software-label h2{margin:0;font-size:clamp(22px,2.2vw,34px);letter-spacing:-.045em}.logo-window{position:relative;min-width:0;overflow:hidden}.logo-window:before,.logo-window:after{content:"";position:absolute;z-index:1;top:0;bottom:0;width:70px;pointer-events:none}.logo-window:before{left:0;background:linear-gradient(90deg,var(--white),transparent)}.logo-window:after{right:0;background:linear-gradient(-90deg,var(--white),transparent)}.logo-track{width:max-content;height:100%;display:flex;align-items:center;animation:software-marquee 15s linear infinite;will-change:transform}.logo-set{display:flex;align-items:center;gap:100px;padding-right:100px}.software-item{min-width:210px;display:flex;align-items:center;gap:18px;font:500 12px var(--mono);text-transform:uppercase;letter-spacing:.08em}.software-item img{width:62px;height:62px;object-fit:contain}.software-item img.logo-onshape{width:66px;height:66px}.software-item:after{content:"↗";margin-left:auto;font-size:10px;opacity:.45}@keyframes software-marquee{to{transform:translateX(-50%)}}
@media(max-width:680px){.software-strip{grid-template-columns:1fr}.software-label{min-height:105px;border-right:0;border-bottom:1px solid var(--ink)}.logo-window{height:120px}.software-item{min-width:180px}.software-item img{width:52px;height:52px}.software-item img.logo-onshape{width:56px;height:56px}.logo-set{gap:60px;padding-right:60px}}
@media(prefers-reduced-motion:reduce){.logo-track{width:100%;justify-content:center;animation:none}.logo-set{padding:0}.logo-set[aria-hidden="true"]{display:none}}

/* Static tool shelf */
.software-strip{min-height:160px;padding:0 clamp(20px,6vw,100px);display:grid;grid-template-columns:minmax(230px,.55fr) 1fr;gap:clamp(30px,6vw,100px);border-block:1px solid var(--ink);background:var(--paper);overflow:visible}.software-label{padding:0;position:static;display:flex;flex-direction:column;justify-content:center;border:0;background:transparent}.software-label>span{margin-bottom:11px;font:9px var(--mono);letter-spacing:.12em}.software-logos{display:flex;align-items:center;justify-content:flex-start;gap:clamp(35px,5vw,80px)}.software-item{min-width:0;display:flex;align-items:center;gap:20px;font-family:var(--mono);text-transform:uppercase}.software-item img{width:82px;height:82px;object-fit:contain}.software-item img.logo-onshape{width:88px;height:88px}.software-item span{display:flex;flex-direction:column;gap:5px}.software-item b{font-size:13px;font-weight:500;letter-spacing:.08em}.software-item small{font-size:9px;letter-spacing:.12em;opacity:.55}.software-item:after{content:none}.tool-divider{width:1px;height:65px;background:var(--line)}
@media(max-width:680px){.software-strip{min-height:0;padding-block:28px;grid-template-columns:1fr;gap:28px}.software-label{min-height:0;border:0}.software-logos{height:auto;justify-content:space-between;gap:20px}.software-item{gap:12px}.software-item img{width:60px;height:60px}.software-item img.logo-onshape{width:64px;height:64px}.tool-divider{height:52px}}

.header-actions{justify-self:end;display:flex;align-items:center;gap:17px}.header-socials{display:flex;gap:7px}.header-socials a{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--ink);border-radius:50%;text-decoration:none;font:500 11px var(--mono);text-transform:none;transition:background .18s,color .18s,transform .18s}.header-socials a:hover{color:var(--white);background:var(--ink);transform:rotate(-7deg)}.header-socials .linkedin-bubble{font-family:var(--sans);font-weight:800;font-size:12px}.back-top{width:max-content;margin:85px auto 0;display:flex;gap:30px;font:10px var(--mono);text-transform:uppercase;text-underline-offset:5px}.back-top:hover{color:var(--white)}
@media(max-width:1120px){.site-header{grid-template-columns:1fr auto}.site-header nav{display:none}}
@media(max-width:720px){.header-actions{gap:11px}.status{font-size:0}.header-socials a{width:29px;height:29px}.software-logos{display:grid;grid-template-columns:1fr 1fr}.software-logos .tool-divider{display:none}.software-item:last-child{grid-column:1/-1}.back-top{margin-top:60px}}
@media(max-width:440px){.wordmark>span:last-child{display:none}.software-logos{grid-template-columns:1fr}.software-item:last-child{grid-column:auto}}

/* Rev. 04 — graphite, signal green, and hand-marked annotations */
:root{--ink:#171a17;--orange:#b8ff35;--blue:#343b36;--line:rgba(23,26,23,.22)}
.status i{background:#65d631;box-shadow:0 0 0 4px #65d63125}.hero h1 span{position:relative;z-index:0;display:inline-block}.hero h1 span:after{content:"";position:absolute;z-index:-1;inset:-10% -5% -4% -6%;border:2px solid var(--ink);border-radius:49% 53% 46% 56%;transform:rotate(-2.4deg);pointer-events:none}.hero h1 span:before{content:"";position:absolute;z-index:-1;inset:-5% -7% -10% -3%;border:1px solid var(--ink);border-radius:54% 46% 53% 48%;transform:rotate(1.2deg);opacity:.38;pointer-events:none}.text-link{position:relative;text-decoration:none}.text-link:after{content:"";position:absolute;left:-3px;right:-3px;bottom:-7px;height:5px;background:radial-gradient(ellipse at center,var(--orange) 0 2px,transparent 2.5px) 0 0/9px 5px repeat-x;transform:rotate(-1deg)}.about-heading h2 em{position:relative;display:inline-block}.about-heading h2 em:after{content:"";position:absolute;left:-2%;right:-4%;bottom:-12px;height:9px;background:radial-gradient(ellipse at center,var(--ink) 0 2px,transparent 2.5px) 0 1px/12px 7px repeat-x;transform:rotate(-1.5deg);opacity:.8}.section-heading h2{position:relative;width:max-content;max-width:100%}.section-heading h2:after{content:"";position:absolute;width:44px;height:20px;right:-55px;top:17%;border-top:2px solid var(--ink);border-radius:50%;transform:rotate(-12deg)}
@media(max-width:680px){.hero h1 span:after{inset:-8% -4% -2% -5%}.hero h1 span:before{display:none}.section-heading h2:after{display:none}}

/* Rev. 05 — deeper pine accent and four-tool shelf */
:root{--orange:#28664a;--blue:#343b36}
.ticker,.contact,.visual-orange,.memory-back{color:var(--white)}.ticker b{color:var(--white)}.back-top:hover{color:var(--ink)}.text-link:after{opacity:.85}.software-strip{grid-template-columns:minmax(210px,.4fr) 1fr;gap:clamp(25px,4vw,60px)}.software-logos{justify-content:space-between;gap:clamp(14px,2vw,30px)}.software-item{gap:14px}.software-item img{width:68px;height:68px}.software-item img.logo-onshape{width:73px;height:73px}.software-item img.logo-jlc{width:96px;height:68px}.tool-divider{height:58px}.software-item b{font-size:11px}.software-item small{font-size:8px}
@media(max-width:1000px){.software-strip{padding-block:30px;grid-template-columns:1fr;gap:25px}.software-logos{display:grid;grid-template-columns:1fr 1fr;gap:24px 40px}.software-logos .tool-divider{display:none}}
@media(max-width:720px){.software-item:last-child{grid-column:auto}}
@media(max-width:440px){.software-logos{grid-template-columns:1fr}.software-item img{width:60px;height:60px}.software-item img.logo-onshape{width:64px;height:64px}.software-item img.logo-jlc{width:86px;height:60px}}

/* Rev. 06 — balanced tool marks and temporary part-scatter map */
.software-item img.logo-jlc{width:150px;height:78px}.software-item img.logo-prusa{width:78px;height:78px}.hero,.work,.about,.contact{position:relative}.section-heading,.project-list,.about-heading,.story,.margin-note,.contact>*:not(.part-placeholder),.hero-copy,.hero-figure{position:relative;z-index:1}.part-placeholder{position:absolute;z-index:0;width:clamp(95px,9vw,150px);aspect-ratio:1;border:1px dashed currentColor;border-radius:48% 52% 45% 55%;display:grid;place-items:center;color:var(--ink);opacity:.26;transform:rotate(var(--part-rotate,-8deg));pointer-events:none}.part-placeholder:before,.part-placeholder:after{content:"";position:absolute;border:1px solid currentColor;border-radius:50%}.part-placeholder:before{inset:18%}.part-placeholder:after{width:14%;aspect-ratio:1;background:currentColor}.part-placeholder span{position:absolute;left:50%;top:103%;width:max-content;padding:3px 5px;background:var(--paper);font:7px/1.5 var(--mono);text-transform:uppercase;transform:translateX(-50%);text-align:center}.part-hero{right:-52px;top:13%;--part-rotate:12deg}.part-work-left{left:-58px;top:22%;--part-rotate:-14deg}.part-work-right{right:-65px;top:63%;width:120px;aspect-ratio:1.35;border-radius:6px;--part-rotate:9deg}.part-about-right{right:-42px;top:14%;width:170px;--part-rotate:17deg}.part-about-left{left:-58px;top:67%;width:125px;--part-rotate:-11deg}.part-contact{left:5%;top:25%;width:130px;--part-rotate:-16deg;color:var(--white)}.part-contact span{background:var(--orange)}
@media(max-width:1000px){.software-item img.logo-jlc{width:135px;height:70px}.software-item img.logo-prusa{width:72px;height:72px}.part-placeholder{display:none}}
@media(max-width:440px){.software-item img.logo-jlc{width:120px;height:62px}.software-item img.logo-prusa{width:66px;height:66px}}
.software-item img.logo-jlc{width:168px;height:119px}.software-item img.logo-prusa{width:84px;height:84px}@media(max-width:1000px){.software-item img.logo-jlc{width:145px;height:100px}.software-item img.logo-prusa{width:76px;height:76px}}@media(max-width:440px){.software-item img.logo-jlc{width:125px;height:86px}.software-item img.logo-prusa{width:68px;height:68px}}

/* Rev. 07 — real project parts scattered through the page */
body{overflow-x:hidden}.software-item img.logo-jlc{width:132px;height:92px}.scattered-part{position:absolute;z-index:2;display:block;height:auto;pointer-events:none;filter:drop-shadow(10px 14px 12px rgba(23,26,23,.17));transform-origin:center}.scattered-drone{width:clamp(155px,15vw,245px);right:-55px;top:9%;transform:rotate(9deg)}.scattered-shark{width:clamp(150px,14vw,225px);left:-65px;top:16%;transform:rotate(-17deg)}.scattered-wheel{width:clamp(165px,16vw,255px);right:-78px;top:59%;transform:rotate(13deg)}.scattered-box{width:clamp(185px,18vw,285px);right:-82px;top:20%;transform:rotate(-8deg)}
@media(max-width:1000px){.software-item img.logo-jlc{width:122px;height:85px}}
@media(max-width:900px){.scattered-part{display:none}}
@media(max-width:440px){.software-item img.logo-jlc{width:110px;height:76px}}

/* Rev. 08 — PCB placements */
.scattered-airq{width:clamp(145px,13vw,210px);left:43%;bottom:2%;transform:rotate(-12deg);filter:drop-shadow(12px 16px 13px rgba(23,26,23,.2))}.scattered-pdb{width:clamp(135px,12vw,195px);left:-38px;top:47%;transform:rotate(10deg);filter:drop-shadow(10px 13px 11px rgba(23,26,23,.2))}
@media(max-width:1180px){.scattered-airq{left:39%;bottom:-2%;width:155px}.scattered-pdb{left:-65px}}

/* Rev. 09 — PCB placement correction */
.scattered-airq{z-index:0;width:clamp(285px,25vw,390px);left:36%;top:7%;bottom:auto;transform:rotate(-15deg);filter:drop-shadow(15px 19px 16px rgba(23,26,23,.2))}.scattered-pdb{width:clamp(255px,23vw,355px);left:-42px;top:auto;bottom:1%;transform:rotate(-8deg);filter:drop-shadow(14px 17px 14px rgba(23,26,23,.22))}
@media(max-width:1180px) and (min-width:901px){.scattered-airq{width:275px;left:32%;top:9%}.scattered-pdb{width:260px;left:-55px;bottom:0}}

/* Rev. 10 — stacked 3D-work gallery and inspection modal */
.work-gallery{aspect-ratio:auto;min-height:430px;width:min(92%,490px);overflow:visible}.gallery-stage{position:relative;width:100%;aspect-ratio:4/3}.gallery-card{position:absolute;inset:0;margin:0;padding:10px 10px 34px;border:1px solid var(--ink);background:var(--white);box-shadow:8px 10px 0 rgba(23,26,23,.15);opacity:0;visibility:hidden;transform:translate(34px,-5px) rotate(4deg) scale(.94);transition:transform .42s cubic-bezier(.2,.75,.25,1),opacity .28s,visibility .28s;overflow:hidden}.gallery-card.is-active{z-index:3;opacity:1;visibility:visible;transform:translate(0) rotate(-1.5deg) scale(1);cursor:zoom-in}.gallery-card.is-next{z-index:2;opacity:.9;visibility:visible;transform:translate(17px,-12px) rotate(3.2deg) scale(.97)}.gallery-card.is-previous{z-index:1;opacity:.5;visibility:visible;transform:translate(-11px,9px) rotate(-3.8deg) scale(.95)}.gallery-card img,.gallery-card video{display:block;width:100%;height:100%;object-fit:cover;background:#d8d8d2}.gallery-card figcaption{position:absolute;left:13px;right:13px;bottom:10px;display:flex;justify-content:space-between;font:8px var(--mono);text-transform:uppercase}.gallery-controls{margin-top:27px;display:flex;align-items:center;justify-content:center;gap:13px}.gallery-controls button{width:43px;height:38px;border:1px solid var(--ink);background:var(--paper);font:17px var(--mono);cursor:pointer;transition:background .18s,color .18s,transform .18s}.gallery-controls button:hover{color:var(--white);background:var(--ink);transform:rotate(-4deg)}.gallery-controls span{min-width:58px;text-align:center;font:9px var(--mono)}.gallery-hint{display:block;margin-top:12px;text-align:center;font:8px var(--mono);text-transform:uppercase;opacity:.55}.media-modal{width:min(72vw,1050px);max-width:calc(100vw - 40px);height:min(78vh,780px);max-height:calc(100vh - 40px);padding:20px;border:1px solid var(--ink);background:var(--paper);box-shadow:14px 17px 0 rgba(23,26,23,.35);overflow:visible}.media-modal::backdrop{background:rgba(23,26,23,.72);backdrop-filter:blur(3px)}.modal-media{width:100%;height:calc(100% - 34px);display:grid;place-items:center;background:#111}.modal-media img,.modal-media video{width:100%;height:100%;object-fit:contain}.modal-close{position:absolute;z-index:2;right:-16px;top:-16px;width:42px;height:42px;border:1px solid var(--ink);border-radius:50%;color:var(--white);background:var(--ink);font:25px/1 var(--sans);cursor:pointer}.modal-close:hover{color:var(--ink);background:var(--orange)}.modal-caption{height:34px;margin:0;padding-top:11px;font:9px var(--mono);text-transform:uppercase}.media-modal[open]{animation:modal-in .2s ease-out}@keyframes modal-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:850px){.work-gallery{width:min(92%,540px);min-height:400px}.media-modal{width:calc(100vw - 32px);height:70vh}}
@media(max-width:520px){.work-gallery{width:90%;min-height:315px}.gallery-card{padding:7px 7px 29px}.gallery-controls{margin-top:20px}.media-modal{max-width:calc(100vw - 24px);height:62vh;padding:10px}.modal-close{right:-9px;top:-15px}}
@media(prefers-reduced-motion:reduce){.gallery-card,.media-modal[open]{transition:none;animation:none}}
.media-modal.media-modal-square{width:min(64vw,820px);height:min(84vh,840px)}.media-modal-square .modal-media{background:#d8d8d2}.media-modal-square .modal-media img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}
@media(max-width:700px){.media-modal.media-modal-square{width:calc(100vw - 28px);height:70vh}}

/* Rev. 11 — journey heading and Blender-era marker */
.about-heading h2 em{color:var(--orange);font-style:normal}.about-heading h2 em:after{background:radial-gradient(ellipse at center,var(--orange) 0 2px,transparent 2.5px) 0 1px/12px 7px repeat-x;opacity:1}.story-row:first-child .story-copy{position:relative}.blender-mark{position:absolute;width:clamp(76px,7vw,112px);height:auto;right:-82px;top:72px;z-index:2;transform:rotate(14deg);filter:drop-shadow(7px 9px 7px rgba(23,26,23,.17))}.scattered-box{top:61%;right:-82px;transform:rotate(-8deg)}
@media(max-width:1180px) and (min-width:851px){.blender-mark{width:78px;right:-48px;top:78px}.scattered-box{top:62%;right:-105px}}
@media(max-width:850px){.blender-mark{position:relative;float:right;width:80px;right:auto;top:auto;margin:-10px 2px 12px 18px}.scattered-box{display:none}}

/* Rev. 12 — Blender mark uses the open outer margin */
@media(min-width:1181px){.blender-mark{width:clamp(125px,8vw,150px);left:-205px;right:auto;top:38px;transform:rotate(-11deg);filter:drop-shadow(9px 12px 9px rgba(23,26,23,.18))}}
@media(max-width:1180px) and (min-width:851px){.blender-mark{width:105px;left:-125px;right:auto;top:45px;transform:rotate(-9deg)}}

/* Rev. 13 — second journey gallery and calculus margin note */
.gallery-card.gallery-contain img{object-fit:contain;background:#dedbce}.story-row:nth-child(2) .story-copy{position:relative}.calculus-mark{position:absolute;right:-205px;top:58px;width:max-content;color:var(--orange);font:500 clamp(42px,4.6vw,72px)/1 var(--mono);letter-spacing:-.08em;transform:rotate(7deg);text-shadow:4px 5px 0 rgba(23,26,23,.1)}.media-modal.media-modal-portrait{width:min(52vw,680px);height:min(88vh,880px)}.media-modal-portrait .modal-media{background:#d8d8d2}.media-modal-portrait .modal-media img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}
@media(max-width:1180px) and (min-width:851px){.calculus-mark{right:-115px;top:65px;font-size:44px}}
@media(max-width:850px){.calculus-mark{position:relative;display:block;right:auto;top:auto;width:max-content;margin:4px 0 20px auto;font-size:42px;transform:rotate(4deg)}.media-modal.media-modal-portrait{width:min(78vw,620px);height:82vh}}
@media(max-width:520px){.media-modal.media-modal-portrait{width:calc(100vw - 28px);height:76vh}}

/* Rev. 14 — compact theory mark and media-aware inspection sizing */
.calculus-mark{right:-300px;top:48px;padding:9px 17px 11px;color:var(--ink);border:2px solid var(--ink);border-radius:51% 49% 54% 46%;font-family:Georgia,"Times New Roman",serif;font-size:clamp(40px,4vw,62px);font-weight:700;letter-spacing:-.13em;line-height:.8;text-shadow:none;transform:rotate(-5deg)}.calculus-mark:after{content:"";position:absolute;inset:4px -7px -5px 5px;border:1px solid var(--ink);border-radius:47% 53% 45% 55%;opacity:.35}.modal-media img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.media-modal{transition:width .16s ease-out,height .16s ease-out}
@media(max-width:1180px) and (min-width:851px){.calculus-mark{right:-175px;top:52px;font-size:42px}}
@media(max-width:850px){.calculus-mark{right:auto;top:auto;margin:8px 0 22px auto;font-size:40px}}

/* Rev. 15 — lighter calculus notation */
.calculus-mark{right:-275px;top:44px;padding:0;color:var(--ink);border:0;border-radius:0;font-family:"Cambria Math","STIX Two Math","Times New Roman",serif;font-size:clamp(44px,4.2vw,66px);font-weight:400;font-style:italic;letter-spacing:-.035em;line-height:1;text-shadow:none;transform:rotate(-3deg)}.calculus-mark:after{content:"";position:absolute;inset:auto -5px -11px 1px;height:8px;border:0;border-radius:0;background:radial-gradient(ellipse at center,var(--orange) 0 2px,transparent 2.6px) 0 1px/11px 7px repeat-x;opacity:1;transform:rotate(1deg)}
@media(max-width:1180px) and (min-width:851px){.calculus-mark{right:-160px;top:50px;font-size:44px}}
@media(max-width:850px){.calculus-mark{right:auto;top:auto;margin:8px 0 25px auto;font-size:42px}}

/* Rev. 16 — a little more breathing room between journey chapters */
@media(min-width:851px){.story-row{min-height:500px}.story-row+.story-row{margin-top:48px}}

/* Rev. 17 — hero phrase and annotation alignment */
.hero h1 span{display:inline-block;white-space:nowrap;font-size:clamp(40px,4.2vw,74px);line-height:1.05;letter-spacing:-.065em}.hero h1 span:after{inset:-7% -5% -4% -5%;border-radius:48% 52% 46% 54%;transform:rotate(-2deg)}.hero h1 span:before{inset:-2% -6% -8% -3%;border-radius:53% 47% 55% 45%;transform:rotate(1deg)}.coordinates{letter-spacing:.12em}.hero-figure figcaption strong{letter-spacing:.04em}
@media(max-width:680px){.hero h1 span{font-size:clamp(37px,11.2vw,52px)}.hero h1 span:after{inset:-8% -4% -4% -4%}}

/* Rev. 18 — centered hero and cutout interacting with the About note */
.hero-copy{text-align:center}.hero-copy .eyebrow{text-align:center}.hero-intro{margin:36px auto 0;padding:20px 0 0;border-left:0;border-top:1px solid var(--ink);text-align:center}.hero-actions{margin:38px auto 0;justify-content:center}.coordinates{justify-content:center}.hero h1 span:after{inset:-13% -5% -10% -5%;border:2px solid var(--ink);border-radius:52% 48% 46% 54%;transform:rotate(-1.2deg)}.hero h1 span:before{inset:auto 5% -18% 3%;height:8px;border:0;border-radius:0;background:radial-gradient(ellipse at center,var(--orange) 0 2px,transparent 2.6px) 0 1px/11px 7px repeat-x;opacity:1;transform:rotate(1deg)}.scattered-airq{z-index:0;width:clamp(270px,23vw,365px);left:-75px;top:auto;bottom:2%;transform:rotate(-13deg)}.scattered-drone{width:clamp(210px,19vw,310px);right:-82px;top:-3%;transform:rotate(11deg)}.about{padding-top:clamp(220px,16vw,280px)}.about-note{position:relative;align-self:end;margin:0 0 4px}.about-note p{margin:0;font:12px/1.7 var(--mono);transform:rotate(-2deg)}.standing-cutout{position:absolute;z-index:3;width:clamp(115px,8.5vw,145px);height:auto;left:10%;bottom:calc(100% - 15px);filter:drop-shadow(7px 10px 8px rgba(23,26,23,.18));transform:rotate(-1deg);pointer-events:none}
@media(max-width:980px){.about{padding-top:220px}.standing-cutout{width:112px;left:52%;bottom:calc(100% - 13px)}}
@media(max-width:850px){.about-note{max-width:380px;margin-top:190px}.standing-cutout{width:108px;left:12%;bottom:calc(100% - 13px)}}
@media(max-width:680px){.hero-intro{padding-top:18px}.hero-actions{align-items:center}.hero h1 span:after{inset:-11% -3% -8% -3%}.scattered-airq,.scattered-drone{display:none}.about{padding-top:185px}.about-note{margin-top:170px}}

/* Rev. 19 — edge placements and oversized standing cutout */
.scattered-drone{z-index:0;right:-125px;top:7%;transform:rotate(11deg)}.scattered-airq{left:-165px;bottom:-3%;transform:rotate(-13deg)}.about{padding-top:clamp(360px,24vw,440px)}.standing-cutout{width:clamp(285px,20vw,340px);left:-45%;bottom:calc(100% - 42px);filter:drop-shadow(11px 15px 12px rgba(23,26,23,.2));transform:rotate(-1.5deg)}
@media(max-width:1180px) and (min-width:981px){.standing-cutout{width:280px;left:-38%;bottom:calc(100% - 37px)}}
@media(max-width:980px) and (min-width:851px){.about{padding-top:330px}.standing-cutout{width:240px;left:-28%;bottom:calc(100% - 32px)}}
@media(max-width:850px){.about{padding-top:285px}.about-note{margin-top:235px}.standing-cutout{width:205px;left:-15%;bottom:calc(100% - 28px)}}
@media(max-width:680px){.about{padding-top:235px}.about-note{margin-top:205px}.standing-cutout{width:175px;left:-7%;bottom:calc(100% - 24px)}}

/* Rev. 20 — PCB moves to Journey; header space belongs to the title, not the cutout */
.hero{min-height:auto;padding-top:clamp(50px,5vw,80px);padding-bottom:45px}.about{padding-top:clamp(125px,10vw,180px)}.about .scattered-airq{z-index:2;width:clamp(285px,22vw,360px);left:-110px;top:auto;bottom:-1%;transform:rotate(-11deg)}
@media(min-width:851px){.about-heading{margin-bottom:330px}.about-note{transform:translateY(300px)}}
@media(max-width:850px){.about{padding-top:120px}.about-note{transform:none;margin-top:235px}.about .scattered-airq{display:none}}
@media(max-width:680px){.hero{padding-top:48px;padding-bottom:38px}.about{padding-top:105px}.about-note{margin-top:205px}}

/* Rev. 21 — national coordinates and independent Journey decorations */
.scattered-drone{right:-145px;top:0}.about .scattered-airq{width:clamp(360px,28vw,460px);left:-92px;bottom:3%}.about{padding-top:clamp(100px,8vw,150px)}.about-heading{position:relative;margin-bottom:100px}.about-note{transform:none;margin:0 0 4px}.standing-cutout{width:clamp(155px,11vw,190px);left:25%;right:auto;top:-28px;bottom:auto;transform:rotate(-2deg);filter:drop-shadow(7px 10px 8px rgba(23,26,23,.17))}
@media(max-width:980px){.about{padding-top:105px}.about-heading{margin-bottom:90px}.standing-cutout{width:145px;left:20%;top:-18px}}
@media(max-width:850px){.about{padding-top:95px}.about-note{margin-top:0}.standing-cutout{width:125px;left:auto;right:5%;top:10px}}
@media(max-width:680px){.about{padding-top:85px}.about-note{margin-top:0}.standing-cutout{width:105px;right:2%;top:15px}}

/* Rev. 22 — Alberta lockup and final cutout nudge */
.standing-cutout{left:17%;top:-55px}.software-item small{white-space:nowrap}
@media(max-width:980px){.standing-cutout{left:13%;top:-38px}}
@media(max-width:850px){.standing-cutout{left:auto;right:8%;top:-5px}}
@media(max-width:680px){.standing-cutout{left:auto;right:3%;top:8px}}

/* Rev. 23 — align knees with the Journey underline */
@media(min-width:981px){.standing-cutout{left:19%;top:-65px}}

/* Rev. 24 — clean selected-project image tracks */
.featured-project{align-items:stretch}.project-slider{position:relative;min-width:0;overflow:hidden;border:1px solid var(--ink);background:#dedbd0}.project-track{height:100%;display:flex;transition:transform .48s cubic-bezier(.22,.7,.22,1);will-change:transform}.project-slide{position:relative;flex:0 0 100%;min-height:390px;margin:0;overflow:hidden;background:#d8d5cb}.project-slide img{width:100%;height:100%;min-height:390px;object-fit:cover}.project-slide-contain img{object-fit:contain;padding:20px;background:#dedbd0}.project-slide figcaption{position:absolute;left:14px;bottom:13px;padding:7px 9px;color:var(--white);background:var(--ink);font:8px var(--mono);text-transform:uppercase;letter-spacing:.06em}.project-slider-controls{position:absolute;z-index:3;left:0;right:0;top:0;padding:12px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.project-slider-controls>span{padding:7px 9px;color:var(--white);background:var(--ink);font:9px var(--mono);letter-spacing:.06em}.project-slider-controls div{display:flex;gap:5px}.project-slider-controls button{width:38px;height:38px;border:1px solid var(--ink);color:var(--ink);background:rgba(251,250,245,.92);font:16px var(--mono);cursor:pointer;pointer-events:auto;transition:color .18s,background .18s}.project-slider-controls button:hover{color:var(--white);background:var(--orange)}.featured-project .project-copy{min-height:390px}.featured-project .project-copy h3{margin:auto 0 18px}.featured-project .project-copy>a{margin-top:auto}.featured-project .project-meta{gap:20px}.featured-project .project-meta span:first-child{color:var(--orange)}
@media(max-width:980px){.project-slider{grid-column:2}.project-slide,.project-slide img{min-height:420px}.featured-project .project-copy{min-height:360px}}
@media(max-width:680px){.project-slider{grid-column:2}.project-slide,.project-slide img{min-height:280px}.project-slide-contain img{padding:12px}.project-slider-controls{padding:8px}.project-slider-controls button{width:34px;height:34px}.featured-project .project-copy{min-height:410px}.featured-project .project-meta{flex-direction:column;gap:6px}.featured-project .project-copy h3{margin:38px 0 18px}}
@media(prefers-reduced-motion:reduce){.project-track{transition:none}}

/* Rev. 25 — consistent project frames and a firm viewport edge */
html,body{max-width:100%;overflow-x:hidden;overflow-x:clip}.project-slider{height:390px;align-self:start}.project-track,.project-slide,.project-slide img{height:100%;min-height:0}.project-slide{cursor:zoom-in}.project-slide:focus-visible{outline:3px solid var(--orange);outline-offset:-4px}.project-slide-contain img{height:100%}.featured-project{align-items:start}
@media(max-width:980px){.project-slider{height:420px}.project-track,.project-slide,.project-slide img{min-height:0}}
@media(max-width:680px){.project-slider{height:280px}.project-track,.project-slide,.project-slide img{min-height:0}}

/* Rev. 26 — quiet board specifications */
.featured-project .project-copy .project-spec{margin:-8px 0 17px;color:rgba(23,26,23,.62);font:500 9px/1.5 var(--mono);letter-spacing:.09em;text-transform:uppercase}.project-spec span{padding:0 5px;color:var(--orange)}

/* Rev. 27 — final contact and header spacing */
.header-actions{gap:26px}.contact .button-light{margin-top:34px}footer{justify-content:center}
@media(max-width:720px){.header-actions{gap:15px}}

/* Rev. 28 — clearer contact hierarchy and repeated social routes */
.contact .contact-title{max-width:900px;font-size:clamp(34px,4.5vw,68px);line-height:1.02;letter-spacing:-.05em}.contact-title span{position:relative;display:block;width:max-content;max-width:100%;margin:.18em auto 0;font-size:.7em;font-style:italic;font-weight:500;letter-spacing:-.035em}.contact-title span:after{content:"";position:absolute;left:2%;right:0;bottom:-12px;height:7px;background:radial-gradient(ellipse at center,var(--ink) 0 2px,transparent 2.6px) 0 1px/11px 7px repeat-x;transform:rotate(-1deg)}.contact .button-light{color:var(--ink);background:var(--white)}.contact-socials{width:max-content;margin:22px auto 0}.contact-socials a{color:var(--ink);background:var(--white)}.contact-socials a:hover{color:var(--white);background:var(--ink)}.contact .back-top{margin-top:62px}footer{justify-content:space-between}
@media(max-width:680px){.contact .contact-title{font-size:clamp(32px,10vw,48px)}.contact-title span{font-size:.72em}.contact .button-light{min-width:0;width:100%;font-size:10px;gap:12px}footer{align-items:center;text-align:center}}

/* Rev. 29 — final copy details */
.contact .button-light{text-transform:none}.contact .back-top{font-size:12px;font-weight:500;letter-spacing:.04em}

/* Rev. 30 — ship-readiness: responsive edges, touch cues, and keyboard focus */
.skip-link{position:fixed;z-index:100;left:14px;top:12px;padding:10px 13px;color:var(--white);background:var(--ink);font:500 10px var(--mono);text-transform:uppercase;text-decoration:none;transform:translateY(-160%);transition:transform .18s}.skip-link:focus{transform:translateY(0)}a:focus-visible,button:focus-visible,[role="button"]:focus-visible{outline:3px solid var(--orange);outline-offset:4px}.image-frame img{height:auto}.project-copy>.project-link{align-self:flex-start;margin-top:auto;font:500 11px var(--mono);text-transform:uppercase;text-decoration:underline;text-underline-offset:5px}.project-link-pending{opacity:.62}.hint-touch{display:none}.contact .back-top:hover{color:var(--white);opacity:.72}.modal-close:hover{color:var(--white);background:var(--ink)}
@media(max-width:900px){.ticker div{min-width:0;justify-content:center;flex-wrap:wrap;gap:8px 22px;padding-block:13px}.ticker b{display:none}}
@media(max-width:680px){.section-heading,.section-heading>div,.section-heading>p{min-width:0;width:100%}.section-heading h2{width:auto;overflow-wrap:anywhere}.about-note{padding-right:88px}.software-item small{white-space:normal}}
@media(max-width:640px){.software-logos{grid-template-columns:1fr;gap:22px}.software-item:last-child{grid-column:auto}}
@media(hover:none),(pointer:coarse){.hint-desktop{display:none}.hint-touch{display:inline}.gallery-card.is-active,.project-slide{cursor:pointer}}
