:root{--bg: #0f1419;--surface: #1a2332;--surface-2: #243044;--border: #2d3a4f;--text: #e8edf4;--muted: #8b9cb3;--accent: #3b82f6;--accent-hover: #2563eb;--pre: #22c55e;--post: #ef4444;--warn: #f59e0b;--radius: 10px;--shadow: 0 8px 32px rgba(0, 0, 0, .35)}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}#root{min-height:100vh}button,select,input[type=range]{font:inherit}button{cursor:pointer;border:none;border-radius:8px;padding:.55rem 1rem;background:var(--accent);color:#fff;transition:background .15s}button:hover:not(:disabled){background:var(--accent-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--surface-2);border:1px solid var(--border)}button.secondary:hover:not(:disabled){background:var(--border)}select{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;width:100%}.app-shell{display:grid;grid-template-columns:340px 1fr;min-height:100vh;min-height:100dvh}.sidebar-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.controls-close-btn,.controls-toggle-btn{display:none}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:1.25rem;overflow-y:auto;display:flex;flex-direction:column;gap:1rem}.sidebar h1{font-size:1.15rem;margin:0;line-height:1.3}.sidebar .subtitle{color:var(--muted);font-size:.85rem;margin:0}.panel{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.panel h2{margin:0 0 .75rem;font-size:.9rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.event-info.featured{border-color:#3b82f673;background:linear-gradient(135deg,rgba(59,130,246,.12),var(--surface-2))}.event-info h2{text-transform:none;letter-spacing:normal;color:var(--text);font-size:1rem;margin-bottom:.5rem}.featured-label{display:inline-block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-bottom:.35rem}.event-description{font-size:.85rem;color:var(--muted);margin:0 0 .75rem;line-height:1.45}.event-meta-grid{display:grid;gap:.65rem}.event-meta-grid strong{display:block;font-size:.9rem;margin-top:.15rem}.label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:.35rem}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600;text-transform:uppercase}.badge.pre{background:#22c55e26;color:var(--pre)}.badge.post{background:#ef444426;color:var(--post)}.status-row{display:flex;gap:.5rem;flex-wrap:wrap;font-size:.8rem;color:var(--muted)}.map-area{position:relative;min-height:100vh;min-height:100dvh}.map-container{width:100%;height:100vh;height:100dvh}.map-container.leaflet-container{background:#0f1419}.map-container.building-geocode-mode.leaflet-container,.map-area.building-geocode-mode .leaflet-container,.map-container.building-geocode-mode.leaflet-container .leaflet-grab,.map-area.building-geocode-mode .leaflet-grab,.map-container.building-geocode-mode.leaflet-container .leaflet-interactive,.map-area.building-geocode-mode .leaflet-interactive{cursor:crosshair!important}.map-container.building-geocode-mode.leaflet-container.leaflet-dragging .leaflet-grab,.map-area.building-geocode-mode .leaflet-container.leaflet-dragging .leaflet-grab{cursor:grabbing!important}.geocode-mode-badge{position:absolute;top:1rem;left:50%;transform:translate(-50%);z-index:1000;padding:.45rem .85rem;border-radius:999px;background:#fb923cf2;color:#1a1208;font-size:.82rem;font-weight:600;pointer-events:none;box-shadow:0 2px 10px #00000040}.map-toolbar-wrap{position:absolute;top:1rem;right:1rem;z-index:1000}.map-toolbar-toggle{display:none}.map-toolbar{display:flex;flex-direction:column;gap:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;box-shadow:var(--shadow);min-width:220px}.map-toolbar-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.map-toolbar-header label{margin:0}.map-toolbar-close{display:none;min-width:2rem;min-height:2rem;padding:0;line-height:1;font-size:1.25rem}.map-toolbar-meta,.map-toolbar label{font-size:.75rem;color:var(--muted)}.resolution-warn{display:block;margin-top:.35rem;font-size:.72rem;color:var(--warn);line-height:1.35}.resolution-warn code{font-size:.7rem;background:#00000040;padding:.1rem .3rem;border-radius:4px}.resolution-ok{display:block;margin-top:.35rem;font-size:.72rem;color:var(--pre)}.time-slider-wrap input[type=range]{width:100%;accent-color:var(--accent)}.detection-list{max-height:180px;overflow-y:auto;font-size:.82rem}.detection-item{display:flex;justify-content:space-between;padding:.35rem 0;border-bottom:1px solid var(--border)}.damage-summary{display:grid;gap:.5rem}.damage-stat{display:flex;justify-content:space-between;font-size:.85rem}.damage-stat strong{color:var(--warn)}.error-banner{background:#ef44441f;border:1px solid rgba(239,68,68,.35);color:#fca5a5;padding:.75rem;border-radius:8px;font-size:.85rem}.loading{color:var(--muted);font-size:.85rem}.compare-mode{display:flex;gap:.5rem}.compare-mode button.active{outline:2px solid var(--accent)}.swipe-hint{margin:.65rem 0 0;font-size:.8rem;color:var(--muted);line-height:1.4}.swipe-toolbar-hint{display:block;margin-top:.35rem;font-size:.72rem;color:var(--muted);line-height:1.35}.swipe-labels{position:absolute;top:1rem;left:1rem;right:1rem;z-index:1000;display:flex;justify-content:space-between;pointer-events:none}.swipe-label{background:#0f1419d1;border:1px solid var(--border);border-radius:8px;padding:.35rem .65rem;font-size:.78rem;font-weight:600;box-shadow:var(--shadow)}.swipe-label.before{color:var(--pre);border-color:#22c55e59}.swipe-label.after{color:var(--post);border-color:#ef444459}.leaflet-sbs-range{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block!important;position:absolute;top:50%;width:100%;height:0;padding:0;margin:0;border:0;background:#3b82f659!important;min-width:100px;cursor:pointer;pointer-events:auto;z-index:999}.leaflet-sbs-range::-webkit-slider-thumb{-webkit-appearance:none;margin:0;padding:0;background-color:var(--accent)!important;height:40px;width:40px;border-radius:20px;cursor:ew-resize;pointer-events:auto;border:2px solid white!important;box-shadow:0 2px 10px #0006}.leaflet-sbs-range::-moz-range-thumb{padding:0;background-color:var(--accent)!important;height:40px;width:40px;border-radius:20px;cursor:ew-resize;pointer-events:auto;border:2px solid white!important;box-shadow:0 2px 10px #0006}.leaflet-sbs{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999;pointer-events:none}.leaflet-sbs-divider{position:absolute;top:0;bottom:0;left:50%;margin-left:-2px;background:#ffffffd9!important;width:3px!important;box-shadow:0 0 8px #00000073;pointer-events:none;z-index:999}.leaflet-sbs-range:focus{outline:none!important}.building-geocode-approval{margin-top:.75rem;padding:.75rem;border:1px solid rgba(251,146,60,.35);border-radius:10px;background:#7c2d121f}.building-geocode-approval h3{margin:0 0 .5rem;font-size:.9rem}.panel-nested{margin-top:.5rem}.geocoding-intro,.geocoding-note{margin:0 0 .65rem;font-size:.8rem;color:var(--muted);line-height:1.45}.geocoding-note.google-active{color:#86efac;border-left:3px solid #4ade80;padding-left:.55rem}.geocoding-error{margin:.5rem 0 0;font-size:.8rem;color:#fca5a5}.toggle-row{display:flex;align-items:center;gap:.5rem;font-size:.85rem;margin-top:.5rem;cursor:pointer}.toggle-row input{accent-color:var(--accent)}.text-input{width:100%;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;font:inherit}.geocoding-results{list-style:none;margin:.5rem 0 0;padding:0;display:grid;gap:.35rem;max-height:180px;overflow-y:auto}.geocoding-result-btn{width:100%;text-align:left;display:grid;gap:.15rem;padding:.45rem .6rem;font-size:.78rem}.geocoding-result-btn span{color:var(--muted);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.geocode-pins-panel{margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--border)}.geocode-pins-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.geocode-pins-clear{padding:.2rem .45rem;font-size:.72rem}.geocode-pins-list{max-height:220px}.geocode-pin-item{display:grid;grid-template-columns:1fr auto;gap:.25rem;align-items:stretch}.geocode-pin-item.selected .geocoding-result-btn{border-color:#fb923ca6;background:#7c2d122e}.geocode-pin-remove{min-width:2rem;padding:.2rem .45rem;font-size:1rem;line-height:1}.geocode-pin-meta{display:block;margin-top:.15rem;color:var(--muted);font-size:.68rem;white-space:normal}.legend-dot{display:inline-flex;align-items:center;gap:.25rem;font-size:.72rem}.legend-dot:before{content:"";width:8px;height:8px;border-radius:999px;display:inline-block}.legend-dot.street:before{background:#fbbf24}.legend-dot.building:before{background:#fbbf24}.legend-dot.poi:before{background:#38bdf8}.legend-dot.google:before{background:#4ade80}.map-text-label{background:transparent!important;border:none!important}.map-text-label span{display:inline-block;padding:.1rem .35rem;border-radius:4px;font-size:.68rem;font-weight:600;white-space:nowrap;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.85)}.map-text-label.street-label span{color:#fde68a;background:#00000073}.map-text-label.place-label span{color:#e0f2fe;background:#0f172ab8;border:1px solid rgba(56,189,248,.35)}.map-text-label.google-label span{color:#fef9c3;background:#14532dc7;border:1px solid rgba(74,222,128,.45)}.map-text-label.geocode-pin-label span{color:#ffedd5;background:#7c2d12d1;border:1px solid rgba(251,146,60,.55);margin-top:.65rem}.leaflet-tooltip.place-tooltip{font-size:.75rem}@media(max-width:900px){.app-shell{grid-template-columns:1fr;grid-template-rows:1fr auto;height:100dvh;overflow:hidden}.app-shell.controls-open{grid-template-rows:auto 1fr}.app-shell:not(.controls-open) .sidebar{display:none}.map-area{order:2;min-height:0;flex:1}.app-shell.controls-open .map-area{order:2;min-height:38dvh}.sidebar{order:1;max-height:62dvh;border-right:none;border-bottom:1px solid var(--border);padding:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom,0px))}.sidebar h1{font-size:1rem}.sidebar .subtitle{font-size:.78rem}.controls-close-btn,.controls-toggle-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:.55rem .85rem;flex-shrink:0}.controls-toggle-btn{position:absolute;left:.75rem;bottom:calc(.75rem + env(safe-area-inset-bottom,0px));z-index:1001;box-shadow:var(--shadow)}.map-toolbar-wrap{top:calc(.75rem + env(safe-area-inset-top,0px));right:.75rem;left:auto}.map-toolbar-toggle{display:inline-flex;align-items:center;justify-content:center;position:relative;width:48px;height:48px;padding:0;border-radius:999px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);color:var(--text)}.map-toolbar-toggle-badge{position:absolute;top:-4px;right:-4px;font-size:.58rem;padding:.1rem .3rem;line-height:1.2}.map-toolbar-wrap:not(.is-open) .map-toolbar{display:none}.map-toolbar-wrap.is-open .map-toolbar{position:absolute;top:calc(100% + .5rem);right:0;left:auto;bottom:auto;min-width:min(280px,calc(100vw - 1.5rem));max-width:calc(100vw - 1.5rem);padding:.65rem .75rem;font-size:.78rem}.map-toolbar-wrap.is-open .map-toolbar-close{display:inline-flex;align-items:center;justify-content:center}.map-toolbar{top:auto;right:auto;left:auto;bottom:auto;min-width:0;max-width:none;padding:.55rem .65rem;font-size:.78rem}.swipe-labels{top:.5rem;left:.5rem;right:.5rem}.swipe-label{font-size:.68rem;padding:.25rem .45rem;max-width:46%;line-height:1.25}.compare-mode{flex-direction:column}.compare-mode button{width:100%;min-height:44px}.panel{padding:.85rem}.geocoding-results{max-height:140px}.toggle-row{align-items:flex-start;line-height:1.35}.toggle-row input{margin-top:.15rem;min-width:18px;min-height:18px}button{min-height:44px}select,.text-input{min-height:44px;font-size:16px}.leaflet-sbs-range::-webkit-slider-thumb{height:48px;width:48px}.leaflet-sbs-range::-moz-range-thumb{height:48px;width:48px}}@media(max-width:480px){.sidebar h1{font-size:.92rem}.event-meta-grid{grid-template-columns:1fr 1fr;gap:.5rem}.status-row{font-size:.72rem}}
