:root{
  --bg:#eef8f8;--bg2:#f8fbfb;--surface:rgba(255,255,255,.72);--surface-strong:rgba(255,255,255,.9);
  --text:#0b2629;--muted:#667e80;--line:rgba(68,124,128,.18);--atlantic:#087f8c;--atlantic-dark:#075f69;
  --aqua:#1aa9a7;--foam:#dff5f2;--deep:#0b5360;--shadow:0 20px 60px rgba(20,75,80,.10);--shadow-soft:0 10px 30px rgba(20,75,80,.07);
  --radius:24px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:linear-gradient(180deg,var(--bg2),var(--bg) 55%,#f5fbfa);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.5;overflow-x:hidden}a{color:inherit}.shell{width:min(1120px,calc(100% - 32px));margin-inline:auto}.ambient{position:fixed;pointer-events:none;filter:blur(65px);opacity:.55;border-radius:999px;z-index:-1}.ambient-a{width:420px;height:420px;right:-120px;top:80px;background:rgba(67,208,201,.20)}.ambient-b{width:360px;height:360px;left:-120px;top:560px;background:rgba(37,142,174,.13)}
.site-header{position:sticky;top:0;z-index:20;background:rgba(246,252,251,.68);backdrop-filter:blur(18px) saturate(135%);-webkit-backdrop-filter:blur(18px) saturate(135%);border-bottom:1px solid rgba(109,151,153,.14)}.header-inner{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-weight:850;letter-spacing:-.03em;font-size:1.08rem}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:13px;background:linear-gradient(145deg,var(--atlantic),var(--aqua));color:white;box-shadow:0 8px 22px rgba(8,127,140,.24)}.brand-mark svg,.metric-icon svg,.hero-icon svg,.panel-weather-icon svg,.primary-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.status-pill{display:inline-flex;align-items:center;min-height:32px;padding:6px 11px;border:1px solid var(--line);background:rgba(255,255,255,.72);backdrop-filter:blur(12px);border-radius:999px;color:var(--muted);font-size:.8rem;font-weight:750}.quiet-link{font-size:.9rem;color:var(--muted);text-decoration:none}.quiet-link:hover{color:var(--atlantic)}
.glass-card,.panel,.query-panel{background:var(--surface);border:1px solid rgba(255,255,255,.78);box-shadow:var(--shadow);backdrop-filter:blur(16px) saturate(130%);-webkit-backdrop-filter:blur(16px) saturate(130%);border-radius:var(--radius)}
.hero{padding:78px 0 38px}.home-hero{position:relative;max-width:920px}.hero-orb{position:absolute;right:2%;top:54px;width:200px;height:130px;opacity:.34;pointer-events:none}.hero-orb span{position:absolute;border:1.5px solid var(--atlantic);border-radius:50%;width:160px;height:50px;transform:rotate(-9deg)}.hero-orb span:nth-child(2){top:25px;left:18px;width:140px}.hero-orb span:nth-child(3){top:52px;left:40px;width:110px}.eyebrow,.kicker{margin:0 0 10px;color:var(--atlantic);font-size:.76rem;font-weight:900;text-transform:uppercase;letter-spacing:.14em}.kicker{font-size:.72rem}h1,h2,h3,p{margin-top:0}h1{margin-bottom:18px;font-size:clamp(2.6rem,7vw,5.5rem);line-height:.96;letter-spacing:-.06em;max-width:950px}.hero-copy{max-width:710px;color:var(--muted);font-size:clamp(1rem,2vw,1.19rem)}.hero-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.hero-pills span{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.62);color:var(--muted);font-size:.82rem}.hero-pills b{color:var(--atlantic)}
.location-panel{padding:30px}.panel-head,.result-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:22px}.panel-weather-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:18px;background:linear-gradient(145deg,rgba(26,169,167,.14),rgba(8,127,140,.08));color:var(--atlantic)}.panel-weather-icon svg{width:27px;height:27px}.location-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.location-card{min-height:145px;padding:22px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:1fr auto;gap:10px 14px;text-decoration:none;background:rgba(255,255,255,.52);box-shadow:var(--shadow-soft);transition:.18s ease}.location-card:hover{transform:translateY(-3px);border-color:rgba(26,169,167,.35);box-shadow:0 18px 38px rgba(20,75,80,.11)}.location-card-icon{grid-row:1/3;width:40px;height:40px;display:grid;place-items:center;border-radius:14px;background:var(--foam);color:var(--atlantic);font-size:1.35rem}.location-name{align-self:center;font-weight:840;font-size:1.15rem;letter-spacing:-.025em}.location-cta{color:var(--atlantic);font-size:.88rem;font-weight:800}.loading-card{padding:28px;color:var(--muted);border:1px dashed var(--line);border-radius:18px}.home-explainer{padding:62px 0 76px}.home-explainer-head{max-width:600px;margin-bottom:18px}.explainer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.info-card{position:relative;padding:24px;min-height:190px;background:rgba(255,255,255,.52);box-shadow:var(--shadow-soft)}.info-card p,.small-copy{color:var(--muted);font-size:.9rem}.step{display:inline-block;margin-bottom:28px;color:var(--atlantic);font-size:.76rem;font-weight:900}.info-icon{position:absolute;right:20px;top:20px;color:rgba(8,127,140,.38);font-size:1.45rem}
.location-hero{padding:58px 0 30px;display:grid;grid-template-columns:64px 1fr;gap:20px;align-items:start}.location-hero h1{font-size:clamp(2.3rem,5.5vw,4.25rem);margin-bottom:14px}.hero-icon{width:58px;height:58px;display:grid;place-items:center;border-radius:19px;background:linear-gradient(145deg,rgba(26,169,167,.17),rgba(8,127,140,.08));color:var(--atlantic);box-shadow:var(--shadow-soft)}.hero-icon svg{width:30px;height:30px}.query-panel{display:grid;grid-template-columns:1fr 1fr auto;gap:14px;padding:16px;align-items:end;background:rgba(255,255,255,.68)}.field{display:grid;gap:7px}.field label{font-size:.8rem;font-weight:800;color:var(--muted)}.field-icon{color:var(--atlantic)}.field input{width:100%;min-height:48px;padding:0 14px;border:1px solid rgba(70,128,130,.22);border-radius:14px;background:rgba(255,255,255,.82);color:var(--text);font:inherit}.field input:focus{outline:3px solid rgba(26,169,167,.13);border-color:rgba(8,127,140,.48)}.primary-btn{min-height:48px;padding:0 18px;border:0;border-radius:14px;background:linear-gradient(145deg,var(--atlantic),var(--aqua));box-shadow:0 10px 22px rgba(8,127,140,.22);color:white;font:inherit;font-weight:850;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:9px}.primary-btn:hover{filter:brightness(.96)}.primary-btn:disabled{opacity:.65;cursor:wait}.primary-btn svg{width:17px}.form-note{margin:10px 4px 0;color:var(--muted);font-size:.8rem}
#results-section,#patterns-section{padding-top:42px}.result-head h2{font-size:clamp(1.6rem,3vw,2.2rem);letter-spacing:-.035em;margin:0}.decision-card{padding:28px;display:grid;grid-template-columns:1.15fr .85fr;gap:28px;background:linear-gradient(135deg,rgba(255,255,255,.84),rgba(225,247,244,.68));overflow:hidden;position:relative}.decision-card:after{content:"";position:absolute;width:230px;height:230px;border:1px solid rgba(8,127,140,.12);border-radius:50%;right:-90px;bottom:-130px;box-shadow:0 0 0 26px rgba(8,127,140,.035),0 0 0 54px rgba(8,127,140,.02)}.decision-copy{display:flex;gap:18px;align-items:flex-start;position:relative;z-index:1}.decision-icon{width:52px;height:52px;flex:0 0 auto;display:grid;place-items:center;border-radius:17px;background:linear-gradient(145deg,var(--atlantic),var(--aqua));color:white}.decision-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.decision-value{display:block;margin-top:8px;font-size:clamp(2.4rem,6vw,4.6rem);line-height:.95;letter-spacing:-.06em}.decision-note{margin:10px 0 0;color:var(--muted);max-width:520px}.trip-visual{position:relative;z-index:1;align-self:center;padding:22px;background:rgba(255,255,255,.54);border:1px solid rgba(255,255,255,.8);border-radius:20px}.trip-dots{display:grid;grid-template-columns:repeat(8,1fr);gap:8px}.trip-dot{aspect-ratio:1;border-radius:50%;background:rgba(90,129,131,.16);border:1px solid rgba(90,129,131,.12)}.trip-dot.filled{background:linear-gradient(145deg,var(--atlantic),var(--aqua));border-color:transparent;box-shadow:0 4px 10px rgba(8,127,140,.14)}.trip-visual-meta{display:flex;justify-content:space-between;gap:12px;margin-top:14px;color:var(--muted);font-size:.82rem}.trip-visual-meta span:first-child{color:var(--text);font-weight:900}.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:14px}.metric-card{min-height:160px;padding:22px;display:flex;flex-direction:column;background:rgba(255,255,255,.66)}.metric-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:14px;background:var(--foam);color:var(--atlantic);margin-bottom:18px}.metric-label{font-size:.82rem;font-weight:800;color:var(--muted)}.metric-value{display:block;margin-top:auto;font-size:clamp(2rem,5vw,3rem);letter-spacing:-.055em;line-height:1;font-variant-numeric:tabular-nums}.metric-note{margin-top:9px;color:var(--muted);font-size:.82rem}.visual-panel{padding:26px;margin-top:14px}.panel-title-row{display:flex;justify-content:space-between;align-items:start;gap:18px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.panel{padding:28px}.panel.compact{padding:24px}.bar-list{display:grid;gap:14px;margin-top:18px}.bar-meta{display:flex;justify-content:space-between;gap:14px;font-size:.86rem}.bar-track{height:9px;margin-top:7px;background:rgba(8,127,140,.08);border-radius:999px;overflow:hidden}.bar-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--atlantic),var(--aqua))}.bar-fuerte .bar-track span{background:linear-gradient(90deg,#168c9c,#2cb5aa)}.bar-muy_fuerte .bar-track span{background:linear-gradient(90deg,#17677b,#0b5360)}.weather-facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.weather-fact{display:flex;gap:12px;align-items:center;padding:13px;background:rgba(235,248,246,.72);border-radius:15px}.weather-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:12px;background:rgba(255,255,255,.7);color:var(--atlantic);font-weight:900}.weather-fact small,.weather-fact strong{display:block}.weather-fact small{font-size:.73rem;color:var(--muted)}.weather-fact strong{font-size:1.04rem;margin-top:2px}.interpretation>p:not(.kicker){color:var(--text);font-size:.96rem}.method-note{color:var(--muted)!important;font-size:.8rem!important}.patterns-head{margin-top:4px}.pattern-title{display:flex;gap:12px;align-items:flex-start}.pattern-title .metric-icon{margin:0;flex:0 0 auto}.mini-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}.mini-metrics div{padding:14px;background:rgba(235,248,246,.76);border-radius:14px}.mini-metrics strong,.mini-metrics span{display:block}.mini-metrics strong{font-size:1.18rem;letter-spacing:-.03em}.mini-metrics span{margin-top:3px;color:var(--muted);font-size:.76rem}.error-box{padding:15px 17px;border:1px solid #efc6c0;background:#fff2f0;color:#7c2b21;border-radius:14px}.hidden{display:none!important}.site-footer{margin-top:72px;border-top:1px solid rgba(83,126,128,.14);color:var(--muted);background:rgba(255,255,255,.28)}.footer-inner{min-height:86px;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:.8rem}
@media(max-width:820px){.hero-orb{opacity:.2;right:-25px}.location-grid,.two-col{grid-template-columns:1fr}.explainer-grid{grid-template-columns:1fr}.query-panel{grid-template-columns:1fr 1fr}.primary-btn{grid-column:1/-1}.decision-card{grid-template-columns:1fr}.trip-visual{max-width:440px}.weather-facts{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.shell{width:min(100% - 24px,1120px)}.status-pill{display:none}.site-header{position:relative}.header-inner{min-height:58px}.brand{font-size:.98rem}.brand-mark{width:32px;height:32px;border-radius:11px}.hero{padding:48px 0 26px}.home-hero h1{font-size:2.8rem}.hero-orb{display:none}.location-panel{padding:18px}.location-grid{grid-template-columns:1fr}.location-card{min-height:112px;padding:18px}.home-explainer{padding:42px 0 58px}.explainer-grid{gap:10px}.info-card{min-height:auto;padding:20px}.step{margin-bottom:18px}.location-hero{padding:38px 0 20px;grid-template-columns:42px 1fr;gap:12px}.location-hero h1{font-size:2.42rem;line-height:.98}.hero-icon{width:42px;height:42px;border-radius:14px}.hero-icon svg{width:22px;height:22px}.hero-copy{font-size:1rem}.query-panel{grid-template-columns:1fr 1fr;gap:10px;padding:12px;border-radius:20px}.field label{font-size:.74rem}.field input{min-height:44px;padding:0 10px;font-size:.92rem}.primary-btn{grid-column:1/-1;min-height:46px}.form-note{font-size:.76rem}.result-head{align-items:flex-start}.result-head .status-pill{display:inline-flex;white-space:nowrap}.decision-card{padding:20px;gap:18px}.decision-copy{gap:12px}.decision-icon{width:42px;height:42px;border-radius:14px}.decision-value{font-size:3.15rem}.decision-note{font-size:.9rem}.trip-visual{padding:16px}.trip-dots{grid-template-columns:repeat(8,1fr);gap:6px}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric-card{min-height:145px;padding:18px}.metric-value{font-size:2.2rem}.metric-icon{margin-bottom:14px}.visual-panel,.panel.compact{padding:19px}.panel-weather-icon{width:42px;height:42px}.weather-facts{grid-template-columns:1fr}.contextual-grid{gap:10px}.mini-metrics{grid-template-columns:repeat(3,1fr);gap:6px}.mini-metrics div{padding:11px}.mini-metrics strong{font-size:1rem}.mini-metrics span{font-size:.68rem}.footer-inner{align-items:flex-start;flex-direction:column;justify-content:center;padding:20px 0}.site-footer{margin-top:56px}}
@media(max-width:390px){.query-panel{grid-template-columns:1fr}.primary-btn{grid-column:auto}.metric-grid{grid-template-columns:1fr}.decision-value{font-size:2.8rem}.result-head{display:block}.result-head .status-pill{margin-top:8px}}


/* === FORECAST_FRONTEND_V1 === */
.forecast-section{padding:0 0 12px}.forecast-hero{padding:28px;position:relative;overflow:hidden;background:linear-gradient(135deg,rgba(255,255,255,.82),rgba(217,244,243,.72))}.forecast-hero:before{content:"";position:absolute;width:360px;height:360px;right:-170px;top:-210px;border-radius:50%;border:1px solid rgba(8,127,140,.12);box-shadow:0 0 0 38px rgba(26,169,167,.035),0 0 0 78px rgba(8,127,140,.022);pointer-events:none}.forecast-head{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.forecast-head h2{margin:0 0 7px;font-size:clamp(1.65rem,3vw,2.35rem);letter-spacing:-.045em}.forecast-source-note{margin:0;color:var(--muted);font-size:.86rem}.forecast-aemet-badge{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 11px;border-radius:999px;background:rgba(255,255,255,.72);border:1px solid rgba(8,127,140,.16);color:var(--atlantic-dark);font-size:.73rem;font-weight:900;letter-spacing:.08em}.forecast-loading{min-height:150px;display:flex;align-items:center;justify-content:center;gap:11px;color:var(--muted)}.forecast-loading-dot{width:10px;height:10px;border-radius:50%;background:var(--aqua);box-shadow:0 0 0 0 rgba(26,169,167,.35);animation:forecastPulse 1.5s infinite}@keyframes forecastPulse{70%{box-shadow:0 0 0 10px rgba(26,169,167,0)}100%{box-shadow:0 0 0 0 rgba(26,169,167,0)}}.forecast-days{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:22px}.forecast-day-card{min-width:0;padding:20px;border:1px solid rgba(68,124,128,.13);background:rgba(255,255,255,.64);border-radius:20px;box-shadow:var(--shadow-soft)}.forecast-day-card.is-levante{background:linear-gradient(145deg,rgba(255,255,255,.76),rgba(213,244,240,.88));border-color:rgba(8,127,140,.23)}.forecast-day-card.is-borderline{background:linear-gradient(145deg,rgba(255,255,255,.76),rgba(237,248,239,.9))}.forecast-day-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.forecast-day-label{display:block;color:var(--atlantic);font-size:.74rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em}.forecast-day-date{display:block;margin-top:2px;font-size:.9rem;color:var(--muted)}.forecast-weather-icon{font-size:2rem;line-height:1;color:var(--atlantic-dark)}.forecast-temp-row{display:flex;align-items:baseline;gap:10px;margin-top:22px}.forecast-temp-row strong{font-size:clamp(1.7rem,3.6vw,2.4rem);letter-spacing:-.06em;line-height:1}.forecast-temp-row span{font-size:.8rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.forecast-wind-row{display:flex;gap:10px;align-items:center;margin-top:17px;padding:12px;background:rgba(237,248,246,.72);border-radius:15px}.wind-compass{width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:rgba(255,255,255,.8);border:1px solid rgba(8,127,140,.13);color:var(--atlantic-dark);font-weight:900}.forecast-wind-row strong,.forecast-wind-row small{display:block}.forecast-wind-row strong{font-size:.9rem}.forecast-wind-row small{margin-top:1px;color:var(--muted);font-size:.69rem}.forecast-signal{display:grid;grid-template-columns:auto 1fr;gap:1px 8px;align-items:center;margin-top:16px}.forecast-signal-dot{grid-row:1/3;width:9px;height:9px;border-radius:50%;background:#9eb4b5}.is-levante .forecast-signal-dot{background:var(--atlantic)}.is-borderline .forecast-signal-dot{background:#7ba58a}.forecast-signal strong{font-size:.83rem}.forecast-signal>span:last-child{color:var(--muted);font-size:.72rem}.hourly-details{position:relative;z-index:1;margin-top:14px;border:1px solid rgba(68,124,128,.13);border-radius:18px;background:rgba(255,255,255,.53);overflow:hidden}.hourly-details summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 19px}.hourly-details summary::-webkit-details-marker{display:none}.hourly-details summary strong,.hourly-details summary small{display:block}.hourly-details summary strong{font-size:.9rem}.hourly-details summary small{margin-top:2px;color:var(--muted);font-size:.75rem}.hourly-chevron{font-size:1.25rem;color:var(--atlantic);transition:transform .18s}.hourly-details[open] .hourly-chevron{transform:rotate(180deg)}.forecast-hourly{border-top:1px solid rgba(68,124,128,.12);padding:6px 16px 12px}.hourly-row{display:grid;grid-template-columns:62px 34px 54px 1fr auto;gap:10px;align-items:center;min-height:48px;border-bottom:1px solid rgba(68,124,128,.09);font-size:.79rem}.hourly-row:last-child{border-bottom:0}.hourly-row time{font-variant-numeric:tabular-nums;font-weight:800}.hourly-sky{font-size:1.15rem}.hourly-temp{font-size:.95rem;font-weight:900}.hourly-wind{color:var(--muted)}.hourly-wind b{color:var(--text)}.hourly-status{justify-self:end;padding:4px 8px;border-radius:999px;background:rgba(102,126,128,.09);color:var(--muted);font-size:.68rem;font-weight:800}.hourly-row.is-levante .hourly-status{background:rgba(8,127,140,.11);color:var(--atlantic-dark)}.hourly-row.is-borderline .hourly-status{background:rgba(123,165,138,.15);color:#476f56}.forecast-footer-note{position:relative;z-index:1;display:flex;gap:9px;align-items:flex-start;margin-top:14px;color:var(--muted);font-size:.73rem}.forecast-footer-note p{margin:0}.forecast-soft-error{position:relative;z-index:1;margin-top:20px;padding:18px;border:1px solid rgba(173,125,64,.18);background:rgba(255,248,236,.75);border-radius:16px}.forecast-soft-error strong,.forecast-soft-error span{display:block}.forecast-soft-error span{margin-top:3px;color:var(--muted);font-size:.82rem}.historical-intro{padding:38px 0 16px}.historical-intro h2{margin:0 0 8px;font-size:clamp(1.55rem,3vw,2.15rem);letter-spacing:-.04em}.historical-intro>p:last-child{max-width:720px;color:var(--muted);font-size:.9rem}

@media(max-width:820px){.forecast-days{grid-template-columns:repeat(3,minmax(220px,1fr));overflow-x:auto;padding-bottom:5px;scroll-snap-type:x proximity}.forecast-day-card{scroll-snap-align:start}.forecast-days::-webkit-scrollbar{height:5px}.forecast-days::-webkit-scrollbar-thumb{background:rgba(8,127,140,.18);border-radius:99px}}
@media(max-width:560px){.forecast-section{padding-top:0}.forecast-hero{padding:20px}.forecast-head{gap:12px}.forecast-aemet-badge{font-size:.68rem}.forecast-days{margin-right:-20px;padding-right:20px;grid-template-columns:repeat(3,minmax(245px,82vw))}.forecast-day-card{padding:18px}.forecast-temp-row{margin-top:18px}.hourly-details summary{padding:15px}.forecast-hourly{padding:4px 12px 10px}.hourly-row{grid-template-columns:48px 26px 44px 1fr;gap:7px}.hourly-status{display:none}.hourly-wind{font-size:.72rem}.historical-intro{padding-top:32px}}


/* === FORECAST_FRONTEND_V1.1 === */
.wind-compass{
  position:relative;
  width:44px;
  height:44px;
  display:grid;
  grid-template-columns:1fr;
  grid-template-rows:22px 16px;
  place-items:center;
  padding:3px 0 2px;
}
.wind-compass .wind-arrow{
  display:block;
  line-height:1;
  font-size:1rem;
  transform:rotate(var(--wind-rotation));
  transform-origin:center;
  color:var(--atlantic);
}
.wind-compass b{
  font-size:.66rem;
  line-height:1;
  letter-spacing:.04em;
}
.hourly-wind{
  display:flex;
  align-items:center;
  gap:5px;
}
.hourly-wind-arrow{
  display:inline-block;
  width:13px;
  text-align:center;
  color:var(--atlantic);
  transform:rotate(var(--wind-rotation));
  transform-origin:center;
  font-size:.78rem;
  line-height:1;
}
.hourly-status-empty{
  width:8px;
  height:8px;
  min-width:8px;
  padding:0;
  background:rgba(102,126,128,.20);
  border-radius:50%;
}
.hourly-status.is-levante-badge{
  background:rgba(8,127,140,.12);
  color:var(--atlantic-dark);
}
.hourly-status.is-borderline-badge{
  background:rgba(123,165,138,.16);
  color:#476f56;
}
.hourly-status.is-unknown-badge{
  background:rgba(102,126,128,.08);
  color:var(--muted);
}


/* === THEME_SYSTEM_V1 + VISUAL_REFRESH_V1 ===
   Capa exclusivamente de presentación. No altera datos, APIs ni backend. */

:root{
  color-scheme:light;
  --bg:#edf4f3;
  --bg2:#f7faf9;
  --surface:rgba(249,252,251,.78);
  --surface-strong:rgba(252,254,253,.94);
  --surface-soft:rgba(242,248,247,.76);
  --surface-subtle:rgba(255,255,255,.52);
  --text:#10292c;
  --muted:#617779;
  --line:rgba(45,99,103,.15);
  --line-strong:rgba(45,99,103,.24);
  --atlantic:#087f8c;
  --atlantic-dark:#086672;
  --aqua:#28aaa6;
  --foam:#dcefed;
  --deep:#0f5963;
  --shadow:0 18px 52px rgba(20,62,66,.085);
  --shadow-soft:0 8px 24px rgba(20,62,66,.055);
  --header-bg:rgba(247,250,249,.80);
  --field-bg:rgba(255,255,255,.86);
  --tint-a:rgba(53,192,186,.14);
  --tint-b:rgba(49,126,157,.09);
  --accent-soft:rgba(8,127,140,.085);
  --focus:rgba(31,157,160,.18);
  --radius:24px;
}

html[data-theme="dark"]{
  color-scheme:dark;
  --bg:#10191b;
  --bg2:#142023;
  --surface:rgba(24,37,40,.84);
  --surface-strong:rgba(29,44,47,.95);
  --surface-soft:rgba(30,47,50,.80);
  --surface-subtle:rgba(255,255,255,.035);
  --text:#edf4f2;
  --muted:#a6b8b7;
  --line:rgba(181,215,211,.13);
  --line-strong:rgba(181,215,211,.22);
  --atlantic:#61c4c3;
  --atlantic-dark:#8ad5d1;
  --aqua:#79d0c9;
  --foam:#203b3e;
  --deep:#9eddd8;
  --shadow:0 20px 56px rgba(0,0,0,.22);
  --shadow-soft:0 9px 26px rgba(0,0,0,.16);
  --header-bg:rgba(15,25,28,.82);
  --field-bg:rgba(31,47,50,.88);
  --tint-a:rgba(59,178,173,.10);
  --tint-b:rgba(55,116,144,.08);
  --accent-soft:rgba(97,196,195,.09);
  --focus:rgba(97,196,195,.20);
}

html,body{background-color:var(--bg);color:var(--text)}
body{
  background:
    radial-gradient(circle at 86% 10%,var(--tint-a),transparent 31rem),
    radial-gradient(circle at 5% 54%,var(--tint-b),transparent 28rem),
    linear-gradient(180deg,var(--bg2),var(--bg) 56%,var(--bg2));
  transition:background-color .18s ease,color .18s ease;
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

.ambient-a{background:var(--tint-a)}
.ambient-b{background:var(--tint-b)}
.site-header{
  padding-top:env(safe-area-inset-top);
  background:var(--header-bg);
  border-bottom-color:var(--line);
  box-shadow:0 1px 0 rgba(255,255,255,.035);
}
.header-inner{min-height:70px}
.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}
.brand-mark{
  background:linear-gradient(145deg,var(--atlantic-dark),var(--aqua));
  box-shadow:0 8px 20px rgba(8,127,140,.16);
}
.status-pill,.hero-pills span{
  background:var(--surface-subtle);
  border-color:var(--line);
  color:var(--muted);
}
.glass-card,.panel,.query-panel{
  background:var(--surface);
  border-color:var(--line);
  box-shadow:var(--shadow);
  backdrop-filter:blur(18px) saturate(115%);
  -webkit-backdrop-filter:blur(18px) saturate(115%);
}
.location-card,.info-card,.metric-card{background:var(--surface-subtle);border-color:var(--line)}
.location-card:hover{
  border-color:var(--line-strong);
  box-shadow:0 16px 36px rgba(20,75,80,.09);
}
html[data-theme="dark"] .location-card:hover{box-shadow:0 16px 38px rgba(0,0,0,.22)}
.location-card-icon,.metric-icon{background:var(--foam);color:var(--atlantic)}
.query-panel{background:var(--surface-strong)}
.field input{
  background:var(--field-bg);
  color:var(--text);
  border-color:var(--line-strong);
}
.field input:focus{outline:3px solid var(--focus);border-color:var(--atlantic)}
.primary-btn{
  background:linear-gradient(145deg,#087784,#24a29f);
  box-shadow:0 9px 20px rgba(8,119,132,.16);
}
html[data-theme="dark"] .primary-btn{background:linear-gradient(145deg,#287f88,#3aa8a4);color:#f6fbfa}
.decision-card{
  background:linear-gradient(135deg,var(--surface-strong),var(--surface-soft));
}
.decision-card:after{border-color:var(--line);box-shadow:0 0 0 26px var(--accent-soft),0 0 0 54px rgba(8,127,140,.025)}
.trip-visual{background:var(--surface-subtle);border-color:var(--line)}
.trip-dot{background:var(--accent-soft);border-color:var(--line)}
.bar-track{background:var(--accent-soft)}
.weather-facts>div,.mini-metrics div{background:var(--surface-subtle);border-color:var(--line)}
.site-footer{border-top-color:var(--line)}
.error-box{background:rgba(173,84,84,.08);border-color:rgba(173,84,84,.18)}

/* Selector de apariencia */
.theme-switcher{
  display:inline-flex;
  align-items:center;
  gap:2px;
  padding:3px;
  border:1px solid var(--line);
  border-radius:14px;
  background:var(--surface-subtle);
  box-shadow:0 3px 12px rgba(20,62,66,.035);
}
.theme-choice{
  appearance:none;
  -webkit-appearance:none;
  border:0;
  min-height:34px;
  padding:0 10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  border-radius:10px;
  background:transparent;
  color:var(--muted);
  font:inherit;
  font-size:.75rem;
  font-weight:760;
  cursor:pointer;
  white-space:nowrap;
  -webkit-tap-highlight-color:transparent;
}
.theme-choice:hover{color:var(--text);background:var(--surface-subtle)}
.theme-choice[aria-pressed="true"]{
  color:var(--text);
  background:var(--surface-strong);
  box-shadow:0 2px 8px rgba(20,62,66,.07);
}
html[data-theme="dark"] .theme-choice[aria-pressed="true"]{box-shadow:0 2px 10px rgba(0,0,0,.20)}
.theme-choice:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.theme-choice-icon{font-size:.92rem;line-height:1}

/* Forecast: superficies legibles en ambos temas */
.forecast-hero{
  background:linear-gradient(135deg,var(--surface-strong),var(--surface-soft));
  border-color:var(--line);
}
.forecast-hero:before{border-color:var(--line);box-shadow:0 0 0 38px var(--accent-soft),0 0 0 78px rgba(8,127,140,.02)}
.forecast-aemet-badge{
  background:var(--surface-strong);
  border-color:var(--line);
  color:var(--atlantic-dark);
}
.forecast-day-card{
  background:var(--surface-subtle);
  border-color:var(--line);
  box-shadow:var(--shadow-soft);
}
.forecast-day-card.is-levante{
  background:linear-gradient(145deg,var(--surface-strong),rgba(63,180,174,.10));
  border-color:rgba(56,170,169,.28);
}
.forecast-day-card.is-borderline{
  background:linear-gradient(145deg,var(--surface-strong),rgba(121,164,137,.10));
}
.forecast-wind-row,.hourly-details{
  background:var(--surface-soft);
  border-color:var(--line);
}
.wind-compass{background:var(--surface-strong);border-color:var(--line)}
.forecast-hourly{border-top-color:var(--line)}
.hourly-row{border-bottom-color:var(--line)}
.hourly-status{background:var(--accent-soft);color:var(--muted)}
.forecast-signal-dot{background:#8da7a7}
.forecast-soft-error{background:rgba(180,132,67,.08);border-color:rgba(180,132,67,.20)}
html[data-theme="dark"] .forecast-weather-icon{color:#d7ece9}

/* Menos fatiga: jerarquía y densidad algo más contenidas */
h1{font-weight:780}
h2,h3{font-weight:760}
.hero-copy,.info-card p,.small-copy,.metric-note,.decision-note{color:var(--muted)}
.eyebrow,.kicker{letter-spacing:.13em}
.metric-value,.decision-value{font-variant-numeric:tabular-nums lining-nums}
.panel-head h2,.result-head h2,.historical-intro h2{color:var(--text)}

/* Tablets */
@media (min-width:561px) and (max-width:920px){
  .shell{width:min(100% - 40px,1120px)}
  .header-inner{gap:14px}
  .theme-choice{padding-inline:8px}
  .home-hero{padding-top:62px}
  .location-grid{gap:12px}
  .forecast-days{grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}
}

/* Phones iOS/Android */
@media(max-width:560px){
  .shell{width:min(100% - 24px,1120px)}
  .header-inner{min-height:62px;gap:8px}
  .brand{font-size:1rem;gap:8px;min-width:0}
  .brand-mark{width:34px;height:34px;border-radius:11px}
  .header-actions{gap:7px}
  .header-history-pill{display:none}
  .page-location .quiet-link{display:none}
  .theme-switcher{border-radius:12px;padding:2px}
  .theme-choice{width:34px;min-height:34px;padding:0}
  .theme-choice-label{
    position:absolute!important;
    width:1px!important;height:1px!important;
    padding:0!important;margin:-1px!important;
    overflow:hidden!important;clip:rect(0,0,0,0)!important;
    white-space:nowrap!important;border:0!important;
  }
  .theme-choice-icon{font-size:1rem}
  .hero{padding-top:42px}
  .location-hero{padding-top:34px}
  .glass-card,.panel,.query-panel{border-radius:20px}
  .forecast-hero{border-radius:22px}
}

/* Teléfonos muy estrechos */
@media(max-width:370px){
  .shell{width:min(100% - 18px,1120px)}
  .brand-mark{width:32px;height:32px}
  .theme-choice{width:31px;min-height:31px}
}

/* Pantallas táctiles: objetivos cómodos */
@media(hover:none) and (pointer:coarse){
  .theme-choice{min-height:38px}
  .primary-btn{min-height:50px}
  .location-card{transform:none!important}
}

/* === HISTORICAL_PLANNER_P2_1 === */
.historical-shortcuts{display:flex;flex-wrap:wrap;gap:14px 24px;margin:14px 0 4px;padding:0 2px}
.shortcut-group{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.shortcut-label{font-size:.72rem;font-weight:850;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.shortcut-buttons{display:flex;gap:6px;flex-wrap:wrap}
.shortcut-btn,.planner-duration-btn,.planner-nav-btn{
  appearance:none;-webkit-appearance:none;border:1px solid var(--line);background:var(--surface-subtle);color:var(--muted);
  border-radius:11px;min-height:34px;padding:0 11px;font:inherit;font-size:.75rem;font-weight:800;cursor:pointer;
  -webkit-tap-highlight-color:transparent
}
.shortcut-btn:hover,.planner-duration-btn:hover,.planner-nav-btn:hover{color:var(--text);border-color:var(--line-strong);background:var(--surface-soft)}
.shortcut-btn[aria-pressed="true"],.planner-duration-btn[aria-pressed="true"]{color:var(--atlantic-dark);background:var(--accent-soft);border-color:rgba(8,127,140,.28)}
.shortcut-btn:disabled{opacity:.42;cursor:not-allowed;pointer-events:none}
.shortcut-btn:focus-visible,.planner-duration-btn:focus-visible,.planner-nav-btn:focus-visible,.planner-day:focus-visible,.planner-ranking-item:focus-visible{outline:3px solid var(--focus);outline-offset:2px}

.planner-section{padding-top:42px}
.planner-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:16px}
.planner-head h2{margin:0 0 6px;font-size:clamp(1.55rem,3vw,2.2rem);letter-spacing:-.04em}
.planner-head p{margin:0;max-width:700px;color:var(--muted);font-size:.9rem}
.planner-duration{display:flex;gap:5px;padding:3px;border:1px solid var(--line);border-radius:13px;background:var(--surface-subtle);flex:0 0 auto}
.planner-duration-btn{border:0;background:transparent}
.planner-duration-btn[aria-pressed="true"]{background:var(--surface-strong);box-shadow:0 2px 8px rgba(20,62,66,.07)}
html[data-theme="dark"] .planner-duration-btn[aria-pressed="true"]{box-shadow:0 2px 10px rgba(0,0,0,.20)}
.planner-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:14px;align-items:start}
.planner-calendar-card,.planner-selected-card,.planner-ranking-card{padding:22px}
.planner-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.planner-calendar-head h3,.planner-selected-card h3,.planner-ranking-card h3{margin:2px 0 0}
.planner-eyebrow{display:block;color:var(--atlantic);font-size:.69rem;font-weight:900;text-transform:uppercase;letter-spacing:.105em}
.planner-month-nav{display:flex;gap:5px}
.planner-nav-btn{width:36px;padding:0;font-size:1rem}
.planner-weekdays,.planner-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.planner-weekdays{margin-bottom:6px;color:var(--muted);font-size:.68rem;font-weight:850;text-align:center}
.planner-day-spacer{min-height:50px}
.planner-day{
  position:relative;appearance:none;-webkit-appearance:none;min-height:52px;border:1px solid var(--line);border-radius:13px;
  background:var(--surface-subtle);color:var(--text);font:inherit;font-size:.8rem;font-weight:850;cursor:pointer;overflow:hidden;
  transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease
}
.planner-day:hover{transform:translateY(-1px);border-color:var(--line-strong);box-shadow:var(--shadow-soft)}
.planner-day span{position:relative;z-index:2}
.planner-day i{position:absolute;left:7px;right:7px;bottom:6px;height:4px;border-radius:999px;background:var(--planner-level,rgba(110,140,140,.18))}
.planner-day--very-low{--planner-level:rgba(70,169,164,.24)}
.planner-day--low{--planner-level:rgba(71,156,159,.34)}
.planner-day--medium{--planner-level:rgba(67,133,151,.45)}
.planner-day--high{--planner-level:rgba(89,115,145,.58)}
.planner-day--very-high{--planner-level:rgba(110,91,128,.68)}
.planner-day--unknown{opacity:.45}
.planner-day.is-selected{border-color:var(--atlantic);box-shadow:inset 0 0 0 1px var(--atlantic),0 4px 16px rgba(8,127,140,.10);background:var(--accent-soft)}
.planner-day.is-selected i{height:5px;background:var(--atlantic)}
.planner-legend{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:14px;color:var(--muted);font-size:.69rem}
.planner-legend-scale{display:flex;gap:3px}
.planner-legend-scale i{display:block;width:16px;height:5px;border-radius:999px}
.planner-legend-scale .lvl-very-low{background:rgba(70,169,164,.24)}
.planner-legend-scale .lvl-low{background:rgba(71,156,159,.34)}
.planner-legend-scale .lvl-medium{background:rgba(67,133,151,.45)}
.planner-legend-scale .lvl-high{background:rgba(89,115,145,.58)}
.planner-legend-scale .lvl-very-high{background:rgba(110,91,128,.68)}
.planner-method-note{margin:12px 0 0;color:var(--muted);font-size:.7rem;line-height:1.5}
.planner-side{display:grid;gap:14px}
.planner-selected-card{background:linear-gradient(145deg,var(--surface-strong),var(--surface-soft))}
.planner-selected-value{display:block;margin:14px 0 5px;font-size:clamp(2rem,4vw,3.2rem);letter-spacing:-.055em;line-height:1;font-variant-numeric:tabular-nums}
.planner-selected-card p{margin:0;color:var(--muted);font-size:.82rem;line-height:1.5}
.planner-comparison{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.planner-comparison div{padding:9px;border-radius:10px;background:var(--surface-subtle);text-align:center}
.planner-comparison span,.planner-comparison strong{display:block}
.planner-comparison span{font-size:.62rem;color:var(--muted)}
.planner-comparison strong{margin-top:3px;font-size:.83rem}
.planner-comparison .is-current{background:var(--accent-soft)}
.planner-ranking-head{margin-bottom:11px}
.planner-ranking-list{display:grid;gap:7px}
.planner-ranking-item{
  appearance:none;-webkit-appearance:none;width:100%;display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;
  padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface-subtle);color:var(--text);font:inherit;cursor:pointer;text-align:left
}
.planner-ranking-item:hover{border-color:var(--line-strong);background:var(--surface-soft)}
.planner-rank{width:25px;height:25px;display:grid;place-items:center;border-radius:9px;background:var(--foam);color:var(--atlantic);font-size:.68rem;font-weight:900}
.planner-rank-range strong,.planner-rank-range small{display:block}
.planner-rank-range strong{font-size:.76rem;text-transform:capitalize}
.planner-rank-range small{margin-top:2px;color:var(--muted);font-size:.65rem}
.planner-rank-value{font-size:.74rem;font-weight:900;color:var(--atlantic-dark);white-space:nowrap}
.planner-highest-details{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.planner-highest-details summary{cursor:pointer;color:var(--muted);font-size:.73rem;font-weight:800}
.planner-highest-details .planner-ranking-list{margin-top:9px}

@media(max-width:900px){
  .planner-layout{grid-template-columns:1fr}
  .planner-side{grid-template-columns:1fr 1fr}
}
@media(max-width:620px){
  .historical-shortcuts{display:block}
  .shortcut-group+.shortcut-group{margin-top:10px}
  .shortcut-group{align-items:flex-start}
  .shortcut-label{width:100%}
  .planner-section{padding-top:30px}
  .planner-head{display:block}
  .planner-duration{display:inline-flex;margin-top:12px}
  .planner-calendar-card,.planner-selected-card,.planner-ranking-card{padding:16px}
  .planner-side{grid-template-columns:1fr}
  .planner-weekdays,.planner-calendar{gap:4px}
  .planner-day{min-height:43px;border-radius:10px;font-size:.73rem}
  .planner-day-spacer{min-height:43px}
  .planner-legend{justify-content:space-between;gap:5px}
  .planner-legend-scale i{width:12px}
  .planner-selected-value{font-size:2.15rem}
  .planner-ranking-item{grid-template-columns:26px 1fr;gap:8px}
  .planner-rank-value{grid-column:2;justify-self:start;margin-top:-4px}
}
@media(hover:none) and (pointer:coarse){
  .shortcut-btn,.planner-duration-btn,.planner-nav-btn{min-height:40px}
  .planner-day{min-height:48px}
}
.planner-day.is-unavailable-start{opacity:.38;cursor:not-allowed;filter:saturate(.6)}
.planner-day.is-unavailable-start:hover{transform:none;box-shadow:none;border-color:var(--line)}


/* === P2.2 · HISTORICAL CLARITY + FULL-MONTH CALENDAR === */
.context-badge{display:inline-flex;align-items:center;gap:6px;margin:0 0 9px;padding:6px 9px;border-radius:999px;font-size:.67rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase;border:1px solid var(--line)}
.context-badge-forecast{color:var(--atlantic-dark);background:rgba(44,170,180,.09);border-color:rgba(44,170,180,.20)}
.context-badge-history{color:#526a78;background:rgba(89,116,132,.08);border-color:rgba(89,116,132,.18)}
html[data-theme="dark"] .context-badge-history{color:#b9cbcf;background:rgba(173,199,204,.06)}
.context-purpose{margin:5px 0 0;color:var(--muted);font-size:.75rem}
.historical-intro-strong{margin-top:44px;padding-top:34px;border-top:2px solid var(--line-strong)}
.historical-intro-strong h2{margin-top:0}.historical-intro-strong p strong{color:var(--text)}
.result-head-simple{align-items:center}
.historical-summary-card{padding:28px;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(260px,.95fr);gap:22px;background:linear-gradient(135deg,var(--surface-strong),var(--surface-soft))}
.historical-summary-primary{min-width:0}.historical-summary-value{display:block;margin-top:8px;font-size:clamp(2.8rem,6vw,4.8rem);line-height:.95;letter-spacing:-.065em;font-variant-numeric:tabular-nums}.historical-summary-label{display:block;margin-top:8px;font-size:1.06rem;font-weight:800}.historical-summary-dots{align-self:center;box-shadow:none}
.historical-summary-facts{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding-top:18px;border-top:1px solid var(--line)}
.summary-fact{padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--surface-subtle)}.summary-fact span,.summary-fact strong,.summary-fact small{display:block}.summary-fact span{color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.01em}.summary-fact strong{margin-top:5px;font-size:1.05rem}.summary-fact small{margin-top:5px;color:var(--muted);line-height:1.45}
.historical-summary-explain{grid-column:1/-1;padding:15px 17px;border-radius:16px;background:var(--accent-soft)}.historical-summary-explain strong{display:block;margin-bottom:4px;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--atlantic-dark)}.historical-summary-explain p{margin:0;font-size:.89rem;line-height:1.55}
.advanced-history-details{margin-top:12px;border:1px solid var(--line);border-radius:19px;background:var(--surface-subtle);overflow:hidden}.advanced-history-details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px}.advanced-history-details>summary::-webkit-details-marker{display:none}.advanced-history-details>summary strong,.advanced-history-details>summary small{display:block}.advanced-history-details>summary small{margin-top:3px;color:var(--muted);font-size:.74rem}.advanced-history-details[open]>summary>span:last-child{transform:rotate(180deg)}.advanced-history-body{padding:12px;border-top:1px solid var(--line)}
.technical-only{opacity:.72}.technical-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.technical-metrics>div{padding:12px;border-radius:12px;background:var(--surface-soft)}.technical-metrics span,.technical-metrics strong,.technical-metrics small{display:block}.technical-metrics span{color:var(--muted);font-size:.7rem}.technical-metrics strong{margin-top:4px}.technical-metrics small{margin-top:3px;color:var(--muted)}.patterns-advanced-wrap{padding-top:12px}.patterns-advanced-details{margin-top:0}
.planner-day{min-height:64px;padding:10px 5px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;overflow:hidden;background:var(--surface-subtle)}
.planner-day::before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:5px;background:var(--planner-level,#8ba0aa);border-radius:13px 13px 0 0}.planner-day-number{font-size:.9rem;font-weight:900;line-height:1}.planner-day-pct{font-size:.68rem;font-weight:850;color:var(--muted);line-height:1}.planner-day i{display:none}
.planner-day--very-low{--planner-level:#4b9bd3}.planner-day--low{--planner-level:#49ae7d}.planner-day--medium{--planner-level:#6f858d}.planner-day--high{--planner-level:#e1ad39}.planner-day--very-high{--planner-level:#e17d3a}
html[data-theme="dark"] .planner-day--very-low{--planner-level:#5aaee4}html[data-theme="dark"] .planner-day--low{--planner-level:#55c08a}html[data-theme="dark"] .planner-day--medium{--planner-level:#60737b}html[data-theme="dark"] .planner-day--high{--planner-level:#f0bd43}html[data-theme="dark"] .planner-day--very-high{--planner-level:#ed8b46}
.planner-day.is-selected{border-color:var(--aqua);box-shadow:inset 0 0 0 2px var(--aqua),0 5px 18px rgba(8,127,140,.13);background:rgba(43,174,169,.09)}.planner-day.is-selected::after{content:"";position:absolute;inset:5px;border:1px solid rgba(43,174,169,.22);border-radius:9px;pointer-events:none}.planner-day:disabled{opacity:.42;cursor:not-allowed}.planner-day.is-unavailable-start{opacity:1;cursor:pointer;filter:none}.planner-day.is-unavailable-start:hover{transform:translateY(-1px);box-shadow:var(--shadow-soft);border-color:var(--line-strong)}
.planner-legend-detailed{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:16px}.planner-legend-detailed span{display:flex;align-items:center;justify-content:center;gap:5px;padding:7px 5px;border:1px solid var(--line);border-radius:10px;background:var(--surface-subtle);font-size:.62rem;text-align:center}.planner-legend-detailed i{width:16px;height:5px;border-radius:999px;flex:0 0 auto}.planner-legend-detailed b{font-weight:700;color:var(--muted)}.planner-legend-detailed .lvl-very-low{background:#4b9bd3}.planner-legend-detailed .lvl-low{background:#49ae7d}.planner-legend-detailed .lvl-medium{background:#6f858d}.planner-legend-detailed .lvl-high{background:#e1ad39}.planner-legend-detailed .lvl-very-high{background:#e17d3a}
.planner-ranking-item{grid-template-columns:28px 1fr auto;grid-template-areas:"rank range value" "rank action action"}.planner-rank{grid-area:rank}.planner-rank-range{grid-area:range}.planner-rank-value{grid-area:value}.planner-rank-action{grid-area:action;margin-top:2px;color:var(--atlantic-dark);font-size:.67rem;font-weight:850}
@media(max-width:820px){.historical-summary-card{grid-template-columns:1fr}.historical-summary-dots{max-width:none}.historical-summary-facts,.historical-summary-explain{grid-column:1}.planner-legend-detailed{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.historical-intro-strong{margin-top:30px;padding-top:26px}.historical-summary-card{padding:20px;gap:17px}.historical-summary-value{font-size:3rem}.historical-summary-facts{grid-template-columns:1fr}.planner-day{min-height:56px;padding-inline:2px}.planner-day-number{font-size:.8rem}.planner-day-pct{font-size:.6rem}.planner-legend-detailed{grid-template-columns:1fr 1fr}.planner-legend-detailed span{justify-content:flex-start;padding-inline:8px}.technical-metrics{grid-template-columns:1fr}}


/* === P2.3 · CALENDAR_SEMANTICS_AND_DAY_DETAIL === */
.planner-day--very-low{--planner-level:#4b9bd3}.planner-day--low{--planner-level:#43ad73}.planner-day--medium{--planner-level:#e3c13c}.planner-day--high{--planner-level:#e9842c}.planner-day--very-high{--planner-level:#d94b4b}
html[data-theme="dark"] .planner-day--very-low{--planner-level:#5aace0}html[data-theme="dark"] .planner-day--low{--planner-level:#54c486}html[data-theme="dark"] .planner-day--medium{--planner-level:#f1cf47}html[data-theme="dark"] .planner-day--high{--planner-level:#f3953c}html[data-theme="dark"] .planner-day--very-high{--planner-level:#ee6262}
.planner-legend-detailed{grid-template-columns:repeat(5,minmax(0,1fr))}.planner-legend-detailed .lvl-very-low{background:#4b9bd3}.planner-legend-detailed .lvl-low{background:#43ad73}.planner-legend-detailed .lvl-medium{background:#e3c13c}.planner-legend-detailed .lvl-high{background:#e9842c}.planner-legend-detailed .lvl-very-high{background:#d94b4b}
.planner-day-detail-card{padding:22px}.planner-day-detail-card h3{margin:3px 0 14px;font-size:1.15rem}.planner-day-detail-empty{color:var(--muted);font-size:.86rem;line-height:1.55}.planner-day-detail-content{display:grid;gap:15px}.planner-detail-frequency{position:relative;padding:14px 15px 13px;border:1px solid var(--line);border-radius:15px;background:var(--surface-soft);overflow:hidden}.planner-detail-frequency::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--detail-level,var(--line-strong))}.planner-detail-level--very-low{--detail-level:#4b9bd3}.planner-detail-level--low{--detail-level:#43ad73}.planner-detail-level--medium{--detail-level:#e3c13c}.planner-detail-level--high{--detail-level:#e9842c}.planner-detail-level--very-high{--detail-level:#d94b4b}.planner-detail-frequency span,.planner-detail-frequency strong,.planner-detail-frequency small{display:block}.planner-detail-frequency span{font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.planner-detail-frequency strong{margin-top:3px;font-size:2rem;line-height:1;letter-spacing:-.045em}.planner-detail-frequency small{margin-top:6px;color:var(--muted);font-size:.76rem}.planner-detail-separator{height:1px;background:var(--line)}.planner-detail-intensity{display:grid;gap:9px}.planner-detail-caption{font-size:.72rem;color:var(--muted);line-height:1.35}.planner-detail-intensity>strong{font-size:.98rem}.planner-detail-intensity>small{color:var(--muted);font-size:.69rem;line-height:1.45}.planner-intensity-list{display:grid;gap:7px;margin-top:2px}.planner-intensity-row{display:grid;grid-template-columns:78px 1fr 38px;align-items:center;gap:8px;font-size:.72rem}.planner-intensity-track{height:6px;border-radius:999px;background:var(--accent-soft);overflow:hidden}.planner-intensity-track i{display:block;height:100%;border-radius:inherit;background:var(--atlantic)}.planner-intensity-row strong{text-align:right;font-size:.7rem;font-variant-numeric:tabular-nums}
@media(max-width:820px){.planner-legend-detailed{grid-template-columns:1fr 1fr}.planner-day-detail-card{padding:18px}}@media(max-width:560px){.planner-intensity-row{grid-template-columns:70px 1fr 34px}.planner-detail-frequency strong{font-size:1.75rem}}


/* === FORECAST_CLOSURE_V1 === */
/* Cierre visual del forecast: menos ruido, levante visible por borde y 3 días simultáneos en móvil. */
.forecast-day-card.is-levante{
  border:2px solid #df4b4b;
  box-shadow:0 0 0 1px rgba(223,75,75,.08),var(--shadow-soft);
}
html[data-theme="dark"] .forecast-day-card.is-levante{
  border-color:#ef5b5b;
  box-shadow:0 0 0 1px rgba(239,91,91,.10),var(--shadow-soft);
}
.forecast-wind-row>span:last-child{min-width:0}

@media(max-width:820px){
  .forecast-days{
    grid-template-columns:repeat(3,minmax(0,1fr));
    overflow:visible;
    padding-bottom:0;
    scroll-snap-type:none;
  }
}

@media(max-width:560px){
  .forecast-hero{padding:16px 12px}
  .forecast-head{gap:8px}
  .forecast-head h2{font-size:clamp(1.35rem,6vw,1.7rem)}
  .forecast-source-note{font-size:.74rem}
  .forecast-days{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px;
    margin:14px 0 0;
    padding:0;
    overflow:visible;
  }
  .forecast-day-card{
    min-width:0;
    padding:10px 8px;
    border-radius:14px;
    box-shadow:none;
  }
  .forecast-day-card.is-levante{border-width:2px}
  .forecast-day-top{gap:4px}
  .forecast-day-label{font-size:.57rem;letter-spacing:.06em}
  .forecast-day-date{margin-top:1px;font-size:.67rem}
  .forecast-weather-icon{font-size:1.18rem}
  .forecast-temp-row{display:block;margin-top:12px}
  .forecast-temp-row strong{display:block;font-size:clamp(1.05rem,5.2vw,1.28rem);white-space:nowrap}
  .forecast-temp-row span{display:block;margin-top:4px;font-size:.59rem;line-height:1.2;white-space:normal;min-height:1.45em}
  .forecast-wind-row{
    gap:5px;
    margin-top:9px;
    padding:7px 5px;
    border-radius:10px;
  }
  .wind-compass{width:28px;height:28px;font-size:.62rem}
  .forecast-wind-row strong{font-size:.67rem;white-space:nowrap}
  .hourly-details{margin-top:10px}
  .forecast-footer-note{font-size:.66rem}
}

@media(max-width:380px){
  .forecast-hero{padding-inline:10px}
  .forecast-days{gap:4px}
  .forecast-day-card{padding:9px 6px}
  .forecast-day-label{font-size:.53rem}
  .forecast-day-date{font-size:.62rem}
  .forecast-weather-icon{font-size:1.05rem}
  .forecast-temp-row strong{font-size:1.02rem}
  .forecast-temp-row span{font-size:.55rem}
  .wind-compass{width:25px;height:25px}
  .forecast-wind-row strong{font-size:.61rem}
}


/* === FORECAST_CLOSURE_V1.1 ===
   Mobile: 3 forecast cards always visible in one row, no horizontal scroll.
   The AEMET source remains in the right badge; the left context badge says only PREVISIÓN.
*/
@media(max-width:560px){
  .forecast-hero{
    padding:14px 10px;
  }
  .forecast-head{
    gap:6px;
  }
  .forecast-head h2{
    font-size:clamp(1.22rem,5.6vw,1.55rem);
    line-height:1.08;
  }
  .forecast-source-note{
    font-size:.70rem;
    line-height:1.35;
  }
  .forecast-aemet-badge{
    min-height:28px;
    padding:4px 8px;
    font-size:.60rem;
  }
  .forecast-days{
    width:100%;
    max-width:100%;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:4px;
    margin:12px 0 0 !important;
    padding:0 !important;
    overflow:visible !important;
  }
  .forecast-day-card{
    width:auto;
    min-width:0 !important;
    max-width:100%;
    padding:8px 5px;
    border-radius:12px;
    overflow:hidden;
  }
  .forecast-day-top{
    min-width:0;
    gap:2px;
  }
  .forecast-day-top>div{
    min-width:0;
  }
  .forecast-day-label{
    font-size:.49rem;
    letter-spacing:.035em;
    white-space:nowrap;
  }
  .forecast-day-date{
    font-size:.56rem;
    white-space:nowrap;
  }
  .forecast-weather-icon{
    flex:0 0 auto;
    font-size:.92rem;
  }
  .forecast-temp-row{
    min-width:0;
    display:block;
    margin-top:8px;
  }
  .forecast-temp-row strong{
    display:block;
    max-width:100%;
    font-size:clamp(.90rem,4.4vw,1.08rem);
    line-height:1;
    letter-spacing:-.055em;
    white-space:nowrap;
  }
  .forecast-temp-row span{
    display:block;
    min-height:0;
    margin-top:3px;
    font-size:.49rem;
    line-height:1.15;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .forecast-wind-row{
    min-width:0;
    display:grid;
    grid-template-columns:23px minmax(0,1fr);
    gap:4px;
    margin-top:7px;
    padding:5px 4px;
    border-radius:9px;
  }
  .wind-compass{
    width:23px;
    height:23px;
    min-width:23px;
    font-size:.48rem;
    line-height:1;
  }
  .forecast-wind-row>span:last-child{
    min-width:0;
    overflow:hidden;
  }
  .forecast-wind-row strong{
    display:block;
    max-width:100%;
    font-size:.56rem;
    line-height:1.05;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:clip;
  }
  .hourly-details summary{
    padding:13px 12px;
  }
  .hourly-details summary strong{
    font-size:.78rem;
  }
  .hourly-details summary small{
    font-size:.65rem;
  }
}

@media(max-width:390px){
  .forecast-hero{padding-inline:8px}
  .forecast-days{gap:3px}
  .forecast-day-card{padding:7px 4px}
  .forecast-day-label{font-size:.46rem}
  .forecast-day-date{font-size:.52rem}
  .forecast-weather-icon{font-size:.84rem}
  .forecast-temp-row strong{font-size:.86rem}
  .forecast-temp-row span{font-size:.45rem}
  .forecast-wind-row{grid-template-columns:21px minmax(0,1fr);gap:3px;padding:4px 3px}
  .wind-compass{width:21px;height:21px;min-width:21px;font-size:.44rem}
  .forecast-wind-row strong{font-size:.52rem}
}

@media(max-width:340px){
  .forecast-day-label{font-size:.42rem}
  .forecast-day-date{font-size:.48rem}
  .forecast-temp-row strong{font-size:.78rem}
  .forecast-temp-row span{font-size:.42rem}
  .forecast-wind-row{grid-template-columns:19px minmax(0,1fr)}
  .wind-compass{width:19px;height:19px;min-width:19px;font-size:.40rem}
  .forecast-wind-row strong{font-size:.47rem}
}


/* === FORECAST_CLOSURE_V1.2 ===
   Mobile correction: exactly 3 daily cards visible at once, no horizontal scroll.
   Removes the redundant municipal AEMET footer from markup (location.php).
*/
@media (max-width: 820px){
  .forecast-days{
    display:grid !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    overflow:visible !important;
    overflow-x:visible !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    scroll-snap-type:none !important;
  }
  .forecast-day-card{
    min-width:0 !important;
    width:auto !important;
    max-width:none !important;
    scroll-snap-align:none !important;
  }
}

@media (max-width: 560px){
  .forecast-hero{
    padding:14px 10px 12px !important;
    overflow:hidden;
  }
  .forecast-head h2{
    font-size:1.40rem;
    line-height:1.06;
  }
  .forecast-source-note{
    margin-top:8px;
    font-size:.72rem;
    line-height:1.35;
  }
  .forecast-days{
    gap:5px !important;
    margin-top:12px !important;
  }
  .forecast-day-card{
    padding:9px 6px !important;
    border-radius:13px;
    overflow:hidden;
  }
  .forecast-day-top{
    gap:2px;
  }
  .forecast-day-top > div{
    min-width:0;
  }
  .forecast-day-label{
    font-size:.55rem;
    line-height:1.1;
    letter-spacing:.045em;
    white-space:nowrap;
  }
  .forecast-day-date{
    margin-top:3px;
    font-size:.62rem;
    line-height:1.1;
    white-space:nowrap;
  }
  .forecast-weather-icon{
    flex:0 0 auto;
    font-size:.92rem;
  }
  .forecast-temp-row{
    display:block !important;
    margin-top:10px !important;
    min-width:0;
  }
  .forecast-temp-row strong{
    display:block;
    font-size:1.17rem !important;
    line-height:1;
    letter-spacing:-.05em;
    white-space:nowrap;
  }
  .forecast-temp-row span{
    display:block;
    margin-top:4px;
    min-height:1.3em;
    font-size:.52rem !important;
    line-height:1.15;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .forecast-wind-row{
    display:grid !important;
    grid-template-columns:25px minmax(0,1fr) !important;
    align-items:center;
    gap:4px !important;
    margin-top:8px !important;
    padding:6px 4px !important;
    border-radius:9px;
  }
  .wind-compass{
    width:25px !important;
    height:25px !important;
    min-width:25px !important;
    font-size:.48rem !important;
  }
  .forecast-wind-row > span:last-child{
    min-width:0;
    overflow:hidden;
  }
  .forecast-wind-row strong{
    font-size:.60rem !important;
    line-height:1.1;
    white-space:nowrap;
  }
  .hourly-details{
    margin-top:11px;
  }
  .hourly-details summary{
    padding:13px 12px;
  }
  .hourly-details summary strong{
    font-size:.78rem;
  }
  .hourly-details summary small{
    font-size:.64rem;
    line-height:1.25;
  }
}

@media (max-width: 390px){
  .forecast-hero{padding-inline:8px !important}
  .forecast-days{gap:4px !important}
  .forecast-day-card{padding:8px 5px !important}
  .forecast-day-label{font-size:.51rem}
  .forecast-day-date{font-size:.58rem}
  .forecast-weather-icon{font-size:.84rem}
  .forecast-temp-row strong{font-size:1.05rem !important}
  .forecast-temp-row span{font-size:.48rem !important}
  .forecast-wind-row{grid-template-columns:23px minmax(0,1fr) !important;padding:5px 3px !important}
  .wind-compass{width:23px !important;height:23px !important;min-width:23px !important;font-size:.44rem !important}
  .forecast-wind-row strong{font-size:.55rem !important}
}

/* === FORECAST_CLOSURE_V1.3 ===
   Mobile fix: keep wind direction fully inside each of the three compact cards.
   Root cause: desktop .wind-compass used fixed 22px + 16px grid rows, which overflowed
   the 23-25px mobile compass and pushed NO/O/SO outside the card.
*/
@media (max-width:560px){
  .forecast-wind-row{
    grid-template-columns:28px minmax(0,1fr) !important;
    min-height:36px;
    padding:5px 4px !important;
    overflow:hidden;
  }
  .wind-compass{
    width:28px !important;
    height:30px !important;
    min-width:28px !important;
    display:grid !important;
    grid-template-columns:1fr !important;
    grid-template-rows:15px 11px !important;
    place-items:center !important;
    padding:2px 0 1px !important;
    overflow:hidden !important;
  }
  .wind-compass .wind-arrow{
    font-size:.72rem !important;
    line-height:1 !important;
  }
  .wind-compass b{
    font-size:.48rem !important;
    line-height:1 !important;
    letter-spacing:.02em !important;
  }
  .forecast-wind-row strong{
    font-size:.58rem !important;
    line-height:1.05 !important;
  }
}
@media (max-width:390px){
  .forecast-wind-row{
    grid-template-columns:26px minmax(0,1fr) !important;
    min-height:34px;
  }
  .wind-compass{
    width:26px !important;
    height:28px !important;
    min-width:26px !important;
    grid-template-rows:14px 10px !important;
  }
  .wind-compass .wind-arrow{font-size:.66rem !important}
  .wind-compass b{font-size:.44rem !important}
  .forecast-wind-row strong{font-size:.54rem !important}
}

/* === P2.4 · CALENDAR_DAY_DETAIL_UX_V1 ===
   Una casilla = frecuencia. El panel contextual explica frecuencia + intensidad.
   No introduce índice de playa, riesgo, franjas horarias ni otros vientos. */
.planner-day-detail-card{
  position:relative;
  overflow:hidden;
}
.planner-day-detail-card::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:3px;
  background:linear-gradient(90deg,var(--atlantic),var(--aqua));
  opacity:.75;
}
@media(min-width:901px){
  .planner-day-detail-card{position:sticky;top:18px}
}
.planner-day-detail-card h3{
  text-transform:capitalize;
  font-size:1.22rem;
  letter-spacing:-.025em;
}
.planner-detail-frequency{
  padding:16px 16px 15px 18px;
  border-radius:16px;
}
.planner-detail-frequency::before{width:6px}
.planner-detail-frequency-main{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  margin-top:6px;
}
.planner-detail-frequency-main>strong{
  margin:0;
  font-size:2.55rem;
  line-height:.92;
  letter-spacing:-.06em;
  font-variant-numeric:tabular-nums;
}
.planner-detail-frequency-main>span{
  color:var(--muted);
  font-size:.78rem;
  line-height:1.25;
  text-align:right;
  white-space:nowrap;
}
.planner-detail-frequency-main>span b{color:var(--text);font-size:1rem}
.planner-detail-frequency p{
  margin:10px 0 0;
  color:var(--muted);
  font-size:.74rem;
  line-height:1.42;
}
.planner-detail-intensity{
  padding-top:3px;
  gap:10px;
}
.planner-detail-caption{
  color:var(--text);
  font-size:.74rem;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.075em;
}
.planner-detail-dominant{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface-subtle);
}
.planner-detail-dominant span{
  color:var(--muted);
  font-size:.7rem;
}
.planner-detail-dominant strong{
  font-size:.84rem;
  text-transform:uppercase;
  letter-spacing:.045em;
}
.planner-intensity-list{
  padding:2px 0 1px;
  gap:8px;
}
.planner-intensity-row{
  grid-template-columns:74px 1fr 38px;
  gap:9px;
}
.planner-intensity-row>span:first-child{font-weight:750}
.planner-intensity-track{
  height:7px;
  background:color-mix(in srgb,var(--line) 70%,transparent);
}
.planner-intensity-track i{
  background:linear-gradient(90deg,var(--atlantic),var(--aqua));
}
.planner-detail-intensity>small{
  display:block;
  margin-top:2px;
  padding-top:9px;
  border-top:1px solid var(--line);
}
/* Evita asociar el color de frecuencia con la fuerza: las barras de intensidad
   usan una única gama turquesa, no el semáforo del calendario. */
@media(max-width:900px){
  .planner-day-detail-card{
    scroll-margin-top:16px;
    order:-1;
  }
}
@media(max-width:560px){
  .planner-detail-frequency-main>strong{font-size:2.2rem}
  .planner-detail-frequency-main>span{font-size:.7rem}
  .planner-detail-frequency-main>span b{font-size:.88rem}
  .planner-intensity-row{grid-template-columns:64px 1fr 34px;font-size:.68rem}
  .planner-detail-dominant{align-items:flex-start;flex-direction:column;gap:3px}
}


/* === P2.4.1 · MOBILE DAY DETAIL SHEET ===
   En desktop se mantiene el detalle lateral. En <=900px el detalle contextual
   sale del flujo y se presenta como bottom sheet inmediato. */
.planner-day-sheet{display:none}
@media(max-width:900px){
  #planner-day-detail{display:none !important}
  .planner-side{display:grid !important;grid-template-columns:1fr !important}
  .planner-day-sheet{
    position:fixed;inset:0;z-index:1000;display:block;
    pointer-events:none;visibility:hidden;
  }
  .planner-day-sheet-backdrop{
    position:absolute;inset:0;border:0;border-radius:0;padding:0;
    background:rgba(4,16,18,.58);opacity:0;
    transition:opacity .18s ease;cursor:pointer;
  }
  .planner-day-sheet-panel{
    position:absolute;left:0;right:0;bottom:0;
    max-height:min(72dvh,680px);overflow:auto;overscroll-behavior:contain;
    padding:8px max(18px,env(safe-area-inset-right)) max(20px,calc(env(safe-area-inset-bottom) + 14px)) max(18px,env(safe-area-inset-left));
    border:1px solid var(--line-strong);border-bottom:0;
    border-radius:24px 24px 0 0;background:var(--surface-strong);
    box-shadow:0 -24px 60px rgba(0,0,0,.24);
    transform:translateY(105%);transition:transform .22s cubic-bezier(.22,.72,.18,1);
    -webkit-overflow-scrolling:touch;
  }
  html[data-theme="dark"] .planner-day-sheet-panel{background:#14292c}
  .planner-day-sheet.is-open{pointer-events:auto;visibility:visible}
  .planner-day-sheet.is-open .planner-day-sheet-backdrop{opacity:1}
  .planner-day-sheet.is-open .planner-day-sheet-panel{transform:translateY(0)}
  html.planner-sheet-open,html.planner-sheet-open body{overflow:hidden}
  .planner-day-sheet-handle{
    width:42px;height:5px;margin:2px auto 10px;border-radius:999px;background:var(--line-strong)
  }
  .planner-day-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
  .planner-day-sheet-head h3{margin:3px 0 0;text-transform:capitalize;font-size:1.35rem;letter-spacing:-.03em}
  .planner-day-sheet-close{
    width:42px;height:42px;min-width:42px;padding:0;border:1px solid var(--line-strong);border-radius:14px;
    display:grid;place-items:center;background:var(--surface-subtle);color:var(--text);font-size:1.65rem;line-height:1;cursor:pointer
  }
  .planner-day-sheet-content{display:grid;gap:12px}
  .planner-day-sheet-content .planner-detail-frequency{margin:0}
  .planner-day-sheet-content .planner-detail-intensity{margin:0}
  .planner-day-sheet-content.planner-day-detail-empty{padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface-subtle);color:var(--muted)}
}
@media(max-width:560px){
  .planner-day-sheet-panel{max-height:68dvh;border-radius:22px 22px 0 0;padding-left:16px;padding-right:16px}
  .planner-day-sheet-head h3{font-size:1.22rem}
  .planner-day-sheet-close{width:40px;height:40px;min-width:40px;border-radius:13px}
}
@media(prefers-reduced-motion:reduce){
  .planner-day-sheet-panel,.planner-day-sheet-backdrop{transition:none !important}
}


/* === P2.4.2 · MOBILE DAY DETAIL SHEET HARDENING ===
   Portal a body + stacking superior + soporte móvil/tablet hasta 1024 CSS px. */
@media(max-width:1024px), (pointer:coarse){
  #planner-day-detail{display:none !important}
  .planner-day-sheet{
    position:fixed !important;inset:0 !important;z-index:2147483000 !important;
    display:block !important;pointer-events:none;visibility:hidden;
    isolation:isolate;contain:layout style;
  }
  .planner-day-sheet.is-open{pointer-events:auto !important;visibility:visible !important}
  .planner-day-sheet-backdrop{z-index:0}
  .planner-day-sheet-panel{
    z-index:1;position:absolute !important;left:0 !important;right:0 !important;bottom:0 !important;
    width:100% !important;max-width:none !important;
    max-height:min(74dvh,720px) !important;
  }
  .planner-day-sheet.is-open .planner-day-sheet-panel{transform:translate3d(0,0,0) !important}
}

/* === P2.4.3 · NATIVE MOBILE DAY DIALOG ===
   Sustituye el sheet CSS-only por <dialog>. El navegador gestiona la top layer,
   evitando clipping/stacking en Safari iOS. */
.planner-day-sheet{display:none}
@media(max-width:1024px), (pointer:coarse){
  #planner-day-detail{display:none !important}
  dialog.planner-day-sheet{
    box-sizing:border-box;
    width:100vw !important;
    max-width:none !important;
    height:100dvh !important;
    max-height:none !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    color:var(--text);
    overflow:visible !important;
  }
  dialog.planner-day-sheet:not([open]){display:none !important}
  dialog.planner-day-sheet[open]{
    display:block !important;
    position:fixed !important;
    inset:0 !important;
  }
  dialog.planner-day-sheet::backdrop{
    background:rgba(4,16,18,.62);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
  }
  .planner-day-sheet-panel{
    box-sizing:border-box;
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:0 !important;
    width:100% !important;
    max-width:none !important;
    max-height:min(74dvh,720px) !important;
    overflow:auto !important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    padding:8px max(18px,env(safe-area-inset-right)) max(20px,calc(env(safe-area-inset-bottom) + 14px)) max(18px,env(safe-area-inset-left)) !important;
    border:1px solid var(--line-strong) !important;
    border-bottom:0 !important;
    border-radius:24px 24px 0 0 !important;
    background:var(--surface-strong) !important;
    box-shadow:0 -24px 60px rgba(0,0,0,.28) !important;
    transform:none !important;
  }
  html[data-theme="dark"] .planner-day-sheet-panel{background:#14292c !important}
  html.planner-sheet-open,html.planner-sheet-open body{overflow:hidden}
}
@media(max-width:560px){
  .planner-day-sheet-panel{max-height:72dvh !important;border-radius:22px 22px 0 0 !important;padding-left:16px !important;padding-right:16px !important}
}


/* === FORECAST_LAYOUT_HOURLY_LEVANTE_V1 ===
   Mobile hierarchy: HOY full width; MAÑANA + PASADO below.
   Desktop hourly rows are compact and left-aligned.
   Strict levante is red; SE borderline is orange.
*/
.hourly-details.has-levante{
  border:2px solid #df4b4b;
  box-shadow:0 0 0 1px rgba(223,75,75,.08);
}
html[data-theme="dark"] .hourly-details.has-levante{border-color:#ef5b5b}
.hourly-details.has-borderline:not(.has-levante){
  border:2px solid #e9842c;
  box-shadow:0 0 0 1px rgba(233,132,44,.08);
}
.hourly-row{
  grid-template-columns:68px 36px 60px 190px auto;
  justify-content:start;
  column-gap:14px;
  min-height:54px;
}
.hourly-row.is-levante{
  border-left:4px solid #df4b4b;
  background:rgba(223,75,75,.055);
  padding-left:10px;
}
html[data-theme="dark"] .hourly-row.is-levante{
  border-left-color:#ef5b5b;
  background:rgba(239,91,91,.075);
}
.hourly-row.is-borderline{
  border-left:4px solid #e9842c;
  background:rgba(233,132,44,.05);
  padding-left:10px;
}
.hourly-status{
  justify-self:start;
  white-space:nowrap;
}
.hourly-status.is-levante-badge{
  background:rgba(223,75,75,.14);
  color:#b42323;
  border:1px solid rgba(223,75,75,.22);
}
html[data-theme="dark"] .hourly-status.is-levante-badge{color:#ff9999}
.hourly-status.is-borderline-badge{
  background:rgba(233,132,44,.14);
  color:#9b5416;
  border:1px solid rgba(233,132,44,.22);
}
html[data-theme="dark"] .hourly-status.is-borderline-badge{color:#ffb36d}
.hourly-status-empty{display:none !important}

@media(max-width:560px){
  .forecast-hero{padding:16px 12px 14px !important}
  .forecast-days{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:9px !important;
    width:100% !important;
    margin:14px 0 0 !important;
    padding:0 !important;
    overflow:visible !important;
  }
  .forecast-day-card{
    min-width:0 !important;
    width:auto !important;
    padding:13px 12px !important;
    border-radius:16px !important;
    overflow:hidden;
  }
  .forecast-day-card:first-child{
    grid-column:1 / -1;
    padding:15px 14px !important;
  }
  .forecast-day-label{font-size:.66rem !important;letter-spacing:.065em !important}
  .forecast-day-date{font-size:.74rem !important;margin-top:3px !important}
  .forecast-weather-icon{font-size:1.15rem !important}
  .forecast-temp-row{margin-top:14px !important}
  .forecast-temp-row strong{font-size:1.55rem !important;line-height:1 !important}
  .forecast-temp-row span{font-size:.69rem !important;margin-top:5px !important;min-height:0 !important}
  .forecast-wind-row{
    display:grid !important;
    grid-template-columns:34px minmax(0,1fr) !important;
    gap:8px !important;
    min-height:46px !important;
    margin-top:12px !important;
    padding:7px 9px !important;
    border-radius:12px !important;
  }
  .wind-compass{
    width:34px !important;height:34px !important;min-width:34px !important;
    grid-template-rows:18px 12px !important;
    padding:1px 0 !important;
  }
  .wind-compass .wind-arrow{font-size:.82rem !important}
  .wind-compass b{font-size:.55rem !important}
  .forecast-wind-row strong{font-size:.74rem !important;line-height:1.05 !important}
  .forecast-day-card:first-child .forecast-day-top{align-items:center}
  .forecast-day-card:first-child .forecast-temp-row{
    display:flex !important;align-items:baseline;gap:10px;
  }
  .forecast-day-card:first-child .forecast-temp-row span{
    margin-top:0 !important;font-size:.74rem !important;
  }
  .forecast-day-card:first-child .forecast-wind-row{max-width:220px}
  .hourly-details{margin-top:12px !important}
  .forecast-hourly{padding:4px 10px 10px !important}
  .hourly-row{
    position:relative;
    grid-template-columns:50px 26px 46px minmax(0,1fr) !important;
    gap:7px !important;
    min-height:56px;
    padding-right:2px;
  }
  .hourly-row.is-levante,.hourly-row.is-borderline{padding-left:7px}
  .hourly-status{
    position:absolute;
    right:4px;
    top:7px;
    padding:3px 6px;
    font-size:.57rem;
  }
  .hourly-wind{font-size:.72rem;padding-right:54px}
  .hourly-temp{font-size:.93rem}
}

@media(max-width:380px){
  .forecast-days{gap:7px !important}
  .forecast-day-card{padding:11px 9px !important}
  .forecast-day-card:first-child{padding:13px 11px !important}
  .forecast-temp-row strong{font-size:1.38rem !important}
  .forecast-temp-row span{font-size:.63rem !important}
  .forecast-wind-row{grid-template-columns:31px minmax(0,1fr) !important;gap:6px !important;padding:6px 7px !important}
  .wind-compass{width:31px !important;height:32px !important;min-width:31px !important}
  .forecast-wind-row strong{font-size:.68rem !important}
}

/* === FORECAST_HOURLY_RESPONSIVE_GRID_V1 ===
   Cumulative forecast UX update:
   - >=1200px: hourly forecast in 3 chronological columns.
   - 768-1199px: 2 columns.
   - <768px: 1 column.
   - Larger weather icons on mobile.
   Presentation only: forecast/classifier semantics are unchanged.
*/

/* Tablet / compact desktop: two chronological cells per row */
@media (min-width:768px) {
  .forecast-hourly{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    padding:6px 16px 12px;
  }
  .forecast-hourly > .hourly-row{
    min-width:0;
    grid-template-columns:52px 30px 48px minmax(0,1fr) auto;
    column-gap:9px;
    padding:0 14px;
    min-height:56px;
  }
  .forecast-hourly > .hourly-row:nth-child(even){
    border-left:1px solid rgba(68,124,128,.12);
  }
  .forecast-hourly > .small-copy{
    grid-column:1 / -1;
  }
}

/* Wide desktop: three chronological cells per row */
@media (min-width:1200px) {
  .forecast-hourly{
    grid-template-columns:repeat(3,minmax(0,1fr));
    padding:6px 12px 12px;
  }
  .forecast-hourly > .hourly-row{
    grid-template-columns:50px 28px 44px minmax(92px,1fr) auto;
    column-gap:8px;
    padding:0 12px;
    min-height:58px;
  }
  .forecast-hourly > .hourly-row:nth-child(even){
    border-left:0;
  }
  .forecast-hourly > .hourly-row:not(:nth-child(3n + 1)){
    border-left:1px solid rgba(68,124,128,.12);
  }
  .hourly-status{
    font-size:.62rem;
    padding:3px 6px;
  }
  .hourly-wind{
    min-width:0;
    white-space:nowrap;
  }
}

/* Phones: retain the readable single-column timeline and enlarge weather icons. */
@media (max-width:767px) {
  .forecast-hourly{
    display:block !important;
  }
  .forecast-weather-icon{
    font-size:1.55rem !important;
    line-height:1 !important;
  }
  .forecast-day-card:first-child .forecast-weather-icon{
    font-size:1.7rem !important;
  }
  .hourly-sky{
    font-size:1.4rem !important;
    line-height:1 !important;
  }
}

@media (max-width:380px) {
  .forecast-weather-icon{font-size:1.42rem !important}
  .forecast-day-card:first-child .forecast-weather-icon{font-size:1.55rem !important}
  .hourly-sky{font-size:1.3rem !important}
}


/* === FORECAST_FINAL_POLISH_V1 ===
   - Mobile: center the hourly disclosure heading/subheading while keeping the chevron at the right edge.
   - Desktop/tablet remain left-aligned.
   Presentation only.
*/
@media (max-width:767px) {
  .hourly-details summary{
    position:relative;
    display:block !important;
    text-align:center;
    padding-left:46px !important;
    padding-right:46px !important;
  }
  .hourly-details summary > span:first-child{
    display:block;
    width:100%;
    text-align:center;
  }
  .hourly-details summary strong,
  .hourly-details summary small{
    text-align:center;
  }
  .hourly-details summary .hourly-chevron{
    position:absolute;
    right:16px;
    top:50%;
    transform:translateY(-50%);
  }
  .hourly-details[open] summary .hourly-chevron{
    transform:translateY(-50%) rotate(180deg);
  }
}

/* === FORECAST_MOBILE_HOURLY_CENTER_V1 ===
   Mobile-only polish: center the hourly timeline as a coherent tabular block.
   Keeps each column aligned across rows and leaves desktop/tablet layouts untouched.
*/
@media (max-width:767px) {
  .forecast-hourly{
    padding-left:12px !important;
    padding-right:12px !important;
  }
  .forecast-hourly > .hourly-row{
    width:min(100%, 360px);
    margin-left:auto;
    margin-right:auto;
    grid-template-columns:58px 30px 52px minmax(0,1fr) !important;
    column-gap:10px !important;
    justify-content:center;
  }
  .forecast-hourly > .hourly-row time,
  .forecast-hourly > .hourly-row .hourly-sky,
  .forecast-hourly > .hourly-row .hourly-temp{
    justify-self:center;
  }
  .forecast-hourly > .hourly-row .hourly-wind{
    justify-self:start;
    min-width:0;
  }
}

@media (max-width:380px) {
  .forecast-hourly > .hourly-row{
    width:min(100%, 330px);
    grid-template-columns:54px 28px 48px minmax(0,1fr) !important;
    column-gap:8px !important;
  }
}


/* === LOCATION_HERO_HIERARCHY_AND_MOBILE_WEATHER_ICONS_V1 ===
   Municipality is the primary H1; beach/zone becomes a quiet subtitle.
   Mobile weather glyphs are enlarged without changing forecast data/layout.
*/
.hero-place{
  margin:6px 0 0;
  color:var(--muted);
  font-size:clamp(1.05rem,2vw,1.3rem);
  font-weight:700;
  letter-spacing:-.02em;
  line-height:1.15;
}

@media (max-width:767px){
  .location-hero h1{
    margin-bottom:0;
  }
  .hero-place{
    margin-top:7px;
    font-size:1.18rem;
    font-weight:700;
    color:var(--muted);
  }
  .forecast-weather-icon{
    font-size:1.9rem !important;
    line-height:1 !important;
  }
  .forecast-day-card:first-child .forecast-weather-icon{
    font-size:2.08rem !important;
  }
}

@media (max-width:380px){
  .forecast-weather-icon{font-size:1.76rem !important}
  .forecast-day-card:first-child .forecast-weather-icon{font-size:1.92rem !important}
}


/* === LOCATION_HERO_IDENTITY_V2 ===
   Final hero hierarchy: product definition -> municipality -> beach/zone.
   Removes descriptive copy from the hero and makes the beach a distinct location label.
*/
.location-hero .eyebrow{
  margin-bottom:12px;
  color:var(--atlantic);
  font-weight:900;
  letter-spacing:.135em;
}

.hero-place{
  margin:10px 0 0;
  color:var(--aqua);
  font-size:clamp(1.08rem,1.75vw,1.34rem);
  font-weight:850;
  letter-spacing:.075em;
  line-height:1.1;
  text-transform:uppercase;
}

.location-hero h1{
  margin-bottom:0;
}

@media (max-width:767px){
  .location-hero .eyebrow{
    margin-bottom:10px;
    font-size:.72rem;
    line-height:1.35;
  }
  .hero-place{
    margin-top:9px;
    font-size:1.06rem;
    letter-spacing:.065em;
  }
}

/* === FORECAST_DAY_ROLLOVER_AND_ICON_POLISH_V1 ===
   Mobile weather glyphs: one final readability step.
   Day ordering itself is handled in forecast.js against Europe/Madrid.
*/
@media (max-width:767px){
  .forecast-weather-icon{
    font-size:2.22rem !important;
    line-height:1 !important;
  }
  .forecast-day-card:first-child .forecast-weather-icon{
    font-size:2.48rem !important;
  }
}
@media (max-width:380px){
  .forecast-weather-icon{font-size:2.02rem !important}
  .forecast-day-card:first-child .forecast-weather-icon{font-size:2.26rem !important}
}

/* === MOBILE_DATE_PICKER_DISABLED_DAYS_V1 ===
   Mobile/touch date picker owned by LevanteHoy so unavailable dates can be
   communicated visually. The native input remains the source of truth/fallback.
*/
.lh-date-overlay{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:18px;background:rgba(3,18,20,.62);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.lh-date-overlay.hidden{display:none!important}
.lh-date-dialog{width:min(100%,430px);max-height:min(86vh,680px);overflow:auto;border:1px solid var(--line);border-radius:28px;background:var(--card);color:var(--text);box-shadow:0 28px 90px rgba(0,0,0,.32);padding:20px}
.lh-date-head,.lh-date-nav{display:flex;align-items:center;justify-content:space-between;gap:12px}
.lh-date-head{margin-bottom:14px}
.lh-date-title{font-size:.9rem;color:var(--muted);letter-spacing:.035em}
.lh-date-close,.lh-date-nav-btn{appearance:none;border:1px solid var(--line);background:var(--card-soft);color:var(--text);border-radius:14px;display:grid;place-items:center;cursor:pointer}
.lh-date-close{width:38px;height:38px;font-size:1.5rem;line-height:1}
.lh-date-nav-btn{width:44px;height:44px;font-size:1.7rem}
.lh-date-nav-btn:disabled{opacity:.28;cursor:not-allowed}
.lh-date-month{text-transform:capitalize;font-size:1.16rem}
.lh-date-weekdays,.lh-date-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.lh-date-weekdays{margin:20px 0 8px;color:var(--muted);font-size:.72rem;font-weight:900;text-align:center}
.lh-date-weekdays span{padding:6px 0}
.lh-date-day{appearance:none;aspect-ratio:1;border:1px solid transparent;border-radius:14px;background:transparent;color:var(--text);font:inherit;font-weight:800;cursor:pointer;transition:background .14s,border-color .14s,opacity .14s,transform .08s}
.lh-date-day:not(:disabled):active{transform:scale(.96)}
.lh-date-day:not(:disabled):hover{background:var(--card-soft);border-color:var(--line)}
.lh-date-day.is-today:not(.is-selected){border-color:rgba(46,202,199,.72);box-shadow:inset 0 0 0 1px rgba(46,202,199,.18)}
.lh-date-day.is-selected{background:var(--aqua);border-color:var(--aqua);color:#06272a}
.lh-date-day.is-disabled,.lh-date-day:disabled{opacity:.26;color:var(--muted);background:rgba(127,145,147,.08);cursor:not-allowed;text-decoration:none}
html.lh-date-open,html.lh-date-open body{overflow:hidden}

@media (max-width:767px){
  .lh-date-dialog{width:min(100%,420px);padding:18px;border-radius:26px}
  .lh-date-grid{gap:5px}
  .lh-date-day{border-radius:13px;font-size:1rem;min-height:42px}
  /* Remove the native calendar affordance on touch/mobile: our picker owns it. */
  #date-from::-webkit-calendar-picker-indicator,#date-to::-webkit-calendar-picker-indicator{opacity:0;width:0;padding:0;margin:0}
}

/* MUNICIPAL VISUAL STATS V1
   Resumen visual 100 % asociado a la localidad activa. La frecuencia mensual
   y la intensidad por franja son métricas distintas y no comparten escala. */
.visual-stats-section{padding-top:42px}
.visual-stats-card{padding:34px;overflow:hidden}
.visual-stats-head{max-width:760px}
.visual-stats-head h2{margin:4px 0 8px;font-size:clamp(1.9rem,4vw,3rem);line-height:1.04;letter-spacing:-.045em}
.visual-stats-group{margin-top:30px}
.visual-stats-group-title{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:16px}
.visual-stats-group-title h3{margin:0;font-size:1.16rem;letter-spacing:-.02em}
.visual-stats-group-title span{color:var(--muted);font-size:.76rem;text-align:right}
.visual-stat-bars{display:grid;gap:13px}
.visual-stat-row{display:grid;grid-template-columns:minmax(92px,150px) minmax(120px,1fr) minmax(72px,94px);align-items:center;gap:14px}
.visual-stat-label{font-size:.96rem;color:var(--text)}
.visual-stat-track{display:block;height:10px;border-radius:999px;overflow:hidden;background:rgba(83,126,128,.14)}
.visual-stat-track>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--atlantic),var(--aqua))}
.visual-stat-value{text-align:right;font-size:1.03rem;font-variant-numeric:tabular-nums;letter-spacing:-.015em}
.visual-stats-source-note{margin:26px 0 0;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:.76rem;line-height:1.5}
@media(max-width:560px){
  .visual-stats-section{padding-top:28px}
  .visual-stats-card{padding:22px 18px;border-radius:24px}
  .visual-stats-head h2{font-size:2rem}
  .visual-stats-group{margin-top:26px}
  .visual-stats-group-title{display:block}
  .visual-stats-group-title span{display:block;margin-top:4px;text-align:left}
  .visual-stat-row{grid-template-columns:92px minmax(80px,1fr) 82px;gap:10px}
  .visual-stat-label{font-size:.9rem}
  .visual-stat-value{font-size:.96rem}
}

/* MUNICIPAL_TEMPORAL_WINDOW_V1 */
.planner-detail-temporal{display:grid;gap:8px;padding:14px 15px;border:1px solid var(--line);border-radius:15px;background:var(--surface-subtle)}
.planner-detail-temporal-main{display:flex;align-items:baseline;justify-content:space-between;gap:14px}
.planner-detail-temporal-main strong{font-size:1.28rem;letter-spacing:-.025em;color:var(--text)}
.planner-detail-temporal-main span{font-size:.72rem;color:var(--muted);text-align:right}
.planner-detail-temporal small{color:var(--muted);font-size:.69rem;line-height:1.45}
@media(max-width:560px){.planner-detail-temporal-main{align-items:flex-start;flex-direction:column;gap:3px}.planner-detail-temporal-main span{text-align:left}}

/* === PLANNER_FULL_WIDTH_MODAL_DETAIL_V1 ===
   Calendar occupies the available viewport width on every device.
   Day detail is always contextual/modal; it never steals horizontal space.
   Month navigation semantics are unchanged. */
#planner-section.shell{
  width:calc(100% - 32px);
  max-width:none;
  margin-inline:16px;
}
.planner-layout{
  grid-template-columns:minmax(0,1fr) !important;
  width:100%;
}
.planner-calendar-card{
  width:100%;
  min-width:0;
}
#planner-day-detail{display:none !important}
.planner-side{
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:start;
}

/* Native dialog on every viewport. Desktop/tablet: centered window. */
dialog.planner-day-sheet{
  box-sizing:border-box;
  width:100vw !important;
  max-width:none !important;
  height:100dvh !important;
  max-height:none !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  color:var(--text);
  overflow:visible !important;
}
dialog.planner-day-sheet:not([open]){display:none !important}
dialog.planner-day-sheet[open]{
  display:grid !important;
  place-items:center;
  position:fixed !important;
  inset:0 !important;
  padding:24px !important;
}
dialog.planner-day-sheet::backdrop{
  background:rgba(4,16,18,.62);
  backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px);
}
.planner-day-sheet-panel{
  box-sizing:border-box;
  position:relative !important;
  inset:auto !important;
  width:min(620px,100%) !important;
  max-width:620px !important;
  max-height:min(86dvh,820px) !important;
  overflow:auto !important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:22px !important;
  border:1px solid var(--line-strong) !important;
  border-radius:24px !important;
  background:var(--surface-strong) !important;
  box-shadow:0 28px 80px rgba(0,0,0,.30) !important;
  transform:none !important;
}
.planner-day-sheet-handle{display:none}
html[data-theme="dark"] .planner-day-sheet-panel{background:#14292c !important}
html.planner-sheet-open,html.planner-sheet-open body{overflow:hidden}

@media(max-width:1024px){
  #planner-section.shell{width:calc(100% - 24px);margin-inline:12px}
  .planner-side{grid-template-columns:1fr}
  dialog.planner-day-sheet[open]{
    place-items:end stretch;
    padding:0 !important;
  }
  .planner-day-sheet-panel{
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:0 !important;
    width:100% !important;
    max-width:none !important;
    max-height:min(78dvh,760px) !important;
    padding:8px max(18px,env(safe-area-inset-right)) max(20px,calc(env(safe-area-inset-bottom) + 14px)) max(18px,env(safe-area-inset-left)) !important;
    border-bottom:0 !important;
    border-radius:24px 24px 0 0 !important;
    box-shadow:0 -24px 60px rgba(0,0,0,.28) !important;
  }
  .planner-day-sheet-handle{display:block}
}
@media(max-width:560px){
  #planner-section.shell{width:calc(100% - 12px);margin-inline:6px}
  .planner-calendar-card{padding:14px 8px}
  .planner-weekdays,.planner-calendar{gap:3px}
  .planner-day{min-height:58px;border-radius:11px}
  .planner-day-sheet-panel{
    max-height:76dvh !important;
    border-radius:22px 22px 0 0 !important;
    padding-left:16px !important;
    padding-right:16px !important;
  }
}


/* LEVANTE_SPEED_CALENDAR_V1 — km/h = solo levante */
.planner-day-levante-speed{display:inline-flex!important;align-items:center;justify-content:center;gap:3px;margin-top:2px;padding:3px 6px;border-radius:7px;background:var(--accent-soft);color:var(--text);font-size:.62rem;font-weight:850;line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums}
.planner-detail-levante-speed{padding:13px 15px;border:1px solid var(--line);border-radius:15px;background:var(--surface-soft);display:grid;gap:5px}
.planner-detail-levante-speed>strong{font-size:1.6rem;line-height:1;letter-spacing:-.035em}
.planner-detail-levante-speed>strong small{font-size:.72rem;font-weight:800;color:var(--muted)}
.planner-detail-levante-speed>small{color:var(--muted);font-size:.69rem;line-height:1.4}
@media(max-width:560px){.planner-day-levante-speed{font-size:.52rem;padding:3px 4px}.planner-day{min-height:62px}}


/* PLANNER_INDEPENDENT_CALENDAR_V1 */
.planner-calendar-error{grid-column:1/-1;margin:0;padding:24px;border:1px dashed var(--line-strong);border-radius:14px;color:var(--muted);text-align:center}

/* === CALENDAR_LEVANTE_SPEED_LEGEND_IOS_STABILITY_V1 === */
/* km/h: escala independiente, aplicada solo al chip de intensidad de levante. */
.planner-day-levante-speed--very-soft{background:#0876d1!important;color:#fff!important}
.planner-day-levante-speed--soft{background:#2e9d50!important;color:#fff!important}
.planner-day-levante-speed--moderate{background:#f2bd00!important;color:#17202a!important}
.planner-day-levante-speed--strong{background:#ef6c00!important;color:#fff!important}
.planner-day-levante-speed--very-strong{background:#d90429!important;color:#fff!important}
.planner-day-levante-speed--unknown{background:var(--surface-soft)!important;color:var(--muted)!important}
.planner-speed-legend{margin-top:10px}
.planner-speed-legend i.spd-very-soft{background:#0876d1}.planner-speed-legend i.spd-soft{background:#2e9d50}.planner-speed-legend i.spd-moderate{background:#f2bd00}.planner-speed-legend i.spd-strong{background:#ef6c00}.planner-speed-legend i.spd-very-strong{background:#d90429}

/* Modal estable: overlay fijo sin top-layer nativa, blur, scroll-lock ni touch handlers. */
.planner-day-sheet[hidden]{display:none!important}
.planner-day-sheet.is-open{
  display:grid!important;position:fixed!important;inset:0!important;z-index:2147483000!important;
  place-items:center;padding:24px!important;background:rgba(4,16,18,.62)!important;
  overflow:auto!important;-webkit-overflow-scrolling:touch;
}
.planner-day-sheet.is-open .planner-day-sheet-panel{
  position:relative!important;inset:auto!important;width:min(620px,100%)!important;max-width:620px!important;
  max-height:min(86vh,820px)!important;overflow:auto!important;-webkit-overflow-scrolling:touch;
  padding:22px!important;border:1px solid var(--line-strong)!important;border-radius:24px!important;
  background:var(--surface-strong)!important;box-shadow:0 28px 80px rgba(0,0,0,.30)!important;transform:none!important;
}
@media(max-width:1024px){
  .planner-day-sheet.is-open{place-items:end stretch;padding:0!important}
  .planner-day-sheet.is-open .planner-day-sheet-panel{position:relative!important;width:100%!important;max-width:none!important;max-height:78vh!important;border-radius:24px 24px 0 0!important;border-bottom:0!important;padding:12px max(18px,env(safe-area-inset-right)) max(20px,calc(env(safe-area-inset-bottom) + 14px)) max(18px,env(safe-area-inset-left))!important}
}
@media(max-width:560px){.planner-day-levante-speed{font-size:.58rem;padding:3px 4px}.planner-speed-legend{grid-template-columns:1fr 1fr}}
.planner-day-sheet.is-open{visibility:visible!important;pointer-events:auto!important;contain:none!important;isolation:auto!important}

/* === CALENDAR_LEGEND_SEPARATION_COMPACT_SPEED_CHIP_V1 === */
/* Dos variables, dos leyendas: evita interpretar frecuencia (%) e intensidad (km/h) como una sola escala. */
.planner-legend-group{
  margin-top:16px;
  padding:13px 14px 14px;
  border:1px solid var(--line);
  border-radius:15px;
  background:var(--surface-subtle);
}
.planner-legend-group + .planner-legend-group{margin-top:12px}
.planner-legend-title{
  margin:0;
  color:var(--text);
  font-size:.78rem;
  font-weight:900;
  line-height:1.25;
  letter-spacing:.01em;
}
.planner-legend-group--frequency .planner-legend-title{color:var(--atlantic)}
.planner-legend-group--speed .planner-legend-title{color:var(--aqua)}
.planner-legend-help{
  margin:5px 0 0;
  color:var(--muted);
  font-size:.69rem;
  line-height:1.42;
}
.planner-legend-group .planner-legend-detailed{margin-top:10px}

/* Chip de km/h: estructura estable (icono / valor / unidad), sin depender del ancho variable de un emoji. */
.planner-day-levante-speed{
  box-sizing:border-box;
  width:max-content;
  max-width:100%;
  min-width:0;
  gap:3px;
  overflow:hidden;
  text-overflow:clip;
}
.planner-speed-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:.8em;
  flex:0 0 .8em;
  font-family:Arial,sans-serif;
  font-size:1.12em;
  font-weight:900;
  line-height:1;
  transform:translateY(-.02em);
}
.planner-speed-number{font-weight:900;line-height:1;font-variant-numeric:tabular-nums}
.planner-speed-unit{font-weight:800;line-height:1}

@media(max-width:560px){
  .planner-legend-group{padding:12px}
  .planner-legend-title{font-size:.72rem}
  .planner-legend-help{font-size:.64rem}
  .planner-legend-group .planner-legend-detailed{grid-template-columns:1fr 1fr;gap:7px}
  .planner-legend-group .planner-legend-detailed span{min-height:48px;align-content:center}

  /* En 7 columnas no cabe de forma legible "icono + 27 km/h" en una sola línea.
     Conservamos icono y número grandes, y bajamos solo la unidad a una segunda línea. */
  .planner-day{min-height:70px;padding:7px 1px 5px;gap:3px}
  .planner-day-levante-speed{
    width:calc(100% - 2px);
    min-height:27px;
    margin-top:1px;
    padding:3px 1px 2px;
    display:grid!important;
    grid-template-columns:auto auto;
    grid-template-rows:auto auto;
    column-gap:2px;
    row-gap:0;
    place-content:center;
    border-radius:6px;
    font-size:.62rem;
    white-space:normal;
  }
  .planner-speed-icon{grid-column:1;grid-row:1 / span 2;align-self:center;width:.78em;font-size:1.05em}
  .planner-speed-number{grid-column:2;grid-row:1;font-size:.68rem;align-self:end}
  .planner-speed-unit{grid-column:2;grid-row:2;font-size:.47rem;letter-spacing:-.02em;align-self:start}
}

@media(max-width:390px){
  .planner-calendar{gap:4px}
  .planner-day{min-height:68px;border-radius:10px}
  .planner-day-number{font-size:.79rem}
  .planner-day-pct{font-size:.58rem}
  .planner-day-levante-speed{font-size:.59rem}
  .planner-speed-number{font-size:.65rem}
  .planner-speed-unit{font-size:.45rem}
}

/* ========================================================================== */
/* TREND_STATS_V1 · evolución anual municipal 1996–2025                       */
/* ========================================================================== */
.trend-section{margin-top:28px;margin-bottom:28px}
.trend-card{padding:28px;border-radius:28px}
.trend-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.72fr);gap:24px;align-items:start}
.trend-head h2{margin:4px 0 8px;font-size:clamp(1.7rem,3vw,2.55rem);line-height:1.06}
.trend-period-switch{padding:14px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--surface) 88%,transparent)}
.trend-period-switch>span{display:block;margin-bottom:9px;font-size:.78rem;color:var(--muted);font-weight:800}
.trend-period-switch>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.trend-period-btn{min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--text);cursor:pointer}
.trend-period-btn strong,.trend-period-btn small{display:block}.trend-period-btn small{margin-top:2px;color:var(--muted);font-size:.68rem}
.trend-period-btn.is-active{border-color:transparent;background:linear-gradient(135deg,#36d4c6,#149fa7);color:#fff;box-shadow:0 8px 24px rgba(30,190,183,.18)}
.trend-period-btn.is-active small{color:rgba(255,255,255,.84)}
.trend-summary{margin-top:18px;padding:20px;border:1px solid var(--line);border-radius:20px;background:color-mix(in srgb,var(--surface) 91%,transparent);display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1.35fr);gap:18px 22px}
.trend-summary-main{display:flex;gap:14px;align-items:flex-start}.trend-summary-main h3{margin:2px 0 8px;font-size:1.25rem;color:var(--aqua)}.trend-summary-main p{margin:0;color:var(--muted);line-height:1.55}
.trend-summary-icon{display:grid;place-items:center;width:52px;height:52px;flex:0 0 52px;border-radius:50%;background:color-mix(in srgb,var(--aqua) 18%,transparent);color:var(--aqua);font-size:1.55rem;font-weight:900}
.trend-metrics{display:grid;grid-template-columns:repeat(4,1fr);border-left:1px solid var(--line)}
.trend-metrics>div{padding:2px 14px;border-right:1px solid var(--line);text-align:center}.trend-metrics>div:last-child{border-right:0}.trend-metrics span,.trend-metrics small{display:block;color:var(--muted);font-size:.7rem}.trend-metrics strong{display:block;margin:5px 0 2px;font-size:1.45rem;color:var(--text);font-variant-numeric:tabular-nums}.trend-metrics>div:first-child strong{color:var(--aqua)}
.trend-caution{grid-column:1/-1;margin:0;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:.78rem;line-height:1.5}
.trend-chart-card,.trend-periods-card{margin-top:18px;padding:20px;border:1px solid var(--line);border-radius:20px;background:color-mix(in srgb,var(--surface) 91%,transparent)}
.trend-chart-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.trend-chart-head h3,.trend-periods-card h3{margin:0 0 10px;font-size:1.16rem}
.trend-chart-legend{display:flex;flex-wrap:wrap;gap:16px;color:var(--muted);font-size:.74rem}.trend-chart-legend span{display:inline-flex;align-items:center;gap:7px}.trend-dot-key{display:inline-block;flex:0 0 auto;width:19px;height:2px;background:var(--muted);position:relative}.trend-dot-key:after{content:"";position:absolute;width:7px;height:7px;border:2px solid var(--muted);border-radius:50%;background:var(--surface);left:6px;top:-4px}.trend-line-key{display:inline-block;flex:0 0 auto;width:22px;height:3px;border-radius:9px;background:var(--aqua)}
.trend-data-details{position:relative}.trend-data-details>summary{list-style:none;cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:.72rem;font-weight:800}.trend-data-details>summary::-webkit-details-marker{display:none}.trend-data-details[open]{width:min(100%,660px)}.trend-data-details[open]>summary{margin-left:auto;width:max-content}
.trend-data-grid{margin-top:10px;display:grid;grid-template-columns:repeat(5,minmax(90px,1fr));gap:6px;max-height:250px;overflow:auto;padding:8px;border-radius:12px;background:color-mix(in srgb,var(--bg) 30%,transparent)}.trend-data-grid>*{display:block}.trend-data-grid span{font-size:.68rem;color:var(--muted)}.trend-data-grid strong{font-size:.76rem}.trend-data-grid small{font-size:.62rem;color:var(--muted)}
.trend-chart{width:100%;margin-top:16px;aspect-ratio:760/280;min-height:210px}.trend-chart svg{display:block;width:100%;height:100%;overflow:visible}.trend-grid-line{stroke:var(--line);stroke-width:1}.trend-axis-text,.trend-axis-label{fill:var(--muted);font-size:10px}.trend-axis-label{font-size:9px;font-weight:800;letter-spacing:.08em}.trend-annual-line{fill:none;stroke:color-mix(in srgb,var(--muted) 80%,transparent);stroke-width:1.6}.trend-annual-dot{fill:var(--surface);stroke:color-mix(in srgb,var(--muted) 85%,transparent);stroke-width:2}.trend-moving-line{fill:none;stroke:var(--aqua);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.trend-chart-note{margin:8px 0 0;color:var(--muted);font-size:.72rem}
.trend-period-bars{display:grid;gap:12px}.trend-period-row{display:grid;grid-template-columns:120px minmax(120px,1fr) 130px;gap:14px;align-items:center}.trend-period-row>strong{font-size:.95rem}.trend-period-track{height:14px;border-radius:999px;background:color-mix(in srgb,var(--muted) 14%,transparent);overflow:hidden}.trend-period-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--aqua) 60%,#fff),var(--aqua))}.trend-period-row>b{text-align:right;font-size:1.25rem;color:var(--aqua);font-variant-numeric:tabular-nums}.trend-period-row>b small{font-size:.65rem;color:var(--muted);font-weight:700}.trend-period-conclusion{margin:16px 0 0;padding:12px 14px;border:1px solid color-mix(in srgb,var(--aqua) 28%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--aqua) 6%,transparent);color:var(--muted);font-size:.78rem;line-height:1.5}
.trend-methodology{margin-top:18px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--surface) 91%,transparent)}.trend-methodology>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:16px 18px}.trend-methodology>summary::-webkit-details-marker{display:none}.trend-methodology>summary span:first-child strong,.trend-methodology>summary span:first-child small{display:block}.trend-methodology>summary small{margin-top:2px;color:var(--muted);font-size:.68rem}.trend-methodology-body{padding:0 18px 18px;color:var(--muted);font-size:.76rem;line-height:1.55}.trend-methodology-body ul{margin:0 0 10px;padding-left:18px}.trend-methodology-body p{margin:0}

@media(max-width:900px){
  .trend-head{grid-template-columns:1fr}.trend-summary{grid-template-columns:1fr}.trend-metrics{border-left:0;border-top:1px solid var(--line);padding-top:14px}.trend-data-grid{grid-template-columns:repeat(3,minmax(80px,1fr))}
}
@media(max-width:620px){
  .trend-card{padding:16px;border-radius:22px}.trend-period-switch>div{grid-template-columns:1fr 1fr}.trend-period-btn{padding:9px 7px}.trend-period-btn strong{font-size:.74rem}.trend-period-btn small{font-size:.58rem}
  .trend-summary{padding:14px;gap:14px}.trend-summary-icon{width:42px;height:42px;flex-basis:42px}.trend-summary-main h3{font-size:1.03rem}.trend-summary-main p{font-size:.75rem}
  .trend-metrics{grid-template-columns:1fr 1fr;gap:0}.trend-metrics>div{padding:10px 8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.trend-metrics>div:nth-child(2n){border-right:0}.trend-metrics>div:nth-last-child(-n+2){border-bottom:0}.trend-metrics strong{font-size:1.2rem}
  .trend-chart-card,.trend-periods-card{padding:14px}.trend-chart-head{display:block}.trend-data-details{margin-top:10px}.trend-data-details[open]{width:100%}.trend-data-details[open]>summary{margin-left:0}.trend-data-grid{grid-template-columns:repeat(2,minmax(80px,1fr))}.trend-chart{min-height:190px;overflow:hidden}.trend-chart svg{min-width:0;transform-origin:left center}.trend-period-row{grid-template-columns:96px 1fr 94px;gap:8px}.trend-period-row>strong{font-size:.75rem}.trend-period-row>b{font-size:.95rem}.trend-period-row>b small{display:block;font-size:.56rem}
}

/* === PLANNER_DAY_DETAIL_COMPACT_V1 ===
   Resumen móvil sin pérdida de métricas: elimina copy redundante, compacta bloques
   y colorea la intensidad habitual con la misma escala del calendario. */
.planner-day-sheet-head{margin-bottom:10px!important;padding-bottom:10px!important}
.planner-day-sheet-head h3{margin:0!important;font-size:1.28rem!important;line-height:1.15!important}
.planner-day-sheet-content.planner-day-detail-content{gap:10px!important}
.planner-detail-frequency{padding:11px 13px!important}
.planner-detail-frequency-main{margin-top:3px!important}
.planner-detail-frequency-main>strong{font-size:1.95rem!important}
.planner-detail-frequency p{display:none!important}
.planner-detail-primary-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.planner-detail-levante-speed,.planner-detail-temporal{padding:11px 13px!important;gap:4px!important}
.planner-detail-speed-main{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.planner-detail-speed-main>strong{font-size:1.55rem;line-height:1;letter-spacing:-.035em}
.planner-detail-speed-main>strong small{font-size:.68rem;color:inherit;opacity:.86}
.planner-detail-speed-main>b{font-size:.72rem;text-transform:uppercase;letter-spacing:.045em}
.planner-detail-levante-speed>small{font-size:.62rem!important;line-height:1.25!important;color:inherit!important;opacity:.82}
.planner-detail-speed--very-soft{background:#0876d1!important;color:#fff!important;border-color:#0876d1!important}
.planner-detail-speed--soft{background:#2e9d50!important;color:#fff!important;border-color:#2e9d50!important}
.planner-detail-speed--moderate{background:#f2bd00!important;color:#17202a!important;border-color:#f2bd00!important}
.planner-detail-speed--strong{background:#ef6c00!important;color:#fff!important;border-color:#ef6c00!important}
.planner-detail-speed--very-strong{background:#d90429!important;color:#fff!important;border-color:#d90429!important}
.planner-detail-speed--very-soft .planner-detail-caption,.planner-detail-speed--soft .planner-detail-caption,.planner-detail-speed--strong .planner-detail-caption,.planner-detail-speed--very-strong .planner-detail-caption{color:#fff!important;opacity:.9}
.planner-detail-speed--moderate .planner-detail-caption{color:#17202a!important;opacity:.82}
.planner-detail-temporal-main{gap:8px!important}
.planner-detail-temporal-main strong{font-size:1.05rem!important}
.planner-detail-temporal-main span{font-size:.67rem!important}
.planner-detail-temporal-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted)}
.planner-detail-temporal-meta>span{font-size:.72rem;font-weight:850;color:var(--text)}
.planner-detail-temporal-meta>small{font-size:.6rem;line-height:1.25;text-align:right}
.planner-detail-intensity{gap:6px!important}
.planner-detail-intensity-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.planner-detail-intensity-head>strong{font-size:.7rem;color:var(--text);white-space:nowrap}
.planner-detail-dominant{display:none!important}
.planner-intensity-list{gap:4px!important;margin-top:0!important}
.planner-intensity-row{grid-template-columns:68px 1fr 34px!important;gap:7px!important;font-size:.66rem!important}
.planner-intensity-track{height:5px!important}
.planner-detail-intensity>small{font-size:.61rem!important;line-height:1.3!important;margin-top:2px}
.planner-detail-intensity>small b{color:var(--text)}

@media(max-width:560px){
  .planner-day-sheet.is-open .planner-day-sheet-panel{max-height:88vh!important;padding-top:10px!important;padding-bottom:max(14px,env(safe-area-inset-bottom))!important}
  .planner-day-sheet-head{margin-bottom:8px!important;padding-bottom:8px!important}
  .planner-day-sheet-head h3{font-size:1.18rem!important}
  .planner-day-sheet-content.planner-day-detail-content{gap:8px!important}
  .planner-detail-frequency{padding:9px 11px!important}
  .planner-detail-frequency-main>strong{font-size:1.72rem!important}
  .planner-detail-frequency-main>span{font-size:.66rem!important}
  .planner-detail-primary-grid{grid-template-columns:1fr;gap:8px}
  .planner-detail-levante-speed,.planner-detail-temporal{padding:9px 11px!important}
  .planner-detail-speed-main>strong{font-size:1.38rem}
  .planner-detail-temporal-main{flex-direction:row!important;align-items:baseline!important}
  .planner-detail-temporal-main span{text-align:right!important}
  .planner-detail-temporal-meta>small{max-width:70%}
  .planner-detail-intensity-head{align-items:center}
  .planner-detail-intensity-head>strong{font-size:.64rem}
  .planner-intensity-row{grid-template-columns:60px 1fr 32px!important;font-size:.62rem!important}
}
\n\n/* === PLANNER_DAY_DETAIL_BALANCED_V2 ===\n   Evita que el contenido del bottom-sheet se disperse de extremo a extremo.\n   Mantiene el panel ancho para las barras, pero agrupa cada métrica visualmente. */\n.planner-detail-speed-main{justify-content:flex-start!important;gap:9px!important;flex-wrap:wrap}\n.planner-detail-speed-main>b{display:inline-flex;align-items:center;padding:3px 7px;border:1px solid currentColor;border-radius:999px;line-height:1;opacity:.94}\n.planner-detail-temporal-main{justify-content:flex-start!important;gap:9px!important;flex-wrap:wrap}\n.planner-detail-temporal-main>span{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;background:var(--surface-soft);color:var(--muted);white-space:nowrap}\n.planner-detail-temporal-meta{justify-content:flex-start!important;gap:7px!important;flex-wrap:wrap}\n.planner-detail-temporal-meta>small{max-width:none!important;text-align:left!important}\n.planner-detail-intensity-head{display:block!important}\n.planner-detail-intensity-head>strong{display:inline-block;margin-top:3px;padding:2px 7px;border-radius:999px;background:var(--surface-soft);color:var(--muted)!important;font-weight:800}\n.planner-intensity-row{grid-template-columns:minmax(62px,76px) minmax(100px,1fr) 38px!important}\n.planner-detail-frequency-main{justify-content:flex-start!important;gap:14px!important;flex-wrap:wrap}\n.planner-detail-frequency-main>span{margin-left:0!important;white-space:nowrap}\n@media(max-width:560px){\n  .planner-day-sheet-panel{padding-left:16px!important;padding-right:16px!important}\n  .planner-day-sheet-content.planner-day-detail-content{max-width:100%;margin-inline:auto}\n  .planner-detail-frequency,.planner-detail-levante-speed,.planner-detail-temporal{border-radius:15px!important}\n  .planner-detail-speed-main{align-items:center!important}\n  .planner-detail-speed-main>b{font-size:.61rem!important}\n  .planner-detail-temporal-main>span{font-size:.61rem!important}\n  .planner-detail-temporal-meta{font-size:.62rem!important}\n  .planner-detail-intensity-head>strong{font-size:.61rem!important}\n  .planner-intensity-row{grid-template-columns:64px minmax(80px,1fr) 32px!important;gap:6px!important}\n}\n
/* === FORECAST_LEVANTE_CARD_SIGNAL_V2 ===
   Acumulativo: el levante estricto se identifica también en el bloque de viento.
   La tarjeta conserva el borde rojo definido para .forecast-day-card.is-levante. */
.forecast-wind-row.is-levante-wind .wind-compass,
.forecast-wind-row.is-levante-wind strong{
  color:#df4b4b !important;
}
.forecast-wind-row.is-levante-wind .wind-compass{
  border-color:rgba(223,75,75,.52) !important;
  background:rgba(223,75,75,.08) !important;
}
html[data-theme="dark"] .forecast-wind-row.is-levante-wind .wind-compass,
html[data-theme="dark"] .forecast-wind-row.is-levante-wind strong{color:#ff7373 !important}
.forecast-wind-row.is-borderline-wind .wind-compass,
.forecast-wind-row.is-borderline-wind strong{color:#e9842c !important}

/* === FORECAST_LEVANTE_VISUAL_HOURLY_FALLBACK_V3 ===
   Acumulativo sobre AEMET_LEVANTE_FIX_V2.
   1) El levante usa una señal roja coherente (flecha, dirección y velocidad).
   2) Las tarjetas dejan de usar un contorno rojo excesivamente agresivo.
   3) El detalle horario comparte la misma semántica cromática.
   4) Si el horizonte horario AEMET ha caducado, se muestran periodos extendidos
      válidos como fallback explícito, sin inventar horas.
*/
.forecast-day-card.is-levante{
  border:1.5px solid rgba(224,76,76,.88) !important;
  background:linear-gradient(145deg,var(--surface-strong),rgba(224,76,76,.055)) !important;
  box-shadow:var(--shadow-soft) !important;
}
html[data-theme="dark"] .forecast-day-card.is-levante{
  border-color:rgba(255,103,103,.92) !important;
  background:linear-gradient(145deg,var(--surface-strong),rgba(255,91,91,.045)) !important;
}
@media(max-width:560px){
  .forecast-day-card.is-levante{border-width:1.5px !important}
}

.forecast-wind-row.is-levante-wind .wind-compass,
.forecast-wind-row.is-levante-wind .wind-compass .wind-arrow,
.forecast-wind-row.is-levante-wind .wind-compass b,
.forecast-wind-row.is-levante-wind > span:last-child strong{
  color:#df4b4b !important;
}
html[data-theme="dark"] .forecast-wind-row.is-levante-wind .wind-compass,
html[data-theme="dark"] .forecast-wind-row.is-levante-wind .wind-compass .wind-arrow,
html[data-theme="dark"] .forecast-wind-row.is-levante-wind .wind-compass b,
html[data-theme="dark"] .forecast-wind-row.is-levante-wind > span:last-child strong{
  color:#ff7373 !important;
}
.forecast-wind-row.is-borderline-wind .wind-compass .wind-arrow,
.forecast-wind-row.is-borderline-wind .wind-compass b,
.forecast-wind-row.is-borderline-wind > span:last-child strong{
  color:#e9842c !important;
}

.hourly-row.is-levante{
  border-left:3px solid #df4b4b !important;
  background:linear-gradient(90deg,rgba(223,75,75,.075),transparent 48%);
}
.hourly-row.is-levante .hourly-wind,
.hourly-row.is-levante .hourly-wind b,
.hourly-row.is-levante .hourly-wind-arrow,
.hourly-row.is-levante time{
  color:#df4b4b !important;
}
html[data-theme="dark"] .hourly-row.is-levante .hourly-wind,
html[data-theme="dark"] .hourly-row.is-levante .hourly-wind b,
html[data-theme="dark"] .hourly-row.is-levante .hourly-wind-arrow,
html[data-theme="dark"] .hourly-row.is-levante time{
  color:#ff7373 !important;
}
.hourly-row.is-borderline{
  border-left:3px solid #e9842c !important;
  background:linear-gradient(90deg,rgba(233,132,44,.07),transparent 48%);
}
.hourly-row.is-borderline .hourly-wind,
.hourly-row.is-borderline .hourly-wind b,
.hourly-row.is-borderline .hourly-wind-arrow{
  color:#e9842c !important;
}
.hourly-details.has-levante{
  border:1.5px solid rgba(223,75,75,.72) !important;
  box-shadow:none !important;
}

.hourly-fallback-note{
  margin:0;
  padding:11px 14px;
  border-bottom:1px solid var(--line);
  color:var(--muted);
  font-size:.72rem;
  line-height:1.45;
  background:rgba(180,132,67,.055);
}
.hourly-period-row .hourly-period-skytext{
  font-size:.72rem;
  font-weight:700;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
@media(min-width:768px){
  .forecast-hourly.is-period-fallback > .hourly-fallback-note{grid-column:1/-1}
}
@media(max-width:767px){
  .forecast-hourly > .hourly-period-row{
    grid-template-columns:88px 30px minmax(70px,1fr) minmax(98px,1.25fr) !important;
  }
  .hourly-period-row .hourly-period-skytext{justify-self:start !important;text-align:left}
}


/* === FRONTEND_REGRESSION_RECOVERY_V1 === */
.visual-stat-track>i,
.visual-stat-track>span{
  display:block;height:100%;border-radius:inherit;
  background:linear-gradient(90deg,var(--atlantic),var(--aqua));
}
.hourly-row.is-levante .hourly-status,
.hourly-status.is-levante-badge{
  background:rgba(223,75,75,.12)!important;
  border:1px solid rgba(223,75,75,.28)!important;
  color:#df4b4b!important;
}
html[data-theme="dark"] .hourly-row.is-levante .hourly-status,
html[data-theme="dark"] .hourly-status.is-levante-badge{color:#ff7373!important}
.field,.query-panel>*{min-width:0}
.field input[type="date"]{
  box-sizing:border-box;min-width:0;max-width:100%;
  overflow:hidden;text-align:center;
}
@media(max-width:767px){
  .query-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
  .field input[type="date"]{width:100%;padding-inline:8px;font-size:.88rem}
}
@media(max-width:430px){
  .query-panel{grid-template-columns:1fr!important}
  .primary-btn{grid-column:1!important}
}


/* === FRONTEND_REGRESSION_RECOVERY_V1_1 === */
.query-panel,
.query-panel *{box-sizing:border-box}
.query-panel .field{min-width:0;width:100%;max-width:100%}
.query-panel .field input[type="date"]{
  display:block;
  inline-size:100%!important;
  width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  margin:0!important;
  padding-inline:14px!important;
  overflow:hidden;
  text-overflow:clip;
  font-size:16px!important;
  line-height:1.2;
  -webkit-appearance:none;
  appearance:none;
  background:rgba(255,255,255,.88);
}
.query-panel .field input[type="date"]::-webkit-date-and-time-value{
  min-width:0;
  text-align:center;
}
@media(max-width:767px){
  .query-panel{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:14px!important;
    width:100%!important;
    max-width:100%!important;
    padding:16px!important;
    overflow:hidden!important;
  }
  .query-panel .field,
  .query-panel .primary-btn{
    grid-column:1!important;
    width:100%!important;
    max-width:100%!important;
  }
  .query-panel .primary-btn{min-height:54px}
}
.hourly-row.is-levante{border-left-color:#df4b4b!important}
.hourly-row.is-levante time,
.hourly-row.is-levante .hourly-wind,
.hourly-row.is-levante .hourly-wind b,
.hourly-row.is-levante .hourly-wind-arrow{color:#df4b4b!important}


/* === WIND_VISUAL_CONTRACT_V1 ===
   Red means displayed direction E (Levante), not "some levante somewhere in the day".
   Calm is exactly 0 km/h and never carries a compass direction or arrow. */
.forecast-day-card.is-neutral{
  border-color:rgba(68,124,128,.18)!important;
  background:rgba(255,255,255,.64)!important;
}
.forecast-day-card.is-borderline{
  border-color:rgba(233,132,44,.48)!important;
}
.forecast-wind-row.is-calm-wind{
  display:block!important;
  background:rgba(237,248,246,.72)!important;
}
.forecast-calm-label,
.forecast-variable-label{
  display:flex;
  align-items:baseline;
  gap:8px;
  min-height:38px;
  padding-inline:4px;
}
.forecast-calm-label strong,
.forecast-variable-label strong{font-size:.9rem;color:var(--text)}
.forecast-calm-label small,
.forecast-variable-label small{font-size:.72rem;color:var(--muted)}
.hourly-row.is-calm{border-left-color:transparent!important}
.hourly-calm,
.hourly-variable{color:var(--muted)!important}
.hourly-calm b,
.hourly-variable b{color:var(--text)!important}


/* === DARK_DESKTOP_THEME_RECOVERY_V1_2 ===
   Presentation-only patch.
   Fixes WIND_VISUAL_CONTRACT light backgrounds leaking into desktop dark mode. */
@media (min-width: 900px) {
  html[data-theme="dark"] .forecast-hero {
    background: linear-gradient(135deg, rgba(24,42,45,.98), rgba(20,36,39,.98)) !important;
    border-color: rgba(164,206,204,.14) !important;
  }

  html[data-theme="dark"] .forecast-day-card,
  html[data-theme="dark"] .forecast-day-card.is-neutral,
  html[data-theme="dark"] .forecast-day-card.is-borderline,
  html[data-theme="dark"] .forecast-day-card.is-levante {
    background: linear-gradient(180deg, rgba(36,56,59,.98), rgba(27,46,49,.98)) !important;
    color: #edf4f2 !important;
    box-shadow: 0 12px 28px rgba(0,0,0,.18) !important;
    opacity: 1 !important;
  }

  html[data-theme="dark"] .forecast-day-card.is-neutral {
    border-color: rgba(167,207,204,.17) !important;
  }

  html[data-theme="dark"] .forecast-day-card.is-borderline {
    border-color: rgba(233,132,44,.72) !important;
  }

  html[data-theme="dark"] .forecast-day-card.is-levante {
    border-color: rgba(255,103,103,.86) !important;
  }

  html[data-theme="dark"] .forecast-day-label {
    color: #66d0ce !important;
  }

  html[data-theme="dark"] .forecast-day-date {
    color: rgba(220,236,233,.68) !important;
  }

  html[data-theme="dark"] .forecast-temp-row strong {
    color: #f4f8f7 !important;
  }

  html[data-theme="dark"] .forecast-temp-row span {
    color: rgba(224,238,235,.70) !important;
  }

  html[data-theme="dark"] .forecast-weather-icon {
    color: #c7e8e4 !important;
    opacity: .96 !important;
  }

  html[data-theme="dark"] .forecast-wind-row,
  html[data-theme="dark"] .forecast-wind-row.is-calm-wind {
    background: rgba(8,27,30,.58) !important;
    border: 1px solid rgba(163,204,202,.08) !important;
    color: #eaf3f1 !important;
  }

  html[data-theme="dark"] .forecast-wind-row.is-levante-wind {
    background: rgba(77,27,30,.42) !important;
    border-color: rgba(255,103,103,.20) !important;
  }

  html[data-theme="dark"] .forecast-wind-row.is-borderline-wind {
    background: rgba(83,50,19,.40) !important;
    border-color: rgba(233,132,44,.23) !important;
  }

  html[data-theme="dark"] .forecast-wind-row .wind-compass {
    background: rgba(10,31,34,.88) !important;
    border-color: rgba(163,204,202,.12) !important;
  }

  html[data-theme="dark"] .forecast-calm-label strong,
  html[data-theme="dark"] .forecast-variable-label strong {
    color: #edf4f2 !important;
  }

  html[data-theme="dark"] .forecast-calm-label small,
  html[data-theme="dark"] .forecast-variable-label small {
    color: rgba(220,236,233,.62) !important;
  }

  html[data-theme="dark"] .hourly-details {
    background: rgba(18,37,40,.88) !important;
    border-color: rgba(158,201,199,.15) !important;
  }

  html[data-theme="dark"] .hourly-details.has-levante {
    border-color: rgba(255,103,103,.78) !important;
  }

  html[data-theme="dark"] .hourly-details.has-borderline {
    border-color: rgba(233,132,44,.78) !important;
  }

  html[data-theme="dark"] .hourly-details summary strong {
    color: #eef6f4 !important;
  }

  html[data-theme="dark"] .hourly-details summary small {
    color: rgba(211,229,225,.62) !important;
  }

  html[data-theme="dark"] .forecast-day-card *,
  html[data-theme="dark"] .forecast-wind-row * {
    opacity: 1 !important;
  }
}


/* === HOURLY_ALIGNMENT_NORMALIZATION_V1_3 ===
   Highlighting must never alter the grid geometry or text justification. */
.hourly-row,
.hourly-row.is-levante,
.hourly-row.is-borderline {
  box-sizing: border-box;
}

.hourly-row.is-levante,
.hourly-row.is-borderline {
  position: relative;
  border-left: 0 !important;
  padding-left: 0 !important;
}

/* Visual stripe is painted out of flow, so E/NE/SE rows keep exactly
   the same columns and horizontal alignment as neutral rows. */
.hourly-row.is-levante::before,
.hourly-row.is-borderline::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  pointer-events: none;
}

.hourly-row.is-levante::before {
  background: #df4b4b;
}

.hourly-row.is-borderline::before {
  background: #e9842c;
}

html[data-theme="dark"] .hourly-row.is-levante::before {
  background: #ff7373;
}

@media (max-width: 767px) {
  .forecast-hourly > .hourly-row,
  .forecast-hourly > .hourly-row.is-levante,
  .forecast-hourly > .hourly-row.is-borderline {
    padding-left: 0 !important;
    padding-right: 0 !important;
    grid-template-columns: 58px 30px 52px minmax(0,1fr) !important;
    column-gap: 10px !important;
  }
}

@media (max-width: 380px) {
  .forecast-hourly > .hourly-row,
  .forecast-hourly > .hourly-row.is-levante,
  .forecast-hourly > .hourly-row.is-borderline {
    grid-template-columns: 54px 28px 48px minmax(0,1fr) !important;
    column-gap: 8px !important;
  }
}

/* === HOURLY_DESKTOP_LAYOUT_V1_4 ===
   Desktop/tablet and mobile are deliberately separate contracts.
   Mobile <=767px keeps the proven single-column centered timeline.
   Tablet 768-899px uses one roomy column.
   Desktop >=900px uses two chronological columns; never the cramped 3-column layout.
   Highlight stripes are out-of-flow and never change geometry. */
@media (min-width:768px) and (max-width:899px) {
  .forecast-hourly{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    padding:8px 18px 14px !important;
  }
  .forecast-hourly > .hourly-row,
  .forecast-hourly > .hourly-row.is-levante,
  .forecast-hourly > .hourly-row.is-borderline{
    grid-template-columns:72px 38px 64px minmax(150px,1fr) auto !important;
    column-gap:14px !important;
    padding:0 18px !important;
    min-height:58px !important;
    border-left:0 !important;
  }
}
@media (min-width:900px) {
  .forecast-hourly{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    padding:8px 16px 14px !important;
  }
  .forecast-hourly > .hourly-row,
  .forecast-hourly > .hourly-row.is-levante,
  .forecast-hourly > .hourly-row.is-borderline{
    grid-template-columns:64px 34px 58px minmax(130px,1fr) auto !important;
    column-gap:12px !important;
    padding:0 16px !important;
    min-height:60px !important;
    border-left:0 !important;
  }
  .forecast-hourly > .hourly-row:nth-child(even),
  .forecast-hourly > .hourly-row:not(:nth-child(3n + 1)){
    border-left:0 !important;
  }
  .forecast-hourly > .hourly-row:nth-child(2n){
    box-shadow:inset 1px 0 0 rgba(68,124,128,.12);
  }
  html[data-theme="dark"] .forecast-hourly > .hourly-row:nth-child(2n){
    box-shadow:inset 1px 0 0 rgba(170,210,207,.10);
  }
  .forecast-hourly > .hourly-row time,
  .forecast-hourly > .hourly-row .hourly-sky,
  .forecast-hourly > .hourly-row .hourly-temp{
    justify-self:start;
  }
  .forecast-hourly > .hourly-row .hourly-wind{
    justify-self:start;
    min-width:0;
    white-space:nowrap;
  }
  .forecast-hourly > .hourly-row .hourly-status{
    justify-self:end;
    margin-right:2px;
  }
}


/* === MOBILE_DARK_FORECAST_RECOVERY_V1_5 ===
   Mobile/tablet dark-mode counterpart to DARK_DESKTOP_THEME_RECOVERY_V1_2.
   Presentation only: fixes light forecast cards/chips leaking from WIND_VISUAL_CONTRACT_V1.
   Hourly layout/geometry is intentionally untouched. */
@media (max-width: 899.98px) {
  html[data-theme="dark"] .forecast-hero {
    background: linear-gradient(135deg, rgba(24,42,45,.98), rgba(20,36,39,.98)) !important;
    border-color: rgba(164,206,204,.14) !important;
  }
  html[data-theme="dark"] .forecast-day-card,
  html[data-theme="dark"] .forecast-day-card.is-neutral,
  html[data-theme="dark"] .forecast-day-card.is-borderline,
  html[data-theme="dark"] .forecast-day-card.is-levante {
    background: linear-gradient(180deg, rgba(36,56,59,.98), rgba(27,46,49,.98)) !important;
    color:#edf4f2 !important;
    box-shadow:0 10px 24px rgba(0,0,0,.16) !important;
    opacity:1 !important;
  }
  html[data-theme="dark"] .forecast-day-card.is-neutral { border-color:rgba(167,207,204,.17)!important; }
  html[data-theme="dark"] .forecast-day-card.is-borderline { border-color:rgba(233,132,44,.72)!important; }
  html[data-theme="dark"] .forecast-day-card.is-levante { border-color:rgba(255,103,103,.86)!important; }
  html[data-theme="dark"] .forecast-day-label { color:#66d0ce!important; }
  html[data-theme="dark"] .forecast-day-date { color:rgba(220,236,233,.68)!important; }
  html[data-theme="dark"] .forecast-temp-row strong { color:#f4f8f7!important; }
  html[data-theme="dark"] .forecast-temp-row span { color:rgba(224,238,235,.70)!important; }
  html[data-theme="dark"] .forecast-weather-icon { color:#c7e8e4!important; opacity:.96!important; }
  html[data-theme="dark"] .forecast-wind-row,
  html[data-theme="dark"] .forecast-wind-row.is-calm-wind {
    background:rgba(8,27,30,.58)!important;
    border:1px solid rgba(163,204,202,.08)!important;
    color:#eaf3f1!important;
  }
  html[data-theme="dark"] .forecast-wind-row.is-levante-wind {
    background:rgba(77,27,30,.42)!important;
    border-color:rgba(255,103,103,.20)!important;
  }
  html[data-theme="dark"] .forecast-wind-row.is-borderline-wind {
    background:rgba(83,50,19,.40)!important;
    border-color:rgba(233,132,44,.23)!important;
  }
  html[data-theme="dark"] .forecast-wind-row .wind-compass {
    background:rgba(10,31,34,.88)!important;
    border-color:rgba(163,204,202,.12)!important;
  }
  html[data-theme="dark"] .forecast-calm-label strong,
  html[data-theme="dark"] .forecast-variable-label strong { color:#edf4f2!important; }
  html[data-theme="dark"] .forecast-calm-label small,
  html[data-theme="dark"] .forecast-variable-label small { color:rgba(220,236,233,.62)!important; }
  html[data-theme="dark"] .forecast-day-card *,
  html[data-theme="dark"] .forecast-wind-row * { opacity:1!important; }
}

/* SEO Municipal V1.2: visible, factual local context and crawlable internal links */
.seo-local-context{padding-top:42px;display:grid;grid-template-columns:1.35fr .65fr;gap:14px}
.seo-local-context-card,.seo-related{padding:26px}
.seo-local-context-card h2,.seo-related h2{margin:5px 0 12px;letter-spacing:-.03em}
.seo-local-context-card p{color:var(--muted);line-height:1.65}
.seo-local-context-card strong{color:var(--text)}
.seo-related-links{display:grid;gap:9px;margin-top:15px}
.seo-related-links a{display:block;padding:11px 13px;border:1px solid var(--line);border-radius:13px;text-decoration:none;color:var(--text);font-weight:750;background:var(--surface-subtle)}
.seo-related-links a:hover{border-color:rgba(26,169,167,.45);color:var(--atlantic)}
@media(max-width:820px){.seo-local-context{grid-template-columns:1fr}}
@media(max-width:560px){.seo-local-context{padding-top:32px;gap:10px}.seo-local-context-card,.seo-related{padding:19px}}

/* HITO B · V3 public canary: explicit, reversible, non-production */
.historical-canary-banner{margin-top:14px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid #d99b24;border-radius:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--surface,rgba(255,255,255,.06))}.historical-canary-banner strong{font-weight:800}.historical-canary-banner span{color:var(--muted);font-size:.9rem;flex:1 1 280px}.historical-canary-banner a{font-weight:700}

/* HITO D · Municipal Experience Architecture V2 */
.page-journey{position:sticky;top:64px;z-index:35;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;padding:8px;margin-bottom:14px;background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:18px}
.page-journey a{display:flex;align-items:center;gap:8px;min-height:48px;padding:8px 10px;border-radius:12px;text-decoration:none;color:var(--muted);transition:.18s ease}
.page-journey a:hover,.page-journey a.is-active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-soft)}
.page-journey a span{display:grid;place-items:center;min-width:25px;height:25px;padding:0 5px;border-radius:999px;background:var(--foam);color:var(--atlantic);font-size:.68rem;font-weight:900;text-transform:uppercase}.page-journey a strong{font-size:.79rem}
.architecture-section-intro{display:grid;grid-template-columns:54px minmax(0,760px);gap:18px;align-items:start;padding-top:54px;padding-bottom:18px}
.architecture-section-intro--spaced{margin-top:18px}.architecture-number{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,var(--atlantic),var(--aqua));color:#fff;font-weight:900;font-size:1.15rem;box-shadow:0 10px 24px rgba(8,127,140,.18)}
.architecture-number--local{font-size:.68rem;text-transform:uppercase}.architecture-section-intro h2{margin:0 0 9px;font-size:clamp(1.65rem,3vw,2.45rem);letter-spacing:-.04em}.architecture-section-intro p:last-child{margin-bottom:0;color:var(--muted)}
.architecture-toggle{display:none;margin-top:12px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);font:inherit;font-size:.83rem;font-weight:800}
.context-badge-local{background:rgba(26,169,167,.12);color:var(--atlantic)}.local-context-public{margin-top:2px}.local-identity-card{padding:26px}.local-identity-card h2{font-size:clamp(1.45rem,3vw,2rem);letter-spacing:-.03em;margin-bottom:10px}.local-identity-summary{max-width:780px;color:var(--muted)}
.local-consequence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.local-consequence{padding:16px;border-radius:15px;background:rgba(235,248,246,.72)}.local-consequence strong,.local-consequence span{display:block}.local-consequence span{margin-top:5px;color:var(--muted);font-size:.87rem;line-height:1.45}
.local-place-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}.local-place-row span{padding:7px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.8rem;font-weight:750}.local-evidence-details{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.local-evidence-details summary{cursor:pointer;font-weight:800;color:var(--atlantic)}.local-evidence-list{padding-top:8px}.local-evidence-list p{font-size:.84rem;color:var(--muted);margin-bottom:9px}.local-evidence-list a{font-weight:750}
@media(min-width:641px){.architecture-depth--collapsed{display:block!important}}
@media(max-width:820px){.page-journey{top:8px;grid-template-columns:repeat(5,max-content);overflow-x:auto;justify-content:start;scrollbar-width:none}.page-journey::-webkit-scrollbar{display:none}.page-journey a{min-width:max-content}.architecture-section-intro{grid-template-columns:44px 1fr;gap:13px;padding-top:38px}.architecture-number{width:42px;height:42px;border-radius:14px}.local-consequence-grid{grid-template-columns:1fr}}
@media(max-width:640px){.page-journey{width:calc(100% - 16px);margin-left:auto;margin-right:auto;border-radius:14px;padding:6px}.page-journey a{min-height:42px;padding:6px 8px}.page-journey a strong{font-size:.73rem}.architecture-section-intro{display:block;padding-top:32px}.architecture-number{margin-bottom:12px}.architecture-section-intro h2{font-size:1.65rem}.architecture-section-intro p{font-size:.9rem}.architecture-toggle{display:inline-flex}.architecture-depth--collapsed{display:none!important}.local-identity-card{padding:20px}.local-identity-summary{font-size:.92rem}.seo-local-context{margin-top:12px}}

/* HITO D.1 · Mobile information hierarchy */
.mobile-depth-toggle{display:none;width:100%;margin:12px 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:13px;background:var(--surface);color:var(--text);font:inherit;font-size:.86rem;font-weight:850;text-align:left;box-shadow:var(--shadow-soft)}
.mobile-depth-toggle::after{content:' ↓';float:right;color:var(--atlantic)}
.mobile-depth-toggle[aria-expanded="true"]::after{content:' ↑'}
.mobile-depth-toggle--secondary{margin:0 0 10px;background:transparent;box-shadow:none}
.responsive-depth{display:block}.seo-local-context--secondary{margin-top:16px}
@media(max-width:640px){
  .responsive-depth--collapsed,.architecture-depth--collapsed{display:none!important}
  .mobile-depth-toggle{display:block}.architecture-toggle{display:inline-flex}
  .planner-head{margin-bottom:6px}.planner-head>div:first-child p{margin-bottom:4px}
  .planner-duration{margin-top:10px}.planner-section{padding-top:8px}
  .architecture-section-intro{border-top:1px solid var(--line);margin-top:30px;padding-top:28px}
  #planifica-tu-viaje.architecture-section-intro{border-top:0;margin-top:0}
  .architecture-number{width:34px;height:34px;border-radius:11px;font-size:.9rem;margin-bottom:10px}
  .architecture-section-intro h2{font-size:1.48rem;line-height:1.08}
  .architecture-section-intro .context-badge{margin-bottom:7px}
  .page-journey{top:6px;box-shadow:0 7px 24px rgba(0,0,0,.10)}
  .page-journey a{min-height:38px}.page-journey a span{min-width:22px;height:22px;font-size:.6rem}.page-journey a strong{font-size:.69rem}
  .trend-summary{margin-bottom:8px}
  .local-context-public{margin-top:0}.local-identity-card{padding:18px}
  .seo-local-context--secondary{padding-top:0}
}

/* === HITO E.1 · VISUAL + EDITORIAL FOUNDATION ===
   Presentación responsive en móvil/tablet/escritorio. No altera datos ni lógica. */
:root{
  --bg:#e7f0ef;
  --bg2:#f1f6f5;
  --surface:rgba(255,255,255,.88);
  --surface-strong:#ffffff;
  --surface-soft:#edf5f4;
  --surface-subtle:#f4f8f7;
  --text:#0b2427;
  --muted:#536d70;
  --line:rgba(34,83,87,.18);
  --line-strong:rgba(34,83,87,.29);
  --shadow:0 16px 44px rgba(14,55,59,.09);
  --shadow-soft:0 7px 20px rgba(14,55,59,.065);
}
body{background:linear-gradient(180deg,#f4f8f7 0,#e9f2f1 46%,#e5efee 100%)}
.glass-card,.panel,.query-panel{backdrop-filter:none;-webkit-backdrop-filter:none;border-color:var(--line);background:var(--surface)}
.site-header{background:rgba(247,250,249,.94)}
.location-hero{padding-bottom:22px}
.location-hero h1{max-width:820px}
.hero-place{color:var(--muted);font-weight:700}
.page-journey{background:rgba(242,247,246,.96);border-color:var(--line-strong)}
.page-journey a.is-active{background:#fff}
.forecast-hero{background:linear-gradient(135deg,#fff,#e6f4f2)}
.forecast-day-card,.hourly-details{background:#fff;border-color:var(--line)}
.architecture-section-intro{max-width:1120px}
.architecture-section-intro p:last-child{max-width:700px;line-height:1.58}
.architecture-number{box-shadow:none}
.visual-stats-card,.trend-card,.local-identity-card,.seo-local-context-card,.seo-related{border-color:var(--line);background:#fff}
.local-consequence{background:var(--surface-soft);border:1px solid var(--line)}
.seo-local-context-card p{color:var(--muted);line-height:1.58}
.site-footer{background:rgba(238,245,244,.92)}

html[data-theme="dark"]{
  --bg:#0b1214;--bg2:#0e1719;--surface:#162326;--surface-strong:#1a2a2d;
  --surface-soft:#1b2c2f;--surface-subtle:#132124;--text:#f3f8f7;--muted:#b4c5c3;
  --line:rgba(196,224,220,.15);--line-strong:rgba(196,224,220,.24);
}
html[data-theme="dark"] body{background:linear-gradient(180deg,#0d1719,#091113 60%,#081012)}
html[data-theme="dark"] .glass-card,html[data-theme="dark"] .panel,html[data-theme="dark"] .query-panel,
html[data-theme="dark"] .visual-stats-card,html[data-theme="dark"] .trend-card,html[data-theme="dark"] .local-identity-card,
html[data-theme="dark"] .seo-local-context-card,html[data-theme="dark"] .seo-related{background:#162326;border-color:var(--line)}
html[data-theme="dark"] .site-header{background:rgba(10,18,20,.96)}
html[data-theme="dark"] .page-journey{background:rgba(13,23,25,.97)}
html[data-theme="dark"] .page-journey a.is-active{background:#203235}
html[data-theme="dark"] .local-consequence{background:#1b2c2f}
html[data-theme="dark"] .site-footer{background:#0d1719}

@media(min-width:900px){
  .location-hero{padding-top:52px}
  .page-journey{top:72px}
  .architecture-section-intro{grid-template-columns:58px minmax(0,760px);padding-top:64px}
  .architecture-section-intro h2{font-size:2.25rem}
  .forecast-hero,.visual-stats-card,.trend-card{padding:32px}
  .seo-local-context{gap:18px}
}
@media(min-width:641px) and (max-width:899px){
  .shell{width:min(100% - 36px,1120px)}
  .architecture-section-intro{padding-top:46px}
  .forecast-hero,.trend-card,.visual-stats-card{padding:24px}
}
@media(max-width:640px){
  .shell{width:calc(100% - 24px)}
  .location-hero{padding:28px 0 16px}
  .location-hero h1{font-size:2.15rem;line-height:1.01;margin-bottom:8px}
  .eyebrow{font-size:.68rem;margin-bottom:7px}
  .page-journey{background:rgba(242,247,246,.98);border-color:var(--line-strong)}
  html[data-theme="dark"] .page-journey{background:rgba(13,23,25,.98)}
  .architecture-section-intro{margin-top:24px;padding-top:24px}
  .architecture-section-intro h2{font-size:1.42rem;line-height:1.12;margin-bottom:7px}
  .architecture-section-intro p:last-child{font-size:.88rem;line-height:1.48}
  .forecast-hero{padding:16px 14px}
  .mobile-depth-toggle{background:var(--surface-strong);border-color:var(--line-strong);box-shadow:none}
  .local-identity-card,.seo-local-context-card,.seo-related{padding:17px}
  .site-footer{margin-top:44px}
}


/* === HITO E.2 · CONTENT FIRST / RESPONSIVE COMPOSITION ===
   Reduce ruido, altura y aspecto lechoso. Desktop y móvil tienen composición propia. */
:root{
  --bg:#f4f7f6;--bg2:#eef3f2;--surface:#ffffff;--surface-strong:#ffffff;
  --surface-soft:#edf4f3;--surface-subtle:#f7f9f9;--muted:#496568;
  --line:rgba(24,70,74,.16);--line-strong:rgba(24,70,74,.24);
  --shadow:0 10px 30px rgba(10,50,54,.07);--shadow-soft:0 4px 14px rgba(10,50,54,.055)
}
body{background:#f4f7f6}
.site-header{background:rgba(255,255,255,.97);border-bottom:1px solid var(--line)}
.glass-card,.panel,.query-panel,.visual-stats-card,.trend-card,.local-identity-card,.seo-local-context-card,.seo-related{background:#fff;box-shadow:var(--shadow-soft)}
.forecast-hero{background:linear-gradient(135deg,#fff 0%,#edf8f6 100%)}
.page-journey{box-shadow:none}
.architecture-section-intro p:last-child{max-width:620px}
.architecture-section-intro h2{max-width:780px}
.planner-head>div:first-child>p:last-child{max-width:760px;color:var(--muted)}
.local-identity-summary{color:var(--text);opacity:.82}
.seo-local-context-card p{line-height:1.5}
.site-footer{background:#e9efee}

html[data-theme="dark"] body{background:#081113}
html[data-theme="dark"] .site-header{background:rgba(8,17,19,.97)}
html[data-theme="dark"] .glass-card,html[data-theme="dark"] .panel,html[data-theme="dark"] .query-panel,
html[data-theme="dark"] .visual-stats-card,html[data-theme="dark"] .trend-card,html[data-theme="dark"] .local-identity-card,
html[data-theme="dark"] .seo-local-context-card,html[data-theme="dark"] .seo-related{box-shadow:none}

@media(min-width:900px){
  .shell{width:min(100% - 64px,1180px)}
  .location-hero{padding-top:36px;padding-bottom:16px}
  .location-hero h1{font-size:clamp(2.7rem,4vw,4.25rem)}
  .page-journey{position:static;margin-top:4px;margin-bottom:6px;padding:5px;grid-template-columns:repeat(5,max-content);justify-content:start;background:transparent;border:0}
  .page-journey a{min-height:34px;padding:5px 9px}.page-journey a span{min-width:21px;height:21px}.page-journey a strong{font-size:.74rem}
  .architecture-section-intro{grid-template-columns:46px minmax(0,780px);gap:14px;padding-top:38px;padding-bottom:12px}
  .architecture-section-intro--spaced{margin-top:4px}
  .architecture-number{width:40px;height:40px;border-radius:12px;font-size:.95rem}
  .architecture-section-intro h2{font-size:2rem;margin-bottom:5px}
  .architecture-section-intro p:last-child{font-size:.94rem;line-height:1.42}
  .planner-section{padding-top:8px}
  .planner-head{margin-bottom:10px}
  .planner-calendar-card{padding:20px}
  .visual-stats-section,.trend-section{margin-top:10px;margin-bottom:18px}
  .visual-stats-card,.trend-card{padding:26px}
  .local-context-public{margin-top:0}
  .local-identity-card{padding:22px}
  .seo-local-context--secondary{padding-top:16px;margin-top:4px}
  .seo-local-context-card,.seo-related{padding:20px}
  .seo-local-context{grid-template-columns:minmax(0,1.55fr) minmax(260px,.45fr)}
}

@media(min-width:641px) and (max-width:899px){
  .shell{width:min(100% - 32px,1120px)}
  .architecture-section-intro{padding-top:34px;padding-bottom:10px}
  .architecture-section-intro--spaced{margin-top:4px}
  .visual-stats-card,.trend-card{padding:22px}
}

@media(max-width:640px){
  body{background:#f5f7f7}
  html[data-theme="dark"] body{background:#071012}
  .shell{width:calc(100% - 20px)}
  .site-header{min-height:48px}
  .location-hero{padding:18px 0 10px}
  .location-hero h1{font-size:1.95rem;margin-bottom:5px}
  .hero-place{font-size:.78rem}
  .page-journey{display:none}
  .forecast-hero{padding:13px 11px;margin-bottom:12px}
  .architecture-section-intro{margin-top:14px;padding-top:18px;padding-bottom:7px;border-top:1px solid var(--line)}
  #planifica-tu-viaje.architecture-section-intro{margin-top:8px;padding-top:12px}
  .architecture-section-intro--spaced{margin-top:14px}
  .architecture-number{width:29px;height:29px;border-radius:9px;font-size:.76rem;margin-bottom:7px}
  .architecture-number--local{font-size:.55rem}
  .architecture-section-intro h2{font-size:1.28rem;line-height:1.1;margin-bottom:4px}
  .architecture-section-intro p:last-child{font-size:.82rem;line-height:1.38;margin-bottom:0}
  .context-badge{font-size:.61rem;margin-bottom:5px}
  .query-panel{padding:12px;gap:8px}
  .historical-shortcuts{margin-top:8px}.form-note{font-size:.72rem;line-height:1.35;margin-top:7px}
  .result-head{margin-top:15px;margin-bottom:8px}
  .historical-summary-card{padding:15px;gap:12px}
  .historical-summary-value{font-size:2.55rem}
  .historical-summary-facts{gap:7px}.summary-fact{padding:10px}
  .historical-summary-explain{padding:10px}
  .planner-section{padding-top:4px}
  .planner-head{margin-bottom:5px}.planner-head h2{font-size:1.3rem;margin-bottom:4px}
  .planner-head>div:first-child>p:last-child{font-size:.8rem;line-height:1.35}
  .mobile-depth-toggle{margin:8px 0 10px;padding:10px 12px;font-size:.8rem}
  .planner-calendar-card{padding:10px}
  .visual-stats-section,.trend-section{margin-top:6px;margin-bottom:10px}
  .visual-stats-card,.trend-card{padding:15px}
  .visual-stats-head h2,.trend-head h2{font-size:1.32rem}
  .visual-stats-group{margin-top:15px}.visual-stats-group-title{margin-bottom:7px}
  .local-identity-card{padding:15px}.local-identity-card h2{font-size:1.24rem;margin-bottom:6px}
  .local-identity-summary{font-size:.84rem;line-height:1.42}
  .local-consequence-grid{margin-top:10px;gap:7px}.local-consequence{padding:11px}
  .local-consequence span{font-size:.78rem;line-height:1.35}
  .local-place-row{margin-top:10px;gap:5px}.local-place-row span{padding:5px 8px;font-size:.7rem}
  .local-evidence-details{margin-top:11px;padding-top:9px}
  .seo-local-context--secondary{margin-top:8px;padding-top:0}
  .seo-local-context-card,.seo-related{padding:14px}
  .seo-local-context-card p{font-size:.79rem;line-height:1.42;margin-bottom:9px}
  .seo-related h2{font-size:1rem}.seo-related-links a{padding:8px 9px;font-size:.78rem}
  .site-footer{margin-top:24px}
}

/* HITO E.3 · PRODUCT-FIRST ARCHITECTURE */
.metric-unavailable{display:none!important}
.planner-section-e3{margin-top:20px}.planner-head-e3{align-items:end}
.planner-decision-grid{display:grid;grid-template-columns:minmax(240px,.7fr) minmax(0,1.3fr);gap:14px;align-items:stretch}
.planner-decision-grid .planner-selected-card,.planner-decision-grid .planner-ranking-card{margin:0}
.planner-decision-grid .planner-ranking-card{border:1px solid color-mix(in srgb,var(--atlantic) 25%,var(--line));box-shadow:0 12px 32px rgba(8,127,140,.08)}
.calendar-explorer{margin-top:14px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}
.calendar-explorer>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;padding:15px 18px;color:var(--text)}.calendar-explorer>summary::-webkit-details-marker{display:none}.calendar-explorer>summary span:first-child{display:grid;gap:2px}.calendar-explorer>summary small{color:var(--muted);font-weight:600}.calendar-explorer-body{padding:0 14px 14px}.planner-layout-explorer{margin-top:0}
#observatorio-levante,#treinta-anos-levante,#contexto-local{border-top:1px solid var(--line)}
#observatorio-levante{margin-top:38px}.architecture-section-intro--spaced{margin-top:18px}
.architecture-number{box-shadow:none}.architecture-number--local{font-size:.65rem}
.advanced-history-details>summary,.trend-methodology>summary{background:var(--surface)}
@media(min-width:900px){
 .location-hero{padding-bottom:14px}.forecast-section{margin-bottom:22px}
 #planifica-tu-viaje{padding-top:34px}.query-panel{grid-template-columns:1fr 1fr auto;align-items:end}
 #results-section{margin-top:18px}.historical-summary-card{grid-template-columns:1.2fr .9fr .9fr;align-items:center}.historical-summary-explain{grid-column:1/-1}
 .planner-section-e3{margin-top:28px}.planner-ranking-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.planner-ranking-item{min-width:0}
 #observatorio-levante,#treinta-anos-levante,#contexto-local{padding-top:42px}
}
@media(max-width:640px){
 .location-hero{padding-bottom:8px}.forecast-section{margin-bottom:8px}
 #planifica-tu-viaje{padding-top:22px}.architecture-section-intro h2{font-size:1.5rem}.architecture-section-intro p:last-child{font-size:.88rem}
 .query-panel{padding:14px}.historical-shortcuts{margin-top:8px}.form-note{font-size:.72rem}
 #results-section{margin-top:14px}.historical-summary-card{padding:16px}.historical-summary-value{font-size:2.7rem}.historical-summary-explain{padding:10px}
 .advanced-history-details{margin-top:8px}.advanced-history-details>summary{padding:11px 12px}
 .planner-section-e3{margin-top:18px}.planner-head-e3{margin-bottom:10px}.planner-head-e3 h2{font-size:1.45rem}
 .planner-decision-grid{grid-template-columns:1fr;gap:9px}.planner-decision-grid .planner-selected-card{order:2}.planner-decision-grid .planner-ranking-card{order:1;padding:14px}
 .planner-ranking-head h3{font-size:1.15rem}.planner-ranking-item{padding:10px 8px}.planner-rank-action{display:none}
 .calendar-explorer{margin-top:10px;border-radius:14px}.calendar-explorer>summary{padding:12px 13px;font-size:.82rem}.calendar-explorer>summary small{font-size:.7rem}.calendar-explorer-body{padding:0 8px 8px}
 .planner-layout-explorer{display:block}.planner-layout-explorer .planner-side{margin-top:8px}
 #observatorio-levante,#treinta-anos-levante,#contexto-local{margin-top:24px;padding-top:24px}.architecture-number{width:32px;height:32px;border-radius:10px;font-size:.72rem;margin-bottom:8px}
 #observatory-depth[hidden],#trend-depth[hidden],#seo-context-depth[hidden]{display:none!important}
 .local-identity-card{padding:16px}.seo-local-context--secondary{margin-top:8px}
}

/* HITO E.3.1 · Calendar restored as first-class product surface */
.calendar-primary{
  margin-top:18px;
  padding-top:18px;
  border-top:1px solid var(--line);
}
.calendar-primary-head{
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:18px;
  margin-bottom:12px;
}
.calendar-primary-head .kicker{margin:0 0 4px}
.calendar-primary-head h3{
  margin:0 0 5px;
  font-size:1.28rem;
  line-height:1.15;
  color:var(--text);
}
.calendar-primary-head p:last-child{
  margin:0;
  max-width:760px;
  color:var(--muted);
  font-size:.86rem;
  line-height:1.4;
}
.calendar-primary .planner-layout-explorer{margin-top:0}
.calendar-primary .planner-calendar-card{box-shadow:var(--shadow-soft)}
@media(min-width:900px){
  .calendar-primary{margin-top:22px;padding-top:22px}
  .calendar-primary-head h3{font-size:1.42rem}
}
@media(max-width:640px){
  .calendar-primary{margin-top:14px;padding-top:14px}
  .calendar-primary-head{margin-bottom:8px}
  .calendar-primary-head h3{font-size:1.12rem}
  .calendar-primary-head p:last-child{font-size:.76rem;line-height:1.35}
  .calendar-primary .planner-layout-explorer{display:block}
  .calendar-primary .planner-layout-explorer .planner-side{margin-top:8px}
}

/* HITO E.4 · INFORMATION ARCHITECTURE & CONTENT REDUCTION
   Calendar is a protected surface: no selectors inside .calendar-primary are modified here. */
:root{--e4-reading:760px}
.architecture-section-intro>div:last-child{max-width:var(--e4-reading)}
#observatorio-levante,#treinta-anos-levante,#contexto-local{border-top:0}
#observatorio-levante{margin-top:34px}
#treinta-anos-levante,#contexto-local{margin-top:22px}
#observatorio-levante::before,#treinta-anos-levante::before,#contexto-local::before{content:"";grid-column:1/-1;height:1px;background:var(--line);margin-bottom:18px}
.architecture-toggle{margin-top:10px}

/* Decision hierarchy: recommendation first; selected period becomes supporting context. */
.planner-decision-grid .planner-ranking-card{border-color:color-mix(in srgb,var(--atlantic) 42%,var(--line))}
.planner-decision-grid .planner-selected-card{box-shadow:none;background:color-mix(in srgb,var(--surface) 86%,transparent)}
.planner-selected-card .planner-eyebrow{opacity:.72}

/* Secondary analysis should read as evidence, not another main product. */
.visual-stats-card,.trend-card{box-shadow:none}
#observatory-depth,#trend-section{max-width:1120px;margin-left:auto;margin-right:auto}
.trend-head>div:first-child .small-copy{max-width:680px}
.trend-methodology{margin-top:10px}

/* Technical/SEO prose remains available and crawlable, but leaves the main reading path. */
.seo-local-context--secondary{display:block;max-width:1120px}
#seo-context-depth{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.45fr);gap:14px;align-items:start}
.e4-data-details{border:1px solid var(--line);border-radius:16px;background:var(--surface);overflow:hidden}
.e4-data-details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;color:var(--text)}
.e4-data-details>summary::-webkit-details-marker{display:none}
.e4-data-details>summary span:first-child{display:grid;gap:2px}
.e4-data-details>summary small{font-size:.76rem;color:var(--muted);font-weight:600}
.e4-data-details .seo-local-context-card{border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none;margin:0}
.seo-related{align-self:start}

@media(min-width:900px){
  #observatorio-levante,#treinta-anos-levante,#contexto-local{padding-top:18px}
  #observatorio-levante::before,#treinta-anos-levante::before,#contexto-local::before{margin-bottom:22px}
  .visual-stats-section,.trend-section{margin-top:6px}
  .seo-local-context--secondary{grid-template-columns:1fr}
}
@media(max-width:640px){
  #observatorio-levante,#treinta-anos-levante,#contexto-local{margin-top:18px;padding-top:8px}
  #observatorio-levante::before,#treinta-anos-levante::before,#contexto-local::before{margin-bottom:10px}
  #observatorio-levante .architecture-number,#treinta-anos-levante .architecture-number,#contexto-local .architecture-number{width:27px;height:27px;border-radius:8px}
  #observatorio-levante h2,#treinta-anos-levante h2,#contexto-local h2{font-size:1.18rem}
  #observatorio-levante p:last-of-type,#treinta-anos-levante p:last-of-type,#contexto-local p:last-of-type{font-size:.79rem}
  .planner-decision-grid .planner-selected-card{padding:11px 12px}
  .planner-selected-card h3{font-size:.94rem}
  .planner-selected-card p{font-size:.74rem;line-height:1.35}
  #seo-context-depth{display:block}
  .e4-data-details{margin-bottom:8px;border-radius:13px}
  .e4-data-details>summary{padding:11px 12px;font-size:.8rem}
  .e4-data-details>summary small{font-size:.68rem}
  .seo-local-context-card{padding:12px}
  .seo-related{padding:12px}
}

/* HITO E.5 · MOBILE READING FLOW & PROGRESSIVE DISCLOSURE
   Protected surface: .calendar-primary and all descendants remain untouched. */

/* Do not show a chapter heading when its data module has nothing to render. */
#treinta-anos-levante:has(+ #trend-section.hidden){display:none!important}

/* The explanatory layer is deliberately secondary to planning. */
#observatorio-levante .architecture-toggle{
  min-height:38px;
  padding:8px 12px;
  border-radius:11px;
}
#observatorio-levante .context-badge,
#treinta-anos-levante .context-badge,
#contexto-local .context-badge{letter-spacing:.08em}

/* Local context: useful, but visually quieter than the decision surface. */
.local-context-public .local-identity-card{box-shadow:none}
.local-context-public .local-consequence{box-shadow:none}
.seo-local-context--secondary .mobile-depth-toggle--secondary{opacity:.82}

html[data-theme="dark"] .architecture-section-intro p:last-child,
html[data-theme="dark"] .small-copy,
html[data-theme="dark"] .local-identity-summary{color:#b8c8ca}

@media(max-width:640px){
  /* Fix E.4: the historical pattern was visually expanded despite being labelled secondary. */
  #observatory-depth.architecture-depth--collapsed{display:none!important}

  #observatorio-levante,#treinta-anos-levante,#contexto-local{
    margin-top:14px;
    padding-top:6px;
  }
  #observatorio-levante::before,#treinta-anos-levante::before,#contexto-local::before{
    margin-bottom:8px;
  }
  #observatorio-levante .architecture-number,
  #treinta-anos-levante .architecture-number,
  #contexto-local .architecture-number{margin-bottom:6px}
  #observatorio-levante h2,#treinta-anos-levante h2,#contexto-local h2{
    margin-bottom:3px;
    line-height:1.18;
  }
  #observatorio-levante .architecture-toggle{margin-top:7px}

  .local-context-public{margin-top:2px}
  .local-context-public .local-identity-card{padding:13px}
  .local-context-public .local-consequence-grid{gap:6px;margin-top:8px}
  .local-context-public .local-consequence{padding:9px 10px}
  .local-context-public .local-place-row{margin-top:8px}
  .local-context-public .local-evidence-details{margin-top:8px;padding-top:7px}

  .seo-local-context--secondary{margin-top:5px}
  .seo-local-context--secondary .mobile-depth-toggle--secondary{margin:5px 0 7px}
  .site-footer{margin-top:18px}
}

/* HITO E.6 · EDITORIAL & VISUAL FINISH
   Scope: secondary reading flow only. Calendar remains a protected surface. */
#observatorio-levante,#contexto-local{max-width:1120px}
#observatorio-levante .architecture-number,#contexto-local .architecture-number{box-shadow:none}
#observatorio-levante .architecture-toggle{font-weight:800}
.local-context-public .local-identity-card{border-color:color-mix(in srgb,var(--line) 82%,transparent)}
.local-context-public .local-consequence{border-color:color-mix(in srgb,var(--line) 78%,transparent)}
.seo-local-context--secondary{opacity:.94}
#trend-section:not(.hidden){margin-top:26px}

@media(max-width:640px){
  /* Fewer competing labels after the decision surface. */
  #observatorio-levante .context-badge,#contexto-local .context-badge{display:none}
  #observatorio-levante,#contexto-local{margin-top:16px;padding-top:12px;padding-bottom:3px}
  #observatorio-levante::before,#contexto-local::before{margin-bottom:10px}
  #observatorio-levante .architecture-number,#contexto-local .architecture-number{width:24px;height:24px;border-radius:7px;font-size:.62rem;margin-bottom:7px}
  #observatorio-levante h2,#contexto-local h2{font-size:1.12rem;letter-spacing:-.025em;margin-bottom:3px}
  #observatorio-levante p:last-child,#contexto-local p:last-child{font-size:.77rem;line-height:1.35;max-width:34rem}
  #observatorio-levante .architecture-toggle{min-height:34px;padding:7px 10px;margin-top:7px;font-size:.74rem}

  /* Local information reads as one compact unit instead of a stack of cards. */
  .local-context-public .local-identity-card{padding:12px;border-radius:13px}
  .local-context-public .local-identity-card h2{font-size:1.08rem;margin-bottom:4px}
  .local-context-public .local-identity-summary{font-size:.78rem;line-height:1.36}
  .local-context-public .local-consequence-grid{gap:5px;margin-top:7px}
  .local-context-public .local-consequence{padding:8px 9px;border-radius:9px;background:transparent}
  .local-context-public .local-consequence strong{font-size:.78rem}
  .local-context-public .local-consequence span{margin-top:2px;font-size:.72rem;line-height:1.3}
  .local-context-public .local-place-row{margin-top:7px;gap:4px}
  .local-context-public .local-place-row span{padding:4px 7px;font-size:.66rem}
  .local-context-public .local-evidence-details{margin-top:7px;padding-top:6px;font-size:.74rem}

  /* Technical/SEO material is available without becoming another chapter. */
  .seo-local-context--secondary{margin-top:3px}
  .seo-local-context--secondary .mobile-depth-toggle--secondary{min-height:32px;padding:6px 9px;font-size:.7rem;opacity:.72}
  .site-footer{margin-top:14px}
}

html[data-theme="dark"] #observatorio-levante p:last-child,
html[data-theme="dark"] #contexto-local p:last-child,
html[data-theme="dark"] .local-context-public .local-consequence span{color:#c3d0d2}

/* G.1.1 · HIERARCHY & EDITORIAL PRUNING
   Public reading hierarchy only. Calendar internals are intentionally untouched. */
#results-section{margin-bottom:14px}
#results-section .historical-summary-card{position:relative}
#results-section .historical-summary-primary{min-width:0}
#results-section .historical-summary-value{letter-spacing:-.045em}
#planner-section{margin-top:14px}
.planner-head-e3{margin-bottom:10px}
.planner-head-e3>div:first-child>p:last-child{max-width:700px}
#observatorio-levante{border-top:0}
#observatorio-levante::before{display:none}
#contexto-local{border-top:0}
#contexto-local::before{display:none}

@media(max-width:640px){
  /* The answer to the user's dates is the primary result. */
  #results-section{margin-top:9px;margin-bottom:9px}
  #results-section .result-head{margin-bottom:7px}
  #results-section .context-badge{display:none}
  #results-section .historical-summary-card{padding:14px 13px}
  #results-section .historical-summary-value{font-size:2rem;line-height:.98}
  #results-section .historical-summary-label{font-size:.78rem}
  #results-section .historical-summary-explain{margin-top:8px;padding-top:8px}
  #results-section .advanced-history-details{margin-top:7px}

  /* Alternatives become a compact decision step immediately before the calendar. */
  #planner-section{margin-top:8px}
  .planner-head-e3{margin-bottom:7px}
  .planner-head-e3 .kicker{display:none}
  .planner-head-e3 h2{font-size:1.08rem;margin-bottom:2px}
  .planner-head-e3>div:first-child>p:last-child{font-size:.75rem;line-height:1.32}
  .planner-duration{margin-top:6px}
  .planner-decision-grid{gap:6px;margin-bottom:9px}
  .planner-selected-card{display:none}
  .planner-ranking-card{padding:11px 12px}
  .planner-ranking-head .planner-eyebrow{display:none}
  .planner-ranking-head h3{font-size:.92rem;margin-bottom:2px}
  .planner-ranking-head .small-copy{font-size:.7rem;line-height:1.3}
  .planner-highest-details{margin-top:5px}
  .calendar-primary{margin-top:8px}
  .calendar-primary-head{margin-bottom:7px}
  .calendar-primary-head .kicker{display:none}
  .calendar-primary-head h3{font-size:.94rem;line-height:1.18}
  .calendar-primary-head p{font-size:.71rem;line-height:1.3;margin-top:3px}

  /* Secondary reading no longer looks like another primary chapter. */
  #observatorio-levante{margin-top:12px!important;padding-top:5px!important}
  #observatorio-levante .architecture-number{display:none}
  #observatorio-levante h2{font-size:1rem}
  #observatorio-levante p:last-of-type{font-size:.73rem}
  #contexto-local{margin-top:12px!important;padding-top:5px!important}
  #contexto-local .architecture-number{display:none}
  #contexto-local h2{font-size:1rem}
  #contexto-local p:last-of-type{font-size:.73rem}
}

/* G.1.2 — external references are evidence, not primary navigation */
.local-evidence-details summary{color:var(--muted);font-size:.82rem;font-weight:750}
.local-evidence-list{display:grid;gap:8px;padding-top:10px}
.local-evidence-list .local-evidence-intro{margin:0 0 2px;font-size:.78rem;line-height:1.45;color:var(--muted)}
.local-evidence-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.8rem;line-height:1.4;color:var(--muted)}
.local-evidence-item:last-child{border-bottom:0}
.local-evidence-item a{flex:0 0 auto;font-size:.76rem;font-weight:750;color:var(--atlantic);text-decoration:none}
.local-evidence-item a:hover{text-decoration:underline}
.forecast-source-links{white-space:normal}
.forecast-source-links a{font-weight:700}
@media(max-width:700px){.local-evidence-item{display:block}.local-evidence-item a{display:inline-block;margin-top:4px}.local-evidence-list .local-evidence-intro{font-size:.74rem}}

/* G.2 · PUBLIC PRODUCT ARCHITECTURE
   Four-level reading flow: now → trip → understand → locality.
   Protected surface: planner calendar internals and data semantics remain untouched. */
.product-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:18px;margin-bottom:18px;padding-top:14px;border-top:1px solid var(--line)}
.product-flow a{display:flex;align-items:center;gap:8px;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--card) 82%,transparent);color:var(--text);text-decoration:none;font-size:.78rem;line-height:1}
.product-flow a:hover{border-color:color-mix(in srgb,var(--atlantic) 45%,var(--line));background:color-mix(in srgb,var(--atlantic) 7%,var(--card))}
.product-flow span{display:grid;place-items:center;flex:0 0 21px;width:21px;height:21px;border-radius:7px;background:color-mix(in srgb,var(--atlantic) 14%,var(--card));color:var(--atlantic);font-size:.68rem;font-weight:850}
.product-flow .product-flow-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:760}

/* Primary decision flow: fewer chapter-like interruptions. */
#planifica-tu-viaje{margin-top:8px}
#planifica-tu-viaje .context-badge{margin-bottom:5px}
#results-section .result-head-simple{align-items:end}
#results-section .historical-summary-card{box-shadow:0 12px 34px rgba(8,44,48,.07)}
#planner-section .planner-head-e3 h2{letter-spacing:-.03em}
.calendar-primary{scroll-margin-top:18px}
.calendar-primary-head{padding-top:3px}
.calendar-primary-head h3{letter-spacing:-.025em}

/* Secondary knowledge is deliberately quieter than the decision/calender surface. */
#observatorio-levante,#contexto-local{scroll-margin-top:18px}
#observatorio-levante{margin-top:30px!important;padding-top:18px!important;border-top:1px solid var(--line)}
#observatorio-levante::before{display:none!important}
#observatorio-levante .architecture-number{background:transparent;border:1px solid var(--line);color:var(--muted);box-shadow:none}
#observatorio-levante .architecture-toggle{width:auto;min-width:0}
#contexto-local{margin-top:30px!important;padding-top:18px!important;border-top:1px solid var(--line)}
#contexto-local::before{display:none!important}
#contexto-local .architecture-number{background:color-mix(in srgb,var(--atlantic) 10%,var(--card));box-shadow:none}
.seo-local-context--secondary{margin-top:10px;opacity:.9}
.seo-local-context--secondary .mobile-depth-toggle--secondary{width:auto;background:transparent;border:1px solid var(--line);box-shadow:none;color:var(--muted)}
.seo-local-context--secondary .mobile-depth-toggle--secondary:hover{color:var(--text);border-color:color-mix(in srgb,var(--atlantic) 35%,var(--line))}

/* Desktop: maintain breathing room while keeping a single coherent reading column. */
@media(min-width:900px){
  .product-flow{max-width:1120px}
  #results-section .historical-summary-card{padding:24px}
  #planner-section{margin-top:22px}
  #observatorio-levante,#contexto-local{margin-top:38px!important}
}

/* Mobile is a product flow, not a compressed desktop dashboard. */
@media(max-width:640px){
  .product-flow{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-top:9px;margin-bottom:11px;padding-top:8px}
  .product-flow a{justify-content:center;padding:7px 3px;border:0;background:transparent;border-radius:8px;font-size:.61rem;color:var(--muted)}
  .product-flow a .product-flow-label{font-weight:720}
  .product-flow span{display:none}
  #planifica-tu-viaje{margin-top:2px!important;padding-top:3px!important}
  #planifica-tu-viaje .architecture-number{display:none}
  #planifica-tu-viaje .context-badge{display:block;font-size:.6rem;margin-bottom:3px}
  #planifica-tu-viaje h2{font-size:1.14rem;margin-bottom:3px}
  #planifica-tu-viaje p:last-child{font-size:.74rem;line-height:1.34}
  #results-section .result-head-simple{margin-top:5px}
  #results-section .result-head-simple .context-badge{display:block;font-size:.58rem}
  #planner-section .planner-head-e3 h2{font-size:1.04rem}
  #planner-section .planner-head-e3>div:first-child>p:last-child{max-width:27rem}
  .calendar-primary-head h3{font-size:1rem!important}
  .calendar-primary-head p{max-width:31rem}
  #observatorio-levante{margin-top:15px!important;padding-top:11px!important;border-top:1px solid var(--line)!important}
  #observatorio-levante .context-badge{display:block;font-size:.57rem;margin-bottom:3px}
  #observatorio-levante h2{font-size:1.02rem}
  #observatorio-levante .architecture-toggle{min-height:31px;padding:6px 9px;font-size:.7rem;margin-top:6px}
  #contexto-local{margin-top:16px!important;padding-top:11px!important;border-top:1px solid var(--line)!important}
  #contexto-local .context-badge{display:block;font-size:.57rem;margin-bottom:3px}
  #contexto-local h2{font-size:1.03rem}
  .seo-local-context--secondary{margin-top:6px}
  .seo-local-context--secondary .mobile-depth-toggle--secondary{min-height:30px;padding:5px 8px;font-size:.67rem;opacity:.8}
}

html[data-theme="dark"] .product-flow a{background:color-mix(in srgb,var(--card) 92%,transparent)}
html[data-theme="dark"] .product-flow span{background:color-mix(in srgb,var(--atlantic) 18%,var(--card))}
@media(max-width:640px){html[data-theme="dark"] .product-flow a{background:transparent}}

/* G.2.1 · PRODUCT POLISH
   Compact forecast, public-language cleanup and progressive disclosure.
   Calendar cells, scales and calculations are intentionally untouched. */
.planner-reading-details{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.planner-reading-details summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;min-height:34px;color:var(--muted);font-size:.75rem;font-weight:780}
.planner-reading-details summary::-webkit-details-marker{display:none}
.planner-reading-details summary::after{content:"⌄";color:var(--atlantic);font-size:.9rem;transition:transform .18s ease}
.planner-reading-details[open] summary::after{transform:rotate(180deg)}
.planner-reading-body{padding:4px 0 2px;color:var(--muted);font-size:.72rem;line-height:1.5}
.planner-reading-body p{margin:0 0 7px}
.planner-reading-body p:last-child{margin-bottom:0}

@media(max-width:640px){
  /* Forecast remains three-day and fully informative, but yields vertical space to the trip decision. */
  .forecast-hero{padding:12px 10px!important;border-radius:16px}
  .forecast-head{margin-bottom:0;gap:5px!important}
  .forecast-head .kicker{margin-bottom:4px;font-size:.57rem}
  .forecast-head h2{font-size:1.18rem!important;line-height:1.05;margin-bottom:2px}
  .forecast-source-note{font-size:.64rem!important;line-height:1.25}
  .forecast-aemet-badge{min-height:25px;padding:4px 7px;font-size:.58rem}
  .forecast-days{margin-top:9px!important;gap:5px!important}
  .forecast-day-card{padding:8px 6px!important;border-radius:12px!important}
  .forecast-temp-row{margin-top:8px!important}
  .forecast-temp-row strong{font-size:1rem!important}
  .forecast-temp-row span{margin-top:2px!important;min-height:0!important;font-size:.53rem!important}
  .forecast-wind-row{margin-top:6px!important;padding:5px 4px!important}
  .wind-compass{width:23px!important;height:23px!important;font-size:.55rem!important}
  .forecast-wind-row strong{font-size:.61rem!important}
  .forecast-wind-row small{font-size:.53rem}
  .hourly-details{margin-top:7px!important;border-radius:11px}
  .hourly-details summary{padding:9px 10px!important}
  .hourly-details summary strong{font-size:.7rem}
  .hourly-details summary small{font-size:.6rem}
  .forecast-footer-note{margin-top:7px!important;font-size:.59rem!important;line-height:1.3}

  /* Unsupported intensity is not a public-facing empty product card. */
  .historical-summary-facts .summary-fact.metric-unavailable{display:none!important}
  .historical-summary-facts:has(.summary-fact.metric-unavailable){grid-template-columns:1fr}

  /* The local ending is one conclusion with optional evidence, not a stack of admin-like modules. */
  #contexto-local + .local-context-public{margin-top:6px}
  .seo-local-context--secondary{margin-top:4px!important}
  .seo-local-context--secondary .mobile-depth-toggle--secondary{border:0!important;padding-inline:0!important;background:transparent!important}
  .seo-related{margin-top:7px!important;box-shadow:none!important}
}

/* H.2 footer transparency */
.footer-inner--product{min-height:104px}
.footer-brand strong,.footer-brand span{display:block}.footer-brand strong{color:var(--text);margin-bottom:4px}
.footer-links-public{display:flex;gap:14px;flex-wrap:wrap;justify-content:flex-end}
.footer-links-public a{color:var(--muted);font-weight:750;text-decoration:none}
.footer-links-public a:hover,.footer-links-public a:focus-visible{color:var(--text)}
@media(max-width:700px){.footer-inner--product{padding:22px 0}.footer-links-public{justify-content:flex-start;gap:10px 14px}}

/* H.8 · Local Decision Layer */
.local-decision-layer{margin-top:16px;padding:16px 17px;border:1px solid color-mix(in srgb,var(--atlantic) 30%,var(--line));border-radius:16px;background:color-mix(in srgb,var(--foam) 68%,var(--surface))}
.local-decision-kicker{margin:0 0 5px!important;color:var(--atlantic);font-size:.64rem!important;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.local-decision-layer h3{margin:0 0 7px;font-size:1.02rem;letter-spacing:-.02em}
.local-decision-answer{margin:0;color:var(--text);font-size:.88rem;line-height:1.48}
.local-decision-action{display:grid;grid-template-columns:auto 1fr;gap:8px 11px;margin-top:11px;padding-top:11px;border-top:1px solid color-mix(in srgb,var(--line) 84%,transparent)}
.local-decision-action strong{color:var(--atlantic);font-size:.76rem}.local-decision-action span{color:var(--text);font-size:.82rem;line-height:1.42}
.local-decision-guard{margin:10px 0 0!important;color:var(--muted)!important;font-size:.72rem!important;line-height:1.4!important}
html[data-theme="dark"] .local-decision-layer{background:color-mix(in srgb,#173235 74%,var(--surface));border-color:color-mix(in srgb,var(--atlantic) 34%,var(--line))}
@media(max-width:640px){.local-decision-layer{margin-top:9px;padding:10px 11px;border-radius:11px}.local-decision-kicker{font-size:.56rem!important;margin-bottom:3px!important}.local-decision-layer h3{font-size:.84rem;margin-bottom:4px}.local-decision-answer{font-size:.72rem;line-height:1.36}.local-decision-action{grid-template-columns:1fr;margin-top:7px;padding-top:7px;gap:2px}.local-decision-action strong{font-size:.66rem}.local-decision-action span{font-size:.7rem;line-height:1.34}.local-decision-guard{font-size:.62rem!important;margin-top:7px!important}}

/* H.3 accessibility: ensure the two compact disclosure controls meet the
   WCAG 2.2 minimum 24px target size without changing their typography. */
.planner-highest-details > summary,
.local-evidence-details > summary{
  min-height:24px;
  padding-block:4px;
  box-sizing:border-box;
}


/* === VISUAL_COHERENCE_V1_0 · 2026-08-24 ===
   Incremental presentation patch only.
   1) Dark-mode contrast for native date controls and forecast disclosure.
   2) Historical-summary dots reuse the calendar frequency palette.
   Calendar rules/data are intentionally untouched. */

/* One frequency language across calendar + trip summary. */
.trip-dot.filled{background:var(--trip-frequency-color,var(--aqua));border-color:transparent;box-shadow:0 4px 10px color-mix(in srgb,var(--trip-frequency-color,var(--aqua)) 24%,transparent)}
.trip-dot--very-low{--trip-frequency-color:#4b9bd3}
.trip-dot--low{--trip-frequency-color:#43ad73}
.trip-dot--medium{--trip-frequency-color:#e3c13c}
.trip-dot--high{--trip-frequency-color:#e9842c}
.trip-dot--very-high{--trip-frequency-color:#d94b4b}
html[data-theme="dark"] .trip-dot--very-low{--trip-frequency-color:#5aace0}
html[data-theme="dark"] .trip-dot--low{--trip-frequency-color:#54c486}
html[data-theme="dark"] .trip-dot--medium{--trip-frequency-color:#f1cf47}
html[data-theme="dark"] .trip-dot--high{--trip-frequency-color:#f3953c}
html[data-theme="dark"] .trip-dot--very-high{--trip-frequency-color:#ee6262}
#probability-level{text-transform:none}

/* Native date inputs: stop iOS/WebKit light-control leakage in dark theme. */
html[data-theme="dark"] .query-panel .field input[type="date"]{
  color-scheme:dark;
  background:#203235!important;
  color:#f3f8f7!important;
  border-color:rgba(196,224,220,.22)!important;
  -webkit-text-fill-color:#f3f8f7!important;
  opacity:1!important;
}
html[data-theme="dark"] .query-panel .field input[type="date"]::-webkit-date-and-time-value{
  color:#f3f8f7!important;
  -webkit-text-fill-color:#f3f8f7!important;
  opacity:1!important;
}
html[data-theme="dark"] .query-panel .field input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(1);opacity:.72}

/* Forecast disclosure: late light-theme rules must not override dark mode. */
html[data-theme="dark"] .hourly-details{
  background:#14272a!important;
  color:#edf4f2!important;
  border-color:rgba(158,201,199,.18)!important;
}
html[data-theme="dark"] .hourly-details.has-borderline{
  background:#2a2419!important;
  border-color:rgba(243,149,60,.82)!important;
}
html[data-theme="dark"] .hourly-details.has-levante{
  background:#2b1d20!important;
  border-color:rgba(238,98,98,.82)!important;
}
html[data-theme="dark"] .hourly-details summary strong{color:#eef6f4!important;opacity:1!important}
html[data-theme="dark"] .hourly-details summary small{color:#b9cbc8!important;opacity:1!important}
html[data-theme="dark"] .hourly-details summary::after{color:#66d0ce!important}

/* === PUBLIC_UI_CLEANUP_V1_0_1 · 2026-08-24 ===
   Mobile/iOS date centering only. No calendar geometry or historical logic changes. */
@media(max-width:767px){
  .query-panel .field input[type="date"]{
    height:48px!important;
    min-height:48px!important;
    padding-block:0!important;
    line-height:48px!important;
  }
  .query-panel .field input[type="date"]::-webkit-date-and-time-value{
    height:48px!important;
    line-height:48px!important;
    padding:0!important;
    margin:0!important;
    text-align:center!important;
  }
}

/* HOME_UX_CONTENT_V1_1 · index enrichment without duplicating municipal pages */
.page-home .location-card{
  grid-template-rows:1fr auto;
}
.page-home .location-card-main{
  min-width:0;
  align-self:center;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.page-home .location-name{
  align-self:auto;
}
.page-home .location-context{
  display:block;
  color:var(--muted);
  font-size:.82rem;
  line-height:1.35;
  font-weight:650;
}
.page-home .location-cta{
  display:inline-flex;
  align-items:center;
  gap:5px;
}
.page-home .home-capabilities{
  padding-top:56px;
}
.page-home .home-capabilities-head{
  max-width:720px;
  margin-bottom:18px;
}
.page-home .capability-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
}
.page-home .capability-card{
  min-height:180px;
  padding:24px;
}
.page-home .capability-card h3{
  margin-bottom:10px;
}
.page-home .capability-card p{
  margin-bottom:0;
  color:var(--muted);
  font-size:.92rem;
  line-height:1.55;
}
.page-home .capability-icon{
  width:42px;
  height:42px;
  margin-bottom:22px;
  display:grid;
  place-items:center;
  border-radius:14px;
  background:var(--foam);
  color:var(--atlantic);
  font-size:.82rem;
  font-weight:900;
}
.page-home .home-explainer{
  padding-top:46px;
}
@media(max-width:760px){
  .page-home .capability-grid{grid-template-columns:1fr}
  .page-home .capability-card{min-height:auto}
}
@media(max-width:560px){
  .page-home .location-card{min-height:128px}
  .page-home .location-context{font-size:.78rem}
  .page-home .home-capabilities{padding-top:42px}
  .page-home .capability-card{padding:20px}
  .page-home .capability-icon{margin-bottom:16px}
  .page-home .home-explainer{padding-top:38px}
}

/* HOME_DIRECT_TOOL_V1.2 */
.page-home .home-tool-hero{max-width:980px;padding-bottom:34px}
.page-home .home-tool-hero .hero-copy{max-width:780px;margin-bottom:24px}
.page-home .home-trip-tool{display:grid;grid-template-columns:1.45fr 1fr 1fr auto;gap:12px;align-items:end;padding:18px;margin-top:24px;background:rgba(255,255,255,.58);box-shadow:var(--shadow-soft)}
.page-home .home-trip-field{min-width:0}
.page-home .home-trip-field label{display:block;margin:0 0 7px;color:var(--muted);font-size:.76rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}
.page-home .home-trip-field input,.page-home .home-trip-field select{width:100%;height:54px;padding:0 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface-strong);color:var(--ink);font:inherit;font-weight:720;outline:none;color-scheme:light dark}
.page-home .home-trip-field input:focus,.page-home .home-trip-field select:focus{border-color:var(--atlantic);box-shadow:0 0 0 3px rgba(26,169,167,.12)}
.page-home .home-trip-submit{min-height:54px;white-space:nowrap;padding-inline:22px}
.page-home .home-trip-error{grid-column:1/-1;margin:0;color:#b43b34;font-size:.86rem;font-weight:750}
.page-home .home-tool-note{margin:11px 2px 0;color:var(--muted);font-size:.8rem}
.page-home .home-locations-compact{padding-top:22px}
.page-home .home-section-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:14px}
.page-home .home-section-head h2{margin-bottom:0}
.page-home .home-location-count{color:var(--muted);font-size:.82rem;font-weight:750}
.page-home .home-location-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.page-home .home-location-links a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;padding:12px 15px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.42);color:var(--ink);text-decoration:none;font-size:.9rem;font-weight:760;transition:.16s ease}
.page-home .home-location-links a:hover{transform:translateY(-2px);border-color:rgba(26,169,167,.38);color:var(--atlantic)}
.page-home .home-location-links a span:last-child{color:var(--atlantic)}
.page-home .home-capabilities{padding-top:44px;padding-bottom:66px}
.page-home .capability-card{min-height:160px}
html[data-theme="dark"] .page-home .home-trip-tool,html[data-theme="dark"] .page-home .home-location-links a{background:rgba(18,43,46,.72)}
html[data-theme="dark"] .page-home .home-trip-field input,html[data-theme="dark"] .page-home .home-trip-field select{background:#18363a;color:#f3f7f6;border-color:#456064;-webkit-text-fill-color:#f3f7f6}
@media(max-width:900px){.page-home .home-trip-tool{grid-template-columns:1fr 1fr}.page-home .home-trip-location{grid-column:1/-1}.page-home .home-trip-submit{grid-column:1/-1}.page-home .home-location-links{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.page-home .home-tool-hero{padding-top:42px}.page-home .home-tool-hero h1{font-size:2.65rem}.page-home .home-trip-tool{grid-template-columns:1fr;padding:15px;gap:11px;margin-top:20px}.page-home .home-trip-location,.page-home .home-trip-submit{grid-column:auto}.page-home .home-trip-field input,.page-home .home-trip-field select{height:52px}.page-home .home-trip-field input::-webkit-date-and-time-value{text-align:center;line-height:52px}.page-home .home-location-links{grid-template-columns:1fr;gap:7px}.page-home .home-location-links a{min-height:52px}.page-home .home-section-head{align-items:flex-start}.page-home .home-location-count{padding-top:4px}.page-home .home-capabilities{padding-top:36px;padding-bottom:54px}}

/* HOME_MOBILE_RESPONSIVE_V1.2.2
   Mobile-only finishing pass for the direct home tool.
   Scope: layout/typography only. No data, routing or desktop behavior changes. */
@media (max-width:560px){
  .page-home .home-tool-hero{
    padding-top:32px;
    padding-bottom:24px;
  }
  .page-home .home-tool-hero h1{
    font-size:clamp(2.18rem,11vw,2.48rem);
    line-height:.96;
    letter-spacing:-.055em;
    margin-bottom:14px;
  }
  .page-home .home-tool-hero .hero-copy{
    margin-bottom:18px;
    font-size:.96rem;
    line-height:1.42;
  }
  .page-home .home-trip-tool{
    width:100%;
    max-width:100%;
    grid-template-columns:minmax(0,1fr);
    padding:14px;
    gap:12px;
    margin-top:18px;
    overflow:hidden;
  }
  .page-home .home-trip-field,
  .page-home .home-trip-location,
  .page-home .home-trip-field input,
  .page-home .home-trip-field select{
    min-width:0;
    max-width:100%;
    width:100%;
  }
  .page-home .home-trip-field input,
  .page-home .home-trip-field select{
    display:block;
    height:50px;
    min-height:50px;
    padding-inline:12px;
    margin:0;
  }
  .page-home .home-trip-field input[type="date"]{
    inline-size:100%;
    min-inline-size:0;
  }
  .page-home .home-trip-field input[type="date"]::-webkit-date-and-time-value{
    min-width:0;
    width:100%;
    height:50px;
    line-height:50px;
    padding:0;
    margin:0;
    text-align:center;
  }
  .page-home .home-trip-field input[type="date"]::-webkit-datetime-edit{
    padding:0;
    margin:0;
  }
  .page-home .home-trip-submit{
    width:100%;
    min-width:0;
    min-height:50px;
    margin-top:1px;
  }
  .page-home .home-tool-note{
    margin:9px 2px 0;
    line-height:1.4;
  }
  .page-home .home-locations-compact{
    padding-top:17px;
  }
  .page-home .home-section-head{
    display:block;
    margin-bottom:12px;
  }
  .page-home .home-location-count{
    display:none;
  }
  .page-home .home-location-links{
    grid-template-columns:minmax(0,1fr);
    gap:7px;
  }
  .page-home .home-location-links a{
    width:100%;
    min-width:0;
    min-height:50px;
    padding:10px 13px;
    border-radius:14px;
    font-size:.88rem;
  }
}


/* HOME_MOBILE_DATE_CONTAINMENT_V1.2.3
   iOS/Safari containment fix for native date controls on the home page.
   The wrapper is layout-neutral on desktop and owns the visual box only on mobile. */
.page-home .home-date-control{display:contents}
@media (max-width:560px){
  .page-home .home-date-control{
    display:block;
    width:100%;
    min-width:0;
    max-width:100%;
    height:50px;
    overflow:hidden;
    border:1px solid var(--line);
    border-radius:16px;
    background:var(--surface-strong);
  }
  .page-home .home-date-control input[type="date"]{
    -webkit-appearance:none!important;
    appearance:none!important;
    display:block!important;
    box-sizing:border-box!important;
    width:100%!important;
    inline-size:100%!important;
    min-width:0!important;
    min-inline-size:0!important;
    max-width:100%!important;
    height:48px!important;
    min-height:48px!important;
    margin:0!important;
    padding:0 12px!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    outline:0!important;
    overflow:hidden!important;
  }
  .page-home .home-date-control input[type="date"]::-webkit-date-and-time-value{
    width:auto!important;
    min-width:0!important;
    height:48px!important;
    line-height:48px!important;
    margin:0!important;
    padding:0!important;
    text-align:center!important;
  }
  .page-home .home-date-control input[type="date"]::-webkit-datetime-edit{
    width:auto!important;
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    text-align:center!important;
  }
  html[data-theme="dark"] .page-home .home-date-control{
    background:#18363a;
    border-color:#456064;
  }
  html[data-theme="dark"] .page-home .home-date-control input[type="date"]{
    color:#f3f7f6!important;
    -webkit-text-fill-color:#f3f7f6!important;
  }
}


/* ==========================================================================
   LEVANTEHOY_CALENDAR_SEMANTIC_COLOR_V1
   One visual variable per calendar cell:
   - cold discrete surface = historical frequency
   - speed = neutral text
   - warm scale is reserved for intensity/detail visualisations
   Red is not part of either data scale.
   ========================================================================== */
:root{
  --lh-freq-1:#2aa9a4;
  --lh-freq-2:#3d87c8;
  --lh-freq-3:#626fc1;
  --lh-freq-4:#785cae;
  --lh-freq-5:#835684;

  --lh-intensity-1:#c7b46a;
  --lh-intensity-2:#d0a34d;
  --lh-intensity-3:#dc9139;
  --lh-intensity-4:#d67735;
  --lh-intensity-5:#ad6248;
}
html[data-theme="dark"]{
  --lh-freq-surface-1:color-mix(in srgb,var(--lh-freq-1) 17%,var(--surface-subtle));
  --lh-freq-surface-2:color-mix(in srgb,var(--lh-freq-2) 20%,var(--surface-subtle));
  --lh-freq-surface-3:color-mix(in srgb,var(--lh-freq-3) 23%,var(--surface-subtle));
  --lh-freq-surface-4:color-mix(in srgb,var(--lh-freq-4) 26%,var(--surface-subtle));
  --lh-freq-surface-5:color-mix(in srgb,var(--lh-freq-5) 29%,var(--surface-subtle));
}
html:not([data-theme="dark"]){
  --lh-freq-surface-1:color-mix(in srgb,var(--lh-freq-1) 12%,#fff);
  --lh-freq-surface-2:color-mix(in srgb,var(--lh-freq-2) 14%,#fff);
  --lh-freq-surface-3:color-mix(in srgb,var(--lh-freq-3) 16%,#fff);
  --lh-freq-surface-4:color-mix(in srgb,var(--lh-freq-4) 18%,#fff);
  --lh-freq-surface-5:color-mix(in srgb,var(--lh-freq-5) 20%,#fff);
}

/* Exactly five discrete categories. */
.planner-day--very-low{--planner-level:var(--lh-freq-1);background:var(--lh-freq-surface-1)!important}
.planner-day--low{--planner-level:var(--lh-freq-2);background:var(--lh-freq-surface-2)!important}
.planner-day--medium{--planner-level:var(--lh-freq-3);background:var(--lh-freq-surface-3)!important}
.planner-day--high{--planner-level:var(--lh-freq-4);background:var(--lh-freq-surface-4)!important}
.planner-day--very-high{--planner-level:var(--lh-freq-5);background:var(--lh-freq-surface-5)!important}
.planner-day::before{height:0!important}
.planner-day i{display:none!important}

/* Selected = interaction, never meteorological meaning. */
.planner-day.is-selected{
  background:inherit;
  border-color:color-mix(in srgb,var(--text) 78%,transparent)!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--text) 78%,transparent)!important;
}
.planner-day.is-selected::after{
  content:"";
  position:absolute;
  inset:2px;
  border:1px solid color-mix(in srgb,var(--text) 24%,transparent);
  border-radius:10px;
  pointer-events:none;
}

/* Cell hierarchy: date < speed < historical frequency. */
.planner-day{min-height:66px!important;padding:7px 2px 6px!important;gap:3px!important}
.planner-day-number{align-self:flex-start;margin-left:5px;font-size:.72rem!important;font-weight:750!important;opacity:.82}
.planner-day-pct{font-size:.92rem!important;font-weight:950!important;color:var(--text)!important;line-height:1.05!important}
.planner-day-levante-speed{
  width:auto!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  display:inline-flex!important;
  gap:2px!important;
  background:transparent!important;
  color:var(--muted)!important;
  border-radius:0!important;
  overflow:visible!important;
  white-space:nowrap!important;
}
.planner-speed-number{font-size:.72rem!important;font-weight:800!important}
.planner-speed-unit{font-size:.50rem!important;font-weight:700!important;opacity:.88}

/* Compact contextual frequency legend. */
.planner-frequency-compact{margin-top:18px}
.planner-frequency-direction{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;margin-top:9px;color:var(--muted);font-size:.66rem}
.planner-frequency-dots{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.planner-frequency-dots i,.planner-frequency-scale-details .planner-legend i{display:block;border-radius:999px}
.planner-frequency-dots i{height:7px}
.planner-frequency-dots .lvl-very-low,.planner-frequency-scale-details .lvl-very-low{background:var(--lh-freq-1)}
.planner-frequency-dots .lvl-low,.planner-frequency-scale-details .lvl-low{background:var(--lh-freq-2)}
.planner-frequency-dots .lvl-medium,.planner-frequency-scale-details .lvl-medium{background:var(--lh-freq-3)}
.planner-frequency-dots .lvl-high,.planner-frequency-scale-details .lvl-high{background:var(--lh-freq-4)}
.planner-frequency-dots .lvl-very-high,.planner-frequency-scale-details .lvl-very-high{background:var(--lh-freq-5)}
.planner-frequency-scale-details{margin-top:8px}
.planner-frequency-scale-details>summary{cursor:pointer;color:var(--muted);font-size:.67rem;font-weight:800}
.planner-calendar-key,.planner-calendar-history-note{margin:8px 0 0;color:var(--muted);font-size:.68rem;line-height:1.45}
.planner-calendar-history-note{font-weight:800}

/* Frequency detail uses the same global cold tokens. */
.planner-detail-level--very-low{--detail-level:var(--lh-freq-1)!important}
.planner-detail-level--low{--detail-level:var(--lh-freq-2)!important}
.planner-detail-level--medium{--detail-level:var(--lh-freq-3)!important}
.planner-detail-level--high{--detail-level:var(--lh-freq-4)!important}
.planner-detail-level--very-high{--detail-level:var(--lh-freq-5)!important}

/* Warm intensity language: no red, and never used in monthly cells. */
.planner-detail-speed--very-soft{background:var(--lh-intensity-1)!important;border-color:var(--lh-intensity-1)!important;color:#1b2528!important}
.planner-detail-speed--soft{background:var(--lh-intensity-2)!important;border-color:var(--lh-intensity-2)!important;color:#1b2528!important}
.planner-detail-speed--moderate{background:var(--lh-intensity-3)!important;border-color:var(--lh-intensity-3)!important;color:#1b2528!important}
.planner-detail-speed--strong{background:var(--lh-intensity-4)!important;border-color:var(--lh-intensity-4)!important;color:#fff!important}
.planner-detail-speed--very-strong{background:var(--lh-intensity-5)!important;border-color:var(--lh-intensity-5)!important;color:#fff!important}
.planner-intensity-row:nth-child(1) .planner-intensity-track i{background:var(--lh-intensity-1)!important}
.planner-intensity-row:nth-child(2) .planner-intensity-track i{background:var(--lh-intensity-2)!important}
.planner-intensity-row:nth-child(3) .planner-intensity-track i{background:var(--lh-intensity-4)!important}
.planner-intensity-row:nth-child(4) .planner-intensity-track i{background:var(--lh-intensity-5)!important}

@media(max-width:560px){
  .planner-day{min-height:64px!important;padding:6px 1px 5px!important}
  .planner-day-number{margin-left:3px;font-size:.68rem!important}
  .planner-day-pct{font-size:.76rem!important}
  .planner-speed-number{font-size:.62rem!important}
  .planner-speed-unit{font-size:.43rem!important}
  .planner-frequency-direction{font-size:.60rem;gap:6px}
  .planner-frequency-scale-details .planner-legend-detailed{grid-template-columns:1fr 1fr!important}
}


/* ==========================================================================
   LH LANGUAGE & COHERENCE PASS V1.1
   ========================================================================== */

/* Same cold frequency language everywhere the historical frequency is shown. */
.trip-dot--very-low.filled{background:var(--lh-freq-1)!important;border-color:var(--lh-freq-1)!important}
.trip-dot--low.filled{background:var(--lh-freq-2)!important;border-color:var(--lh-freq-2)!important}
.trip-dot--medium.filled{background:var(--lh-freq-3)!important;border-color:var(--lh-freq-3)!important}
.trip-dot--high.filled{background:var(--lh-freq-4)!important;border-color:var(--lh-freq-4)!important}
.trip-dot--very-high.filled{background:var(--lh-freq-5)!important;border-color:var(--lh-freq-5)!important}

/* Actionable alternative comparison: keep it readable, not dashboard-like. */
.planner-no-alternatives{
  margin:10px 0 2px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:14px;
  color:var(--muted);
  background:var(--surface-subtle);
  line-height:1.45;
}
.planner-rank-value{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.planner-rank-value small{font-size:.68rem;color:var(--muted);font-weight:800}
.planner-comparison small{display:block;margin-top:3px;color:var(--muted);font-size:.72rem}
#planner-alternatives-note{max-width:60ch}

/* Local context: one useful idea first; the supporting detail stays available. */
.local-context-key{
  margin:14px 0 0;
  padding:12px 14px;
  border-radius:14px;
  background:var(--surface-subtle);
  border:1px solid var(--line);
  line-height:1.5;
}
.local-context-more{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
.local-context-more>summary{
  cursor:pointer;
  list-style:none;
  font-weight:850;
  color:var(--accent);
  padding:8px 0;
}
.local-context-more>summary::-webkit-details-marker{display:none}
.local-context-more>summary::after{content:" ↓";font-weight:700}
.local-context-more[open]>summary::after{content:" ↑"}
.local-context-more .local-decision-layer{margin-top:10px}

/* Methodology is support content, not a primary visual block. */
.seo-local-context--secondary .e4-data-details>summary small{display:block;color:var(--muted);font-weight:500;margin-top:2px}

/* Result card: no extra explanatory card after the same result. */
.historical-summary-card{row-gap:14px}

@media(max-width:760px){
  .planner-rank-value{align-items:flex-start}
  .planner-ranking-item{grid-template-columns:auto 1fr!important}
  .planner-rank-value,.planner-rank-action{grid-column:2}
  .local-context-key{padding:11px 12px}
}


/* ==========================================================================
   LH COHERENCE + RANKING FLOW + TRIP INTENSITY V1.3
   ========================================================================== */

/* Ranking cards: content controls height. No element shares a visual row on mobile. */
@media(max-width:760px){
  .planner-ranking-list{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:12px!important;
  }
  .planner-ranking-item{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    gap:5px!important;
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    padding:12px 13px!important;
    overflow:visible!important;
    white-space:normal!important;
  }
  .planner-rank{
    width:24px!important;
    height:24px!important;
    flex:0 0 24px!important;
    margin-bottom:1px!important;
  }
  .planner-rank-range,.planner-rank-value{
    width:100%!important;
    min-width:0!important;
    margin:0!important;
    justify-self:auto!important;
    white-space:normal!important;
    line-height:1.3!important;
  }
  .planner-rank-range strong{
    display:block!important;
    font-size:.83rem!important;
    line-height:1.25!important;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }
  .planner-rank-range small,
  .planner-rank-value strong,
  .planner-rank-value small{
    display:block!important;
    margin-top:2px!important;
    white-space:normal!important;
  }
  .planner-rank-value{
    display:block!important;
    font-size:.75rem!important;
  }
  .planner-rank-action{display:none!important}
  .planner-highest-details{
    margin-top:16px!important;
    padding-top:13px!important;
  }
  .planner-highest-details>summary{
    line-height:1.35!important;
  }
}

/* Summary metrics are both first-class when trip speed is available. */
.summary-fact.metric-unavailable{display:none!important}
.historical-summary-facts:has(.summary-fact.metric-unavailable){grid-template-columns:1fr!important}
#intensity-human{font-variant-numeric:tabular-nums}

/* Reduced heading noise. */
#observatorio-levante.architecture-section-intro,
#contexto-local.architecture-section-intro{grid-template-columns:1fr!important}
.local-context-headline{margin:0 0 8px;font-size:.95rem;line-height:1.3;color:var(--text)}
.forecast-head .context-purpose{margin:2px 0 5px;font-size:.72rem;color:var(--muted)}
.planner-highest-details>summary{font-weight:850}

/* LH UX CLARITY · CONTROLS VS HEADINGS · V1.4 */
.planner-duration{padding:4px!important;gap:4px!important;border:1px solid var(--line)!important;background:var(--surface-subtle)!important}
.planner-duration-btn{min-height:34px;padding:7px 11px!important;border:1px solid transparent!important;border-radius:10px!important;color:var(--muted)!important;font-weight:850!important;cursor:pointer}
.planner-duration-btn:hover{background:var(--surface)!important;color:var(--text)!important}
.planner-duration-btn[aria-pressed="true"]{background:var(--surface-strong)!important;border-color:var(--line)!important;color:var(--text)!important;box-shadow:0 2px 8px rgba(20,62,66,.08)!important}
.planner-highest-details{margin-top:22px!important;padding-top:16px!important;border-top:1px solid var(--line)!important}
.planner-highest-details>summary,.local-context-more>summary,.local-evidence-details>summary{list-style:none;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;width:100%;min-height:40px;padding:9px 11px!important;border:1px solid var(--line)!important;border-radius:11px!important;background:var(--surface-subtle)!important;color:var(--text)!important;font-size:.78rem!important;font-weight:800!important;cursor:pointer}
.planner-highest-details>summary::-webkit-details-marker,.local-context-more>summary::-webkit-details-marker,.local-evidence-details>summary::-webkit-details-marker{display:none}
.planner-highest-details>summary:hover,.local-context-more>summary:hover,.local-evidence-details>summary:hover{background:var(--surface)!important}
.control-hint{flex:0 0 auto;color:var(--atlantic)!important;font-size:.67rem!important;font-weight:850!important}
.local-context-more>summary::after{content:none!important}
.local-context-public{margin-top:8px!important}.local-identity-card{padding-top:20px!important}.local-identity-summary{margin-top:0!important}.local-context-key{margin-top:12px!important}
.seo-local-context--secondary .e4-data-details>summary{background:var(--surface-subtle)!important;border-radius:15px}
.seo-local-context--secondary .e4-data-details>summary strong{font-size:.82rem}.seo-local-context--secondary .e4-data-details>summary small{font-size:.70rem}
.planner-calendar-head .planner-eyebrow{text-transform:none!important;letter-spacing:.01em!important;font-weight:750!important;color:var(--muted)!important}
.planner-ranking-head{min-height:0!important;margin-bottom:7px!important}.planner-ranking-head .planner-eyebrow{margin-bottom:0!important}
@media(max-width:760px){.planner-duration{width:100%;display:grid!important;grid-template-columns:repeat(3,1fr)}.planner-duration-btn{width:100%;min-height:38px;padding:7px 5px!important}.planner-highest-details>summary,.local-context-more>summary,.local-evidence-details>summary{min-height:42px;padding:10px 11px!important}.control-hint{font-size:.64rem!important}}

/* LH UX COHERENCE · FINAL CONTROL GRAMMAR · V1.5 */
.architecture-toggle{display:inline-flex!important;align-items:center!important;gap:8px!important;min-height:40px!important;margin-top:10px!important;padding:9px 13px!important;border:1px solid var(--line)!important;border-radius:11px!important;background:var(--surface-subtle)!important;color:var(--atlantic)!important;font-weight:850!important;cursor:pointer!important}
.architecture-toggle::after{content:"›";font-size:1.05em;line-height:1;transition:transform .18s ease}
.architecture-toggle[aria-expanded="true"]::after{transform:rotate(90deg)}
.planner-frequency-scale-details>summary{display:inline-flex!important;align-items:center!important;gap:7px!important;min-height:34px!important;padding:7px 10px!important;border:1px solid var(--line)!important;border-radius:10px!important;background:var(--surface-subtle)!important;color:var(--atlantic)!important;font-weight:800!important;cursor:pointer!important;list-style:none}
.planner-frequency-scale-details>summary::-webkit-details-marker{display:none}
.planner-frequency-scale-details>summary::after{content:"Abrir";font-size:.66rem;color:var(--muted);font-weight:750}
.planner-frequency-scale-details[open]>summary::after{content:"Cerrar"}
@media(max-width:760px){.architecture-toggle{width:100%!important;justify-content:space-between!important;min-height:42px!important}.planner-frequency-scale-details>summary{min-height:38px!important}}


/* ==========================================================================
   LH UX COHERENCE · RANGE VS ACTIVE DAY · V1.6
   The trip range is contextual; only the tapped day receives a strong focus.
   ========================================================================== */
.planner-day.is-trip-range{
  border-color:color-mix(in srgb,var(--atlantic) 38%,var(--line))!important;
  background:color-mix(in srgb,var(--accent-soft) 42%,transparent)!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--atlantic) 18%,transparent)!important;
}
.planner-day.is-trip-range::after{content:none!important}
.planner-day.is-trip-range i{
  height:4px!important;
  opacity:.72;
}
.planner-day.is-active-day{
  border-color:var(--aqua)!important;
  background:color-mix(in srgb,var(--accent-soft) 72%,var(--surface))!important;
  box-shadow:inset 0 0 0 2px var(--aqua),0 5px 18px rgba(8,127,140,.13)!important;
}
.planner-day.is-active-day::after{
  content:""!important;
  position:absolute!important;
  inset:5px!important;
  border:1px solid rgba(43,174,169,.24)!important;
  border-radius:9px!important;
  pointer-events:none!important;
}
.planner-day.is-active-day i{height:5px!important;background:var(--aqua)!important;opacity:1}

/* The result heading no longer needs a separate sample pill. */
.result-head-simple{grid-template-columns:1fr!important}
.result-head-simple>div{min-width:0}

/* Context-local intro: one statement, no repeated "Si sopla Levante". */
.local-context-key{font-weight:650}
.local-context-key strong{font-weight:inherit}

/* Methodology control is secondary and semantically distinct from footer navigation. */
.seo-local-context--secondary .e4-data-details>summary strong{letter-spacing:0!important}

/* Historical context in forecast: label first, percentage second. */
.trip-visual-meta #probability-main{
  font-size:.68rem!important;
  font-weight:800!important;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--muted)!important;
}
.trip-visual-meta #probability-level{
  font-weight:850!important;
}

/* LH DECISION CLARITY · V1.7 */
.planner-duration-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.planner-duration-label{font-size:.68rem;line-height:1.2;font-weight:800;color:var(--muted)}#results-section .historical-summary-value{font-weight:900}#results-section .summary-fact strong{font-variant-numeric:tabular-nums}.planner-no-alternatives{max-width:48ch;line-height:1.5}@media(max-width:760px){.planner-duration-wrap{width:100%;align-items:stretch;gap:6px}.planner-duration-label{padding-left:2px}}


/* ==========================================================================
   LH MOBILE HISTORY TOGGLE + ALTERNATIVE CONSISTENCY · V1.8
   ========================================================================== */
@media(max-width:760px){
  #observatory-depth.architecture-depth--collapsed{
    display:none!important;
  }
  #observatory-depth.architecture-depth--forced-open{
    display:block!important;
  }
  #observatorio-levante .architecture-toggle{
    display:inline-flex!important;
    width:100%!important;
    justify-content:space-between!important;
  }
}
@media(min-width:761px){
  #observatorio-levante .architecture-toggle{
    display:none!important;
  }
  #observatory-depth{
    display:block!important;
  }
}

/* LH MOBILE INFORMATION ARCHITECTURE V1.9 */
#results-section,#forecast-section{scroll-margin-top:84px}.product-flow a{min-width:0}.product-flow .product-flow-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-head-e3{align-items:flex-start!important}#forecast-section{margin-top:28px;margin-bottom:20px}@media(max-width:760px){.product-flow{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:4px!important}.product-flow a{padding:8px 3px!important;gap:3px!important}.product-flow a .product-flow-label{font-size:.64rem!important}#results-section{margin-top:10px!important;padding-top:8px!important}#planner-section{margin-top:12px!important}#forecast-section{margin-top:18px!important;margin-bottom:12px!important}}


/* ==========================================================================\n   LH SECTION CHAPTERS + FORECAST-FIRST · V2.0\n   Major sections are identified on the page background, never as another card.\n   ========================================================================== */
.section-chapter{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:30px;
  margin-bottom:10px;
  min-height:28px;
  color:var(--text);
}
.section-chapter-index{
  display:inline-grid;
  place-items:center;
  min-width:27px;
  height:20px;
  padding:0 6px;
  border:1px solid color-mix(in srgb,var(--atlantic) 34%,var(--line));
  border-radius:999px;
  background:color-mix(in srgb,var(--atlantic) 7%,transparent);
  color:var(--atlantic);
  font-size:.58rem;
  font-weight:900;
  letter-spacing:.08em;
  font-variant-numeric:tabular-nums;
}
.section-chapter-label{
  flex:0 0 auto;
  color:var(--text);
  font-size:.74rem;
  font-weight:950;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.section-chapter-line{
  height:1px;
  flex:1 1 auto;
  min-width:24px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--atlantic) 36%,var(--line)),color-mix(in srgb,var(--atlantic) 8%,transparent));
}
.section-chapter-hint{
  flex:0 0 auto;
  color:var(--muted);
  font-size:.66rem;
  font-weight:750;
  white-space:nowrap;
}
.section-chapter--forecast{
  margin-top:18px;
}
.section-chapter--forecast .section-chapter-index,
.section-chapter--forecast .section-chapter-label{
  color:var(--aqua);
}
.section-chapter--forecast .section-chapter-index{
  border-color:color-mix(in srgb,var(--aqua) 38%,var(--line));
  background:color-mix(in srgb,var(--aqua) 8%,transparent);
}
.section-chapter--forecast .section-chapter-line{
  background:linear-gradient(90deg,color-mix(in srgb,var(--aqua) 42%,var(--line)),color-mix(in srgb,var(--aqua) 8%,transparent));
}

/* Forecast is the immediate-answer layer and therefore sits directly below the hero/navigation. */
#forecast-section{
  margin-top:0!important;
  margin-bottom:8px!important;
}
#forecast-section .forecast-hero{
  margin-top:0;
}

/* Major body sections no longer need to imitate chapter labels internally. */
#planifica-tu-viaje{
  padding-top:8px!important;
}
#planifica-tu-viaje.architecture-section-intro{
  grid-template-columns:1fr!important;
}
#planifica-tu-viaje h2{
  margin-top:0;
}

/* Calendar chapter lives inside planner shell, so no extra horizontal wrapper. */
#planner-section>.section-chapter{
  margin-top:28px;
}

/* Keep the local chapter elegant and the content itself descriptive. */
.section-chapter--local{
  margin-top:34px;
}
#contexto-local{
  padding-top:5px!important;
}

@media(max-width:760px){
  .section-chapter{
    gap:7px;
    margin-top:22px;
    margin-bottom:7px;
    min-height:24px;
  }
  .section-chapter--forecast{
    margin-top:12px;
  }
  .section-chapter-index{
    min-width:24px;
    height:18px;
    padding:0 5px;
    font-size:.52rem;
  }
  .section-chapter-label{
    font-size:.66rem;
    letter-spacing:.105em;
  }
  .section-chapter-hint{
    font-size:.59rem;
  }
  #forecast-section{
    margin-top:0!important;
    margin-bottom:4px!important;
  }
  #planifica-tu-viaje{
    padding-top:4px!important;
  }
  #planner-section>.section-chapter{
    margin-top:22px;
  }
}


/* LH FORECAST CLEANUP · V2.1 */
.section-chapter--forecast .section-chapter-line{margin-right:0!important}
#forecast-section .forecast-head{display:block!important}
#forecast-section .forecast-source-note{margin:0!important}
.forecast-source-bottom{position:relative;z-index:1;display:flex;justify-content:flex-end;align-items:center;margin-top:12px}
.forecast-source-bottom .forecast-aemet-badge{min-height:30px;padding:5px 10px;font-size:.66rem;opacity:.88}
@media(max-width:560px){
  .forecast-day-card:first-child .forecast-wind-row{max-width:none!important;width:100%!important}
  .forecast-source-bottom{margin-top:10px}
}
@media(min-width:561px) and (max-width:820px){
  .forecast-day-card:first-child .forecast-wind-row{max-width:none!important;width:100%!important}
}


/* ==========================================================================
   LH BRAND HIERARCHY · V2.3
   Brand = primary line. Product descriptor = smaller secondary line.
   ========================================================================== */
.brand{
  display:inline-flex;
  align-items:center;
  gap:11px;
  min-width:0;
  text-decoration:none;
}

.brand-mark{
  flex:0 0 auto;
}

.brand-copy{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  min-width:0;
  line-height:1;
}

.brand-copy strong{
  display:block;
  margin:0;
  color:var(--text);
  font-size:1.14rem;
  line-height:1.05;
  font-weight:900;
  letter-spacing:-.035em;
  white-space:nowrap;
}

.brand-copy small{
  display:block;
  margin-top:4px;
  color:var(--atlantic);
  font-size:.62rem;
  line-height:1.15;
  font-weight:800;
  letter-spacing:.025em;
  text-transform:none;
  white-space:nowrap;
}

/* Location hero remains deliberately clean: locality, not a second brand block. */
.location-hero--clean{
  display:block!important;
  grid-template-columns:none!important;
}
.location-hero--clean>div{
  min-width:0;
}
.location-hero--clean h1{
  margin-bottom:8px;
}

/* SEO/SERP lead: visible editorial summary immediately after the locality heading. */
.location-seo-lead{
  max-width:820px;
  margin:12px 0 0;
  color:var(--muted);
  font-size:.98rem;
  line-height:1.6;
}

@media(max-width:560px){
  .brand{
    gap:9px;
  }
  .brand-copy strong{
    font-size:1.02rem;
  }
  .brand-copy small{
    margin-top:3px;
    font-size:.51rem;
    letter-spacing:.015em;
  }
  .location-hero--clean{
    padding-top:30px!important;
  }
}

/* ==========================================================================
   LH TRIP + DESKTOP FLOW CLEANUP · V2.4
   Narrative layout: trip result -> alternatives -> calendar.
   ========================================================================== */

/* Major chapter headers are intentionally minimal: number + label + line. */
.section-chapter-hint{display:none!important}

/* The trip/result content returns to the normal editorial width on desktop. */
#results-section,
#planner-section.shell{
  width:min(1120px,calc(100% - 32px))!important;
  max-width:1120px!important;
  margin-inline:auto!important;
}

/* The historical result no longer needs a second visual encoding of 7/14. */
#results-section .historical-summary-card{
  grid-template-columns:1fr!important;
  gap:14px!important;
}
#results-section .historical-summary-primary{
  max-width:760px;
}
#results-section .historical-summary-facts{
  grid-column:1!important;
}

/* Alternatives are one narrative block, not a desktop dashboard. */
#planner-section .planner-head{
  display:block!important;
  margin-bottom:10px!important;
}
#planner-section .planner-head h2{
  max-width:760px;
}
#planner-section .planner-decision-grid,
#planner-section .planner-decision-grid--single{
  display:block!important;
  width:100%!important;
  margin:0 0 30px!important;
}
#planner-section .planner-ranking-card{
  width:100%!important;
  margin:0!important;
}

/* Calendar begins as a new stage, never as a lateral column of alternatives. */
#planner-section .section-chapter--calendar{
  clear:both;
  width:100%;
  margin-top:34px!important;
}
#planner-section .calendar-primary{
  width:100%;
}
#planner-section .planner-layout{
  width:100%;
  grid-template-columns:minmax(0,1fr)!important;
}
#planner-section .planner-calendar-card{
  width:100%;
  min-width:0;
}

/* Keep copy compact and remove needless empty visual space. */
#planifica-tu-viaje.historical-intro-strong{
  margin-bottom:8px;
}
#planifica-tu-viaje.historical-intro-strong>div>h2{
  margin-bottom:0;
}
.form-note{
  margin-top:8px!important;
}

@media(max-width:760px){
  #results-section,
  #planner-section.shell{
    width:min(100% - 24px,1120px)!important;
  }
  #planner-section .planner-decision-grid,
  #planner-section .planner-decision-grid--single{
    margin-bottom:18px!important;
  }
  #planner-section .section-chapter--calendar{
    margin-top:24px!important;
  }
}


/* ==========================================================================
   LH TRIP CHAPTER GROUPING · V2.6
   02 TU VIAJE = fechas -> resultado -> alternativas.
   ========================================================================== */
.trip-chapter-surface{
  width:min(1120px,calc(100% - 40px));
  margin:14px auto 34px;
  padding:22px 24px 24px;
  border:1px solid color-mix(in srgb,var(--line) 72%,transparent);
  border-left:3px solid color-mix(in srgb,var(--atlantic) 58%,transparent);
  border-radius:22px;
  background:color-mix(in srgb,var(--surface) 28%,transparent);
  box-shadow:0 12px 32px rgba(0,0,0,.045);
}
.trip-chapter-surface #planifica-tu-viaje,
.trip-chapter-surface #results-section,
.trip-chapter-surface #planner-section{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}
.trip-chapter-surface #planifica-tu-viaje{margin-top:0!important}
.trip-chapter-surface #results-section{margin-top:28px!important}
.trip-chapter-surface #planner-section{margin-top:26px!important;margin-bottom:0!important}

.trip-chapter-surface .planner-alternatives-title{
  font-size:clamp(1.05rem,1.45vw,1.28rem)!important;
  line-height:1.18!important;
  letter-spacing:-.018em!important;
  margin-bottom:5px!important;
  font-weight:820!important;
}
.trip-chapter-surface .planner-head-e3 p,
.trip-chapter-surface .planner-head p{
  max-width:58ch;
  font-size:.82rem;
  line-height:1.45;
}
.trip-chapter-surface .section-chapter--calendar{
  margin-top:32px!important;
}

@media(max-width:760px){
  .trip-chapter-surface{
    width:calc(100% - 24px);
    margin-top:10px;
    margin-bottom:26px;
    padding:16px 14px 18px;
    border-radius:18px;
    border-left-width:2px;
  }
  .trip-chapter-surface #results-section{margin-top:22px!important}
  .trip-chapter-surface #planner-section{margin-top:22px!important}
  .trip-chapter-surface .planner-alternatives-title{font-size:1.08rem!important}
}


/* ========================================================================== 
   LH CALENDAR + SEASON CHAPTER · V2.7
   03 CALENDARIO = día a día + evolución durante la temporada.
   ========================================================================== */
.calendar-chapter-surface{
  width:min(1340px,calc(100% - 40px));
  margin:14px auto 36px;
  padding:22px 24px 26px;
  border:1px solid color-mix(in srgb,var(--line) 66%,transparent);
  border-left:3px solid color-mix(in srgb,var(--atlantic) 46%,transparent);
  border-radius:22px;
  background:color-mix(in srgb,var(--surface) 20%,transparent);
  box-shadow:0 12px 32px rgba(0,0,0,.03);
}
.calendar-chapter-surface .calendar-primary{
  width:min(1280px,100%);
  max-width:1280px;
  margin:0 auto;
}
.calendar-chapter-surface .calendar-primary-head{width:100%;margin-left:auto;margin-right:auto}
.calendar-chapter-surface .planner-layout,
.calendar-chapter-surface .planner-layout-explorer{
  width:100%;
  display:block!important;
  grid-template-columns:minmax(0,1fr)!important;
}
.calendar-chapter-surface .planner-calendar-card{width:100%;max-width:none;min-width:0}
.calendar-chapter-surface #observatorio-levante{
  width:min(960px,100%);
  max-width:960px!important;
  margin:34px auto 0!important;
  padding-top:22px!important;
}
.calendar-chapter-surface #observatorio-levante::before{margin-bottom:18px!important}
.calendar-chapter-surface #observatorio-levante>div:last-child{max-width:760px!important}
.calendar-chapter-surface #observatory-depth{
  width:min(960px,100%);
  max-width:960px!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
.calendar-chapter-surface .visual-stats-section,
.calendar-chapter-surface #patterns-section,
.calendar-chapter-surface .trend-section{
  width:100%;
  max-width:960px!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
.calendar-chapter-surface .visual-stats-card{width:100%;max-width:none}
.calendar-chapter-surface .visual-stats-group:first-child{margin-top:0!important}
.calendar-chapter-surface .visual-stats-group-title h3{margin-top:0!important}
.calendar-chapter-surface .patterns-advanced-wrap{margin-top:14px!important}
.calendar-chapter-surface + .section-chapter--local{margin-top:12px!important}
@media(max-width:760px){
  .calendar-chapter-surface{
    width:calc(100% - 24px);
    margin-top:10px;
    margin-bottom:28px;
    padding:14px 10px 18px;
    border-radius:18px;
    border-left-width:2px;
  }
  .calendar-chapter-surface .calendar-primary{width:100%}
  .calendar-chapter-surface #observatorio-levante{
    width:100%;
    margin-top:22px!important;
    padding-top:16px!important;
  }
  .calendar-chapter-surface #observatory-depth,
  .calendar-chapter-surface .visual-stats-section,
  .calendar-chapter-surface #patterns-section,
  .calendar-chapter-surface .trend-section{width:100%;max-width:none!important}
}


/* ==========================================================================
   LH CALENDAR DESKTOP GRID · V2.8
   Desktop: calendar left, season/persistence right.
   Mobile/tablet: stacked.
   ========================================================================== */

/* Chapter heading aligns with the real historical content width. */
.section-chapter--calendar{
  width:min(1360px,calc(100% - 40px))!important;
  margin-left:auto!important;
  margin-right:auto!important;
}

/* The chapter envelope hugs the useful content instead of floating in empty space. */
.calendar-chapter-surface{
  width:min(1360px,calc(100% - 40px))!important;
  padding:22px!important;
}

.calendar-chapter-grid{
  display:grid;
  grid-template-columns:minmax(780px,1.7fr) minmax(360px,.9fr);
  gap:28px;
  align-items:start;
}

.calendar-main-column,
.calendar-side-column{
  min-width:0;
}

/* Left column: monthly calendar uses all the space assigned to it. */
.calendar-main-column .calendar-primary{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
}
.calendar-main-column .planner-calendar-card{
  width:100%!important;
  max-width:none!important;
}

/* Right column: season and persistence become one coherent stack. */
.calendar-side-column{
  display:flex;
  flex-direction:column;
  gap:18px;
}

.calendar-side-column #observatorio-levante{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding-top:0!important;
}
.calendar-side-column #observatorio-levante::before{
  margin-bottom:14px!important;
}
.calendar-side-column #observatorio-levante>div:last-child{
  max-width:none!important;
}

.calendar-side-column #observatory-depth,
.calendar-side-column .visual-stats-section,
.calendar-side-column #patterns-section,
.calendar-side-column .trend-section{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}

.calendar-side-column .visual-stats-card{
  width:100%!important;
  max-width:none!important;
}

.calendar-side-column .patterns-advanced-wrap{
  margin-top:0!important;
}

/* Avoid an oversized empty panel feel. */
.calendar-chapter-surface{
  background:color-mix(in srgb,var(--surface) 16%,transparent)!important;
  box-shadow:0 8px 24px rgba(0,0,0,.025)!important;
}

/* Large desktop: give the calendar a little more space without exceeding the content frame. */
@media(min-width:1500px){
  .calendar-chapter-grid{
    grid-template-columns:minmax(820px,1.8fr) minmax(380px,.8fr);
    gap:30px;
  }
}

/* Tablet and mobile: return to the natural vertical reading order. */
@media(max-width:1100px){
  .section-chapter--calendar{
    width:min(1120px,calc(100% - 32px))!important;
  }
  .calendar-chapter-surface{
    width:min(1120px,calc(100% - 32px))!important;
  }
  .calendar-chapter-grid{
    display:block;
  }
  .calendar-side-column{
    margin-top:26px;
    gap:16px;
  }
  .calendar-side-column #observatorio-levante{
    margin-top:0!important;
  }
}

@media(max-width:760px){
  .section-chapter--calendar{
    width:calc(100% - 24px)!important;
  }
  .calendar-chapter-surface{
    width:calc(100% - 24px)!important;
    padding:14px 10px 18px!important;
  }
  .calendar-side-column{
    margin-top:22px;
  }
}


/* ==========================================================================
   LH CALENDAR DESKTOP STACKED GRID · V2.9
   Desktop layout:
   Row 1: Calendar full width
   Row 2: Season | Consecutive-days
   ========================================================================== */

@media(min-width:1101px){

  /* Chapter uses one full-width row for the calendar. */
  .calendar-chapter-grid{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:26px!important;
  }

  .calendar-main-column{
    width:100%;
    min-width:0;
  }

  .calendar-main-column .calendar-primary{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }

  /* Second row: two balanced historical-detail columns. */
  .calendar-side-column{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:24px!important;
    align-items:start!important;
    width:100%;
    margin:0!important;
  }

  /* Left: monthly/seasonal frequency. */
  .calendar-side-column #observatorio-levante{
    grid-column:1;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding-top:0!important;
  }

  /* Right: persistence / consecutive days. */
  .calendar-side-column #observatory-depth{
    grid-column:2;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }

  /* Historical submodules should fill their half-column instead of shrinking. */
  .calendar-side-column .visual-stats-section,
  .calendar-side-column #patterns-section,
  .calendar-side-column .trend-section,
  .calendar-side-column .visual-stats-card,
  .calendar-side-column .patterns-advanced-wrap{
    width:100%!important;
    max-width:none!important;
    margin-left:0!important;
    margin-right:0!important;
  }

  /* Keep both lower blocks visually aligned. */
  .calendar-side-column #observatorio-levante,
  .calendar-side-column #observatory-depth{
    align-self:start;
  }

  /* Make the second row feel like one pair rather than two floating islands. */
  .calendar-side-column #observatorio-levante::before{
    margin-bottom:14px!important;
  }
}

/* Tablet/mobile remain stacked vertically. */
@media(max-width:1100px){
  .calendar-chapter-grid{
    display:block!important;
  }
  .calendar-side-column{
    display:flex!important;
    flex-direction:column!important;
    gap:16px!important;
    margin-top:26px!important;
  }
  .calendar-side-column #observatorio-levante,
  .calendar-side-column #observatory-depth{
    width:100%!important;
    max-width:none!important;
  }
}


/* ==========================================================================
   LH HISTORICAL DETAIL TWO-COLUMN ROW · V3.0
   Exact desktop intent:
   Row 1: Calendar full width.
   Row 2: [Frequency by month] [Consecutive days]
   ========================================================================== */

@media(min-width:1101px){

  /* Keep the calendar on its own full-width row. */
  .calendar-chapter-grid{
    display:block!important;
  }

  .calendar-main-column{
    width:100%!important;
  }

  .calendar-main-column .calendar-primary{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }

  /* Season intro remains above the two detail cards. */
  .calendar-side-column{
    display:block!important;
    width:100%!important;
    margin-top:26px!important;
  }

  .calendar-side-column #observatorio-levante{
    width:100%!important;
    max-width:none!important;
    margin:0 0 18px!important;
    padding-top:0!important;
  }

  /* THIS is the actual two-column row the UI needs:
     visual stats on the left, persistence on the right. */
  .calendar-side-column #observatory-depth{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:24px!important;
    align-items:start!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }

  .calendar-side-column #visual-stats-section{
    grid-column:1!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }

  .calendar-side-column #patterns-section{
    grid-column:2!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }

  .calendar-side-column #visual-stats-section .visual-stats-card,
  .calendar-side-column #patterns-section .advanced-history-details{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    box-sizing:border-box;
  }

  /* Avoid internal width constraints that make either column look half-empty. */
  .calendar-side-column #patterns-section .advanced-history-body,
  .calendar-side-column #patterns-section .two-col,
  .calendar-side-column #patterns-section .panel{
    width:100%!important;
    max-width:none!important;
  }

  /* Inside the persistence card, keep its two subpanels stacked so the
     right column remains readable instead of becoming another nested grid. */
  .calendar-side-column #patterns-section .two-col{
    display:block!important;
  }
  .calendar-side-column #patterns-section .two-col > * + *{
    margin-top:14px!important;
  }

  /* Later historical trend content remains below both columns, full width. */
  .calendar-side-column #trend-section,
  .calendar-chapter-surface #trend-section{
    width:100%!important;
    max-width:none!important;
    margin-top:24px!important;
  }
}

/* Mobile/tablet: retain natural vertical stacking. */
@media(max-width:1100px){
  .calendar-side-column #observatory-depth{
    display:block!important;
  }
  .calendar-side-column #visual-stats-section,
  .calendar-side-column #patterns-section{
    width:100%!important;
    max-width:none!important;
  }
  .calendar-side-column #patterns-section{
    margin-top:16px!important;
  }
}


/* ==========================================================================
   LH HISTORICAL COPY + RESPONSIVE OPEN STATE · V3.1
   ========================================================================== */

/* Month is the primary period; year is contextual. */
#planner-calendar-month{
  display:flex;
  align-items:baseline;
  gap:7px;
}
#planner-calendar-month .planner-calendar-year{
  font-size:.62em;
  line-height:1;
  font-weight:700;
  color:var(--muted);
  opacity:.9;
}

/* Clean section titles after removing redundant explanatory copy. */
.calendar-primary-head p:empty,
#observatorio-levante p:empty,
#patterns-section p:empty{
  display:none!important;
}

/* Desktop: persistence is open and useful immediately.
   Mobile/tablet: keep the compact disclosure behaviour. */
@media(min-width:1101px){
  #patterns-section details > summary{
    cursor:default;
  }
}

@media(max-width:1100px){
  #patterns-section details[open] > *:not(summary){
    /* content remains available, but JS/CSS can collapse through normal interaction */
  }
}

/* Make the two lower cards visually equivalent in the two-column row. */
@media(min-width:1101px){
  #visual-stats-section,
  #patterns-section{
    align-self:stretch!important;
  }

  #visual-stats-section .visual-stats-card,
  #patterns-section .advanced-history-details{
    height:100%;
  }
}


/* ==========================================================================
   LH HISTORICAL LABELS + MONTH/YEAR HIERARCHY · V3.1 FINAL
   ========================================================================== */
#planner-month-title{
  display:flex!important;
  align-items:baseline;
  gap:7px;
}
#planner-month-title .planner-month-name{
  font:inherit;
  color:inherit;
}
#planner-month-title .planner-month-year{
  font-size:.62em;
  line-height:1;
  font-weight:700;
  color:var(--muted);
  opacity:.9;
}

/* Removed explanatory copy must not leave vertical holes. */
#observatorio-levante .section-intro p:empty,
#observatorio-levante p:empty,
#patterns-section summary small:empty{
  display:none!important;
}

/* In desktop two-column mode, persistence is a visible comparison peer. */
@media(min-width:1101px){
  #patterns-section .patterns-advanced-details > summary{
    cursor:default;
  }
  #visual-stats-section,
  #patterns-section{
    align-self:stretch!important;
  }
  #visual-stats-section .visual-stats-card,
  #patterns-section .patterns-advanced-details{
    height:100%;
    box-sizing:border-box;
  }
}


/* ==========================================================================
   LH LOCAL CONTEXT FINAL CLEANUP · V3.3
   04 = local practical meaning, compact methodology, useful cross-navigation.
   ========================================================================== */

.section-chapter--local,
#contexto-local,
.local-context-public,
.seo-local-context--secondary{
  width:min(1120px,calc(100% - 40px))!important;
  margin-left:auto!important;
  margin-right:auto!important;
}

#contexto-local{
  padding-bottom:4px!important;
}
#contexto-local h2{
  margin-bottom:0!important;
}

/* PC: chapter 04 is information, not an accordion maze. */
@media(min-width:1101px){
  .local-context-public details.local-context-more > summary,
  .local-context-public details.local-evidence-details > summary{
    cursor:default!important;
  }
  .local-context-public details.local-context-more > summary .control-hint,
  .local-context-public details.local-evidence-details > summary .control-hint{
    display:none!important;
  }
}

/* Empty copy removed by the content cleanup must not reserve space. */
.local-context-public p:empty,
.local-context-public .local-decision-guardrail:empty,
.local-context-public .local-context-key:empty{
  display:none!important;
}

/* Bottom of 04: compact methodology left, richer local navigation right. */
.local-context-bottom-grid{
  display:grid!important;
  grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr)!important;
  gap:18px!important;
  align-items:stretch!important;
}

.local-data-note,
.local-context-bottom-grid .seo-related{
  padding:20px!important;
  height:100%;
  box-sizing:border-box;
}

.local-data-note h2,
.local-context-bottom-grid .seo-related h2{
  margin:0 0 12px!important;
  font-size:1.18rem!important;
  letter-spacing:-.025em!important;
}

.local-data-note p{
  margin:0 0 14px!important;
  color:var(--muted);
  line-height:1.5;
  font-size:.88rem;
}

.local-data-method-link{
  display:inline-flex;
  color:var(--atlantic);
  font-size:.82rem;
  font-weight:800;
  text-decoration:none;
}

.local-context-bottom-grid .seo-related-links{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important;
}

.local-context-bottom-grid .seo-related-links a{
  min-height:44px;
  display:flex!important;
  align-items:center;
  padding:10px 12px!important;
  line-height:1.25!important;
}

/* Local practical copy should dominate over metadata. */
.local-context-public .local-decision-layer{
  margin-top:10px!important;
}
.local-context-public .local-consequence-grid{
  margin-top:12px!important;
}

/* Mobile/tablet returns to compact disclosures and one-column navigation. */
@media(max-width:1100px){
  .local-context-bottom-grid{
    grid-template-columns:1fr!important;
  }
}

@media(max-width:760px){
  .section-chapter--local,
  #contexto-local,
  .local-context-public,
  .seo-local-context--secondary{
    width:calc(100% - 24px)!important;
  }
  .local-context-bottom-grid .seo-related-links{
    grid-template-columns:1fr!important;
  }
  .local-data-note,
  .local-context-bottom-grid .seo-related{
    padding:15px!important;
  }
}


/* ==========================================================================
   LH LOCAL CONTEXT CONTENT PRUNING · V3.4
   ========================================================================== */

.local-context-bottom-grid{
  display:block!important;
}

.local-context-bottom-grid .seo-related{
  width:100%!important;
  max-width:none!important;
  height:auto!important;
}

/* With the duplicated decision layer removed, keep the useful cards close
   to the “Qué ocurre con Levante fuerte” heading. */
.local-context-public .local-consequence-grid{
  margin-top:12px!important;
}

.local-context-public .local-decision-layer:empty,
.local-context-public .local-place-row:empty{
  display:none!important;
}

/* PC: use the full width for useful cross-navigation. */
@media(min-width:1101px){
  .local-context-bottom-grid .seo-related-links{
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:8px!important;
  }
}

@media(max-width:1100px){
  .local-context-bottom-grid .seo-related-links{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}

@media(max-width:620px){
  .local-context-bottom-grid .seo-related-links{
    grid-template-columns:1fr!important;
  }
}


/* ==========================================================================
   LH NEARBY DATES IA · V3.5
   ========================================================================== */

.planner-alternative-group-head{
  margin-bottom:10px;
}

.planner-alternative-group-head h3{
  margin:0 0 4px;
  font-size:1rem;
  line-height:1.2;
  font-weight:850;
  letter-spacing:-.015em;
}

.planner-alternative-group-head p{
  margin:0;
  color:var(--muted);
  font-size:.78rem;
  line-height:1.4;
}

.planner-alternative-group--lower{
  padding-bottom:16px;
}

.planner-highest-details{
  margin-top:0!important;
  padding-top:14px!important;
  border-top:1px solid var(--line)!important;
}

@media(min-width:1101px){
  .planner-highest-details > summary{
    cursor:default!important;
    background:transparent!important;
    border:0!important;
    padding:0 0 10px!important;
    min-height:0!important;
  }

  .planner-highest-details > summary > span:first-child{
    font-size:1rem!important;
    font-weight:850!important;
    letter-spacing:-.015em;
  }

  .planner-highest-details > summary .control-hint{
    display:none!important;
  }

  .planner-highest-details[open] > .planner-ranking-list{
    margin-top:0!important;
  }
}

@media(max-width:1100px){
  .planner-highest-details > summary{
    cursor:pointer!important;
  }
}


/* ==========================================================================
   LH PERSISTENCE CARD SIMPLIFICATION · V3.6
   ========================================================================== */

/* The outer title already explains the metric; inner meta-heading is removed. */
#patterns-section .panel-head:empty,
#patterns-section .panel-head:not(:has(h3, p)){
  display:none!important;
}

#patterns-section .panel,
#patterns-section .advanced-history-body{
  padding-top:16px!important;
}

/* Three numbers are the content; make their labels readable and self-contained. */
#patterns-section .metric-grid,
#patterns-section .stats-grid{
  align-items:stretch;
}

#patterns-section .metric-grid > *,
#patterns-section .stats-grid > *{
  min-width:0;
}

#patterns-section small{
  line-height:1.35;
  white-space:normal;
}

@media(min-width:1101px){
  #patterns-section .metric-grid,
  #patterns-section .stats-grid{
    gap:12px!important;
  }
}


/* ==========================================================================
   LH PERSISTENCE CARD CORRECTIVE · V3.6.1
   Targets the actual markup used by the live card.
   ========================================================================== */

#patterns-section .streak-summary-card{
  padding-top:18px!important;
}

#patterns-section .streak-summary-card .mini-metrics{
  margin-top:0!important;
  align-items:stretch;
}

#patterns-section .streak-summary-card .mini-metrics > div{
  min-width:0;
}

#patterns-section .streak-summary-card .mini-metrics span{
  white-space:normal!important;
  line-height:1.35!important;
}

/* LH DURATION STORY · V3.8 */
#patterns-section .mini-metrics{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:12px!important;
  position:relative;
}
#patterns-section .mini-metrics>div{
  min-height:118px!important;
  padding:18px 16px!important;
  border:1px solid var(--line)!important;
  border-radius:16px!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  align-items:flex-start!important;
}
#patterns-section .mini-metrics strong{
  font-size:2rem!important;
  line-height:1!important;
  letter-spacing:-.04em!important;
  margin-bottom:9px!important;
}
#patterns-section .mini-metrics span{
  font-size:.78rem!important;
  line-height:1.35!important;
  white-space:normal!important;
}
#patterns-section .mini-metrics>div:nth-child(1)::before,
#patterns-section .mini-metrics>div:nth-child(2)::before,
#patterns-section .mini-metrics>div:nth-child(3)::before{
  display:block;
  margin-bottom:9px;
  font-size:.66rem;
  font-weight:850;
  letter-spacing:.07em;
  text-transform:uppercase;
  color:var(--atlantic);
}
#patterns-section .mini-metrics>div:nth-child(1)::before{content:"NORMALMENTE";}
#patterns-section .mini-metrics>div:nth-child(2)::before{content:"CUANDO DURA MÁS";}
#patterns-section .mini-metrics>div:nth-child(3)::before{content:"RÉCORD";}
@media(max-width:620px){
 #patterns-section .mini-metrics{grid-template-columns:1fr!important}
 #patterns-section .mini-metrics>div{min-height:auto!important}
}


/* ==========================================================================
   LH DURATION VISUAL PROGRESSION · V3.9
   Normalmente -> Cuando dura más -> Récord
   ========================================================================== */

@media(min-width:621px){
  #patterns-section .mini-metrics{
    position:relative!important;
    column-gap:28px!important;
  }

  /* Horizontal guide connecting the three duration milestones. */
  #patterns-section .mini-metrics::before{
    content:"";
    position:absolute;
    z-index:0;
    left:15%;
    right:15%;
    top:50%;
    height:2px;
    transform:translateY(-50%);
    background:linear-gradient(
      90deg,
      transparent 0,
      var(--line) 8%,
      var(--line) 92%,
      transparent 100%
    );
    pointer-events:none;
  }

  #patterns-section .mini-metrics>div{
    position:relative!important;
    z-index:1;
    background:var(--surface)!important;
  }

  /* Small connector nodes make the reading order explicit without adding
     statistical labels such as 50% / 90%. */
  #patterns-section .mini-metrics>div::after{
    content:"";
    position:absolute;
    top:50%;
    width:8px;
    height:8px;
    border-radius:50%;
    border:2px solid var(--atlantic);
    background:var(--surface);
    transform:translateY(-50%);
    box-sizing:border-box;
  }

  #patterns-section .mini-metrics>div:first-child::after{
    right:-19px;
  }

  #patterns-section .mini-metrics>div:nth-child(2)::after{
    right:-19px;
  }

  #patterns-section .mini-metrics>div:last-child::after{
    display:none;
  }
}

/* Mobile remains deliberately simple: stacked cards, no horizontal timeline. */
@media(max-width:620px){
  #patterns-section .mini-metrics::before,
  #patterns-section .mini-metrics>div::after{
    display:none!important;
  }
}


/* ==========================================================================
   LH MOBILE FREQUENCY DOTS CORRECTIVE · V3.9.1
   ========================================================================== */

#results-section .historical-frequency-visual{
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  align-items:center!important;
  gap:10px!important;
  margin-top:12px!important;
  min-height:18px;
  overflow:visible!important;
}

#results-section .historical-frequency-dots{
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  align-items:center!important;
  flex-wrap:nowrap!important;
  gap:5px!important;
  min-width:0;
}

#results-section .historical-frequency-dots i{
  display:block!important;
  visibility:visible!important;
  flex:0 0 11px!important;
  width:11px!important;
  height:11px!important;
  border-radius:50%!important;
  border:1px solid color-mix(in srgb,var(--atlantic) 45%,var(--line))!important;
  background:transparent!important;
  box-sizing:border-box!important;
}

#results-section .historical-frequency-dots i.is-filled{
  background:var(--atlantic)!important;
  border-color:var(--atlantic)!important;
}

#results-section .historical-frequency-pct{
  display:block!important;
  visibility:visible!important;
  color:var(--text)!important;
  font-size:.82rem!important;
  font-weight:850!important;
  white-space:nowrap!important;
}

/* Remove spacing left by eliminated explanatory lines. */
#results-section .historical-summary-primary > .decision-note,
#results-section .summary-fact > small.hidden{
  display:none!important;
}

@media(max-width:560px){
  #results-section .historical-frequency-visual{
    gap:8px!important;
    margin-top:10px!important;
  }
  #results-section .historical-frequency-dots{
    gap:4px!important;
  }
  #results-section .historical-frequency-dots i{
    flex-basis:10px!important;
    width:10px!important;
    height:10px!important;
  }
  #results-section .historical-frequency-pct{
    font-size:.78rem!important;
  }
}


/* ==========================================================================
   LH MONTHLY HISTORY ALWAYS VISIBLE · V4.0
   No toggle in PC or mobile.
   ========================================================================== */

/* The monthly historical block is part of chapter 03, not optional depth. */
#observatory-depth,
#observatory-depth.architecture-depth--collapsed,
#observatory-depth.architecture-depth--forced-open,
#observatory-depth.architecture-depth--mobile-collapsed{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
}

/* The old “Ver histórico por meses” control no longer has a UX purpose. */
#observatorio-levante .architecture-toggle,
button[data-architecture-toggle="observatory-depth"]{
  display:none!important;
}

/* “Levante por meses” is already the section title.
   Remove the repeated “Frecuencia histórica por mes / Porcentaje…” header. */
#visual-stats-section .visual-stats-group:first-child > .visual-stats-group-title{
  display:none!important;
}

/* Start the useful data immediately after the section title. */
#visual-stats-section .visual-stats-group:first-child{
  margin-top:0!important;
}

/* Prevent obsolete collapsed-state rules from winning later in the cascade. */
@media(max-width:1100px){
  #observatory-depth,
  #observatory-depth.architecture-depth--collapsed,
  #observatory-depth.architecture-depth--mobile-collapsed{
    display:block!important;
  }

  #observatorio-levante .architecture-toggle,
  button[data-architecture-toggle="observatory-depth"]{
    display:none!important;
  }
}

/* ==========================================================================
   LH TRIP RANGE PICKER + HISTORICAL COLOR PRESERVATION · V4.1
   ========================================================================== */

/* Historical calendar: the heatmap color remains the source of truth.
   Selection is communicated only with an outline, never by replacing fill. */
.planner-day.is-trip-range{
  background:var(--planner-level)!important;
  border-color:color-mix(in srgb,var(--aqua) 72%,var(--line))!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--aqua) 68%,transparent)!important;
}
.planner-day.is-trip-start,
.planner-day.is-trip-end{
  border-color:var(--aqua)!important;
  box-shadow:inset 0 0 0 2px var(--aqua),0 0 0 1px color-mix(in srgb,var(--aqua) 18%,transparent)!important;
}
.planner-day.is-trip-range::after,
.planner-day.is-trip-start::after,
.planner-day.is-trip-end::after{content:none!important}

/* The tapped day also keeps its historical fill. */
.planner-day.is-active-day{
  background:var(--planner-level)!important;
}

/* Mobile range picker: one opening, two taps. */
.lh-date-step{
  margin:-2px 0 10px!important;
  color:var(--atlantic)!important;
  font-size:.82rem!important;
  font-weight:800!important;
}
.lh-date-step:empty{display:none!important}
.lh-date-day.is-range-start,
.lh-date-day.is-range-end{
  box-shadow:inset 0 0 0 2px var(--aqua)!important;
}
.lh-date-day.is-range-between{
  background:color-mix(in srgb,var(--aqua) 14%,var(--surface))!important;
  border-color:color-mix(in srgb,var(--aqua) 35%,var(--line))!important;
}


/* ==========================================================================
   LH TRIP RANGE PICKER CORRECTIVE · V4.1.1
   1) iOS: custom picker only.
   2) Range selection never replaces the historical heatmap fill.
   ========================================================================== */

/* Restore the exact historical surface for selected/active days. */
.planner-day.is-trip-range.planner-day--very-low,
.planner-day.is-trip-start.planner-day--very-low,
.planner-day.is-trip-end.planner-day--very-low,
.planner-day.is-active-day.planner-day--very-low{
  background:var(--lh-freq-surface-1)!important;
}
.planner-day.is-trip-range.planner-day--low,
.planner-day.is-trip-start.planner-day--low,
.planner-day.is-trip-end.planner-day--low,
.planner-day.is-active-day.planner-day--low{
  background:var(--lh-freq-surface-2)!important;
}
.planner-day.is-trip-range.planner-day--medium,
.planner-day.is-trip-start.planner-day--medium,
.planner-day.is-trip-end.planner-day--medium,
.planner-day.is-active-day.planner-day--medium{
  background:var(--lh-freq-surface-3)!important;
}
.planner-day.is-trip-range.planner-day--high,
.planner-day.is-trip-start.planner-day--high,
.planner-day.is-trip-end.planner-day--high,
.planner-day.is-active-day.planner-day--high{
  background:var(--lh-freq-surface-4)!important;
}
.planner-day.is-trip-range.planner-day--very-high,
.planner-day.is-trip-start.planner-day--very-high,
.planner-day.is-trip-end.planner-day--very-high,
.planner-day.is-active-day.planner-day--very-high{
  background:var(--lh-freq-surface-5)!important;
}

/* Range = outline only. Intermediate days are deliberately quieter. */
.planner-day.is-trip-range{
  border-color:color-mix(in srgb,var(--aqua) 55%,var(--line))!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--aqua) 45%,transparent)!important;
}
.planner-day.is-trip-start,
.planner-day.is-trip-end{
  border-color:var(--aqua)!important;
  box-shadow:inset 0 0 0 2px var(--aqua)!important;
}

/* iOS/mobile: native date UI must not visually suggest that it will open. */
@media(max-width:767px), (hover:none) and (pointer:coarse){
  #date-from[readonly],
  #date-to[readonly]{
    cursor:pointer;
  }
}


/* ==========================================================================
   LH TRIP RANGE PICKER · V4.1.2 CORRECTIVE
   iOS Chrome: no native confirmation after second date.
   Calendar: full selected stay clearly outlined.
   ========================================================================== */

/* All dates inside the stay are visibly part of the range.
   Fill remains the historical-frequency color. */
.planner-day.is-trip-range{
  border-color:color-mix(in srgb,var(--aqua) 82%,white 8%)!important;
  box-shadow:
    inset 0 0 0 2px color-mix(in srgb,var(--aqua) 58%,transparent),
    0 0 0 1px color-mix(in srgb,var(--aqua) 18%,transparent)!important;
}

/* Arrival / departure are stronger anchors. */
.planner-day.is-trip-start,
.planner-day.is-trip-end{
  border-color:var(--aqua)!important;
  box-shadow:
    inset 0 0 0 3px var(--aqua),
    0 0 0 1px color-mix(in srgb,var(--aqua) 28%,transparent)!important;
}

/* Active/detail selection must not hide the trip range state. */
.planner-day.is-trip-range.is-active-day{
  border-color:color-mix(in srgb,var(--aqua) 88%,white 8%)!important;
}
.planner-day.is-trip-start.is-active-day,
.planner-day.is-trip-end.is-active-day{
  border-color:var(--aqua)!important;
}

/* On small screens the intermediate outline needs enough contrast to be
   perceived as one continuous stay, but must not alter the cell fill. */
@media(max-width:760px){
  .planner-day.is-trip-range{
    border-width:2px!important;
    box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--aqua) 62%,transparent)!important;
  }
  .planner-day.is-trip-start,
  .planner-day.is-trip-end{
    border-width:2px!important;
    box-shadow:inset 0 0 0 3px var(--aqua)!important;
  }
}

/* LH MICROCOPY + RESULT HIERARCHY · V4.1 */
#results-section .historical-frequency-label{
  color:var(--muted)!important;
  font-size:.72rem!important;
  font-weight:700!important;
  white-space:nowrap!important;
}
@media(max-width:560px){
  #results-section .historical-frequency-label{font-size:.68rem!important;}
}
#planner-alternatives-note:empty{display:none!important;}


/* ==========================================================================
   LEVANTEHOY · GLOBAL HISTORICAL FREQUENCY PALETTE · V1.0
   Una única semántica cromática en toda la web cuando se representa
   FRECUENCIA HISTÓRICA de Levante.

   ≤20 %  muy baja  -> verde oliva
   21–35% baja      -> azul
   36–45% media     -> ocre
   46–55% alta      -> naranja quemado
   >55 %  muy alta  -> rojo teja

   IMPORTANTE: estos colores expresan FRECUENCIA, no peligro ni intensidad.
   ========================================================================== */

:root{
  --lh-freq-1:#668a36;
  --lh-freq-2:#2b6792;
  --lh-freq-3:#a98222;
  --lh-freq-4:#b85b1d;
  --lh-freq-5:#a53b3b;
}

/* Dark: suficiente diferencia perceptual sin apariencia de semáforo saturado. */
html[data-theme="dark"]{
  --lh-freq-surface-1:color-mix(in srgb,var(--lh-freq-1) 52%,var(--surface-subtle));
  --lh-freq-surface-2:color-mix(in srgb,var(--lh-freq-2) 58%,var(--surface-subtle));
  --lh-freq-surface-3:color-mix(in srgb,var(--lh-freq-3) 61%,var(--surface-subtle));
  --lh-freq-surface-4:color-mix(in srgb,var(--lh-freq-4) 64%,var(--surface-subtle));
  --lh-freq-surface-5:color-mix(in srgb,var(--lh-freq-5) 67%,var(--surface-subtle));
}

/* Light: mismo código, superficies claras y legibles. */
html:not([data-theme="dark"]){
  --lh-freq-surface-1:color-mix(in srgb,var(--lh-freq-1) 24%,#fff);
  --lh-freq-surface-2:color-mix(in srgb,var(--lh-freq-2) 22%,#fff);
  --lh-freq-surface-3:color-mix(in srgb,var(--lh-freq-3) 25%,#fff);
  --lh-freq-surface-4:color-mix(in srgb,var(--lh-freq-4) 24%,#fff);
  --lh-freq-surface-5:color-mix(in srgb,var(--lh-freq-5) 24%,#fff);
}

/* Calendario: el fondo comunica exclusivamente frecuencia histórica. */
.planner-day--very-low{--planner-level:var(--lh-freq-1)!important;background:var(--lh-freq-surface-1)!important}
.planner-day--low{--planner-level:var(--lh-freq-2)!important;background:var(--lh-freq-surface-2)!important}
.planner-day--medium{--planner-level:var(--lh-freq-3)!important;background:var(--lh-freq-surface-3)!important}
.planner-day--high{--planner-level:var(--lh-freq-4)!important;background:var(--lh-freq-surface-4)!important}
.planner-day--very-high{--planner-level:var(--lh-freq-5)!important;background:var(--lh-freq-surface-5)!important}

/* Leyendas / escala exacta / detalle diario. */
.planner-frequency-dots .lvl-very-low,
.planner-frequency-scale-details .lvl-very-low{background:var(--lh-freq-1)!important}
.planner-frequency-dots .lvl-low,
.planner-frequency-scale-details .lvl-low{background:var(--lh-freq-2)!important}
.planner-frequency-dots .lvl-medium,
.planner-frequency-scale-details .lvl-medium{background:var(--lh-freq-3)!important}
.planner-frequency-dots .lvl-high,
.planner-frequency-scale-details .lvl-high{background:var(--lh-freq-4)!important}
.planner-frequency-dots .lvl-very-high,
.planner-frequency-scale-details .lvl-very-high{background:var(--lh-freq-5)!important}

.planner-detail-level--very-low{--detail-level:var(--lh-freq-1)!important}
.planner-detail-level--low{--detail-level:var(--lh-freq-2)!important}
.planner-detail-level--medium{--detail-level:var(--lh-freq-3)!important}
.planner-detail-level--high{--detail-level:var(--lh-freq-4)!important}
.planner-detail-level--very-high{--detail-level:var(--lh-freq-5)!important}

/* Tu viaje: X de N días + % usa exactamente la categoría de ese %. */
#results-section .historical-frequency-dots i{
  background:transparent!important;
  border-color:color-mix(in srgb,var(--muted) 34%,transparent)!important;
  box-shadow:none!important;
}
#results-section .historical-frequency-dots i.is-filled.freq-dot--very-low{
  background:var(--lh-freq-1)!important;border-color:var(--lh-freq-1)!important;
}
#results-section .historical-frequency-dots i.is-filled.freq-dot--low{
  background:var(--lh-freq-2)!important;border-color:var(--lh-freq-2)!important;
}
#results-section .historical-frequency-dots i.is-filled.freq-dot--medium{
  background:var(--lh-freq-3)!important;border-color:var(--lh-freq-3)!important;
}
#results-section .historical-frequency-dots i.is-filled.freq-dot--high{
  background:var(--lh-freq-4)!important;border-color:var(--lh-freq-4)!important;
}
#results-section .historical-frequency-dots i.is-filled.freq-dot--very-high{
  background:var(--lh-freq-5)!important;border-color:var(--lh-freq-5)!important;
}

/* Compatibilidad con el renderer antiguo trip-dot. */
.trip-dot--very-low.filled{background:var(--lh-freq-1)!important;border-color:var(--lh-freq-1)!important}
.trip-dot--low.filled{background:var(--lh-freq-2)!important;border-color:var(--lh-freq-2)!important}
.trip-dot--medium.filled{background:var(--lh-freq-3)!important;border-color:var(--lh-freq-3)!important}
.trip-dot--high.filled{background:var(--lh-freq-4)!important;border-color:var(--lh-freq-4)!important}
.trip-dot--very-high.filled{background:var(--lh-freq-5)!important;border-color:var(--lh-freq-5)!important}

/* Levante por meses: barra = categoría real del porcentaje del mes. */
.visual-stat-row.frequency-level--very-low .visual-stat-track>span{background:var(--lh-freq-1)!important}
.visual-stat-row.frequency-level--low .visual-stat-track>span{background:var(--lh-freq-2)!important}
.visual-stat-row.frequency-level--medium .visual-stat-track>span{background:var(--lh-freq-3)!important}
.visual-stat-row.frequency-level--high .visual-stat-track>span{background:var(--lh-freq-4)!important}
.visual-stat-row.frequency-level--very-high .visual-stat-track>span{background:var(--lh-freq-5)!important}

/* Selección de viaje sigue siendo interacción, no dato meteorológico. */
.planner-day.is-trip-range,
.planner-day.is-trip-start,
.planner-day.is-trip-end{
  /* No alterar nunca el fondo semántico de frecuencia. */
  background-color:inherit;
}

/* Los colores de frecuencia no se aplican a velocidad/intensidad.
   Esas métricas mantienen su lenguaje propio para evitar ambigüedad. */

/* H9 semantic cleanup: visual emphasis without semantic <b>/<strong>. */
.planner-legend-exact .legend-range{font-weight:800;color:var(--text)}


/* ==========================================================================
   LEVANTEHOY · ACCESSIBILITY H11
   PageSpeed/Lighthouse: calendar contrast + accessible navigation.
   ========================================================================== */

/*
 * Historical-frequency colour remains encoded ONLY by the cell background.
 * Text inside coloured cells uses the normal foreground colour so every
 * category keeps sufficient contrast in both light and dark themes.
 */
.planner-day .planner-day-number,
.planner-day .planner-day-pct,
.planner-day .planner-day-levante-speed,
.planner-day .planner-speed-number,
.planner-day .planner-speed-unit{
  color:var(--text)!important;
  opacity:1!important;
}

/* Date is deliberately secondary by weight/size, not by lowering opacity. */
.planner-day .planner-day-number{
  font-weight:750!important;
}

/* km/h remains visually secondary without sacrificing WCAG contrast. */
.planner-day .planner-day-levante-speed,
.planner-day .planner-speed-number,
.planner-day .planner-speed-unit{
  font-weight:750!important;
}

/* Selected trip range must not change the semantic colour or text contrast. */
.planner-day.is-trip-range .planner-day-number,
.planner-day.is-trip-range .planner-day-pct,
.planner-day.is-trip-range .planner-day-levante-speed,
.planner-day.is-trip-start .planner-day-number,
.planner-day.is-trip-start .planner-day-pct,
.planner-day.is-trip-start .planner-day-levante-speed,
.planner-day.is-trip-end .planner-day-number,
.planner-day.is-trip-end .planner-day-pct,
.planner-day.is-trip-end .planner-day-levante-speed{
  color:var(--text)!important;
  opacity:1!important;
}

/*
 * Keyboard navigation: product-flow is a principal internal navigation.
 * A visible focus indicator benefits keyboard users without changing
 * mouse/touch appearance.
 */
.product-flow a:focus-visible,
.planner-nav-btn:focus-visible,
.planner-frequency-scale-details>summary:focus-visible{
  outline:3px solid var(--aqua)!important;
  outline-offset:3px!important;
}

/* Keep compact chapter identifiers readable at WCAG contrast levels. */
.section-chapter-index{
  opacity:1!important;
}


/* ==========================================================================
   LEVANTEHOY · ACCESSIBILITY H12
   Fine contrast pass based on the second PageSpeed/Lighthouse audit.
   Only selectors explicitly reported by Lighthouse are reinforced.
   ========================================================================== */

/*
 * Product-flow navigation.
 * Lighthouse still detected the visible labels in PC as low contrast.
 * Keep hierarchy by size/weight; do not use low-contrast colour for hierarchy.
 */
.product-flow a,
.product-flow a .product-flow-label,
.product-flow a > span:first-child{
  color:var(--text)!important;
  opacity:1!important;
}

/*
 * Chapter identifiers 01/02/03/04 and labels.
 * The accent remains in border/background/line, while the text uses the
 * foreground colour with guaranteed contrast.
 */
.section-chapter-index,
.section-chapter-label,
.section-chapter--forecast .section-chapter-index,
.section-chapter--forecast .section-chapter-label{
  color:var(--text)!important;
  opacity:1!important;
}

/*
 * Small action hints (“Ver opciones”, “Abrir”).
 * These are meaningful controls, therefore they must not rely on a subtle
 * accent colour that fails WCAG at small font sizes.
 */
.control-hint{
  color:var(--text)!important;
  opacity:1!important;
}

/*
 * Historical-frequency legend.
 * Lighthouse identified title, direction labels and scale disclosure as
 * low-contrast text. The frequency colours themselves are untouched.
 */
.planner-legend-title,
.planner-legend-group--frequency .planner-legend-title,
.planner-legend-group--speed .planner-legend-title,
.planner-frequency-direction,
.planner-calendar-key,
.planner-calendar-history-note{
  color:var(--text)!important;
  opacity:1!important;
}

.planner-frequency-scale-details > summary,
.planner-frequency-scale-details > summary::after{
  color:var(--text)!important;
  opacity:1!important;
}

/*
 * Exact-scale labels: preserve semantic colour swatches, but keep all written
 * category/range text at full accessible contrast.
 */
.planner-legend-detailed > span,
.planner-legend-detailed .legend-range{
  color:var(--text)!important;
  opacity:1!important;
}

/*
 * Hover/focus must not reduce contrast.
 */
.product-flow a:hover,
.product-flow a:focus-visible,
.planner-frequency-scale-details > summary:hover,
.planner-frequency-scale-details > summary:focus-visible{
  color:var(--text)!important;
}


/* ==========================================================================
   LEVANTEHOY · RESPONSIVE TEXT CLIPPING FIX · V1.0
   Prevent real UI copy from being clipped at the right edge.
   Scope: textual flex/grid children only. Horizontal data/forecast scrollers
   keep their intended overflow behaviour.
   ========================================================================== */

/* Flex/grid text children must be allowed to shrink inside their column. */
.query-panel > *,
.planner-calendar-head > *,
.calendar-primary-head > *,
.trend-head > *,
.local-context-bottom-grid > *,
.section-chapter > *,
.product-flow > *{
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}

/* Editorial/helper copy is content, never an ellipsis target. */
.form-note,
.small-copy,
.calendar-primary-head p,
.trend-head .small-copy,
.local-data-note,
.local-identity-summary{
  max-width:100%;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:anywhere;
  word-break:normal;
}

/* Historical range above the calendar may wrap instead of being clipped. */
.planner-calendar-head > div:first-child{
  min-width:0;
  max-width:100%;
}
.planner-calendar-head .planner-eyebrow{
  max-width:100%;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:anywhere;
}

/* Chapter labels are short, but must not force the decorative line outside
   the viewport on narrow devices. */
.section-chapter-label{
  min-width:0;
  max-width:100%;
}
.section-chapter-line{
  min-width:0!important;
}

/* The result frequency label was explicitly forced to nowrap in V4.1.
   Let it wrap on genuinely narrow cards rather than clip. */
#results-section .historical-frequency-label{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
}

/* Mobile gets a little extra defensive containment without changing widths. */
@media(max-width:760px){
  .query-panel,
  .planner-calendar-card,
  .trend-card,
  .local-identity-card,
  .local-data-note,
  .seo-related{
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
  }

  .form-note,
  .planner-calendar-head .planner-eyebrow,
  .calendar-primary-head p,
  .trend-head .small-copy{
    padding-right:2px;
  }
}
