:root{--paper:#fff;--ink:#232722;--muted:#555d55;--line:#dcded8;--blue:#294be8;--soft:#eef0ff;--serif:"Iowan Old Style",Baskerville,"Palatino Linotype",Georgia,serif;--sans:Arial,"Helvetica Neue",sans-serif;--max:1200px;--header:72px}
*{box-sizing:border-box}html{scroll-padding-top:calc(var(--header) + 24px);scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.65 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,p,figure,blockquote{margin:0}h1,h2,h3{font-weight:400}h1,h2{font-family:var(--serif);line-height:1.06;letter-spacing:-.04em}h1{font-size:clamp(44px,5.5vw,76px)}h2{font-size:clamp(36px,4.2vw,58px)}h1 em,h2 em,blockquote em{font-weight:400;color:var(--blue)}p{max-width:75ch}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}a,button,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--blue);outline-offset:5px}img{display:block;max-width:100%;height:auto}[hidden]{display:none!important}::selection{background:#dde3ff;color:#172887}.wrap{width:min(var(--max),calc(100% - 96px));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}.icon{width:16px;height:16px;fill:currentColor;flex:none}.skip{position:fixed;left:20px;top:-100px;background:var(--blue);color:white;padding:12px 20px;z-index:200}.skip:focus{top:12px}.eyebrow{font:600 12px/1.7 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.lead{font-size:17px;line-height:1.75;color:var(--muted)}.caption,figcaption{font-size:12px;line-height:1.7;color:var(--muted)}.button,.text-link,.resource-link{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;font:500 14px/1.4 var(--sans)}.button{padding:13px 21px;background:var(--blue);color:#fff;border-radius:4px;transition:background .16s}.button:hover{background:#1c36b9}.text-link{color:var(--blue);border-bottom:1px solid currentColor;padding:8px 0;justify-content:flex-start}.text-link:hover{border-color:transparent}.resource-link:hover{color:var(--blue)}.anchor-alias{display:block;position:relative}section[id],article[id],span[id]{scroll-margin-top:calc(var(--header) + 24px)}
html:not(.has-js) .story-static-hint{display:none!important}
/* Historic fragment targets must not occupy a grid column. */
.anchor-alias{position:absolute;width:0;height:0}.featured-work,.career{position:relative}
.case-link-fallback{display:block;width:calc(100% - 40px);margin:10px 20px 20px;padding:10px;font:inherit;border:1px solid var(--line)}
/* Quiet, consistent identity on every route. */
.site-header{position:sticky;top:0;z-index:40;background:var(--paper);border-bottom:1px solid var(--line)}.header-inner{height:var(--header);display:flex;align-items:center;gap:28px}.brand{display:inline-flex;align-items:center;gap:12px;min-height:44px;flex-shrink:0}.brand img{width:30px;height:auto}.brand span{font-size:14px;font-weight:600;white-space:nowrap}.desktop-nav{display:flex;align-items:center;gap:28px;margin-left:auto}.desktop-nav a,.header-cv{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:13px}.desktop-nav a:hover,.desktop-nav a[aria-current]{color:var(--blue)}.desktop-nav a[aria-current]{text-decoration:underline;text-underline-offset:6px}.header-actions{display:flex;align-items:center;gap:22px}.language-switch{display:flex;gap:0;font:500 12px/1 var(--sans)}.language-switch a{display:grid;place-items:center;min-width:44px;min-height:44px;position:relative}.language-switch a[aria-current]{color:var(--blue);font-weight:700}.language-switch a[aria-current]:after{content:"";position:absolute;bottom:8px;width:14px;border-bottom:2px solid currentColor}.language-switch a:hover{color:var(--blue)}#menu-toggle{display:none;min-height:44px;align-items:center;gap:8px;font-size:13px;padding:0 6px}.mobile-nav{display:none}.site-footer{padding:38px 0 48px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;gap:35px}.site-footer>div>p{margin-top:7px;font-size:12px;color:var(--muted)}.footer-links{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:2px 22px;max-width:640px;font-size:12px}.footer-links>a,.footer-links>button{min-height:44px;display:inline-flex;align-items:center;gap:7px;padding:4px 0}.footer-links a:hover,.footer-links button:hover{color:var(--blue)}
/* A short first screen: identity, work, contact and CV. */
.hero{padding:52px 0 56px;position:relative}.hero-content{padding-right:280px}.hero .eyebrow{margin-bottom:18px}.hero h1{margin-bottom:23px}.hero-body>p{max-width:670px;color:var(--muted);font-size:16px;line-height:1.75}.hero-portrait{position:absolute;right:0;top:56px;width:220px;overflow:hidden;border-radius:120px 120px 12px 12px;background:var(--soft)}.hero-portrait img{width:100%;height:auto}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 23px;margin-top:25px}.hero-actions .text-link{border-color:transparent}.hero-actions .resource-link{font-size:12px}
/* Real interface proof, with its context adjacent. */
.featured-work{padding:64px 0 80px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1.1fr;gap:80px;align-items:start}.work-copy>h2{margin:15px 0 24px;font-size:clamp(35px,3.7vw,52px)}.work-copy .lead{font-size:15px}.work-observations{list-style:none;padding:0;margin:27px 0 20px;border-top:1px solid var(--line)}.work-observations li{display:flex;gap:17px;padding:14px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.6}.work-observations li>span{font-size:12px;color:var(--blue);font-variant-numeric:tabular-nums;padding-top:2px}.project-media>.media-surface{display:block;background:#f3f5f7;padding:26px}.project-media img{width:100%;height:auto}.project-media figcaption{margin-top:14px}.project-media figcaption>a{display:inline-flex;align-items:center;gap:6px;color:var(--blue);min-height:36px;text-decoration:underline;text-underline-offset:4px}.featured-work .project-media{margin-top:26px}.featured-work .project-media>.media-surface{padding:46px 30px}.project-media--cetelem-details{max-width:330px;margin-inline:auto}.project-media--cetelem-details>a{padding:22px;background:#f3f4f0}
/* One functional component. The epochs change its representation only. */
@font-face{font-family:ChiKareGo;src:url('ChiKareGo2.ttf?v=36') format('truetype');font-weight:400 700;font-style:normal;font-display:swap}
/* 1988: hard outlines, black and white, default-button ring. */
/* 2000: luminous Aqua surfaces, restrained pinstripes, blue volume. */
/* 2007: physical mobile chrome and large touch controls. */
/* 2013: white, thin dividers, typographic hierarchy. */
/* 2025: content stays legible; local glass belongs to the action layer. */
@supports not (backdrop-filter:blur(1px)){.era-component[data-era=glass] .era-actions{background:#f9fbf9}}
/* The built product is the payoff, rather than another simulated UI. */
.other-contexts{padding:70px 0 65px;border-top:1px solid var(--line)}.other-contexts>h2{margin-bottom:38px}.context-row{display:grid;grid-template-columns:1fr 2fr;gap:36px;padding:28px 0;border-top:1px solid var(--line)}.context-meta>p+ p{font-size:12px;margin-top:8px;color:var(--muted)}.context-copy>h3{font:400 29px/1.2 var(--serif);letter-spacing:-.02em;margin-bottom:15px}.context-copy>p{font-size:15px;color:var(--muted)}.context-copy>.text-link{margin-top:13px}.mh-context{grid-template-columns:1fr 1.8fr 1fr}.context-media{align-self:start;overflow:hidden;max-width:300px}.context-note{padding-top:14px;font-size:12px;color:var(--muted)}.testimonial{padding:60px 0 75px;border-block:1px solid var(--line)}.testimonial blockquote{font:400 clamp(30px,3.6vw,48px)/1.25 var(--serif);letter-spacing:-.025em;max-width:920px;margin:24px 0}.testimonial blockquote em{font-style:italic}.testimonial>p:last-child{font-size:13px;color:var(--muted)}.career{padding:85px 0}.responsibilities{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;margin-top:36px}.responsibilities article{border-top:1px solid var(--line);padding-top:19px}.responsibilities h3{font:600 13px/1.4 var(--sans);letter-spacing:.04em;text-transform:uppercase;margin-bottom:14px}.responsibilities p{font-size:15px;color:var(--muted)}.career-timeline{display:grid;grid-template-columns:1fr 2fr;gap:30px 60px;margin-top:60px;border-top:1px solid var(--line);padding-top:30px}.career-timeline>h3{font:400 29px/1.2 var(--serif)}.career-timeline ol{list-style:none;padding:0;margin:0}.career-timeline li{display:grid;grid-template-columns:1fr 1.5fr;gap:20px;padding:16px 0;border-bottom:1px solid var(--line)}.career-timeline li>p{font-size:12px;color:var(--muted)}.career-timeline li h3{font-size:15px;font-weight:500}.career-timeline li div>p{font-size:13px;color:var(--muted)}.career-timeline>.text-link{grid-column:2;justify-self:start}
.contact-section{background:#eef0fb;border-top:1px solid #dce0f1;padding:72px 0 76px}.contact-section h2{margin:20px 0 18px}.contact-section .lead{font-size:16px}.email-address{font:400 clamp(21px,2.3vw,30px)/1.4 var(--serif);display:inline-block;margin:20px 0 10px;user-select:text;text-decoration:underline;text-underline-offset:6px;overflow-wrap:anywhere;min-height:44px}.contact-actions{display:flex;flex-wrap:wrap;align-items:center;gap:15px 26px;margin-top:20px}.copy-status{font-size:13px;margin-top:15px;min-height:24px;color:var(--muted)}
/* Native modal enhancement. Without JS, the same case content is readable. */
.case-page{padding:70px 0;max-width:900px}.case-page>header .eyebrow{margin-bottom:9px}.case-page>header>p:not(.eyebrow){font-size:13px;color:var(--muted)}.case-page h2{margin:20px 0 22px;font-size:clamp(34px,4.2vw,56px)}.case-page>header .lead{font-size:16px!important}.case-page h3{font:600 17px/1.35 var(--sans);margin-bottom:14px}.case-page p{font-size:15px;color:var(--muted)}.case-summary{display:grid;grid-template-columns:1fr 1fr;gap:36px;padding:25px 0;margin-top:24px;border-block:1px solid var(--line)}.case-page>section{margin-top:30px}.case-page ol{font-size:15px;line-height:1.6;padding-left:22px}.case-page ol li{margin:9px 0}.case-page .project-media{margin-top:22px;max-width:680px;margin-inline:auto}.case-page .project-media--cetelem-commande{max-width:580px}.case-page .project-media--cetelem-details{max-width:310px}.case-page .project-media img{object-fit:contain}.case-attribution{border-top:1px solid var(--line);padding-top:23px}.case-end{display:flex;justify-content:space-between;gap:22px;align-items:center;margin-top:30px}.next-case{margin-top:24px}.case-dialog{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:10px;padding:0;width:min(1050px,calc(100% - 56px));max-height:calc(100svh - 48px);overscroll-behavior:contain}.case-dialog::backdrop{background:#17203066}.case-head{position:sticky;top:0;background:var(--paper);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 22px;border-bottom:1px solid var(--line)}.case-head button{min-height:44px;display:inline-flex;align-items:center;gap:8px;font-size:12px}.case-tools{display:flex;align-items:center;gap:12px}.case-close{min-width:44px;justify-content:center}.case-share{padding:0 8px}.case-head .case-name{font-size:12px;margin-right:auto;margin-left:15px}.case-head .language-switch a{min-width:36px}.case-dialog .case-page{width:calc(100% - 80px);padding:35px 0 46px}.case-copy-status{font-size:12px;line-height:1.5;padding:0 20px;background:var(--soft);position:sticky;top:68px;z-index:4;overflow-wrap:anywhere}.case-copy-status:not(:empty){padding:10px 20px}.case-copy-status input{width:100%;font:inherit;background:#fff;color:var(--ink);padding:8px;border:1px solid var(--line);margin-top:6px}.error-page{padding:85px 0 120px;min-height:60svh}.error-page h1{margin:20px 0}.error-page .button{margin-top:28px}.site-header+main:not(.hero):has(>article){max-width:860px;margin:60px auto;padding:0 28px}.site-header+main>article{margin-top:30px}.site-header+main>article h2{font:600 22px/1.3 var(--sans);letter-spacing:0;margin:30px 0 12px}.site-header+main>article p{font-size:15px;color:var(--muted);margin:12px 0}.site-header+main>article a{text-decoration:underline;text-underline-offset:3px;color:var(--blue)}
@media(min-width:1600px){.hero{padding-top:58px;padding-bottom:65px}.featured-work{padding-top:70px}}
@media(max-width:1050px){.wrap{width:calc(100% - 64px)}.header-inner{gap:20px}.desktop-nav{gap:20px}.header-actions{gap:13px}.hero-content{padding-right:230px}.hero-portrait{width:190px}.hero h1{font-size:clamp(46px,6.1vw,64px)}.featured-work{gap:45px;grid-template-columns:1fr 1fr}.history-sticky{grid-template-columns:1fr 2.2fr .8fr;gap:18px}.history-stage{padding:8px}.era-content{padding:24px 22px}.era-content h3{font-size:22px}.era-actions{padding:16px}.apphalt-section{gap:45px}.mh-context{grid-template-columns:1fr 2fr}.mh-context .context-media{grid-column:2;max-width:380px}.footer-links{gap:0 15px}}
@media(max-width:760px){:root{--header:64px}.wrap{width:calc(100% - 40px)}.header-inner{gap:10px;justify-content:space-between}.brand{gap:9px}.brand img{width:26px}.brand span{font-size:13px}.desktop-nav,.header-cv{display:none}.header-actions{gap:5px}#menu-toggle:not([hidden]){display:inline-flex}.language-switch a{min-width:40px;min-height:44px}.mobile-nav{display:flex;flex-wrap:wrap;gap:0 24px;padding:16px 0 20px;border-top:1px solid var(--line)}.has-js .mobile-nav{display:none}.has-js .mobile-nav.is-open{display:flex}.mobile-nav>a{display:flex;align-items:center;min-height:44px;font-size:14px}.hero{padding:30px 0 38px}.hero-content{padding-right:0}.hero h1{font-size:clamp(37px,6.5vw,52px);letter-spacing:-.035em;margin-bottom:23px}.hero .eyebrow{font-size:11px;margin-bottom:14px}.hero-body{display:grid;grid-template-columns:1fr 110px;gap:19px;align-items:start}.hero-body>p{font-size:14px;line-height:1.75}.hero-portrait{position:static;width:110px;margin-top:2px;border-radius:65px 65px 8px 8px}.hero-actions{gap:9px 18px;margin-top:23px}.hero-actions .button{font-size:13px;padding-inline:17px}.hero-actions .text-link{font-size:13px}.hero-actions .resource-link{font-size:12px;min-height:44px}.featured-work{display:block;padding:36px 0 52px}.work-copy h2{font-size:39px;margin:17px 0 21px}.work-copy .lead{font-size:14px}.work-observations{margin:22px 0 12px}.work-observations li{font-size:14px;padding:13px 0}.featured-work .project-media{margin-top:28px}.featured-work .project-media>.media-surface{padding:24px 16px}.interface-history{padding:50px 0 37px}.history-intro h2{font-size:38px}.history-intro .lead{font-size:14px}.history-intro-bottom{align-items:flex-start;flex-direction:column;gap:12px;margin-top:16px}.history-intro-bottom>p{font-size:13px}.history-track{margin-top:14px}.history-sticky{display:flex;flex-direction:column;gap:0;padding:18px 0 28px}.history-comment{width:100%}.history-comment .eyebrow{font-size:11px}.history-comment h3{font-size:27px;margin:9px 0 13px;min-height:32px}.history-stage{width:100%;min-height:370px;padding:20px 0;order:2}.history-comment{order:0}.era-selector{width:100%;flex-direction:row;justify-content:space-between;gap:0;order:1;margin-top:14px;border-bottom:1px solid var(--line)}.era-selector button{flex:1;min-width:0;min-height:60px;padding:7px 3px;text-align:center;align-items:center;border-left:0;border-bottom:2px solid transparent;font-size:11px}.era-selector button[aria-pressed=true]{border-bottom-color:var(--blue)}.era-year{font-size:13px}.era-name{display:none}.era-short{display:block;white-space:nowrap;font-size:11px}.era-content{padding:25px 24px 20px}.era-content h3{font-size:23px}.era-content p{font-size:14px;line-height:1.7}.era-actions{padding:17px;gap:10px}.era-actions a{font-size:13px;min-height:46px;padding:11px 13px}.era-primary{order:0}.era-component[data-era=system6] .era-actions{padding:19px 18px;gap:18px;justify-content:center}.era-component[data-era=system6] .era-actions a{font-size:12px;padding:10px 12px}.history-end{padding-top:2px}.history-end>p{font-size:23px}.history-end ul{display:block}.history-end li{margin-bottom:6px}.apphalt-section{display:block;padding:55px 0}.apphalt-copy h2{font-size:39px}.apphalt-copy .lead{font-size:15px}.apphalt-menu{margin:30px auto 35px;max-width:360px}.apphalt-states>h3{font-size:27px}.apphalt-state-images{gap:14px}.apphalt-state-images figure>p{font-size:11px}.apphalt-state-images img{border-radius:5px}.apphalt-states>.caption{font-size:11px}.other-contexts{padding:50px 0}.other-contexts>h2{font-size:38px}.context-row,.mh-context{display:block;padding:25px 0}.context-meta{margin-bottom:16px}.context-copy>h3{font-size:27px}.context-copy>p{font-size:14px}.context-copy .text-link{font-size:13px}.context-media{display:block;max-width:380px;margin-top:22px}.testimonial{padding:45px 0}.testimonial blockquote{font-size:34px;margin:22px 0}.testimonial>p:last-child{font-size:12px}.career{padding:55px 0}.career h2{font-size:40px}.responsibilities{display:block;margin-top:30px}.responsibilities article{margin-top:23px;padding-top:18px}.responsibilities p{font-size:14px}.career-timeline{display:block;margin-top:38px;padding-top:24px}.career-timeline>h3{font-size:26px;margin-bottom:15px}.career-timeline li{grid-template-columns:1fr 1.6fr;gap:16px}.career-timeline li h3{font-size:14px}.career-timeline>.text-link{margin-top:20px}.contact-section{padding:50px 0}.contact-section h2{font-size:39px}.contact-section .lead{font-size:14px}.contact-section .eyebrow{font-size:11px}.contact-actions{gap:10px 20px}.contact-actions .button{font-size:13px}.contact-actions .text-link{font-size:12px}.site-footer{display:block;padding:28px 0}.footer-links{justify-content:flex-start;margin-top:20px;gap:0 19px}.footer-links .language-switch{margin-left:-10px}.case-dialog{width:100%;height:100svh;max-height:100svh;margin:0;border:0;border-radius:0}.case-head{padding:8px 12px;gap:5px}.case-head .case-name{display:none}.case-back{min-width:65px;justify-content:flex-start}.case-tools{gap:3px}.case-head .language-switch a{min-width:34px}.case-share{min-width:42px;justify-content:center}.case-share span{display:none}.case-close{min-width:42px}.case-dialog .case-page{width:calc(100% - 40px);padding:26px 0 40px}.case-page h2{font-size:36px}.case-summary{display:block;margin-top:22px;padding:10px 0 20px}.case-summary>section{margin-top:18px}.case-page p{font-size:14px}.case-page>section{margin-top:25px}.case-page h3{font-size:16px}.case-page .project-media>.media-surface{padding:16px 12px}.case-end{align-items:flex-start;flex-direction:column;gap:12px}.case-page ol{font-size:14px}.case-page:not(.case-dialog .case-page){padding:45px 0}.site-header+main:not(.hero):has(>article){margin-top:35px;padding:0 20px}.site-header+main>article h2{font-size:20px}.site-header+main>article p{font-size:14px}}
@media(max-width:350px){.wrap{width:calc(100% - 32px)}.header-inner{gap:5px}.header-actions{gap:2px}.brand{gap:7px}.brand img{width:23px}.brand span{font-size:12px}.language-switch a{min-width:34px}#menu-toggle{font-size:12px;gap:5px;padding:0 4px}.hero h1{font-size:36px}.hero-body{grid-template-columns:1fr 94px;gap:14px}.hero-portrait{width:94px}.hero-body>p{font-size:13px}.hero-actions{gap:8px 14px}.work-copy h2,.history-intro h2,.apphalt-copy h2,.other-contexts>h2,.contact-section h2{font-size:35px}.era-content{padding:22px 20px 18px}.era-content h3{font-size:21px}.era-actions{padding:15px 12px}.era-actions a{font-size:12px;padding-inline:12px}.era-component[data-era=system6] .era-actions{flex-direction:column;gap:18px}.era-component[data-era=system6] .era-actions a{width:90%}.era-component[data-era=iphone] .era-content{margin:15px 15px 0;padding:20px}.era-component[data-era=iphone] .era-actions{margin:0 15px 15px}.era-component[data-era=ios7] .era-actions a{font-size:13px}.apphalt-state-images{grid-template-columns:1fr;gap:27px}.apphalt-state-images figure>p{font-size:13px}.case-dialog .case-page{width:calc(100% - 32px)}.case-head{padding-inline:9px}.case-tools{gap:1px}.case-head .language-switch a{min-width:32px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.is-scroll-story .history-track{height:auto;min-height:0}.is-scroll-story .history-sticky{position:static;min-height:0;max-height:none}.story-scroll-hint{display:none!important}.story-static-hint{display:block!important}}
.motion-reduced{scroll-behavior:auto}.motion-reduced *, .motion-reduced *::before,.motion-reduced *::after{animation:none!important;transition:none!important}.motion-reduced .history-track{height:auto;min-height:0}.motion-reduced .history-sticky{position:static;min-height:0;max-height:none}.motion-reduced .story-scroll-hint{display:none}.motion-reduced .story-static-hint{display:block}
@media(forced-colors:active){.era-component,.era-actions a,.button{border:1px solid CanvasText}.era-selector button[aria-pressed=true]{border-color:Highlight}.history-background{display:none}.era-primary{outline:2px solid Highlight}}
@media print{.site-header,.site-footer,.interface-history,.hero-portrait,.contact-actions{display:none}.wrap{width:100%}.hero-content{padding:0}.case-dialog{display:block;position:static;max-height:none;width:100%;border:0}.case-head{display:none}a{color:inherit}.apphalt-state-images{grid-template-columns:1fr 1fr}}

@media(max-width:760px){.site-header .language-switch a{min-width:44px}.case-head .language-switch a{min-width:44px}}

@media(min-width:761px){.featured-work{column-gap:80px;row-gap:0}.featured-work .work-copy{grid-column:1;grid-row:1}.featured-work .work-details{grid-column:1;grid-row:2}.featured-work>.project-media{grid-column:2;grid-row:1 / span 2}}
@media(min-width:761px) and (max-width:1050px){.featured-work{column-gap:45px}}

@media(max-width:760px){.case-dialog{max-width:100%}.history-comment h3{min-height:64px}.history-stage{min-height:470px}}


.case-copy-status{top:var(--case-head-height,68px)}.case-link-fallback{min-height:44px}.case-link-fallback:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.case-share,.case-close{min-width:44px}

/* Calm page, clear navigation. Colour is confined to the interface scene. */
:root{--ink:#222622;--line:#e3e5e8;--muted:#535b61}
.brand img{width:40px}.brand span{font-size:14px}
.desktop-nav{gap:27px}.desktop-nav a,.header-cv{font-size:14px}
.desktop-nav a[aria-current]{text-decoration:none}
.desktop-nav .nav-contact{border:1px solid var(--line);padding:0 14px;border-radius:6px;gap:10px}
.desktop-nav .nav-contact:hover{border-color:var(--blue)}
.language-switch{padding:3px;border:1px solid var(--line);border-radius:30px;background:#f6f7fa;gap:2px}
.language-switch a{min-width:40px;min-height:34px;border-radius:24px}
.language-switch a[aria-current]{background:var(--blue);color:#fff}
.language-switch a[aria-current]:after{display:none}
.language-switch a:hover:not([aria-current]){background:#e7ebf7}
.hero{padding-top:42px;padding-bottom:48px}.hero-actions{gap:22px}
.hero-portrait{top:46px}.hero-actions .text-link{border:0}

/* An informative signature: the same meaning, five representations. */
.interface-history{padding:54px 0 32px;background:#fff;border-block:1px solid var(--line)}
.history-intro{display:grid;grid-template-columns:1.15fr 1fr;column-gap:80px;align-items:start}
.history-intro .eyebrow{grid-column:1 / -1;margin-bottom:16px}
.history-intro h2{font-size:clamp(35px,3.6vw,49px)}
.history-intro .lead{font-size:16px;max-width:470px;padding-top:5px}
.history-intro-bottom{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:20px 0 16px;font-size:13px}
.history-intro-bottom .text-link{font-size:13px;border:0}
.history-track{height:auto;margin-top:22px}
.history-sticky{display:grid;grid-template-columns:1fr 3fr .72fr;gap:30px;align-items:center;padding:28px 0}
.history-comment h3{font:400 clamp(25px,2.2vw,31px)/1.2 var(--serif);letter-spacing:-.025em;margin:14px 0 22px}
.story-scroll-hint{display:none;font-size:12px;color:var(--muted)}.story-static-hint{font-size:12px;color:var(--muted)}
.history-stage{min-height:440px;position:relative;isolation:isolate;display:grid;place-items:center;padding:44px 24px;border-radius:10px;overflow:hidden;background:#cfdaee}
.os-wallpapers,.os-wallpaper{position:absolute;inset:0;pointer-events:none;z-index:-1}
.os-wallpaper{opacity:0;transition:opacity 180ms ease-out}
.history-stage[data-era=system6] .os-wallpaper--system6,.history-stage[data-era=aqua] .os-wallpaper--aqua,.history-stage[data-era=iphone] .os-wallpaper--iphone,.history-stage[data-era=ios7] .os-wallpaper--ios7,.history-stage[data-era=glass] .os-wallpaper--glass{opacity:1}
.os-wallpaper--system6{background:repeating-conic-gradient(#a9adb1 0% 25%,#e5e7e9 0% 50%) 0 0 / 4px 4px}
.os-wallpaper--aqua{background:radial-gradient(ellipse at 84% -12%,#e5f9ff 0,transparent 56%),radial-gradient(ellipse at -20% 112%,#0a308e 0,transparent 66%),linear-gradient(140deg,#176fc7,#70caf0 70%,#d4f1fa)}
.os-wallpaper--aqua:before{content:"";position:absolute;width:160%;height:70%;left:-38%;top:56%;border-radius:50%;background:linear-gradient(180deg,#b0edffb3,#1a67b5a6);transform:rotate(-23deg);box-shadow:0 -20px 0 #d7f8ff70,0 -55px 0 #9ad9f14d}
.os-wallpaper--iphone{background:radial-gradient(ellipse 40px 50px at 12% 28%,#728594 0%,#121b25 25%,#000 31%,transparent 34%),radial-gradient(ellipse 22px 28px at 82% 17%,#657c8c,#101925 30%,#000 43%,transparent 48%),radial-gradient(ellipse 32px 39px at 75% 76%,#6c7a83,#121a23 30%,#000 37%,transparent 42%),radial-gradient(ellipse 19px 24px at 27% 84%,#708596,#101823 30%,#000 42%,transparent 48%),linear-gradient(#0a111a,#243641)}
.os-wallpaper--ios7{background:radial-gradient(circle at 10% 90%,#e77bbdab,transparent 45%),radial-gradient(circle at 85% 16%,#8ae1d8,transparent 52%),radial-gradient(circle at 55% 90%,#6a9ded,transparent 60%),linear-gradient(135deg,#8bd0ff,#beddf3 55%,#eddaff)}
.os-wallpaper--ios7:before{content:"";position:absolute;inset:0;background:radial-gradient(circle 34px at 16% 20%,#ffffff30,transparent),radial-gradient(circle 22px at 85% 72%,#ffffff40,transparent),radial-gradient(circle 54px at 65% 8%,#ffffff40,transparent)}
.os-wallpaper--glass{background:radial-gradient(ellipse at 80% 10%,#a6e9ff,transparent 70%),linear-gradient(155deg,#3565ed 8%,#6672fb 44%,#e8b5fe 75%,#e9edf8)}
.os-wallpaper--glass:before{content:"";position:absolute;width:125%;height:90%;left:-30%;top:53%;border-radius:45% 75% 0 0;background:linear-gradient(150deg,#f6cfd9 3%,#f48293 25%,#9b7bdd 61%,#476edb);transform:rotate(-22deg);box-shadow:42px -28px 0 #bac9ff66}
.era-component{--era-ink:#192233;color:var(--era-ink);width:min(100%,480px);min-width:0;position:relative;border-radius:25px;border:1px solid #ffffffb3;background:#f8fbffdf;box-shadow:0 18px 38px #16255526,inset 0 1px 0 #fff;transition:border-radius 180ms,background-color 180ms,box-shadow 180ms}
.era-content{padding:29px 32px 30px}.era-content h3{font:600 26px/1.2 var(--sans);letter-spacing:-.025em;margin:0 0 20px}
.era-principles{list-style:none;padding:0;margin:0;display:grid;gap:11px;font:400 16px/1.55 var(--sans)}
.era-principles li{padding:10px 0;border-top:1px solid #24334c20}
.era-chrome{display:none}
.era-selector{display:flex;flex-direction:column;gap:8px}
.era-selector button{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-height:58px;padding:8px 0 8px 14px;border-left:2px solid var(--line);text-align:left;color:var(--muted);font-size:12px}
.era-selector button[aria-pressed=true]{border-left-color:var(--blue);color:var(--ink);font-weight:700}
.era-year{font-size:16px;line-height:1.3;font-variant-numeric:tabular-nums}.era-selector button[aria-pressed=true] .era-year{color:var(--blue)}.era-short{display:none}
.history-end{padding-top:12px}.history-end>p{font:400 22px/1.4 var(--serif);max-width:860px;letter-spacing:-.02em}
.history-end details{font-size:12px;color:var(--muted);margin-top:10px}.history-end summary{cursor:pointer;min-height:44px;line-height:44px}
.history-end details p{margin:10px 0}.history-end ul{padding-left:18px;display:flex;flex-wrap:wrap;gap:8px 26px}.history-end li>a{min-height:44px;display:inline-flex;gap:8px;align-items:center;text-decoration:underline;text-underline-offset:3px}
.is-scroll-story .history-track{height:115svh;min-height:960px}.is-scroll-story .history-sticky{position:sticky;top:calc(var(--header) + 12px);min-height:min(600px,calc(100svh - var(--header) - 36px));max-height:none}
.is-scroll-story .story-scroll-hint{display:block}.is-scroll-story .story-static-hint{display:none}

.era-component[data-era=system6]{--era-ink:#000;border:2px solid #000;border-radius:0;background:#fff;box-shadow:5px 5px 0 #000}
.era-component[data-era=system6] .era-chrome{display:flex;align-items:center;justify-content:center;height:30px;background:repeating-linear-gradient(0deg,#fff 0 2px,#000 2px 3px);border-bottom:2px solid #000;font:400 17px/1 ChiKareGo,Geneva,sans-serif}
.era-component[data-era=system6] .era-chrome span{background:#fff;padding:3px 16px}
.era-component[data-era=system6] .era-content h3{font:400 29px/1.2 ChiKareGo,Geneva,sans-serif;letter-spacing:0}
.era-component[data-era=system6] .era-principles{font:400 20px/1.35 ChiKareGo,Geneva,sans-serif;gap:7px}
.era-component[data-era=system6] .era-principles li{border-top:1px solid #000;padding:9px 0}
.era-component[data-era=aqua]{--era-ink:#17202a;background:repeating-linear-gradient(0deg,#fafafa 0 2px,#f0f1f3 2px 4px);border:1px solid #798c9f;border-radius:10px;box-shadow:0 18px 28px #122d5440}
.era-component[data-era=aqua] .era-chrome{display:flex;align-items:center;justify-content:center;height:34px;border-radius:10px 10px 0 0;background:linear-gradient(#f6fcff 0%,#d4e7f6 48%,#b5cddf 52%,#e5f4fd);border-bottom:1px solid #8fa6b6;font:600 14px/1 var(--sans);text-shadow:0 1px #fff}
.era-component[data-era=aqua] .era-principles li{border-color:#a4bbd070}
.era-component[data-era=iphone]{--era-ink:#fff;width:min(100%,340px);border-radius:22px;border:1px solid #091321;background:linear-gradient(155deg,#23435b,#0b1b2d);box-shadow:0 14px 28px #0008,inset 0 1px 0 #7b9eb8}
.era-component[data-era=iphone] .era-chrome{display:flex;align-items:center;justify-content:center;height:45px;border-radius:22px 22px 0 0;border-bottom:1px solid #08121f;background:linear-gradient(#526983,#344c6a 50%,#1c3555 51%,#3d5575);font:600 17px/1 var(--sans);color:#fff;text-shadow:0 1px 2px #000}
.era-component[data-era=iphone] .era-content{padding:26px 24px}.era-component[data-era=iphone] .era-content h3{font-size:25px}.era-component[data-era=iphone] .era-principles li{padding:14px 0;border-color:#ffffff38;font-size:16px}
.era-component[data-era=ios7]{--era-ink:#1f2933;background:#ffffffef;border:1px solid #ffffffd9;border-radius:9px;box-shadow:0 14px 30px #41528024}
.era-component[data-era=ios7] .era-content h3{font-weight:400;color:#064fbd}.era-component[data-era=ios7] .era-principles li{border-color:#7c91a742}
.era-component[data-era=glass]{--era-ink:#172337;background:#f5faffda;border:1px solid #ffffffe0;box-shadow:0 16px 32px #2537682b,inset 0 1px 0 #fff,inset 0 -1px 0 #ffffff60}
@supports(backdrop-filter:blur(1px)){.era-component[data-era=glass]{background:#f7fbffb8;backdrop-filter:blur(14px) saturate(1.2)}}

/* AppHalt supports the story in one compact editorial row. */
.apphalt-note{display:grid;grid-template-columns:1fr 1.65fr auto;gap:32px;align-items:center;padding:30px 0 38px;border-top:1px solid var(--line)}
.apphalt-note .eyebrow{font-size:10px;letter-spacing:.06em;margin-bottom:9px}
.apphalt-note h2{font-size:30px;line-height:1.15}.apphalt-note>p{font-size:14px;line-height:1.75;color:var(--muted)}.apphalt-note>a{font-size:13px;white-space:nowrap}
.project-media>.media-surface{display:block;background:#f3f5f7;padding:26px}

@media(max-width:1050px){.history-intro{column-gap:40px}.history-sticky{grid-template-columns:1fr 2.7fr .72fr;gap:20px}.history-stage{padding:28px 18px}.era-content{padding:24px}.apphalt-note{gap:22px;grid-template-columns:1fr 1.6fr}.apphalt-note>a{grid-column:2;justify-self:start;margin-top:-10px}}
@media(max-width:760px){
 .brand img{width:32px}.brand span{font-size:13px}.header-inner{gap:10px}.header-actions{gap:8px}.header-actions .language-switch{padding:2px}.site-header .language-switch a{min-width:44px;min-height:44px}
 #menu-toggle{padding:0;min-width:44px;justify-content:center}#menu-toggle>span{display:none}#menu-toggle .icon{width:20px;height:20px}
 .hero{padding-top:28px;padding-bottom:33px}.hero-portrait{top:auto}.hero-actions{gap:18px}.hero-actions .button{padding-inline:16px}
 .interface-history{padding:36px 0 22px}.history-intro{display:block}.history-intro .eyebrow{font-size:10px;letter-spacing:.055em}.history-intro h2{font-size:36px}.history-intro .lead{font-size:14px;margin-top:20px;padding:0}
 .history-intro-bottom{align-items:flex-start;gap:8px;flex-direction:column;padding:12px 0;font-size:12px}.history-intro-bottom .text-link{min-height:44px}
 .history-track{margin-top:16px}.history-sticky{display:flex;flex-direction:column;gap:0;padding:0 0 16px;align-items:stretch}.history-comment{order:3;width:100%;display:grid;grid-template-columns:auto 1fr;column-gap:16px;align-items:center;margin-top:18px;min-height:64px}.history-comment .eyebrow{font-size:10px}.history-comment h3{font-size:23px;min-height:0;margin:0}.story-scroll-hint,.story-static-hint{display:none!important}
 .era-selector{order:0;width:100%;flex-direction:row;justify-content:space-between;gap:0;margin-bottom:15px;border-bottom:1px solid var(--line)}.era-selector button{flex:1;min-width:0;align-items:center;padding:8px 2px;min-height:61px;border-left:0;border-bottom:2px solid transparent;font-size:11px;text-align:center}.era-selector button[aria-pressed=true]{border-bottom-color:var(--blue)}.era-year{font-size:13px}.era-name{display:none}.era-short{display:block;white-space:nowrap;font-size:11px}
 .history-stage{order:1;width:100%;min-height:370px;padding:28px 18px;border-radius:9px}.era-content{padding:24px 23px}.era-content h3{font-size:25px}.era-principles{font-size:14px;gap:9px}.era-principles li{padding:10px 0}
 .era-component[data-era=system6] .era-content h3{font-size:28px}.era-component[data-era=system6] .era-principles{font-size:18px}
 .era-component[data-era=iphone] .era-content{padding:24px 21px;margin:0}.era-component[data-era=iphone] .era-content h3{font-size:24px}.era-component[data-era=iphone] .era-principles li{font-size:14px;padding:13px 0}
 .history-end{padding-top:0}.history-end>p{font-size:21px}.history-end ul{display:block}.history-end li{margin-bottom:5px}
 .apphalt-note{display:block;padding:25px 0 31px}.apphalt-note h2{font-size:29px}.apphalt-note>p{font-size:14px;margin-top:16px}.apphalt-note>a{margin-top:12px;white-space:normal}
}
@media(max-width:350px){.brand{gap:7px}.brand img{width:30px}.brand span{font-size:12px}.header-actions{gap:4px}.header-inner{gap:5px}.site-header .language-switch a{min-width:44px}.hero-actions{gap:14px}.hero-actions .button{font-size:12px}.hero-actions .text-link{font-size:12px}.history-intro h2{font-size:34px}.history-stage{padding:24px 13px}.era-content{padding:23px 20px}.era-content h3{font-size:23px}.era-component[data-era=system6] .era-content h3{font-size:26px}.era-component[data-era=system6] .era-principles{font-size:17px}.history-comment{column-gap:12px}.history-comment h3{font-size:22px}}
@media(prefers-reduced-motion:reduce){.is-scroll-story .history-track{height:auto;min-height:0}.is-scroll-story .history-sticky{position:static;min-height:0;max-height:none}.os-wallpaper{transition:none}}
.motion-reduced .history-track{height:auto;min-height:0}.motion-reduced .history-sticky{position:static;min-height:0;max-height:none}
@media(forced-colors:active){.os-wallpapers{display:none}.history-stage,.era-component{border:1px solid CanvasText}.language-switch a[aria-current]{border:2px solid Highlight}}

/* Native disclosure: usable before JS, with no navigation flash or layout shift. */
.mobile-menu{display:none}
.mobile-menu summary{list-style:none;cursor:pointer;touch-action:manipulation}
.mobile-menu summary::-webkit-details-marker{display:none}
.mobile-menu summary::marker{content:""}
.mobile-menu:not([open]) .mobile-nav{display:none}
@media(max-width:760px){
 .mobile-menu{display:block}
 .mobile-menu[open] .mobile-nav{display:flex;position:absolute;top:100%;left:0;right:0;width:100%;margin:0;padding:12px 20px 20px;background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 8px 16px #1826420a;flex-direction:column;gap:0}
 .mobile-menu .mobile-nav>a{min-height:46px;width:100%;font-size:14px}
 .mobile-menu .mobile-nav .nav-contact{border:0;padding:0}
}

/* Restore the coded interface gallery; give the sticky scene its own viewport. */
section.interface-history{scroll-margin-top:0}
.is-scroll-story .history-track{height:calc(100svh - var(--header) - 36px + 600px);min-height:0}
.is-scroll-story .history-sticky{height:calc(100svh - var(--header) - 36px);min-height:0;max-height:none}
.is-scroll-story .history-stage{height:min(560px,calc(100svh - var(--header) - 150px));min-height:0}
.history-end{padding-top:4px}
@media(max-width:760px){
  .history-track{height:auto;min-height:0}
  .history-sticky{height:auto;min-height:0}
  .history-stage{height:auto;min-height:370px}
}
@media(prefers-reduced-motion:reduce){
  .is-scroll-story .history-track{height:auto;min-height:0}
  .is-scroll-story .history-sticky{height:auto;min-height:0}
  .is-scroll-story .history-stage{height:auto;min-height:440px}
}
.motion-reduced .history-track{height:auto!important;min-height:0}
.motion-reduced .history-sticky{height:auto!important;min-height:0}
.motion-reduced .history-stage{height:auto!important;min-height:440px}
