@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff) format("woff")}:root{--bg:#f1f5fa;--surface:#e6edf5;--ink:#182637;--muted:#4c6176;--line:#bac8d8;--accent:#3ba3f8;--link:#24577f;--dark:#131a23;--dark-ink:#f3f6fb;--dark-muted:#b5c0cf;--dark-line:#394656;--font-display:"Space Grotesk Variable",sans-serif;--font-text:"IBM Plex Sans",sans-serif;--gutter:40px;--motion:.26s;--nav-height:76px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-height) + 16px);scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.7 var(--font-text);-webkit-font-smoothing:antialiased}@media screen{body{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}body>.closing{margin-top:auto}}::selection{background:#b9ddfa;color:var(--ink)}main{outline:none}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}img{display:block;max-width:100%;height:auto}svg{flex-shrink:0}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--link);outline-offset:4px}.nav :focus-visible,.closing :focus-visible,.signature-hero :focus-visible{outline-color:var(--accent)}h1,h2,h3,p,figure,ul,ol{margin:0}h1,h2,h3{font-family:var(--font-display);font-weight:500;overflow-wrap:break-word}h1{font-size:clamp(38px,5.5vw,62px);line-height:1.08;letter-spacing:-.035em}h2{font-size:clamp(34px,4.1vw,49px);line-height:1.1;letter-spacing:-.035em}h3{font-size:24px;line-height:1.2;letter-spacing:-.025em}strong{font-weight:600}.wrap{width:min(calc(100% - var(--gutter)*2),1200px);margin-inline:auto}.eyebrow{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:1.6px;color:var(--muted);margin-bottom:15px}.accent{color:var(--accent)}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link:focus{position:absolute;z-index:40;top:12px;left:20px;padding:10px 18px;background:var(--bg);color:var(--ink)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:20px;min-height:46px;padding:12px 20px;border:1px solid transparent;border-radius:0;font-size:15px;font-weight:500;line-height:1.45;text-align:center;transition:background var(--motion) ease,transform var(--motion) ease}.btn--primary{background:var(--accent);color:#101820;border-color:var(--accent)}.btn--primary:hover:not(:disabled){background:#66b8fa;border-color:#66b8fa}.btn--secondary{border-color:#657c93;background:transparent;color:var(--ink)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.6}.btn .m-arrow{transition:transform var(--motion) ease}.btn:hover:not(:disabled) .m-arrow{transform:translate(5px,-5px)}.btn-row{display:flex;align-items:center;flex-wrap:wrap;gap:27px}.m-arrow{width:20px;height:20px}.link{display:inline-flex;align-items:center;gap:20px;width:fit-content;max-width:100%;border-bottom:1px solid #7d8ea4;padding:8px 0;font-size:14px;font-weight:500}.link:hover{color:var(--link)}.brand{display:inline-flex;flex:0 0 auto;color:var(--dark-ink)}.brand>span{font:600 21px/1.05 var(--font-display);letter-spacing:-.7px}.brand-dot{color:var(--accent)}.nav{position:sticky;top:0;z-index:20;background:var(--dark);color:var(--dark-ink);box-shadow:inset 0 -1px var(--dark-line)}@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.nav{background:linear-gradient(180deg,rgb(59 163 248 / .08),transparent),#131a23d6;-webkit-backdrop-filter:blur(18px) saturate(145%);backdrop-filter:blur(18px) saturate(145%);box-shadow:inset 0 1px #ffffff1f,inset 0 -1px #b4d2ee38,0 4px 18px #131a2324}}@media(prefers-reduced-transparency:reduce),(prefers-contrast:more),(forced-colors:active){.nav{background:var(--dark);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:inset 0 -1px var(--dark-line)}}.nav-inner{position:relative;display:flex;align-items:center;justify-content:space-between;gap:25px;min-height:var(--nav-height)}.desktop-nav{display:flex;align-items:center;gap:24px;margin-left:auto}.desktop-nav a{position:relative;padding:10px 0;font-size:14px}.desktop-nav a:after{content:"";position:absolute;left:0;right:0;bottom:5px;background:var(--accent);height:1px;transform:scaleX(0);transform-origin:left;transition:transform var(--motion) ease}.desktop-nav a:hover:after,.desktop-nav a[aria-current]:after{transform:scaleX(1)}.menu-toggle{display:none;align-items:center;gap:10px;min-height:44px;padding:8px 11px;border:1px solid #64758b;background:none;color:var(--dark-ink);font-size:12px}.menu-symbol{transition:transform var(--motion) ease;font-size:18px;line-height:1}.menu-toggle[aria-expanded=true] .menu-symbol{transform:rotate(45deg)}.mobile-menu{position:absolute;left:0;right:0;top:100%;z-index:30;max-height:calc(100dvh - var(--nav-height));overflow-y:auto;padding:12px 23px 22px;background:#192534;border-bottom:1px solid #64758b}.mobile-menu a{display:flex;align-items:center;justify-content:space-between;gap:25px;min-height:53px;padding:13px 0;border-bottom:1px solid var(--dark-line);font-size:20px;font-family:var(--font-display)}.mobile-menu a:last-child{border:0}.closing{background:var(--dark);color:var(--dark-ink)}.footer-invitation{padding-block:45px}.footer-invitation .eyebrow{color:var(--dark-muted)}.footer-invitation h2{font-size:clamp(40px,6.4vw,67px);line-height:1.05}.footer-invitation h2 span{color:var(--accent)}.footer-invitation .btn{margin-top:27px}.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:25px;border-top:1px solid var(--dark-line);padding-block:23px 27px}.footer-links{display:flex;flex-wrap:wrap;gap:0 22px;justify-content:end;font-size:12px;color:var(--dark-muted)}.footer-bottom a:hover{color:var(--accent)}.brand--footer>span{font-size:19px}.page-head{padding-block:37px 30px}.page-head .back-link{display:inline-flex;align-items:center;gap:12px;color:var(--link);font-size:13px;margin-bottom:25px}.page-head>p:not(.eyebrow){color:var(--muted);margin-top:20px}.article-head{max-width:660px;border-bottom:1px solid var(--line);margin-top:0}.breadcrumbs{display:flex;flex-wrap:wrap;gap:10px;color:var(--link);font-size:13px;margin-bottom:24px}.article-head h1{font-size:clamp(36px,4.8vw,52px)}.article-byline{display:flex;flex-wrap:wrap;gap:12px 20px;color:var(--muted);font-size:12px;margin-top:22px}.article-cover{max-width:660px;margin-top:27px}.article-cover img{width:100%;max-height:330px;object-fit:contain}.reading-layout{max-width:660px;min-width:0;padding-block:30px 55px}.reading-layout>div{min-width:0}.prose{font-size:17px;line-height:1.75;overflow-wrap:anywhere}.prose>:first-child{margin-top:0}.prose p{margin-block:22px}.prose h2{margin:35px 0 18px;font-size:30px;line-height:1.2;letter-spacing:-.025em;scroll-margin-top:20px}.prose h3{margin:29px 0 16px;font-size:25px;line-height:1.3}.prose h4,.prose h5,.prose h6{margin:25px 0 14px;font-size:21px;font-weight:500;line-height:1.4}.prose a{color:var(--link);text-decoration:underline;text-underline-offset:4px}.prose ul,.prose ol{margin-block:22px;padding-left:25px}.prose li{margin-block:9px}.prose li>p{margin-block:8px}.prose img{width:auto;max-width:100%;max-height:800px;object-fit:contain;margin:26px auto}.prose figure{margin-block:28px}.prose figure img{margin:0 auto}.prose figcaption{color:var(--muted);font-size:13px;text-align:center}.prose pre{background:#e6edf5!important;border:1px solid var(--line);padding:20px;margin-block:26px;max-width:100%;overflow-x:auto;font-size:14px;line-height:1.7}.prose pre code{white-space:pre;overflow-wrap:normal}.prose :not(pre)>code{background:#e6edf5;font-size:.88em;padding:2px 5px}.prose table{width:100%;border-collapse:collapse;margin-block:26px;font-size:14px;line-height:1.6}.prose td,.prose th{padding:10px;border:1px solid var(--line);min-width:0;text-align:left}.prose th{background:#e6edf5;font-weight:500}.prose blockquote{margin:26px 0;border-left:3px solid var(--accent);padding-left:22px}.prose iframe,.prose video{max-width:100%}.prose iframe[src*=youtube],.prose iframe[src*=vimeo]{width:100%;height:auto;aspect-ratio:16/9}.prose hr{border:0;border-top:1px solid var(--line);margin-block:35px}.toc{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0;margin-bottom:28px;font-size:14px}.toc summary{cursor:pointer;font-weight:500}.toc ul{margin:15px 0 0;padding-left:20px}.toc li{margin-block:8px}.toc a{color:var(--link);text-decoration:none}.toc a:hover{text-decoration:underline}.pagination{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;padding-block:30px 45px}.pagination a{display:grid;place-items:center;min-width:44px;min-height:44px;border:1px solid #657c93}.pagination a[aria-current]{background:var(--ink);color:var(--bg)}.legacy-profile{padding-block:10px 50px}.error-page{padding-block:65px 75px}.error-page>p{margin-block:24px;max-width:45ch}.logo-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;padding-bottom:45px}.logo-option{min-width:0}.logo-option>img{aspect-ratio:4/3;object-fit:contain;padding:25px;background:var(--surface)}.logo-option>div{padding-block:20px}.logo-option p{margin-block:15px}@media(max-width:820px){.desktop-nav{display:none}.menu-toggle{display:inline-flex}}@media(max-width:650px){:root{--gutter:23px;--nav-height:68px}.nav-inner{gap:12px}.brand>span{font-size:18px}.btn-row{gap:20px}.page-head{padding-block:30px 25px}.article-head h1{font-size:38px}.prose h2{font-size:28px}.prose td,.prose th{padding:7px}.footer-invitation{padding-block:38px}.footer-invitation h2{font-size:clamp(39px,10vw,55px)}.footer-bottom{align-items:start;gap:18px}.footer-links{justify-content:start}.logo-options{grid-template-columns:1fr}}@media(max-width:360px){:root{--gutter:19px}.brand>span{font-size:16px}.menu-toggle{padding-inline:8px}.footer-links{justify-content:start}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}@media print{.nav,.closing,.btn-row,.toc{display:none}.wrap{width:100%}body{background:#fff;color:#000}.prose pre{white-space:pre-wrap}}.signature-hero{position:relative;isolation:isolate;overflow:hidden;background:var(--dark);color:var(--dark-ink);padding-block:51px 45px}.signature-hero>.wrap{position:relative;z-index:1}.pcb-watermark{position:absolute;z-index:0;pointer-events:none;top:50%;right:0;width:min(66vw,900px);transform:translateY(-50%);color:var(--accent);opacity:.27;mask-image:linear-gradient(to right,transparent 0%,#000 46%),linear-gradient(to bottom,transparent,#000 16%,#000 82%,transparent);mask-composite:intersect}.pcb-watermark img{display:block;width:100%;height:auto;transform:rotate(-12deg) scale(1.12)}@media(max-width:820px){.pcb-watermark{width:720px;right:-300px;opacity:.14}}@media(max-width:650px){.pcb-watermark{right:-390px;opacity:.12;mask-image:linear-gradient(to right,transparent 10%,#000 70%)}}.signature-hero h1{font-size:clamp(38px,6.6vw,78px);line-height:1.04;letter-spacing:-.036em}.signature-hero h1>span{display:block}.signature-hero .btn-row{margin-top:35px}.signature-hero .link:hover{color:var(--accent)}.skills-section{padding-block:42px 39px}.skills-list{margin-top:29px;border-top:1px solid var(--line)}.skill-row{display:grid;grid-template-columns:28px 1fr 1.1fr;align-items:start;gap:22px;padding-block:22px;border-bottom:1px solid var(--line)}.skill-index{font-size:12px;color:#536b83;padding-top:5px}.skill-row p{font-size:15px;color:var(--muted)}.profile-section{padding-block:39px 42px;background:var(--surface)}.profile-layout{display:grid;grid-template-columns:1fr 1.25fr;gap:38px;align-items:center}.profile-section .profile-layout{margin-top:25px}.profile-portrait{background:#d4e0ed;border-bottom:4px solid var(--accent);min-width:0}.profile-portrait img{width:100%;height:410px;object-fit:contain;object-position:center bottom}.profile-copy{min-width:0}.profile-copy h2{font-size:clamp(36px,4.4vw,47px);margin-bottom:25px}.profile-copy .profile-lead{font:400 23px/1.4 var(--font-display);letter-spacing:-.02em;color:var(--ink)}.profile-copy p+p{margin-top:20px;color:#3c5269}.profile-actions{margin-top:25px;gap:8px 22px}.profile-actions .link{min-height:44px;border-color:#657c93}.blog-head h1{font-size:62px}.blog-archive{padding-bottom:40px}.search-form{width:min(100%,340px);margin-bottom:24px}.search-form label{display:block;font-size:12px;margin-bottom:7px;color:var(--muted)}.search-field{display:flex;background:#fff;border:1px solid #657c93}.search-field input{width:100%;min-width:0;padding:11px 12px;border:0;background:transparent;border-radius:0;font-size:16px}.search-field button{display:grid;place-items:center;min-width:44px;border:0;background:transparent;color:var(--link)}.blog-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:15px;margin-bottom:20px}.category-filters{display:flex;flex-wrap:wrap;gap:9px}.filter{font-size:12px;min-height:40px;border:1px solid #91a8bf;padding:8px 12px;border-radius:0;background:transparent;color:#3b546e}.filter[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.result-count{color:#526a82;font-size:12px}.article-grid{border-top:1px solid var(--line)}.article-card{padding:21px 0;border-bottom:1px solid var(--line);min-width:0}.article-card-link{display:flex;gap:24px;align-items:center}.article-image{width:142px;height:102px;overflow:hidden;flex-shrink:0}.article-image img{width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.12)}.article-card-content{flex:1;min-width:0}.article-meta{display:flex;flex-wrap:wrap;gap:5px 15px;margin-bottom:9px;font-size:11px;color:#526a82}.article-meta>span{color:var(--link);font-weight:500}.article-card h3{font-size:24px;line-height:1.25}.article-card-link>.m-arrow{color:var(--link)}.article-card-link:hover h3{color:var(--link)}.load-more{text-align:center;margin-top:27px}.no-results{padding-block:35px}.no-results h2{font-size:28px}.no-results p{color:var(--muted);margin:15px 0 24px}.contact-page{padding-block:38px 45px}.contact-heading{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:30px;margin-bottom:30px}.contact-heading h1{font-size:clamp(38px,5.2vw,49px)}.contact-intro{color:var(--muted);max-width:380px;font-size:15px}.contact-direct{display:flex;flex-wrap:wrap;gap:4px 22px;margin-top:12px}.contact-direct a{display:inline-flex;align-items:center;min-height:44px;color:var(--link);text-decoration:underline;text-underline-offset:3px}.contact-form{border-top:1px solid var(--line);padding-top:25px}.contact-form fieldset{border:0;margin:0;padding:0;min-width:0}.contact-fields{display:grid;grid-template-columns:1fr 1fr;gap:23px 25px}.contact-field{display:flex;flex-direction:column;gap:8px;min-width:0}.contact-field--wide{grid-column:1/-1}.contact-field label{font-size:14px;font-weight:500}.contact-field label>span{color:#52677d;font-size:12px;font-weight:400;margin-left:6px}.contact-field input,.contact-field select,.contact-field textarea{width:100%;min-width:0;border:1px solid #657c93;border-radius:0;background:#fff;color:var(--ink);padding:12px;font-size:16px;line-height:1.5}.contact-field input::placeholder,.contact-field textarea::placeholder{color:#586e84;opacity:1}.contact-field textarea{min-height:135px;resize:vertical}.contact-form [aria-invalid=true]{border:2px solid #b42318}.field-error{font-size:13px;color:#b42318}.form-end{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.form-end>p{font-size:12px;color:var(--muted);max-width:330px}.form-end a,.form-unavailable a{color:var(--link);text-decoration:underline;text-underline-offset:4px}.form-error{border-left:3px solid #b42318;padding:12px 15px;margin-top:23px;color:#7e231e;background:#fff0ee;font-size:14px}.form-error strong{display:block;margin-bottom:5px}.form-error a{color:inherit;text-decoration:underline;text-underline-offset:4px}.form-error p+p{margin-top:8px}.form-unavailable{padding:15px 18px;margin-bottom:25px;border-left:3px solid #657c93;font-size:14px;background:var(--surface)}.contact-form[aria-busy=true] input,.contact-form[aria-busy=true] textarea{background:var(--surface)}.honeypot{display:none}.contact-success{padding-block:10px 35px}.contact-success h2{font-size:49px;margin-bottom:23px}.contact-success>p:not(.eyebrow){color:var(--muted);max-width:450px}.contact-success>p:last-child{border-top:1px solid var(--line);padding-top:22px;margin-top:27px;font-size:14px}.portfolio{padding-bottom:45px}.portfolio-empty{padding:30px 0;border-top:1px solid var(--line)}.portfolio-empty h2{font-size:30px}.portfolio-empty p{margin-top:16px;color:var(--muted)}.project-timeline{position:relative;margin-top:5px;padding-left:112px}.project-timeline:before{content:"";position:absolute;top:8px;bottom:14px;left:86px;width:1px;background:#a7bcd1}.project-entry{position:relative;padding-bottom:30px;margin-bottom:28px}.project-entry:last-child{padding-bottom:0;margin-bottom:0}.project-entry:before{content:"";position:absolute;top:7px;left:-30px;width:9px;height:9px;background:var(--accent)}.project-period{position:absolute;left:-112px;top:2px;width:70px;font-size:12px;color:#526a82}.project-entry h2{font-size:27px;margin-bottom:8px}.project-categories{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:0 0 12px}.project-category{padding:2px 8px;border:1px solid var(--category-line, #adcef0);background:var(--category-bg, #e0efff);color:var(--category-ink, #184778);font-size:12px;font-weight:600;line-height:1.5}.project-category[data-category=elettronica]{--category-line:#bacbdf;--category-bg:#e8eff8;--category-ink:#344d6c}.project-category[data-category=firmware]{--category-line:#acd2d7;--category-bg:#e0f2f3;--category-ink:#17575b}.project-category[data-category=app-mobile]{--category-line:#cfc2eb;--category-bg:#efe9fa;--category-ink:#553982}.project-category[data-category=frontend-web]{--category-line:#bac7ee;--category-bg:#e7edfd;--category-ink:#344b8d}.project-category[data-category=backend]{--category-line:#bad3bf;--category-bg:#e7f2e9;--category-ink:#315a3b}.project-description{color:var(--muted);font-size:15px;max-width:650px;margin-bottom:19px}.project-action{margin-bottom:24px}.project-action--app{display:flex;align-items:center;gap:16px}.project-action .project-link{margin:0}.project-app-icon{flex:none;width:56px;height:56px;border-radius:12px;object-fit:contain}.project-gallery{width:100%;max-width:640px}.project-slide{display:block;background:#fff}.project-slide img{display:block;width:auto;max-width:100%;height:auto;max-height:360px;margin-inline:auto;object-fit:contain}#ottoo .project-slide,#sachri-barber .project-slide,#gallery-optimizer .project-slide,#bando .project-slide,#tracker-nb-iot-ricarica-solare .project-slide,#tracker-nb-iot-supercondensatori .project-slide,#controller-pinza-robotica-dc-24v .project-slide,#controller-pinza-robotica-brushless .project-slide{background:transparent}#ottoo .project-slide img,#sachri-barber .project-slide img,#gallery-optimizer .project-slide img,#bando .project-slide img,#tracker-nb-iot-ricarica-solare .project-slide img,#tracker-nb-iot-supercondensatori .project-slide img,#controller-pinza-robotica-dc-24v .project-slide img,#controller-pinza-robotica-brushless .project-slide img{margin-inline:0}.gallery-controls{display:flex;justify-content:space-between;align-items:center;gap:15px;padding-top:11px;color:#526a82;font-size:12px}.gallery-controls>div{display:flex;gap:7px}.gallery-controls button{display:grid;place-items:center;background:none;color:var(--ink);border:1px solid #657c93;padding:9px;min-width:44px;min-height:44px}.gallery-controls button:disabled{opacity:.4}.gallery-controls [data-step="-1"] .m-arrow{transform:rotate(180deg)}@media(max-width:650px){.signature-hero{padding-block:48px 39px}.signature-hero h1{font-size:clamp(44px,10.8vw,67px);letter-spacing:-.035em}.signature-hero .btn-row{margin-top:31px}.skills-section,.profile-section{padding-block:34px}.skills-section h2{font-size:38px}.skill-row{grid-template-columns:22px 1fr;gap:10px 15px}.skill-row p{grid-column:2}.skill-row h3{font-size:23px}.profile-layout{grid-template-columns:1fr;gap:29px}.profile-portrait img{height:auto;aspect-ratio:1;object-fit:contain;object-position:center bottom}.profile-copy h2{font-size:39px;margin-bottom:21px}.profile-copy .profile-lead{font-size:23px}.blog-head h1{font-size:52px}.search-form{width:100%}.article-card-link{gap:15px;align-items:start}.article-image{width:77px;height:65px;margin-top:2px}.article-card h3{font-size:20px}.article-card-link>.m-arrow{display:none}.contact-page{padding-block:32px 38px}.contact-heading{grid-template-columns:1fr;gap:18px}.contact-heading h1,.contact-success h2{font-size:38px}.contact-fields{grid-template-columns:1fr;gap:20px}.form-end{flex-direction:column;align-items:start;gap:20px}.project-timeline{padding-left:23px}.project-timeline:before{left:3px;top:7px}.project-entry{padding-bottom:0;margin-bottom:34px}.project-entry:before{left:-24px;top:6px}.project-period{position:static;width:auto;margin-bottom:11px}.project-entry h2{font-size:25px}}.hero-lead{max-width:640px;margin-top:22px;font-size:clamp(17px,1.7vw,20px);line-height:1.5;color:#c5d2df}.signature-hero .btn-row{margin-top:30px}.signature-hero .link{min-height:46px;border-color:#7d8ea4;color:var(--dark-ink)}.desktop-nav a.nav-cta{padding:8px 14px;border:1px solid var(--accent);color:var(--dark-ink)}.desktop-nav a.nav-cta:after{content:none}.desktop-nav a.nav-cta:hover,.desktop-nav a.nav-cta[aria-current]{background:var(--accent);color:#101820}.proof-band{padding-block:18px;background:var(--surface);border-bottom:1px solid var(--line)}.sector-row{display:flex;align-items:baseline;gap:18px}.sector-row p{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:1.6px;color:var(--muted)}.sector-row ul,.about-sectors ul{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0;padding:0;list-style:none;font-size:15px;color:var(--ink)}.skill-copy{min-width:0}.skill-row .skill-stack{margin-top:8px;font-size:13px;line-height:1.5;color:#526a82}.featured-section{padding-block:42px;background:var(--surface)}.featured-head{display:flex;justify-content:space-between;align-items:end;gap:24px}.featured-head .eyebrow{margin-bottom:12px}.featured-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:30px 25px;margin-top:28px}.featured-card{display:block;min-width:0}.featured-image{aspect-ratio:16/10;overflow:hidden;background:#fff;border-bottom:3px solid var(--line);transition:border-color var(--motion) ease}.featured-image img{display:block;width:100%;height:100%;object-fit:cover}.featured-card:hover .featured-image{border-color:var(--accent)}.featured-kind{margin-top:15px;font-size:12px;font-weight:500;color:var(--link)}.featured-card h3{margin-top:5px}.featured-card>p:last-child{margin-top:7px;max-width:520px;font-size:15px;color:var(--muted)}.portfolio-intro{max-width:640px}.project-filters{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px 24px;margin-bottom:30px;padding-block:14px;border-block:1px solid var(--line)}.project-filters[hidden]{display:none}.project-filters>p{font-size:13px;color:var(--muted)}.project-role{max-width:650px;margin-bottom:12px;font-size:15px;color:var(--ink)}.project-role strong{display:inline-block;margin-right:6px;font-size:12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}.project-tech{display:flex;flex-wrap:wrap;gap:4px 16px;max-width:650px;margin:0 0 19px;padding:0;list-style:none;font-size:13px;line-height:1.5;color:#3c5269}.project-tech li{position:relative}.project-tech li+li:before{content:"·";position:absolute;left:-10px;color:#7d8ea4}.about-story,.about-sectors,.about-tools{display:grid;grid-template-columns:1fr 2fr;gap:20px 38px;padding-block:34px;border-top:1px solid var(--line)}.about-story{margin-top:38px}.about-tools{margin-bottom:42px}.about-story h2,.about-sectors h2,.about-tools h2{font-size:clamp(27px,3vw,34px)}.about-story p{max-width:680px;color:#3c5269}.about-story p+p{margin-top:16px}.about-tools dl{margin:0}.about-tools dl>div{display:grid;grid-template-columns:170px 1fr;gap:6px 20px;padding-block:12px;border-bottom:1px solid var(--line)}.about-tools dt{font-size:14px;font-weight:600;color:var(--ink)}.about-tools dd{margin:0;font-size:15px;color:var(--muted)}.footer-identity p{margin-top:10px;font-size:13px;color:var(--dark-muted)}.footer-links a{display:inline-flex;align-items:center;min-height:44px}@media(max-width:820px){.desktop-nav a.nav-cta{padding:8px 12px}}@media(max-width:650px){.sector-row{flex-direction:column;gap:10px}.skill-copy{grid-column:2}.featured-grid{grid-template-columns:1fr}.featured-head{align-items:start;flex-direction:column;gap:10px}.about-story,.about-sectors,.about-tools{grid-template-columns:1fr;padding-block:28px}.about-tools dl>div{grid-template-columns:1fr}.footer-bottom{flex-direction:column}}
