/* Buttons */
.btn { white-space: nowrap; display: inline-flex; align-items: center; justify-content: center; gap: .6rem; min-height: 48px; padding: .8rem 1.6rem; font-weight: 700; font-size: var(--fs-sm); letter-spacing: .02em; text-decoration: none; border: 1px solid transparent; cursor: pointer; transition: background var(--dur-1), color var(--dur-1), border-color var(--dur-1), transform 120ms; }
.btn .arr { display: inline-block; transition: transform var(--dur-2) var(--ease-out); }
.btn:hover .arr, .btn:focus-visible .arr { transform: translateX(5px); }
.btn:active { transform: translateY(1px) scale(.99); }
.btn--primary { background: var(--gold); color: var(--green-deep); }
.btn--primary:hover { background: #d6b783; }
.btn--green { background: var(--green); color: var(--ivory); }
.btn--green:hover { background: var(--green-2); }
.btn--secondary { border-color: currentColor; background: transparent; }
.btn--secondary:hover { background: rgba(245,242,233,.12); }
.section:not(.section--green):not(.section--deep) .btn--secondary:hover { background: rgba(18,61,48,.07); }
.link-arrow { display: inline-flex; align-items: center; gap: .5rem; font-weight: 700; color: var(--green); text-decoration: none; border-bottom: 1px solid var(--gold); padding-bottom: 2px; min-height: 24px; }
.link-arrow .arr { transition: transform var(--dur-2) var(--ease-out); }
.link-arrow:hover .arr { transform: translateX(5px); }
.icon-btn { width: 48px; height: 48px; display: inline-grid; place-items: center; background: transparent; border: 1px solid currentColor; border-radius: 50%; cursor: pointer; transition: background var(--dur-1), color var(--dur-1); }
.icon-btn:hover { background: var(--gold); color: var(--green-deep); border-color: var(--gold); }
.btn-row { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: var(--space-3); }

/* Trust strip */
.trust { background: var(--white); border-bottom: 1px solid var(--border); }
.trust ul { list-style: none; margin: 0; padding: var(--space-3) 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-3); }
.trust li { display: flex; flex-direction: column; gap: .25rem; font-size: var(--fs-sm); color: var(--text-2); }
.trust strong { font-family: var(--font-display); font-weight: 400; font-size: 1.35rem; color: var(--green); }

/* Cards */
.card { background: var(--white); border: 1px solid var(--border); transition: border-color var(--dur-2), transform var(--dur-2) var(--ease-out); display: flex; flex-direction: column; }
.card:hover, .card:focus-within { border-color: var(--gold); }
.card-body { padding: var(--space-3); display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.card-body h3 { margin: 0; transition: transform var(--dur-2) var(--ease-out), color var(--dur-1); }
.card:hover h3 { color: var(--green-2); transform: translateX(3px); }
.card-body p { color: var(--text-2); font-size: var(--fs-sm); }
.card-body .actions { margin-top: auto; padding-top: var(--space-2); }
.media { position: relative; overflow: hidden; background: var(--green-2); aspect-ratio: 4 / 3; }
.media img { width: 100%; height: 100%; object-fit: cover; transition: transform 900ms var(--ease-out); }
.media--tall { aspect-ratio: 4 / 5; }
.media--wide { aspect-ratio: 16 / 10; }
.tag { display: inline-block; font-size: .6875rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; padding: .25rem .6rem; border: 1px solid var(--gold); color: var(--gold-dark); align-self: flex-start; }
.tag--pending { border-style: dashed; }
.placeholder-note { font-size: var(--fs-xs); color: var(--text-2); border-left: 2px solid var(--gold); padding-left: .75rem; max-width: 60ch; }
.section--green .placeholder-note, .section--deep .placeholder-note { color: rgba(245,242,233,.75); }
.checks { list-style: none; padding: 0; }
.checks li { padding-left: 1.75rem; position: relative; margin-bottom: .75rem; }
.checks li::before { content: ""; position: absolute; left: 0; top: .6em; width: 10px; height: 10px; border: 2px solid var(--gold); transform: rotate(45deg); }

/* Process steps */
.steps { list-style: none; padding: 0; margin: 0; counter-reset: step; display: grid; gap: var(--space-3); }
.step { position: relative; padding: var(--space-3) var(--space-3) var(--space-3) 4.5rem; background: var(--white); border: 1px solid var(--border); }
.section--green .step { background: rgba(255,255,255,.05); border-color: rgba(197,164,109,.3); }
.step::before { counter-increment: step; content: counter(step, decimal-leading-zero); position: absolute; left: var(--space-3); top: var(--space-3); font-family: var(--font-display); font-size: 1.9rem; color: var(--gold); line-height: 1; }
.step h3 { font-size: 1.3rem; margin-bottom: .35rem; }
.step p { margin: 0; font-size: var(--fs-sm); color: var(--text-2); }
.section--green .step p { color: rgba(245,242,233,.8); }

/* Stats */
.stat { border-top: 1px solid var(--gold); padding-top: var(--space-2); }
.stat .num { font-family: var(--font-display); font-size: clamp(2.2rem, 1.5rem + 3vw, 3.75rem); color: var(--gold); line-height: 1; }
.stat p { font-size: var(--fs-sm); margin-top: .5rem; }

/* FAQ */
.faq { border-top: 1px solid var(--border); }
.faq details { border-bottom: 1px solid var(--border); }
.faq summary { list-style: none; cursor: pointer; padding: 1.25rem 3rem 1.25rem 0; font-weight: 700; position: relative; min-height: 44px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: .25rem; top: 50%; transform: translateY(-50%); font-size: 1.6rem; color: var(--gold-dark); transition: transform var(--dur-2) var(--ease-out); }
.faq details[open] summary::after { transform: translateY(-50%) rotate(45deg); }
.faq .answer { padding: 0 0 1.25rem; color: var(--text-2); }

/* Filters + gallery */
.filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: var(--space-3); }
.chip { min-height: 44px; padding: .5rem 1.1rem; border: 1px solid var(--border); background: var(--white); cursor: pointer; font-weight: 600; font-size: var(--fs-sm); transition: background var(--dur-1), color var(--dur-1), border-color var(--dur-1); }
.chip:hover { border-color: var(--gold); }
.chip[aria-pressed="true"] { background: var(--green); color: var(--ivory); border-color: var(--green); }
.gallery { display: grid; gap: .75rem; grid-template-columns: repeat(2, 1fr); }
.g-item { position: relative; display: block; padding: 0; border: 0; background: var(--green-2); cursor: zoom-in; overflow: hidden; aspect-ratio: 1; }
.g-item:nth-child(5n+1) { grid-column: span 2; aspect-ratio: 16/9; }
.g-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 900ms var(--ease-out); }
.g-item .cap { position: absolute; inset: auto 0 0 0; padding: 1.5rem .85rem .75rem; text-align: left; font-size: var(--fs-xs); color: var(--ivory); background: linear-gradient(transparent, rgba(10,36,28,.85)); }
.g-item[hidden] { display: none; }
.lightbox { position: fixed; inset: 0; z-index: 500; background: rgba(10,36,28,.96); display: none; align-items: center; justify-content: center; padding: 1rem; color: var(--ivory); }
.lightbox.is-open { display: flex; }
.lightbox figure { margin: 0; max-width: min(1100px, 100%); max-height: 100%; text-align: center; }
.lightbox img { max-height: 76vh; margin-inline: auto; object-fit: contain; }
.lightbox figcaption { margin-top: 1rem; font-size: var(--fs-sm); }
.lb-btn { position: absolute; color: var(--ivory); background: rgba(10,36,28,.6); }
.lb-close { top: 1rem; right: 1rem; } .lb-prev { left: .5rem; top: 50%; } .lb-next { right: .5rem; top: 50%; }

/* Forms */
.form { display: grid; gap: var(--space-2); grid-template-columns: 1fr; }
.field { display: flex; flex-direction: column; gap: .4rem; }
.field label, .field legend { font-weight: 700; font-size: var(--fs-sm); }
.field .req { color: var(--gold-dark); }
.field input, .field select, .field textarea { min-height: 48px; padding: .7rem .9rem; background: var(--white); border: 1px solid #c9cdc4; border-radius: var(--radius); width: 100%; }
.field textarea { min-height: 140px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--green); outline: 3px solid rgba(197,164,109,.5); outline-offset: 0; }
.field [aria-invalid="true"] { border-color: #a4262c; border-width: 2px; }
.error { color: #a4262c; font-size: var(--fs-xs); font-weight: 600; min-height: 1em; }
.error:not(:empty)::before { content: "⚠ "; }
.field--check { flex-direction: row; align-items: flex-start; gap: .75rem; }
.field--check input { width: 24px; min-height: 24px; margin-top: .15rem; }
.form-status { padding: 1rem; border: 1px solid var(--border); background: var(--white); font-weight: 600; display: none; }
.form-status.is-visible { display: block; }
.form-status[data-state="error"] { border-color: #a4262c; color: #a4262c; }
.form-status[data-state="success"] { border-color: var(--green-2); color: var(--green); }
.form-status[data-state="info"] { border-color: var(--gold); }
.form-card { background: var(--white); border: 1px solid var(--border); padding: var(--space-3); }

/* Floating */
.to-top { position: fixed; right: 1rem; bottom: 1rem; z-index: 90; background: var(--green); color: var(--ivory); border-color: var(--gold); opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity var(--dur-2), transform var(--dur-2), visibility 0s linear var(--dur-2); }
.to-top.is-visible { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.progress { position: fixed; top: 0; left: 0; height: 3px; width: 100%; background: var(--gold); transform: scaleX(0); transform-origin: left; z-index: 200; }
.contact-list { list-style: none; padding: 0; }
.contact-list li { padding: .85rem 0; border-bottom: 1px solid var(--border); display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }
.contact-list strong { min-width: 7rem; }
.copy-btn { min-height: 44px; padding: .4rem .9rem; border: 1px solid var(--green); background: transparent; cursor: pointer; font-weight: 600; font-size: var(--fs-xs); }
.copy-btn:hover { background: var(--green); color: var(--ivory); }
.timeline { list-style: none; padding: 0; margin: 0; border-left: 1px solid var(--gold); }
.timeline li { padding: 0 0 var(--space-3) var(--space-3); position: relative; }
.timeline li::before { content: ""; position: absolute; left: -6px; top: .5rem; width: 11px; height: 11px; background: var(--gold); transform: rotate(45deg); }
.doc-slot { border: 1px dashed var(--gold-dark); padding: var(--space-3); background: rgba(197,164,109,.08); }

@media (hover: hover) {
  .card:hover .media img, .g-item:hover img { transform: scale(1.05); }
}
@media (hover: none) { .card:hover h3 { transform: none; } }

/* Long emails/phone numbers must wrap on very small screens */
.contact-list span, .contact-list a, .site-footer li { overflow-wrap: anywhere; min-width: 0; }

/* Long emails / URLs inside body copy must wrap on very small screens */
main a, main p, main li { overflow-wrap: anywhere; }
