/* Tower Horizon Calculator v1.9 — tool layout; colors and chrome are in waypoint.css. */
.workspace { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.controls { min-width: 0; display: grid; gap: 16px; }
.unit-tag { margin-left: auto; font-size: 10px; font-weight: normal; text-transform: uppercase; letter-spacing: .04em; }
.results-panel .unit-tag { color: #d6e0e7; }
label { display: block; margin-bottom: 6px; font-size: 12px; font-weight: bold; color: #25323a; }
.optional { color: #52616b; font-weight: normal; font-size: 11px; }
input { width: 100%; min-width: 0; padding: 9px 10px; border: 1px solid #89949d; border-top-color: #66747e; color: #25323a; background: white; min-height: 40px; }
input:invalid { border-color: #a13b31; }
button { cursor: pointer; border: 1px solid #102b41; padding: 9px 13px; min-height: 40px; background: #193b58; color: white; font-size: 12px; font-weight: bold; }
button:hover { background: #285978; }
button:disabled { cursor: wait; opacity: .65; }
.secondary-button { color: #193b58; border: 1px solid #89949d; background: #d1d6da; font-size: 11px; }
.secondary-button:hover { background: #e5e7e8; }
.lookup-row { display: flex; gap: 8px; }
.lookup-row input { flex: 1; }
.lookup-row button { flex: 0 0 auto; }
.hint { color: #52616b; font-size: 11px; margin: 7px 0 12px; line-height: 1.6; }
.status { font-size: 11px; margin: 9px 0; overflow-wrap: anywhere; color: #356641; }
.status.error { color: #96332a; }
.status:empty { display: none; }
.divider { border-top: 1px solid #89949d; margin: 16px 0; }
.input-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 14px; margin-top: 16px; }
.results { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 10px; }
.result { padding: 12px; border: 1px solid #89949d; background: #f1f3f4; min-width: 0; }
.result span, .result small { display: block; font-size: 11px; }
.result span { font-weight: bold; color: #193b58; }
.result strong { display: block; margin: 4px 0; font: bold 24px/1.25 Arial, sans-serif; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.result small { color: #52616b; font-size: 10px; }
.result.primary { background: #fff3c1; border-color: #b5a565; border-left: 4px solid #356641; }
.result.primary strong { color: #193b58; }
.placeholder strong { font: bold 15px/1.35 Arial, sans-serif; color: #52616b; }
.diagram-panel { min-width: 0; }
.diagram-intro { color: #52616b; font-size: 12px; margin: 0; }
figure { margin: 14px 0; }
.curve-diagram { display: block; border: 1px solid #89949d; background: #fafbfc; }
.diagram-label { font: bold 20px Arial, sans-serif; fill: #193b58; }
.diagram-readout { border: 1px solid #89949d; border-top: 0; background: #f1f3f4; padding: 8px 12px; }
.diagram-readout p { display: flex; flex-wrap: wrap; column-gap: 12px; margin: 4px 0; font-size: 11px; }
.readout-label { font-weight: bold; color: #193b58; min-width: 112px; }
.diagram-metric { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px; border: 1px solid #89949d; background: #e7f0e7; font-size: 12px; }
.diagram-metric strong { font: bold 25px/1.25 Arial, sans-serif; color: #294f33; font-variant-numeric: tabular-nums; }
.wuw-note p { margin: 6px 0 0; }
.method, .sources { margin-top: 16px; }
.assumption-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 24px; }
h3 { color: #193b58; font-size: 12px; margin: 0 0 7px; }
.method p { color: #52616b; font-size: 12px; margin: 8px 0; }
.method .formula { font: 12px/1.9 Consolas, monospace; color: #193b58; background: #f1f3f4; border: 1px solid #89949d; padding: 10px; overflow-wrap: anywhere; }
.source-links { display: flex; flex-wrap: wrap; gap: 10px 22px; font-size: 12px; }
.sources .hint { margin-bottom: 0; }
@media (max-width: 900px) { .workspace { grid-template-columns: minmax(0,1fr); } .diagram-panel .wuw-panel-content { max-width: 700px; margin: 0 auto; } }
@media (max-width: 520px) {
  .wuw-panel-content { padding: 12px; }
  .wuw-panel-title { padding: 9px 12px; }
  .input-grid, .assumption-grid { grid-template-columns: minmax(0,1fr); gap: 14px; }
  .lookup-row { flex-wrap: wrap; }
  .lookup-row input { flex-basis: 100%; }
  .lookup-row button { width: 100%; }
  .optional { display: block; }
  .results { gap: 8px; }
  .result { padding: 9px; }
  .result strong { font-size: 21px; }
  .placeholder strong { font-size: 14px; }
  .unit-tag { font-size: 9px; }
  .diagram-readout p { display: block; margin: 7px 0; }
  .diagram-readout p span { display: block; }
  .diagram-metric { align-items: flex-start; flex-direction: column; }
}
@media print { .workspace { grid-template-columns: minmax(0,1fr) minmax(0,1fr); } .wuw-panel { break-inside: avoid; } .wuw-panel-title.major { color: black; background: #d1d6da; } }

/* USGS 3DEP terrain analysis panels */
.terrain-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}
.terrain-subpanel{background:#f1f3f4;border:1px solid #89949d;padding:14px;min-width:0}
.terrain-subpanel h3{background:#d1d6da;border-bottom:1px solid #89949d;margin:-14px -14px 14px;padding:9px 12px}
.terrain-subpanel button{margin-top:8px;margin-right:4px}
.terrain-subpanel select{background:#fff;border:1px solid #89949d;padding:9px;width:100%;min-height:40px;color:#25323a}
.terrain-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}
.terrain-metrics>div{background:#fff;border:1px solid #89949d;padding:12px;min-width:0}
.terrain-metrics span{font-size:11px;color:#193b58;font-weight:bold;display:block}
.terrain-metrics strong{display:block;margin-top:5px;font:bold 19px Arial,sans-serif;overflow-wrap:anywhere}
.terrain-metrics .wide{grid-column:1/-1}
.terrain-ok{color:#356641}.terrain-blocked{color:#a13b31}
.terrain-chart-wrap{background:#fff;border:1px solid #89949d;margin:10px 0 18px}
.terrain-chart-wrap svg{display:block;width:100%;height:auto}
.terrain-coverage{margin-top:12px}
.terrain-coverage-options{display:flex;flex-wrap:wrap;gap:12px;align-items:end}
.terrain-coverage-options>div{width:220px;max-width:100%}
#terrainMap{height:400px;width:100%;background:#e2e9ec;border:1px solid #89949d}
.legend{display:inline-block;margin:0 12px 4px 0;padding:2px 5px;border-left:5px solid}
.legend.green{border-color:#126e42}.legend.red{border-color:#aa2d30}.legend.gray{border-color:#626b75}.legend.blue{border-color:#184c83}
@media(max-width:720px){.terrain-controls{grid-template-columns:minmax(0,1fr)}#terrainMap{height:310px}}

/* Height control repeated in terrain panel; both fields are synchronized. */
.terrain-height-link{margin:12px 0;padding:12px;background:#fff;border:1px solid #89949d;border-left:4px solid #356641}
.terrain-height-link input{max-width:230px}
.terrain-height-link .hint{margin-bottom:0}

/* USGS processing-time notice, consistent with the Utility Web control-panel style. */
.terrain-processing-notice{margin:12px 0 15px;padding:11px 13px;background:#fff8df;border:1px solid #b5a565;border-left:4px solid #b59a36;color:#25323a}
.terrain-processing-notice .terrain-processing-title{margin:0 0 7px;color:#193b58;font-size:11px;font-weight:700;letter-spacing:.06em}
.terrain-processing-notice p{margin:0 0 7px;line-height:1.5}
.terrain-processing-notice p:last-child{margin-bottom:0}

/* V2.0 usability: location first, compact FCC lookup at right. */
.location-row{align-items:stretch}
.asrn-compact{box-sizing:border-box;width:min(100%,340px);margin:13px 0 5px auto;padding:10px 11px;background:#edf0f2;border:1px solid #89949d}
.asrn-compact label{font-size:11px;margin-bottom:5px}
.asrn-compact .lookup-row{gap:6px}
.asrn-compact input{max-width:135px;min-height:34px;height:34px;padding:6px 8px;font-size:12px}
.asrn-compact button{min-height:34px;height:34px;padding:6px 9px;font-size:11px}
.asrn-compact .hint{margin:4px 0 0}
@media(max-width:520px){.asrn-compact .lookup-row{flex-wrap:nowrap}.asrn-compact .lookup-row input{flex-basis:auto;flex-grow:1}.asrn-compact .lookup-row button{width:auto;white-space:nowrap}}

/* Map backgrounds change only raster tiles, not antenna markers or the
   coverage polygons. This avoids an additional paid basemap API. */
.terrain-map-muted .leaflet-tile-pane{filter:grayscale(1) brightness(1.12) contrast(.82)}
.terrain-map-muted{background:#f0f0f0}
.terrain-downloads{margin:12px 0;padding:12px 13px;background:#e9edef;border:1px solid #89949d}
.terrain-download-title{margin:0 0 9px;color:#193b58;font-weight:bold;font-size:11px;letter-spacing:.045em}
.terrain-download-actions{display:flex;flex-wrap:wrap;gap:7px}
.terrain-download-actions button{margin:0;min-height:34px;padding:7px 10px;white-space:nowrap}
.terrain-downloads .status{margin:9px 0 0}
.method-aside{margin:12px 0 0;padding:10px 12px;background:#f1f3f4;border-left:4px solid #b5a565;color:#52616b;font-size:11px;font-style:italic}

/* Opt-in post-scan recovery: a separate window, max five minutes. */
.terrain-recovery-option{margin:12px 0 14px;padding:12px 13px;border:1px solid #b5a565;border-left:5px solid #b58c28;background:#fff8e4;color:#25323a}
.terrain-recovery-option[hidden]{display:none!important}
.terrain-recovery-heading{font-size:11px;font-weight:700;letter-spacing:.055em;color:#193b58}
.terrain-recovery-option p{font-size:11px;line-height:1.6;margin:7px 0}
.terrain-recovery-option button{min-height:36px}
.terrain-recovery-option .status{font-weight:600}

/* Two first-class analysis modes: 360-degree site visibility and
   reciprocal two-endpoint terrain line-of-sight. */
.terrain-purpose-banner{margin:10px 0 14px;border:1px solid #89949d;border-left:4px solid #356641;background:#edf1f3;padding:11px 13px;color:#25323a}
.terrain-purpose-banner strong{display:block;color:#193b58;font-size:11px;letter-spacing:.05em}
.terrain-purpose-banner p{margin:6px 0 0;font-size:11px;line-height:1.65}
.terrain-purpose-banner b{color:#193b58}
.path-report-actions{border:1px solid #89949d;background:#e7eeec;margin-top:15px;padding:11px 12px}
.path-report-actions button{margin:0;font-size:12px;min-height:37px;background:#193b58}
.path-report-actions button:hover{background:#285978}
.path-report-actions .terrain-download-title{margin:0 0 7px}
.path-report-actions .hint{margin:8px 0 0}
