/* Shared 2026 redesign for public utility, legal, account and contribution flows. */
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) {
  --v2-ink: #173d24;
  --v2-green: #315b28;
  --v2-leaf: #638b28;
  --v2-sage: #edf3df;
  --v2-gold: #e7b63f;
  --v2-orange: #b95e22;
  --v2-cream: #faf7ed;
  --v2-paper: #fffdf7;
  --v2-muted: #667064;
  --v2-line: #dce2cf;
  --v2-shadow: 0 14px 38px rgba(35, 60, 28, .09);
  --page-width: 1150px;
  color: var(--v2-ink);
  background: radial-gradient(circle at 15% 0, rgba(231, 182, 63, .08), transparent 24rem), var(--v2-cream);
}

:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .site-header {
  width: min(calc(100% - 32px), 1150px);
  min-height: 78px;
  padding: 8px 22px;
  grid-template-columns: auto 1fr auto;
  gap: 30px;
  border-color: rgba(49, 91, 40, .12);
  background: rgba(255, 253, 247, .94);
  box-shadow: none;
  backdrop-filter: blur(15px);
}

:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .brand { gap: 10px; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .brand img { width: 52px; height: 52px; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .brand strong { font: 700 23px/1 Georgia, serif; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .brand small { margin-top: 5px; color: #955020; font-size: 8px; letter-spacing: .09em; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .main-nav { gap: 26px; font-size: 13px; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .main-nav a { padding: 22px 0 19px; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .header-actions { gap: 13px; font-size: 13px; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .provider-button { padding: 9px 14px; border-width: 1px; border-radius: 11px; }

:is(.empty-shell, .claim-shell, .follow-shell, .operator-shell, .review-shell) {
  width: min(calc(100% - 32px), 1150px);
  margin: 0 auto;
  padding: 16px 0 56px;
  background: transparent;
}

:is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 170px;
  gap: 24px;
  align-items: center;
  min-height: 205px;
  margin-bottom: 22px;
  padding: 28px 32px;
  overflow: hidden;
  border: 1px solid rgba(49, 91, 40, .14);
  border-radius: 23px;
  background:
    radial-gradient(circle at 84% 18%, rgba(231, 182, 63, .2), transparent 25%),
    linear-gradient(125deg, #fffaf0 0%, #fffdf7 54%, #e8f0d9 100%);
  box-shadow: var(--v2-shadow);
}

:is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero)::after {
  position: absolute;
  z-index: -1;
  right: -80px;
  bottom: -120px;
  width: 330px;
  height: 240px;
  border: 28px solid rgba(99, 139, 40, .07);
  border-radius: 50%;
  content: "";
}

:is(.empty-kicker, .claim-kicker, .follow-kicker, .operator-kicker, .review-kicker) {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 27px;
  padding: 5px 10px;
  border: 1px solid #d7e2c8;
  border-radius: 999px;
  color: var(--v2-green);
  background: rgba(255, 253, 247, .8);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

:is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) h1 {
  max-width: 760px;
  margin: 11px 0 9px;
  color: var(--v2-ink);
  font: 700 clamp(34px, 4vw, 48px)/1.02 Georgia, serif;
  letter-spacing: -.028em;
}

:is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) p {
  max-width: 690px;
  margin: 0;
  color: #4e5a50;
  font-size: 13px;
  line-height: 1.55;
  font-weight: 400;
}

:is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) > img {
  position: relative;
  z-index: 1;
  justify-self: center;
  width: 135px;
  height: 150px;
  max-height: none;
  object-fit: contain;
  filter: drop-shadow(0 12px 14px rgba(49, 63, 35, .12));
}

:is(.empty-layout, .claim-layout, .follow-layout, .operator-layout, .review-layout) {
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 20px;
}

:is(
  .empty-card, .empty-side, .suggestion-card, .state-row, .mini-listing,
  .claim-card, .claim-side, .claim-step, .claim-status, .claim-note,
  .follow-card, .follow-side, .saved-card, .pref-row, .update-card, .confirm-card,
  .op-card, .check-card, .side-panel, .metric-card, .table-panel,
  .review-card, .review-side, .review-step, .review-photo, .review-status, .review-listing-mini
) {
  border-color: var(--v2-line);
  border-radius: 17px;
  background: var(--v2-paper);
  box-shadow: 0 8px 22px rgba(38, 64, 31, .055);
}

:is(.empty-card, .empty-side, .claim-card, .claim-side, .follow-card, .follow-side, .confirm-card, .op-card, .side-panel, .table-panel, .review-card, .review-side) {
  padding: 21px;
}

:is(.empty-card, .empty-side, .claim-card, .claim-side, .follow-card, .follow-side, .confirm-card, .op-card, .side-panel, .table-panel, .review-card, .review-side) h2 {
  color: var(--v2-ink);
  font: 700 23px/1.12 Georgia, serif;
  letter-spacing: -.015em;
}

:is(.empty-card, .empty-side, .claim-card, .claim-side, .follow-card, .follow-side, .confirm-card, .op-card, .side-panel, .review-card, .review-side) > p {
  color: var(--v2-muted);
  font-size: 12px;
  line-height: 1.55;
  font-weight: 400;
}

:is(.state-row, .claim-step, .claim-status, .review-step, .review-status, .pref-row, .check-card) {
  border-radius: 14px;
  box-shadow: none;
}

:is(.state-row, .claim-step, .claim-status, .review-step, .review-status) > span {
  color: var(--v2-green);
  border-color: #d7e2c8;
  background: var(--v2-sage);
}

:is(.state-row, .claim-step, .claim-status, .review-step, .review-status) h3 {
  color: var(--v2-ink);
  font: 700 14px/1.25 Georgia, serif;
}

:is(.state-row, .claim-step, .claim-status, .review-step, .review-status) p {
  color: var(--v2-muted);
  font-weight: 400;
}

:is(.claim-field, .review-field) { gap: 6px; }
:is(.claim-field, .review-field) label,
.rating-row label { color: var(--v2-ink); font-size: 12px; font-weight: 700; }

:is(.claim-field, .review-field) :is(input, textarea, select),
.rating-row select {
  min-height: 46px;
  padding: 10px 12px;
  border: 1px solid #d7decf;
  border-radius: 11px;
  color: #2f3d32;
  background: #fff;
  font-size: 13px;
  font-weight: 400;
  outline: none;
}

:is(.claim-field, .review-field) :is(input, textarea, select):focus,
.rating-row select:focus {
  border-color: #77965d;
  box-shadow: 0 0 0 3px rgba(99, 139, 40, .12);
}

:is(.claim-field, .review-field) small { color: var(--v2-muted); font-weight: 400; }
.claim-form, .review-form { gap: 14px; }

:is(.empty-button, .claim-button, .follow-button, .op-button, .review-button) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 6px 15px;
  border-color: #cfd9c5;
  border-radius: 10px;
  color: var(--v2-green);
  background: #fff;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
}

:is(.empty-button, .claim-button, .follow-button, .op-button, .review-button).primary {
  color: #fff;
  border-color: var(--v2-green);
  background: var(--v2-green);
}

.operator-actions { gap: 8px; margin-top: 17px; }
.metric-grid { gap: 12px; }
.metric-card { padding: 15px; border-radius: 14px; box-shadow: none; }
.metric-card strong { color: var(--v2-ink); font: 700 22px Georgia, serif; }
.metric-card span { color: var(--v2-muted); font-weight: 400; }

.empty-page .empty-layout { grid-template-columns: minmax(0, 1fr) 310px; }
.empty-page .empty-card h2:not(:first-child) { margin-top: 24px; }
.empty-page .state-list { gap: 9px; }
.empty-page .state-row { padding: 14px; background: #fbfcf6; }
.empty-page .empty-actions { margin-top: 17px; }

.claim-page .claim-card,
.review-page .review-card { min-width: 0; }
.claim-page .claim-note,
.review-page .mouse-note { background: linear-gradient(125deg, #fff7e8, #edf3df); }

.follow-page .saved-card { border-radius: 16px; }
.follow-page .follow-tab.active { border-color: var(--v2-green); background: var(--v2-green); }

/* The public three-step submission keeps its information architecture, but uses the new shell. */
.submission-page .submission-shell { max-width: 1150px; }
.submission-page .submission-hero { margin-bottom: 15px; }
.submission-page .submission-promises { color: var(--v2-green); font-size: 11px; }
.submission-page .submission-progress {
  margin-bottom: 18px;
  padding: 7px;
  border-color: var(--v2-line);
  border-radius: 17px;
  background: var(--v2-paper);
  box-shadow: 0 8px 22px rgba(38, 64, 31, .05);
}
.submission-page .submission-progress a { border-radius: 11px; }
.submission-page .submission-progress span,
.submission-page .submission-card-head > span { color: #fff; background: var(--v2-green); }
.submission-page .submission-layout { grid-template-columns: minmax(0, 1fr) 275px; gap: 18px; }
.submission-page .submission-main { gap: 17px; }
.submission-page .submission-card { padding: 23px; border-radius: 18px; }
.submission-page .submission-card-head { margin-bottom: 20px; padding-bottom: 16px; border-color: var(--v2-line); }
.submission-page .submission-card-head h2 { color: var(--v2-ink); font: 700 22px/1.15 Georgia, serif; }
.submission-page .submission-card-head p { color: var(--v2-orange); }
.submission-page .source-guide > div,
.submission-page .duplicate-hint,
.submission-page .submission-optional,
.submission-page .photo-upload,
.submission-page .role-option,
.submission-page .terms-option {
  border-color: var(--v2-line);
  border-radius: 13px;
  background: #fbfcf7;
}
.submission-page .source-guide > div:first-child { border-color: #c7d6b3; background: var(--v2-sage); }
.submission-page .feature-option span { border-color: var(--v2-line); background: #fff; }
.submission-page .feature-option input:checked + span { border-color: var(--v2-green); background: var(--v2-sage); color: var(--v2-green); }
.submission-page .submission-aside { top: 94px; gap: 13px; }
.submission-page :is(.submission-summary, .submission-info) { padding: 18px; border-color: var(--v2-line); border-radius: 17px; background: var(--v2-paper); box-shadow: 0 8px 22px rgba(38, 64, 31, .055); }
.submission-page .submission-summary h2,
.submission-page .submission-info h2 { color: var(--v2-ink); font-family: Georgia, serif; }

:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .site-footer {
  max-width: none;
  margin-top: 42px;
  padding: 32px max(24px, calc((100% - 1102px) / 2)) 38px;
  color: #dfe9d6;
  background: var(--v2-ink);
}

:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .site-footer > strong { color: #fff; font: 700 21px Georgia, serif; }
:is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .site-footer nav { flex-wrap: wrap; justify-content: flex-end; font-size: 11px; }

@media (max-width: 920px) {
  :is(.empty-layout, .claim-layout, .follow-layout, .operator-layout, .review-layout),
  .empty-page .empty-layout,
  .submission-page .submission-layout { grid-template-columns: 1fr; }
  .submission-page .submission-aside { position: static; }
}

@media (max-width: 720px) {
  :is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .site-header {
    width: 100%;
    min-height: 66px;
    padding: 7px 12px;
  }
  :is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .brand img { width: 42px; height: 42px; }
  :is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .brand strong { font-size: 19px; }
  :is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .brand small { font-size: 7px; }

  :is(.empty-shell, .claim-shell, .follow-shell, .operator-shell, .review-shell) {
    width: calc(100% - 24px);
    padding-top: 12px;
    padding-bottom: 42px;
  }

  :is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) {
    grid-template-columns: minmax(0, 1fr) 72px;
    gap: 10px;
    min-height: 0;
    margin-bottom: 14px;
    padding: 22px 18px;
    border-radius: 20px;
  }
  :is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) h1 { font-size: clamp(31px, 9.5vw, 40px); }
  :is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) p { font-size: 12px; }
  :is(.empty-hero, .claim-hero, .follow-hero, .operator-hero, .review-hero) > img { display: block; width: 70px; height: 92px; }

  :is(.empty-card, .empty-side, .claim-card, .claim-side, .follow-card, .follow-side, .confirm-card, .op-card, .side-panel, .table-panel, .review-card, .review-side) { padding: 17px; }
  :is(.empty-card, .empty-side, .claim-card, .claim-side, .follow-card, .follow-side, .confirm-card, .op-card, .side-panel, .table-panel, .review-card, .review-side) h2 { font-size: 21px; }
  :is(.empty-actions, .claim-actions, .operator-actions, .review-actions) { width: 100%; }
  :is(.empty-actions, .claim-actions, .operator-actions, .review-actions) > :is(a, button, form) { flex: 1 1 auto; }
  :is(.empty-actions, .claim-actions, .operator-actions, .review-actions) form > button { width: 100%; }

  .submission-page .submission-progress a { grid-template-columns: 30px 1fr; min-height: 54px; padding: 7px; column-gap: 7px; }
  .submission-page .submission-progress span { width: 30px; height: 30px; }
  .submission-page .submission-progress small { display: none; }
  .submission-page .submission-card { padding: 18px; }
  .submission-page .submission-card-head { grid-template-columns: 38px 1fr; gap: 10px; }
  .submission-page .submission-card-head > span { width: 38px; height: 38px; }
  .submission-page .source-guide { grid-template-columns: 1fr; }
  .submission-page .location-grid,
  .submission-page .grid-2 { grid-template-columns: 1fr; }
  .submission-page .submission-submit { grid-template-columns: 1fr; }
  .submission-page .submission-submit button { width: 100%; min-width: 0; }

  :is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .site-footer {
    align-items: flex-start;
    flex-direction: column;
    gap: 18px;
    margin-top: 28px;
  }
  :is(.empty-page, .claim-page, .follow-page, .operator-page, .review-page) .site-footer nav { justify-content: flex-start; gap: 12px; }
}
