@font-face {
  font-family: 'Borna';
  src: url('fonts/borna-regular-webfont.woff2') format('woff2'),
       url('fonts/borna-regular-webfont.woff') format('woff');
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: 'Borna';
  src: url('fonts/borna-medium-webfont.woff2') format('woff2'),
       url('fonts/borna-medium-webfont.woff') format('woff');
  font-weight: 500;
  font-style: normal;
}

@font-face {
  font-family: 'Borna';
  src: url('fonts/borna-semibold-webfont.woff2') format('woff2'),
       url('fonts/borna-semibold-webfont.woff') format('woff');
  font-weight: 600;
  font-style: normal;
}

@font-face {
  font-family: 'Borna';
  src: url('fonts/borna-bold-webfont.woff2') format('woff2'),
       url('fonts/borna-bold-webfont.woff') format('woff');
  font-weight: 700;
  font-style: normal;
}

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

/* ─── Page load entrance ─────────────────────────────────── */
body.page-loading .hero,
body.page-loading .tram-track,
body.page-loading .manifesto {
  opacity: 0;
  transform: translateY(12px);
}

body.page-loaded .hero,
body.page-loaded .tram-track,
body.page-loaded .manifesto {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

body.page-loaded .tram-track {
  transition-delay: 0.1s;
}

body.page-loaded .manifesto {
  transition-delay: 0.18s;
}


html {
  min-height: 100%;
}

body {
  min-height: 100%;
  background-color: #101010;
  color: #fff;
  font-family: 'Borna', sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color 0.5s ease, color 0.5s ease;
}

/* ─── Section 1: Hero ────────────────────────────────────────────── */

.hero {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 200px 40px;
  width: 100%;
}

.content-container {
  display: flex;
  align-items: center;
  gap: 40px;
  max-width: 1400px;
  width: 100%;
}

.headshot-wrap {
  flex-shrink: 0;
  width: 350px;
  height: 350px;
  border-radius: 4px;
  overflow: hidden;
  transition: border-radius 0.5s ease;
}

.headshot {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

body.corporate .headshot-wrap {
  border-radius: 50%;
}

.intro {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 64px;
  min-width: 0;
}

.name {
  font-size: 68px;
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -3px;
}

.bio {
  display: flex;
  flex-direction: column;
  font-size: 24px;
  font-weight: 400;
  color: #bebebe;
  line-height: 1.4;
  gap: 16px;
}

.bio strong {
  font-weight: 500;
  color: #ffffff;
}

.link-anim {
  color: inherit;
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 100% 100%;
  background-repeat: no-repeat;
  background-size: 0% 1.5px;
  /* on mouse-out: shrink first, then snap position back to right */
  transition: background-size 0.3s ease, background-position 0s 0.3s;
}

.link-anim:hover {
  background-position: 0% 100%;
  background-size: 100% 1.5px;
  /* on hover: snap position to left instantly, then grow */
  transition: background-size 0.3s ease, background-position 0s;
}

/* ─── Shimmer ────────────────────────────────────────────────────── */

@keyframes shimmer {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}



.shimmer-rainbow {
  background: linear-gradient(
    90deg,
    #d4748f 0%,
    #d4a874 16%,
    #d4d474 33%,
    #74d4a8 50%,
    #74bcd4 66%,
    #b474d4 83%,
    #d4748f 100%
  );
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shimmer 15s linear infinite;
  font-weight: 500;
}

/* ─── Game rules panel ───────────────────────────────────────────── */

.game-rules {
  position: fixed;
  top: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(-8px);
  background: #101010;
  border: 1px dashed #AFAFAF;
  border-radius: 4px;
  font-family: 'Borna', sans-serif;
  font-size: 18px;
  font-weight: 500;
  color: #ffffff;
  text-align: center;
  white-space: nowrap;
  padding: 16px;
  opacity: 0;
  pointer-events: none;
  z-index: 9999;
  transition: opacity 0.35s ease, transform 0.35s ease;
  box-shadow: 0px 0px 50px 0px rgba(255, 255, 255, 0.2);
}

.game-rules-open {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
  pointer-events: auto;
}

.game-rules p {
  line-height: normal;
}

.game-rules p + p {
  margin-top: 2px;
}

.game-count {
  font-weight: 500;
}

.game-label {
  font-weight: 400;
  color: #bebebe;
}

/* Corporate mode styling */
body.corporate .game-rules {
  background: #ffffff;
  border: 1px dashed #dcdcdc;
  box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 0.1);
  color: #000000;
  font-family: 'Inter', sans-serif;
}

body.corporate .game-label {
  color: #5a5a5a;
}

/* ─── Blast words ────────────────────────────────────────────────── */

.blast-word {
  cursor: pointer;
}

/* ─── Melbourne easter egg ───────────────────────────────────────── */

#melbourne {
  cursor: pointer;
}

.tram-emoji {
  position: absolute;
  line-height: 1;
  user-select: none;
  white-space: nowrap;
  z-index: 999;
  cursor: pointer;
}

/* ─── Tram Track Divider ─────────────────────────────────────────── */

.tram-track {
  width: 100%;
  border: none;
  border-top: 1px dashed #bebebe;
  transition: border-color 0.5s ease;
}

/* ─── Section 2: Manifesto ───────────────────────────────────────── */

.manifesto {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 938px;
  padding: 80px 40px 0;
  width: 100%;
}

.manifesto-inner {
  max-width: 1400px;
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.manifesto-text {
  cursor: none;
  display: flex;
  flex-direction: column;
}

.manifesto-text p {
  font-size: 80px;
  font-weight: 500;
  color: #f9f9f9;
  letter-spacing: -1.6px;
  line-height: 79px;
}

.manifesto-footnote {
  font-size: 40px;
  font-weight: 500;
  color: #bebebe;
  letter-spacing: -0.8px;
  line-height: 58px;
}

.manifesto-secret {
  font-size: 20px;
  font-weight: 400;
  color: #bebebe;
  letter-spacing: -0.3px;
  line-height: 1.4;
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transform: translateY(-8px);
  transition: max-height 0.5s ease, opacity 0.5s ease, transform 0.5s ease;
  margin-top: 0;
}

.manifesto-secret.revealed {
  max-height: 100px;
  opacity: 1;
  transform: translateY(0);
  margin-top: 4px;
}

/* ─── Responsive ─────────────────────────────────────────────────── */

@media (max-width: 900px) {
  .hero {
    padding: 60px 32px;
  }

  .content-container {
    flex-direction: column;
    align-items: flex-start;
    gap: 32px;
  }

  .headshot-wrap {
    width: 360px;
    height: 360px;
  }

  .name {
    font-size: 48px;
  }

  .bio {
    font-size: 24px;
  }

  .manifesto {
    padding: 120px 32px;
    min-height: auto;
  }

  .manifesto-text {
    flex-direction: row;
    flex-wrap: wrap;
    column-gap: 0.3em;
  }

  .manifesto-text p {
    font-size: 42px;
    letter-spacing: -1px;
    line-height: 47px;
    display: inline;
  }

  .manifesto-text p::after {
    content: ' ';
  }

  .manifesto-footnote {
    font-size: 26px;
    line-height: 1.3;
  }

  .manifesto-secret {
    font-size: 16px;
  }

}

@media (max-width: 560px) {
  .hero {
    padding: 24px 24px 80px;
  }

  .headshot-wrap {
    width: 270px;
    height: 270px;
  }

  .name {
    font-size: 40px;
  }

  .bio {
    font-size: 18px;
  }

  .manifesto {
    padding: 80px 24px;
  }

  .manifesto-text p {
    font-size: 42px;
    letter-spacing: -0.5px;
    line-height: 47px;
  }

  .manifesto-footnote {
    font-size: 20px;
    line-height: 1.3;
  }

  .manifesto-secret {
    font-size: 14px;
  }

}


/* ─── Mode visibility ────────────────────────────────────────────── */

/* By default show regular, hide corporate */
.mode-corp { display: none; }
.mode-reg  { display: block; }

/* When corporate mode is active */
body.corporate .mode-corp { display: block; }
body.corporate .mode-reg  { display: none; }

/* Headshots are inline/block images — override display */
.headshot.mode-corp { display: none; }
body.corporate .headshot.mode-reg  { display: none; }
body.corporate .headshot.mode-corp { display: block; }

/* ─── Corporate mode global overrides ───────────────────────────── */

body.corporate .manifesto {
  padding-top: 160px;
  padding-bottom: 80px;
}

body.corporate {
  background-color: #ffffff;
  color: #1a1a1a;
  font-family: 'Inter', sans-serif;
}

body.corporate .tram-track {
  border-top-color: #d0d0d0;
}

/* ─── Corporate hero ─────────────────────────────────────────────── */


.corp-name {
  font-size: 48px;
  font-weight: 700;
  color: #000000;
}

.corp-bio-subtitle {
  font-size: 24px;
  font-weight: 400;
  color: #000000;
  line-height: 1.4;
}

.corp-bio-body {
  font-size: 20px;
  font-weight: 400;
  color: #5a5a5a;
  line-height: 1.6;
  margin-top: 16px;
  padding-bottom: 16px;
}

.corp-bio-body p + p {
  margin-top: 24px;
}

.corp-bio-body strong {
  font-weight: 600;
  color: #000000;
}

.corp-link {
  color: #000000;
}

#australian {
  cursor: pointer;
}


/* ─── Corporate manifesto ────────────────────────────────────────── */

body.corporate .corp-manifesto-text {
  cursor: none;
}

.corp-manifesto-text p {
  font-size: 72px;
  font-weight: 500;
  color: #000000;
  letter-spacing: -1.44px;
  line-height: 88px;
}


.corp-recruitment {
  font-size: 20px;
  font-weight: 400;
  color: #5a5a5a;
  line-height: 1.6;
  margin-top: 40px;
}


/* ─── Corp manifesto responsive ──────────────────────────────────── */
@media (max-width: 900px) {
  .corp-manifesto-text p {
    font-size: 42px;
    letter-spacing: -1px;
    line-height: 47px;
  }

  .corp-bio-subtitle {
    font-size: 18px;
  }

  .corp-bio-body {
    font-size: 16px;
  }
}

@media (max-width: 560px) {
  body.corporate .manifesto {
    padding-top: 80px;
  }

  body.corporate .hero {
    padding-bottom: 60px;
  }

  .corp-manifesto-text p {
    font-size: 30px;
    letter-spacing: -0.5px;
    line-height: 38px;
  }

}

/* ─── Hide manifesto cursor on touch/small screens ───────────────── */

@media (pointer: coarse), (max-width: 560px) {
  .manifesto-cursor {
    display: none !important;
  }
}

/* ─── Game panel open: push hero down on mobile ──────────────────── */

@media (max-width: 900px) {
  body.game-open .hero {
    padding-top: 200px;
    transition: padding-top 0.35s ease;
  }
}
