/* Public farm presentation. Generated aerial is a concept, not inventory geometry. */
:root {
 --color-primary:#123543; --color-primary-light:#245363; --color-primary-dark:#092631;
 --color-accent:#d5a846; --color-accent-light:#edc56b;
 --color-bg:#f7f3e9; --color-bg-alt:#eee8da;
 --radius-lg:8px; --radius-xl:10px;
}
body { background:#f7f3e9; }
.site-header { background:#fffdf5; border-bottom:1px solid #dcd5c3; }
/* The shared footer phone source stays reachable above the navigation. */
.header-phone-bar { position:relative; z-index:1001; background:var(--color-primary); color:#fffdf5; }
.header-phone-bar .container { display:flex; justify-content:center; }
.header-phone-link { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:0 1rem; color:inherit; font-weight:750; text-decoration:underline; text-underline-offset:0.2em; }
.header-phone-link:hover { color:#fffdf5; }
.header-phone-link:focus-visible { outline:3px solid #edc56b; outline-offset:3px; }
.logo img { height:64px; }
.nav-menu a { border-radius:4px; }
.mobile-menu-toggle { position:relative; }
.btn { border-radius:999px; box-shadow:none; font-weight:750; }
.btn:hover { transform:none; }
.btn-primary { background:#e8b94f; color:#102f3b; border-color:#e8b94f; }
.btn-primary:hover { background:#f3ca6b; color:#102f3b; }
.home-hero.hero.farm-map-hero { display:flex; align-items:center; text-align:left; position:relative; isolation:isolate; padding:0; min-height:0; background:#102f3b; color:white; overflow:hidden; }
.home-hero.hero.farm-map-hero::before { content:none; }
.farm-hero-grid { position:relative; width:100%; display:flex; align-items:flex-end; justify-content:center; padding:0 1.25rem 2.6rem; }
.farm-map-hero .hero-copy { position:relative; z-index:2; max-width:920px; width:100%; text-align:center; padding-top:clamp(180px,min(25vw,calc(100svh - 480px)),330px); }
.home-hero.farm-map-hero .eyebrow { color:#f6d689; font-size:.8rem; letter-spacing:.15em; margin-bottom:.8rem; }
.home-hero.hero.farm-map-hero h1 { color:#fffdf2; font-family:Impact,'Arial Narrow','Franklin Gothic Medium',sans-serif; font-weight:800; font-size:clamp(2.6rem,5vw,4.2rem); line-height:1.05; letter-spacing:.025em; text-shadow:0 2px 15px #0005; max-width:none; margin-bottom:.65rem; }
.farm-location-line { font-family:Georgia,'Times New Roman',serif; font-size:clamp(1.3rem,2.4vw,1.85rem); font-style:italic; line-height:1.3; color:#ffe2a0; margin:0 0 .7rem; }
.home-hero.farm-map-hero .hero-tagline { color:#fffdf3; font-size:1rem; line-height:1.7; max-width:650px; margin:0 auto 1.3rem; }
.farm-map-hero .hero-actions { justify-content:center; gap:.75rem; flex-direction:row; max-width:none; margin-inline:auto; }
.farm-map-hero .hero-actions .btn { font-size:.9rem; padding:.85rem 1.7rem; }
.farm-map-hero .btn-primary { background:#edbe51; color:#102f3b; border-color:#edbe51; }
.farm-map-hero .btn-primary:hover { background:#f7d482; }
.farm-map-hero .btn-secondary { color:#fffdf2; background:#12354388; border:1px solid #fff9; backdrop-filter:none; }
.farm-map-hero .btn-secondary:hover { background:#123543; }
.farm-map-hero .hero-note { color:#e0e6df; font-size:.8rem; margin:.9rem auto 0; }
.farm-map { position:absolute; z-index:-1; inset:0 calc((100vw - 100%)/-2); margin:0; }
.farm-map-art { position:absolute; inset:0; }
.farm-map-art::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,transparent 12%,#07232b08 32%,#082631a6 66%,#082631f5 100%); }
.farm-map-art > img { width:100%; height:auto; object-fit:contain; opacity:.82; mask-image:linear-gradient(to bottom,#000 65%,transparent 100%); }
.farm-storage-links { display:flex; justify-content:center; background:#102f3b; border-top:1px solid #ffffff20; gap:0; padding:.15rem 1rem; }
.farm-storage-links a { display:flex; align-items:center; justify-content:space-between; gap:3rem; padding:1rem 2.25rem; color:#fff7e4; font-size:.9rem; font-weight:650; border-right:1px solid #ffffff20; }
.farm-storage-links a:first-child { border-left:1px solid #ffffff20; }
.farm-storage-links span { color:#edbe51; }
.farm-storage-links a:hover { background:#244650; color:#fff; }
.trust-strip { background:#fffaf0; box-shadow:none; border-bottom:1px solid #e4dcc9; }
.trust-strip strong { font-family:Georgia,serif; color:#123543; font-size:1.1rem; }
.trust-strip span { font-size:.875rem; }
.notice-banner { background:#ede2c6; color:#253c42; }
.why-choose { background:#123543; }
.feature-card { border-radius:5px; box-shadow:none; }
.feature-card:hover { transform:none; }
.feature-card .feature-icon { color:#edbe51; }
.location-block { scroll-margin-top:7rem; border-radius:8px; box-shadow:0 5px 25px #3a332509; }
.location-images { gap:1rem; }
.storage-image { border-radius:4px; }
.section-heading h2 { max-width:24ch; }
.section-heading .eyebrow { color:#977122; }
.cta-section { background:#123543; }
@media (min-width:801px) {
 .farm-map-art > img { height:100%; object-fit:cover; object-position:center bottom; transform:translateY(-48px); }
}
@media (min-width:801px) and (max-height:850px) {
 .farm-map-hero .hero-copy { padding-top:clamp(80px,calc(100svh - 510px),250px); }
}
@media (max-width:800px) {
 .farm-map-hero .hero-copy { padding-top:36vw; }
 .home-hero.hero.farm-map-hero h1 { font-size:clamp(2.6rem,6vw,3.4rem); }
 .home-hero.farm-map-hero .hero-tagline { line-height:1.5; margin-bottom:1rem; }
 .farm-map-art > img { height:auto; object-fit:contain; mask-image:linear-gradient(to bottom,#000 62%,transparent 100%); }
 .farm-map-art::after { background:none; }
 .farm-storage-links a { padding:.9rem 1.25rem; gap:1rem; }
}
@media (max-width:480px) {
 .logo img { height:56px; }
 .farm-hero-grid { padding-inline:1rem; padding-bottom:2.2rem; }
 .farm-map-hero .hero-copy { padding-top:40vw; }
 .home-hero.hero.farm-map-hero h1 { font-size:clamp(2.4rem,10.5vw,3rem); line-height:1.02; }
 .home-hero.hero.farm-map-hero h1 span { display:block; }
 .home-hero.farm-map-hero .eyebrow { font-size:.65rem; letter-spacing:.1em; }
 .home-hero.farm-map-hero .hero-tagline { font-size:.9rem; }
 .farm-map-hero .hero-actions { display:grid; grid-template-columns:1fr 1fr; align-items:stretch; gap:.6rem; }
 .farm-map-hero .hero-actions .btn { width:auto; min-height:48px; padding:.65rem .6rem; font-size:.78rem; line-height:1.35; display:flex; align-items:center; justify-content:center; }
 .farm-map-hero .hero-note { max-width:none; font-size:.7rem; line-height:1.45; }
 .farm-map-art > img { height:auto; object-fit:contain; }
 .farm-storage-links { padding:0; }
 .farm-storage-links a { padding:.9rem .8rem; font-size:.75rem; gap:.7rem; border:0; }
 .farm-storage-links a:first-child { border-left:0; }
}
@media print {
 .farm-map { position:relative; inset:auto; height:300px; }
 .farm-hero-grid { display:block; min-height:0; }
 .farm-map-hero .hero-copy { padding-top:1rem; }
}

/* Keep the navigation reachable while reading a long storage page. */
.farm-back-to-top { position: fixed; right: 1rem; bottom: 1rem; z-index: 1100; display: inline-flex; align-items: center; min-height: 44px; padding: .6rem 1rem; border-radius: 4px; background: var(--color-primary); color: #fff; box-shadow: 0 2px 8px #0004; }
.farm-back-to-top:hover, .farm-back-to-top:focus { color: #fff; background: var(--color-primary-dark); }
#availability { scroll-margin-top: 11rem; }
.rate-item .rate-price, .rate-item .rate-status { font-size: 1rem; font-weight: 700; color: var(--color-text-primary); font-style: normal; }
.rate-item .rate-status { display: block; }
.rate-total { font-size: 1rem; color: var(--color-text-primary); }
@media (min-width: 769px) { .nav-menu a { padding-inline: .6rem; } }

/* T963: spacing and flow fixes from the Farm visual review. */
.storage-locations .section-heading h2 { margin-bottom:1rem; }
.availability-list li { display:flex; flex-wrap:wrap; align-items:center; gap:.75rem 1rem; }
.availability-list li > span { font-size:1rem; line-height:1.5; letter-spacing:normal; text-transform:none; white-space:normal; }
.contact-grid { grid-template-columns:minmax(0,1fr); }
.farm-back-to-top[hidden] { display:none; }
@media(min-width:900px) {
    .contact-info { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.5rem 2rem; }
    .contact-info h2, .contact-info .phone-spoof-notice, .contact-info .service-area-note { grid-column:1 / -1; }
}
@media(max-width:768px) {
    /* In the footer flow, this control cannot cover phone content or form fields. */
    .farm-back-to-top { position:static; width:fit-content; margin:1rem auto; display:flex; }
}

/* T-1217: the home opening table (one row and one status per line), the
   tap-to-open folds that keep building details out of view until asked for,
   and the Contact card. Folds use the browser's own details/summary. */
.farm-openings { margin:0 0 2rem; padding:1rem; background:#fffaf0; border:1px solid #e4dcc9; border-radius:8px; }
.farm-openings-table { width:100%; border-collapse:collapse; font-size:.95rem; line-height:1.35; }
.farm-openings-table caption { text-align:left; font-family:Georgia,serif; font-size:1.15rem; font-weight:700; color:var(--color-primary); padding-bottom:.5rem; }
.farm-openings-table th, .farm-openings-table td { padding:.45rem .4rem; text-align:left; vertical-align:top; border-bottom:1px solid #e4dcc9; }
.farm-openings-table thead th { font-size:.78rem; text-transform:uppercase; letter-spacing:.04em; color:#4f4a3d; }
.farm-openings-table tbody th[scope="row"] { font-weight:600; }
.farm-openings-group th { background:#ede2c6; color:#253c42; font-weight:750; }
.farm-openings-status { font-weight:750; }
.farm-openings-note { margin:.6rem 0 0; font-size:.95rem; }
.farm-openings-actions { display:flex; flex-wrap:wrap; align-items:center; gap:.6rem 1rem; margin-top:1rem; }
.farm-openings-actions a:not(.btn) { font-weight:700; text-decoration:underline; text-underline-offset:.2em; }
.farm-openings-call { background:#fffdf5; color:var(--color-primary); border:2px solid var(--color-primary); }
.farm-openings-call:hover { background:var(--color-primary); color:#fffdf5; }
.farm-fold { margin-top:1rem; }
.farm-fold > summary { display:list-item; cursor:pointer; min-height:44px; padding:.6rem 0; font-weight:750; color:var(--color-primary); text-decoration:underline; text-underline-offset:.2em; }
.farm-fold > summary:focus-visible { outline:3px solid #173c2a; outline-offset:3px; }
.why-choose .farm-fold > summary { color:#fffdf5; }
.why-choose .farm-fold > summary:focus-visible { outline-color:#dce5be; }
.location-fold { margin-bottom:1rem; }
.farm-contact-card { margin:1rem 0 1.5rem; padding:1rem 1.25rem; background:#fffaf0; border:1px solid #e4dcc9; border-radius:8px; }
.farm-contact-card p { margin:.25rem 0; }
.farm-contact-card a { font-weight:700; text-decoration:underline; text-underline-offset:.2em; }
/* Phone: the folded home page fits in under eight 375 x 812 screens (T-1217
   acceptance). Tighter section bands, a one-row trust strip and compact cards;
   no words are removed by these rules. */
@media(max-width:480px) {
    .farm-openings { padding:.75rem .6rem; }
    .farm-openings-table { font-size:.85rem; }
    .farm-openings-table th, .farm-openings-table td { padding:.4rem .25rem; }
    .farm-openings-table thead th { font-size:.68rem; letter-spacing:.02em; }
    .farm-openings-note { font-size:.9rem; line-height:1.45; }
    .farm-openings-actions { gap:.5rem .75rem; }
    .farm-openings-actions .btn { padding:.6rem 1rem; font-size:.85rem; }
    .storage-locations, .why-choose, .how-it-works, .service-area, .faq-section, section.cta { padding-top:2.5rem; padding-bottom:2.5rem; }
    .trust-strip ul { grid-template-columns:repeat(3,minmax(0,1fr)); padding-block:0; }
    .trust-strip li { padding:.6rem .35rem; text-align:center; }
    .trust-strip li:not(:last-child) { border-bottom:0; border-right:1px solid #e4dcc9; }
    .trust-strip li::before { content:none; }
    .trust-strip strong { font-size:.85rem; line-height:1.25; }
    .trust-strip span { font-size:.72rem; line-height:1.3; }
    .location-block { padding:1rem; margin-bottom:1rem; }
    .location-header { margin-bottom:.5rem; }
    .location-block .location-description { font-size:1rem; line-height:1.55; margin-bottom:.5rem; }
    .location-fold { margin:.5rem 0; }
    .faq-item summary { padding:.8rem 2.6rem .8rem 1rem; font-size:1rem; }
    section.cta p:not(.eyebrow) { font-size:1rem; line-height:1.5; margin-bottom:1rem; }
    .site-footer { padding-top:2.5rem; }
    .footer-content { gap:1.25rem; margin-bottom:1.25rem; padding-bottom:1.25rem; }
    .footer-links ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 1rem; }
    .section-heading { margin-bottom:1.25rem; }
    .section-heading h2 { font-size:1.75rem; line-height:1.15; }
    section.cta h2 { font-size:2rem; }
}

/* Contact fragment links must clear the sticky phone header, like other farm anchors. */
#contactForm { scroll-margin-top: 7rem; }

/* T-1107: a refused Send lands on this summary at the top of the form, so the
   renter sees why at once. Same red as the per-field lines it lists. Focused
   fields and the summary clear the sticky header like the form anchor does. */
.contact-error-summary { margin:0 0 1.25rem; padding:1rem 1.25rem; border:3px solid #8a1c1c; border-radius:8px; background:#fff; color:#8a1c1c; }
.contact-error-summary h3 { margin:0 0 .4rem; color:#8a1c1c; }
.contact-error-summary p { margin:0 0 .5rem; color:var(--color-text-primary); }
.contact-error-summary ul { margin:0; padding-left:1.25rem; }
.contact-error-summary a { color:#8a1c1c; font-weight:700; }
.contact-error-summary:focus-visible { outline:3px solid #173c2a; outline-offset:3px; }
.contact-error-summary[hidden], .contact-error-summary li[hidden], .public-inquiry-error[hidden] { display:none; }
.contact-error-summary, .contact-form input, .contact-form select, .contact-form textarea { scroll-margin-top: 7rem; }
.contact-jump { margin:1rem 0 1.5rem; }

/* The fixed control can cross both page and footer. The dark inner halo
   and white outer ring keep keyboard focus visible on either surface. */
.farm-back-to-top:focus-visible { outline: 3px solid #ffffff; outline-offset: 3px; box-shadow: 0 0 0 6px #173c2a; }

/* Only these two dark surfaces failed the farm's existing ring. Keep the
   strip ring inside its cell; footer rings sit on the dark footer surface. */
.farm-storage-links a:focus-visible,
.site-footer a:focus-visible { outline: 3px solid #edc56b; outline-offset: 3px; }
.farm-storage-links a:focus-visible { outline-offset: -5px; }
.farm-storage-links a:focus:not(:focus-visible),
.site-footer a:focus:not(:focus-visible) { outline: none; }

/* T1133: Contact-only spacing and full-building treatment. No other page's notes change.
   Do not hide or size the challenge here: it must have room whenever interaction is required. */
.contact-page .form-note { padding:.4rem .65rem; margin-bottom:.65rem; }
.contact-page .availability-note { padding:.25rem 0; margin:.5rem 0; }
.contact-page .farm-human-check { margin:.5rem 0; }
.contact-page .availability-list li.availability-waitlist-only { border-left-color:#8a1c1c; background:#fff1f0; color:#7f1d1d; }
.contact-page .availability-waitlist-tag { display:inline-block; padding:.15rem .5rem; border-radius:4px; background:#8a1c1c; color:#fff; font-size:.82rem; font-weight:700; line-height:1.5; }

/* T-1256: one photo per building beside its heading, always in view (the folds
   hid all six). The box is fixed here (width and 4:3 shape) and the img carries
   its own width/height, so nothing moves when the lazy photo arrives. Each photo
   is a plain link to the full-size file. */
.location-header { flex-wrap:nowrap; align-items:flex-start; gap:1rem; }
.location-header h3 { flex:1 1 auto; min-width:0; }
/* T-1260: the img sizes attribute in farmHomePhoto() mirrors this clamp; change both together. */
.location-thumb { flex:0 0 auto; display:block; width:clamp(6rem, 22vw, 10rem); }
.location-thumb img { display:block; width:100%; height:auto; aspect-ratio:4 / 3; object-fit:cover; }
.location-photo { display:block; }
.location-photo img { display:block; }
.location-thumb:focus-visible, .location-photo:focus-visible { outline:3px solid #173c2a; outline-offset:3px; }
