/* Terra Fund additions on top of the Webflow base styles */

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.skip-link {
  position: fixed; top: .75rem; left: .75rem; z-index: 1000;
  padding: .75rem 1rem; background: #fff; color: #000;
  font-family: var(--_typography---font-styles--mono); font-size: .875rem; text-transform: uppercase;
  transform: translateY(-200%); transition: transform .2s;
}
.skip-link:focus { transform: none; }

:focus-visible { outline: 2px solid #8f5bff; outline-offset: 3px; }

/* Buttons are real <button>s here, so reset native chrome */
button.button_icon-wrapper, button.footer_link {
  border: 0; background: none; color: inherit; font-family: inherit; line-height: inherit; text-align: left; cursor: pointer; padding: 0;
  appearance: none; -webkit-appearance: none;
}
button.button_icon-wrapper { font-size: inherit; }
button.button_icon-wrapper { padding-right: var(--_ui-styles---button--icon-size); }

/* Hero */
h1.header_grid { margin: 0; font: inherit; line-height: inherit; letter-spacing: inherit; }
.hero-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

/* Nav: no menu, contact button always visible */
.navbar_component { z-index: 50; }
.navbar_nav { gap: 1rem; }
.navbar_logo .logo_embed svg { display: block; }

@media screen and (max-width: 991px) {
  .navbar_logo { min-width: 12rem; max-width: 12rem; }
  .navbar_menu-buttons { display: flex; margin-left: 0; }
}
@media screen and (max-width: 479px) {
  .navbar_logo-link { padding-left: 1.25rem; padding-right: 1.25rem; }
  .navbar_logo { min-width: 9.5rem; max-width: 9.5rem; }
  .navbar_menu-buttons .button { padding: 1rem 1rem; font-size: .75rem; }
  .navbar_menu-buttons .button_icon-wrapper { --_ui-styles---button--icon-size: 3rem; }
}

/* Footer */
.footer .logo_embed svg { display: block; }
.footer_place { justify-self: center; text-align: center; }
.footer_legal-link { transition: opacity .3s; }
.footer_legal-link:hover { opacity: .5; }
@media screen and (max-width: 767px) {
  .footer_bottom-wrapper { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; }
  .footer_bottom-wrapper > * { order: 0 !important; justify-self: start; text-align: left; }
}

/* Contact dialog */
.contact {
  width: min(44rem, calc(100vw - 2rem)); max-height: calc(100svh - 2rem);
  padding: 0; border: .5px solid var(--_primitives---opacity--white-20); border-radius: 0;
  background: #000; color: #fff; overflow: auto;
  box-shadow: 0 0 160px 0 rgba(86, 19, 223, .45);
}
.contact:focus, .contact:focus-visible { outline: none; }
.contact::backdrop { background: rgba(0, 0, 0, .72); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.contact[open] { animation: contact-in .26s cubic-bezier(.23, 1, .32, 1); }
@keyframes contact-in { from { opacity: 0; transform: translateY(1rem); } }

.contact_form { padding: 2rem; display: flex; flex-direction: column; gap: 1.5rem; }
@media screen and (min-width: 768px) { .contact_form { padding: 3rem; } }
.contact_head { display: flex; justify-content: space-between; align-items: center; }
.contact_eyebrow {
  display: flex; align-items: center; gap: .75rem;
  font-family: var(--_typography---font-styles--mono); font-size: .875rem; text-transform: uppercase;
}
.contact_eyebrow .icon-embed-tiny { width: .875rem; height: .875rem; display: inline-flex; color: var(--_primitives---brand--primary); }
.contact_close {
  width: 2.75rem; height: 2.75rem; display: grid; place-items: center; padding: 0;
  border: .5px solid var(--_primitives---opacity--white-20); border-radius: var(--_ui-styles---radius--small);
  background: none; color: #fff; cursor: pointer; transition: background-color .2s;
}
.contact_close:hover { background: var(--_primitives---opacity--white-5); }
.contact_close svg { width: 1.25rem; height: 1.25rem; }
.contact_title { margin: 0; font-size: 3rem; line-height: 1.1; }

.contact_fields { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem 1.5rem; }
.contact_field { display: flex; flex-direction: column; gap: .5rem; margin: 0; font-weight: 400; }
.contact_field.is-wide, .contact_field:nth-child(3) { grid-column: 1 / -1; }
@media screen and (max-width: 600px) { .contact_fields { grid-template-columns: 1fr; } }
.contact_field > span {
  font-family: var(--_typography---font-styles--mono); font-size: .75rem; text-transform: uppercase; color: var(--_primitives---opacity--white-60);
}
.contact_field em { font-style: normal; opacity: .7; }
.contact_field input, .contact_field textarea {
  width: 100%; padding: .9rem 1rem; margin: 0;
  border: .5px solid var(--_primitives---opacity--white-20); border-radius: var(--_ui-styles---radius--small);
  background: var(--_primitives---opacity--white-5); color: #fff;
  font-family: var(--_typography---font-styles--body); font-size: 1.125rem; line-height: 1.4;
  transition: border-color .2s, background-color .2s;
}
.contact_field textarea { resize: vertical; min-height: 8rem; }
.contact_field input:focus, .contact_field textarea:focus {
  outline: none; border-color: #8f5bff; background: rgba(86, 19, 223, .12);
}
.contact_field input[aria-invalid="true"], .contact_field textarea[aria-invalid="true"] { border-color: #ff6b6b; }
.contact_hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.contact_note { margin: 0; font-size: .875rem; color: var(--_primitives---opacity--white-60); }
.contact_status { margin: 0; min-height: 1.4em; font-family: var(--_typography---font-styles--mono); font-size: .8125rem; text-transform: uppercase; }
.contact_status.is-error { color: #ff8a8a; }
.contact_status.is-success { color: #b99bff; }
.contact_actions { display: flex; }
.contact_form[aria-busy="true"] .contact_actions { opacity: .6; pointer-events: none; }
.contact_form.is-sent .contact_fields, .contact_form.is-sent .contact_note, .contact_form.is-sent .contact_actions { display: none; }

html.is-dialog-open { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* Closing section: square mosaic of Aotearoa (generated by scripts/build-nz-shape.py) */
.catchprase_shape.is-nz {
  top: calc(50% + 2.5rem); left: 50%; margin: 0; display: block; overflow: visible;
  width: min(calc(78svh * var(--nz-w) / var(--nz-h)), 92vw); height: auto; aspect-ratio: var(--nz-w) / var(--nz-h);
  transform: translate(-50%, -50%);
}
.catchprase_shape.is-nz .catchprase_shape-embed { width: 100%; height: 100%; }
.catchprase_shape.is-nz svg { display: block; }

/* Card 02 sits lower than 03, so the second connector rises instead of falls */
#w-node-b717ce20-11ee-8b16-1aa5-1e2394edb8f5-aebf23d7 .card-line { transform: scaleY(-1); }

/* ------------------------------------------------------------------ */
/* Propopoly tribute: neon #E7FF25 with dark slate #152022             */
/* ------------------------------------------------------------------ */
:root {
  --pp-neon: #e7ff25;
  --pp-slate: #152022;
  --pp-neon-soft: rgba(231, 255, 37, .45);
  --pp-neon-faint: rgba(231, 255, 37, .14);
  --pp-ease: cubic-bezier(.23, 1, .32, 1);
}

/* Always-on, subtle: neon focus ring, and cards pick up a neon edge on hover */
:focus-visible { outline-color: var(--pp-neon); }
.card.is-grid { transition: box-shadow .5s var(--pp-ease), border-color .5s var(--pp-ease), background-color .6s var(--pp-ease); }
.card.is-grid .box_top .icon-embed-tiny { transition: color .4s var(--pp-ease), filter .4s var(--pp-ease); }
@media (hover: hover) and (min-width: 991px) {
  .card.is-grid:hover {
    border-color: var(--pp-neon-soft);
    box-shadow: 0 0 0 .5px var(--pp-neon-soft), 0 24px 80px -36px var(--pp-neon-soft);
  }
  .card.is-grid:hover .box_top .icon-embed-tiny { color: var(--pp-neon); filter: drop-shadow(0 0 6px var(--pp-neon-soft)); }
  .card.is-grid:hover .tag { color: var(--pp-neon); }
}

/* The word itself */
.propopoly { position: relative; transition: color .9s var(--pp-ease), text-shadow .9s var(--pp-ease); }
.propopoly .word, .propopoly .char { transition: color .9s var(--pp-ease), text-shadow .9s var(--pp-ease); }
.propopoly::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: .02em; height: .06em;
  background: var(--pp-neon); transform: scaleX(0); transform-origin: left;
  transition: transform 1s var(--pp-ease); pointer-events: none;
}

/* Propopoly mode: set on <html> while the word is lit */
html.is-propopoly .propopoly,
html.is-propopoly .propopoly .word,
html.is-propopoly .propopoly .char {
  color: var(--pp-neon) !important;
  text-shadow: 0 0 .35em var(--pp-neon-soft);
}
html.is-propopoly .propopoly::after { transform: scaleX(1); }
html.is-propopoly-hover .propopoly .char { text-shadow: 0 0 .5em var(--pp-neon), 0 0 1.2em var(--pp-neon-soft); }

/* Buttons go neon (dark slate text); hover keeps the normal white fill */
.button_icon-wrapper { transition: box-shadow 1.1s var(--pp-ease); }
.button_icon-wrapper .button, .button_icon-wrapper .button_text, .button_icon-wrapper .button_background { transition-property: background-color, color, width, top, right, height; transition-duration: .9s, .9s, .3s, .3s, .3s, .3s; }
html.is-propopoly .button_icon-wrapper { box-shadow: 0 0 120px 0 rgba(231, 255, 37, .28); }
html.is-propopoly .button_icon-wrapper .button_background { background-color: var(--pp-neon); }
html.is-propopoly .button_icon-wrapper .button_text { color: var(--pp-slate); }
html.is-propopoly .button_icon-wrapper .button.is-icon-only { background-color: var(--pp-neon); color: var(--pp-slate); }
@media screen and (min-width: 991px) {
  html.is-propopoly .button_icon-wrapper:hover .button_background { background-color: var(--_primitives---colors--white); }
  html.is-propopoly .button_icon-wrapper:hover .is-icon-only { background-color: var(--_primitives---colors--neutral-darkest); color: var(--_primitives---colors--white); }
}

/* One-off light sweep across each button when the mode switches on */
.button_icon-wrapper::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background: linear-gradient(105deg, transparent 35%, rgba(255, 255, 255, .35) 50%, transparent 65%);
  transform: translateX(-120%); opacity: 0;
}
html.is-propopoly-flash .button_icon-wrapper::after { animation: pp-sweep 1.2s var(--pp-ease) forwards; }
@keyframes pp-sweep { 0% { transform: translateX(-120%); opacity: 1; } 100% { transform: translateX(120%); opacity: 1; } }

/* While the mode is on, only the cards' corner squares pick up the neon */
.card.is-grid .box_top .icon-embed-tiny { transition: color .9s var(--pp-ease), filter .9s var(--pp-ease); }
html.is-propopoly .card.is-grid .box_top .icon-embed-tiny { color: var(--pp-neon); }
