
:root{
  --bg:#f2efe9;--surface:#f8f5ef;--soft:#e7e3da;--fg:#141511;--muted:#62635b;--line:#c8c4b9;--line2:#97968e;
  --accent:#a64b2b;--success:#3f714d;--shell:min(1240px,calc(100% - 64px));--radius:14px;--mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
  --sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;--ease:cubic-bezier(.2,.7,.2,1);--header-height:76px;--page-top:clamp(40px,5vw,72px);--section-space:clamp(72px,8vw,112px);--motion-fast:180ms;--motion-enter:480ms
}
html[data-theme=dark]{--bg:#111210;--surface:#171815;--soft:#20211d;--fg:#f3f0e9;--muted:#aaa99f;--line:#33342f;--line2:#55564f;--accent:#d77950}
@media(prefers-color-scheme:dark){html[data-theme=auto]{--bg:#111210;--surface:#171815;--soft:#20211d;--fg:#f3f0e9;--muted:#aaa99f;--line:#33342f;--line2:#55564f;--accent:#d77950}}
*{box-sizing:border-box}html{scroll-padding-top:calc(var(--header-height) + 24px)}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.shell{width:var(--shell);margin:auto}
.skip-link{position:fixed;z-index:999;top:10px;left:12px;transform:translateY(-150%);background:var(--fg);color:var(--bg);padding:9px 13px;border-radius:6px}.skip-link:focus{transform:none}
.eyebrow{margin:0 0 18px;color:var(--muted);font:11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.site-header{position:sticky;z-index:100;top:0;height:var(--header-height);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid transparent;transition:border-color var(--motion-fast)}.site-header.scrolled{border-color:var(--line)}
.header-inner{height:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px}.brand{font-size:21px;font-weight:760;letter-spacing:-.04em}.brand b{color:var(--accent)}.desktop-nav{display:flex;gap:28px}.desktop-nav a,.lang-link,.footer-links a,.contact-action>div a{font-size:13px;color:var(--muted)}.desktop-nav a:hover,.lang-link:hover,.footer-links a:hover{color:var(--fg)}
.header-actions{justify-self:end;display:flex;align-items:center;gap:13px}.theme-toggle,.menu-button{width:44px;height:44px;border:0;background:none;display:grid;place-items:center;cursor:pointer}.header-contact{border:1px solid var(--fg);border-radius:999px;padding:9px 15px;font-size:13px}.header-contact:hover{background:var(--fg);color:var(--bg)}
.menu-button,.mobile-menu{display:none}.menu-button span{width:18px;height:1px;background:currentColor}.menu-button span:first-child{transform:translateY(3px)}.menu-button span:nth-child(2){transform:translateY(-3px)}.menu-button i{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.hero{padding-top:var(--page-top)}.status{display:flex;gap:9px;align-items:center;margin-bottom:32px;color:var(--muted);font:11px/1.6 var(--mono);letter-spacing:.05em;text-transform:uppercase}.status span{width:7px;height:7px;background:var(--success);border-radius:50%}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(250px,.7fr);gap:clamp(32px,5vw,80px);align-items:end}.hero h1,.case-hero h1,.error h1{margin:0;font-weight:560;letter-spacing:-.062em;line-height:1.02;text-wrap:balance;overflow-wrap:anywhere}.hero h1{font-size:clamp(56px,7.2vw,102px);max-width:16ch}
.hero-intro{max-width:58ch;margin:28px 0 0;color:var(--muted);font-size:clamp(19px,1.8vw,24px);line-height:1.38;letter-spacing:-.02em}.hero-links,.project-actions,.os-links{display:flex;flex-wrap:wrap;gap:18px 24px;margin-top:32px}.hero-links a,.project-actions a,.os-links a{font-size:14px;font-weight:610;border-bottom:1px solid currentColor;padding-bottom:4px}
.profile-index{border-top:1px solid var(--fg)}.profile-index>div{display:grid;grid-template-columns:75px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.profile-index span{font:10px var(--mono);color:var(--muted);text-transform:uppercase}.profile-index strong{font-size:13px;font-weight:560}.profile-index p{display:flex;gap:16px}.profile-index p a{font-size:12px;color:var(--muted)}
.hero-rule{margin-top:clamp(48px,6vw,80px);border-top:1px solid var(--line2);padding-top:12px;display:flex;justify-content:space-between;color:var(--muted);font:10px var(--mono);letter-spacing:.05em;text-transform:uppercase}
.section{padding-block:var(--section-space)}.section-head{display:grid;grid-template-columns:minmax(140px,.45fr) minmax(0,1.6fr);column-gap:48px;row-gap:22px;margin-bottom:clamp(32px,4vw,56px)}.section-head .eyebrow{grid-column:1}.section-head h2{grid-column:2;margin:0;max-width:23ch;font-size:clamp(36px,4.2vw,60px);font-weight:550;line-height:1.02;letter-spacing:-.052em}.section-intro{grid-column:2;margin:0;max-width:70ch;color:var(--muted);font-size:18px;line-height:1.65}
.projects{border-top:1px solid var(--line2)}.project-row{display:grid;grid-template-columns:40px minmax(0,.9fr) minmax(0,1.1fr);gap:32px;padding:34px 0 42px;border-bottom:1px solid var(--line);align-items:start}.project-no,.num,.period,.visual-index,.case-list article>span,.decisions article>span,.flow div span{color:var(--muted);font:10px var(--mono);letter-spacing:.05em}.project-copy{padding-top:6px}.project-type{margin:0 0 12px;color:var(--accent);font:10px var(--mono);letter-spacing:.06em;text-transform:uppercase}.project-copy h3{margin:0;font-size:clamp(28px,3.2vw,46px);line-height:1.04;font-weight:560;letter-spacing:-.045em}.project-copy>p:not(.project-type){margin:20px 0 0;max-width:58ch;color:var(--muted);line-height:1.65}.project-meta{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:22px;color:var(--muted);font-size:11px}
.visual{position:relative;overflow:hidden;min-height:305px;border:1px solid var(--line);border-radius:var(--radius);background:var(--soft)}.visual-image img{width:100%;height:100%;min-height:305px;aspect-ratio:16/10;object-fit:cover;transition:transform .5s var(--ease)}.visual-meta{position:absolute;inset:auto 0 0;gap:16px;display:flex;justify-content:space-between;padding:11px 13px;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(10px);color:var(--muted);font:10px/1.5 var(--mono);letter-spacing:.04em;text-transform:uppercase}
.visual-system{padding:25px;display:flex;flex-direction:column;justify-content:space-between}.visual-system .visual-meta{background:none;color:currentColor;padding-inline:25px}.tone-modular-ai-platform{background:#20221f;color:#f2efe9;border-color:#30322e}.tone-realtime-data-platform{background:#d9ddd9;color:#171915}.tone-hackzone-tunisia-x{background:#c5c8b2;color:#191b16}.mini-flow{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:auto 0}.mini-flow span{border:1px solid color-mix(in srgb,currentColor 35%,transparent);border-radius:999px;padding:8px 10px;font:9px var(--mono)}.mini-flow b{font-size:11px;font-weight:400;opacity:.6}
.open-source{background:var(--fg);color:var(--bg)}.os-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(60px,10vw,150px)}.open-source .eyebrow{color:color-mix(in srgb,var(--bg) 60%,transparent)}.open-source h2{margin:0;font-size:clamp(36px,5.5vw,72px);overflow-wrap:anywhere;font-weight:550;line-height:.98;letter-spacing:-.06em}.open-source p:not(.eyebrow){max-width:60ch;color:color-mix(in srgb,var(--bg) 72%,transparent);font-size:18px;line-height:1.65}.os-spec{border-top:1px solid color-mix(in srgb,var(--bg) 28%,transparent)}.os-spec div{display:grid;grid-template-columns:38px 1fr 1fr;gap:15px;padding:17px 0;border-bottom:1px solid color-mix(in srgb,var(--bg) 20%,transparent)}.os-spec span{font:9px var(--mono);opacity:.6}.os-spec b{font-size:13px;font-weight:570}.os-spec small{opacity:.62}
.capabilities,.timeline{border-top:1px solid var(--line2)}.capabilities article{display:grid;grid-template-columns:50px minmax(280px,1fr) minmax(320px,.8fr);gap:30px;padding:26px 0;border-bottom:1px solid var(--line)}.capabilities h3,.timeline h3{margin:0;font-size:22px;font-weight:570;letter-spacing:-.025em}.capabilities p,.timeline .org{margin:7px 0 0;color:var(--muted)}.tech-line{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px 13px}.tech-line span{font:9px var(--mono);color:var(--muted)}
.timeline article{display:grid;grid-template-columns:minmax(180px,.35fr) 1fr;gap:36px;padding:27px 0;border-bottom:1px solid var(--line)}.timeline ul{margin:17px 0 0;padding-left:18px;color:var(--muted);max-width:74ch}.timeline li+li{margin-top:7px}
.about{border-top:1px solid var(--line2)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(50px,8vw,120px)}.about-grid h2{margin:0;max-width:17ch;font-size:clamp(38px,4.6vw,64px);font-weight:550;line-height:.99;letter-spacing:-.058em}.about-grid p{margin:0;color:var(--muted);font-size:18px;line-height:1.75}.about-grid p+p{margin-top:22px}.principles{display:grid;grid-template-columns:repeat(3,1fr);margin-top:75px;border-top:1px solid var(--line)}.principles div{min-height:160px;padding:17px 25px 24px 0;border-right:1px solid var(--line);display:flex;flex-direction:column;justify-content:space-between}.principles div:not(:first-child){padding-left:25px}.principles div:last-child{border-right:0}.principles span{font:9px var(--mono);color:var(--muted)}.principles strong{font-size:20px;font-weight:560;max-width:15ch}
.cv-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(60px,10vw,150px);border-top:1px solid var(--line2)}.cv-grid article,.plain-list div{padding:18px 0;border-bottom:1px solid var(--line)}.cv-grid article:first-of-type,.plain-list{border-top:1px solid var(--line)}.cv-grid article span,.cv-grid article small{font:9px var(--mono);color:var(--muted)}.cv-grid article h3{margin:7px 0 5px;font-size:19px;font-weight:560}.cv-grid article p{margin:0;color:var(--muted)}.plain-list div{color:var(--muted)}.plain-list.compact div{padding:10px 0}.eyebrow.sub{margin-top:52px}
.contact{border-top:1px solid var(--line2)}.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(50px,10vw,150px)}.contact .section-head{display:block;margin:0}.contact .section-head h2{max-width:19ch}.contact .section-intro{margin-top:22px}.contact-action{align-self:end}.email-link{display:flex;justify-content:space-between;gap:18px;padding-bottom:17px;border-bottom:1px solid var(--fg);font-size:clamp(20px,3vw,38px);letter-spacing:-.035em;overflow-wrap:anywhere}.contact-action>div{display:flex;flex-wrap:wrap;gap:18px 26px;margin-top:18px}
.site-footer{padding:38px 0 28px;border-top:1px solid var(--line)}.footer-grid{display:grid;grid-template-columns:1.1fr .8fr .6fr;gap:38px}.site-footer strong{font-weight:620}.site-footer p{margin:7px 0 0;color:var(--muted);font-size:12px}.footer-links,.footer-meta{display:grid;align-content:start;gap:7px}.footer-meta{justify-self:end;text-align:right;color:var(--muted);font:9px var(--mono)}
.case-hero{padding-top:var(--page-top)}.back{display:inline-flex;gap:8px;align-items:center;min-height:44px;margin-bottom:32px;color:var(--muted);font-size:13px}.case-head{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(250px,.7fr);gap:clamp(32px,5vw,80px);align-items:end;margin-bottom:40px}.case-hero h1{font-size:clamp(48px,6.3vw,88px);max-width:18ch}.case-summary{margin:24px 0 0;max-width:62ch;color:var(--muted);font-size:clamp(18px,2vw,24px);line-height:1.5;letter-spacing:-.018em}.case-head dl{margin:0;border-top:1px solid var(--fg)}.case-head dl div{display:grid;grid-template-columns:100px minmax(0,1fr);gap:15px;padding:12px 0;border-bottom:1px solid var(--line)}.case-head dt{font:9px var(--mono);color:var(--muted);text-transform:uppercase}.case-head dd{margin:0;font-size:13px;overflow-wrap:anywhere}.visual-hero{min-height:min(48vw,560px);border-radius:var(--radius)}.visual-hero.visual-image img{min-height:min(48vw,560px);aspect-ratio:16/8.5}.visual-hero.visual-system{padding:clamp(28px,5vw,62px)}.visual-hero .mini-flow{justify-content:center}.visual-hero .mini-flow span{padding:12px 17px;font-size:11px}
.case-section{padding-block:var(--section-space);border-top:1px solid var(--line)}.case-context{display:grid;grid-template-columns:.38fr 1fr;gap:48px}.case-context h2{margin:0;font-size:clamp(32px,4vw,52px);font-weight:550;line-height:1.04;letter-spacing:-.05em}.case-context>div p{max-width:67ch;margin:25px 0 0;color:var(--muted);font-size:18px;line-height:1.75}.case-list{margin-left:calc((100% - 48px) * .27536 + 48px);border-top:1px solid var(--line2)}.case-list article{display:grid;grid-template-columns:52px 1fr;gap:22px;padding:23px 0;border-bottom:1px solid var(--line)}.case-list p{margin:0;max-width:72ch;font-size:17px;line-height:1.65}
.flow-section{background:var(--surface)}.flow{display:grid;grid-template-columns:repeat(9,auto);gap:12px;align-items:center;padding-top:28px;overflow-x:auto}.flow div{min-width:145px;min-height:105px;padding:13px;border:1px solid var(--line2);border-radius:6px;display:flex;flex-direction:column;justify-content:space-between}.flow div b{font-size:14px;font-weight:570}.flow i{font-style:normal;color:var(--muted)}.gallery{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;padding-block:32px var(--section-space)}.gallery figure{margin:0}.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);border-radius:var(--radius)}.gallery figcaption{margin-top:9px;color:var(--muted);font:9px var(--mono)}
.decisions{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line2)}.decisions article{min-height:250px;padding:17px 28px 24px 0;border-right:1px solid var(--line)}.decisions article:not(:first-child){padding-left:28px}.decisions article:last-child{border-right:0}.decisions h3{margin:40px 0 11px;font-size:21px;font-weight:560;letter-spacing:-.025em}.decisions p{margin:0;color:var(--muted);line-height:1.7}
.stack{display:grid;grid-template-columns:.35fr 1fr;gap:48px}.stack>div{display:flex;flex-wrap:wrap;gap:7px}.stack>div>span{border:1px solid var(--line);border-radius:999px;padding:7px 10px;font:9px var(--mono)}.stack>div p{width:100%;margin:11px 0 0;color:var(--muted);font-size:11px}.next{min-height:180px;border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);display:grid;grid-template-columns:.35fr 1fr auto;align-items:center;gap:38px}.next .eyebrow{margin:0}.next strong{font-size:clamp(28px,4vw,52px);font-weight:550;letter-spacing:-.045em}.next>b{font-size:32px}
.error{min-height:100vh;display:flex;flex-direction:column;justify-content:center}.error h1{font-size:clamp(60px,11vw,145px);max-width:8ch}.error>p:not(.eyebrow){color:var(--muted);font-size:20px}.error>a{align-self:flex-start;border-bottom:1px solid currentColor}

/* Shared alignment, image treatment and interaction states. */
main, .hero-main, .case-head>div, .project-copy, .os-grid>div, .about-grid>div, .contact-grid>div {min-width:0}
h2,h3 {text-wrap:balance;overflow-wrap:anywhere}
p {text-wrap:pretty}
button,a {-webkit-tap-highlight-color:transparent}
a,button {touch-action:manipulation}
.desktop-nav a,.lang-link,.footer-links a,.profile-index p a,.contact-action>div a {transition:color var(--motion-fast) var(--ease);text-underline-offset:5px}
.desktop-nav a {position:relative;padding-block:12px}
.desktop-nav a::after {content:"";position:absolute;left:0;right:0;bottom:6px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--motion-fast) var(--ease)}
.desktop-nav a:is(:hover,:focus-visible,[aria-current])::after {transform:scaleX(1)}
.desktop-nav a[aria-current] {color:var(--fg)}
.lang-link {display:grid;place-items:center;min-width:36px;min-height:44px}
.theme-toggle,.menu-button {border-radius:50%;transition:background var(--motion-fast),color var(--motion-fast)}
.theme-toggle:is(:hover,:focus-visible),.menu-button:is(:hover,:focus-visible) {background:var(--soft);color:var(--accent)}
.header-contact {transition:background var(--motion-fast),color var(--motion-fast)}
.menu-button span {transition:transform var(--motion-fast)}
.menu-button[aria-expanded=true] span:first-child {transform:translateY(5.5px) rotate(45deg)}
.menu-button[aria-expanded=true] span:nth-child(2) {transform:translateY(-5.5px) rotate(-45deg)}
.hero-links a,.project-actions a,.os-links a {min-height:36px;display:inline-flex;align-items:center;gap:8px;border-bottom-color:var(--line2);transition:color var(--motion-fast),border-color var(--motion-fast)}
.hero-links a:is(:hover,:focus-visible),.project-actions a:is(:hover,:focus-visible) {color:var(--accent);border-color:currentColor}
.os-links a:is(:hover,:focus-visible) {border-color:currentColor}
.project-actions a span,.back span,.email-link span,.next>b {display:inline-block;transition:transform var(--motion-fast) var(--ease)}
.project-actions a:is(:hover,:focus-visible) span,.next:is(:hover,:focus-visible)>b {transform:translateX(4px)}
.back:is(:hover,:focus-visible) {color:var(--accent)}
.back:is(:hover,:focus-visible) span {transform:translateX(-4px)}
.email-link:is(:hover,:focus-visible) span {transform:translate(3px,-3px)}
.footer-links a:is(:hover,:focus-visible),.profile-index p a:is(:hover,:focus-visible),.contact-action>div a:is(:hover,:focus-visible),.lang-link:is(:hover,:focus-visible),.case-head dd a {text-decoration:underline}
.project-no,.project-copy h3 a {transition:color var(--motion-fast)}
.project-row:focus-within .project-no,.project-row:focus-within h3 a {color:var(--accent)}
.visual-link {display:block;position:relative;min-width:0;border-radius:var(--radius)}
.visual {transition:border-color var(--motion-fast)}
.visual-system .visual-index {color:inherit;opacity:.75}
.visual-open {position:absolute;right:16px;top:16px;width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--fg);font-size:22px;transition:transform var(--motion-fast),background var(--motion-fast),color var(--motion-fast)}
.visual-link:focus-visible .visual {border-color:var(--accent)}
.visual-link:focus-visible .visual-open {background:var(--fg);color:var(--bg);transform:rotate(45deg)}
.visual-evidence {min-height:0;background:#171a1c;display:flex;flex-direction:column}
.visual-evidence img {height:auto;min-height:0;aspect-ratio:16/10;object-fit:contain}
.visual-evidence .visual-meta {position:relative;flex:1;background:var(--surface);backdrop-filter:none;color:var(--muted);border-top:1px solid var(--line)}
.visual-hero.visual-evidence {min-height:0}
.visual-hero.visual-evidence img {height:auto;min-height:0;aspect-ratio:auto;max-height:640px;object-fit:contain}
.media-credit {display:flex;flex-wrap:wrap;gap:8px 20px;align-items:baseline;margin:12px 0 32px;font-size:12px;color:var(--muted)}
.media-credit a {text-decoration:underline;text-underline-offset:3px}
.media-credit a:first-of-type {margin-left:auto}
@media(max-width:720px) {.media-credit a:first-of-type {margin-left:0}}
.case-hero {padding-bottom:32px}
.case-head dl a {text-underline-offset:4px}
.case-head dl a:hover {color:var(--accent)}
.next {transition:color var(--motion-fast),border-color var(--motion-fast)}
.next:is(:hover,:focus-visible) {color:var(--accent);border-color:var(--accent)}
:is(a,button):active {opacity:.75}
@media(hover:hover) and (pointer:fine) {
  .project-row:hover .project-no,.project-row:hover h3 a {color:var(--accent)}
  .visual-link:hover .visual {border-color:var(--accent)}
  .visual-link:hover img {transform:scale(1.025)}
  .visual-link:hover .visual-open {background:var(--fg);color:var(--bg);transform:rotate(45deg)}
}
/* Motion is limited to the opening hierarchy. Content is visible without JS. */
@keyframes enter {from{opacity:.3;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes image-enter {from{opacity:.6;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:no-preference) {
  .hero-main,.case-head {animation:enter var(--motion-enter) var(--ease) both}
  .profile-index {animation:enter var(--motion-enter) var(--ease) 60ms both}
  .case-hero>.visual {animation:image-enter var(--motion-enter) var(--ease) both}
  .mobile-menu:not([hidden]) {animation:enter 180ms var(--ease) both}
}
@media(max-width:1000px){
  :root{--shell:min(100% - 48px,920px)}.desktop-nav{display:none}.header-inner{grid-template-columns:1fr auto}.menu-button{display:grid}.header-contact{display:none}.mobile-menu{position:absolute;inset:var(--header-height) 0 auto;background:var(--bg);border-bottom:1px solid var(--line);padding-block:15px 22px}.mobile-menu:not([hidden]){display:grid}.mobile-menu a{padding:11px 0;border-bottom:1px solid var(--line);font-size:20px}
  .hero-grid,.os-grid,.about-grid,.contact-grid,.case-head{grid-template-columns:1fr;gap:40px}.profile-index{max-width:560px}.project-row{grid-template-columns:32px minmax(0,1fr) minmax(0,1fr);gap:24px}.visual-link{grid-column:3}.capabilities article{grid-template-columns:42px 1fr}.tech-line{grid-column:2;justify-content:flex-start}.decisions{grid-template-columns:1fr}.decisions article{min-height:0;border-right:0;border-bottom:1px solid var(--line);padding:20px 0 27px!important}.decisions h3{margin-top:34px}.case-list{margin-left:0}.gallery{grid-template-columns:1fr 1fr}.case-head dl{max-width:640px;width:100%}
}
@media(max-width:720px){
  :root{--shell:calc(100% - 40px);--header-height:64px;--page-top:32px;--section-space:64px}.header-actions{gap:7px}.hero{padding-top:var(--page-top)}.status{margin-bottom:24px;align-items:flex-start}.status span{flex-shrink:0;margin-top:5px}.hero h1,.case-hero h1{font-size:clamp(40px,10vw,68px);letter-spacing:-.05em;max-width:18ch}.hero-intro{font-size:18px}.section{padding-block:var(--section-space)}.section-head{display:block;margin-bottom:32px}.section-head h2{font-size:clamp(32px,8vw,48px);max-width:23ch}.section-intro{margin-top:19px;font-size:16px}.project-row{grid-template-columns:24px minmax(0,1fr);gap:16px;padding:28px 0 32px}.visual-link{grid-column:2}.project-copy h3{font-size:clamp(27px,7vw,36px)}.project-copy>p:not(.project-type){font-size:16px}.project-meta span{width:100%}.visual{min-height:225px}.visual-image img{min-height:225px}.capabilities article{grid-template-columns:30px 1fr;gap:13px}.capabilities h3,.timeline h3{font-size:19px}.capabilities p{font-size:14px}.timeline article{grid-template-columns:1fr;gap:9px}.principles{grid-template-columns:1fr}.principles div,.principles div:not(:first-child){min-height:105px;border-right:0;border-bottom:1px solid var(--line);padding:16px 0 18px}.cv-grid{grid-template-columns:1fr}.email-link{font-size:20px}.footer-grid{grid-template-columns:1fr}.footer-meta{justify-self:start;text-align:left}.back{margin-bottom:24px}.case-summary{font-size:17px}.case-head dl div{grid-template-columns:96px minmax(0,1fr)}.visual-hero{min-height:280px}.visual-hero.visual-image img{min-height:280px;aspect-ratio:4/3}.visual-hero .mini-flow{justify-content:flex-start}.case-context{grid-template-columns:1fr;gap:18px}.case-context h2{font-size:34px;overflow-wrap:anywhere}.case-context>div p{font-size:16px}.case-list article{grid-template-columns:31px 1fr;gap:11px}.case-list p{font-size:15px}.flow{grid-template-columns:1fr;overflow:visible}.flow div{min-width:0;min-height:85px}.flow i{transform:rotate(90deg);justify-self:center}.gallery{grid-template-columns:1fr}.stack{grid-template-columns:1fr}.next{min-height:150px;grid-template-columns:1fr auto;gap:16px}.next .eyebrow{grid-column:1/-1;align-self:end}.next strong{font-size:clamp(26px,6vw,34px);align-self:start;overflow-wrap:anywhere}
}
@media(max-width:390px){:root{--shell:calc(100% - 32px)}.hero h1,.case-hero h1{font-size:clamp(36px,10vw,40px)}.project-row{grid-template-columns:1fr}.project-no{display:none}.visual-link{grid-column:1}.capabilities article{grid-template-columns:1fr}.tech-line{grid-column:1}.num{margin-bottom:-5px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.visual-link img,.visual-open,.next>b,.project-actions a span,.back span,.email-link span{transform:none!important}}
