/* ==========================================================================
   APR — Components
   ========================================================================== */

/* --- Buttons --- */
.apr-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  font-family: var(--apr-font-head); font-weight: 600; font-size: 1rem;
  text-transform: uppercase; letter-spacing: 0.05em;
  padding: 0.95rem 1.9rem; border-radius: var(--apr-radius);
  border: 2px solid transparent; cursor: pointer; text-align: center;
  transition: transform var(--apr-transition), box-shadow var(--apr-transition), background var(--apr-transition), color var(--apr-transition);
  line-height: 1.1;
}
.apr-btn:hover { transform: translateY(-2px); }
.apr-btn--red { background: var(--apr-grad-red); color: #fff; box-shadow: 0 6px 18px rgba(183,28,28,0.32); }
.apr-btn--red:hover { color: #fff; box-shadow: 0 12px 28px rgba(183,28,28,0.42); }
.apr-btn--steel { background: var(--apr-grad-steel); color: #fff; box-shadow: 0 6px 18px rgba(43,76,126,0.3); }
.apr-btn--steel:hover { color: #fff; box-shadow: 0 12px 28px rgba(43,76,126,0.4); }
.apr-btn--outline { background: transparent; color: #fff; border-color: rgba(255,255,255,0.7); }
.apr-btn--outline:hover { background: #fff; color: var(--apr-steel-blue); }
.apr-btn--outline-dark { background: transparent; color: var(--apr-steel-blue); border-color: var(--apr-steel-blue); }
.apr-btn--outline-dark:hover { background: var(--apr-steel-blue); color: #fff; }
.apr-btn--white { background: #fff; color: var(--apr-patriot-red); }
.apr-btn--white:hover { background: var(--apr-concrete-cream); color: var(--apr-deep-crimson); }
.apr-btn--lg { padding: 1.1rem 2.4rem; font-size: 1.15rem; }
.apr-btn--block { display: flex; width: 100%; }

.apr-btn-row { display: flex; flex-wrap: wrap; gap: 1rem; }
.apr-btn-row--center { justify-content: center; }
@media (max-width: 540px) { .apr-btn-row { flex-direction: column; } .apr-btn-row .apr-btn { width: 100%; } }

/* --- Angled section dividers (roofline effect) --- */
.apr-divide { position: relative; }
.apr-divide-top {
  position: absolute; top: -1px; left: 0; width: 100%; height: 60px;
  line-height: 0; z-index: 2; pointer-events: none;
}
.apr-divide-top svg { width: 100%; height: 100%; display: block; }
@media (max-width: 768px) { .apr-divide-top { height: 36px; } }

/* --- Cards (service / generic) --- */
.apr-card {
  background: var(--apr-slate); border: var(--apr-border-steel); border-radius: var(--apr-radius);
  overflow: hidden; transition: transform var(--apr-transition), border-color var(--apr-transition), box-shadow var(--apr-transition);
  position: relative; display: flex; flex-direction: column;
}
.apr-card:hover { transform: translateY(-4px); border-color: var(--apr-steel-blue); box-shadow: var(--apr-shadow-md); }

/* Service card */
.apr-service-card { color: #fff; min-height: 260px; }
.apr-service-card:hover { border-color: var(--apr-trophy-gold); box-shadow: 0 14px 34px rgba(0,0,0,0.4); }
.apr-service-card__media {
  position: relative; aspect-ratio: 16 / 10; overflow: hidden;
  background: var(--apr-grad-steel);
}
.apr-service-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s var(--apr-ease); }
.apr-service-card:hover .apr-service-card__media img { transform: scale(1.06); }
.apr-service-card__media::after { content:""; position:absolute; inset:0; background: linear-gradient(180deg, rgba(26,47,78,0.15) 0%, rgba(26,32,44,0.55) 60%, rgba(26,32,44,0.9) 100%); }
/* Icon sits in a glassy gold-edged badge instead of floating loose on the photo. */
.apr-service-card__icon {
  position: absolute; top: 14px; left: 14px; z-index: 2; box-sizing: border-box;
  width: 48px; height: 48px; padding: 12px; border-radius: var(--apr-radius);
  background: rgba(26,32,44,0.6); backdrop-filter: blur(4px);
  border: 1px solid rgba(212,168,71,0.55); color: var(--apr-trophy-gold);
  box-shadow: 0 4px 14px rgba(0,0,0,0.35);
  transition: transform var(--apr-transition), border-color var(--apr-transition);
}
.apr-service-card:hover .apr-service-card__icon { transform: translateY(-2px); border-color: var(--apr-trophy-gold); }
/* Placeholder tile (no photo yet): blueprint grid + large centered icon, no badge. */
.apr-service-card__media--ph::after { background: none; }
.apr-service-card__media--ph {
  background-image: linear-gradient(rgba(61,107,173,0.14) 1px, transparent 1px), linear-gradient(90deg, rgba(61,107,173,0.14) 1px, transparent 1px), var(--apr-grad-steel);
  background-size: 34px 34px, 34px 34px, 100% 100%;
}
.apr-service-card__media--ph .apr-service-card__icon {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 64px; height: 64px; padding: 0; opacity: 0.92;
  background: none; border: none; box-shadow: none; backdrop-filter: none;
}
.apr-service-card:hover .apr-service-card__media--ph .apr-service-card__icon { transform: translate(-50%, -50%); }
.apr-service-card__body { padding: 1.45rem 1.5rem 1.6rem; display: flex; flex-direction: column; gap: 0.5rem; flex: 1; background: linear-gradient(180deg, #2D3748 0%, #283039 100%); }
.apr-service-card__body h3 { color: #fff; text-transform: uppercase; letter-spacing: 0.02em; }
.apr-service-card__body h3::after { content: ""; display: block; width: 32px; height: 2px; margin-top: 0.6rem; background: var(--apr-grad-award); }
.apr-service-card__body p { color: var(--apr-brushed-steel); font-size: 0.9rem; line-height: 1.6; }
.apr-service-card__link {
  margin-top: auto; padding-top: 0.35rem;
  color: var(--apr-trophy-gold); font-family: var(--apr-font-label); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.8rem;
  display: inline-flex; align-items: center; gap: 0.45rem;
}
.apr-service-card__link::after { content: "→"; transition: transform var(--apr-transition); }
.apr-service-card:hover .apr-service-card__link { color: #fff; }
.apr-service-card:hover .apr-service-card__link::after { transform: translateX(4px); }

.apr-cat-head {
  font-family: var(--apr-font-head); font-weight: 600; text-transform: uppercase;
  color: var(--apr-trophy-gold); letter-spacing: 0.06em; font-size: 1.4rem;
  border-bottom: 2px solid var(--apr-trophy-gold); padding-bottom: 0.4rem;
  margin: 2.5rem 0 1.5rem; display: inline-block;
}

/* --- Value prop cards --- */
.apr-value-card {
  position: relative; overflow: hidden;
  background: #fff; border: 1px solid var(--apr-foundation); border-radius: var(--apr-radius);
  padding: 2.5rem 2.25rem; transition: transform var(--apr-transition), border-color var(--apr-transition), box-shadow var(--apr-transition);
}
/* Matches the credential cards: steel accent bar wipes in on hover. */
.apr-value-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--apr-grad-steel); transform: scaleX(0); transform-origin: left; transition: transform var(--apr-transition); }
.apr-value-card:hover { transform: translateY(-4px); border-color: var(--apr-steel-blue); box-shadow: var(--apr-shadow-md); }
.apr-value-card:hover::before { transform: scaleX(1); }
.apr-value-grid { grid-template-columns: 1fr 1fr; }
/* Stack the trust cards on phones; two narrow columns wrap the copy to 2-3 words per line. */
@media (max-width: 600px) { .apr-value-grid { grid-template-columns: 1fr; } }
/* Icon in a tinted steel chip — box-sizing+padding shrinks the 100%-width SVG inside. */
.apr-value-card__icon { width: 58px; height: 58px; box-sizing: border-box; padding: 14px; border-radius: 50%; background: rgba(43,76,126,0.07); border: 1px solid rgba(43,76,126,0.16); color: var(--apr-steel-blue); margin-bottom: 1.25rem; }
.apr-value-card h3 { color: var(--apr-slate); margin-bottom: 0.6rem; }
.apr-value-card p { color: var(--apr-gunmetal); font-size: 0.97rem; line-height: 1.65; }

/* --- Award / credential badges --- */
.apr-awards { display: flex; flex-wrap: wrap; gap: 1.25rem; justify-content: center; align-items: stretch; }
.apr-award {
  flex: 1 1 180px; max-width: 220px; background: #fff;
  border: var(--apr-border-steel); border-radius: var(--apr-radius);
  padding: 2.25rem 1.25rem; text-align: center;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.7rem;
  position: relative; overflow: hidden;
  transition: border-color var(--apr-transition), transform var(--apr-transition), box-shadow var(--apr-transition);
}
/* Animated top accent bar — wipes in on hover so the cards feel alive, not static. */
.apr-award::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--apr-grad-steel); transform: scaleX(0); transition: transform var(--apr-transition); }
.apr-award:hover { border-color: var(--apr-steel-blue); transform: translateY(-4px); box-shadow: var(--apr-shadow-md); }
.apr-award:hover::before { transform: scaleX(1); }
/* Icon sits in a tinted chip; box-sizing+padding shrinks the 100%-width SVG inside it. */
.apr-award__icon { width: 62px; height: 62px; box-sizing: border-box; padding: 16px; border-radius: 50%; background: rgba(43,76,126,0.07); border: 1px solid rgba(43,76,126,0.16); color: var(--apr-steel-blue); }
.apr-award__label { position: relative; margin-top: 0.2rem; padding-top: 0.85rem; font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.72rem; font-weight: 600; color: var(--apr-gold-deep); }
.apr-award__label::before { content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 26px; height: 2px; background: var(--apr-grad-award); }
.apr-award__title { font-family: var(--apr-font-head); font-weight: 600; color: var(--apr-slate); text-transform: uppercase; font-size: 1.05rem; letter-spacing: 0.02em; }
/* The crown jewel — Torch Award */
.apr-award--torch {
  flex: 1.3 1 240px; max-width: 280px;
  border: 2px solid var(--apr-trophy-gold);
  background: linear-gradient(180deg, #fff 0%, #fffdf6 100%);
  box-shadow: 0 8px 28px rgba(212,168,71,0.22);
}
.apr-award--torch::before { background: var(--apr-grad-award); }
.apr-award--torch:hover { border-color: var(--apr-gold-deep); box-shadow: 0 14px 38px rgba(212,168,71,0.35); }
.apr-award--torch .apr-award__icon { width: 56px; height: 56px; color: var(--apr-trophy-gold); }
.apr-award--torch .apr-award__winner { font-family: var(--apr-font-head); font-weight: 700; color: var(--apr-trophy-gold); letter-spacing: 0.12em; font-size: 1.05rem; }
.apr-award--torch .apr-award__title { color: var(--apr-slate); }

/* --- Core values (dark cards, About page) --- */
.apr-corevalue-grid { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 980px) { .apr-corevalue-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .apr-corevalue-grid { grid-template-columns: 1fr; } }
.apr-corevalue {
  position: relative; overflow: hidden;
  background: linear-gradient(180deg, #2D3748 0%, #232c3a 100%);
  border: 1px solid rgba(212,168,71,0.18); border-radius: var(--apr-radius);
  padding: 2.4rem 1.75rem 2rem; text-align: center;
  display: flex; flex-direction: column; align-items: center;
  transition: transform var(--apr-transition), box-shadow var(--apr-transition), border-color var(--apr-transition);
}
.apr-corevalue::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--apr-grad-award); }
.apr-corevalue:hover { transform: translateY(-5px); border-color: var(--apr-trophy-gold); box-shadow: 0 16px 40px rgba(0,0,0,0.38); }
.apr-corevalue__icon { width: 66px; height: 66px; box-sizing: border-box; padding: 18px; border-radius: 50%; background: rgba(212,168,71,0.1); border: 1px solid rgba(212,168,71,0.35); color: var(--apr-trophy-gold); margin-bottom: 1.15rem; }
.apr-corevalue h3 { color: #fff; text-transform: uppercase; letter-spacing: 0.03em; position: relative; padding-bottom: 0.85rem; margin-bottom: 0.4rem; }
.apr-corevalue h3::after { content: ""; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 32px; height: 2px; background: var(--apr-grad-award); }
.apr-corevalue p { color: #AEB6C2; font-size: 0.94rem; line-height: 1.6; }

/* --- Trust bar (hero) --- */
.apr-trust-bar { background: rgba(26,32,44,0.85); backdrop-filter: blur(4px); border-top: 1px solid rgba(255,255,255,0.08); }
.apr-trust-bar__inner { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 2.5rem; padding: 1rem 1.5rem; }
.apr-trust-badge { display: flex; align-items: center; gap: 0.55rem; color: #fff; padding: 0.4rem 0; }
.apr-trust-badge svg { width: 22px; height: 22px; color: var(--apr-trophy-gold); flex: none; }
.apr-trust-badge span { font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.74rem; font-weight: 500; }
@media (max-width: 768px) { .apr-trust-bar__inner { gap: 0.5rem 1.25rem; } .apr-trust-badge span { font-size: 0.68rem; } }

/* --- Stats counter --- */
.apr-stats { display: flex; flex-wrap: wrap; justify-content: space-around; gap: 2.5rem 0; text-align: center; }
.apr-stat { flex: 1 1 150px; position: relative; padding: 0 1.5rem; display: flex; flex-direction: column; align-items: center; }
/* Gold hairline divider between stats (faded at the ends, hidden on the last). */
.apr-stat:not(:last-child)::after { content: ""; position: absolute; top: 10%; right: 0; height: 80%; width: 1px; background: linear-gradient(180deg, transparent 0%, rgba(212,168,71,0.45) 50%, transparent 100%); }
.apr-stat__icon { width: 32px; height: 32px; color: var(--apr-trophy-gold); opacity: 0.85; margin-bottom: 0.7rem; }
.apr-stat__num { font-family: var(--apr-font-head); font-weight: 700; color: var(--apr-trophy-gold); font-size: clamp(2.8rem, 5.2vw, 3.9rem); line-height: 1; }
/* Short gold accent rule under each figure. */
.apr-stat__num::after { content: ""; display: block; width: 30px; height: 2px; margin: 0.7rem auto 0; background: var(--apr-grad-award); opacity: 0.8; }
.apr-stat__label { font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.82rem; color: #fff; margin-top: 0.7rem; max-width: 12rem; }
@media (max-width: 680px) { .apr-stat:not(:last-child)::after { display: none; } }

/* --- Final CTA (red power band) --- */
.apr-cta { position: relative; overflow: hidden; }
/* Top-down highlight + faint blueprint grid give the flat red gradient real depth. */
.apr-cta::before { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(125% 100% at 50% 0%, rgba(255,255,255,0.14) 0%, transparent 55%),
              linear-gradient(rgba(255,255,255,0.05) 1px, transparent 1px),
              linear-gradient(90deg, rgba(255,255,255,0.05) 1px, transparent 1px);
  background-size: 100% 100%, 42px 42px, 42px 42px; }
.apr-cta__inner { position: relative; z-index: 1; }
.apr-cta__eyebrow { color: rgba(255,255,255,0.9); }
.apr-cta h2 { position: relative; }
.apr-cta h2::after { content: ""; display: block; width: 56px; height: 3px; margin: 1.15rem auto 0; background: var(--apr-grad-award); }
.apr-cta__text { color: rgba(255,255,255,0.92); font-size: 1.1rem; margin: 1.25rem auto 1.85rem; max-width: 640px; }

/* --- Testimonials --- */
.apr-testimonials { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.75rem; }
.apr-testimonial {
  background: #fff; border: 1px solid var(--apr-foundation); border-radius: var(--apr-radius);
  padding: 2rem; text-align: center; transition: border-color var(--apr-transition), transform var(--apr-transition), box-shadow var(--apr-transition);
}
.apr-testimonial:hover { border-color: var(--apr-trophy-gold); transform: translateY(-4px); box-shadow: var(--apr-shadow-sm); }
.apr-testimonial__avatar {
  width: 76px; height: 76px; border-radius: 50%; margin: 0 auto 0.9rem;
  border: 2px solid var(--apr-brushed-steel); object-fit: cover;
  display: flex; align-items: center; justify-content: center; background: var(--apr-foundation); color: var(--apr-brushed-steel);
}
.apr-testimonial__avatar svg { width: 40px; height: 40px; }
.apr-stars { color: var(--apr-trophy-gold); display: flex; justify-content: center; gap: 2px; margin-bottom: 0.85rem; }
.apr-stars svg { width: 18px; height: 18px; fill: currentColor; }
.apr-testimonial__text { color: var(--apr-gunmetal); font-size: 0.97rem; font-style: italic; margin-bottom: 1rem; }
.apr-testimonial__name { font-family: var(--apr-font-head); font-weight: 600; color: var(--apr-slate); font-size: 1.1rem; }
@media (max-width: 900px) { .apr-testimonials { grid-template-columns: 1fr; max-width: 520px; margin-inline: auto; } }

/* --- Process steps (vertical numbered) --- */
.apr-steps { display: flex; flex-direction: column; gap: 0; }
.apr-step { display: flex; gap: 1.1rem; position: relative; padding-bottom: 1.75rem; }
.apr-step:not(:last-child)::before {
  content: ""; position: absolute; left: 22px; top: 46px; bottom: 0; width: 2px; background: rgba(255,255,255,0.18);
}
.apr-step__num {
  flex: none; width: 46px; height: 46px; border-radius: 50%;
  border: 2px solid var(--apr-steel-blue); color: var(--apr-trophy-gold);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--apr-font-head); font-weight: 700; font-size: 1.2rem; background: rgba(43,76,126,0.15); z-index: 1;
}
.apr-step__body h4 { color: #fff; margin-bottom: 0.2rem; }
.apr-step__body p { color: var(--apr-brushed-steel); font-size: 0.92rem; }

/* Horizontal process (service pages) */
.apr-process-h { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
.apr-process-h .apr-step__num { margin: 0 auto 0.9rem; }
.apr-process-h .apr-proc { text-align: center; position: relative; }
.apr-process-h .apr-proc h4 { color: #fff; }
.apr-process-h .apr-proc p { color: var(--apr-brushed-steel); font-size: 0.9rem; }
@media (max-width: 768px) { .apr-process-h { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .apr-process-h { grid-template-columns: 1fr; } }

/* --- Forms --- */
.apr-form { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
.apr-form .apr-field--full { grid-column: 1 / -1; }
.apr-field { display: flex; flex-direction: column; gap: 0.35rem; }
.apr-field label { font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.74rem; font-weight: 500; }
.apr-field input, .apr-field select, .apr-field textarea {
  font-family: var(--apr-font-body); font-size: 0.97rem; padding: 0.8rem 0.9rem;
  border-radius: var(--apr-radius); border: 1px solid var(--apr-brushed-steel);
  background: #fff; color: var(--apr-slate); width: 100%;
  transition: border-color var(--apr-transition), box-shadow var(--apr-transition);
}
.apr-field input:focus, .apr-field select:focus, .apr-field textarea:focus {
  outline: none; border-color: var(--apr-shield-blue); box-shadow: 0 0 0 3px rgba(61,107,173,0.18);
}
/* Dark form variant (homepage booking card) */
.apr-form--dark { }
.apr-form--dark label { color: var(--apr-brushed-steel); }
.apr-form--dark input, .apr-form--dark select, .apr-form--dark textarea {
  background: var(--apr-midnight-steel); color: #fff; border-color: var(--apr-gunmetal);
}
.apr-form--dark input::placeholder, .apr-form--dark textarea::placeholder { color: rgba(255,255,255,0.4); }
.apr-honeypot { position: absolute; left: -9999px; opacity: 0; height: 0; overflow: hidden; }
.apr-form-card { background: var(--apr-slate); border: var(--apr-border-steel); border-radius: var(--apr-radius); padding: 2.25rem; }
.apr-form-note { font-size: 0.85rem; color: var(--apr-brushed-steel); margin-top: 1rem; text-align: center; }
.apr-form-note a { color: var(--apr-shield-blue); }
@media (max-width: 600px) { .apr-form { grid-template-columns: 1fr; } }

.apr-form-success {
  background: rgba(61,107,173,0.12); border: 1px solid var(--apr-shield-blue);
  border-radius: var(--apr-radius); padding: 2rem; text-align: center; color: inherit;
}
.apr-form-success svg { width: 48px; height: 48px; color: var(--apr-trophy-gold); margin: 0 auto 0.75rem; }

/* --- Badge text / pills --- */
.apr-mini-badges { display: flex; flex-wrap: wrap; gap: 1.25rem; }
.apr-mini-badge { display: flex; align-items: center; gap: 0.45rem; color: var(--apr-brushed-steel); font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.72rem; }
.apr-mini-badge svg { width: 22px; height: 22px; color: var(--apr-brushed-steel); }

/* --- Two column generic --- */
.apr-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }
/* !important overrides the per-page inline grid-template-columns (55/45, 60/40, etc.) so two-col stacks on mobile instead of squeezing/overflowing the viewport. */
@media (max-width: 900px) { .apr-two-col { grid-template-columns: 1fr !important; gap: 2rem; } }

/* --- Image with steel accent edge --- */
.apr-img-accent { border-left: 4px solid var(--apr-steel-blue); border-radius: var(--apr-radius); overflow: hidden; box-shadow: var(--apr-shadow-md); }
.apr-img-accent img { width: 100%; object-fit: cover; }

/* --- Media placeholder block (no photo yet) --- */
.apr-media-ph {
  position: relative; min-height: 320px; display: flex; align-items: center; justify-content: center;
  background-image: linear-gradient(rgba(61,107,173,0.14) 1px, transparent 1px), linear-gradient(90deg, rgba(61,107,173,0.14) 1px, transparent 1px), var(--apr-grad-steel);
  background-size: 36px 36px, 36px 36px, 100% 100%;
}
.apr-media-ph span { width: 72px; height: 72px; color: rgba(212,168,71,0.6); }
.apr-media-ph span svg { width: 100%; height: 100%; }

/* --- Gallery --- */
.apr-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.apr-gallery__item { position: relative; overflow: hidden; border-radius: var(--apr-radius); aspect-ratio: 4/3; cursor: pointer; border: 1px solid transparent; }
.apr-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s var(--apr-ease); }
.apr-gallery__item--ph {
  background-image: linear-gradient(rgba(61,107,173,0.14) 1px, transparent 1px), linear-gradient(90deg, rgba(61,107,173,0.14) 1px, transparent 1px), var(--apr-grad-steel);
  background-size: 32px 32px, 32px 32px, 100% 100%;
}
.apr-gallery__item--ph .apr-gallery__ph-icon { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -60%); width: 52px; height: 52px; color: rgba(212,168,71,0.55); }
.apr-gallery__item--ph .apr-gallery__overlay { opacity: 1; transform: none; background: linear-gradient(180deg, transparent 45%, rgba(26,32,44,0.82) 100%); }
.apr-gallery__item:hover img { transform: scale(1.04); }
.apr-gallery__overlay {
  position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end;
  padding: 1rem; background: linear-gradient(180deg, transparent 40%, rgba(26,32,44,0.88) 100%);
  opacity: 0; transform: translateY(12px); transition: opacity var(--apr-transition), transform var(--apr-transition);
}
.apr-gallery__item:hover .apr-gallery__overlay { opacity: 1; transform: translateY(0); }
.apr-gallery__type { font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.72rem; color: var(--apr-trophy-gold); }
.apr-gallery__loc { color: #fff; font-size: 0.92rem; }
a.apr-gallery__item { display: block; text-decoration: none; }
.apr-gallery__count { position: absolute; top: 0.6rem; right: 0.6rem; z-index: 2; display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.28rem 0.55rem; border-radius: 999px; background: rgba(26,32,44,0.78); color: #fff; font-family: var(--apr-font-label); font-size: 0.72rem; letter-spacing: 0.04em; pointer-events: none; }
.apr-gallery__count svg { width: 14px; height: 14px; color: var(--apr-trophy-gold); }
@media (max-width: 900px) { .apr-gallery { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .apr-gallery { grid-template-columns: 1fr; } }

/* --- Partner logos --- */
.apr-partners { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 2.5rem; margin-top: 2rem; }
.apr-partner { font-family: var(--apr-font-head); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--apr-brushed-steel); opacity: 0.6; font-size: 1.15rem; transition: color var(--apr-transition), opacity var(--apr-transition); }
.apr-partner:hover { opacity: 1; color: #fff; }

/* --- Insurance / financing two-col on steel --- */
.apr-split { display: grid; grid-template-columns: 1fr 1px 1fr; gap: 2.5rem; align-items: start; }
.apr-split__divider { background: rgba(255,255,255,0.2); width: 1px; height: 100%; }
.apr-split__col h3 { color: #fff; margin: 1rem 0 0.75rem; }
.apr-split__col p { color: rgba(255,255,255,0.9); margin-bottom: 1.5rem; }
.apr-split__icon { width: 60px; height: 60px; color: #fff; }
@media (max-width: 900px) { .apr-split { grid-template-columns: 1fr; gap: 2.5rem; } .apr-split__divider { display: none; } }

/* --- FAQ accordion --- */
.apr-faq { max-width: 820px; margin-inline: auto; }
.apr-faq__item { border-bottom: 1px solid rgba(255,255,255,0.14); }
.apr-faq__q {
  width: 100%; background: none; border: none; cursor: pointer; text-align: left;
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: 1.25rem 0; font-family: var(--apr-font-head); font-weight: 600; font-size: 1.15rem; color: #fff;
}
.apr-faq__q .apr-faq__icon { flex: none; transition: transform var(--apr-transition); color: var(--apr-trophy-gold); }
.apr-faq__q[aria-expanded="true"] .apr-faq__icon { transform: rotate(45deg); }
.apr-faq__a { max-height: 0; overflow: hidden; transition: max-height 0.35s var(--apr-ease); }
.apr-faq__a-inner { padding: 0 0 1.25rem; color: var(--apr-brushed-steel); }

/* --- Spec table --- */
.apr-specs { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; max-width: 900px; }
.apr-spec-row { display: flex; justify-content: space-between; gap: 1rem; padding: 0.9rem 1.2rem; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); border-radius: var(--apr-radius); }
.apr-spec-row dt { font-family: var(--apr-font-head); font-weight: 600; color: var(--apr-trophy-gold); text-transform: uppercase; font-size: 0.95rem; }
.apr-spec-row dd { color: #fff; text-align: right; }
@media (max-width: 700px) { .apr-specs { grid-template-columns: 1fr; } }


/* --- Emergency callout (contact) --- */
.apr-emergency {
  background: #fdf0f0; border-left: 5px solid var(--apr-patriot-red);
  border-radius: var(--apr-radius); padding: 1.5rem; margin-bottom: 1.75rem;
}
.apr-emergency h3 { color: var(--apr-deep-crimson); margin-bottom: 0.5rem; }
.apr-emergency a { color: var(--apr-patriot-red); font-weight: 700; }

/* --- Contact detail list --- */
.apr-contact-list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 1rem; }
.apr-contact-list li { display: flex; align-items: flex-start; gap: 0.75rem; }
.apr-contact-list svg { width: 24px; height: 24px; color: var(--apr-steel-blue); flex: none; margin-top: 2px; }

/* --- City links --- */
.apr-city-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.4rem 1.5rem; }
.apr-city-grid a { display: flex; align-items: center; gap: 0.4rem; color: var(--apr-slate); font-weight: 500; padding: 0.3rem 0; }
.apr-city-grid a:hover { color: var(--apr-steel-blue); }
.apr-city-grid svg { width: 14px; height: 14px; color: var(--apr-trophy-gold); }
@media (max-width: 600px) { .apr-city-grid { grid-template-columns: 1fr 1fr; } }

/* --- Lightbox --- */
.apr-lightbox { position: fixed; inset: 0; background: rgba(26,32,44,0.94); z-index: 9999; display: none; align-items: center; justify-content: center; padding: 2rem; }
.apr-lightbox.is-open { display: flex; }
.apr-lightbox img { max-width: 90vw; max-height: 80vh; border-radius: var(--apr-radius); }
.apr-lightbox__close { position: absolute; top: 1.5rem; right: 1.5rem; background: none; border: none; color: #fff; cursor: pointer; z-index: 2; }
.apr-lightbox__close svg { width: 36px; height: 36px; }
.apr-lightbox__stage { display: flex; flex-direction: column; align-items: center; gap: 0.75rem; margin: 0; }
.apr-lightbox__caption { color: #fff; font-size: 0.95rem; text-align: center; max-width: 70ch; text-shadow: 0 1px 4px rgba(0,0,0,0.5); }
.apr-lightbox__nav { flex: none; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.25); border-radius: 999px; width: 52px; height: 52px; display: inline-flex; align-items: center; justify-content: center; color: #fff; cursor: pointer; transition: var(--apr-transition); margin: 0 1rem; }
.apr-lightbox__nav:hover { background: var(--apr-trophy-gold); border-color: var(--apr-trophy-gold); color: var(--apr-iron-navy); }
.apr-lightbox__nav svg { width: 26px; height: 26px; }
.apr-lightbox__counter { position: absolute; bottom: 1.25rem; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,0.85); font-family: var(--apr-font-label); font-size: 0.8rem; letter-spacing: 0.08em; }
@media (max-width: 700px) {
	.apr-lightbox { padding: 1rem 0.5rem; }
	.apr-lightbox__nav { position: absolute; bottom: 3rem; margin: 0; z-index: 2; }
	.apr-lightbox__prev { left: 1rem; }
	.apr-lightbox__next { right: 1rem; }
}

/* --- Featured project spotlight (Work page) --- */
.apr-spotlight { display: grid; grid-template-columns: 1.15fr 1fr; text-decoration: none; background: var(--apr-grad-industrial); border-radius: var(--apr-radius-lg); overflow: hidden; box-shadow: var(--apr-shadow-lg); border: 1px solid var(--apr-border-steel); position: relative; }
.apr-spotlight::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--apr-trophy-gold), var(--apr-gold-deep)); z-index: 2; }
.apr-spotlight__media { position: relative; min-height: 380px; overflow: hidden; }
.apr-spotlight__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s var(--apr-ease); }
.apr-spotlight:hover .apr-spotlight__media img { transform: scale(1.04); }
.apr-spotlight__media .apr-gallery__count { top: 1rem; right: 1rem; }
.apr-spotlight__body { padding: 2.75rem 2.5rem; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 0.9rem; }
.apr-spotlight__body h2 { color: #fff; margin: 0; }
.apr-spotlight__meta { color: var(--apr-trophy-gold); font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.78rem; margin: 0; }
.apr-spotlight__desc { color: var(--apr-steel-mist); margin: 0; line-height: 1.7; }
.apr-spotlight .apr-btn { margin-top: 0.5rem; }
.apr-filter-bar .apr-btn.is-active { background: var(--apr-grad-steel); color: #fff; border-color: transparent; box-shadow: 0 6px 18px rgba(43,76,126,0.3); }
.apr-spotlight--flip .apr-spotlight__media { order: 2; }
.apr-spotlight__ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--apr-grad-steel); }
.apr-spotlight__ph svg { width: 56px; height: 56px; color: rgba(212,168,71,0.55); }
.apr-worklist { display: flex; flex-direction: column; gap: 2rem; }
@media (max-width: 900px) {
	.apr-spotlight { grid-template-columns: 1fr; }
	.apr-spotlight--flip .apr-spotlight__media { order: 0; }
	.apr-spotlight__media { min-height: 240px; aspect-ratio: 16/9; }
	.apr-spotlight__body { padding: 1.75rem 1.5rem 2rem; }
}

/* --- Project case-study stats strip --- */
.apr-projstats { display: flex; flex-wrap: wrap; background: #fff; border: 1px solid var(--apr-border-steel); border-radius: var(--apr-radius-lg); box-shadow: var(--apr-shadow-md); overflow: hidden; margin-bottom: 2.75rem; }
.apr-projstats__item { flex: 1 1 0; min-width: 150px; display: flex; align-items: center; gap: 0.8rem; padding: 1.25rem 1.4rem; border-right: 1px solid var(--apr-border-steel); }
.apr-projstats__item:last-child { border-right: none; }
.apr-projstats__item svg { width: 26px; height: 26px; color: var(--apr-trophy-gold); flex: none; }
.apr-projstats__label { display: block; font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.09em; font-size: 0.68rem; color: var(--apr-slate); }
.apr-projstats__val { display: block; font-weight: 700; color: var(--apr-iron-navy); font-size: 0.98rem; line-height: 1.3; }
@media (max-width: 700px) {
	.apr-projstats { flex-direction: column; }
	.apr-projstats__item { border-right: none; border-bottom: 1px solid var(--apr-border-steel); padding: 0.9rem 1.2rem; }
	.apr-projstats__item:last-child { border-bottom: none; }
}

/* --- Numbered progression photos (single project gallery). NOT .apr-step:
   that class is the booking/process step list on the front page and service
   pages; overriding its __num broke those layouts once already. --- */
.apr-photostep { margin: 0; }
.apr-photostep__num { position: absolute; top: 0.6rem; left: 0.6rem; z-index: 2; width: 30px; height: 30px; border-radius: 999px; background: var(--apr-trophy-gold); color: var(--apr-iron-navy); font-family: var(--apr-font-label); font-weight: 700; font-size: 0.82rem; display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--apr-shadow-sm); pointer-events: none; }
.apr-photostep__cap { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 1.6rem 0.9rem 0.7rem; background: linear-gradient(180deg, transparent, rgba(26,32,44,0.85)); color: #fff; font-size: 0.85rem; line-height: 1.4; pointer-events: none; margin: 0; }

/* --- Scroll indicator --- */
.apr-scroll-cue { position: absolute; left: 50%; bottom: 84px; transform: translateX(-50%); color: rgba(255,255,255,0.8); z-index: 4; }
.apr-scroll-cue svg { width: 28px; height: 28px; }

/* Brand assets pulled from client's previous site */
.apr-partner-logo {
  height: 64px; width: auto; max-width: 180px; object-fit: contain;
  background: #fff; padding: 10px 16px; border-radius: var(--apr-radius);
  opacity: 0.92; transition: opacity var(--apr-transition), transform var(--apr-transition);
}
.apr-partner-logo:hover { opacity: 1; transform: translateY(-2px); }
.apr-award__torch-img { height: 84px; width: auto; filter: brightness(0.25); }
.apr-hero-award__badge { height: 52px; width: auto; }
.apr-hero__shield img { filter: drop-shadow(0 4px 18px rgba(0,0,0,0.45)); }
.apr-area-card { background: #fff; border: 1px solid var(--apr-steel-mist, #E2E8F0); border-radius: 8px; padding: 1.25rem 1.4rem; }
.apr-area-card h3 { display: flex; align-items: center; gap: 0.45rem; font-size: 1.05rem; margin-bottom: 0.6rem; }
.apr-area-card h3 svg { width: 18px; height: 18px; color: var(--apr-patriot-red); flex: none; }
.apr-area-card ul { list-style: none; padding: 0; margin: 0; }
.apr-area-card li a, .apr-sitemap-list li a { display: inline-flex; align-items: center; gap: 0.25rem; color: var(--apr-gunmetal); padding: 0.18rem 0; }
.apr-area-card li a svg, .apr-sitemap-list li a svg { width: 14px; height: 14px; color: var(--apr-steel-blue); flex: none; }
.apr-area-card li a:hover, .apr-sitemap-list li a:hover { color: var(--apr-patriot-red); }

/* Icon spans must size their inner SVG explicitly — apr_icon() SVGs ship with viewBox only,
   so an unconstrained SVG expands to its container width. */
.apr-value-card__icon, .apr-split__icon, .apr-award__icon, .apr-corevalue__icon, .apr-stat__icon { display: block; }
.apr-value-card__icon svg, .apr-split__icon svg, .apr-award__icon svg,
.apr-corevalue__icon svg, .apr-service-card__icon svg, .apr-stat__icon svg { width: 100%; height: 100%; display: block; }
.apr-faq__icon { display: block; width: 22px; height: 22px; }
.apr-faq__icon svg { width: 100%; height: 100%; display: block; }

/* Service-area map (front page, Leaflet) — self-hosted, 50-mile radius circle */
.apr-service-map-wrap { position: relative; }
#apr-service-map { height: 420px; width: 100%; z-index: 0; background: var(--apr-concrete-cream); }
#apr-service-map .leaflet-tile-pane { filter: grayscale(0.35) contrast(1.05); }
.apr-service-map__badge {
  position: absolute; top: 0.9rem; right: 0.9rem; z-index: 500;
  display: inline-flex; align-items: center; gap: 0.45rem;
  background: var(--apr-steel-blue); color: #fff;
  font-family: var(--apr-font-label); text-transform: uppercase; letter-spacing: 0.08em;
  font-size: 0.78rem; padding: 0.5rem 0.85rem; border-radius: var(--apr-radius);
  box-shadow: var(--apr-shadow-md); pointer-events: none;
}
.apr-service-map__badge svg { width: 15px; height: 15px; color: var(--apr-trophy-gold); }
@media (max-width: 768px) { #apr-service-map { height: 320px; } }
