/* User-facing v2: effect precision pass over the preserved v1 layout. */
html { --quart-out:linear(0,.3439 10%,.5904 20%,.7599 30%,.8704 40%,.9375 50%,.9744 60%,.9919 70%,.9984 80%,.9999 90%,1); }
html { scroll-behavior:auto; }
/* Keep the classic scrollbar's space during Lenis' intro/modal scroll lock.
 * `clip` drops even a stable gutter; `hidden` locks input while retaining it. */
@supports (scrollbar-gutter:stable) {
  html { scrollbar-gutter:stable; }
  html.lenis:not(.lenis-autoToggle).lenis-stopped { overflow:hidden; }
}
.hero-sticky { position:absolute; top:0; height:100%; min-height:100svh; z-index:auto; }
.hero-copy { top:50svh; }
.visual-layer { z-index:2; }
.mesh-copy { color:transparent!important; text-shadow:none!important; }
.mesh-copy::selection { color:var(--text); }
.motion-ready .reveal-line { opacity:0; transform:translateY(100%); }
.motion-ready [data-reveal]:not(.mesh-copy) { opacity:0; }
.motion-ready .reveal-line.is-seen { opacity:1; transform:none; }
.motion-ready .motion-link.is-seen { opacity:1; }
.motion-link { position:relative; display:inline-grid; gap:0; padding:18px 1.25vw; margin-left:-1.25vw; overflow:visible; font-size:clamp(12px,1.25vw,18px); }
.link-block { display:inline-grid;grid-template-columns:5vw max-content;gap:1.25vw;padding-right:1.25vw;align-items:center;position:relative;overflow:hidden; }
.link-lines { display:grid;grid-column:1;grid-row:1; }
.motion-link .link-block .link-rule { position:absolute; width:100%; left:0; top:50%; margin-top:-.5px; transform:none; transition:none; pointer-events:none; }
.motion-link:hover .link-rule,.motion-link:focus-visible .link-rule { width:100%;background:#d9d7d499; }
.motion-link .rule-first { clip-path:inset(0 100% 0 0); }
.motion-link .rule-last { clip-path:inset(0 100% 0 0); }
.motion-link.is-seen .rule-last { opacity:1;transform:translateX(var(--line-rest,0px)); transition:transform var(--hover-return-time,1.1s) var(--quart-out),opacity .3s; }
.link-text-mask { display:block;grid-column:2;grid-row:1;position:relative;overflow:hidden;margin:0;padding:.1em 0; }
.link-text { display:block; transition:transform var(--hover-time,.7s) var(--quart-out); }
.link-text-clone { position:absolute; left:0; top:.1em; transform:translateY(130%); }
.motion-link .link-character { display:inline-block; opacity:0; }
.link-stroke { position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:0;color:var(--text); }
.link-stroke path { fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;vector-effect:non-scaling-stroke; }
.motion-link.line-morph-ready .link-stroke { opacity:1; }
.motion-link.line-morph-ready .link-rule { visibility:hidden; }
.motion-link:hover .link-text-first,.motion-link:focus-visible .link-text-first,.motion-link.link-demo .link-text-first { transform:translateY(-130%); }
.motion-link:hover .link-text-clone,.motion-link:focus-visible .link-text-clone,.motion-link.link-demo .link-text-clone { transform:translateY(0); }
.roll-link { position:relative;display:inline-block; }
.roll-mask { display:inline-block;position:relative;overflow:hidden;vertical-align:middle; }
.roll-first,.roll-clone { display:block;transition:transform .7s var(--quart-out); }
.roll-clone { position:absolute;left:0;top:0;transform:translateY(130%); }
.roll-link:hover .roll-first,.roll-link:focus-visible .roll-first { transform:translateY(-110%); }
.roll-link:hover .roll-clone,.roll-link:focus-visible .roll-clone { transform:translateY(0); }
.roll-link::after { content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .7s var(--quart-out); }
.roll-link:hover::after,.roll-link:focus-visible::after { transform:scaleX(1); }
#menu-toggle .nav-line { transform:scaleX(0);transform-origin:left;transition:transform .7s var(--quart-out); }
#menu-toggle:hover .nav-line,#menu-toggle:focus-visible .nav-line { transform:scaleX(1); }
.menu-dot { position:absolute;left:-12px;top:4px;width:4px;height:4px;border:1px solid currentColor;border-radius:50%;transition:transform .7s var(--quart-out),opacity .35s; }
#menu-toggle:hover .menu-dot,#menu-toggle:focus-visible .menu-dot { transform:translateY(300%);opacity:0; }
.menu-dot-after { opacity:0;transform:translateY(-300%); }
#menu-toggle:hover .menu-dot-after,#menu-toggle:focus-visible .menu-dot-after { opacity:1;transform:translateY(0); }
.project-track { position:relative; }
.project-list { padding:0 5vw; }
.project-number { left:0;top:var(--number-top,calc(100% - 6.25vw - 32px));bottom:auto;font-size:clamp(11px,1.125vw,20px);line-height:1;z-index:4; }
.edge-info { grid-template-columns:1fr auto; }
.motion-sticky .project-row { position:sticky; top:0; }
.motion-sticky .project-row:last-child { position:relative; }
.motion-sticky .project-copy,.motion-sticky .project-label,.motion-sticky .project-number { visibility:visible; }
.project-row { border-top:0; }
.project-row::before { content:"";position:absolute;left:0;right:0;top:0;height:1px;background:#d9d7d42b;z-index:5; }
.intro { animation:none; }
.intro.is-leaving { transition:opacity 3s linear(0,.004 10%,.032 20%,.108 30%,.256 40%,.5 50%,.744 60%,.892 70%,.968 80%,.996 90%,1); }
.navigation { opacity:0; transition:none; }
.navigation::backdrop { background:transparent; }
.navigation nav { position:relative; z-index:2; }
.nav-visual { position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:3; }
.nav-top,.nav-bottom { position:relative;z-index:4; }
.navigation:not(.nav-gl) .nav-visual { display:none; }
.navigation.nav-gl .nav-text-first { transform:none!important; }
.navigation.nav-gl .nav-text-clone { visibility:hidden; }
.navigation nav a { position:relative; display:flex; align-items:center; gap:2vw; transform:none!important; }
.nav-circle { flex:none; width:8px; height:8px; border:1px solid currentColor; border-radius:50%; transform:scale(0); }
.nav-text-mask { position:relative;display:block;overflow:hidden; }
.nav-text { display:block;transition:transform .7s cubic-bezier(.25,1,.5,1); }
.nav-text-clone { position:absolute;top:0;left:0;transform:translateY(130%); }
.navigation nav a:hover .nav-text-first { transform:translateY(-130%); }
.navigation nav a:hover .nav-text-clone { transform:translateY(0); }
.navigation nav a::after { content:"";position:absolute;height:1px;background:currentColor;left:calc(2vw + 8px);bottom:0;right:0;transform:scaleX(0);transform-origin:left;transition:transform .7s var(--quart-out); }
.navigation nav a:hover::after,.navigation nav a:focus-visible::after { transform:scaleX(1); }
.navigation nav a:hover { color:var(--text); }
.preview-tools { max-width:90vw; font-size:7px; gap:10px; }
.preview-tools button { font-size:8px; }
.preview-tools a { border-bottom:1px solid currentColor;padding:4px 0; }
.effect-checks { position:fixed;right:5vw;bottom:46px;z-index:50;background:#0b0d09e8;border:1px solid #d9d7d42b; padding:9px 12px;font:10px Arial,sans-serif; }
.effect-checks summary { cursor:pointer; }
.effect-checks div { display:flex;flex-wrap:wrap;gap:14px;padding-top:8px; }
.effect-checks button { font:10px Arial,sans-serif;padding:8px 0; }
.motion-paused .link-character { opacity:1!important; }
.motion-paused .motion-link .rule-first { animation:none;clip-path:inset(0 0 0 100%); }
.motion-paused .motion-link .rule-last { animation:none;clip-path:inset(0 0 0 0);transform:translateX(var(--line-rest,0px)); }
.motion-paused .reveal-line { opacity:1!important;transform:none!important; }
@media(max-width:767px) {
  .hero { height:max(100svh,135vw); }
  .hero-sticky { height:100%; }
  .motion-sticky .project-row { position:relative;top:auto!important; }
  .project-list { padding:0 10vw;transform:none!important; }
  .motion-link { padding:18px 4vw;margin-left:-4vw; }
  .link-block { grid-template-columns:19.9004975vw max-content;gap:4.9751244vw;padding-right:4.9751244vw; }
  .project-number { font-size:2.985075vw; }
  .preview-tools { right:5vw;gap:7px;padding:0 5px; }
  .preview-tools button { font-size:7px; }
  .preview-tools>span { display:none; }
  .effect-checks { right:5vw;max-width:90vw; }
  /* Mobile: static line + label; no tap outline/roll or delayed activation. */
  .motion-link.line-morph-ready .link-stroke { display:none; }
  .motion-link.line-morph-ready .link-rule { visibility:visible; }
  .motion-link.is-seen .rule-last { clip-path:inset(0);transform:translateX(var(--line-rest,0px));transition:none; }
  .motion-link .link-text-first,.roll-link .roll-first { transform:none!important;transition:none; }
  .motion-link .link-text-clone,.roll-link .roll-clone { display:none; }
  .roll-link::after,.navigation nav a::after { display:none; }
  .navigation.nav-gl .nav-visual { display:none; }
  .navigation .nav-text-first { color:var(--text)!important;transform:none!important;transition:none; }
  .navigation .nav-text-clone { display:none; }
  /* Touch autofocus must not resemble an outlined button. Tab restores the
   * normal keyboard focus indicator immediately, without removing focus. */
  .navigation.pointer-focus #menu-close:focus { outline:none; }
}
@media(prefers-reduced-motion:reduce) {
  .reveal-line,.link-character { opacity:1!important;transform:none!important; }
  .mesh-copy { color:transparent!important; }
  .roll-first,.roll-clone,.link-text,.rule-last,.nav-line,.menu-dot { transition:none!important; }
}
