.feed-message { margin-top: 12px; padding: 10px 12px; border-radius: 8px; background: rgba(123,213,111,.12); border: 1px solid rgba(123,213,111,.24); color: #dff6dc; font-size: 12px; line-height: 1.4; }
.feed-message-error { background: rgba(239,107,107,.12); border-color: rgba(239,107,107,.28); color: #ffd0d0; }
.feed-message-warning { background: rgba(240,210,130,.12); border-color: rgba(240,210,130,.32); color: #f7e6b2; }
.feed-message-loading { display: flex; align-items: center; gap: 9px; background: rgba(112,229,255,.08); border-color: rgba(112,229,255,.24); color: #dff7ff; }
.inline-loading-spinner { flex: 0 0 auto; width: 16px; height: 16px; border-radius: 999px; border: 2px solid rgba(255,255,255,.22); border-top-color: #70e5ff; animation: fruitbowl-spin .8s linear infinite; }
.table-loading-line { display: inline-flex; align-items: center; gap: 8px; color: #dff7ff; }
.map-shell { min-height: 760px; overflow: hidden; border-radius: 8px; border: 1px solid rgba(255,255,255,.10); box-shadow: 0 24px 70px rgba(0,0,0,.38); position: relative; background: #101816; }
#fruitbowl-map { height: 100%; min-height: 760px; z-index: 1; }
.fallback-map { position: relative; display: block; overflow: hidden; background: linear-gradient(135deg, #101816, #17231f); }
.fallback-map-canvas { position: absolute; inset: 0; overflow: hidden; background: radial-gradient(circle at 22% 22%, rgba(123,213,111,.16), transparent 30%), radial-gradient(circle at 82% 70%, rgba(232,179,79,.12), transparent 34%), #101816; }
.fallback-map-svg { width: 100%; height: 100%; display: block; }
.fallback-map-notice { position: absolute; z-index: 4; left: 14px; bottom: 14px; max-width: min(460px, calc(100% - 28px)); padding: 11px 13px; border-radius: 8px; background: rgba(6,13,12,.82); border: 1px solid rgba(255,255,255,.12); color: var(--fb-dark-text); backdrop-filter: blur(14px); }
.fallback-map-notice strong, .fallback-map-notice span { display: block; }
.fallback-map-notice span { color: var(--fb-dark-secondary); font-size: 12px; line-height: 1.35; margin-top: 2px; }
.fallback-road { fill: none; stroke: rgba(232,179,79,.46); stroke-width: 18; stroke-linecap: round; }
.fallback-road.secondary { stroke-width: 10; opacity: .72; }
.fallback-water { fill: none; stroke: rgba(89,183,255,.38); stroke-width: 18; stroke-linecap: round; }
.fallback-constraint-shape { opacity: .24; stroke-width: 5; stroke-dasharray: 10 8; }
.fallback-constraint-point { opacity: .9; stroke: #f5f8ef; stroke-width: 2; }
.fallback-parcel { cursor: pointer; opacity: .3; stroke-width: 4; transition: opacity .16s ease, stroke-width .16s ease; }
.fallback-parcel:hover { opacity: .55; stroke-width: 6; }
.fallback-heat { opacity: .26; }
.fallback-owned-marker circle { fill: #59b7ff; stroke: #f5f8ef; stroke-width: 3; }
.fallback-commercial-marker circle { fill: #f06bd8; stroke: #f5f8ef; stroke-width: 3; }
.fallback-strategic-marker circle { fill: #7aa7ff; stroke: #f5f8ef; stroke-width: 3; }
.fallback-power-marker circle { fill: #70e5ff; stroke: #f5f8ef; stroke-width: 3; }
.fallback-power-line-buffer { fill: none; stroke: rgba(112,229,255,.22); stroke-width: 24; stroke-linecap: round; stroke-linejoin: round; }
.fallback-power-line { fill: none; stroke: #70e5ff; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 14 9; }
.fallback-transport-route-buffer { fill: none; stroke: rgba(3,8,7,.26); stroke-width: 10; stroke-linecap: round; stroke-linejoin: round; }
.fallback-transport-route-a { fill: none; stroke: #f0b44a; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.fallback-transport-route-b { fill: none; stroke: #7aa7ff; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 10 8; }
.map-loading-overlay, .preview-loading-overlay { position: absolute; inset: 0; z-index: 640; display: grid; place-items: center; align-content: center; gap: 9px; background: rgba(5,16,13,.62); backdrop-filter: blur(3px); color: var(--fb-dark-text); text-align: center; pointer-events: none; }
.map-loading-overlay strong, .map-loading-overlay small, .preview-loading-overlay strong { display: block; }
.map-loading-overlay small { color: var(--fb-dark-secondary); font-size: 12px; }
.loading-spinner { width: 30px; height: 30px; border-radius: 999px; border: 3px solid rgba(255,255,255,.2); border-top-color: #8fd86f; animation: fruitbowl-spin .8s linear infinite; }
.loading-spinner.mini { width: 14px; height: 14px; border-width: 2px; }
@keyframes fruitbowl-spin { to { transform: rotate(360deg); } }
#fruitbowl-features-map { min-height: 640px; height: 100%; border-radius: 8px; overflow: hidden; background: #101816; z-index: 1; }
#fruitbowl-area-builder-map { min-height: 640px; height: 100%; border-radius: 8px; overflow: hidden; background: #101816; z-index: 1; }
