:root {
  --ink: #18313a;
  --ink-2: #24424b;
  --cream: #fffaf0;
  --paper: #fffdf7;
  --sand: #f2e5c9;
  --accent: #f2a23a;
  --accent-dark: #c8750d;
  --leaf: #6f8e61;
  --line: rgba(24,49,58,.14);
  --shadow: 0 22px 60px rgba(24,49,58,.10);
  --radius: 24px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: "DM Sans", system-ui, sans-serif; line-height: 1.62; }
a { color: inherit; }
img { max-width: 100%; display: block; }
.container { width: min(1120px, calc(100% - 40px)); margin: 0 auto; }
.site-header { position: sticky; top: 0; z-index: 10; background: rgba(255,253,247,.94); backdrop-filter: blur(12px); border-bottom: 1px solid var(--line); }
.header-inner { min-height: 82px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.brand { display: flex; align-items: center; gap: 14px; text-decoration: none; min-width: 0; }
.brand img { width: 185px; height: auto; }
.tagline { font-size: .88rem; color: var(--leaf); font-weight: 600; letter-spacing: .02em; white-space: nowrap; }
.main-nav { display: flex; align-items: center; gap: 8px; font-size: .92rem; }
.main-nav a { text-decoration: none; padding: 9px 11px; border-radius: 10px; }
.main-nav a:hover { background: var(--sand); }
.main-nav .nav-cta { background: var(--ink); color: white; padding-inline: 14px; }
.nav-toggle { display: none; border: 1px solid var(--line); background: var(--paper); border-radius: 10px; padding: 10px 12px; font: inherit; color: var(--ink); }
.hero { padding: 72px 0 78px; background: radial-gradient(circle at 10% 10%, #fff7d8 0, rgba(255,247,216,.4) 24%, transparent 52%), linear-gradient(180deg, #f7efe0, #fffdf7); }
.hero-grid { display: grid; grid-template-columns: 1fr 1.02fr; gap: 58px; align-items: center; }
.eyebrow { margin: 0 0 8px; color: var(--leaf); text-transform: uppercase; letter-spacing: .14em; font-weight: 700; font-size: .78rem; }
.hero h1, h2, h3 { font-family: "Playfair Display", Georgia, serif; line-height: 1.12; letter-spacing: -.02em; }
.hero h1 { font-size: clamp(3.3rem, 7vw, 5.4rem); margin: 0 0 20px; }
.lead { font-size: 1.18rem; max-width: 56ch; color: var(--ink-2); }
.hero-actions, .button-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 11px 17px; border-radius: 12px; text-decoration: none; font-weight: 700; border: 1px solid transparent; transition: transform .18s ease, box-shadow .18s ease, background .18s ease; }
.button:hover { transform: translateY(-1px); }
.button-primary { background: var(--accent); color: #1b2a2f; box-shadow: 0 10px 22px rgba(242,162,58,.24); }
.button-primary:hover { background: #f6ad4e; }
.button-secondary { background: white; border-color: var(--line); }
.button-outline { background: transparent; border-color: rgba(24,49,58,.28); }
.button-outline:hover { background: var(--sand); }
.text-link { font-weight: 700; text-decoration: none; }
.text-link:hover { text-decoration: underline; }
.quick-note { margin-top: 22px; display: inline-flex; align-items: center; gap: 9px; color: var(--ink-2); font-size: .94rem; }
.dot { width: 9px; height: 9px; border-radius: 50%; background: var(--leaf); box-shadow: 0 0 0 5px rgba(111,142,97,.14); }
.hero-media { margin: 0; position: relative; }
.hero-media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 30px; box-shadow: var(--shadow); }
.hero-media figcaption { position: absolute; left: 18px; bottom: 18px; max-width: 70%; background: rgba(255,253,247,.9); padding: 9px 12px; border-radius: 12px; font-size: .84rem; }
.section { padding: 92px 0; }
.section-soft { background: var(--cream); }
.section-ink { background: var(--ink); color: white; }
.section-accent { background: #f7e7c6; }
.section-heading { margin-bottom: 34px; }
.section-heading h2, .story-body h2, .mail-grid h2 { margin: 0 0 14px; font-size: clamp(2rem, 5vw, 3.2rem); }
.section-heading p:last-child { margin: 0; color: var(--ink-2); }
.section-heading.light p:last-child { color: rgba(255,255,255,.78); }
.split-card { display: grid; grid-template-columns: 1.25fr .75fr; gap: 32px; align-items: center; padding: 38px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }
.art-card { background: #f9f2e4; border-radius: 18px; padding: 20px; display: flex; justify-content: center; }
.art-card img { max-height: 420px; width: auto; box-shadow: 0 10px 30px rgba(0,0,0,.10); }
.fine-print { color: #587078; font-size: .86rem; margin-bottom: 0; }
.meetup-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 30px; align-items: stretch; }
.location-card, .mail-form-card { border: 1px solid var(--line); border-radius: var(--radius); background: white; padding: 34px; box-shadow: 0 12px 35px rgba(24,49,58,.08); }
.location-icon { font-size: 2rem; color: var(--leaf); }
.location-card h3 { font-size: 1.8rem; margin: 6px 0 10px; }
.address { font-size: 1.06rem; }
.meetup-photo { margin: 0; overflow: hidden; border-radius: var(--radius); min-height: 320px; }
.meetup-photo img { width: 100%; height: 100%; object-fit: cover; }
.leaders-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.leader-card { display: grid; grid-template-columns: 145px 1fr; gap: 24px; padding: 28px; border-radius: 22px; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); }
.leader-card img { width: 145px; height: 180px; object-fit: cover; border-radius: 18px; }
.leader-card .eyebrow { color: #dcb17a; }
.leader-card h3 { margin: 0 0 10px; font-size: 2rem; }
.leader-card p { color: rgba(255,255,255,.88); }
.conversation { margin-bottom: 0; }
.story-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; }
.story-card { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: #fff; box-shadow: 0 10px 35px rgba(24,49,58,.06); }
.story-image img { width: 100%; aspect-ratio: 16/9; object-fit: cover; }
.story-body { padding: 26px 28px 30px; }
.placeholder-copy { color: #60757c; }
.mail-grid { display: grid; grid-template-columns: .95fr 1.05fr; gap: 34px; align-items: center; }
.mail-form-card { min-height: 190px; }
.form-label { margin: 0 0 8px; font-weight: 800; }
.form-help { margin: 0 0 18px; color: #64777d; }
.gallery-grid { display: grid; grid-template-columns: 1.1fr 1fr 1fr; grid-auto-rows: 250px; gap: 16px; }
.gallery-item, .gallery-placeholder { position: relative; overflow: hidden; border-radius: 18px; margin: 0; background: #ece4d7; border: 1px solid var(--line); }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.gallery-item:hover img { transform: scale(1.035); }
.gallery-item figcaption { position: absolute; left: 10px; right: 10px; bottom: 10px; background: rgba(24,49,58,.84); color: white; padding: 8px 10px; border-radius: 10px; font-size: .82rem; }
.gallery-tall { grid-row: span 2; }
.gallery-placeholder { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 20px; border: 1px dashed rgba(24,49,58,.28); color: #6a7a7f; }
.gallery-placeholder span { font-weight: 800; color: var(--ink); }
.gallery-placeholder small { margin-top: 5px; }
.archive-teaser { border-top: 1px solid var(--line); }
.archive-teaser-inner { display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.archive-teaser h2 { margin: 0 0 10px; font-size: 2.4rem; }
.archive-teaser p { max-width: 70ch; margin: 0; }
.site-footer { background: #10242b; color: white; padding: 58px 0 30px; }
.footer-grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 30px; }
.footer-logo { width: 210px; max-width: 100%; background: white; border-radius: 12px; padding: 6px; }
.site-footer a { color: white; }
.footer-bottom { margin-top: 30px; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.15); display: flex; justify-content: space-between; gap: 20px; color: rgba(255,255,255,.68); font-size: .84rem; }
@media (max-width: 920px) {
  .tagline { display: none; }
  .main-nav { gap: 2px; }
  .hero-grid, .split-card, .meetup-grid, .mail-grid, .story-grid { grid-template-columns: 1fr; }
  .leaders-grid { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: repeat(2, 1fr); }
  .gallery-tall { grid-row: span 1; }
  .archive-teaser-inner { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 700px) {
  .container { width: min(100% - 28px, 1120px); }
  .header-inner { min-height: 70px; }
  .brand img { width: 155px; }
  .nav-toggle { display: block; }
  .main-nav { display: none; position: absolute; left: 14px; right: 14px; top: 70px; background: white; border: 1px solid var(--line); border-radius: 16px; padding: 8px; box-shadow: var(--shadow); flex-direction: column; align-items: stretch; }
  .main-nav.is-open { display: flex; }
  .main-nav a { padding: 11px 12px; }
  .hero { padding: 50px 0 60px; }
  .hero h1 { font-size: 3rem; }
  .section { padding: 68px 0; }
  .split-card, .location-card, .leader-card, .mail-form-card { padding: 22px; }
  .leader-card { grid-template-columns: 1fr; }
  .leader-card img { width: 100%; height: 235px; }
  .gallery-grid { grid-template-columns: 1fr; grid-auto-rows: 280px; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-bottom { flex-direction: column; }
}

/* BUG visual direction revision: logo-led, bright, friendly, contemporary */
:root {
  --ink: #173e58;
  --ink-2: #28546d;
  --cream: #f4f9fb;
  --paper: #ffffff;
  --sand: #fff4c5;
  --accent: #f3a33b;
  --accent-dark: #d97b23;
  --leaf: #6d963f;
  --bug-blue: #277eb2;
  --bug-yellow: #f6d43a;
  --line: rgba(23,62,88,.14);
}
body { background: #fff; font-family: "Nunito", Arial, sans-serif; }
.hero h1, h2, h3 { font-family: "Nunito", Arial, sans-serif; font-weight: 800; letter-spacing: -.025em; }
.site-header { background: #fff; backdrop-filter: none; border-bottom: 5px solid var(--bug-yellow); position: relative; }
.header-inner { min-height: 0; padding-top: 16px; padding-bottom: 12px; display: grid; grid-template-columns: 1fr; gap: 10px; }
.brand { display: flex; flex-direction: column; align-items: stretch; gap: 2px; width: 100%; }
.brand img { width: 100%; max-width: none; height: 112px; object-fit: contain; object-position: center; background: #fff; }
.tagline { display: block; text-align: center; font-size: 1.08rem; color: var(--leaf); font-weight: 700; letter-spacing: .035em; white-space: normal; margin-top: 1px; }
.main-nav { justify-content: center; flex-wrap: wrap; font-weight: 700; color: var(--ink); }
.main-nav a:hover { background: #eef7fb; color: var(--bug-blue); }
.main-nav .nav-cta { background: var(--bug-blue); color: white; }
.hero { padding: 48px 0 64px; background: linear-gradient(180deg,#fff 0%,#f4f9fb 100%); border-bottom: 10px solid var(--bug-yellow); }
.eyebrow { color: var(--leaf); }
.button-primary { background: var(--accent); color: #173e58; }
.button-secondary { border-color: rgba(39,126,178,.25); color: var(--bug-blue); }
.section-soft { background: #f4f9fb; }
.section-accent { background: #fff4c5; }
.section-ink { background: var(--ink); }
.hero-media img { aspect-ratio: 16 / 10; object-position: center; }
@media (max-width: 920px) {
  .tagline { display: block; }
  .brand img { height: 90px; }
}
@media (max-width: 700px) {
  .header-inner { padding-top: 10px; }
  .brand img { width: 100%; height: 72px; }
  .tagline { font-size: .95rem; }
  .nav-toggle { justify-self: center; }
  .main-nav { top: 145px; }
}


/* Version 5: return to Version 2, then apply only requested changes. */
:root {
  --bug-green: #d5e15b;
}
/* Larger, wider logo-led header while keeping the Version 2 structure. */
.brand img {
  height: 150px;
}
.tagline {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.18rem;
  letter-spacing: .02em;
}
.main-nav a {
  font-size: 1.08rem;
}
/* Keep the hero statement from using the rounded/bubbly heading treatment. */
.hero h1 {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 700;
  letter-spacing: -.025em;
}
/* Make the recurring meet-up information much more prominent. */
.quick-note {
  display: flex;
  width: 100%;
  box-sizing: border-box;
  margin-top: 24px;
  padding: 14px 16px;
  border-left: 8px solid var(--bug-yellow);
  background: #edf4f8;
  color: var(--ink);
  font-size: 1.08rem;
  font-weight: 700;
}
/* The requested photo treatment: no rounded corners. */
.hero-media img,
.meetup-photo,
.meetup-photo img,
.art-card,
.leader-card img,
.gallery-item,
.gallery-placeholder,
.story-card,
.story-image img {
  border-radius: 0;
}
/* Songbook surround uses the same yellow accent already used throughout the site. */
.art-card {
  background: var(--bug-yellow);
}
/* Show more of the founder photo at the top so her head is not cut off. */
.founder-card .story-image img {
  aspect-ratio: 4 / 3;
  object-position: center top;
}
.section-heading h2,
.story-body h2,
.mail-grid h2,
.hero h2,
.leader-card h3 {
  /* Increase section-title size without changing copy. */
  font-size: clamp(2.2rem, 5.2vw, 3.5rem);
}
@media (max-width: 920px) {
  .brand img { height: 120px; }
}
@media (max-width: 700px) {
  .brand img { height: 88px; }
  .tagline { font-size: 1rem; }
  .main-nav a { font-size: 1rem; }
  .quick-note { font-size: 1rem; }
}

/* Requested emphasis for the recurring meet-up schedule inside the existing location box. */
.meetup-schedule {
  margin: 4px 0 22px;
  padding: 12px 14px;
  border-left: 6px solid var(--bug-yellow);
  background: #fff8cf;
  color: var(--ink);
}
.meetup-schedule strong,
.meetup-schedule span { display: block; }
.meetup-schedule strong { font-size: 1.08rem; }
.meetup-schedule span { margin-top: 2px; font-size: 1rem; }

/* Requested v7 history image alignment: preserve the full image and match founder image dimensions. */
.history-card .story-image {
  aspect-ratio: 4 / 3;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  background: #fff;
}
.history-card .story-image img {
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  object-fit: contain;
}


/* Version 9: only requested revisions from the Version 8 baseline. */
/* Restore the larger Version 4 logo scale. */
.brand img {
  width: min(760px, 92vw);
  height: auto;
}
/* The wide CU Flashmob image sits directly under the header; do not crop it. */
.flashmob-feature {
  margin: 0;
  width: 100%;
  line-height: 0;
}
.flashmob-feature img {
  width: 100%;
  height: auto;
  display: block;
}
/* Reduce Strum. Sing. Belong. by 5pt from its Version 8 desktop size. */
.hero h1 { font-size: clamp(3.1rem, 6.5vw, 5rem); }
/* Vertically center the existing meetup-box contents relative to its photo. */
.location-card {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
/* One shade lighter for the Songbook surround only. */
.art-card { background: #f8de59; }
/* Keep both Founder and History body copy at the existing body-text size. */
.founder-card .story-body p,
.history-card .story-body p { font-size: 1rem; }
@media (max-width: 920px) {
  .brand img { width: min(760px, 92vw); }
}
@media (max-width: 700px) {
  .brand img { width: 94vw; height: auto; }
}

/* Version 10: only explicitly requested revisions from Version 9. */
/* Small header correction: preserve logo ratio, center it over tagline/navigation. */
.brand { align-items: center; }
.brand img {
  width: min(700px, 88vw);
  height: auto;
  margin-left: auto;
  margin-right: auto;
  object-fit: contain;
}
/* Shift the existing meetup-card contents upward as a unit, leaving more white space below. */
.location-card { position: relative; }
.location-card > * { position: relative; top: -22px; }
@media (max-width: 920px) {
  .brand img { width: min(700px, 90vw); height: auto; }
  .location-card > * { top: 0; }
}
@media (max-width: 700px) {
  .brand img { width: 92vw; height: auto; }
}

/* Version 13: Uke Yucks archive page. */
.archive-yucks-intro {
  padding: 44px 0 30px;
}
.archive-yucks-intro h1 {
  margin: 6px 0 12px;
  font-family: "Playfair Display", Georgia, serif;
  font-size: clamp(2.6rem, 5vw, 4.5rem);
  line-height: 1;
  color: var(--ink);
}
.archive-quote {
  max-width: 760px;
  margin: 0;
  font-size: clamp(1.1rem, 2vw, 1.35rem);
}
.yucks-grid {
  columns: 3 280px;
  column-gap: 24px;
}
.yuck-item {
  break-inside: avoid;
  margin: 0 0 24px;
  background: #fff;
}
.yuck-item img {
  display: block;
  width: 100%;
  height: auto;
}

.archive-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
}
.archive-title-row .button-outline {
  background: #cfe889;
  border-color: #8daf48;
}
.archive-title-row .eyebrow {
  margin-bottom: 14px;
}
@media (max-width: 700px) {
  .archive-title-row {
    flex-direction: column;
    align-items: flex-start;
  }
}
