.rod-error{padding:1em;border:1px solid #d22;background:#fdecea;color:#911;border-radius:4px;margin:1em 0}
.rod-empty{font-style:italic;color:#666}
.rod-section-title{margin:0 0 .25em}
.rod-section-intro{margin:0 0 1em;color:#555}
.rod-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}

.rod-btn{display:inline-block;background:#1e6091;color:#fff;border:0;border-radius:4px;padding:.55em 1em;font-size:.95em;cursor:pointer;line-height:1}
.rod-btn:hover{background:#174a72}
.rod-btn-sm{padding:.35em .7em;font-size:.85em}
.rod-btn-primary{background:#0a8;}
.rod-btn-primary:hover{background:#087}
.rod-btn[disabled]{background:#aaa;cursor:not-allowed}

/* Recent sightings */
.rod-sighting-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1em}
.rod-sighting-card{background:#fff;border:1px solid #e3e3e3;border-radius:6px;overflow:hidden;display:flex;flex-direction:column}
.rod-sighting-photo img{display:block;width:100%;height:180px;object-fit:cover}
.rod-sighting-body{padding:.75em 1em}
.rod-sighting-head{display:flex;justify-content:space-between;align-items:baseline;gap:.5em;font-size:.95em}
.rod-canoe-number{font-weight:700;color:#1e6091}
.rod-sighting-date{color:#666;font-size:.85em}
.rod-sighting-finder{color:#444;font-size:.9em;margin-top:.25em}
.rod-sighting-notes{margin:.5em 0 0;color:#333;font-size:.95em}
.rod-sighting-loc{color:#888;font-size:.8em;margin-top:.5em;font-family:ui-monospace,Menlo,monospace}

/* Find canoe */
.rod-find-canoe{max-width:640px}
.rod-lookup-form{display:flex;gap:.5em;margin-bottom:.5em}
.rod-lookup-form input[type=text]{flex:1;padding:.55em .75em;border:1px solid #bbb;border-radius:4px;font-size:1em;text-transform:uppercase}
.rod-lookup-status{font-size:.9em;color:#555;min-height:1.2em;margin-bottom:.5em}
.rod-canoe-result:not(:empty){background:#f7fbff;border:1px solid #cde0f0;border-radius:6px;padding:1em;margin-bottom:1em}
.rod-canoe-result img{max-width:100%;height:auto;border-radius:4px}
.rod-sighting-form{margin-top:1em}
.rod-field{margin-bottom:.85em}
.rod-field label{display:block;font-weight:600;font-size:.9em;margin-bottom:.25em}
.rod-field input[type=text],.rod-field input[type=email],.rod-field input[type=date],.rod-field input[type=number],.rod-field textarea{
  width:100%;padding:.5em .65em;border:1px solid #bbb;border-radius:4px;font-size:.95em;box-sizing:border-box;
}
.rod-field-row{display:grid;grid-template-columns:1fr 1fr auto;gap:.5em;align-items:end}
.rod-submit-row{margin-top:1em}
.rod-submit-status{margin-top:.75em;font-size:.95em;min-height:1.2em}
.rod-submit-status.rod-success{color:#085}
.rod-submit-status.rod-fail{color:#b00}

/* Launches */
.rod-launches-search{display:flex;gap:.5em;margin-bottom:.75em}
.rod-launches-search input[type=search]{flex:1;padding:.55em .75em;border:1px solid #bbb;border-radius:4px;font-size:1em}
.rod-launches-meta{color:#666;font-size:.9em;margin-bottom:.5em}
.rod-launch-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75em}
.rod-launch-card{background:#fff;border:1px solid #e3e3e3;border-radius:6px;padding:.75em 1em}
.rod-launch-head{display:flex;gap:.5em;align-items:baseline}
.rod-launch-code{font-weight:700;color:#1e6091}
.rod-launch-name{font-weight:600}
.rod-launch-org{color:#555;font-size:.9em;margin-top:.2em}
.rod-launch-stats{margin-top:.5em;display:flex;flex-wrap:wrap;gap:.75em;color:#666;font-size:.85em}
.rod-launches-pagination{display:flex;gap:.5em;align-items:center;margin-top:1em;justify-content:center}

/* Map */
.rod-sightings-map-wrap{position:relative;width:100%}
.rod-sightings-map{width:100%;border-radius:6px;overflow:hidden;border:1px solid #ccc}
.rod-map-status{position:absolute;top:.5em;left:.5em;background:rgba(255,255,255,.92);padding:.3em .6em;border-radius:4px;font-size:.8em;color:#333;z-index:500;pointer-events:none}
.rod-map-status:empty{display:none}
.rod-popup-photo{max-width:180px;height:auto;border-radius:4px;margin-bottom:.4em;display:block}
