/* Local owner-review layer. Keep the existing layout, assets and CMS content. */
body.rny-theme-review {
  --rny-ink: #252b26;
  --rny-green: #1c6227;
  --rny-green-hover: #163322;
  --rny-line: #d6ddd5;
  --rny-paper: #f6f7f3;
  font-family: Lato, Arial, sans-serif;
  color: var(--rny-ink);
  line-height: 1.6;
}
.rny-theme-review :is(h1, h2, h3, .h1, .h2, .h3) {
  line-height: 1.18;
  text-wrap: balance;
}
.rny-theme-review :is(.the-content, .product-content) p { margin-bottom: 1.1rem; }
.rny-theme-review .header { border-bottom: 1px solid var(--rny-line); }
.rny-theme-review .header__nav { font-size: 1.2rem; font-weight: 700; }
.rny-theme-review .header__nav .menu > li > a { padding: .9rem .7rem; }
.rny-theme-review .header__nav .is-dropdown-submenu {
  border: 1px solid var(--rny-line);
  box-shadow: 0 6px 18px #17251a14;
}
.rny-theme-review .header__contact-phone { font-size: 1.1rem; }
.rny-theme-review .header__search {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  color: var(--rny-green);
  font-size: 1.35rem;
}
.rny-theme-review :is(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid #174b26;
  outline-offset: 3px;
  box-shadow: 0 0 0 2px #fff;
}
.rny-theme-review :is(.button, input[type="submit"]):not(:disabled):not([aria-disabled="true"]) {
  background: var(--rny-green);
  border-color: var(--rny-green);
  color: #fff;
  min-height: 44px;
  padding: .75rem 1rem;
  line-height: 1.3;
  letter-spacing: .02em;
  border-radius: 5px;
}
.rny-theme-review :is(.button, input[type="submit"]):not(:disabled):not([aria-disabled="true"]):hover {
  background: var(--rny-green-hover);
  border-color: var(--rny-green-hover);
}
.rny-theme-review .button.hollow:not(:disabled):not([aria-disabled="true"]) {
  background: #fff;
  color: var(--rny-green);
}
.rny-theme-review .button.hollow:not(:disabled):not([aria-disabled="true"]):hover { background: #edf4ed; }
.rny-theme-review :is(.button, input[type="submit"]):is(:disabled, [aria-disabled="true"]) {
  background: #d6ddd5;
  color: #525c52;
  border-color: #525c52;
  opacity: 1;
  cursor: not-allowed;
}
.rny-theme-review :is(#banner-box, .rny-home-services) .button { border-color: #d6ddd5; }
.rny-theme-review :is(.the-content, .product__price-note, #search-prompt) a {
  color: var(--rny-green);
  text-decoration: underline;
  text-underline-offset: .16em;
}
.rny-theme-review .product__card {
  border: 1px solid var(--rny-line);
  border-radius: 7px;
  background: #fff;
  box-shadow: 0 2px 6px #17251a08;
  text-decoration: none;
}
.rny-theme-review .product__card:is(:hover, :focus-visible) {
  border-color: var(--rny-green);
  box-shadow: 0 4px 14px #17251a18;
}
.rny-theme-review .product__card-content { padding: 0 1rem 1rem; gap: .6rem; }
.rny-theme-review .product__card-title { font-size: 1.18rem; line-height: 1.35; margin-bottom: .5rem; }
.rny-theme-review .product__card-img-div { margin-bottom: 1rem; }
.rny-theme-review .product__availability { font-size: .95rem; margin: .5rem 0; }
.rny-theme-review .product__card-cta { opacity: 1; transform: none; color: var(--rny-green); font-weight: 700; }
.rny-theme-review .product-content > h1.title { font-size: clamp(2rem, 3.5vw, 2.8rem); }
.rny-theme-review .product__price-note {
  border-left: 3px solid var(--rny-green);
  background: var(--rny-paper);
  padding: .85rem 1rem;
  font-size: .95rem;
  line-height: 1.6;
}
.rny-theme-review .product__actions { gap: .5rem; margin: .75rem 0 1rem; }
.rny-theme-review .product__actions .button { margin: .25rem 0; }
.rny-theme-review .product-content table th { font-size: .95rem; }
.rny-theme-review .product-content table :is(td, th) { padding: .8rem; overflow-wrap: anywhere; }
.rny-theme-review :is(.wpcf7, .product-filter__form, [role="search"]) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="hidden"]), select, textarea) {
  font: inherit;
  font-size: 1rem;
  color: var(--rny-ink);
  border: 1px solid #798477;
  border-radius: 4px;
  min-height: 44px;
  box-shadow: none;
}
.rny-theme-review .wpcf7 textarea { min-height: 8rem; }
.rny-theme-review .wpcf7-not-valid-tip { color: #a12217; line-height: 1.45; }
.rny-theme-review .wpcf7 [aria-invalid="true"] { border-color: #a12217; }
/* Existing hidden checkboxes must remain keyboard reachable. */
.rny-theme-review .product-filter__check-box.hide {
  display: inline-block !important;
  position: absolute;
  width: 1px;
  height: 1px;
  clip-path: inset(50%);
  overflow: hidden;
}
.rny-theme-review .product-filter__check-box:focus-visible + label {
  outline: 3px solid #174b26;
  outline-offset: 2px;
}
.rny-theme-review .chat-form.visible {
  border: 1px solid var(--rny-line);
  border-radius: 8px;
  box-shadow: 0 8px 28px #17251a26;
  padding: 1.25rem;
}
.rny-theme-review .chat-form__button { color: var(--rny-green); border-color: var(--rny-green); }
.rny-theme-review .chat-form__button.bounce { animation: none; }
@media (max-width: 639px) {
  .rny-theme-review .product__card-content { padding: 0 .85rem 1rem; }
  .rny-theme-review .product__actions .button { width: 100%; }
  .rny-theme-review .chat-form.visible {
    right: 12px;
    bottom: 76px;
    width: calc(100% - 24px);
    max-width: calc(100% - 24px);
    max-height: calc(100dvh - 100px);
  }
  .rny-theme-review .chat-form__button { bottom: max(1rem, env(safe-area-inset-bottom)); }
}
/* Product presentation uses the installed theme's actual structure. No content,
   DOM order, links, image loading policy or interaction behavior is replaced. */
.rny-theme-review .product__card {
  padding: 0;
  overflow: hidden;
  text-align: left;
  border-radius: 12px;
  box-shadow: 0 5px 18px #17251a0d;
}
.rny-theme-review .product__card .product__card-img-div {
  width: 100%;
  aspect-ratio: 1;
  margin: 0;
  padding: 0;
  border-radius: 0;
  overflow: hidden;
  background: #eef0e9;
}
.rny-theme-review .product__card .product__card-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 0;
  margin: 0;
}
.rny-theme-review .product__card .product__card-content {
  padding: 1.2rem;
  flex: 0 0 auto;
  justify-content: flex-start;
  gap: 1rem;
}
.rny-theme-review .product__card .product__card-title {
  font-size: 1.22rem;
  line-height: 1.4;
  margin: 0;
  color: #24372b;
}
.rny-theme-review .product__card-content > div { margin-top: 0; }
.rny-theme-review .product__prices { min-width: 0; overflow-wrap: anywhere; }
.rny-theme-review .product__prices .price { margin: 0 0 .45rem; line-height: 1.4; }
.rny-theme-review .product__prices .price:first-child { font-size: 1.3rem; color: #25372a; }
.rny-theme-review .product__prices .price--comparison:not(:first-child) { font-size: 1rem; color: #525c52; }
.rny-theme-review .product__pricing-note { font-size: .85rem; line-height: 1.5; font-weight: 400; margin: .65rem 0; }
.rny-theme-review .product__card .product__card-cta {
  display: block;
  text-align: center;
  padding: .7rem;
  margin-top: 1rem !important;
  border: 1px solid var(--rny-green);
  border-radius: 5px;
  background: var(--rny-green);
  color: #fff;
}
.rny-theme-review .product__card:is(:hover, :focus-visible) .product__card-cta {
  background: var(--rny-green-hover);
  border-color: var(--rny-green-hover);
  color: #fff;
}
/* Preserve existing banner colors and any owner-supplied per-product styling. */
.rny-theme-review .product__card-banner { position: static; width: 100%; font-size: .9rem; line-height: 1.4; padding: .55rem .9rem; }
.rny-theme-review .product__card { justify-content: flex-start; align-self: stretch; }
/* Homepage has its own featured markup; keep its original links and headings. */
.rny-theme-review .home__product { padding: 0; border: 1px solid var(--rny-line); border-radius: 12px; overflow: hidden; background: white; justify-content: flex-start; align-self: stretch; box-shadow: 0 5px 18px #17251a0d; }
.rny-theme-review .home__product > a { display: block; aspect-ratio: 1; background: #eef0e9; }
.rny-theme-review .home__product > a > img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 0; margin: 0; }
.rny-theme-review .home__product-content { padding: 1.15rem; gap: .65rem; text-align: left; align-items: stretch; flex-wrap: nowrap; justify-content: flex-start; min-width: 0; }
.rny-theme-review .home__product-content h2 { font-family: Lato, Arial, sans-serif; font-size: 1.22rem; line-height: 1.4; margin: 0; color: #24372b; }
.rny-theme-review .home__product-content .product__prices { margin: 0; }
.rny-theme-review .home__product-content > a { text-decoration: none; }
.rny-theme-review .home__product-content > a:hover { text-decoration: underline; }
/* Shared tracks align each row's optional banners, photos and card bottoms.
   Track sizes follow the real content; no copy is clipped or height capped. */
.rny-theme-review :is(.product__grid, .grid-x:has(> .home__product)) {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0 1.5rem;
  margin-left: 0;
  margin-right: 0;
}
.rny-theme-review :is(.product__card, .home__product) {
  display: grid !important; /* Override the existing flex-column utility. */
  grid-template-rows: subgrid;
  grid-row: span 3;
  row-gap: 0;
  width: auto;
  min-width: 0;
  margin: 0 0 1.5rem;
}
.rny-theme-review :is(.product__card, .home__product) > .product__card-banner { grid-row: 1; }
.rny-theme-review .product__card > .product__card-img-div,
.rny-theme-review .home__product > a { grid-row: 2; }
.rny-theme-review :is(.product__card-content, .home__product-content) { grid-row: 3; }
.rny-theme-review .product__card .product__card-content { display: flex; flex-direction: column; }
.rny-theme-review .product__card-content > div { display: flex; flex-direction: column; flex: 1; }
.rny-theme-review .product__card .product__card-cta { margin-top: auto !important; }
.rny-theme-review .product__card-content .product__prices { margin-bottom: 1rem; }
.rny-theme-review .home__product-content .product__prices { margin-top: auto; }
@media (min-width: 640px) {
  .rny-theme-review :is(.product__grid, .grid-x:has(> .home__product)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .rny-theme-review :is(.product__grid, .grid-x:has(> .home__product)) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.rny-theme-review.home .wide.featured { background: #f5f6f0; }
.rny-theme-review.home .wide.banner:has(#banner-box) { background-position: center; }
.rny-theme-review.home .wide.banner:has(#banner-box) > .content { display: grid; grid-template-columns: minmax(0,1.6fr) minmax(0,1fr); gap: 1.5rem; padding: 2rem 1.5rem; align-items: stretch; }
.rny-theme-review.home #banner-box { width: auto; max-width: none; margin: 0; padding: 2rem; border-radius: 12px; background: #163322ed; transform: none !important; }
.rny-theme-review.home #banner-box h1 { font-size: clamp(2rem,3.4vw,3.2rem); margin-bottom: 1rem; }
.rny-theme-review.home #banner-box h2 { font-size: 1.2rem; line-height: 1.5; }
.rny-theme-review.home #banner-box .button { margin: 1rem 0 0; }
.rny-theme-review .rny-home-services { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 1rem; padding: 2rem; border: 1px solid transparent; border-radius: 12px; background: #163322ed; color: #fff; }
.rny-theme-review .rny-home-services p { margin: 0; font-size: 1.3rem; }
.rny-theme-review .rny-home-services .rny-home-services__title { font-family: Anton, Impact, sans-serif; font-size: 2.6rem; line-height: 1.2; }
.rny-theme-review .rny-home-services .rny-home-services__description { font-size: 1.1rem; line-height: 1.6; }
.rny-theme-review .rny-home-services .button { margin: 1rem 0 0; }
.rny-theme-review .home__promo { padding: 2rem 0; background: #e9eee2; }
.rny-theme-review .home__promo-wrap { padding: 1.5rem; border: 1px solid #d6ddd5; border-radius: 12px; background: #fff; box-shadow: none; }
.rny-theme-review .home__promo-img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; }
.rny-theme-review .home__promo-title { font-size: 1.9rem; line-height: 1.3; }
.rny-theme-review .home__promo-copy { font-size: 1.05rem; line-height: 1.7; }
.rny-theme-review .home__promo-copy a { color: var(--rny-green); text-decoration: underline; text-underline-offset: .15em; font-weight: 700; }
@media (max-width: 800px) {
  .rny-theme-review.home #banner-box { left: 0; }
  .rny-theme-review.home .wide.banner:has(#banner-box) > .content { grid-template-columns: minmax(0,1fr); padding: 1rem; gap: 1rem; }
  .rny-theme-review.home #banner-box, .rny-theme-review .rny-home-services { padding: 1.25rem; }
  .rny-theme-review .rny-home-services .rny-home-services__title { font-size: 2rem; }
  .rny-theme-review .home__promo-wrap { padding: 1rem; }
}
.rny-theme-review nav.pagination { margin: 1.5rem 0 2rem; padding: 1.25rem; border: 1px solid var(--rny-line); border-radius: 10px; background: #edf3e9; }
.rny-theme-review nav.pagination ul.page-numbers { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .65rem; margin: 0; list-style: none; }
.rny-theme-review nav.pagination ul.page-numbers > li { margin: 0; }
.rny-theme-review nav.pagination li > .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: .65rem .9rem; margin: 0; border: 2px solid var(--rny-green); border-radius: 6px; background: #fff; color: var(--rny-green); font-size: 1rem; font-weight: 700; line-height: 1.4; text-align: center; }
.rny-theme-review nav.pagination li > :is(.current, .next, .prev) { background: var(--rny-green); color: #fff; }
.rny-theme-review nav.pagination li > .dots { border-color: transparent; background: transparent; min-width: 0; padding-inline: .2rem; }
.rny-theme-review nav.pagination a:hover { background: var(--rny-green-hover); border-color: var(--rny-green-hover); color: #fff; }
.rny-theme-review nav.pagination a:focus-visible { outline: 3px solid var(--rny-green-hover); outline-offset: 3px; }
.rny-theme-review .product-content { min-width: 0; }
.rny-theme-review .product-content > :is(.flex-row, .grid-x):first-of-type {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  padding: 1.25rem;
  background: #edf3e9;
  border: 1px solid #d5e0cf;
  border-radius: 10px;
  margin: 1.2rem 0;
}
.rny-theme-review .product-content > :is(.flex-row, .grid-x):first-of-type > .product__prices { flex: 1 1 220px; }
.rny-theme-review .product-content > :is(.flex-row, .grid-x):first-of-type .price:first-child { font-size: 1.65rem; }
.rny-theme-review .product__calc { max-width: 100%; }
.rny-theme-review .product__calc .button { white-space: normal; margin: 0; }
.rny-theme-review .product-content > :is(.flex-row, .grid-x):has(.product__info) { flex-wrap: wrap; justify-content: flex-start; gap: .75rem; margin: 1.2rem 0; }
.rny-theme-review .product-content > :is(.flex-row, .grid-x):has(.product__info) > a { flex: 1 1 190px; margin: 0; }
.rny-theme-review .product-content > p.h5 { font-family: Lato, Arial, sans-serif; font-size: 1.05rem; line-height: 1.6; padding: .85rem 0; border-bottom: 1px solid var(--rny-line); }
.rny-theme-review .product-content > .the-content { border-top: 1px solid var(--rny-line); padding-top: 1.5rem; margin-top: 2rem; }
.rny-theme-review .product-content .the-content :is(h2,h3) { font-size: 1.55rem; line-height: 1.35; margin: 1.5rem 0 .75rem; }
.rny-theme-review .product-content .the-content li { margin-bottom: .4rem; }
.rny-theme-review .product-content table { table-layout: fixed; width: 100%; border: 1px solid var(--rny-line); }
.rny-theme-review .product-content table th { background: #edf3e9; color: #25372a; }
.rny-theme-review .product-image { min-width: 0; }
.rny-theme-review .product__img { background: #edf0e9; border: 1px solid var(--rny-line); border-radius: 12px; overflow: hidden; padding: 1rem; }
.rny-theme-review .product__img-link > img { width: 100%; height: auto; aspect-ratio: 1; object-fit: contain; box-shadow: none; margin: 0; }
@media (max-width: 639px) {
  .rny-theme-review .product-content > :is(.flex-row, .grid-x):first-of-type { padding: 1rem; }
  .rny-theme-review .product-content > :is(.flex-row, .grid-x):first-of-type > * { flex-basis: 100%; width: 100%; }
  .rny-theme-review .product__calc .button { width: 100%; }
  .rny-theme-review .product-content > h1.title { font-size: 2rem; }
}
@media (prefers-reduced-motion: reduce) {
  .rny-theme-review :is(.product__card, .product__card-cta, .chat-form, .chat-form__button, .chat-form__prompt) { transition: none; animation: none; }
}