/* ==========================================================================
   DFLV Places — "Ranger Station" front-end theme.
   A field-office ledger look: typewriter type, index numbering, stamped
   status badges, dashed-border map insets. Applies to the directory
   browse page (archive-dflv_place.php / [dflv_places]) and the single
   place "dossier" (single-dflv_place.php).
   ========================================================================== */

:root{
  --dflv-bg:#eee9db;
  --dflv-surface:#f8f5ea;
  --dflv-surface-2:#efe9d6;
  --dflv-ink:#211f1a;
  --dflv-sub:#6b6355;
  --dflv-line:#b9ae90;
  --dflv-accent:#35513a;
  --dflv-accent-ink:#eef3ec;
  --dflv-mark:#9c3b23;
  --dflv-mark-bg:#f3ddd2;
  --dflv-font: "Courier New", "American Typewriter", monospace;
}
@media (prefers-color-scheme: dark){
  :root{
    --dflv-bg:#17160f;
    --dflv-surface:#1e1d15;
    --dflv-surface-2:#221f16;
    --dflv-ink:#e9e4d2;
    --dflv-sub:#a49c82;
    --dflv-line:#3a3527;
    --dflv-accent:#8fb397;
    --dflv-accent-ink:#0f180f;
    --dflv-mark:#e2825f;
    --dflv-mark-bg:#3a1d10;
  }
}

.dflv-directory,
.dflv-directory-page,
.dflv-single-place{
  font-family:var(--dflv-font);
  color:var(--dflv-ink);
}

.dflv-directory-page{ max-width:1080px; margin:0 auto; padding:28px 20px 48px; }
.dflv-archive-header h1{
  font-size:22px;
  letter-spacing:.01em;
  text-transform:uppercase;
  margin:0 0 4px;
}
.dflv-archive-header{ border-bottom:2px solid var(--dflv-ink); padding-bottom:12px; margin-bottom:4px; }

/* ---- shared: stamp / status ---- */
.dflv-stamp{
  display:inline-block;
  border:2px solid var(--dflv-mark);
  color:var(--dflv-mark);
  font-weight:700;
  font-size:11px;
  letter-spacing:.03em;
  text-transform:uppercase;
  padding:2px 9px;
  transform:rotate(-3deg);
  background:transparent;
}
.dflv-status-closed{
  color:var(--dflv-sub);
  font-size:12px;
}
.dflv-badge{ /* legacy hook kept for markup compatibility */
  display:inline-block;
  font-size:11px;
  letter-spacing:.03em;
  text-transform:uppercase;
  padding:2px 9px;
}
.dflv-badge-open{ border:2px solid var(--dflv-mark); color:var(--dflv-mark); font-weight:700; transform:rotate(-3deg); }
.dflv-badge-closed{ color:var(--dflv-sub); }

/* ---- directory: header bar ---- */
.dflv-ledger-meta{
  display:flex;
  align-items:baseline;
  gap:12px;
  border-bottom:2px solid var(--dflv-ink);
  padding-bottom:10px;
  margin-bottom:14px;
}
.dflv-entry-count{
  font-size:12px;
  letter-spacing:.03em;
  color:var(--dflv-sub);
  white-space:nowrap;
}
.dflv-rule-fill{ flex:1; }
.dflv-toggle-filters,
.dflv-near-me,
.dflv-view-btn,
.dflv-apply-filters,
.dflv-clear-filters{
  font-family:var(--dflv-font);
  font-size:12px;
  letter-spacing:.02em;
  background:var(--dflv-surface);
  color:var(--dflv-ink);
  border:1px solid var(--dflv-line);
  padding:6px 12px;
  cursor:pointer;
}
.dflv-btn-primary{ background:var(--dflv-accent); border-color:var(--dflv-accent); color:var(--dflv-accent-ink); font-weight:700; }
.dflv-btn-link{ background:none; border:none; text-decoration:underline; color:var(--dflv-sub); padding:6px 4px; }

.dflv-directory-controls{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
  margin-bottom:16px;
  font-size:12.5px;
}
.dflv-inline-filters{ display:flex; align-items:center; gap:16px; }
.dflv-open-now-toggle{ display:flex; align-items:center; gap:6px; cursor:pointer; }
.dflv-view-toggle{ display:inline-flex; border:1px solid var(--dflv-line); }
.dflv-view-toggle .dflv-view-btn{ border:none; border-right:1px solid var(--dflv-line); }
.dflv-view-toggle .dflv-view-btn:last-child{ border-right:none; }
.dflv-view-btn.is-active{ background:var(--dflv-ink); color:var(--dflv-bg); }

/* ---- directory: filters panel ---- */
.dflv-directory-body{ display:block; }
.dflv-filters{
  border:1px solid var(--dflv-line);
  background:var(--dflv-surface);
  padding:14px 16px;
  margin-bottom:18px;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));
  gap:16px;
}
.dflv-filters[hidden]{ display:none; }
.dflv-filter-group h4{
  margin:0 0 8px;
  font-size:11px;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--dflv-sub);
  border-bottom:1px solid var(--dflv-line);
  padding-bottom:6px;
}
.dflv-filter-option{
  display:block;
  font-size:12.5px;
  margin-bottom:5px;
  cursor:pointer;
}
.dflv-filters > .dflv-btn-primary,
.dflv-filters > .dflv-btn-link{
  grid-column:1 / -1;
  justify-self:start;
}

/* ---- directory: results / map ---- */
.dflv-map-view[hidden]{ display:none; }
.dflv-map-label{
  font-size:10px;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--dflv-sub);
  margin-bottom:6px;
}
.dflv-map{
  height:420px;
  border:1px dashed var(--dflv-mark);
  background:var(--dflv-surface-2);
  background-image:
    repeating-linear-gradient(0deg, transparent 0 18px, var(--dflv-line) 18px 19px),
    repeating-linear-gradient(90deg, transparent 0 18px, var(--dflv-line) 18px 19px);
}

.dflv-list-view[hidden]{ display:none; }
.dflv-ledger{
  width:100%;
  border-collapse:collapse;
  font-size:12.5px;
}
.dflv-ledger thead th{
  text-align:left;
  text-transform:uppercase;
  letter-spacing:.04em;
  font-size:10.5px;
  color:var(--dflv-sub);
  border-bottom:2px solid var(--dflv-ink);
  padding:6px 8px;
}
.dflv-ledger td{
  padding:10px 8px;
  border-bottom:1px solid var(--dflv-line);
  vertical-align:top;
}
.dflv-ledger tbody tr:nth-child(even) td{ background:var(--dflv-surface-2); }
.dflv-ledger tbody tr.dflv-modal-trigger{ cursor:pointer; }
.dflv-ledger tbody tr.dflv-modal-trigger:hover td{ background:var(--dflv-mark-bg); }
.dflv-col-num{ width:44px; }
.dflv-col-dist{ width:60px; }
.dflv-row-num{ color:var(--dflv-sub); font-variant-numeric:tabular-nums; }
.dflv-row-name{ font-weight:700; color:var(--dflv-ink); text-decoration:none; }
.dflv-row-name:hover{ text-decoration:underline; }
.dflv-row-sub{ color:var(--dflv-sub); font-size:11.5px; margin-top:2px; }
.dflv-row-dist{ font-variant-numeric:tabular-nums; color:var(--dflv-sub); }
.dflv-no-results td{ text-align:center; color:var(--dflv-sub); padding:24px 8px; }

/* numbered stamp markers on the Leaflet map */
.dflv-marker-pin{
  width:22px; height:22px; border-radius:50%;
  background:var(--dflv-accent); color:var(--dflv-accent-ink);
  font-family:var(--dflv-font); font-size:11px; font-weight:700;
  display:flex; align-items:center; justify-content:center;
  border:1px solid var(--dflv-ink);
}

/* ==========================================================================
   Single place — "dossier"
   ========================================================================== */
.dflv-single-place{ max-width:820px; margin:0 auto; padding:24px 20px 56px; }

.dflv-dossier{ border:2px solid var(--dflv-ink); padding:20px 22px; }

.dflv-place-eyebrow-row{
  display:flex;
  justify-content:space-between;
  gap:10px;
  flex-wrap:wrap;
  font-size:11px;
  letter-spacing:.04em;
  color:var(--dflv-sub);
  border-bottom:1px solid var(--dflv-line);
  padding-bottom:8px;
  margin-bottom:12px;
  text-transform:uppercase;
}

.dflv-place-header{ display:flex; justify-content:space-between; align-items:flex-start; gap:14px; flex-wrap:wrap; }
.dflv-place-header h1{ font-size:24px; letter-spacing:.01em; text-transform:uppercase; margin:0 0 4px; }
.dflv-place-types{ color:var(--dflv-sub); font-size:12px; }

.dflv-place-primary-photo{
  aspect-ratio:16/6;
  margin:16px 0;
  background:var(--dflv-surface-2);
  border:1px solid var(--dflv-line);
  background-image: repeating-linear-gradient(115deg, transparent 0 16px, rgba(0,0,0,.04) 16px 18px);
}
.dflv-place-primary-photo img{ width:100%; height:100%; object-fit:cover; display:block; }

.dflv-ledger-fields{ list-style:none; margin:0 0 18px; padding:0; }
.dflv-ledger-fields li{
  display:flex;
  justify-content:space-between;
  gap:10px;
  padding:6px 0;
  border-bottom:1px dotted var(--dflv-line);
  font-size:13px;
}
.dflv-ledger-fields li span:first-child{ color:var(--dflv-sub); }
.dflv-ledger-fields li span:last-child{ font-weight:700; text-align:right; }
.dflv-ledger-fields a,
.dflv-place-description a{ color:var(--dflv-accent); }

.dflv-place-description{
  font-size:13px;
  line-height:1.75;
  margin:16px 0;
  border-top:1px solid var(--dflv-line);
  padding-top:14px;
}

.dflv-type-details h2,
.dflv-place-events h2,
.dflv-place-news h2,
.dflv-related-places h2{
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:.04em;
  margin:20px 0 8px;
  border-bottom:1px solid var(--dflv-line);
  padding-bottom:6px;
}
.dflv-detail-list{ list-style:none; margin:0; padding:0; }
.dflv-detail-list li{ display:flex; justify-content:space-between; gap:10px; padding:5px 0; border-bottom:1px dotted var(--dflv-line); font-size:12.5px; }
.dflv-detail-list li strong{ color:var(--dflv-sub); font-weight:400; }

.dflv-place-gallery{ display:flex; gap:8px; flex-wrap:wrap; margin:14px 0; }
.dflv-place-gallery img{ width:110px; height:82px; object-fit:cover; border:1px solid var(--dflv-line); }

.dflv-place-map{
  height:190px;
  border:1px dashed var(--dflv-mark);
  background:var(--dflv-surface-2);
  background-image:
    repeating-linear-gradient(0deg, transparent 0 18px, var(--dflv-line) 18px 19px),
    repeating-linear-gradient(90deg, transparent 0 18px, var(--dflv-line) 18px 19px);
  margin:16px 0;
}

.dflv-place-news ul,
.dflv-related-places ul,
.dflv-place-events ul{ list-style:none; margin:0; padding:0; }
.dflv-place-news li,
.dflv-related-places li{ padding:5px 0; border-bottom:1px dotted var(--dflv-line); font-size:12.5px; }
.dflv-place-news a,
.dflv-related-places a{ color:var(--dflv-accent); text-decoration:none; font-weight:700; }
.dflv-place-events li{ padding:10px 0; border-bottom:1px solid var(--dflv-line); font-size:12.5px; }
.dflv-event-when{ color:var(--dflv-sub); margin-left:6px; }

/* ==========================================================================
   Place modal — opens a dossier over the browse page instead of navigating.
   ========================================================================== */
.dflv-modal[hidden]{ display:none; }
.dflv-modal{
  position:fixed;
  inset:0;
  z-index:9999;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  padding:5vh 20px;
  overflow-y:auto;
}
.dflv-modal-backdrop{
  position:fixed;
  inset:0;
  background:rgba(23,22,15,.55);
}
@media (prefers-color-scheme: dark){
  .dflv-modal-backdrop{ background:rgba(0,0,0,.7); }
}
.dflv-modal-panel{
  position:relative;
  z-index:1;
  width:100%;
  max-width:820px;
  font-family:var(--dflv-font);
}
.dflv-modal-panel .dflv-dossier{ background:var(--dflv-bg); }
.dflv-modal-close{
  position:absolute;
  top:-14px;
  right:-14px;
  width:32px;
  height:32px;
  border-radius:50%;
  background:var(--dflv-ink);
  color:var(--dflv-bg);
  border:2px solid var(--dflv-bg);
  font-size:18px;
  line-height:1;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
}
.dflv-modal-loading{
  text-align:center;
  color:var(--dflv-sub);
  padding:40px 20px;
  font-size:13px;
}
body.dflv-modal-open{ overflow:hidden; }
