/* HAUT · discipline pages · shared layer (tokens, header, type, footer, motion primitives) */
:root{
  --bg:#0A0A0B;
  --bg-2:#111113;
  --ink:#ECE8E1;
  --ink-2:#A9A59E;
  --ink-3:#6E6B66;
  --line:rgba(236,232,225,.12);
  --champagne:#C9B894;
  --serif:"Cormorant Garamond","Didot","Bodoni 72",Georgia,serif;
  --sans:"Manrope","Helvetica Neue",Arial,sans-serif;
  --gutter:clamp(20px,4vw,56px);
  --ease:cubic-bezier(.22,1,.36,1);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.7 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
img,video,svg{display:block;max-width:100%}
a{color:inherit}
:focus-visible{outline:1px solid var(--champagne);outline-offset:4px}
html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}
.label{font:500 10.5px/1.4 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2)}
.wrap{max-width:1440px;margin:0 auto;padding:0 var(--gutter)}
em{font-style:italic;color:var(--champagne)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ——— header ——— */
.top{position:fixed;inset:0 0 auto 0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:calc(env(safe-area-inset-top,0px) + 22px) var(--gutter) 22px;border-bottom:1px solid transparent;
  transition:background .6s var(--ease),padding .6s var(--ease),border-color .6s var(--ease)}
.top.solid{background:rgba(10,10,11,.92);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);
  border-bottom-color:var(--line);padding-top:calc(env(safe-area-inset-top,0px) + 14px);padding-bottom:14px}
.brand{display:block;width:clamp(78px,8vw,104px);transition:width .6s var(--ease)}
.top.solid .brand{width:clamp(66px,6.5vw,86px)}
.brand img{width:100%;height:auto}
.top-right{display:flex;align-items:center;gap:clamp(14px,2.4vw,30px)}
.back{display:inline-flex;align-items:center;gap:10px;text-decoration:none;transition:color .45s var(--ease)}
.back svg{width:18px;height:18px;transition:transform .5s var(--ease)}
.back:hover{color:var(--champagne)}.back:hover svg{transform:translateX(-4px)}
@media (max-width:560px){.back span{display:none}}

/* liquid glass language switch (links on these pages) */
.lang{position:relative;display:flex;align-items:center;padding:4px;border-radius:999px;isolation:isolate;
  background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.03));border:1px solid rgba(255,255,255,.16);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),inset 0 -1px 1px rgba(255,255,255,.06),0 10px 34px rgba(0,0,0,.45);
  -webkit-backdrop-filter:blur(16px) saturate(170%);backdrop-filter:blur(16px) saturate(170%)}
.lang a{position:relative;z-index:2;width:46px;height:32px;border-radius:999px;display:grid;place-items:center;text-decoration:none;
  font:500 10.5px/1 var(--sans);letter-spacing:.2em;padding-left:.2em;color:var(--ink-2);transition:color .5s var(--ease)}
.lang a[aria-current="true"]{color:var(--ink)}
.lang-thumb{position:absolute;z-index:1;top:4px;left:4px;width:46px;height:32px;border-radius:999px;transition:transform .55s var(--ease);
  background:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.08) 60%,rgba(255,255,255,.14));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -2px 3px rgba(255,255,255,.10),0 4px 14px rgba(0,0,0,.35)}
.lang[data-on="en"] .lang-thumb{transform:translateX(46px)}

/* ——— breadcrumb + hero shared bits ——— */
.crumbs{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0;padding:0;list-style:none}
.crumbs li{display:flex;align-items:center;gap:10px}
.crumbs li + li::before{content:"";width:14px;height:1px;background:var(--ink-3)}
.crumbs a{text-decoration:none;transition:color .4s var(--ease)}
.crumbs a:hover{color:var(--champagne)}
.crumbs [aria-current]{color:var(--ink)}
.kicker{display:flex;align-items:center;gap:14px}
.kicker b{font:300 15px/1 var(--serif);letter-spacing:.06em;color:var(--champagne);font-weight:400}

.lede{font:300 clamp(22px,2.3vw,32px)/1.36 var(--serif);max-width:34ch;margin:0;text-wrap:pretty}
.prose p{margin:0 0 1.1em;color:var(--ink-2);max-width:62ch}
.prose p:last-child{margin-bottom:0}
.h2{margin:0;font:300 clamp(34px,4.4vw,64px)/1.06 var(--serif);letter-spacing:-.012em;text-wrap:balance;max-width:20ch}

/* ——— typewriter (same voice as the home slogan) ——— */
.js [data-type]:not(.tw){visibility:hidden}
.tw .w{display:inline-block}
.tw .c{opacity:0;filter:blur(3px);transition:opacity .32s var(--ease),filter .32s var(--ease)}
.tw .c.on{opacity:1;filter:blur(0)}
.caret{display:inline-block;width:2px;height:.82em;margin-left:.06em;vertical-align:-.06em;background:var(--champagne);
  animation:caret 1s steps(1) infinite;transition:opacity .6s var(--ease)}
.caret.out{opacity:0}
@keyframes caret{50%{opacity:0}}

/* ——— reveal ——— */
.js [data-reveal]{opacity:0;transform:translate3d(0,28px,0);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
.js [data-reveal].in{opacity:1;transform:none}
.js [data-reveal="fade"]{transform:none}

/* ——— closing: invitation + other disciplines ——— */
.invite{padding:clamp(100px,13vw,180px) var(--gutter);text-align:center;display:grid;justify-items:center;gap:26px;border-top:1px solid var(--line);
  background:radial-gradient(60% 80% at 50% 0%,rgba(201,184,148,.08),transparent 70%),var(--bg-2)}
.invite h2{margin:0;font:300 clamp(34px,4.8vw,70px)/1.06 var(--serif);max-width:18ch;text-wrap:balance}
.invite p{margin:0;color:var(--ink-2);max-width:48ch}
.cta{display:inline-flex;align-items:center;gap:14px;height:54px;padding:0 6px 0 28px;border-radius:999px;border:1px solid rgba(201,184,148,.6);color:var(--champagne);
  text-decoration:none;font:500 11px var(--sans);letter-spacing:.24em;text-transform:uppercase;transition:background .5s var(--ease),color .5s var(--ease)}
.cta svg{width:40px;height:40px;padding:10px;border-radius:50%;background:rgba(201,184,148,.12);transition:transform .6s var(--ease),background .5s var(--ease)}
.cta:hover{background:var(--champagne);color:#111}
.cta:hover svg{background:rgba(0,0,0,.14);transform:translateX(3px)}
.mail{font:300 clamp(20px,2.2vw,28px)/1.2 var(--serif);text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:4px;transition:color .4s var(--ease),border-color .4s var(--ease)}
.mail:hover{color:var(--champagne);border-color:var(--champagne)}

.others{padding:clamp(80px,10vw,140px) 0;border-top:1px solid var(--line)}
.others ol{list-style:none;margin:28px 0 0;padding:0;border-top:1px solid var(--line)}
.others li{border-bottom:1px solid var(--line);position:relative}
.others a{display:grid;grid-template-columns:4ch minmax(0,1fr) auto;gap:24px;align-items:baseline;padding:24px 0;text-decoration:none}
.others .n{font:400 13px var(--sans);letter-spacing:.14em;color:var(--ink-3);font-variant-numeric:tabular-nums}
.others .t{font:300 clamp(26px,3.2vw,46px)/1.1 var(--serif);transition:transform .8s var(--ease),color .6s}
.others svg{width:26px;height:26px;color:var(--ink-3);transition:transform .6s var(--ease),color .5s}
.others li::before{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--ink);transform:scaleX(0);transform-origin:0 50%;transition:transform 1s var(--ease)}
.others li:hover::before{transform:scaleX(1)}
.others li:hover .t{transform:translateX(14px);color:var(--champagne)}
.others li:hover svg{transform:translateX(6px);color:var(--champagne)}

/* ——— footer ——— */
.foot{padding:34px var(--gutter) calc(env(safe-area-inset-bottom,0px) + 30px);border-top:1px solid var(--line);background:var(--bg-2)}
.foot-row{max-width:1440px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:16px 28px;flex-wrap:wrap;color:var(--ink-3)}
.foot-links{display:flex;gap:22px;align-items:center}
.foot-links a{text-decoration:none;transition:color .4s}
.foot-links a:hover{color:var(--ink)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js [data-type]:not(.tw){visibility:visible}
  .js [data-reveal]{opacity:1;transform:none}
}
