/* ============================================================
   RESPONSIVE — All @media queries consolidated
   ============================================================ */
@media (max-width: 1180px) {
  .header-nav { display: none; }
  .mobile-toggle { display: block; }
  .mobile-drawer { display: block; }
  .mobile-overlay { display: block; }
  .candidates-page .candidate-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 1023px) {
  .hero .container {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }

  .hero::before { display: none; }

  .hero-photo img { height: 320px; object-position: 50% 26%; }

  .conference-grid {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }

  .conference-photo { order: -1; }
  .conference-photo img { height: 360px; }

  .footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-8);
  }
  .footer-join-col { grid-column: 1 / -1; }

  .footer-tagline-block { margin-bottom: var(--space-8); }

  .leadership-grid { grid-template-columns: repeat(2, 1fr); }

  /* Candidates — tablet */
  .candidate-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .candidates-page .candidate-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .candidates-page .candidate-listing-header {
    flex-direction: column;
    align-items: stretch;
  }
  .candidate-detail-hero-grid,
  .candidate-detail-overview-grid,
  .candidate-electorate-grid {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }
  .candidate-detail-hero-photo {
    justify-self: start;
    width: min(320px, 100%);
  }
  .candidate-feed-grid { grid-template-columns: 1fr; }

  /* Policy page — tablet */
  .policy-overview-grid {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }
  .policy-commitments-grid { grid-template-columns: repeat(2, 1fr); }
  .policy-related-grid { grid-template-columns: 1fr; }

  /* News grid — tablet */
  .news-grid { grid-template-columns: repeat(2, 1fr); }

  /* Pillar cards — 1 column at tablet */
  .pillars-grid { grid-template-columns: 1fr; }
  .pillar-card:nth-child(odd) { border-right: none; }
  .pillar-card { border-bottom: 1px solid rgba(130, 25, 24, 0.18); }
  .pillar-card:nth-last-child(2) { border-bottom: 1px solid rgba(130, 25, 24, 0.18); }
  .pillar-card:last-child { border-bottom: none; }

  /* What We Stand For — tablet */
  .stands-principle-grid { grid-template-columns: 120px 1fr; }
  .stands-policy-grid { grid-template-columns: 120px 1fr; }
  .stands-nav-link { padding: 12px 16px; font-size: 0.75rem; /* min 44px touch target (WCAG 2.5.5) */ }
  .stands-action-grid { grid-template-columns: repeat(2, 1fr); }

  /* Get Involved — tablet */
  .involve-grid { grid-template-columns: 1fr; max-width: 560px; margin: 0 auto; }

  /* Donate — tablet */
  .donate-overview-grid,
  .donate-details-grid {
    grid-template-columns: 1fr;
  }
  .donate-bank-card {
    max-width: 520px;
  }

  /* Constitution — tablet */
  .constitution-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .constitution-download-inner { grid-template-columns: 1fr; }

  /* Contact — tablet */
  .contact-grid { grid-template-columns: 1fr; gap: var(--space-8); }
  .contact-details-col { order: -1; }
  .contact-region-grid { grid-template-columns: repeat(2, 1fr); }

  /* News filter — tablet */
  .news-filter-list { gap: var(--space-2); }
}

@media (max-width: 767px) {
  .homepage-topline-alert {
    padding: calc(var(--header-height) + var(--space-1)) 0 var(--space-1);
  }
  .homepage-topline-alert::after {
    width: 34vw;
  }
  .homepage-topline-alert-inner {
    align-items: stretch;
    flex-direction: column;
    gap: var(--space-2);
    min-height: auto;
  }
  .homepage-topline-alert-copy {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--space-2);
  }
  .homepage-topline-alert-kicker {
    font-size: 0.68rem;
  }
  .homepage-topline-alert-title {
    font-size: clamp(0.95rem, 4.8vw, 1.2rem);
    max-width: 24rem;
  }
  .homepage-topline-alert-link {
    align-self: flex-start;
    min-height: 30px;
  }
  .homepage-alert {
    padding: calc(var(--header-height) + var(--space-3)) 0 var(--space-3);
  }
  .homepage-topline-alert + .homepage-alert {
    padding-top: var(--space-3);
  }
  .homepage-alert::before {
    right: 0;
    width: 28vw;
  }
  .homepage-alert::after {
    right: 0;
    width: 28vw;
  }
  .homepage-alert-inner {
    grid-template-columns: minmax(0, 1fr) clamp(68px, 15vw, 84px);
    gap: clamp(var(--space-3), 3vw, var(--space-4));
    align-items: start;
    min-height: auto;
  }
  .homepage-alert-copy {
    display: contents;
  }
  .homepage-alert-kicker,
  .homepage-alert-title,
  .homepage-alert-sub {
    grid-column: 1;
  }
  .homepage-alert-kicker {
    justify-self: start;
    font-size: 0.68rem;
  }
  .homepage-alert-action {
    font-size: 0.7rem;
    line-height: 1.05;
    min-height: 38px;
    padding: 0 var(--space-2);
    text-align: center;
    white-space: normal;
    width: 100%;
  }
  .homepage-alert-actions {
    display: grid;
    gap: var(--space-2);
    grid-column: 1;
    grid-row: 4;
    margin-top: var(--space-3);
    max-width: 420px;
    width: 100%;
  }
  .homepage-alert-title {
    font-size: clamp(1.2rem, 6.2vw, 1.6rem);
  }
  .homepage-alert-sub {
    font-size: 0.86rem;
    margin-top: var(--space-2);
  }
  .homepage-alert-portrait {
    box-shadow: -8px 8px 0 rgba(5, 48, 23, 0.48);
    align-self: end;
    grid-column: 2;
    grid-row: 4;
    justify-self: end;
    max-width: clamp(68px, 15vw, 84px);
    transform: rotate(-1deg);
  }

  .hero { min-height: auto; }
  .hero .container {
    padding-top: var(--space-12);
    padding-bottom: var(--space-12);
  }
  .hero-photo img { height: 300px; object-position: 50% 26%; }

  .pillars { padding: var(--space-16) 0; }
  .pillar-card:nth-last-child(2) { border-bottom: 1px solid rgba(130, 25, 24, 0.18); }

  .quote-banner { padding: var(--space-20) 0; }
  .quote-banner::before { display: none; }

  .conference { padding: var(--space-16) 0; }
  .conference-leaders { flex-direction: column; gap: var(--space-4); }

  .stats { padding: var(--space-16) 0; }
  .stats::before { display: none; }
  .stats-grid { grid-template-columns: 1fr; gap: var(--space-2); }
  .stat-item:not(:last-child) {
    border-right: none;
    border-bottom: 2px solid rgba(255, 255, 255, 0.1);
  }
  .stat-item { padding: var(--space-6) 0; }
  .stats-statement .stats-text { text-align: center; }
  .stats-sub { margin-left: auto; margin-right: auto; text-align: center; }
  .stats-actions { justify-content: center; }

  .media-spotlight { padding: calc(var(--header-height) + var(--space-12)) 0 var(--space-16); }
  .media-spotlight::before { display: none; }
  .media-heading-block { margin-bottom: var(--space-10); }
  .media-grid { grid-template-columns: 1fr; }
  .media-card,
  .media-card--prominent {
    grid-column: auto;
    min-height: 152px;
    padding: calc(var(--space-12) + var(--space-2)) var(--space-5) var(--space-5);
  }
  .media-logo-panel,
  .media-card--prominent .media-logo-panel {
    min-height: 54px;
    max-width: min(210px, 78%);
  }
  .media-logo-img,
  .media-card--prominent .media-logo-img {
    max-height: 42px;
  }
  .media-card--odt .media-logo-img,
  .media-card--the-post .media-logo-img,
  .media-card--the-press .media-logo-img,
  .media-card--the-spinoff .media-logo-img,
  .media-card--scoop .media-logo-img {
    max-height: 50px;
  }
  .media-card--rnz .media-logo-panel,
  .media-card--evening-report .media-logo-panel,
  .media-card--skykiwi .media-logo-panel,
  .media-card--bhn .media-logo-panel {
    width: min(184px, 70%);
  }
  .media-card--rnz .media-logo-img,
  .media-card--evening-report .media-logo-img,
  .media-card--skykiwi .media-logo-img,
  .media-card--bhn .media-logo-img {
    width: 128px;
  }

  .manifesto { padding: var(--space-20) 0; }
  .manifesto-statement { padding: var(--space-8) 0; }

  .photo-banner { height: 280px; }
  .photo-banner img { object-position: 50% 42%; }

  .home-transport-feature { padding: var(--space-16) 0; }
  .home-transport-feature__grid { grid-template-columns: 1fr; gap: var(--space-10); }
  .home-transport-feature h2 { max-width: 13ch; }
  .home-transport-feature__photos { grid-template-columns: 1fr 0.72fr; }

  .join { padding: var(--space-16) 0; }
  .join::before { display: none; }
  .join .btn { width: 100%; }
  .stats-actions { flex-direction: column; }
  .stats-actions .btn { width: 100%; }

  .hero-ctas { flex-direction: column; width: 100%; }
  .hero-ctas .btn { width: 100%; }

  /* Interior hero */
  .interior-hero { padding-top: calc(var(--header-height) + var(--space-12)); padding-bottom: var(--space-12); }
  .interior-hero::before { display: none; }
  .candidates-page .interior-hero {
    padding-top: calc(var(--header-height) + var(--space-8));
    padding-bottom: var(--space-8);
  }

  /* Prose section */
  .prose-section { padding: var(--space-16) 0; }

  /* Constitution */
  .constitution-summary,
  .constitution-download,
  .constitution-next {
    padding: var(--space-16) 0;
  }
  .constitution-grid { grid-template-columns: 1fr; }
  .constitution-heading { font-size: 2.25rem; }
  .constitution-download-inner {
    padding: var(--space-6);
    gap: var(--space-6);
  }
  .constitution-download-action { padding: var(--space-6); }

  /* Principles grid */
  .principles { padding: var(--space-16) 0; }
  .principles-grid { grid-template-columns: 1fr; }

  /* History eras */
  .history-era { grid-template-columns: 1fr; gap: var(--space-3); }
  .history-year { font-size: 2.25rem; }

  /* Leadership */
  .leadership { padding: var(--space-16) 0; }
  .leadership-grid { grid-template-columns: 1fr; }

  /* Candidates */
  .candidate-listing { padding: var(--space-16) 0; }
  .candidates-page .candidate-listing { padding: var(--space-8) 0 var(--space-16); }
  .candidate-listing-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-6);
    margin-bottom: var(--space-8);
  }
  .candidates-page .candidate-listing-header {
    gap: var(--space-5);
    margin-bottom: var(--space-6);
  }
  .candidate-section-heading {
    font-size: 2.25rem;
  }
  .candidates-page .candidate-section-heading {
    font-size: 2rem;
  }
  .candidate-listing-intro p {
    font-size: 0.95rem;
  }
  .candidate-listing-header .btn { width: 100%; }
  .candidate-grid { grid-template-columns: 1fr; }
  .candidates-page .candidate-grid { grid-template-columns: 1fr; }
  .candidate-card { padding: var(--space-6); }
  .candidates-page .candidate-card { padding: var(--space-6); }
  .candidates-page .candidate-card-photo {
    aspect-ratio: 4 / 5;
  }
  .candidate-card-name { font-size: 1.75rem; }
  .candidates-page .candidate-card-name { font-size: 1.75rem; }
  .candidate-meta-list div { grid-template-columns: 1fr; gap: var(--space-1); }
  .candidates-page .candidate-meta-list div { grid-template-columns: 1fr; }
  .candidate-social-link { flex: 1 1 auto; }
  .candidate-detail-hero { text-align: center; }
  .candidate-detail-hero-photo { justify-self: center; }
  .candidate-detail-actions {
    flex-direction: column;
    width: 100%;
  }
  .candidate-detail-actions .btn { width: 100%; }
  .candidate-hero-social-links {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }
  .candidate-hero-social-link {
    justify-content: center;
    padding-left: var(--space-3);
    padding-right: var(--space-3);
  }
  .candidate-detail-overview,
  .candidate-electorate-section,
  .candidate-social-section {
    padding: var(--space-16) 0;
  }
  .candidate-detail-support { padding: var(--space-6); }
  .candidate-social-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-5);
  }
  .candidate-social-header .btn { width: 100%; }
  .candidate-feed-panel { padding: var(--space-5); }
  .candidate-feed-frame { min-height: 360px; }

  .footer-top {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-5);
    padding-top: var(--space-8);
    padding-bottom: var(--space-10);
  }
  .footer-tagline {
    font-size: 28px;
    transform: rotate(-0.45deg);
  }
  .footer-tagline a { max-width: none; }
  .footer-social {
    flex: none;
    width: 100%;
    justify-content: center;
    padding-top: 0;
  }
  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: auto auto auto;
    gap: var(--space-2) var(--space-5);
    padding-top: var(--space-10);
    padding-bottom: var(--space-6);
  }
  .footer-grid > div { min-width: 0; }
  .footer-grid > div:nth-child(1) { grid-column: 1; grid-row: 1 / span 2; }
  .footer-grid > div:nth-child(2) { grid-column: 2; grid-row: 1; }
  .footer-grid > div:nth-child(3) { grid-column: 2; grid-row: 2; }
  .footer-grid .footer-join-col {
    grid-column: 1 / -1;
    grid-row: 3;
    margin-top: var(--space-4);
  }
  .footer-heading { font-size: 1rem; }
  .footer-links a {
    min-height: 36px;
    font-size: var(--text-sm);
    line-height: 1.3;
  }
  .footer-bottom {
    flex-direction: column;
    gap: var(--space-2);
    text-align: left;
  }
  .footer-legal-links { justify-content: flex-start; }

  /* Policy page — mobile */
  .policy-overview { padding: var(--space-16) 0; }
  .policy-overview-grid {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }

  .policy-commitments { padding: var(--space-16) 0; }
  .policy-commitments-grid { grid-template-columns: 1fr; }

  .policy-context { padding: var(--space-16) 0; }
  .policy-context::before { display: none; }
  .policy-stats-grid {
    grid-template-columns: 1fr;
    gap: 0;
    text-align: center;
  }
  .policy-stat-item:not(:last-child) {
    border-right: none;
    border-bottom: 2px solid rgba(255, 255, 255, 0.1);
  }
  .policy-stat-item { padding: var(--space-6) 0; }

  .policy-detail { padding: var(--space-16) 0; }

  .policy-related { padding: var(--space-16) 0; }
  .policy-related-grid { grid-template-columns: 1fr; }

  /* News grid — mobile */
  .news-listing { padding: var(--space-16) 0; }
  .news-grid { grid-template-columns: 1fr; }
  .single-featured-image { max-height: 300px; }
  .single-featured-image--contained {
    max-height: none;
    padding: var(--space-6) var(--space-4);
  }
  .single-featured-image--contained img {
    max-height: none;
    max-width: 560px;
    width: 100%;
  }

  /* What We Stand For — mobile */
  .stands-hero { padding-top: calc(var(--header-height) + var(--space-12)); padding-bottom: var(--space-12); }
  .stands-hero::before { display: none; }
  .stands-vision { padding: var(--space-16) 0; }
  .stands-principle { padding: var(--space-12) 0; }
  .stands-principle-grid { grid-template-columns: 1fr; gap: var(--space-3); }
  .stands-principle-number { font-size: 4rem; }
  .stands-principle--dark::before { display: none; }
  .stands-policy { padding: var(--space-12) 0; }
  .stands-policy-grid { grid-template-columns: 1fr; gap: var(--space-3); }
  .stands-policy-number { font-size: 4rem; }
  .stands-policy--dark::before { display: none; }
  .stands-policy--tiriti::before { display: none; }
  .stands-action { padding: var(--space-16) 0; }
  .stands-action-grid { grid-template-columns: 1fr; }

  /* Get Involved — mobile */
  .involve-actions { padding: var(--space-16) 0; }
  .involve-grid {
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
    max-width: 100%;
  }
  .involve-card { padding: var(--space-6); }
  .involve-card-title {
    font-size: clamp(1.25rem, 7vw, 1.5rem);
    letter-spacing: 0;
  }
  .involve-card .btn {
    width: 100%;
    min-width: 0;
    height: auto;
    min-height: 56px;
    padding: var(--space-4) var(--space-5);
    line-height: 1.2;
    white-space: normal;
    text-align: center;
  }
  .involve-why { padding: var(--space-16) 0; }
  .involve-form { padding: var(--space-6) 0 var(--space-16); }
  .involve-form .am-form__submit .btn {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    height: auto;
    min-height: 56px;
    padding: var(--space-4) var(--space-5);
    line-height: 1.2;
    white-space: normal;
    text-align: center;
  }

  /* Donate — mobile */
  .donate-overview,
  .donate-details {
    padding: var(--space-16) 0;
  }
  .donate-bank-card,
  .donate-panel {
    padding: var(--space-6);
  }
  .donate-bank-list dd {
    font-size: 1.2rem;
  }
  .donate-account-number {
    font-size: 1.45rem;
  }
  .donate-actions {
    flex-direction: column;
  }
  .donate-actions .btn {
    width: 100%;
  }

  /* Contact — mobile */
  .contact-section { padding: var(--space-16) 0; }
  .contact-grid { grid-template-columns: 1fr; gap: var(--space-8); }
  .contact-details-col { order: 2; }
  .contact-form-wrap input[type="submit"] { width: 100%; }
  .contact-people-grid,
  .contact-region-grid { grid-template-columns: 1fr; }

  /* News filter — mobile: wrap pills instead of horizontal scroll (WCAG 1.4.10) */
  .news-filter-list { flex-wrap: wrap; overflow-x: visible; padding-bottom: var(--space-2); }
  .news-filter-link { white-space: nowrap; flex-shrink: 0; }
}

/* Wide-mobile / small-tablet (481–767px): keep the candidate alert in its
   two-column poster layout. The narrow-phone stack (above) pins the portrait to
   a bottom row, which floats it awkwardly to the far right once there is spare
   horizontal room. Restores the desktop two-column behaviour for this band;
   genuinely narrow portrait phones (≤480px) keep the stacked layout. */
@media (min-width: 481px) and (max-width: 767px) {
  .homepage-alert-inner {
    grid-template-columns: minmax(0, 1fr) minmax(84px, 104px);
    gap: var(--space-4);
    align-items: center;
    min-height: 110px;
  }
  .homepage-alert-copy {
    display: block;
  }
  .homepage-alert-title {
    font-size: clamp(1.5rem, 2.2vw, 2.1rem);
  }
  .homepage-alert-actions {
    display: flex;
    grid-column: auto;
    grid-row: auto;
    margin-top: var(--space-3);
    max-width: none;
    width: auto;
  }
  .homepage-alert-action {
    font-size: 0.84rem;
    min-height: 36px;
    padding: 0 var(--space-4);
    white-space: nowrap;
    width: auto;
  }
  .homepage-alert-portrait {
    grid-column: auto;
    grid-row: auto;
    align-self: center;
    max-width: 104px;
    transform: rotate(2deg);
    box-shadow: -12px 12px 0 rgba(5, 48, 23, 0.44);
  }
}

/* MUNZ band — narrow phones (<=480px): stack the copy over a full-width photo. */
@media (max-width: 480px) {
  .homepage-munz-alert .homepage-alert-inner {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
  .homepage-munz-alert .homepage-alert-photo {
    justify-self: stretch;
    max-width: none;
  }
}

/* MUNZ band — small tablets (481-767px): narrower photo column. */
@media (min-width: 481px) and (max-width: 767px) {
  .homepage-munz-alert .homepage-alert-inner {
    grid-template-columns: minmax(0, 1fr) minmax(160px, 220px);
  }
  .homepage-munz-alert .homepage-alert-photo {
    max-width: 220px;
  }
}

/* Small screens (<=480px): trim button side padding and allow wrapping so
   long-label buttons (hero CTAs, the 404 action) never exceed the viewport. */
@media (max-width: 480px) {
  .btn {
    min-width: 0;
    padding-left: var(--space-5);
    padding-right: var(--space-5);
    white-space: normal;
  }
}

/* Narrowest phones (<=360px): grid/flex items default to min-width:auto, so they
   cannot shrink below their content's intrinsic width and clip past a 320px
   viewport. Let them shrink and trim oversized gutters/card padding. Scoped to
   <=360px so all wider layouts are unaffected. */
@media (max-width: 360px) {
  .container {
    padding-left: var(--space-4);
    padding-right: var(--space-4);
  }

  .hero-content,
  .hero-photo,
  .pillar-card,
  .leadership-card,
  .donate-panel,
  .donate-purpose-list li,
  .constitution-download-copy,
  .constitution-download-action {
    min-width: 0;
  }

  .pillar-card,
  .leadership-card {
    padding-left: var(--space-5);
    padding-right: var(--space-5);
  }

  .hero-photo img {
    max-width: 100%;
    height: auto;
  }
}

/* ============================================================
   EVENT ANNOUNCEMENT (Auckland public meeting) — responsive.
   Self-contained; .homepage-event-alert / .event-* selectors
   do not collide with the base .homepage-munz-alert rules.
   ============================================================ */
@media (max-width: 767px) {
  .homepage-event-alert {
    padding: calc(var(--header-height) + var(--space-4)) 0 var(--space-4);
  }
  .homepage-event-alert .homepage-alert-inner {
    align-items: stretch;
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
  .homepage-event-alert .homepage-alert-copy {
    display: block;
  }
  .homepage-event-alert .homepage-alert-kicker,
  .homepage-event-alert .homepage-alert-title,
  .homepage-event-alert .homepage-alert-sub {
    grid-column: auto;
    max-width: 100%;
  }
  .homepage-event-alert .homepage-alert-title {
    font-size: clamp(1.42rem, 7.6vw, 1.95rem);
    line-height: 0.98;
  }
  .homepage-event-alert .homepage-alert-actions {
    display: flex;
    grid-column: auto;
    grid-row: auto;
    justify-content: flex-start;
    margin-top: var(--space-3);
    max-width: none;
    width: auto;
  }
  .homepage-event-alert .homepage-alert-action {
    width: auto;
  }

  .event-detail-grid { grid-template-columns: 1fr; }
  .event-page-poster { margin: calc(var(--space-8) * -1) auto var(--space-8); }
}

@media (min-width: 481px) and (max-width: 767px) {
  .homepage-event-alert .homepage-alert-inner {
    grid-template-columns: 1fr;
  }
  .homepage-event-alert .homepage-alert-actions {
    justify-content: flex-start;
  }
}
