/* ============================================================
   KIN—ETIK® — Swiss brutalism × acid rave
   ============================================================ */
:root {
  --black: #0A0A0A;
  --white: #F2F2F0;
  --acid: #C6FF00;
  --alarm: #FF3B00;
  --display: "Archivo", Impact, sans-serif;
  --body: "Space Grotesk", Helvetica, Arial, sans-serif;
  --mono: "JetBrains Mono", "SF Mono", monospace;
  --pad: clamp(16px, 3.4vw, 48px);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }
html, body { background: var(--black); }

body {
  color: var(--white);
  font-family: var(--body);
  font-size: 16px;
  line-height: 1.45;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

::selection { background: var(--acid); color: var(--black); }

.mono { font-family: var(--mono); font-size: 12px; letter-spacing: 0.04em; }

.sr-only {
  position: absolute; width: 1px; height: 1px; margin: -1px;
  clip-path: inset(50%); overflow: hidden; white-space: nowrap;
}

a { color: inherit; text-decoration: none; }
a:focus-visible, .cap:focus-visible {
  outline: 2px solid var(--acid);
  outline-offset: 4px;
}

/* ---------- custom cursor ---------- */
.cursor {
  position: fixed; top: 0; left: 0;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: #fff;
  mix-blend-mode: difference;
  pointer-events: none;
  z-index: 9999;
  transform: translate(-100px, -100px);
  display: none;
  align-items: center;
  justify-content: center;
  font-family: var(--mono);
  font-size: 0;
  color: #000;
  transition: width .28s cubic-bezier(.22,1,.36,1), height .28s cubic-bezier(.22,1,.36,1), font-size .2s;
}
.cursor.is-big { width: 84px; height: 84px; font-size: 11px; font-weight: 700; letter-spacing: .08em; }
@media (pointer: fine) {
  .cursor { display: flex; }
  body { cursor: none; }
  a, button, .cap { cursor: none; }
}

/* ---------- film grain ---------- */
.grain {
  position: fixed; inset: -100px;
  z-index: 9000;
  pointer-events: none;
  opacity: .07;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: grain-jitter .6s steps(4) infinite;
}
@keyframes grain-jitter {
  0% { transform: translate(0,0); }
  25% { transform: translate(-32px, 18px); }
  50% { transform: translate(24px, -28px); }
  75% { transform: translate(-14px, -12px); }
  100% { transform: translate(0,0); }
}

/* ---------- header ---------- */
.site-head {
  position: fixed; top: 0; left: 0; right: 0;
  z-index: 500;
  display: flex; align-items: baseline; justify-content: space-between; gap: 24px;
  padding: 18px var(--pad);
  mix-blend-mode: difference;
}
.logo {
  font-family: var(--display);
  font-variation-settings: "wght" 900, "wdth" 110;
  font-size: 20px;
  letter-spacing: -0.01em;
  color: #fff;
}
.logo sup { font-size: 9px; }
.head-nav { display: flex; gap: clamp(12px, 2.4vw, 32px); }
.head-nav a {
  font-family: var(--mono);
  font-size: 12px;
  color: #fff;
  position: relative;
  padding: 2px 0;
}
.head-nav a::after {
  content: "";
  position: absolute; left: 0; bottom: 0;
  width: 100%; height: 2px;
  background: #fff;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .32s cubic-bezier(.22,1,.36,1);
}
.head-nav a:hover::after, .head-nav a:focus-visible::after {
  transform: scaleX(1);
  transform-origin: left;
}
.head-meta { display: flex; flex-direction: column; gap: 2px; text-align: right; color: #fff; }

/* ---------- hero ---------- */
.hero {
  min-height: 100svh;
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 0 var(--pad) 28px;
  position: relative;
  overflow: hidden;
}
.hero-eyebrow {
  position: absolute;
  top: clamp(72px, 12vh, 120px);
  left: var(--pad);
  color: var(--acid);
}
.hero-title {
  font-family: var(--display);
  font-weight: 900;
  line-height: .82;
  letter-spacing: -0.03em;
  user-select: none;
  margin-bottom: clamp(20px, 4vh, 56px);
}
.hero-title .line {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  white-space: nowrap;
}
.ltr {
  display: inline-block;
  font-size: clamp(88px, 22vw, 24rem);
  font-variation-settings: "wght" 900, "wdth" 110;
  will-change: transform, font-variation-settings;
  animation: ltr-in .9s cubic-bezier(.22, 1, .36, 1) both;
}
@keyframes ltr-in {
  from { opacity: 0; transform: translateY(.35em) skewX(-8deg); }
  to   { opacity: 1; transform: translateY(0) skewX(0); }
}
.line:nth-child(1) .ltr:nth-child(1) { animation-delay: .05s; }
.line:nth-child(1) .ltr:nth-child(2) { animation-delay: .11s; }
.line:nth-child(1) .ltr:nth-child(3) { animation-delay: .17s; }
.line:nth-child(1) .ltr:nth-child(4) { animation-delay: .23s; }
.line:nth-child(2) .ltr:nth-child(1) { animation-delay: .31s; }
.line:nth-child(2) .ltr:nth-child(2) { animation-delay: .37s; }
.line:nth-child(2) .ltr:nth-child(3) { animation-delay: .43s; }
.line:nth-child(2) .ltr:nth-child(4) { animation-delay: .49s; }
.line:nth-child(2) .ltr:nth-child(5) { animation-delay: .58s; }
.ltr.reg { font-size: clamp(28px, 6vw, 6rem); vertical-align: super; }
.hero-foot {
  display: flex; justify-content: space-between; align-items: flex-end; gap: 24px;
  border-top: 2px solid var(--white);
  padding-top: 18px;
}
.hero-claim {
  font-family: var(--body);
  font-weight: 700;
  font-size: clamp(15px, 1.8vw, 22px);
  letter-spacing: .01em;
  display: flex;
  align-items: center;
  gap: 18px;
}
.spin {
  display: inline-block;
  color: var(--acid);
  font-size: clamp(26px, 3vw, 40px);
  font-weight: 400;
  animation: spin-slow 9s linear infinite;
}
@keyframes spin-slow { to { transform: rotate(360deg); } }
.hero-scroll { text-align: right; color: var(--acid); }

/* ---------- marquees ---------- */
.marquee { overflow: hidden; white-space: nowrap; }
.marquee-track {
  display: inline-flex;
  animation: marquee-x 22s linear infinite;
}
.marquee-track.rev { animation: marquee-x-rev 26s linear infinite; }
.marquee-track span {
  font-family: var(--display);
  font-variation-settings: "wght" 900, "wdth" 105;
  font-size: clamp(28px, 4.6vw, 64px);
  line-height: 1.35;
  padding: 8px 0;
  flex-shrink: 0;
}
@keyframes marquee-x { from { transform: translateX(0); } to { transform: translateX(-100%); } }
@keyframes marquee-x-rev { from { transform: translateX(-100%); } to { transform: translateX(0); } }

.marquee-acid { background: var(--acid); color: var(--black); border-block: 2px solid var(--black); }
.marquee-ghost {
  border-block: 1px solid rgba(242,242,240,.25);
}
.marquee-ghost span {
  color: transparent;
  -webkit-text-stroke: 1px rgba(242,242,240,.55);
}
.marquee-foot { background: var(--alarm); color: var(--black); }
.marquee-foot span { font-size: clamp(18px, 2.6vw, 34px); }

/* ---------- sections shared ---------- */
section { padding: clamp(90px, 14vh, 170px) var(--pad); position: relative; }
.section-head {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: end;
  gap: 24px;
  margin-bottom: clamp(48px, 7vw, 96px);
  border-bottom: 2px solid var(--white);
  padding-bottom: 20px;
}
.sec-index {
  font-size: clamp(64px, 11vw, 168px);
  font-weight: 700;
  line-height: .8;
  color: transparent;
  -webkit-text-stroke: 1.5px var(--acid);
}
.sec-title {
  font-family: var(--display);
  font-variation-settings: "wght" 900, "wdth" 108;
  font-size: clamp(40px, 7.4vw, 110px);
  line-height: .84;
  letter-spacing: -0.02em;
}
.sec-note { text-align: right; color: rgba(242,242,240,.72); align-self: end; }

/* ---------- work grid ---------- */
.work-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(20px, 3vw, 48px);
  will-change: transform;
}
.tile { position: relative; }
.tile:nth-child(2), .tile:nth-child(4) { margin-top: clamp(28px, 6vw, 90px); }
.tile-media {
  overflow: hidden;
  background: #151515;
  aspect-ratio: 4 / 3;
  position: relative;
  will-change: transform;
}
.tile-media::after {
  content: "";
  position: absolute; inset: 0;
  background:
    repeating-linear-gradient(to bottom, rgba(10,10,10,.55) 0 2px, transparent 2px 5px),
    var(--acid);
  mix-blend-mode: multiply;
  opacity: 0;
  transition: opacity .35s ease;
  pointer-events: none;
}
.tile-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1.02);
  transition: transform .8s cubic-bezier(.22,1,.36,1), filter .5s ease;
}
.tile:hover .tile-media img { transform: scale(1.09); filter: saturate(1.2) contrast(1.05); }
.tile:hover .tile-media::after { opacity: .28; }
.tile-meta {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  column-gap: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(242,242,240,.3);
  margin-top: 14px;
}
.tile-no { color: var(--acid); grid-row: span 2; align-self: start; padding-top: 4px; }
.tile-name {
  font-family: var(--display);
  font-variation-settings: "wght" 850, "wdth" 105;
  font-size: clamp(22px, 2.6vw, 38px);
  line-height: .95;
  transition: color .25s ease, letter-spacing .4s cubic-bezier(.22,1,.36,1);
}
.tile:hover .tile-name { color: var(--acid); letter-spacing: .02em; }
.tile-info { color: rgba(242,242,240,.7); margin-top: 6px; }

.stats {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px;
  margin-top: clamp(80px, 12vw, 160px);
  padding-top: 18px;
  border-top: 2px solid var(--white);
  font-size: clamp(12px, 1.4vw, 16px);
  font-weight: 700;
}
.stats span:last-child { color: var(--alarm); }

/* ---------- capabilities ---------- */
.caps-list { list-style: none; }
.cap {
  display: grid;
  grid-template-columns: 90px 1fr auto;
  align-items: baseline;
  gap: 18px;
  padding: clamp(18px, 3vw, 34px) 0;
  border-bottom: 1px solid rgba(242,242,240,.28);
  position: relative;
  transition: padding-left .4s cubic-bezier(.22,1,.36,1), background .3s ease;
}
.cap:first-child { border-top: 1px solid rgba(242,242,240,.28); }
.cap-no { color: var(--acid); }
.cap-name {
  font-family: var(--display);
  font-variation-settings: "wght" 880, "wdth" 108;
  font-size: clamp(30px, 5.4vw, 76px);
  line-height: .9;
  letter-spacing: -0.01em;
  transition: font-variation-settings .45s ease, color .3s ease, transform .45s cubic-bezier(.22,1,.36,1);
}
.cap-tag { color: rgba(242,242,240,.5); transition: color .3s ease; }
.cap:hover { padding-left: clamp(12px, 2vw, 28px); }
.cap:hover .cap-name { color: var(--acid); font-variation-settings: "wght" 500, "wdth" 125; }
.cap:hover .cap-tag { color: var(--alarm); }

.cap-thumb {
  position: fixed;
  top: 0; left: 0;
  width: clamp(200px, 22vw, 320px);
  aspect-ratio: 4/3;
  object-fit: cover;
  pointer-events: none;
  z-index: 400;
  opacity: 0;
  transform: translate(-50%, -50%) scale(.85) rotate(-4deg);
  transition: opacity .25s ease;
  will-change: transform;
}
.cap-thumb.on { opacity: 1; }

/* ---------- manifesto ---------- */
.manifesto {
  padding-block: clamp(110px, 18vh, 220px);
  overflow: hidden;
}
.sec-index-solo {
  position: absolute;
  top: 40px; right: var(--pad);
  font-size: clamp(64px, 11vw, 168px);
}
.mani-line {
  font-family: var(--display);
  font-variation-settings: "wght" 900, "wdth" 108;
  font-size: clamp(44px, 8.6vw, 132px);
  line-height: .98;
  letter-spacing: -0.02em;
  white-space: nowrap;
  will-change: transform;
  margin-block: clamp(6px, 1.4vw, 18px);
}
.mani-line.acid { color: var(--acid); }
.mani-line.alarm {
  color: transparent;
  -webkit-text-stroke: 2px var(--alarm);
}

/* ---------- contact ---------- */
.cta {
  display: block;
  font-family: var(--display);
  text-align: center;
  padding: clamp(30px, 5vw, 70px) 0;
  border: 2px solid var(--white);
  position: relative;
  overflow: hidden;
  transition: border-color .3s ease;
}
.cta::before {
  content: "";
  position: absolute; inset: 0;
  background: var(--acid);
  transform: translateY(101%);
  transition: transform .5s cubic-bezier(.76,0,.24,1);
  z-index: 0;
}
.cta:hover::before, .cta:focus-visible::before { transform: translateY(0); }
.cta:hover, .cta:focus-visible { border-color: var(--acid); }
.cta > span { position: relative; z-index: 1; display: block; transition: color .35s ease; }
.cta-line {
  font-variation-settings: "wght" 900, "wdth" 106;
  font-size: clamp(52px, 11vw, 170px);
  line-height: .88;
  letter-spacing: -0.02em;
}
.cta-line em { font-style: normal; color: var(--alarm); }
.cta:hover .cta-line, .cta:focus-visible .cta-line { color: var(--black); }
.cta:hover .cta-line em, .cta:focus-visible .cta-line em { color: var(--black); }
.cta-mail { margin-top: 22px; color: var(--acid); }
.cta:hover .cta-mail, .cta:focus-visible .cta-mail { color: var(--black); }

.contact-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: clamp(56px, 8vw, 110px);
  padding-top: 20px;
  border-top: 1px solid rgba(242,242,240,.3);
}
.contact-grid p { color: rgba(242,242,240,.65); line-height: 1.7; font-size: 12px; }
.c-label { font-family: var(--mono); font-size: 12px; color: var(--acid); margin-bottom: 10px; font-weight: 700; }
.contact-grid a { border-bottom: 1px solid transparent; transition: color .2s, border-color .2s; }
.contact-grid a:hover { color: var(--acid); border-color: var(--acid); }

/* ---------- footer ---------- */
.site-foot { border-top: 2px solid var(--black); }
.credit {
  padding: 20px var(--pad);
  color: rgba(242,242,240,.55);
  text-align: center;
}
.credit a { color: var(--acid); border-bottom: 1px solid var(--acid); }
.credit a:hover { color: var(--white); border-color: var(--white); }

/* ---------- reveal on scroll ---------- */
.rv { opacity: 0; transform: translateY(40px); transition: opacity .8s ease, transform .9s cubic-bezier(.22,1,.36,1); }
.rv.in { opacity: 1; transform: none; }
/* hover transforms that must win over .rv.in (placed after it on purpose) */
a.cta:hover, a.cta:focus-visible { transform: skew(-1.5deg); }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  .ltr { font-size: 26vw; }
  .ltr.reg { font-size: 7vw; }
  .contact-grid { grid-template-columns: repeat(2, 1fr); }
  .cap { grid-template-columns: 60px 1fr; }
  .cap-tag { grid-column: 2; }
  .cap-thumb { display: none; }
}
@media (max-width: 640px) {
  .head-nav { display: none; }
  .section-head { grid-template-columns: 1fr; gap: 10px; }
  .sec-index { font-size: 60px; }
  .sec-note { grid-column: 1 / -1; text-align: left; }
  .mq-dash { display: none; }
  .mani-line { white-space: normal; font-size: clamp(34px, 11.5vw, 60px); }
  .work-grid { grid-template-columns: 1fr; }
  .tile:nth-child(2), .tile:nth-child(4) { margin-top: 0; }
  .ltr { font-size: 30vw; }
  .ltr.reg { font-size: 9vw; }
  .hero-eyebrow { max-width: 260px; }
  .hero-foot { flex-direction: column; align-items: flex-start; }
  .hero-scroll { text-align: left; }
  .stats { flex-direction: column; gap: 6px; }
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .marquee-track, .marquee-track.rev { animation: none; }
  .grain { animation: none; }
  .ltr { animation: none; }
  .spin { animation: none; }
  .cursor { display: none !important; }
  body, a, button, .cap { cursor: auto !important; }
  .rv { opacity: 1; transform: none; transition: none; }
  .mani-line { white-space: normal; }
  *, *::before, *::after { transition-duration: .01s !important; }
}
