/* ============================================================================
 * PAGE BLOCKS — hero, toolbar, grid, card, empty state
 * ----------------------------------------------------------------------------
 * The five shapes every browse page is built from. Their markup comes from
 * areas/public/components/.
 * ========================================================================== */
/* ============================================================================
 * PHASE 9 — SHARED PAGE BLOCKS
 * ----------------------------------------------------------------------------
 * The home page was rebuilt from a small set of blocks. Every other public
 * page needs the same ones, so they live here rather than in a page sheet:
 *
 *   .tx-page-hero  two-column page opening (copy left, facts right)
 *   .tx-bar        the toolbar that carries search, filters and a count
 *   .tx-grid       the browse grid
 *   .tx-card       one item in it
 *   .tx-state      empty / no-match
 *
 * Tokens only — no new colours, no new typeface.
 * ========================================================================== */

/* -- Page hero ------------------------------------------------------------ */
.tx-page-hero{
  padding:clamp(2.5rem,4.5vw,4rem) 0 clamp(1.75rem,3vw,2.5rem);
  background:
    radial-gradient(46rem 24rem at 88% 0%,rgba(var(--accent-rgb),.08),transparent 60%),
    var(--canvas);
  border-bottom:1px solid var(--border-hairline);
}
.tx-page-hero__grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:end;
  gap:1.5rem 3rem;
}
.tx-page-hero h1{
  margin:0 0 0.75rem;
  font-family:var(--font);
  font-size:clamp(2rem,3.6vw,2.9rem);
  font-weight:800;
  line-height:var(--leading-display);
  letter-spacing:var(--tracking-display);
  color:var(--ink-strong);
}
.tx-page-hero__lead{
  margin:0;
  max-width:38rem;
  font-size:1.05rem;
  line-height:1.75;
  color:var(--ink-muted);
  letter-spacing:var(--tracking-body);
}
.tx-facts{
  display:flex;
  gap:clamp(1.25rem,3vw,2.5rem);
  margin:0;
  padding:0;
}
.tx-fact{min-width:0}
.tx-fact dt{
  margin:0 0 0.3rem;
  font-size:0.7rem;
  font-weight:600;
  letter-spacing:0.07em;
  text-transform:uppercase;
  color:var(--ink-muted);
}
.tx-fact dd{
  margin:0;
  font-family:var(--font);
  font-size:1.5rem;
  font-weight:800;
  line-height:1;
  letter-spacing:-.02em;
  color:var(--ink-strong);
}

/* -- Toolbar: one bar, not three loose rows ------------------------------- */
.tx-bar{
  display:grid;
  grid-template-columns:minmax(0,auto) minmax(0,1fr) auto;
  align-items:center;
  gap:1rem 1.25rem;
  margin-bottom:clamp(1.5rem,3vw,2.25rem);
  padding:0.9rem 1rem;
  background:var(--surface);
  border:1px solid var(--border-hairline);
  border-radius:var(--r-card);
  box-shadow:var(--shadow-soft);
}
.tx-bar__filters{
  display:flex;
  gap:0.5rem;
  min-width:0;
  overflow-x:auto;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.tx-bar__filters::-webkit-scrollbar{display:none}
.tx-bar__count{
  font-size:0.84rem;
  font-weight:600;
  color:var(--ink-muted);
  white-space:nowrap;
  justify-self:end;
}

/* Filter chips, one definition for every browse page */
.tx-bar .chip,
.tx-chip{
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  gap:0.5rem;
  height:36px;
  padding:0 0.9rem;
  border-radius:var(--r-pill);
  border:1px solid var(--border-hairline);
  background:var(--surface);
  color:var(--ink-soft);
  font-family:var(--font);
  font-size:0.85rem;
  font-weight:600;
  line-height:1;
  white-space:nowrap;
  cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease-out),
             color var(--dur-fast) var(--ease-out),
             border-color var(--dur-fast) var(--ease-out);
}
.tx-bar .chip:hover,
.tx-chip:hover{background:var(--surface-hover);color:var(--ink-strong);border-color:var(--border-strong)}
.tx-bar .chip.active,
.tx-chip.active{background:var(--solid);border-color:var(--solid);color:var(--ink-on-solid)}
.tx-bar .chip i,
.tx-chip i{font-size:0.8rem;color:inherit;width:auto;flex:none}

/* -- Browse grid and card ------------------------------------------------- */
.tx-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(1rem,2vw,1.5rem);
}
.tx-card{
  display:flex;
  flex-direction:column;
  background:var(--surface);
  border:1px solid var(--border-hairline);
  border-radius:var(--r-card);
  overflow:hidden;
  color:inherit;
  text-decoration:none;
  box-shadow:var(--shadow-soft);
  transition:border-color var(--dur-fast) var(--ease-out),
             box-shadow var(--dur-fast) var(--ease-out),
             transform var(--dur-enter) var(--ease-spring);
}
.tx-card:hover{
  color:inherit;
  border-color:var(--border-strong);
  box-shadow:var(--shadow-raised);
  transform:translateY(-3px);
}
.tx-card__media{
  position:relative;
  aspect-ratio:16 / 10;
  background:var(--surface-sunken);
  overflow:hidden;
}
.tx-card__media img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .5s var(--ease-out);
}
.tx-card:hover .tx-card__media img{transform:scale(1.04)}
.tx-card__ph{
  width:100%;
  height:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--sand-strong);
  font-size:1.75rem;
}
.tx-card__flag{
  position:absolute;
  top:0.7rem;
  left:0.7rem;
  display:inline-flex;
  align-items:center;
  gap:0.35rem;
  padding:0.25rem 0.6rem;
  border-radius:var(--r-pill);
  background:var(--material-thick);
  -webkit-backdrop-filter:var(--material-filter);
  backdrop-filter:var(--material-filter);
  color:var(--ink-strong);
  font-size:0.68rem;
  font-weight:700;
  letter-spacing:0.06em;
  text-transform:uppercase;
}
.tx-card__flag i{color:var(--accent);font-size:0.7rem;width:auto;flex:none}
.tx-card__body{
  display:flex;
  flex-direction:column;
  gap:0.5rem;
  flex:1;
  padding:1.25rem 1.35rem 1.4rem;
}
.tx-card__title{
  margin:0;
  font-family:var(--font);
  font-size:1.08rem;
  font-weight:700;
  line-height:var(--leading-title);
  letter-spacing:var(--tracking-title);
  color:var(--ink-strong);
}
.tx-card__text{
  margin:0;
  font-size:0.95rem;
  line-height:1.7;
  color:var(--ink-muted);
  letter-spacing:var(--tracking-body);
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.tx-card__foot{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:0.75rem;
  margin-top:auto;
  padding-top:0.9rem;
  border-top:1px solid var(--border-hairline);
}
.tx-card__tag{
  display:inline-flex;
  align-items:center;
  gap:0.4rem;
  font-size:0.8rem;
  font-weight:600;
  color:var(--ink-muted);
}
.tx-card__tag i{color:var(--accent);font-size:0.78rem;width:auto;flex:none}
.tx-card__go{
  display:inline-flex;
  align-items:center;
  gap:0.35rem;
  font-size:0.84rem;
  font-weight:600;
  color:var(--accent-text);
}
.tx-card__go i{transition:transform var(--dur-fast) var(--ease-out);width:auto;flex:none}
.tx-card:hover .tx-card__go i{transform:translateX(3px)}

/* -- Empty states --------------------------------------------------------- */
.tx-state{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:0.75rem;
  padding:clamp(2.5rem,6vw,4.5rem) 1.5rem;
  text-align:center;
  background:var(--surface);
  border:1px dashed var(--border-strong);
  border-radius:var(--r-card);
}
.tx-state h2{
  margin:0;
  font-family:var(--font);
  font-size:1.2rem;
  font-weight:700;
  letter-spacing:var(--tracking-title);
  color:var(--ink-strong);
}
.tx-state p{
  margin:0;
  max-width:28rem;
  font-size:0.98rem;
  line-height:1.7;
  color:var(--ink-muted);
}

@media (max-width:991px){
  .tx-page-hero__grid{grid-template-columns:1fr;align-items:start}
  .tx-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tx-bar{grid-template-columns:1fr;gap:0.85rem}
  .tx-bar__count{justify-self:start}
}
@media (max-width:640px){
  .tx-grid{grid-template-columns:1fr}
  .tx-page-hero__lead{font-size:0.98rem}
  .tx-fact dd{font-size:1.25rem}
  .tx-bar{padding:0.8rem}
}

/* Inner-page openings continue the dark header, as on Home. */
.tx-page-hero {
  padding: var(--inner-hero-space) 0;
  background: var(--inner-hero-light), var(--chrome);
  color: var(--chrome-ink-soft);
  border-bottom-color: var(--chrome-line);
}
.tx-page-hero h1 {
  max-width: 18ch;
  font-size: var(--inner-hero-title);
  font-weight: var(--font-extrabold);
  color: var(--chrome-ink);
}
.tx-page-hero .tx-page-hero__lead { color: var(--chrome-ink-soft); }
.tx-page-hero .sec-eyebrow {
  padding-left: 0;
  background: none;
  color: var(--chrome-ink-muted);
}
.tx-page-hero .sec-eyebrow .tx-icon { color: var(--accent); }
.tx-page-hero .tx-facts {
  padding-top: 1.25rem;
  border-top: 1px solid var(--chrome-line-strong);
}
.tx-page-hero .tx-fact dt { color: var(--chrome-ink-muted); }
.tx-page-hero .tx-fact dd {
  color: var(--chrome-ink);
  font-size: var(--inner-fact-size);
}
.tx-hero-actions { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; margin-top: 1.75rem; }
.tx-hero-actions a {
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  padding: .8rem 1.1rem;
  border: 1px solid var(--chrome-line-strong);
  border-radius: var(--r-pill);
  color: var(--chrome-ink);
  font-size: var(--inner-action-size);
  font-weight: var(--font-semibold);
  transition: background var(--dur-fast) var(--ease-out);
}
.tx-hero-actions a:first-child { background: var(--accent); border-color: var(--accent); color: var(--accent-contrast); }
.tx-hero-actions a:hover { background: var(--chrome-hover); }
.tx-hero-actions a:first-child:hover { background: var(--accent-hover); }
.tx-page-hero .pub-breadcrumb { background: none; border: 0; padding-left: 0; color: var(--chrome-ink-muted); }
.tx-page-hero .pub-breadcrumb a,
.tx-page-hero .pub-breadcrumb .pub-breadcrumb-current { color: var(--chrome-ink-soft); }
/* Search is the leading control; filters sit on a quiet dividing line. */
.tx-bar { background: none; border: 0; border-bottom: 1px solid var(--border-strong); border-radius: 0; box-shadow: none; padding: 0 0 1.25rem; }
.tx-bar__filters { align-items: center; }
@media (max-width: 991px) {
  .tx-page-hero__grid { gap: 2rem; }
  .tx-page-hero .tx-facts { flex-wrap: wrap; }
}

/* Browse controls: a search row followed by a clean category index. */
.tx-bar {
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1.25rem;
  padding-bottom: 0;
}
.tx-bar .tx-search { max-width: 32rem; width: 100%; }
.tx-bar__filters {
  grid-column: 1 / -1;
  grid-row: 2;
  gap: 1.5rem;
  border-top: 1px solid var(--border-hairline);
}
.tx-bar .chip {
  height: auto;
  min-height: 48px;
  padding: .85rem 0;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: none;
}
.tx-bar .chip:hover { background: none; color: var(--ink-strong); }
.tx-bar .chip.active { background: none; border-color: var(--accent); color: var(--accent-text); }
.tx-bar__count { grid-column: 2; grid-row: 1; }
@media (max-width: 640px) {
  .tx-bar { gap: .85rem; }
  .tx-bar__filters { gap: 1.25rem; }
}
