.roca-map-theme {
  --map-black: #151515; --map-ivory: #f6f1ea; --map-card: #fbf8f4;
  --map-gold: #a87537; --map-gold-light: #c59a61; --map-text: #202020;
  --map-muted: #6f675f; --map-border: #d8cec1; --map-available: #526a50;
  --map-rented: #77716b; --map-plan: #101719; --map-line: #667174;
  --map-region: #5d472c; --map-selected: #e2b579; --map-white: #fff;
  color: var(--map-text); font-family: ui-sans-serif, system-ui, sans-serif;
}
.roca-map-theme *, .map-share * { box-sizing: border-box; }
.map-public { margin: 0; background: var(--map-ivory); min-height: 100vh; }
.map-public-header { background: var(--map-black); color: var(--map-ivory); display: flex; flex-wrap: wrap; gap: 1.5rem; align-items: center; justify-content: space-between; padding: 1.5rem clamp(1rem, 5vw, 4rem); }
.map-public-header > span:last-child { font-size: .8rem; letter-spacing: .1em; }
.map-brand { font: 1.8rem Georgia, serif; letter-spacing: .08em; }
.map-brand small { display: block; text-align: center; color: var(--map-gold-light); font: .65rem system-ui; letter-spacing: .35em; margin-top: .3rem; }
.map-public-main { max-width: 1500px; margin: auto; padding: clamp(1rem, 4vw, 4rem); }
.map-public h1 { font: clamp(2rem, 4vw, 3.5rem)/1.1 Georgia, serif; margin: .5rem 0 1rem; }
.map-eyebrow { color: var(--map-gold); font-size: .7rem; letter-spacing: .15em; text-transform: uppercase; }
.map-intro { color: var(--map-muted); margin-bottom: 2rem; max-width: 42rem; }
.map-share { margin-bottom: 2rem; display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; }
.map-share h2, .map-share p { flex-basis: 100%; margin: 0; }
.map-share input { width: 100%; min-width: 0; padding: .75rem; background: var(--roca-ivory); border: 1px solid var(--roca-border); border-radius: .4rem; }
.map-levels { display: flex; gap: .75rem; margin: 1.5rem 0; }
.map-level-button { min-height: 48px; padding: .75rem 1.5rem; border-radius: .5rem; border: 1px solid var(--map-border); background: var(--map-card); cursor: pointer; }
.map-level-button[aria-pressed=true] { color: var(--map-white); background: var(--map-black); border-color: var(--map-black); }
.map-workspace { display: grid; gap: 1.5rem; min-width: 0; }
.map-plans { min-width: 0; }
.map-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem; margin-bottom: 1rem; }
.map-toolbar p, .map-disclaimer { color: var(--map-muted); font-size: .8rem; }
.map-zoom { display: flex; border: 1px solid var(--map-border); border-radius: .5rem; overflow: hidden; }
.map-zoom button { min-height: 44px; min-width: 44px; padding: .5rem; background: var(--map-card); cursor: pointer; }
.map-zoom button + button { border-left: 1px solid var(--map-border); }
.map-level-section > h2 { font: 1.2rem Georgia, serif; margin-bottom: .75rem; }
.map-scroll { width: 100%; overflow: auto; max-height: 65vh; border-radius: .8rem; border: 1px solid var(--map-gold); background: var(--map-plan); }
.map-svg { display: block; width: 100%; min-width: 100%; max-width: none; height: auto; }
.map-architecture { stroke: var(--map-line); stroke-width: 1.7; stroke-linejoin: round; }
.map-region { stroke-width: 2; stroke: var(--map-gold-light); fill: var(--map-region); transition: fill .15s; }
.map-region.rented { fill: var(--map-rented); fill-opacity: .5; stroke: var(--map-rented); }
.map-region.unconfigured { fill: transparent; stroke: var(--map-line); stroke-dasharray: 5 5; }
.map-svg a { cursor: pointer; }
.map-svg a:hover .map-region, .map-svg a:focus .map-region, .map-svg a.is-selected .map-region { fill: var(--map-gold); stroke: var(--map-selected); stroke-width: 4; }
.map-region-label { fill: var(--map-white); text-anchor: middle; dominant-baseline: middle; font: 15px system-ui; pointer-events: none; }
.map-space-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 145px), 1fr)); gap: .75rem; margin-top: 1rem; }
.map-space-link { display: grid; gap: .25rem; padding: 1rem; min-height: 48px; border: 1px solid var(--map-border); background: var(--map-card); border-radius: .6rem; text-decoration: none; color: var(--map-text); }
.map-space-link span { font-size: .8rem; color: var(--map-muted); }
.map-space-link:hover, .map-space-link.is-selected { border-color: var(--map-gold); box-shadow: inset 0 0 0 1px var(--map-gold); }
.map-unconfigured { color: var(--map-muted); border-style: dashed; }
.map-legend { display: flex; gap: 1.25rem; flex-wrap: wrap; font-size: .75rem; margin: 1.25rem 0; }
.map-legend span { display: flex; align-items: center; gap: .4rem; }
.map-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.map-dot.available { background: var(--map-region); }.map-dot.rented { background: var(--map-rented); }.map-dot.selected { background: var(--map-gold); }
.map-details { min-width: 0; }
.map-placeholder, .map-detail { background: var(--map-card); border: 1px solid var(--map-border); border-radius: .8rem; overflow: hidden; margin-bottom: 1rem; }
.map-placeholder { padding: 2rem; }.map-placeholder p { margin-top: 1rem; color: var(--map-muted); }
.map-placeholder h2, .map-detail h2 { font: 1.8rem/1.2 Georgia, serif; margin: .5rem 0 1rem; overflow-wrap: anywhere; }
.map-cover { width: 100%; aspect-ratio: 16/10; object-fit: cover; }
.map-detail-body { padding: 1.5rem; }.map-area { font: 2.3rem Georgia, serif; margin: 1.5rem 0; }.map-area small { font-size: 1rem; }
.map-status { display: inline-block; border: 1px solid currentColor; padding: .3rem .65rem; border-radius: 1rem; font-size: .7rem; }
.map-status.available { color: var(--map-available); }.map-status.rented { color: var(--map-rented); }
.map-prices { padding: 1rem 0; border-block: 1px solid var(--map-border); }.map-prices > p:first-child { color: var(--map-muted); font-size: .75rem; }
.map-price { font: 1.6rem Georgia, serif; margin-top: .5rem; }.map-price small { font: .75rem system-ui; }
.map-conditions { font-size: .8rem; }.map-conditions > div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .4rem; padding: .75rem 0; border-bottom: 1px solid var(--map-border); }.map-conditions dt { color: var(--map-muted); }
.map-description { font-size: .875rem; line-height: 1.6; margin: 1rem 0; overflow-wrap: anywhere; }
.map-action { display: flex; align-items: center; justify-content: center; min-height: 48px; padding: .75rem; background: var(--map-gold); color: var(--map-white); border-radius: .5rem; margin-top: 1rem; text-decoration: none; }
.roca-map-theme [hidden] { display: none !important; }.roca-map-theme :focus-visible { outline: 3px solid var(--map-gold); outline-offset: 3px; }
@media (min-width: 1001px) { .map-workspace { grid-template-columns: minmax(0, 1.7fr) minmax(280px, 1fr); align-items: start; }.map-details { position: sticky; top: 1.5rem; } }
@media (prefers-reduced-motion: reduce) { .map-region { transition: none; } }
.map-public-footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-top: 2rem; padding: 2rem clamp(1rem, 5vw, 4rem); background: var(--map-black); color: var(--map-ivory); font-size: .875rem; overflow-wrap: anywhere; }
.map-public-footer a { text-decoration: underline; }
.map-contact-link, .map-back-link { display: inline-flex; align-items: center; min-height: 48px; text-decoration: underline; color: var(--map-text); }
.map-contact-link { justify-content: center; width: 100%; margin-top: .5rem; }
.quote-breakdown { margin-top: 1.5rem; }
.quote-breakdown h3 { font: 1.4rem Georgia, serif; margin-bottom: 1rem; }
.quote-currency + .quote-currency { margin-top: 1.5rem; }
.quote-currency h4 { color: var(--map-gold); font-size: .75rem; letter-spacing: .1em; margin-bottom: .5rem; }
.quote-currency dl > div { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .5rem; padding: .7rem 0; border-bottom: 1px solid var(--map-border); font-size: .85rem; }
.quote-currency dt small { display: block; color: var(--map-muted); font-size: .7rem; margin-top: .2rem; }
.quote-currency dd { text-align: right; }
.quote-currency .quote-total { font-weight: 600; font-size: 1rem; padding-top: 1rem; border-bottom: none; }
.quote-total small { font-weight: 400; font-size: .75rem; }
.space-heading { margin: 1rem 0 2rem; }
.space-heading h1 { overflow-wrap: anywhere; }
.space-content { display: grid; gap: 2rem; min-width: 0; align-items: start; }
.space-content > div { min-width: 0; }
.space-summary { min-width: 0; padding: 1.5rem; border: 1px solid var(--map-border); border-radius: .8rem; background: var(--map-card); }
.space-contact { text-align: center; color: var(--map-muted); margin-top: 1rem; font-size: .8rem; overflow-wrap: anywhere; }
.space-contact a { text-decoration: underline; }
.space-description { padding: 1.5rem 0; line-height: 1.65; overflow-wrap: anywhere; }
.space-description h2 { font: 1.8rem Georgia, serif; margin-bottom: 1rem; }
.space-facts { display: flex; flex-wrap: wrap; gap: 1.5rem; margin-bottom: 1.5rem; }
.space-facts dt { font-size: .75rem; color: var(--map-muted); }.space-facts dd { font: 1.2rem Georgia, serif; }
.space-gallery { min-width: 0; }
.gallery-track { display: flex; width: 100%; overflow-x: auto; scroll-snap-type: x mandatory; border-radius: .8rem; background: var(--map-black); }
.gallery-frame { flex: 0 0 100%; width: 100%; min-width: 0; margin: 0; scroll-snap-align: start; }
.gallery-frame img { display: block; width: 100%; aspect-ratio: 4/3; height: auto; object-fit: contain; }
.gallery-frame figcaption { color: var(--map-ivory); font-size: .75rem; padding: .75rem; text-align: center; }
.gallery-controls { display: flex; justify-content: center; align-items: center; gap: 1rem; padding-top: 1rem; font-size: .85rem; }
.gallery-controls button { min-width: 48px; min-height: 48px; border: 1px solid var(--map-border); background: var(--map-card); border-radius: 50%; cursor: pointer; }
.gallery-controls button:disabled { opacity: .4; cursor: default; }
.gallery-empty { min-height: 250px; display: grid; place-items: center; padding: 2rem; background: var(--map-card); border: 1px solid var(--map-border); border-radius: .8rem; color: var(--map-muted); text-align: center; }
@media (min-width: 1001px) { .space-content { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); }.space-summary { position: sticky; top: 1.5rem; } }
.roca-map-theme { --map-reserved: #956320; }
.map-region.reserved { fill: var(--map-reserved); stroke: var(--map-gold-light); }
.map-dot.reserved { background: var(--map-reserved); }.map-status.reserved { color: var(--map-reserved); }
.map-drawing { cursor: crosshair; touch-action: manipulation; }
.map-drawing polygon { fill-opacity: .65; stroke-width: 3; }
