/* ============================================================
   PBC Swiss — bbPress
   Replaces bbPress's bundled bbpress.css. Covers:
     Phase 1 — forum archive, single forum, single topic.
     Phase 2B — forms (new topic, new reply, login/register/lost-pass),
                user profile shell + sub-tabs + profile-edit form.
   Scoped via .pbc-bbp-wrap (template hook) + body.pbc-alumni-bbp
   (body_class filter in functions.php).
   ============================================================ */

.pbc-bbp-wrap { color: var(--ink); }

/* ------------------------------------------------------------
   Breadcrumb — bbPress's <div class="bbp-breadcrumb"> sits at
   the top of every page. Plain inline strip.
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-breadcrumb {
  font-size: var(--t-meta);
  color: var(--muted);
  padding-bottom: var(--s-3);
  margin-bottom: var(--s-5);
  border-bottom: 1px solid var(--hair);
  letter-spacing: .02em;
}
.pbc-bbp-wrap .bbp-breadcrumb a { color: var(--ink-2); }
.pbc-bbp-wrap .bbp-breadcrumb a:hover { color: var(--link-hover); }
.pbc-bbp-wrap .bbp-breadcrumb-sep { margin: 0 var(--s-2); color: var(--hair); }

/* Search form sits above the breadcrumb on the archive index. */
.pbc-bbp-wrap #bbp-search-form {
  display: flex;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.pbc-bbp-wrap #bbp-search-form input[type="text"] {
  flex: 1 1 240px;
  max-width: 320px;
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-2) var(--s-3);
  font-family: inherit;
  font-size: var(--t-meta);
  color: var(--ink);
}
.pbc-bbp-wrap #bbp-search-form button,
.pbc-bbp-wrap #bbp-search-form input[type="submit"] {
  border: 1px solid var(--ink);
  background: #fff;
  color: var(--ink);
  padding: var(--s-2) var(--s-4);
  font-family: inherit;
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
}
.pbc-bbp-wrap #bbp-search-form button:hover,
.pbc-bbp-wrap #bbp-search-form input[type="submit"]:hover {
  background: var(--link-hover);
}

/* Forum-archive page header — title left, search form right on one row.
   index.php detects the [bbp-forum-index] shortcode and wraps the h1 +
   the hoisted bbp_get_template_part('form','search') in this flex row. */
.pbc-forum-archive-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-4);
}
.pbc-forum-archive-header .pbc-bbp-wrap {
  /* Override the .pbc-bbp-wrap page-level padding from
     bp-bbp-primitives.css (var(--s-7) top / var(--s-9) bottom) — that's
     meant for the page-wide bbPress wrapper, not a small flex item. */
  padding: 0;
  flex: 0 0 auto;
}
.pbc-forum-archive-header .bbp-search-form {
  margin: 0;
}
.pbc-forum-archive-header #bbp-search-form {
  margin-bottom: 0;
}
@media (max-width: 700px) {
  .pbc-forum-archive-header {
    flex-direction: column;
    align-items: stretch;
  }
  .pbc-forum-archive-header #bbp-search-form {
    margin-bottom: var(--s-5);
  }
}

/* ------------------------------------------------------------
   Forums / Topics / Replies lists — bbPress emits these as
   `<ul.bbp-forums>` / `.bbp-topics` / `.bbp-replies` with a
   `<li.bbp-header>` row of column titles, a `<li.bbp-body>`
   wrapping the per-row `<ul>` items, and a `<li.bbp-footer>`.
   Each forum/topic row is its own `<ul>` whose `<li>` children
   are the columns. We turn the whole thing into a CSS grid.
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-forums,
.pbc-bbp-wrap .bbp-topics,
.pbc-bbp-wrap .bbp-replies {
  list-style: none;
  margin: 0 0 var(--s-6);
  padding: 0;
  border: 1px solid var(--hair);
  background: #fff;
}

/* Header row — column labels. */
.pbc-bbp-wrap .bbp-forums > li.bbp-header,
.pbc-bbp-wrap .bbp-topics > li.bbp-header,
.pbc-bbp-wrap .bbp-replies > li.bbp-header {
  background: #f7f7f7;
  border-bottom: 1px solid var(--hair);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-label);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
}
.pbc-bbp-wrap .bbp-forums > li.bbp-header .forum-titles,
.pbc-bbp-wrap .bbp-topics > li.bbp-header .forum-titles {
  display: grid;
  grid-template-columns: 3fr 1fr 1fr 2fr;
  gap: var(--s-3);
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}
.pbc-bbp-wrap .bbp-forums > li.bbp-header .forum-titles > li,
.pbc-bbp-wrap .bbp-topics > li.bbp-header .forum-titles > li {
  list-style: none;
  text-align: right;
}
.pbc-bbp-wrap .bbp-forums > li.bbp-header .forum-titles > li:first-child,
.pbc-bbp-wrap .bbp-topics > li.bbp-header .forum-titles > li:first-child {
  text-align: left;
}

.pbc-bbp-wrap .bbp-forums > li.bbp-footer,
.pbc-bbp-wrap .bbp-topics > li.bbp-footer { display: none; }

.pbc-bbp-wrap .bbp-forums > li.bbp-body,
.pbc-bbp-wrap .bbp-topics > li.bbp-body {
  list-style: none;
  margin: 0;
  padding: 0;
}

/* Each forum or topic row is `<ul id="bbp-forum-N">` etc. */
.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul,
.pbc-bbp-wrap .bbp-topics > li.bbp-body > ul {
  display: grid;
  grid-template-columns: 3fr 1fr 1fr 2fr;
  gap: var(--s-3);
  align-items: start;
  padding: var(--s-4);
  border-bottom: 1px solid var(--hair);
  list-style: none;
  margin: 0;
}
.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul:last-child,
.pbc-bbp-wrap .bbp-topics > li.bbp-body > ul:last-child {
  border-bottom: none;
}

.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul > li,
.pbc-bbp-wrap .bbp-topics > li.bbp-body > ul > li {
  list-style: none;
  font-size: var(--t-meta);
  text-align: right;
  color: var(--ink-2);
}
.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul > li:first-child,
.pbc-bbp-wrap .bbp-topics > li.bbp-body > ul > li:first-child {
  text-align: left;
}

/* Title cell — primary link + description / meta. */
.pbc-bbp-wrap .bbp-forum-title,
.pbc-bbp-wrap .bbp-topic-permalink {
  display: inline-block;
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: -.005em;
  line-height: 1.3;
  color: var(--ink);
}
.pbc-bbp-wrap .bbp-forum-title:hover,
.pbc-bbp-wrap .bbp-topic-permalink:hover {
  color: var(--link-hover);
}

.pbc-bbp-wrap .bbp-forum-content {
  color: var(--muted);
  font-size: var(--t-meta);
  margin-top: 2px;
  line-height: 1.5;
}

.pbc-bbp-wrap p.bbp-topic-meta {
  color: var(--muted);
  font-size: var(--t-meta);
  margin-top: 2px;
  line-height: 1.5;
}
.pbc-bbp-wrap p.bbp-topic-meta a { color: var(--ink-2); }
.pbc-bbp-wrap p.bbp-topic-meta a:hover { color: var(--link-hover); }

/* Numeric cells — tabular figures. */
.pbc-bbp-wrap .bbp-forum-topic-count,
.pbc-bbp-wrap .bbp-forum-reply-count,
.pbc-bbp-wrap .bbp-topic-voice-count,
.pbc-bbp-wrap .bbp-topic-reply-count {
  font-feature-settings: "tnum", "lnum";
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  color: var(--ink);
}

/* Freshness cell — link to last post + avatar/author meta. */
.pbc-bbp-wrap .bbp-forum-freshness a,
.pbc-bbp-wrap .bbp-topic-freshness a {
  color: var(--ink-2);
  font-weight: 500;
}
.pbc-bbp-wrap .bbp-forum-freshness a:hover,
.pbc-bbp-wrap .bbp-topic-freshness a:hover {
  color: var(--link-hover);
}

/* ------------------------------------------------------------
   Replies list — two-column author / content per reply.
   bbPress's per-reply row is a `<div.bbp-reply-header>` (meta
   strip) followed by `<div>` with two `.bbp-reply-author` and
   `.bbp-reply-content` children.
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-replies > li.bbp-header,
.pbc-bbp-wrap .bbp-replies > li.bbp-footer {
  display: grid;
  grid-template-columns: 1fr 4fr;
  gap: var(--s-4);
}
.pbc-bbp-wrap .bbp-replies > li.bbp-footer { display: none; }

.pbc-bbp-wrap .bbp-replies .bbp-body { padding: 0; }
.pbc-bbp-wrap .bbp-replies .bbp-body > div { /* reply wrap from loop-single-reply.php */
  display: grid;
  grid-template-columns: 1fr 4fr;
  gap: var(--s-4);
  padding: var(--s-5);
  border-bottom: 1px solid var(--hair);
}
.pbc-bbp-wrap .bbp-replies .bbp-body > div:last-child {
  border-bottom: none;
}

.pbc-bbp-wrap .bbp-reply-header {
  padding: var(--s-2) var(--s-5);
  background: #f7f7f7;
  border-bottom: 1px solid var(--hair);
  font-size: var(--t-meta);
  color: var(--muted);
}
.pbc-bbp-wrap .bbp-reply-header .bbp-meta {
  display: flex;
  gap: var(--s-4);
  align-items: center;
  flex-wrap: wrap;
}
.pbc-bbp-wrap .bbp-reply-post-date { font-weight: 500; color: var(--ink-2); }
.pbc-bbp-wrap .bbp-reply-permalink { color: var(--muted); }

.pbc-bbp-wrap .bbp-reply-author {
  text-align: left;
}
.pbc-bbp-wrap .bbp-reply-author a {
  display: inline-block;
  font-size: var(--t-meta);
  font-weight: 600;
  color: var(--ink);
}
.pbc-bbp-wrap .bbp-reply-author img.avatar {
  display: block;
  margin-bottom: var(--s-2);
}
.pbc-bbp-wrap .bbp-author-role {
  display: block;
  font-size: var(--t-label);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
}
.pbc-bbp-wrap .bbp-author-ip {
  font-size: var(--t-label);
  color: var(--muted);
  margin-top: var(--s-2);
}

.pbc-bbp-wrap .bbp-reply-content {
  font-size: var(--t-body);
  line-height: 1.6;
  color: var(--ink);
}
.pbc-bbp-wrap .bbp-reply-content p { margin-bottom: var(--s-3); }
.pbc-bbp-wrap .bbp-reply-content p:last-child { margin-bottom: 0; }
.pbc-bbp-wrap .bbp-reply-content blockquote {
  border-left: 3px solid var(--hair);
  padding: var(--s-2) var(--s-4);
  margin: var(--s-3) 0;
  color: var(--muted);
}

/* Even/odd row striping for forum + topic lists. */
.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul.odd,
.pbc-bbp-wrap .bbp-topics > li.bbp-body > ul.odd,
.pbc-bbp-wrap .bbp-replies .bbp-body > div.odd { background: #fff; }
.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul.even,
.pbc-bbp-wrap .bbp-topics > li.bbp-body > ul.even,
.pbc-bbp-wrap .bbp-replies .bbp-body > div.even { background: #fafafa; }

/* Sticky / super-sticky / closed topics get a small badge treatment. */
.pbc-bbp-wrap .bbp-topics .super-sticky,
.pbc-bbp-wrap .bbp-topics .sticky { border-left: 3px solid var(--co); }
.pbc-bbp-wrap .bbp-topics .status-closed { opacity: .65; }

/* Single forum / topic description block (sits between breadcrumb and list). */
.pbc-bbp-wrap .bbp-template-notice,
.pbc-bbp-wrap .bbp-template-notice.info {
  background: #f7f7f7;
  border-left: 3px solid var(--sv);
  padding: var(--s-3) var(--s-4);
  margin: var(--s-3) 0;
  font-size: var(--t-meta);
  color: var(--ink-2);
}
.pbc-bbp-wrap .bbp-template-notice.error {
  border-left-color: var(--cm);
}

/* Single-forum sub-description: <p class="bbp-topics-count"> etc. */
.pbc-bbp-wrap .bbp-topics-count,
.pbc-bbp-wrap .bbp-forums-count {
  font-size: var(--t-meta);
  color: var(--muted);
  margin-bottom: var(--s-3);
}

/* ------------------------------------------------------------
   Pagination — bbPress emits `<div class="bbp-pagination">`
   wrapping `<span class="bbp-pagination-count">` and a
   `<div class="bbp-pagination-links">` of `<a class="page-numbers">`
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-3) 0;
  margin: var(--s-3) 0;
  font-size: var(--t-meta);
  font-feature-settings: "tnum", "lnum";
}
.pbc-bbp-wrap .bbp-pagination-count {
  color: var(--muted);
}
.pbc-bbp-wrap .bbp-pagination-links {
  display: flex;
  gap: var(--s-1);
}
.pbc-bbp-wrap .bbp-pagination-links .page-numbers {
  display: inline-block;
  padding: var(--s-2) var(--s-3);
  min-width: 32px;
  text-align: center;
  border: 1px solid var(--hair);
  color: var(--ink);
}
.pbc-bbp-wrap .bbp-pagination-links .page-numbers.current {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
.pbc-bbp-wrap .bbp-pagination-links a.page-numbers:hover {
  border-color: var(--ink);
  color: var(--link-hover);
}

/* ------------------------------------------------------------
   Row actions (admin-side edit/reply/quote links per row)
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-row-actions,
.pbc-bbp-wrap .bbp-admin-links {
  font-size: var(--t-label);
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
  margin-left: var(--s-2);
}
.pbc-bbp-wrap .bbp-admin-links a {
  color: var(--muted);
  margin: 0 var(--s-1);
}
.pbc-bbp-wrap .bbp-admin-links a:hover { color: var(--link-hover); }

/* ------------------------------------------------------------
   Login / reply form area at the bottom of a single topic
   ------------------------------------------------------------ */
.pbc-bbp-wrap #bbpress-forums fieldset.bbp-form,
.pbc-bbp-wrap fieldset.bbp-form {
  margin-top: var(--s-6);
  padding: var(--s-5);
  border: 1px solid var(--hair);
  background: #fff;
}
.pbc-bbp-wrap fieldset.bbp-form legend {
  font-size: var(--t-label);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
  padding: 0 var(--s-2);
}
.pbc-bbp-wrap fieldset.bbp-form label {
  display: block;
  font-size: var(--t-meta);
  font-weight: 600;
  color: var(--ink-2);
  margin: var(--s-3) 0 var(--s-1);
}
.pbc-bbp-wrap fieldset.bbp-form input[type="text"],
.pbc-bbp-wrap fieldset.bbp-form input[type="password"],
.pbc-bbp-wrap fieldset.bbp-form input[type="email"],
.pbc-bbp-wrap fieldset.bbp-form textarea {
  width: 100%;
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-3);
  font-family: inherit;
  font-size: var(--t-body);
  color: var(--ink);
  margin-bottom: var(--s-2);
}
.pbc-bbp-wrap fieldset.bbp-form button,
.pbc-bbp-wrap fieldset.bbp-form input[type="submit"] {
  border: 1px solid var(--ink);
  background: #fff;
  color: var(--ink);
  padding: var(--s-3) var(--s-5);
  font-family: inherit;
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
}
.pbc-bbp-wrap fieldset.bbp-form button:hover,
.pbc-bbp-wrap fieldset.bbp-form input[type="submit"]:hover {
  background: var(--link-hover);
}
/* wp_editor() (mu-plugin pbc_alumni_enable_wysiwyg_on_bbp_forms) renders its
   Add Media / Visual-Code tabs / Quicktags HTML-mode toolbar / inner TinyMCE
   B-I-list-quote buttons all inside fieldset.bbp-form, so the bbp-form button
   rule above hijacks the lot with the bordered uppercase Submit-button look
   and they render comically oversized. Split the reset in two: WP chrome
   buttons get the standard WP admin button look (this is what the user sees
   on wp-admin), inner TinyMCE buttons get unstyled so TinyMCE's own .mce-btn
   CSS wins. The bbPress Submit row (button.submit further down at line ~594)
   is unaffected since it lives outside .wp-editor-wrap / .quicktags-toolbar. */
.pbc-bbp-wrap fieldset.bbp-form .wp-media-buttons .button,
.pbc-bbp-wrap fieldset.bbp-form .wp-editor-tabs .wp-switch-editor,
.pbc-bbp-wrap fieldset.bbp-form .quicktags-toolbar input.ed_button {
  border: 1px solid #c3c4c7;
  background: #f6f7f7;
  color: #2c3338;
  padding: 0 10px;
  font-family: inherit;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: normal;
  text-transform: none;
  min-height: 30px;
  line-height: 2.15384615;
  border-radius: 3px;
}
.pbc-bbp-wrap fieldset.bbp-form .wp-media-buttons .button:hover,
.pbc-bbp-wrap fieldset.bbp-form .wp-editor-tabs .wp-switch-editor:hover,
.pbc-bbp-wrap fieldset.bbp-form .quicktags-toolbar input.ed_button:hover {
  background: #f0f0f1;
  border-color: #8c8f94;
  color: #2c3338;
}
.pbc-bbp-wrap fieldset.bbp-form .mce-container button,
.pbc-bbp-wrap fieldset.bbp-form .mce-toolbar button,
.pbc-bbp-wrap fieldset.bbp-form .mce-btn button {
  border: 0;
  background: transparent;
  color: inherit;
  padding: 4px 6px;
  font-family: inherit;
  font-size: inherit;
  font-weight: normal;
  letter-spacing: normal;
  text-transform: none;
  min-height: auto;
  line-height: normal;
}
.pbc-bbp-wrap fieldset.bbp-form .mce-container button:hover,
.pbc-bbp-wrap fieldset.bbp-form .mce-toolbar button:hover,
.pbc-bbp-wrap fieldset.bbp-form .mce-btn button:hover {
  background: transparent;
}

/* Subscription / favorite links at the top of single forum / topic. */
.pbc-bbp-wrap .subscription-toggle,
.pbc-bbp-wrap .favorite-toggle {
  display: inline-block;
  font-size: var(--t-meta);
  color: var(--ink-2);
  margin-right: var(--s-3);
  padding: var(--s-1) var(--s-3);
  border: 1px solid var(--hair);
}
.pbc-bbp-wrap .subscription-toggle:hover,
.pbc-bbp-wrap .favorite-toggle:hover {
  border-color: var(--ink);
  color: var(--link-hover);
}

/* ------------------------------------------------------------
   Responsive — collapse 4-col grid to single column at narrow.
   ------------------------------------------------------------ */
@media (max-width: 1100px) {
  .pbc-bbp-wrap .bbp-forums > li.bbp-header .forum-titles,
  .pbc-bbp-wrap .bbp-topics > li.bbp-header .forum-titles,
  .pbc-bbp-wrap .bbp-forums > li.bbp-body > ul,
  .pbc-bbp-wrap .bbp-topics > li.bbp-body > ul {
    grid-template-columns: 2.5fr 1fr 1fr 1.5fr;
  }
}
@media (max-width: 700px) {
  .pbc-bbp-wrap .bbp-forums > li.bbp-header,
  .pbc-bbp-wrap .bbp-topics > li.bbp-header { display: none; }

  .pbc-bbp-wrap .bbp-forums > li.bbp-body > ul,
  .pbc-bbp-wrap .bbp-topics > li.bbp-body > ul {
    grid-template-columns: 1fr;
    gap: var(--s-2);
  }
  .pbc-bbp-wrap .bbp-forums > li.bbp-body > ul > li,
  .pbc-bbp-wrap .bbp-topics > li.bbp-body > ul > li {
    text-align: left;
  }

  .pbc-bbp-wrap .bbp-replies .bbp-body > div {
    grid-template-columns: 1fr;
  }
  .pbc-bbp-wrap .bbp-pagination {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* ============================================================
   Phase 2B — Forms (new topic, reply, login, register, lost-pass)
   ============================================================ */

/* ------------------------------------------------------------
   Inline template notices that bbPress emits inside form
   fieldsets — closed-forum warnings, unfiltered_html notes,
   register page intro bullets. Render as muted info bands.
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-template-notice {
  background: #f7f7f7;
  border-left: 3px solid var(--ink-2, var(--muted));
  padding: var(--s-3) var(--s-4);
  margin: var(--s-3) 0;
  font-size: var(--t-meta);
  color: var(--ink-2);
}
.pbc-bbp-wrap .bbp-template-notice ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.pbc-bbp-wrap .bbp-template-notice li + li { margin-top: var(--s-1); }

/* Error / warning variant (bbPress emits .bbp-error-template-notice
   on validation errors). */
.pbc-bbp-wrap .bbp-error-template-notice,
.pbc-bbp-wrap div.bbp-template-notice.error {
  border-left-color: #b94a48;
  background: #fdf2f2;
  color: #5a1f1d;
}

/* ------------------------------------------------------------
   Anonymous-poster sub-fieldset (form-anonymous.php partial)
   appears at the top of new-topic / new-reply forms when the
   current user is not logged in but anonymous posting is
   allowed. Subdued divider above the main form body.
   ------------------------------------------------------------ */
.pbc-bbp-wrap fieldset.bbp-form-anonymous {
  margin-bottom: var(--s-5);
  padding-bottom: var(--s-4);
  border: 0;
  border-bottom: 1px dashed var(--hair);
}
.pbc-bbp-wrap fieldset.bbp-form-anonymous legend {
  font-size: var(--t-label);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
  padding: 0;
}

/* ------------------------------------------------------------
   Submit wrapper inside topic / reply / login forms — give the
   primary submit a filled-ink treatment so it reads as the
   forward affordance, and lay out cancel / back links to its
   left with auto margin between them and the submit.
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-submit-wrapper {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: 1px solid var(--hair);
}
.pbc-bbp-wrap .bbp-submit-wrapper a.bbp-cancel {
  font-size: var(--t-meta);
  color: var(--ink-2);
  margin-right: auto;
}
.pbc-bbp-wrap .bbp-submit-wrapper a.bbp-cancel:hover { color: var(--link-hover); }
.pbc-bbp-wrap .bbp-submit-wrapper button.submit,
.pbc-bbp-wrap fieldset.bbp-form .bbp-submit-wrapper button[type="submit"],
.pbc-bbp-wrap fieldset.submit button[type="submit"] {
  background: var(--ink);
  color: #fff;
  border: 1px solid var(--ink);
}
.pbc-bbp-wrap .bbp-submit-wrapper button.submit:hover,
.pbc-bbp-wrap fieldset.bbp-form .bbp-submit-wrapper button[type="submit"]:hover,
.pbc-bbp-wrap fieldset.submit button[type="submit"]:hover {
  background: var(--link-hover);
  border-color: var(--link-hover);
  color: #fff;
}

/* ------------------------------------------------------------
   Topic-edit revision fieldset (nested fieldset.bbp-form inside
   the main form, conditionally rendered on edit pages).
   ------------------------------------------------------------ */
.pbc-bbp-wrap fieldset.bbp-form fieldset.bbp-form {
  margin-top: var(--s-5);
  padding: var(--s-4);
  background: #fafafa;
}
.pbc-bbp-wrap fieldset.bbp-form fieldset.bbp-form legend {
  background: transparent;
  padding: 0;
  font-size: var(--t-meta);
  text-transform: none;
  letter-spacing: 0;
  color: var(--ink-2);
  font-weight: 500;
}
.pbc-bbp-wrap fieldset.bbp-form fieldset.bbp-form legend label {
  display: inline;
  margin: 0;
  font-weight: 600;
}

/* ------------------------------------------------------------
   Subscription / log-edit checkbox rows: bbPress emits these as
   bare <p> with an inline <input type=checkbox> + <label>. Stop
   the label-block rule from pushing the label to a new line.
   ------------------------------------------------------------ */
.pbc-bbp-wrap fieldset.bbp-form p > input[type="checkbox"] + label,
.pbc-bbp-wrap fieldset.bbp-form p > label:has(> input[type="checkbox"]),
.pbc-bbp-wrap fieldset.bbp-form .bbp-remember-me label {
  display: inline;
  margin: 0 0 0 var(--s-1);
  font-weight: 500;
  color: var(--ink-2);
}
.pbc-bbp-wrap fieldset.bbp-form .bbp-remember-me {
  margin: var(--s-3) 0;
}
.pbc-bbp-wrap fieldset.bbp-form .bbp-remember-me input[type="checkbox"] {
  margin-right: var(--s-1);
}

/* Topic-type / topic-status / forum dropdowns inside form-topic.
   Match the inputs above for visual consistency. */
.pbc-bbp-wrap fieldset.bbp-form select {
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-2) var(--s-3);
  font-family: inherit;
  font-size: var(--t-body);
  color: var(--ink);
  margin-bottom: var(--s-2);
  min-width: 240px;
}
.pbc-bbp-wrap fieldset.bbp-form select:focus,
.pbc-bbp-wrap fieldset.bbp-form input[type="text"]:focus,
.pbc-bbp-wrap fieldset.bbp-form input[type="password"]:focus,
.pbc-bbp-wrap fieldset.bbp-form input[type="email"]:focus,
.pbc-bbp-wrap fieldset.bbp-form textarea:focus {
  outline: none;
  border-color: var(--ink);
}

/* ------------------------------------------------------------
   Search form refinements (Phase 1 covered the layout; add
   focus + placeholder treatment + register the two user-screen
   topic-search and reply-search variants to the same selectors).
   ------------------------------------------------------------ */
.pbc-bbp-wrap #bbp-topic-search-form,
.pbc-bbp-wrap #bbp-reply-search-form {
  display: flex;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.pbc-bbp-wrap #bbp-topic-search-form input[type="text"],
.pbc-bbp-wrap #bbp-reply-search-form input[type="text"] {
  flex: 1 1 240px;
  max-width: 320px;
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-2) var(--s-3);
  font-family: inherit;
  font-size: var(--t-meta);
  color: var(--ink);
}
.pbc-bbp-wrap #bbp-topic-search-form input[type="text"]:focus,
.pbc-bbp-wrap #bbp-reply-search-form input[type="text"]:focus,
.pbc-bbp-wrap #bbp-search-form input[type="text"]:focus {
  outline: none;
  border-color: var(--ink);
}
.pbc-bbp-wrap #bbp-topic-search-form input[type="text"]::placeholder,
.pbc-bbp-wrap #bbp-reply-search-form input[type="text"]::placeholder,
.pbc-bbp-wrap #bbp-search-form input[type="text"]::placeholder {
  color: var(--muted);
}
.pbc-bbp-wrap #bbp-topic-search-form input[type="submit"],
.pbc-bbp-wrap #bbp-reply-search-form input[type="submit"] {
  border: 1px solid var(--ink);
  background: #fff;
  color: var(--ink);
  padding: var(--s-2) var(--s-4);
  font-family: inherit;
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
}
.pbc-bbp-wrap #bbp-topic-search-form input[type="submit"]:hover,
.pbc-bbp-wrap #bbp-reply-search-form input[type="submit"]:hover {
  background: var(--ink);
  color: #fff;
}

/* ------------------------------------------------------------
   Login / register / lost-password forms (.bbp-login-form).
   bbPress emits these as standalone <form class="bbp-login-form">
   wrapping the same fieldset.bbp-form pattern. Cap width and
   center on standalone pages; fall through to ambient form
   styling otherwise.
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-login-form,
.bbp-login-form {
  max-width: 480px;
  margin: var(--s-6) auto;
}
.pbc-bbp-wrap .bbp-login-form fieldset.bbp-form,
.bbp-login-form fieldset.bbp-form {
  padding: var(--s-6);
  margin-top: 0;
  background: #fff;
  border: 1px solid var(--hair);
}
.pbc-bbp-wrap .bbp-login-form fieldset.bbp-form legend,
.bbp-login-form fieldset.bbp-form legend {
  font-size: var(--t-label);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
}
.pbc-bbp-wrap .bbp-login-form .bbp-username,
.pbc-bbp-wrap .bbp-login-form .bbp-password,
.pbc-bbp-wrap .bbp-login-form .bbp-email,
.bbp-login-form .bbp-username,
.bbp-login-form .bbp-password,
.bbp-login-form .bbp-email {
  margin: var(--s-3) 0;
}
.pbc-bbp-wrap .bbp-login-form .bbp-username label,
.pbc-bbp-wrap .bbp-login-form .bbp-password label,
.pbc-bbp-wrap .bbp-login-form .bbp-email label,
.bbp-login-form .bbp-username label,
.bbp-login-form .bbp-password label,
.bbp-login-form .bbp-email label {
  display: block;
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: var(--s-1);
}
.pbc-bbp-wrap .bbp-login-form input[type="text"],
.pbc-bbp-wrap .bbp-login-form input[type="password"],
.pbc-bbp-wrap .bbp-login-form input[type="email"],
.bbp-login-form input[type="text"],
.bbp-login-form input[type="password"],
.bbp-login-form input[type="email"] {
  width: 100%;
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-3);
  font-family: inherit;
  font-size: var(--t-body);
  color: var(--ink);
}
.pbc-bbp-wrap .bbp-login-form input[type="text"]:focus,
.pbc-bbp-wrap .bbp-login-form input[type="password"]:focus,
.pbc-bbp-wrap .bbp-login-form input[type="email"]:focus,
.bbp-login-form input[type="text"]:focus,
.bbp-login-form input[type="password"]:focus,
.bbp-login-form input[type="email"]:focus {
  outline: none;
  border-color: var(--ink);
}
.pbc-bbp-wrap .bbp-login-form .bbp-submit-wrapper,
.bbp-login-form .bbp-submit-wrapper {
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: 1px solid var(--hair);
}
.pbc-bbp-wrap .bbp-login-form button.submit,
.bbp-login-form button.submit {
  background: var(--ink);
  color: #fff;
  border: 1px solid var(--ink);
  padding: var(--s-3) var(--s-5);
  font-family: inherit;
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
}
.pbc-bbp-wrap .bbp-login-form button.submit:hover,
.bbp-login-form button.submit:hover {
  background: var(--link-hover);
  border-color: var(--link-hover);
}

/* ============================================================
   Phase 2B — User screens (content-single-user shell + sub-tabs)
   ============================================================ */

/* ------------------------------------------------------------
   Two-column shell layout: sidebar (#bbp-single-user-details)
   on the left, content (#bbp-user-body) on the right.
   ------------------------------------------------------------ */
.pbc-bbp-wrap #bbp-user-wrapper {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: var(--s-6);
  margin-top: var(--s-5);
}

/* ------------------------------------------------------------
   Sidebar — avatar block + vertical navigation rail.
   ------------------------------------------------------------ */
.pbc-bbp-wrap #bbp-single-user-details {
  padding: var(--s-5) 0;
  border-right: 1px solid var(--hair);
  padding-right: var(--s-5);
}
.pbc-bbp-wrap #bbp-user-avatar {
  margin-bottom: var(--s-5);
  text-align: center;
}
.pbc-bbp-wrap #bbp-user-avatar .vcard,
.pbc-bbp-wrap #bbp-user-avatar a {
  display: inline-block;
}
.pbc-bbp-wrap #bbp-user-avatar img,
.pbc-bbp-wrap #bbp-user-avatar img.avatar,
.pbc-bbp-wrap #bbp-user-avatar img.photo {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid var(--hair);
  display: block;
}

.pbc-bbp-wrap #bbp-user-navigation ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.pbc-bbp-wrap #bbp-user-navigation li {
  margin: 0;
  border-bottom: 1px solid var(--hair);
}
.pbc-bbp-wrap #bbp-user-navigation li a {
  display: block;
  padding: var(--s-3) var(--s-2);
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--ink-2);
  text-decoration: none;
  transition: color .12s ease, background .12s ease;
}
.pbc-bbp-wrap #bbp-user-navigation li a:hover {
  color: var(--link-hover);
  background: #fafafa;
}
.pbc-bbp-wrap #bbp-user-navigation li.current a {
  color: var(--ink);
  background: #f0f0f0;
  box-shadow: inset 3px 0 0 var(--ink);
}

/* ------------------------------------------------------------
   Content area — wrapper for every user-* sub-tab template.
   ------------------------------------------------------------ */
.pbc-bbp-wrap #bbp-user-body {
  min-width: 0; /* prevent grid overflow from long content */
}
.pbc-bbp-wrap #bbp-user-body > div {
  margin-bottom: var(--s-6);
}
.pbc-bbp-wrap #bbp-user-body .entry-title,
.pbc-bbp-wrap #bbp-user-body h2.entry-title {
  font-size: var(--t-h2);
  font-weight: 600;
  letter-spacing: -0.01em;
  margin: 0 0 var(--s-4);
  padding-bottom: var(--s-3);
  border-bottom: 1px solid var(--hair);
}
.pbc-bbp-wrap #bbp-user-body .bbp-user-section {
  margin-bottom: var(--s-5);
}
.pbc-bbp-wrap #bbp-user-body .bbp-user-section h3 {
  font-size: var(--t-label);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
  margin: var(--s-4) 0 var(--s-2);
}
.pbc-bbp-wrap #bbp-user-body hr {
  border: 0;
  border-top: 1px solid var(--hair);
  margin: var(--s-5) 0;
}

/* ------------------------------------------------------------
   user-profile.php — read-only profile stats.
   ------------------------------------------------------------ */
.pbc-bbp-wrap #bbp-user-profile p {
  margin: var(--s-2) 0;
  font-size: var(--t-body);
  color: var(--ink-2);
}
.pbc-bbp-wrap #bbp-user-profile .bbp-user-description {
  font-size: var(--t-body);
  color: var(--ink);
  line-height: 1.6;
  margin: var(--s-3) 0 var(--s-4);
}
.pbc-bbp-wrap #bbp-user-profile .bbp-user-website a {
  color: var(--ink-2);
  text-decoration: underline;
}
.pbc-bbp-wrap #bbp-user-profile .bbp-user-website a:hover {
  color: var(--link-hover);
}
.pbc-bbp-wrap #bbp-user-profile .bbp-user-forum-role,
.pbc-bbp-wrap #bbp-user-profile .bbp-user-last-activity,
.pbc-bbp-wrap #bbp-user-profile .bbp-user-topic-count,
.pbc-bbp-wrap #bbp-user-profile .bbp-user-reply-count {
  font-size: var(--t-meta);
  color: var(--muted);
}

/* ------------------------------------------------------------
   Empty-state feedback (feedback-no-topics.php etc.) — bbPress
   emits these as <div class="bbp-template-notice info"> with a
   single bullet. Echo the .pbc-notice info-band treatment.
   ------------------------------------------------------------ */
.pbc-bbp-wrap .bbp-template-notice.info {
  border-left-color: var(--ink-2, var(--muted));
  background: #f7f7f7;
  color: var(--ink-2);
}

/* ============================================================
   Phase 2B — Profile edit form (form-user-edit.php)
   ============================================================ */

.pbc-bbp-wrap #bbp-your-profile {
  max-width: 720px;
}
.pbc-bbp-wrap #bbp-your-profile h2.entry-title {
  font-size: var(--t-h2);
  font-weight: 600;
  margin: var(--s-6) 0 var(--s-3);
  padding-bottom: var(--s-2);
  border-bottom: 1px solid var(--hair);
}
.pbc-bbp-wrap #bbp-your-profile h2.entry-title:first-of-type {
  margin-top: var(--s-4);
}
.pbc-bbp-wrap #bbp-your-profile fieldset.bbp-form {
  margin-top: 0;
  margin-bottom: var(--s-5);
  border: 1px solid var(--hair);
  padding: var(--s-5);
}
.pbc-bbp-wrap #bbp-your-profile fieldset.bbp-form > legend {
  /* Already labelled by the h2.entry-title above; hide the
     redundant fieldset legend to match Swiss flat-form style. */
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
.pbc-bbp-wrap #bbp-your-profile fieldset.bbp-form > div {
  margin: var(--s-3) 0;
}
.pbc-bbp-wrap #bbp-your-profile fieldset.bbp-form label {
  display: block;
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: var(--tracking-label);
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: var(--s-1);
}
.pbc-bbp-wrap #bbp-your-profile input.regular-text,
.pbc-bbp-wrap #bbp-your-profile input[type="text"],
.pbc-bbp-wrap #bbp-your-profile input[type="password"],
.pbc-bbp-wrap #bbp-your-profile input[type="email"] {
  width: 100%;
  max-width: 480px;
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-3);
  font-family: inherit;
  font-size: var(--t-body);
  color: var(--ink);
}
.pbc-bbp-wrap #bbp-your-profile input[disabled] {
  background: #f5f5f5;
  color: var(--muted);
  cursor: not-allowed;
}
.pbc-bbp-wrap #bbp-your-profile textarea {
  width: 100%;
  max-width: 720px;
  min-height: 120px;
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-3);
  font-family: inherit;
  font-size: var(--t-body);
  color: var(--ink);
  line-height: 1.5;
}
.pbc-bbp-wrap #bbp-your-profile select {
  border: 1px solid var(--hair);
  background: #fff;
  padding: var(--s-2) var(--s-3);
  font-family: inherit;
  font-size: var(--t-body);
  color: var(--ink);
  min-width: 240px;
}
.pbc-bbp-wrap #bbp-your-profile input:focus,
.pbc-bbp-wrap #bbp-your-profile textarea:focus,
.pbc-bbp-wrap #bbp-your-profile select:focus {
  outline: none;
  border-color: var(--ink);
}

/* Password-change controls (form-user-passwords.php partial). */
.pbc-bbp-wrap #bbp-your-profile .user-pass1-wrap input,
.pbc-bbp-wrap #bbp-your-profile .user-pass2-wrap input {
  font-family: var(--font-mono, ui-monospace, "SFMono-Regular", monospace);
  letter-spacing: .04em;
}
.pbc-bbp-wrap #bbp-your-profile button.wp-generate-pw,
.pbc-bbp-wrap #bbp-your-profile button.wp-hide-pw,
.pbc-bbp-wrap #bbp-your-profile button.wp-cancel-pw {
  border: 1px solid var(--hair);
  background: #fff;
  color: var(--ink);
  padding: var(--s-2) var(--s-3);
  font-family: inherit;
  font-size: var(--t-meta);
  cursor: pointer;
  margin-right: var(--s-2);
}
.pbc-bbp-wrap #bbp-your-profile button.wp-generate-pw:hover,
.pbc-bbp-wrap #bbp-your-profile button.wp-hide-pw:hover,
.pbc-bbp-wrap #bbp-your-profile button.wp-cancel-pw:hover {
  border-color: var(--ink);
  color: var(--link-hover);
}
.pbc-bbp-wrap #bbp-your-profile .pw-weak,
.pbc-bbp-wrap #bbp-your-profile #pass-strength-result {
  margin: var(--s-2) 0;
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-meta);
  border: 1px solid var(--hair);
}
.pbc-bbp-wrap #bbp-your-profile #pass-strength-result.strong {
  border-color: #5a8a3a;
  color: #2f4a1c;
}
.pbc-bbp-wrap #bbp-your-profile #pass-strength-result.short,
.pbc-bbp-wrap #bbp-your-profile #pass-strength-result.bad {
  border-color: #b94a48;
  color: #5a1f1d;
}

/* Submit row at the bottom of form-user-edit. */
.pbc-bbp-wrap #bbp-your-profile fieldset.submit {
  margin-top: var(--s-5);
  padding: var(--s-5) 0 0;
  border: 0;
  border-top: 1px solid var(--hair);
  background: transparent;
}
.pbc-bbp-wrap #bbp-your-profile fieldset.submit legend {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}
.pbc-bbp-wrap #bbp-your-profile fieldset.submit button.submit {
  background: var(--ink);
  color: #fff;
  border: 1px solid var(--ink);
  padding: var(--s-3) var(--s-5);
  font-family: inherit;
  font-size: var(--t-meta);
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
}
.pbc-bbp-wrap #bbp-your-profile fieldset.submit button.submit:hover {
  background: var(--link-hover);
  border-color: var(--link-hover);
}

/* ============================================================
   Phase 2B — Responsive for forms + user screens.
   ============================================================ */

@media (max-width: 900px) {
  .pbc-bbp-wrap #bbp-user-wrapper {
    grid-template-columns: 1fr;
    gap: var(--s-5);
  }
  .pbc-bbp-wrap #bbp-single-user-details {
    border-right: 0;
    padding-right: 0;
    border-bottom: 1px solid var(--hair);
    padding-bottom: var(--s-5);
  }
  .pbc-bbp-wrap #bbp-user-avatar img,
  .pbc-bbp-wrap #bbp-user-avatar img.avatar {
    width: 96px;
    height: 96px;
  }
  .pbc-bbp-wrap #bbp-user-navigation ul {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-1);
  }
  .pbc-bbp-wrap #bbp-user-navigation li {
    border-bottom: 0;
    flex: 0 0 auto;
  }
  .pbc-bbp-wrap #bbp-user-navigation li a {
    padding: var(--s-2) var(--s-3);
    border: 1px solid var(--hair);
  }
  .pbc-bbp-wrap #bbp-user-navigation li.current a {
    box-shadow: none;
    border-color: var(--ink);
  }
}

@media (max-width: 600px) {
  .pbc-bbp-wrap .bbp-login-form,
  .bbp-login-form {
    margin: var(--s-4) 0;
  }
  .pbc-bbp-wrap .bbp-login-form fieldset.bbp-form,
  .bbp-login-form fieldset.bbp-form {
    padding: var(--s-4);
  }
  .pbc-bbp-wrap #bbp-your-profile input.regular-text,
  .pbc-bbp-wrap #bbp-your-profile input[type="text"],
  .pbc-bbp-wrap #bbp-your-profile input[type="password"],
  .pbc-bbp-wrap #bbp-your-profile input[type="email"],
  .pbc-bbp-wrap #bbp-your-profile textarea {
    max-width: none;
  }
  .pbc-bbp-wrap .bbp-submit-wrapper {
    flex-direction: column;
    align-items: stretch;
    gap: var(--s-2);
  }
  .pbc-bbp-wrap .bbp-submit-wrapper a.bbp-cancel {
    margin-right: 0;
    text-align: center;
  }
}

/* Museum thumbnail injected before each forum row title link by the
   pbc-alumni mu-plugin (bbp_theme_before_forum_title hook). Fixed-width
   80px with auto height so the source aspect is preserved — a portrait
   magazine cover renders taller-than-wide, a landscape cover wider-than-
   tall. The img has no width/height HTML attributes so this CSS is the
   single source of truth for the rendered size; bumping the rendered
   size is a one-line CSS edit. The layout (thumb on the left, title +
   description stacked to the right) is set by the grid rule below, which
   uses :has() to apply only to forum rows that actually carry a thumb —
   rows without a thumb keep their default bbp-forum-info inline flow so
   the title stays flush-left. */
.pbc-alumni-forum-thumb {
  width: 80px;
  height: auto;
  border-radius: 2px;
}

.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul > li:first-child:has(.pbc-alumni-forum-thumb) {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  column-gap: var(--s-3);
  align-items: start;
}
.pbc-bbp-wrap .bbp-forums > li.bbp-body > ul > li:first-child:has(.pbc-alumni-forum-thumb) > .pbc-alumni-forum-thumb {
  grid-column: 1;
  grid-row: 1 / -1;
  align-self: center;
}
