.ac-dashboard,
.ac-section,
.ac-contact-form {
	color: var(--ac-ink);
}

.ac-dashboard,
.ac-section {
	margin: 1.5rem 0;
}

.ac-access-panel,
.ac-account-summary {
	display: grid;
	gap: 1rem;
	margin: 1.5rem 0;
	padding: 1.25rem;
	border: 1px solid var(--ac-line);
	border-radius: var(--ac-radius);
	background: var(--ac-surface);
	box-shadow: var(--ac-shadow);
}

.ac-account-summary {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: start;
}

.ac-kicker {
	margin: 0 0 0.4rem;
	color: var(--ac-muted);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ac-access-panel h2,
.ac-account-summary h2 {
	margin-top: 0;
}


.ac-account-summary__details {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.75rem;
	margin: 0;
}

.ac-account-summary__details div {
	padding: 0.75rem;
	border: 1px solid var(--ac-line);
	border-radius: 12px;
	background: var(--ac-surface-soft);
}

.ac-account-summary__details dt {
	color: var(--ac-muted);
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
}

.ac-account-summary__details dd {
	margin: 0.2rem 0 0;
}

.ac-card-list {
	display: grid;
	gap: 1rem;
}

.ac-card {
	border: 1px solid var(--ac-line);
	border-radius: var(--ac-radius);
	padding: 1rem;
	background: var(--ac-surface);
	box-shadow: var(--ac-shadow);
}

.ac-section-heading {
	margin-bottom: 1rem;
}

.ac-section-heading h2 {
	margin-bottom: 0;
}

.ac-link-grid,
.ac-actions,
.ac-list,
.ac-detail-list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	padding: 0;
	margin: 0;
	list-style: none;
}

.ac-list-stacked {
	display: block;
}

.ac-list-stacked li {
	margin-bottom: 0.75rem;
}

.ac-form p {
	margin-bottom: 1rem;
}

.ac-form .widefat {
	max-width: 100%;
}

.ac-document-tools {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-bottom: 1rem;
}

.ac-document-tools label,
.ac-document-tools span {
	display: block;
}

.ac-document-tools span {
	font-weight: 700;
	margin-bottom: 0.35rem;
}

.ac-document-tools input,
.ac-document-tools select {
	box-sizing: border-box;
	width: 100%;
}

.ac-document-row[hidden] {
	display: none;
}

.ac-document-row--locked .ac-file-icon {
	filter: grayscale(1);
	opacity: 0.5;
}

.ac-document-row--locked .ac-document-row__body h3 {
	color: var(--ac-muted);
}

.ac-button--muted {
	background: var(--ac-surface-soft);
	border: 1px solid var(--ac-line);
	color: var(--ac-muted);
	cursor: default;
	pointer-events: none;
}

.ac-contact-form__form {
	display: grid;
	gap: 1rem;
}

.ac-contact-form__grid {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ac-contact-form__form p {
	margin: 0;
}

.ac-contact-form__form label {
	display: block;
	font-weight: 600;
	color: var(--ac-ink);
	margin-bottom: 0.375rem;
	font-size: 0.9rem;
}

.ac-contact-form__form input,
.ac-contact-form__form textarea {
	box-sizing: border-box;
	width: 100%;
	padding: 0.625rem 0.875rem;
	border: 1px solid var(--ac-line);
	border-radius: calc(var(--ac-radius) / 3);
	background: #fff;
	color: var(--ac-ink);
	font-size: 1rem;
	line-height: 1.5;
	transition: border-color 0.15s;
}

.ac-contact-form__form input:focus,
.ac-contact-form__form textarea:focus {
	outline: none;
	border-color: var(--ac-primary);
	box-shadow: 0 0 0 3px rgba(11, 58, 70, 0.12);
}

.ac-contact-form__form textarea {
	resize: vertical;
	max-width: 100%;
}

.ac-message-success {
	color: #0f5132;
}

.ac-message-error {
	color: #842029;
}

.ac-button {
	display: inline-block;
	padding: 0.6rem 1rem;
	border: 1px solid var(--ac-primary);
	border-radius: 999px;
	background: var(--ac-primary);
	color: var(--ac-primary-contrast);
	font-weight: 700;
	font-size: inherit;
	font-family: inherit;
	line-height: 1.4;
	white-space: nowrap;
	text-decoration: none;
	cursor: pointer;
	vertical-align: middle;
	box-sizing: border-box;
}

.ac-button:hover,
.ac-button:focus {
	background: #082d37;
	color: var(--ac-primary-contrast);
}


.ac-actions form {
	margin: 0;
}

.ac-message,
.ac-meta,
.ac-muted {
	color: var(--ac-muted);
}

.ac-content > *:last-child {
	margin-bottom: 0;
}

.ac-board-photo {
	align-items: center;
	aspect-ratio: 1 / 1;
	background: linear-gradient(135deg, var(--ac-accent), var(--ac-primary));
	border-radius: 999px;
	color: var(--ac-primary-contrast);
	display: inline-flex;
	font-size: 1.35rem;
	font-weight: 800;
	justify-content: center;
	margin-bottom: 1rem;
	max-width: 120px;
	overflow: hidden;
	width: 100%;
}

.ac-board-photo img {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

.ac-board-directory--carousel .ac-board-directory__list,
.ac-social-moments--carousel .ac-social-moments__track {
	display: grid;
	grid-auto-columns: minmax(220px, 1fr);
	grid-auto-flow: column;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
}

.ac-board-directory--carousel .ac-board-card,
.ac-social-moments--carousel .ac-social-moments__card {
	scroll-snap-align: start;
}

.ac-board-directory--compact .ac-board-photo {
	max-width: 72px;
}

.ac-board-term {
	font-weight: 700;
}

.ac-board-bio {
	margin-top: 0.75rem;
}

.ac-contact-module__grid {
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.ac-contact-note {
	border-top: 1px solid var(--ac-line);
	margin-top: 1rem;
	padding-top: 1rem;
}

.ac-contact-note--urgent {
	border-color: var(--ac-accent);
}

.ac-contact-map {
	aspect-ratio: 16 / 10;
	background: var(--ac-surface-soft);
	border: 1px solid var(--ac-line);
	border-radius: 12px;
	overflow: hidden;
}

.ac-contact-map iframe {
	border: 0;
	display: block;
	height: 100%;
	width: 100%;
}

.ac-events-list {
	margin-bottom: 1rem;
}

.ac-events-bar__list {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

.ac-events-bar__excerpt {
	color: var(--ac-muted);
	font-size: 0.85rem;
}

.ac-event-card {
	align-items: start;
	display: grid;
	gap: 1rem;
	grid-template-columns: 72px minmax(0, 1fr);
}

.ac-event-date {
	align-items: center;
	background: var(--ac-surface-soft);
	border: 1px solid var(--ac-line);
	border-radius: 14px;
	display: grid;
	justify-items: center;
	padding: 0.65rem;
	text-transform: uppercase;
}

.ac-event-date strong {
	font-size: 1.8rem;
	line-height: 1;
}

.ac-events-calendar {
	display: grid;
	gap: 1rem;
}

.ac-events-calendar__nav,
.ac-events-calendar__weekdays,
.ac-events-calendar__grid {
	display: grid;
	gap: 0.5rem;
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.ac-events-calendar__nav {
	align-items: center;
	grid-template-columns: auto minmax(0, 1fr) auto;
}

.ac-events-calendar__nav h3 {
	margin: 0;
	text-align: center;
}

.ac-events-calendar__weekdays {
	color: var(--ac-muted);
	font-size: 0.78rem;
	font-weight: 700;
	text-align: center;
	text-transform: uppercase;
}

.ac-events-day {
	background: #fff;
	border: 1px solid var(--ac-line);
	border-radius: 12px;
	min-height: 74px;
	padding: 0.5rem;
	text-align: left;
}

.ac-events-day span {
	display: block;
	font-size: 0.72rem;
	margin-top: 0.35rem;
}

.ac-events-day.is-muted {
	opacity: 0.45;
}

.ac-events-day.is-selected,
.ac-events-day.has-events {
	border-color: var(--ac-primary);
}

/* Make days-with-events legible at rest (not only on hover): tinted cell +
   accent-colored event count. Scoped so it beats the theme's bare-button color. */
.ac-plugin .ac-events-day.has-events {
	background: var(--ac-accent-soft);
	border-color: color-mix(in srgb, var(--ac-accent) 45%, var(--ac-line));
}
.ac-plugin .ac-events-day.has-events span {
	color: color-mix(in srgb, var(--ac-accent) 78%, #101418);
	font-weight: 700;
}
.ac-plugin .ac-events-day.is-selected {
	background: var(--ac-soft);
}

/* Day-cell event previews. `.ac-events-day span` above is a broad block rule, so the
   wrapper and chips have to reset what they need rather than inherit its margin. */
/* `.ac-events-day span` is 0,1,1 (class + type) and would beat a bare
   `.ac-events-day__preview` at 0,1,0, silently killing the flex layout. */
.ac-events-day span.ac-events-day__preview {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin-top: 0.3rem;
	min-width: 0;
}

.ac-plugin .ac-events-day__event {
	display: block;
	margin-top: 0;
	padding: 1px 4px;
	border-radius: 4px;
	background: color-mix(in srgb, var(--ac-accent) 16%, #fff);
	border-left: 2px solid var(--ac-accent);
	font-size: 0.66rem;
	font-weight: 600;
	line-height: 1.25;
	/* Cells are narrow; one line each keeps the grid rows even. Full text is in title="". */
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.ac-plugin .ac-events-day__more {
	display: block;
	margin-top: 1px;
	font-size: 0.62rem;
	font-weight: 700;
	opacity: 0.7;
}

/* Narrow screens: the grid stays 7 columns, so chips stop being readable. The existing
   `@media (max-width: 700px)` block already hides `.ac-plugin .ac-events-day span`, and
   the preview wrapper is a span (required — a <button> may only contain phrasing
   content), so previews collapse to the has-events dot there without a new rule. Do not
   raise the specificity of the rules above past `.ac-plugin .ac-events-day span` or that
   fallback silently stops working. */

/* ---- Reusable eyebrow (ochre dash + uppercase label) ---- */
.ac-plugin .ac-eyebrow { display: inline-flex; align-items: center; gap: .6rem; font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ac-accent); }
.ac-plugin .ac-eyebrow::before { content: ""; width: 30px; height: 2px; background: var(--ac-accent); flex: none; }
.ac-plugin .ac-eyebrow--sm { font-size: .64rem; letter-spacing: .12em; }
.ac-plugin .ac-eyebrow--sm::before { width: 16px; }

/* ---- Reusable text block ([association_text_block]) ---- */
.ac-plugin .ac-text-block { margin: 2.25rem 0; }
.ac-plugin .ac-text-block__lead { display: grid; gap: .75rem; }
.ac-plugin .ac-text-block__heading { font-size: clamp(1.55rem, 3vw, 2.05rem); line-height: 1.14; color: var(--ac-ink); margin: 0; }
.ac-plugin .ac-text-block__body p { color: var(--ac-muted); margin: 0; }
.ac-plugin .ac-text-block__cta { margin-top: 1rem; }
@media (min-width: 720px) {
	.ac-plugin .ac-text-block { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem 3rem; align-items: end; }
	.ac-plugin .ac-text-block--card { align-items: center; }
}
.ac-plugin .ac-text-block--card { border: 1px solid var(--ac-line); border-top: 3px solid var(--ac-accent); border-radius: var(--ac-radius); background: var(--ac-surface); padding: 1.75rem; box-shadow: var(--ac-card-shadow); }

/* ---- Reusable contact card ([association_contact_cta]) ---- */
.ac-plugin .ac-contact-cta { margin-top: 1.25rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 1.5rem; padding: 1.5rem 1.75rem; border-radius: var(--ac-radius); background: var(--ac-primary); color: #fff; }
.ac-plugin .ac-contact-cta__body h3 { color: #fff; margin: 0; font-size: 1.3rem; }
.ac-plugin .ac-contact-cta__body p { color: rgba(255, 255, 255, .8); margin: .3rem 0 0; font-size: .92rem; }
.ac-plugin .ac-contact-cta__btn { background: var(--ac-accent); color: #20160a; border-color: var(--ac-accent); white-space: nowrap; }
.ac-plugin .ac-contact-cta__btn:hover { filter: brightness(1.05); }

/* ---- Events page: featured + upcoming, then calendar + selected day ---- */
.ac-plugin .ac-events-top { display: grid; gap: 1.25rem; margin: 1.75rem 0; }
@media (min-width: 820px) { .ac-plugin .ac-events-top { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: start; } }

.ac-plugin .ac-events-featured { overflow: hidden; display: flex; flex-direction: column; padding: 0; margin: 0; }
.ac-plugin .ac-events-featured__photo { aspect-ratio: 16 / 10; position: relative; background: linear-gradient(150deg, var(--ac-primary), color-mix(in srgb, var(--ac-accent) 55%, var(--ac-primary))); }
.ac-plugin .ac-events-featured__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ac-plugin .ac-events-featured__tag { position: absolute; left: 14px; top: 14px; background: var(--ac-surface); color: var(--ac-ink); font-size: .66rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; padding: .35rem .7rem; border-radius: 6px; }
.ac-plugin .ac-events-featured__body { padding: 1.4rem 1.5rem 1.6rem; display: flex; flex-direction: column; gap: .55rem; }
.ac-plugin .ac-events-featured__body h3 { font-size: 1.55rem; color: var(--ac-ink); margin: 0; }
.ac-plugin .ac-events-featured__body .ac-meta { color: var(--ac-accent); font-weight: 700; font-size: .82rem; }
.ac-plugin .ac-events-featured__body .ac-content { color: var(--ac-muted); }

.ac-plugin .ac-events-upcoming-list { display: grid; gap: 1rem; margin: 0; align-content: start; }

.ac-plugin .ac-events-calendar-wrap { display: grid; gap: 1.25rem; margin-top: 1.75rem; }
@media (min-width: 860px) { .ac-plugin .ac-events-calendar-wrap { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); align-items: start; } }
.ac-plugin .ac-events-selday { padding: 1.5rem; display: flex; flex-direction: column; gap: .9rem; }
.ac-plugin .ac-events-selday h3 { font-size: 1.55rem; color: var(--ac-ink); margin: 0; }
.ac-plugin .ac-events-selday .ac-event-detail { border: 1px solid var(--ac-line); border-radius: 10px; background: var(--ac-soft); padding: 1rem; margin: 0; }
.ac-plugin .ac-events-selday .ac-event-detail + .ac-event-detail { margin-top: .8rem; }
.ac-plugin .ac-events-selday .ac-event-detail h4 { margin: 0 0 .3rem; font-family: var(--ac-font-display); font-size: 1.1rem; color: var(--ac-ink); }
.ac-plugin .ac-events-selday .ac-event-detail .ac-meta { color: var(--ac-accent); font-weight: 700; font-size: .8rem; }

.ac-water-grid,
.ac-water-month-grid {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.ac-water-card {
	background: rgba(255, 255, 255, 0.72);
	border: 1px solid rgba(11, 53, 64, 0.16);
	border-radius: var(--ac-radius);
	padding: 1.25rem;
}

/* Weather/tide glyphs were unstyled (rendered as giant black fills); constrain
   and stroke them like the rest of the plugin's line icons. */
.ac-plugin .ac-water-icon { width: 48px; height: 48px; border-radius: 12px; background: var(--ac-accent-soft); display: inline-flex; align-items: center; justify-content: center; margin-bottom: .6rem; }
.ac-plugin .ac-water-icon svg { width: 26px; height: 26px; fill: none; stroke: var(--ac-accent); stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

.ac-water-card span,
.ac-water-heading .ac-meta {
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.ac-water-card strong {
	display: block;
	font-size: clamp(1.5rem, 4vw, 2.35rem);
	line-height: 1;
	margin: 0.4rem 0;
}

.ac-water-source {
	margin-top: 1rem;
}

.ac-table-wrap {
	overflow-x: auto;
}

.ac-water-table {
	border-collapse: collapse;
	min-width: 520px;
	width: 100%;
}

.ac-water-table th,
.ac-water-table td {
	border-bottom: 1px solid rgba(11, 53, 64, 0.14);
	padding: 0.8rem;
	text-align: left;
}

.ac-tide-extra-row {
	display: none;
}

.ac-water-view-more {
	margin-top: 1rem;
}

.ac-water-view-more[data-ac-expanded="true"] ~ *,
.ac-water-view-more .ac-water-view-more__less {
	display: none;
}

.ac-water-view-more[data-ac-expanded="true"] .ac-water-view-more__more {
	display: none;
}

.ac-water-view-more[data-ac-expanded="true"] .ac-water-view-more__less {
	display: inline;
}

.ac-card:has(.ac-water-view-more[data-ac-expanded="true"]) .ac-tide-extra-row {
	display: table-row;
}

.ac-social-moments {
	margin: 2rem 0;
}

.ac-social-moments__track {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.ac-social-moments__card {
	aspect-ratio: 4 / 3;
	background: #0b3540;
	border-radius: 1rem;
	overflow: hidden;
	position: relative;
}

.ac-social-moments__card img {
	display: block;
	height: 100%;
	inset: 0;
	object-fit: cover;
	position: absolute;
	width: 100%;
}

.ac-social-moments__card::before {
	background-image: var(--ac-social-image);
	background-position: center;
	background-size: cover;
	content: "";
	inset: 0;
	position: absolute;
}

.ac-social-moments__card::after {
	background: linear-gradient(180deg, transparent 35%, rgba(0, 0, 0, 0.65));
	content: "";
	inset: 0;
	position: absolute;
}

.ac-social-moments__card a {
	color: inherit;
	display: block;
	inset: 0;
	position: absolute;
	text-decoration: none;
	z-index: 2;
}

.ac-social-moments__card span {
	bottom: 1rem;
	color: #fff;
	font-weight: 700;
	left: 1rem;
	position: absolute;
	right: 1rem;
	z-index: 3;
}

.ac-social-moments__card small {
	bottom: 0.45rem;
	color: rgba(255, 255, 255, 0.8);
	left: 1rem;
	position: absolute;
	right: 1rem;
	z-index: 3;
}

@media (max-width: 700px) {
	.ac-account-summary,
	.ac-account-summary__details,
	.ac-contact-form__grid,
	.ac-document-tools {
		grid-template-columns: 1fr;
	}

	.ac-event-card {
		grid-template-columns: 1fr;
	}

	.ac-events-featured {
		grid-template-columns: 1fr;
	}

	/* Keep the calendar a real 7-column month grid on mobile (not a flat list),
	   just compact: tighter gaps, smaller cells, keep the weekday letters, and a
	   dot instead of the "N events" label (too wide for a narrow cell). */
	.ac-events-calendar__weekdays,
	.ac-events-calendar__grid {
		gap: 3px;
	}
	.ac-plugin .ac-events-calendar__weekdays {
		font-size: 0.58rem;
		letter-spacing: 0;
	}
	.ac-plugin .ac-events-day {
		min-height: 44px;
		padding: 4px 2px;
		border-radius: 8px;
		font-size: 0.82rem;
	}
	.ac-plugin .ac-events-day span {
		display: none;
	}
	.ac-plugin .ac-events-day.has-events::after {
		content: "";
		display: block;
		width: 5px;
		height: 5px;
		margin: 3px auto 0;
		border-radius: 50%;
		background: var(--ac-accent);
	}

	.ac-portal-pills {
		gap: 0.35rem;
	}
}

/* ── Classifieds list — sidebar layout ─────────────────── */
.ac-classifieds-header {
  display: flex;
  gap: 0.75rem;
  align-items: center;
  margin-bottom: 1.5rem;
}

.ac-classifieds-search {
  flex: 1;
}

.ac-classifieds-submit-cta {
  white-space: nowrap;
}

.ac-classifieds-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  align-items: start;
}

.ac-classifieds-layout:has(.ac-classifieds-sidebar) {
  grid-template-columns: 180px 1fr;
}

.ac-classifieds-sidebar ul {
  list-style: none;
  padding: 0;
  margin: 0.5rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.ac-cat-btn {
  display: block;
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  padding: 0.4rem 0.75rem;
  border-radius: 8px;
  cursor: pointer;
  color: var(--ac-ink);
  font-size: 0.9rem;
}

.ac-cat-btn:hover {
  background: var(--ac-surface-soft);
}

.ac-cat-btn.is-active {
  background: var(--ac-primary);
  color: var(--ac-primary-contrast);
  font-weight: 600;
}

/* Classifieds card grid */
#ac-classifieds-list.ac-card-list {
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}

.ac-classified-card {
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.ac-classified-card__thumb {
  margin: 0;
  border-radius: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}

.ac-classified-card__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ac-classified-card__body {
  padding: 1rem 1.1rem 1.25rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.ac-classified-card__body .ac-badge {
  margin-bottom: 0.4rem;
}

.ac-classified-card__title {
  margin: 0 0 0.35rem;
  font-size: 1.05rem;
  line-height: 1.3;
}

.ac-classified-card__price {
  margin: 0 0 0.5rem;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--ac-primary);
}

.ac-classified-card__excerpt {
  margin: 0;
  font-size: 0.85rem;
  color: var(--ac-muted);
  line-height: 1.5;
}

.ac-card--linked {
  position: relative;
}

.ac-card__link {
  position: absolute;
  inset: 0;
  border-radius: var(--ac-radius);
  z-index: 1;
}

.ac-card--linked:hover {
  box-shadow: 0 24px 56px rgba(18, 49, 63, 0.16);
  transform: translateY(-2px);
  transition: box-shadow 0.15s, transform 0.15s;
}

.ac-card--linked a:not(.ac-card__link) {
  position: relative;
  z-index: 2;
}

@media (max-width: 640px) {
  /* Repeat the :has() variant: its extra specificity otherwise beats this rule
     and the sidebar layout never collapses on mobile. */
  .ac-classifieds-layout,
  .ac-classifieds-layout:has(.ac-classifieds-sidebar) {
    grid-template-columns: 1fr;
  }
}

/* Hide theme date meta on single classified pages */
.single-ac_classified .wp-block-post-date {
  display: none !important;
}

/* Single classified view */
.ac-listing-title-row {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
}
.ac-listing-title-row .wp-block-post-title {
  margin: 0;
}
.ac-classified-single-wrap {
  /* Wide enough for the photos-beside-facts grid below; the description sets its
     own reading measure rather than running the full width. */
  max-width: 1080px;
  margin: 0 auto;
  padding: 0.75rem 0 3rem;
}
.ac-back-link {
  display: inline-block;
  margin-bottom: 1rem;
  font-size: 0.875rem;
  color: var(--ac-muted);
  text-decoration: none;
  letter-spacing: 0.01em;
}
.ac-back-link:hover { color: var(--ac-primary); text-decoration: none; }
/* ---- Listing detail: photos beside the facts ---- */
/* The rail carries the seller and the way to reach them, so it must not be
   something you scroll for. Below 900px it stacks under the photos. */
.ac-listing-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(260px, 1fr);
  gap: 1.75rem;
  align-items: start;
  margin: 0 0 2rem;
}
.ac-listing-grid--no-photos {
  grid-template-columns: minmax(0, 1fr);
  max-width: 460px;
}

.ac-classified-single-thumb {
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 4px 24px rgba(18, 49, 63, 0.10);
}
.ac-classified-single-thumb img {
  display: block;
  width: 100%;
  max-height: 480px;
  object-fit: cover;
}

.ac-listing-rail {
  padding: 1.5rem;
  background: var(--ac-surface, #fff);
  border: 1px solid var(--ac-line);
  border-radius: 14px;
  box-shadow: var(--ac-card-shadow);
}
.ac-listing-rail__label,
.ac-listing-facts dt {
  margin: 0;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ac-muted);
}
.ac-listing-rail__seller {
  margin: 0.3rem 0 1.25rem;
  font-family: var(--ac-font-display);
  font-size: 1.3rem;
  line-height: 1.2;
  color: var(--ac-ink);
}
.ac-listing-facts {
  display: grid;
  gap: 0.85rem;
  margin: 0;
  padding: 1.25rem 0 0;
  border-top: 1px solid var(--ac-line);
}
.ac-listing-facts dd {
  margin: 0.15rem 0 0;
  font-size: 0.95rem;
  color: var(--ac-ink);
}
.ac-listing-rail__contact {
  margin-top: 1.25rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--ac-line);
}
/* The summary is styled as the button it replaces. list-style/::-webkit-details-marker
   remove the default disclosure triangle in both engines. */
.ac-contact-reveal__toggle {
  display: block;
  padding: 0.7rem 1rem;
  border-radius: var(--ac-radius-sm);
  background: var(--ac-primary);
  color: var(--ac-primary-ink);
  font-size: 0.9rem;
  font-weight: 700;
  text-align: center;
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.ac-contact-reveal__toggle::-webkit-details-marker { display: none; }
.ac-contact-reveal__toggle:focus-visible { outline: 2px solid var(--ac-accent); outline-offset: 2px; }
.ac-contact-reveal__hide { display: none; }
.ac-contact-reveal[open] .ac-contact-reveal__show { display: none; }
.ac-contact-reveal[open] .ac-contact-reveal__hide { display: inline; }
.ac-contact-reveal__body { padding: 1rem 0 0; }
.ac-contact-reveal__label {
  margin: 0.85rem 0 0;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ac-muted);
}
.ac-contact-reveal__label:first-child { margin-top: 0; }
.ac-contact-reveal__value {
  margin: 0.2rem 0 0;
  /* The address is shown to be read and copied, so let it break rather than overflow. */
  overflow-wrap: anywhere;
  font-size: 1rem;
  font-weight: 600;
  color: var(--ac-ink);
}
.ac-listing-rail__external {
  margin: 0.75rem 0 0;
  text-align: center;
  font-size: 0.9rem;
}
.ac-listing-rail__external a { color: var(--ac-muted); }

@media (max-width: 900px) {
  .ac-listing-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ---- Listing photo carousel ---- */
/* The scroller is the inner track, not .ac-classified-single-thumb — that wrapper
   keeps `overflow: hidden` to clip the rounded corners, which would kill the scroll. */
.ac-classified-gallery { position: relative; }
.ac-classified-gallery__track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 100%;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  /* The buttons and counter are the affordance; a scrollbar under the photo is noise. */
  scrollbar-width: none;
}
.ac-classified-gallery__track::-webkit-scrollbar { display: none; }
.ac-classified-gallery__item {
  margin: 0;
  scroll-snap-align: start;
}
/* Every slide shares one grid row, so the row is as tall as the tallest photo and
   shorter ones left a strip of background beneath them. Stretching the image into
   its cell fills that (object-fit: cover above crops rather than distorts). */
.ac-classified-gallery--multiple .ac-classified-gallery__item { display: grid; }
.ac-classified-gallery--multiple .ac-classified-gallery__item img { height: 100%; }

/* The photo is a button, not a link — it opens the lightbox rather than a tab. */
.ac-classified-gallery__open {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
}
.ac-gallery-expand {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: rgba(18, 49, 63, 0.6);
  color: #fff;
  opacity: 0;
  transition: opacity 0.15s ease;
}
.ac-classified-gallery__open:hover .ac-gallery-expand,
.ac-classified-gallery__open:focus-visible .ac-gallery-expand { opacity: 1; }
.ac-classified-gallery__open:focus-visible { outline: 2px solid var(--ac-accent); outline-offset: -2px; }
/* Touch has no hover, so the affordance has to be there from the start. */
@media (hover: none) {
  .ac-gallery-expand { opacity: 1; }
}
.ac-gallery-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.92);
  color: var(--ac-ink);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 2px 10px rgba(18, 49, 63, 0.28);
  transition: background 0.15s ease;
}
.ac-gallery-nav:hover { background: #fff; }
.ac-gallery-nav:focus-visible { outline: 2px solid var(--ac-accent); outline-offset: 2px; }
.ac-gallery-nav--prev { left: 0.75rem; }
.ac-gallery-nav--next { right: 0.75rem; }
.ac-classified-gallery__count {
  position: absolute;
  right: 0.75rem;
  bottom: 0.75rem;
  margin: 0;
  padding: 0.15rem 0.6rem;
  border-radius: 999px;
  background: rgba(18, 49, 63, 0.72);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 600;
}
/* The browser's own [hidden] rule is specificity 0,1,0, so any layout rule with a class
   or two beats it and the element stays visible. That let the raw start/end time inputs
   show through under the slot picker, where they could be edited past the duration the
   picker allows. !important is the fix here precisely because [hidden] must outrank
   layout, not participate in it. */
.ac-plugin [hidden] { display: none !important; }

/* ---- Reservation slot picker ---- */
/* The grid is now a stack of rows so a long day can carry Morning/Afternoon/Evening
   headings between them; each row is the chip grid it used to be. */
.ac-plugin .ac-slot-grid { margin: 0 0 1rem; }
.ac-plugin .ac-slot-row {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(78px, 1fr));
  gap: 6px;
}
.ac-plugin .ac-slot-period {
  margin: 1rem 0 0.45rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ac-muted);
}
.ac-plugin .ac-slot-period:first-child { margin-top: 0; }
.ac-plugin .ac-slot {
  padding: 0.55rem 0.25rem;
  border: 1px solid var(--ac-line);
  border-radius: var(--ac-radius-sm);
  background: var(--ac-surface);
  color: var(--ac-ink);
  font-size: 0.85rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  transition: background 0.12s, border-color 0.12s;
}
.ac-plugin .ac-slot:hover:not(:disabled) { border-color: var(--ac-primary); }
.ac-plugin .ac-slot.is-selected {
  background: var(--ac-primary);
  border-color: var(--ac-primary);
  color: var(--ac-primary-ink);
}
.ac-plugin .ac-slot.is-taken {
  opacity: 0.4;
  cursor: not-allowed;
  text-decoration: line-through;
}
.ac-plugin .ac-slot:focus-visible { outline: 2px solid var(--ac-accent); outline-offset: 2px; }
.ac-plugin .ac-slot-duration { margin-top: 0.5rem; }

/* With the raw time fields gone, this line is the only confirmation of what is about to
   be booked, so it reads as a statement rather than as muted helper text. */
.ac-plugin .ac-slot-summary {
  margin: 0.9rem 0 0;
  padding: 0.75rem 0.9rem;
  border-left: 3px solid var(--ac-accent);
  background: var(--ac-accent-soft);
  border-radius: 0 var(--ac-radius-sm) var(--ac-radius-sm) 0;
  color: var(--ac-ink);
  font-size: 0.98rem;
  font-weight: 600;
}
.ac-plugin .ac-slot-summary:empty { display: none; }
.ac-plugin .ac-slot-summary__note { display: block; margin-top: 0.15rem; font-size: 0.85rem; font-weight: 500; color: var(--ac-muted); }

/* A date input only opens its picker from the small calendar glyph at the far right.
   Widening the indicator to cover the field makes the whole control the target, which is
   what people try first. */
.ac-plugin input[type="date"],
.ac-plugin input[type="time"] { position: relative; cursor: pointer; }
.ac-plugin input[type="date"]::-webkit-calendar-picker-indicator,
.ac-plugin input[type="time"]::-webkit-calendar-picker-indicator {
  position: absolute;
  inset: 0;
  width: auto;
  height: auto;
  margin: 0;
  padding: 0;
  cursor: pointer;
  opacity: 0;
}
/* The glyph still needs to be visible, so it is drawn as a background instead. */
.ac-plugin input[type="date"] {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23617078' stroke-width='2' stroke-linecap='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
}

/* ---- Photo lightbox (native <dialog>) ---- */
.ac-lightbox {
  width: min(92vw, 1100px);
  max-width: none;
  max-height: 90vh;
  padding: 0;
  border: 0;
  border-radius: 14px;
  background: #0d1f28;
  overflow: visible;
}
.ac-lightbox::backdrop { background: rgba(8, 24, 32, 0.86); }
.ac-lightbox__img {
  display: block;
  width: 100%;
  max-height: 90vh;
  margin: 0 auto;
  object-fit: contain;
  border-radius: 14px;
}
.ac-lightbox .ac-gallery-nav { z-index: 1; }
.ac-lightbox__close {
  position: absolute;
  top: -14px;
  right: -14px;
  z-index: 2;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: #fff;
  color: var(--ac-ink);
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.35);
}
.ac-lightbox__close:focus-visible { outline: 2px solid var(--ac-accent); outline-offset: 2px; }
.ac-lightbox__count {
  position: absolute;
  left: 50%;
  bottom: -2.25rem;
  transform: translateX(-50%);
  margin: 0;
  color: rgba(255, 255, 255, 0.88);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.08em;
}
@media (max-width: 640px) {
  .ac-lightbox { width: 100vw; border-radius: 0; }
  .ac-lightbox__close { top: 8px; right: 8px; }
}

.ac-classified-single-price {
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--ac-primary);
  background: var(--ac-surface-soft);
  padding: 0.1em 0.5em;
  border-radius: 6px;
  vertical-align: baseline;
}
.ac-classified-single-body {
  max-width: 68ch;
  margin-bottom: 1.5rem;
  font-size: 1.05rem;
  line-height: 1.7;
  color: var(--ac-ink);
}

/* ── Shared form-wrap card (register, profile, classified submit/edit) ── */
.ac-register-wrap,
.ac-classified-submit-wrap,
.ac-classified-edit-wrap,
.ac-profile-wrap {
  max-width: 560px;
  margin: 2rem auto;
  background: var(--ac-surface);
  border: 1px solid var(--ac-line);
  border-radius: var(--ac-radius);
  box-shadow: var(--ac-shadow);
  padding: 2.5rem;
}

.ac-register-wrap h2,
.ac-classified-submit-wrap h2,
.ac-classified-edit-wrap h2 {
  margin: 0 0 1.5rem;
  color: var(--ac-ink);
  font-size: 1.5rem;
}

.ac-my-classifieds-wrap {
  margin: 1.5rem 0;
}

.ac-my-classifieds-wrap h2 {
  margin-bottom: 1rem;
}

.description {
  font-size: 0.8rem;
  color: var(--ac-muted);
  margin: 0.35rem 0 0;
}

.ac-profile-success {
  background: #f0fdf4;
  border: 1px solid #86efac;
  border-radius: calc(var(--ac-radius) / 3);
  padding: 0.875rem 1.125rem;
  margin-bottom: 1.25rem;
  color: #0f5132;
  font-size: 0.9rem;
}

.ac-profile-picture-field {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.ac-profile-picture-field label {
  flex-basis: 100%;
}

.ac-profile-picture-field img {
  border: 1px solid var(--ac-line);
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}

.ac-fieldset {
  border: 1px solid var(--ac-line);
  border-radius: calc(var(--ac-radius) / 3);
  padding: 1rem 1.25rem;
  margin-bottom: 1.25rem;
}

.ac-fieldset legend {
  font-weight: 700;
  padding: 0 0.5rem;
  color: var(--ac-ink);
}

.ac-button--secondary {
  background: var(--ac-surface-soft);
  border-color: var(--ac-line);
  color: var(--ac-ink);
}

.ac-button--secondary:hover,
.ac-button--secondary:focus {
  background: #ede6d9;
  color: var(--ac-ink);
}

.ac-button--danger {
  background: #fef2f2;
  border-color: #fca5a5;
  color: #991b1b;
}

.ac-button--danger:hover,
.ac-button--danger:focus {
  background: #fee2e2;
  color: #7f1d1d;
}

.ac-badge {
  display: inline-block;
  padding: 0.2rem 0.65rem;
  border-radius: 999px;
  background: var(--ac-surface-soft);
  border: 1px solid var(--ac-line);
  color: var(--ac-muted);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 0.5rem;
}

.ac-badge--members {
	background: var(--ac-primary);
	border-color: var(--ac-primary);
	color: var(--ac-primary-contrast);
}

.ac-badge--featured {
  background: var(--ac-accent);
  border-color: var(--ac-accent);
  color: var(--ac-primary-contrast);
}

.ac-badge--board {
	background: var(--ac-accent);
	border-color: var(--ac-accent);
	color: var(--ac-primary-contrast);
}

.ac-badge--dues-paid {
	background: var(--ac-primary);
	border-color: var(--ac-primary);
	color: var(--ac-primary-contrast);
}

.ac-badge--dues-due {
	background: var(--ac-surface-soft);
	border: 1px solid var(--ac-line);
	color: var(--ac-muted);
}

.ac-badge--dues-overdue {
	background: var(--ac-accent);
	border-color: var(--ac-accent);
	color: var(--ac-primary-contrast);
}

.ac-badge--violation-open {
	background: var(--ac-accent);
	border-color: var(--ac-accent);
	color: var(--ac-primary-contrast);
}

.ac-badge--ballot-open {
	background: var(--ac-accent);
	border-color: var(--ac-accent);
	color: var(--ac-primary-contrast);
}

.ac-violation-summary-item {
	margin-bottom: 0.5rem;
}

.ac-card-thumb {
  margin-bottom: 0;
  border-radius: calc(var(--ac-radius) / 2) calc(var(--ac-radius) / 2) 0 0;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  line-height: 0;
}

.ac-card-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ac-inline-form {
  display: inline;
  margin: 0;
}

.ac-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 1rem;
}

/* My Listings grid + card */
.ac-my-listings-grid {
  grid-template-columns: 1fr;
  gap: 0.75rem;
}

.ac-my-listing-card {
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: row;
  align-items: stretch;
}

.ac-my-listing-card .ac-card-thumb {
  width: 160px;
  min-height: 120px;
  flex-shrink: 0;
  aspect-ratio: unset;
  border-radius: calc(var(--ac-radius) / 2) 0 0 calc(var(--ac-radius) / 2);
  position: relative;
}

.ac-my-listing-card .ac-card-thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ac-my-listing-card__body {
  padding: 1rem 1.25rem;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.ac-my-listing-card__body .ac-badge {
  margin-bottom: 0.4rem;
}

.ac-my-listing-card .ac-card-actions {
  flex-wrap: nowrap;
  margin-top: auto;
  padding-top: 0.75rem;
}

.ac-my-listing-card__title {
  margin: 0 0 0.5rem;
  font-size: 1.05rem;
  line-height: 1.3;
}

.ac-my-listing-card__meta {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}

.ac-my-listing-card__price {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ac-primary);
}

.ac-my-listing-card__status {
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0.15em 0.6em;
  border-radius: 999px;
  background: var(--ac-surface-soft);
  border: 1px solid var(--ac-line);
  color: var(--ac-muted);
}

.ac-my-listing-card__status--active {
  background: #ecfdf5;
  border-color: #6ee7b7;
  color: #065f46;
}

.ac-my-listing-card__status--pending {
  background: #fffbeb;
  border-color: #fcd34d;
  color: #92400e;
}

.ac-my-listing-card__status--sold {
  background: var(--ac-surface-soft);
  border-color: var(--ac-line);
  color: var(--ac-muted);
}

.ac-my-listing-card__status--expired {
  background: var(--ac-surface-soft);
  border-color: var(--ac-line);
  color: var(--ac-muted);
}

/* ── Registration Form ─────────────────────────────────── */
.ac-form-field {
  margin-bottom: 1.25rem;
}

.ac-form-field label {
  display: block;
  font-weight: 600;
  color: var(--ac-ink);
  margin-bottom: 0.375rem;
  font-size: 0.9rem;
}

.ac-form-field input[type="text"],
.ac-form-field input[type="email"],
.ac-form-field input[type="tel"],
.ac-form-field input[type="password"],
.ac-form-field input[type="date"],
.ac-form-field input[type="number"],
.ac-form-field input[type="time"],
.ac-form-field select,
.ac-form-field textarea,
.ac-input {
  width: 100%;
  padding: 0.625rem 0.875rem;
  border: 1px solid var(--ac-line);
  border-radius: calc(var(--ac-radius) / 3);
  background: #fff;
  color: var(--ac-ink);
  font-size: 1rem;
  line-height: 1.5;
  transition: border-color 0.15s;
  box-sizing: border-box;
}

.ac-form-field input:focus,
.ac-form-field select:focus,
.ac-form-field textarea:focus,
.ac-input:focus {
  outline: none;
  border-color: var(--ac-primary);
  box-shadow: 0 0 0 3px rgba(11, 58, 70, 0.12);
}

.ac-form-field textarea {
  resize: vertical;
  max-width: 100%;
}

.ac-form-field .ac-field-required {
  color: var(--ac-accent);
  margin-left: 2px;
}

.ac-form-address {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}

.ac-form-address .ac-address-street {
  grid-column: 1 / -1;
}

.ac-form-errors {
  background: #fef2f2;
  border: 1px solid #fca5a5;
  border-radius: calc(var(--ac-radius) / 3);
  padding: 0.875rem 1.125rem;
  margin-bottom: 1.25rem;
  color: #991b1b;
  font-size: 0.9rem;
}

.ac-form-errors ul {
  margin: 0.375rem 0 0;
  padding-left: 1.25rem;
}

.ac-form-errors li {
  margin: 0.25rem 0;
}

.ac-form-submit {
  width: 100%;
  padding: 0.75rem;
  background: var(--ac-primary);
  color: var(--ac-primary-contrast);
  border: none;
  border-radius: calc(var(--ac-radius) / 3);
  font-size: 1rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s;
  margin-top: 0.5rem;
}

.ac-form-submit:hover {
  background: var(--ac-ink);
}

.ac-register-success {
  max-width: 480px;
  margin: 2rem auto;
  background: var(--ac-surface);
  border: 1px solid var(--ac-line);
  border-radius: var(--ac-radius);
  box-shadow: var(--ac-shadow);
  padding: 2.5rem;
  text-align: center;
}

.ac-register-success .ac-success-icon {
  font-size: 3rem;
  margin-bottom: 1rem;
}

.ac-register-success h2 {
  color: var(--ac-ink);
  margin: 0 0 0.75rem;
}

.ac-register-success p {
  color: var(--ac-muted);
}

.ac-login-link {
  display: inline-block;
  margin-top: 1rem;
  color: var(--ac-primary);
  font-weight: 600;
  text-decoration: none;
}

.ac-login-link:hover {
  text-decoration: underline;
}

/* ── Login Panel ────────────────────────────────────────── */
.ac-login-panel {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 0;
  max-width: 680px;
  margin: 2rem auto;
  background: var(--ac-surface);
  border: 1px solid var(--ac-line);
  border-radius: var(--ac-radius);
  box-shadow: var(--ac-shadow);
  overflow: hidden;
}

.ac-login-brand {
  background: var(--ac-primary);
  color: var(--ac-primary-contrast);
  padding: 2.5rem 2rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.ac-login-brand h2 {
  margin: 0.25rem 0 0;
  color: inherit;
  font-size: 1.5rem;
  line-height: 1.2;
}

.ac-login-form {
  padding: 2.5rem;
}

.ac-login-notice {
  padding: 0.75rem 1rem;
  border-radius: calc(var(--ac-radius) / 3);
  font-size: 0.875rem;
  margin-bottom: 1.25rem;
}

.ac-login-notice--error {
  background: #fef2f2;
  border: 1px solid #fca5a5;
  color: #991b1b;
}

.ac-login-notice--pending {
  background: #fffbeb;
  border: 1px solid #fcd34d;
  color: #92400e;
}

@media (max-width: 560px) {
  .ac-login-panel { grid-template-columns: 1fr; }
  .ac-login-brand { padding: 1.5rem 2rem; }
}

/* ── Document rows ─────────────────────────────────────── */
.ac-documents-list--portal .ac-section-heading {
  margin-bottom: 1rem;
}

/* Compact layout — dense quick-access strip (e.g. Frequently Used Forms).
   Reuses .ac-document-row markup; .ac-card provides the panel, this densifies. */
.ac-plugin .ac-documents-list--compact .ac-document-row {
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  padding: 12px 18px;
}
.ac-plugin .ac-documents-list--compact .ac-file-icon,
.ac-plugin .ac-documents-list--compact .ac-document-row__meta,
.ac-plugin .ac-documents-list--compact .ac-document-row__category { display: none; }
.ac-plugin .ac-documents-list--compact .ac-document-row__body h3 { font-size: 1rem; margin: 0 0 2px; }
.ac-plugin .ac-documents-list--compact .ac-document-row__desc { margin: 0; }
.ac-plugin .ac-documents-list--compact .ac-document-row__actions .ac-button { padding: 6px 14px; font-size: .8rem; }

.ac-plugin .ac-documents-help { margin-top: 1.25rem; color: var(--ac-muted); font-size: .92rem; }

.ac-document-rows {
  container-type: inline-size;
  container-name: doc-rows;
  overflow: hidden;
  padding: 0;
}

.ac-document-row {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) 90px 110px;
  gap: 18px;
  align-items: center;
  padding: 12px 18px;
  border-bottom: 1px solid rgba(18, 49, 63, 0.1);
}

.ac-document-row:last-child {
  border-bottom: 0;
}

.ac-file-icon {
  display: grid;
  place-items: center;
  width: 42px;
  height: 50px;
  flex-shrink: 0;
  border-radius: 9px;
  background: var(--ac-muted);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #fff;
}

.ac-file-icon--pdf { background: #c65f3b; }

.ac-file-icon--doc,
.ac-file-icon--docx { background: #4f86bf; }

.ac-file-icon--xls,
.ac-file-icon--xlsx { background: #4f9562; }

.ac-document-row__body {
  min-width: 0;
}

.ac-document-row__body h3 {
  margin: 0 0 4px;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.015em;
}

.ac-document-row__body .ac-badge {
  margin-bottom: 0.35rem;
}

.ac-document-row__category {
  margin: 0 0 3px;
  color: var(--ac-accent);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.ac-document-row__desc {
  margin: 2px 0 0;
  font-size: 0.8125rem;
  color: var(--ac-muted);
  line-height: 1.45;
}

.ac-document-row__lock {
  margin: 2px 0 0;
  font-size: 0.8125rem;
  color: var(--ac-muted);
  font-style: italic;
}

.ac-document-row__meta {
  display: grid;
  gap: 3px;
  text-align: right;
  font-size: 0.75rem;
  color: var(--ac-muted);
  white-space: nowrap;
}

.ac-document-row__actions {
  display: flex;
  justify-content: flex-end;
}

.ac-document-row__actions .ac-button {
  padding: 9px 14px;
  font-size: 0.8125rem;
  border-radius: 999px;
  background: var(--ac-surface);
  border-color: var(--ac-line);
  color: var(--ac-primary);
  box-shadow: none;
}

.ac-document-row__actions .ac-button:hover {
  background: var(--ac-primary);
  color: var(--ac-primary-contrast);
}

.ac-document-row__actions .ac-button--muted {
  color: var(--ac-muted);
}

.ac-document-row__no-file {
  color: var(--ac-accent);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* ── Documents Portal layout ──────────────────────────── */
.ac-documents-portal { display: flex; flex-direction: column; gap: 0.75rem; }

.ac-portal-pills { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.25rem; }
.ac-portal-pill { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.35rem 0.85rem; border: 1px solid var(--ac-line); border-radius: 999px; background: var(--ac-surface-soft); color: var(--ac-ink); font-family: inherit; font-size: 0.875rem; font-weight: 600; cursor: pointer; white-space: nowrap; }
.ac-portal-pill:hover { background: var(--ac-line); }
.ac-portal-pill.is-active { background: var(--ac-primary); border-color: var(--ac-primary); color: var(--ac-primary-contrast); }
.ac-portal-pill.is-active .ac-pill { background: rgba(255,255,255,0.2); color: var(--ac-primary-contrast); }

.ac-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 26px;
  height: 22px;
  padding: 0 7px;
  border-radius: 999px;
  background: rgba(18, 49, 63, 0.1);
  color: var(--ac-muted);
  font-size: 11px;
  font-weight: 900;
  flex-shrink: 0;
}

.ac-portal-toolbar { display: flex; gap: 0.5rem; align-items: center; }
.ac-portal-toolbar .ac-portal-search { flex: 1; min-width: 0; }
.ac-portal-search { width: 100%; box-sizing: border-box; padding: 10px 14px; border: 1px solid var(--ac-line); border-radius: 10px; background: var(--ac-surface); color: var(--ac-ink); font-family: inherit; font-size: 0.9375rem; }
.ac-portal-sort { padding: 10px 12px; border: 1px solid var(--ac-line); border-radius: 10px; background: var(--ac-surface); color: var(--ac-ink); font-family: inherit; font-size: 0.9375rem; cursor: pointer; white-space: nowrap; }

/* Narrow card: hide meta, collapse to 3-column row */
@container doc-rows (max-width: 520px) {
  .ac-document-row {
    grid-template-columns: 42px minmax(0, 1fr) auto;
  }

  .ac-document-row__meta {
    display: none;
  }
}

/* ── Forums ─────────────────────────────────────────────── */
.ac-forum-card {
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.ac-forum-card__body {
  padding: 1rem 1.1rem 1.25rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.ac-forum-card__title {
  margin: 0 0 0.35rem;
  font-size: 1.05rem;
  line-height: 1.3;
}

.ac-forum-card__excerpt {
  margin: 0;
  font-size: 0.85rem;
  color: var(--ac-muted);
  line-height: 1.5;
}

.ac-forum-single-wrap {
  max-width: 720px;
  margin: 2rem auto;
}

.ac-forum-single-description {
  margin-bottom: 1.5rem;
  color: var(--ac-ink);
  line-height: 1.6;
}

.ac-forum-topic-list {
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
  border-top: 1px solid var(--ac-line);
}

.ac-forum-topic-list__item {
  padding: 0.9rem 0;
  border-bottom: 1px solid var(--ac-line);
}

.ac-forum-topic-list__meta {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.8rem;
  color: var(--ac-muted);
}

.ac-forum-new-topic {
  background: var(--ac-surface);
  border: 1px solid var(--ac-line);
  border-radius: var(--ac-radius);
  box-shadow: var(--ac-shadow);
  padding: 1.75rem 2rem;
}

.ac-forum-topic-single-wrap {
  max-width: 720px;
  margin: 2rem auto;
}

.ac-forum-topic-single-body {
  margin-bottom: 1.5rem;
  color: var(--ac-ink);
  line-height: 1.6;
}

.ac-forum-reply-list {
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
  border-top: 1px solid var(--ac-line);
}

.ac-forum-reply-list__item {
  padding: 0.9rem 0;
  border-bottom: 1px solid var(--ac-line);
}

.ac-forum-reply-list__meta {
  display: block;
  margin: 0 0 0.35rem;
  font-size: 0.8rem;
  color: var(--ac-muted);
}

.ac-forum-reply-list__body {
  color: var(--ac-ink);
  line-height: 1.6;
}

/* --- Snackbar / toast (JS-promoted from [data-ac-snackbar]) --------------- */
.ac-plugin .ac-snackbar {
  position: fixed;
  left: 50%;
  bottom: 1.5rem;
  z-index: 1000;
  transform: translate(-50%, 1.5rem);
  opacity: 0;
  display: flex;
  align-items: center;
  gap: .75rem;
  max-width: min(92vw, 30rem);
  padding: .8rem .85rem .8rem 1.1rem;
  border-radius: var(--ac-radius);
  background: var(--ac-ink);
  color: #fff;
  box-shadow: 0 14px 34px -10px rgba(8, 20, 30, .55);
  font-size: .95rem;
  font-weight: 600;
  transition: transform .28s cubic-bezier(.2, .8, .2, 1), opacity .28s;
}
.ac-plugin .ac-snackbar.is-visible { transform: translate(-50%, 0); opacity: 1; }
.ac-plugin .ac-snackbar.is-leaving { transform: translate(-50%, 1.5rem); opacity: 0; }
.ac-plugin .ac-snackbar--success { background: var(--ac-good, #1f7a4d); }
.ac-plugin .ac-snackbar--error { background: var(--ac-crit, #b3261e); }
.ac-plugin .ac-snackbar__msg { flex: 1 1 auto; }
.ac-plugin .ac-snackbar__close {
  flex: none;
  background: transparent;
  border: 0;
  color: inherit;
  cursor: pointer;
  font-size: 1.25rem;
  line-height: 1;
  padding: 0 .15rem;
  opacity: .8;
}
.ac-plugin .ac-snackbar__close:hover { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .ac-plugin .ac-snackbar { transition: opacity .2s; transform: translate(-50%, 0); }
  .ac-plugin .ac-snackbar.is-leaving { transform: translate(-50%, 0); }
}

/* --- Reservations: visual resource picker + availability ------------------ */
.ac-plugin .ac-reservations { display: grid; gap: 1.25rem; }
.ac-plugin .ac-reservation-form { display: grid; gap: 1rem; }
.ac-plugin .ac-field-label { margin: .4rem 0 0; font-weight: 700; font-size: .95rem; color: var(--ac-ink); }
.ac-plugin .ac-reservable-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .8rem; }
.ac-plugin .ac-reservable-option { position: relative; display: block; cursor: pointer; }
.ac-plugin .ac-reservable-option input { position: absolute; opacity: 0; pointer-events: none; }
.ac-plugin .ac-reservable-card { display: flex; gap: .8rem; height: 100%; padding: .8rem; border: 1px solid var(--ac-line); border-radius: var(--ac-radius); background: var(--ac-surface); transition: border-color .12s, box-shadow .12s, background .12s; }
.ac-plugin .ac-reservable-option:hover .ac-reservable-card { border-color: color-mix(in srgb, var(--ac-primary) 40%, var(--ac-line)); }
.ac-plugin .ac-reservable-option.is-selected .ac-reservable-card,
.ac-plugin .ac-reservable-option:has(input:checked) .ac-reservable-card { border-color: var(--ac-primary); box-shadow: 0 0 0 1px var(--ac-primary); background: var(--ac-accent-soft); }
.ac-plugin .ac-reservable-card__thumb { flex: none; width: 64px; height: 64px; border-radius: 10px; overflow: hidden; display: grid; place-items: center; background: var(--ac-soft); }
.ac-plugin .ac-reservable-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.ac-plugin .ac-reservable-card__thumb--empty { color: var(--ac-muted); }
.ac-plugin .ac-reservable-card__thumb--empty svg { width: 26px; height: 26px; }
.ac-plugin .ac-reservable-card__body { display: grid; gap: .3rem; align-content: start; min-width: 0; }
.ac-plugin .ac-reservable-card__body .ac-badge { justify-self: start; }
.ac-plugin .ac-reservable-card__title { font-weight: 700; }
.ac-plugin .ac-reservable-card__desc { font-size: .85rem; color: var(--ac-muted); }
.ac-plugin .ac-reservable-card__check { position: absolute; top: .5rem; right: .5rem; width: 22px; height: 22px; border-radius: 999px; background: var(--ac-primary); color: #fff; display: grid; place-items: center; font-size: .78rem; opacity: 0; transform: scale(.6); transition: opacity .12s, transform .12s; }
.ac-plugin .ac-reservable-option.is-selected .ac-reservable-card__check,
.ac-plugin .ac-reservable-option:has(input:checked) .ac-reservable-card__check { opacity: 1; transform: scale(1); }
.ac-plugin .ac-reservation-fields { display: grid; gap: 1rem; }
.ac-plugin .ac-reservation-fields .ac-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.ac-plugin .ac-reservation-availability { border-radius: var(--ac-radius); padding: .75rem 1rem; font-size: .9rem; }
.ac-plugin .ac-reservation-availability.is-open { background: var(--ac-good-soft, #e6f4ec); color: var(--ac-good, #1f7a4d); }
.ac-plugin .ac-reservation-availability.is-busy { background: var(--ac-warn-soft); color: var(--ac-warn); }
.ac-plugin .ac-reservation-availability ul { margin: .3rem 0 .3rem 1.1rem; }
.ac-plugin .ac-reservation-availability .ac-meta { display: block; margin-top: .3rem; }
.ac-plugin .ac-reservation-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .1rem; }
.ac-plugin .ac-reservation-list__item { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid var(--ac-line); }
.ac-plugin .ac-reservation-list__item:last-child { border-bottom: 0; }
.ac-plugin .ac-reservation-list__main { display: grid; gap: .15rem; min-width: 0; }
@media (max-width: 640px) { .ac-plugin .ac-reservation-fields .ac-form-row { grid-template-columns: 1fr; } }

/* Weather outlook rows must be the same height as the tide table's rows, or the two
   cards' "view more" buttons stop lining up. Three things made them taller: a
   block-level <strong>, a block-level date, and the conditions text wrapping. */
.ac-plugin .ac-weather-outlook__when { white-space: nowrap; }
.ac-plugin .ac-weather-outlook__when strong { display: inline; }
.ac-plugin .ac-weather-outlook__date { display: inline; margin-left: .4em; font-size: .82em; opacity: .72; white-space: nowrap; }
/* The table already scrolls horizontally (.ac-table-wrap), like the tide list. */
.ac-plugin .ac-weather-outlook .ac-meta { white-space: nowrap; }

/* Keeping three columns on one line each overflowed the card by ~16px, clipping the
   wind direction. Trim the horizontal padding and ease the conditions text down a
   step so the row fits without a scrollbar; row height is unchanged. */
.ac-plugin .ac-weather-outlook .ac-water-table th,
.ac-plugin .ac-weather-outlook .ac-water-table td { padding-left: .55rem; padding-right: .55rem; }
.ac-plugin .ac-weather-outlook .ac-meta { font-size: .88em; }
.ac-plugin .ac-weather-outlook__forecast { white-space: nowrap; }
/* Section note, moved out of the weather card so both cards are h3 + table + button. */
.ac-plugin .ac-water-heading__note {
	margin: .45rem 0 0;
	max-width: 66ch;
	color: var(--ac-muted);
	font-size: .95rem;
	line-height: 1.6;
}

/* The heading block is now eyebrow + note with no h2 between them, so it needs its own
   breathing room before the tide chart rather than relying on the heading's margin. */
.ac-plugin .ac-water-month .ac-water-heading { margin-bottom: 1.25rem; }
