/* TLC shared components. Mobile first. Page compositions belong in their own stylesheet. */

.tlc-wrap { width: 100%; max-width: var(--tlc-max); margin-inline: auto; padding-inline: var(--tlc-gutter); }

/* Type helpers */
.tlc-eyebrow { display: block; margin: 0 0 var(--tlc-s4); font-size: var(--tlc-text-xs); font-weight: 700; letter-spacing: .12em; line-height: 1.4; text-transform: uppercase; color: var(--tlc-green-text); }
.tlc-on-dark .tlc-eyebrow { color: var(--tlc-green); }
.tlc-h2 { font-size: var(--tlc-h2); line-height: 1.04; letter-spacing: var(--tlc-track-tight); font-weight: 700; }
.tlc-h3 { font-size: var(--tlc-h3); line-height: 1.12; letter-spacing: -.02em; font-weight: 700; }
.tlc-lead { font-size: var(--tlc-text-lg); line-height: 1.5; }
.tlc-body { font-size: var(--tlc-text-md); line-height: 1.65; }

/* Buttons. Green is reserved for quote actions. */
.tlc-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--tlc-s2); min-height: 54px; padding: 14px 26px; border: 1px solid transparent; border-radius: 6px; background: var(--tlc-green); color: var(--tlc-navy); font: 700 1.0625rem/1.2 var(--tlc-font); text-align: center; text-decoration: none; cursor: pointer; transition: background var(--tlc-fast), color var(--tlc-fast), border-color var(--tlc-fast), transform var(--tlc-fast) var(--tlc-ease); }
.tlc-btn:hover { background: var(--tlc-green-hover); transform: translateY(-2px); }
.tlc-btn:active { transform: translateY(0); }
.tlc-btn--navy { background: var(--tlc-navy); color: var(--tlc-white); }
.tlc-btn--navy:hover { background: var(--tlc-navy-2); }
.tlc-btn--ghost { background: transparent; border-color: currentColor; color: inherit; }
.tlc-btn--ghost:hover { background: var(--tlc-white); color: var(--tlc-navy); }
.tlc-btn--sm { min-height: 44px; padding: 9px 18px; font-size: var(--tlc-text-sm); }

/* Text link with a travelling arrow */
.tlc-link { display: inline-flex; align-items: center; gap: var(--tlc-s2); min-height: 44px; color: inherit; font-weight: 700; font-size: var(--tlc-text-sm); text-decoration: underline; text-decoration-color: var(--tlc-green); text-decoration-thickness: 2px; text-underline-offset: 5px; background: none; border: 0; padding: 0; cursor: pointer; }
.tlc-link::after { content: "\2192"; transition: transform var(--tlc-fast) var(--tlc-ease); }
.tlc-link:hover::after { transform: translateX(5px); }

/* Focus is shared and always visible */
.tlc-btn:focus-visible, .tlc-link:focus-visible, .tlc-chip:focus-visible, .tlc-faq summary:focus-visible { outline: 3px solid var(--tlc-green-text); outline-offset: 3px; }
.tlc-on-dark .tlc-btn:focus-visible, .tlc-on-dark .tlc-link:focus-visible, .tlc-on-dark .tlc-chip:focus-visible { outline-color: var(--tlc-green); }

/* Actions row */
.tlc-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--tlc-s3) var(--tlc-s5); }

/* Photography */
.tlc-media { position: relative; margin: 0; }
.tlc-media img { width: 100%; height: 100%; object-fit: cover; }
.tlc-media--sweep-tr { border-radius: var(--tlc-corner) var(--tlc-sweep-md) var(--tlc-corner) var(--tlc-corner); overflow: hidden; }
.tlc-media--sweep-tl { border-radius: var(--tlc-sweep-md) var(--tlc-corner) var(--tlc-corner) var(--tlc-corner); overflow: hidden; }
.tlc-media--sweep-br { border-radius: var(--tlc-corner) var(--tlc-corner) var(--tlc-sweep-md) var(--tlc-corner); overflow: hidden; }
.tlc-media--inset { border: 6px solid var(--tlc-white); border-radius: var(--tlc-sweep-sm) var(--tlc-corner) var(--tlc-sweep-sm) var(--tlc-corner); box-shadow: var(--tlc-shadow); overflow: hidden; }
.tlc-caption { font-size: var(--tlc-text-xs); line-height: 1.4; color: var(--tlc-ink-soft); margin-top: var(--tlc-s2); }

/* Fact list */
.tlc-facts { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--tlc-line); }
.tlc-facts li { padding: var(--tlc-s3) 0; border-bottom: 1px solid var(--tlc-line); font-size: var(--tlc-text-sm); line-height: 1.5; }
.tlc-facts strong { display: block; font-size: var(--tlc-text-md); }

/* Chips */
.tlc-chip { display: inline-flex; align-items: center; min-height: 40px; padding: 7px 13px; border: 1px solid var(--tlc-line); border-radius: 22px; background: var(--tlc-white); color: var(--tlc-ink); font: 700 var(--tlc-text-sm)/1.2 var(--tlc-font); cursor: pointer; transition: background var(--tlc-fast), border-color var(--tlc-fast), color var(--tlc-fast); }
.tlc-chip:hover, .tlc-chip.is-active { background: var(--tlc-navy); border-color: var(--tlc-navy); color: var(--tlc-white); }

/* Reviews. One card style everywhere. Content comes from the live review integration. */
.tlc-review { display: flex; flex-direction: column; justify-content: space-between; gap: var(--tlc-s5); height: 100%; margin: 0; padding: var(--tlc-s6) var(--tlc-s5) var(--tlc-s5); border-top: 3px solid var(--tlc-green); border-radius: var(--tlc-corner) var(--tlc-corner) var(--tlc-sweep-sm) var(--tlc-corner); background: var(--tlc-white); color: var(--tlc-ink); }
.tlc-review blockquote { margin: 0; font-size: var(--tlc-text-lg); line-height: 1.42; letter-spacing: -.005em; }
.tlc-review figcaption { display: flex; align-items: center; gap: var(--tlc-s3); padding-top: var(--tlc-s4); border-top: 1px solid var(--tlc-line); font-size: var(--tlc-text-sm); font-weight: 700; line-height: 1.3; }
.tlc-review small { display: block; font-size: var(--tlc-text-xs); font-weight: 400; color: var(--tlc-ink-soft); }
.tlc-review__mark { flex: 0 0 40px; height: 40px; border-radius: 50%; background: var(--tlc-navy); color: var(--tlc-green); font-weight: 700; text-align: center; line-height: 40px; }
.tlc-stars { color: #f5a623; letter-spacing: 2px; }

/* FAQ. Native details, one consistent interaction, animated where the browser allows. */
.tlc-faq { border-top: 1px solid var(--tlc-line); }
.tlc-faq details { border-bottom: 1px solid var(--tlc-line); interpolate-size: allow-keywords; }
.tlc-faq summary { display: flex; justify-content: space-between; align-items: center; gap: var(--tlc-s4); min-height: 64px; padding: var(--tlc-s4) 0; cursor: pointer; list-style: none; }
.tlc-faq summary::-webkit-details-marker { display: none; }
.tlc-faq summary h3 { margin: 0; font-size: var(--tlc-text-lg); line-height: 1.25; letter-spacing: -.01em; }
.tlc-faq summary::after { content: ""; flex: 0 0 18px; height: 18px; background: linear-gradient(var(--tlc-green-text), var(--tlc-green-text)) center/100% 3px no-repeat, linear-gradient(var(--tlc-green-text), var(--tlc-green-text)) center/3px 100% no-repeat; transition: transform var(--tlc-base) var(--tlc-ease); }
.tlc-faq details[open] summary::after { transform: rotate(135deg); }
.tlc-faq details::details-content { height: 0; overflow: clip; transition: height var(--tlc-base) var(--tlc-ease), content-visibility var(--tlc-base) allow-discrete; }
.tlc-faq details[open]::details-content { height: auto; }
.tlc-faq details p { max-width: 62ch; margin: 0 0 var(--tlc-s5); font-size: var(--tlc-text-md); line-height: 1.6; }

/* Persistent quote access. Hidden until the page turns it on with .is-visible. */
.tlc-bar, .tlc-dock { position: fixed; left: 0; right: 0; z-index: var(--tlc-z-bar); visibility: hidden; opacity: 0; background: var(--tlc-navy); color: var(--tlc-white); transition: transform var(--tlc-base) var(--tlc-ease), opacity var(--tlc-base), visibility var(--tlc-base); }
.tlc-bar.is-visible, .tlc-dock.is-visible { visibility: visible; opacity: 1; transform: none; }
.tlc-bar { display: none; top: 0; transform: translateY(-100%); box-shadow: 0 8px 24px rgba(13, 25, 38, .22); }
.tlc-dock { bottom: 0; display: grid; grid-template-columns: 1fr 1.6fr; gap: var(--tlc-s2); padding: var(--tlc-s2) var(--tlc-s3) calc(var(--tlc-s2) + env(safe-area-inset-bottom)); transform: translateY(100%); box-shadow: 0 -8px 24px rgba(13, 25, 38, .22); }
.tlc-dock .tlc-btn { min-height: 46px; padding: 8px 10px; font-size: 1rem; }
.tlc-bar__inner { display: flex; align-items: center; gap: var(--tlc-s5); min-height: 64px; }
.tlc-bar__logo { width: 62px; margin-right: auto; }
.tlc-bar__logo img { height: 42px; object-fit: contain; }
@media (min-width: 760px) { .tlc-bar { display: block; } .tlc-dock { display: none; } }

/* Scroll reveal. Content is visible unless motion.js adds .is-armed. */
.is-armed { opacity: 0; transform: translateY(26px); }
.is-armed.is-in { opacity: 1; transform: none; transition: opacity var(--tlc-slow) var(--tlc-ease), transform var(--tlc-slow) var(--tlc-ease); transition-delay: var(--tlc-delay, 0ms); }

@media (prefers-reduced-motion: reduce) {
  .tlc-btn, .tlc-link::after, .tlc-chip, .tlc-bar, .tlc-dock, .tlc-faq summary::after, .tlc-faq details::details-content { transition: none !important; }
  .tlc-btn:hover { transform: none; }
  .is-armed { opacity: 1; transform: none; }
}
