.card-image {
  position: relative;
  background-position: center;
  background-size: cover;
}
.favorite {
  position: absolute;
  right: 13px;
  top: 13px;
  width: 39px;
  height: 39px;
  border: 0;
  border-radius: 50%;
  background: #fff;
  color: #a8afa8;
  font-size: 20px;
  box-shadow: 0 5px 18px #0002;
}
.favorite.active {
  color: #e14d55;
}
.detail-image {
  width: calc(100% + 70px);
  height: 260px;
  margin: -35px -35px 28px;
  object-fit: cover;
}
.owner-note {
  padding: 14px;
  border-radius: 10px;
  background: #eef1e5;
  color: var(--muted);
}
#review-form {
  margin-top: 28px;
  padding-top: 22px;
  border-top: 1px solid var(--line);
}
#review-form select,
#review-form textarea {
  display: block;
  width: 100%;
  margin-top: 7px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: white;
}
#review-form textarea {
  min-height: 110px;
  resize: vertical;
}
.reviews article {
  padding: 20px 0;
  border-bottom: 1px solid var(--line);
}
.reviews article > b {
  color: var(--orange);
}
.owner-reply {
  margin-top: 12px;
  padding: 13px;
  border-left: 3px solid var(--olive);
  background: #f0f3e9;
}
.reply-form {
  display: flex;
  gap: 8px;
  margin-top: 12px;
}
.reply-form input {
  margin: 0;
}
.reply-form button {
  border: 0;
  border-radius: 8px;
  background: var(--green);
  color: white;
  font-weight: 700;
}
.user-trigger em {
  padding: 4px 7px;
  border-radius: 999px;
  background: #dcebb2;
  color: var(--deep);
  font-size: 9px;
  font-style: normal;
  text-transform: uppercase;
}
.results-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.results-bar select {
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: white;
  color: var(--deep);
}
.distance {
  display: block;
  color: var(--olive);
  font-weight: 700;
}
.owned-actions {
  display: flex;
  gap: 7px;
}
.owned-actions button {
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: white;
}
.owned-actions .danger {
  color: #a73535;
}
.active-plan {
  display: inline-flex;
  gap: 8px;
  margin: 12px 0 8px;
  padding: 9px 12px;
  border-radius: 9px;
  background: #eef1e5;
}
#profile-favorites {
  display: grid;
  gap: 8px;
  margin-top: 24px;
}
#profile-favorites button {
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: white;
  text-align: left;
}
#profile-favorites small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
}
.map-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
}
.required-note {
  color: var(--orange);
  font-size: 11px;
}
.dashboard fieldset {
  margin: 22px 0;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 13px;
}
.dashboard legend {
  padding: 0 7px;
  font-weight: 800;
}
.amenity-options {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.amenity-options label {
  margin: 0;
  font-weight: 500;
}
.amenity-options input {
  width: auto;
  margin: 0;
}
.hours-editor {
  display: grid;
  gap: 8px;
}
.hours-editor > div {
  display: grid;
  grid-template-columns: 1fr 110px auto 110px;
  align-items: center;
  gap: 8px;
}
.hours-editor label {
  margin: 0;
}
.hours-editor input {
  margin: 0;
}
.form-actions {
  display: flex;
  gap: 10px;
}
.form-actions .solid {
  width: auto;
}
@media (max-width: 600px) {
  .user-trigger em {
    display: none;
  }
  .results-bar {
    align-items: flex-start;
    gap: 10px;
  }
  .amenity-options {
    grid-template-columns: 1fr 1fr;
  }
  .hours-editor > div {
    grid-template-columns: 1fr 1fr;
  }
  .hours-editor > div span {
    display: none;
  }
  .owned-list article {
    display: block;
  }
  .owned-actions {
    margin-top: 12px;
  }
  .map-toolbar {
    display: block;
  }
}
.image-gallery {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin: 14px 0;
}
.image-gallery figure {
  position: relative;
  overflow: hidden;
  margin: 0;
  aspect-ratio: 4/3;
  border-radius: 11px;
  background: #eef1e5;
}
.image-gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.image-gallery figure button {
  position: absolute;
  right: 6px;
  top: 6px;
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 50%;
  background: #fff;
  color: #a73535;
  font-size: 18px;
}
.image-gallery.compact {
  max-width: 130px;
  grid-template-columns: 1fr;
}
.detail-gallery {
  grid-template-columns: repeat(2, 1fr);
}
.detail-gallery figure:first-child {
  grid-column: 1/-1;
  aspect-ratio: 16/7;
}
.review-images {
  grid-template-columns: repeat(2, minmax(0, 180px));
}
.review-images figure {
  aspect-ratio: 1;
}
.form-grid label small {
  display: block;
  margin-top: 6px;
  color: var(--muted);
  font-weight: 500;
}
.media-manager,
.review-media-manager {
  margin: 24px 0;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #f8faf3;
}
.media-manager h4,
.review-media-manager h4 {
  margin: 0 0 5px;
}
.media-manager p,
.review-media-manager p {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 12px;
}
.upload-box {
  display: inline-block;
  margin: 8px 0;
  padding: 11px 15px;
  border: 1px solid var(--green);
  border-radius: 9px;
  background: white;
  color: var(--green);
  font-weight: 800;
  cursor: pointer;
}
.upload-box input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.review-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.review-actions button {
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: white;
}
.review-actions .danger {
  color: #a73535;
}
.selected-images {
  display: block;
  color: var(--olive);
  font-size: 12px;
  font-weight: 700;
}
.visible-file-input {
  display: block;
  width: 100%;
  margin: 12px 0;
  padding: 11px;
  border: 1px dashed var(--olive);
  border-radius: 10px;
  background: white;
}
.open-review-composer {
  max-width: 280px;
  margin: 26px 0 10px;
}
.review-modal {
  z-index: 70;
}
.review-composer {
  width: min(920px, 96vw);
  max-height: 96vh;
  padding: 42px 54px 34px;
  border-radius: 28px;
  background: #fffdf8;
}
.review-composer h2 {
  margin: 0 0 22px;
  color: var(--deep);
  font: 500 44px/1 Georgia, serif;
}
.review-close {
  width: 52px;
  height: 52px;
  right: 30px;
  top: 26px;
  border-radius: 50%;
  background: #f1f1e9;
  font-size: 30px;
}
.review-restaurant-summary {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 0 0 24px;
  border-bottom: 1px solid var(--line);
}
.review-restaurant-summary img,
.review-restaurant-placeholder {
  width: 78px;
  height: 78px;
  flex: 0 0 78px;
  border-radius: 18px;
  object-fit: cover;
}
.review-restaurant-placeholder {
  display: grid;
  place-items: center;
  background: #e8ebdf;
  font: 600 30px Georgia, serif;
}
.review-restaurant-summary strong {
  font-size: 20px;
}
.review-restaurant-summary p {
  margin: 9px 0 0;
  color: var(--muted);
}
.review-restaurant-summary p span {
  margin-right: 8px;
  color: var(--olive);
  font-size: 21px;
}
.review-step {
  margin-top: 30px;
}
.review-step h3 {
  margin: 0 0 5px;
  color: #192620;
  font-size: 18px;
}
.review-step h3 small {
  color: var(--muted);
  font-weight: 400;
}
.review-step > p {
  margin: 0 0 14px;
  color: var(--muted);
}
.star-rating {
  display: flex;
  width: min(490px, 100%);
  align-items: center;
  justify-content: space-between;
  padding: 15px 20px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: #fafaf5;
}
.review-stars {
  display: flex;
}
.review-stars button {
  padding: 0 3px;
  border: 0;
  background: transparent;
  color: #7a8d58;
  font-size: 43px;
  line-height: 1;
}
.review-stars button.active {
  color: #728e52;
}
.star-rating > div:last-of-type {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #53603c;
}
.star-rating strong {
  font-size: 24px;
}
.review-text-wrap {
  position: relative;
}
.review-text-wrap textarea {
  width: 100%;
  min-height: 150px;
  padding: 18px 20px 38px;
  resize: vertical;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: white;
}
.review-text-wrap span {
  position: absolute;
  right: 18px;
  bottom: 14px;
  color: var(--muted);
  font-size: 12px;
}
.review-photo-picker {
  display: flex;
  gap: 16px;
  overflow-x: auto;
}
.review-photo-picker figure,
.add-review-photo {
  position: relative;
  width: 174px;
  height: 154px;
  flex: 0 0 174px;
  margin: 0;
  overflow: hidden;
  border-radius: 16px;
}
.review-photo-picker figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.review-photo-picker figure button {
  position: absolute;
  right: 8px;
  top: 8px;
  width: 30px;
  height: 30px;
  border: 0;
  border-radius: 50%;
  background: white;
  font-size: 20px;
}
.add-review-photo {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 5px;
  border: 1px dashed #aeb5a7;
  background: #fafaf5;
  color: var(--deep);
}
.add-review-photo span {
  font-size: 36px;
  line-height: 1;
}
.review-help {
  display: block;
  margin-top: 10px;
  color: var(--muted);
}
.review-amenity-votes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.amenity-vote-option {
  display: grid;
  grid-template-columns: 43px 1fr 30px;
  align-items: center;
  gap: 10px;
  min-height: 70px;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  color: var(--deep);
  text-align: left;
}
.amenity-symbol,
.amenity-vote-option i,
.amenity-vote-legend i {
  display: grid;
  place-items: center;
  border-radius: 50%;
}
.amenity-symbol {
  width: 40px;
  height: 40px;
  background: #eef0e5;
  color: #738455;
  font-size: 21px;
}
.amenity-vote-option i {
  width: 28px;
  height: 28px;
  background: #eef0e8;
  color: white;
  font-style: normal;
}
.amenity-vote-option[data-state="confirmed"] i {
  background: #5b995b;
}
.amenity-vote-option[data-state="denied"] i {
  background: #c95a55;
}
.amenity-vote-legend {
  display: flex;
  gap: 28px;
  margin-top: 18px;
  color: var(--muted);
  font-size: 13px;
}
.amenity-vote-legend span {
  display: flex;
  align-items: center;
  gap: 8px;
}
.amenity-vote-legend i {
  width: 22px;
  height: 22px;
  border: 2px solid #e1e3d8;
  font-style: normal;
}
.amenity-vote-legend .confirmed { border: 0; background: #5b995b; color: white; }
.amenity-vote-legend .denied { border: 0; background: #c95a55; color: white; }
.amenity-vote-option[data-state="unknown"] i {
  background: #aeb2b0;
}
.amenity-vote-legend .unknown { border: 0; background: #aeb2b0; color: white; }
.review-submit {
  width: 100%;
  margin-top: 32px;
  padding: 18px;
  border: 0;
  border-radius: 11px;
  background: linear-gradient(90deg, #244d32, #315d39);
  color: white;
  font-size: 17px;
  font-weight: 800;
}
.review-submit span {
  margin-right: 12px;
  font-size: 25px;
}
.review-submit:disabled {
  opacity: .65;
}
.review-publish-note {
  margin: 14px 0 0;
  color: var(--muted);
  text-align: center;
  font-size: 12px;
}
.plan-grid:has(article:nth-child(4)) {
  grid-template-columns: repeat(4, 1fr);
}
.dashboard .plan-grid.compact:has(article:nth-child(4)) {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
#panel-plans,
#panel-billing {
  padding-top: 0;
}
#panel-plans > .kicker,
#panel-billing > .kicker {
  margin-top: 0;
}
.subscription-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 14px 0 24px;
  padding: 16px 18px;
  border: 1px solid #dfe4d7;
  border-radius: 13px;
  background: #f4f6ee;
}
.subscription-summary span {
  color: var(--muted);
  text-align: right;
  font-size: 13px;
}
.billing-history {
  display: grid;
  gap: 10px;
  margin-top: 24px;
}
.billing-history article {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 13px;
}
.billing-history article div {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.billing-history article div:last-child {
  align-items: flex-end;
  text-align: right;
}
.billing-history span,
.billing-history small {
  color: var(--muted);
}
.premium-review-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 3px 7px;
  border-radius: 999px;
  background: #e7edd6;
  color: #566b36;
  font-size: 10px;
  font-weight: 800;
}
.checkout-result-card {
  width: min(560px, calc(100% - 32px));
  text-align: center;
}
.checkout-result-card .active-plan {
  justify-content: center;
  margin: 24px 0;
}
@media (max-width: 700px) {
  .review-composer { padding: 34px 20px 26px; border-radius: 20px; }
  .review-composer h2 { padding-right: 45px; font-size: 36px; }
  .review-close { right: 16px; top: 16px; width: 44px; height: 44px; }
  .review-amenity-votes { grid-template-columns: 1fr; }
  .amenity-vote-legend { align-items: flex-start; flex-direction: column; gap: 9px; }
  .review-stars button { font-size: 36px; }
  .star-rating { gap: 10px; padding: 13px; }
  .plan-grid:has(article:nth-child(4)),
  .plan-grid.compact:has(article:nth-child(4)) { grid-template-columns: 1fr; }
  .subscription-summary,
  .billing-history article { align-items: flex-start; flex-direction: column; }
  .subscription-summary span,
  .billing-history article div:last-child { align-items: flex-start; text-align: left; }
  .restaurant-editor-card { width: 100%; max-height: 100vh; padding: 38px 18px; border-radius: 0; }
  .profile-actions { align-items: stretch; flex-direction: column; }
}
.restaurant-editor-head {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  margin-bottom: 24px;
  padding: 18px;
  border-radius: 14px;
  background: var(--deep);
  color: white;
}
.restaurant-editor-head > span {
  padding: 6px 9px;
  border-radius: 999px;
  background: var(--lime);
  color: var(--deep);
  font-size: 10px;
  font-weight: 900;
}
.restaurant-editor-head h3 {
  margin: 0;
}
.restaurant-editor-head p {
  margin: 5px 0 0;
  color: #dce6dc;
  font-size: 12px;
}
.empty-images {
  grid-column: 1/-1;
  padding: 18px;
  border: 1px dashed var(--line);
  border-radius: 10px;
  color: var(--muted);
}
.current-plan-summary {
  margin: 16px 0 24px;
  padding: 14px;
  border-radius: 10px;
  background: #eef1e5;
}
.plan-grid.compact article p,
.plan-grid.compact article small {
  display: block;
  color: var(--muted);
  line-height: 1.45;
}
.plan-grid.compact article small {
  min-height: 38px;
  margin: 8px 0 14px;
}
@media (max-width: 600px) {
  .image-gallery {
    grid-template-columns: repeat(2, 1fr);
  }
  .detail-card {
    width: 100%;
    max-height: 98vh;
    padding: 28px 18px;
    border-radius: 20px;
  }
  .restaurant-detail-name {
    font-size: 42px;
  }
  .restaurant-gallery-thumbs button {
    flex-basis: 190px;
    height: 145px;
    border-radius: 16px;
  }
  .restaurant-reviews-section {
    padding: 22px 16px;
  }
  .restaurant-gallery-lightbox {
    inset: 1vh 2vw;
    padding: 48px 12px 18px;
    border-radius: 18px;
  }
}
