* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: sans-serif; display: flex; height: 100vh; }
#map { flex: 1; }
.loading {
    position: fixed; top: 0; left: 0; right: 320px; bottom: 0;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255, 255, 255, 0.45); z-index: 2000; pointer-events: none;
}
.loading.hidden { display: none; }
.spinner {
    width: 44px; height: 44px;
    border: 4px solid #dee2e6; border-top-color: #0d6efd;
    border-radius: 50%; animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
#sidebar {
    width: 320px; padding: 20px; overflow-y: auto;
    background: #f8f9fa; border-left: 2px solid #dee2e6;
}
#sidebar h2 { margin-bottom: 16px; color: #333; }
#sidebar button {
    width: 100%; padding: 10px; margin-bottom: 12px;
    background: #0d6efd; color: #fff; border: none;
    border-radius: 6px; font-size: 14px; cursor: pointer;
}
#sidebar button:disabled { background: #6c757d; cursor: not-allowed; }
#sidebar button:hover:not(:disabled) { background: #0b5ed7; }
.field { margin-bottom: 16px; }
.field label { display: block; font-size: 13px; font-weight: 600; color: #333; margin-bottom: 6px; }
.field select {
    width: 100%; padding: 9px; border: 1px solid #ced4da;
    border-radius: 6px; font-size: 14px; background: #fff; color: #333;
}
.checkbox-field { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; }
.checkbox-field input { width: 16px; height: 16px; cursor: pointer; }
.checkbox-field label { font-size: 14px; font-weight: 600; color: #333; cursor: pointer; }
#timebar {
    position: fixed; bottom: 20px; left: 20px; right: 360px;
    background: rgba(255, 255, 255, 0.95); padding: 10px 16px;
    border-radius: 8px; box-shadow: 0 1px 6px rgba(0, 0, 0, 0.25); z-index: 1000;
}
#timebar label { display: block; font-size: 13px; font-weight: 600; color: #333; margin-bottom: 6px; }
#timebar input[type=range] { width: 100%; }
#results { margin-top: 16px; }
.report {
    background: #fff; padding: 18px 20px; border-radius: 6px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.report-title {
    font-size: 16px; color: #333; margin-bottom: 14px;
    padding-bottom: 10px; border-bottom: 2px solid #0d6efd;
}
.report-section { margin-bottom: 18px; }
.report-section:last-child { margin-bottom: 0; }
.report-section h3 {
    font-size: 12px; color: #0d6efd; margin-bottom: 8px;
    text-transform: uppercase; letter-spacing: 0.5px;
}
.report-row {
    display: flex; justify-content: space-between; align-items: baseline;
    gap: 12px; padding: 5px 0; border-bottom: 1px dotted #e5e7eb;
}
.report-row:last-child { border-bottom: none; }
.report-label { font-size: 13px; color: #666; }
.report-value { font-size: 13px; font-weight: 600; color: #333; text-align: right; }
#error { color: #dc3545; margin-top: 12px; display: none; }
.instructions { font-size: 13px; color: #666; margin-bottom: 16px; line-height: 1.5; }
