.empty{border:1px dashed #b8c9bc;background:#f6f8f2;padding:1.15rem;border-radius:5px;color:#566e61}.empty strong{display:block;color:#2c5141;margin-bottom:.4rem}.empty p{margin:0;font-size:.86rem}.candidate-card{width:100%;border:1px solid #cbd8cd;border-left:4px solid #6e9580;border-radius:5px;background:#f9faf5;padding:.85rem;text-align:left;color:#21392f}.candidate-card:hover,.candidate-card[aria-current="true"]{border-color:#428467;background:#eef5eb}.candidate-card strong{display:block;font-family:Georgia,serif;font-size:1.06rem;font-weight:500}.candidate-card small{display:block;color:#60766a;margin:.35rem 0 .6rem}.candidate-card .tag{font-size:.62rem}.detail-title{font-size:1.48rem;margin-bottom:.55rem}.detail-lede{font-size:.88rem;color:#4a6255}.detail-section{border-top:1px solid #dce3d9;margin-top:1.2rem;padding-top:1rem}.detail-section h3{font-size:1rem;margin:0 0 .75rem}.evidence-list{list-style:none;margin:0;padding:0;display:grid;gap:.8rem}.evidence-list li{border-left:3px solid #719b7c;padding-left:.7rem}.evidence-list li .tag{margin-bottom:.35rem}.evidence-list li p{font-size:.84rem;margin:.15rem 0}.evidence-list li a{font-size:.75rem;overflow-wrap:anywhere}.evidence-list li small{color:#63756a}.decision-actions{display:flex;flex-wrap:wrap;gap:.5rem}.decision-actions button{font-size:.78rem}.decision-actions button[aria-pressed="true"]{background:#205646;color:#fff;border-color:#205646}.coverage-list{margin:0;display:grid;gap:.65rem}.coverage-list div{display:flex;justify-content:space-between;gap:.7rem;border-bottom:1px solid #e5ebe4;padding-bottom:.5rem;font-size:.79rem}.coverage-list dt{color:#526b5d}.coverage-list dd{margin:0;font-weight:700}.context-note{font-size:.76rem;color:#677b6d;margin:1rem 0 0}
.road-facts{display:block}.road-facts div{display:block;border-bottom:1px solid #e5ebe4;padding:.45rem 0}.road-facts dt{font:700 .68rem/1.4 ui-monospace,SFMono-Regular,monospace;text-transform:uppercase;letter-spacing:.08em;color:#55766a}.road-facts dd{margin:.18rem 0 0;font-size:.82rem;font-weight:600;overflow-wrap:anywhere}.evidence-notes{display:grid;gap:.7rem;margin-top:1rem}.evidence-note{border-left:3px solid #719b7c;padding-left:.7rem}.evidence-note.caution{border-left-color:#c99a4a}.evidence-note strong{display:block;font:700 .76rem/1.5 ui-monospace,SFMono-Regular,monospace;letter-spacing:.04em;color:#2c5141}.evidence-note p{margin:.3rem 0 0;overflow-wrap:anywhere}
/* MAP CONTROLS: the switches and buttons above the map panel. The map itself is sized by `.map` in layout.css, and
   everything drawn inside it is drawn by Leaflet - whose panes and overlay <svg> are sized by the library. There is
   therefore no styling here for map contents, and in particular no generic `svg` rule: a rule like `.map > svg{
   width:100%;height:100%}` was needed by the schematic renderer and, applied to anything Leaflet nests, would stretch
   its overlays. Corridor and overlay styling travels with the Leaflet layers themselves (see src/map/geo-view.js). */
.map-controls{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.map-toggle{display:flex;align-items:center;gap:.35rem;font:700 .68rem/1 ui-monospace,SFMono-Regular,monospace;text-transform:uppercase;letter-spacing:.06em;color:#4c6a5c}
.map-toggle input{accent-color:#205646;margin:0}
/* The saved-roads collection: cards that carry a person's own favorite flag and notes beside the facts, and a
   fact-by-fact comparison that scrolls sideways on a phone instead of squeezing three columns into it. */
.saved-roads{padding:1rem}
.saved-counts{margin:0 0 .6rem}
.saved-migration{margin:.2rem 0 .6rem}
.saved-controls{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:end;margin-bottom:.5rem}
.saved-field{display:flex;flex-direction:column;gap:.25rem;font-size:.72rem;letter-spacing:.03em;text-transform:uppercase;color:#5b6d61}
.saved-filters{display:flex;flex-wrap:wrap;gap:.4rem}
.saved-filter{font-size:.76rem}
.saved-filter[aria-pressed="true"]{background:#205646;color:#fff;border-color:#205646}
.saved-note{margin:.2rem 0 .8rem;max-width:60rem}
.saved-list{display:grid;gap:.6rem}
@media(min-width:900px){.saved-list{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}}
.saved-card{border:1px solid #cbd8cd;border-left:4px solid #6e9580;border-radius:5px;background:#f9faf5;padding:.8rem;min-width:0}
.saved-card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem}
.saved-name{border:0;background:none;padding:0;font-family:Georgia,serif;font-size:1.04rem;color:#21392f;text-align:left;cursor:pointer}
.saved-name:hover{text-decoration:underline}
.saved-card-facts{margin:.4rem 0 0}
.saved-card-origin{margin:.35rem 0 0}
.saved-card-note{margin:.45rem 0 0;font-size:.84rem;white-space:pre-wrap;overflow-wrap:anywhere}
.saved-compare-toggle{margin-top:.55rem;display:inline-flex;gap:.35rem;align-items:center;font-size:.78rem}
.saved-compare{margin-top:1.2rem;border-top:1px solid #dce3d9;padding-top:1rem}
.saved-compare h3{font-size:1rem;margin:0 0 .5rem}
.saved-compare-scroll{overflow-x:auto;max-width:100%}
.saved-compare-table{border-collapse:collapse;width:100%;min-width:36rem;font-size:.82rem}
.saved-compare-table th,.saved-compare-table td{border-bottom:1px solid #e5ebe4;padding:.4rem .6rem;text-align:left;vertical-align:top}
.saved-compare-table thead th{color:#2c5141}
.saved-compare-table tbody th{color:#526b5d;font-weight:600;white-space:nowrap}
.saved-compare-session td{background:#f6f8f2;color:#4b5c51}
.saved-compare-note{margin:.7rem 0 .5rem}
.candidate-user .note-input{width:100%;font:inherit;font-size:.86rem;padding:.5rem;border:1px solid #c8d3c6;border-radius:5px;background:#fffef9;color:#21392f;resize:vertical;margin-top:.35rem}
.candidate-user .detail-field{display:block;font-size:.78rem;color:#526b5d;margin-top:.7rem}
.boot-note{margin:0 0 1rem;padding:.85rem 1rem;border:1px solid #d9b48a;border-left:4px solid #bd7b36;border-radius:5px;background:#fdf6ec;color:#6a4212;font-size:.86rem}
.outings-panel{grid-column:1 / -1;grid-row:6}
/* RECORDED TRIPS — WHAT ACTUALLY HAPPENED, KEPT ON THIS DEVICE.
   A compact history, not a dashboard: one line per recording, and one opened at a time. */
.trips-panel{grid-column:1 / -1;grid-row:7}
.trips{padding:1rem}
.trips-note{margin:.2rem 0 .8rem;max-width:60rem}
.trips-storage-note{margin:.2rem 0 .6rem;color:#6a4212}
.trip-recording-banner{margin:0 0 .8rem;padding:.7rem .85rem;border:1px solid #d9a08a;border-left:4px solid #be123c;border-radius:5px;background:#fdf3f1;color:#7a1f2e;font-size:.86rem;display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between}
.trip-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
@media(min-width:900px){.trip-list{grid-template-columns:repeat(auto-fill,minmax(19rem,1fr))}}
.trip{display:flex;flex-direction:column;gap:.35rem}
.trip-open{text-align:left;font:inherit;padding:.6rem .7rem;border:1px solid #c8d3c6;border-radius:6px;background:#f7faf5;color:#21392f;cursor:pointer}
.trip-open[aria-expanded="true"]{border-color:#be123c;background:#fdf3f1}
.trip-headline{display:block;font-weight:600}
.trip-facts{display:block;color:#527364;font-size:.78rem;margin-top:.2rem}
.trip-status{display:block;font-size:.74rem;color:#8a4b2a;margin-top:.2rem}
.trip-detail{margin-top:1rem;padding-top:.9rem;border-top:1px solid #dce3d9;display:grid;gap:.6rem;max-width:52rem}
.trip-summary{list-style:none;padding:0;margin:0;display:grid;gap:.25rem}
.trip-events{list-style:none;padding:0;margin:0;display:grid;gap:.4rem}
.trip-event{padding:.45rem .6rem;border:1px solid #e2e8de;border-radius:5px;background:#fbfdf8}
.trip-event-when{display:block;color:#527364;font-size:.75rem}
.trip-event-text{display:block;margin-top:.15rem}
.trip-roads{list-style:none;padding:0;margin:0;display:grid;gap:.2rem;font-size:.84rem}
.trip-actions{display:flex;flex-wrap:wrap;gap:.5rem}
.trip-removal{display:grid;gap:.4rem;margin-top:.5rem}
.trip-removal .decision-actions{display:flex;flex-wrap:wrap;gap:.5rem}
@media(max-width:700px){.trips-panel{order:8}.trip-actions,.trip-removal .decision-actions{flex-direction:column;align-items:stretch}.trip-actions .quiet-button,.trip-actions .primary-button{width:100%}}
.outings{padding:1rem}
.outings-counts{margin:0 0 .4rem}
.outings-note{margin:.2rem 0 .8rem;max-width:60rem}
.outings-storage-note{margin:.2rem 0 .6rem;color:#6a4212}
.outing-list{display:grid;gap:.5rem}
@media(min-width:900px){.outing-list{grid-template-columns:repeat(auto-fill,minmax(19rem,1fr))}}
.outing-card{border:1px solid #cbd8cd;border-left:4px solid #577469;border-radius:5px;background:#f9faf5;padding:.7rem;min-width:0}
.outing-name{border:0;background:none;padding:0;font-family:Georgia,serif;font-size:1.02rem;color:#21392f;text-align:left;cursor:pointer}
.outing-name:hover{text-decoration:underline}
.outing-card-facts,.outing-card-roads{margin:.3rem 0 0}
.outing-detail{margin-top:1.2rem;border-top:1px solid #dce3d9;padding-top:1rem}
.outing-detail h3{font-size:.98rem;margin:1rem 0 .5rem}
.outing-fields{display:flex;flex-wrap:wrap;gap:.6rem 1rem}
.outing-field{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem;color:#526b5d}
.outing-input,.outing-notes{font:inherit;font-size:.86rem;padding:.45rem;border:1px solid #c8d3c6;border-radius:5px;background:#fffef9;color:#21392f;max-width:100%}
.outing-notes{width:100%;resize:vertical;white-space:pre-wrap}
.outing-status{display:flex;gap:.4rem;margin-top:.7rem}
.outing-status button[aria-pressed="true"]{background:#205646;color:#fff;border-color:#205646}
.outing-roads{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.outing-road{border:1px solid #dbe4d8;border-radius:5px;padding:.55rem .6rem;background:#fcfdf8;min-width:0}
.outing-position{color:#527364;font-weight:700;margin-right:.35rem}
.outing-road-name{border:0;background:none;padding:0;font-family:Georgia,serif;font-size:.98rem;color:#21392f;cursor:pointer;text-align:left}
.outing-road-name:hover{text-decoration:underline}
.outing-road-facts{margin:.3rem 0 .45rem}
.outing-road-controls{display:flex;flex-wrap:wrap;gap:.4rem}
.outing-road-controls button,.outing-add-road button,.outing-add-item button{font-size:.76rem}
.outing-add-road,.outing-add-item{display:flex;flex-wrap:wrap;gap:.5rem;align-items:end;margin-top:.6rem}
/* A PLAN'S OWN FACTS, AND THE GAP BETWEEN TWO OF ITS ROADS. The summary is a list of measurements already made; the
   separation line sits between two roads in the list and is deliberately quiet, because it is context for the person's
   own order rather than a step of anything. */
.outing-summary{margin-top:.8rem;border:1px solid #dbe4d8;border-radius:5px;padding:.6rem .7rem;background:#f7faf4}
.outing-summary h3{margin:0 0 .4rem;font-size:.95rem}
.outing-summary-facts{list-style:none;margin:0;padding:0;display:grid;gap:.2rem;font-size:.82rem;color:#2f4a3e}
.outing-summary-note{margin:.5rem 0 .5rem}
.outing-separation{list-style:none;margin:-.15rem 0 -.15rem .6rem;padding:0}
.outing-separation-line{margin:.15rem 0;font-size:.78rem;color:#6b7f74;font-style:italic}
.outing-distance-note,.outing-distance-label{margin:.45rem 0}
.outing-distance-label{font-style:italic}
.discovery-outing{margin-top:.7rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:end}
.discovery-outing-note{flex-basis:100%;margin:.2rem 0 0}
.map-popup-outing{margin:.2rem 0;font-size:.86rem;font-weight:600}
.outing-checklist{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.checklist-item{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-size:.86rem}
.checklist-item input[type="checkbox"]{width:1rem;height:1rem}
.checklist-item button{font-size:.72rem}
/* ACCESS & ROAD STATUS — THE PART ORDINARY USE RENDERS.
   The Access & road status section and the Investigation record's empty state are part of the ordinary candidate
   detail: they are on screen before anything Investigator-related has been asked for. Their chrome therefore lives
   with the other components, and the Investigator's own visual vocabulary — findings, claims, stage and source
   lists, adversarial review, the human review controls — lives in assets/css/investigator.css, which is requested
   only when the Investigator feature is loaded. Do not move a rule back here to make a lazy test pass, and do not
   move these two back into investigator.css: the panel would lose its border and its button row at startup. */
.access-section,
.investigation-section{border-left:3px solid var(--line,#3c4a45)}
.access-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.6rem 0}
.access-actions .primary-button,.access-actions .quiet-button{flex:0 0 auto}
@media(max-width:700px){.access-actions{flex-direction:column;align-items:stretch}.access-actions .primary-button,.access-actions .quiet-button{width:100%}}
.outing-plan{max-width:44rem}
.outing-remove{margin-top:1rem}
@media(max-width:700px){.outings-panel{order:7}.outing-fields,.outing-add-road,.outing-add-item{flex-direction:column;align-items:stretch}.outing-road-controls{flex-direction:column;align-items:stretch}}
/* FIELD MODE — THE SAME PLAN, READ WHERE THE ROAD IS.
   One column, thumb-sized controls and no table: the person is standing next to a car, not reading a dashboard. On a
   phone the panel moves to the top of the page while field mode is open, because the field view is the thing being used. */
.outing-field-entry{margin:.7rem 0}
.field-mode{display:grid;gap:.85rem;padding:1rem}
.field-mode-note{margin:0}
.field-head{display:grid;gap:.2rem}
.field-title{margin:0;font-size:1.22rem}
.field-head-facts,.field-current-meta{margin:0}
.field-progress{margin:.25rem 0;font-weight:700;font-size:1rem;color:#205646}
.field-current{border:1px solid #cfe0d5;border-radius:7px;padding:.8rem;background:#f7faf4;min-width:0}
.field-stop{margin:0;color:#527364;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em}
.field-current-name{margin:.15rem 0 .4rem;font-size:1.16rem;overflow-wrap:anywhere}
.field-current-facts{list-style:none;margin:.45rem 0;padding:0;display:grid;gap:.18rem;font-size:.88rem}
.field-unavailable{margin:.3rem 0;font-weight:700;color:#8a5a2b}
.field-leg{margin:.5rem 0 0;font-style:italic;color:#526b5d;font-size:.82rem}
.field-move,.field-visit,.field-map-controls{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}
.field-move button{flex:1 1 8rem;min-height:2.7rem}
.field-visit button{flex:1 1 100%;min-height:3rem}
.field-map-controls button{flex:1 1 9rem;min-height:2.5rem}
.field-navigate{display:grid;gap:.4rem;margin-top:.7rem;border-top:1px solid #e2e9df;padding-top:.65rem}
.field-navigate-link{display:block;min-height:3rem;line-height:3rem;text-align:center;border:1px solid #205646;border-radius:6px;color:#205646;text-decoration:none;font-weight:700}
.field-navigate-link:hover{background:#eaf3ec}
.field-destination{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}
.field-navigate-note{margin:0}
.field-roads h4,.field-checklist h4,.field-road-note h4{margin:0 0 .4rem;font-size:.94rem}
.field-road-list{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}
.field-road{display:flex;align-items:center;gap:.5rem;border:1px solid #e0e8dd;border-radius:6px;padding:.35rem .55rem;min-height:2.7rem}
.field-road.current{border-color:#205646;background:#eef5ef}
.field-road-name{border:0;background:none;padding:0;text-align:left;font:inherit;color:#21392f;cursor:pointer;flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.field-road[data-visited="true"] .field-road-name{text-decoration:line-through;color:#6b7f74}
.field-checklist-items{list-style:none;margin:0;padding:0;display:grid;gap:.3rem}
.field-checklist-item{display:flex;align-items:center;gap:.55rem;min-height:2.5rem;font-size:.92rem}
.field-checklist-item input[type="checkbox"]{width:1.2rem;height:1.2rem}
.field-add-item{display:flex;gap:.5rem;margin-top:.45rem}
.field-input,.field-textarea{font:inherit;font-size:.92rem;padding:.55rem;border:1px solid #c8d3c6;border-radius:6px;background:#fffef9;color:#21392f;width:100%}
.field-textarea{resize:vertical;white-space:pre-wrap}
.field-label{display:block;font-size:.78rem;color:#526b5d;margin-bottom:.2rem}
.field-empty{padding:1rem;color:#526b5d}
/* LIVE LOCATION — A READING, NOT A DASHBOARD. The control, what the browser said, how far the road is, and how well the
   device knows it. Everything here is quiet except the two things a person acts on: the button that starts it and the
   distance they came to read. */
.field-location{margin-top:.7rem;border-top:1px solid #e2e9df;padding-top:.65rem;display:grid;gap:.4rem}
.field-location-controls{display:flex;flex-wrap:wrap;gap:.5rem}
.field-location-controls button{flex:1 1 9rem;min-height:2.7rem}
.field-location-status{margin:0;font-size:.84rem;font-weight:600;color:#527364}
.field-location-status[data-status="active"]{color:#205646}
.field-location-status[data-status="denied"],.field-location-status[data-status="unavailable"]{color:#8a5a2b}
.field-location-message{margin:0;font-size:.8rem;color:#8a5a2b}
.field-location-accuracy{margin:0}
.field-proximity{margin:.1rem 0;font-size:1.02rem;font-weight:700;color:#21392f}
.field-proximity[data-near="true"]{color:#205646}
.field-proximity-note,.field-location-privacy{margin:0}
.field-location-actions{display:flex;flex-wrap:wrap;gap:.5rem}
.field-location-actions button{flex:1 1 9rem;min-height:2.5rem}
/* TRIP RECORDING — THE ONE THING IN THIS APPLICATION THAT KEEPS COORDINATES ON PURPOSE.
   The controls say what they will do before they do it: nothing is recorded until "Start recording" is pressed, and the
   block states plainly that a recording depends on the browser continuing to deliver location updates. */
.field-recording{margin-top:.9rem;border-top:1px solid #e2e9df;padding-top:.7rem;display:grid;gap:.5rem}
.field-recording-head{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:space-between}
.field-recording-controls{display:flex;flex-wrap:wrap;gap:.5rem}
.field-recording-controls button{flex:1 1 9rem;min-height:2.7rem}
.field-recording-status{margin:0;font-size:.84rem;font-weight:600;color:#527364}
.field-recording-status[data-status="recording"]{color:#8a1f2e}
.field-recording-summary{margin:0;font-size:.9rem;color:#21392f}
.field-recording-note,.field-recording-privacy{margin:0}
.field-recording-warning{margin:0;font-size:.8rem;color:#8a5a2b}
.field-event-form{display:flex;flex-direction:column;gap:.35rem}
.field-event-form label{font-size:.78rem;color:#526b5d}
.field-event-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.field-event-row input{flex:1 1 12rem;min-width:0}
.field-events{list-style:none;padding:0;margin:.2rem 0 0;display:grid;gap:.35rem}
.field-event{padding:.4rem .55rem;border:1px solid #e2e8de;border-radius:5px;background:#fbfdf8}
.field-event-when{display:block;color:#527364;font-size:.74rem}
.field-event-text{display:block;margin-top:.1rem}
.field-visit.near button{outline:2px solid #205646;outline-offset:1px}
.field-near-note{color:#205646}
@media(min-width:900px){.field-mode{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start}
  .field-head,.field-mode-note{grid-column:1 / -1}}
@media(max-width:700px){.outings-panel.is-field{order:-1}}
