/* AImperator manifesto: jury refinement layer (loads after manifesto.css and manifesto-scenes.css).
   Scope: meta-label scale, heading rhythm, manifesto right column, process map, hero action, mobile collisions. */

:root { --gold-ink: #7d6a43; --ink-muted: #5f625a; --line-soft: #34362f; }

/* ---------- 1. Meta scale: 11px labels -> 12px with tracking, eyebrows in tracked caps ---------- */
.hero-topline, .experience-top, .experience-bottom, .manifesto-top, .creative-top, .creative-bottom,
.reel-sources, .header-note, .system-return, .synthesis-footnote, footer, .step-number, .service-hint,
.control-status, .motion-toggle, .hero-bottom, .hero-film-credit, .object-caption, .project-detail summary { font-size: 12px; letter-spacing: .02em; }
.hero-topline, .experience-top, .manifesto-top, .creative-top { text-transform: uppercase; letter-spacing: .09em; font-size: 11.5px; }
.manifesto-top a, .manifesto-count { letter-spacing: .09em; }
.brand-formula, .navigation-top .brand-formula { font-size: 13px; letter-spacing: .1em; }
.step-number { letter-spacing: .08em; }
.header-actions { font-size: 13px; }
.header-note { max-width: none; white-space: nowrap; }
.motion-toggle { font-size: 12px; }
.human-role p, .machine-role p, .service-content p, .principle p, .experience-copy p, .hero-description, .creative-copy p, .contact p:not(.brand-formula) { font-size: 15px; }
.hero-description { font-size: 15px; max-width: 380px; }
.section-intro > p { font-size: 15px; }

/* ---------- 2. Heading rhythm: break the sans+serif formula on three scenes ---------- */
.principle h2 { font-family: var(--serif); letter-spacing: -.015em; }
.principle h2 em { color: var(--gold); }
.principle h2.brand-formula { font-family: var(--sans); letter-spacing: -.03em; }
.project-copy h2 { font-family: var(--sans); letter-spacing: -.035em; }
.project-copy h2 span { display: block; color: #4f524a; }

/* ---------- 3. Hero: clearer action, lighter scrim, parallax and a settled intro ---------- */
.hero-film::after { background: linear-gradient(90deg, rgba(8,15,13,.84) 0%, rgba(8,15,13,.56) 40%, rgba(8,15,13,.1) 100%), linear-gradient(0deg, rgba(8,15,13,.72), transparent 48%); }
.scroll-motion .hero-film img, .scroll-motion .hero-film video { transform: translate3d(0, calc(var(--hero-progress, 0) * 90px), 0) scale(1.06); }
@keyframes hero-settle { from { transform: scale(1.09); } to { transform: scale(1); } }
@keyframes hero-fade { from { opacity: 0; } to { opacity: 1; } }
.intro-running .hero-film { animation: hero-settle 2.4s var(--ease) both; }
.intro-running .hero-topline { animation: hero-fade .9s .9s both; }
.intro-running .hero-bottom { animation: hero-fade .9s 1.2s both; }
.intro-running .hero-actions { animation: entrance .65s .7s var(--ease) both; }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 22px 44px; margin-top: 34px; }
.hero-cta { margin-top: 0; }
.hero-cta > span:first-child { font-size: 14px; letter-spacing: .02em; }
.hero-cta .arrow-disc { background: var(--marble); color: var(--carbon); border-color: var(--marble); }
.round-link.hero-cta:hover .arrow-disc { background: var(--gold); border-color: var(--gold); color: var(--carbon); transform: rotate(-35deg); }
.hero-secondary { display: inline-flex; align-items: center; gap: 14px; min-height: 44px; font-size: 12px; letter-spacing: .04em; color: #d9d9d0; border-bottom: 1px solid #e9e7df40; transition: color .25s, border-color .25s; }
.hero-secondary:hover { color: white; border-color: var(--gold); }
.hero-secondary .arrow { width: 18px; height: 18px; }
.hero-bottom a { min-height: 44px; }

/* ---------- 4. "20": cover the glyph overhang created by negative tracking ---------- */
.experience-number { padding-right: .05em; }
.number-outline { -webkit-text-stroke-width: 1.35px; }
.text-link { min-height: 44px; align-items: center; padding-top: 9px; }

/* ---------- 5. Creative scene: scrim under the headline ---------- */
.creative-film::after { background: linear-gradient(90deg, rgba(7,13,11,.84) 0%, rgba(7,13,11,.58) 38%, rgba(7,13,11,.18) 72%, rgba(7,13,11,.06) 100%), linear-gradient(0deg, rgba(7,13,11,.85), rgba(7,13,11,.18) 60%); }
.creative-copy { position: relative; }

/* ---------- 6. Manifesto pin: index column and orbiting emblem ---------- */
.manifesto-aside { display: none; }
.scroll-motion .manifesto-body { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(280px, 1fr); gap: 0 56px; align-items: stretch; }
.scroll-motion .manifesto-statements { position: relative; min-height: 0; flex: none; }
.scroll-motion .principle h2 { font-size: clamp(46px, 7vw, 112px); max-width: none; }
.scroll-motion .manifesto-aside { display: flex; flex-direction: column; justify-content: space-between; gap: 32px; position: relative; padding: 48px 0 32px 48px; border-left: 1px solid var(--line-soft); min-height: 0; }
.manifesto-index { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.manifesto-index li { display: flex; gap: 20px; align-items: baseline; font-family: var(--serif); font-size: clamp(22px, 2vw, 30px); line-height: 1.2; color: #8c8f87; transition: color .4s, transform .55s var(--ease); }
.manifesto-index .index-number { font-family: var(--sans); font-size: 12px; letter-spacing: .08em; color: #7d8078; min-width: 28px; transition: color .4s; }
.manifesto-index li.is-active { color: var(--marble); }
.manifesto-index li.is-active .index-number { color: var(--gold); }
.manifesto-emblem { position: relative; width: min(40vh, 380px); aspect-ratio: 1; align-self: flex-end; margin: 0 4% 18px 0; }
.emblem-orbit { position: absolute; inset: 0; border: 1px solid #3a3d36; border-radius: 50%; transform: rotate(calc(var(--manifesto-progress, 0) * 170deg - 28deg)) scaleX(.64); transition: transform .25s linear; }
.emblem-orbit-inner { inset: 15%; border-color: #4a4d45; transform: rotate(calc(var(--manifesto-progress, 0) * -240deg + 52deg)) scaleX(.64); }
.emblem-orbit-inner::after { content: ''; position: absolute; top: -4px; left: calc(50% - 4px); width: 8px; height: 8px; border-radius: 50%; background: var(--gold); transform: scaleX(1.56); box-shadow: 0 0 14px rgba(197,176,140,.7); }
.emblem-mark { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--serif); font-size: clamp(120px, 13vw, 210px); letter-spacing: -.05em; line-height: 1; color: #33352f; }
.emblem-mark > span { grid-area: 1 / 1; opacity: 0; transform: translateY(10%); transition: opacity .5s, transform .7s var(--ease); }
.manifesto-pin[data-slide="1"] .emblem-mark > span:nth-child(1), .manifesto-pin[data-slide="2"] .emblem-mark > span:nth-child(2), .manifesto-pin[data-slide="3"] .emblem-mark > span:nth-child(3), .manifesto-pin[data-slide="4"] .emblem-mark > span:nth-child(4), .manifesto-pin[data-slide="5"] .emblem-mark > span:nth-child(5) { opacity: 1; transform: none; }
.manifesto-pin:not([data-slide]) .emblem-mark > span:first-child { opacity: 1; transform: none; }

/* ---------- 7. Process map replaces the placeholder stack ---------- */
.project-scene { grid-template-columns: 1fr 1fr; min-height: 0; background: var(--carbon); color: var(--carbon); border-top: 1px solid var(--line); }
.process-panel { background: var(--carbon); color: var(--marble); padding: 96px 5vw; display: grid; place-items: center; }
.process-map { position: relative; width: 100%; max-width: 470px; height: 500px; }
.process-track, .process-return, .process-dot { position: absolute; pointer-events: none; }
.process-track { left: 22px; top: 12.5%; bottom: 12.5%; width: 1px; background: #4a4d45; }
.process-return { left: 22px; right: 10px; top: 12.5%; bottom: 12.5%; border: 1px dashed #3f423b; border-left: 0; }
.process-return::before, .process-return::after { content: ''; position: absolute; width: 7px; height: 7px; border-top: 1px solid #6b6e64; border-right: 1px solid #6b6e64; }
.process-return::before { right: -4px; top: 50%; transform: translateY(-50%) rotate(-45deg); }
.process-return::after { left: 50%; top: -4px; transform: translateX(-50%) rotate(-135deg); }
.process-dot { left: 22px; top: 12.5%; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 5px rgba(197,176,140,.14), 0 0 22px rgba(197,176,140,.65); z-index: 2; }
.scroll-motion .process-dot { animation: process-travel 14s linear infinite; }
@keyframes process-travel {
  0%, 4% { left: 22px; top: 12.5%; }
  18%, 24% { top: 37.5%; }
  38%, 44% { top: 62.5%; }
  58%, 64% { left: 22px; top: 87.5%; }
  74% { left: calc(100% - 10px); top: 87.5%; }
  88% { left: calc(100% - 10px); top: 12.5%; }
  100% { left: 22px; top: 12.5%; }
}
.process-nodes { list-style: none; margin: 0; padding: 0; position: relative; z-index: 1; height: 100%; display: grid; grid-template-rows: repeat(4, 1fr); }
.process-node { display: grid; grid-template-columns: 44px 1fr; grid-template-rows: auto auto; column-gap: 24px; align-items: center; align-content: center; padding-right: 60px; }
.process-marker { grid-row: 1 / 3; width: 44px; height: 44px; border: 1px solid #4a4d45; border-radius: 50%; display: grid; place-items: center; background: var(--carbon); font-size: 12px; letter-spacing: .08em; color: var(--marble); box-shadow: inset 0 1px 0 rgba(233,231,223,.14), 0 0 0 0 transparent; }
.scroll-motion .process-marker { animation: process-live 14s linear infinite; animation-delay: calc(var(--i) * 2.8s); }
@keyframes process-live {
  0%, 18% { border-color: var(--gold); color: var(--gold); box-shadow: inset 0 1px 0 rgba(233,231,223,.14), 0 0 0 7px rgba(197,176,140,.12); }
  24%, 100% { border-color: #4a4d45; color: var(--marble); box-shadow: inset 0 1px 0 rgba(233,231,223,.14), 0 0 0 0 transparent; }
}
.process-title { font-family: var(--serif); font-size: clamp(26px, 2.3vw, 32px); line-height: 1.1; letter-spacing: -.01em; }
.process-role { font-size: 13px; line-height: 1.5; color: var(--muted); margin-top: 5px; }
.process-loop-label { position: absolute; right: -16px; top: 50%; transform: translateY(-50%); writing-mode: vertical-rl; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: #8a8d84; white-space: nowrap; background: var(--carbon); padding: 12px 0; line-height: 1; }
.project-copy { padding: 96px 6vw 96px 5vw; align-self: stretch; background: var(--marble); display: flex; flex-direction: column; justify-content: center; }
.eyebrow { font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--gold-ink); margin-bottom: 30px; }
.project-copy > p:not(.eyebrow) { font-size: 15px; line-height: 1.7; color: var(--ink-muted); margin-top: 26px; max-width: 460px; }
.project-links { display: flex; flex-wrap: wrap; gap: 8px 40px; margin-top: 24px; }
.project-links .text-link { color: var(--carbon); border-color: #a6aa9d; }

/* ---------- 8. Tap targets and header action ---------- */
footer a, .manifesto-top a, .reel-sources a, .service-content a { min-height: 44px; }
footer a { display: inline-flex; align-items: center; }
.service-content a { padding: 10px 0 8px; align-items: center; }
.manifesto-top a { display: inline-flex; align-items: center; }
.header-contact { min-height: 44px; }

/* ---------- Tablet ---------- */
@media (max-width: 1100px) {
  .scroll-motion .manifesto-body { gap: 0 36px; }
  .manifesto-emblem { width: min(28vh, 240px); }
  .process-panel, .project-copy { padding: 72px 5vw; }
  .process-map { height: 460px; }
}
@media (max-width: 900px) {
  .scroll-motion .manifesto-body { grid-template-columns: 1fr; }
  .scroll-motion .manifesto-aside { display: none; }
  .scroll-motion .principle h2 { font-size: clamp(46px, 9vw, 112px); }
}

/* ---------- Mobile ---------- */
@media (max-width: 700px) {
  .hero-topline, .experience-top, .manifesto-top, .creative-top { font-size: 10.5px; letter-spacing: .08em; }
  .hero-topline, .experience-top, .experience-bottom, .manifesto-top, .creative-top, .creative-bottom, .reel-sources, .system-return, .synthesis-footnote, footer, .step-number, .control-status, .hero-bottom, .hero-film-credit, .project-detail summary { font-size: 11px; }
  .brand-formula, .hero .intro-formula, .navigation-top .brand-formula { font-size: 12px; }
  .closing-formula { font-size: 11px; }
  .human-role p, .machine-role p { font-size: 12px; }
  .service-content p, .principle p, .experience-copy p, .hero-description, .creative-copy p, .contact p:not(.brand-formula), .section-intro > p { font-size: 14px; }
  .hero-cinema .hero-description { font-size: 14px; max-width: 300px; }

  /* Hero: pull the headline up, keep the film visible below the copy. */
  .hero-cinema { justify-content: flex-start; }
  .hero-cinema .hero-copy { margin: 44px 0 0; }
  .hero-cinema .hero-bottom { margin-top: auto; }
  .hero-actions { gap: 18px 28px; margin-top: 30px; }
  .hero-cta > span:first-child { font-size: 13px; }

  /* Header: keep the contact action as a 44px icon. */
  .header-contact { display: flex; min-width: 44px; justify-content: center; }
  .header-contact span { display: none; }
  .header-actions { gap: 10px; }

  /* Human x AI: ring first, roles below in flow (no overlap). */
  .synthesis-stage { height: auto; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; gap: 0 20px; align-items: start; padding-bottom: 0; }
  .synthesis-object { position: relative; grid-row: 1; grid-column: 1 / -1; width: calc(100% + 48px); margin-left: -24px; height: 330px; left: auto; top: auto; margin-bottom: 8px; }
  .human-role, .machine-role { width: auto; margin-top: 0; grid-row: 2; }
  .human-role { grid-column: 1; }
  .machine-role { grid-column: 2; }
  .hero-cinema .hero-bottom > a { min-height: 44px; }
  .hero-film::after { background: linear-gradient(90deg, rgba(8,15,13,.8), rgba(8,15,13,.4)), linear-gradient(0deg, rgba(8,15,13,.85), rgba(8,15,13,.1) 75%); }
  .scroll-motion .principle h2 { font-size: clamp(43px, 11vw, 70px); }
  .project-scene { grid-template-columns: 1fr; }
  .human-role h3 { font-size: 34px; }
  .machine-role h3 { font-size: 30px; }

  /* Contacts: smaller marble X inside the gutter, clear of the formula. */
  .contact { min-height: 0; padding-bottom: 350px; }
  .closing-symbol { width: 64%; height: 240px; right: 24px; bottom: 72px; top: auto; opacity: .6; }

  /* Process map. */
  .process-panel { padding: 56px 24px 60px; }
  .process-map { height: 420px; max-width: none; }
  .process-title { font-size: 24px; }
  .process-role { font-size: 12px; }
  .process-loop-label { font-size: 10px; right: -12px; }
  .project-copy { padding: 56px 24px 64px; }
  .eyebrow { margin-bottom: 22px; }
  .project-copy h2 { font-size: clamp(34px, 9.5vw, 42px); }
  .project-links { gap: 4px 28px; }

  /* Tap targets. */
  .text-link { padding-top: 9px; }
  footer { row-gap: 6px; }
}

/* ---------- 9. Owner edits: header without pause/label, unified arrow icon, footer ---------- */
.menu-toggle { min-width: 48px; justify-content: flex-end; }
.header-actions { gap: 28px; }
.arrow-ne { width: 16px; height: 16px; }
.navigation-arrow .arrow-ne { width: .48em; height: .48em; stroke-width: 1.1; }
.reel-sources .arrow-ne { color: var(--muted); }
.reel-sources a:hover .arrow-ne { color: inherit; }
.intro-running .hero-cta { animation: none; }
footer > a:first-of-type + a { margin-left: auto; }
@media (max-width: 700px) {
  footer { grid-template-columns: 1fr auto; row-gap: 14px; }
  footer > a:nth-last-child(2) { grid-row: 2; grid-column: 1 / -1; }
  footer > a:first-of-type + a { margin-left: 0; }
  .navigation-arrow .arrow-ne { width: .42em; height: .42em; }
}

/* ---------- 10. Art direction, round 2 ---------- */

/* Hero: phased first screen (TZ §15). AImperator → ЭКСПЕРТИЗА → × → ИИ → the film turns from still to motion → copy and action. */
.intro-formula span { display: inline-block; }
.formula-cross { color: var(--gold); margin: 0 .12em; }
.intro-running .intro-formula { animation: none; clip-path: none; }
@keyframes phase-in { from { opacity: 0; transform: translateY(14px); filter: blur(5px); } to { opacity: 1; transform: none; filter: none; } }
@keyframes phase-cross { from { opacity: 0; transform: scale(.2) rotate(-120deg); } 60% { opacity: 1; transform: scale(1.3) rotate(6deg); } to { opacity: 1; transform: none; } }
@keyframes hero-material { from { filter: grayscale(1) contrast(1.05) brightness(1.02); } to { filter: none; } }
@keyframes wordmark-in { from { opacity: 0; transform: translateX(-12px); } to { opacity: 1; transform: none; } }
.intro-running .masthead .wordmark img { animation: wordmark-in .8s .05s var(--ease) both; }
.intro-running .formula-human { animation: phase-in .7s .5s var(--ease) both; }
.intro-running .formula-cross { animation: phase-cross .65s 1.1s var(--ease) both; }
.intro-running .formula-machine { animation: phase-in .7s 1.4s var(--ease) both; }
.intro-running .human-line { animation: entrance .85s 1.75s var(--ease) both; }
.intro-running .machine-line { animation: entrance .75s 2.05s var(--ease) both; }
.intro-running .hero-film { animation: hero-settle 3.6s var(--ease) both, hero-material 2.2s 1.6s var(--ease) both; }
.intro-running .hero-description { animation: entrance .65s 2.55s var(--ease) both; }
.intro-running .hero-actions { animation: entrance .65s 2.75s var(--ease) both; }
.intro-running .hero-topline { animation: hero-fade .9s 2.95s both; }
.intro-running .hero-bottom { animation: hero-fade .9s 3.15s both; }
.hero .intro-formula { font-size: clamp(14px, 1.45vw, 22px); }

/* "20" (TZ §17): the caption walks лет → лет опыта → × ИИ → опыт × масштаб while the outline takes over the number. */
.experience-caption { position: absolute; right: 0; bottom: -1.35em; height: 1.2em; min-width: 9em; font-size: clamp(18px, 2.1vw, 30px); letter-spacing: -.01em; line-height: 1; font-weight: 400; text-align: right; white-space: nowrap; }
.experience-caption > span { position: absolute; right: 0; bottom: 0; opacity: 0; transform: translateY(.55em); transition: opacity .45s, transform .65s var(--ease); }
.experience-caption > span.is-active { opacity: 1; transform: none; }
.experience-caption em { font-family: var(--serif); font-size: 1.15em; color: var(--gold-ink); }

/* Services (TZ §20): six stages on an orbit around the AI core. Nodes and links light as the stages pass; the loop closes at the return line. */
.service-layout { display: grid; grid-template-columns: minmax(260px, 400px) minmax(0, 1fr); gap: 0 clamp(40px, 6vw, 100px); align-items: start; margin-top: 70px; }
.service-layout .service-system { margin-top: 0; }
.service-layout .service-system summary { grid-template-columns: 52px 1fr 190px 30px; }
.service-layout .service-system h3 { font-size: clamp(26px, 2.7vw, 44px); }
.service-layout .service-content { padding-left: 72px; }
.service-orbit { position: sticky; top: 130px; width: 100%; aspect-ratio: 1; }
.orbit-svg { width: 100%; height: 100%; display: block; overflow: visible; }
.orbit-track { stroke: #34362f; stroke-width: 1; transition: stroke .8s, opacity .8s; }
.orbit-track-inner { stroke: #2f312b; stroke-dasharray: 2 6; }
.orbit-spokes line { stroke: #2c2e29; stroke-width: 1; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset .8s var(--ease), stroke .4s; }
.orbit-spokes line.is-lit { stroke-dashoffset: 0; stroke: #565951; }
.orbit-links path { stroke: var(--gold); stroke-width: 1.2; stroke-linecap: round; stroke-dasharray: 160; stroke-dashoffset: 160; transition: stroke-dashoffset 1s var(--ease); }
.orbit-links path.is-lit { stroke-dashoffset: 0; }
.orbit-nodes circle { fill: var(--panel); stroke: #4a4d45; stroke-width: 1; transition: fill .4s, stroke .4s; }
.orbit-nodes text { font-family: var(--sans); font-size: 12px; letter-spacing: .08em; fill: #9a9d94; text-anchor: middle; transition: fill .4s; }
.orbit-nodes g.is-lit circle { stroke: var(--gold); }
.orbit-nodes g.is-lit text { fill: var(--marble); }
.orbit-nodes g.is-current circle { fill: #232520; }
.orbit-nodes g.is-open circle { fill: var(--gold); stroke: var(--gold); }
.orbit-nodes g.is-open text { fill: var(--carbon); }
.orbit-satellite { transform-box: view-box; transform-origin: 200px 200px; transition: transform .9s var(--ease); }
.orbit-satellite circle { fill: var(--gold); filter: drop-shadow(0 0 6px rgba(197,176,140,.85)); }
.orbit-center { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; pointer-events: none; }
.orbit-core { font-family: var(--serif); font-size: clamp(40px, 4.6vw, 60px); letter-spacing: -.06em; line-height: 1; color: #6f726a; transition: color .7s; }
.orbit-caption { display: block; margin-top: 6px; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: #8a8d85; line-height: 1.45; transition: color .7s; }
.service-orbit.is-complete .orbit-core { color: var(--marble); }
.service-orbit.is-complete .orbit-caption { color: var(--gold); }
.service-orbit.is-complete .orbit-track { stroke: var(--gold); opacity: .55; }
.service-orbit.is-complete .orbit-spokes line.is-lit { stroke: #7d7562; }

/* Process map: enters turned away and settles; the pointer tilts it and moves a light across titanium nodes. */
.process-panel { position: relative; overflow: hidden; --light-x: 30%; --light-y: 30%; }
.process-panel::before { content: ""; position: absolute; inset: 0; background: radial-gradient(560px circle at var(--light-x) var(--light-y), rgba(233,231,223,.075), transparent 62%); pointer-events: none; }
.process-map { transform: perspective(1400px) rotateY(calc(var(--enter, 0) * -16deg + var(--tilt-y, 0deg))) rotateX(var(--tilt-x, 0deg)) translateX(calc(var(--enter, 0) * -28px)); transform-style: preserve-3d; transition: transform .4s cubic-bezier(.2,.7,.3,1); opacity: calc(1 - var(--enter, 0) * .65); }
.process-marker { background: radial-gradient(circle at 35% 28%, #363831, #161714 72%); box-shadow: inset 0 1px 0 rgba(233,231,223,.14), inset 0 -1px 0 rgba(0,0,0,.5); }

/* Cursor (TZ §25): a following ring. In the Human × AI stage it names the zone — HUMAN / × / MACHINE — and a click sets that material. */
.cursor { position: fixed; left: 0; top: 0; z-index: 200; pointer-events: none; opacity: 0; transition: opacity .3s; will-change: transform; }
.cursor.is-visible { opacity: 1; }
.cursor-ring { position: absolute; left: 0; top: 0; width: 34px; height: 34px; margin: -17px 0 0 -17px; border: 1px solid rgba(233,231,223,.6); border-radius: 50%; transition: transform .35s var(--ease), border-color .3s, background .3s, width .35s var(--ease), height .35s var(--ease), margin .35s var(--ease); }
.cursor-label { position: absolute; left: 0; top: 0; transform: translate(-50%, -50%); font-size: 10px; letter-spacing: .16em; font-weight: 600; color: var(--carbon); opacity: 0; transition: opacity .25s; white-space: nowrap; }
.cursor.is-link .cursor-ring { transform: scale(1.5); border-color: var(--gold); }
.cursor.is-stage .cursor-ring { width: 78px; height: 78px; margin: -39px 0 0 -39px; background: rgba(233,231,223,.93); border-color: transparent; }
.cursor.is-stage .cursor-label { opacity: 1; }
.cursor.is-stage[data-zone="1"] .cursor-label { font-family: var(--serif); font-size: 30px; letter-spacing: 0; font-weight: 400; }
.cursor.is-pressed .cursor-ring { transform: scale(.82); }
.has-cursor .synthesis-stage { cursor: none; }
.has-cursor .synthesis-stage canvas { pointer-events: auto; }
@media (hover: none) { .cursor { display: none !important; } }

/* Magnetic actions. */
.arrow-disc, .menu-toggle, .header-contact, .control-labels button, .reel-toggle { transform: translate(var(--mx, 0px), var(--my, 0px)); }
.arrow-disc { transition: background .25s, color .25s, transform .3s var(--ease); }
.menu-toggle, .header-contact, .control-labels button, .reel-toggle { transition: transform .3s var(--ease), color .25s; }
.round-link:hover .arrow-disc, .round-link.hero-cta:hover .arrow-disc { transform: translate(var(--mx, 0px), var(--my, 0px)) rotate(-35deg); }

@media (max-width: 1100px) {
  .service-layout { grid-template-columns: minmax(220px, 300px) minmax(0, 1fr); gap: 0 40px; }
  .service-layout .service-system summary { grid-template-columns: 40px 1fr 20px; }
  .service-layout .service-hint { display: none; }
  .service-layout .service-content { padding-left: 60px; }
}
@media (max-width: 900px) {
  .service-layout { grid-template-columns: 1fr; margin-top: 48px; }
  .service-orbit { position: relative; top: auto; max-width: 300px; margin: 0 auto 36px; }
}
@media (max-width: 700px) {
  .experience-caption { font-size: 17px; bottom: -1.5em; }
  .hero .intro-formula { font-size: 13px; }
  .process-map { transform: none; opacity: 1; }
  .service-orbit { max-width: 260px; margin-bottom: 28px; }
  .orbit-nodes text { font-size: 14px; }
}

/* ---------- 11. Jury round 2 (8.0): density, captions, mobile manifesto, hover, closing mark ---------- */

/* Captions that are not tracked eyebrows: 13px minimum. */
.control-status, .synthesis-footnote, .experience-bottom, .service-hint, .system-return, .reel-sources, .creative-bottom, footer, .hero-bottom, .hero-film-credit, .hero-secondary, .navigation-bottom, .header-note, .manifesto-top a, .manifesto-count { font-size: 13px; }
.hero-topline, .experience-top, .manifesto-top, .creative-top { font-size: 12px; }
.manifesto-top a { font-size: 12px; }
.header-note { line-height: 1.45; }

/* Dead zone under the Human x AI control: keep both lines close to the slider. */
.synthesis { padding-bottom: 56px; }
.control-status { min-height: 0; margin-top: 10px; }
.synthesis-footnote { margin-top: 18px; }

/* Hover reactions on desktop: service rows and menu items answer the pointer. */
.step-number, .service-hint, .plus { transition: color .25s, transform .3s var(--ease); }
.service-system summary:hover .step-number { color: var(--marble); transform: translateX(4px); }
.service-system summary:hover .service-hint { color: var(--marble); }
.service-system summary:hover .plus { color: var(--gold); transform: rotate(90deg); }
details[open] > summary .plus { color: var(--gold); }
.scenes-ready .navigation-links a { transition: transform .65s var(--ease), opacity .25s, letter-spacing .5s var(--ease); }
.scenes-ready .navigation-links a:hover, .scenes-ready .navigation-links a:focus-visible { letter-spacing: -.02em; }
.navigation-arrow { color: var(--gold); }
.navigation-bottom .arrow-ne { margin-left: 4px; }
.menu-close:focus:not(:focus-visible) { outline: none; }

/* Closing mark: the WebGL canvas carries the light now; the fallback keeps the logo. */
.closing-symbol canvas { opacity: 1; }

/* Mobile manifesto: the scene keeps its index and emblem, and the scroll is shorter. */
@media (max-width: 900px) {
  .scroll-motion .manifesto { height: 230svh; }
  .scroll-motion .manifesto-body { grid-template-columns: 1fr; grid-template-rows: minmax(0, 1fr) auto; }
  .scroll-motion .manifesto-aside { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 0 16px; padding: 0; border-left: 0; }
  .manifesto-index { display: flex; flex-wrap: nowrap; gap: 0 18px; align-self: end; padding-bottom: 14px; }
  .manifesto-index li { font-size: 15px; gap: 0; }
  .manifesto-index li .index-title { display: none; }
  .manifesto-index .index-number { font-size: 13px; min-width: 0; }
  .manifesto-index li.is-active { transform: none; }
  .manifesto-index li.is-active .index-number { font-size: 15px; }
  .manifesto-emblem { width: min(34vw, 150px); margin: 0 4px 14px 0; align-self: end; }
  .emblem-mark { font-size: clamp(64px, 18vw, 84px); }
}
@media (max-width: 700px) {
  .control-status, .synthesis-footnote, .experience-bottom, .system-return, .reel-sources, .creative-bottom, footer, .hero-bottom, .hero-film-credit, .hero-secondary, .navigation-bottom { font-size: 13px; }
  .hero-topline, .experience-top, .manifesto-top, .creative-top { font-size: 12px; }
  .synthesis { padding-bottom: 40px; }
  .scroll-motion .manifesto { height: 210svh; }
  .scroll-motion .manifesto-pin { min-height: 520px; }
}

/* ---------- 12. Jury round 3 (8.1): proof, manifesto tempo, mobile hero, weight of the serif ---------- */
.human-line, .principle h2, h1 em, h2 em, .process-title, .experience-copy h2 em, .scenes-ready .navigation-links a { -webkit-text-stroke: .35px currentColor; }
.scroll-motion .manifesto { height: 270svh; }
.proof-list { list-style: none; margin: 34px 0 0; padding: 0; border-top: 1px solid #c9c7bd; max-width: 520px; }
.proof-list li { display: grid; grid-template-columns: 160px 1fr; gap: 0 24px; align-items: baseline; padding: 16px 0; border-bottom: 1px solid #c9c7bd; }
.proof-figure { font-family: var(--serif); font-size: clamp(26px, 2.4vw, 36px); line-height: 1; letter-spacing: -.02em; color: var(--gold-ink); white-space: nowrap; }
.proof-text { font-size: 13px; line-height: 1.5; color: var(--ink-muted); }
.proof-text strong { display: block; font-weight: 600; color: var(--carbon); font-size: 14px; margin-bottom: 2px; }
.project-copy .project-links { margin-top: 22px; }
@media (max-width: 900px) {
  .scroll-motion .principle { justify-content: flex-start; padding-top: 6vh; }
}
@media (max-width: 700px) {
  .hero-cinema .hero-bottom > a:first-child { display: none; }
  .hero-cinema .hero-bottom { justify-content: flex-end; }
  .proof-list li { grid-template-columns: 1fr; gap: 6px; }
  .proof-figure { font-size: 28px; }
}

/* ---------- 13. Jury round 4 (8.3): manifesto tempo and body, mobile list, process rail, poster ---------- */
.scroll-motion .principle p { font-family: var(--serif); font-size: clamp(20px, 1.75vw, 25px); line-height: 1.35; max-width: 36ch; color: #cfcdc4; margin-top: 36px; }
.scroll-motion .principle.is-active { transform: translateY(calc((.5 - var(--slide-t, .5)) * 32px)); }
.scroll-motion .principle.is-active h2 { transition: none; }
.scroll-motion .manifesto-body { transform: translateY(calc(var(--manifesto-exit, 0) * -70px)); opacity: calc(1 - var(--manifesto-exit, 0) * .75); }
.scroll-motion .manifesto-emblem { transform: scale(calc(1 + var(--slide-t, .5) * .04)); transition: transform .3s linear; }
.process-marker { border-radius: 0; transform: rotate(45deg); width: 36px; height: 36px; margin: 4px; }
.process-marker i { font-style: normal; transform: rotate(-45deg); }
.process-track, .process-return { left: 22px; }
.scroll-motion .process-dot { animation-name: process-travel; }
.reel-sources a { min-height: 48px; }
@media (max-width: 700px) {
  /* Manifesto on phones: five statements in flow, no pin, the emblem closes the section. */
  .scroll-motion .manifesto { height: auto; }
  .scroll-motion .manifesto-pin { position: relative; top: auto; height: auto; min-height: 0; display: block; padding: 28px 24px 36px; }
  .scroll-motion .manifesto-body { display: block; transform: none; opacity: 1; }
  .scroll-motion .manifesto-statements { position: static; }
  .scroll-motion .principle { position: relative; inset: auto; opacity: 1; visibility: visible; transform: none; min-height: 40vh; padding: 36px 0; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; justify-content: center; transition: none; }
  .scroll-motion .principle:last-child { border-bottom: 0; }
  .scroll-motion .principle.is-active { transform: none; }
  .scroll-motion .principle p { font-size: 18px; margin-top: 22px; max-width: none; }
  .scroll-motion .manifesto-aside { display: flex; justify-content: flex-end; padding: 8px 0 0; }
  .manifesto-index { display: none; }
  .manifesto-emblem { width: min(46vw, 190px); margin: 0; }
  .scroll-motion .manifesto-emblem { transform: none; }
  .scroll-motion .manifesto-progress, .scroll-motion .manifesto-count { display: none; }
  .manifesto-top { padding-bottom: 8px; border-bottom: 1px solid var(--line); }
  .experience-copy h2 { font-size: clamp(28px, 8vw, 37px); }
  .synthesis { padding-top: 96px; scroll-margin-top: 20px; }
}

/* ---------- 14. Jury round 5 (8.3): process loop in the thin-line language, cases legibility, pin exit, hero balance ---------- */
.process-map { height: auto; aspect-ratio: 470 / 500; max-width: 470px; }
.process-svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.process-path { fill: none; stroke: #4a4d45; stroke-width: 1; vector-effect: non-scaling-stroke; }
.process-arrow { fill: none; stroke: #7d8078; stroke-width: 1; vector-effect: non-scaling-stroke; }
.process-ring { fill: var(--carbon); stroke: #6b6e64; stroke-width: 1; vector-effect: non-scaling-stroke; }
.scroll-motion .process-ring { animation: process-ring 14s linear infinite; animation-delay: calc(var(--i) * 2.8s); }
@keyframes process-ring { 0%, 18% { stroke: var(--gold); r: 9; } 24%, 100% { stroke: #6b6e64; r: 7; } }
.process-satellite { fill: var(--gold); filter: drop-shadow(0 0 8px rgba(197,176,140,.85)); }
.process-track, .process-return, .process-map > .process-dot { display: none; }
.process-node { grid-template-columns: 1fr; padding: 0 110px 0 52px; column-gap: 0; }
.process-index { font-size: 12px; letter-spacing: .1em; color: var(--gold); margin-bottom: 8px; }
.scroll-motion .process-node .process-title { transition: color .4s; }
.scroll-motion .process-node { animation: process-node 14s linear infinite; animation-delay: calc(var(--i) * 2.8s); }
@keyframes process-node { 0%, 18% { color: var(--marble); } 24%, 100% { color: #c9c8bf; } }
.process-loop-label { position: static; transform: none; writing-mode: horizontal-tb; margin: 22px 0 0; padding: 0; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: #9a9d94; background: none; text-align: left; line-height: 1.5; white-space: normal; max-width: 470px; }
.process-panel { display: flex; flex-direction: column; justify-content: center; align-items: center; }
.process-panel > * { width: 100%; max-width: 470px; }

.proof-text { font-size: 15px; color: #3a3e36; }
.proof-text strong { font-size: 16px; }
.project-copy > p:not(.eyebrow) { font-size: 16px; color: #32362f; }
.proof-list li { grid-template-columns: 170px 1fr; }
.eyebrow { color: #6a5a38; }

/* Pin exit is directed: on the last slide the top bar and progress fade with in-slide progress. */
.manifesto-top, .manifesto-progress { transition: opacity .2s linear; }
.manifesto-pin[data-slide="5"] .manifesto-top, .manifesto-pin[data-slide="5"] .manifesto-progress { opacity: calc(1 - max(0, var(--slide-t, 0) - .55) * 2.4); }

/* Human x AI: the control lands inside a 900px viewport. */
.synthesis { padding-top: 80px; }
.synthesis-stage { height: 430px; }
.synthesis-object { height: 124%; top: -12%; }

/* Hero: three facts balance the right side. */
.hero-facts { position: absolute; right: var(--gutter); bottom: 96px; z-index: 2; display: grid; gap: 18px; text-align: right; color: #e1e1d9; }
.hero-facts div { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.hero-facts b { font-family: var(--serif); font-weight: 400; font-size: clamp(30px, 2.6vw, 40px); line-height: 1; letter-spacing: -.02em; }
.hero-facts span { font-size: 13px; letter-spacing: .04em; color: #b9bab2; max-width: 20ch; }
.intro-running .hero-facts { animation: hero-fade .9s 3s both; }
.hero-cinema .hero-copy { pointer-events: none; }
@media (max-width: 1100px) { .hero-facts { display: none; } }
@media (max-width: 700px) {
  .process-node { padding: 0 44px 0 40px; }
  .process-loop-label { font-size: 11px; }
  .proof-text { font-size: 14px; }
  .project-copy > p:not(.eyebrow) { font-size: 15px; }
  .synthesis-stage { height: auto; }
  .synthesis-object { height: 330px; top: auto; }
  .number-outline { -webkit-text-stroke-width: 1px; paint-order: stroke fill; }
}

/* ---------- 15. Jury round 6 (8.4): no text under 13px, manifesto quadrant, single CTA, mobile hero ---------- */
.navigation-top .brand-formula, .closing-formula, .contact .brand-formula { font-size: 13px; }
.menu-close, .scenes-ready .navigation-bottom, .navigation-bottom a, .service-content a, .step-number, .reel-toggle, .text-link, .control-labels button, .process-role, .human-role p, .machine-role p { font-size: 13px; }
.orbit-caption, .process-loop-label, .process-index { font-size: 12px; }
html { scroll-padding-top: 110px; }

/* Manifesto: the lead sits to the right of the headline, bottom-aligned — the quadrant is used, the rail stays. */
.scroll-motion .manifesto-body { grid-template-columns: minmax(0, 1.5fr) minmax(300px, 1fr); }
.scroll-motion .principle { display: grid; grid-template-columns: minmax(0, 1fr); align-content: center; }
.scroll-motion .principle h2 { max-width: none; }
.scroll-motion .principle p { justify-self: end; width: min(100%, 34ch); max-width: none; margin: 36px 6% 0 0; font-size: clamp(20px, 1.6vw, 24px); }

/* Header action rides in once the hero action has left. */
.js .header-contact { opacity: 0; transform: translateY(-6px); pointer-events: none; transition: opacity .35s, transform .45s var(--ease); }
.js .masthead.is-past-hero .header-contact { opacity: 1; transform: none; pointer-events: auto; }

/* Services rows: a visible hover band. */
.service-system summary { transition: background-color .3s; }
.service-system summary:hover { background: linear-gradient(90deg, rgba(233,231,223,.045), transparent 70%); }
.service-content a:hover .arrow { transform: translateX(4px); }
.service-content .arrow { transition: transform .3s var(--ease); }

@media (max-width: 900px) {
  .scroll-motion .principle { display: flex; }
  .scroll-motion .principle p { margin-top: 22px; font-size: 18px; }
}
@media (max-width: 700px) {
  .hero-cinema .hero-cta { margin-top: 0; }
  .hero-actions { margin-top: 26px; }
  .hero-cinema .hero-bottom { margin-top: 26px; border-top: 0; padding: 0; justify-content: flex-start; }
  .hero-film-credit { color: #b9bab2; }
  .menu-close, .scenes-ready .navigation-bottom, .navigation-bottom a, .service-content a, .step-number, .reel-toggle, .text-link, .process-role, .human-role p, .machine-role p { font-size: 13px; }
}

/* Process rows: the ring on the rail meets the title line exactly — index inline, block offset by the role line. */
.process-node { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: 24px 110px 0 52px; }
.process-line { display: flex; align-items: baseline; gap: 14px; }
.process-index { margin-bottom: 0; }
.process-role { margin-top: 4px; line-height: 20px; }
@media (max-width: 700px) {
  .process-node { padding: 24px 44px 0 40px; }
  .process-map { aspect-ratio: 470 / 540; }
}
.process-nodes { position: absolute; inset: 0; height: auto; }
@media (max-width: 700px) { .process-map { aspect-ratio: 470 / 560; } }

/* ---------- 16. Jury round 7 (8.5): reveals, slider hint, mobile hero facts, hover accents, manifesto column ---------- */
.js .reveal { opacity: 0; transform: translateY(24px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.js .reveal.is-in, .motion-paused .reveal, html:not(.scenes-ready) .reveal { opacity: 1; transform: none; }
h2.reveal em { display: inline-block; opacity: 0; transform: translateY(18px); transition: opacity .55s .08s var(--ease), transform .55s .08s var(--ease); }
h2.reveal.is-in em, .motion-paused h2.reveal em { opacity: 1; transform: none; }
.section-intro > p.reveal { transition-delay: .12s; }
.hero-facts.reveal, .intro-running .hero-facts { transition: none; clip-path: none; transform: none; opacity: 1; }

.control-hint { display: flex; justify-content: center; align-items: center; gap: 10px; margin-top: 10px; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--gold); opacity: 0; transform: translateY(4px); transition: opacity .4s, transform .5s var(--ease); }
.js .material-control:not(.is-used) .control-hint { opacity: .9; transform: none; }
.hint-chevron { font-family: var(--serif); font-size: 18px; line-height: 1; }
@keyframes thumb-nudge { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-16px); } 75% { transform: translateX(16px); } }
.material-control.is-nudging input[type=range]::-webkit-slider-thumb { animation: thumb-nudge 1.1s var(--ease) 2; }
.material-control.is-nudging input[type=range]::-moz-range-thumb { animation: thumb-nudge 1.1s var(--ease) 2; }
@keyframes hint-chevron { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(-4px); } }
.material-control.is-nudging .hint-chevron:first-child { animation: hint-chevron 1.1s var(--ease) 2; }
.material-control.is-nudging .hint-chevron:last-child { animation: hint-chevron 1.1s var(--ease) 2 reverse; }

.service-system summary:hover h3 { color: var(--gold); }
.text-link:hover { color: var(--gold-ink); border-color: var(--gold-ink); }
.text-link .arrow { transition: transform .3s var(--ease); }
.text-link:hover .arrow { transform: translateX(6px); }
.contact .text-link:hover, .experience-copy .text-link:hover { color: inherit; }

.scroll-motion .manifesto-aside { justify-content: flex-start; gap: 40px; }
.manifesto-emblem { margin-top: 8px; }
.closing-formula { display: none; }

@media (max-width: 1100px) {
  .hero-facts { display: grid; grid-template-columns: repeat(3, 1fr); position: static; margin-top: auto; padding-top: 22px; border-top: 1px solid #e9e7df33; text-align: left; gap: 12px; }
  .hero-facts div { align-items: flex-start; }
  .hero-facts b { font-size: 28px; }
  .hero-facts span { font-size: 12px; max-width: none; }
}
@media (max-width: 700px) {
  .hero-cinema .hero-copy { margin-bottom: 28px; }
  .hero-facts { padding-top: 18px; }
  .hero-facts b { font-size: 26px; }
  .hero-cinema .hero-bottom { margin-top: 22px; }
  .hero-topline, .experience-top, .manifesto-top, .creative-top { font-size: 13px; }
}

/* Round 8 corrections: faster hero intro, contact and creative density, eyebrows 13px. */
.intro-running .masthead .wordmark img { animation-delay: 0s; }
.intro-running .formula-human { animation-delay: .2s; animation-duration: .55s; }
.intro-running .formula-cross { animation-delay: .5s; animation-duration: .5s; }
.intro-running .formula-machine { animation-delay: .7s; animation-duration: .55s; }
.intro-running .human-line { animation-delay: .85s; animation-duration: .7s; }
.intro-running .machine-line { animation-delay: 1.05s; animation-duration: .6s; }
.intro-running .hero-film { animation-duration: 2.4s, 1.6s; animation-delay: 0s, .8s; }
.intro-running .hero-description { animation-delay: 1.3s; }
.intro-running .hero-actions { animation-delay: 1.45s; }
.intro-running .hero-topline { animation-delay: 1.55s; }
.intro-running .hero-bottom { animation-delay: 1.7s; }
.intro-running .hero-facts { animation-delay: 1.6s; }
.contact { min-height: 600px; padding-top: 96px; padding-bottom: 96px; }
.creative-copy p { font-size: clamp(16px, 1.35vw, 20px); line-height: 1.6; max-width: 34ch; }
.hero-topline, .experience-top, .manifesto-top, .creative-top { font-size: 13px; }
