/* ═══════════════════════════════════════════════════════
   Rahul Ramaswamy — Portfolio
   Dark & luxurious: deep navy-charcoal, ivory type, gold accents
   ═══════════════════════════════════════════════════════ */

:root {
  --bg:        #0b0e14;
  --bg-alt:    #0f131c;
  --bg-card:   #131824;
  --ivory:     #f2ede2;
  --muted:     #98a0ad;
  --gold:      #c9a227;
  --gold-soft: #e2c46b;
  --hairline:  rgba(201, 162, 39, 0.22);
  --serif: "Cormorant Garamond", Georgia, serif;
  --sans:  "Inter", -apple-system, "Segoe UI", sans-serif;
}

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

html { scroll-behavior: smooth; }

body {
  background: var(--bg);
  color: var(--ivory);
  font-family: var(--sans);
  font-weight: 300;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

::selection { background: var(--gold); color: var(--bg); }

/* Stop the page scrolling behind the open mobile menu */
body.menu-open { overflow: hidden; }

.gold { color: var(--gold); }

/* Subtle film grain for a tactile, expensive feel */
.grain {
  position: fixed; inset: 0; z-index: 0; pointer-events: none; opacity: .35;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.03 0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}

section, header, footer { position: relative; z-index: 1; }

/* ── Typography ── */
h1, h2, h3 { font-family: var(--serif); font-weight: 500; line-height: 1.08; }

h1 { font-size: clamp(3.2rem, 8vw, 6rem); letter-spacing: .01em; }

h2 { font-size: clamp(2.1rem, 4.5vw, 3.4rem); margin: .4rem 0 2.8rem; }
h2 em { font-style: italic; color: var(--gold-soft); }

.eyebrow {
  font-size: .78rem; letter-spacing: .34em; text-transform: uppercase;
  color: var(--gold); font-weight: 500;
}

/* ── Nav ── */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  transition: background .4s, box-shadow .4s, border-color .4s;
  border-bottom: 1px solid transparent;
}
.nav.scrolled {
  background: rgba(11, 14, 20, .85);
  backdrop-filter: blur(14px);
  border-bottom-color: var(--hairline);
}
.nav-inner {
  max-width: 1200px; margin: 0 auto; padding: 1.1rem 2rem;
  display: flex; align-items: center; justify-content: space-between;
}
.nav-logo {
  font-family: var(--serif); font-size: 1.5rem; letter-spacing: .12em;
  color: var(--ivory); text-decoration: none;
}
.nav-links { display: flex; align-items: center; gap: 2.4rem; }
.nav-links a {
  color: var(--muted); text-decoration: none; font-size: .82rem;
  letter-spacing: .18em; text-transform: uppercase; font-weight: 400;
  transition: color .3s;
}
.nav-links a:hover { color: var(--gold-soft); }
.nav-cta {
  border: 1px solid var(--hairline); padding: .55em 1.4em; border-radius: 2em;
  color: var(--gold-soft) !important; transition: background .3s, color .3s !important;
}
.nav-cta:hover { background: var(--gold); color: var(--bg) !important; }
.nav-toggle { display: none; }

/* ── Hero ── */
.hero {
  min-height: 100vh; display: flex; flex-direction: column; justify-content: center;
  padding: 7rem 2rem 4rem; position: relative;
  /* svh tracks the visible area, so mobile browser toolbars don't clip the hero */
  min-height: 100svh;
  background:
    radial-gradient(ellipse 60% 45% at 78% 30%, rgba(201,162,39,.09), transparent 60%),
    radial-gradient(ellipse 50% 40% at 15% 85%, rgba(50,70,120,.14), transparent 65%);
}
.hero-inner {
  max-width: 1200px; margin: 0 auto; width: 100%;
  display: grid; grid-template-columns: 1.25fr 1fr; gap: 4rem; align-items: center;
}
.hero-tagline {
  font-size: 1.18rem; color: var(--muted); max-width: 34em; margin-top: 1.6rem;
}
.gold-rule { width: 72px; height: 1px; background: var(--gold); margin-top: 2rem; }

.hero-actions { display: flex; gap: 1.1rem; margin-top: 2.6rem; flex-wrap: wrap; }
.btn {
  text-decoration: none; font-size: .82rem; letter-spacing: .2em; text-transform: uppercase;
  padding: 1em 2.2em; border-radius: 2.5em; font-weight: 500;
  transition: transform .3s, box-shadow .3s, background .3s, color .3s;
}
.btn-gold { background: var(--gold); color: #14100a; }
.btn-gold:hover { transform: translateY(-2px); box-shadow: 0 10px 32px rgba(201,162,39,.28); }
.btn-ghost { border: 1px solid var(--hairline); color: var(--ivory); }
.btn-ghost:hover { border-color: var(--gold); color: var(--gold-soft); }

.hero-social { display: flex; gap: 1.4rem; margin-top: 2.8rem; }
.hero-social a { color: var(--muted); transition: color .3s, transform .3s; }
.hero-social a:hover { color: var(--gold-soft); transform: translateY(-2px); }
.hero-social svg { width: 21px; height: 21px; }

.hero-portrait { display: flex; justify-content: center; }
.portrait-frame {
  position: relative; width: min(340px, 80vw); aspect-ratio: 851/946;
  border-radius: 50% 50% 46% 46% / 42% 42% 56% 56%;
  overflow: hidden;
  box-shadow: 0 30px 80px rgba(0,0,0,.55);
}
.portrait-frame::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  border: 1px solid rgba(201,162,39,.45);
  box-shadow: inset 0 0 60px rgba(11,14,20,.35);
}
.portrait-frame img { width: 100%; height: 100%; object-fit: cover; display: block; }

.scroll-hint {
  position: absolute; left: 50%; bottom: 2.2rem; transform: translateX(-50%);
  width: 26px; height: 44px; border: 1px solid var(--hairline); border-radius: 14px;
}
.scroll-hint span {
  position: absolute; left: 50%; top: 8px; width: 3px; height: 8px;
  background: var(--gold); border-radius: 2px; transform: translateX(-50%);
  animation: drip 2.2s infinite ease-in-out;
}
/* Transform rather than `top`, so the dot is composited instead of re-laid-out */
@keyframes drip {
  0%, 100% { transform: translate(-50%, 0);    opacity: 1; }
  55%      { transform: translate(-50%, 16px); opacity: 0; }
}

/* ── Decorative flight path ── */
.hero-path {
  position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none;
}
.hero-path path {
  fill: none; stroke: var(--gold); stroke-width: 1.2;
  stroke-dasharray: 7 9; opacity: .22;
}
.hero-path circle { fill: var(--gold); opacity: .38; }

.section-lede {
  color: var(--muted); max-width: 46em; font-size: 1.05rem; margin-bottom: 3rem;
}
.section-lede strong { color: var(--ivory); font-weight: 500; }
.lede-centered { margin-left: auto; margin-right: auto; }
.center { text-align: center; }
.mt-lg { margin-top: 2.6rem; }
.rule-centered { margin: 0 auto 1.6rem; }

/* ── What I Do: pillars ── */
.pillar-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.8rem; }
.pillar {
  background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 10px;
  padding: 2.4rem 2.2rem; transition: transform .35s, border-color .35s;
}
.pillar:hover { transform: translateY(-4px); border-color: rgba(201,162,39,.5); }
.pillar h4 {
  font-family: var(--serif); font-size: 1.45rem; font-weight: 500; margin-bottom: .8rem;
}
/* Slim gold rule replaces the old numeral as the card's visual anchor */
.pillar h4::before {
  content: ""; display: block; width: 30px; height: 1px;
  background: var(--gold); margin-bottom: 1.1rem;
}
.pillar p { color: var(--muted); font-size: .93rem; margin-bottom: 1.4rem; }

/* ── Ports of call (career strip) ── */
.waypoints { margin-top: 4rem; }
.waypoints-title {
  font-size: .78rem; letter-spacing: .34em; text-transform: uppercase;
  color: var(--gold); font-weight: 500; margin-bottom: 1.6rem;
}
.waypoint-strip {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 0;
  border-top: 1px solid var(--hairline);
}
.waypoint {
  padding: 1.5rem 1.2rem 0 0; position: relative;
  display: flex; flex-direction: column; gap: .2rem;
}
.waypoint::before {
  content: ""; position: absolute; top: -4px; left: 0;
  width: 7px; height: 7px; border-radius: 50%; background: var(--gold);
}
.wp-org { font-family: var(--serif); font-size: 1.12rem; }
.wp-role { color: var(--muted); font-size: .82rem; }
.wp-loc { color: var(--gold-soft); font-size: .74rem; letter-spacing: .18em; text-transform: uppercase; margin-top: .3rem; }

/* ── Sections ── */
.section { padding: 7.5rem 2rem; }
.section-alt { background: var(--bg-alt); border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); }
.section-inner { max-width: 1200px; margin: 0 auto; }

/* ── About ── */
.about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3.5rem; }
.about-col p { color: var(--muted); margin-bottom: 1.4rem; font-size: 1.04rem; }
.about-col strong { color: var(--ivory); font-weight: 500; }

.edu-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1.6rem; margin-top: 3.2rem; }
.edu-card {
  background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 10px;
  padding: 1.8rem 2rem; display: flex; flex-direction: column; gap: .3rem;
  transition: transform .35s, border-color .35s;
}
.edu-card:hover { transform: translateY(-4px); border-color: rgba(201,162,39,.5); }
.edu-degree { font-family: var(--serif); font-size: 1.35rem; }
.edu-degree em { color: var(--gold-soft); }
.edu-school { color: var(--ivory); font-weight: 400; font-size: .95rem; }
.edu-meta { color: var(--muted); font-size: .82rem; letter-spacing: .08em; }

/* ── Beyond Work teasers ── */
.teaser-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.4rem; }
.teaser-card {
  position: relative; display: flex; flex-direction: column; justify-content: flex-end;
  min-height: 300px; border-radius: 10px; overflow: hidden; text-decoration: none;
  background-size: cover; background-position: center;
  border: 1px solid var(--hairline);
  transition: transform .4s, border-color .4s;
}
/* Tile artwork lives here rather than in inline style attributes: HTML
   minifiers re-quote attributes and can mangle nested quotes in url(). */
.t-sky   { background-image: url("assets/aviation/av-wing.jpg"); }
.t-shelf { background-image: url("assets/books/TheAlchemist.jpg"); }
.t-trail { background-image: url("assets/nature/n-alpine-lake.jpg"); }
.t-sound { background-image: url("assets/art/sound.svg"); }
.t-game  { background-image: url("assets/art/game.svg"); }

/* Keeps the label readable while leaving the top two-thirds of the image clear */
.teaser-card::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg,
    rgba(11,14,20,.05) 0%,
    rgba(11,14,20,.22) 45%,
    rgba(11,14,20,.93) 100%);
  transition: background .4s;
}
.teaser-card:hover::before {
  background: linear-gradient(180deg,
    rgba(11,14,20,0) 0%,
    rgba(11,14,20,.14) 45%,
    rgba(11,14,20,.9) 100%);
}
.teaser-card:hover { transform: translateY(-6px); border-color: rgba(201,162,39,.55); }
.teaser-label {
  position: relative; font-family: var(--serif); font-size: 1.6rem; color: var(--ivory);
  padding: 0 1.6rem .1rem;
}
.teaser-sub {
  position: relative; color: var(--gold-soft); font-size: .76rem; letter-spacing: .22em;
  text-transform: uppercase; padding: 0 1.6rem 1.5rem;
}
/* No `background` shorthand here — it would reset the cover sizing inherited
   from .teaser-card and stop the artwork filling the tile. */
.teaser-sound .eq { position: relative; margin: 0 1.6rem 1.2rem; }
.teaser-icon { position: relative; width: 30px; height: 30px; color: var(--gold); margin: 0 1.6rem 1rem; }

/* ── Equalizer motif ── */
/* Block-level flex, not inline-flex: as an inline box its baseline shifted with
   the bars, resizing the line box and jolting everything below it every frame.
   Bars are full height and scaled with transform, which never triggers layout. */
.eq { display: flex; align-items: flex-end; gap: 4px; height: 26px; }
.eq i {
  width: 4px; height: 26px; background: var(--gold); border-radius: 2px;
  transform: scaleY(.25); transform-origin: bottom;
  animation: eqbounce 1.1s ease-in-out infinite;
}
.eq i:nth-child(2) { animation-delay: .15s; }
.eq i:nth-child(3) { animation-delay: .3s; }
.eq i:nth-child(4) { animation-delay: .45s; }
.eq i:nth-child(5) { animation-delay: .6s; }
@keyframes eqbounce {
  0%, 100% { transform: scaleY(.25); }
  50%      { transform: scaleY(1); }
}

.chips { display: flex; flex-wrap: wrap; gap: .6rem; }
.chips span {
  font-size: .82rem; color: var(--ivory); border: 1px solid rgba(242,237,226,.16);
  padding: .42em 1.05em; border-radius: 2em; letter-spacing: .04em;
  transition: border-color .3s, color .3s;
}
.chips span:hover { border-color: var(--gold); color: var(--gold-soft); }

/* ── Beyond page: hero ── */
.page-hero {
  position: relative; padding: 11rem 2rem 6rem;
  background:
    radial-gradient(ellipse 60% 45% at 75% 20%, rgba(201,162,39,.09), transparent 60%),
    radial-gradient(ellipse 50% 40% at 12% 90%, rgba(50,70,120,.14), transparent 65%);
}
.page-hero-inner { max-width: 1200px; margin: 0 auto; }
.page-title { font-size: clamp(2.8rem, 7vw, 5rem); font-family: var(--serif); font-weight: 500; line-height: 1.05; }
.page-title em { font-style: italic; color: var(--gold-soft); }
.page-hero .hero-tagline { margin-top: 1.4rem; }

/* ── Galleries ── */
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 240px; gap: 1.4rem; grid-auto-flow: dense; }
.g-item {
  position: relative; border-radius: 10px; overflow: hidden; cursor: zoom-in;
  border: 1px solid var(--hairline); margin: 0;
  transition: transform .4s, border-color .4s;
}
.g-item:hover { transform: translateY(-4px); border-color: rgba(201,162,39,.55); }
.g-tall { grid-row: span 2; }
.g-item img, .g-item video {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .6s ease;
}
.g-item:hover img { transform: scale(1.04); }
.g-video { cursor: default; grid-row: span 2; }
.g-item figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 2.2rem 1.3rem .9rem;
  font-size: .8rem; letter-spacing: .06em; color: var(--ivory);
  background: linear-gradient(180deg, transparent, rgba(11,14,20,.88));
  pointer-events: none;
}
/* Video caption sits on top so it never covers the playback controls */
.g-video figcaption {
  top: 0; bottom: auto; padding: .9rem 1.3rem 2.2rem;
  background: linear-gradient(180deg, rgba(11,14,20,.9), transparent);
}

/* ── Bookshelf ── */
.bookshelf { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.8rem 1.4rem; }
.book { margin: 0; text-align: center; }
.book img {
  width: 100%; aspect-ratio: 2/3; object-fit: cover; border-radius: 6px; display: block;
  box-shadow: 0 14px 34px rgba(0,0,0,.5);
  border: 1px solid rgba(242,237,226,.08);
  transition: transform .35s, box-shadow .35s;
}
.book:hover img { transform: translateY(-6px) rotate(-1deg); box-shadow: 0 22px 44px rgba(0,0,0,.65); }
.book figcaption { margin-top: .9rem; line-height: 1.35; }
.book figcaption strong { display: block; font-family: var(--serif); font-weight: 500; font-size: .98rem; }
.book figcaption span { color: var(--muted); font-size: .76rem; letter-spacing: .04em; }

/* ── Music genres ── */
.genre-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.4rem; }
.genre {
  background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 10px;
  padding: 1.8rem 1.5rem; transition: transform .35s, border-color .35s;
}
.genre:hover { transform: translateY(-4px); border-color: rgba(201,162,39,.5); }
.genre h4 { font-family: var(--serif); font-size: 1.25rem; font-weight: 500; margin: 1rem 0 .4rem; }
.genre p { color: var(--muted); font-size: .84rem; line-height: 1.6; }

/* ── Gaming ── */
.game-inner { text-align: center; }
.steam-btn { display: inline-flex; align-items: center; gap: .7em; }
.steam-btn svg { width: 20px; height: 20px; }

.practice { margin-top: 4.5rem; text-align: center; }
.practice-line {
  font-family: var(--serif); font-size: clamp(1.2rem, 2.4vw, 1.6rem);
  max-width: 30em; margin: 0 auto; color: var(--ivory);
}
.practice-line em { color: var(--gold-soft); }

/* ── Lightbox ── */
.lightbox {
  position: fixed; inset: 0; z-index: 200; background: rgba(7, 9, 13, .94);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none; transition: opacity .3s;
}
.lightbox.open { opacity: 1; pointer-events: auto; }
.lightbox img {
  max-width: 92vw; max-height: 90vh; border-radius: 8px;
  box-shadow: 0 40px 120px rgba(0,0,0,.8);
}
.lightbox-close {
  position: absolute; top: 1.2rem; right: 1.8rem; background: none; border: none;
  color: var(--ivory); font-size: 2.6rem; cursor: pointer; line-height: 1;
  transition: color .3s;
}
.lightbox-close:hover { color: var(--gold-soft); }

/* ── Contact ── */
.contact {
  padding: 8rem 2rem 6rem; text-align: center;
  background: radial-gradient(ellipse 55% 50% at 50% 100%, rgba(201,162,39,.08), transparent 65%);
}
.contact-lede { color: var(--muted); max-width: 34em; margin: 0 auto 2.6rem; font-size: 1.05rem; }
.contact-email {
  display: inline-block; max-width: 100%; overflow-wrap: break-word;
  font-family: var(--serif); font-size: clamp(1.25rem, 3.6vw, 2.6rem); color: var(--ivory);
  text-decoration: none; border-bottom: 1px solid var(--hairline); padding-bottom: .15em;
  transition: color .3s, border-color .3s;
}
.contact-email:hover { color: var(--gold-soft); border-color: var(--gold); }
.contact-links { margin-top: 2.4rem; display: flex; justify-content: center; gap: 1.2rem; align-items: center; }
.contact-links a {
  color: var(--muted); text-decoration: none; font-size: .84rem; letter-spacing: .22em; text-transform: uppercase;
  transition: color .3s;
}
.contact-links a:hover { color: var(--gold-soft); }

/* ── Footer ── */
.footer {
  border-top: 1px solid var(--hairline); padding: 2rem; text-align: center;
  color: var(--muted); font-size: .8rem; letter-spacing: .08em;
}

/* ── Reveal animations ── */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .9s ease, transform .9s ease; }
.reveal.visible { opacity: 1; transform: none; }
.delay-1 { transition-delay: .12s; }
.delay-2 { transition-delay: .24s; }
.delay-3 { transition-delay: .36s; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .scroll-hint span { animation: none; }
  .eq i { animation: none; transform: scaleY(.55); }
}

/* ── Responsive ── */

/* Tablets & small laptops (iPad Pro portrait is 1024px wide) */
@media (max-width: 1100px) {
  .teaser-grid { grid-template-columns: repeat(3, 1fr); }
  .genre-grid { grid-template-columns: repeat(3, 1fr); }
  .bookshelf { grid-template-columns: repeat(4, 1fr); gap: 1.6rem 1.2rem; }
  .waypoint-strip { grid-template-columns: repeat(3, 1fr); gap: 1.2rem 1rem; }
  .pillar-grid { gap: 1.2rem; }
  .pillar { padding: 2rem 1.6rem; }
  .nav-links { gap: 1.7rem; }
  .section { padding: 6.5rem 2rem; }
}

@media (max-width: 960px) {
  .hero-inner { grid-template-columns: 1fr; gap: 3rem; text-align: center; }
  .hero-text { order: 2; display: flex; flex-direction: column; align-items: center; }
  .hero-portrait { order: 1; }
  .portrait-frame { width: min(250px, 62vw); }
  .about-grid, .edu-cards, .pillar-grid { grid-template-columns: 1fr; }
  .teaser-grid, .genre-grid { grid-template-columns: 1fr 1fr; }
  .waypoint-strip { grid-template-columns: 1fr 1fr; gap: 1.4rem 1rem; }
  .gallery { grid-template-columns: 1fr 1fr; grid-auto-rows: 200px; }
  .bookshelf { grid-template-columns: repeat(3, 1fr); }
  .page-hero { padding-top: 9rem; }

  /* The scroll cue sits dead-centre at the bottom of the hero, which on a
     phone lands on top of the social icons. Phones don't need the hint. */
  .scroll-hint { display: none; }

  /* backdrop-filter makes .nav the containing block for any fixed-position
     descendant, which trapped the full-screen menu inside the 60px-tall bar.
     A solid bar on mobile keeps the overlay anchored to the viewport. */
  .nav.scrolled { backdrop-filter: none; background: rgba(11,14,20,.96); }

  .nav-links {
    position: fixed; inset: 0; background: var(--bg);
    flex-direction: column; justify-content: center; gap: 2.2rem;
    opacity: 0; pointer-events: none; transition: opacity .35s;
    overflow-y: auto; padding: 6rem 1.5rem 3rem;
  }
  .nav-links.open { opacity: 1; pointer-events: auto; }
  .nav-links a { font-size: 1.05rem; }
  /* Keep the monogram legible above the open overlay, next to the close button */
  .nav-logo { position: relative; z-index: 110; }
  .nav-toggle {
    display: flex; flex-direction: column; gap: 6px; background: none; border: none;
    cursor: pointer; z-index: 110; padding: 6px;
  }
  .nav-toggle span { width: 26px; height: 1.5px; background: var(--ivory); transition: transform .3s, opacity .3s; }
  .nav-toggle.open span:first-child { transform: translateY(4px) rotate(45deg); }
  .nav-toggle.open span:last-child { transform: translateY(-3.5px) rotate(-45deg); }
}

@media (max-width: 520px) {
  .teaser-grid, .genre-grid, .gallery { grid-template-columns: 1fr; }
  .waypoint-strip { grid-template-columns: 1fr; }
  .bookshelf { grid-template-columns: 1fr 1fr; }
  .section { padding: 5.5rem 1.4rem; }
  .page-hero { padding: 8rem 1.4rem 4rem; }
  .contact { padding: 6rem 1.4rem 4.5rem; }

  /* One photo per row: size each tile by its own shape instead of a fixed
     row height, so portrait shots aren't cropped to a letterbox. */
  .gallery { grid-auto-rows: auto; }
  .g-item { aspect-ratio: 4 / 3; grid-row: span 1; }
  .g-tall { aspect-ratio: 3 / 4; }
  .g-video { aspect-ratio: 16 / 9; }
}
