/*
Theme Name: Lowveld Explorer Theme
Author: Kruger Lowveld
Version: 1.9
*/

/* --- SECTION 1: Core Layout & Variables --- */
:root{--color-primary: #005f54;--color-primary-light:#E0F2F1;--color-surface:#ffffff;--color-background:#f7f9f9;--color-text-primary:#37474F;--color-text-secondary:#546E7A;--color-text-darker:#263238;--color-text-on-primary:#ffffff;--color-footer-bg:#34495E;--color-footer-text:#BDC3C7;--color-border:#dce4e3;--content-max-width:1280px;--border-radius:8px;--shadow-light:0 2px 8px rgba(0,0,0,0.06);--shadow-medium:0 4px 12px rgba(0,0,0,0.09);}
body{background-color:var(--color-background);color:var(--color-text-primary);font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;margin:0;}
a{color:var(--color-primary);text-decoration:none;}
.boxed-container{max-width:var(--content-max-width);margin:0 auto;padding:0 20px;}

/* --- SECTION 2: Header & Navigation --- */
.full-width-header{background-color:var(--color-surface);box-shadow:var(--shadow-light);}
.header-container{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;padding:0.5em 0;}
.site-title a{text-decoration:none;color:var(--color-text-primary);font-size:1.5rem;display:flex;align-items:center;gap:0.5em;}
.site-logo{width:60px;height:60px;}
.main-navigation ul{list-style:none;margin:0;padding:0;display:flex;gap:1.5em;}
.main-navigation a{color:var(--color-primary);font-weight:500;}
#view-library-btn{background-color:var(--color-surface);border:1px solid var(--color-border);padding:7px 10px;border-radius:5px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;}

/* This is the new style for the sticky search bar */
.advanced-search-bar{position:sticky;top:0;z-index:1100;background-color:#eef1f1;padding:1em 0;border-bottom:1px solid #dce4e3;}

/* --- SECTION 3: Main Content & Typography --- */
.site-content{padding:2em 0;}
.entry-title{font-size:2.2rem;margin-bottom:0.75em;color:var(--color-primary);border-bottom:2px solid #E0F2F1;padding-bottom:0.5em;}
.event-starts-soon{color:var(--color-primary);}
.breadcrumb{font-size:0.9em;color:var(--color-text-secondary);margin-bottom:2em;}
.breadcrumb a{color:var(--color-primary); text-decoration: underline;} /* MODIFIED: Added underline */
.breadcrumb a:hover{text-decoration:underline;}
.breadcrumb .separator{margin:0 0.5em;}
.single-hero-image{margin-bottom:1.5em;}
/* .wp-post-image{width:100%;height:75vh;min-height:300px;object-fit:cover;display:block;border-radius:var(--border-radius);}*/
.single-layout .single-hero-image .wp-post-image{width:100%;height:75vh;object-fit:cover;}
#main.site-main .container{min-height:65vh;}
h1.site-title { margin: 0px;}


/* --- SECTION 4: Single Post Layouts (Info Hub & Related) --- */
.info-action-hub{display:flex;flex-wrap:wrap;gap:20px;background-color:var(--color-surface);padding:1.5em;border-radius:var(--border-radius);margin-bottom:2em;border:1px solid var(--color-border);}
.hub-details-grid{flex:2 1 400px;display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:1em;}
.info-item .info-label{font-size:0.75rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;display:block;margin-bottom:0.25em;}
.info-item .info-value{font-size:0.95rem;font-weight:500;color:var(--color-text-primary);}
.hub-actions{flex:1 1 200px;display:flex;flex-direction:column;gap:0.5em;}
.action-button{display:inline-block;padding:0.8em 1em;font-size:0.9rem;font-weight:500;text-align:center;border-radius:6px;border:1px solid var(--color-primary);background-color:var(--color-surface);color:var(--color-primary);cursor:pointer;transition:background-color .2s, color .2s;}
.action-button:hover{background-color:var(--color-primary-light);}
.action-button.primary{background-color:var(--color-primary);color:var(--color-text-on-primary);}
.action-button.primary:hover{background-color:#005a4f;}
.related-posts-section{margin-top:3em;padding-top:2em;border-top:1px solid var(--color-border);}
.section-title{text-align:center;font-size:1.8rem;margin-bottom:1.5em;}
.related-posts-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:1.5em;}

/* --- SECTION 5: Footer --- */
.full-width-footer{background-color:#efefef; color:black;padding-top:3em;}
.footer-widgets-container{display:flex;justify-content:space-between;gap:2em;padding-bottom:3em;flex-wrap:wrap;}
.footer-widget-area{flex:1;min-width:250px;}
.site-info-container{background-color:#e7e7e7;padding:1em 0;text-align:center;font-size:0.9rem;}
ul.wp-block-list {list-style-type: none;}

/* --- SECTION 6: Advanced Search UI & Modals --- */
.advanced-search-bar{background-color:#eef1f1;padding:1em 0;border-bottom:1px solid #dce4e3;}
.advanced-search-container{display:flex;flex-wrap:nowrap;gap:1em;align-items:center;}
.advanced-search-container .search-form{display:contents;}
.header-search{flex:1;position:relative;}
.search-input-wrapper{position:relative;}
.search-input-wrapper .search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--color-text-secondary);pointer-events:none;}
.search-field{width:100%;padding:10px 15px 10px 45px;font-size:1rem;border:1px solid #b0bec5;border-radius:5px;transition:all 0.2s ease-in-out;box-sizing:border-box;}
.search-field:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);}
.filter-btn, .clear-btn, .sort-select{padding:0.6em 1em;border:1px solid #b0bec5;background-color:#fff;border-radius:5px;cursor:pointer;font-size:0.9rem;white-space:nowrap;}
.filter-btn.active{background-color:var(--color-primary);color:white;border-color:var(--color-primary);}
.clear-btn{background-color:#607d8b;color:white;border-color:#607d8b;}
.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.6);display:none;align-items:center;justify-content:center;z-index:9999;}
.modal-overlay.visible{display:flex;}
.modal-content{background-color:#fff;border-radius:8px;width:calc(90% - 40px);height:90%;max-width:1240px;max-height:85vh;display:flex;flex-direction:column;padding:20px;}
.modal-header{padding:1em;border-bottom:1px solid #dce4e3;display:flex;justify-content:space-between;align-items:center;}
.modal-header h2{margin:0;font-size:1.2rem;}
.modal-close{background:none;border:none;font-size:1.8rem;cursor:pointer;}
.modal-body{padding:1em;overflow-y:auto;}
.modal-body ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:0.5em;}
.modal-body li label{display:block;padding:0.5em;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.modal-body li label:hover{background-color:#f4f7f6;}
.modal-footer{padding:1em;border-top:1px solid #dce4e3;text-align:right;}
.modal-button-apply{background-color:var(--color-primary);color:#fff;padding:0.8em 1.5em;border:none;border-radius:5px;cursor:pointer;}
.hotlist-cards-container{display:grid;grid-template-columns:1fr;gap:1.5em;padding:1.5em 0;}
/* --- Polished Modal Checkboxes (v2 - Ellipsis Fix) --- */
.modal-body li label input[type="checkbox"]{position:absolute;opacity:0;width:0;height:0;}
.modal-body li label{display:block;position:relative;cursor:pointer;padding:0.75em 0.75em 0.75em 2.5em;border:1px solid var(--color-border);background-color:var(--color-background);border-radius:6px;transition:background-color 0.2s, border-color 0.2s, color 0.2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.modal-body li label::before{content:'';position:absolute;left:0.75em;top:50%;transform:translateY(-50%);width:18px;height:18px;border:2px solid #b0bec5;border-radius:4px;background-color:white;transition:all 0.2s ease-in-out;}
.modal-body li label::after{content:'';position:absolute;left:1.2em;top:50%;width:5px;height:10px;border:solid white;border-width:0 3px 3px 0;transform-origin:center;transform:translateY(-50%) rotate(45deg) scale(0);transition:transform 0.2s ease-in-out;}
.modal-body li label:hover{border-color:var(--color-primary);background-color:var(--color-primary-light);}
.modal-body li label:has(input:focus-visible){outline:2px solid var(--color-primary);outline-offset:2px;}
.modal-body li label:has(input:checked){border-color:var(--color-primary);background-color:var(--color-primary-light);color:var(--color-text-darker);font-weight:500;}
.modal-body li label:has(input:checked)::before{background-color:var(--color-primary);border-color:var(--color-primary);}
.modal-body li label:has(input:checked)::after{transform:translateY(-50%) rotate(45deg) scale(1);}
#close-search-btn{display:none!important;padding:0.6em 1.2em;font-size:0.9rem;font-weight:500;color:#ffffff;background-color:#4CAF50;border:none;border-radius:5px;cursor:pointer;text-align:center;transition:background-color 0.2s ease-in-out;float:right;}
#close-search-btn:hover, #close-search-btn:focus{background-color:#546E7A;outline:none;}

/* --- SECTION 7: Search & Archive Results --- */
.live-search-results-container{position:absolute;top:100%;left:0;right:0;background-color:var(--color-surface);border:1px solid #dce4e3;border-top:none;border-radius:0 0 8px 8px;box-shadow:var(--shadow-medium);z-index:1000;display:none;max-height:400px;overflow-y:auto;}
.live-search-results-list{list-style:none;margin:0;padding:0.5em;}
.live-search-results-list li a{display:flex;align-items:center;padding:0.5em;border-radius:5px;}
.live-search-results-list li a:hover{background-color:var(--color-background);}
.live-search-results-list img, .live-search-results-list .placeholder-image{width:40px;height:40px;object-fit:cover;margin-right:1em;border-radius:3px;flex-shrink:0;}
.live-search-results-list .placeholder-image{background-color:#eee;}
.result-details{display:flex;flex-direction:column;min-width:0;}
.result-title{font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.result-type{font-size:0.8em;color:var(--color-text-secondary);}
.no-results{padding:1em;text-align:center;color:var(--color-text-secondary);}
#immersive-search-view .search-results-list{display:flex;flex-direction:column;gap:0;}
.search-results-count{margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);font-weight:500;}
.search-result-card-list{margin-bottom:1.5em;border-bottom:1px solid var(--color-border);padding-bottom:0px;}
.search-result-card-list{display:flex;gap:1.5em;align-items:flex-start;text-decoration:none;color:inherit;}
.search-result-card-list .card-title a{text-decoration:none;color:inherit;}
/* New: Interactive meta-data styles for search cards */
.card-meta .meta-item span{cursor:pointer;color:var(--color-primary);transition:color 0.2s, text-decoration 0.2s;}
.card-meta .meta-item span:hover{color:var(--color-primary);text-decoration:underline;}
.search-result-card-list .card-image-list{width:150px;height:150px;flex-shrink:0;}
.search-result-card-list .card-image-list img, .search-result-card-list .placeholder-image{min-height:unset;width:100%;height:100%;object-fit:cover;border-radius:var(--border-radius);}
.search-result-card-list .placeholder-image{background-color:#eee;}
.search-result-card-list .card-content-list{flex-grow:1;}
.search-result-card-list .card-title{margin-top:0;font-size:1.5rem;color:var(--color-primary);margin-bottom:0.5em;}
.search-result-card-list .card-title:hover{text-decoration:underline;}
.search-result-card-list .card-meta{font-size:0.85rem;color:var(--color-text-secondary);margin-bottom:1em;line-height:1.5;}
.search-result-card-list .card-meta a{border-bottom:1px dotted #a0a0a0;}
.search-result-card-list .card-meta a:hover{border-bottom-style:solid;}
.search-result-card-list .card-excerpt{font-size:0.95rem;line-height:1.6;margin-bottom:1em;}
.search-result-card-list .card-footer-meta{display:block;position:relative;font-size:0.9rem;font-weight:500;}
.card-footer-meta .meta-cost{color:var(--color-primary);}
.card-footer-meta .meta-date{color:var(--color-text-secondary);}
.pagination .nav-links{display:flex;gap:0.5em;margin-top:2em;}
.pagination .page-numbers{padding:0.5em 1em;border:1px solid #dce4e3;border-radius:5px;}
.pagination .page-numbers:hover{background-color:var(--color-primary-light);}
.pagination .page-numbers.current{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary);}

/* --- NEW CSS for hotlist/origin state on search cards --- */
.search-result-card-list.is-hotlisted{border:2px solid #FF0000;box-shadow:0 0 10px rgba(255,0,0,0.2);}
.search-result-card-list.is-origin{border:2px solid #8A2BE2;box-shadow:0 0 10px rgba(138,43,226,0.2);border-radius:var(--border-radius);}

/* --- SECTION 8: Grid & Carousel Cards --- */
.card-style-grid{background-color:var(--color-surface);border-radius:var(--border-radius);box-shadow:var(--shadow-light);transition:transform 0.2s ease-out, box-shadow 0.2s ease-out;display:flex;flex-direction:column;}
.card-style-grid:hover{transform:translateY(-4px);box-shadow:var(--shadow-medium);}
.card-style-grid .card-image-link, .card-style-grid .card-title a{text-decoration:none;color:inherit;}
.card-style-grid .card-image-top{height:200px;background-color:#eee;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);overflow:hidden;position:relative;}
.card-style-grid .card-image-top img{width:100%;height:100%;object-fit:cover;}
.card-badge-overlay-container{position:absolute;top:10px;right:10px;z-index:2;}
.card-badge-overlay{display:inline-block;padding:5px 10px;font-size:0.75rem;font-weight:500;border-radius:12px;color:#fff;background-color:var(--color-primary);box-shadow:0 2px 4px rgba(0,0,0,0.2);}
.card-style-grid .card-content-bottom{padding:1em;flex-grow:1;display:flex;flex-direction:column;}
.card-style-grid .card-title{font-size:1.25rem;margin-top:0;margin-bottom:0.25em;color:var(--color-text-primary);}
.card-style-grid .card-title:hover{text-decoration:underline;}
.card-style-grid .card-meta{font-size:0.85rem;color:var(--color-text-secondary);margin-bottom:1em;}
.card-style-grid .card-meta a{color:inherit;border-bottom:1px dotted #ccc;}
.card-style-grid .card-meta a:hover{color:var(--color-primary);border-bottom-style:solid;}
.card-style-grid .card-excerpt{font-size:0.9rem;line-height:1.6;margin-bottom:1em;flex-grow:1;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;}
.card-style-grid .card-footer-meta{margin-top:auto;font-weight:500;}
.carousel-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5em;}
.carousel-section .section-title{margin:0;}
.carousel-nav button{background-color:var(--color-surface);border:1px solid var(--color-border);padding:0.5em 1em;border-radius:5px;cursor:pointer;transition:background-color 0.2s;}
.carousel-nav button:hover{background-color:var(--color-primary-light);}
.carousel-wrapper{position:relative;}
.carousel-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding-bottom:15px;scrollbar-width:none;-ms-overflow-style:none;}
.carousel-grid::-webkit-scrollbar{display:none;}
.carousel-grid .card-style-grid{flex:0 0 300px;scroll-snap-align:start;margin-right:1.5em;}
.card-style-grid img{height:150px;min-height:150px; max-width: 100%;object-fit:cover;border-radius:var(--border-radius);}
.card-style-grid h4{margin:0;font-size:1.1rem;}

/* --- SECTION 9: Responsiveness --- */
@media (max-width: 768px){
.header-container, .footer-widgets-container{flex-direction:column;gap:1em;text-align:center;}
.entry-title{font-size:1.8rem;}
.advanced-search-container{flex-direction:row;align-items:stretch;}
}
@media (max-width: 600px){
.pagination .page-numbers{padding:0.5em 0.7em;font-size:0.9em;}
}

/* --- SECTION 10: Carousel View Toggle --- */
.section-controls{display:flex;align-items:center;gap:1em;}
.view-toggle-btn{background-color:var(--color-surface);border:1px solid var(--color-border);padding:7px 10px;border-radius:5px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;}
.carousel-section.is-grid-view .carousel-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));overflow-x:hidden;padding-bottom:0;}
.carousel-section.is-grid-view .carousel-grid .card-style-grid{flex-basis:auto;margin-right:0;}

/* --- SECTION 11: Tag Filters (with new badge style) --- */
.sub-category-filters{display:flex;flex-wrap:wrap;gap:0.5em;margin-bottom:1.5em;padding-bottom:1.5em;border-bottom:1px solid var(--color-border);}
.filter-tag{background-color:var(--color-background);border:1px solid var(--color-border);color:var(--color-text-secondary);padding:0.4em 0.8em;border-radius:15px;font-size:0.85rem;font-weight:500;cursor:pointer;transition:all 0.2s ease-in-out;display:inline-flex;align-items:center;}
.filter-tag:hover{background-color:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary);}
.filter-tag.active{background-color:var(--color-primary);color:var(--color-text-on-primary);border-color:var(--color-primary);}
.filter-tag .filter-count-badge{display:inline-block;margin-left:8px;background-color:rgba(0,0,0,0.1);color:var(--color-text-secondary);padding:2px 8px;font-size:0.75rem;font-weight:500;border-radius:10px;line-height:1;transition:all 0.2s ease-in-out;}
.filter-tag:hover .filter-count-badge{background-color:var(--color-primary);color:white;}
.filter-tag.active .filter-count-badge{background-color:white;color:var(--color-primary);}
.hub-actions #set-origin-btn.active-origin{background-color:#8A2BE2;color:#ffffff;border-color:#8A2BE2;}
.hub-actions #add-hotlist-btn.active-hotlist{background-color:#FF0000;color:#ffffff;border-color:#FF0000;}

/* --- SECTION 12: MAP & OVERLAY STYLES --- */
body.immersive-view-active #content, body.immersive-view-active #colophon{display:none;}
#immersive-search-view{display:none;}
body.immersive-view-active #immersive-search-view{display:block;}
#immersive-map-view{display:none;}
body.immersive-view-active #immersive-map-view{display:block;}
body.map-view-active .header-container{display:none;}
.map-loader{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#f7f9f9;color:var(--color-text-secondary);}
.map-loader .spinner{width:40px;height:40px;border:4px solid rgba(0,0,0,0.1);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1em;}
/* On-Map Walker Controls */
.leaflet-custom-control{display:flex;background:#fff;border-radius:4px;}
.leaflet-custom-control button{background:#fff;border:none;width:30px;height:30px;font-size:1.2rem;cursor:pointer;line-height:30px;text-align:center;}
.leaflet-custom-control button:hover{background:#f4f4f4;}
.leaflet-custom-control button:first-child{border-radius:4px 0 0 4px;border-right:1px solid #ccc;}
.leaflet-custom-control button:last-child{border-radius:0 4px 4px 0;border-left:1px solid #ccc;}
.leaflet-custom-control button.active{background-color:var(--color-primary);color:white;}
/* Full-Screen Overlay */
#map-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.85);z-index:10000;display:none;align-items:center;justify-content:center;flex-direction:column;padding:2em;box-sizing:border-box;}
.map-overlay-close{position:absolute;top:20px;right:30px;background:none;border:none;color:white;font-size:2.5rem;cursor:pointer;line-height:1;z-index:10001;}
#map-overlay-content{display:flex;width:100%;max-width:1200px;height:70vh;max-height:700px;background:var(--color-surface);border-radius:var(--border-radius);overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,0.4);}
.map-overlay-image{flex:2;background-size:cover;background-position:center;background-color:#333;position:relative;}
.map-overlay-image.loading::before{content:'';position:absolute;top:50%;left:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border:4px solid rgba(255,255,255,0.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.map-overlay-details{flex:1;padding:2em;display:flex;flex-direction:column;overflow-y:auto;color:var(--color-text-primary);}
.map-overlay-title{font-size:2rem;color:var(--color-primary);margin:0 0 0.5em 0;}
.map-overlay-meta{font-size:0.9rem;color:var(--color-text-secondary);margin-bottom:1.5em;}
.map-overlay-excerpt{font-size:1rem;line-height:1.6;flex-grow:1;}
.map-overlay-footer{margin-top:1.5em;font-weight:500;}
.map-overlay-link{margin-top:1em;text-align:center;}
/* Overlay Navigation Controls */
.map-overlay-nav{margin-top:1.5em;display:flex;gap:1em;}
.map-overlay-nav-btn{padding:0.8em 1.5em;background:rgba(255,255,255,0.2);border:1px solid rgba(255,255,255,0.4);color:white;border-radius:5px;cursor:pointer;font-size:0.9rem;}
.map-overlay-nav-btn:hover{background:rgba(255,255,255,0.4);}
#map-overlay-autoplay.active{background-color:var(--color-primary);}
/* Popup Customizations */
.leaflet-popup-content-wrapper{background:var(--color-surface);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,0.15);padding:0;}
.leaflet-popup-content{margin:0 !important;width:200px;}
.leaflet-popup-tip{background:var(--color-surface);}
.map-popup-image{width:100%;height:110px;object-fit:cover;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);display:block;}
.map-popup-title{font-size:1rem;font-weight:500;line-height:1.4;color:var(--color-text-primary);padding:12px 15px;text-align:left;}
/* Custom DivIcon Marker Styles */
.custom-map-marker{background:var(--color-primary);color:white;border-radius:50%;width:24px;height:24px;border:2px solid white;box-shadow:0 1px 4px rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.2s ease-in-out;}
.custom-map-marker .material-symbols-outlined{line-height:1;}
.custom-map-marker.active, .leaflet-marker-icon:hover .custom-map-marker{background-color:#FF6347;transform:scale(1.1);}
/* Popup Loading and Error States */
.map-popup.loading .spinner{width:24px;height:24px;border:3px solid rgba(0,0,0,0.1);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;margin:20px auto 10px;}
.map-popup-image-error{width:100%;height:110px;display:flex;align-items:center;justify-content:center;background:#eee;color:var(--color-text-secondary);font-size:0.8rem;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);}

/* --- SECTION 13: TRIP PLANNER PANEL --- */
#trip-planner-panel{position:fixed;top:0;right:0;width:100%;max-width:450px;height:100vh;background-color:var(--color-surface);z-index:10000;transform:translateX(100%);transition:transform 0.3s ease-in-out;display:flex;flex-direction:column;box-shadow:-4px 0 15px rgba(0,0,0,0.1);border-left:1px solid var(--color-border);}
#trip-planner-panel.is-visible{transform:translateX(0);}
body.trip-panel-active{overflow:hidden;}
.panel-header{display:flex;justify-content:space-between;align-items:center;padding:0.5em 1em;border-bottom:1px solid var(--color-border);flex-shrink:0;}
.panel-tabs{display:flex;gap:0.5em;}
.tab-btn{padding:0.5em 1em;border:1px solid transparent;background:none;font-size:0.9rem;cursor:pointer;border-radius:5px;}
.tab-btn:hover{background-color:var(--color-background);}
.tab-btn.active{background-color:var(--color-primary-light);color:var(--color-primary);font-weight:500;}
.panel-close{background:none;border:none;font-size:1.8rem;line-height:1;cursor:pointer;color:var(--color-text-secondary);}
.panel-content{flex-grow:1;overflow-y:auto;padding:1.5em;}
.tab-content{display:none;}
.tab-content.active{display:block;}
.search-result-card-list.is-in-library{border:2px solid var(--color-primary);background-color:#f7f9f9;border-radius:var(--border-radius);}
#add-library-btn.active-library{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary);}

/* --- SECTION 14: LIBRARY CARD STYLES --- */
.library-grid{display:flex;flex-direction:column;gap:1em;}
.library-card{display:flex;align-items:center;gap:1em;background-color:var(--color-background);border-radius:var(--border-radius);padding:0.75em;border:1px solid var(--color-border);}
.library-card-image{width:60px;height:60px;flex-shrink:0;}
.library-card-image img, .library-card-image .placeholder-image{width:100%;height:100%;object-fit:cover;border-radius:6px;background-color:#eee;}
.library-card-content{flex-grow:1;min-width:0;}
.library-card-title{margin:0 0 0.25em 0;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.library-card-meta{font-size:0.8rem;color:var(--color-text-secondary);}
.library-card-meta span:not(:last-child)::after{content:' | ';margin:0 0.25em;}
.library-card-actions{display:flex;align-items:center;gap:0.5em;}
.library-card-actions .action-btn{background-color:#fff;border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:50%;width:30px;height:30px;font-size:1.2rem;line-height:28px;text-align:center;cursor:pointer;padding:0;}
.library-card-actions .action-btn:hover{background-color:#fbecec;color:#c0392b;}

/* --- SECTION 15: LIBRARY ACTIONS --- */
.library-actions{margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid var(--color-border);}
.library-actions .action-button{width:100%;}
.library-actions .action-button:disabled{background-color:var(--color-background);color:var(--color-text-secondary);border-color:var(--color-border);cursor:not-allowed;}

/* --- SECTION 16: TOAST NOTIFICATIONS --- */
#toast-container{position:fixed;top:20px;right:20px;z-index:10001;display:flex;flex-direction:column;gap:10px;pointer-events:none;}
.toast{padding:12px 20px;border-radius:var(--border-radius);color:#fff;font-size:0.95rem;font-weight:500;box-shadow:0 4px 12px rgba(0,0,0,0.15);opacity:0;transform:translateX(calc(100% + 20px));transition:all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);pointer-events:auto;}
.toast.show{opacity:1;transform:translateX(0);}
.toast.toast-success{background-color:var(--color-primary);}
.toast.toast-error{background-color:#e74c3c;}
.toast.toast-info{background-color:#3498db;}

/* --- SECTION 17: TRIP BUILDER UI --- */
.trip-builder-actions, .library-actions{margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid var(--color-border);display:flex;gap:1em;}
#trip-days-container{display:flex;flex-direction:column;gap:1.5em;}
.trip-day-container{background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius);}
.trip-day-header{display:flex;justify-content:space-between;align-items:center;padding:0.75em 1em;border-bottom:1px solid var(--color-border);flex-shrink:0;}
.trip-day-header h3{margin:0;font-size:1.2rem;}
.trip-day-header .remove-day-btn{background:none;border:none;color:var(--color-text-secondary);font-size:1.5rem;cursor:pointer;line-height:1;}
.trip-day-header .remove-day-btn:hover{color:#e74c3c;}
.trip-day-content{padding:1em;display:flex;flex-direction:column;gap:1em;}
.empty-day-message{color:var(--color-text-secondary);font-style:italic;text-align:center;padding:1em 0;}
.trip-card{display:flex;align-items:center;gap:10px;}
.trip-card-image{width:40px;height:40px;flex-shrink:0;background-color:#eee;border-radius:4px;}
.trip-card-image img{width:100%;height:100%;object-fit:cover;border-radius:4px;}
.trip-card-content{flex-grow:1;min-width:0;}
.trip-card-title{margin:0;font-size:0.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.trip-card-actions{display:flex;gap:5px;}
.trip-card-actions .action-btn{padding:0;width:28px;height:28px;line-height:26px;font-size:1rem;}
.trip-card-actions .action-btn:disabled{opacity:0.3;cursor:not-allowed;}
#add-to-trip-modal .modal-content{width:90%;max-width:400px;height:auto;max-height:80vh;}
#add-to-trip-modal .form-group{margin:1em 0;}
#add-to-trip-modal label{display:block;margin-bottom:0.5em;font-weight:500;}
#add-to-trip-modal select{width:100%;padding:0.6em;font-size:1rem;border:1px solid var(--color-border);border-radius:6px;}
#add-to-trip-modal .modal-actions{margin-top:1.5em;display:flex;justify-content:flex-end;gap:1em;}

/* --- SECTION 18: TRIP BUILDER REFINEMENTS --- */
.trip-day-header .remove-day-btn .material-symbols-outlined, .trip-card-actions .remove-from-trip .material-symbols-outlined{font-size:1.2rem;}
.add-item-to-day-btn{width:100%;padding:0.75em;margin-top:1em;border:2px dashed var(--color-border);background-color:transparent;border-radius:var(--border-radius);color:var(--color-text-secondary);font-weight:500;cursor:pointer;transition:all 0.2s ease-in-out;}
.add-item-to-day-btn:hover{background-color:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary);}
.combo-arrow-btn{display:flex;flex-direction:column;border:1px solid var(--color-border);border-radius:6px;overflow:hidden;}
.combo-arrow-btn button{background:#fff;border:none;padding:0;margin:0;line-height:1;cursor:pointer;height:16px;display:flex;align-items:center;justify-content:center;}
.combo-arrow-btn button:hover{background-color:var(--color-primary-light);}
.combo-arrow-btn button:disabled{opacity:0.3;background:#f5f5f5;cursor:not-allowed;}
.combo-arrow-btn button .material-symbols-outlined{font-size:1.5rem;}
.combo-arrow-btn .move-item-up{border-bottom:1px solid var(--color-border);}
.modal-item-list{max-height:40vh;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--border-radius);padding:0.5em;}
.modal-item-select{display:flex;align-items:center;gap:10px;padding:8px;border-radius:6px;cursor:pointer;}
.modal-item-select:hover{background-color:var(--color-background);}
.modal-item-image{width:30px;height:30px;object-fit:cover;border-radius:4px;background-color:#eee;}
#confirmation-modal .modal-content{max-width:400px;width:90%;height:auto;}
.confirmation-message{font-size:1.1rem;text-align:center;margin:0 0 1.5em 0;}
.add-mode-header{background-color:var(--color-primary-light);color:var(--color-primary);padding:0.75em 1.5em;margin:-1.5em -1.5em 1.5em -1.5em;font-weight:500;text-align:center;}

/* --- SECTION 19: TRAVEL BLOCKS --- */
.travel-block{display:flex;align-items:center;justify-content:center;padding:8px 0;}
.travel-block-info{display:flex;align-items:center;gap:8px;color:var(--color-text-secondary);font-size:0.85rem;font-style:italic;padding:4px 12px;background-color:#eef1f1;border-radius:15px;}
.travel-block-info .material-symbols-outlined{font-size:1.1rem;}

/* --- SECTION 20: EXPANDABLE TRIP CARD CONTROLS --- */
.trip-card{background-color:#fff;border-radius:6px;border:1px solid var(--color-border);transition:box-shadow 0.2s ease-in-out;}
.trip-card.is-expanded{box-shadow:var(--shadow-medium);border-color:var(--color-primary);}
.trip-card-main{display:flex;align-items:center;gap:10px;padding:8px;cursor:pointer;}
.trip-card-controls{max-height:0;overflow:hidden;transition:max-height 0.3s ease-in-out, padding 0.3s ease-in-out;padding:0 10px;border-top:1px solid transparent;}
.trip-card.is-expanded .trip-card-controls{max-height:100px;padding:10px;border-top-color:var(--color-border);}
.control-group{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.control-group label{font-size:0.85rem;font-weight:500;color:var(--color-text-secondary);}
.control-group .duration-input{width:70px;padding:4px 8px;border:1px solid var(--color-border);border-radius:4px;text-align:right;}
.control-group-actions{display:flex;justify-content:flex-end;gap:10px;}
.control-group-actions .action-button{padding:0.4em 0.8em;font-size:0.8rem;}

/* --- SECTION 21: TRIP CARD LAYOUT REFINEMENTS --- */
.trip-card{display:flex;flex-direction:column;gap:0;}
.trip-card-main{display:flex;width:100%;align-items:center;justify-content:space-between;gap:10px;padding:8px;cursor:pointer;}
.trip-card-identity{display:flex;align-items:center;gap:10px;min-width:0;}

/* --- SECTION 22: SAVE/LOAD ACTIONS --- */
.library-manage-actions{margin:-0.5em 0 1.5em 0;display:flex;gap:1em;justify-content:center;padding-bottom:1em;border-bottom:1px solid var(--color-border);}
.library-manage-actions .action-button, .trip-builder-actions .action-button{flex-grow:1;font-size:0.85rem;padding:0.6em;}
.library-manage-actions .action-button{background-color:var(--color-background);}

/* --- SECTION 23: DIARY MODE & TIMELINE --- */
.day-header-controls{display:flex;align-items:center;gap:1em;}
.day-start-time{padding:4px 6px;border:1px solid var(--color-border);border-radius:4px;font-size:0.85rem;}
.diary-mode-toggle{display:flex;align-items:center;gap:0.5em;font-size:0.85rem;color:var(--color-text-secondary);cursor:pointer;}
.diary-mode-toggle .slider{position:relative;display:inline-block;width:34px;height:20px;background-color:#ccc;border-radius:20px;transition:background-color 0.2s;}
.diary-mode-toggle .slider::before{content:'';position:absolute;height:14px;width:14px;left:3px;bottom:3px;background-color:white;border-radius:50%;transition:transform 0.2s;}
.diary-mode-toggle input{display:none;}
.diary-mode-toggle input:checked + .slider{background-color:var(--color-primary);}
.diary-mode-toggle input:checked + .slider::before{transform:translateX(14px);}
/* Timeline View */
.diary-timeline{border-left:3px solid var(--color-primary-light);padding-left:1.5em;position:relative;}
.diary-entry{position:relative;padding:0.5em 0 1.5em 0;}
.diary-entry::before{content:'';position:absolute;left:-1.5em;top:10px;width:12px;height:12px;background-color:white;border:3px solid var(--color-primary);border-radius:50%;transform:translateX(-50%);}
.diary-entry.is-travel::before{border-color:var(--color-text-secondary);background-color:#fff;}
.diary-time{font-weight:bold;color:var(--color-primary);font-size:0.9rem;margin-bottom:0.25em;}
.diary-entry.is-travel .diary-time{color:var(--color-text-secondary);}
.diary-content{}
.diary-title{font-size:1rem;font-weight:500;margin:0;display:flex;align-items:center;gap:0.5em;}
.diary-meta{font-size:0.85rem;color:var(--color-text-secondary);}

/* --- SECTION 24: BOOKING REQUEST FORM --- */
.booking-request-form{margin-top:2em;padding-top:1.5em;border-top:1px solid var(--color-border);}
.booking-request-form h4{margin-top:0;margin-bottom:0.5em;}
.booking-request-form p{font-size:0.9rem;color:var(--color-text-secondary);margin-top:0;}
.booking-request-form .form-group{margin-bottom:1em;}
.booking-request-form label{display:block;font-size:0.85rem;font-weight:500;margin-bottom:0.5em;color:var(--color-text-secondary);}
.booking-request-form input[type="text"], .booking-request-form input[type="email"], .booking-request-form textarea{width:100%;padding:0.75em;border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:0.95rem;box-sizing:border-box;background-color:#fff;}
.booking-request-form input[type="text"]:focus, .booking-request-form input[type="email"]:focus, .booking-request-form textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);}
.booking-request-form button{width:100%;margin-top:0.5em;}

/* --- SECTION 25: PUBLIC TRIP VIEWER PAGE --- */
.trip-viewer-layout .entry-title{text-align:center;}
.trip-viewer-layout .trip-day-container{margin-bottom:2em;}
.trip-viewer-layout .day-header-meta{font-size:1rem;font-weight:500;color:var(--color-text-secondary);}
.trip-card-public{display:flex;align-items:center;gap:10px;background-color:#fff;padding:10px;border-radius:6px;border:1px solid var(--color-border);}
.trip-viewer-layout .trip-day-content{padding:1.5em;background-color:var(--color-background);border:1px solid var(--color-border);border-top:none;border-radius:0 0 var(--border-radius) var(--border-radius);}
#contextual-map-container{display:none!important;}
/* Custom Social Icon Styles for Footer (V2 - Force Color) */
.site-footer .wp-block-social-links{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:15px;margin:0;}
.site-footer .wp-block-social-link-anchor{display:flex;justify-content:center;align-items:center;width:44px;height:44px;background-color:#333;border-radius:50%;transition:background-color 0.3s ease, transform 0.3s ease;}
.site-footer .wp-block-social-link-anchor svg{width:22px;height:22px;}
.site-footer .wp-block-social-link-anchor svg path{fill:#ffffff !important;}
.site-footer .wp-block-social-link-anchor:hover{background-color:#555;transform:scale(1.1);}
.screen-reader-text{border:0;clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal !important;}

/* --- SECTION 26: NEW HOMEPAGE DESIGN (V3 - Hero Slideshow) --- */
.homepage-hero{position:relative;width:100%;height:calc(100vh - 200px);min-height:300px;background-color:#333;color:#fff;}
.hero-slideshow-container{position:relative;width:100%;height:100%;overflow:hidden;}
.hero-slide{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;opacity:0;transition:opacity 1.2s ease-in-out;display:flex;align-items:center;}
.hero-slide.active{opacity:1;z-index:1;}
.hero-slide-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(to right, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.2) 100%);}
.slide-content{position:relative;z-index:2;max-width:600px;text-align:left;}
.slide-title{font-size:3rem;font-weight:700;text-shadow:2px 2px 8px rgba(0,0,0,0.6);margin:0 0 0.5em 0; color: white;}
.slide-excerpt{font-size:1.1rem;line-height:1.6;text-shadow:1px 1px 4px rgba(0,0,0,0.6);margin-bottom:1.5em;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical; color: #fafafa;}
.slide-button{font-size:1rem;padding:0.8em 1.5em;}
.hero-nav-dots{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);z-index:3;display:flex;gap:10px;}
.hero-dot{width:12px;height:12px;border-radius:50%;background-color:rgba(255,255,255,0.4);border:2px solid rgba(255,255,255,0.6);padding:0;cursor:pointer;transition:background-color 0.3s ease;}
.hero-dot.active, .hero-dot:hover{background-color:#fff;}
.homepage-body-container{padding-top: 1.5em;}
.homepage-body{display:flex;flex-wrap:wrap;gap:2.5em;}
.main-content-column{flex:2;min-width:0;}
.sidebar-column{flex:1;display:flex;flex-direction:column;gap:0; min-width: 0;} /* ADDED min-width: 0 HERE */
.sidebar-widget{background-color:var(--color-surface);border-radius:var(--border-radius);box-shadow:var(--shadow-light);padding:1.25em;}
.sidebar-widget + .sidebar-widget{margin-top:2em;border-top:1px solid var(--color-border);padding-top:1.25em;}
.sidebar-widget .widget-title{margin:0 0 0.75em 0;font-size:1.3rem;color:var(--color-primary);padding-bottom:0.5em;border-bottom:2px solid var(--color-primary-light);}
.sidebar-widget ul.sidebar-widget-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0.4em;}
.sidebar-card-link{text-decoration:none;color:inherit;display:flex;align-items:center;gap:1em;padding:0.5em;border-radius:6px;transition:background-color 0.2s ease-in-out;}
.sidebar-card-link:hover{background-color:var(--color-background);}
.sidebar-card-image{width:60px;height:60px;flex-shrink:0;border-radius:6px;overflow:hidden;background-color:#eee;}
.sidebar-card-image img{width:100%;height:100%;object-fit:cover;}
.sidebar-card-title{margin:0 0 0.25em 0;font-size:1rem;font-weight:500;color:var(--color-text-primary);}
.sidebar-card-meta{font-size:0.85rem;color:var(--color-text-secondary);}
.sidebar-card-badges{margin-top:0.5em;display:flex;flex-wrap:wrap;gap:0.5em;}
.badge{display:inline-block;padding:0.25em 0.6em;font-size:0.75rem;font-weight:500;border-radius:12px;line-height:1.2;}
.badge-cost{background-color:var(--color-primary-light);color:var(--color-primary);border:1px solid var(--color-primary);}
.badge-status{background-color:#e0e0e0;color:#424242;}
.badge-status.status-upcoming{background-color:#fff3e0;color:#ef6c00;}
.badge-status.status-ongoing{background-color:#e8f5e9;color:#2e7d32;}
@media (max-width: 900px){
.homepage-body{display: block; flex-direction:column;}
.slide-title{font-size:2.2rem;}
.slide-excerpt{font-size:1rem;}
.sidebar-widget + .sidebar-widget{margin-top:2.5em;}
}

/* --- SECTION 27: Homepage Packages Grid --- */
.home-packages-section{margin-top:3em;}
.home-packages-section .section-title{margin-bottom:1.5em;font-size:1.8rem;color:var(--color-primary);padding-bottom:0.5em;border-bottom:2px solid var(--color-primary-light);}
.packages-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:1.5em;}
.package-card{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden;box-shadow:var(--shadow-light);transition:transform 0.2s ease-out, box-shadow 0.2s ease-out;}
.package-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-medium);}
.package-card-link{text-decoration:none;color:inherit;display:block;}
.package-card-image{position:relative;aspect-ratio:16 / 10;background-color:#eee;}
.package-card-badge-overlay{position:absolute;top:10px;right:10px;z-index:2;}
.package-card-image img{width:100%;height:100%;object-fit:cover;}
.package-card-content{padding:1.25em;}
.package-card-title{margin:0 0 0.5em 0;font-size:1.25rem;color:var(--color-text-primary);}
.package-card-meta{margin-bottom:1em;font-size:0.85rem;font-weight:500;color:var(--color-text-secondary);}
.package-card-meta .meta-separator{margin:0 0.5em;color:var(--color-border);}
.package-card-excerpt{font-size:0.95rem;line-height:1.6;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;}
@media (max-width: 768px){
.packages-grid{grid-template-columns:1fr;}
}
.hero-nav-dots{display:none;}
.immersive-controls{display:flex;width:100%;gap:10px;flex-direction:row;flex-wrap:wrap;}
#close-search-btn{display:inline-block;float:right;}

/* --- SECTION 28: Mobile Responsive Overrides --- */

/* Map Overlay */
@media (max-width: 768px){
    #map-overlay-content{flex-direction:column;height:80vh;max-height:600px;}
    .map-overlay-image{flex-basis:40%;}
    .map-overlay-details{flex-basis:60%;}
    .map-overlay-title{font-size:1.5rem;}
}

/* Search Controls Header */
@media (max-width: 768px){
    .immersive-controls{flex-wrap:nowrap;flex-grow:1;}
    .immersive-controls .search-sort{flex-grow:1;}
    .immersive-controls #town-filter-btn, .immersive-controls #category-filter-btn, .immersive-controls #clear-filters-btn{display:none;}
    .immersive-controls #combined-filter-btn{display:inline-block;}
}
@media (min-width: 769px){
    .immersive-controls #combined-filter-btn{display:none;}
}

/* Search Card Layout & Meta Visibility */
@media (max-width: 600px){
    .search-result-card-list{flex-direction:row;gap:1em;align-items:flex-start;padding-bottom:1em;margin-bottom:1em;}
    .search-result-card-list .card-image-link{width:60px;flex-shrink:0;}
    .search-result-card-list .card-image-list{width:60px;height:100px;margin-bottom:0;}
    .search-result-card-list .card-content-list{padding:0;flex-grow:1;}
    .search-result-card-list .card-title{font-size:1.1rem;margin-bottom:0.25em;}
    .search-result-card-list .card-meta{font-size: 0.8rem; margin-bottom: 0.5em; line-height: 1.4;}
    .search-result-card-list .info-line{font-size:0.85rem;font-weight:500;margin-top:0.5em;}
    .search-result-card-list .card-excerpt, .search-result-card-list .desktop-meta{display:none;}
}

@media (min-width: 601px){
    .search-result-card-list .card-excerpt, .search-result-card-list .desktop-meta{display:block;}
    .search-result-card-list{gap:1.5em;}
    .search-result-card-list .card-image-list{width:150px;height:150px;}
}


/* --- SECTION 29: AUTHENTICATION MODAL --- */
#auth-modal-overlay .modal-content {
    max-width: 420px; /* Optimal width for a login form */
    width: 90%;
    height: auto;   /* Height will adjust to content */
    max-height: 90vh;
}

#auth-modal-body {
    padding: 1.5em 2em; /* More padding inside the modal */
}

#auth-modal-body .form-group {
    margin-bottom: 1.25em; /* Space between fields */
}

#auth-modal-body label {
    display: block;
    font-size: 0.9rem;
    font-weight: 500;
    margin-bottom: 0.5em;
    color: var(--color-text-secondary);
}

#auth-modal-body input[type="text"],
#auth-modal-body input[type="password"] {
    width: 100%;
    padding: 0.8em 1em; /* Taller input fields */
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    font-size: 1rem;
    box-sizing: border-box;
    transition: all 0.2s ease-in-out;
}

#auth-modal-body input[type="text"]:focus,
#auth-modal-body input[type="password"]:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}

.auth-switch-link {
    margin-top: 1.5em;
    font-size: 0.9rem;
    text-align: center;
    color: var(--color-text-secondary);
}

.auth-form-error {
    background-color: #fbecec;
    color: #c0392b;
    border: 1px solid #e74c3c;
    padding: 0.75em;
    border-radius: var(--border-radius);
    margin: 1em 0;
    font-size: 0.9rem;
    text-align: center;
}

.welcome-user {
    padding: 0.5em 1em;
    font-weight: 500;
    color: var(--color-text-primary);
    cursor: default; /* Make it look non-clickable */
}

/* --- SECTION 30: Tabbed Filter Modal --- */
.modal-tabs{display:flex;border-bottom:1px solid var(--color-border);margin:-1em -1em 1em -1em;padding:0 1em;}
.modal-tab-btn{padding:0.8em 1.2em;border:none;background-color:transparent;cursor:pointer;font-size:1rem;color:var(--color-text-secondary);border-bottom:3px solid transparent;margin-bottom:-1px;}
.modal-tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:500;}
.modal-tab-content{display:none;}
.modal-tab-content.active{display:block;}

/* --- SECTION 31: BOOKING FORM REFINEMENTS --- */
.booking-request-form .radio-group {
    display: flex;
    gap: 1.5em;
    padding: 0.5em 0;
}
.booking-request-form .radio-group label {
    display: flex;
    align-items: center;
    gap: 0.5em;
    font-weight: normal;
    margin-bottom: 0;
    cursor: pointer;
}
.booking-request-form input[type="radio"] {
    accent-color: var(--color-primary);
    width: 18px;
    height: 18px;
}
/* ADD THIS LINE FOR THE PHONE NUMBER FIELD */
.booking-request-form input[type="tel"] {
    width: 100%;
    padding: 0.75em;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    font-size: 0.95rem;
    box-sizing: border-box;
    background-color: #fff;
}

/* --- SECTION 32: TRIP MANAGER MODAL --- */
#trip-manager-modal .modal-content {
    max-width: 500px;
    width: 90%;
    height: auto;
    max-height: 90vh;
}

#trip-manager-modal-body h4 {
    margin: 0 0 1em 0;
    font-size: 1.2rem;
    color: var(--color-primary);
    padding-bottom: 0.5em;
    border-bottom: 2px solid var(--color-primary-light);
}

#trip-manager-modal-body .form-group {
    margin-bottom: 1.25em;
}

#trip-manager-modal-body label {
    display: block;
    font-size: 0.9rem;
    font-weight: 500;
    margin-bottom: 0.5em;
    color: var(--color-text-secondary);
}

#trip-manager-modal-body input[type="text"],
#trip-manager-modal-body select {
    width: 100%;
    padding: 0.8em 1em;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    font-size: 1rem;
    box-sizing: border-box;
    transition: all 0.2s ease-in-out;
}

#trip-manager-modal-body input[type="text"]:focus,
#trip-manager-modal-body select:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}

.trip-management-actions {
    display: flex;
    gap: 1em;
    margin-top: 1em;
}

.trip-management-actions .action-button {
    flex-grow: 1;
}

/* --- SECTION 33: MODAL FIXES & ENHANCEMENTS --- */

/* Z-index Fix: Ensure all modals appear above the trip planner panel */
.modal-overlay {
    z-index: 10001; /* This is higher than the panel's z-index of 10000 */
}

/* Custom Prompt Modal Styles */
#prompt-modal .modal-content {
    max-width: 400px;
    width: 90%;
    height: auto;
}

.prompt-message {
    font-size: 1.1rem;
    text-align: center;
    margin: 0 0 1.5em 0;
    color: var(--color-text-primary);
}

.prompt-input {
    width: 100%;
    padding: 0.8em 1em;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    font-size: 1rem;
    box-sizing: border-box;
    margin-bottom: 1.5em;
    text-align: center;
}

.prompt-input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}
ul.trip-manager-list {
    display: flex;
    flex-direction: column;
    gap: 0.75em; /* Adds a bit of space between items */
}

/* --- SECTION 34: Z-INDEX FIX FOR CONFIRMATION DIALOGS --- */
#confirmation-modal,
#prompt-modal {
    z-index: 10002; /* This ensures these dialogs appear above the trip manager modal */
}


/* --- SECTION 35: INFO SCROLLER --- */
.info-scroller-container{background-color:#004D40;color:#ECF0F1;position:relative;user-select:none;border-bottom:1px solid #2C3E50;height:68px;display:flex;align-items:center;}
.info-scroller__wrapper{overflow:hidden;width:100%;display:flex;}
.info-scroller__track{display:flex;list-style:none;margin:0;padding:0;white-space:nowrap;width:100%;}
.info-scroller__placeholder{width:100%;text-align:center;color:#BDC3C7;}
.info-scroller__item{flex-shrink:0;border-right:1px solid #4A637F;}
.info-scroller__item a{color:#ECF0F1;text-decoration:none;display:flex;flex-direction:column;justify-content:center;gap:0.25em;padding:0.5em 1.5em;height:68px;transition:background-color 0.2s;box-sizing:border-box;}
.info-scroller__item a:hover{background-color:rgba(255,255,255,0.1);}
.scroller-item__meta{font-size:0.8rem;font-weight:500;height:22px;display:flex;align-items:center;}
.scroller-item__title{font-size:0.9rem;font-weight:400;color:#ffffff;}
.weather-info{display:flex;align-items:center;gap:0.5em;}
.weather-icon{font-size:1.2rem;vertical-align:middle;}
.weather-icon--clear_day,.weather-icon--clear_night{color:#f39c12;}
.weather-icon--partly_cloudy_day,.weather-icon--partly_cloudy_night,.weather-icon--cloudy,.weather-icon--overcast{color:#BDC3C7;}
.weather-icon--rain,.weather-icon--showers_day,.weather-icon--showers_night,.weather-icon--thunderstorm{color:#3498DB;}
.weather-icon--foggy{color:#95a5a6;}
.weather-icon--wind{color:#A5D6A7;}
.weather-icon--snow{color:#E0E0E0;}
.info-scroller__badge{background-color:#f39c12;color:#2c3e50;font-weight:bold;padding:0.2em 0.6em;border-radius:4px;font-size:0.75rem;line-height:1;}
.info-scroller__badge--event{background-color:#e74c3c;color:#ffffff;}



/* --- SECTION 37: PUBLIC TRIP VIEWER (CONSOLIDATED) --- */
.trip-viewer-header{margin-bottom:2.5em;text-align:center}
.trip-slideshow-container{position:relative;width:100%;height:50vh;min-height:400px;max-height:500px;background-color:#eee;border-radius:var(--border-radius);overflow:hidden;margin-top:1em;box-shadow:var(--shadow-medium)}
.trip-slide{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;opacity:0;transition:opacity 1s ease-in-out}
.trip-slide.active{opacity:1}
.trip-viewer-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:2em;align-items:flex-start}
.trip-map-day-filters{background-color:#f1f3f4;padding:.5em 1em;border-radius:var(--border-radius) var(--border-radius) 0 0;border:1px solid var(--color-border);border-bottom:none;display:flex;flex-wrap:wrap;gap:1em}
.trip-map-day-filters label{display:flex;align-items:center;gap:.4em;font-size:.9rem;cursor:pointer}
.trip-map-day-filters input[type=checkbox]{accent-color:var(--color-primary)}
.trip-map-container{width:100%;height:500px;border:1px solid var(--color-border);border-bottom:none}
.trip-map-scroller{background-color:#fff;padding:1em;border:1px solid var(--color-border);border-top:none;border-radius:0 0 var(--border-radius) var(--border-radius);overflow:hidden}
.trip-map-scroller-track{display:flex;gap:1em;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:1em}
.map-scroller-card{flex:0 0 200px;border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden;cursor:pointer;transition:all .2s ease-in-out;scroll-snap-align:start}
.map-scroller-card.active,.map-scroller-card:hover{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary)}
.scroller-card-image{width:100%;height:100px;object-fit:cover;display:block}
.scroller-card-content{padding:.75em}
.scroller-card-day{font-size:.75rem;font-weight:500;color:var(--color-text-secondary);display:block;margin-bottom:.25em}
.scroller-card-title{font-size:.9rem;margin:0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trip-card-title a{text-decoration:none;color:inherit}
.trip-card-title a:hover{color:var(--color-primary);text-decoration:underline}
.trip-card-public .action-button{display:none}
.travel-block-info{padding:2px 10px;font-size:.8rem}
.custom-map-marker-trip div{width:100%;height:100%;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.4)}
.custom-map-marker-trip.is-town div{border-radius:50% 50% 50% 0;transform:rotate(-45deg)}
.custom-map-marker-trip.is-town .material-symbols-outlined{transform:rotate(45deg)}
.custom-map-marker-trip.active{transform:scale(1.2);z-index:1000!important}
.glossy-map-popup{width:280px}
.glossy-map-popup .popup-image{width:100%;height:120px;object-fit:cover;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius)}
.glossy-map-popup .popup-content{padding:1em}
.glossy-map-popup .popup-day-badge{color:#fff;padding:3px 8px;border-radius:12px;font-size:.75rem;font-weight:500}
.glossy-map-popup .popup-title{font-size:1.1rem;margin:.5em 0}
.glossy-map-popup .popup-meta{font-size:.85rem;color:var(--color-text-secondary);margin:0}
@media (max-width:900px){.trip-map-column{order:-1;margin-bottom:2em}.trip-map-container{height:400px}}


/* --- switch scroller off in immersive views --- */
body.immersive-view-active .info-scroller-container { display: none; }

/* --- SECTION 36: IMMERSIVE MAP SCROLLER (MODERN) --- */
#immersive-map-view{position:relative}
#map-scroller-container{position:absolute;bottom:10px;left:10px;right:10px;z-index:1000;padding:10px;background-color:rgba(255,255,255,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.1)}
#map-scroller-track{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:15px;scroll-behavior:smooth}
#map-scroller-track::-webkit-scrollbar{height:8px}
#map-scroller-track::-webkit-scrollbar-track{background:0 0;border-radius:4px}
#map-scroller-track::-webkit-scrollbar-thumb{background:rgba(0,0,0,.3);border-radius:4px}
#map-scroller-track::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.5)}
.map-scroller-card{flex:0 0 220px;scroll-snap-align:center;background-color:var(--color-surface);border-radius:var(--border-radius);border:2px solid transparent;box-shadow:var(--shadow-medium);display:flex;align-items:center;gap:.8em;padding:8px;cursor:pointer;transition:all .2s ease-in-out}
.map-scroller-card:hover{transform:scale(1.02);border-color:#a0a0a0}
.map-scroller-card.active{border-color:var(--color-primary);background-color:var(--color-primary-light);transform:scale(1.02)}
.scroller-card-image{width:60px;height:60px;flex-shrink:0;object-fit:cover;border-radius:6px;background-color:#eee}
.scroller-card-content{min-width:0}
.scroller-card-title{font-size:.9rem;font-weight:500;margin:0 0 .25em 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scroller-card-meta{font-size:.75rem;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scroller-card-actions{margin-top:5px}
.scroller-details-btn{background:0 0;border:none;padding:0;font-size:.8rem;font-weight:500;color:var(--color-primary);text-decoration:underline;height:auto;display:inline}

/* --- SECTION 39: IMMERSIVE MAP PAGINATION --- */
#map-pagination-container {
    position: absolute;
    bottom: 170px; /* Position it just above the scroller */
    left: 10px;
    right: 10px;
    z-index: 10000;
    border-radius: var(--border-radius);
    padding: 0.5em 1em;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

#map-pagination-container .search-results-count {
    margin: 0;
    padding: 0;
    border: none;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--color-text-secondary);
}

#map-pagination-container .pagination {
    margin-top: 0;
}

#map-pagination-container .pagination .nav-links {
    margin-top: 0;
    gap: 0.25em;
}

#map-pagination-container .pagination .page-numbers {
    padding: 0.3em 0.6em;
    font-size: 0.8rem;
    background-color: var(--color-background);
}

#map-pagination-container .pagination .page-numbers.current {
    background-color: var(--color-primary);
    color: #fff;
}

/* On mobile, stack the controls for better readability */
@media (max-width: 768px) {
    #map-pagination-container {
        flex-direction: column;
        gap: 0.5em;
        bottom: 170px; /* Adjust position for the mobile scroller */
    }
}

/* --- SECTION 40: HEADER ACTION BUTTONS --- */
.header-action-buttons{display:flex;gap:.5em}
.header-action-btn{background-color:var(--color-surface);border:1px solid var(--color-border);padding:7px 10px;border-radius:5px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}
.header-action-btn:hover{background-color:var(--color-primary-light);color:var(--color-primary)}
#open-filter-modal-btn,#header-close-btn{display:none}
body.immersive-view-active #open-filter-modal-btn,body.immersive-view-active #header-close-btn{display:flex}

/* --- SECTION 41: TRIP VIEWER LAYOUT & COMPONENTS (CONSOLIDATED) --- */
.trip-slide { display: flex; align-items: center; justify-content: center; text-align: center; padding: 2em; }
.trip-slide-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 60%); }
.trip-slide-content { position: relative; z-index: 2; color: #fff; max-width: 600px; }
.trip-slide-day-badge { background-color: var(--color-primary); color: #fff; padding: 5px 12px; border-radius: 15px; font-size: 0.8rem; font-weight: 500; display: inline-block; margin-bottom: 0.75em; }
.trip-slide-title { font-size: 1.8rem; margin: 0 0 0.25em 0; text-shadow: 1px 1px 4px rgba(0,0,0,0.5); }
.trip-slide-meta { font-size: 1rem; margin: 0; opacity: 0.9; text-shadow: 1px 1px 4px rgba(0,0,0,0.5); }
.trip-slideshow-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; background-color: rgba(0, 0, 0, 0.4); color: #fff; border: none; border-radius: 50%; width: 44px; height: 44px; font-size: 1.8rem; cursor: pointer; transition: background-color 0.2s; display: flex; align-items: center; justify-content: center; }
.trip-slideshow-nav:hover { background-color: rgba(0, 0, 0, 0.7); }
.trip-slideshow-nav.prev { left: 15px; }
.trip-slideshow-nav.next { right: 15px; }
.trip-summary-section { margin: 2.5em 0; padding: 2em; background-color: var(--color-surface); border-radius: var(--border-radius); box-shadow: var(--shadow-light); }
.trip-dashboard-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 1em; padding-bottom: 1.5em; border-bottom: 1px solid var(--color-border); margin-bottom: 1.5em; }
.trip-dashboard-summary .dashboard-stat .stat-value { font-size: 2rem; }
.trip-narrative-summary { text-align: left; }
.trip-narrative-summary p { text-align: left; font-size: 1.1rem; line-height: 1.7; color: var(--color-text-secondary); max-width: 900px; margin: 0 auto 1em auto; }
.trip-narrative-summary p strong { color: var(--color-text-primary); font-weight: 500; }
.narrative-day-header { font-size: 1.2rem; color: var(--color-primary); margin: 0 0 0.5em 0; padding-bottom: 0.5em; border-bottom: 2px solid var(--color-primary-light); }
.trip-viewer-controls { display: flex; justify-content: flex-end; align-items: center; padding: 1em; margin-top: 2.5em; background-color: var(--color-background); border-radius: var(--border-radius); }
.global-diary-toggle { font-size: 0.9rem; font-weight: 500; }
.trip-days-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); gap: 2em; margin-top: 2.5em; }
.trip-day-container-public { background-color: var(--color-surface); border-radius: var(--border-radius); box-shadow: var(--shadow-light); overflow: hidden; display: flex; flex-direction: column; position: relative; }
.trip-day-dashboard { display: grid; grid-template-columns: repeat(3, 1fr); background-color: var(--color-background); padding: 1em; border-bottom: 1px solid var(--color-border); }
.dashboard-stat { text-align: center; border-right: 1px solid var(--color-border); }
.dashboard-stat:last-child { border-right: none; }
.stat-value { display: block; font-size: 1.5rem; font-weight: 500; color: var(--color-primary); }
.stat-label { display: block; font-size: 0.8rem; color: var(--color-text-secondary); text-transform: uppercase; }
.trip-day-content-public { padding: 1.5em; display: flex; flex-direction: column; gap: 1em; max-height: 400px; overflow-y: auto; transition: max-height 0.4s ease-in-out; }
.trip-day-container-public.is-expanded .trip-day-content-public { max-height: 2000px; overflow-y: hidden; }
.trip-day-content-public::-webkit-scrollbar { width: 8px; }
.trip-day-content-public::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 4px; }
.trip-day-content-public::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }
.trip-day-content-public::-webkit-scrollbar-thumb:hover { background: #aaa; }
.day-expand-toggle { position: absolute; top: 10px; right: 10px; background: rgba(255, 255, 255, 0.8); border: 1px solid var(--color-border); border-radius: 50%; width: 32px; height: 32px; cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--color-text-secondary); }
.day-expand-toggle:hover { background: #fff; color: var(--color-primary); }
.day-expand-toggle .icon-collapse { display: none; }
.trip-day-container-public.is-expanded .day-expand-toggle .icon-collapse { display: block; }
.trip-day-container-public.is-expanded .day-expand-toggle .icon-expand { display: none; }
.trip-map-section { margin-top: 3em; border: 1px solid var(--color-border); border-radius: var(--border-radius); overflow: hidden; }
.trip-map-container { height: 60vh; min-height: 500px; }
.trip-viewer-body { display: block; }
.trip-map-column, .trip-itinerary-column { width: 100%; order: 0; }
.trip-map-scroller { padding: 10px; background-color: rgba(255,255,255,.7); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); border-top: 1px solid var(--color-border); }
.trip-map-scroller-track { display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 15px; scroll-behavior: smooth; scrollbar-width: thin; scrollbar-color: rgba(0,0,0,.3) transparent; }
.trip-map-scroller-track::-webkit-scrollbar { height: 8px; }
.trip-map-scroller-track::-webkit-scrollbar-track { background: transparent; }
.trip-map-scroller-track::-webkit-scrollbar-thumb { background: rgba(0,0,0,.3); border-radius: 4px; }
.diary-timeline { border-left: 3px solid var(--color-primary-light); padding-left: 1.5em; position: relative; }
.diary-entry { position: relative; padding: .5em 0 1.5em 0; }
.diary-entry::before { content: ''; position: absolute; left: -1.5em; top: 10px; width: 12px; height: 12px; background-color: #fff; border: 3px solid var(--color-primary); border-radius: 50%; transform: translateX(-50%); }
.diary-entry.is-travel::before { border-color: var(--color-text-secondary); background-color: #fff; }
.diary-time { font-weight: 700; color: var(--color-primary); font-size: .9rem; margin-bottom: .25em; }
.diary-entry.is-travel .diary-time { color: var(--color-text-secondary); }
.diary-title { font-size: 1rem; font-weight: 500; margin: 0; display: flex; align-items: center; gap: .5em; }

@media (max-width: 600px) {
    .trip-dashboard-summary { grid-template-columns: repeat(5, 1fr); padding: .75em; gap: .5em; }
    .trip-dashboard-summary .dashboard-stat .stat-value { font-size: 1.2rem; line-height: 1.1; }
    .trip-dashboard-summary .dashboard-stat .stat-label { font-size: .6rem; line-height: 1.1; letter-spacing: -.5px; }
    .trip-day-dashboard .stat-value { font-size: 1.2rem; }
    .trip-day-dashboard .stat-label { font-size: .7rem; }
}

/* --- SECTION 42: NEW TRIP MANAGER & VIEWER STYLES --- */
.trip-manager-list { list-style: none; padding: 0; margin: 0 0 1em 0; display: flex; flex-direction: column; gap: 0.5em; }
.trip-manager-list li { display: flex; justify-content: space-between; align-items: center; padding: 0.5em; background-color: var(--color-background); border-radius: 6px; }
.trip-manager-list li span { font-weight: 500; }
.trip-manager-list li .action-button { font-size: 0.8rem; padding: 0.4em 0.8em; }

.trip-viewer-header #copy-trip-id-btn { 
    margin: 1em auto;
    background-color: var(--color-background);
    border-color: var(--color-border);
    color: var(--color-text-secondary);
}
.trip-viewer-header #copy-trip-id-btn:hover {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}

.trip-day-header-public {padding-left: 10px;}

/* --- SECTION 42: FILTER BUTTON BADGE --- */
.header-action-btn {
    position: relative; /* Needed for badge positioning */
}

.header-action-btn.active-filter {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}

.header-action-btn .filter-count-badge {
    position: absolute;
    top: -5px;
    right: -5px;
    background-color: var(--color-primary);
    color: white;
    border-radius: 50%;
    width: 20px;
    height: 20px;
    font-size: 12px;
    font-weight: bold;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}

/* --- SECTION 43: SINGLE TOWN PAGE LAYOUT (v4 FINAL) --- */
.town-page-module{margin-top:2.5em;padding-top:1.5em;border-top:1px solid var(--color-border);}
.town-page-module .section-header{align-items:center;}
.town-page-module .view-more-link{font-size:0.9rem;font-weight:500;color:var(--color-primary);text-decoration:none;white-space:nowrap;transition:all 0.2s ease;}
.town-page-module .view-more-link:hover{text-decoration:underline;color:var(--color-text-darker);}
.town-hero-slideshow{height:60vh;min-height:400px;background-color:#333;}
.town-hero-slideshow .hero-slideshow-container,.town-hero-slideshow .hero-slide{border-radius:0;}
.town-intro-section{display:grid;grid-template-columns:2fr 1fr;gap:2.5em;margin-top:2em;align-items:flex-start;}
.town-intro-main .entry-content{padding-right:1em;border-right:1px solid var(--color-border);}
.town-intro-sidebar .info-action-hub{padding:0;background:none;border:none;margin-bottom:2em;}
.town-intro-sidebar .hub-actions{flex-direction:row;flex-wrap:wrap;}
.town-intro-sidebar .hub-actions .action-button{flex-grow:1;}
.at-a-glance-box{background-color:var(--color-background);padding:1.25em;border-radius:var(--border-radius);border:1px solid var(--color-border);}
.at-a-glance-box ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:0.75em;}
.at-a-glance-box li{display:flex;align-items:center;gap:0.75em;font-size:0.9rem;color:var(--color-text-secondary);}
.at-a-glance-box .material-symbols-outlined{color:var(--color-primary);}
.two-column-modules{display:grid;grid-template-columns:1fr 1fr;gap:2.5em;align-items:flex-start;margin-top: 30px;}
.two-column-modules .town-page-module{border-top:none;padding-top:0;margin-top:0;}
.two-column-modules:first-of-type .town-page-module:first-child{margin-top:3em;padding-top:2em;border-top:1px solid var(--color-border);}
.town-page-divider{grid-column:1 / -1;height:1px;background-color:transparent;margin:3em 0 0 0;padding:0;border:none;}
.cta-container{margin-top:3em;padding-top:2em;border-top:1px solid var(--color-border);}
.two-column-modules.cta-container{display:grid;grid-template-columns:1fr 1fr;gap:2em;}
.town-page-cta{margin-top:30px;padding:2em 2em;border-radius:var(--border-radius);background-color:#333;background-size:cover;background-position:center;position:relative;text-align:center;color:#fff;overflow:hidden;}
.cta-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,50,50,0.7);z-index:1;}
.cta-content{position:relative;z-index:2;}
.cta-content h2{font-size:1.5rem;margin:0 0 0.5em 0;text-shadow:2px 2px 8px rgba(0,0,0,0.5);}
.cta-content p{font-size:1rem;max-width:600px;margin:0 auto 1.5em auto;opacity:0.9;}
.town-intro-sidebar {min-width: 0;}
@media (max-width: 960px) {
    .town-intro-section {
        grid-template-columns: 1fr; /* Switch to a single column layout */
    }

    .town-intro-main .entry-content {
        padding-right: 0;
        border-right: none; /* Remove the vertical border */
        padding-bottom: 2em;
        border-bottom: 1px solid var(--color-border); /* Add a horizontal border for separation */
    }
}


/* --- SECTION 51: STYLED PILLBOX SCROLLBAR --- */
.pillbox-scroller-container {
    width: 100%;
    margin-bottom: 1.5em; 
}

.pillbox-scroller-container .sub-category-filters {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 10px; /* Space for the scrollbar */
    margin-bottom: 0;
    border-bottom: none;
    scrollbar-width: thin; /* For Firefox */
    scrollbar-color: var(--color-primary) var(--color-background); /* For Firefox */
}

/* Custom scrollbar for Webkit browsers (Chrome, Safari) */
.pillbox-scroller-container .sub-category-filters::-webkit-scrollbar {
    height: 8px; /* Height of the horizontal scrollbar */
}

.pillbox-scroller-container .sub-category-filters::-webkit-scrollbar-track {
    background: var(--color-background); /* Track color */
    border-radius: 4px;
}

.pillbox-scroller-container .sub-category-filters::-webkit-scrollbar-thumb {
    background-color: var(--color-primary); /* Handle color */
    border-radius: 4px;
    border: 2px solid var(--color-background); /* Creates padding around thumb */
}

.pillbox-scroller-container .sub-category-filters::-webkit-scrollbar-thumb:hover {
    background-color: #005a4f; /* Darker color on hover */
}

/* Make individual filter tags not shrink */
.pillbox-scroller-container .filter-tag {
    flex-shrink: 0;
}

/* Restructure the interactive module controls to stack vertically */
.interactive-module .module-controls {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
}

.interactive-module .module-pagination {
    margin-top: 0.5em;
}

/* --- SECTION 53: FEATURED GRID CARD ENHANCEMENTS --- */
.featured-grid-card-image {
    position: relative; /* Needed for absolute positioning of the badge */
    overflow: hidden;   /* Ensures badge doesn't overflow rounded corners if present */
}

.featured-grid-card-badge {
    position: absolute;
    top: 8px; /* Position from the top */
    right: 8px; /* Position from the right */
    background-color: rgba(0, 0, 0, 0.6);
    color: #fff;
    padding: 4px 8px;
    font-size: 0.7rem; /* Keeping it smaller for the grid cards */
    font-weight: 500;
    border-radius: 4px;
    z-index: 2; /* Ensures it's above the image */
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
    display: flex; /* Use flex to vertically align content if needed */
    align-items: center; /* Center text vertically */
    justify-content: center; /* Center text horizontally */
    line-height: 1; /* Adjust line height for better vertical centering */
}

.featured-grid-card-meta .meta-separator {
    color: var(--color-border);
    margin: 0 0.4em;
}

/* --- SECTION 54: SIDEBAR CAROUSEL WIDGET (REVISED) --- */
.sidebar-carousel-widget {
    background-color: transparent;
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-light);
    padding: 1.25em;
    margin-bottom: 2em;
}

.sidebar-carousel-widget .widget-title {
    margin: 0 0 0.75em 0;
    font-size: 1.3rem;
    color: var(--color-primary);
    padding-bottom: 0.5em;
    border-bottom: 2px solid var(--color-primary-light);
	text-align: center;
}

.scw-carousel {
    position: relative;
    aspect-ratio: 4 / 3;
    border-radius: var(--border-radius);
    overflow: hidden;
    background-color: #333;
}

.scw-slides-container {
    width: 100%;
    height: 100%;
}

.scw-slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    opacity: 0;
    transition: opacity 0.5s ease-in-out;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 1em;
    box-sizing: border-box;
}

.scw-slide.active {
    opacity: 1;
}

/* Clickable overlay link for the whole slide */
.scw-slide-link {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1;
}

.scw-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 60%);
}

.scw-content {
    position: relative;
    z-index: 2;
    /* background-color: rgba(40, 30, 20, 0.7);*/
    padding: 0.75em 1em;
    border-radius: 6px;
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    color: #fff;
	text-align: center;
    text-shadow: 1px 1px 3px rgba(0,0,0,0.5);
    pointer-events: none; /* Make text non-interactive so link works */
}

.scw-title {
    margin: 0;
    font-size: 1.1rem;
    line-height: 1.4;
}

/* Vertically Centered Navigation */
.scw-navigation {
    position: absolute;
    top: 50%;
    left: 10px;
    right: 10px;
    transform: translateY(-50%);
    z-index: 3;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.scw-arrow {
    background-color: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #fff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.2s ease;
}

.scw-arrow:hover {
    background-color: rgba(0, 0, 0, 0.6);
}

.scw-arrow .material-symbols-outlined {
    font-size: 24px;
}

/* Hide counter and adjust arrows for a cleaner look */
.scw-counter {
    display: none;
}

/* NEW: Town name style for sidebar carousel */
.scw-town {
    display: block;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    margin-bottom: 0.4em;
    letter-spacing: 0.5px;
    opacity: 0.9;
}


/* --- SECTION 55: RESPONSIVE WIDGET GRID (REVISED) --- */
.responsive-widget-grid {
    display: grid;
    /* On large screens, create 3 equal columns */
    grid-template-columns: repeat(3, 1fr);
    gap: 2em; /* The space between widgets */
    margin-top: 2em;
    margin-bottom: 2em;
}

/* On medium screens (like tablets), switch to 2 columns */
@media (max-width: 1024px) {
    .responsive-widget-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* On small screens (like phones), stack them in a single column */
@media (max-width: 768px) {
    .responsive-widget-grid {
        grid-template-columns: 1fr;
    }
}

/* --- SECTION 56: SIDEBAR CAROUSEL BADGES --- */
.scw-badge-container {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 5px;
    pointer-events: none; /* Allows clicks to go through to the link */
}

.scw-badge {
    display: inline-block;
    padding: 0.3em 0.7em;
    font-size: 0.75rem;
    font-weight: 500;
    border-radius: 12px;
    line-height: 1.2;
    color: #fff;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
}

.scw-badge-cost {
    background-color: rgba(0, 121, 107, 0.7); /* --color-primary with transparency */
    border: 1px solid rgba(255, 255, 255, 0.3);
}

.scw-badge-event {
    background-color: rgba(230, 126, 34, 0.7); /* An orange color for events */
    border: 1px solid rgba(255, 255, 255, 0.3);
}

/* --- SECTION 57, 58, 59: SIDEBAR LIST WIDGET (FINAL) --- */
.sidebar-list-widget {
    background-color: var(--color-surface);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-light);
    padding: 1.25em;
    margin-bottom: 2em;
}

.sidebar-list-widget .widget-title {
    margin: 0 0 0.75em 0;
    font-size: 1.3rem;
    color: var(--color-primary);
    padding-bottom: 0.5em;
    border-bottom: 2px solid var(--color-primary-light);
}

.slw-list-container {
    display: flex;
    flex-direction: column;
    gap: 0.75em;
}

.slw-card-link {
    display: flex;
    align-items: center;
    gap: 1em;
    padding: 0.5em;
    border-radius: var(--border-radius);
    text-decoration: none;
    color: inherit;
    transition: background-color 0.2s ease;
}

.slw-card-link:hover {
    background-color: var(--color-background);
}

.slw-card-image {
    width: 70px;
    height: 70px;
    flex-shrink: 0;
}

.slw-card-image .placeholder-image,
.slw-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 6px;
    background-color: #eee;
}

.slw-card-image img.wp-post-image {
    height: 100%;
    min-height: unset;
}

.slw-card-content {
    min-width: 0; 
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    justify-content: center;
}

.slw-card-title {
    margin: 0 0 0.25em 0;
    font-size: 1rem;
    font-weight: 500;
    white-space: nowrap; 
    overflow: hidden;
    text-overflow: ellipsis;
}

.slw-card-meta {
    font-size: 0.8rem;
    color: var(--color-text-secondary);
    margin-bottom: 0.5em;
}

.slw-card-footer {
    display: flex;
    align-items: center;
    gap: 0.75em;
    margin-top: auto;
    min-height: 20px;
}

.slw-badge {
    display: inline-block;
    padding: 3px 8px;
    font-size: 0.7rem;
    font-weight: 500;
    border-radius: 12px;
    line-height: 1.2;
}

.slw-badge-event {
    background-color: purple;
    color: white;
}

.slw-card-cost {
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--color-primary);
}

.slw-pagination {
    margin-top: 1em;
    padding-top: 1em;
    border-top: 1px solid var(--color-border);
    display: flex;
    justify-content: center;
}

.slw-pagination .nav-links {
    display: flex;
    gap: 0.5em;
}

.slw-pagination .page-numbers {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid var(--color-border);
    border-radius: 50%;
    text-decoration: none;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--color-primary);
    background-color: var(--color-surface);
    transition: all 0.2s ease;
}

.slw-pagination .page-numbers:hover {
    background-color: var(--color-primary-light);
    border-color: var(--color-primary);
}

.slw-pagination .page-numbers.current {
    background-color: var(--color-primary);
    color: var(--color-text-on-primary);
    border-color: var(--color-primary);
}

.sidebar-column > .sidebar-widget {
    min-width: 0;
}


/* --- SECTION 60: RESPONSIVE WIDGET GRID FIX --- */
/*
 * This ensures that when widgets are placed in the responsive grid,
 * they can shrink correctly, allowing long titles inside to truncate
 * with an ellipsis instead of breaking the layout.
*/
.responsive-widget-grid > .sidebar-list-widget,
.responsive-widget-grid > .sidebar-carousel-widget {
    min-width: 0;
}

/* --- SECTION 61: SIDEBAR LIST WIDGET FILTER --- */
.slw-filter-container {
    margin-bottom: 1em;
}

.slw-filter-input {
    width: 100%;
    padding: 0.6em 1em;
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    font-size: 0.9rem;
    box-sizing: border-box;
    transition: all 0.2s ease-in-out;
}

.slw-filter-input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}



/* --- SECTION 62: INTERACTIVE MAP WIDGET (Consolidated v2.2 - Final) --- */
.interactive-map-widget{display:flex;flex-direction:column;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden;position:relative;}
.interactive-map-widget-title{padding:0.75em 1em;margin:0;font-size:1.4rem;border-bottom:1px solid var(--color-border);background-color:var(--color-background);}
.imw-header {flex-wrap: wrap; padding: 10px;}
.imw-controls-wrapper {display: flex;flex-grow: 1;gap: 1em;align-items: center;}
.imw-search-bar{flex-grow:1;position:relative;min-width:150px;}
.imw-search-bar .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--color-text-secondary);}
.imw-search-input{width:100%;padding:8px 12px 8px 38px;border-radius:6px;border:1px solid var(--color-border);font-size:0.95rem;}
.imw-filter-controls{display:flex;gap:0.5em;}
.imw-control-btn{background-color:#fff;border:1px solid var(--color-border);border-radius:6px;padding:5px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);position:relative;}
.imw-control-btn.active{background-color:var(--color-primary-light);color:var(--color-primary);border-color:var(--color-primary);}
.imw-body{display:flex;flex-grow:1;min-height:0;}
.interactive-map-widget.sidebar-right .imw-body{flex-direction:row;}
.interactive-map-widget.sidebar-left .imw-body{flex-direction:row-reverse;}
.imw-main-view{flex-grow:1;position:relative;display:flex;flex-direction:column;min-width:0;}
.imw-sidebar{width:320px;flex-shrink:0;border-left:1px solid var(--color-border);display:flex;flex-direction:column;}
.interactive-map-widget.sidebar-left .imw-sidebar{border-left:none;border-right:1px solid var(--color-border);}
.imw-sidebar-content{flex-grow:1;overflow-y:auto;padding:0.5em;display:flex;flex-direction:column;gap:0.5em;}
.imw-sidebar-content .slw-card-link:hover,.imw-sidebar-content .slw-card-link.active{background-color:var(--color-primary-light);}
.imw-view-content{display:none;width:100%;height:100%;}
.imw-view-content.active{display:block;}
.imw-map-container .leaflet-container{width:100%;height:100%;}
.imw-slideshow-container{position:relative;}
.imw-slide{width:100%;height:100%;background-size:cover;background-position:center;position:relative;display:flex;align-items:flex-end;color:#fff;box-sizing:border-box;padding:0;}
.imw-slide-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,0.7) 0%,transparent 50%);}
.imw-slide-content{position:relative;z-index:2;width:100%;text-align:center;padding:2em 1.5em;box-sizing:border-box;}
.imw-view-toggle{position:absolute;bottom:10px;left:10px;z-index:1001;background-color:rgba(255,255,255,0.8);backdrop-filter:blur(4px);border-radius:8px;padding:4px;display:flex;box-shadow:var(--shadow-light);}
.imw-view-btn{border:none;background:transparent;padding:6px 12px;border-radius:6px;cursor:pointer;font-weight:500;}
.imw-view-btn.active{background-color:var(--color-primary);color:#fff;}
.imw-fullscreen-toggle{position:absolute;top:10px;right:10px;z-index:1001;}
.interactive-map-widget.is-stacked .imw-body{flex-direction:column;}
.interactive-map-widget.is-stacked .imw-main-view{height:50%;flex-shrink:0;}
.interactive-map-widget.is-stacked .imw-sidebar{width:100%;border-left:none;border-top:1px solid var(--color-border);height:50%;}
.imw-filter-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.98);z-index:1002;display:none;flex-direction:column;box-sizing:border-box;padding:0;}
.imw-filter-overlay.is-visible{display:flex;}
.imw-filter-overlay-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border);padding:0.75em 1em;flex-shrink:0;}
.imw-filter-overlay-title{margin:0;}
.imw-filter-overlay-close{background:none;border:none;font-size:1.5rem;cursor:pointer;}
.imw-filter-overlay-body{padding:1em;overflow-y:auto;flex-grow:1;}
.imw-filter-overlay-body ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:0.5em;}
.interactive-map-widget.is-stacked .imw-filter-overlay-body ul{grid-template-columns:1fr;}
.leaflet-pane{z-index:400 !important;}

/* --- ACCESSIBILITY CRASH FIX V3 --- */
.imw-custom-marker .material-symbols-outlined {
    background: var(--color-primary); /* Give the icon itself a solid background */
    color: white;                     /* Make the icon symbol white for contrast */
    border-radius: 50%;               /* Make the background circular */
    border: 2px solid white;          /* Add a small white border for definition */
    box-shadow: 0 1px 4px rgba(0,0,0,0.4);
    width: 28px;
    height: 28px;
    font-size: 20px;                  /* Adjust icon size to fit */
    display: flex;
    align-items: center;
    justify-content: center;
}

.imw-custom-marker.active .material-symbols-outlined {
    background: #E74C3C; /* Active color */
}

.imw-custom-marker.is-town .material-symbols-outlined {
    background: #F39C12; /* Town color */
}
.imw-slide.is-loading::after{content:'';position:absolute;top:50%;left:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border:4px solid rgba(255,255,255,0.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite;z-index:4;}
@keyframes spin{to{transform:rotate(360deg);}}
.leaflet-popup-content-wrapper{padding:0;border-radius:var(--border-radius);background-color:var(--color-surface);box-shadow:var(--shadow-medium);}
.leaflet-popup-content{margin:0 !important;}
.leaflet-popup-tip{background:var(--color-surface);}
.leaflet-popup-close-button{display:none;}
.imw-custom-popup{padding:12px 16px;color:var(--color-text-primary);}
.imw-popup-title{font-size:1.1rem;font-weight:500;margin:0;color:var(--color-primary);text-align:center;}
.imw-footer{display:flex;justify-content:space-between;align-items:center;padding:0.5em;border-top:1px solid var(--color-border);background-color:var(--color-background);flex-wrap:wrap;gap:1em;}
.imw-walker{display:flex;align-items:center;gap:1em;flex-grow:1;}
.imw-walker-arrow{background:#fff;border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:50%;width:36px;height:36px;cursor:pointer;font-size:1.5rem;}
.imw-walker-controls{display:flex;align-items:center;gap:1em;}
.imw-walker-counter{font-size:.85rem;font-weight:500;color:var(--color-text-secondary);}
.imw-walker-play{background:none;border:none;color:var(--color-text-primary);cursor:pointer;}
.imw-pagination{flex-grow:1;display:flex;justify-content:flex-end;}
.imw-pagination .nav-links{display:flex;gap:0.5em;justify-content:flex-end;}
.imw-pagination .page-numbers{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--color-border);border-radius:50%;text-decoration:none;font-size:.85rem;font-weight:500;color:var(--color-primary);background-color:var(--color-surface);transition:all .2s ease;}
.imw-pagination .page-numbers:hover{background-color:var(--color-primary-light);border-color:var(--color-primary);}
.imw-pagination .page-numbers.current{background-color:var(--color-primary);color:var(--color-text-on-primary);border-color:var(--color-primary);}
.interactive-map-widget.is-stacked .imw-footer{justify-content:center;}
.interactive-map-widget.is-stacked .imw-pagination{width:100%;justify-content:center;}
.interactive-map-widget.is-stacked .imw-pagination .nav-links{justify-content:center;}
.imw-slide-meta{font-size:0.9rem;font-weight:500;letter-spacing:2px;text-transform:uppercase;color:rgba(255,255,255,0.8);margin-bottom:0.5em;}
.imw-slide-title{font-size:2.2rem;font-weight:700;line-height:1.2;margin:0;}
.imw-slide-footer{margin-top:1em;font-size:1rem;font-weight:500;display:flex;gap:1em;justify-content:center;align-items:center;}
.imw-slide-cost{background-color:var(--color-primary);padding:0.25em 0.75em;border-radius:15px;display:inline-block;}
.imw-slide-date{background-color:rgba(0,0,0,0.4);padding:0.25em 0.75em;border-radius:15px;display:inline-block;}
.imw-map-toggle-towns-btn{font-size:18px !important;line-height:26px !important;}
.imw-filter-count{position:absolute;top:-8px;right:-8px;background-color:var(--color-primary);color:white;border-radius:50%;width:18px;height:18px;font-size:11px;font-weight:bold;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 1px 3px rgba(0,0,0,0.2);transform:scale(0);transition:transform .2s ease-in-out;}
.imw-control-btn.active .imw-filter-count{transform:scale(1);}
/* --- ACCESSIBILITY FIX START --- */

/* Fix 1: Give the map a solid fallback background color */
.imw-map-container {
    background-color: #f7f9f9; /* Uses your theme's --color-background */
}

/* Fix 2: Stabilize the view-toggle button that uses a blur effect */
.imw-view-toggle {
    background-color: rgba(255, 255, 255, 0.8); /* Adds a solid fallback */
}

/* --- ACCESSIBILITY FIX END --- */



/* --- SECTION 63: VIDEO CARD & LIGHTBOX --- */
.video-thumbnail-container {
    position: relative;
    cursor: pointer;
}

.video-play-icon-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s ease, background-color 0.3s ease;
}

.video-thumbnail-container:hover .video-play-icon-overlay {
    opacity: 1;
    background-color: rgba(0, 0, 0, 0.5);
}

.video-play-icon-overlay .material-symbols-outlined {
    font-size: 80px;
    color: rgba(255, 255, 255, 0.9);
    text-shadow: 0 2px 8px rgba(0,0,0,0.5);
    transform: scale(0.8);
    transition: transform 0.3s ease;
}

.video-thumbnail-container:hover .video-play-icon-overlay .material-symbols-outlined {
    transform: scale(1);
}

/* Video Lightbox Modal */
#video-lightbox-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.85);
    display: none; /* Changed from flex to none */
    align-items: center;
    justify-content: center;
    z-index: 10002; /* Higher than other modals */
}

#video-lightbox-overlay.visible {
    display: flex;
}

#video-lightbox-content {
    position: relative;
    width: 90%;
    max-width: 1100px;
    aspect-ratio: 16 / 9;
    background-color: #000;
}

#video-lightbox-content iframe {
    width: 100%;
    height: 100%;
    border: none;
}

#video-lightbox-close-btn {
    position: absolute;
    top: -40px;
    right: 0;
    background: none;
    border: none;
    color: #fff;
    font-size: 2.5rem;
    cursor: pointer;
    line-height: 1;
}

/* --- SECTION 64: Mobile Responsiveness Fixes --- */
@media (max-width: 768px) {
    .boxed-container {
        padding: 0 15px; /* Reduce padding on smaller screens */
    }

    .trip-viewer-body,
    .town-intro-section,
    .two-column-modules,
    .responsive-widget-grid {
        display: block; /* Stack columns on mobile */
    }

    .interactive-map-widget,
    .trip-map-section {
        margin-left: 0px; /* Offset the reduced padding */
        margin-right: 0px;
        width: calc(100vw - 40px); /* Force full viewport width */
        border-radius: 0;
    }

    .interactive-map-widget .imw-body,
    .trip-map-container {
        border-radius: 0;
    }
	
	.imw-walker {
		justify-content: space-around;
	}	
}


/* --- SECTION 65: Compact Video Grid --- */
.video-grid-section .section-title {
    text-align: left;
    margin-bottom: 1em;
	max-width: 100%;
	overflow: hidden;
}

.video-grid-container {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5em; /* Space between video cards */
}

.compact-video-card {
    flex: 1 1 250px; 
    max-width: 350px;
}

.compact-video-card .card-image-top {
    aspect-ratio: 16 / 9; /* Enforce a widescreen aspect ratio */
    height: auto; /* Let the aspect ratio control the height */
}

.compact-video-card .card-content-bottom {
    padding: 0.75em; /* Reduce padding for a tighter look */
}

.compact-video-card .card-title {
    font-size: 0.9rem; /* Smaller font size for the title */
    margin-bottom: 0;
    line-height: 1.4;
}

/* --- SECTION 66: Polished Interactive Map Widget Filters --- */
.imw-filter-overlay-body ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 0.75em;
}

/* Hide the default checkbox */
.imw-filter-overlay-body li label input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

/* Style the label to act as the new checkbox container */
.imw-filter-overlay-body li label {
    display: block;
    position: relative;
    cursor: pointer;
    padding: 0.75em 0.75em 0.75em 2.5em; /* Make space for the pseudo-element */
    border: 1px solid var(--color-border);
    background-color: var(--color-background);
    border-radius: 6px;
    transition: background-color 0.2s, border-color 0.2s, color 0.2s;
    white-space: nowrap;      /* Keep text on a single line */
    overflow: hidden;         /* Hide overflowing text */
    text-overflow: ellipsis;  /* Add the '...' for long text */
}

/* Create the custom checkbox square */
.imw-filter-overlay-body li label::before {
    content: '';
    position: absolute;
    left: 0.75em;
    top: 50%;
    transform: translateY(-50%);
    width: 18px;
    height: 18px;
    border: 2px solid #b0bec5;
    border-radius: 4px;
    background-color: white;
    transition: all 0.2s ease-in-out;
}

/* Create the checkmark (hidden by default) */
.imw-filter-overlay-body li label::after {
    content: '';
    position: absolute;
    left: 1.2em;
    top: 50%;
    width: 5px;
    height: 10px;
    border: solid white;
    border-width: 0 3px 3px 0;
    transform-origin: center;
    transform: translateY(-50%) rotate(45deg) scale(0);
    transition: transform 0.2s ease-in-out;
}

/* Hover and Focus States */
.imw-filter-overlay-body li label:hover {
    border-color: var(--color-primary);
    background-color: var(--color-primary-light);
}

.imw-filter-overlay-body li label:has(input:focus-visible) {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Checked States */
.imw-filter-overlay-body li label:has(input:checked) {
    border-color: var(--color-primary);
    background-color: var(--color-primary-light);
    color: var(--color-text-darker);
    font-weight: 500;
}

.imw-filter-overlay-body li label:has(input:checked)::before {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
}

.imw-filter-overlay-body li label:has(input:checked)::after {
    transform: translateY(-50%) rotate(45deg) scale(1); /* Show the checkmark */
}



/* --- SECTION 67: Media Grid Widget --- */
.media-grid-widget {
    margin: 2em 0;
}

.media-grid-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr); /* 2 columns on desktop */
    gap: 10px;
}

.media-card {
    display: flex;
    gap: 1.5em;
    background-color: var(--color-surface);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-light);
    overflow: hidden;
}

.media-card-image {
    flex: 0 0 40%; /* Image takes 40% of the card width */
    background-color: #eee;
}

.media-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.media-card-content {
    padding: 1.5em;
    display: flex;
    flex-direction: column;
}

.media-card-meta {
    display: flex;
    align-items: center;
    gap: 1em;
    margin-bottom: 0.75em;
}

.media-card-badge {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
    padding: 0.25em 0.75em;
    font-size: 0.75rem;
    font-weight: 500;
    border-radius: 15px;
}

.media-card-date {
    font-size: 0.8rem;
    color: var(--color-text-secondary);
}

.media-card-title {
    margin: 0 0 0.5em 0;
    font-size: 1.3rem;
    line-height: 1.3;
}

.media-card-title a {
    text-decoration: none;
    color: inherit;
}

.media-card-title a:hover {
    color: var(--color-primary);
}

.media-card-excerpt {
    font-size: 12px;
    line-height: 14px;
    color: var(--color-text-secondary);
    margin: 0;
}

/* --- Responsive styles for mobile --- */
@media (max-width: 768px) {
    .media-grid-container {
        grid-template-columns: 1fr; /* 1 column on mobile */
        gap: 1.5em;
    }

    .media-card {
        flex-direction: column; /* Stack image and content vertically */
    }

    .media-card-image {
        flex-basis: auto;
        aspect-ratio: 16 / 9; /* Give the image a nice aspect ratio */
    }

    .media-card-content {
        padding: 1em 1.25em;
    }

    .media-card-title {
        font-size: 1.2rem;
    }

    .media-card-excerpt {
        font-size: 0.9rem;
        /* FIX: REMOVED white-space: nowrap; to allow text to wrap */
        overflow: hidden;
        text-overflow: ellipsis;
    }
}




/* --- SECTION 68: Review Widget and Cards (V4 - Final Layout Fix) --- */
.reviews-display-widget {
    margin: 3em 0;
    padding-top: 2em;
    border-top: 1px solid var(--color-border);
}

.reviews-grid-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2em;
}

/* Base horizontal card styles for both review-card and media-card */
.review-card,
.media-card {
    display: flex;
    gap: 1em;
    background-color: var(--color-surface);
    border-radius: 0;/*var(--border-radius);*/
    box-shadow: var(--shadow-light);
    overflow: hidden;
}

.review-card-image,
.media-card-image {
    flex: 0 0 40%;
    position: relative; /* For badge positioning */
    background-color: #eee;
}

.review-card-image img,
.media-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.review-card-content,
.media-card-content {
    padding: .75em;
	padding-left: 0px;
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

/* --- Centered Badge for Review Card --- */
.review-card .review-card-badge {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: rgba(0, 0, 0, 0.6);
    color: #fff;
    padding: 0.4em 0.9em;
    font-size: 0.9rem;
    font-weight: 500;
    border-radius: 6px;
    z-index: 2;
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
}

/* --- STAR RATING (V2 - Material Icons Fix) --- */
.star-rating {
    font-family: 'Material Symbols Outlined';
    font-size: 22px; /* Slightly larger for better visual weight */
    width: 115px; /* 5 * 22px + 4 * 1px spacing */
    height: 22px;
    position: relative;
    color: #ccc;
    margin-bottom: 0.75em;
    font-variation-settings: 'FILL' 1;
    white-space: nowrap;
}
.star-rating::before {
    /* Using the icon's direct code removes unwanted spaces */
    content: "\e838\e838\e838\e838\e838"; 
    position: absolute;
    top: 0;
    left: 0;
    letter-spacing: 1px; /* Add a clean 1px space between stars */
}
.star-rating-inner {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    color: #f2b01e;
    overflow: hidden;
    white-space: nowrap;
}
.star-rating-inner::before {
    content: "\e838\e838\e838\e838\e838";
    position: absolute;
    top: 0;
    left: 0;
    letter-spacing: 1px;
}

/* --- Specific Text Styles --- */
.review-card-title, .media-card-title { margin: 0 0 0.5em 0; font-size: 1.1rem; }
.review-card-title a, .media-card-title a { text-decoration: none; color: inherit; }
.review-card-title a:hover, .media-card-title a:hover { color: var(--color-primary); }

.review-card-excerpt {
    font-size: 0.95rem;
    line-height: 1.6;
    color: var(--color-text-secondary);
    margin: 0 0 1.5em 0;
    border-left: 3px solid var(--color-primary-light);
    padding-left: 1em;
    font-style: italic;
    flex-grow: 1;
}

.review-card-meta { margin-top: auto; font-size: 0.9rem; font-weight: 500; }
.reviewer-name { color: var(--color-text-primary); }
.review-date::before { content: '•'; margin: 0 0.5em; color: var(--color-text-secondary); }

/* --- Responsive Stacking --- */
@media (max-width: 960px) {
    .reviews-grid-container {
        grid-template-columns: 1fr;
    }
}
@media (max-width: 768px) {
    .review-card, .media-card {
        flex-direction: column;
    }
}



/* --- SECTION 69: Single Video & Review Page Layouts --- */

/* --- Single Video Page --- */
.single-video-layout .video-player-container {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9; /* Enforce widescreen */
    background-color: #000;
    border-radius: var(--border-radius);
    overflow: hidden;
    margin-bottom: 2em;
}

.single-video-layout .video-player-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.video-footer-meta {
    margin-top: 3em;
    padding-top: 2em;
    border-top: 1px solid var(--color-border);
}

.linked-item-card {
    display: flex;
    align-items: center;
    gap: 1.5em;
    text-decoration: none;
    color: inherit;
    background-color: var(--color-background);
    border: 1px solid var(--color-border);
    padding: 1em;
    border-radius: var(--border-radius);
    transition: box-shadow 0.2s ease;
}

.linked-item-card:hover {
    box-shadow: var(--shadow-medium);
}

.linked-item-image {
    flex: 0 0 120px;
    aspect-ratio: 1 / 1;
}
.linked-item-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 6px;
}

.linked-item-content h4 {
    margin: 0 0 0.25em 0;
    font-size: 1.2rem;
    color: var(--color-primary);
}
.linked-item-content p {
    margin: 0;
    font-size: 0.95rem;
}


/* --- Single Review Page --- */
.single-review-layout .review-info-hub .info-value.star-rating {
    color: #ccc; /* Set empty star color */
    font-size: 24px;
    width: 120px;
    height: 24px;
}


/* --- LAZY LOAD FIX: Correct positioning for img-based slideshows (v3) --- */

/* 1. Set the main containers as the positioning context */
.hero-slideshow-container, .scw-carousel {
    position: relative;
    overflow: hidden;
}

/* 2. Stack all individual slides on top of each other */
.hero-slide, .scw-slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* 3. Make the image fill its slide container */
.hero-slide-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}


/* --- SECTION 70: MEDIA & GALLERY STYLING (CONSOLIDATED) --- */
#video-lightbox-overlay { background-color: rgba(10, 10, 10, 0.9); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
#video-lightbox-content { background-color: #000; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; width: 100%; height: 100%; }
#video-lightbox-content.is-video { width: 90%; max-width: 1200px; height: auto; aspect-ratio: 16 / 9; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5); }
#video-lightbox-content.is-image { width: 90vw; height: 90vh; max-width: 90vw; max-height: 90vh; }
#video-lightbox-content iframe { width: 100%; height: 100%; display: block; border-radius: 8px; border: none; }
#video-lightbox-content .lightbox-image { position: absolute; height: 100%; width: 100%; max-width: 90vw; max-height: 90vh; object-fit: cover; opacity: 0; transition: opacity 0.5s ease-in-out; }
#video-lightbox-content .lightbox-image.visible { opacity: 1; }
#video-lightbox-content .lightbox-image.fit-contain { object-fit: contain; }
#video-lightbox-close-btn { display: none; }
#lightbox-controls { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: 10003; background-color: rgba(30, 30, 30, 0.8); border-radius: 25px; padding: 5px; display: none; gap: 5px; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4); border: 1px solid rgba(255, 255, 255, 0.1); }
.lightbox-btn { background: transparent; border: none; color: #fff; cursor: pointer; padding: 8px; border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: background-color 0.2s ease; }
.lightbox-btn:hover { background-color: rgba(255, 255, 255, 0.2); }
.lightbox-btn .material-symbols-outlined { font-size: 24px; }
#lightbox-main-close { position: fixed; top: 20px; right: 20px; z-index: 10003; background-color: rgba(30, 30, 30, 0.8); display: none; }
.image-gallery-section { margin-top: 3em; padding-top: 2em; border-top: 1px solid var(--color-border); }
.image-gallery-section .section-title, .video-grid-section .section-title { text-align: left; margin-bottom: 1em; }
.gallery-grid-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(75px, 1fr)); gap: 15px; }
.gallery-thumbnail { display: block; aspect-ratio: 1 / 1; overflow: hidden; border-radius: var(--border-radius); box-shadow: var(--shadow-light); transition: transform 0.2s ease, box-shadow 0.2s ease; }
.gallery-thumbnail:hover { transform: scale(1.05); box-shadow: var(--shadow-medium); }
.gallery-thumbnail img { width: 100%; height: 100%; object-fit: cover; }
#video-lightbox-content .map-loader .spinner { border-top-color: #fff; }

/* --- SECTION 71: HOMEPAGE SPACING OVERRIDES --- */

/* Sets a bottom margin on the three-widget grid to create space below it */
.home .responsive-widget-grid {
    margin-top: 0;
    margin-bottom: 2.5em; /* This now controls the gap */
}

/* Removes the top padding from the main content area, as it's no longer needed */
.home .homepage-body-container {
    padding-top: 0;
}

/* Removes the top margin on the main content column itself */
.home .main-content-column {
    margin-top: 0;
}

/* --- SECTION 72: SIDEBAR WIDGET CATEGORY FILTER --- */

.slw-filter-container {
    position: relative; /* Context for the dropdown */
    display: flex;
    align-items: center;
    gap: 0.5em;
    margin-bottom: 1em;
}

.slw-filter-input {
    flex-grow: 1; /* Make the input field take up available space */
}

.slw-category-filter-toggle {
    flex-shrink: 0;
    background-color: var(--color-background);
    border: 1px solid var(--color-border);
    color: var(--color-text-secondary);
    padding: 0.4em;
    border-radius: 6px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
}

.slw-category-filter-toggle:hover,
.slw-category-filter-toggle.active {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
    border-color: var(--color-primary);
}

.slw-category-dropdown {
    position: absolute;
    top: calc(100% + 5px);
    right: 0;
    z-index: 10;
    background-color: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-medium);
    min-width: 200px;
    max-height: 300px;
    overflow-y: auto;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
}

.slw-category-dropdown.is-visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.slw-category-item {
    display: block;
    width: 100%;
    text-align: left;
    padding: 0.75em 1em;
    background: none;
    border: none;
    border-bottom: 1px solid var(--color-background);
    cursor: pointer;
    font-size: 0.9rem;
}

.slw-category-item:last-child {
    border-bottom: none;
}

.slw-category-item:hover {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}


/* --- SECTION 73: FOOTER WEATHER WIDGET (REVISED) --- */
.footer-weather-widget .widget-title {
    margin-bottom: 1em;
}

.footer-weather-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}

.weather-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px;
    background-color: var(--color-background);
    border-radius: var(--border-radius);
    text-decoration: none;
    color: inherit;
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
    border: 1px solid var(--color-border);
    overflow: hidden; /* Prevent content from spilling out */
}

.weather-card:hover {
    background-color: var(--color-surface);
    box-shadow: var(--shadow-light);
}

.weather-card-icon .material-symbols-outlined {
    font-size: 36px;
    color: var(--color-primary);
    flex-shrink: 0; /* Prevent the icon from shrinking */
}

.weather-card-details {
    min-width: 0; /* **THE KEY FIX**: Allows this flex item to shrink */
    display: flex;
    flex-direction: column;
}

.weather-card-town {
    margin: 0 0 0.25em 0;
    font-size: 0.9rem;
    font-weight: 500;
    white-space: nowrap;      /* Keep text on a single line */
    overflow: hidden;         /* Hide overflowing text */
    text-overflow: ellipsis;  /* Add the '...' for long text */
}

.weather-card-temp {
    font-size: 0.85rem;
    color: var(--color-text-secondary);
}

.weather-card-placeholder {
    height: 70px;
    background-color: var(--color-background);
    border-radius: var(--border-radius);
    border: 1px solid var(--color-border);
}

/* Responsive stacking for mobile */
@media (max-width: 600px) {
    .footer-weather-grid {
        grid-template-columns: 1fr;
    }
}


/* --- SECTION 74: FOOTER WEATHER WIDGET ICONS (FINAL) --- */

/* A neutral fallback color */
.weather-card-icon .material-symbols-outlined {
    color: var(--color-text-secondary); 
}

/* Sunny/Clear Orange */
.footer-weather-widget .weather-icon--clear_day,
.footer-weather-widget .weather-icon--clear_night {
    color: #f39c12; 
}

/* --- FINAL: Gradient from bottom-right (grey) to top-left (yellow) --- */
.footer-weather-widget .weather-icon--partly_cloudy_day,
.footer-weather-widget .weather-icon--partly_cloudy_night {
    /* A diagonal gradient from bottom-right to top-left */
    background: linear-gradient(45deg, #95a5a6 45%, #f5b041 60%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    text-fill-color: transparent;
}

/* Neutral color for fully Cloudy/Overcast */
.footer-weather-widget .weather-icon--cloudy,
.footer-weather-widget .weather-icon--overcast {
    color: #95a5a6; 
}

/* Rainy Blue */
.footer-weather-widget .weather-icon--rain,
.footer-weather-widget .weather-icon--showers_day,
.footer-weather-widget .weather-icon--showers_night,
.footer-weather-widget .weather-icon--thunderstorm {
    color: #3498DB; 
}

/* Lighter Grey for Fog */
.footer-weather-widget .weather-icon--foggy {
    color: #bdc3c7; 
}

/* Windy Green */
.footer-weather-widget .weather-icon--wind {
    color: #a5d6a7; 
}


/* --- SECTION 75: CONTEXTUAL MAP WIDGET --- */
.imw-context-toggle {
    display: flex;
    background-color: var(--color-background);
    border: 1px solid var(--color-border);
    border-radius: 6px;
    padding: 3px;
    margin-right: auto; /* Pushes other items to the right */
	margin-bottom: 5px;
}

.imw-context-btn {
    padding: 6px 16px;
    border: none;
    background-color: transparent;
    border-radius: 4px;
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    color: var(--color-text-secondary);
    transition: all 0.2s ease-in-out;
}

.imw-context-btn.active {
    background-color: var(--color-primary);
    color: #fff;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}



/* --- SECTION 76: DESTINATION & TOWN PAGE LAYOUTS (CONSOLIDATED) --- */
.single-destination-layout .destination-magazine-layout, .town-intro-section{display:grid;grid-template-columns:2fr 1fr;gap:2.5em;margin-top:3em;align-items:flex-start;}
.destination-main-content .town-group-section{margin-bottom:3em;}
.town-group-title{font-size:1.8rem;color:var(--color-primary);margin:0 0 1.5em 0;padding-bottom:0.75em;border-bottom:2px solid var(--color-primary-light);}
.magazine-item-list{display:flex;flex-direction:column;gap:1.5em;}
.magazine-list-item-link{text-decoration:none;color:inherit;display:block;}
.magazine-list-item{display:flex;align-items:center;gap:1.5em;background-color:var(--color-surface);border-radius:var(--border-radius);padding:1em;box-shadow:var(--shadow-light);transition:transform .2s ease,box-shadow .2s ease;}
.magazine-list-item:hover{transform:translateY(-4px);box-shadow:var(--shadow-medium);}
.magazine-item-image{width:100px;height:100px;flex-shrink:0;}
.magazine-item-image .placeholder-image,.magazine-item-image img{width:100%;height:100%;object-fit:cover;border-radius:6px;background-color:#eee;}
.magazine-item-content{min-width:0;}
.magazine-item-title{margin:0 0 .35em 0;font-size:1.2rem;font-weight:500;}
.magazine-item-meta{font-size:.9rem;color:var(--color-text-secondary);}
.magazine-item-meta span:not(:last-child)::after{content:'•';margin:0 .5em;opacity:.5;}
.destination-sidebar,.town-intro-sidebar{position:sticky;top:100px;display:flex;flex-direction:column;gap:2.5em;}

/* --- SECTION 77: DESTINATION PAGE MAGAZINE LAYOUT (V2 - IMAGE SIZING FIX) --- */
.destination-main-content .town-group-section{margin-bottom:3em;}
.destination-main-content .town-group-title{font-size:2rem;color:var(--color-primary);margin:0 0 1.5em 0;padding-bottom:.75em;border-bottom:2px solid var(--color-primary-light);}
.destination-item-list{display:grid;grid-template-columns:1fr;gap:2.5em;}
.destination-card{display:grid;grid-template-columns:1fr 1fr;gap:0;align-items:center;background-color:var(--color-surface);border-radius:var(--border-radius);box-shadow:var(--shadow-light);overflow:hidden;}
.destination-card:nth-child(even) .destination-card-image{order:2;}
.destination-card-image{position:relative;width:100%;height:400px;}
.destination-card-image img{width:100%;height:100%;object-fit:cover;}
.destination-card-content{padding:2em;display:flex;flex-direction:column;justify-content:center;}
.destination-card-title{margin:0 0 .5em 0;font-size:1.8rem;line-height:1.2;}
.destination-card-title a{color:inherit;text-decoration:none;}
.destination-card-title a:hover{color:var(--color-primary);}
.destination-card-meta{font-size:.9rem;color:var(--color-text-secondary);font-weight:500;margin-bottom:1em;}
.destination-card-meta span:not(:last-child)::after{content:'•';margin:0 .5em;opacity:.5;}
.destination-card-excerpt{font-size:1rem;line-height:1.7;margin-bottom:1.5em;flex-grow:1;}
.destination-card-button{align-self:flex-start;}

/* --- SECTION 78: WIDGET LINKING & SLIDESHOW TEXT (FIX) --- */
.imw-sidebar-content .slw-card-link{cursor:pointer;}
.imw-sidebar-content .slw-card-image-link,.imw-sidebar-content .slw-card-title a{text-decoration:none;color:inherit;}
.imw-sidebar-content .slw-card-title a:hover{color:var(--color-primary);text-decoration:underline;}
.imw-slide{display:flex;align-items:center;justify-content:flex-start;text-align:left;}
.imw-slide-content{position:relative;z-index:2;padding:2em;max-width:500px;color:#fff;text-shadow:1px 1px 5px rgba(0,0,0,.5);}
.imw-slide-meta{font-size:.9rem;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:rgba(255,255,255,.8);margin-bottom:.5em;}
.imw-slide-title{font-size:2rem;font-weight:700;line-height:1.2;margin:0 0 1em 0;}
.imw-slide-button{font-size:1rem;padding:.8em 1.5em;}

/* --- SECTION 79: SLIDESHOW ALIGNMENT & HERO NAVIGATION --- */
.imw-slide{justify-content:center;text-align:center;}
.imw-slide-content{max-width:600px;}
.imw-slide-button{margin-top:1em;}
.hero-slideshow-container .hero-nav-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;background-color:rgba(0,0,0,.4);color:#fff;border:none;border-radius:50%;width:44px;height:44px;font-size:1.8rem;cursor:pointer;transition:background-color .2s;display:flex;align-items:center;justify-content:center;}
.hero-slideshow-container .hero-nav-arrow:hover{background-color:rgba(0,0,0,.7);}
.hero-slideshow-container .hero-nav-arrow.prev{left:15px;}
.hero-slideshow-container .hero-nav-arrow.next{right:15px;}

/* --- SECTION 80: HERO SLIDESHOW FINAL POLISH --- */
.slide-link-more{color:#fff;text-decoration:underline;font-weight:500;font-size:1rem;background-color:transparent;border:none;padding:0;transition:color .2s ease;}
.slide-link-more:hover{color:var(--color-primary-light);}
.hero-slideshow-container .hero-nav-arrow .material-symbols-outlined{font-size:2.2rem;}

/* --- RESPONSIVE STYLES (CONSOLIDATED) --- */
@media (max-width: 960px){.town-intro-section,.single-destination-layout .destination-magazine-layout{grid-template-columns:1fr;gap:2.5em;}.town-intro-main .entry-content{padding-right:0;border-right:none;padding-bottom:2em;border-bottom:1px solid var(--color-border);}.destination-card,.destination-card:nth-child(even){grid-template-columns:1fr;}.destination-card:nth-child(even) .destination-card-image{order:0;}.destination-card-image{height:300px;}.destination-card-content{padding:1.5em;}.destination-card-title{font-size:1.5rem;}}
@media (max-width: 768px){.single-destination-layout .destination-magazine-layout{display:grid;grid-template-columns:1fr;gap:2.5em;margin-top:1em;align-items:flex-start;}.imw-slide-content{padding:1.5em;}.imw-slide-title{font-size:1.6rem;}}

/* --- SECTION 81: INTERACTIVE MAP SLIDESHOW BUTTON --- */
.imw-slide .imw-slide-button{background:0 0;border:none;padding:0;color:#fff;font-weight:500;font-size:1rem;text-decoration:underline;text-shadow:1px 1px 3px rgba(0,0,0,.5);display:inline-block;margin-top:1em;transition:color .2s ease}
.imw-slide .imw-slide-button:hover{color:orange;text-decoration:none;background:0 0}


/* --- SECTION 82: FINAL FOOTER STYLING --- */
.footer-main-container { display: grid; grid-template-columns: 1fr 2fr 1.5fr; gap: 2.5em; padding-top: 2em; padding-bottom: 3em; align-items: flex-start; }
.footer-column { display: flex; flex-direction: column; }
.footer-column--branding { align-items: center; gap: 1em; text-align: center; }
.footer-logo img { max-height: 120px; width: auto; margin-bottom: 0.5em; }
.footer-social-title { font-size: 0.9rem; font-weight: 500; color: var(--color-text-secondary); margin: 0; padding-bottom: 0.5em; border-bottom: 1px solid var(--color-border); width: 100%; }
.social-media-strip { display: flex; justify-content: center; flex-wrap: wrap; gap: 0.8em; margin-top: 1em; }
.social-icon a { color: var(--color-text-primary); transition: color 0.2s ease; }
.social-icon a:hover { color: var(--color-primary); }
.social-icon .material-symbols-outlined { font-size: 24px; font-variation-settings: 'FILL' 1; }
.footer-links-group { display: grid; grid-template-columns: 1fr 1fr; gap: 2em; width: 100%; }
.footer-column > h3, .footer-section > h3, .weather-header > h3, .footer-social-title { margin: 0 0 1em 0; padding-bottom: 0.5em; border-bottom: 1px solid var(--color-border); font-size: 1.1rem; color: var(--color-text-darker); }
ul.footer-link-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.8em; }
ul.footer-link-list li a { display: flex; align-items: center; gap: 0.5em; color: var(--color-text-secondary); text-decoration: none; font-size: 0.95rem; }
ul.footer-link-list li a:hover { color: var(--color-primary); }
ul.footer-link-list li a .material-symbols-outlined { font-size: 1.2rem; }
.sanparks-section { margin-top: 2em; padding-top: 1em; border-top: 1px solid var(--color-border); text-align: center; }
.sanparks-section a { display: inline-flex; align-items: center; gap: 1em; text-decoration: none; color: var(--color-text-primary); font-weight: 500; }
.sanparks-section a:hover { color: var(--color-primary); }
.sanparks-section img { height: 80px; width: auto; }
.sanparks-divider { border: none; height: 1px; background-color: var(--color-border); margin: 1em 0; }
.new-window-info { font-size: 0.8rem; color: var(--color-text-secondary); display: flex; align-items: center; justify-content: center; gap: 0.3em; }
.new-window-info .material-symbols-outlined { font-size: 1rem; }
.weather-header { display: flex; justify-content: space-between; align-items: center; }
#today-date-div { font-size: 0.9rem; font-weight: 500; color: var(--color-text-secondary); padding: 10px; }

/* --- SECTION 83: FOOTER WEATHER WIDGET STYLING (FINAL) --- */
.footer-weather-widget { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1em; }
.footer-weather-widget .weather-card { display: flex; flex-direction: column; text-decoration: none; color: inherit; text-align: center; gap: 0.5em; background-color: #e7e7e7; border: 1px solid #ddd; border-radius: var(--border-radius); padding: 1em; box-shadow: var(--shadow-light); transition: background-color 0.2s ease, box-shadow 0.2s ease; }
.footer-weather-widget .weather-card:hover { background-color: #f1f1f1; box-shadow: var(--shadow-medium); }
.footer-weather-widget .weather-card-town { font-size: 1rem; font-weight: bold; color: var(--color-text-darker); transition: color 0.2s ease; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; width: 100%; }
.footer-weather-widget .weather-card-icon .material-symbols-outlined { font-size: 48px; }
.footer-weather-widget .min-max-container { font-size: 1rem; color: var(--color-text-darker); font-weight: 500; }
.footer-weather-widget .weather-icon--clear_day, .footer-weather-widget .weather-icon--clear_night { color: #f39c12; }
.footer-weather-widget .weather-icon--partly_cloudy_day, .footer-weather-widget .weather-icon--partly_cloudy_night { background: linear-gradient(45deg, #95a5a6 45%, #f5b041 60%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; text-fill-color: transparent; }
.footer-weather-widget .weather-icon--cloudy, .footer-weather-widget .weather-icon--overcast { color: #95a5a6; }
.footer-weather-widget .weather-icon--rain, .footer-weather-widget .weather-icon--showers_day, .footer-weather-widget .weather-icon--showers_night, .footer-weather-widget .weather-icon--thunderstorm { color: #3498DB; }
.footer-weather-widget .weather-icon--foggy { color: #bdc3c7; }
.footer-weather-widget .weather-icon--wind { color: #a5d6a7; }

@media (max-width: 1100px) { .footer-main-container { grid-template-columns: 1fr 2fr; } .footer-column--branding { grid-column: 1 / -1; } }
@media (max-width: 768px) { .footer-main-container { grid-template-columns: 1fr; text-align: center; } .footer-links-group { grid-template-columns: 1fr; } .sanparks-section a, ul.footer-link-list li a, .weather-header { justify-content: center; } }


/* --- SECTION 84: HIDDEN GALLERY LINKS --- */
.hidden-gallery-link {
    display: none;
    visibility: hidden;
    width: 0;
    height: 0;
    opacity: 0;
    position: absolute;
    z-index: -1;
}

/* --- SECTION 85: GROUPED SIDEBAR WIDGET SPACING --- */
.sidebar-widget-grouped, .sidebar-list-widget{
    margin-bottom: 1em; /* Reduces the bottom margin for tighter grouping */
}
.destination-sidebar {gap: 15px;}


/* --- SECTION 86: STANDARDIZED SIDEBAR & AD PLACEHOLDERS --- */

/* New layout class for property/offering pages */
.single-property-layout .destination-magazine-layout,
.single-offering-layout .destination-magazine-layout {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 2.5em;
    align-items: flex-start;
}

/* The sidebar container itself */
NOTaside.standard-sidebar {
    display: grid;
    gap: 2.5em;
    grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
	margin-top: 30px;
}


/* Ad placeholder styling */
.sidebar-ad-placeholder {
    width: 100%;
    aspect-ratio: 1 / 1; /* Creates a square block */
    max-height: 250px; /* Prevents it from becoming too large */
    background-color: #e9ecef;
    border: 1px dashed #ced4da;
    border-radius: var(--border-radius);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    color: #6c757d;
    text-align: center;
}

.sidebar-ad-placeholder::before {
    content: "Ad Placeholder";
}

/* Responsive adjustments for the new layouts */
@media (max-width: 960px) {
    .single-property-layout .destination-magazine-layout,
    .single-offering-layout .destination-magazine-layout {
        grid-template-columns: 1fr; /* Stack to a single column */
    }

    .standard-sidebar {
        position: relative;
        top: auto;
        margin-top: 2.5em;
        padding-top: 2.5em;
        border-top: 1px solid var(--border-border);
    }
}


/* kle-custom-theme/style.css */

/* --- SECTION 87: PROPERTY PAGE HERO SLIDESHOW --- */

.single-property .site-main {
    padding-top: 0; /* Remove default top padding */
}

.property-hero-slideshow {
    height: 60vh; /* Match the height of the town page slideshow */
    min-height: 400px;
    background-color: #333; /* Dark fallback background */
}

/* Ensure the slideshow container and slides fill the new section */
.property-hero-slideshow .hero-slideshow-container,
.property-hero-slideshow .hero-slide {
    border-radius: 0;
}

/* Use H1 for the title on this page for SEO */
.property-hero-slideshow .slide-title {
    font-size: 3rem;
}

/* Adjust top margin for the content area below the new hero */
.single-property .container {
    padding-top: 2em;
}

@media (max-width: 768px) {
    .property-hero-slideshow .slide-title {
        font-size: 2.2rem;
    }
}


/* --- SECTION 88: SIDEBAR WIDGET CATEGORY FILTER (ACTIVE STATE) --- */

.slw-category-item.active {
    background-color: var(--color-primary);
    color: #fff;
    font-weight: 500;
}

.slw-category-item.active:hover {
    background-color: #005a4f; /* A slightly darker shade for hover on active */
    color: #fff;
}



/* Property page grid */
#wrap-the-content-and-map {
    /* 2fr 1fr layout for larger screens (default) */
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 20px;
}

#property-sidebar-custom .standard-sidebar {position: sticky; top: 100px;}
#property-sidebar-custom {min-width: 0;}

@media (max-width: 900px) {
    #wrap-the-content-and-map {
        /* 1fr layout (stacked) for screens up to 767px wide */
        grid-template-columns: 1fr;
    }
	#property-sidebar-custom .standard-sidebar {position: relative; top: auto;}
}



/* --- SECTION 89: CONTEXTUAL PARENT/TOWN SIDEBAR CARD --- */
.context-card-link {
    text-decoration: none;
    color: inherit;
    display: block;
}

.context-card {
    background-color: var(--color-surface);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-light);
    overflow: hidden;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.context-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-medium);
}

.context-card-image {
    width: 100%;
    height: 180px; /* Slightly less than 200px for better balance */
    background-color: #eee;
}

.context-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.context-card-content {
    padding: 1em;
}

.context-card-title {
    margin: 0 0 0.5em 0;
    font-size: 1.1rem;
    font-weight: 500;
    color: var(--color-text-primary);
}

.context-card-excerpt {
    font-size: 0.9rem;
    line-height: 1.6;
    color: var(--color-text-secondary);
    /* Clamp the excerpt to 2 lines */
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}


/* --- SECTION 90: SIDEBAR WIDGET TITLE COLOR --- */
.sidebar-widget-grouped .widget-title,
.sidebar-list-widget .widget-title {
    color: var(--color-primary);
}

/* --- SECTION 91: UTILITIES --- */
body.lightbox-active { overflow: hidden; }
.sidebar-ad-placeholder { display: none!important;}


/* --- SECTION 92: SINGLE OFFERING META DISPLAY (V2) --- */
.offering-meta-display {
    display: flex;
    flex-wrap: wrap;
    gap: 1em;
    align-items: center;
    background-color: var(--color-background);
    border: 1px solid var(--color-border);
    padding: 1em 1.5em;
    border-radius: var(--border-radius);
    margin: 1em 0 2em 0;
}

.offering-meta-item {
    display: flex;
    align-items: center;
    gap: 0.75em;
}

/* Style for the new Cost Badge */
.cost-badge {
    background-color: var(--color-primary);
    color: var(--color-text-on-primary);
    padding: 0.5em 1em;
    border-radius: 20px;
    font-weight: 500;
}
.cost-badge .cost-value {
    font-size: 1.1rem;
}
.cost-badge .cost-terms {
    font-size: 0.75rem;
    opacity: 0.8;
    margin-left: 0.75em;
    border-left: 1px solid rgba(255,255,255,0.4);
    padding-left: 0.75em;
}

/* Style for the Event Details */
.event-details {
    font-size: 0.9rem;
    color: var(--color-text-secondary);
}
.event-details .material-symbols-outlined {
    font-size: 1.8rem;
    color: var(--color-primary);
}
.event-details .date-time-info {
    line-height: 1.5;
}


/* --- SECTION 93: HERO SLIDESHOW FULLSCREEN --- */
.hero-fullscreen-toggle {
    position: absolute;
    top: 15px;
    right: 15px;
    z-index: 3;
    background-color: rgba(0, 0, 0, 0.4);
    color: #fff;
    border: none;
    border-radius: 50%;
    width: 44px;
    height: 44px;
    cursor: pointer;
    transition: background-color 0.2s;
    display: flex;
    align-items: center;
    justify-content: center;
}

.hero-fullscreen-toggle:hover {
    background-color: rgba(0, 0, 0, 0.7);
}

.hero-fullscreen-toggle .material-symbols-outlined {
    font-size: 1.2rem;
}

/* Styles for when the slideshow IS in fullscreen mode */
.hero-slideshow-container.is-fullscreen .slide-content {
    max-width: 80%;
    text-align: center;
}

.hero-slideshow-container.is-fullscreen .slide-title {
    font-size: 3rem;
}

.hero-slideshow-container.is-fullscreen .slide-excerpt {
    font-size: 1.25rem;
    -webkit-line-clamp: 3; /* Allow more text */
}


/* --- SECTION 94: AMENITIES GRID (V3 - WRAPPING FIX) --- */
.entry-content .amenities-section {
    margin: 2.5em 0;
    padding-top: 2em;
    border-top: 1px solid var(--color-border);
}

.entry-content .amenities-title {
    font-size: 1.8rem;
    color: var(--color-primary);
    margin: 0 0 1.5em 0;
}

/* This is the main container that allows items to wrap */
.entry-content .amenities-list {
    list-style: none !important;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap; /* This is the key property that allows wrapping */
    gap: 1em;
}

/* This styles each individual amenity item */
.entry-content .amenity-item {
    display: flex;
    align-items: center;
    gap: 0.75em;
    background-color: var(--color-background);
    border: 1px solid var(--color-border);
    padding: 0.75em 1.25em;
    border-radius: var(--border-radius);
    /* Let the item grow, but also allow it to shrink and wrap */
    flex: 1 1 300px;
}

.entry-content .amenity-icon {
    color: #27ae60;
    font-size: 1.8rem;
    flex-shrink: 0;
}

.entry-content .amenity-label {
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--color-text-primary);
}


/* --- SECTION 95: GLOBAL HEADER SCROLL --- */

/* Add a transition for the slide-up/slide-down effect */
.advanced-search-bar {
    transition: transform 0.3s ease-in-out;
}

/* This class, toggled by JavaScript, slides the header up and out of view */
.advanced-search-bar.is-hidden {
    transform: translateY(-100%);
}

/* --- SECTION 96: GLOBAL HEADER & BACK-TO-TOP --- */

/* This provides the smooth slide animation for the search bar */
.advanced-search-bar {
    transition: transform 0.3s ease-in-out;
}

/* This class, toggled by JavaScript, slides the header up and out of view */
.advanced-search-bar.is-hidden {
    transform: translateY(-100%);
}

/* --- Back to Top Button Styles --- */
.back-to-top-btn {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 1000;
    width: 50px;
    height: 50px;
    background-color: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    text-decoration: none;
    
    /* Animation properties for the button itself */
    opacity: 0;
    visibility: hidden;
    transform: translateY(20px);
    transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, visibility 0s 0.3s;
}

.back-to-top-btn:hover {
    background-color: #004d40; /* A darker shade of your primary color */
}

/* This class makes the button visible in sync with the header */
.back-to-top-btn:not(.is-hidden) {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, visibility 0s 0s;
}

.back-to-top-btn .material-symbols-outlined {
    font-size: 28px;
}

/* --- SECTION X: Sitemap & Footer Link Styling --- */
.site-info-container {
    background-color: #e7e7e7;
    padding: 1em 0;
    text-align: center;
    font-size: 0.9rem;
}
.site-info-content { 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    gap: 0.5em; 
}
.site-info-separator { 
    color: var(--color-text-secondary); 
    margin: 0 0.5em; 
}
.sitemap-link { 
    color: var(--color-primary); 
    text-decoration: none; 
    font-weight: 500;
}
.sitemap-link:hover { 
    text-decoration: underline; 
}

/* Styles for the new sitemap page template */
.sitemap-list {
    /* Use list-style: none for the parent to allow for better spacing and control of children */
    list-style: none; 
    padding-left: 0;
    margin-bottom: 2em;
}

/* TOUCH TARGET FIX & SPACING for ALL list items in the sitemap */
.sitemap-list li {
    /* Increased vertical margin for spacing */
    margin-bottom: 10px; 
    /* Increased padding to enlarge the touchable area without changing text size */
    padding: 8px 0;      
    list-style: disc;    
    margin-left: 20px; /* Re-apply left margin for disc alignment */
}
.sitemap-list li strong {
    font-weight: 700;
}

/* STYLING FOR NESTED LISTS */
.nested-sitemap-list {
    list-style: disc !important; 
    padding-left: 20px;
    margin-top: 5px;
    margin-bottom: 10px !important;
}
.nested-sitemap-list li {
    margin-bottom: 3px; 
    padding: 3px 0;     
    font-weight: normal; 
    list-style: disc;
    margin-left: 0;
}