/* Accessible Places Directory */
.apd {
	--apd-ink: #1F2A30;
	--apd-muted: #3B4A52;
	--apd-brand: #0B4F6C;
	--apd-brand-dark: #06374C;
	--apd-gold: #FFB703;
	--apd-title: #1B6003;
	--apd-line: #C9DCE3;
	--apd-soft: #E8F1F4;
	--apd-field: #5B7380;
	--apd-radius: 12px;
	color: var(--apd-ink);
	font-size: 16px;
	line-height: 1.6;
}

.apd *, .apd *::before, .apd *::after { box-sizing: border-box; }
.apd ul, .apd ol { list-style: none; margin: 0; padding: 0; }
.apd h1, .apd h2, .apd h3 { padding: 0; }
.apd p { padding: 0; }

.apd-page #main-content .container::before { display: none; }
.apd-main { background: #F4F7F8; }
.apd-container { max-width: 1200px; width: auto; margin: 0 auto; padding: 0 24px; }
.apd-page #main-content .container.apd-container { padding-top: 24px; padding-bottom: 56px; width: auto; max-width: 1248px; }

.apd-hero { background: var(--apd-soft, #E8F1F4); border-bottom: 1px solid #C9DCE3; padding: 40px 0 28px; }
.apd-hero-title { margin: 0 0 10px; font-size: 42px; line-height: 1.1; color: #0B4F6C; }
.apd-hero-intro { margin: 0; max-width: 760px; font-size: 17px; color: #1F2A30; }

/* Buttons and fields */
.apd .apd-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: 48px; padding: 8px 24px; border: 2px solid var(--apd-brand); border-radius: 8px;
	background: var(--apd-brand); color: #FFFFFF; font-size: 16px; font-weight: 700; line-height: 1.2;
	font-family: inherit; cursor: pointer; text-decoration: none;
}
.apd .apd-btn:hover { background: var(--apd-brand-dark); border-color: var(--apd-brand-dark); color: #FFFFFF; }
.apd .apd-btn--outline { background: #FFFFFF; color: var(--apd-brand); }
.apd .apd-btn--outline:hover { background: var(--apd-soft); color: var(--apd-brand-dark); }
.apd .apd-btn--gold { background: var(--apd-gold); border-color: var(--apd-gold); color: #1F2A30; }
.apd .apd-btn--gold:hover { background: #E6A400; border-color: #E6A400; color: #1F2A30; }
.apd .apd-btn--block { display: flex; width: 100%; }
.apd a:focus-visible, .apd button:focus-visible, .apd input:focus-visible, .apd select:focus-visible, .apd textarea:focus-visible, .apd summary:focus-visible {
	outline: 3px solid var(--apd-gold); outline-offset: 2px; box-shadow: 0 0 0 5px var(--apd-brand);
}
.apd .apd-field { display: flex; flex-direction: column; gap: 6px; }
.apd .apd-field label, .apd legend { font-weight: 700; font-size: 15px; color: var(--apd-ink); }
.apd input[type="search"], .apd input[type="text"], .apd input[type="email"], .apd select, .apd textarea {
	min-height: 48px; padding: 8px 12px; border: 2px solid var(--apd-field); border-radius: 8px;
	background: #FFFFFF; color: var(--apd-ink); font-size: 16px; font-family: inherit; width: 100%;
}
.apd textarea { min-height: 120px; }
.apd .apd-req { font-weight: 400; color: var(--apd-muted); }
.apd .apd-small-h { margin: 0 0 8px; font-size: 15px; font-weight: 700; color: var(--apd-ink); }

/* Search row */
.apd-search { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-bottom: 18px; }
.apd-search .apd-field { flex: 2 1 200px; }
.apd-search .apd-field--grow { flex: 3 1 280px; }

/* Category chips */
.apd-cats { margin-bottom: 24px; }
.apd-cats ul { display: flex; flex-wrap: wrap; gap: 8px; }
.apd .apd-chip-link {
	display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 8px 16px;
	border: 2px solid var(--apd-brand); border-radius: 999px; background: #FFFFFF; color: var(--apd-brand);
	font-size: 15px; font-weight: 700; text-decoration: none;
}
.apd .apd-chip-link:hover { background: var(--apd-soft); }
.apd .apd-chip-link[aria-current="page"] { background: var(--apd-brand); color: #FFFFFF; }
.apd .apd-count { font-weight: 400; }

/* Layout */
.apd-dir-layout { display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; }
.apd-filters {
	flex: 1 1 240px; max-width: 290px; background: #FFFFFF; border: 1px solid var(--apd-line);
	border-radius: var(--apd-radius); padding: 20px; display: flex; flex-direction: column; gap: 18px;
}
.apd-filters fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.apd-filters legend { font-size: 18px; color: var(--apd-brand); padding: 0; margin-bottom: 8px; }
.apd .apd-check { display: flex; align-items: center; gap: 10px; min-height: 36px; }
.apd .apd-check input { width: 20px; height: 20px; margin: 0; flex: 0 0 auto; accent-color: var(--apd-brand); }
.apd .apd-check label { font-size: 15px; font-weight: 400; cursor: pointer; }
.apd-clear, .apd-how { margin: 0; font-size: 15px; }
.apd-results { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: 18px; }
.apd-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.apd-summary { margin: 0; }
.apd-views ul { display: flex; border: 2px solid var(--apd-brand); border-radius: 8px; overflow: hidden; }
.apd-views a { display: flex; align-items: center; min-height: 40px; padding: 6px 14px; font-size: 14px; font-weight: 700; color: var(--apd-brand); background: #FFFFFF; text-decoration: none; }
.apd-views a[aria-current="true"] { background: var(--apd-brand); color: #FFFFFF; }
.apd-results-body { display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-start; }
.apd-cards { flex: 1 1 480px; min-width: 0; display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.apd-view-list .apd-cards { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.apd-map-wrap { flex: 0 1 340px; min-width: 260px; display: flex; flex-direction: column; gap: 8px; }
.apd-view-map .apd-map-wrap { flex: 1 1 100%; }
.apd-map { width: 100%; height: 640px; border-radius: var(--apd-radius); border: 1px solid var(--apd-line); background: #DDE8DA; }
.apd-view-map .apd-map { height: 600px; }
.apd-map--single { height: 220px; margin-bottom: 12px; }
.apd-map-note { margin: 0; font-size: 14px; color: var(--apd-muted); }
.apd-empty { background: #FFFFFF; border: 1px solid var(--apd-line); border-radius: var(--apd-radius); padding: 24px; flex: 1 1 100%; }
.apd-empty p { margin: 0 0 8px; }

/* Instant filters: the Apply filters button is only needed when JavaScript is off */
.apd-auto-note { display: none; margin: 0; font-size: 14px; color: var(--apd-muted); }
.apd-js .apd-auto-note { display: block; }
.apd-js #apd-apply-btn { display: none; }

/* Map pop-up */
.apd-info { max-width: 240px; font-size: 15px; line-height: 1.4; color: #1F2A30; }
.apd-info-img { display: block; width: 100%; height: 120px; object-fit: cover; border-radius: 6px; margin-bottom: 8px; }
.apd .apd-info-title { margin: 0 0 4px; font-size: 16px; font-weight: 700; }
.apd .apd-info-title a { color: #1B6003; }
.apd .apd-info-meta { margin: 0 0 6px; font-size: 14px; color: #3B4A52; }
.apd-info .apd-trees-label { font-size: 14px; }
.apd-info-list { list-style: none; margin: 0; padding: 0; }
.apd-info-list li { margin: 0 0 6px; font-size: 15px; }
.apd-legend-cluster { display: flex; align-items: center; gap: 10px; font-size: 14px; margin-top: 8px; }
.apd-legend-cluster .apd-cluster-dot { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 50%; background: #0B4F6C; box-shadow: 0 0 0 3px #FFB703; color: #FFFFFF; font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; }

/* Map zoom buttons and legend */
.apd-map-controls { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.apd .apd-map-controls .apd-btn { min-height: 44px; padding: 6px 16px; font-size: 15px; flex: 1 1 auto; }
.apd-map-controls .apd-btn span { font-size: 22px; line-height: 1; }
.apd-legend { background: #FFFFFF; border: 1px solid var(--apd-line); border-radius: var(--apd-radius); padding: 12px 14px; }
.apd .apd-legend-h { margin: 0 0 8px; font-size: 16px; font-weight: 700; color: var(--apd-brand); }
.apd-legend ul { display: flex; flex-direction: column; gap: 6px; }
.apd-legend li { display: flex; align-items: center; gap: 10px; font-size: 14px; }
.apd-legend img { width: 26px; height: 34px; object-fit: contain; flex: 0 0 auto; }
.apd-results.apd-loading { opacity: 0.55; transition: opacity 0.15s; }

/* Cards */
.apd-card { position: relative; background: #FFFFFF; border: 1px solid var(--apd-line); border-radius: var(--apd-radius); overflow: hidden; display: flex; flex-direction: column; }
.apd-card:hover { border-color: var(--apd-brand); }
.apd-card:focus-within { outline: 3px solid var(--apd-gold); outline-offset: 2px; }
.apd-card-photo { position: relative; aspect-ratio: 16 / 9; background: #2F6E5E; overflow: hidden; }
.apd-card-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.apd-card-nophoto { display: block; width: 100%; height: 100%; background: #2F6E5E; }
.apd-card-num { position: absolute; left: 12px; top: 12px; width: 32px; height: 32px; border-radius: 50%; background: var(--apd-brand); color: #FFFFFF; font-weight: 700; display: flex; align-items: center; justify-content: center; font-size: 15px; border: 2px solid #FFFFFF; }
.apd-card-cat { position: absolute; left: 12px; bottom: 12px; background: #FFFFFF; color: var(--apd-brand); font-size: 13px; font-weight: 700; padding: 3px 10px; border-radius: 999px; }
.apd-card-body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 10px; flex: 1 1 auto; }
.apd .apd-card-title { margin: 0; font-size: 21px; line-height: 1.25; font-weight: 700; }
.apd .apd-card-title a { color: var(--apd-title); }
.apd .apd-card-link::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.apd .apd-card-link:focus-visible { outline: none; box-shadow: none; }
.apd-card-town { margin: 0; font-size: 14px; color: var(--apd-muted); }
.apd-champion { margin: 0; display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; color: #7A4100; }

/* Trees */
.apd-trees { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.apd-trees-icons { display: inline-flex; gap: 2px; }
.apd-trees-icons svg { display: block; }
.apd-trees-label { font-size: 15px; font-weight: 700; }
.apd-trees--none .apd-trees-label { font-weight: 600; color: var(--apd-muted); }

/* Feature statuses: always icon plus words */
.apd-feats--pills { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.apd-feats--boxes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.apd-feat { display: flex; align-items: flex-start; gap: 8px; border: 1px solid; border-radius: 8px; }
.apd-feat--pill { padding: 7px 9px; font-size: 13px; line-height: 1.3; }
.apd-feat--box { padding: 12px 14px; border-width: 2px; border-radius: 10px; align-items: center; gap: 12px; }
.apd-feat .apd-icon { flex: 0 0 auto; }
.apd-feat-label, .apd-feat-status { display: block; }
.apd-feat--pill .apd-feat-label { font-weight: 600; }
.apd-feat-status { font-weight: 700; }
.apd-feat--box .apd-feat-label { font-size: 16px; font-weight: 700; color: var(--apd-ink); }
.apd-feat--box .apd-feat-status { font-size: 15px; }
.apd-st-yes { color: #145C28; background: #E3F3E7; border-color: #2E8B47; }
.apd-st-no { color: #8B1E2D; background: #FBE9EC; border-color: #B23A4C; }
.apd-st-inaccessible { color: #5A2D82; background: #F1EAF8; border-color: #8457B3; }
.apd-st-partial { color: #7A4100; background: #FFF0D9; border-color: #D9822B; }
.apd-st-na { color: #1D4F8C; background: #E6EFFA; border-color: #4A7FC1; }
.apd-st-none { color: #3B4A52; background: #F1F4F5; border-color: #8A9AA2; }

/* Pagination */
.apd-pages ul { display: flex; flex-wrap: wrap; gap: 8px; }
.apd-pages a, .apd-pages span { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 6px 12px; border: 2px solid var(--apd-brand); border-radius: 8px; font-weight: 700; text-decoration: none; background: #FFFFFF; color: var(--apd-brand); }
.apd-pages .current { background: var(--apd-brand); color: #FFFFFF; }
.apd-pages .dots { border-color: transparent; }

/* How we rate */
.apd-how-box { margin-top: 32px; background: #FFFFFF; border: 1px solid var(--apd-line); border-radius: var(--apd-radius); padding: 22px; }
.apd-how-box h2 { margin: 0 0 8px; font-size: 24px; color: var(--apd-brand); }
.apd-how-box p { margin: 0 0 8px; }
.apd-how-box ul { list-style: disc; padding-left: 22px; }
.apd-how-box li { margin-bottom: 6px; }

/* Place page */
.apd-crumbs { margin-bottom: 18px; font-size: 14px; }
.apd-crumbs ol { display: flex; flex-wrap: wrap; gap: 6px; }
.apd-crumbs li + li::before { content: "/"; margin-right: 6px; color: var(--apd-muted); }
.apd-place-grid { display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; }
.apd-place-main { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: 22px; }
.apd-place-side { flex: 1 1 300px; max-width: 380px; display: flex; flex-direction: column; gap: 18px; }
.apd-place-head { display: flex; flex-direction: column; gap: 10px; }
.apd-chips { margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.apd .apd-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; padding: 4px 12px; border-radius: 999px; }
.apd .apd-chip--cat { background: var(--apd-brand); color: #FFFFFF; }
.apd .apd-chip--town { background: #FFFFFF; color: var(--apd-muted); border: 1px solid var(--apd-line); }
.apd .apd-chip--champion { background: #FFF0D9; color: #7A4100; border: 1px solid #D9822B; }
.apd .apd-place-title { margin: 0; font-size: 44px; line-height: 1.1; color: var(--apd-brand); }
.apd-place-rating { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.apd-place-rating .apd-trees-label { font-size: 18px; }
.apd-assessed { font-size: 15px; color: var(--apd-muted); }

.apd .apd-panel { background: #FFFFFF; border: 1px solid var(--apd-line); border-radius: var(--apd-radius); padding: 22px; display: flex; flex-direction: column; gap: 12px; }
.apd .apd-panel--soft { background: var(--apd-soft); }
.apd .apd-panel h2, .apd .apd-about h2 { margin: 0; font-size: 26px; line-height: 1.2; color: var(--apd-brand); }
.apd-place-side .apd-panel h2 { font-size: 22px; }
.apd .apd-panel p { margin: 0; }
.apd-note { font-size: 15px; color: var(--apd-muted); }
.apd-about { display: flex; flex-direction: column; gap: 10px; }
.apd-about p { margin: 0 0 12px; }
.apd-links li { margin-bottom: 6px; }

.apd-gallery { display: flex; flex-direction: column; gap: 10px; }
.apd-gallery-stage { border-radius: var(--apd-radius); overflow: hidden; background: #2F6E5E; }
.apd-gallery-slide { margin: 0; }
.apd-gallery-slide[hidden] { display: none; }
.apd-gallery-slide img { display: block; width: 100%; max-height: 520px; object-fit: cover; }
.apd-gallery-controls { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; }
.apd-gallery-status { margin: 0; font-size: 15px; }

.apd-breakdown { border-top: 1px solid var(--apd-line); padding-top: 12px; }
.apd-breakdown summary { cursor: pointer; font-weight: 700; color: var(--apd-brand); min-height: 32px; }
.apd-breakdown table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 15px; }
.apd-breakdown caption { text-align: left; font-size: 14px; color: var(--apd-muted); padding-bottom: 6px; }
.apd-breakdown th, .apd-breakdown td { text-align: left; padding: 8px; border-bottom: 1px solid #E3ECEF; }
.apd-breakdown thead th { border-bottom: 2px solid var(--apd-line); }
.apd-breakdown .apd-num { text-align: right; }
.apd-breakdown .apd-total th, .apd-breakdown .apd-total td { border-bottom: 0; font-weight: 700; }

.apd-hours { width: 100%; border-collapse: collapse; font-size: 15px; border: 0; }
.apd-hours th, .apd-hours td { padding: 6px 0; border: 0; }
.apd-hours th { text-align: left; font-weight: 600; }
.apd-hours td { text-align: right; }
.apd-hours-na { font-weight: 700; }

/* Reviews */
.apd-review-list { display: flex; flex-direction: column; gap: 14px; }
.apd-review { border-bottom: 1px solid #E3ECEF; padding-bottom: 14px; }
.apd-review-meta { margin: 0 0 4px; }
.apd-review-text p { margin: 6px 0 0; }
.apd-notice { background: #E3F3E7; border: 2px solid #2E8B47; color: #145C28; border-radius: 8px; padding: 12px 14px; font-weight: 700; }
.apd-review-form-wrap summary { cursor: pointer; display: inline-flex; align-items: center; min-height: 48px; padding: 8px 20px; border: 2px solid var(--apd-brand); border-radius: 8px; color: var(--apd-brand); font-weight: 700; }
.apd-review-form { display: flex; flex-direction: column; gap: 14px; margin-top: 14px; }
.apd-row { display: flex; flex-wrap: wrap; gap: 14px; }
.apd-row .apd-field { flex: 1 1 220px; }
.apd-rate { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.apd-rate legend { margin-bottom: 8px; padding: 0; }
.apd-rate-opt { display: flex; align-items: center; gap: 6px; border: 2px solid var(--apd-field); border-radius: 8px; padding: 6px 12px; min-height: 44px; }
.apd-rate-opt input { width: 20px; height: 20px; margin: 0; accent-color: var(--apd-brand); }
.apd-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

.apd .screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

@media (max-width: 980px) {
	.et_pb_module .apd-dir { padding-left: 16px; padding-right: 16px; }
	.apd-filters { max-width: none; flex-basis: 100%; }
	.apd-place-side { max-width: none; }
	.apd-map-wrap { flex: 1 1 100%; }
	.apd-map { height: 420px; }
}
@media (max-width: 600px) {
	.apd-hero-title { font-size: 32px; }
	.apd .apd-place-title { font-size: 32px; }
	.apd-feats--boxes { grid-template-columns: minmax(0, 1fr); }
	.apd-container { padding: 0 16px; }
	.apd-search .apd-btn { width: 100%; }
	.apd-views { width: 100%; }
	.apd-views ul { width: 100%; }
	.apd-views li { flex: 1 1 0; }
	.apd-views a { justify-content: center; text-align: center; height: 100%; }
}
/* Wide screens: one grid, so places sit two across beside the filters and three across below them */
@media (min-width: 1100px) {
	.apd-dir-layout { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 20px; row-gap: 18px; align-items: stretch; }
	.apd-dir-layout.apd-has-map.apd-layout-split { grid-template-columns: repeat(3, minmax(0, 1fr)) 320px; }
	.apd-dir-layout .apd-results,
	.apd-dir-layout .apd-results-body,
	.apd-dir-layout .apd-cards { display: contents; }
	.apd-dir-layout .apd-toolbar { grid-column: 1 / -1; grid-row: 1; }
	.apd-dir-layout .apd-filters { grid-column: 1; grid-row: 2 / span 2; max-width: none; align-self: start; }
	.apd-dir-layout.apd-layout-map .apd-filters { grid-row: 2 / span 1; }
	.apd-dir-layout .apd-map-wrap { min-width: 0; align-self: start; }
	.apd-dir-layout.apd-layout-split .apd-map-wrap { grid-column: 4; grid-row: 2 / span 5; }
	.apd-dir-layout.apd-layout-map .apd-map-wrap { grid-column: 2 / -1; grid-row: 2; }
	.apd-dir-layout .apd-empty { grid-column: 2 / -1; }
	.apd-dir-layout .apd-pages { grid-column: 1 / -1; }
	.apd-dir-layout .apd-map { height: 560px; }
	.apd-results.apd-loading .apd-card,
	.apd-results.apd-loading .apd-map-wrap,
	.apd-results.apd-loading .apd-toolbar { opacity: 0.55; transition: opacity 0.15s; }
}
@media (min-width: 1100px) and (min-height: 860px) {
	.apd-dir-layout:not(.apd-layout-map) .apd-filters { position: sticky; top: 100px; }
}

@media (prefers-reduced-motion: reduce) {
	.apd * { transition: none !important; animation: none !important; }
}
