:root{--c-ink-900: #0b0a09;--c-ink-800: #100e0c;--c-ink-700: #17140f;--c-ink-600: #211d17;--c-ink-500: #2c2720;--c-bone-100: #f0ece3;--c-bone-200: #ded8cc;--c-bone-300: #a49d90;--c-bone-400: #837c6e;--c-accent: #c8642d;--c-accent-bright: #e07a3c;--c-accent-deep: #8f4620;--c-accent-wash: rgba(200, 100, 45, .12);--bg: var(--c-ink-900);--bg-alt: var(--c-ink-800);--surface: var(--c-ink-700);--border: var(--c-ink-600);--hairline: rgba(240, 236, 227, .1);--text-hi: var(--c-bone-100);--text: var(--c-bone-200);--text-mut: var(--c-bone-300);--text-faint: var(--c-bone-400);--accent: var(--c-accent);--accent-hi: var(--c-accent-bright);--focus: var(--c-accent-bright);--tile-scrim: linear-gradient(to top, rgba(11, 10, 9, .72), transparent);--font-display: "Oswald", "Arial Narrow", system-ui, sans-serif;--font-serif: "Fraunces", "Georgia", serif;--font-body: "Archivo", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--step--1: clamp(.78rem, .74rem + .2vw, .86rem);--step-0: clamp(.95rem, .9rem + .25vw, 1.06rem);--step-1: clamp(1.2rem, 1.05rem + .7vw, 1.6rem);--step-2: clamp(1.6rem, 1.3rem + 1.5vw, 2.6rem);--step-3: clamp(2.4rem, 1.7rem + 3.4vw, 4.6rem);--step-4: clamp(3.4rem, 2.1rem + 6.4vw, 8rem);--step-5: clamp(4.6rem, 2.2rem + 11vw, 13rem);--lh-tight: .92;--lh-snug: 1.08;--lh-body: 1.62;--tracking-display: -.02em;--tracking-wide: .22em;--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2rem;--space-5: 3rem;--space-6: 4.5rem;--space-7: 7rem;--space-8: 11rem;--gutter: clamp(1.25rem, 4vw, 4.5rem);--maxw: 1560px;--radius-sm: 2px;--radius: 4px;--shadow-lift: 0 30px 80px -40px rgba(0, 0, 0, .9);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-inout: cubic-bezier(.65, 0, .35, 1);--dur-fast: .18s;--dur: .34s;--dur-slow: .62s;--z-gl: 1;--z-content: 2;--z-nav: 40;--z-cursor: 9999;color-scheme:dark}[data-theme=light]{--bg: #e9e3d7;--bg-alt: #e2dccf;--surface: #f2eee6;--border: #d3cbba;--hairline: rgba(23, 20, 15, .14);--text-hi: #14110d;--text: #2c2720;--text-mut: #5f584c;--text-faint: #655d4e;--accent: #a04d18;--accent-hi: #b95e22;--focus: #8f4620;--tile-scrim: linear-gradient(to top, rgba(233, 227, 215, .9), transparent);color-scheme:light}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--step-0);line-height:var(--lh-body);font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:3;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}img,canvas{display:block;max-width:100%}a{color:inherit;text-decoration:none}ul,ol{list-style:none;padding:0}em{font-style:italic}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:var(--radius-sm)}.skip-link{position:fixed;top:.75rem;left:.75rem;z-index:100;padding:.6rem 1rem;background:var(--text-hi);color:var(--bg);font-family:var(--font-mono);font-size:var(--step--1);transform:translateY(-160%);transition:transform var(--dur-fast) var(--ease-out)}.skip-link:focus{transform:translateY(0)}body.has-cursor,body.has-cursor a,body.has-cursor button{cursor:none}main{position:relative;z-index:var(--z-content)}.kicker{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-mut)}.section-head{display:grid;grid-template-columns:auto 1fr;align-items:end;gap:var(--space-3) var(--space-4);padding:0 var(--gutter);margin-bottom:var(--space-6)}.section-head__index{font-family:var(--font-mono);font-size:var(--step--1);color:var(--accent);align-self:start;padding-top:.6em}.section-head__title{font-family:var(--font-display);font-weight:600;font-size:var(--step-4);line-height:var(--lh-tight);letter-spacing:var(--tracking-display);text-transform:uppercase;color:var(--text-hi)}.section-head__note{max-width:34ch;color:var(--text-mut);justify-self:end;text-align:left;grid-column:2}@media (max-width: 720px){.section-head{grid-template-columns:1fr}.section-head__note{justify-self:start;grid-column:1}}.nav{position:fixed;top:0;left:0;right:0;z-index:var(--z-nav);display:flex;align-items:center;justify-content:space-between;padding:clamp(1rem,2vw,1.6rem) var(--gutter);mix-blend-mode:difference;color:#fff}.nav__brand{font-family:var(--font-display);font-weight:700;font-size:1.35rem;letter-spacing:.14em;display:inline-flex;align-items:center;gap:.6rem}.nav__mark{width:11px;height:11px;border-radius:50%;background:currentColor;animation:pulse 3.2s var(--ease-inout) infinite}@keyframes pulse{0%,to{transform:scale(.7);opacity:.55}50%{transform:scale(1);opacity:1}}.nav__links{display:flex;align-items:center;gap:clamp(1rem,2.4vw,2.4rem);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;text-transform:uppercase}.nav__links a{position:relative;padding:.3rem 0}.nav__links a:not(.nav__cta):after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform var(--dur) var(--ease-out)}.nav__links a:not(.nav__cta):hover:after{transform:scaleX(1);transform-origin:left}.nav__cta{border:1px solid currentColor;padding:.5rem 1rem!important;border-radius:100px;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.nav__cta:hover{background:#fff;color:#000}.theme-toggle{background:none;border:none;color:inherit;padding:.35rem;display:inline-flex;align-items:center;justify-content:center;line-height:0}.theme-toggle svg{width:18px;height:18px}.theme-toggle .ic-moon{display:none}.theme-toggle .ic-sun{display:block}[data-theme=light] .theme-toggle .ic-sun{display:none}[data-theme=light] .theme-toggle .ic-moon{display:block}.theme-toggle svg{transition:transform var(--dur) var(--ease-out)}.theme-toggle:hover svg{transform:rotate(35deg)}@media (max-width: 640px){.nav__links a:not(.nav__cta):not([href="#travaux"]){display:none}}.hero{min-height:100vh;min-height:100svh;padding:calc(var(--space-8) + 2vw) var(--gutter) var(--space-6);display:flex;flex-direction:column;justify-content:space-between;position:relative}.hero__meta{display:flex;justify-content:space-between;border-top:1px solid var(--hairline);padding-top:var(--space-2)}.kicker--right{color:var(--text-faint)}.hero__title{font-family:var(--font-display);font-weight:500;font-size:var(--step-5);line-height:var(--lh-tight);letter-spacing:var(--tracking-display);text-transform:uppercase;color:var(--text-hi);margin:auto 0;padding:var(--space-5) 0}.hero__line{display:block}.hero__word{font-family:var(--font-serif);font-weight:400;font-style:italic;text-transform:none;color:var(--accent);letter-spacing:-.01em;display:inline-block;will-change:transform}.hero__foot{display:grid;grid-template-columns:1fr auto;align-items:end;gap:var(--space-4);border-top:1px solid var(--hairline);padding-top:var(--space-3)}.hero__lede{max-width:46ch;color:var(--text);font-size:var(--step-1);line-height:1.4}@media (max-width: 640px){.hero__foot{grid-template-columns:1fr}}.scroll-hint{display:inline-flex;flex-direction:column;align-items:center;gap:.75rem;font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-mut)}.scroll-hint__rail{width:1px;height:54px;background:var(--hairline);position:relative;overflow:hidden}.scroll-hint__bead{position:absolute;top:0;left:0;width:1px;height:18px;background:var(--accent);animation:bead 2.4s var(--ease-inout) infinite}@keyframes bead{0%{transform:translateY(-100%)}60%,to{transform:translateY(300%)}}@media (prefers-reduced-motion: reduce){.nav__mark,.scroll-hint__bead{animation:none}.theme-toggle:hover svg{transform:none}}.works{padding:var(--space-8) 0 var(--space-7)}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(2.5rem,5vw,6rem) var(--gutter);padding:0 var(--gutter);align-items:start}.tile--lg,.tile--md{grid-column:span 6}.tile--sm{grid-column:span 5}.tile--offset{grid-column:8 / span 5}.tile--raise{margin-top:calc(var(--space-7) * -1)}@media (max-width: 900px){.grid{gap:3.5rem var(--gutter)}.tile--lg,.tile--md,.tile--sm,.tile--offset{grid-column:span 12}.tile--raise{margin-top:0}}.tile__link{display:block;position:relative}.tile__media{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border)}.tile__canvas{width:100%;height:auto;aspect-ratio:var(--ar, 4 / 5);object-fit:cover;transition:transform var(--dur-slow) var(--ease-out),filter var(--dur) var(--ease-out);filter:saturate(.9) contrast(1.02);transform:scale(1.005)}.tile--lg .tile__canvas{--ar: 4 / 5}.tile--md .tile__canvas{--ar: 14 / 11}.tile--sm .tile__canvas{--ar: 6 / 7}.gl-active .tile__media{background:transparent}.gl-active .tile__canvas{opacity:0}.tile__link:hover .tile__canvas{transform:scale(1.03);filter:saturate(1) contrast(1.05)}.gl-active .tile__link:hover .tile__canvas{transform:none}.tile__cap{position:absolute;left:0;bottom:0;width:100%;padding:var(--space-3);display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;background:var(--tile-scrim);z-index:2;pointer-events:none}.tile__name{font-family:var(--font-display);font-weight:500;font-size:var(--step-2);line-height:1;letter-spacing:var(--tracking-display);text-transform:uppercase;color:var(--text-hi)}.tile__client{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-mut);text-align:right}.tile__tag{display:inline-block;margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-faint)}.tile__link:hover .tile__tag{color:var(--accent)}.manifesto{padding:var(--space-7) 0 var(--space-8);background:var(--bg-alt);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.principles{padding:0 var(--gutter);display:grid;gap:0}.principle{display:grid;grid-template-columns:4rem 1fr;gap:var(--space-4);align-items:baseline;padding:var(--space-5) 0;border-top:1px solid var(--hairline)}.principle:last-child{border-bottom:1px solid var(--hairline)}.principle__num{font-family:var(--font-mono);font-size:var(--step-0);color:var(--accent);text-transform:uppercase}.principle__text{font-family:var(--font-serif);font-weight:400;font-size:var(--step-3);line-height:1.18;color:var(--text-hi);max-width:22ch}.principle__text em{color:var(--accent);font-style:italic}.principle:nth-child(2n){padding-left:clamp(0px,12vw,16rem)}@media (max-width: 720px){.principle{grid-template-columns:2.5rem 1fr;gap:var(--space-3)}.principle:nth-child(2n){padding-left:0}}.services{padding:var(--space-8) 0 var(--space-7)}.accordion{padding:0 var(--gutter)}.accordion__item{border-top:1px solid var(--hairline)}.accordion__item:last-child{border-bottom:1px solid var(--hairline)}.accordion__head{width:100%;background:none;border:none;color:inherit;font:inherit;text-align:left;display:grid;grid-template-columns:3.5rem 1fr auto;align-items:center;gap:var(--space-3);padding:clamp(1.4rem,3vw,2.6rem) 0}.accordion__idx{font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-faint)}.accordion__title{font-family:var(--font-display);font-weight:500;font-size:var(--step-2);line-height:1;letter-spacing:var(--tracking-display);text-transform:uppercase;color:var(--text-hi);transition:color var(--dur-fast) var(--ease-out),transform var(--dur) var(--ease-out)}.accordion__head:hover .accordion__title{color:var(--accent);transform:translate(.5rem)}.accordion__sign{position:relative;width:18px;height:18px;flex-shrink:0}.accordion__sign:before,.accordion__sign:after{content:"";position:absolute;top:50%;left:50%;width:16px;height:1.5px;background:var(--text-mut);transform:translate(-50%,-50%);transition:transform var(--dur) var(--ease-out),background var(--dur-fast)}.accordion__sign:after{transform:translate(-50%,-50%) rotate(90deg)}.is-open .accordion__sign:after{transform:translate(-50%,-50%) rotate(0)}.is-open .accordion__sign:before,.is-open .accordion__sign:after{background:var(--accent)}.accordion__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur) var(--ease-inout)}.is-open .accordion__panel{grid-template-rows:1fr}.accordion__inner{overflow:hidden;display:grid;grid-template-columns:3.5rem minmax(0,52ch) 1fr;gap:var(--space-3);opacity:0;transition:opacity var(--dur) var(--ease-out)}.is-open .accordion__inner{opacity:1;padding-bottom:var(--space-5)}.accordion__inner p{grid-column:2;color:var(--text)}.accordion__list{grid-column:3;font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-mut);display:flex;flex-direction:column;gap:.5rem;text-align:right}@media (max-width: 720px){.accordion__head{grid-template-columns:2rem 1fr auto}.accordion__inner{grid-template-columns:1fr}.accordion__inner p,.accordion__list{grid-column:1;text-align:left}.accordion__head:hover .accordion__title{transform:none}}.contact{padding:var(--space-8) var(--gutter) var(--space-6);position:relative}.contact__index{display:block;color:var(--accent);margin-bottom:var(--space-4)}.contact__over{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-mut);margin-bottom:var(--space-3)}.contact__title{font-family:var(--font-display);font-weight:500;font-size:var(--step-5);line-height:var(--lh-tight);letter-spacing:var(--tracking-display);text-transform:uppercase;color:var(--text-hi)}.contact__line{display:block}.contact__word{font-family:var(--font-serif);font-style:italic;text-transform:none;color:var(--accent);display:inline-block;will-change:transform}.contact__mail{display:inline-block;margin:var(--space-5) 0 var(--space-7);font-family:var(--font-display);font-weight:400;font-size:var(--step-2);letter-spacing:.01em;color:var(--text-hi);border-bottom:1px solid var(--hairline);padding-bottom:.3rem;transition:color var(--dur-fast),border-color var(--dur-fast)}.contact__mail:hover{color:var(--accent);border-color:var(--accent)}.contact__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);border-top:1px solid var(--hairline);padding-top:var(--space-4)}.contact__label{display:block;font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-faint);margin-bottom:var(--space-2)}.contact__col p,.contact__social{color:var(--text);line-height:1.7}.contact__social a{transition:color var(--dur-fast)}.contact__social a:hover{color:var(--accent)}@media (max-width: 720px){.contact__grid{grid-template-columns:1fr;gap:var(--space-3)}}.footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:var(--space-4) var(--gutter) var(--space-5);border-top:1px solid var(--hairline);font-family:var(--font-mono);font-size:var(--step--1);color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.footer a:hover{color:var(--accent)}.cursor{position:fixed;top:0;left:0;z-index:var(--z-cursor);pointer-events:none;mix-blend-mode:difference;opacity:0;transition:opacity var(--dur) var(--ease-out)}.has-cursor .cursor{opacity:1}.cursor__dot{position:absolute;width:7px;height:7px;background:#fff;border-radius:50%;transform:translate(-50%,-50%)}.cursor__ring{position:absolute;width:40px;height:40px;border:1px solid rgba(255,255,255,.6);border-radius:50%;transform:translate(-50%,-50%) scale(1);transition:width var(--dur) var(--ease-out),height var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out),background var(--dur) var(--ease-out)}.has-cursor.cursor-hover .cursor__ring{width:64px;height:64px;border-color:#ffffffe6}.has-cursor.cursor-view .cursor__ring{width:78px;height:78px;background:var(--accent);border-color:transparent}.cursor__label{position:absolute;transform:translate(-50%,-50%);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:#fff;opacity:0;transition:opacity var(--dur-fast) var(--ease-out);white-space:nowrap}.cursor-view .cursor__label{opacity:1}.gl{position:fixed;inset:0;width:100vw;height:100vh;z-index:var(--z-gl);pointer-events:none;opacity:0;transition:opacity var(--dur-slow) var(--ease-out)}.gl-active .gl{opacity:1}.js [data-reveal]{opacity:0;transform:translateY(28px)}@media (prefers-reduced-motion: reduce){.js [data-reveal]{opacity:1;transform:none}}
