    html, body { min-height: 100vh; display: flex; flex-direction: column; }
    main { flex: 1; }
    .page-wrap { max-width: 1000px; margin: 0 auto; padding: 0 32px; }
    .page-shell { padding: 40px 0 140px; }

    /* ── Back link ── */
    .back-link {
      display: inline-flex; align-items: center; gap: 6px;
      font-size: 14px; font-weight: 500; color: var(--fg-2);
      text-decoration: none; border-bottom: none; margin-bottom: 28px;
      transition: color var(--dur-fast) var(--ease-soft);
    }
    .back-link:hover { color: var(--mint-600); }

    /* ── Hero ── */
    .school-hero {
      background: var(--bg-surface);
      border: 1px solid var(--border-1);
      border-radius: var(--radius-lg);
      box-shadow: var(--shadow-sm);
      overflow: hidden;
      margin-bottom: 20px;
    }
    .hero-accent { height: 6px; }
    .hero-body { padding: 24px 28px 28px; display: flex; align-items: flex-start; gap: 20px; }
    .hero-initials {
      width: 64px; height: 64px; flex-shrink: 0;
      border-radius: var(--radius-md);
      display: flex; align-items: center; justify-content: center;
      font-family: var(--font-display); font-weight: 800; font-size: 22px;
    }
    .hero-text { flex: 1; }
    .hero-text h1 {
      font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);
      margin-bottom: 8px; line-height: 1.2;
    }
    /* The same school under its other name — Thai page, English name, and
       the other way round. */
    .hero-name-alt {
      font-size: 14px; color: var(--fg-3);
      margin: -4px 0 10px;
    }
    .hero-meta {
      display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
      font-size: 13px; color: var(--fg-2);
    }
    .hero-meta .dot { width: 3px; height: 3px; border-radius: 999px; background: var(--fg-4); }
    .type-chip {
      display: inline-flex; align-items: center;
      font-size: 11px; font-weight: 600; letter-spacing: 0.03em;
      padding: 4px 10px; border-radius: var(--radius-pill);
    }

    /* ── Hero cost ── */
    .hero-cost {
      margin-top: 14px;
      display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
    }
    .hero-cost-amount {
      font-family: var(--font-display);
      font-weight: 800;
      font-size: 1.75rem;
      color: var(--fg-1);
      font-variant-numeric: tabular-nums;
      line-height: 1.1;
    }
    .hero-cost-unit { font-size: 13px; color: var(--fg-2); }
    .hero-cost-period { color: var(--fg-3); margin-left: 4px; }

    /* ── Hero actions ── */
    .hero-actions {
      margin-top: 18px;
      display: flex; flex-wrap: wrap; gap: 8px;
    }
    .btn {
      display: inline-flex; align-items: center; gap: 6px;
      padding: 9px 16px;
      border-radius: var(--radius-pill);
      font-family: var(--font-body); font-weight: 600; font-size: 13px;
      text-decoration: none;
      border: 1px solid transparent;
      cursor: pointer;
      transition: box-shadow var(--dur-fast) var(--ease-soft), background var(--dur-fast) var(--ease-soft);
    }
    .btn-primary { background: var(--mint-600); color: var(--bg-canvas); }
    .btn-primary:hover { box-shadow: var(--shadow-md); }
    .btn-secondary { background: var(--bg-surface); color: var(--fg-1); border-color: var(--border-1); }
    .btn-secondary:hover { background: var(--bg-subtle); box-shadow: var(--shadow-sm); }
    .btn-ghost { background: transparent; color: var(--fg-2); }
    .btn-ghost:hover { background: var(--bg-subtle); color: var(--fg-1); }
    .btn-save { background: var(--peach-100); color: var(--peach-600); }
    .btn-save:hover { background: var(--peach-200); box-shadow: var(--shadow-sm); }
    .btn-save .btn-save-icon-filled { display: none; }
    .btn-save.is-saved { background: var(--peach-200); }
    .btn-save.is-saved .btn-save-icon-empty { display: none; }
    .btn-save.is-saved .btn-save-icon-filled { display: inline-block; }

    /* ── Contact: address + map ── */
    .address-meta {
      font-size: 12px; color: var(--fg-3); margin-top: 4px;
    }
    .contact-map {
      display: block; width: 100%; height: 380px;
      margin: 14px 0 10px;
      border: 1px solid var(--border-1);
      border-radius: var(--radius-md);
      overflow: hidden;
      z-index: 1;
    }
    .map-actions-row {
      display: flex;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      margin-top: 10px;
    }
    .map-action-btn {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      font-size: 12px;
      font-weight: 600;
      padding: 7px 14px;
      border-radius: var(--radius-pill);
      text-decoration: none;
      transition: all var(--dur-fast) var(--ease-soft);
    }
    .map-btn-google {
      background: var(--mint-600);
      color: #fff !important;
    }
    .map-btn-google:hover {
      opacity: 0.92;
      box-shadow: var(--shadow-sm);
    }
    .map-btn-osm {
      background: var(--bg-subtle);
      color: var(--fg-1) !important;
      border: 1px solid var(--border-1);
    }
    .map-btn-osm:hover {
      background: var(--border-1);
    }
    .coords-tag {
      font-size: 11px;
      color: var(--fg-3);
      font-family: monospace;
      margin-left: auto;
    }

    /* ── Section cards ── */
    .detail-card {
      background: var(--bg-surface);
      border: 1px solid var(--border-1);
      border-radius: var(--radius-lg);
      box-shadow: var(--shadow-sm);
      overflow: hidden;
      margin-bottom: 20px;
    }
    .detail-card-head {
      padding: 16px 24px;
      border-bottom: 1px solid var(--border-1);
      background: var(--bg-subtle);
      display: flex; align-items: center; gap: 10px;
    }
    .detail-card-head img { opacity: 0.55; }
    .detail-card-head span {
      font-family: var(--font-display); font-weight: 700; font-size: 15px; color: var(--fg-1);
    }
    .detail-row {
      display: grid; grid-template-columns: 190px 1fr;
      border-bottom: 1px solid var(--border-1); font-size: 14px;
    }
    .detail-row:last-child { border-bottom: none; }
    .detail-label { padding: 14px 24px; font-weight: 600; color: var(--fg-2); background: var(--bg-subtle); border-right: 1px solid var(--border-1); }
    .detail-value { padding: 14px 24px; color: var(--fg-1); }
    .detail-value a { color: var(--mint-600); text-decoration: none; border-bottom: none; display: inline-flex; align-items: center; gap: 6px; }
    .detail-value a:hover { text-decoration: underline; }

    /* Quick facts grid */
    .facts-grid {
      display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
      gap: 0;
    }
    .fact-item {
      padding: 18px 24px; border-right: 1px solid var(--border-1); border-bottom: 1px solid var(--border-1);
    }
    .fact-item:nth-child(even) { border-right: none; }
    .fact-item:last-child, .fact-item:nth-last-child(2):nth-child(odd) { border-bottom: none; }
    .fact-label { font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-3); margin-bottom: 6px; }
    .fact-value { font-family: var(--font-display); font-weight: 700; font-size: 17px; color: var(--fg-1); }

    /* Programs & languages — tags + facilities */
    .tag-row { display: flex; flex-wrap: wrap; gap: 6px; }
    .tag {
      display: inline-flex; align-items: center;
      font-size: 12px; font-weight: 600;
      padding: 4px 11px; border-radius: var(--radius-pill);
    }
    .tag-mint { background: var(--mint-100); color: var(--mint-600); }
    .tag-lavender { background: var(--lavender-100); color: var(--lavender-600); }
    .facility-row { display: flex; flex-wrap: wrap; gap: 10px 20px; }
    .facility-item {
      display: inline-flex; align-items: center; gap: 7px;
      font-size: 14px; color: var(--fg-1);
    }
    .facility-item img { opacity: 0.55; }

    /* Cost grade + summary strip */
    .cost-grade-row { padding: 16px 24px 0; }
    .cost-period-badge {
      display: inline-flex; align-items: center; gap: 8px;
      background: var(--sky-100); color: var(--sky-600);
      font-size: 12px; font-weight: 600;
      padding: 5px 12px; border-radius: var(--radius-pill);
    }

    .cost-summary {
      margin: 14px 24px 4px;
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      border: 1px solid var(--border-1);
      border-radius: var(--radius-md);
      overflow: hidden;
      background: var(--bg-surface);
    }
    .cost-summary-cell {
      padding: 14px 16px;
      border-right: 1px solid var(--border-1);
      background: var(--bg-surface);
    }
    .cost-summary-cell:last-child { border-right: none; }
    .cost-summary-cell.is-total { background: var(--mint-50); }
    .cost-summary-label {
      font-size: 11px; font-weight: 600; letter-spacing: 0.08em;
      text-transform: uppercase; color: var(--fg-3);
      margin-bottom: 6px;
    }
    .cost-summary-value {
      font-family: var(--font-display);
      font-weight: 800;
      font-size: 1.15rem;
      color: var(--fg-1);
      font-variant-numeric: tabular-nums;
      line-height: 1.2;
    }
    .cost-summary-value--alt { font-size: 1rem; }
    .cost-summary-suffix {
      font-family: var(--font-body);
      font-weight: 500;
      font-size: 11px;
      color: var(--fg-3);
      margin-top: 4px;
    }

    /* Cost footer — trust signals */
    .cost-footer {
      padding: 14px 24px;
      border-top: 1px solid var(--border-1);
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
      flex-wrap: wrap;
      font-size: 12px;
      color: var(--fg-3);
      background: var(--bg-subtle);
    }
    .report-link {
      color: var(--fg-2);
      text-decoration: underline;
      text-decoration-color: var(--border-1);
      text-underline-offset: 3px;
      transition: color var(--dur-fast) var(--ease-soft);
    }
    .report-link:hover { color: var(--fg-1); }

    /* Cost: frequency badges + explanatory note */
    .freq-badge {
      display: inline-flex; align-items: center;
      font-size: 11px; font-weight: 600; letter-spacing: 0.02em;
      padding: 3px 9px; border-radius: var(--radius-pill);
      white-space: nowrap;
    }
    .freq-per_term { background: var(--mint-100); color: var(--mint-600); }
    .freq-per_year { background: var(--sky-100); color: var(--sky-600); }
    .freq-once { background: var(--peach-100); color: var(--peach-600); }
    .cost-note {
      padding: 14px 24px 0;
      font-size: 12px; line-height: 1.6; color: var(--fg-3);
    }
    /* Caveat the school or the source left us with — what a fee covers,
       which programme a range belongs to, what wasn't stated. */
    .cost-caveat {
      display: block; margin-top: 8px;
      padding: 10px 12px;
      border-radius: var(--radius-md);
      background: var(--sunshine-100);
      color: var(--fg-2);
    }

    /* Provenance — every record links back to where it came from. */
    .source-list { list-style: none; padding: 4px 24px 0; margin: 0; }
    .source-list li {
      display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
      padding: 9px 0; border-bottom: 1px solid var(--border-1);
      font-size: 13px;
    }
    .source-list li:last-child { border-bottom: none; }
    .source-list a {
      color: var(--fg-1);
      text-decoration: underline;
      text-decoration-color: var(--border-1);
      text-underline-offset: 3px;
      transition: color var(--dur-fast) var(--ease-soft);
    }
    .source-list a:hover { color: var(--mint-600); }
    .source-date { font-size: 11px; color: var(--fg-3); }

    .cost-table { width: 100%; border-collapse: collapse; font-family: var(--font-body); font-size: 14px; margin-top: 16px; }
    .cost-table thead tr { background: var(--bg-subtle); border-bottom: 1px solid var(--border-1); }
    .cost-table th { padding: 11px 24px; text-align: left; font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-3); }
    .cost-table th:last-child { text-align: right; }
    .cost-table td { padding: 14px 24px; border-bottom: 1px solid var(--border-1); color: var(--fg-1); }
    .cost-table td:last-child { text-align: right; font-family: var(--font-display); font-weight: 600; font-variant-numeric: tabular-nums; }
    .cost-table tbody tr:last-child td { border-bottom: none; }
    .cost-table .total-row { background: var(--mint-50); border-top: 2px solid var(--border-1); }
    .cost-table .total-row td { font-family: var(--font-display); font-weight: 800; font-size: 16px; color: var(--fg-1); border-bottom: none; }

    /* Pip empty state */
    .empty-state { text-align: center; padding: 80px 32px; }
    .empty-state img { margin-bottom: 20px; }
    .empty-state h2 { font-size: 1.25rem; margin-bottom: 8px; }
    .empty-state p { color: var(--fg-2); max-width: 38ch; margin: 0 auto; }
    .btn-back {
      display: inline-flex; align-items: center; gap: 6px; margin-top: 24px;
      font-family: var(--font-body); font-weight: 600; font-size: 14px;
      padding: 12px 22px; border-radius: var(--radius-pill);
      background: var(--mint-600); color: var(--bg-canvas);
      text-decoration: none; box-shadow: var(--shadow-sm);
      transition: box-shadow var(--dur-fast) var(--ease-soft);
    }
    .btn-back:hover { box-shadow: var(--shadow-md); }

    @media (max-width: 640px) {
      .detail-row { grid-template-columns: 1fr; }
      .detail-label { border-right: none; border-bottom: 1px solid var(--border-1); }
      .hero-body { flex-direction: column; }
      .contact-map { height: 240px; }
      .hero-cost-amount { font-size: 1.5rem; }
      .cost-summary { grid-template-columns: repeat(2, 1fr); }
      .cost-summary-cell:nth-child(2n) { border-right: none; }
      .cost-summary-cell:nth-child(-n+2) { border-bottom: 1px solid var(--border-1); }
    }
    /* ── Premium-locked panel ── */
    .locked-card { position: relative; }
    /* Preview and overlay share one grid cell, so the card grows to fit
       whichever is taller. The overlay used to be absolutely positioned over a
       ~90px strip of placeholder lines, which cropped the button at the card
       edge. */
    .locked-body {
      display: grid;
      padding: var(--sp-4) var(--sp-6) var(--sp-6);
    }
    .locked-body > * { grid-area: 1 / 1; }
    .locked-preview {
      align-self: center;
      filter: blur(5px); opacity: 0.5; pointer-events: none; user-select: none;
    }
    .locked-line { height: 14px; border-radius: var(--radius-pill); background: var(--bg-sunken); margin: 12px 0; }
    .locked-line.short { width: 55%; }
    .locked-overlay {
      display: flex; flex-direction: column; align-items: center; justify-content: center;
      gap: var(--sp-3); text-align: center;
      padding: var(--sp-2) 0;
    }
    .locked-overlay p {
      margin: 0; font-size: 14px; line-height: 1.6;
      color: var(--fg-2); max-width: 320px;
    }
    /* A bare star renders solid black as an <img> — sit it on a soft disc. */
    .locked-badge {
      width: 36px; height: 36px; border-radius: var(--radius-pill);
      background: var(--sunshine-100);
      display: flex; align-items: center; justify-content: center;
    }
    .locked-badge img { opacity: 0.7; }

    /* ── Educational Level Chips & Table ── */
    .hero-levels {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin-top: 10px;
    }
    .level-chip {
      display: inline-flex;
      align-items: center;
      padding: 3px 10px;
      border-radius: var(--radius-pill);
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.02em;
      background: var(--mint-100);
      color: var(--mint-600);
      border: 1px solid rgba(43,122,120,0.15);
    }
    .level-chip-nursery { background: var(--peach-100); color: var(--peach-600); }
    .level-chip-kindergarten { background: var(--sunshine-100); color: var(--sunshine-600); }
    .level-chip-primary { background: var(--sky-100); color: var(--sky-600); }
    .level-chip-secondary { background: var(--lavender-100); color: var(--lavender-600); }

    .level-fee-intro {
      padding: 14px 24px 4px;
      font-size: 13px;
      color: var(--fg-2);
      line-height: 1.5;
    }
    .level-fee-intro p { margin: 0; }

    .level-fee-table-wrap {
      width: 100%;
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
      margin-top: 10px;
    }
    .level-fee-table {
      width: 100%;
      min-width: 680px;
      border-collapse: collapse;
      font-family: var(--font-body);
      font-size: 13px;
    }
    .level-fee-table thead tr {
      background: var(--bg-subtle);
      border-bottom: 1px solid var(--border-1);
    }
    .level-fee-table th {
      padding: 10px 18px;
      text-align: left;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--fg-3);
      white-space: nowrap;
    }
    .level-fee-table td {
      padding: 12px 18px;
      border-bottom: 1px solid var(--border-1);
      color: var(--fg-1);
      vertical-align: middle;
    }
    .level-fee-table tbody tr:hover {
      background: var(--bg-subtle);
    }
    .level-fee-table tbody tr:last-child td {
      border-bottom: none;
    }
    .cell-level {
      font-weight: 600;
      color: var(--fg-1);
      white-space: nowrap;
    }
    .cell-program {
      min-width: 140px;
    }
    .program-tag {
      display: inline-block;
      padding: 2px 8px;
      border-radius: var(--radius-sm);
      background: var(--bg-subtle);
      border: 1px solid var(--border-1);
      font-size: 12px;
      font-weight: 500;
      color: var(--fg-2);
    }
    .cell-amount {
      font-family: var(--font-display);
      font-weight: 600;
      font-variant-numeric: tabular-nums;
      white-space: nowrap;
      color: var(--fg-1);
    }
    .cell-notes {
      font-size: 12px;
      color: var(--fg-2);
      max-width: 220px;
      line-height: 1.4;
    }
    .cell-ref {
      white-space: nowrap;
      font-size: 12px;
    }
    .fee-source-link {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      color: var(--mint-600);
      text-decoration: underline;
      text-underline-offset: 3px;
      text-decoration-color: rgba(43,122,120,0.3);
      max-width: 200px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      font-weight: 500;
    }
    .fee-source-link:hover {
      color: #1b5351;
      text-decoration-color: currentColor;
    }
    .ext-arrow {
      font-size: 11px;
      opacity: 0.8;
    }
    .fee-source-text {
      color: var(--fg-3);
      font-size: 11px;
    }

    /* ── School Schedule & Clean Air Card ── */
    .wellness-row {
      display: flex;
      align-items: center;
      gap: 10px;
    }
    .wellness-icon-wrap {
      font-size: 16px;
      line-height: 1;
    }
    .wellness-sub {
      color: var(--fg-3);
      font-size: 12px;
      margin-left: 6px;
    }
    .wellness-block {
      display: flex;
      flex-direction: column;
      gap: 6px;
    }
    .wellness-badge-row {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .wellness-chip {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 3px 10px;
      border-radius: var(--radius-pill);
      font-size: 12px;
      font-weight: 600;
    }
    .wellness-chip-care {
      background: var(--sky-100);
      color: var(--sky-600);
      border: 1px solid rgba(43,122,120,0.15);
    }
    .wellness-chip-air {
      background: var(--mint-100);
      color: var(--mint-600);
      border: 1px solid rgba(43,122,120,0.15);
    }
    .wellness-chip-nurse {
      background: var(--mint-100);
      color: var(--mint-600);
      border: 1px solid rgba(43,122,120,0.15);
    }
    .wellness-chip-safety {
      background: var(--sunshine-100);
      color: var(--sunshine-600);
      border: 1px solid rgba(217,119,6,0.15);
    }
    .wellness-chip-pickup {
      background: var(--lavender-100);
      color: var(--lavender-600);
      border: 1px solid rgba(124,58,237,0.15);
    }
    .wellness-chip-ratio {
      background: var(--sky-100);
      color: var(--sky-600);
      border: 1px solid rgba(14,116,144,0.15);
    }
    .aqi-threshold-badge {
      display: inline-flex;
      align-items: center;
      padding: 2px 8px;
      border-radius: var(--radius-sm);
      background: var(--sunshine-100);
      color: var(--sunshine-600);
      font-size: 11px;
      font-weight: 600;
    }
    .wellness-text {
      margin: 0;
      font-size: 13px;
      color: var(--fg-2);
      line-height: 1.55;
    }

    /* ── Hero plan count & meta ── */
    .hero-plan-meta {
      display: inline-flex;
      align-items: center;
      margin-left: 8px;
    }
    .hero-plan-count {
      display: inline-flex;
      align-items: center;
      padding: 3px 10px;
      border-radius: var(--radius-pill);
      background: var(--mint-100);
      color: var(--mint-600);
      font-size: 12px;
      font-weight: 700;
    }

    /* ── Plan Selector Card ── */
    .plan-selector-card {
      border: 1px solid var(--mint-200);
      background: var(--bg-surface);
      margin-bottom: 24px;
    }
    .plan-counter-badge {
      display: inline-flex;
      align-items: center;
      padding: 2px 10px;
      border-radius: var(--radius-pill);
      background: var(--mint-100);
      color: var(--mint-600);
      font-size: 11px;
      font-weight: 700;
      margin-left: auto;
    }
    .plan-selector-intro {
      padding: 16px 24px 8px;
    }
    .plan-selector-intro p {
      margin: 0;
      font-size: 13px;
      color: var(--fg-2);
    }
    .plan-chips-list {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
      gap: 12px;
      padding: 8px 24px 18px;
    }
    .plan-chip-item {
      display: flex;
      flex-direction: column;
      text-align: left;
      background: var(--bg-canvas);
      border: 1.5px solid var(--border-1);
      border-radius: var(--radius-md);
      padding: 14px 16px;
      cursor: pointer;
      transition: all var(--dur-fast) var(--ease-soft);
      gap: 6px;
      font-family: var(--font-body);
    }
    .plan-chip-item:hover {
      border-color: var(--mint-300);
      background: var(--bg-subtle);
      transform: translateY(-1px);
    }
    .plan-chip-item.is-active {
      border-color: var(--mint-600);
      background: rgba(63, 135, 126, 0.05);
      box-shadow: 0 0 0 1px var(--mint-600), var(--shadow-sm);
    }
    .plan-chip-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
    }
    .plan-level-tag {
      font-size: 11px;
      font-weight: 700;
      padding: 2px 8px;
      border-radius: var(--radius-pill);
      background: var(--bg-subtle);
      color: var(--fg-2);
    }
    .level-tag-primary { background: var(--mint-100); color: var(--mint-600); }
    .level-tag-secondary { background: var(--lavender-100); color: var(--lavender-600); }
    .level-tag-kindergarten { background: var(--peach-100); color: var(--peach-600); }
    .level-tag-nursery { background: var(--peach-100); color: var(--peach-600); }
    .plan-cost-pill {
      font-family: var(--font-display);
      font-weight: 700;
      font-size: 12px;
      color: var(--mint-600);
      background: var(--mint-100);
      padding: 2px 8px;
      border-radius: var(--radius-pill);
    }
    .plan-chip-name {
      font-size: 14px;
      font-weight: 700;
      color: var(--fg-1);
      line-height: 1.35;
    }
    .plan-chip-meta {
      font-size: 12px;
      color: var(--fg-3);
      line-height: 1.3;
    }
    .plan-active-action-bar {
      display: flex;
      align-items: center;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 12px;
      padding: 14px 24px;
      background: var(--bg-subtle);
      border-top: 1px solid var(--border-1);
    }
    .plan-active-summary {
      display: flex;
      align-items: center;
      gap: 8px;
      font-size: 13px;
      color: var(--fg-1);
      flex-wrap: wrap;
    }
    .plan-active-indicator {
      color: var(--mint-600);
      font-weight: 600;
    }
    .plan-active-price {
      display: inline-flex;
      padding: 2px 8px;
      background: var(--mint-100);
      color: var(--mint-600);
      border-radius: var(--radius-pill);
      font-weight: 700;
      font-size: 12px;
    }

    /* ── Fee table row highlight & compare button ── */
    .fee-table-row.is-highlighted {
      background: rgba(63, 135, 126, 0.08) !important;
      outline: 1px solid var(--mint-500);
    }
    .btn-plan-compare {
      font-size: 11px !important;
      padding: 4px 10px !important;
      white-space: nowrap;
    }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after { animation: none !important; transition: none !important; }
    }
