:root{--color-bg: #f8fafc;--color-surface: #ffffff;--color-text: #0f172a;--color-text-muted: #64748b;--color-primary: #0ea5e9;--color-primary-dark: #0284c7;--color-border: #e2e8f0;--color-badge-year: #16a34a;--color-badge-summer: #ea580c;--color-badge-winter: #94a3b8;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .08);--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*,*:before,*:after{box-sizing:border-box}html{font-family:var(--font);color:var(--color-text);background:var(--color-bg);line-height:1.5;-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto}button,select,input[type=checkbox]{font:inherit}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 1rem}.site-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.75rem 0;position:sticky;top:0;z-index:100}.site-header .container{display:flex;align-items:center;justify-content:space-between;gap:1rem}.site-logo{display:flex;flex-direction:column;text-decoration:none;color:inherit}.site-logo:hover{text-decoration:none}.site-logo h1{margin:0;font-size:1.25rem;font-weight:700;color:var(--color-primary)}.site-logo span{font-size:.8rem;color:var(--color-text-muted);line-height:1.3}.home-intro{padding:1.25rem 0 .25rem}.home-intro h2{margin:0 0 .4rem;font-size:1.15rem;font-weight:700}.home-intro p{margin:0;max-width:42rem;color:var(--color-text-muted);font-size:.95rem;line-height:1.5}.lang-switch{display:flex;gap:.25rem;background:var(--color-bg);border-radius:var(--radius);padding:.2rem}.lang-switch a{padding:.3rem .6rem;border-radius:6px;font-size:.85rem;font-weight:600;color:var(--color-text-muted);text-decoration:none}.lang-switch a.active,.lang-switch a:hover{background:var(--color-surface);color:var(--color-primary);text-decoration:none}.main-layout{display:grid;grid-template-columns:1fr;gap:1rem;padding-top:1rem;padding-bottom:2rem}.list-panel{max-height:none}.map-season-notice{margin:0 0 .75rem;padding:.75rem 1rem;background:#eff6ff;border:1px solid #bfdbfe;border-left:3px solid var(--color-primary);border-radius:var(--radius);color:#1e3a5f}.map-season-notice p{margin:0;font-size:.875rem;line-height:1.45}.filters{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem;text-align:center}.filters h2{margin:0 0 .75rem;font-size:1rem}.filters-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}.filter-group{width:140px;text-align:left}.filters-checkboxes{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem 1.5rem;margin-top:.75rem}.filter-group label{display:block;font-size:.75rem;font-weight:600;color:var(--color-text-muted);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.03em}.filter-group select{width:100%;padding:.4rem .5rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg)}.filter-checkbox{display:flex;align-items:center;gap:.5rem}.filter-checkbox label{font-size:.875rem;text-transform:none;letter-spacing:normal;color:var(--color-text)}.filters-actions{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--color-border)}.filters-count{font-size:.875rem;color:var(--color-text-muted)}.btn-reset{padding:.35rem .75rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface);cursor:pointer;font-size:.85rem}.btn-reset:hover{background:var(--color-bg)}.pool-list{display:flex;flex-direction:column;gap:.75rem}.pool-card{background:var(--color-surface);border:1px solid var(--color-border);border-left-width:3px;border-radius:var(--radius);padding:1rem;transition:border-color .15s,box-shadow .15s;cursor:pointer}.pool-card.status-open{border-left-color:#16a34a}.pool-card.status-summer-closed{border-left-color:#ca8a04}.pool-card.status-renovation-closed{border-left-color:#dc2626}.pool-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}.pool-card-header h3{margin:0;flex:1;font-size:1rem}.pool-card-badges{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem;flex-shrink:0}.pool-card.pool-card-draft{border-style:dashed;border-left-style:solid}.operational-status{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.7rem;font-weight:600;white-space:nowrap;flex-shrink:0}.operational-status.status-open{background:#dcfce7;color:#16a34a}.operational-status.status-summer-closed{background:#fef9c3;color:#a16207}.operational-status.status-renovation-closed{background:#fee2e2;color:#dc2626}.pool-card:hover,.pool-card.highlighted{box-shadow:var(--shadow)}.pool-card.status-open:hover,.pool-card.status-open.highlighted{border-color:#16a34a}.pool-card.status-summer-closed:hover,.pool-card.status-summer-closed.highlighted{border-color:#ca8a04}.pool-card.status-renovation-closed:hover,.pool-card.status-renovation-closed.highlighted{border-color:#dc2626}.pool-card a.card-link{color:inherit;text-decoration:none;display:block}.pool-card a.card-link:hover{text-decoration:none}.pool-card .city{font-size:.85rem;color:var(--color-text-muted);margin-bottom:.5rem}.pool-card .specs{display:flex;flex-wrap:wrap;gap:.5rem 1rem;font-size:.85rem;color:var(--color-text);margin-bottom:.5rem}.pool-card .specs span{display:inline-flex;align-items:center;gap:.25rem}.pool-card-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.pool-card .price{font-size:.85rem;font-weight:600;color:var(--color-primary-dark)}.badge-group{display:flex;flex-wrap:wrap;gap:.4rem}.season-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.season-badge.year_round{background:#dcfce7;color:var(--color-badge-year)}.season-badge.summer_only{background:#ffedd5;color:var(--color-badge-summer)}.season-badge.winter_only{background:#f1f5f9;color:var(--color-badge-winter)}.renovation-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap;background:#fee2e2;color:#dc2626}.unverified-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.7rem;font-weight:600;white-space:nowrap;background:#f3e8ff;color:#7c3aed;border:1px dashed #a78bfa}.map-popup-link .unverified-badge{margin-bottom:.35rem}.pool-card.under-renovation,.renovation-section{border-color:#fecaca;background:#fffbfb}.map-container{height:60vh;min-height:400px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border);position:relative}@media(min-width:900px){.map-container{height:60vh;min-height:400px}}.map-near-me{position:absolute;top:.75rem;right:.75rem;z-index:1000;padding:.4rem .75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;font-size:.85rem;cursor:pointer;box-shadow:var(--shadow)}.map-near-me:hover{background:var(--color-bg)}.map-status-legend{position:absolute;bottom:.75rem;left:.75rem;z-index:1000;display:flex;flex-wrap:wrap;gap:.5rem .75rem;padding:.4rem .6rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;font-size:.75rem;box-shadow:var(--shadow)}.map-status-legend-item{display:inline-flex;align-items:center;gap:.35rem}.map-status-dot{width:10px;height:10px;border-radius:50%;border:1px solid white;box-shadow:0 0 0 1px #0000001a}.pool-detail{max-width:720px;margin:0 auto;padding-top:.75rem;padding-bottom:2rem}.pool-detail-header{padding:.75rem 1rem 1.25rem;margin-bottom:1rem}.pool-detail-header h1{margin:0 0 .5rem;font-size:1.5rem;line-height:1.3}.pool-detail-header .city{margin:0;color:var(--color-text-muted);line-height:1.5;font-size:.95rem}.pool-detail-header .badge-group{margin-top:.875rem}.pool-detail-header .detail-actions{margin-top:.875rem;gap:.5rem}.pool-detail-header .detail-actions .btn{padding:.35rem .7rem;font-size:.8rem;font-weight:500;border-radius:6px}.info-updated,.updated-at{margin:.625rem 0 0;font-size:.8rem;color:var(--color-text-muted)}.pool-card .updated-at{margin-top:.625rem}.summer-closure{margin:.35rem 0 0;font-size:.8rem;color:#c2410c}.renovation-period{margin:.35rem 0 0;font-size:.8rem;color:#dc2626}.detail-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}.detail-section h2{margin:0 0 .75rem;font-size:1rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;font-weight:600}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem}.detail-item dt{font-size:.75rem;color:var(--color-text-muted);margin-bottom:.15rem}.detail-item dd{margin:0;font-weight:500}.pre-line{white-space:pre-line}.feature-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0}.feature-list li{background:var(--color-bg);padding:.25rem .6rem;border-radius:999px;font-size:.85rem}.detail-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border-radius:var(--radius);font-size:.9rem;font-weight:500;text-decoration:none;border:none;cursor:pointer}.btn:disabled{opacity:.65;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark);text-decoration:none;color:#fff}.btn-outline{background:var(--color-surface);color:var(--color-primary);border:1px solid var(--color-primary)}.btn-outline:hover{background:#e0f2fe;text-decoration:none}.detail-map{height:240px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border)}.back-link{display:inline-flex;align-items:center;margin:0 0 1.125rem;padding:.375rem 0;font-size:.9rem;font-weight:500;color:var(--color-text-muted);text-decoration:none}.back-link:hover{color:var(--color-primary);text-decoration:none}.site-footer{background:var(--color-surface);border-top:1px solid var(--color-border);padding:1.5rem 0;margin-top:auto}.site-footer p{margin:0;font-size:.85rem;color:var(--color-text-muted);text-align:center}.site-footer p+p{margin-top:.5rem}.site-footer a{color:var(--color-text-muted)}.site-footer a:hover{color:var(--color-primary)}.legal-page{max-width:42rem;padding-top:2rem;padding-bottom:3rem}.legal-page h2{margin:1rem 0 1.5rem}.legal-page section+section{margin-top:1.5rem}.legal-page h3{margin:0 0 .5rem;font-size:1rem}.legal-page p{margin:0;color:var(--color-text-muted);line-height:1.6}.feedback-intro{margin:0 0 1.5rem!important}.feedback-form,.feedback-success{display:flex;flex-direction:column;gap:1rem;max-width:28rem}.form-group{display:flex;flex-direction:column;gap:.35rem;text-align:left}.form-group label{font-size:.9rem;font-weight:600}.form-optional{font-weight:400;color:var(--color-text-muted)}.form-group input,.form-group textarea{font:inherit;padding:.6rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text)}.form-group textarea{resize:vertical;min-height:8rem}.form-group input:focus,.form-group textarea:focus{outline:2px solid color-mix(in srgb,var(--color-primary) 35%,transparent);outline-offset:1px;border-color:var(--color-primary)}.feedback-honeypot{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.feedback-captcha{min-height:78px}.feedback-error{margin:0;color:#b91c1c;font-size:.9rem}.feedback-success p,.feedback-unavailable{margin:0;color:var(--color-text)}.feedback-form .btn,.feedback-success .btn{align-self:flex-start}.leaflet-popup-content{margin:.5rem .75rem;font-size:.9rem}.map-popup-link{display:block;color:inherit;text-decoration:none;line-height:1.4}.map-popup-link:hover strong{color:var(--color-primary)}.map-popup-link strong{display:block;margin-bottom:.15rem;font-size:.95rem}.map-popup-city{display:block;color:var(--color-text-muted);font-size:.85rem}.map-popup-status{display:block;font-size:.85rem;font-style:italic;margin:.15rem 0}.map-popup-specs{display:block;font-size:.85rem;color:var(--color-text-muted)}
