/* --------------------------------------------------
   CSS VARIABLES & BASE STYLES
-------------------------------------------------- */
:root {
  --bg-ivory: #F8F6F0;
  --bg-ivory-card: #F1EDE2;
  --text-forest: #0C231A;
  --forest-muted: #2A483C;
  --forest-light: #163B2C;
  --accent-lime: #C4FF00;
  --accent-lime-hover: #b0e600;
  /* --text-forest sits at ~157° on the wheel; this is its true complement
     (~337°, warm coral-rose) — used sparingly as a second signal color,
     distinct enough from --accent-lime (~74°) to read as its own thing. */
  --accent-coral: #FF6B6B;
  --border-forest: rgba(12, 35, 26, 0.14);
  --border-forest-strong: rgba(12, 35, 26, 0.3);

  --font-display: 'Syne', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-body: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;

  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --transition-smooth: all 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

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

html {
  scroll-behavior: smooth;
  background-color: var(--bg-ivory);
  color: var(--text-forest);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  overflow-x: hidden;
  position: relative;
  background-color: var(--bg-ivory);
}

::selection {
  background: var(--accent-lime);
  color: var(--text-forest);
}

/* Custom Scrollbar */
::-webkit-scrollbar {
  width: 8px;
}
::-webkit-scrollbar-track {
  background: var(--bg-ivory);
}
::-webkit-scrollbar-thumb {
  background: var(--forest-muted);
  border-radius: 4px;
}

/* Custom Spotlight / Cursor Visual */
.cursor-glow {
  position: fixed;
  width: 280px;
  height: 280px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(196, 255, 0, 0.05) 0%, rgba(248, 246, 240, 0) 70%);
  pointer-events: none;
  z-index: 9999;
  transform: translate(-50%, -50%);
  transition: transform 0.1s ease-out;
  display: none;
}
@media (pointer: fine) {
  .cursor-glow { display: block; }
}

/* Typography Utilities */
h1, h2, h3, h4 {
  font-family: var(--font-display);
  color: var(--text-forest);
  line-height: 1.05;
  font-weight: 700;
  letter-spacing: -0.03em;
}

p {
  color: var(--forest-muted);
  font-weight: 400;
}

.badge {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.4rem 0.9rem;
  border-radius: 999px;
  border: 1px solid var(--border-forest);
  background: rgba(12, 35, 26, 0.03);
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--text-forest);
  width: fit-content;
}

.badge-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background-color: var(--accent-lime);
  box-shadow: 0 0 10px var(--accent-lime);
  animation: pulse 2s infinite var(--ease-out-expo);
}

@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.4; transform: scale(0.85); }
}

/* Layout Containers */
.container {
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 2rem;
}

@media (min-width: 1024px) {
  .container {
    padding: 0 4rem;
  }
}

/* --------------------------------------------------
   HEADER & NAVIGATION
-------------------------------------------------- */
header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 100;
  padding: 1.5rem 0;
  transition: var(--transition-smooth);
  background: rgba(248, 246, 240, 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(12, 35, 26, 0.05);
}

.nav-wrapper {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.logo {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 800;
  letter-spacing: -0.04em;
  text-decoration: none;
  color: var(--text-forest);
  display: flex;
  align-items: center;
  gap: 0.2rem;
}

.logo-img {
  height: 84px;
  width: auto;
  display: block;
}

.logo-accent {
  color: var(--accent-lime);
  background: var(--text-forest);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
  margin-left: 2px;
}

.nav-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.6rem;
  background-color: var(--text-forest);
  color: var(--bg-ivory);
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 600;
  text-decoration: none;
  border-radius: 999px;
  transition: var(--transition-smooth);
  border: 1px solid var(--text-forest);
  cursor: pointer;
}

.nav-cta:hover {
  background-color: var(--accent-lime);
  color: var(--text-forest);
  border-color: var(--accent-lime);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(196, 255, 0, 0.25);
}

/* On narrow viewports the trust badge is redundant with the hero badge
   just below it — drop it here rather than letting three flex items
   wrap and cram. */
@media (max-width: 640px) {
  .nav-wrapper .badge {
    display: none;
  }

  .nav-cta {
    padding: 0.65rem 1.3rem;
    font-size: 0.8rem;
    white-space: nowrap;
  }
}

/* --------------------------------------------------
   HERO SECTION
-------------------------------------------------- */
.hero {
  min-height: 100vh;
  padding-top: 9rem;
  padding-bottom: 5rem;
  display: flex;
  align-items: center;
  position: relative;
}

.hero-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 4rem;
  align-items: center;
}

@media (min-width: 1024px) {
  .hero-grid {
    grid-template-columns: 1.1fr 0.9fr;
    gap: 2rem;
  }
}

.hero-content {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

.hero-title {
  font-size: clamp(3rem, 7vw, 6.2rem);
  line-height: 0.98;
  letter-spacing: -0.04em;
}

.hero-title .highlight {
  position: relative;
  display: inline-block;
  z-index: 1;
}

.hero-title .highlight::after {
  content: '';
  position: absolute;
  bottom: 10%;
  left: -2%;
  width: 104%;
  height: 28%;
  background-color: var(--accent-lime);
  z-index: -1;
  transform: rotate(-1deg);
}

.hero-desc {
  font-size: clamp(1.15rem, 2vw, 1.45rem);
  line-height: 1.5;
  max-width: 580px;
  color: var(--forest-muted);
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.5rem;
  margin-top: 1rem;
}

.btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 0.8rem;
  padding: 1.1rem 2.2rem;
  background-color: var(--text-forest);
  color: var(--bg-ivory);
  font-family: var(--font-body);
  font-size: 0.95rem;
  font-weight: 600;
  text-decoration: none;
  border-radius: 999px;
  transition: var(--transition-smooth);
  border: 1px solid var(--text-forest);
  cursor: pointer;
}

.btn-primary svg {
  width: 18px;
  height: 18px;
  transition: transform 0.3s ease;
}

.btn-primary:hover {
  background-color: var(--accent-lime);
  color: var(--text-forest);
  border-color: var(--accent-lime);
  transform: translateY(-3px);
  box-shadow: 0 12px 30px rgba(196, 255, 0, 0.3);
}

.btn-primary:hover svg {
  transform: translateX(4px);
}

/* Visual Geometric Graphic (Interactive SVG Canvas style) */
.hero-visual {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-width: 540px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
}

.geo-stage {
  width: 100%;
  height: 100%;
  position: relative;
}

.geo-shape {
  position: absolute;
  border-radius: 50%;
  transition: transform 0.8s var(--ease-out-expo);
}

.geo-ring-1 {
  top: 10%;
  left: 10%;
  width: 80%;
  height: 80%;
  border: 1px solid var(--border-forest-strong);
  animation: spin 35s linear infinite;
}

.geo-ring-2 {
  top: 20%;
  left: 20%;
  width: 60%;
  height: 60%;
  border: 1.5px dashed var(--text-forest);
  animation: spin-reverse 28s linear infinite;
}

.geo-center {
  top: 35%;
  left: 35%;
  width: 30%;
  height: 30%;
  background-color: var(--text-forest);
  border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
  animation: morph 20s ease-in-out infinite alternate;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 20px 50px rgba(12, 35, 26, 0.2);
}

.geo-accent-dot {
  width: 24px;
  height: 24px;
  background-color: var(--accent-lime);
  border-radius: 50%;
  box-shadow: 0 0 calc(20px + var(--geo-glow, 0) * 20px) var(--accent-lime);
  animation: pulse 2.4s infinite var(--ease-out-expo);
  transition: box-shadow 0.3s var(--ease-out-expo);
}

/* Signal pulses — small lime packets orbiting the rings, opposite
   directions, independent of (and much faster than) the rings' own
   35s/28s spin, so the stage always has clearly visible live motion. */
.signal-orbit {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
  animation: spin 6s linear infinite;
}

.signal-orbit-2 {
  animation-name: spin-reverse;
  animation-duration: 8s;
}

.signal-pulse {
  position: absolute;
  top: -4px;
  left: 50%;
  width: 8px;
  height: 8px;
  margin-left: -4px;
  border-radius: 50%;
  background: var(--accent-lime);
  box-shadow: 0 0 10px var(--accent-lime), 0 0 3px var(--accent-lime);
}

.signal-pulse-dim {
  width: 6px;
  height: 6px;
  margin-left: -3px;
  opacity: 0.75;
  background: var(--accent-coral);
  box-shadow: 0 0 8px var(--accent-coral);
}

.geo-satellite {
  position: absolute;
  width: 52px;
  height: 52px;
  background: var(--accent-coral);
  border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
  box-shadow: 0 10px 30px rgba(255, 107, 107, 0.35);
  top: 15%;
  right: 15%;
  animation: float 6s ease-in-out infinite, morph 14s ease-in-out -5s infinite alternate;
}

.geo-satellite-2 {
  position: absolute;
  width: 64px;
  height: 64px;
  background: radial-gradient(circle at 32% 28%, var(--accent-lime) 0%, var(--accent-lime-hover) 100%);
  border-radius: 50%;
  box-shadow: 0 10px 30px rgba(196, 255, 0, 0.35);
  bottom: 18%;
  left: 12%;
  animation: float 8s ease-in-out infinite 1s;
}

/* Geo-stage boot sequence: structure (rings) settles first, then the
   core (blob), then outputs (satellites) — same .reveal mechanism as
   everything else, just staggered per layer instead of firing as one unit.
   Duration is shortened to 0.5s (vs. the site's default 0.9s) so each step
   visibly pops in before the next one starts, instead of blurring into one
   continuous fade. */
.geo-stage .geo-ring-1.reveal { transition: opacity 0.5s var(--ease-out-expo) 0s, transform 0.5s var(--ease-out-expo) 0s; }
.geo-stage .geo-ring-2.reveal { transition: opacity 0.5s var(--ease-out-expo) 0.3s, transform 0.5s var(--ease-out-expo) 0.3s; }
.geo-stage .geo-center.reveal { transition: opacity 0.5s var(--ease-out-expo) 0.6s, transform 0.5s var(--ease-out-expo) 0.6s; }
.geo-stage .geo-satellite.reveal { transition: opacity 0.5s var(--ease-out-expo) 0.9s, transform 0.5s var(--ease-out-expo) 0.9s; }
.geo-stage .geo-satellite-2.reveal { transition: opacity 0.5s var(--ease-out-expo) 1.2s, transform 0.5s var(--ease-out-expo) 1.2s; }

@keyframes spin {
  100% { transform: rotate(360deg); }
}
@keyframes spin-reverse {
  100% { transform: rotate(-360deg); }
}
@keyframes morph {
  0% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; }
  33% { border-radius: 40% 60% 35% 65% / 45% 35% 65% 55%; }
  66% { border-radius: 60% 40% 45% 55% / 35% 50% 50% 65%; }
  100% { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; }
}
@keyframes float {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-8px) rotate(2deg); }
}

/* --------------------------------------------------
   THEMES SECTION (Context, Coordination, Trusted Action)
-------------------------------------------------- */
.themes {
  padding: 8rem 0;
  position: relative;
  border-top: 1px solid var(--border-forest);
}

.section-header {
  margin-bottom: 5rem;
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
}

.section-title {
  font-size: clamp(2rem, 4vw, 3.2rem);
  max-width: 700px;
}

.themes-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
}

@media (min-width: 1024px) {
  .themes-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
  }
}

.theme-card {
  background-color: var(--bg-ivory-card);
  border: 1px solid var(--border-forest);
  border-radius: 20px;
  padding: 3rem 2.2rem;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  position: relative;
  overflow: hidden;
  transition: var(--transition-smooth);
}

.theme-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background-color: transparent;
  transition: var(--transition-smooth);
}

.theme-card:hover {
  transform: translateY(-8px);
  border-color: var(--border-forest-strong);
  box-shadow: 0 20px 40px rgba(12, 35, 26, 0.06);
}

.theme-card:hover::before {
  background-color: var(--accent-lime);
}

.theme-num {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--forest-muted);
  margin-bottom: 2.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.theme-num::after {
  content: '';
  width: 40px;
  height: 1px;
  background-color: var(--border-forest-strong);
}

.theme-icon-box {
  width: 70px;
  height: 70px;
  margin-bottom: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

/* Theme icons — each SVG maps to its concept: overlapping fields for
   Context, a connected node graph for Coordination, a shield+check for
   Trusted Action. */
.theme-icon-box svg {
  width: 42px;
  height: 42px;
}

.theme-heading {
  font-size: 1.8rem;
  margin-bottom: 1rem;
  letter-spacing: -0.02em;
}

.theme-text {
  font-size: 1.05rem;
  color: var(--forest-muted);
  line-height: 1.6;
}

/* --------------------------------------------------
   RESPONSIBLE AI STATEMENT SECTION
-------------------------------------------------- */
.statement {
  padding: 8rem 0;
  background-color: var(--text-forest);
  color: var(--bg-ivory);
  position: relative;
  overflow: hidden;
}

/* Subtle background grid pattern */
.statement::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(248, 246, 240, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(248, 246, 240, 0.04) 1px, transparent 1px);
  background-size: 60px 60px;
  pointer-events: none;
}

.statement-content {
  position: relative;
  z-index: 2;
  max-width: 1000px;
  margin: 0 auto;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2.5rem;
}

.statement-tag {
  color: var(--accent-lime);
  border-color: rgba(196, 255, 0, 0.3);
  background: rgba(196, 255, 0, 0.05);
}

.statement-tag .badge-dot {
  background-color: var(--accent-lime);
}

.statement-quote {
  font-family: var(--font-display);
  font-size: clamp(1.8rem, 4vw, 3.2rem);
  line-height: 1.2;
  letter-spacing: -0.03em;
  color: var(--bg-ivory);
  font-weight: 700;
}

.statement-quote .lime-text {
  color: var(--accent-lime);
}

.statement-desc {
  font-size: 1.2rem;
  color: rgba(248, 246, 240, 0.75);
  max-width: 720px;
  line-height: 1.7;
}

/* --------------------------------------------------
   BACKED / STATUS SECTION
-------------------------------------------------- */
.status-section {
  padding: 8rem 0;
  position: relative;
}

.status-card {
  background: var(--bg-ivory-card);
  border: 1px solid var(--border-forest);
  border-radius: 28px;
  padding: 4rem 2.5rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 3rem;
  align-items: center;
  position: relative;
  overflow: hidden;
}

@media (min-width: 1024px) {
  .status-card {
    grid-template-columns: 1.2fr 0.8fr;
    padding: 5rem;
  }
}

.status-info {
  display: flex;
  flex-direction: column;
  gap: 1.8rem;
}

.status-title {
  font-size: clamp(2.2rem, 4vw, 3.5rem);
  line-height: 1.05;
}

.status-text {
  font-size: 1.15rem;
  color: var(--forest-muted);
  max-width: 540px;
}

.status-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 2rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border-forest);
}

.meta-item {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.meta-label {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--forest-muted);
  font-weight: 600;
}

.meta-val {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--text-forest);
}

.status-graphic {
  width: 100%;
  height: 100%;
  min-height: 260px;
  background-color: var(--text-forest);
  border-radius: 20px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* Modern Minimal Abstract Geometric Construct */
.construct-wrapper {
  position: relative;
  width: 180px;
  height: 180px;
}

.construct-box {
  position: absolute;
  inset: 0;
  border: 2px solid var(--accent-lime);
  transform: rotate(15deg);
  animation: construct-spin 20s linear infinite;
}

.construct-box-2 {
  position: absolute;
  inset: 20px;
  border: 1px solid rgba(248, 246, 240, 0.3);
  transform: rotate(-30deg);
  animation: construct-spin-rev 25s linear infinite;
}

.construct-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 30px;
  height: 30px;
  background: var(--accent-lime);
  border-radius: 50%;
  box-shadow: 0 0 30px var(--accent-lime);
}

@keyframes construct-spin {
  100% { transform: rotate(375deg); }
}
@keyframes construct-spin-rev {
  100% { transform: rotate(-390deg); }
}

/* --------------------------------------------------
   CONTACT FORM SECTION
-------------------------------------------------- */
.contact {
  padding: 8rem 0;
  border-top: 1px solid var(--border-forest);
}

.contact-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 4rem;
}

@media (min-width: 1024px) {
  .contact-grid {
    grid-template-columns: 0.9fr 1.1fr;
    gap: 5rem;
  }
}

.contact-info {
  display: flex;
  flex-direction: column;
  gap: 1.8rem;
}

.contact-title {
  font-size: clamp(2.5rem, 5vw, 4rem);
}

.contact-desc {
  font-size: 1.15rem;
  color: var(--forest-muted);
  max-width: 480px;
}

.contact-form {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.form-label {
  font-size: 0.85rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-forest);
}

.form-input, .form-textarea {
  width: 100%;
  padding: 1.2rem 1.4rem;
  background-color: var(--bg-ivory-card);
  border: 1px solid var(--border-forest);
  border-radius: 12px;
  font-family: var(--font-body);
  font-size: 1rem;
  color: var(--text-forest);
  transition: var(--transition-smooth);
  outline: none;
}

.form-input:focus, .form-textarea:focus {
  border-color: var(--text-forest);
  box-shadow: 0 0 0 3px rgba(196, 255, 0, 0.4);
  background-color: var(--bg-ivory);
}

.form-textarea {
  resize: vertical;
  min-height: 140px;
}

.form-btn {
  align-self: flex-start;
  margin-top: 1rem;
}

.form-status {
  display: none;
  padding: 1rem;
  border-radius: 8px;
  background: rgba(196, 255, 0, 0.2);
  border: 1px solid var(--accent-lime);
  color: var(--text-forest);
  font-size: 0.9rem;
  font-weight: 600;
}

/* --------------------------------------------------
   FOOTER
-------------------------------------------------- */
footer {
  padding: 4rem 0 3rem;
  border-top: 1px solid var(--border-forest);
  background-color: var(--bg-ivory);
}

.footer-wrapper {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}

.footer-top {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  justify-content: space-between;
}

@media (min-width: 768px) {
  .footer-top {
    flex-direction: row;
    align-items: center;
  }
}

.footer-logo {
  font-family: var(--font-display);
  font-size: 1.8rem;
  font-weight: 800;
  color: var(--text-forest);
  text-decoration: none;
  letter-spacing: -0.04em;
  display: inline-flex;
}

.footer-logo-img {
  height: 94px;
  width: auto;
  display: block;
}

.footer-tagline {
  font-size: 0.95rem;
  color: var(--forest-muted);
}

.footer-bottom {
  display: flex;
  flex-direction: column-reverse;
  gap: 1rem;
  justify-content: space-between;
  padding-top: 2rem;
  border-top: 1px solid rgba(12, 35, 26, 0.08);
  font-size: 0.85rem;
  color: var(--forest-muted);
}

@media (min-width: 768px) {
  .footer-bottom {
    flex-direction: row;
    align-items: center;
  }
}

/* --------------------------------------------------
   ANIMATIONS (Scroll Reveal)
-------------------------------------------------- */
/* Hidden-until-revealed state only applies when JS has run (see .js class
   added synchronously in <head>) — without JS, content is visible by default. */
.js .reveal {
  opacity: 0;
  transform: translateY(35px);
  transition: opacity 0.9s var(--ease-out-expo), transform 0.9s var(--ease-out-expo);
}

.js .reveal.active {
  opacity: 1;
  transform: translateY(0);
}

.delay-1 { transition-delay: 0.1s; }
.delay-2 { transition-delay: 0.2s; }
.delay-3 { transition-delay: 0.3s; }

/* Respect reduced-motion preference: stop the decorative infinite
   animations and the mouse-follow glow, keep one-shot transitions brief. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
  .geo-stage .reveal {
    transition-delay: 0s !important;
  }
  html {
    scroll-behavior: auto;
  }
  .cursor-glow {
    display: none !important;
  }
}
