/* New Fit Life — estilos, móvil primero */
:root{
  --bg:#f1f5f9; --card:#fff; --ink:#0f172a; --muted:#64748b; --line:#e2e8f0;
  --primary:#2563eb; --primary-d:#1d4ed8; --danger:#dc2626; --ok:#16a34a;
  --warn:#d97706; --radius:14px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--ink); line-height:1.45; font-size:16px;
}
a{color:var(--primary); text-decoration:none}
h1,h2,h3{margin:0 0 .4em}

/* Topbar */
.topbar{background:#0f172a; color:#fff; position:sticky; top:0; z-index:20}
.topbar-inner{display:flex; align-items:center; gap:.5rem; max-width:1100px; margin:0 auto; padding:.6rem .9rem}
.brand{color:#fff; font-weight:700; font-size:1.1rem; margin-right:auto}
.nav-toggle{background:none; border:0; color:#fff; font-size:1.5rem; cursor:pointer; display:block; margin-left:auto}
.nav{display:none; position:absolute; top:100%; left:0; right:0; background:#0f172a;
  flex-direction:column; padding:.5rem .9rem 1.2rem; z-index:19;
  max-height:85vh; max-height:calc(100dvh - 52px);
  overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain}
body.nav-open .nav{display:flex}
.nav a{color:#cbd5e1; padding:.55rem .2rem; border-bottom:1px solid #1e293b}
.nav a.active{color:#fff; font-weight:600}

/* Apartados desplegables del menú */
.navgroup{display:block}
.navgroup .navtop{color:#cbd5e1; padding:.55rem .2rem; display:block; border-bottom:1px solid #1e293b}
.navgroup.active > .navtop{color:#fff; font-weight:600}
.submenu{display:block; padding-left:.9rem}
.submenu a{color:#94a3b8; padding:.5rem .2rem; display:block; border-bottom:1px solid #1e293b; font-size:.92rem}
.submenu a:hover{color:#fff}

.nav-user{color:#64748b; font-size:.85rem; padding-top:.6rem}
.nav-logout{color:#fca5a5 !important}
/* Indicador de sesión permanente (dispositivo compartido) */
.sessionbar{background:#111827; color:#e5e7eb; padding:.4rem .9rem; display:flex; align-items:center;
  gap:.6rem; flex-wrap:wrap; border-top:1px solid #1f2937}
.sessionbar-who{font-size:.9rem}
.sessionbar-actions{margin-left:auto; display:flex; gap:.4rem}
.sessionbar-clinical{background:#7f1d1d; color:#fff}
.sessionbar-clin{background:#fca5a5; color:#7f1d1d; font-weight:700; font-size:.78rem; padding:.1rem .5rem; border-radius:6px}
.btn-mini{background:#374151; color:#fff; border:0; border-radius:8px; padding:.3rem .7rem; font-size:.82rem; cursor:pointer}
.btn-mini-strong{background:#2563eb}
.sessionbar-clinical .btn-mini{background:#991b1b}
.sessionbar-clinical .btn-mini-strong{background:#b91c1c}

/* Overlay de bloqueo (oculto por defecto; el atributo hidden manda) */
.lock-overlay{position:fixed; inset:0; z-index:1000; background:rgba(15,23,42,.92);
  display:none; align-items:center; justify-content:center; padding:1rem}
.lock-overlay:not([hidden]){display:flex}
.lock-card{background:#fff; border-radius:16px; padding:1.6rem; width:100%; max-width:360px; text-align:center}
.lock-title{font-size:1.3rem; font-weight:700}
.lock-who{color:var(--muted); margin:.2rem 0 1rem}

.centerbar{background:#1e293b; padding:.4rem .9rem; display:flex; align-items:center; gap:.4rem; flex-wrap:wrap}
.centerbar-label{color:#94a3b8; font-size:.8rem}
.chip{display:inline-block; padding:.2rem .7rem; border-radius:999px; background:#334155; color:#cbd5e1; font-size:.82rem}
.chip-on{background:var(--primary); color:#fff}

/* Layout */
.container{max-width:1100px; margin:0 auto; padding:1rem .9rem 4rem}
.page-title{font-size:1.4rem}
.page-head{display:flex; align-items:center; justify-content:space-between; gap:.6rem; flex-wrap:wrap; margin-bottom:.6rem}
.muted{color:var(--muted)}
.small{font-size:.85rem}
.empty{color:var(--muted); padding:.8rem 0}
.mt{margin-top:.7rem}

/* Cards */
.card{background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:1rem; margin:.8rem 0; box-shadow:0 1px 2px rgba(0,0,0,.03)}
.card-title{font-size:1rem; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; font-weight:600}
.cols{display:flex; flex-direction:column; gap:0}
.col{min-width:0}

/* KPIs */
.kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:.7rem}
.kpi{background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:.9rem}
.kpi-num{font-size:1.7rem; font-weight:700}
.kpi-label{color:var(--muted); font-size:.9rem}
.kpi-foot{font-size:.8rem; color:var(--muted); margin-top:.2rem}
.kpi-warn{border-color:#fcd34d; background:#fffbeb}

/* Bar chart */
.bars{display:flex; align-items:flex-end; gap:.5rem; height:160px; padding-top:.5rem}
.bar-col{flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:2px}
.bar{width:70%; max-width:44px; background:var(--primary); border-radius:6px 6px 0 0}
.bar-val{font-size:.7rem; color:var(--muted)}
.bar-lbl{font-size:.7rem; color:var(--muted)}

/* Quick actions */
.quick-actions{display:flex; gap:.5rem; flex-wrap:wrap; margin:.8rem 0}

/* Buttons */
.btn{display:inline-block; padding:.5rem .9rem; border-radius:10px; border:1px solid var(--line);
  background:#fff; color:var(--ink); font-size:.92rem; cursor:pointer; text-align:center}
.btn:hover{background:#f8fafc}
.btn-primary{background:var(--primary); border-color:var(--primary); color:#fff}
.btn-primary:hover{background:var(--primary-d)}
.btn-danger{background:var(--danger); border-color:var(--danger); color:#fff}
.btn-danger-outline{border-color:var(--danger); color:var(--danger)}
.btn-block{width:100%}
.linkbtn{background:none; border:0; color:var(--primary); cursor:pointer; font-size:.85rem; padding:.2rem}
.inline-form{display:inline}

/* Forms */
.form label,.filters label{display:block; margin:.6rem 0; font-size:.95rem; color:#1e293b; font-weight:500}
/* Campos generosos: pensados para usar con el móvil en la mano, deprisa. */
input,select,textarea{width:100%; padding:.7rem .8rem; border:2px solid #94a3b8; border-radius:10px;
  font-size:1.05rem; line-height:1.3; font-family:inherit; background:#fff; margin-top:.25rem;
  min-height:48px; color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none; border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(37,99,235,.15)}
textarea{resize:vertical; min-height:64px}
::placeholder{color:#94a3b8}
/* Variantes grandes */
.input-lg{font-size:1.1rem; min-height:52px; padding:.8rem .9rem}
.search-lg{width:100%; font-size:1.2rem; min-height:56px; padding:.9rem 1rem; border-width:2px}
.btn-lg{min-height:52px; font-size:1.05rem; padding:.7rem 1.2rem}
.grid2{display:grid; grid-template-columns:1fr; gap:0 .8rem}
.form-actions{display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.6rem}
.filters{display:flex; flex-direction:column; gap:.5rem; margin:.6rem 0}
.filters input,.filters select{margin-top:0}
.filters-row{display:flex; gap:.5rem}
.filters-row select{flex:1}

/* Buscador de cliente con autocompletado */
.client-picker{position:relative; margin-top:.25rem}
.picker-list{position:absolute; z-index:30; left:0; right:0; top:calc(100% + 2px);
  margin:0; padding:.25rem; list-style:none; background:#fff; border:2px solid var(--primary);
  border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,.14); max-height:280px; overflow-y:auto}
.picker-opt{padding:.7rem .8rem; border-radius:8px; cursor:pointer; font-size:1.05rem}
.picker-opt:hover,.picker-opt.active{background:#dbeafe}
.picker-code{color:var(--muted); font-size:.85rem; margin-left:.3rem}

/* Logo del centro en la cabecera */
.brand{display:inline-flex; align-items:center; gap:.5rem; flex:0 0 auto; margin-right:.4rem}
.brand-logo{height:30px; width:auto; max-width:190px; display:block; object-fit:contain; flex-shrink:0}
.brand-name{display:none}                 /* con logo, el nombre en texto se oculta */
.brand.no-logo .brand-name{display:inline; font-weight:700; font-size:1.1rem}
@media (min-width:760px){ .brand-logo{height:34px; max-width:220px} }
.inline-controls{display:flex; gap:.4rem; flex-wrap:wrap; margin-top:.5rem}
.inline-controls select,.inline-controls input{width:auto; flex:1; min-width:120px}
.mini{margin-top:.7rem; border-top:1px dashed var(--line); padding-top:.5rem}
.mini summary{cursor:pointer; color:var(--primary); font-size:.9rem}

/* Lists */
.list{display:flex; flex-direction:column; gap:.4rem}
.list.compact{gap:.25rem}
.list-row{display:flex; align-items:center; gap:.6rem; background:#fff; border:1px solid var(--line);
  border-radius:10px; padding:.6rem .7rem}
a.list-row:hover{border-color:var(--primary)}
.list-row.static{background:#fafcff}
.list-main{flex:1; min-width:0; color:var(--ink)}
.list-name{font-weight:600}
.list-sub{font-size:.82rem; color:var(--muted)}
.list-end{display:flex; align-items:center; gap:.5rem}

/* Badges */
.badge{display:inline-block; padding:.15rem .55rem; border-radius:999px; font-size:.78rem; background:#e2e8f0; color:#334155; white-space:nowrap}
.badge-active{background:#dcfce7; color:#166534}
.badge-inactive{background:#e2e8f0; color:#475569}
.badge-vacation{background:#fef9c3; color:#854d0e}
.badge-temporary_leave{background:#ffedd5; color:#9a3412}
.badge-paid{background:#dcfce7; color:#166534}
.badge-pending{background:#fee2e2; color:#991b1b}
.badge-recovering{background:#fef9c3; color:#854d0e}
.badge-resolved{background:#dcfce7; color:#166534}
.badge-cancelled{background:#fee2e2; color:#991b1b}
.badge-req-pending{background:#fee2e2; color:#991b1b}
.badge-req-seen{background:#e0f2fe; color:#075985}
.badge-req-resolved{background:#dcfce7; color:#166534}
.badge-req-rejected{background:#e2e8f0; color:#475569}

/* Alertas críticas */
.alert-banner{background:#fef2f2; border:2px solid var(--danger); border-radius:var(--radius); padding:.8rem 1rem; margin-bottom:1rem}
.alert-banner-head{color:var(--danger); font-weight:800; letter-spacing:.03em; margin-bottom:.3rem}
.alert-banner ul{margin:.2rem 0; padding-left:1.1rem}
.alert-banner li{margin:.25rem 0}
.alert-lvl{font-size:.72rem; font-weight:700; padding:.05rem .4rem; border-radius:6px; margin-right:.3rem}
.alert-critical{background:var(--danger); color:#fff}
.alert-warning{background:#fef3c7; color:#92400e}
.alert-dot{color:var(--danger); font-weight:800; margin-right:.15rem}

/* Ficha */
.datalist{display:grid; grid-template-columns:auto 1fr; gap:.3rem .8rem; margin:0}
.datalist dt{color:var(--muted); font-size:.85rem}
.datalist dd{margin:0}
.injury{border-bottom:1px solid var(--line); padding:.5rem 0}
.injury-head{display:flex; gap:.5rem; align-items:center; justify-content:space-between}
.restr{color:var(--danger); font-size:.85rem; margin-top:.2rem}

/* Cronograma semanal */
.week{display:grid; grid-template-columns:1fr; gap:.5rem}
.day{background:#fff; border:1px solid var(--line); border-radius:12px; padding:.5rem}
.day-today{border-color:var(--primary); box-shadow:0 0 0 2px #dbeafe}
.day-head{font-weight:700; font-size:.9rem; margin-bottom:.4rem; color:#334155}
.day-empty{color:#cbd5e1; text-align:center}
.clscard{display:block; background:#f8fafc; border:1px solid var(--line); border-left:4px solid var(--primary);
  border-radius:8px; padding:.45rem .6rem; margin-bottom:.4rem; color:var(--ink)}
.clscard:hover{background:#eff6ff}
.clscard-cancel{opacity:.55; border-left-color:var(--danger); text-decoration:line-through}
.clscard-mine{border-left-color:#16a34a; background:#f0fdf4}
.clscard-mine:hover{background:#dcfce7}
.mine-tag{background:#16a34a; color:#fff; font-size:.62rem; padding:.02rem .3rem; border-radius:5px; vertical-align:middle}

/* Conmutador Mis clases / Todo el centro */
.scope-switch{display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; margin:.2rem 0 .8rem}
.scope-btn{padding:.5rem 1rem; border:2px solid var(--primary); border-radius:999px;
  color:var(--primary); font-size:.95rem; font-weight:600; background:#fff}
.scope-btn.scope-on{background:var(--primary); color:#fff}
.scope-label{color:var(--muted); font-size:.9rem; margin-left:.3rem}
.clscard-time{font-weight:700; font-size:.85rem}
.clscard-name{font-size:.85rem}
.clscard-tr{margin-top:.2rem; display:flex; gap:.25rem; flex-wrap:wrap}
.tr-chip{font-size:.7rem; background:#e0e7ff; color:#3730a3; padding:.05rem .4rem; border-radius:6px}
.tr-substitute{background:#fef3c7; color:#92400e}
.tr-none{background:#fee2e2; color:#991b1b}
.att{font-weight:600}
.att-attended{color:var(--ok)}
.att-absent{color:var(--danger)}
.att-form select{width:auto; padding:.3rem .4rem; font-size:.82rem; margin:0}

/* Solicitudes */
.req-head{display:flex; justify-content:space-between; align-items:center; gap:.5rem}
.req-text{margin:.4rem 0; color:#334155}
.req-pending{border-left:4px solid var(--danger)}
.req-row.req-pending{border-left:4px solid var(--danger)}
.row-off{opacity:.6}

/* Productos */
.prod-head{display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; margin-bottom:.4rem}

/* Entrenamiento (tabla de series) */
.setgrid{width:100%; border-collapse:collapse; margin:.3rem 0}
.setgrid th{text-align:left; font-size:.78rem; color:var(--muted); font-weight:600; padding:.2rem .3rem}
.setgrid td{padding:.2rem .3rem}
.setgrid td input{margin:0}
.setgrid th:nth-child(2),.setgrid th:nth-child(3),.setgrid td:nth-child(2),.setgrid td:nth-child(3){width:90px}
.setgrid-read td{border-bottom:1px solid var(--line); font-size:.95rem}
.wnotes{background:#f8fafc; border-left:3px solid var(--primary); padding:.4rem .6rem; border-radius:6px; margin:.3rem 0; white-space:pre-wrap}

/* Fichaje */
.btn-clock{font-size:1.3rem; padding:1.1rem 2rem; min-height:64px; width:100%; max-width:340px; margin:.5rem auto; display:block}

/* Quiosco de fichaje (tablet) */
.kiosk-body{display:flex; align-items:center; justify-content:center; min-height:100vh; background:#0f172a; padding:1rem}
.kiosk-card{background:#fff; border-radius:18px; padding:1.6rem; width:100%; max-width:420px; text-align:center; box-shadow:0 12px 40px rgba(0,0,0,.35)}
.kiosk-brand{font-size:1.3rem; font-weight:700; margin-bottom:.3rem}
.kiosk-center{color:var(--muted); margin-bottom:.8rem; font-weight:600}
.pin-input{font-size:2rem; text-align:center; letter-spacing:.5rem; max-width:220px; margin:.3rem auto}
.pinpad{display:grid; grid-template-columns:repeat(3,1fr); gap:.5rem; max-width:300px; margin:.8rem auto 0}
.pin-key{padding:1rem; font-size:1.3rem; border:2px solid var(--line); border-radius:12px; background:#f8fafc; cursor:pointer}
.pin-key:hover{background:#eef2ff}
.pin-ok{background:var(--primary); color:#fff; border-color:var(--primary)}
.kiosk-done{padding:1rem; border-radius:12px; font-size:1.2rem; margin:.5rem 0}
.kiosk-in{background:#dcfce7; color:#166534}
.kiosk-out{background:#fee2e2; color:#991b1b}
.kiosk-note{color:var(--muted); font-size:.8rem; margin-top:1rem; border-top:1px solid var(--line); padding-top:.6rem}

/* Cuota calculada */
.fee-box{background:#f0fdf4; border:1px solid #bbf7d0; border-radius:10px; padding:.6rem .8rem; margin-top:.6rem}
.fee-title{font-size:.8rem; color:var(--muted); text-transform:uppercase}
.fee-final{font-size:1.4rem; font-weight:700; color:#166534}

/* Bloque de descuentos en el alta */
.fieldset{border:1px solid var(--line); border-radius:10px; padding:.5rem .7rem; margin:.6rem 0}
.fieldset legend{font-size:.85rem; color:var(--muted); padding:0 .3rem}

/* Lista de selección múltiple (aplicar descuento) */
.checklist{max-height:340px; overflow-y:auto; border:1px solid var(--line); border-radius:10px; padding:.3rem}
.check-row{display:flex; align-items:center; gap:.6rem; padding:.5rem .4rem; border-bottom:1px solid var(--line); margin:0; font-weight:400}
.check-row input{width:auto; min-height:auto; margin:0}

/* Económico: IVA y financiero */
.ivagrid{display:grid; grid-template-columns:repeat(3,1fr); gap:.6rem; margin-top:.5rem}
.ivanum{font-size:1.3rem; font-weight:700}
.check-inline{display:inline-flex; align-items:center; gap:.3rem; font-size:.85rem; white-space:nowrap}
.check-inline input{width:auto; min-height:auto; margin:0}
.fin-real{border:2px solid var(--primary); background:#eff6ff}
.fin-big{font-size:2rem; font-weight:800}
.bars2{display:flex; align-items:flex-end; gap:.6rem; height:150px; padding-top:.5rem}
.bar2-col{flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:3px}
.bar2-pair{display:flex; align-items:flex-end; gap:3px; height:130px}
.bar2{width:14px; border-radius:4px 4px 0 0}
.bar2-in{background:var(--primary)}
.bar2-out{background:var(--danger)}
.dot{display:inline-block; width:10px; height:10px; border-radius:3px; vertical-align:middle}
.dot-in{background:var(--primary)}
.dot-out{background:var(--danger)}
@media (max-width:500px){ .ivagrid{grid-template-columns:1fr} }

/* Saldo del cliente */
.balance{font-size:1.3rem; font-weight:700; padding:.3rem 0}
.balance-owes{color:var(--danger)}
.balance-credit{color:#0369a1}
.balance-ok{color:var(--ok)}

/* Pestañas de filtro (Cobros) */
.tabs{display:flex; gap:.4rem; margin-bottom:.7rem; flex-wrap:wrap}
.tab{padding:.5rem 1rem; border:2px solid var(--line); border-radius:999px; color:var(--muted); font-weight:600; background:#fff}
.tab-on{border-color:var(--primary); background:var(--primary); color:#fff}

/* Hilo de conversación (solicitudes) */
.thread{display:flex; flex-direction:column; gap:.5rem; margin:.6rem 0}
.bubble{max-width:85%; padding:.55rem .75rem; border-radius:14px; font-size:1rem; line-height:1.35}
.bubble-meta{font-size:.72rem; color:var(--muted); margin-bottom:.15rem}
.bubble-mine{align-self:flex-end; background:#dbeafe; border-bottom-right-radius:4px}
.bubble-them{align-self:flex-start; background:#f1f5f9; border-bottom-left-radius:4px}
.reply-row{display:flex; gap:.5rem; align-items:flex-start}
.reply-row input{flex:1}

/* Semana / navegación */
.week-nav{display:flex; align-items:center; gap:.4rem}
.week-label{font-size:.85rem; color:var(--muted)}

/* Flash */
.flash{padding:.6rem .8rem; border-radius:10px; margin-bottom:.8rem; font-size:.92rem}
.flash-ok{background:#dcfce7; color:#166534}
.flash-warn{background:#fef3c7; color:#92400e}

/* Login */
.login-body{display:flex; align-items:center; justify-content:center; min-height:100vh; padding:1rem; background:#0f172a}
.login-card{background:#fff; border-radius:16px; padding:1.6rem; width:100%; max-width:360px; box-shadow:0 10px 30px rgba(0,0,0,.3)}
.login-logo{max-height:70px; max-width:100%; display:block; margin:0 auto .8rem}
.login-title{margin:0; font-size:1.4rem}
.login-sub{color:var(--muted); margin:.2rem 0 1rem}

code{background:#f1f5f9; padding:.1rem .35rem; border-radius:5px; font-size:.9em}

/* Escritorio / tablet */
@media (min-width:760px){
  .nav-toggle{display:none}
  .nav{display:flex; position:static; flex-direction:row; align-items:center; gap:.2rem; padding:0;
    background:none; flex:1 1 auto; flex-wrap:wrap; justify-content:flex-end;
    max-height:none; overflow:visible}
  .nav a{border:0; padding:.4rem .6rem; border-radius:8px}
  .nav a.active{background:#1e293b}
  .nav-user{padding:0 .6rem}
  /* Apartados desplegables en escritorio */
  .navgroup{position:relative}
  .navgroup .navtop{border:0; padding:.4rem .6rem; border-radius:8px; display:inline-block; cursor:pointer}
  .navgroup.active > .navtop{background:#1e293b}
  .submenu{position:absolute; top:100%; left:0; min-width:190px; background:#0f172a;
    border:1px solid #334155; border-radius:8px; padding:.3rem; display:none; z-index:30}
  .navgroup:hover .submenu, .navgroup:focus-within .submenu{display:block}
  .submenu a{border:0; border-radius:6px; padding:.55rem .6rem; color:#cbd5e1}
  .submenu a:hover{background:#1e293b; color:#fff}
  .grid2{grid-template-columns:1fr 1fr}
  .cols{flex-direction:row; gap:1rem}
  .col{flex:1}
  .week{grid-template-columns:repeat(7,1fr)}
  .filters{flex-direction:row; align-items:center}
  .filters input{flex:1}
}

/* Ocupación de clase en el cuadrante */
.clscard-occ{font-size:.72rem; color:var(--muted); margin-top:.15rem; font-weight:600}

/* Encuesta de satisfacción (valoración 1-5) */
.rating{border:1px solid var(--line); border-radius:var(--radius); padding:.7rem .9rem; margin:.6rem 0}
.rating legend{font-weight:600; padding:0 .3rem}
.rating-opts{display:flex; gap:.5rem; flex-wrap:wrap; margin:.3rem 0}
.rating-opt{display:inline-flex; align-items:center; justify-content:center; cursor:pointer}
.rating-opt input{position:absolute; opacity:0; width:0; height:0}
.rating-opt span{display:inline-flex; align-items:center; justify-content:center;
  width:44px; height:44px; border:2px solid var(--line); border-radius:10px;
  font-weight:700; font-size:1.05rem; color:var(--ink); background:var(--card)}
.rating-opt input:checked + span{border-color:var(--primary); background:var(--primary); color:#fff}
.rating-opt input:focus-visible + span{outline:2px solid var(--primary); outline-offset:2px}

/* Valoración inicial */
.assess-item{padding:.6rem 0; border-bottom:1px solid var(--line)}
.assess-label{font-weight:600; margin-bottom:.3rem}
.assess-note{margin-top:.35rem; width:100%}
.deflist > div{display:flex; gap:.6rem; padding:.3rem 0; border-bottom:1px solid var(--line)}
.deflist dt{min-width:140px; color:var(--muted); font-weight:600; margin:0}
.deflist dd{margin:0}
.text-warn{color:var(--warn)}

/* ---------- Tienda del cliente ---------- */
.shop-filters{display:flex; flex-direction:column; gap:.5rem; margin:.6rem 0}
.shop-filters .chips{display:flex; gap:.4rem; flex-wrap:wrap}
.shop-filters .chip{cursor:pointer; background:var(--card); color:var(--ink); border:1px solid var(--line)}
.shop-filters .chip.activo{background:var(--primary); color:#fff; border-color:var(--primary)}
.shop-grid{display:grid; grid-template-columns:1fr; gap:.6rem}
@media(min-width:560px){ .shop-grid{grid-template-columns:1fr 1fr} }
@media(min-width:900px){ .shop-grid{grid-template-columns:1fr 1fr 1fr} }
.shop-card{background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  padding:.8rem; display:flex; flex-direction:column; gap:.5rem}
.shop-card h3{margin:0; font-size:1rem}
.shop-price{font-weight:700; font-size:1.1rem}
.btn-anadir.anadido{background:var(--ok); border-color:var(--ok)}

/* Botones flotantes */
.fab{position:fixed; bottom:16px; z-index:50; border:0; border-radius:999px; padding:.7rem 1.1rem;
  font-weight:700; color:#fff; box-shadow:0 6px 20px rgba(0,0,0,.25); cursor:pointer}
.fab-cart{left:16px; background:var(--ink)}
.fab-chat{right:16px; background:var(--primary)}

/* Paneles deslizantes (carrito y chat). OJO: display:flex solo cuando NO está
   oculto, para que el atributo `hidden` siga funcionando. */
.shop-overlay{position:fixed; inset:0; z-index:60; background:rgba(0,0,0,.4); justify-content:flex-end}
.shop-overlay:not([hidden]){display:flex}
.shop-sheet{background:var(--card); width:min(420px,100%); height:100%; display:flex; flex-direction:column;
  box-shadow:-8px 0 24px rgba(0,0,0,.2)}
.shop-sheet-head{display:flex; align-items:center; justify-content:space-between; padding:.9rem 1rem;
  border-bottom:1px solid var(--line)}
.shop-sheet-head h3{margin:0}
.btn-close{border:0; background:none; font-size:1.3rem; cursor:pointer; color:var(--muted)}
.shop-sheet-body{padding:1rem; overflow:auto}
.cart-lines{list-style:none; margin:0; padding:0}
.cart-line{display:flex; justify-content:space-between; align-items:center; gap:.5rem;
  padding:.5rem 0; border-bottom:1px solid var(--line)}
.cart-acc{display:flex; align-items:center; gap:.3rem; white-space:nowrap}
.cart-acc button{border:1px solid var(--line); background:var(--card); border-radius:8px;
  width:30px; height:30px; cursor:pointer; font-size:1rem}
.cart-acc button.quitar{width:auto; padding:0 .5rem; color:var(--danger)}
.cart-total{font-weight:700; margin:.7rem 0}

/* Chat */
.chat-sheet .chat-msgs{flex:1; overflow:auto; padding:1rem; display:flex; flex-direction:column; gap:.5rem}
.msg{max-width:85%; padding:.55rem .75rem; border-radius:14px; white-space:pre-line; font-size:.95rem}
.msg-bot{background:var(--bg); align-self:flex-start; border:1px solid var(--line)}
.msg-me{background:var(--primary); color:#fff; align-self:flex-end}
.msg-prods{max-width:100%; background:none; padding:0; display:flex; flex-direction:column; gap:.4rem}
.prod-mini{display:flex; justify-content:space-between; align-items:center; gap:.5rem;
  background:var(--bg); border:1px solid var(--line); border-radius:10px; padding:.5rem .7rem}
.prod-mini button{border:0; background:var(--primary); color:#fff; border-radius:8px; padding:.4rem .7rem; cursor:pointer; font-weight:600}
.chat-opts{display:flex; flex-wrap:wrap; gap:.4rem; padding:.6rem 1rem; border-top:1px solid var(--line)}
.resp{border:1px solid var(--primary); color:var(--primary); background:var(--card);
  border-radius:999px; padding:.45rem .8rem; cursor:pointer; font-weight:600; font-size:.9rem}
.resp-main{background:var(--primary); color:#fff}
.chat-write{display:flex; gap:.4rem; padding:.6rem 1rem; border-top:1px solid var(--line)}
.chat-write input{flex:1}

/* Mi perfil: consentimientos */
.consent-row{display:flex; justify-content:space-between; align-items:flex-start; gap:.8rem;
  padding:.7rem 0; border-bottom:1px solid var(--line)}
.consent-row:last-child{border-bottom:0}

/* Recibo imprimible */
.receipt{max-width:580px}
.receipt-head{display:flex; justify-content:space-between; align-items:flex-start;
  border-bottom:2px solid var(--ink); padding-bottom:.6rem; margin-bottom:.8rem}
.receipt-brand{font-weight:800; font-size:1.2rem}
.receipt-no{color:var(--muted); font-weight:600}
.receipt-title{font-size:1.05rem; margin:.2rem 0 .8rem}
.receipt-total{font-size:1.2rem; margin:.8rem 0; padding-top:.6rem; border-top:1px solid var(--line)}
@media print{
  header, .sessionbar, .lock-overlay, .quick-actions, .no-print, .fab, nav{display:none !important}
  .card{box-shadow:none; border:1px solid #ccc}
  body{background:#fff}
}
