@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Inter:wght@300;400;500;600;700&display=swap");

:root {
  --color-ink: #151820;
  --color-ink-soft: #222733;
  --color-ink-veil: rgba(21, 24, 32, 0.72);
  --color-cream: #f6f2ea;
  --color-cream-deep: #efe7d8;
  --color-brass: #b8935a;
  --color-brass-ink: #7a5d34;
  --color-stone: #5c5a56;
  --color-line: rgba(21, 24, 32, 0.12);
  --color-line-light: rgba(246, 242, 234, 0.18);
  --color-white: #ffffff;
  --shadow-soft: 0 14px 40px rgba(21, 24, 32, 0.08);
  --shadow-lift: 0 24px 60px rgba(21, 24, 32, 0.16);
  --font-display: "Cormorant Garamond", "Times New Roman", Georgia, serif;
  --font-body: "Inter", "Helvetica Neue", Arial, sans-serif;
  --radius-lg: 24px;
  --radius-md: 14px;
  --radius-sm: 8px;
  --section-y: clamp(3.5rem, 7vw, 6rem);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-body);
  background: var(--color-cream);
  color: var(--color-ink);
  font-size: 1rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
  transition: color 0.2s ease;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: var(--font-display);
  color: var(--color-ink);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0 0 1rem;
}

h1 {
  font-size: clamp(2.4rem, 5vw, 4rem);
}

h2 {
  font-size: clamp(2rem, 3.6vw, 3rem);
}

h3 {
  font-size: clamp(1.4rem, 2.4vw, 1.9rem);
}

h4 {
  font-size: clamp(1.15rem, 1.8vw, 1.4rem);
}

main p {
  color: var(--color-stone);
  font-size: 1.02rem;
  line-height: 1.72;
}

.lead-soft {
  font-size: 1.15rem !important;
  color: var(--color-ink-soft);
}

main p a,
main li a,
main td a {
  color: var(--color-brass-ink);
  font-weight: 500;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

main p a:hover,
main li a:hover,
main td a:hover {
  color: var(--color-ink);
}

.section-ink p a,
.section-ink li a,
.on-dark p a,
.on-dark li a {
  color: var(--color-brass);
}

.section-ink p a:hover,
.section-ink li a:hover,
.on-dark p a:hover,
.on-dark li a:hover {
  color: var(--color-cream);
}

.section-block {
  position: relative;
  padding-top: var(--section-y);
  padding-bottom: var(--section-y);
}

.section-cream {
  background: var(--color-cream);
}

.section-cream-deep {
  background: var(--color-cream-deep);
}

.section-ink {
  background: var(--color-ink);
  color: var(--color-cream);
}

.section-ink h1,
.section-ink h2,
.section-ink h3,
.section-ink h4,
.section-ink h5,
.section-ink h6 {
  color: var(--color-cream);
}

.section-ink p {
  color: rgba(246, 242, 234, 0.85);
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-brass-ink);
  margin-bottom: 1rem;
}

.eyebrow::before {
  content: "";
  width: 24px;
  height: 1px;
  background: currentColor;
  display: inline-block;
}

.section-ink .eyebrow,
.on-dark .eyebrow {
  color: var(--color-brass);
}

.badge-brass {
  display: inline-block;
  padding: 0.35rem 0.85rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-ink);
  background: var(--color-brass);
  border-radius: 999px;
}

.btn-brass,
.btn-outline-cream,
.btn-outline-ink {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.85rem 1.6rem;
  border-radius: 999px;
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  border: 1px solid transparent;
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.btn-brass:hover,
.btn-outline-cream:hover,
.btn-outline-ink:hover {
  transform: translateY(-2px);
}

.btn-brass {
  background: var(--color-brass);
  color: var(--color-ink);
}

.btn-brass:hover {
  background: var(--color-cream);
  color: var(--color-ink);
}

.btn-outline-cream {
  background: transparent;
  color: var(--color-cream);
  border-color: rgba(246, 242, 234, 0.35);
}

.btn-outline-cream:hover {
  background: var(--color-cream);
  color: var(--color-ink);
}

.btn-outline-ink {
  background: transparent;
  color: var(--color-ink);
  border-color: var(--color-ink);
}

.btn-outline-ink:hover {
  background: var(--color-ink);
  color: var(--color-cream);
}

header.site-header {
  position: sticky;
  top: 0;
  z-index: 1040;
  background: var(--color-cream);
  border-bottom: 1px solid transparent;
  transition: background 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

header.site-header.is-scrolled {
  background: rgba(246, 242, 234, 0.96);
  backdrop-filter: blur(10px);
  box-shadow: 0 8px 24px rgba(21, 24, 32, 0.06);
  border-bottom-color: var(--color-line);
}

.site-header .navbar-brand img {
  height: 40px;
  width: auto;
}

.site-header .navbar-nav .nav-link {
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--color-ink);
  padding: 0.5rem 0.9rem;
  letter-spacing: 0.01em;
}

.site-header .navbar-nav .nav-link:hover,
.site-header .navbar-nav .nav-link:focus,
.site-header .navbar-nav .nav-link.active {
  color: var(--color-brass-ink);
}

.site-header .header-contact {
  font-size: 0.85rem;
  color: var(--color-stone);
}

.site-header .header-contact a {
  color: var(--color-stone);
}

.site-header .header-contact a:hover {
  color: var(--color-brass-ink);
}

.site-header .navbar-toggler {
  border: 1px solid var(--color-line);
  padding: 0.4rem 0.7rem;
  border-radius: var(--radius-sm);
  color: var(--color-ink);
}

.site-header .navbar-toggler:focus {
  box-shadow: 0 0 0 3px rgba(184, 147, 90, 0.2);
}

footer.site-footer {
  background: var(--color-ink);
  color: var(--color-cream);
  padding-top: clamp(3rem, 6vw, 5rem);
  padding-bottom: 2rem;
}

footer.site-footer h4,
footer.site-footer h5 {
  color: var(--color-cream);
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 600;
  margin-bottom: 1rem;
  letter-spacing: 0;
}

footer.site-footer p,
footer.site-footer li,
footer.site-footer a {
  color: rgba(246, 242, 234, 0.78);
  font-size: 0.92rem;
}

footer.site-footer a:hover {
  color: var(--color-brass);
}

footer.site-footer .footer-bottom {
  border-top: 1px solid var(--color-line-light);
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  font-size: 0.85rem;
  color: rgba(246, 242, 234, 0.65);
}

footer.site-footer .footer-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid var(--color-line-light);
  color: var(--color-cream);
  margin-right: 0.5rem;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

footer.site-footer .footer-social a:hover {
  background: var(--color-brass);
  color: var(--color-ink);
  border-color: var(--color-brass);
}

.hero-slider {
  position: relative;
  background: var(--color-ink);
}

.hero-slider .carousel-item {
  height: 88vh;
  min-height: 560px;
  background-size: cover;
  background-position: center;
  position: relative;
}

.hero-slider .hero-slider__content {
  position: relative;
  z-index: 2;
  height: 100%;
  display: flex;
  align-items: center;
  padding: 6rem 0;
  color: var(--color-cream);
}

.hero-slider .hero-slider__content h1,
.hero-slider .hero-slider__content h2 {
  color: var(--color-cream);
  max-width: 780px;
}

.hero-slider .hero-slider__content p {
  color: rgba(246, 242, 234, 0.85);
  font-size: 1.1rem;
  max-width: 560px;
  margin-bottom: 1.75rem;
}

.hero-slider .hero-slider__actions {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.hero-slider .carousel-indicators {
  bottom: 2rem;
}

.hero-slider .carousel-indicators [data-bs-target] {
  width: 32px;
  height: 3px;
  background: rgba(246, 242, 234, 0.5);
  border: 0;
  border-radius: 2px;
  opacity: 1;
  transition: background 0.2s ease, width 0.2s ease;
}

.hero-slider .carousel-indicators .active {
  background: var(--color-brass);
  width: 48px;
}

.hero-slider .carousel-control-prev,
.hero-slider .carousel-control-next {
  width: 56px;
  height: 56px;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(246, 242, 234, 0.12);
  border-radius: 50%;
  border: 1px solid rgba(246, 242, 234, 0.24);
  opacity: 0;
  transition: opacity 0.25s ease, background 0.25s ease;
}

.hero-slider:hover .carousel-control-prev,
.hero-slider:hover .carousel-control-next {
  opacity: 1;
}

.hero-slider .carousel-control-prev:hover,
.hero-slider .carousel-control-next:hover {
  background: rgba(246, 242, 234, 0.22);
}

.hero-slider .carousel-control-prev {
  left: 2rem;
}

.hero-slider .carousel-control-next {
  right: 2rem;
}

.room-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  transition: transform 0.35s ease, box-shadow 0.35s ease;
  display: flex;
  flex-direction: column;
  height: 100%;
}

.room-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-lift);
}

.room-card__media {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--color-cream-deep);
}

.room-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}

.room-card:hover .room-card__media img {
  transform: scale(1.05);
}

.room-card__body {
  padding: 1.5rem 1.5rem 1.75rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.room-card__title {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 600;
  margin: 0 0 0.5rem;
}

.room-card__text {
  color: var(--color-stone);
  font-size: 0.95rem;
  flex: 1;
  margin-bottom: 1.1rem;
}

.room-card__foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 1rem;
  border-top: 1px solid var(--color-line);
}

.room-card__price {
  font-weight: 600;
  color: var(--color-ink);
  font-size: 1.05rem;
}

.room-card__price small {
  color: var(--color-stone);
  font-weight: 400;
  font-size: 0.82rem;
}

.service-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 2rem;
  box-shadow: var(--shadow-soft);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.service-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-lift);
}

.service-card__icon {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: rgba(184, 147, 90, 0.14);
  color: var(--color-brass-ink);
  display: grid;
  place-items: center;
  font-size: 1.35rem;
  margin-bottom: 1.25rem;
}

.service-card__title {
  font-size: 1.35rem;
  margin: 0 0 0.6rem;
}

.service-card__text {
  color: var(--color-stone);
  font-size: 0.95rem;
  flex: 1;
  margin-bottom: 1.25rem;
}

.service-card__link {
  color: var(--color-brass-ink);
  font-weight: 600;
  font-size: 0.9rem;
  letter-spacing: 0.02em;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.service-card__link:hover {
  color: var(--color-ink);
}

.feature-tile {
  text-align: center;
  padding: 2rem 1.25rem;
  background: transparent;
  border-radius: var(--radius-md);
  transition: background 0.2s ease;
  height: 100%;
}

.feature-tile:hover {
  background: rgba(21, 24, 32, 0.03);
}

.feature-tile__icon {
  font-size: 1.75rem;
  color: var(--color-brass-ink);
  margin-bottom: 1rem;
  display: inline-block;
}

.feature-tile h3,
.feature-tile h4 {
  font-size: 1.15rem;
  margin-bottom: 0.5rem;
}

.feature-tile p {
  color: var(--color-stone);
  font-size: 0.92rem;
  margin: 0;
}

.story-figure {
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  aspect-ratio: 4 / 5;
  background: var(--color-cream-deep);
}

.story-figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.story-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin-top: 2rem;
}

.story-stat {
  padding: 1.25rem 1rem;
  background: var(--color-cream-deep);
  border-radius: var(--radius-md);
  text-align: center;
}

.story-stat__num {
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight: 600;
  color: var(--color-brass-ink);
  line-height: 1;
  margin-bottom: 0.35rem;
}

.story-stat__label {
  font-size: 0.75rem;
  color: var(--color-stone);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.section-ink .story-stat {
  background: rgba(246, 242, 234, 0.06);
}

.section-ink .story-stat__num {
  color: var(--color-brass);
}

.section-ink .story-stat__label {
  color: rgba(246, 242, 234, 0.7);
}

.gallery-mosaic {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 220px;
  gap: 1rem;
}

.gallery-tile {
  border-radius: var(--radius-md);
  overflow: hidden;
  position: relative;
  background: var(--color-cream-deep);
}

.gallery-tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}

.gallery-tile:hover img {
  transform: scale(1.05);
}

.gallery-tile--wide {
  grid-column: span 2;
}

.gallery-tile--tall {
  grid-row: span 2;
}

.gallery-caption {
  font-size: 0.85rem;
  color: var(--color-stone);
  margin-top: 0.6rem;
}

.testimonial-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 2rem;
  box-shadow: var(--shadow-soft);
  height: 100%;
  display: flex;
  flex-direction: column;
}

.testimonial-card__stars {
  color: var(--color-brass);
  font-size: 0.9rem;
  margin-bottom: 1rem;
  letter-spacing: 0.1em;
}

.testimonial-card__quote {
  font-family: var(--font-display);
  font-size: 1.18rem;
  line-height: 1.5;
  color: var(--color-ink);
  margin: 0 0 1.5rem;
  flex: 1;
}

.testimonial-card__author {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--color-line);
}

.testimonial-card__avatar {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
  background: var(--color-cream-deep);
}

.testimonial-card__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.testimonial-card__name {
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--color-ink);
  margin: 0;
}

.testimonial-card__role {
  font-size: 0.82rem;
  color: var(--color-stone);
  margin: 0;
}

.newsletter-panel {
  background: var(--color-ink);
  border-radius: var(--radius-lg);
  padding: clamp(2rem, 5vw, 3.5rem);
  color: var(--color-cream);
  position: relative;
  overflow: hidden;
}

.newsletter-panel::before {
  content: "";
  position: absolute;
  right: -100px;
  top: -100px;
  width: 300px;
  height: 300px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(184, 147, 90, 0.22), transparent 70%);
  pointer-events: none;
}

.newsletter-panel h2 {
  color: var(--color-cream);
  position: relative;
}

.newsletter-panel p {
  color: rgba(246, 242, 234, 0.82);
  position: relative;
}

.newsletter-form {
  display: flex;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-top: 1.5rem;
  position: relative;
}

.newsletter-form .form-control {
  flex: 1;
  min-width: 220px;
  background: rgba(246, 242, 234, 0.1);
  border: 1px solid rgba(246, 242, 234, 0.2);
  color: var(--color-cream);
  border-radius: 999px;
  padding: 0.85rem 1.4rem;
}

.newsletter-form .form-control::placeholder {
  color: rgba(246, 242, 234, 0.55);
}

.newsletter-form .form-control:focus {
  background: rgba(246, 242, 234, 0.16);
  border-color: var(--color-brass);
  box-shadow: none;
  color: var(--color-cream);
}

.map-frame {
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  aspect-ratio: 16 / 9;
  background: var(--color-cream-deep);
}

.map-frame iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

.cta-band {
  background: var(--color-ink);
  color: var(--color-cream);
  border-radius: var(--radius-lg);
  padding: clamp(2rem, 5vw, 4rem);
  text-align: center;
  position: relative;
  overflow: hidden;
}

.cta-band::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 20% 20%, rgba(184, 147, 90, 0.18), transparent 55%),
    radial-gradient(circle at 80% 80%, rgba(184, 147, 90, 0.12), transparent 55%);
  pointer-events: none;
}

.cta-band h2 {
  color: var(--color-cream);
  position: relative;
}

.cta-band p {
  color: rgba(246, 242, 234, 0.82);
  position: relative;
}

.cta-band__actions {
  display: flex;
  justify-content: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-top: 1.5rem;
  position: relative;
}

.faq-item {
  background: var(--color-white);
  border-radius: var(--radius-md);
  margin-bottom: 0.9rem;
  box-shadow: var(--shadow-soft);
  overflow: hidden;
}

.faq-item .accordion-button {
  background: var(--color-white);
  color: var(--color-ink);
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 600;
  padding: 1.25rem 1.5rem;
  box-shadow: none;
}

.faq-item .accordion-button:not(.collapsed) {
  background: var(--color-cream);
  color: var(--color-brass-ink);
}

.faq-item .accordion-button:focus {
  box-shadow: 0 0 0 3px rgba(184, 147, 90, 0.2);
}

.faq-item .accordion-body {
  padding: 0 1.5rem 1.5rem;
  color: var(--color-stone);
  font-size: 0.98rem;
  line-height: 1.7;
}

.process-step {
  position: relative;
  padding: 1.75rem 1.5rem;
  background: var(--color-white);
  border-radius: var(--radius-md);
  height: 100%;
  box-shadow: var(--shadow-soft);
}

.process-step__num {
  font-family: var(--font-display);
  font-size: 2.4rem;
  color: var(--color-brass);
  line-height: 1;
  margin-bottom: 0.8rem;
  font-weight: 600;
}

.process-step__title {
  font-size: 1.15rem;
  margin: 0 0 0.5rem;
}

.process-step__text {
  color: var(--color-stone);
  font-size: 0.93rem;
  margin: 0;
  line-height: 1.6;
}

.price-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 2rem;
  box-shadow: var(--shadow-soft);
  height: 100%;
  border: 1px solid var(--color-line);
  transition: border-color 0.2s ease, transform 0.2s ease;
}

.price-card--featured {
  border-color: var(--color-brass);
  transform: translateY(-4px);
}

.price-card__label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-brass-ink);
  margin-bottom: 0.5rem;
}

.price-card__amount {
  font-family: var(--font-display);
  font-size: 3rem;
  color: var(--color-ink);
  font-weight: 600;
  line-height: 1;
}

.price-card__amount small {
  font-size: 1rem;
  color: var(--color-stone);
  font-weight: 400;
}

.price-card__list {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0;
}

.price-card__list li {
  padding: 0.6rem 0;
  color: var(--color-stone);
  border-bottom: 1px solid var(--color-line);
  font-size: 0.93rem;
}

.price-card__list li:last-child {
  border-bottom: 0;
}

.price-card__list li i {
  color: var(--color-brass);
  margin-right: 0.6rem;
}

.team-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  height: 100%;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.team-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-lift);
}

.team-card__media {
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--color-cream-deep);
}

.team-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.team-card__body {
  padding: 1.5rem;
}

.team-card__name {
  font-size: 1.2rem;
  margin: 0 0 0.25rem;
}

.team-card__role {
  color: var(--color-brass-ink);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  margin: 0 0 0.75rem;
}

.team-card__bio {
  color: var(--color-stone);
  font-size: 0.93rem;
  line-height: 1.6;
  margin: 0;
}

.article-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-soft);
  height: 100%;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  display: flex;
  flex-direction: column;
}

.article-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-lift);
}

.article-card__media {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--color-cream-deep);
}

.article-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}

.article-card:hover .article-card__media img {
  transform: scale(1.05);
}

.article-card__body {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.article-card__meta {
  font-size: 0.78rem;
  color: var(--color-brass-ink);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 0.75rem;
}

.article-card__title {
  font-size: 1.3rem;
  margin: 0 0 0.6rem;
}

.article-card__title a {
  color: var(--color-ink);
}

.article-card__title a:hover {
  color: var(--color-brass-ink);
}

.article-card__text {
  color: var(--color-stone);
  font-size: 0.94rem;
  margin-bottom: 1.25rem;
  flex: 1;
}

.detail-hero {
  position: relative;
  min-height: 62vh;
  display: flex;
  align-items: flex-end;
  background-size: cover;
  background-position: center;
  color: var(--color-cream);
  padding: clamp(4rem, 8vw, 7rem) 0 clamp(3rem, 5vw, 4rem);
}

.detail-hero__content {
  position: relative;
  z-index: 2;
  max-width: 900px;
}

.detail-hero__eyebrow {
  color: var(--color-brass);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  margin-bottom: 1rem;
  display: inline-block;
}

.detail-hero h1 {
  color: var(--color-cream);
  margin: 0;
}

.detail-hero p {
  color: rgba(246, 242, 234, 0.85);
  max-width: 640px;
  margin-top: 1rem;
  font-size: 1.05rem;
}

.form-panel {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: clamp(1.75rem, 4vw, 2.5rem);
  box-shadow: var(--shadow-soft);
}

.form-panel .form-label {
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-ink-soft);
  margin-bottom: 0.4rem;
}

.form-panel .form-control,
.form-panel .form-select {
  background: var(--color-cream);
  border: 1px solid var(--color-line);
  border-radius: var(--radius-sm);
  padding: 0.85rem 1rem;
  font-size: 0.98rem;
  color: var(--color-ink);
}

.form-panel .form-control::placeholder {
  color: var(--color-stone);
}

.form-panel .form-control:focus,
.form-panel .form-select:focus {
  border-color: var(--color-brass);
  box-shadow: 0 0 0 3px rgba(184, 147, 90, 0.2);
  background: var(--color-white);
}

.form-note {
  font-size: 0.82rem;
  color: var(--color-stone);
  margin-top: 0.75rem;
}

.contact-card {
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: 1.75rem;
  box-shadow: var(--shadow-soft);
  height: 100%;
}

.contact-card__icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: rgba(184, 147, 90, 0.14);
  color: var(--color-brass-ink);
  display: grid;
  place-items: center;
  font-size: 1.2rem;
  margin-bottom: 1rem;
}

.contact-card__title {
  font-size: 1.1rem;
  margin: 0 0 0.35rem;
}

.contact-card__text {
  color: var(--color-stone);
  font-size: 0.95rem;
  margin: 0;
  word-break: break-word;
}

.contact-card__text a {
  color: var(--color-brass-ink);
}

.legal-page {
  padding-top: clamp(3rem, 7vw, 5rem);
  padding-bottom: clamp(3rem, 7vw, 5rem);
}

.legal-content {
  max-width: 820px;
  margin: 0 auto;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: clamp(1.5rem, 4vw, 3rem);
  box-shadow: var(--shadow-soft);
}

.legal-content h2 {
  font-size: 1.5rem;
  margin-top: 2rem;
  margin-bottom: 0.85rem;
}

.legal-content h3 {
  font-size: 1.2rem;
  margin-top: 1.5rem;
  margin-bottom: 0.6rem;
}

.legal-content p,
.legal-content li {
  color: var(--color-stone);
  line-height: 1.75;
  font-size: 0.98rem;
}

.legal-content ul,
.legal-content ol {
  padding-left: 1.25rem;
}

.consent-dock {
  position: fixed;
  left: 50%;
  bottom: 1.25rem;
  transform: translateX(-50%);
  width: min(1120px, calc(100% - 2rem));
  z-index: 1080;
  animation: consent-rise 0.45s cubic-bezier(0.2, 0.8, 0.3, 1) both;
  transition: opacity 0.28s ease, transform 0.28s ease;
}

.consent-dock.is-leaving {
  opacity: 0;
  transform: translateX(-50%) translateY(24px);
  pointer-events: none;
}

.consent-dock__inner {
  background: var(--color-ink);
  color: var(--color-cream);
  border-radius: var(--radius-lg);
  padding: 1.4rem 1.5rem;
  box-shadow: var(--shadow-lift);
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 1.25rem;
  align-items: center;
  border: 1px solid rgba(246, 242, 234, 0.1);
}

.consent-dock__badge {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: rgba(184, 147, 90, 0.16);
  color: var(--color-brass);
  display: grid;
  place-items: center;
  font-size: 1.25rem;
  flex-shrink: 0;
}

.consent-dock__body {
  min-width: 0;
}

.consent-dock__title {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--color-cream);
  margin: 0 0 0.3rem;
  letter-spacing: -0.005em;
}

.consent-dock__text {
  margin: 0;
  color: rgba(246, 242, 234, 0.82);
  font-size: 0.92rem;
  line-height: 1.55;
}

.consent-dock__link {
  color: var(--color-brass);
  text-decoration: underline;
  text-underline-offset: 3px;
  font-weight: 500;
}

.consent-dock__link:hover {
  color: var(--color-cream);
}

.consent-dock__actions {
  display: flex;
  gap: 0.6rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.consent-dock__btn {
  border: 1px solid transparent;
  padding: 0.7rem 1.3rem;
  border-radius: 999px;
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: transform 0.18s ease, background 0.18s ease, color 0.18s ease, border-color 0.18s ease;
  white-space: nowrap;
}

.consent-dock__btn:hover {
  transform: translateY(-1px);
}

.consent-dock__btn--ghost {
  background: transparent;
  color: var(--color-cream);
  border-color: rgba(246, 242, 234, 0.25);
}

.consent-dock__btn--ghost:hover {
  background: rgba(246, 242, 234, 0.08);
  color: var(--color-cream);
}

.consent-dock__btn--solid {
  background: var(--color-brass);
  color: var(--color-ink);
}

.consent-dock__btn--solid:hover {
  background: var(--color-cream);
  color: var(--color-ink);
}

@keyframes consent-rise {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(36px);
  }
  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
}

.thankyou-page {
  min-height: 70vh;
  display: flex;
  align-items: center;
  padding: var(--section-y) 0;
}

.thankyou-card {
  max-width: 640px;
  margin: 0 auto;
  text-align: center;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  padding: clamp(2rem, 5vw, 3.5rem);
  box-shadow: var(--shadow-soft);
}

.thankyou-card__icon {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  background: rgba(184, 147, 90, 0.14);
  color: var(--color-brass-ink);
  display: grid;
  place-items: center;
  font-size: 1.9rem;
  margin: 0 auto 1.5rem;
}

@media (max-width: 991.98px) {
  .hero-slider .carousel-item {
    height: 78vh;
    min-height: 520px;
  }

  .hero-slider .carousel-control-prev,
  .hero-slider .carousel-control-next {
    display: none;
  }

  .gallery-mosaic {
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: 180px;
  }

  .gallery-tile--wide {
    grid-column: span 2;
  }

  .gallery-tile--tall {
    grid-row: span 1;
  }

  .story-stats {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 767.98px) {
  .story-stats {
    grid-template-columns: 1fr;
  }

  .hero-slider .hero-slider__content {
    padding: 4rem 0;
  }

  .consent-dock {
    bottom: 0.75rem;
    width: calc(100% - 1rem);
  }

  .consent-dock__inner {
    grid-template-columns: 1fr;
    padding: 1.2rem 1.15rem;
    gap: 1rem;
  }

  .consent-dock__badge {
    width: 42px;
    height: 42px;
    font-size: 1rem;
  }

  .consent-dock__actions {
    flex-direction: column-reverse;
  }

  .consent-dock__btn {
    width: 100%;
  }

  .price-card--featured {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
/* Contrast fix: hero eyebrow text over photographic backgrounds.
   Use a light brass tone so it stays legible against the overlay/image
   while keeping the brass accent identity. */
.detail-hero__eyebrow {
  color: #f3e4cd;
  text-shadow: 0 1px 2px rgba(21, 24, 32, 0.55);
}

@media (max-width: 991.98px) {
  .detail-hero__eyebrow {
    color: #f7eddd;
  }
}

/* Contrast improvement: hero lead paragraph over photographic backgrounds. */
.detail-hero p {
  color: rgba(246, 242, 234, 0.94);
  text-shadow: 0 1px 2px rgba(21, 24, 32, 0.45);
}

@media (max-width: 991.98px) {
  .detail-hero p {
    color: #f6f2ea;
  }
}

/* Contrast fix: hero eyebrow over darkened photo backgrounds */
.detail-hero .detail-hero__eyebrow {
  color: #ecd9b6;
  text-shadow: 0 1px 2px rgba(21, 24, 32, 0.55);
}

/* Fix: AOS fade-left on the map column left it partially transformed/blank
   in the find-us section. Keep content visible without relying on AOS motion. */
#find-us .map-frame iframe {
  min-height: 320px;
}

#find-us [data-aos] {
  opacity: 1 !important;
  transform: none !important;
}

/* Fix: the footer map frame showed an empty beige strip because the inline
   aspect-ratio did not resolve cleanly against the rounded frame. Ensure the
   iframe (or the frame itself) always fills the full height. */
footer.site-footer .map-frame {
  display: block;
  width: 100%;
  line-height: 0;
  background: transparent;
}

footer.site-footer .map-frame iframe {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 0;
  display: block;
  border: 0;
}

@media (max-width: 767.98px) {
  footer.site-footer .map-frame {
    aspect-ratio: 4 / 3 !important;
  }
}

/* Fix: process step cards on phones rendered as tall, mostly empty boxes.
   Remove the forced equal-height stretch inside each stacked column and tighten
   the card padding/leading so the number, title and body sit together.
   Desktop grid behaviour (equal-height cards side by side) is untouched. */
@media (max-width: 575.98px) {
  .process-step {
    height: auto;
    padding: 1.15rem 1.15rem 1.25rem;
  }

  .process-step__num {
    font-size: 1.55rem;
    margin-bottom: 0.25rem;
  }

  .process-step__title {
    font-size: 1.08rem;
    margin-bottom: 0.35rem;
  }

  .process-step__text {
    font-size: 0.92rem;
    line-height: 1.5;
  }
}

/* Contrast fix: step cards inside dark sections (.section-ink) inherit the
   light-on-dark block colour for their headings and body copy, which left
   the white cards with near-invisible text. Cards paint their own white
   background, so their text must use the light-surface palette. Applies to
   stacked and side-by-side layouts on both detail pages. */
.section-ink .process-step,
.on-dark .process-step {
  color: var(--color-ink);
}

.section-ink .process-step .process-step__num,
.on-dark .process-step .process-step__num {
  color: var(--color-brass-ink);
}

.section-ink .process-step .process-step__title,
.section-ink .process-step h3,
.on-dark .process-step .process-step__title,
.on-dark .process-step h3 {
  color: var(--color-ink);
}

.section-ink .process-step .process-step__text,
.section-ink .process-step p,
.on-dark .process-step .process-step__text,
.on-dark .process-step p {
  color: var(--color-stone);
}

/* Fix: footer's last column ("Get in touch" / contact block) was too narrow on
   desktop, so the phone/email/address text and the hours list below it were
   squeezed together and appeared to run into each other. Rebalance the footer
   column widths so the contact block gets real breathing room for wrapped
   lines, and add a small safety gap between the two lists it stacks.
   Mobile / tablet (below lg) keeps its existing stacked + col-6 behaviour. */
footer.site-footer .row.g-5 > .col-lg-4 {
  flex: 0 0 auto;
  width: 31%;
}

footer.site-footer .row.g-5 > .col-lg-2,
footer.site-footer .row.g-5 > .col-lg-3 {
  flex: 0 0 auto;
}

footer.site-footer .row.g-5 > .col-lg-2 {
  width: 13%;
}

footer.site-footer .row.g-5 > .col-lg-3:not(:first-child) {
  width: 21%;
}

/* Keep the first footer column (brand blurb) from stretching the row. */
footer.site-footer .row.g-5 > .col-lg-4:first-child {
  padding-right: 1.5rem;
}

/* Give the stacked contact list and hours list a guaranteed vertical gap. */
footer.site-footer h4 + ul.list-unstyled > li:last-child {
  margin-bottom: 0;
}

footer.site-footer ul.list-unstyled + h4 {
  margin-top: 1.75rem;
}

/* Let long contact strings wrap inside the column instead of overflowing. */
footer.site-footer ul.list-unstyled li {
  overflow-wrap: break-word;
  word-break: normal;
}

footer.site-footer ul.list-unstyled li a,
footer.site-footer ul.list-unstyled li span {
  display: inline;
}

/* Contrast fix: the home hero slider eyebrow ("Kippax Street, Surry Hills" and
   the other slide labels) inherited the light-surface brass ink colour, which
   measured ~2:1 against the darkened photo backdrop. Scope the correction to
   eyebrows sitting inside the hero slider and use the palette's light brass
   tone (same idea as .detail-hero__eyebrow) so the accent identity holds. */
.hero-slider .eyebrow,
.hero-slider .carousel-item .eyebrow {
  color: #ecd9b6;
  text-shadow: 0 1px 2px rgba(21, 24, 32, 0.55);
}

/* Contrast fix (scoped, cascade-safe): the home hero slider eyebrow
   ("Kippax Street, Surry Hills") was still measuring the dark brass ink
   (#7a5d34, ~2.6:1) against the darkened photo backdrop, because the earlier
   eyebrow override loses to the generic `.eyebrow` rule through specificity
   ties with the carousel content wrappers. Re-declare the light brass tone with
   enough specificity, scoped only to eyebrows inside the hero slider, so every
   other eyebrow on the page keeps its palette colour. */
.hero-slider .carousel-inner .hero-slider__content .eyebrow,
.hero-slider .carousel-inner .hero-slider__content .eyebrow::before {
  color: #ecd9b6;
}

.hero-slider .carousel-inner .hero-slider__content .eyebrow {
  text-shadow: 0 1px 2px rgba(21, 24, 32, 0.55);
}
