:root { --ink:#111; --muted:#3d3d3d; --bg:#fff; --panel:#f4f6f8; --brand:#0b5394; --focus:#c25e00; --warn:#8a1c1c; }
* { box-sizing: border-box; }
body { margin:0; font: 18px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; color:var(--ink); background:var(--bg); }
.skip { position:absolute; left:-999px; top:0; background:#000; color:#fff; padding:.5rem 1rem; z-index:2000; }
.skip:focus { left:.5rem; top:.5rem; }
header.site, footer.site { padding: .75rem 1.25rem; background:#0b2b4c; color:#fff; }
header.site { display:flex; flex-wrap:wrap; gap:1rem; align-items:center; justify-content:space-between; }
.brand { font-weight:800; font-size:1.4rem; margin:0; }
.test-banner { margin:0; background:#ffe08a; color:#111; padding:.25rem .75rem; border-radius:4px; }
footer.site a { color:#cfe5ff; }
main { max-width: 1150px; margin: 0 auto; padding: 1rem 1.25rem 2rem; }
h1 { font-size:2rem; margin:.5rem 0; } h2 { font-size:1.25rem; margin:0 0 .5rem; }
.lead { color:var(--muted); max-width: 60rem; }
.grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap:1rem; }
.panel { background:var(--panel); border:1px solid #c9d1d9; border-radius:8px; padding:1rem; margin:1rem 0 0; }
fieldset { border:0; padding:0; margin:0; } legend { font-weight:600; margin-bottom:.25rem; }
.radios { display:flex; flex-wrap:wrap; gap:.5rem 1rem; }
.radio { display:flex; align-items:center; gap:.4rem; min-height:44px; padding:0 .6rem; border:1px solid #8a96a3; border-radius:6px; background:#fff; cursor:pointer; }
.radio input { width:22px; height:22px; }
label { display:block; font-weight:600; margin-top:.5rem; } .radio { font-weight:500; margin-top:0; }
input[type=search], input[type=email], input:not([type]), input[type=text] { width:100%; font:inherit; padding:.55rem .6rem; border:2px solid #5c6670; border-radius:6px; min-height:44px; }
.row { display:flex; gap:.5rem; } .row input { flex:1; }
button { font:inherit; min-height:44px; padding:.4rem .9rem; border-radius:6px; border:2px solid var(--brand); background:#fff; color:var(--brand); font-weight:600; cursor:pointer; }
button:hover { background:#e8f1fb; }
button.primary { background:var(--brand); color:#fff; font-size:1.1rem; padding:.6rem 1.4rem; }
button.primary:hover { background:#08406f; }
button[disabled] { opacity:.55; cursor:not-allowed; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.hint { color:var(--muted); font-size:.95rem; margin:.25rem 0; }
.status { min-height:1.5em; } .warn { color:var(--warn); font-weight:600; min-height:1.2em; margin:.25rem 0; }
.results { list-style:none; padding:0; margin:.25rem 0 0; } .results li { margin:.25rem 0; }
.results button { width:100%; text-align:left; font-weight:500; }
.map-wrap { position:relative; height: 560px; border:2px solid #5c6670; border-radius:6px; overflow:hidden; }
#map { position:absolute; inset:0; }
#map:focus-visible { outline: 4px solid var(--focus); outline-offset:-4px; }
#frame { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); border:3px dashed #c25e00;
         box-shadow: 0 0 0 9999px rgba(0,0,0,.28); pointer-events:none; z-index:500; }
.frame-label { position:absolute; left:0; top:-2px; transform:translateY(-100%); background:#c25e00; color:#fff; font-size:.85rem; padding:0 .4rem; font-weight:700; }
.map-tools { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.6rem; }
.scale p { margin:.35rem 0; }
.submit-row { margin-top:1.25rem; display:flex; flex-wrap:wrap; gap:1rem; align-items:center; }
.hp { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden; }
.ok-box { background:#e3f5e1; border:2px solid #2e7d32; padding:.75rem 1rem; border-radius:6px; }
.err-box { background:#fdecea; border:2px solid var(--warn); padding:.75rem 1rem; border-radius:6px; }
@media (max-width: 640px) { .map-wrap { height: 420px; } h1 { font-size:1.6rem; } }
@media (prefers-reduced-motion: reduce) { * { scroll-behavior:auto !important; } }
.privacy { background:#fff4e5; border:3px solid #c25e00; border-radius:8px; padding:.75rem 1.25rem; margin:1rem 0; }
.privacy h2 { color:#7a3300; } .privacy li { margin:.25rem 0; }
label.inline { display:inline; font-weight:600; } input[type=checkbox] { width:22px; height:22px; vertical-align:middle; }
input[type=file] { font:inherit; min-height:44px; }
