:root {
  --color-brand: #075e4d;
  --color-brand-dark: #064638;
  --color-brand-soft: #e8f3ef;
  --color-ink: #17332d;
  --color-muted: #4f625d;
  --color-line: #dce7e3;
  --color-paper: #ffffff;
  --color-wash: #f5f8f7;
  --font-sans: "DM Sans", ui-sans-serif, system-ui, sans-serif;
  --font-display: "Manrope", ui-sans-serif, system-ui, sans-serif;
}

@layer base {
  :root { color-scheme: light; }
  html { scroll-behavior: smooth; }
  body { margin: 0; background: var(--color-paper); color: var(--color-ink); font-family: var(--font-sans); line-height: 1.7; -webkit-font-smoothing: antialiased; }
  a { color: var(--color-brand); }
  img { max-width: 100%; height: auto; }
  h1,h2,h3,h4 { font-family: var(--font-display); color: var(--color-ink); line-height: 1.12; letter-spacing: -.025em; }
}

@layer components {
  .site-shell { width: min(1160px, calc(100% - 40px)); margin-inline: auto; }
  .site-header { position: relative; z-index: 20; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--color-line); }
  .header-inner { min-height: 76px; display:flex; align-items:center; justify-content:space-between; gap:28px; }
  .brand { display:inline-flex; align-items:center; gap:12px; color:var(--color-ink); text-decoration:none; font-family:var(--font-display); font-weight:800; letter-spacing:-.02em; }
  .brand-mark { width:38px; height:38px; display:grid; place-items:center; border-radius:12px; background:var(--color-brand); color:#fff; box-shadow:0 8px 20px rgba(7,94,77,.18); }
  .brand-copy small { display:block; margin-top:1px; color:var(--color-muted); font:500 11px/1.2 var(--font-sans); letter-spacing:.08em; text-transform:uppercase; }
  .desktop-nav ul { display:flex; align-items:center; gap:26px; list-style:none; margin:0; padding:0; }
  .desktop-nav a { color:var(--color-ink); text-decoration:none; font-weight:600; font-size:14px; }
  .desktop-nav a:hover { color:var(--color-brand); }
  .mobile-nav { display:none; }
  .hero { position:relative; overflow:hidden; background:linear-gradient(135deg,#f3f8f6 0%,#fff 62%); border-bottom:1px solid var(--color-line); }
  .hero:after { content:""; position:absolute; width:360px; height:360px; right:-130px; top:-170px; border-radius:50%; background:rgba(7,94,77,.08); }
  .hero-grid { position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,1.15fr) minmax(300px,.75fr); gap:64px; align-items:center; padding:82px 0 78px; }
  .eyebrow { display:inline-flex; align-items:center; gap:8px; color:#064638; font-size:12px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
  .eyebrow:before { content:""; width:26px; height:2px; background:var(--color-brand); }
  .hero h1 { max-width:760px; margin:16px 0 22px; font-size:clamp(42px,6vw,68px); }
  .hero p { max-width:650px; margin:0; color:var(--color-muted); font-size:18px; }
  .hero-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:30px; }
  .button-primary,.wp-block-button__link { display:inline-flex !important; align-items:center; justify-content:center; min-height:50px; padding:0 22px !important; border-radius:12px !important; background:var(--color-brand) !important; color:#fff !important; text-decoration:none !important; font-weight:800 !important; border:1px solid var(--color-brand) !important; box-shadow:0 10px 24px rgba(7,94,77,.16); transition:transform .18s ease,box-shadow .18s ease,background .18s ease; }
  .button-primary:hover,.wp-block-button__link:hover { transform:translateY(-1px); background:var(--color-brand-dark) !important; box-shadow:0 14px 28px rgba(7,94,77,.2); }
  .button-secondary { display:inline-flex; align-items:center; justify-content:center; min-height:50px; padding:0 22px; border:1px solid var(--color-line); border-radius:12px; background:#fff; color:var(--color-ink); text-decoration:none; font-weight:800; }
  .entry-content a { text-underline-offset:3px; }
  .entry-content a:not(.ca-button):not(.wp-block-button__link):not(.button-primary):not(.button-secondary) { text-decoration:underline; }
  .entry-content .wp-block-button__link, .entry-content a.button-primary, .entry-content a.button-secondary { min-height:50px; }
  button, input[type="submit"], input[type="button"], .mobile-nav summary { min-height:44px; }
  :focus-visible { outline:3px solid var(--color-brand); outline-offset:3px; }
  .hero-card { background:#fff; border:1px solid var(--color-line); border-radius:22px; padding:28px; box-shadow:0 22px 55px rgba(22,55,47,.1); }
  .hero-card-top { display:flex; justify-content:space-between; align-items:center; padding-bottom:18px; border-bottom:1px solid var(--color-line); }
  .hero-card-title { font-family:var(--font-display); font-weight:800; }
  .badge { display:inline-flex; padding:6px 9px; border-radius:999px; background:var(--color-brand-soft); color:var(--color-brand); font-size:11px; font-weight:800; }
  .hero-card-row { display:flex; gap:14px; padding:18px 0; border-bottom:1px solid #edf2f0; }
  .hero-card-row:last-child { border-bottom:0; padding-bottom:0; }
  .number { flex:0 0 30px; height:30px; display:grid; place-items:center; border-radius:9px; background:var(--color-brand-soft); color:var(--color-brand); font-weight:800; font-size:13px; }
  .section { padding:76px 0; }
  .section-soft { background:var(--color-wash); border-block:1px solid var(--color-line); }
  .section-heading { max-width:720px; margin-bottom:34px; }
  .section-heading h2 { margin:10px 0 12px; font-size:clamp(30px,4vw,44px); }
  .section-heading p { margin:0; color:var(--color-muted); font-size:17px; }
  .feature-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
  .feature { display:block; padding:25px; border:1px solid var(--color-line); border-radius:18px; background:#fff; color:inherit; text-decoration:none; transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
  .feature:hover,.feature:focus-visible { transform:translateY(-2px); border-color:var(--color-brand); box-shadow:0 10px 26px rgba(22,55,47,.10); }
  .feature h3 { margin:18px 0 8px; font-size:20px; }
  .feature p { margin:0; color:var(--color-muted); font-size:15px; }
  .icon-box { width:44px; height:44px; display:grid; place-items:center; border-radius:12px; background:var(--color-brand-soft); color:var(--color-brand); }
  .municipios-box { display:grid; grid-template-columns:1fr .8fr; gap:40px; align-items:center; padding:38px; border-radius:24px; background:var(--color-brand); color:#fff; }
  .municipios-box h2 { margin:0 0 12px; color:#fff; font-size:36px; }
  .municipios-box p { margin:0; color:rgba(255,255,255,.78); }
  .municipio-search-wrap { position:relative; }
  .search-form { display:flex; align-items:center; gap:10px; padding:8px; background:#fff; border-radius:14px; }
  .search-form input[type="search"] { min-width:0; width:100%; height:48px; min-height:48px; flex:1 1 auto; box-sizing:border-box; border:0; outline:0; padding:12px 14px; color:var(--color-ink); -webkit-text-fill-color:var(--color-ink); background:#fff; font:600 15px var(--font-sans); }
  .search-form input[type="search"]::placeholder { color:#6b7b76; opacity:1; }
  .search-form .search-submit { flex:0 0 auto; min-width:96px; height:48px; min-height:48px; border:0; border-radius:10px; padding:0 18px; background:var(--color-brand-dark); color:#fff; font:800 14px var(--font-sans); cursor:pointer; }
  .municipio-search-results { position:absolute; z-index:50; left:8px; right:8px; top:calc(100% - 2px); padding:6px; background:#fff; border:1px solid var(--color-line); border-radius:0 0 14px 14px; box-shadow:0 14px 30px rgba(22,55,47,.16); }
  .municipio-search-results[hidden] { display:none; }
  .municipio-search-option { display:block; width:100%; padding:11px 12px; border:0; border-radius:9px; background:transparent; color:var(--color-ink) !important; text-align:left; text-decoration:none !important; font:700 14px/1.5 var(--font-sans); cursor:pointer; }
  .municipio-search-option:hover,.municipio-search-option:focus,.municipio-search-option[aria-selected="true"] { background:var(--color-brand-soft); color:var(--color-brand-dark) !important; outline:0; }
  .content-wrap { width:min(860px,calc(100% - 40px)); margin-inline:auto; padding:64px 0 84px; }
  .page-header { padding-bottom:30px; margin-bottom:34px; border-bottom:1px solid var(--color-line); }
  .page-header h1 { margin:10px 0 0; font-size:clamp(36px,5vw,56px); }
  .breadcrumbs { color:var(--color-muted); font-size:13px; }
  .entry-content { font-size:17px; }
  .entry-content > * { max-width:100%; }
  .entry-content h2 { margin:52px 0 18px; font-size:32px; }
  .entry-content h3 { margin:34px 0 14px; font-size:23px; }
  .entry-content p { margin:0 0 20px; }
  .entry-content ul,.entry-content ol { padding-left:24px; margin:0 0 24px; }
  .entry-content li { margin:7px 0; }
  .entry-content blockquote { margin:30px 0; padding:20px 24px; border-left:4px solid var(--color-brand); background:var(--color-brand-soft); border-radius:0 14px 14px 0; }
  .entry-content table { width:100%; border-collapse:collapse; margin:30px 0; font-size:15px; }
  .entry-content th,.entry-content td { padding:13px 14px; border:1px solid var(--color-line); text-align:left; }
  .entry-content th { background:var(--color-wash); font-weight:800; }
  .entry-content .wp-block-buttons { margin:28px 0; }
  .content-wrap-municipal { width:min(980px,calc(100% - 40px)); }
  .ca-container { width:min(100%,920px); margin-inline:auto; }
  .ca-hero { padding:64px 0 54px; background:linear-gradient(135deg,#f3f8f6 0%,#fff 68%); border-bottom:1px solid var(--color-line); }
  .ca-eyebrow { display:inline-flex; align-items:center; gap:8px; color:var(--color-brand); font-size:12px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
  .ca-eyebrow:before { content:""; width:26px; height:2px; background:var(--color-brand); }
  .ca-hero h1 { max-width:820px; margin:16px 0 18px; font-family:var(--font-display); color:var(--color-ink); font-size:clamp(38px,5vw,58px); line-height:1.08; letter-spacing:-.025em; }
  .ca-hero-lead { max-width:760px; margin:0 0 28px; color:var(--color-muted); font-size:18px; }
  .ca-button { display:inline-flex; align-items:center; justify-content:center; min-height:50px; padding:0 22px; border-radius:12px; background:var(--color-brand); color:#fff !important; text-decoration:none !important; font-weight:800; border:1px solid var(--color-brand); box-shadow:0 10px 24px rgba(7,94,77,.16); }
  .ca-button:hover { background:var(--color-brand-dark); }
  .ca-page-content { padding:0; }
  .ca-section { padding:38px 0; border-bottom:1px solid var(--color-line); }
  .ca-section h2 { margin:0 0 16px; font-size:30px; }
  .ca-section h3 { margin:26px 0 10px; font-size:21px; }
  .ca-section p:last-child { margin-bottom:0; }
  .ca-cta { margin:42px 0; padding:34px; border-radius:22px; background:var(--color-brand-soft); border:1px solid var(--color-line); }
  .ca-cta h2 { margin:8px 0 10px; font-size:30px; }
  .ca-cta p { color:var(--color-muted); }
  .ca-cta-principal { background:var(--color-brand); border-color:var(--color-brand); color:#fff; }
  .ca-cta-principal h2,.ca-cta-principal p { color:#fff; }
  .ca-cta-principal .ca-eyebrow { color:#fff; }
  .ca-cta-principal .ca-eyebrow:before { background:#fff; }
  .ca-cta-principal .ca-button { background:#fff; color:var(--color-brand) !important; border-color:#fff; }
  .ca-habitissimo-cta { text-align:center; }
  .ca-anchor { display:block; position:relative; top:-20px; }
  .site-footer { margin-top:auto; border-top:1px solid var(--color-line); background:#f7faf9; }
  .footer-inner { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:30px 0; color:var(--color-muted); font-size:13px; }
  .footer-inner a { color:var(--color-ink); font-weight:700; text-decoration:none; }
}

@media (max-width: 800px) {
  .site-shell { width:min(100% - 28px, 1160px); }
  .header-inner { min-height:68px; }
  .desktop-nav { display:none; }
  .mobile-nav { display:block; }
  .mobile-nav summary { list-style:none; cursor:pointer; width:44px; height:44px; display:grid; place-items:center; border:1px solid var(--color-line); border-radius:12px; color:var(--color-ink); }
  .mobile-nav summary::-webkit-details-marker { display:none; }
  .mobile-nav[open] summary { background:var(--color-brand-soft); color:var(--color-brand); }
  .mobile-menu { position:absolute; left:14px; right:14px; top:78px; padding:10px; background:#fff; border:1px solid var(--color-line); border-radius:16px; box-shadow:0 18px 40px rgba(22,55,47,.14); }
  .mobile-menu ul { list-style:none; margin:0; padding:0; }
  .mobile-menu li a { display:block; padding:12px 14px; border-radius:10px; color:var(--color-ink); text-decoration:none; font-weight:700; }
  .mobile-menu li a:hover { background:var(--color-wash); color:var(--color-brand); }
  .hero-grid { grid-template-columns:1fr; gap:34px; padding:58px 0 54px; }
  .hero h1 { font-size:42px; }
  .hero p { font-size:17px; }
  .feature-grid,.municipios-box { grid-template-columns:1fr; }
  .section { padding:58px 0; }
  .municipios-box { padding:28px; }
  .municipios-box h2 { font-size:30px; }
  .municipio-search-wrap { overflow-anchor:none; }
  .municipio-search-results { overscroll-behavior:contain; }
  .footer-inner { flex-direction:row; align-items:center; justify-content:space-between; gap:16px; padding:24px 0; font-size:13px; }
}

@media (max-width: 800px) and (hover: none) {
  html { scroll-behavior:auto; }
}

@media (max-width: 480px) {
  .hero h1 { font-size:37px; }
  .hero-actions { flex-direction:column; }
  .button-primary,.button-secondary { width:100%; box-sizing:border-box; }
  .municipios-box { padding:24px 20px; border-radius:20px; gap:24px; }
  .municipios-box h2 { font-size:29px; line-height:1.08; }
  .municipios-box p { font-size:16px; line-height:1.55; }
  .search-form { flex-direction:row; align-items:center; padding:7px; gap:7px; }
  .search-form input[type="search"] { height:48px; min-height:48px; }
  .search-form .search-submit { min-width:88px; height:48px; min-height:48px; padding:0 14px; }
  .content-wrap { width:min(100% - 28px,860px); padding:48px 0 64px; }
}
