/* =====================================================================
   zoyasolovyeva.com: extra parts for the generated pages (mock-up)
   Load after /assets/site.css and /assets/location.css. Since 2026-11-08 every generated page loads it:
   the first block is the shared chrome (main menu Areas panel, Latin name under the Russian brand, footer by
   county, the Florida line on town pages, the call back small print). Every rule after it is for content, hub,
   legal and referral pages only and is scoped with :where(body:not(.tpl-location)) (no added specificity), so
   location pages keep the approved Winter Park layout. Same tokens, square corners, one accent.
   ===================================================================== */

/* ---------- Shared chrome, every template (site-architecture 4.6, 6.1, 6.2, 6.5) ---------- */
.brand-latin { font: 500 14px/1.2 var(--body); color: var(--ink-soft); margin-top: 2px; white-space: nowrap; }
.site-footer .brand-latin { display: block; color: var(--on-dark-soft); margin-top: 4px; }

/* Main menu: "Areas" opens a panel of Central Florida places by geography */
.header-row { position: relative; }
.nav { align-items: center; }
.nav-areas { position: static; }
.nav-areas > summary { display: inline-flex; align-items: center; gap: 7px; min-height: 44px; font-weight: 500; font-size: 15px; cursor: pointer; list-style: none; }
.nav-areas > summary::-webkit-details-marker { display: none; }
.nav-areas > summary::after { content: ""; width: 7px; height: 7px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .25s var(--ease); }
.nav-areas[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
.nav-areas > summary:focus-visible { outline: 2px solid var(--lake); outline-offset: 2px; }
.nav-panel { position: absolute; left: 0; right: 0; top: 100%; z-index: 45; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px 28px; padding: 22px 28px 16px; background: var(--paper); border: 1px solid var(--line); box-shadow: 0 30px 60px -40px rgba(15, 42, 51, .45); }
.nav-panel-title { margin: 0 0 2px; font: 700 14px/1.4 var(--body); letter-spacing: .1em; text-transform: uppercase; color: var(--lake); }
.nav-panel ul { list-style: none; margin: 0; padding: 0; }
.nav-panel-all { grid-column: 1 / -1; margin: 8px 0 0; padding-top: 6px; border-top: 1px solid var(--line); }
.nav-panel-all a { font-weight: 700; }
@media (min-width: 1081px) and (max-width: 1320px) { .header-row { gap: 16px; } .nav { gap: 4px 15px; } }
@media (min-width: 1081px) and (max-width: 1260px) { .header-cta { display: none; } }

/* Footer: Central Florida places by county, then all areas and Elsewhere in Florida */
@media (min-width: 1001px) { .foot-top { grid-template-columns: minmax(0, 3fr) minmax(0, 6fr) repeat(2, minmax(0, 2.3fr)); } }
.foot-counties { columns: 3; column-gap: 16px; }
@media (max-width: 560px) { .foot-counties { columns: 2; } }
.foot-county { break-inside: avoid; padding-bottom: 6px; }
.foot-sub { margin: 4px 0 0; font: 600 14px/1.4 var(--body); color: var(--on-dark-soft); }
.foot-col.areas .foot-counties ul { grid-template-columns: minmax(0, 1fr); }
.foot-col.areas .foot-more { margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--line-dark); }

/* Town pages: one line to the Florida hub, near the bottom */
.fl-line { margin: clamp(24px, 3vw, 36px) 0 0; font-size: 16px; line-height: 1.5; color: var(--ink-soft); }
.fl-line a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; color: var(--lake); text-underline-offset: 3px; }
.fl-line-sec { padding: 0 0 clamp(32px, 4vw, 56px); }

/* Call back and referral forms: small print line above the submit button */
.form-card .fine { font-size: 14px; line-height: 1.5; }
.form-card .fine .consent-links { display: inline-flex; flex-wrap: wrap; gap: 0 16px; }
.form-card .fine .consent-links a { display: inline-flex; align-items: center; min-height: 44px; padding-block: 0; font-weight: 600; color: var(--lake); text-underline-offset: 3px; }

/* ---------- Hero without a photo (content, legal, referral pages) ---------- */
:where(body:not(.tpl-location)) .lp-hero-grid.is-text { grid-template-columns: minmax(0, 1fr); max-width: 52rem; }
:where(body:not(.tpl-location)) .lp-h1.is-title { display: block; font: 400 clamp(40px, 5.4vw, 80px)/1.02 var(--display); letter-spacing: -.02em; color: var(--ink); text-wrap: balance; overflow-wrap: break-word; hyphens: manual; }
:where(body:not(.tpl-location)) .lp-lede { margin: 20px 0 0; font-size: 19px; line-height: 1.55; color: var(--ink-soft); max-width: 36em; }
@media (max-width: 560px) { :where(body:not(.tpl-location)) .lp-lede { font-size: 17px; } }
:where(body:not(.tpl-location)) .lp-hero .draft, :where(body:not(.tpl-location)) .prose .draft { margin: 22px 0 0; padding: 14px 18px; border-left: 3px solid var(--citrus); background: var(--paper); font-weight: 600; }

/* ---------- Prose sections: headings and lists inside .prose ---------- */
:where(body:not(.tpl-location)) .prose h3 { margin: 28px 0 10px; font: 600 20px/1.3 var(--body); color: var(--ink); }
:where(body:not(.tpl-location)) .prose ul, :where(body:not(.tpl-location)) .prose ol { margin: 0 0 16px; padding-left: 1.3em; color: var(--ink-soft); }
:where(body:not(.tpl-location)) .prose li { margin: 0 0 8px; }
:where(body:not(.tpl-location)) .prose li strong { color: var(--ink); }

/* ---------- Legal text (docs/legal/*.md) ---------- */
.legal-body { padding-top: 0; }
.legal-prose { max-width: 46rem; }
.legal-prose h2 { margin: 44px 0 12px; font: 400 clamp(26px, 3vw, 36px)/1.15 var(--display); color: var(--ink); }
.legal-prose h3 { margin: 28px 0 8px; }
.legal-prose p, .legal-prose li { font-size: 17px; }
.legal-prose a { color: var(--lake); text-underline-offset: 3px; overflow-wrap: anywhere; }
.legal-prose code { font: 500 14px/1.4 var(--mono); }
.legal-prose blockquote { margin: 0 0 16px; padding: 4px 0 4px 16px; border-left: 3px solid var(--line); }
.fill { background: color-mix(in srgb, var(--citrus) 18%, transparent); padding: 0 3px; font-weight: 600; color: var(--ink); }
.optional { margin: 0 0 16px; padding: 12px 16px 2px; border: 1px dashed color-mix(in srgb, var(--ink) 30%, transparent); }

/* ---------- Hub: grid of place cards ---------- */
.place-cards { margin: 32px 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.place-card a { display: flex; flex-direction: column; height: 100%; background: var(--paper); border: 1px solid var(--line); text-decoration: none; color: inherit; }
.place-card a:hover .pc-name { text-decoration: underline; text-underline-offset: 5px; }
.pc-media { display: block; aspect-ratio: 3 / 2; background: var(--mist); overflow: hidden; }
.pc-media img { width: 100%; height: 100%; object-fit: cover; border-radius: 0; }
.pc-body { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px 22px; }
.pc-name { font: 400 clamp(24px, 2.2vw, 30px)/1.1 var(--display); color: var(--ink); }
.pc-meta { font: 700 14px/1.4 var(--body); letter-spacing: .1em; text-transform: uppercase; color: var(--lake); }
.pc-text { font-size: 15px; line-height: 1.5; color: var(--ink-soft); }
.cards-sec + .cards-sec { padding-top: 0; }
.cards-empty { margin: 24px 0 0; color: var(--ink-soft); }
@media (max-width: 1100px) { .place-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .place-cards { grid-template-columns: minmax(0, 1fr); gap: 14px; } }

/* ---------- Referral pages: who does what, small print near the bottom ---------- */
.who-table { width: 100%; margin-top: 28px; }
.who-table thead th { text-align: left; font: 700 14px/1.4 var(--body); letter-spacing: .1em; text-transform: uppercase; color: var(--lake); padding: 0 0 10px; }
.who-table td { vertical-align: top; padding: 12px 16px 12px 0; border-top: 1px solid var(--line); font-size: 16px; color: var(--ink-soft); }
@media (max-width: 560px) { .who-table td { font-size: 15px; } }
.smallprint { padding: clamp(32px, 4vw, 56px) 0; }
.smallprint-box { max-width: 52rem; padding-top: 20px; border-top: 1px solid var(--line); }
.smallprint-title { margin: 0 0 8px; font: 700 14px/1.4 var(--body); color: var(--ink); }
.smallprint p { margin: 0 0 10px; font-size: 14px; line-height: 1.55; color: var(--ink-soft); }
.form-card .consent + .consent { margin-top: 12px; }
