/* ==============================================
   NYU CONCRETE CANOE - Liquid Glassmorphism Theme
   ============================================== */

:root {
  --glass-bg: rgba(255, 255, 255, 0.08);
  --glass-bg-hover: rgba(255, 255, 255, 0.12);
  --glass-border: rgba(255, 255, 255, 0.2);
  --text-light: #ffffff;
  --text-dim: rgba(255, 255, 255, 0.92);
  --blur-amount: 30px;
  --shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-font-smoothing: antialiased;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif;
  background-color: #000;
  color: var(--text-light);
  line-height: 1.6;
  min-height: 100vh;
  overflow-x: hidden;
}

/* Rotating background slideshow */
.bg-slideshow {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  overflow: hidden;
}

.bg-slideshow img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1.5s ease-in-out;
}

.bg-slideshow img.active {
  opacity: 1;
}

/* Scrim over the photo. The background is a random canoe photo, so it can be
   bright or busy. White hero text on a text-shadow alone is not reliably
   readable against it; this guarantees a dark base underneath. Darker at the
   top and bottom, where the navbar and hero text sit. */
.bg-slideshow::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom,
      rgba(0, 0, 0, 0.62) 0%,
      rgba(0, 0, 0, 0.38) 35%,
      rgba(0, 0, 0, 0.42) 65%,
      rgba(0, 0, 0, 0.62) 100%);
  pointer-events: none;
}

/* Prevent links from turning purple */
a,
a:visited {
  color: #fff;
  text-decoration: none;
}

/* Global Font Bolding */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: 800;
  color: #fff;
}

p,
span,
li,
a {
  font-weight: 500;
}

/* Navigation */
nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  padding: 1.1rem 2rem;
  /* Flat bar. The two 1px light borders plus a drop shadow previously read as
     a thin bright strip across the top, which drew the eye more than the nav
     itself. A solid dark bar needs neither. */
  background: rgba(10, 10, 10, 0.92);
  backdrop-filter: saturate(180%) blur(24px);
  -webkit-backdrop-filter: saturate(180%) blur(24px);
}

nav.navbar {
  min-height: auto;
}

nav .container {
  max-width: 1200px;
  margin: 0 auto;
}

.navbar-brand {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  text-decoration: none;
  color: white;
  font-weight: 700;
  font-size: 1.15rem;
  letter-spacing: -0.02em;
}

nav .navbar-brand img {
  height: 46px !important;
  max-height: 46px;
  width: auto;
  max-width: 150px;
  object-fit: contain;
  /* The logo artwork is black on transparent, which would disappear against
     the near-black navbar. This renders it solid white instead. Remove this
     line if a light version of the logo is supplied. */
  filter: brightness(0) invert(1);
}

/* Bootstrap nav-link overrides for glassmorphic style */
.navbar-nav .nav-link {
  color: rgba(255, 255, 255, 0.9);
  font-weight: 500;
  font-size: 0.95rem;
  letter-spacing: 0.02em;
  padding: 0.4rem 0.8rem;
  border-radius: 8px;
  transition: color 0.25s, background 0.25s;
}

.navbar-nav .nav-link:hover,
.navbar-nav .nav-link:focus {
  color: white;
  background: rgba(255, 255, 255, 0.1);
}

/* Current page. Previously no page indicated where you were. */
.navbar-nav .nav-link.active,
.navbar-nav .nav-link[aria-current="page"] {
  color: #fff;
  background: rgba(255, 255, 255, 0.16);
  font-weight: 700;
}

/* Visible keyboard focus. The browser default outline was being lost against
   the dark navbar. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 3px;
  border-radius: 6px;
}

/* Lets keyboard and screen reader users jump past the nav on every page. */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 1100;
  padding: 0.85rem 1.5rem;
  background: #fff;
  color: #000;
  font-weight: 700;
  border-radius: 0 0 10px 0;
}

.skip-link:focus {
  left: 0;
  color: #000;
}

/* Glossy Cards */
.card {
  background: var(--glass-bg);
  backdrop-filter: saturate(180%) blur(var(--blur-amount));
  -webkit-backdrop-filter: saturate(180%) blur(var(--blur-amount));
  border: 1px solid var(--glass-border);
  border-radius: 24px;
  padding: 3rem;
  margin-bottom: 2rem;
  box-shadow: var(--shadow);
  transition: background 0.3s ease, border-color 0.3s ease;
  animation: reveal 0.6s cubic-bezier(0.2, 0.8, 0.2, 1) backwards;
}

/* Cards no longer lift or bob. Hover is a quiet background and border shift,
   and only where hover is a real pointer - it previously fired on touch too,
   leaving cards stuck in the hovered state after a tap. */
@media (hover: hover) {
  .card:hover {
    background: var(--glass-bg-hover);
    border-color: rgba(255, 255, 255, 0.32);
  }
}

@keyframes reveal {
  from {
    opacity: 0;
    transform: translateY(30px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Main Content Layout */
main {
  max-width: 100%;
  /* Spans full width for background */
  margin: 0;
  padding: 0;
}

.content-wrapper {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 2rem;
}

section {
  margin-bottom: 8rem;
}

.hero {
  height: 80vh;
  /* Taller hero */
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-bottom: 0;
  /* Changed for parallax layout */
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
}

.parallax-section {
  position: relative;
  background: rgba(10, 10, 10, 0.8);
  /* Opaque dark wall, very slightly transparent */
  padding-top: 5vh;
  padding-bottom: 10vh;
  margin-top: 0;
  min-height: 100vh;
  z-index: 1;
}

/* Specific heights for different pages */
.page-home .hero {
  height: 100vh;
}

.page-other .hero {
  height: 66vh;
}

/* Start at bottom third */

.hero h1 {
  font-size: clamp(3.5rem, 10vw, 6rem);
}

.hero p {
  font-size: 1.6rem;
}

/* Sponsor Flip Cards */
.flip-card {
  width: 100%;
  height: 280px;
  perspective: 1000px;
}

.flip-card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
  transform-style: preserve-3d;
}

@media (hover: hover) {
  .flip-card:hover .flip-card-inner {
    transform: rotateY(180deg);
  }
}

.flip-card:focus-within .flip-card-inner,
.flip-card.is-flipped .flip-card-inner {
  transform: rotateY(180deg);
}

.card-front,
.card-back {
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  background: var(--glass-bg);
  backdrop-filter: saturate(180%) blur(var(--blur-amount));
  -webkit-backdrop-filter: saturate(180%) blur(var(--blur-amount));
  border: 1px solid var(--glass-border);
  border-radius: 24px;
  box-shadow: var(--shadow);
}

.card-front img {
  max-width: 80%;
  max-height: 80%;
  object-fit: contain;
}

.card-back {
  background: rgba(0, 0, 0, 0.6);
  transform: rotateY(180deg);
  text-align: center;
}

h1 {
  font-size: clamp(2.5rem, 8vw, 4.5rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  margin-bottom: 1rem;
  text-align: center;
}

h2 {
  font-size: 2.5rem;
  font-weight: 700;
  letter-spacing: -0.03em;
  margin-bottom: 1.5rem;
  text-align: center;
}

h3 {
  font-size: 1.8rem;
  font-weight: 600;
  margin-bottom: 1rem;
  text-align: center;
}

p {
  font-size: 1.2rem;
  color: white;
  font-weight: 500;
  margin-bottom: 1.5rem;
  text-align: center;
}

ol, li {
  font-size: 1.1rem;
  color: white;
  font-weight: 500;
  margin-bottom: 0.75rem;
}

.media-window {
    width: 100%;
    max-width: 820px;
    height: 420px;
    margin-top: 1rem;
    border-radius: 16px;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,0.08);
    background: #000;
}

.media-window video {
    width: 100%;
    height: 100%;
    object-fit: contain;
}



/* Features Grid */
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
}

/* Buttons */
.btn {
  color: white;
  display: inline-block;
  padding: 1rem 2.5rem;
  background: rgba(30, 30, 30, 0.67);
  border: 1px solid rgba(255, 255, 255);
  border-radius: 100px;
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s;
  text-align: center;
}

.btn:hover {
  background: white;
  color: black;
}

/* Timeline Components */
.timeline-year {
  display: inline-block;
  padding: 0.4rem 1.2rem;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 20px;
  font-weight: 700;
  font-size: 0.9rem;
  margin-bottom: 1rem;
}

.timeline-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1.5rem;
  justify-content: center;
}

.tag {
  padding: 0.3rem 1rem;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 12px;
  font-size: 0.85rem;
  color: var(--text-dim);
}

/* ==============================================
   SIMPLE CAROUSEL STYLES
   ============================================== */

.simple-carousel {
  position: relative;
  width: 100%;
  margin: 2rem 0;
  border-radius: 12px;
  overflow: hidden;
}

.carousel-track {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  gap: 1rem;
  padding: 1rem;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.3) rgba(0, 0, 0, 0.2);
}

.carousel-track::-webkit-scrollbar {
  height: 8px;
}

.carousel-track::-webkit-scrollbar-track {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 4px;
}

.carousel-track::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.3);
  border-radius: 4px;
}

.carousel-track::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.5);
}

.carousel-slide {
  flex: 0 0 100%;
  scroll-snap-align: start;
}

.carousel-slide img {
  width: 100%;
  height: auto;
  max-height: 500px;
  object-fit: cover;
  border-radius: 12px;
  display: block;
}

.carousel-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.6);
  color: white;
  border: none;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
  z-index: 10;
}

.carousel-btn:hover {
  background: rgba(0, 0, 0, 0.9);
  transform: translateY(-50%) scale(1.1);
}

.carousel-btn.prev {
  left: 15px;
}

.carousel-btn.next {
  right: 15px;
}

.carousel-btn i {
  font-size: 1.2rem;
}

/* Responsive */
@media (max-width: 768px) {
  .carousel-btn {
    width: 40px;
    height: 40px;
  }
  
  .carousel-btn.prev {
    left: 10px;
  }
  
  .carousel-btn.next {
    right: 10px;
  }
  
  .carousel-slide img {
    max-height: 300px;
  }

  .navbar-brand img {
    height: 28px;
  }

  .navbar-collapse {
    background: rgba(8, 8, 8, 0.85);
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 0 0 16px 16px;
    margin: 0.5rem -2rem 0;
    padding: 0.75rem 1.5rem;
  }

  .navbar-nav .nav-link {
    padding: 0.7rem 1rem;
    border-radius: 10px;
  }

}

footer {
  text-align: center;
  padding: 4rem 2rem;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  color: rgba(255, 255, 255, 0.75);
}

/* ==============================================
   NEWS STRIP (front page)
   Horizontal rail: wheel, drag or keyboard. The
   scrollbar is hidden, so the edge fade and the hint
   are what signal there is more to the right.
   ============================================== */

/* The strip heading sits left, matching the cards below it. */
#announcements > h2 {
  text-align: left;
  margin-bottom: 1.5rem;
}

.news-rail {
  display: flex;
  gap: 1.5rem;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  scroll-behavior: smooth;
  padding: 0.5rem 0 1.5rem;
  /* Hidden scrollbar, still scrollable */
  scrollbar-width: none;
  -ms-overflow-style: none;
  cursor: grab;
}

.news-rail::-webkit-scrollbar {
  display: none;
}

.news-rail.is-dragging {
  cursor: grabbing;
  scroll-behavior: auto;
  /* Stops text selecting while dragging across cards */
  user-select: none;
}

.news-rail.is-short {
  cursor: default;
}

.news-rail:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 4px;
  border-radius: 24px;
}

/* Wide and short rather than thin and tall. */
.news-card {
  flex: 0 0 min(420px, 82vw);
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  background: var(--glass-bg);
  backdrop-filter: saturate(180%) blur(var(--blur-amount));
  -webkit-backdrop-filter: saturate(180%) blur(var(--blur-amount));
  border: 1px solid var(--glass-border);
  border-radius: 20px;
  overflow: hidden;
  box-shadow: var(--shadow);
  transition: background 0.3s ease, border-color 0.3s ease;
}

@media (hover: hover) {
  .news-card:hover {
    background: var(--glass-bg-hover);
    border-color: rgba(255, 255, 255, 0.32);
  }
}

.news-image {
  width: 100%;
  height: 190px;
  object-fit: cover;
  display: block;
  /* Dragging an image would otherwise start a native image drag */
  pointer-events: none;
  user-select: none;
}

.news-body {
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.news-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.9rem;
}

.news-date {
  font-size: 0.85rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.75);
}

.news-card h3 {
  font-size: 1.35rem;
  text-align: left;
  margin-bottom: 0.75rem;
}

.news-card p {
  font-size: 1rem;
  line-height: 1.65;
  text-align: left;
  color: var(--text-dim);
  margin-bottom: 0;
  flex: 1;
}

/* Grouped lists inside a news card, e.g. Nationals / Regionals placements. */
.news-section {
  margin-top: 1.1rem;
}

.news-section-heading {
  font-size: 0.8rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.72);
  margin: 0 0 0.5rem;
  text-align: left;
}

.news-list {
  list-style: none;
  margin: 0;
  padding: 0;
  /* Two columns once the card is wide enough, so a nine-item list does not
     make this card tower over the others in the strip. */
  columns: 2;
  column-gap: 1.25rem;
}

.news-list li {
  font-size: 0.9rem;
  line-height: 1.5;
  margin-bottom: 0.3rem;
  padding-left: 0.85rem;
  position: relative;
  break-inside: avoid;
  color: var(--text-dim);
}

.news-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.55);
}

@media (max-width: 480px) {
  .news-list {
    columns: 1;
  }
}

.news-link {
  align-self: flex-start;
  margin-top: 1.25rem;
  font-weight: 700;
  font-size: 0.95rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.45);
  padding-bottom: 2px;
}

.news-link:hover {
  border-bottom-color: #fff;
}

@media (max-width: 700px) {
  .news-image {
    height: 160px;
  }

  .news-body {
    padding: 1.4rem;
  }
}

/* ==============================================
   FORM STATUS MESSAGE
   ============================================== */

.form-status {
  margin: 1.5rem 0 0;
  padding: 1rem 1.25rem;
  border-radius: 12px;
  font-size: 1rem;
  text-align: left;
  border: 1px solid transparent;
}

/* Never signal success or failure by colour alone: each state also carries
   a leading symbol. */
.form-status.is-success {
  background: rgba(46, 204, 113, 0.14);
  border-color: rgba(46, 204, 113, 0.45);
}

.form-status.is-success::before {
  content: "\2713\00a0\00a0";
  font-weight: 700;
}

.form-status.is-error {
  background: rgba(231, 76, 60, 0.16);
  border-color: rgba(231, 76, 60, 0.5);
}

.form-status.is-error::before {
  content: "\26a0\00a0\00a0";
  font-weight: 700;
}

/* ==============================================
   REDUCED MOTION
   ============================================== */

@media (prefers-reduced-motion: reduce) {

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ==============================================
   SQUARE FEATURE GRID
   Locked to 2x2 on desktop so the four blocks always
   read as a square, rather than reflowing to 3+1.
   ============================================== */

.grid-square {
  grid-template-columns: repeat(2, 1fr);
  max-width: 900px;
  margin-inline: auto;
}

.grid-square .card {
  /* Equal-height square tiles; content is centred within. */
  aspect-ratio: 1 / 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem;
  margin-bottom: 0;
}

.grid-square .card h3 {
  margin-bottom: 1rem;
}

.grid-square .card p {
  margin-bottom: 0;
  font-size: 1.05rem;
}

@media (max-width: 700px) {
  .grid-square {
    grid-template-columns: 1fr;
  }

  /* A forced square gets very tall in one column, so release it. */
  .grid-square .card {
    aspect-ratio: auto;
    padding: 2rem;
  }
}

/* ==============================================
   NEWS: EMBEDDED SOCIAL POSTS
   LinkedIn/Instagram embeds have their own fixed
   chrome, so the card gives them room rather than
   trying to restyle them.
   ============================================== */

/* LinkedIn serves this embed at 504x628. The card is that plus the padding
   either side, so the glass frame stays visible around the embed instead of
   the iframe bleeding to the card edges. */
.news-card--embed {
  flex: 0 0 min(552px, 90vw);
}

.news-embed {
  position: relative;
  width: 100%;
  height: 628px;
  padding: 1.25rem 1.25rem 0;
}

.news-embed iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  border-radius: 14px;
  /* These embeds render light, so a white base avoids a dark flash while the
     iframe loads. */
  background: #fff;
}

/* The embed carries its own date and author, so the strip only adds a thin
   label above it. */
.news-body--embed {
  padding: 1.1rem 1.5rem 1.4rem;
  flex: 0 0 auto;
}

.news-body--embed h3 {
  font-size: 1.1rem;
  margin-bottom: 0;
}

@media (max-width: 700px) {
  .news-embed {
    height: 560px;
    padding: 1rem 1rem 0;
  }
}

/* Video embeds are 16:9, unlike the tall LinkedIn/Instagram post embeds. */
.news-card--video {
  flex: 0 0 min(560px, 90vw);
}

.news-embed--video {
  height: auto;
  aspect-ratio: 16 / 9;
  padding: 1.25rem 1.25rem 0;
}

.news-embed--video iframe {
  background: #000;
}

/* About page: subteams as one gapless block of purple pieces. */
.subteams-lead {
  text-align: center;
  color: var(--text-dim);
  opacity: 0.85;
  margin: -0.5rem 0 1.5rem;
}

.puzzle-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;                       /* touching = one block */
  max-width: 900px;
  margin: 2rem auto 0;
  border-radius: 20px;
  overflow: hidden;            /* round just the outer corners */
}

.puzzle-piece {
  position: relative;
  min-height: 200px;
  animation: joinIn 0.6s cubic-bezier(0.2, 0.8, 0.2, 1) backwards;
}

/* Muted purple, a slightly different tone per block. */
.piece-bg { position: absolute; inset: 0; z-index: 0; background: #5f5878; }
.puzzle-piece:nth-child(1) .piece-bg { background: #675f80; }
.puzzle-piece:nth-child(2) .piece-bg { background: #726a8d; }
.puzzle-piece:nth-child(3) .piece-bg { background: #5f5878; }
.puzzle-piece:nth-child(4) .piece-bg { background: #7b7295; }
.puzzle-piece:nth-child(5) .piece-bg { background: #6d6486; }
.puzzle-piece:nth-child(6) .piece-bg { background: #565070; }
.puzzle-piece:nth-child(7) .piece-bg { background: #746b90; }
.piece--hero .piece-bg { background: #837b9c; }

.piece-body {
  position: relative;
  z-index: 1;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  padding: 1.6rem 1.4rem;
  box-sizing: border-box;
}
.piece-body h3 { margin: 0 0 0.4rem; font-size: 1.1rem; color: #fff; }
.piece-body p { margin: 0; font-size: 0.85rem; line-height: 1.4; color: rgba(255, 255, 255, 0.9); }

/* Blocks slide in from the outside and lock together. */
@keyframes joinIn {
  from { opacity: 0; transform: translate(var(--jx, 0), var(--jy, 0)); }
  to   { opacity: 1; transform: none; }
}
.puzzle-piece:nth-child(1) { --jx: -50px; --jy: -40px; animation-delay: 0.00s; }
.puzzle-piece:nth-child(2) { --jx: -18px; --jy: -46px; animation-delay: 0.05s; }
.puzzle-piece:nth-child(3) { --jx:  18px; --jy: -46px; animation-delay: 0.10s; }
.puzzle-piece:nth-child(4) { --jx:  50px; --jy: -40px; animation-delay: 0.15s; }
.puzzle-piece:nth-child(5) { --jx: -50px; --jy:  40px; animation-delay: 0.20s; }
.puzzle-piece:nth-child(6) { --jx: -18px; --jy:  46px; animation-delay: 0.25s; }
.puzzle-piece:nth-child(7) { --jx:  18px; --jy:  46px; animation-delay: 0.30s; }
.puzzle-piece:nth-child(8) { --jx:  50px; --jy:  40px; animation-delay: 0.35s; }

@media (max-width: 720px) {
  .puzzle-grid { grid-template-columns: repeat(2, 1fr); max-width: 460px; }
}
