/* Swiss editorial interpretation. Variance 7 / motion 3 / density 3.
   The references establish a print-like light theme, neutral type and square edges.
   Native system Helvetica keeps the single HTML portable without font requests.
   Layers: navigation 10; native dialogs use the browser top layer. */
/* Shared leading by text role. Display headlines, introductory statements
   and large numerals retain their size-specific optical settings. */
:root{
  /* Minimum readable size for captions and compact navigation labels. */
  --text-min:13px;
  --leading-body:1.5;
  --leading-heading:1.12;
  --leading-caption:1.45;
  --leading-ui:1.2;
}
:root{--paper:#ffffff;--ink:#20201f;--muted:#60605c;--line:#d1d1ca;--accent:#b63726;--gutter:clamp(22px,3.4vw,56px);--gap:24px;color-scheme:light;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;-webkit-font-smoothing:antialiased}body.dialog-open{overflow:hidden}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}button:disabled{cursor:default}a,button,input,summary{touch-action:manipulation}button:active:not(:disabled){transform:translateY(1px)}img{display:block;max-width:100%;height:auto}figure,p,h1,h2,h3,dl,dd{margin:0}h1,h2,h3,strong{font-weight:400}ul{list-style:none;padding:0;margin:0}p{line-height:var(--leading-body)}::selection{background:var(--ink);color:var(--paper)}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button,input{border-radius:0}[hidden]{display:none!important}.page-shell{width:min(100%,1552px);margin-inline:auto;padding-inline:var(--gutter)}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap)}.skip-link{position:fixed;left:20px;top:-100px;padding:15px;background:var(--ink);color:var(--paper);z-index:20}.skip-link:focus{top:14px}.header{height:80px;display:flex;align-items:center;gap:32px;position:relative;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:18px;font-size:max(var(--text-min),13px);line-height:1.12;letter-spacing:-.025em;margin-right:auto}.brand-mark{font-size:33px;letter-spacing:-.105em;margin-right:4px}.desktop-nav{display:flex;align-items:center;gap:26px;font-size:max(var(--text-min),13px);line-height:var(--leading-ui)}.desktop-nav a{padding-block:16px}.desktop-nav a:hover,.desktop-nav a[aria-current]{color:var(--accent)}.header-contact{font-size:max(var(--text-min),13px);margin-left:38px;line-height:var(--leading-ui)}.text-link{display:inline-flex;align-items:center;justify-content:space-between;gap:20px;min-height:44px;background:none;border:0;padding:0;border-bottom:1px solid currentColor;line-height:var(--leading-ui)}.text-link span[aria-hidden]{font-size:23px;line-height:1;transition:transform .2s}.text-link:hover{color:var(--accent)}.text-link:hover span[aria-hidden]{transform:translate(2px,-2px)}.menu-toggle,.mobile-nav{display:none}.hero{padding-top:49px;padding-bottom:62px;border-bottom:1px solid var(--line)}.hero h1{font-size:clamp(58px,7.1vw,110px);line-height:.98;letter-spacing:-.055em;text-transform:uppercase;font-weight:400}.hero h1>span{display:block}.hero h1>span:last-child{text-align:right;white-space:nowrap}.hero-bottom{margin-top:48px;align-items:end}.portrait{grid-column:1/5;overflow:hidden;background:#d0d0cc}/* The selected original is framed from head to waist: source crop x=80, y=270, 1120x1120 at 1280x1920. */
.portrait img{width:100%;aspect-ratio:1;object-fit:cover;object-position:50% 29.6875%;transform:scale(1.142857143);transform-origin:center;filter:grayscale(1)}.hero-description{grid-column:7/11;padding-bottom:3px;align-self:center}.hero-description>p{font-size:calc(clamp(18px,1.7vw,25px) + 1px);line-height:1.27;letter-spacing:-.027em}.primary-link{margin-top:28px;font-size:14px;min-width:190px}.section{margin-top:140px;scroll-margin-top:36px}.section-label{font-size:max(var(--text-min),12px);line-height:var(--leading-caption);letter-spacing:-.01em}.intro{row-gap:38px}.intro>.section-label{grid-column:1/4;padding-top:9px}.statement{grid-column:5/13;font-size:clamp(38px,4.55vw,68px);line-height:1.03;letter-spacing:-.055em;text-wrap:pretty}.intro-text{grid-column:7/12;font-size:18px}.intro-text p+p{margin-top:20px}.skills{border-top:1px solid var(--line);padding-top:27px}.skills-side{grid-column:1/4}.side-heading{font-size:31px;line-height:var(--leading-heading);letter-spacing:-.045em}.small-copy{font-size:14px;max-width:205px;margin-top:24px;color:var(--muted)}.capabilities{grid-column:5/13}.capability{display:grid;grid-template-columns:1fr 1fr;gap:30px;padding:32px 0 40px;border-bottom:1px solid var(--line)}.capability:first-child{padding-top:0}.capability h3{font-size:28px;line-height:var(--leading-heading);letter-spacing:-.035em;max-width:260px}.capability p{font-size:16px;line-height:var(--leading-body)}.capability ul{font-size:max(var(--text-min),12px);line-height:var(--leading-caption);color:var(--muted);margin-top:22px}.capability li+li{margin-top:4px}.section-heading{font-size:clamp(42px,4.8vw,74px);line-height:1.01;letter-spacing:-.058em}.approach-intro{grid-column:5/13}.approach-intro>p{max-width:480px;margin-top:28px;font-size:18px}.approaches-list{margin-top:60px;border-top:1px solid var(--line)}.approach{border-bottom:1px solid var(--line)}.approach summary{display:grid;grid-template-columns:1fr 9fr 1fr;gap:24px;align-items:baseline;padding-block:27px;cursor:pointer;list-style:none}.approach summary::-webkit-details-marker{display:none}.row-index{font-size:max(var(--text-min),12px);color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:0;line-height:var(--leading-caption)}.approach h3{font-size:clamp(21px,2.3vw,34px);letter-spacing:-.035em;line-height:var(--leading-heading)}.approach summary:hover h3{color:var(--accent)}.expand{width:17px;height:17px;position:relative;justify-self:end;align-self:center}.expand:before,.expand:after{content:"";position:absolute;top:8px;left:0;width:17px;height:1px;background:currentColor}.expand:after{transform:rotate(90deg);transition:transform .2s}.approach[open] .expand:after{transform:rotate(0)}.approach-body{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-left:33.95%;padding:5px 0 36px;font-size:16px}.approach-label{display:block;font-size:max(var(--text-min),11px);margin-bottom:12px;color:var(--muted);line-height:var(--leading-caption)}.projects-heading{align-items:end}.projects-heading h2{grid-column:1/7}.projects-intro{grid-column:9/13}.projects-intro>p{font-size:15px;line-height:var(--leading-body)}.all-projects{margin-top:22px;font-size:13px;width:100%;text-align:left}.count{margin-left:auto;color:var(--muted);font-size:max(var(--text-min),11px);line-height:var(--leading-caption)}.project-slider{margin-top:50px}.project-toolbar{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;min-height:65px}.project-status{font-size:28px;font-variant-numeric:tabular-nums;letter-spacing:-.045em}.status-total{color:var(--muted);font-size:max(var(--text-min),13px);letter-spacing:0;line-height:var(--leading-caption)}.project-buttons{display:flex;gap:8px}.arrow-button{background:none;border:0;width:56px;height:56px;font-size:34px;font-family:Arial,sans-serif;font-weight:300}.arrow-button:hover:not(:disabled){color:var(--accent)}.arrow-button:disabled{color:#a5a59e}.project-track{outline-offset:8px}.project-slide{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;padding-top:44px;padding-bottom:34px;border-bottom:1px solid var(--line)}.js .project-slide:not(.is-active){display:none}.project-slide__identity{grid-column:1/4}.project-slide__identity h3{font-size:28px;line-height:var(--leading-heading);letter-spacing:-.038em;overflow-wrap:anywhere}.project-category{font-size:max(var(--text-min),12px);color:var(--muted);margin-top:18px;line-height:var(--leading-caption)}.project-slide__areas{margin-top:40px;font-size:max(var(--text-min),12px);line-height:var(--leading-caption)}.project-slide__areas li+li{margin-top:4px}.project-slide__case{grid-column:5/13;min-width:0}.project-headline{font-size:clamp(28px,3vw,44px);line-height:1.1;letter-spacing:-.045em;max-width:730px;text-wrap:pretty}.project-slide__contribution{display:grid;grid-template-columns:1fr 3fr;gap:24px;margin-top:35px;font-size:16px}.project-slide__contribution strong{font-size:max(var(--text-min),11px);color:var(--muted);padding-top:4px;line-height:var(--leading-caption)}.project-slide__metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:50px;margin-bottom:32px}.project-slide__metrics dt{font-size:clamp(25px,3.1vw,46px);line-height:1;letter-spacing:-.055em;overflow-wrap:anywhere}.project-slide__metrics div:first-child dt{color:var(--accent)}.project-slide__metrics dd{font-size:max(var(--text-min),12px);margin-top:12px;max-width:170px;line-height:var(--leading-caption)}.project-slide__context{font-size:15px;border-top:1px solid var(--line);padding-top:15px}.project-slide__context summary{display:flex;justify-content:space-between;cursor:pointer;padding-block:5px;list-style:none;min-height:34px;align-items:center}.project-slide__context summary::-webkit-details-marker{display:none}.project-slide__context summary:after{content:'+';font-size:22px;font-weight:300}.project-slide__context[open] summary:after{content:'−'}.project-slide__context p{max-width:650px;padding:18px 0 6px;color:var(--muted)}.systems-visual{grid-column:1/4}.systems-main{grid-column:5/13}.systems-main h2{max-width:800px}.systems-description{margin-top:28px;font-size:17px;max-width:480px}.systems-list{margin-top:55px}.system{display:grid;grid-template-columns:1fr 1fr;column-gap:32px;padding-block:30px;border-top:1px solid var(--line)}.system h3{font-size:26px;line-height:var(--leading-heading);letter-spacing:-.035em;grid-row:1/3}.system p{font-size:16px}.system strong{display:block;font-size:max(var(--text-min),12px);line-height:var(--leading-caption);color:var(--muted);margin-top:18px}.about{border-top:1px solid var(--line);padding-top:32px}.about-heading{grid-column:1/5}.about-lead{grid-column:7/13;font-size:calc(clamp(22px,2.25vw,32px) + 1px);line-height:1.25;letter-spacing:-.03em}.about-lead p{line-height:inherit}.experience-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-top:80px}.experience-facts dt{font-size:clamp(32px,3.6vw,55px);letter-spacing:-.055em;white-space:nowrap;line-height:1.1}.experience-facts dd{font-size:max(var(--text-min),12px);line-height:var(--leading-caption);margin-top:14px;max-width:150px;color:var(--muted)}.about-note{font-size:19px;line-height:var(--leading-body);letter-spacing:-.02em;margin-top:28px;max-width:480px}.contact{border-top:1px solid var(--ink);padding-top:36px;padding-bottom:75px}.contact h2{font-size:clamp(70px,9.6vw,148px);line-height:.92;letter-spacing:-.055em;text-transform:uppercase}.contact h2>span{display:block;margin-left:25.5%}.contact h2 span[aria-hidden]{color:var(--accent);display:inline-block;font-family:Arial,sans-serif;font-weight:300;margin-left:30px;line-height:.75}.contact-bottom{margin-top:76px;align-items:start}.contact-copy{grid-column:1/5;font-size:15px;max-width:310px}.contact-directory{grid-column:7/13}.contact-directory>a{display:flex;justify-content:space-between;align-items:center;padding:0 0 24px;border-bottom:1px solid var(--line);gap:20px}.contact-directory>a+a{padding-top:25px}.contact-directory small{font-size:max(var(--text-min),11px);color:var(--muted);display:block;margin-bottom:10px;line-height:var(--leading-caption)}.contact-directory strong{font-size:clamp(19px,2vw,29px);letter-spacing:-.035em;overflow-wrap:anywhere;line-height:var(--leading-heading)}.contact-directory a>span[aria-hidden]{font-size:30px}.contact-directory a:hover{color:var(--accent)}.footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:max(var(--text-min),12px);min-height:85px;line-height:var(--leading-caption)}.footer .text-link{border:0}.footer .text-link span{font-size:20px}dialog{border:0;background:var(--paper);color:var(--ink);padding:34px;width:min(860px,calc(100% - 40px));max-height:88dvh;overscroll-behavior:contain}dialog::backdrop{background:rgb(25 25 24 / .62)}.dialog-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:32px}.dialog-header h2{font-size:38px;letter-spacing:-.05em;line-height:var(--leading-heading)}.dialog-header sup{font-size:max(var(--text-min),14px);vertical-align:top;letter-spacing:0;line-height:var(--leading-caption)}.close-dialog{display:flex;gap:15px;align-items:center;background:none;border:0;min-height:44px;padding:0;font-size:max(var(--text-min),12px);white-space:nowrap;line-height:var(--leading-ui)}.close-dialog span{font-size:28px}.project-dialog label{display:block;font-size:max(var(--text-min),13px);margin-bottom:10px;line-height:var(--leading-caption)}.project-dialog input{display:block;width:100%;border:1px solid var(--line);border-bottom-color:var(--ink);background:none;padding:16px 12px;font-size:18px;color:var(--ink);line-height:var(--leading-ui)}.project-dialog input::placeholder{color:var(--muted);opacity:1}.search-status{font-size:max(var(--text-min),12px);color:var(--muted);margin:18px 0 24px;line-height:var(--leading-caption)}.project-option{display:grid;grid-template-columns:24px 1fr 24px;align-items:baseline;gap:18px;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);padding:20px 0}.project-option:hover{color:var(--accent)}.project-option strong{font-size:21px;line-height:var(--leading-heading);display:block;letter-spacing:-.03em}.project-option small{display:block;margin-top:7px;color:var(--muted);font-size:max(var(--text-min),11px);line-height:var(--leading-caption)}.project-option>span:last-child{font-size:23px}.empty-state{padding:25px 0 45px;font-size:19px}.js .all-projects{display:inline-flex}html:not(.js) .all-projects,html:not(.js) .project-toolbar,html:not(.js) .menu-toggle{display:none}html:not(.js) .desktop-nav{display:flex}
@media(min-width:1552px){.hero h1{font-size:110px}}
@media(max-width:1100px){:root{--gap:20px}.header{height:80px;gap:20px}.desktop-nav{gap:18px;font-size:max(var(--text-min),12px);line-height:var(--leading-ui)}.header-contact{margin-left:12px;font-size:max(var(--text-min),12px);line-height:var(--leading-ui)}.hero{padding-top:42px}.hero h1{font-size:7.15vw}.hero-description{grid-column:6/11}.section{margin-top:110px}.capability{gap:22px}.capability h3{font-size:25px;line-height:var(--leading-heading)}.project-slide__identity h3{font-size:25px;line-height:var(--leading-heading)}.project-slide__metrics{gap:18px}.projects-intro{grid-column:8/13}.system h3{font-size:24px;line-height:var(--leading-heading)}.contact-directory{grid-column:6/13}.contact h2{font-size:9.5vw}}
@media(max-width:767px){:root{--gutter:22px;--gap:16px;--text-min:12px}.page-shell{width:100%}.grid{grid-template-columns:repeat(4,minmax(0,1fr))}.header{height:76px;gap:20px}.brand{font-size:max(var(--text-min),12px);gap:14px}.brand-mark{font-size:31px}.desktop-nav,.header-contact{display:none}.menu-toggle{display:flex;align-items:center;gap:15px;border:0;background:none;font-size:max(var(--text-min),12px);padding:10px 0;min-height:44px;line-height:var(--leading-ui)}.menu-lines{position:relative;width:20px;height:12px}.menu-lines:before,.menu-lines:after{position:absolute;content:'';height:1px;background:currentColor;left:0;width:20px;transition:transform .2s;top:3px}.menu-lines:after{top:9px}.menu-toggle[aria-expanded=true] .menu-lines:before{transform:translateY(3px) rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-lines:after{transform:translateY(-3px) rotate(-45deg)}.mobile-nav:not([hidden]){display:flex;flex-direction:column;position:absolute;top:75px;left:calc(-1*var(--gutter));right:calc(-1*var(--gutter));background:var(--paper);z-index:10;padding:24px var(--gutter) 30px;border-bottom:1px solid var(--ink)}.mobile-nav a{padding:13px 0;font-size:27px;letter-spacing:-.035em;line-height:var(--leading-heading)}.hero{padding-top:34px;padding-bottom:32px}.hero h1{font-size:clamp(38px,10.7vw,68px);line-height:1.01;letter-spacing:-.05em}.hero h1>span:last-child{text-align:left;white-space:normal;max-width:95%;margin-left:0;margin-top:2px}.hero-bottom{margin-top:28px;row-gap:28px;align-items:start}.hero-description{grid-column:1/-1;grid-row:1;font-size:18px;max-width:370px}.hero-description>p{font-size:20px;line-height:1.3;letter-spacing:-.02em}.primary-link{margin-top:18px;font-size:13px;min-width:180px}.portrait{grid-column:1/4;grid-row:2;width:100%;max-width:350px}.section{margin-top:80px;scroll-margin-top:22px}.intro{row-gap:26px}.intro>.section-label{grid-column:1/-1;padding:0}.statement{grid-column:1/-1;font-size:clamp(32px,8.1vw,54px);line-height:1.05;letter-spacing:-.05em}.intro-text{grid-column:2/5;font-size:16px}.intro-text p+p{margin-top:18px}.skills{padding-top:23px;row-gap:32px}.skills-side{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.side-heading{font-size:27px;line-height:var(--leading-heading)}.small-copy{font-size:13px;margin:0;max-width:none}.capabilities{grid-column:1/-1}.capability{grid-template-columns:1fr;padding:24px 0 30px;gap:18px}.capability h3{font-size:26px;max-width:280px;line-height:var(--leading-heading)}.capability>div{margin-left:25%;max-width:430px}.capability p{font-size:16px;line-height:var(--leading-body)}.capability ul{font-size:max(var(--text-min),12px);margin-top:18px;line-height:var(--leading-caption)}.approach-intro{grid-column:1/-1}.section-heading{font-size:clamp(38px,9.4vw,60px);line-height:1.02;letter-spacing:-.055em}.approach-intro>p{margin-top:23px;font-size:16px;max-width:400px}.approaches-list{margin-top:34px}.approach summary{grid-template-columns:24px 1fr 18px;gap:14px;padding-block:23px}.approach h3{font-size:22px;line-height:var(--leading-heading)}.approach-body{margin-left:38px;grid-template-columns:1fr;gap:20px;padding-bottom:26px;font-size:15px}.approach-label{margin-bottom:7px}.projects-heading{row-gap:28px}.projects-heading h2{grid-column:1/-1}.projects-intro{grid-column:2/5}.projects-intro>p{font-size:14px;line-height:var(--leading-body)}.all-projects{margin-top:14px}.project-slider{margin-top:32px}.project-toolbar{min-height:59px}.arrow-button{height:52px;width:48px;font-size:29px}.project-status{font-size:25px}.project-slide{grid-template-columns:1fr;row-gap:28px;padding:28px 0}.project-slide__identity,.project-slide__case{grid-column:1/-1}.project-slide__identity{display:grid;grid-template-columns:1fr 1fr;gap:16px}.project-slide__identity h3{font-size:21px;grid-column:1/-1;max-width:370px;line-height:var(--leading-heading)}.project-category{font-size:max(var(--text-min),11px);margin:0;line-height:var(--leading-caption)}.project-slide__areas{margin:0;font-size:max(var(--text-min),11px);line-height:var(--leading-caption)}.project-slide__areas li+li{margin-top:3px}.project-headline{font-size:30px;line-height:1.07;letter-spacing:-.04em}.project-slide__contribution{grid-template-columns:1fr;gap:10px;margin-top:26px;font-size:15px}.project-slide__contribution strong{font-size:max(var(--text-min),11px);line-height:var(--leading-caption)}.project-slide__metrics{gap:14px;margin-top:32px;margin-bottom:26px}.project-slide__metrics dt{font-size:clamp(22px,6.6vw,42px);line-height:1.12;letter-spacing:-.05em}.project-slide__metrics dd{font-size:max(var(--text-min),10px);margin-top:7px;line-height:var(--leading-caption)}.project-slide__context{font-size:14px}.systems{row-gap:34px}.systems-visual{grid-column:1/-1}.systems-main{grid-column:1/-1}.systems-main h2{max-width:560px}.systems-description{font-size:16px;margin-top:24px}.systems-list{margin-top:35px}.system{grid-template-columns:1fr;gap:15px;padding-block:25px}.system h3{font-size:26px;grid-row:auto;max-width:270px;line-height:var(--leading-heading)}.system p,.system strong{margin-left:25%}.system strong{margin-top:0;font-size:max(var(--text-min),12px);line-height:var(--leading-caption)}.system p{font-size:15px}.about{padding-top:25px}.about>.grid{row-gap:30px}.about-heading{grid-column:1/-1}.about-lead{grid-column:1/-1;font-size:25px;max-width:550px}.experience-facts{grid-template-columns:1fr 1fr;gap:35px 20px;margin-top:40px}.experience-facts dt{font-size:33px}.experience-facts dd{font-size:max(var(--text-min),11px);margin-top:8px;line-height:var(--leading-caption)}.about-note{font-size:17px;margin-top:22px;line-height:var(--leading-body)}.contact{margin-top:78px;padding-top:27px;padding-bottom:38px}.contact h2{font-size:clamp(43px,10.8vw,76px);line-height:.98;letter-spacing:-.063em}.contact h2>span{margin-left:15%}.contact h2 span[aria-hidden]{margin-left:7px}.contact-bottom{margin-top:35px;row-gap:30px}.contact-copy{grid-column:1/-1;font-size:14px;max-width:320px}.contact-directory{grid-column:1/-1}.contact-directory strong{font-size:clamp(18px,5.5vw,27px);line-height:var(--leading-heading)}.contact-directory small{font-size:max(var(--text-min),11px);line-height:var(--leading-caption)}.contact-directory>a{padding-bottom:20px;gap:10px}.contact-directory>a+a{padding-top:20px}.footer{min-height:75px;font-size:max(var(--text-min),11px);line-height:var(--leading-caption)}dialog{width:calc(100% - 24px);padding:22px;max-height:92dvh}.dialog-header{align-items:start;gap:14px;margin-bottom:26px}.dialog-header h2{font-size:29px;line-height:var(--leading-heading)}.close-dialog{font-size:max(var(--text-min),11px);gap:8px;min-height:34px;line-height:var(--leading-ui)}.project-dialog label{font-size:max(var(--text-min),12px);line-height:var(--leading-caption)}.project-dialog input{font-size:16px;padding:15px 10px;line-height:var(--leading-ui)}.project-option{gap:10px;grid-template-columns:20px 1fr 18px;padding-block:18px}.project-option strong{font-size:18px;line-height:var(--leading-heading)}.project-option small{font-size:max(var(--text-min),10px);line-height:var(--leading-caption)}html:not(.js) .header{flex-wrap:wrap;height:auto;padding-block:18px}html:not(.js) .desktop-nav{width:100%;flex-wrap:wrap;gap:18px}}
@media(max-width:359px){:root{--gutter:18px}.hero h1{font-size:34px}.hero-description>p{font-size:18px}.project-slide__metrics{gap:10px}.project-slide__metrics dt{font-size:22px}.experience-facts dt{font-size:29px}.contact h2{font-size:38px}.contact-directory strong{font-size:18px;line-height:var(--leading-heading)}.capability>div{margin-left:16%}.intro-text{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
@media print{body{background:white}.header,.footer,.project-toolbar,.all-projects,.hero-actions{display:none!important}.section{margin-top:50px}.page-shell{padding:0}.js .project-slide:not(.is-active){display:grid}.project-slide{break-inside:avoid}.project-track{outline:none}dialog{display:none}.hero h1{font-size:58px}a{color:inherit!important}.contact h2{font-size:64px}}

/* Native horizontal scrolling keeps touch movement continuous, including momentum and cancellation. */
@media screen{
  .js .project-track{position:relative;display:flex;align-items:flex-start;gap:24px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:auto;overflow-anchor:none}
  .js .project-track::-webkit-scrollbar{display:none}
  .js .project-track>.project-slide{display:grid;flex:0 0 100%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always}
  .js .project-track.is-swipe-hint>.project-slide{animation:project-swipe-hint 2600ms cubic-bezier(.65,0,.35,1)}
}
.js .project-track.is-dragging,.js .project-track.is-settling{scroll-snap-type:none}
.js .project-track.is-dragging{user-select:none}
@media(hover:hover) and (pointer:fine){
  .js .project-track{cursor:grab}
  .js .project-track.is-dragging{cursor:grabbing}
}
@keyframes project-swipe-hint{0%,100%{transform:translateX(0)}43%,59%{transform:translateX(-30%)}}
@media print{
  .project-track{height:auto!important}
}

.project-slide__metrics:has(>div:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
.project-slide__metrics dd{hyphens:auto;overflow-wrap:break-word}

/* Approved rear-view photograph; retain the complete portrait composition. */
.systems-photo{margin-top:66px}
.systems-photo img{display:block;width:100%;height:auto}
@media(max-width:767px){.systems-photo{margin:26px 0 0 25%;max-width:360px}}
@media(max-width:359px){.systems-photo{margin-left:16%}}

.contact h2>.contact-first-line{margin-left:0}

/* Desktop: every nested layout uses the same 12-column tracks and gutter.
   The eight-column case area uses spans of 3 / 3 / 2 for three metrics,
   or 4 / 4 for two. These are whole columns of the parent page grid. */
@media(min-width:768px){
  .capability,.system,.project-slide,.experience-facts{column-gap:var(--gap)}

  .approach summary,.approach-body,.contact h2{
    display:grid;
    grid-template-columns:repeat(12,minmax(0,1fr));
    column-gap:var(--gap);
  }
  .approach summary>.row-index{grid-column:1/2}
  .approach summary>h3{grid-column:5/12}
  .approach summary>.expand{grid-column:12/13}
  .approach-body{margin-left:0}
  .approach-body>p:first-child{grid-column:5/9}
  .approach-body>p:last-child{grid-column:9/13}

  .project-slide__contribution,
  .project-slide__metrics,
  .project-slide__metrics:has(>div:nth-child(2):last-child){
    grid-template-columns:repeat(8,minmax(0,1fr));
    column-gap:var(--gap);
  }
  .project-slide__contribution>strong{grid-column:1/3}
  .project-slide__contribution>p{grid-column:3/9}
  .project-slide__metrics>div{grid-column:span 3;min-width:0}
  .project-slide__metrics>div:nth-child(3){grid-column:span 2}
  .project-slide__metrics:has(>div:nth-child(2):last-child)>div{grid-column:span 4}

  .contact h2>span{grid-column:4/13;margin-left:0}
  .contact h2>.contact-first-line{grid-column:1/13}
}

/* Spacing roles: caption < text < heading/row < group < content < section.
   Keep the horizontal column grid and typographic optical offsets independent.
   Screen-only rules leave the compact print layout intact. */
@media screen{
  :root{
    --space-caption:12px;
    --space-detail:16px;
    --space-text:24px;
    --space-heading:32px;
    --space-row:32px;
    --space-group:48px;
    --space-content:64px;
    --space-section:144px;
    --space-hero-top:48px;
  }

  .section{margin-top:var(--space-section)}
  .hero{padding-top:var(--space-hero-top);padding-bottom:var(--space-content)}
  .hero-bottom{margin-top:var(--space-group);row-gap:var(--space-group)}
  .primary-link{margin-top:var(--space-heading)}
  .intro{row-gap:var(--space-heading)}
  .intro-text p+p{margin-top:var(--space-text)}

  .skills,.about{padding-top:var(--space-row)}
  .skills{row-gap:var(--space-group)}
  .small-copy{margin-top:var(--space-text)}
  .capability{padding-block:var(--space-row);row-gap:var(--space-heading)}
  .capability:first-child{padding-top:0}
  .capability ul{margin-top:var(--space-text)}

  .approach-intro>p,.systems-description,.about-note{margin-top:var(--space-heading)}
  .approaches-list,.project-slider,.systems-list{margin-top:var(--space-content)}
  .approach summary{padding-block:var(--space-row)}
  .approach-body{padding-top:0;padding-bottom:var(--space-row);row-gap:var(--space-heading)}
  .approach-label{margin-bottom:var(--space-caption)}

  .projects-heading{row-gap:var(--space-heading)}
  .all-projects{margin-top:var(--space-text)}
  .project-slide{padding-block:var(--space-row);row-gap:var(--space-heading)}
  .project-category{margin-top:var(--space-detail)}
  .project-slide__areas{margin-top:var(--space-row)}
  .project-slide__contribution{margin-top:var(--space-heading)}
  .project-slide__metrics{margin-top:var(--space-group);margin-bottom:var(--space-row)}
  .project-slide__metrics dd{margin-top:var(--space-caption)}
  .project-slide__context{padding-top:var(--space-detail)}
  .project-slide__context summary{padding-block:4px}
  .project-slide__context p{padding:var(--space-text) 0 0}

  .systems{row-gap:var(--space-group)}
  .systems-photo{margin-top:var(--space-content)}
  .system{padding-block:var(--space-row)}
  .system strong{margin-top:var(--space-detail)}
  .about>.grid{row-gap:var(--space-heading)}
  .experience-facts{margin-top:var(--space-content);row-gap:var(--space-group)}
  .experience-facts dd{margin-top:var(--space-caption)}

  .contact{padding-top:var(--space-row);padding-bottom:var(--space-content)}
  .contact-bottom{margin-top:var(--space-content);row-gap:var(--space-group)}
  .contact-directory>a{padding-bottom:var(--space-row)}
  .contact-directory>a+a{padding-top:var(--space-row)}
  .contact-directory small{margin-bottom:var(--space-caption)}

  @media(max-width:1100px){
    :root{--space-section:112px;--space-hero-top:40px}
  }
  @media(max-width:767px){
    :root{
      --space-caption:8px;
      --space-text:16px;
      --space-heading:24px;
      --space-row:24px;
      --space-group:32px;
      --space-content:40px;
      --space-section:80px;
      --space-hero-top:32px;
    }
    .small-copy,.project-category,.project-slide__areas{margin-top:0}
    .project-slide__contribution{row-gap:var(--space-caption)}
    .systems-photo{margin-top:var(--space-group)}
    .system{row-gap:0}
    .system p{margin-top:var(--space-heading)}
  }
}


/* Paired hero links share their width, baseline, underline and arrow. */
.hero-actions{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--gap);
  max-width:404px;
  margin-top:var(--space-heading,32px);
}
.hero-actions .primary-link{margin-top:0;min-width:0;white-space:nowrap}
@media(min-width:768px) and (max-width:1279px){
  .hero-actions .primary-link{font-size:13px;gap:8px}
}
@media(min-width:768px) and (max-width:900px){
  .hero-actions{grid-template-columns:1fr;max-width:190px;row-gap:16px}
}
@media(max-width:767px){
  .hero-actions{max-width:100%}
  .hero-actions .primary-link{gap:8px}
}
@media(max-width:359px){
  .hero-actions{grid-template-columns:1fr;max-width:190px}
}

/* Tools showcase variant */
/* This variant reuses the site's type, spacing, and twelve-column grid. */
.tools-showcase .tools-intro{grid-column:5/13;min-width:0}
.tools-showcase .tools-intro .section-heading{max-width:850px}
.tools-showcase .tools-selection{margin-top:var(--space-text);color:var(--muted);font-size:var(--text-min);line-height:var(--leading-caption)}
.tools-showcase .tools-list{margin-top:var(--space-content)}
.tools-showcase .tool-example{padding-block:var(--space-row);border-top:1px solid var(--line);align-items:start;row-gap:var(--space-heading)}
.tools-showcase .tool-example:last-child{border-bottom:1px solid var(--line)}
.tools-showcase .tool-name{grid-column:1/5;font-size:clamp(26px,2.3vw,34px);line-height:var(--leading-heading);letter-spacing:-.035em;max-width:350px}
.tools-showcase .tool-facts{grid-column:5/13;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-heading) var(--gap);margin:0;min-width:0}
.tools-showcase .tool-facts>div{min-width:0}
.tools-showcase .tool-facts dt{font-size:var(--text-min);line-height:var(--leading-caption);color:var(--muted);margin-bottom:var(--space-caption)}
.tools-showcase .tool-facts dd{margin:0;font-size:17px;line-height:var(--leading-body)}
.tools-showcase .tool-benefit{grid-column:1/-1;max-width:650px}
.tools-showcase .tool-output{grid-column:5/13;min-width:0;font-size:var(--text-min);line-height:var(--leading-caption);color:var(--muted)}
.tools-showcase .tool-output span{color:var(--ink)}
.tools-showcase .tool-preview{grid-column:5/13;min-width:0;border-top:1px solid var(--line)}
.tools-showcase .tool-preview summary{display:flex;justify-content:space-between;gap:var(--gap);align-items:center;min-height:48px;padding-block:16px;list-style:none;cursor:pointer;font-size:15px;line-height:var(--leading-ui)}
.tools-showcase .tool-preview summary::-webkit-details-marker{display:none}
.tools-showcase .tool-preview summary:after{content:'+';font-size:25px;flex:0 0 18px;text-align:center}
.tools-showcase .tool-preview[open] summary:after{content:'−'}
.tools-showcase .tool-preview summary:hover{color:var(--accent)}
.tools-showcase .tool-preview summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.tools-showcase .archive-note{margin-top:var(--space-caption);font-size:var(--text-min);line-height:var(--leading-caption);color:var(--muted)}
.tools-showcase .archive{width:100%;border-collapse:collapse;font-size:14px;line-height:var(--leading-body);table-layout:fixed;margin-top:var(--space-caption)}
.tools-showcase .archive caption{text-align:left;font-size:var(--text-min);color:var(--muted);padding-bottom:var(--space-detail)}
.tools-showcase .archive th,.tools-showcase .archive td{text-align:left;vertical-align:top;padding:16px 16px 16px 0;border-bottom:1px solid var(--line);font-weight:400;overflow-wrap:break-word}
.tools-showcase .archive th{font-size:var(--text-min);color:var(--muted)}
.tools-showcase .archive th:first-child{width:24%}
.tools-showcase .archive th:last-child{width:27%}
.tools-showcase .archive td:last-child{padding-right:0;font-variant-numeric:tabular-nums}
.brand{min-height:44px}
.project-slide__context summary{min-height:44px}
@media(max-width:767px){
 .tools-showcase .tools-header{row-gap:var(--space-group)}
 .tools-showcase .tools-intro{grid-column:1/-1;grid-row:1}
 .tools-showcase .systems-visual{grid-column:1/-1;grid-row:2}
 .tools-showcase .systems-visual .section-label{display:none}
 .tools-showcase .systems-photo{margin-top:0}
 .tools-showcase .tool-name,.tools-showcase .tool-facts,.tools-showcase .tool-output,.tools-showcase .tool-preview{grid-column:1/-1}
 .tools-showcase .tool-name{font-size:28px;max-width:100%}
 .tools-showcase .tool-facts{grid-template-columns:1fr;gap:var(--space-heading)}
 .tools-showcase .tool-facts dd{font-size:16px}
 .tools-showcase .tool-preview summary{font-size:14px}
 .tools-showcase .archive{font-size:13px}
 .tools-showcase .archive th,.tools-showcase .archive td{padding-right:10px;padding-block:12px}
 .tools-showcase .archive th:first-child{width:25%}
 .tools-showcase .archive th:last-child{width:28%}
 .project-slider:before{content:'30 кейсов · свайпните влево или нажмите стрелку';display:block;margin-bottom:14px;font-size:13px;line-height:var(--leading-caption);color:var(--ink)}
 .project-toolbar{display:flex;min-height:64px}
 html:not(.js) .project-slider:before{content:'Листайте кейсы свайпом';margin-bottom:8px}
 html:not(.js) .project-toolbar{display:flex}
 html:not(.js) .project-toolbar .project-status{font-size:0}
 html:not(.js) .project-toolbar .project-status:before{content:'30 кейсов';font-size:25px;letter-spacing:-.045em;color:var(--ink)}
 html:not(.js) .project-toolbar .status-total{display:none}
 html:not(.js) .project-toolbar .project-buttons{display:none}
 html:not(.js) .project-track{display:flex;gap:0;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none}
 html:not(.js) .project-track::-webkit-scrollbar{display:none}
 html:not(.js) .project-slide{display:grid;flex:0 0 100%;min-width:100%;scroll-snap-align:start;scroll-snap-stop:always}
}
@media(max-width:767px){@keyframes project-swipe-hint{0%,100%{transform:translateX(0)}43%,59%{transform:translateX(-35%)}}}

/* Tools use the same numbered disclosure pattern as the approach section. */
.tools-showcase .tool-example{padding:0}
.tools-showcase .tool-summary{grid-template-columns:repeat(12,minmax(0,1fr));align-items:baseline;list-style:none;cursor:pointer;padding-block:var(--space-row)}
.tools-showcase .tool-summary::-webkit-details-marker{display:none}
.tools-showcase .tool-summary .tool-name{grid-column:5/12;max-width:none}
.tools-showcase .tool-summary>.row-index{grid-column:1/2}
.tools-showcase .tool-summary>.expand{grid-column:12/13}
.tools-showcase .tool-summary:hover .tool-name{color:var(--accent)}
.tools-showcase .tool-example[open]>.tool-summary .expand:after{transform:rotate(0)}
.tools-showcase .tool-body{padding-bottom:var(--space-row);row-gap:var(--space-heading)}
@media(max-width:767px){
  .tools-showcase .tool-summary{grid-template-columns:24px minmax(0,1fr) 18px;gap:14px}
  .tools-showcase .tool-summary .tool-name{grid-column:auto;font-size:24px}
  .tools-showcase .tool-summary>.row-index,.tools-showcase .tool-summary>.expand{grid-column:auto}
  .tools-showcase .tool-body{margin-left:38px}
}


/* Projects contact call to action */
.projects-contact-cta{margin-top:42px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.projects-contact-cta a{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:96px;padding:20px 0;font-size:clamp(24px,2.55vw,39px);line-height:1.06;letter-spacing:-.04em}
.projects-contact-cta__arrow{flex:0 0 auto;font-family:Arial,sans-serif;font-size:40px;font-weight:300;line-height:1;transition:transform .2s,color .2s}
.projects-contact-cta a:hover{color:var(--accent)}
.projects-contact-cta a:hover .projects-contact-cta__arrow{transform:translateY(4px)}
@media(max-width:767px){.projects-contact-cta{margin-top:28px}.projects-contact-cta a{min-height:80px;padding:17px 0;font-size:23px}.projects-contact-cta__arrow{font-size:32px}}
@media print{.projects-contact-cta{display:none!important}}


/* Approved name caption below the existing hero portrait. */
.portrait-signed{position:relative;overflow:visible;background:transparent}
.portrait-signed .portrait-frame{overflow:hidden;background:#d0d0cc}
.portrait-signed figcaption{position:absolute;top:100%;left:0;right:0;margin-top:16px;font-size:clamp(18px,1.7vw,24px);line-height:1.2;letter-spacing:-.027em;color:var(--ink)}
@media(max-width:767px){.portrait-signed figcaption{margin-top:12px;font-size:18px}}
