:root {
  --favorites-ink: #12211d;
  --favorites-text: #344b44;
  --favorites-muted: #687a74;
  --favorites-line: #d5e1dc;
  --favorites-soft: #f2f7f4;
  --favorites-paper: #ffffff;
  --favorites-green: #2f7869;
  --favorites-green-dark: #205f53;
  --favorites-warm: #8a6500;
}

* { box-sizing: border-box; }
html { background: #f7faf8; }
body.favorites-page { max-width: 100%; margin: 0; overflow-x: clip; color: var(--favorites-text); background: #f7faf8; letter-spacing: 0; }
.favorites-page button,
.favorites-page input,
.favorites-page select { font: inherit; letter-spacing: 0; }
.favorites-page .marketplace-public-header { position: sticky; top: 0; z-index: 30; border-bottom: 1px solid var(--favorites-line); background: rgba(255, 255, 255, 0.98); }
.favorites-page .mobile-nav-toggle { display: none !important; }
.favorites-page .marketplace-header-tool[aria-current="page"] { color: var(--favorites-green-dark); background: #e9f2ee; }
.favorites-login { display: inline-flex; min-height: 42px; align-items: center; gap: 7px; border-radius: 8px; padding: 9px 14px; color: #fff; background: var(--favorites-green); font-weight: 800; text-decoration: none; }
.favorites-login img { filter: brightness(0) invert(1); }

.favorites-personal-nav { display: flex; width: min(1380px, calc(100% - 48px)); min-height: 52px; align-items: stretch; gap: 4px; margin: 0 auto; overflow-x: auto; border-bottom: 1px solid var(--favorites-line); scrollbar-width: none; }
.favorites-personal-nav::-webkit-scrollbar { display: none; }
.favorites-personal-nav a { position: relative; display: inline-flex; min-height: 52px; align-items: center; flex: 0 0 auto; padding: 10px 16px; color: var(--favorites-muted); font-size: 14px; font-weight: 800; text-decoration: none; white-space: nowrap; }
.favorites-personal-nav a[aria-current="page"] { color: var(--favorites-ink); }
.favorites-personal-nav a[aria-current="page"]::after { position: absolute; right: 16px; bottom: -1px; left: 16px; height: 3px; background: var(--favorites-green); content: ""; }

.favorites-main { width: min(1380px, calc(100% - 48px)); min-height: 640px; margin: 0 auto; padding: 30px 0 64px; }
.favorites-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; }
.favorites-heading p { margin: 0 0 5px; color: var(--favorites-green-dark); font-size: 12px; font-weight: 850; text-transform: uppercase; }
.favorites-heading h1 { margin: 0; color: var(--favorites-ink); font-size: 34px; line-height: 1.08; }
.favorites-heading span { display: block; margin-top: 8px; color: var(--favorites-muted); font-size: 14px; }
.favorites-page .button { display: inline-flex; min-height: 42px; align-items: center; justify-content: center; border: 1px solid var(--favorites-green); border-radius: 8px; padding: 9px 15px; color: var(--favorites-green-dark); background: #fff; font-weight: 800; text-decoration: none; }
.favorites-page .button.primary { color: #fff; background: var(--favorites-green); }
.favorites-page .button:hover { border-color: var(--favorites-green-dark); }
.favorites-page .button.primary:hover { background: var(--favorites-green-dark); }

.favorites-controls { display: grid; grid-template-columns: minmax(260px, 1fr) 250px auto; align-items: end; gap: 12px; margin-top: 24px; border: 1px solid var(--favorites-line); border-radius: 8px; padding: 12px; background: var(--favorites-paper); }
.favorites-controls label { min-width: 0; }
.favorites-controls label > span:first-child { display: block; margin-bottom: 6px; color: var(--favorites-muted); font-size: 11px; font-weight: 800; }
.favorites-controls :is(input[type="search"], select) { width: 100%; min-height: 44px; border: 1px solid #bfd1ca; border-radius: 8px; padding: 9px 12px; color: var(--favorites-ink); background: #fff; }
.favorites-availability { display: flex; min-height: 44px; align-items: center; gap: 9px; padding: 8px 12px; }
.favorites-availability input { width: 38px; height: 22px; margin: 0; accent-color: var(--favorites-green); }
.favorites-availability span { margin: 0 !important; color: var(--favorites-ink) !important; font-size: 13px !important; white-space: nowrap; }

.favorites-selection { display: flex; min-height: 58px; align-items: center; gap: 16px; margin-top: 12px; border-block: 1px solid var(--favorites-line); padding: 8px 0; }
.favorites-selection label { display: flex; align-items: center; gap: 8px; color: var(--favorites-ink); font-size: 13px; font-weight: 750; }
.favorites-selection input { width: 18px; height: 18px; accent-color: var(--favorites-green); }
.favorites-selection strong { margin-right: auto; color: var(--favorites-muted); font-size: 13px; }
.favorites-selection .button[aria-disabled="true"] { pointer-events: none; opacity: 0.45; }
.favorites-clear { min-height: 40px; border: 0; padding: 8px 4px; color: var(--favorites-green-dark); background: transparent; font-weight: 800; cursor: pointer; }

.favorites-state { margin-top: 14px; }
.favorites-state:empty { display: none; }
.favorites-state > div { display: flex; align-items: center; justify-content: space-between; gap: 16px; border: 1px solid var(--favorites-line); border-radius: 8px; padding: 12px 14px; background: #fff; }
.favorites-state p { margin: 0; font-size: 13px; }
.favorites-state button { min-height: 36px; border: 1px solid var(--favorites-line); border-radius: 8px; padding: 7px 11px; color: var(--favorites-green-dark); background: #fff; font-weight: 800; }

.favorites-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.favorites-loading,
.favorites-empty { grid-column: 1 / -1; min-height: 280px; margin: 0; border: 1px solid var(--favorites-line); border-radius: 8px; padding: 42px; background: #fff; }
.favorites-empty { display: grid; place-content: center; justify-items: start; }
.favorites-empty h2 { margin: 0; color: var(--favorites-ink); font-size: 24px; }
.favorites-empty p { max-width: 620px; margin: 8px 0 18px; color: var(--favorites-muted); }

.favorite-card { position: relative; display: grid; min-width: 0; overflow: hidden; border: 1px solid var(--favorites-line); border-radius: 8px; background: #fff; }
.favorite-card.is-unavailable { background: #fbfcfb; }
.favorite-card-media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: #e7eeea; }
.favorite-card-media > a { display: block; height: 100%; }
.favorite-card-media > a > img { width: 100%; height: 100%; object-fit: cover; object-position: center 22%; }
.favorite-card-heart { position: absolute; top: 10px; right: 10px; display: grid; width: 38px; height: 38px; min-height: 38px; place-items: center; border: 1px solid var(--favorites-green); border-radius: 50%; padding: 0; background: var(--favorites-green); cursor: pointer; }
.favorite-card-heart[aria-pressed="true"],
.favorite-card-heart.is-selected { border-color: var(--favorites-green); background: var(--favorites-green); }
.favorite-card-heart img { width: 19px; height: 19px; filter: brightness(0) invert(1); }
.favorite-card-compare { position: absolute; right: 10px; bottom: 10px; display: flex; align-items: center; gap: 7px; border-radius: 8px; padding: 7px 9px; color: var(--favorites-ink); background: rgba(255, 255, 255, 0.96); font-size: 12px; font-weight: 800; }
.favorite-card-compare input { width: 17px; height: 17px; margin: 0; accent-color: var(--favorites-green); }
.favorite-card-body { display: grid; min-width: 0; align-content: start; padding: 14px; }
.favorite-card-rating { display: flex; align-items: baseline; gap: 6px; margin: 0; color: var(--favorites-warm); font-size: 12px; }
.favorite-card-rating span { color: var(--favorites-muted); }
.favorite-card h2 { margin: 7px 0 3px; overflow-wrap: anywhere; color: var(--favorites-ink); font-size: 19px; line-height: 1.12; }
.favorite-card-method { min-height: 34px; margin: 0; color: var(--favorites-muted); font-size: 12px; line-height: 1.35; }
.favorite-card-offer { display: flex; align-items: baseline; gap: 5px; margin: 12px 0 0; color: var(--favorites-ink); }
.favorite-card-offer strong { font-size: 18px; }
.favorite-card-offer span { color: var(--favorites-muted); font-size: 12px; }
.favorite-card-topics { display: flex; min-height: 54px; align-content: flex-start; flex-wrap: wrap; gap: 5px; margin: 12px 0 0; padding: 0; list-style: none; }
.favorite-card-topics li { border-radius: 6px; padding: 5px 7px; color: #294a42; background: #edf4f1; font-size: 10px; }
.favorite-card-availability { min-height: 44px; margin: 12px 0 0; border-top: 1px solid var(--favorites-line); padding-top: 10px; color: var(--favorites-green-dark); font-size: 11px; font-weight: 800; line-height: 1.35; }
.favorite-card.is-unavailable .favorite-card-availability { color: #855f00; }
.favorite-card-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-top: 12px; }
.favorite-card-actions .button { min-height: 40px; padding: 8px 10px; font-size: 12px; }
.favorite-card-actions .button.full { grid-column: 1 / -1; }

.favorites-removed { position: fixed; right: 20px; bottom: 20px; z-index: 80; display: flex; max-width: min(440px, calc(100% - 32px)); align-items: center; gap: 14px; border: 1px solid #b9cec5; border-radius: 8px; padding: 12px 14px; color: var(--favorites-ink); background: #fff; box-shadow: 0 12px 34px rgba(18, 45, 38, 0.16); }
.favorites-removed[hidden] { display: none; }
.favorites-removed strong { margin-right: auto; font-size: 13px; }
.favorites-removed button { min-height: 36px; border: 1px solid var(--favorites-green); border-radius: 8px; padding: 7px 10px; color: var(--favorites-green-dark); background: #fff; font-weight: 800; }
.favorites-safety,
.favorites-footer { width: min(1380px, calc(100% - 48px)); margin: 0 auto; border-top: 1px solid var(--favorites-line); padding: 24px 0; }
.favorites-safety { display: flex; justify-content: space-between; gap: 20px; }
.favorites-safety a,
.favorites-footer a { color: var(--favorites-green-dark); }
.favorites-footer { display: flex; min-height: 130px; justify-content: space-between; gap: 30px; }
.favorites-footer div { display: grid; align-content: start; gap: 8px; }
.favorites-footer small { color: var(--favorites-muted); }
.favorites-footer nav { display: flex; align-content: start; flex-wrap: wrap; justify-content: flex-end; gap: 14px; }
.favorites-footer button { align-self: start; border: 0; padding: 0; color: var(--favorites-text); background: transparent; }

@media (max-width: 1100px) {
  .favorites-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 780px) {
  .favorites-personal-nav,
  .favorites-main,
  .favorites-safety,
  .favorites-footer { width: calc(100% - 24px); }
  .favorites-heading { align-items: start; }
  .favorites-heading h1 { font-size: 29px; }
  .favorites-controls { grid-template-columns: minmax(0, 1fr) minmax(190px, 0.7fr); }
  .favorites-availability { grid-column: 1 / -1; }
  .favorites-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .favorites-selection { flex-wrap: wrap; }
  .favorites-selection strong { margin-right: 0; }
  .favorites-selection .button { margin-left: auto; }
}

@media (max-width: 520px) {
  .favorites-page .marketplace-public-header :is(.marketplace-header-tool, .favorites-login) { width: 44px; min-height: 44px; }
  .favorites-page .site-header .brand { min-height: 44px; white-space: nowrap; font-size: 15px; }
  .favorites-page .site-header .brand::before { width: 26px; height: 26px; flex-basis: 26px; }
  .favorites-page .marketplace-primary-nav a { min-height: 44px; }
  .favorites-login span { display: none; }
  .favorites-login { width: 44px; padding: 9px; justify-content: center; }
  .favorites-main { padding-top: 18px; }
  .favorites-heading { display: grid; }
  .favorites-heading h1 { font-size: 24px; }
  .favorites-heading .button { justify-self: start; }
  .favorites-page .button,
  .favorites-clear,
  .favorites-state button,
  .favorites-removed button { min-height: 44px; }
  .favorites-controls { grid-template-columns: 1fr; gap: 9px; margin-top: 18px; padding: 10px; }
  .favorites-availability { grid-column: auto; }
  .favorites-availability,
  .favorites-selection label { min-height: 44px; }
  .favorites-selection { display: grid; grid-template-columns: 1fr auto; gap: 7px 10px; }
  .favorites-selection strong { text-align: right; }
  .favorites-selection input { width: 20px; height: 20px; }
  .favorites-selection .button,
  .favorites-selection .favorites-clear { width: 100%; margin: 0; }
  .favorites-grid { grid-template-columns: 1fr; }
  .favorite-card { grid-template-columns: clamp(116px, 32vw, 130px) minmax(0, 1fr); min-height: 218px; }
  .favorite-card-media { min-height: 100%; aspect-ratio: auto; }
  .favorite-card-heart { top: 7px; right: 7px; width: 44px; height: 44px; min-height: 44px; }
  .favorite-card-compare { right: 7px; bottom: 7px; width: 44px; min-height: 44px; justify-content: center; padding: 6px; }
  .favorite-card-compare span { display: none; }
  .favorite-card-compare input { width: 20px; height: 20px; }
  .favorite-card-body { padding: 9px 10px 10px; }
  .favorite-card-rating { font-size: 10px; }
  .favorite-card h2 { display: -webkit-box; overflow: hidden; margin: 4px 0 2px; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: 16px; line-height: 1.1; }
  .favorite-card-method { display: -webkit-box; min-height: 0; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: 10px; line-height: 1.3; }
  .favorite-card-offer { margin-top: 7px; }
  .favorite-card-offer strong { font-size: 16px; }
  .favorite-card-offer span { font-size: 10px; }
  .favorite-card-topics { min-height: 0; gap: 4px; margin-top: 7px; }
  .favorite-card-topics li { padding: 4px 6px; font-size: 9px; }
  .favorite-card-topics li:nth-child(n+3) { display: none; }
  .favorite-card-availability { display: -webkit-box; min-height: 34px; overflow: hidden; margin-top: 7px; padding-top: 7px; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: 10px; line-height: 1.25; }
  .favorite-card-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin-top: 7px; }
  .favorite-card-actions .button { min-width: 0; min-height: 44px; padding: 7px 5px; font-size: 10px; line-height: 1.15; text-align: center; }
  .favorite-card-actions .button.full { grid-column: 1 / -1; }
  .favorites-empty { min-height: 230px; padding: 28px 20px; }
  .favorites-removed { right: 8px; bottom: max(8px, env(safe-area-inset-bottom)); left: 8px; max-width: none; }
  .favorites-safety,
  .favorites-footer { display: grid; }
  .favorites-footer nav { justify-content: flex-start; }
}

@media (max-width: 340px) {
  .favorites-personal-nav,
  .favorites-main,
  .favorites-safety,
  .favorites-footer { width: calc(100% - 16px); }
  .favorite-card { grid-template-columns: 108px minmax(0, 1fr); }
  .favorite-card-method { -webkit-line-clamp: 1; }
  .favorite-card-offer { display: flex; gap: 4px; }
  .favorite-card-topics li { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .favorite-card-topics li:nth-child(n+2) { display: none; }
  .favorite-card-actions .button { font-size: 9px; }
}

.favorites-page :is(button, a, input, select):focus-visible {
  outline: 3px solid rgba(47, 120, 105, 0.34);
  outline-offset: 2px;
}
