/*
Theme Name: GCDOC
Theme URI: https://gcdoc.com
Author: Gem City Dog Obedience Club
Description: Custom theme for gcdoc.com, built around the club's badge crest and green branding. Replaces Shopstar + Beaver Builder.
Version: 1.01
Requires PHP: 7.4
Text Domain: gcdoc
*/

:root {
  --pine: #2b5f24;
  --pine-deep: #1f4519;
  --grass: #5c9c3f;
  --gold: #b9812f;
  --gold-deep: #8f621f;
  --cream: #f7f4ea;
  --cream-raised: #fffdf7;
  --ink: #2a2b22;
  --ink-soft: #55584a;
  --line: rgba(42, 43, 34, 0.14);
  --portal-bg: #eef1e3;
  /* Heading font — change it here (and in the Google Fonts URL in functions.php). */
  --font-heading: "Literata", Georgia, serif;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--cream);
  color: var(--ink);
  font-family: "Public Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  line-height: 1.55;
}

h1, h2, h3, h4 {
  font-family: var(--font-heading);
  text-wrap: balance;
  margin: 0 0 0.4em;
  color: var(--pine-deep);
  font-weight: 600;
}

a { color: inherit; }
img { max-width: 100%; height: auto; display: block; }
table { border-collapse: collapse; width: 100%; }

.wrap {
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 28px;
}

/* Templates that don't manage their own full-bleed sections (i.e. every
   template except front-page.php) get boxed/centered content for free. */
#main { max-width: 1120px; margin: 0 auto; padding: 40px 28px; }
.gcdoc-home-designed #main { max-width: none; margin: 0; padding: 0; }

.eyebrow {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gold-deep);
  margin-bottom: 6px;
}

.btn, .button, input[type="submit"] {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 22px;
  border-radius: 3px;
  font-weight: 700;
  font-size: 0.95rem;
  text-decoration: none;
  border: 2px solid transparent;
  cursor: pointer;
  font-family: inherit;
}
.btn-primary, .button { background: var(--gold-deep); color: #fff; }
.btn-primary:hover, .button:hover { background: #6f4b17; color: #fff; }
.btn-outline, .button--outline {
  background: transparent;
  border-color: var(--pine-deep);
  color: var(--pine-deep);
}

/* ---- Header ---- */
header.site { background: var(--cream-raised); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 10; }
.site-header-row { display: flex; align-items: center; justify-content: space-between; padding-top: 14px; padding-bottom: 14px; gap: 24px; flex-wrap: wrap; } /* top/bottom only — keeps .wrap's side gutters */
.brand { display: flex; align-items: center; gap: 14px; text-decoration: none; }
.brand-logo { width: var(--gcdoc-logo-size, 72px); height: var(--gcdoc-logo-size, 72px); border-radius: 50%; object-fit: cover; flex-shrink: 0; }
@media (max-width: 560px) { .brand-logo { width: min(var(--gcdoc-logo-size, 72px), 56px); height: min(var(--gcdoc-logo-size, 72px), 56px); } }
.brand-name { font-family: var(--font-heading); font-weight: 600; font-size: 1.28rem; color: var(--pine-deep); line-height: 1.1; }

nav.primary-nav { flex: 1 1 auto; }
nav.primary-nav ul { list-style: none; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px 22px; margin: 0; padding: 0; font-weight: 600; font-size: 0.92rem; }
nav.primary-nav li { position: relative; }
nav.primary-nav a { text-decoration: none; color: var(--ink); padding: 6px 2px; border-bottom: 2px solid transparent; display: inline-block; }
nav.primary-nav a:hover { border-color: var(--gold); }
nav.primary-nav li.current-menu-item > a { border-color: var(--pine); color: var(--pine-deep); }
nav.primary-nav li.menu-item-has-children > a::after { content: "\25BE"; margin-left: 5px; font-size: 0.8em; color: var(--ink-soft); }

/* Dropdowns — hidden until hovered or tabbed into (focus-within keeps
   them keyboard-reachable); third level flies out to the side. */
nav.primary-nav .sub-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: -14px;
  z-index: 20;
  min-width: 230px;
  padding: 8px 0;
  background: var(--cream-raised);
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 14px 30px rgba(0,0,0,0.12);
  font-weight: 500;
}
nav.primary-nav li:hover > .sub-menu,
nav.primary-nav li:focus-within > .sub-menu { display: block; }
nav.primary-nav .sub-menu .sub-menu { top: -9px; left: 100%; }
nav.primary-nav .sub-menu a { display: block; padding: 8px 16px; border-bottom: 0; }
nav.primary-nav .sub-menu a:hover { background: var(--portal-bg); color: var(--pine-deep); }
nav.primary-nav .sub-menu li.menu-item-has-children > a::after { content: "\25B8"; float: right; }
/* Items near the right edge open their dropdowns leftward so they stay on screen. */
nav.primary-nav > ul > li:nth-last-child(-n+3) > .sub-menu { left: auto; right: -14px; }
nav.primary-nav > ul > li:nth-last-child(-n+3) .sub-menu .sub-menu { left: auto; right: 100%; }

.nav-toggle { display: none; }

/* ---- Hero ---- */
.hero {
  background: linear-gradient(180deg, rgba(31,69,25,0.86), rgba(31,69,25,0.72)),
              linear-gradient(120deg, var(--pine-deep), var(--pine) 60%, var(--grass));
  color: var(--cream-raised);
  padding: 68px 0 60px;
}
.hero-grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 48px; align-items: center; }
.hero h1 { font-size: clamp(2.1rem, 4vw, 3.1rem); font-weight: 600; color: #fff; }
.hero p.lede { font-size: 1.12rem; max-width: 46ch; color: #eef2e6; margin-top: 14px; }
.hero .actions { display: flex; gap: 14px; margin-top: 28px; flex-wrap: wrap; }
.badge-since { display: block; margin-top: 22px; font-size: 0.82rem; color: #d9e6cf; }
.badge-since strong { color: #fff; font-family: var(--font-heading); }

.hero-card { background: var(--cream-raised); color: var(--ink); border-radius: 6px; padding: 24px; box-shadow: 0 22px 44px rgba(0,0,0,0.28); }
.hero-card h3 { font-size: 1.05rem; margin-bottom: 4px; }
.hero-card .when { color: var(--pine-deep); font-weight: 700; font-size: 0.88rem; margin-bottom: 14px; }
.hero-card ul { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 8px; font-size: 0.9rem; color: var(--ink-soft); }
.hero-card li strong { color: var(--ink); }
.hero-card .actions { margin-top: 0; }
.hero-card .actions .btn { padding: 10px 18px; }
.hero-card .actions .btn-outline { color: var(--pine-deep); }

/* ---- Program page hero ---- */
.gcdoc-program-hero {
	background: linear-gradient(180deg, rgba(31,69,25,0.86), rgba(31,69,25,0.72)),
	            linear-gradient(120deg, var(--pine-deep), var(--pine) 60%, var(--grass));
	color: var(--cream-raised);
	padding: 56px 0;
}
.gcdoc-program-hero__grid { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 44px; align-items: center; }
.gcdoc-program-hero__grid--no-photo { grid-template-columns: 1fr; max-width: 68ch; }
.gcdoc-program-hero__photo img { width: 100%; height: 280px; object-fit: cover; border-radius: 6px; box-shadow: 0 22px 44px rgba(0,0,0,0.28); }
.gcdoc-program-hero h1 { font-size: clamp(2rem, 4vw, 2.8rem); font-weight: 600; color: #fff; margin-top: 6px; }
.gcdoc-program-hero__desc { font-size: 1.05rem; max-width: 56ch; color: #eef2e6; margin-top: 14px; }
.gcdoc-program-hero__desc p { margin: 0 0 0.7em; }
.gcdoc-program-hero__desc a { color: #fff; text-decoration: underline; }
@media (max-width: 720px) {
	.gcdoc-program-hero__grid { grid-template-columns: 1fr; }
	.gcdoc-program-hero__photo { order: -1; }
}

/* ---- Section shell ---- */
section.gcdoc-section { padding: 58px 0; }
.section-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 30px; flex-wrap: wrap; }
.section-head h2 { font-size: 1.9rem; }
.section-head p { color: var(--ink-soft); max-width: 56ch; margin-top: 6px; }
.see-all { font-weight: 700; font-size: 0.88rem; text-decoration: none; color: var(--pine-deep); white-space: nowrap; }
.see-all:after { content: " \2192"; }

/* ---- Programs grid ---- */
.programs-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.program-card {
  background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px;
  padding: 20px; text-decoration: none; color: var(--ink); border-top: 3px solid var(--grass);
}
.program-card h3 { font-size: 1.05rem; margin-bottom: 0; }
.program-card p { font-size: 0.86rem; color: var(--ink-soft); margin-top: 6px; min-height: 2.6em; }

/* ---- Classes grid ---- */
.gcdoc-classes-grid, .classes-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.gcdoc-classes-grid__item, .class-card {
  background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px; overflow: hidden;
  text-decoration: none; color: var(--ink); display: block;
}
.gcdoc-classes-grid__item img { height: 140px; width: 100%; object-fit: cover; }
.gcdoc-classes-grid__item--static { cursor: default; }
.gcdoc-classes-grid__item--static img { opacity: 0.85; }
.gcdoc-classes-grid__item h3, .class-card h3 { font-size: 1.05rem; padding: 16px 16px 0; }
.gcdoc-classes-grid__price { font-size: 0.85rem; color: var(--ink-soft); padding: 0 16px; margin: 6px 0 0; }
.gcdoc-classes-grid__price { font-weight: 700; color: var(--gold-deep); font-family: var(--font-heading); }
.gcdoc-classes-grid__excerpt { font-size: 0.85rem; color: var(--ink-soft); padding: 0 16px; margin: 6px 0 0; }

/* Registration notes (gcdoc-core category-registration.php): a notice +
   button above any class grid containing e.g. Agility (by mail), and a
   tag on each of those cards. */
.gcdoc-reg-notice {
  display: flex; align-items: center; justify-content: space-between; gap: 12px 20px; flex-wrap: wrap;
  margin: 0 0 18px; padding: 14px 18px; border-radius: 6px;
  background: var(--cream-raised); border: 1px solid var(--line); border-left: 4px solid var(--gold-deep);
}
.gcdoc-reg-notice__text { margin: 0; font-weight: 600; color: var(--ink); }
.gcdoc-reg-notice__button { max-width: 100%; text-align: center; justify-content: center; }
/* Long single words in class titles (e.g. "Novice/Open/Competition") wrap
   instead of running off a narrow card. */
.gcdoc-classes-grid__item h3 { overflow-wrap: anywhere; }
.gcdoc-reg-tag {
  display: inline-block; margin: 6px 0 0 16px; padding: 3px 10px; border-radius: 999px;
  font-size: 0.7rem; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--gold-deep); border: 1px solid var(--gold-deep);
}
.gcdoc-classes-grid__variations { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 16px 16px; }
.gcdoc-classes-grid__variation-slug {
  display: inline-block; font-size: 0.75rem; font-weight: 700; color: var(--pine-deep);
  background: var(--cream); border: 1px solid var(--line); border-radius: 999px; padding: 4px 10px;
}
.gcdoc-classes-grid__item > *:last-child { padding-bottom: 16px; }

/* Program pill — shows which division a class belongs to */
.gcdoc-pill {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--pine-deep);
  background: var(--portal-bg);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 3px 11px;
  margin-top: 6px;
}
.gcdoc-classes-grid__item .gcdoc-pill { margin: 8px 0 0 16px; }
.gcdoc-class__pills { margin: -0.4em 0 0.4em; display: flex; gap: 6px; flex-wrap: wrap; }

.gcdoc-pill--obedience-rally { background: #e3ecdc; color: var(--pine-deep); }
.gcdoc-pill--performance-agility { background: #f5e8d2; color: var(--gold-deep); }
.gcdoc-pill--scent-sports { background: #dbe7ef; color: #2c5876; }
.gcdoc-pill--beginner-series { background: #f2ddd3; color: #96432a; }

/* Shared filter bar (Classes filter, Events filter) */
.gcdoc-classes-filter, .gcdoc-filter-bar {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  align-items: flex-end;
  background: var(--cream-raised);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 16px 18px;
  margin-bottom: 24px;
}
.gcdoc-classes-filter label, .gcdoc-filter-bar label {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 5px;
}
.gcdoc-classes-filter select, .gcdoc-filter-bar select { min-width: 180px; }
.gcdoc-filter-bar input[type="search"] { min-width: 220px; }
.gcdoc-filter-bar .gcdoc-filter-bar__search { flex-grow: 1; }
.gcdoc-classes-filter__reset, .gcdoc-filter-bar__reset {
  background: none; border: none; color: var(--pine-deep); font-weight: 700;
  font-size: 0.88rem; cursor: pointer; padding: 10px 0;
}
.gcdoc-classes-filter__empty, .gcdoc-filter-bar__empty { display: none; color: var(--ink-soft); padding: 20px 0; }
.gcdoc-classes-grid__item[hidden], .gcdoc-event-list__item[hidden] { display: none; }


/* Events view toggle */
.gcdoc-view-toggle { display: flex; gap: 8px; margin-bottom: 20px; }
.gcdoc-view-toggle a {
  padding: 8px 16px; border-radius: 4px; text-decoration: none; font-weight: 700; font-size: 0.9rem;
  border: 1px solid var(--line); color: var(--ink-soft);
}
.gcdoc-view-toggle a.is-active { background: var(--pine-deep); border-color: var(--pine-deep); color: #fff; }

/* Events calendar */
.gcdoc-calendar__nav { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.gcdoc-calendar__nav h2 { font-size: 1.4rem; margin: 0; }
.gcdoc-calendar__nav a { text-decoration: none; color: var(--pine-deep); font-weight: 700; }
.gcdoc-calendar {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  border-top: 1px solid var(--line);
  border-left: 1px solid var(--line);
}
.gcdoc-calendar__weekday {
  padding: 8px; text-align: center; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--ink-soft); background: var(--cream-raised);
  border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.gcdoc-calendar__day {
  min-height: 90px; padding: 6px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
  background: var(--cream-raised);
}
.gcdoc-calendar__day--empty { background: transparent; }
.gcdoc-calendar__day--today { background: var(--portal-bg); }
.gcdoc-calendar__day-num { font-size: 0.78rem; font-weight: 700; color: var(--ink-soft); margin-bottom: 4px; display: block; }
.gcdoc-calendar__event {
  display: block; font-size: 0.72rem; line-height: 1.3; padding: 2px 5px; margin-bottom: 2px;
  border-radius: 3px; background: var(--portal-bg); color: var(--pine-deep); text-decoration: none;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.gcdoc-calendar__day--today .gcdoc-calendar__event { background: var(--cream-raised); }
@media (max-width: 700px) {
  .gcdoc-calendar { grid-template-columns: repeat(7, minmax(36px, 1fr)); font-size: 0.7rem; }
  .gcdoc-calendar__day { min-height: 54px; padding: 4px; }
  /* Chips become small colored dots; the whole day is the tap target
     (assets/calendar-mobile.js lists the day's events under the calendar). */
  .gcdoc-calendar .gcdoc-calendar__event {
    display: inline-block; width: 8px; height: 8px; padding: 0; margin: 0 2px 2px 0;
    border-radius: 50%; font-size: 0; line-height: 0; pointer-events: none; background: var(--ink-soft);
  }
  .gcdoc-calendar .gcdoc-calendar__event--trial { background: var(--gold-deep); }
  .gcdoc-calendar .gcdoc-calendar__event--club-meeting { background: var(--pine); }
  .gcdoc-calendar .gcdoc-calendar__event--club-activity { background: #2c5876; }
  .gcdoc-calendar .gcdoc-calendar__event--rental { background: #96432a; }
  .gcdoc-calendar .gcdoc-calendar__event--class-session { background: #5b3a86; }
  .gcdoc-calendar__day--has-events { cursor: pointer; }
  .gcdoc-calendar__day.is-selected { background: #fff6df; box-shadow: inset 0 0 0 2px var(--gold-deep); }
}
.gcdoc-calendar__daylist { margin-top: 14px; padding: 14px 16px; background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px; }
.gcdoc-calendar__daylist h3 { font-size: 1rem; margin: 0 0 8px; }
.gcdoc-calendar__daylist ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.gcdoc-calendar__daylist a { display: flex; align-items: flex-start; gap: 10px; padding: 8px 4px; text-decoration: none; color: var(--ink); border-bottom: 1px solid var(--line); }
.gcdoc-calendar__daylist li:last-child a { border-bottom: 0; }
.gcdoc-calendar__daylist .gcdoc-event-dot { margin-top: 5px; }
.gcdoc-calendar__daylist strong { display: block; color: var(--pine-deep); }
.gcdoc-calendar__daylist small { display: block; color: var(--ink-soft); font-size: 0.8rem; }
@media (min-width: 701px) { .gcdoc-calendar__daylist { display: none; } }

/* ---- Member stories ---- */
.stories-band { background: var(--portal-bg); }
.stories-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 20px; }
.story-card { display: block; text-decoration: none; color: var(--ink); background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px; overflow: hidden; }
.story-card__photo { height: 130px; background: linear-gradient(135deg, var(--gold) 0%, var(--gold-deep) 100%); }
.story-card__photo img { height: 100%; width: 100%; object-fit: cover; }
.story-card--feature .story-card__photo { height: 190px; }
.story-card__body { padding: 18px; }
.story-card h3 { font-size: 1.1rem; margin-top: 4px; }
.story-card--feature h3 { font-size: 1.35rem; }
.story-card p:not(.eyebrow) { font-size: 0.9rem; color: var(--ink-soft); margin-top: 10px; }

/* ---- WooCommerce ---- */
/* SKUs aren't a meaningful concept for classes — every product just shows
   "SKU: N/A" otherwise. Hides it visually only (categories/tags in the same
   meta block are untouched, and this doesn't touch SKU management in
   wp-admin — a product's actual SKU field/data is unaffected). */
.sku_wrapper { display: none; }

/* ---- Generic content (pages, posts, CPT singles) ---- */
.gcdoc-content { padding: 48px 0; }
.gcdoc-content .entry-content { max-width: 74ch; }
.gcdoc-content .entry-content:has(.gcdoc-classes-grid) { max-width: none; }
.gcdoc-content .entry-content:has(.gcdoc-biz-grid) { max-width: none; }
.gcdoc-content .entry-content:has(.gcdoc-dashboard__actions) { max-width: none; }
.gcdoc-content .entry-content > * + * { margin-top: 1.1em; }

/* Home page rendered as a plain page (the "New homepage layout" Feature
   Switch is off) — a wider, centered column instead of the left-aligned
   reading column other pages use. */
.home .gcdoc-content { padding-top: 16px; }
.home .gcdoc-content .entry-content { max-width: 960px; margin: 0 auto; }
.home .gcdoc-content .wp-block-media-text { gap: 0; background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px; overflow: hidden; }
.home .gcdoc-content .wp-block-media-text__content { padding: 28px 36px; }
.home .gcdoc-content .wp-block-media-text__content h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); }
.home .gcdoc-content .entry-content > h2,
.home .gcdoc-content .entry-content > h3 { margin-top: 1.6em; }
.gcdoc-archive__header { padding: 48px 0 8px; }
.gcdoc-archive__header p { color: var(--ink-soft); }

.gcdoc-story-search { display: flex; align-items: center; gap: 10px; margin: 16px 0 28px; flex-wrap: wrap; }
.gcdoc-story-search input[type="search"] { max-width: 280px; }
.gcdoc-story-search__clear { font-size: 0.88rem; color: var(--ink-soft); }

/* Memorial single/archive */
.gcdoc-memorial__header { text-align: center; padding-bottom: 20px; }
.gcdoc-memorial__type, .gcdoc-memorial__date { color: var(--ink-soft); font-size: 0.9rem; }
.gcdoc-member-story__memorial-type, .gcdoc-member-story__date-of-passing { color: var(--ink-soft); font-size: 0.9rem; }
.gcdoc-memorial__photo img { border-radius: 6px; margin: 0 auto 24px; }
.gcdoc-memorial__gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 24px; }
.gcdoc-memorial-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }

/* Prev/next between stories in the same category */
.gcdoc-member-story__nav {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  margin-top: 36px;
  padding-top: 20px;
  border-top: 1px solid var(--line);
}
.gcdoc-member-story__nav-link {
  font-weight: 700;
  color: var(--pine-deep);
  text-decoration: none;
  max-width: 46%;
}
.gcdoc-member-story__nav-link--next { margin-left: auto; text-align: right; }
.gcdoc-member-story__nav-link:hover { color: var(--gold-deep); }
@media (max-width: 560px) {
  .gcdoc-member-story__nav-link { max-width: 100%; font-size: 0.9rem; }
}

/* "New Title" member stories get a small celebration frame around the
   photo — the club's titles are earned achievements, so this is meant
   to read like a certificate frame with a bit of sparkle, not a party. */
.gcdoc-member-story__badge--title {
  display: inline-block;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--gold-deep);
  background: var(--cream-raised);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 16px;
  margin: 0 0 14px;
}
.gcdoc-member-story--split .gcdoc-member-story__layout {
  display: grid;
  grid-template-columns: minmax(0, 40%) 1fr;
  gap: 36px;
  align-items: start;
}
.gcdoc-member-story--split .gcdoc-member-story__col-photo { text-align: center; }
.gcdoc-member-story--split .gcdoc-member-story__col-content header { margin-bottom: 16px; }
@media (max-width: 780px) {
  .gcdoc-member-story--split .gcdoc-member-story__layout { grid-template-columns: 1fr; }
}

.gcdoc-member-story__photo--title {
  position: relative;
  max-width: 440px;
  margin: 0 auto 24px;
  padding: 16px;
  background: linear-gradient(160deg, var(--cream-raised), #fdf6e8);
  border: 2px solid var(--gold-deep);
  border-radius: 12px;
  box-shadow: 0 0 0 5px rgba(185, 129, 47, 0.12), 0 8px 20px rgba(42, 43, 34, 0.1);
}
.gcdoc-member-story--split .gcdoc-member-story__photo--title { max-width: 100%; }
.gcdoc-member-story__photo--title img { width: 100%; height: auto; border-radius: 6px; margin: 0; }
.gcdoc-member-story__photo--title::before,
.gcdoc-member-story__photo--title::after {
  content: "";
  position: absolute;
  width: 60px;
  height: 60px;
  pointer-events: none;
  background-repeat: no-repeat;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23b9812f' d='M12 0 14 10 24 12 14 14 12 24 10 14 0 12 10 10Z'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%235c9c3f' d='M12 0 14 10 24 12 14 14 12 24 10 14 0 12 10 10Z'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%231f4519' d='M12 0 14 10 24 12 14 14 12 24 10 14 0 12 10 10Z'/%3E%3C/svg%3E");
  background-size: 24px 24px, 15px 15px, 11px 11px;
  background-position: 2px 6px, 32px 0, 18px 38px;
}
.gcdoc-member-story__photo--title::before { top: -16px; left: -16px; }
.gcdoc-member-story__photo--title::after { bottom: -16px; right: -16px; transform: rotate(180deg); }

/* Memorials get the same split layout, but a calmer frame — no sparkle
   corners, a single quiet border instead of gold, since this is a
   remembrance, not a celebration. */
.gcdoc-member-story__photo--memorial {
  max-width: 440px;
  margin: 0 auto 24px;
  padding: 16px;
  background: var(--cream-raised);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 0 0 5px rgba(42, 43, 34, 0.05), 0 8px 20px rgba(42, 43, 34, 0.08);
}
.gcdoc-member-story--split .gcdoc-member-story__photo--memorial { max-width: 100%; }
.gcdoc-member-story__photo--memorial img { width: 100%; height: auto; border-radius: 6px; margin: 0; }
.gcdoc-memorial-grid__item { text-align: center; text-decoration: none; color: var(--ink); }
.gcdoc-memorial-grid__item img { border-radius: 50%; width: 108px; height: 108px; object-fit: cover; margin: 0 auto 10px; }
.gcdoc-memorial-grid__type { font-size: 0.78rem; color: var(--ink-soft); }

/* A soft, understated placeholder (a heart — neutral enough to fit both
   Dog and Human memorials) for memorial posts with no photo. */
.gcdoc-memorial-placeholder {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 108px;
  height: 108px;
  border-radius: 50%;
  background: var(--cream-raised);
  border: 1px solid var(--line);
  margin: 0 auto 10px;
}
.gcdoc-memorial-placeholder__heart {
  width: 40px;
  height: 40px;
  color: var(--gold-deep);
  opacity: 0.6;
}
.gcdoc-memorial-placeholder__heart--frame { width: 64px; height: 64px; color: var(--pine); opacity: 0.6; }

/* Class single */
.gcdoc-class__photo img {
  width: 100%;
  max-height: 420px;
  object-fit: cover;
  border-radius: 6px;
  margin-bottom: 24px;
}
.gcdoc-class__programs { color: var(--ink-soft); font-size: 0.9rem; margin-top: -0.4em; }
.gcdoc-class__details { list-style: none; padding: 0; margin: 20px 0; display: grid; gap: 6px; font-size: 0.95rem; }

/* Titles: individual title entries (imported historical data + ongoing
   member submissions) — a natural sentence + medal graphic instead of a
   spreadsheet row, since most entries have no photo to show. */
.gcdoc-title-entry__layout { display: grid; grid-template-columns: 160px 1fr; gap: 32px; align-items: start; }
.gcdoc-title-entry__media img { border-radius: 8px; }
.gcdoc-title-entry__placeholder { display: flex; align-items: center; justify-content: center; padding: 24px 0; }
.gcdoc-title-entry__summary { font-size: 1.05rem; }
.gcdoc-title-entry__back { margin-top: 28px; }
@media (max-width: 560px) {
  .gcdoc-title-entry__layout { grid-template-columns: 1fr; }
  .gcdoc-title-entry__media { max-width: 160px; margin: 0 auto; }
}

.gcdoc-rosette { position: relative; display: block; width: 96px; height: 116px; }
.gcdoc-rosette__tail {
  position: absolute;
  bottom: 0;
  width: 26px;
  height: 56px;
  background: var(--pine);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 80%, 0 100%);
}
.gcdoc-rosette__tail--l { left: 14px; transform: rotate(-8deg); }
.gcdoc-rosette__tail--r { right: 14px; transform: rotate(8deg); }
.gcdoc-rosette__disc {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 78px;
  height: 78px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, var(--gold), var(--gold-deep));
  box-shadow: 0 4px 10px rgba(42, 43, 34, 0.18), inset 0 0 0 4px rgba(255, 255, 255, 0.25);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 2rem;
}

/* Featured Dogs get a simple paw-print placeholder instead of the New
   Title rosette, when no photo's been attached yet. */
.gcdoc-paw-placeholder { position: relative; display: block; width: 90px; height: 90px; }
.gcdoc-paw-placeholder__pad {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 56px;
  height: 46px;
  border-radius: 50% 50% 45% 45%;
  background: var(--pine);
}
.gcdoc-paw-placeholder__toe {
  position: absolute;
  width: 22px;
  height: 26px;
  border-radius: 50%;
  background: var(--gold-deep);
}
.gcdoc-paw-placeholder__toe--1 { top: 6px;  left: 1px; }
.gcdoc-paw-placeholder__toe--2 { top: -4px; left: 23px; }
.gcdoc-paw-placeholder__toe--3 { top: -4px; left: 45px; }
.gcdoc-paw-placeholder__toe--4 { top: 6px;  left: 67px; }

.gcdoc-title-entry__author {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid var(--line);
}
.gcdoc-title-entry__author img { border-radius: 50%; }
.gcdoc-title-entry__author strong { display: block; color: var(--pine-deep); }
.gcdoc-title-entry__author span { font-size: 0.85rem; color: var(--ink-soft); }

/* Event single/list */
.gcdoc-event__dates { color: var(--pine-deep); font-weight: 700; }
.gcdoc-event__location { color: var(--ink-soft); }
.gcdoc-event__entries { list-style: none; padding: 0; margin: 18px 0; display: grid; gap: 6px; font-size: 0.92rem; }
.gcdoc-event__actions { display: flex; gap: 12px; margin-top: 22px; flex-wrap: wrap; }
.gcdoc-event-list { display: grid; gap: 2px; }
.gcdoc-event-list__item {
  display: flex; gap: 18px; padding: 14px 16px; text-decoration: none; color: var(--ink);
  background: var(--cream-raised); border: 1px solid var(--line); border-radius: 4px;
}
.gcdoc-event-list__date { font-weight: 700; color: var(--pine-deep); min-width: 11ch; }
.gcdoc-event-list__volunteer-badge {
  margin-left: auto; align-self: center; font-size: 0.78rem; font-weight: 700;
  color: var(--gold-deep); border: 1px solid var(--gold-deep); border-radius: 999px;
  padding: 3px 10px; white-space: nowrap;
}

/* Facility rentals — another organization's event in our building (AKC:
   must be clearly marked as not a club event). Rust matches the rental
   category color used on the calendar. */
.gcdoc-rental-badge {
  display: inline-block; align-self: center; font-size: 0.72rem; font-weight: 800;
  letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap;
  color: #fff; background: #96432a; border-radius: 999px; padding: 3px 10px;
}
.gcdoc-event-list__item .gcdoc-rental-badge { margin-left: auto; }
.gcdoc-event-list__item .gcdoc-rental-badge + .gcdoc-event-list__volunteer-badge { margin-left: 0; }
.gcdoc-rental-notice {
  margin: 20px 0; padding: 14px 18px; border-left: 4px solid #96432a;
  background: #f2ddd3; color: #5e2a1a; border-radius: 4px;
}
.gcdoc-rental-notice__label { display: block; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8rem; margin-bottom: 4px; }
.gcdoc-rental-notice p { margin: 0; }

/* Event category colors — shared by the legend, list dots, and calendar chips */
.gcdoc-event-legend { display: flex; gap: 18px; flex-wrap: wrap; margin: 4px 0 18px; font-size: 0.82rem; color: var(--ink-soft); }
.gcdoc-event-legend__item { display: inline-flex; align-items: center; gap: 6px; }
.gcdoc-event-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; background: var(--ink-soft); }
.gcdoc-event-dot--trial { background: var(--gold-deep); }
.gcdoc-event-dot--club-meeting { background: var(--pine); }
.gcdoc-event-dot--club-activity { background: #2c5876; }
.gcdoc-event-dot--rental { background: #96432a; }
.gcdoc-event-dot--class-session { background: #5b3a86; }

.gcdoc-calendar__event--trial { background: #f5e8d2; color: var(--gold-deep); }
.gcdoc-calendar__event--club-meeting { background: #e3ecdc; color: var(--pine-deep); }
.gcdoc-calendar__event--club-activity { background: #dbe7ef; color: #2c5876; }
.gcdoc-calendar__event--rental { background: #f2ddd3; color: #96432a; }
.gcdoc-calendar__event--class-session { background: #e5dcf0; color: #5b3a86; }

.gcdoc-calendar__jump { display: flex; align-items: center; gap: 8px; margin-bottom: 18px; flex-wrap: wrap; }

/* Volunteer shifts (public) */
.gcdoc-volunteer-shifts { margin-top: 40px; padding-top: 32px; border-top: 1px solid var(--line); }
.gcdoc-volunteer-shifts h3 { font-size: 1.1rem; margin-top: 1.4em; }
.gcdoc-volunteer-notice { padding: 12px 16px; border-radius: 4px; font-weight: 600; margin-bottom: 16px; }
.gcdoc-volunteer-notice--ok { background: #e3ecdc; color: var(--pine-deep); }
.gcdoc-volunteer-notice--error { background: #f2ddd3; color: #96432a; }
.gcdoc-shift-list { display: grid; gap: 6px; }
.gcdoc-shift {
  background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px;
  padding: 8px 14px; display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
}
.gcdoc-shift[hidden], .gcdoc-shift-day[hidden], .gcdoc-shift-form[hidden] { display: none; }
.gcdoc-shift__info { display: flex; flex-direction: column; gap: 1px; }
.gcdoc-shift__time { color: var(--ink-soft); font-size: 0.85rem; }
.gcdoc-shift__spots { font-size: 0.78rem; font-weight: 700; color: var(--gold-deep); }
.gcdoc-shift__full-label {
  font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em;
  color: var(--ink-soft); background: var(--line); padding: 5px 12px; border-radius: 999px;
}
.gcdoc-shift__filled-by {
  font-size: 0.85rem; font-weight: 600; color: var(--pine-deep);
  background: #e3ecdc; padding: 5px 12px; border-radius: 999px;
}
.gcdoc-shift-form {
  flex-basis: 100%; display: grid; gap: 10px; grid-template-columns: repeat(3, 1fr); align-items: end;
  padding-top: 12px; border-top: 1px dashed var(--line); margin-top: 8px;
}
.gcdoc-shift-form label { display: block; font-size: 0.78rem; font-weight: 700; color: var(--ink-soft); margin-bottom: 4px; }
.gcdoc-shift-form input { width: 100%; }
.gcdoc-shift-form button { grid-column: 1 / -1; justify-self: start; }
.gcdoc-hp-field { position: absolute; left: -9999px; }
@media (max-width: 640px) { .gcdoc-shift-form { grid-template-columns: 1fr; } }

/* Volunteer manage/cancel page */
.gcdoc-volunteer-manage h2 { margin-top: 2em; font-size: 1.15rem; }
.gcdoc-volunteer-manage form { max-width: 420px; display: grid; gap: 12px; }
.gcdoc-volunteer-manage form + form { margin-top: 8px; }

/* Minutes */
.gcdoc-minutes-table th, .gcdoc-minutes-table td { text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--line); }
.gcdoc-minutes-table th { font-family: var(--font-heading); color: var(--pine-deep); }

/* Member story archive */
.gcdoc-member-story-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.gcdoc-member-story-grid__item { text-decoration: none; color: var(--ink); background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px; overflow: hidden; display: block; }
.gcdoc-member-story-grid__item img { height: 150px; width: 100%; object-fit: cover; }
.gcdoc-member-story-grid__item h2 { font-size: 1.05rem; padding: 14px 16px 0; }
.gcdoc-member-story-grid__item p { font-size: 0.88rem; color: var(--ink-soft); padding: 8px 16px 16px; }

.gcdoc-dotm-feature { margin-bottom: 28px; }
.gcdoc-dotm-feature .eyebrow { margin-bottom: 8px; }
.gcdoc-dotm-feature__card {
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 24px;
	align-items: center;
	text-decoration: none;
	color: var(--ink);
	background: var(--cream-raised);
	border: 1px solid var(--line);
	border-radius: 8px;
	padding: 20px;
}
.gcdoc-dotm-feature__card img { width: 100%; height: 180px; object-fit: cover; border-radius: 6px; }
.gcdoc-dotm-feature__card h2 { font-size: 1.4rem; margin-bottom: 8px; }
.gcdoc-dotm-feature__card p { color: var(--ink-soft); }
@media (max-width: 640px) {
	.gcdoc-dotm-feature__card { grid-template-columns: 1fr; }
}

/* Shared layout for the longer member-submission forms (Story, Memorial,
   Title) — a real single-column layout with breathing room, replacing
   the cramped grid built originally for the short volunteer-shift form. */
.gcdoc-member-form {
	max-width: 640px;
	background: var(--cream-raised);
	border: 1px solid var(--line);
	border-radius: 8px;
	padding: 28px 32px;
	margin: 20px 0;
}
.gcdoc-member-form__field { margin-bottom: 22px; }
.gcdoc-member-form__field:last-of-type { margin-bottom: 0; }
/* The "Tell us about…" groups: framed, with room before "Your Story". */
.gcdoc-member-form fieldset { margin: 0 0 26px; padding: 14px 18px 18px; border: 1px solid var(--line); border-radius: 6px; }
.gcdoc-member-form fieldset legend { padding: 0 6px; font-weight: 700; color: var(--pine-deep); }
.gcdoc-member-form__story { margin-top: 8px; }
/* A help line directly under a field's label sits close to it. */
.gcdoc-member-form__field > label + p.description,
.gcdoc-member-form__field > span.label + p.description { margin: -2px 0 8px; }
.gcdoc-member-form label,
.gcdoc-member-form__field > span.label {
	display: block;
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--ink-soft);
	margin-bottom: 8px;
}
.gcdoc-member-form input[type="text"],
.gcdoc-member-form input[type="tel"],
.gcdoc-member-form input[type="date"],
.gcdoc-member-form input[type="url"],
.gcdoc-member-form input[type="email"],
.gcdoc-member-form select,
.gcdoc-member-form textarea {
	width: 100%;
}
.gcdoc-member-form .description { font-weight: 400; font-size: 0.82rem; color: var(--ink-soft); margin-top: 6px; }
.gcdoc-member-form__upload {
	border: 1px dashed var(--line);
	border-radius: 6px;
	padding: 16px;
	background: var(--cream);
}
.gcdoc-member-form__upload input[type="file"] { display: block; }
.gcdoc-member-form__current-photo { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.gcdoc-member-form__current-photo img { width: 64px; height: 64px; object-fit: cover; border-radius: 4px; }
.gcdoc-member-form__gallery-preview { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.gcdoc-member-form__gallery-preview img { width: 56px; height: 56px; object-fit: cover; border-radius: 4px; }
.gcdoc-member-form .wp-editor-wrap { margin-top: 2px; }
.gcdoc-member-form__actions { margin-top: 26px; }
@media (max-width: 640px) {
	.gcdoc-member-form { padding: 20px; }
}

.gcdoc-member-story__gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; margin-top: 24px; }
.gcdoc-member-story__gallery img { width: 100%; height: 140px; object-fit: cover; border-radius: 4px; }

/* Members Area dashboard */
.gcdoc-dashboard__welcome { margin-bottom: 28px; }
.gcdoc-dashboard__actions { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-bottom: 40px; }
/* The Group block wraps its own content in an extra .wp-block-group__inner-container
   div (legacy back-compat behavior for a Group block with no explicit layout type) —
   that wrapper sits between .gcdoc-dashboard__actions and the 5 tiles, so the grid
   above only ever sees ONE child (the wrapper) and auto-places it into just the
   first column track, leaving the other three empty and all 5 tiles stacked inside
   that one narrow slot. `display: contents` removes the wrapper from layout
   entirely (it keeps existing in the DOM, just stops being a box), so its children
   become the grid's real, direct items instead. Harmless no-op if a future re-save
   of the block ever drops the wrapper. */
.gcdoc-dashboard__actions > .wp-block-group__inner-container { display: contents; }
.gcdoc-dashboard__card {
	background: var(--cream-raised);
	border: 1px solid var(--line);
	border-radius: 6px;
	padding: 20px;
	transition: border-color 0.15s;
}
.gcdoc-dashboard__card:has(a:hover) { border-color: var(--pine); }
.gcdoc-dashboard__card h3 { font-size: 1.05rem; margin-bottom: 6px; }
.gcdoc-dashboard__card h3 a { color: var(--pine-deep); text-decoration: none; }
.gcdoc-dashboard__card h3 a:hover { text-decoration: underline; }
.gcdoc-dashboard__card p { font-size: 0.88rem; color: var(--ink-soft); margin: 0; }
.gcdoc-dashboard__accordion {
  border: 1px solid var(--line); border-radius: 6px; padding: 16px 20px; margin-bottom: 32px; background: var(--cream-raised);
}
.gcdoc-dashboard__accordion summary { cursor: pointer; list-style: none; }
.gcdoc-dashboard__accordion summary::-webkit-details-marker { display: none; }
.gcdoc-dashboard__accordion summary { font-size: 1.1rem; font-weight: 700; color: var(--pine-deep); }
.gcdoc-dashboard__accordion summary::before { content: "▸ "; color: var(--pine-deep); }
.gcdoc-dashboard__accordion[open] summary::before { content: "▾ "; }
.gcdoc-dashboard__accordion .gcdoc-hours-report { margin-top: 14px; }
.gcdoc-dashboard__resources h3 { font-size: 1.1rem; margin-bottom: 12px; color: var(--ink-soft); }
.gcdoc-dashboard__admin-login { margin-top: 32px; font-size: 0.85rem; }
.gcdoc-dashboard__admin-login a { color: var(--ink-soft); }
.gcdoc-dashboard__resources ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px 24px; }
.gcdoc-dashboard__resources a { color: var(--pine-deep); text-decoration: none; }
.gcdoc-dashboard__resources a:hover { text-decoration: underline; }

/* ---- Members Area bar (inc/members-nav.php) ---- */
.gcdoc-members-bar { background: var(--portal-bg); border-bottom: 1px solid var(--line); }
.gcdoc-members-bar__top { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding-top: 12px; }
.gcdoc-members-bar__title { font-size: 0.72rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--pine-deep); }
.gcdoc-members-bar__user { font-size: 0.85rem; color: var(--ink-soft); white-space: nowrap; }
.gcdoc-members-bar__user a { color: var(--ink-soft); }
.gcdoc-members-bar__user a:hover { color: var(--pine-deep); }
.gcdoc-members-tabs ul {
  position: relative; list-style: none; margin: 6px 0 0; padding: 0;
  display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none;
}
.gcdoc-members-tabs ul::-webkit-scrollbar { display: none; }
.gcdoc-members-tabs a {
  display: block; padding: 10px 14px; white-space: nowrap; text-decoration: none;
  font-weight: 700; font-size: 0.92rem; color: var(--ink-soft);
  border-bottom: 3px solid transparent;
}
.gcdoc-members-tabs a:hover { color: var(--pine-deep); border-color: var(--line); }
.gcdoc-members-tabs a.is-active { color: var(--pine-deep); border-color: var(--pine); }
.gcdoc-members-crumbs { border-top: 1px solid var(--line); padding: 8px 0 10px; font-size: 0.82rem; color: var(--ink-soft); }
.gcdoc-members-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; }
.gcdoc-members-crumbs li + li::before { content: "\203A"; margin: 0 8px; color: var(--ink-soft); }
.gcdoc-members-crumbs a { color: var(--pine-deep); text-decoration: none; }
.gcdoc-members-crumbs a:hover { text-decoration: underline; }
.gcdoc-members-crumbs__back { display: none; color: var(--pine-deep); font-weight: 700; text-decoration: none; }
.gcdoc-members-bar + #main .gcdoc-content { padding-top: 8px; }

/* Dashboard cards + section tiles (template-members-*.php) */
.gcdoc-members-page .entry-content.gcdoc-members-intro { max-width: 74ch; margin-bottom: 24px; }
.gcdoc-members-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.gcdoc-members-card { background: var(--cream-raised); border: 1px solid var(--line); border-top: 3px solid var(--pine); border-radius: 6px; padding: 20px 22px; }
.gcdoc-members-card h2 { font-size: 1.2rem; margin-bottom: 4px; }
.gcdoc-members-card h2 a { color: var(--pine-deep); text-decoration: none; }
.gcdoc-members-card h2 a:hover { text-decoration: underline; }
.gcdoc-members-card__blurb { font-size: 0.88rem; color: var(--ink-soft); margin: 0 0 10px; }
.gcdoc-members-card ul { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 6px; }
.gcdoc-members-card li a { color: var(--ink); text-decoration: none; font-weight: 600; font-size: 0.92rem; }
.gcdoc-members-card li a::before { content: "\203A"; color: var(--gold-deep); margin-right: 8px; }
.gcdoc-members-card li a:hover { color: var(--pine-deep); text-decoration: underline; }
.gcdoc-members-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 8px; }
.gcdoc-members-tile {
  display: flex; flex-direction: column; gap: 4px; padding: 16px 18px; text-decoration: none; color: var(--ink);
  background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px;
}
.gcdoc-members-tile:hover { border-color: var(--pine); box-shadow: 0 6px 16px rgba(0,0,0,0.06); }
.gcdoc-members-tile__title { font-weight: 700; color: var(--pine-deep); }
.gcdoc-members-tile__blurb { font-size: 0.85rem; color: var(--ink-soft); }
.gcdoc-members-setup-note { padding: 12px 16px; background: #fff6df; border: 1px dashed var(--gold-deep); border-radius: 4px; font-size: 0.88rem; }

/* [gcdoc_my_shifts] (gcdoc-core) */
.gcdoc-my-shifts { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 6px; }
.gcdoc-my-shifts__item {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 18px; padding: 12px 16px;
  background: var(--cream-raised); border: 1px solid var(--line); border-radius: 4px;
}
.gcdoc-my-shifts__when { font-weight: 700; color: var(--pine-deep); min-width: 20ch; }
.gcdoc-my-shifts__manage { margin-left: auto; font-size: 0.85rem; font-weight: 700; color: var(--gold-deep); }
.gcdoc-my-shifts__note, .gcdoc-my-shifts__empty { font-size: 0.85rem; color: var(--ink-soft); }
.gcdoc-officers-table { width: 100%; border-collapse: collapse; margin: 20px 0; }
.gcdoc-officers-table td { padding: 8px 12px; border-bottom: 1px solid var(--line); }
.gcdoc-officers-table td:first-child { font-weight: 700; color: var(--pine-deep); width: 220px; }

/* Titles page + shared "my submissions" edit UI */
.gcdoc-titles-submit { background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px; padding: 20px 24px; margin: 20px 0 32px; }
.gcdoc-titles-table { width: 100%; border-collapse: collapse; margin: 16px 0 24px; }
.gcdoc-titles-table th, .gcdoc-titles-table td { padding: 8px 12px; border-bottom: 1px solid var(--line); text-align: left; }
.gcdoc-titles-table th { color: var(--pine-deep); }
.gcdoc-my-submissions { margin: 24px 0; padding: 16px 20px; background: #fff; border: 1px solid var(--line); border-radius: 6px; }
.gcdoc-my-submissions ul { list-style: none; margin: 10px 0 0; padding: 0; }
.gcdoc-my-submissions li { padding: 8px 0; border-bottom: 1px solid var(--line); }
.gcdoc-my-submissions li:last-child { border-bottom: none; }
/* Most uses of .gcdoc-edit-toggle rely on WP admin's ".button-link" class to
   strip native <button> chrome (border/background/padding) — but that class
   only exists in wp-admin's own CSS, never on the front end, so without this
   reset it rendered as a plain, unstyled browser button. Scoped to
   :not(.btn) since volunteer-shifts.php reuses this same class on a real
   styled .btn.btn-primary "Sign Up" button that should keep its own look. */
.gcdoc-edit-toggle:not(.btn) {
	background: none; border: none; padding: 0; cursor: pointer;
	margin-left: 10px; color: var(--pine-deep); text-decoration: underline; font-size: inherit;
}
.gcdoc-edit-toggle:not(.btn):hover { color: var(--pine); }
.gcdoc-edit-form { margin-top: 12px; padding: 14px; background: var(--cream-raised); border-radius: 4px; }

/* Modal presentation for the Submit a Story / Edit story / shift Sign Up
   forms — same target elements (.gcdoc-edit-form, .gcdoc-shift-form) as the
   old collapse/show version, just centered as a dialog over a backdrop
   instead of expanding in place. See assets/member-forms.js. */
body.gcdoc-modal-active { overflow: hidden; }
.gcdoc-modal-backdrop {
	position: fixed; inset: 0; background: rgba(30, 26, 16, 0.55); z-index: 1000;
}
/* Standalone .gcdoc-modal-open, not compounded with .gcdoc-edit-form/etc —
   the Submit a Story toggle target (#gcdoc-submit-story-form) has no class
   of its own at all, just this one added by JS, so this has to match on
   its own to cover all three modal-ized forms consistently. */
.gcdoc-modal-open {
	position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
	z-index: 1001; width: min(560px, calc(100vw - 32px)); max-height: calc(100vh - 64px);
	overflow-y: auto; margin: 0; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
	background: var(--cream-raised); padding: 14px; border-radius: 4px;
}
/* position: fixed on the modal itself (above) establishes the containing
   block this absolute position resolves against, so this stays pinned to
   the modal's own top-right corner regardless of scroll position inside it. */
.gcdoc-modal-close {
	position: absolute; top: 8px; right: 8px;
	width: 32px; height: 32px; border: none; border-radius: 50%;
	background: var(--cream-raised); color: var(--ink); font-size: 1.4rem; line-height: 1;
	cursor: pointer;
}
.gcdoc-modal-close:hover { background: var(--line); }

/* Membership Directory */
.gcdoc-directory-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.gcdoc-directory-card {
	display: flex;
	gap: 14px;
	align-items: flex-start;
	background: var(--cream-raised);
	border: 1px solid var(--line);
	border-radius: 6px;
	padding: 16px;
}
.gcdoc-directory-card__avatar img { border-radius: 50%; width: 56px; height: 56px; object-fit: cover; display: block; }
.gcdoc-directory-card__body h3 { font-size: 1.02rem; margin-bottom: 4px; }
.gcdoc-directory-card__dogs { font-size: 0.88rem; color: var(--pine-deep); margin-bottom: 4px; }
.gcdoc-directory-card__contact { font-size: 0.85rem; color: var(--ink-soft); margin: 0; }
.gcdoc-directory-card__contact a { color: var(--ink-soft); }
@media (max-width: 480px) {
	.gcdoc-directory-grid { grid-template-columns: 1fr; }
}

.gcdoc-submit-actions { display: flex; gap: 12px; margin: 20px 0; flex-wrap: wrap; }
/* Member Stories header: title on the left, a quiet members-only
   "Share Your Story" button + My submissions link on the right. */
.gcdoc-archive__header--with-actions { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px 24px; flex-wrap: wrap; }
.gcdoc-story-share { display: flex; align-items: center; gap: 16px; padding-bottom: 6px; }
.gcdoc-story-share__link { font-size: 0.88rem; font-weight: 600; color: var(--ink-soft); }
.gcdoc-story-share__link:hover { color: var(--pine-deep); }
.btn-small { padding: 7px 14px; font-size: 0.85rem; }
.gcdoc-submission-status { color: var(--ink-soft); font-size: 0.85rem; }
.gcdoc-minutes-pager { display: flex; align-items: center; gap: 10px; margin: 16px 0; }
.gcdoc-minutes-pager button:disabled { opacity: 0.5; cursor: default; }
@media (max-width: 900px) {
	.gcdoc-dashboard__actions { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
	.gcdoc-dashboard__actions { grid-template-columns: 1fr; }
	.gcdoc-dashboard__resources ul { grid-template-columns: 1fr; }
}

/* ---- Footer ---- */
footer.site { background: var(--pine-deep); color: #dfe6d5; padding: 46px 0 30px; margin-top: 20px; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; }
footer.site h4 { font-family: var(--font-heading); color: #fff; font-size: 1rem; margin-bottom: 12px; }
footer.site .about p { font-size: 0.86rem; max-width: 32ch; color: #dfe6d5; }
footer.site .footer-location { font-size: 0.86rem; line-height: 1.5; margin-bottom: 14px; }
footer.site .footer-location strong { display: block; color: #fff; font-weight: 700; }
footer.site .footer-location a { color: #dfe6d5; text-decoration: none; }
footer.site .footer-location a:hover { color: #fff; text-decoration: underline; }
footer.site .links ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
footer.site .links a { color: #dfe6d5; text-decoration: none; font-size: 0.88rem; }
footer.site .links a:hover { color: #fff; }
footer.site .fine {
  border-top: 1px solid rgba(255,255,255,0.14); margin-top: 34px; padding-top: 18px;
  font-size: 0.78rem; color: #b7c2a9; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px;
}

/* ---- Forms / basic WooCommerce sanity ----
   Deny-list, not an allow-list of types: input[type="text"], [type="email"]
   etc. was tried twice and missed a type each time (search, then tel) —
   every input that isn't a checkbox/radio/button-like control gets styled. */
input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="hidden"]):not([type="file"]):not([type="image"]):not([type="reset"]):not([type="range"]),
select, textarea {
  font-family: inherit;
  font-size: 0.92rem;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 3px;
  background: var(--cream-raised);
  color: var(--ink);
  -webkit-appearance: none;
  appearance: none;
}
input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="hidden"]):not([type="file"]):not([type="image"]):not([type="reset"]):not([type="range"]):focus,
select:focus, textarea:focus,
a:focus-visible, button:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 1px;
}

@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; }
  .programs-grid { grid-template-columns: repeat(2, 1fr); }
  .gcdoc-classes-grid, .classes-grid { grid-template-columns: 1fr; }
  .stories-grid { grid-template-columns: 1fr; }
  .gcdoc-memorial-grid { grid-template-columns: repeat(2, 1fr); }
  .gcdoc-member-story-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr 1fr; }

  /* Phone/tablet menu: a toggle button, then the whole menu as a stacked
     list with every submenu shown expanded and indented (no hover here). */
  .nav-toggle {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 8px 14px; border: 1px solid var(--line); border-radius: 6px;
    background: var(--cream); color: var(--pine-deep); font: inherit; font-weight: 700; cursor: pointer;
  }
  .site-header-row { gap: 12px; }
  .brand { flex: 1 1 0; min-width: 0; } /* lets a long club name wrap so the Menu button stays beside it */
  .nav-toggle { flex-shrink: 0; }
  nav.primary-nav { display: none; flex-basis: 100%; }
  /* Open menu = a fixed panel filling the screen below the header bar,
     scrolling on its own, with the page behind it locked. (Expanding it
     inside the page instead made the header ~800px tall and the browser
     jumped the page so the menu ended up above the screen.) The top
     comes from --gcdoc-nav-top, set by nav-toggle.js on open. */
  header.site.nav-open nav.primary-nav {
    display: block; position: fixed; z-index: 50;
    top: var(--gcdoc-nav-top, 84px); left: 0; right: 0; bottom: 0;
    padding: 6px 28px 28px; background: var(--cream-raised); border-top: 1px solid var(--line);
    overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
  }
  html.gcdoc-nav-locked, html.gcdoc-nav-locked body { overflow: hidden; }
  /* Locking the page stops the sticky header from sticking — pin it so the
     Menu button (to close) stays on screen. */
  html.gcdoc-nav-locked header.site { position: fixed; top: 0; left: 0; right: 0; }
  nav.primary-nav ul { display: block; }
  nav.primary-nav a { display: block; padding: 10px 0; border-bottom: 1px solid var(--line); }
  nav.primary-nav li.menu-item-has-children > a::after,
  nav.primary-nav .sub-menu li.menu-item-has-children > a::after { content: none; }
  nav.primary-nav .sub-menu,
  nav.primary-nav .sub-menu .sub-menu,
  nav.primary-nav > ul > li:nth-last-child(-n+3) > .sub-menu,
  nav.primary-nav > ul > li:nth-last-child(-n+3) .sub-menu .sub-menu {
    display: block; position: static; min-width: 0; padding: 0 0 0 16px;
    background: none; border: 0; box-shadow: none;
  }
  nav.primary-nav .sub-menu a { padding: 8px 0; border-bottom: 1px solid var(--line); }
}

/* Members Area: tablet/phone */
@media (max-width: 900px) {
  .gcdoc-members-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .gcdoc-members-cards, .gcdoc-members-grid { grid-template-columns: 1fr; }
  .gcdoc-members-tabs a { padding: 10px 12px; }
  /* Full trail is too long here — just a back link to the level above. */
  .gcdoc-members-crumbs ol { display: none; }
  .gcdoc-members-crumbs__back { display: inline-block; }
  .gcdoc-my-shifts__manage { margin-left: 0; }
}

/* ---- Member Business Directory (gcdoc-core business-directory.php) ---- */
.gcdoc-biz-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gcdoc-biz-card {
  display: flex; flex-direction: column; background: var(--cream-raised);
  border: 1px solid var(--line); border-radius: 6px; overflow: hidden;
}
.gcdoc-biz-card[hidden] { display: none; }
.gcdoc-biz-card__logo { background: #fff; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: center; height: 150px; padding: 12px; }
.gcdoc-biz-card__logo img { max-height: 126px; width: auto; object-fit: contain; }
.gcdoc-biz-card__body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.gcdoc-biz-card__category { align-self: flex-start; font-size: 0.7rem; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; color: var(--pine-deep); background: #e3ecdc; border-radius: 999px; padding: 3px 10px; }
.gcdoc-biz-card h3 { font-size: 1.15rem; margin: 2px 0 0; overflow-wrap: anywhere; }
.gcdoc-biz-card__owner { font-size: 0.82rem; color: var(--ink-soft); margin: 0; }
.gcdoc-biz-card__desc { font-size: 0.9rem; }
.gcdoc-biz-card__desc p { margin: 0 0 0.6em; }
.gcdoc-biz-card__discount { font-size: 0.85rem; font-weight: 700; color: var(--gold-deep); margin: 0; }
.gcdoc-biz-card__contact { list-style: none; margin: auto 0 0; padding: 10px 0 0; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 0.85rem; }
.gcdoc-biz-card__contact a { color: var(--pine-deep); font-weight: 700; overflow-wrap: anywhere; }
.gcdoc-biz-empty { color: var(--ink-soft); }
.gcdoc-my-biz { list-style: none; margin: 20px 0 0; padding: 0; display: grid; gap: 8px; }
.gcdoc-my-biz__item { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 12px 16px; background: var(--cream-raised); border: 1px solid var(--line); border-radius: 4px; }
.gcdoc-my-biz__name { font-weight: 700; color: var(--pine-deep); }
.gcdoc-my-biz__status { font-size: 0.72rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; border-radius: 999px; padding: 3px 10px; background: #e3ecdc; color: var(--pine-deep); }
.gcdoc-my-biz__status--pending { background: #fff6df; color: var(--gold-deep); }
.gcdoc-my-biz__status--draft { background: #eee; color: var(--ink-soft); }
.gcdoc-my-biz__note { font-size: 0.82rem; color: var(--ink-soft); }
.gcdoc-my-biz__edit { margin-left: auto; }
.gcdoc-biz-form__current img { display: block; margin: 4px 0 8px; border-radius: 4px; }
.gcdoc-biz-form__privacy { font-size: 0.82rem; color: var(--ink-soft); }
@media (max-width: 900px) { .gcdoc-biz-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .gcdoc-biz-grid { grid-template-columns: 1fr; } }
/* Directory top: "My listings (n)" link + "List your business" (members only) */
.gcdoc-biz-toolbar { display: flex; justify-content: flex-end; align-items: center; gap: 16px; flex-wrap: wrap; margin: 0 0 16px; }
.gcdoc-biz-toolbar__mine { background: none; border: 0; padding: 0; cursor: pointer; font: inherit; font-size: 0.88rem; font-weight: 600; color: var(--ink-soft); text-decoration: underline; }
.gcdoc-biz-toolbar__mine:hover { color: var(--pine-deep); }
#gcdoc-business-mine .gcdoc-my-biz { margin-top: 12px; }
/* "PDF" label on Members Area links to documents */
.gcdoc-members-file { display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 3px; font-size: 0.65rem; font-weight: 800; letter-spacing: 0.05em; color: #96432a; border: 1px solid #96432a; vertical-align: middle; }
/* Business listings inside My Submissions: keep the listing rows' own box
   style (the generic .gcdoc-my-submissions li rule would flatten them). */
.gcdoc-my-submissions--business .gcdoc-biz-toolbar { margin: -30px 0 8px; }
/* "Share Your Story" beside the "Your Story Submissions" heading. */
.gcdoc-my-submissions .gcdoc-section-toolbar { display: flex; justify-content: flex-end; margin: -30px 0 8px; }
.gcdoc-my-submissions .gcdoc-my-biz__item { padding: 12px 16px; border: 1px solid var(--line); }
.gcdoc-my-submissions .gcdoc-my-biz__item:last-child { border-bottom: 1px solid var(--line); }
.gcdoc-my-submissions__invite { margin: 4px 0 0; color: var(--ink-soft); }
.gcdoc-my-submissions__empty { color: var(--ink-soft); }

/* My Submissions boxes with an invite line ("Have a business?…"): text and
   button share a row via grid — not a negative margin, which overlapped
   once the text wrapped. */
.gcdoc-my-submissions:has(> .gcdoc-my-submissions__invite) { display: grid; grid-template-columns: 1fr auto; column-gap: 18px; align-items: center; }
.gcdoc-my-submissions:has(> .gcdoc-my-submissions__invite) > h3 { grid-column: 1 / -1; }
.gcdoc-my-submissions:has(> .gcdoc-my-submissions__invite) > .gcdoc-section-toolbar,
.gcdoc-my-submissions:has(> .gcdoc-my-submissions__invite) > .gcdoc-biz-toolbar { margin: 0; }
@media (max-width: 560px) {
  .gcdoc-my-submissions:has(> .gcdoc-my-submissions__invite) { grid-template-columns: 1fr; }
  /* Buttons go under the heading/text instead of being pulled up beside it. */
  .gcdoc-my-submissions .gcdoc-section-toolbar,
  .gcdoc-my-submissions--business .gcdoc-biz-toolbar,
  .gcdoc-my-submissions:has(> .gcdoc-my-submissions__invite) > .gcdoc-section-toolbar,
  .gcdoc-my-submissions:has(> .gcdoc-my-submissions__invite) > .gcdoc-biz-toolbar { margin: 10px 0 12px; justify-content: flex-start; }
}

/* ---- Rainbow Bridge / memorials (gcdoc-core memorials.php) ----
   Quiet and respectful: centered header, framed portraits, soft
   placeholders (paw for dogs, heart for members), muted detail lines. */
.gcdoc-content .entry-content:has(.gcdoc-rb-grid) { max-width: none; }
.gcdoc-rb-header { text-align: center; max-width: 62ch; margin-left: auto; margin-right: auto; }
.gcdoc-rb-header p { color: var(--ink-soft); }
.gcdoc-rb-header + .gcdoc-story-search, .gcdoc-rb__search { justify-content: center; }
.gcdoc-rb__tabs { display: flex; justify-content: center; gap: 6px; margin: 4px 0 14px; flex-wrap: wrap; }
.gcdoc-rb__tabs a { padding: 6px 16px; border-radius: 999px; border: 1px solid var(--line); text-decoration: none; font-size: 0.88rem; font-weight: 600; color: var(--ink-soft); background: var(--cream-raised); }
.gcdoc-rb__tabs a:hover { color: var(--pine-deep); border-color: var(--pine); }
.gcdoc-rb__tabs a.is-active { color: #fff; background: var(--pine); border-color: var(--pine); }
.gcdoc-rb-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; margin-top: 8px; }
.gcdoc-rb-card {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px;
  padding: 12px 12px 16px; text-decoration: none; color: var(--ink);
  background: var(--cream-raised); border: 1px solid var(--line); border-radius: 10px;
  transition: box-shadow .15s ease, transform .15s ease;
}
.gcdoc-rb-card:hover { box-shadow: 0 8px 22px rgba(0,0,0,0.07); transform: translateY(-2px); }
.gcdoc-rb-card__photo { display: block; width: 100%; aspect-ratio: 4 / 5; border-radius: 7px; overflow: hidden; background: #efebdf; margin-bottom: 8px; }
.gcdoc-rb-card__photo img { width: 100%; height: 100%; object-fit: cover; display: block; margin: 0; border-radius: 0; }
.gcdoc-rb-card .gcdoc-memorial-placeholder { width: 100%; height: 100%; margin: 0; border: 0; border-radius: 0; background: linear-gradient(180deg, #f3efe4, #e9e3d3); }
.gcdoc-memorial-placeholder__icon { width: 34%; max-width: 72px; color: var(--gold-deep); opacity: 0.45; }
.gcdoc-memorial-placeholder--human .gcdoc-memorial-placeholder__icon { color: var(--pine); opacity: 0.4; }
.gcdoc-rb-card__name { font-family: var(--font-heading); font-weight: 600; font-size: 1.08rem; color: var(--pine-deep); line-height: 1.25; overflow-wrap: anywhere; }
.gcdoc-rb-card__companion { font-size: 0.82rem; font-style: italic; color: var(--ink-soft); }
.gcdoc-rb-card__date { font-size: 0.78rem; letter-spacing: 0.04em; color: var(--ink-soft); }
.gcdoc-rb__pages { margin-top: 26px; text-align: center; }
.gcdoc-rb__pages .page-numbers { padding: 4px 9px; margin: 0 2px; }
.gcdoc-rb__pages .current { font-weight: 700; color: var(--pine-deep); }
.gcdoc-rb__empty { text-align: center; color: var(--ink-soft); margin: 24px 0; }
.gcdoc-rb-band { border-top: 1px solid var(--line); margin-top: 20px; }
/* Single memorial page: paw/heart placeholder in the photo frame. */
.gcdoc-title-entry__placeholder--memorial .gcdoc-memorial-placeholder { width: 100%; height: 100%; min-height: 260px; margin: 0; border: 0; border-radius: 6px; background: linear-gradient(180deg, #f3efe4, #e9e3d3); }
.gcdoc-member-story__companion { font-style: italic; color: var(--ink-soft); margin: 2px 0 0; }
@media (max-width: 900px) { .gcdoc-rb-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .gcdoc-rb-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; } }
/* The Rainbow Bridge page: center the page title and intro text to match. */
.gcdoc-content:has(.gcdoc-rb) > div > header,
.gcdoc-content:has(.gcdoc-rb) .entry-content > p { text-align: center; }
.gcdoc-content:has(.gcdoc-rb) .entry-content > p { max-width: 62ch; margin-left: auto; margin-right: auto; color: var(--ink-soft); }

/* Class grid program filter pills (gcdoc-core classes-filter.js). Each
   program pill uses that program's card-tag colors; the active one is
   filled in with the program's strong color. */
.gcdoc-program-pills { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px; }
.gcdoc-program-pills__pill {
  font: inherit; font-size: 0.85rem; font-weight: 700; cursor: pointer;
  padding: 7px 16px; border-radius: 999px; border: 1px solid var(--line);
  background: var(--cream-raised); color: var(--ink-soft);
}
.gcdoc-program-pills__pill:hover { border-color: var(--pine); color: var(--pine-deep); }
.gcdoc-program-pills__pill.is-active { background: var(--pine-deep); border-color: var(--pine-deep); color: #fff; }
.gcdoc-program-pills__pill--beginner-series { background: #f2ddd3; color: #96432a; border-color: transparent; }
.gcdoc-program-pills__pill--obedience-rally { background: #e3ecdc; color: var(--pine-deep); border-color: transparent; }
.gcdoc-program-pills__pill--performance-agility { background: #f5e8d2; color: var(--gold-deep); border-color: transparent; }
.gcdoc-program-pills__pill--scent-sports { background: #dbe7ef; color: #2c5876; border-color: transparent; }
.gcdoc-program-pills__pill--beginner-series.is-active { background: #96432a; color: #fff; }
.gcdoc-program-pills__pill--obedience-rally.is-active { background: var(--pine-deep); color: #fff; }
.gcdoc-program-pills__pill--performance-agility.is-active { background: var(--gold-deep); color: #fff; }
.gcdoc-program-pills__pill--scent-sports.is-active { background: #2c5876; color: #fff; }
.gcdoc-classes-grid__item[hidden] { display: none; }

/* Cleaning event type (mowing / building cleaning) — slate teal. */
.gcdoc-event-dot--cleaning { background: #3f7a72; }
.gcdoc-calendar__event--cleaning { background: #dcebe8; color: #2f5f59; }
@media (max-width: 700px) { .gcdoc-calendar .gcdoc-calendar__event--cleaning { background: #3f7a72; } }

/* Events list: weekly upkeep shown once, above the filters. */
.gcdoc-regular-schedule { margin: 0 0 18px; padding: 12px 16px; background: var(--cream-raised); border: 1px solid var(--line); border-radius: 6px; }
.gcdoc-regular-schedule h2 { font-size: 1rem; margin: 0 0 6px; }
.gcdoc-regular-schedule ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.gcdoc-regular-schedule a { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px; padding: 6px 0; text-decoration: none; color: var(--ink); }
.gcdoc-regular-schedule__title { font-weight: 700; color: var(--pine-deep); }
.gcdoc-regular-schedule__when { font-size: 0.88rem; color: var(--ink-soft); }
