.proposal-public { margin: 0; min-height: 100vh; background: var(--map-ivory); }
.proposal-public * { box-sizing: border-box; }
.proposal-skip { position: absolute; left: -10000px; }.proposal-skip:focus { left: 1rem; top: 1rem; z-index: 20; background: var(--map-card); padding: 1rem; }
.proposal-hero { position: relative; min-height: 480px; color: var(--map-white); background: var(--map-black); overflow: hidden; }
.proposal-hero-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.proposal-hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, var(--map-black), transparent); opacity: .88; }
.proposal-topbar { position: relative; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 1.5rem clamp(1rem, 5vw, 5rem); }
.proposal-topbar > span:last-child { font-size: .75rem; letter-spacing: .08em; }
.proposal-hero-copy { position: relative; padding: 2rem clamp(1rem, 5vw, 5rem) 3rem; max-width: 850px; }
.proposal-hero-copy > p:first-child { font: 1.4rem Georgia, serif; }
.proposal-hero h1 { font: clamp(2.5rem, 7vw, 5rem)/1.05 Georgia, serif; margin: .5rem 0 1.5rem; overflow-wrap: anywhere; }
.proposal-recipient { font-size: .9rem; margin-bottom: 1rem; }.proposal-introduction { max-width: 38rem; line-height: 1.7; overflow-wrap: anywhere; }
.proposal-hero-link { display: inline-flex; align-items: center; min-height: 48px; margin-top: 1.5rem; border-bottom: 1px solid var(--map-gold-light); }
.proposal-strip { display: flex; flex-wrap: wrap; gap: 1rem 2rem; justify-content: center; padding: 1.5rem; border-bottom: 1px solid var(--map-border); color: var(--map-muted); font-size: .8rem; }
.proposal-content { max-width: 1440px; padding: clamp(1rem, 4vw, 4rem); margin: auto; }
.proposal-section-title { font: clamp(1.8rem, 3vw, 2.5rem) Georgia, serif; margin: .5rem 0 2rem; }
.proposal-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 1.5rem; }
.proposal-card { background: var(--map-card); border: 1px solid var(--map-border); border-radius: .75rem; overflow: hidden; }
.proposal-card > img { width: 100%; aspect-ratio: 16/10; object-fit: cover; }
.proposal-card-body { padding: 1.5rem; }.proposal-card h3 { font: 1.6rem Georgia, serif; margin: .5rem 0 1rem; overflow-wrap: anywhere; }.proposal-card .map-prices { margin: 1rem 0; }
.proposal-detail-link { display: flex; align-items: center; justify-content: center; min-height: 48px; border: 1px solid var(--map-gold); border-radius: .4rem; margin-top: 1.5rem; }
.proposal-space { border-top: 1px solid var(--map-border); margin-top: 3rem; padding-top: 2rem; scroll-margin-top: 1rem; }.proposal-space:target { border-top-color: var(--map-gold); }
.proposal-space-heading h2 { font: clamp(1.8rem, 3vw, 2.5rem) Georgia, serif; margin: .5rem 0 1rem; overflow-wrap: anywhere; }.proposal-space-heading { margin-bottom: 1.5rem; }
.proposal-space-grid { display: grid; gap: 1.5rem; align-items: start; }.proposal-space-grid > * { min-width: 0; }
.proposal-quote { border: 1px solid var(--map-border); border-radius: .75rem; padding: 1.5rem; background: var(--map-card); }
.proposal-quote .quote-breakdown { margin-top: 0; }
.proposal-location { margin-top: 2rem; }.proposal-location h3 { font: 1.5rem Georgia, serif; margin-bottom: .5rem; }.proposal-location > p { margin-bottom: .75rem; color: var(--map-muted); font-size: .85rem; }
.proposal-location-region { fill: var(--map-gold); stroke: var(--map-selected); stroke-width: 3; }
.proposal-conditions { border-top: 1px solid var(--map-border); margin-top: 3rem; padding-top: 2rem; line-height: 1.8; overflow-wrap: anywhere; }
.proposal-contact { background: var(--map-black); color: var(--map-ivory); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 2rem; padding: clamp(1.5rem, 5vw, 5rem); }.proposal-contact > div { min-width: 0; }.proposal-contact h2 { font: 2rem Georgia, serif; margin: .5rem 0 1rem; }.proposal-contact-email { display: inline-flex; align-items: center; min-height: 48px; text-decoration: underline; font-size: .85rem; overflow-wrap: anywhere; }
@media (min-width: 1001px) { .proposal-space-grid { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); }.proposal-quote { position: sticky; top: 1.5rem; } }
.proposal-detail-link.is-selected { background: var(--map-gold); color: var(--map-white); }

/* Shared commercial cards: three visible on desktop, swipe on mobile. */
.proposal-cards { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 1.25rem; padding: .25rem .25rem 1rem; }
.proposal-card { flex: 0 0 85%; scroll-snap-align: start; display: flex; flex-direction: column; box-shadow: 0 4px 12px #1515150a; }
.proposal-card-body { flex: 1; display: flex; flex-direction: column; }
.proposal-card .proposal-detail-link { margin-top: auto; padding: .5rem; }
.proposal-card-body > p:last-of-type { margin-bottom: 1rem; }
.space-carousel-nav { display: flex; justify-content: flex-end; gap: .5rem; margin-bottom: 1rem; }
.space-carousel-nav button { border: 1px solid var(--map-border); background: var(--map-card); border-radius: 50%; width: 48px; height: 48px; cursor: pointer; }
.roca-map-theme [hidden] { display: none !important; }
.roca-map-theme button:focus-visible, .roca-map-theme a:focus-visible, .proposal-cards:focus-visible { outline: 3px solid var(--map-gold); outline-offset: 4px; }
.gallery-dots { display: flex; gap: .4rem; flex-wrap: wrap; justify-content: center; }
.gallery-dots button { min-width: 24px; min-height: 28px; border: 0; background: transparent; padding: 8px; }
.gallery-dots button::after { content: ""; display: block; width: 8px; height: 8px; border-radius: 50%; background: var(--map-border); }
.gallery-dots button[aria-pressed=true]::after { background: var(--map-gold); }
.gallery-controls { flex-wrap: wrap; }
.proposal-overview { margin-bottom: 3rem; border-bottom: 1px solid var(--map-border); padding-bottom: 2rem; }
.proposal-overview-copy { max-width: 52rem; line-height: 1.7; margin-bottom: 1.5rem; }
.proposal-overview-copy p { margin-bottom: .75rem; }
.proposal-mosaic { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; border-radius: .75rem; overflow: hidden; }
.proposal-mosaic button { overflow: hidden; background: var(--map-black); cursor: zoom-in; min-width: 0; }
.proposal-mosaic img { width: 100%; height: 100%; aspect-ratio: 4/3; object-fit: cover; }
.proposal-mosaic button:first-child { grid-column: 1 / -1; }
.overview-more { width: fit-content; padding: .5rem 1.5rem; margin-left: auto; cursor: pointer; }
.proposal-lightbox { position: fixed; inset: 0; margin: auto; width: min(1400px, 96vw); max-width: 96vw; max-height: 94dvh; border: 1px solid var(--map-border); border-radius: .75rem; padding: 1rem; color: var(--map-ivory); background: var(--map-black); }
.proposal-lightbox::backdrop { background: #000d; }
.proposal-lightbox figure { margin: 0; }
.proposal-lightbox img { width: 100%; height: 68dvh; object-fit: contain; }
.lightbox-bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.lightbox-bar button { min-height: 48px; padding: .5rem 1rem; cursor: pointer; border: 1px solid var(--map-gold); border-radius: .4rem; }
.lightbox-bar > span { font-size: .8rem; }
@media (min-width: 650px) { .proposal-card { flex-basis: calc((100% - 1.25rem) / 2); } }
@media (min-width: 1001px) {
  .proposal-card { flex-basis: calc((100% - 2.5rem) / 3); }
  .proposal-mosaic { grid-template-columns: 2fr 1fr 1fr; grid-template-rows: repeat(2, minmax(0, 200px)); }
  .proposal-mosaic button:first-child { grid-column: 1; grid-row: 1 / 3; }
}
.option-response { border-top: 1px solid var(--map-border); margin-top: 1.25rem; padding-top: 1.25rem; }
.option-response-status { overflow-wrap: anywhere; line-height: 1.6; }
.option-response-status small { display: block; font-size: .8rem; color: var(--map-muted); }
.option-response-actions { display: grid; gap: .75rem; margin: 1rem 0; }
.option-response-actions button { width: 100%; min-height: 48px; cursor: pointer; }
.option-response-actions button:disabled { opacity: .65; cursor: default; }
.option-reject { border: 1px solid var(--map-border); border-radius: .4rem; }
.option-response-help { font-size: .8rem; line-height: 1.6; color: var(--map-muted); }
