/*
Theme Name: Prize Winners UK
Template: astra
Text Domain: prize
Version: 1.3.0
*/

/* ==========================================================
   Prize Winners UK, scoreboard dark
   Charcoal ink ground, stepped panels, ivory text, lime
   accent, amber secondary, hairline rules, muted support,
   ok and warn states. Monospace display headings, sans body,
   tabular numerals, 2px radii, one 72rem sheet measure.

   v1.0.2: centred every public line of text, wrapped the
   header into two rows and centred table cells. Historical
   ruling, withdrawn in v1.1.1.

   v1.1.1: the page-level centring was withdrawn. Body copy,
   headings, lists, tables, board copy and every flex row
   aligned along the left sheet edge.

   v1.2.0: the content column centres as a block through the
   printed pw-content-sheet wrapper, the text inside it
   staying on the left sheet edge.

   v1.3.0: the full centring returns on the clean base. Every
   public line of text, headings, paragraphs, list items,
   table cells, board copy, FAQ answers and footer text,
   aligns centred, and the wrapped flex rows, the nav strip,
   the crumbs, the hero meta, the chips and the ticker, join
   with the safe center keyword, so an overflowing row falls
   back to its start edge and scrolls instead of clipping.
   The objects that own an edge, the rank stub, the score
   stamp and the CTA button, keep their internal centring.
   The column keeps the v1.2.0 printed sheet with the 72rem
   measure and the auto inline margins.
   ========================================================== */

:root {
  --pw-ink: #171A1D;
  --pw-panel: #20262B;
  --pw-panel2: #262D33;
  --pw-ivory: #F2EEE3;
  --pw-lime: #B5E33D;
  --pw-amber: #E0A32E;
  --pw-rule: #39424A;
  --pw-muted: #98A2AA;
  --pw-ok: #6FBF73;
  --pw-warn: #D26A5C;
  --pw-gold: #E0A32E;
  --pw-silver: #C9D2DA;
  --pw-bronze: #D89A6A;
  --pw-mono: "JetBrains Mono", "SF Mono", Consolas, "Liberation Mono", monospace;
  --pw-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --pw-radius: 2px;
  --pw-pad: clamp(1rem, 4vw, 2.5rem);
  font-size: 100%;
  color-scheme: dark;
  accent-color: var(--pw-lime);
}

/* ----------------------------------------------------------
   Base
   ---------------------------------------------------------- */

body.pw-public {
  background-color: var(--pw-ink);
  color: var(--pw-ivory);
  font-family: var(--pw-sans);
  font-size: 1rem;
  line-height: 1.6;
  margin: 0;
  text-align: center;
}

/* Editorial ruling v1.3.0: every public line of text aligns
   centred. The declaration sits on the body so it carries past
   any theme or plugin CSS that sets a different alignment on a
   wrapper, while blocks stay free to lay out their own
   internals. */
.pw-public {
  text-align: center;
}

.pw-public ::selection {
  background: var(--pw-lime);
  color: var(--pw-ink);
}

.pw-public h1,
.pw-public h2,
.pw-public h3,
.pw-public h4,
.pw-public h5,
.pw-public h6 {
  font-family: var(--pw-mono);
  font-weight: 700;
  color: var(--pw-ivory);
  line-height: 1.25;
}

.pw-public h1 {
  font-size: clamp(1.9rem, 4vw, 3rem);
  line-height: 1.12;
  margin: 0 0 1rem;
}

.pw-public h2 {
  font-size: 1.35rem;
  border-top: 2px solid var(--pw-lime);
  padding-top: 0.9rem;
  margin: 0 0 1.1rem;
}

.pw-public h3 {
  font-size: 1.08rem;
  margin: 0 0 0.6rem;
}

.pw-public h4,
.pw-public h5,
.pw-public h6 {
  font-size: 0.95rem;
  margin: 0 0 0.5rem;
}

.pw-public p {
  margin: 0 0 1.05rem;
}

/* Centred lists carry inside markers: the bullet opens the
   first line and a wrapped line centres under the text, the
   v1.0.2 behaviour on the clean base. */
.pw-public ul,
.pw-public ol {
  margin: 0 0 1.05rem;
  padding-left: 0;
  list-style-position: inside;
}

.pw-public li::marker {
  color: var(--pw-lime);
}

.pw-public b,
.pw-public strong {
  color: var(--pw-ivory);
  font-weight: 700;
}

.pw-public a {
  color: var(--pw-lime);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

.pw-public a:hover,
.pw-public a:focus-visible {
  color: var(--pw-ivory);
}

.pw-public img,
.pw-public svg {
  max-width: 100%;
  height: auto;
}

.pw-public input,
.pw-public select,
.pw-public textarea {
  background: var(--pw-ink);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.95rem;
  padding: 0.5rem 0.7rem;
  max-width: 100%;
}

.pw-public ::placeholder {
  color: var(--pw-muted);
  opacity: 1;
}

.pw-public button {
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.8rem;
  padding: 0.45rem 0.8rem;
  cursor: pointer;
}

.pw-public button:hover {
  border-color: var(--pw-lime);
  color: var(--pw-lime);
}

.pw-public a,
.pw-public button,
.pw-public summary {
  transition: color 120ms linear, background-color 120ms linear, border-color 120ms linear;
}

.pw-public :focus-visible {
  outline: 2px solid var(--pw-lime);
  outline-offset: 2px;
}

/* Tabular numerals: tables, ticker, calc inputs, stamps, score numerals */
.pw-public table,
.pw-public .pw-ticker,
.pw-public .pw-calc input,
.pw-public .pw-calc output,
.pw-public .pw-calc .pw-calc-out,
.pw-public .pw-coupon-stub,
.pw-public .pw-rank,
.pw-public .pw-coupon-stamp,
.pw-public .pw-score {
  font-variant-numeric: tabular-nums;
}

/* ----------------------------------------------------------
   Astra neutralisation on public views
   ---------------------------------------------------------- */

.pw-public #masthead,
.pw-public .site-header,
.pw-public .ast-breadcrumbs,
.pw-public .ast-breadcrumbs-wrapper,
.pw-public .entry-header,
.pw-public .page-header,
.pw-public #comments,
.pw-public .comments-area,
.pw-public .comment-respond,
.pw-public .comments-link,
.pw-public #secondary,
.pw-public .widget-area {
  display: none;
}

.pw-public #page,
.pw-public #content,
.pw-public .site-content,
.pw-public .ast-container,
.pw-public #primary,
.pw-public .content-area,
.pw-public .site-main,
.pw-public .site-main article,
.pw-public article.ast-article-single,
.pw-public .ast-separate-container .ast-article-single,
.pw-public .entry-content {
  max-width: 100%;
  width: auto;
  margin-left: 0;
  margin-right: 0;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  float: none;
}

/* ----------------------------------------------------------
   One measure: the content sheet. functions.php v1.2.0 wraps
   the printed content in one pw-content-sheet div, and its
   auto inline margins centre the column in the viewport on
   every Astra template regardless of the wrappers the parent
   template prints. Since v1.3.0 the text inside the sheet is
   centred too, inheriting the body alignment; the sheet rule
   itself only owns the measure and the margins.
   ---------------------------------------------------------- */

.pw-public .pw-content-sheet {
  max-width: 72rem;
  margin-inline: auto;
  padding-inline: var(--pw-pad);
}

/* The legacy wrappers keep the measure when they stand
   alone; inside the printed sheet they defer to it. */
.pw-public .pw-sheet {
  max-width: 72rem;
  margin-inline: auto;
  padding-inline: var(--pw-pad);
}

.pw-public .entry-content {
  max-width: 72rem;
  margin-inline: auto;
  padding-inline: var(--pw-pad);
}

.pw-public .pw-content-sheet .pw-sheet,
.pw-public .pw-content-sheet .entry-content {
  max-width: 100%;
  margin-inline: 0;
  padding-inline: 0;
}

/* If both legacy wrappers exist, the inner one defers to the outer */
.pw-public .entry-content .pw-sheet,
.pw-public .pw-sheet .entry-content {
  max-width: 100%;
  margin-inline: 0;
  padding-inline: 0;
}

.pw-public .pw-content-sheet > * + *,
.pw-public .pw-sheet > * + *,
.pw-public .entry-content > * + * {
  margin-top: 2.25rem;
}

/* ----------------------------------------------------------
   Breadcrumbs strip at the top of each page: the crumb chain
   centres under the header since v1.3.0.
   ---------------------------------------------------------- */

.pw-public .pw-crumbs ol {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.15rem 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.pw-public .pw-crumbs li {
  display: inline-flex;
  margin: 0;
}

.pw-public .pw-crumbs p {
  margin: 0;
  color: var(--pw-muted);
  font-family: var(--pw-mono);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
}

.pw-public .pw-crumbs span {
  color: var(--pw-muted);
}

.pw-public .pw-crumbs span + span {
  margin-left: 0.5rem;
}

.pw-public .pw-crumbs [aria-current="page"] {
  color: var(--pw-ivory);
}

/* ----------------------------------------------------------
   Header: ink bar, one primary row with dropdowns. The
   former second category row is gone since v1.1.1 because
   it repeated the same hub list as this row. The brand and
   the nav share one centred row since v1.3.0.
   ---------------------------------------------------------- */

.pw-public .pw-site-header {
  position: relative;
  z-index: 100;
  background: var(--pw-ink);
  border-bottom: 2px solid var(--pw-lime);
}

.pw-public .pw-header-inner {
  max-width: 72rem;
  margin-inline: auto;
  padding-inline: var(--pw-pad);
  display: flex;
  align-items: stretch;
  justify-content: safe center;
  gap: 1.5rem;
}

.pw-public .pw-brand {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding-block: 0.85rem;
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;
}

.pw-public .pw-brand:hover,
.pw-public .pw-brand:focus-visible {
  color: var(--pw-ivory);
}

.pw-public .pw-brand-tag {
  color: var(--pw-muted);
  font-size: 0.74rem;
  font-weight: 400;
  letter-spacing: 0.05em;
}

@media (max-width: 599px) {
  .pw-public .pw-brand-tag {
    display: none;
  }
}

/* Nav row: the hub links centre with the brand. The safe
   keyword sends an overflowing row back to its start edge,
   where it wraps onto further left-aligned lines instead of
   clipping, so no edge is ever lost. */
.pw-public .pw-nav {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  justify-content: safe center;
}

.pw-public .pw-nav ul {
  flex: 0 1 auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: safe center;
  align-items: center;
  gap: 0 1.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
  white-space: nowrap;
}

.pw-public .pw-nav li {
  position: static;
  display: flex;
  align-items: stretch;
}

.pw-public .pw-nav li a {
  display: flex;
  align-items: center;
  padding-block: 0.9rem;
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.82rem;
  letter-spacing: 0.02em;
  text-decoration: none;
  white-space: nowrap;
}

.pw-public .pw-nav li a:hover,
.pw-public .pw-nav li a:focus-visible {
  color: var(--pw-lime);
}

.pw-public .pw-nav a:focus-visible {
  outline-offset: -2px;
}

/* Dropdown panels: solid ground, box shadow, above the page.
   Hover is scoped to the header row. Panels anchor to the
   bottom of the header, so a wrapped nav line never moves
   them; the panel list centres with the safe keyword too. */
.pw-public .pw-drop {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: var(--pw-panel);
  border-top: 1px solid var(--pw-rule);
  border-bottom: 1px solid var(--pw-rule);
  border-radius: 0 0 var(--pw-radius) var(--pw-radius);
  box-shadow: 0 18px 32px rgba(0, 0, 0, 0.55);
  z-index: 60;
}

.pw-public .pw-site-header .pw-nav li:hover .pw-drop,
.pw-public .pw-site-header .pw-nav li:focus-within .pw-drop {
  display: block;
}

.pw-public .pw-drop ul {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: safe center;
  gap: 0.3rem 1.4rem;
  max-width: 72rem;
  margin-inline: auto;
  padding: 0.4rem var(--pw-pad);
  list-style: none;
  overflow-x: auto;
  white-space: nowrap;
  scrollbar-width: thin;
  scrollbar-color: var(--pw-rule) transparent;
}

.pw-public .pw-drop li {
  display: flex;
}

.pw-public .pw-drop a {
  display: inline-block;
  padding: 0.45rem 0.55rem;
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.8rem;
  text-decoration: none;
  white-space: nowrap;
}

.pw-public .pw-drop a:hover,
.pw-public .pw-drop a:focus-visible {
  color: var(--pw-lime);
}

/* ----------------------------------------------------------
   Footer: theme printer owns it, ink panel, three columns.
   The copy inside every column centres with the body since
   v1.3.0; the grid itself keeps the 72rem measure.
   ---------------------------------------------------------- */

.pw-public #colophon,
.pw-public .site-footer,
.pw-public .ast-footer,
.pw-public .ast-footer-overlay,
.pw-public .footer-adv-overlay {
  display: none;
}

.pw-public .pw-site-footer {
  background: var(--pw-ink);
  border-top: 1px solid var(--pw-rule);
  color: var(--pw-muted);
  font-size: 0.88rem;
  margin-top: 3rem;
}

.pw-public .pw-footer-inner {
  max-width: 72rem;
  margin-inline: auto;
  padding: 2.5rem var(--pw-pad) 2.25rem;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 2.25rem 3rem;
}

.pw-public .pw-footer-brandcol .pw-brand {
  padding-block: 0;
  color: var(--pw-ivory);
}

.pw-public .pw-footer-about {
  margin: 0.9rem auto 0;
  max-width: 34rem;
  font-size: 0.88rem;
  line-height: 1.6;
}

.pw-public .pw-footer-title {
  margin: 0 0 0.85rem;
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.pw-public .pw-footer-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 0.45rem;
}

.pw-public .pw-footer-list li {
  margin: 0;
}

.pw-public .pw-footer-list a {
  color: var(--pw-muted);
  font-size: 0.88rem;
  text-decoration: none;
}

.pw-public .pw-footer-list a:hover,
.pw-public .pw-footer-list a:focus-visible {
  color: var(--pw-lime);
}

.pw-public .pw-footer-meta {
  grid-column: 1 / -1;
  border-top: 1px solid var(--pw-rule);
  padding-top: 1.25rem;
  display: grid;
  gap: 0.35rem;
}

.pw-public .pw-footer-meta p {
  margin: 0 auto;
  max-width: 60rem;
  font-size: 0.82rem;
  line-height: 1.6;
}

.pw-public .pw-footer-meta a {
  color: var(--pw-muted);
}

.pw-public .pw-footer-meta a:hover,
.pw-public .pw-footer-meta a:focus-visible {
  color: var(--pw-lime);
}

@media (max-width: 759px) {
  .pw-public .pw-footer-inner {
    grid-template-columns: 1fr;
  }
}

/* ----------------------------------------------------------
   Contents bar
   ---------------------------------------------------------- */

.pw-public .pw-toc {
  padding: 1.1rem 1.3rem 1.2rem;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
}

.pw-public .pw-toc .pw-toc-title {
  margin: 0 0 0.5rem;
  color: var(--pw-lime);
  font-family: var(--pw-mono);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.pw-public .pw-toc p {
  margin: 0 0 0.75rem;
  color: var(--pw-muted);
  font-size: 0.92rem;
}

.pw-public .pw-toc ol {
  margin: 0;
}

.pw-public .pw-toc a {
  font-size: 0.92rem;
}

@media (min-width: 760px) {
  .pw-public .pw-toc ol {
    columns: 2;
    column-gap: 2.5rem;
  }
  .pw-public .pw-toc li {
    break-inside: avoid;
  }
}

/* ----------------------------------------------------------
   Hero
   ---------------------------------------------------------- */

.pw-public .pw-hero {
  padding-block: clamp(2.25rem, 5vw, 3.5rem) clamp(1.75rem, 4vw, 2.5rem);
}

.pw-public .pw-kicker {
  display: inline-block;
  margin: 0 0 0.85rem;
  color: var(--pw-lime);
  font-family: var(--pw-mono);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.pw-public .pw-hero h1 {
  margin: 0 0 1rem;
}

.pw-public .pw-standfirst {
  margin: 0;
  color: var(--pw-muted);
  font-size: 1.15rem;
  line-height: 1.55;
}

/* Hero meta chips join the centring with the safe keyword. */
.pw-public .pw-hero-meta {
  display: flex;
  flex-wrap: wrap;
  justify-content: safe center;
  gap: 0.5rem;
  margin: 1.4rem auto 0;
  padding: 0;
  list-style: none;
  color: var(--pw-muted);
}

.pw-public .pw-hero-meta li,
.pw-public .pw-hero-meta span,
.pw-public .pw-chip {
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.7rem;
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  background: var(--pw-panel);
  color: var(--pw-muted);
  font-family: var(--pw-mono);
  font-size: 0.75rem;
  letter-spacing: 0.03em;
  white-space: nowrap;
}

/* ----------------------------------------------------------
   Ticker: the row centres with the safe keyword; on overflow
   it falls back to its start edge and scrolls to the right,
   so no item ever clips off-screen.
   ---------------------------------------------------------- */

.pw-public .pw-ticker {
  display: flex;
  align-items: center;
  justify-content: safe center;
  flex-wrap: nowrap;
  gap: 0.85rem;
  overflow-x: auto;
  padding-block: 0.6rem;
  border-top: 1px solid var(--pw-rule);
  border-bottom: 1px solid var(--pw-rule);
  color: var(--pw-muted);
  font-family: var(--pw-mono);
  font-size: 0.8rem;
  white-space: nowrap;
  scrollbar-width: none;
}

.pw-public .pw-ticker::-webkit-scrollbar {
  display: none;
}

.pw-public .pw-ticker ul {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: safe center;
  gap: 0.85rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.pw-public .pw-ticker li,
.pw-public .pw-ticker span {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

.pw-public .pw-ticker li + li::before,
.pw-public .pw-ticker span + span::before {
  content: "\00B7";
  margin-right: 0.85rem;
  color: var(--pw-lime);
}

.pw-public .pw-ticker b,
.pw-public .pw-ticker strong {
  color: var(--pw-ivory);
}

/* ----------------------------------------------------------
   Scroll buttons added by the theme script: the pair centres
   under the ticker since v1.3.0.
   ---------------------------------------------------------- */

.pw-public .pw-scroll-nav {
  display: flex;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 0.6rem;
}

.pw-public .pw-scroll-btn {
  min-width: 2.4rem;
  padding: 0.35rem 0.6rem;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.9rem;
  line-height: 1;
}

.pw-public .pw-scroll-btn:disabled {
  opacity: 0.4;
  cursor: default;
}

.pw-public .pw-scroll-btn:not(:disabled):hover {
  border-color: var(--pw-lime);
  color: var(--pw-lime);
}

/* ----------------------------------------------------------
   Board: the leaderboard. Rank stub, medal rows on the top
   three, score badge beside the brand, pill chips and a call
   to action cell on the right. Copy, chips and the brand row
   centre inside the body cell since v1.3.0; the rank stub,
   the score stamp and the CTA button keep their own internal
   centring as objects with an edge. Markup comes from the
   board plugin renderer version 1.1.0, which adds the
   optional brand logo in the head row and the editable board
   copy around the rows.
   ---------------------------------------------------------- */

.pw-public .pw-boardin {
  margin: 2.25rem auto 0;
  color: var(--pw-ivory);
  font-size: 1.05rem;
}

.pw-public .pw-board-title {
  margin: 0 0 0.9rem;
}

.pw-public .pw-board-lead {
  margin: 0 0 0.6rem;
  color: var(--pw-ivory);
}

.pw-public .pw-board-sub {
  margin: 0 0 1.4rem;
  color: var(--pw-muted);
  font-size: 0.95rem;
}

.pw-public .pw-board-note {
  margin: 1.2rem 0 0;
  color: var(--pw-muted);
  font-size: 0.85rem;
}

.pw-public .pw-board-off {
  margin: 2.25rem auto 0;
  padding: 1rem 1.2rem;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  color: var(--pw-muted);
  font-family: var(--pw-mono);
  font-size: 0.85rem;
}

.pw-public .pw-coupons {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 1.1rem;
}

.pw-public li.pw-coupon {
  position: relative;
  margin: 0;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  overflow: hidden;
  display: grid;
  grid-template-columns: 5rem minmax(0, 1fr) 13rem;
  grid-template-areas: "stub body cta";
  align-items: stretch;
}

.pw-public .pw-coupon-stub {
  grid-area: stub;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  padding: 0.75rem 0.25rem;
  background: var(--pw-ink);
  border-right: 1px solid var(--pw-rule);
}

.pw-public .pw-rank {
  font-family: var(--pw-mono);
  font-size: 2rem;
  font-weight: 700;
  line-height: 1;
  color: var(--pw-ivory);
}

.pw-public .pw-rank-cap {
  color: var(--pw-muted);
  font-family: var(--pw-mono);
  font-size: 0.58rem;
  font-weight: 400;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

/* Medal rows: the top three carry a tinted edge and rank ink. */
.pw-public li.medal-gold {
  border-color: rgba(224, 163, 46, 0.55);
  box-shadow: inset 3px 0 0 var(--pw-gold);
}

.pw-public li.medal-silver {
  border-color: rgba(201, 210, 218, 0.4);
  box-shadow: inset 3px 0 0 var(--pw-silver);
}

.pw-public li.medal-bronze {
  border-color: rgba(216, 154, 106, 0.45);
  box-shadow: inset 3px 0 0 var(--pw-bronze);
}

.pw-public li.medal-gold .pw-rank {
  color: var(--pw-gold);
}

.pw-public li.medal-silver .pw-rank {
  color: var(--pw-silver);
}

.pw-public li.medal-bronze .pw-rank {
  color: var(--pw-bronze);
}

.pw-public li.medal-gold .pw-coupon-stub {
  background: rgba(224, 163, 46, 0.08);
}

.pw-public li.medal-silver .pw-coupon-stub {
  background: rgba(201, 210, 218, 0.07);
}

.pw-public li.medal-bronze .pw-coupon-stub {
  background: rgba(216, 154, 106, 0.08);
}

/* Score badge: sits beside the brand inside the head row. */
.pw-public .pw-coupon-stamp {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.12rem;
  padding: 0.32rem 0.65rem;
  background: var(--pw-ink);
  border: 1px solid var(--pw-lime);
  border-radius: var(--pw-radius);
  color: var(--pw-lime);
  font-family: var(--pw-mono);
  text-align: center;
}

.pw-public li.medal-gold .pw-coupon-stamp {
  border-color: var(--pw-gold);
  color: var(--pw-gold);
}

.pw-public li.medal-silver .pw-coupon-stamp {
  border-color: var(--pw-silver);
  color: var(--pw-silver);
}

.pw-public li.medal-bronze .pw-coupon-stamp {
  border-color: var(--pw-bronze);
  color: var(--pw-bronze);
}

.pw-public .pw-coupon-score-val {
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1;
}

.pw-public .pw-coupon-score-cap {
  color: var(--pw-muted);
  font-size: 0.52rem;
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* Brand logo: optional, sits left of the brand word inside
   the head row and shrinks to the row rhythm. */
.pw-public .pw-coupon-logo {
  display: inline-flex;
  max-height: 2.6rem;
  max-width: 8.5rem;
  object-fit: contain;
  border-radius: var(--pw-radius);
}

.pw-public .pw-coupon-body {
  grid-area: body;
  padding: 1.1rem 1.5rem 1.2rem;
  min-width: 0;
}

.pw-public .pw-coupon-body > :last-child {
  margin-bottom: 0;
}

.pw-public .pw-coupon-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: safe center;
  gap: 0.5rem 0.9rem;
  margin: 0 0 0.45rem;
}

.pw-public .pw-coupon-head .pw-coupon-brand {
  margin: 0;
}

.pw-public .pw-coupon-brand,
.pw-public .pw-coupon-body .pw-brand {
  display: inline-block;
  margin: 0 0 0.3rem;
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 1.12rem;
  font-weight: 700;
  text-decoration: none;
}

.pw-public a.pw-coupon-brand:hover,
.pw-public a.pw-coupon-brand:focus-visible,
.pw-public .pw-coupon-body a.pw-brand:hover,
.pw-public .pw-coupon-body a.pw-brand:focus-visible {
  color: var(--pw-lime);
}

.pw-public .pw-coupon-offer {
  margin: 0 0 0.7rem;
  color: var(--pw-ivory);
  font-size: 0.95rem;
  line-height: 1.55;
}

.pw-public .pw-coupon-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: safe center;
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.pw-public .pw-coupon-chips li,
.pw-public .pw-coupon-chips span {
  display: inline-flex;
  align-items: center;
  padding: 0.22rem 0.6rem;
  border: 1px solid var(--pw-rule);
  border-radius: 999px;
  background: var(--pw-ink);
  color: var(--pw-muted);
  font-family: var(--pw-mono);
  font-size: 0.74rem;
  letter-spacing: 0.02em;
  white-space: nowrap;
}

.pw-public .pw-coupon-ctacell {
  grid-area: cta;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.9rem;
  border-left: 1px solid var(--pw-rule);
}

.pw-public .pw-coupon-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 3rem;
  padding: 0.75rem 1rem;
  background: var(--pw-ivory);
  border: 1px solid var(--pw-lime);
  border-radius: var(--pw-radius);
  color: var(--pw-ink);
  font-family: var(--pw-mono);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.3;
  text-align: center;
  text-decoration: none;
}

.pw-public .pw-coupon-cta:hover,
.pw-public .pw-coupon-cta:focus-visible {
  background: var(--pw-lime);
  color: var(--pw-ink);
}

@media (max-width: 859px) {
  .pw-public li.pw-coupon {
    grid-template-columns: 1fr;
    grid-template-areas: "stub" "body" "cta";
  }
  .pw-public .pw-coupon-stub {
    flex-direction: row;
    gap: 0.5rem;
    padding: 0.55rem 0;
    border-right: 0;
    border-bottom: 1px solid var(--pw-rule);
  }
  .pw-public .pw-coupon-body {
    padding: 1.1rem 1.2rem 1.2rem;
  }
  .pw-public .pw-coupon-ctacell {
    border-left: 0;
    border-top: 1px solid var(--pw-rule);
    padding: 0.9rem;
  }
}

/* ----------------------------------------------------------
   Sections and spacing helpers
   ---------------------------------------------------------- */

.pw-public section > * + h2 {
  margin-top: 2.2rem;
}

/* ----------------------------------------------------------
   Tables: full-width panels, centred cells since v1.3.0
   ---------------------------------------------------------- */

.pw-public table {
  width: 100%;
  margin-block: 1.5rem;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--pw-ink);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  font-size: 0.92rem;
  line-height: 1.55;
}

.pw-public th,
.pw-public td {
  padding: 0.6rem 0.9rem;
  border-bottom: 1px solid var(--pw-rule);
  text-align: center;
  vertical-align: top;
  color: var(--pw-ivory);
}

.pw-public thead th {
  background: var(--pw-panel2);
  font-family: var(--pw-mono);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.pw-public tbody tr:nth-child(odd) {
  background: var(--pw-panel);
}

.pw-public tbody tr:nth-child(even) {
  background: transparent;
}

.pw-public tbody tr:last-child th,
.pw-public tbody tr:last-child td {
  border-bottom: 0;
}

.pw-public .pw-scrollwrap {
  margin-block: 1.5rem;
  scrollbar-width: thin;
  scrollbar-color: var(--pw-rule) transparent;
}

.pw-public .pw-scrollwrap table {
  margin-block: 0;
}

@media (max-width: 759px) {
  .pw-public .pw-scrollwrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .pw-public .pw-scrollwrap table {
    min-width: 34rem;
  }
}

/* ----------------------------------------------------------
   Calc widget: the ledger joins the centring. Key and value
   sit in one centred pair per line; the input and the result
   value keep their own edge alignment as objects.
   ---------------------------------------------------------- */

.pw-public .pw-calc {
  margin-block: 2rem;
  padding: 1.25rem 1.25rem 1.35rem;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
}

.pw-public .pw-calc table {
  width: 100%;
  margin: 0;
  background: transparent;
  border: 0;
}

.pw-public .pw-calc input,
.pw-public .pw-calc select {
  width: 11rem;
  max-width: 100%;
  background: var(--pw-ink);
  font-variant-numeric: tabular-nums;
}

.pw-public .pw-calc output,
.pw-public .pw-calc .pw-calc-out {
  display: block;
  color: var(--pw-lime);
  font-family: var(--pw-mono);
  font-size: 1.1rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.pw-public .pw-calc .pw-calc-note {
  margin: 1rem 0 0;
  color: var(--pw-muted);
  font-size: 0.85rem;
}

/* ----------------------------------------------------------
   Figures
   ---------------------------------------------------------- */

.pw-public figure.pw-fig {
  margin: 2rem auto;
  padding: 1rem;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
}

.pw-public .pw-fig svg {
  display: block;
  width: 100%;
  height: auto;
}

.pw-public .pw-fig figcaption {
  margin-top: 0.8rem;
  color: var(--pw-lime);
  font-family: var(--pw-mono);
  font-size: 0.78rem;
  letter-spacing: 0.02em;
}

/* ----------------------------------------------------------
   FAQ
   ---------------------------------------------------------- */

.pw-public details.pw-faq {
  margin: 0.65rem 0;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
}

.pw-public .pw-faq summary {
  position: relative;
  display: block;
  padding: 0.85rem 3rem 0.85rem 1.1rem;
  cursor: pointer;
  list-style: none;
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1.45;
}

.pw-public .pw-faq summary::-webkit-details-marker {
  display: none;
}

.pw-public .pw-faq summary::after {
  content: "+";
  position: absolute;
  top: 50%;
  right: 1.1rem;
  transform: translateY(-50%);
  color: var(--pw-lime);
  font-family: var(--pw-mono);
  font-size: 1.25rem;
  font-weight: 400;
  line-height: 1;
}

.pw-public details.pw-faq[open] summary::after {
  transform: translateY(-50%) rotate(45deg);
}

.pw-public .pw-faq-a {
  padding: 0 1.1rem 1.1rem;
  color: var(--pw-ivory);
  font-size: 0.95rem;
}

.pw-public .pw-faq-a p:last-child {
  margin-bottom: 0;
}

/* ----------------------------------------------------------
   Comparison fallback table
   ---------------------------------------------------------- */

.pw-public details.pw-table-fallback {
  margin: 1.5rem 0;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
}

.pw-public details.pw-table-fallback > summary {
  position: relative;
  display: block;
  padding: 0.8rem 3rem 0.8rem 1.1rem;
  cursor: pointer;
  list-style: none;
  color: var(--pw-ivory);
  font-family: var(--pw-mono);
  font-size: 0.9rem;
  font-weight: 700;
}

.pw-public details.pw-table-fallback > summary::-webkit-details-marker {
  display: none;
}

.pw-public details.pw-table-fallback > summary::after {
  content: "+";
  position: absolute;
  top: 50%;
  right: 1.1rem;
  transform: translateY(-50%);
  color: var(--pw-lime);
  font-size: 1.2rem;
  line-height: 1;
}

.pw-public details.pw-table-fallback[open] > summary::after {
  transform: translateY(-50%) rotate(45deg);
}

.pw-public details.pw-table-fallback > .pw-scrollwrap {
  margin-block: 0;
  padding: 0 1.1rem 1.1rem;
}

/* ----------------------------------------------------------
   Licence stamp aside
   ---------------------------------------------------------- */

.pw-public aside.pw-stamp {
  margin: 2rem auto;
  padding: 1.1rem 1.3rem;
  background: var(--pw-ink);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  color: var(--pw-muted);
  font-size: 0.88rem;
}

.pw-public aside.pw-stamp p:last-child {
  margin-bottom: 0;
}

/* ----------------------------------------------------------
   Care block
   ---------------------------------------------------------- */

.pw-public .pw-care {
  margin: 2rem auto;
  padding: 1.15rem 1.3rem;
  background: var(--pw-panel);
  border: 1px solid var(--pw-rule);
  border-radius: var(--pw-radius);
  color: var(--pw-ivory);
  font-size: 0.95rem;
}

.pw-public .pw-care p:last-child {
  margin-bottom: 0;
}

/* ----------------------------------------------------------
   Onward links: two columns, one column under 768px. The
   link copy centres inside each column since v1.3.0.
   ---------------------------------------------------------- */

.pw-public .pw-onward ul,
.pw-public ul.pw-onward {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 2.5rem;
  margin: 0 auto;
  padding: 0;
  list-style: none;
}

.pw-public .pw-onward li {
  border-bottom: 1px solid var(--pw-rule);
}

.pw-public .pw-onward a {
  display: block;
  padding: 0.7rem 0;
  color: var(--pw-ivory);
  font-size: 0.94rem;
  text-decoration: none;
}

.pw-public .pw-onward a:hover,
.pw-public .pw-onward a:focus-visible {
  color: var(--pw-lime);
}

@media (max-width: 767px) {
  .pw-public .pw-onward ul,
  .pw-public ul.pw-onward {
    grid-template-columns: 1fr;
  }
}

/* ----------------------------------------------------------
   Colophon and state colours
   ---------------------------------------------------------- */

.pw-public .pw-colophon {
  margin-top: 3rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--pw-rule);
  color: var(--pw-muted);
  font-size: 0.8rem;
}

.pw-public .pw-colophon p:last-child {
  margin-bottom: 0;
}

.pw-public .pw-ok {
  color: var(--pw-ok);
}

.pw-public .pw-warn {
  color: var(--pw-warn);
}

.pw-public .pw-amber {
  color: var(--pw-amber);
}

.pw-public .pw-muted {
  color: var(--pw-muted);
}