/* ==========================================================================
   urb-news.css — news listing, search, single post (page-sheet slot: loads
   after urb-events, before urb-fixes; listing/search/single/fallback archives).
   Owner: the design reviewer. Styles the Phase 6 contract §4.3 (10 classes).
   Specificity rule in force: anything on <a>/<button> that must recolour
   carries the body.theme--urb prefix. 2026-08-16.
   ========================================================================== */

/* ---- search form (Malmö voice: mono label + input + stamp) ----------------- */
.urb-news__search { margin-bottom: 44px; max-width: 560px; }
.urb-search { display: flex; flex-wrap: wrap; gap: 10px; }
.urb-search__label {
  flex-basis: 100%;
  font-family: var(--urb-font-tech);
  font-size: 11.5px;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--urb-grey);
  margin-bottom: 2px;
}
.urb-search__input {
  flex: 1 1 240px;
  font-family: var(--urb-font-ui);
  font-size: 15px;
  padding: 14px 16px;
  background: var(--urb-white);
  color: var(--urb-ink);
  border: var(--urb-border-bold) solid var(--urb-ink);
  border-radius: 0;
  -webkit-appearance: none;
}
.urb-search__input:focus { border-color: var(--urb-purple); outline: none; }
/* the submit is a .urb-btn--secondary already; just keep it from stretching */
body.theme--urb .urb-search__submit { flex: none; padding: 14px 26px; }

/* ---- listing extras --------------------------------------------------------- */
/* Still matches the front page's news grid (contract §4.4 decision: they
   match) — both moved to auto-fit + a 360px floor in v0.6.1 so a two-post
   month fills its row instead of stranding narrow cards. */
.urb-news__grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
  gap: 26px;
}
.urb-news__prose { margin-top: 44px; max-width: 72ch; }
.urb-news__back { margin-top: 34px; }

/* Framing (Arnas, 2026-08-16, after malmodanceweek.se): news cards read as
   framed objects, not floating text. The frame itself — a stronger border and
   the horizontal insets that scar #1 had been eating — is fixed once in the
   COMPONENT layer so the front-page band and this listing stay identical
   (contract §4.4: they match). Nothing news-specific is needed here; resist
   adding a divergent inset. */

/* ---- single post ------------------------------------------------------------ */
.urb-post__body { max-width: 72ch; }
.urb-post__body img { margin: 1.4em 0; }
.urb-post__actions {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  margin: 34px 0 0;
}

/* announcements look identical to articles by design (brand book §09);
   the modifier is reserved for the day Arnas wants them to differ */
.urb-card--announcement {}

/* landscape phones (gate on height, never width alone) */
@media (max-width: 960px) and (max-height: 520px) {
  .urb-news__search { margin-bottom: 28px; }
}
