.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.app-shell { display:flex; flex-direction:column; }
.app-header { flex-shrink:0; }
.workspace { flex:1; height:auto; min-height:0; }
.search-tools { flex-shrink:0; padding:14px 28px 0; background:#fff; border-bottom:1px solid var(--line); z-index:6; }
.search-main { display:flex; gap:16px; align-items:center; }
.search-form { display:flex; align-items:center; flex:1; min-width:0; height:48px; background:#f4f6f2; border:1px solid #bdc8bf; border-radius:10px; overflow:hidden; }
.search-form:focus-within { border-color:#435c56; box-shadow:0 0 0 2px #435c561c; }
.search-icon { padding-left:15px; font-size:27px; color:#59675f; line-height:1; }
.search-form input { flex:1; min-width:0; border:0; background:transparent; outline:none; padding:10px 12px; font-size:16px; }
.search-form input::-webkit-search-cancel-button { -webkit-appearance:none; }
#search-clear { flex-shrink:0; width:44px; border:0; background:transparent; font-size:24px; }
.search-actions { display:flex; align-items:center; gap:12px; }
.visit-tabs { display:flex; padding:3px; border:1px solid #e1e6df; border-radius:10px; background:#f5f6f3; }
.visit-tabs button { padding:6px 17px; border:0; background:transparent; font-size:14px; white-space:nowrap; }
.visit-tabs button[aria-pressed=true] { background:#435c56; color:#fff; box-shadow:0 1px 3px #1f352a20; font-weight:700; }
.visit-tabs button:disabled { cursor:default; }
.filter-open { border:1px solid #bcc8be; background:#fff; padding:10px 16px; font-size:14px; white-space:nowrap; }
.filter-open.active { border-color:#435c56; background:#edf2eb; font-weight:700; }
.search-summary { display:flex; align-items:center; gap:14px; min-height:44px; }
#search-count { font-size:13px; color:#59665d; flex-shrink:0; }
#filters-reset { margin-left:auto; border:0; background:transparent; font-size:13px; text-decoration:underline; text-underline-offset:3px; padding:5px 8px; white-space:nowrap; }
.filter-chips { display:flex; align-items:center; gap:5px; overflow:auto; min-width:0; scrollbar-width:none; }
.filter-chip { border:0; background:transparent; font-size:12px; white-space:nowrap; padding:5px 8px; color:#435c56; }
.filter-chip:hover { background:#f0f3ed; }
.filter-notice { font-size:13px; color:#785511; background:#fff5dc; padding:6px 10px; margin:0 0 8px; border-radius:5px; }
.filter-dialog { width:520px; max-width:calc(100% - 28px); max-height:calc(100dvh - 28px); padding:24px; border:1px solid var(--line); border-radius:18px; box-shadow:0 20px 80px #17292230; }
.filter-dialog::backdrop { background:#23382c66; }
.filter-dialog form { display:grid; gap:18px; }
.filter-heading { display:flex; justify-content:space-between; align-items:center; gap:10px; }
.filter-heading h2 { font-size:24px; margin-top:4px; }
.filter-heading button { width:44px; border:1px solid var(--line); background:#fff; font-size:24px; }
.filter-help { font-size:14px; color:#687266; line-height:1.6; }
.filter-fields { display:grid; grid-template-columns:1fr 1fr; gap:18px 16px; }
.filter-field { display:flex; flex-direction:column; gap:7px; font-size:14px; font-weight:650; }
.filter-field select { font:inherit; font-size:16px; font-weight:400; min-height:48px; padding:9px 28px 9px 10px; max-width:100%; min-width:0; border:1px solid #bec8bd; border-radius:8px; background:#fff; color:var(--ink); }
.filter-field select:disabled { opacity:.55; }
.filter-field select:focus-visible { outline:3px solid #7c9890; outline-offset:2px; }
.filter-footer { display:flex; gap:12px; border-top:1px solid var(--line); padding-top:18px; }
.filter-footer > button:first-child { border:0; background:transparent; min-width:120px; font-size:14px; }
.empty-results { padding:24px; background:#f6f7f3; border:1px solid var(--line); border-radius:12px; margin:0 24px 20px; }
.empty-results h3 { font-size:18px; }
.empty-results p { margin:10px 0 18px; color:var(--muted); font-size:15px; line-height:1.7; }
.panel-intro { padding:20px 26px 14px; }
.panel-intro h2 { font-size:21px; margin:0 0 6px; }
.panel-intro .muted { margin-top:8px; }
.list-tools { padding:12px 26px 28px; border-top:1px solid var(--line); margin-top:20px; }
.map-intro { padding:12px 16px; top:18px; left:18px; }
.map-intro h1 { font-size:17px; margin:0; letter-spacing:-.5px; }
.map-intro p { margin-top:3px; font-size:12px; }
@media(max-width:760px) {
  .search-tools { padding:10px 12px 0; }
  .search-main { flex-direction:column; align-items:stretch; gap:8px; }
  .search-form { flex:auto; height:46px; }
  .search-actions { gap:8px; justify-content:space-between; }
  .visit-tabs { flex:1; min-width:0; padding:2px; }
  .visit-tabs button { flex:1; padding:6px 8px; font-size:13px; }
  .filter-open { padding:9px 12px; font-size:13px; }
  .search-summary { gap:6px; }
  #search-count { font-size:12px; }
  .filter-chip { padding:5px 6px; }
  .filter-dialog { margin:auto auto 0; width:100%; max-width:100%; max-height:90dvh; border-radius:20px 20px 0 0; padding:22px 20px max(22px,env(safe-area-inset-bottom)); }
  .filter-fields { gap:14px 10px; }
  .filter-field select { padding-right:20px; font-size:16px; }
  .filter-help { font-size:13px; }
  .filter-footer { position:sticky; bottom:-22px; background:#fff; padding-bottom:8px; }
  .map-intro { top:12px; left:12px; padding:10px 12px; }
  .map-intro h1 { font-size:15px; }
  .panel-intro { padding:14px 22px; }
  .panel-intro h2 { font-size:20px; }
  .list-tools { padding:12px 22px 24px; }
  .empty-results { margin:0 16px 16px; padding:20px; }
}
@media(max-width:360px) {
  .filter-fields { grid-template-columns:1fr; }
  .filter-dialog { padding:18px 16px max(18px,env(safe-area-inset-bottom)); }
  .filter-footer { bottom:-18px; }
}
