html, body, #app, .app-shell { width: 100%; height: 100%; margin: 0; overflow: hidden; font-family: Inter, "Segoe UI", Arial, sans-serif; background: #101820; color: #17212b; } button, input, select { font: inherit; } button { min-height: 38px; border: 0; border-radius: 6px; padding: 0 12px; background: #176b87; color: #fff; font-weight: 700; } button:active { transform: translateY(1px); } input, select { width: 100%; min-height: 38px; border: 1px solid #c8d3dc; border-radius: 6px; padding: 0 10px; background: #fff; color: #17212b; } input[type="range"], input[type="checkbox"] { min-height: auto; } .map-app { display: grid; grid-template-columns: 390px minmax(0, 1fr); width: 100%; height: 100%; } .tool-panel { z-index: 800; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; padding: 16px; background: #f6f8f9; border-right: 1px solid #d8e0e6; } .brand { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .eyebrow { margin: 0 0 3px; color: #667785; font-size: 12px; font-weight: 800; text-transform: uppercase; } h1, h2, p { margin-top: 0; } h1 { margin-bottom: 0; font-size: 25px; line-height: 1.08; } h2 { margin-bottom: 10px; font-size: 15px; } .status { border-radius: 999px; padding: 5px 9px; background: #dff5e5; color: #166534; font-size: 12px; font-weight: 800; } .panel-section { padding: 12px; border: 1px solid #dbe4ea; border-radius: 8px; background: #fff; } .input-row, .button-row { display: flex; gap: 8px; } .input-row input { min-width: 0; } .field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .field-grid.compact { grid-template-columns: 1fr; } label { display: grid; gap: 5px; color: #475866; font-size: 12px; font-weight: 800; } .hint { margin: 10px 0 0; color: #667785; font-size: 12px; line-height: 1.35; } .file-picker { position: relative; min-height: 42px; place-items: center; border: 1px dashed #93a7b5; border-radius: 8px; background: #f2f7fa; color: #176b87; cursor: pointer; } .file-picker input { position: absolute; inset: 0; opacity: 0; cursor: pointer; } .layer-toggles { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 10px; } .layer-toggles label, .toggle-line { display: flex; align-items: center; gap: 7px; } .gps-readout { display: grid; gap: 6px; margin-bottom: 10px; padding: 10px; border-radius: 8px; background: #eef6ff; color: #21405d; font-size: 13px; } .gps-readout strong { color: #b91c1c; } .map-stage { position: relative; min-width: 0; height: 100%; } #map { width: 100%; height: 100%; background: #d4dde3; } .map-info { position: absolute; left: 14px; right: 14px; bottom: 14px; z-index: 700; max-width: 760px; border-radius: 8px; padding: 10px 12px; background: rgba(16, 24, 32, 0.86); color: #fff; font-size: 13px; pointer-events: none; } footer { color: #667785; font-size: 12px; line-height: 1.35; } #blazor-error-ui { background: #fff3cd; bottom: 0; box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); display: none; left: 0; padding: 0.7rem 1.25rem; position: fixed; width: 100%; z-index: 1000; } #blazor-error-ui .dismiss { cursor: pointer; position: absolute; right: 0.75rem; top: 0.5rem; } .status-bar-safe-area { display: none; } @media (max-width: 850px) { .map-app { grid-template-columns: 1fr; grid-template-rows: 45% 55%; } .tool-panel { border-right: 0; border-bottom: 1px solid #d8e0e6; padding: 12px; } .brand { align-items: center; } h1 { font-size: 22px; } } @supports (-webkit-touch-callout: none) { .status-bar-safe-area { display: flex; position: sticky; top: 0; height: env(safe-area-inset-top); background-color: #f6f8f9; width: 100%; z-index: 1; } }