/* Inicio del piscinero (tablero resumen). Todas las reglas llevan el prefijo .phx para no tocar el resto del portal. */
.phx{--navy:#0b1f4d;--text:#33425c;--muted:#6b7a95;--line:#e4ecf7;--blue:#1665f2;--blue-soft:#eaf3ff;--tile:#e4eefc;--green:#13a24c;--green-bg:#e4f7ec;--amber:#b86e00;--amber-bg:#fff1d6;--red:#dc2626;--gold:#f5a524;--card:#fff;--shadow:0 6px 22px rgba(15,40,90,.07);--pcx-wash:11,31,77;container-type:inline-size;display:grid;gap:14px;color:var(--text);font-size:14px;line-height:1.35}
.phx *{box-sizing:border-box}
.phx button{font:inherit;color:inherit}
.phx .phx-i{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---------- Portada ---------- */
.phx .phx-hero{position:relative;display:grid;align-content:space-between;gap:20px;border-radius:20px;overflow:hidden;padding:26px 22px 18px;min-height:228px;background:#12305f var(--hero-img,url(/assets/plans-company-hero-1200.webp)) center 38%/cover no-repeat;box-shadow:var(--shadow)}
.phx .phx-hero::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(var(--pcx-wash),.88) 0,rgba(var(--pcx-wash),.55) 42%,rgba(var(--pcx-wash),.06) 74%,rgba(var(--pcx-wash),0) 100%)}
.phx .phx-hero>*{position:relative}
.phx .phx-hero-copy{display:grid;gap:8px;justify-items:start;padding-left:6px}
.phx .phx-chip{display:inline-flex;font-size:11.5px;font-weight:700;letter-spacing:.14em;color:#fff;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:5px 12px;backdrop-filter:blur(4px)}
.phx .phx-hero h2{margin:0;font-size:clamp(22px,2.7vw,34px);line-height:1.1;font-weight:800;letter-spacing:-.02em;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.25)}
.phx .phx-hero p{margin:0;font-size:clamp(14px,1.5vw,18px);color:#eaf2ff;text-shadow:0 1px 8px rgba(0,0,0,.25)}
.phx .phx-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) minmax(0,1.05fr);gap:10px}
.phx .phx-kpi{display:flex;align-items:center;gap:12px;text-align:left;background:var(--card);border:0;border-radius:14px;padding:13px 14px;min-height:84px;cursor:pointer;box-shadow:0 4px 16px rgba(10,30,70,.14);transition:transform .15s,box-shadow .15s}
.phx .phx-kpi:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(10,30,70,.2)}
.phx .phx-kpi:focus-visible,.phx .phx-add:focus-visible,.phx .phx-visit:focus-visible,.phx .phx-crow:focus-visible,.phx .phx-tile:focus-visible,.phx .phx-day:focus-visible,.phx .phx-slot:focus-visible,.phx .phx-more:focus-visible,.phx .phx-banner button:focus-visible{outline:3px solid rgba(22,101,242,.45);outline-offset:2px}
.phx .phx-kpi-ico{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--blue-soft);color:var(--blue)}
.phx .phx-kpi-ico .phx-i{width:24px;height:24px}
.phx .phx-kpi-ico.is-green{background:#dff5e8;color:var(--green)}.phx .phx-kpi-ico.is-gold{background:#fff1d6;color:var(--gold)}
.phx .phx-kpi-ico.is-gold .phx-i{fill:currentColor}
.phx .phx-kpi-body{display:grid;gap:1px;min-width:0}
.phx .phx-kpi-body b{font-size:clamp(18px,2.1vw,24px);font-weight:800;color:var(--navy);line-height:1.1;letter-spacing:-.01em}
.phx .phx-kpi-body small{font-size:12.5px;color:var(--text)}
.phx .phx-kpi-go{width:16px;height:16px;margin-left:auto;color:var(--muted);fill:none;stroke:currentColor;stroke-width:2}
.phx .phx-delta{font-style:normal;font-size:11.5px;font-weight:600;display:inline-flex;align-items:center;gap:2px}
.phx .phx-delta .phx-i{width:12px;height:12px;stroke-width:2.6}
.phx .phx-delta.is-up{color:var(--green)}.phx .phx-delta.is-down{color:var(--red)}.phx .phx-delta.is-flat{color:var(--muted);font-weight:500}
.phx .phx-add{display:flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:14px;min-height:84px;padding:0 16px;background:linear-gradient(135deg,#1c6dff,#1257de);color:#fff;font-weight:700;font-size:16px;cursor:pointer;box-shadow:0 6px 18px rgba(22,101,242,.4)}
.phx .phx-add:hover{filter:brightness(1.06)}
.phx .phx-add .phx-i{width:22px;height:22px}

/* ---------- Tarjetas ---------- */
.phx .phx-row2{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:stretch}
.phx .phx-row3{display:grid;grid-template-columns:minmax(0,1.98fr) minmax(0,1fr) minmax(0,1.14fr);grid-template-areas:"clients income services" "clients reviews tools";gap:14px}
.phx .phx-clients{grid-area:clients}.phx .phx-income{grid-area:income}.phx .phx-services{grid-area:services}.phx .phx-reviews{grid-area:reviews}.phx .phx-tools{grid-area:tools}
.phx .phx-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 16px 14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;min-width:0}
.phx .phx-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.phx .phx-head h3{margin:0;display:flex;align-items:center;gap:8px;font-size:15.5px;font-weight:700;color:var(--navy)}
.phx .phx-head-ico{display:grid;place-items:center;color:var(--blue)}
.phx .phx-head-ico .phx-i{width:20px;height:20px}
.phx .phx-more{display:inline-flex;align-items:center;gap:5px;border:0;background:none;color:var(--blue);font-weight:600;font-size:12.5px;cursor:pointer;padding:4px 2px;white-space:nowrap}
.phx .phx-more .phx-i{width:13px;height:13px}
.phx .phx-period{font-size:12px;color:var(--muted)}
.phx .phx-note{margin:0;font-size:12px;color:var(--muted)}
.phx .ps-empty{padding:14px 8px}

/* ---------- Próximas visitas ---------- */
.phx .phx-visits,.phx .phx-slots,.phx .phx-ctable ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.phx .phx-visit{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:#fff;border:1px solid transparent;border-radius:12px;padding:6px 8px;cursor:pointer}
.phx .phx-visit:hover,.phx .phx-crow:hover,.phx .phx-slot:hover{background:#f5f9ff;border-color:var(--line)}
.phx .phx-when{display:grid;place-items:center;min-width:56px;padding:4px 6px;border-radius:10px;background:#f1f6ff;line-height:1.15}
.phx .phx-when small{font-size:11px;color:var(--muted)}.phx .phx-when b{font-size:14px;color:var(--navy)}
.phx .phx-pool{display:grid;place-items:center;width:50px;height:38px;border-radius:9px;flex:none;background:linear-gradient(135deg,#8fd8ff,#2a7bf5);color:#fff}
.phx .phx-pool .phx-i{width:22px;height:22px;stroke-width:2.1}
.phx .phx-who{display:grid;gap:1px;min-width:0;flex:1}
.phx .phx-who b{font-size:14px;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.phx .phx-who small{font-size:12px;color:var(--muted)}
.phx .phx-go{width:16px;height:16px;color:var(--muted);fill:none;stroke:currentColor;stroke-width:2;flex:none;margin-left:auto}
.phx .phx-tag{display:inline-flex;align-items:center;font-size:12px;font-weight:700;border-radius:8px;padding:4px 10px;white-space:nowrap;background:#eef2f7;color:#55657e}
.phx .phx-tag.is-mantencion{background:#e4f7ec;color:#14804a}.phx .phx-tag.is-limpieza{background:#e3f0ff;color:#1257d6}
.phx .phx-tag.is-revision{background:#efe9ff;color:#6d3fd1}.phx .phx-tag.is-reparacion{background:#fff1d6;color:#b86e00}

/* ---------- Mapa ---------- */
.phx .phx-mapcard{gap:8px}
.phx .phx-map{position:relative;flex:1;min-height:230px;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#e8f1fb,#dbe8f7);border:1px solid var(--line)}
.phx .phx-map-canvas{position:absolute;inset:0}
.phx .phx-map-msg{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:var(--muted);font-size:13px}
.phx .phx-map-off{display:grid;gap:8px;justify-items:center;align-content:center;height:100%;padding:16px;text-align:center;color:var(--muted)}
.phx .phx-map-off .phx-i{width:30px;height:30px;color:var(--blue)}.phx .phx-map-off p{margin:0;font-size:12.5px;max-width:280px}
.phx .phx-communes{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.phx .phx-communes li{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--navy)}
.phx .phx-map-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.phx .phx-legend{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text)}
.phx .phx-legend i{width:10px;height:10px;border-radius:50%;background:#1d6ff2}.phx .phx-legend i.is-today{background:#16a34a}
.phx .phx-route{margin-left:auto;display:inline-flex;align-items:center;gap:6px;border:1px solid #bcd3fb;border-radius:10px;padding:7px 14px;color:var(--blue);font-weight:600;font-size:12.5px;text-decoration:none;background:#fff}
.phx .phx-route:hover{background:var(--blue-soft)}
.phx .phx-route .phx-i{width:13px;height:13px}
.phx .phx-info{display:grid;gap:3px;font-size:12.5px;color:#33425c}.phx .phx-info b{color:#0b1f4d}.phx .phx-info a{color:#1665f2;font-weight:600}
.phx .phx-unplaced{display:grid;gap:6px;border:1px solid #f3d9a4;background:#fff8e8;border-radius:12px;padding:10px 12px}
.phx .phx-unplaced h4{margin:0;display:flex;align-items:center;gap:6px;font-size:13px;color:#8a5a00}.phx .phx-unplaced h4 .phx-i{width:15px;height:15px}
.phx .phx-unplaced h4 b{background:#b45309;color:#fff;border-radius:99px;padding:0 7px;font-size:11.5px;line-height:18px}
.phx .phx-unplaced p{margin:0;font-size:12px;color:var(--muted)}.phx .phx-unplaced small{font-size:11.5px;color:var(--muted)}
.phx .phx-unplaced ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.phx .phx-unplaced li{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px 8px}
.phx .phx-unplaced li span{display:grid;min-width:0}.phx .phx-unplaced li b{font-size:13px;color:var(--ink,#0b1f4d);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phx .phx-unplaced li small{font-size:11.5px}
.phx .phx-place{flex:none;border:1px solid #bcd3fb;background:#fff;color:var(--blue);font-weight:600;font-size:12px;border-radius:9px;padding:6px 10px;cursor:pointer}
.phx .phx-place:hover,.phx .phx-place.is-on{background:var(--blue-soft)}.phx .phx-place:disabled{cursor:wait;opacity:.8}.phx .phx-place:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.phx .phx-noaddr{display:flex;align-items:flex-start;gap:6px}.phx .phx-noaddr .phx-i{flex:none;width:14px;height:14px;margin-top:1px;color:#b45309}
.phx .phx-linkname{border:0;background:none;padding:0;font:inherit;font-weight:600;color:var(--blue);text-decoration:underline;cursor:pointer}
.phx .phx-draft{max-width:240px}.phx .phx-draft-actions{display:flex;gap:6px;margin-top:4px}
.phx .phx-draft-save,.phx .phx-draft-cancel{border-radius:8px;padding:6px 10px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.phx .phx-draft-save{border:1px solid #1665f2;background:#1665f2;color:#fff}.phx .phx-draft-save:disabled{opacity:.6;cursor:wait}.phx .phx-draft-cancel{border:1px solid #bcd3fb;background:#fff;color:#1665f2}

/* ---------- Semana ---------- */
.phx .phx-week-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.phx .phx-week-head h3{margin:0;font-size:16px;font-weight:700;color:var(--navy)}
.phx .phx-week-nav{display:inline-flex;align-items:center;gap:6px}
.phx .phx-week-nav button{display:grid;place-items:center;min-width:30px;height:30px;border-radius:10px;border:1px solid var(--line);background:#fff;cursor:pointer;color:var(--navy)}
.phx .phx-week-nav button:hover{background:var(--blue-soft)}
.phx .phx-week-nav .phx-today{padding:0 14px;background:#eaf3ff;border-color:#cfe0fb;color:var(--blue);font-weight:600;font-size:12.5px}
.phx .phx-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;text-align:center}
.phx .phx-day{display:grid;justify-items:center;gap:2px;border:0;background:none;padding:4px 0;cursor:pointer;color:var(--muted);font-size:12px}
.phx .phx-day b{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;font-size:15px;font-weight:600;color:var(--navy)}
.phx .phx-day:hover b{background:#eef4ff}
.phx .phx-day.is-today b{box-shadow:inset 0 0 0 1.5px #9fc0f8}
.phx .phx-day.is-sel b{background:var(--blue);color:#fff;box-shadow:0 4px 12px rgba(22,101,242,.38)}
.phx .phx-day i{width:5px;height:5px;border-radius:50%;background:transparent}.phx .phx-day i.has{background:var(--green)}
.phx .phx-slots{margin-top:2px}
.phx .phx-slot{display:grid;grid-template-columns:8px auto auto minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;text-align:left;background:#fff;border:1px solid transparent;border-radius:10px;padding:8px 6px;cursor:pointer;font-size:12.5px}
.phx .phx-slot i{width:8px;height:8px;border-radius:50%;background:#1d6ff2}
.phx .phx-slot.is-limpieza i{background:#38b2f5}.phx .phx-slot.is-revision i{background:#22b573}.phx .phx-slot.is-reparacion i{background:#f59f0b}.phx .phx-slot.is-otros i{background:#c4d0df}
.phx .phx-slot time{color:var(--text);white-space:nowrap}.phx .phx-slot b{color:var(--navy);font-weight:600;line-height:1.2;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.phx .phx-slot .phx-tag{padding:3px 8px;font-size:11.5px}
.phx .phx-slot-add{display:flex;justify-content:center;padding-top:4px}
.phx .phx-slots-more{display:flex;justify-content:center;padding-top:2px}

/* ---------- Clientes recientes ---------- */
.phx .phx-ctable{display:grid;gap:4px}
.phx .phx-chead,.phx .phx-crow{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr) minmax(0,1fr) 80px minmax(0,1fr) 14px;align-items:center;gap:8px}
.phx .phx-ccom,.phx .phx-clast,.phx .phx-cnext{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phx .phx-chead span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.phx .phx-crow .phx-pool{width:40px;height:32px}
.phx .phx-chead{font-size:11.5px;color:var(--muted);padding:0 8px 4px;border-bottom:1px solid var(--line)}
.phx .phx-crow{width:100%;text-align:left;background:#fff;border:1px solid transparent;border-radius:12px;padding:7px 8px;cursor:pointer;font-size:12.5px;color:var(--text)}
.phx .phx-cname{display:flex;align-items:center;gap:10px;min-width:0}.phx .phx-cname b{color:var(--navy);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.phx .phx-state{font-style:normal;display:inline-flex;font-size:12px;font-weight:700;border-radius:8px;padding:4px 10px}
.phx .phx-state.is-active{background:var(--green-bg);color:#14804a}.phx .phx-state.is-pending{background:var(--amber-bg);color:var(--amber)}

/* ---------- Ingresos ---------- */
.phx .phx-income-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.phx .phx-big{display:block;font-size:24px;font-weight:800;color:var(--navy);letter-spacing:-.01em}.phx .phx-big small{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:0}
.phx .phx-sub{font-size:12px;color:var(--muted)}
.phx .phx-badge{display:inline-flex;align-items:center;gap:3px;border-radius:8px;padding:4px 9px;font-size:12px;font-weight:700}
.phx .phx-badge .phx-i{width:12px;height:12px;stroke-width:2.6}
.phx .phx-badge.is-up{background:var(--green-bg);color:#14804a}.phx .phx-badge.is-down{background:#fde7e7;color:var(--red)}
.phx .phx-bars{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:8px;align-items:end;min-height:112px}
.phx .phx-bars li{display:grid;gap:4px;justify-items:center;height:100%;grid-template-rows:1fr auto}
.phx .phx-bar-wrap{position:relative;display:flex;align-items:flex-end;width:100%;height:84px;justify-content:center}
.phx .phx-bar{display:block;width:70%;max-width:28px;border-radius:6px 6px 3px 3px;background:#d6e5ff}
.phx .phx-bars li.is-cur .phx-bar{background:var(--blue)}
.phx .phx-bars small{font-size:11.5px;color:var(--muted)}
.phx .phx-tip{position:absolute;top:-6px;left:50%;transform:translate(-50%,-100%);background:var(--navy);color:#fff;font-style:normal;font-size:11px;font-weight:600;padding:3px 7px;border-radius:6px;white-space:nowrap;z-index:1}
.phx .phx-bar-wrap:has(.phx-tip){margin-top:14px}
.phx .phx-bar-wrap .phx-tip::after{content:"";position:absolute;left:50%;bottom:-4px;width:8px;height:8px;background:var(--navy);transform:translateX(-50%) rotate(45deg)}

/* ---------- Tipos de servicio ---------- */
.phx .phx-period{align-self:center}
.phx .phx-types{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.phx .phx-types ul{list-style:none;margin:0;padding:0;display:grid;gap:7px;flex:1;min-width:130px}
.phx .phx-types li{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:8px;font-size:12.5px}
.phx .phx-types li i{width:10px;height:10px;border-radius:50%}.phx .phx-types li b{color:var(--navy)}
.phx .phx-donut{position:relative;width:128px;height:128px;flex:none}
.phx .phx-donut svg{width:100%;height:100%;transform:rotate(0deg)}
.phx .phx-donut span{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.phx .phx-donut b{font-size:28px;color:var(--navy);line-height:1}.phx .phx-donut small{font-size:12px;color:var(--muted)}

/* ---------- Reseñas ---------- */
.phx .phx-rating{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.phx .phx-rating b{font-size:22px;font-weight:800;color:var(--navy)}.phx .phx-rating small{font-size:12.5px;color:var(--muted)}.phx .phx-rating>span:last-child{margin-left:auto;font-size:12px;color:var(--muted)}
.phx .phx-stars{display:inline-flex;gap:1px;color:#d5deea}.phx .phx-stars i{display:inline-flex}.phx .phx-stars i.on{color:var(--gold)}
.phx .phx-stars .phx-i{width:17px;height:17px;fill:currentColor;stroke:none}
.phx .phx-reviews blockquote{margin:0;font-size:13px;font-style:italic;color:var(--text)}
.phx .phx-reviews blockquote footer{margin-top:6px;font-style:normal;font-size:11.5px;color:var(--muted)}

/* ---------- Herramientas rápidas ---------- */
.phx .phx-tiles{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:6px}
.phx .phx-tile{display:grid;justify-items:center;align-content:start;gap:6px;border:0;background:none;padding:2px;cursor:pointer;font-size:11.5px;font-weight:500;color:var(--navy);text-align:center;line-height:1.2}
.phx .phx-tile span{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--blue-soft);color:var(--blue);transition:background .15s}
.phx .phx-tile:hover span{background:#d7e8ff}
.phx .phx-tile .phx-i{width:24px;height:24px}

/* ---------- Tarjetas inferiores ---------- */
.phx .phx-banners{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.phx .phx-banner{position:relative;display:flex;align-items:center;gap:12px;min-height:112px;padding:14px 16px;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow)}
.phx .phx-banner::before{content:"";position:absolute;top:0;right:0;bottom:0;width:48%;background:var(--bimg) var(--bpos,center)/var(--bsize,cover) no-repeat}
.phx .phx-banner::after{content:"";position:absolute;top:0;right:0;bottom:0;width:48%;background:linear-gradient(90deg,var(--card) 0,rgba(255,255,255,0) 62%)}
.phx .phx-banner>*{position:relative;z-index:1}
.phx .phx-banner-ico{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--blue);color:#fff;flex:none}
.phx .phx-banner-ico .phx-i{width:22px;height:22px}
.phx .phx-banner div{display:grid;gap:3px;justify-items:start;max-width:56%}
.phx .phx-banner h3{margin:0;font-size:15px;font-weight:700;color:var(--navy)}.phx .phx-banner p{margin:0;font-size:12.5px;color:var(--text)}
.phx .phx-banner button{margin-top:5px;border:1px solid #bcd3fb;background:var(--card);color:var(--blue);font-weight:600;font-size:12.5px;border-radius:9px;padding:6px 14px;cursor:pointer}
.phx .phx-banner button:hover{background:var(--blue-soft)}
.phx .phx-b-store{--bimg:url(/assets/portal-filter.webp),url(/assets/portal-pump.webp)}
.phx .phx-b-store::before{background:url(/assets/portal-filter.webp) right 6px center/auto 88% no-repeat,url(/assets/portal-pump.webp) right 92px center/auto 70% no-repeat}
.phx .phx-b-store::after{display:none}
.phx .phx-b-store div{max-width:42%}
.phx .phx-b-visible{--bimg:url(/assets/professionals.webp);--bpos:70% 12%;--bsize:auto 175%}

/* ---------- Noticias del panel (también se usan dentro de la ventana "Ver todas") ---------- */
.phx .phx-news-list,.modal .phx-news-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:10px}
.modal .phx-news-list{grid-template-columns:minmax(0,1fr)}
.phx .phx-news,.modal .phx-news{--nc:#1665f2;display:flex;align-items:center;gap:12px;width:100%;min-height:92px;margin:0;padding:12px 14px;border:1px solid transparent;border-radius:14px;background:#eaf2ff;text-align:left;font:inherit;color:inherit;box-sizing:border-box}
.phx button.phx-news{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.phx button.phx-news:hover{border-color:var(--nc);box-shadow:0 4px 14px rgba(15,40,90,.1)}
.phx button.phx-news:focus-visible{outline:3px solid rgba(22,101,242,.45);outline-offset:2px}
.phx .phx-news.is-aviso,.modal .phx-news.is-aviso{--nc:#dc2626;background:#fdecec}
.phx .phx-news.is-consejo,.modal .phx-news.is-consejo{--nc:#7c3aed;background:#f1ecff}
.phx .phx-news-ico,.modal .phx-news-ico{flex:none;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:#fff;color:var(--nc)}
.phx .phx-news-ico .phx-i,.modal .phx-news-ico .phx-i{width:24px;height:24px}
.phx .phx-news-txt,.modal .phx-news-txt{flex:1;min-width:0;display:grid;gap:2px}
.phx .phx-news-txt b,.modal .phx-news-txt b{font-size:15px;line-height:1.25;color:var(--navy,#0b1f4d)}
.phx .phx-news-txt small,.modal .phx-news-txt small{font-size:13.5px;line-height:1.4;color:var(--text,#33425c);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.modal .phx-news-txt small{-webkit-line-clamp:unset;display:block}
.phx .phx-news-txt em,.modal .phx-news-txt em{font-style:normal;font-size:12px;color:var(--muted,#6b7a95)}
.phx .phx-news-go{flex:none;width:18px;height:18px;color:var(--nc);fill:none;stroke:currentColor;stroke-width:2}
.modal .phx-news .phx-i{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.modal .phx-news .phx-news-go{width:18px;height:18px}
.modal .phx-news-full{margin:0;font-size:15px;line-height:1.55;color:var(--text,#33425c)}

/* ---------- Barra superior: aviso con número ---------- */
.pro-commune[hidden]{display:none!important}
.pro-bell{position:relative}
.pro-bell::after{display:none!important}
.pro-bell-count{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;border-radius:9px;background:#dc2626;color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;padding:0 4px;line-height:1;box-shadow:0 0 0 2px #fff}

/* ---------- Pantallas más angostas (el ancho del propio tablero, no el de la ventana) ---------- */
@container (max-width:1020px){
 .phx .phx-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
 .phx .phx-add{grid-column:1/-1;min-height:56px}
 .phx .phx-row2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .phx .phx-upcoming{grid-column:1/-1}
 .phx .phx-row3{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"clients clients" "income services" "reviews tools"}
 .phx .phx-banners{grid-template-columns:1fr}
 .phx .phx-news-list{grid-template-columns:minmax(0,1fr)}
}
@container (max-width:700px){
 .phx .phx-hero{min-height:0;padding:20px 14px 14px}
 .phx .phx-hero::before{background:linear-gradient(180deg,rgba(var(--pcx-wash),.9) 0,rgba(var(--pcx-wash),.6) 100%)}
 .phx .phx-row2,.phx .phx-row3{grid-template-columns:minmax(0,1fr);grid-template-areas:none}
 .phx .phx-row3>*{grid-area:auto!important}
 .phx .phx-chead{display:none}
 .phx .phx-crow{grid-template-columns:minmax(0,1fr) auto 16px;grid-template-areas:"name state go" "com com com" "last next next";row-gap:2px}
 .phx .phx-crow .phx-cname{grid-area:name}.phx .phx-crow .phx-cstate{grid-area:state}.phx .phx-crow .phx-go{grid-area:go}
 .phx .phx-crow .phx-ccom{grid-area:com}.phx .phx-crow .phx-clast{grid-area:last}.phx .phx-crow .phx-cnext{grid-area:next}
 .phx .phx-crow .phx-clast::before{content:"Última: "}.phx .phx-crow .phx-cnext::before{content:"Próxima: "}
 .phx .phx-visit .phx-pool{display:none}
 .phx .phx-banner div{max-width:70%}
}
@media (prefers-reduced-motion:reduce){.phx .phx-kpi{transition:none}.phx .phx-kpi:hover{transform:none}}

/* ---------- Clima de los próximos siete días ---------- */
.phx .phx-wx-where{display:inline-flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.phx .phx-wx-now{display:inline-flex;align-items:center;gap:6px;color:var(--navy)}
.phx .phx-wx-now .phx-i{width:22px;height:22px;color:#e8941a}
.phx .phx-wx-now b{font-size:16px;font-weight:800}
.phx .phx-wx-now small{font-size:12px;color:var(--muted)}
.phx .phx-wxcard .phx-period{display:inline-flex;align-items:center;gap:5px;font-weight:600}
.phx .phx-wxcard .phx-period .phx-i{width:14px;height:14px}
.phx .phx-wx7{display:grid;grid-template-columns:repeat(var(--n,7),minmax(0,1fr));gap:8px}
.phx .phx-wxday{display:grid;justify-items:center;gap:2px;padding:10px 4px 8px;border:1px solid var(--line);border-radius:14px;background:var(--tint,#f5f9ff);min-height:128px;min-width:0}
.phx .phx-wxday.is-today{background:var(--blue-soft);border-color:var(--blue)}
.phx .phx-wxday small{font-size:12px;font-weight:600;color:var(--muted);text-transform:capitalize;white-space:nowrap}
.phx .phx-wx-ico{display:grid;place-items:center;width:38px;height:38px;color:#e8941a}
.phx .phx-wx-ico .phx-i{width:30px;height:30px}
.phx .phx-wxday b{font-size:18px;font-weight:800;color:var(--navy)}
.phx .phx-wxday em{font-style:normal;font-size:13px;color:var(--muted)}
.phx .phx-wx-rain{display:inline-flex;align-items:center;gap:3px;min-height:16px;font-style:normal;font-size:11.5px;font-weight:700;color:var(--blue)}
.phx .phx-wx-rain .phx-i{width:12px;height:12px}
.phx .phx-wx7.is-loading .phx-wxday{background:linear-gradient(90deg,var(--tint,#f5f9ff),var(--blue-soft),var(--tint,#f5f9ff));background-size:200% 100%;animation:phx-wx-shimmer 1.4s linear infinite}
@keyframes phx-wx-shimmer{to{background-position:-200% 0}}
.phx .phx-wx-foot{margin-top:2px}
.phx .phx-wx-foot a{color:var(--blue)}
.phx .phx-wx-msg{padding:6px 2px}
@container (max-width:760px){
 .phx .phx-wx7{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(84px,1fr);overflow-x:auto;scrollbar-width:thin;padding-bottom:4px}
}

/* ---------- Foto propia de la portada ---------- */
.phx .phx-hero>.phx-hero-tools{position:absolute;top:14px;right:14px;z-index:2;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.phx .phx-hero-btn{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(255,255,255,.55);background:rgba(11,31,77,.45);color:#fff;font-weight:600;font-size:13px;cursor:pointer;backdrop-filter:blur(4px)}
.phx .phx-hero-btn:hover{background:rgba(11,31,77,.7)}
.phx .phx-hero-btn .phx-i{width:16px;height:16px}
.phx .phx-hero-btn.is-ghost{background:rgba(255,255,255,.14)}
.phx .phx-hero-btn:focus-within,.phx .phx-hero-btn:focus-visible{outline:3px solid rgba(255,255,255,.7);outline-offset:2px}
/* Número de cada piscina del día (por horario): en las próximas visitas, en la agenda del día y en los pines del mapa */
.phx .phx-num{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:#1d6ff2;color:#fff;font-size:13px;font-weight:800;line-height:1}
.phx .phx-num.is-sm{width:22px;height:22px;font-size:11.5px}
.phx .phx-daysum{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;border-radius:10px;background:#f1f6ff;color:var(--text);font-size:12.5px}.phx .phx-daysum .phx-i{width:16px;height:16px;flex:none;color:#1d6ff2}.phx .phx-daysum b{color:var(--navy)}
