/* Demo: agenda por WhatsApp con IA para un centro de estética (prefijo rv-). Datos ficticios. */
.dx[data-demo="reservas"] [hidden]{display:none!important}
.dx[data-demo="reservas"] .dx-card .dx-h5{display:flex;align-items:center;gap:6px}
.dx[data-demo="reservas"] .dx-card .dx-h5 > svg{width:15px;height:15px;color:var(--dx-acc)}
.dx[data-demo="reservas"] .dx-card .dx-h5 .dx-muted{margin-left:auto;font-size:11px;font-weight:500}
/* el título largo se parte en su propia fila y deja la pausa a la derecha (en el celular no queda un hueco) */
.dx[data-demo="reservas"] .dx-title{flex:1 1 0;min-width:0}
.rv-rn{display:grid;min-width:0;line-height:1.25}
.rv-rn b{font-size:12px;font-weight:600;color:var(--dx-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-rn small{font-size:10.5px;color:var(--dx-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-av.rv-a1{background:linear-gradient(135deg,#f9bba7,#e5612d)}
.dx-av.rv-a2{background:linear-gradient(135deg,#f6a5bd,#d81b5a)}
.dx-av.rv-a3{background:linear-gradient(135deg,#f0cf74,#b97f00)}
.dx-av.rv-a4{background:linear-gradient(135deg,#cdb9a5,#7a604b)}
.rv-room{display:grid;place-items:center;width:26px;height:26px;border-radius:9px;background:var(--bg-2);color:var(--dx-ink-2);flex:none}
.rv-room svg{width:14px;height:14px}

/* Encabezado de la agenda: hora simulada y recursos (profesionales y salas) */
.rv-now{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:99px;background:#fff;border:1px solid var(--dx-line-2);font-size:12px;color:var(--dx-ink-2);white-space:nowrap}
.rv-now svg{width:14px;height:14px;color:var(--dx-acc)}
.rv-now b{font-weight:600;color:var(--dx-ink);font-variant-numeric:tabular-nums}
.rv-res{display:flex;align-items:center;gap:8px;min-width:0;overflow-x:auto;scrollbar-width:none;padding:2px}
.rv-res::-webkit-scrollbar{display:none}
.rv-r{display:flex;align-items:center;gap:8px;flex:none;padding:5px 8px 5px 5px;border-radius:14px;background:rgba(255,255,255,.55);border:1px solid var(--dx-line);transition:background-color .3s,border-color .3s}
.rv-r em{font-style:normal;font-size:11px;font-weight:700;padding:2px 7px;border-radius:99px;background:var(--bg-2);color:var(--dx-ink-2);font-variant-numeric:tabular-nums}
.rv-r.is-on{background:#fff;border-color:var(--peach-200);box-shadow:0 0 0 3px rgba(229,97,45,.1)}
.rv-r.is-on em{background:var(--dx-peach);color:var(--dx-acc-ink)}
.rv-view,.rv-seg{display:inline-flex;margin-left:auto;padding:3px;border-radius:99px;background:#fff;border:1px solid var(--dx-line);font-size:11.5px;color:var(--dx-ink-3);flex:none}
.rv-view > *,.rv-seg > *{padding:4px 11px;border-radius:99px}
.rv-view b,.rv-seg b{background:var(--dx-ink);color:#fff;font-weight:600}
.rv-seg{margin-left:0;height:32px;align-items:center}

/* Calendario semanal: 46 px de horas + 6 días; filas de media hora */
.rv-ag{display:grid;grid-template-columns:minmax(0,1fr) 262px;gap:12px;align-items:start;min-width:0}
.rv-cal{position:relative;min-width:0;padding:6px 8px 8px 2px;border-radius:var(--dx-r);background:#fff;border:1px solid var(--dx-line);box-shadow:0 1px 2px rgba(18,22,51,.04)}
.rv-wk{display:grid;grid-template-columns:44px repeat(6,minmax(0,1fr));grid-template-rows:34px repeat(20,20px);column-gap:4px;min-width:0}
.rv-wk .d0{grid-column:2}.rv-wk .d1{grid-column:3}.rv-wk .d2{grid-column:4}.rv-wk .d3{grid-column:5}.rv-wk .d4{grid-column:6}.rv-wk .d5{grid-column:7}
.rv-dh{display:flex;align-items:baseline;justify-content:center;gap:5px;padding-top:6px;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dx-ink-3)}
.rv-dh b{font-size:15px;letter-spacing:-.01em;color:var(--dx-ink);font-variant-numeric:tabular-nums}
.rv-dh.is-past b{color:var(--dx-ink-3)}
.rv-dh b{display:inline-grid;place-items:center;min-width:24px;height:22px;padding:0 4px;border-radius:99px;transition:background-color .4s,color .4s}
.rv-dh.is-today{color:var(--dx-acc-ink)}
.rv-dh.is-today b{background:var(--grad-cta);color:#fff}
.rv-col{border-radius:8px;background:repeating-linear-gradient(180deg,#efe4d8 0 1px,transparent 1px 40px),repeating-linear-gradient(180deg,transparent 0 20px,#f6efe7 20px 21px,transparent 21px 40px),#fffdfa}
.rv-col.is-past{background:repeating-linear-gradient(180deg,#efe4d8 0 1px,transparent 1px 40px),#faf6f1}
.rv-hr{grid-column:1;align-self:start;margin-top:-6px;padding-right:6px;font-size:9.5px;line-height:1;color:var(--dx-ink-3);text-align:right;white-space:nowrap}
.rv-off{display:grid;place-items:center;margin:1px 0;border-radius:7px;background:repeating-linear-gradient(135deg,rgba(212,195,178,.28) 0 4px,transparent 4px 9px);font-size:9.5px;font-weight:500;color:var(--dx-ink-3)}
.rv-ap{position:relative;z-index:1;display:grid;align-content:start;gap:0;min-width:0;margin:1px 0;padding:3px 5px 3px 7px;border-radius:7px;border-left:3px solid;line-height:1.2;overflow:hidden;transition:background-color .4s,border-color .4s,opacity .4s,box-shadow .4s}
.rv-ap b{font-size:10.8px;font-weight:600;color:var(--dx-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-ap small{display:flex;align-items:center;gap:3px;font-size:9.8px;color:var(--dx-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-ap small svg{width:10px;height:10px;flex:none}
.rv-ap.is-s{display:flex;align-items:center;gap:4px;padding-block:0}
.rv-ap.is-s small{display:none}
.rv-ap.k-face{background:#fff0e8;border-color:#e5612d}
.rv-ap.k-peel{background:#fde8ef;border-color:#e61b57}
.rv-ap.k-dep{background:#fff5d9;border-color:#d4a000}
.rv-ap.k-eval{background:#f4eee7;border-color:#a68d77}
.rv-ap.is-past{opacity:.55}

/* Horarios libres que ofrece la IA */
.rv-slot{position:relative;z-index:2;display:flex;align-items:center;gap:5px;min-width:0;margin:1px 0;padding:0 6px;border-radius:8px;border:1.5px dashed var(--peach-300);background:rgba(255,245,240,.92);font-size:10.3px;font-weight:600;color:var(--dx-acc-ink);white-space:nowrap;overflow:hidden;opacity:0;transform:scale(.9);transition:opacity .35s var(--ease),transform .45s var(--spring),background-color .3s,border-color .3s}
.rv-slot i{display:grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--grad-cta);color:#fff;font-size:10px;font-style:normal;flex:none}
.rv-slot.is-in{opacity:1;transform:none;animation:rvGlow 1.6s var(--ease-io) infinite}
.rv-slot.is-picked{border-style:solid;border-color:var(--dx-acc);background:var(--dx-peach-2);animation:none;box-shadow:0 0 0 3px rgba(229,97,45,.18)}
.rv-slot.is-gone{opacity:0;transform:scale(.9);animation:none}
@keyframes rvGlow{0%,100%{box-shadow:0 0 0 0 rgba(229,97,45,.32)}50%{box-shadow:0 0 0 5px rgba(229,97,45,0)}}
.rv-scan{position:absolute;inset:0;z-index:3;border-radius:inherit;pointer-events:none;opacity:0;background:linear-gradient(90deg,transparent 43%,rgba(229,97,45,.08) 47%,rgba(229,97,45,.2) 49.6%,rgba(230,27,87,.75) 50%,transparent 50.25%) no-repeat;background-size:260% 100%;background-position:100% 0}
.rv-scan.is-in{animation:rvScan 1.6s var(--ease-io) both}
@keyframes rvScan{0%{opacity:1;background-position:100% 0}85%{opacity:1}100%{opacity:0;background-position:0 0}}

/* Cita nueva: apartada, con anticipo pagado y confirmada */
.rv-new{z-index:3}
.rv-new small{display:none}
.rv-new.is-hold{background:repeating-linear-gradient(135deg,#fff6dc 0 6px,#ffefc4 6px 12px);border-color:#d4a000}
.rv-new.is-hold .s-hold{display:flex;color:#7a5200;font-weight:600}
.rv-new.is-paid .s-paid{display:flex;color:var(--dx-ok);font-weight:600}
.rv-new.is-conf .s-paid{display:none}
.rv-new.is-conf .s-conf{display:flex;color:var(--dx-ok);font-weight:600}
.rv-new.is-paid{background:#fff0e8;border-color:var(--dx-acc);box-shadow:0 0 0 2px rgba(19,122,70,.2)}
.rv-new.is-in{animation:rvDrop .6s var(--spring) both}
.rv-new.is-paid::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.85) 50%,transparent 70%) no-repeat;background-size:250% 100%;animation:rvShine 1s var(--ease) both;pointer-events:none}
@keyframes rvDrop{from{opacity:0;transform:translateY(-12px) scale(.88)}to{opacity:1;transform:none}}
@keyframes rvShine{from{background-position:100% 0}to{background-position:-50% 0}}
.rv-flash{animation:rvFlash .9s var(--ease) both}
/* el anticipo que entra sube desde la cita como una ficha verde */
.rv-coin{position:absolute;z-index:6;display:inline-flex;align-items:center;gap:4px;padding:4px 10px 4px 7px;border-radius:99px;background:var(--dx-ok);color:#fff;font-size:11px;font-weight:700;white-space:nowrap;box-shadow:0 10px 20px -10px rgba(19,122,70,.8);pointer-events:none;animation:rvCoin 2s var(--ease) both}
.rv-coin svg{width:12px;height:12px}
@keyframes rvCoin{0%{opacity:0;transform:translate(-50%,-40%) scale(.7)}14%{opacity:1;transform:translate(-50%,-115%) scale(1.06)}24%{transform:translate(-50%,-110%) scale(1)}78%{opacity:1;transform:translate(-50%,-150%)}100%{opacity:0;transform:translate(-50%,-190%)}}
@keyframes rvFlash{0%{box-shadow:0 0 0 0 rgba(229,97,45,.55)}100%{box-shadow:0 0 0 8px rgba(229,97,45,0)}}

/* Celda del viernes 11:00: cancelación y hueco que se llena */
.rv-cell{position:relative;z-index:4;margin:1px 0;min-width:0}
.rv-cell > *{position:absolute;inset:0;margin:0}
.rv-free{display:flex;align-items:center;justify-content:center;gap:4px;border-radius:7px;border:1.5px dashed var(--peach-300);background:rgba(255,245,240,.9);font-size:10px;font-weight:600;color:var(--dx-acc-ink);opacity:0;transition:opacity .4s}
.rv-free svg{width:11px;height:11px}
.rv-cell.is-free .rv-free{opacity:1;animation:rvGlow 1.4s var(--ease-io) infinite}
.rv-mar.is-cancel{background:var(--dx-bad-bg);border-color:var(--dx-bad);opacity:.7}
.rv-mar.is-cancel b{text-decoration:line-through;text-decoration-color:var(--dx-bad)}
.rv-mar.is-cancel small{color:var(--dx-bad)}
.rv-mar.is-out{opacity:0;transform:scale(.94);transition:opacity .4s,transform .4s}

/* Panel lateral: recordatorios y lista de espera */
.rv-side{display:grid;gap:12px;align-content:start;min-width:0}
.rv-panel{padding:12px}
.rv-panel .dx-h5{margin-bottom:4px}
.rv-rm{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:4px 8px;align-items:center;padding:7px 0;border-top:1px solid var(--dx-line)}
.rv-panel .dx-h5 + .rv-rm{border-top:0}
.rv-rm .dx-tag{height:20px;font-size:10.5px}
.rv-rm[data-rem="v"]{grid-template-columns:26px minmax(0,1fr)}
.rv-rm[data-rem="v"] .rv-chips{grid-column:2;display:flex;gap:5px}
.rv-rm.is-in{animation:rvRow .45s var(--ease) both}
@keyframes rvRow{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.rv-k{display:inline-flex;align-items:center;gap:5px;height:21px;padding:0 8px 0 3px;border-radius:99px;background:var(--bg-2);font-size:10.5px;font-weight:600;color:var(--dx-ink-3);transition:background-color .35s,color .35s}
.rv-k i{padding:1px 6px;border-radius:99px;background:#fff;font-style:normal;font-size:9.8px;color:var(--dx-ink-2)}
.rv-k.is-sent{background:var(--dx-peach);color:var(--dx-acc-ink)}
.rv-k.is-ok{background:var(--dx-ok-bg);color:var(--dx-ok)}
.rv-k.is-ok i{color:var(--dx-ok)}
.rv-wn{display:inline-grid;place-items:center;min-width:22px;height:20px;margin-left:auto;padding:0 6px;border-radius:99px;background:var(--dx-peach);color:var(--dx-acc-ink);font-size:11px;font-weight:700}
.rv-wl{display:grid;gap:6px}
.rv-w{position:relative;display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:8px;align-items:center;padding:7px 8px;border-radius:12px;background:var(--dx-canvas);border:1px solid transparent;transition:background-color .35s,border-color .35s,box-shadow .35s}
.rv-wt{font-size:10.5px;font-weight:700;color:var(--dx-ink-3)}
.rv-wt .dx-tag{height:20px;font-size:10.5px}
.rv-w.is-match{background:#fff;border-color:var(--peach-200);box-shadow:0 0 0 3px rgba(229,97,45,.12)}
.rv-wsub{display:none}
.rv-ghost{position:absolute;z-index:7;margin:0;background:#fff;border-color:var(--peach-200);overflow:hidden;pointer-events:none;will-change:transform,width,height}
/* la tarjeta de la lista de espera convertida en cita */
.rv-cell .rv-w{display:block;padding:3px 5px 3px 7px;border-radius:7px;border:0;border-left:3px solid var(--dx-acc);background:#fff0e8;box-shadow:0 0 0 2px rgba(19,122,70,.22);overflow:hidden}
.rv-cell .rv-w > :not(.rv-wsub){display:none}
.rv-cell .rv-wsub{display:grid;line-height:1.2}
.rv-wsub b{font-size:10.8px;font-weight:600;color:var(--dx-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-wsub small{display:flex;align-items:center;gap:3px;font-size:9.8px;font-weight:600;color:var(--dx-acc-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-wsub svg{width:10px;height:10px;flex:none}

/* WhatsApp: opciones de horario y link de pago dentro del chat */
.rv-phone{height:420px}
.rv-opts{display:grid;gap:4px;margin:7px -3px 1px}
.rv-opts > span{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:8px;background:#fff;color:var(--wa-link);font-weight:600;font-size:11.5px;box-shadow:0 1px .5px rgba(11,20,26,.13);transition:background-color .3s,color .3s,box-shadow .3s}
.rv-opts i{display:grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--grad-cta);color:#fff;font-size:9.5px;font-style:normal;flex:none}
.rv-opts > span.is-picked{background:var(--dx-peach-2);color:var(--dx-acc-ink);box-shadow:0 0 0 2px var(--dx-acc)}
.rv-pay{display:grid;grid-template-columns:28px minmax(0,1fr);gap:7px;align-items:center;margin:-1px -3px 6px;padding:6px;border-radius:8px;background:rgba(255,255,255,.8)}
.rv-pay-ic{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--grad-cta);color:#fff}
.rv-pay-ic svg{width:15px;height:15px}
.rv-pay b{display:block;font-size:11.3px;color:#111b21}
.rv-pay small{margin:0;text-align:left;font-size:9.8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-pay > span:nth-child(2){min-width:0}

/* Ficha del cliente */
.rv-ph{flex-wrap:nowrap}
.rv-ph > div{min-width:0}
.rv-ph p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-big{width:44px;height:44px;font-size:14px}
.rv-fi{grid-template-columns:minmax(0,1fr) minmax(0,1.12fr) minmax(0,1fr);align-items:start}
.rv-fc3{align-content:start;grid-column:3;grid-row:1/span 2}
.rv-up{grid-column:1/span 2}
.rv-ua{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--dx-line)}
.rv-up .dx-h5 + .rv-ua{border-top:0;padding-top:2px}
.rv-date{display:grid;justify-items:center;padding:4px 0 5px;border-radius:10px;background:var(--dx-peach);color:var(--dx-acc-ink);line-height:1.05}
.rv-date b{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.rv-date small{font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.rv-ua.is-moved .rv-date{background:var(--dx-ok-bg);color:var(--dx-ok)}
.rv-live{gap:6px}
.rv-live i{width:7px;height:7px;border-radius:50%;background:var(--dx-acc);box-shadow:0 0 0 0 rgba(229,97,45,.5);animation:rvLive 1.6s infinite}
@keyframes rvLive{0%{box-shadow:0 0 0 0 rgba(229,97,45,.5)}70%,100%{box-shadow:0 0 0 7px rgba(229,97,45,0)}}
.rv-dl{display:grid;margin:0}
.rv-dl > div{display:grid;grid-template-columns:92px minmax(0,1fr);gap:8px;padding:7px 0;border-top:1px solid var(--dx-line);font-size:12px}
.rv-dl > div:first-child{border-top:0;padding-top:2px}
.rv-dl dt{color:var(--dx-ink-3)}
.rv-dl dd{margin:0;color:var(--dx-ink);font-weight:500}
.rv-tags{flex-wrap:wrap;gap:6px;margin-top:10px}
.rv-tl li{padding-bottom:10px;font-size:12px}
.rv-tl li > span:last-child{font-size:11px;white-space:nowrap}
.rv-tl li.is-now b{color:var(--dx-acc-ink)}
.rv-plan .dx-row .dx-h5{margin:0}
.rv-pips{display:inline-flex;align-items:center;gap:3px;flex:none}
.rv-pips i{width:8px;height:8px;border-radius:50%;background:var(--dx-line-2);transition:background-color .4s}
.rv-pips i.is-on{background:var(--dx-acc)}
.rv-pips i.is-pop{animation:rvPip .7s var(--spring) both}
@keyframes rvPip{0%{transform:scale(.4)}60%{transform:scale(1.35)}100%{transform:none}}
.rv-pips-l{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;width:100%;margin:12px 0 8px}
.rv-pips-l i{width:auto;height:12px;border-radius:6px}
.rv-pips-l i.is-on{background:var(--grad)}
.rv-used{margin:0;font-size:12px;color:var(--dx-ink-3)}
.rv-used b{color:var(--dx-ink)}
.rv-exc p{font-size:12px;line-height:1.45}
.rv-pol{display:flex;align-items:flex-start;gap:6px;padding:7px 9px;border-radius:10px;background:var(--dx-warn-bg);color:var(--dx-warn)!important;font-size:11.5px!important}
.rv-pol svg{width:14px;height:14px;flex:none;margin-top:1px}
.rv-by{display:flex;align-items:center;gap:6px;color:var(--dx-ok)!important;font-weight:600}
.rv-by.is-in{animation:rvRow .45s var(--ease) both}
/* «Tu turno» abajo del botón para no tapar la sugerencia de la IA */
.rv-exc .dx-hint::after{bottom:auto;top:calc(100% + 8px)}
.rv-by svg{width:15px;height:15px;flex:none}
.dx-ai.is-ok .who{color:var(--dx-ok)}

/* Paquetes y membresías */
.rv-pg{grid-template-columns:minmax(0,1.62fr) minmax(0,1fr);align-items:start}
.rv-pa{align-content:start}
.rv-pt{--cols:minmax(0,1.75fr) minmax(0,1.05fr) 56px minmax(0,1fr)}
.rv-pt .dx-tr:not(.th){min-height:48px}
.rv-sess{display:flex;align-items:center;gap:7px}
.rv-pn{font-size:11.5px;font-weight:600;color:var(--dx-ink-2)}
.rv-pt .dx-tr.is-hot{box-shadow:inset 3px 0 0 var(--dx-acc)}
.rv-thread{display:grid;gap:5px;padding:7px;border-radius:12px;background-color:#efeae2;background-image:radial-gradient(rgba(120,100,80,.07) 1px,transparent 1.2px);background-size:14px 14px}
.rv-wa{position:relative;justify-self:end;max-width:92%;padding:7px 9px 6px;border-radius:9px 2px 9px 9px;background:#d9fdd3;box-shadow:0 1px .5px rgba(11,20,26,.13);font-size:11.8px;line-height:1.4;color:#111b21}
.rv-wa.in{justify-self:start;background:#fff;border-radius:2px 9px 9px 9px}
.rv-wa.is-in{animation:dxMsg .4s var(--ease) both}
.rv-wa u{text-decoration:none;color:var(--wa-link)}
.rv-wa small{display:flex;align-items:center;justify-content:flex-end;gap:3px;margin-top:2px;font-size:9.8px;color:#667781}
.rv-ticks{display:inline-flex;color:#8696a0;transition:color .3s}
.rv-ticks svg{width:13px;height:13px}
.rv-ticks.is-read{color:#53bdeb}
.rv-renew.is-ok .who{color:var(--dx-ok)}
.rv-pay-new{background:var(--dx-ok-bg);margin:0 -8px;padding:5px 8px!important;border-radius:10px;border-top:0!important}
.rv-pay-new.is-in{animation:rvRow .5s var(--ease) both}
.rv-pay-new + .dx-row{border-top:0}
.rv-in{color:var(--dx-ok)}
.rv-next{display:grid;gap:0}
.rv-next .dx-row{padding:5px 0;border-top:1px solid var(--dx-line);font-size:12px}
.rv-next .dx-h5{margin-bottom:4px}
.rv-next .dx-h5 + .dx-row{border-top:0}
.rv-next .dx-ic{width:28px;height:28px;border-radius:9px}
.rv-next .dx-ic svg{width:14px;height:14px}

/* Tablero */
.rv-tg{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.rv-obs{display:grid;gap:13px;margin-top:6px}
.rv-ob{display:grid;grid-template-columns:26px minmax(0,1fr) 40px;gap:10px;align-items:center}
.rv-obn{display:grid;min-width:0}
.rv-ob .dx-bar-p{display:block;height:9px}
.rv-obn b{display:block;margin-bottom:4px;font-size:12px;font-weight:600;color:var(--dx-ink)}
.rv-ob > b{text-align:right;font-size:12.5px;color:var(--dx-ink)}
.rv-bars,.rv-line{max-height:150px;margin-top:4px}
.rv-area{fill:url(#rvArea);opacity:0;transition:opacity .8s .7s}
.dx-draw.is-in .rv-area{opacity:1}
.rv-dot{fill:#fff;stroke:var(--dx-acc);stroke-width:2;opacity:0;transition:opacity .3s 1.3s}
.dx-draw.is-in .rv-dot{opacity:1}
.rv-line .rv-lv{font-size:10px;font-weight:700;fill:var(--dx-ink-2);opacity:0;transition:opacity .4s 1.5s}
.rv-line .rv-lv.is-last{fill:var(--dx-acc-ink)}
.dx-draw.is-in .rv-lv{opacity:1}
.rv-line text{font-size:9.5px}
.rv-ins p{font-size:12.5px}
.rv-tb2{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:stretch}
.rv-tb2 .rv-ins{align-content:start}
.rv-heat{display:grid;grid-template-columns:74px repeat(6,minmax(0,1fr));gap:4px;font-size:10px}
.rv-hd{text-align:center;font-weight:600;color:var(--dx-ink-3);text-transform:uppercase;letter-spacing:.05em;font-size:9.5px}
.rv-hb{align-self:center;color:var(--dx-ink-3);white-space:nowrap;font-size:10px}
.rv-heat i{display:grid;place-items:center;height:22px;border-radius:6px;background:rgba(229,97,45,var(--a,.1));font-style:normal;font-weight:600;color:var(--dx-ink-2);font-variant-numeric:tabular-nums;opacity:0;transform:scale(.6)}
.rv-heat i.is-hi{color:#fff;background:linear-gradient(135deg,rgba(229,97,45,var(--a)),rgba(230,27,87,var(--a)))}
.rv-heat i.is-off{background:repeating-linear-gradient(135deg,rgba(212,195,178,.3) 0 4px,transparent 4px 8px);color:var(--dx-ink-3);font-weight:500;font-size:9px}
.rv-heatc.is-in .rv-heat i{opacity:1;transform:none;animation:rvCell .5s var(--spring) both;animation-delay:calc(var(--i) * 28ms)}
@keyframes rvCell{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}

/* Escritorio: el WhatsApp de la clienta se acomoda justo sobre la columna lateral (recordatorios y lista de espera) */
@media (min-width:1000px){
  .dx[data-demo="reservas"] .rv-phone{top:169px;right:19px;bottom:auto;width:262px;height:450px}
}

/* Celular: la agenda muestra jueves a sábado y el panel baja */
@media (max-width:760px){
  .rv-ag{grid-template-columns:minmax(0,1fr)}
  .rv-wk{grid-template-columns:34px repeat(3,minmax(0,1fr))}
  .rv-wk .d0,.rv-wk .d1,.rv-wk .d2{display:none}
  .rv-wk .d3{grid-column:2}.rv-wk .d4{grid-column:3}.rv-wk .d5{grid-column:4}
  .rv-hr{font-size:9px;padding-right:4px}
  .rv-r small{display:none}
  .rv-r{padding:4px 7px 4px 4px;gap:6px}
  .rv-r .dx-av,.rv-r .rv-room{width:22px;height:22px;font-size:9px}
  .rv-now{height:28px;font-size:11.5px}
  .rv-phone{height:360px;width:220px}
  .rv-ph{flex-wrap:wrap}
  .rv-ph p{white-space:normal}
  .rv-fi{grid-template-columns:minmax(0,1fr)}
  .rv-hist{order:4}
  .rv-fc3,.rv-up{grid-column:auto;grid-row:auto}
  .rv-fc3{order:2}.rv-up{order:3}
  .rv-pg{grid-template-columns:minmax(0,1fr)}
  /* sesiones solo con «4/6» y la etiqueta de estado sin ícono: «Automático», «Última sesión» y «Renovado · +10» caben completas.
     Anchos fijos (no auto): cada fila es su propia grilla y con auto las columnas no quedarían alineadas entre filas */
  .rv-pt{--cols:minmax(0,1fr) 58px 86px}
  .rv-pt .dx-tr > :last-child{text-align:right}
  .rv-pt .rv-pips{display:none}
  .rv-pt .dx-tag .ic{display:none}
  .rv-pt .dx-tag{padding:0 7px;font-size:10.5px}
  .rv-tg,.rv-tb2{grid-template-columns:minmax(0,1fr)}
  .rv-heat{grid-template-columns:62px repeat(6,minmax(0,1fr));gap:3px}
  .rv-hb{font-size:9px}
  .rv-bars,.rv-line{max-height:170px}
}
