/* ============== Lift Turnero · base.css ============== */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin:0; padding:0; }
body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color:#2A3318; background:#FAF6ED; -webkit-font-smoothing:antialiased; }
img { max-width:100%; display:block; }
button { font-family: inherit; }
a { color: inherit; text-decoration: none; }
input, select, textarea, button { font-family: inherit; font-size: inherit; }

:root{
  --primary:#5E7C3D;
  --primary-soft:#8BA05C;
  --primary-dark:#3D4A2A;
  --primary-deep:#2A3318;
  --accent:#D9C9A3;
  --accent-light:#E8DCBF;
  --accent-dark:#B8A775;
  --cream:#F5EBD8;
  --cream-light:#FAF6ED;
  --bg-light:#FAF6ED;
  --danger:#C94444;
  --warning:#D9A65C;
  --success:#5E7C3D;
  --text:#2A3318;
  --muted:#6B6855;
  --border:#E8DCBF;
  --border-soft:#D9D2C2;
}

/* === utilidades comunes === */
.flex { display:flex; }
.grid { display:grid; }
.inline-flex { display:inline-flex; }
.items-center { align-items:center; }
.items-start { align-items:flex-start; }
.items-end { align-items:flex-end; }
.justify-center { justify-content:center; }
.justify-between { justify-content:space-between; }
.justify-end { justify-content:flex-end; }
.flex-col { flex-direction:column; }
.flex-1 { flex:1; }
.gap-1 { gap:4px; } .gap-2 { gap:8px; } .gap-3 { gap:12px; } .gap-4 { gap:16px; } .gap-5 { gap:20px; } .gap-6 { gap:24px; }
.w-full { width:100%; }
.h-full { height:100%; }
.text-center { text-align:center; }
.text-right { text-align:right; }
.text-xs { font-size:9px; }
.text-sm { font-size:10px; }
.text-base { font-size:11px; }
.text-md { font-size:12px; }
.text-lg { font-size:14px; }
.text-xl { font-size:16px; }
.text-2xl { font-size:18px; }
.text-3xl { font-size:22px; }
.font-thin { font-weight:300; }
.font-normal { font-weight:400; }
.font-medium { font-weight:500; }
.font-semi { font-weight:600; }
.font-bold { font-weight:700; }
.font-black { font-weight:900; }
.uppercase { text-transform:uppercase; }
.rounded-sm { border-radius:4px; }
.rounded { border-radius:6px; }
.rounded-md { border-radius:8px; }
.rounded-lg { border-radius:10px; }
.rounded-xl { border-radius:12px; }
.rounded-2xl { border-radius:16px; }
.rounded-full { border-radius:9999px; }
.p-1 { padding:4px; } .p-2 { padding:8px; } .p-3 { padding:12px; } .p-4 { padding:16px; } .p-5 { padding:20px; } .p-6 { padding:24px; }
.px-2 { padding-left:8px; padding-right:8px; } .px-3 { padding-left:12px; padding-right:12px; } .px-4 { padding-left:16px; padding-right:16px; }
.py-1 { padding-top:4px; padding-bottom:4px; } .py-2 { padding-top:8px; padding-bottom:8px; } .py-3 { padding-top:12px; padding-bottom:12px; }
.m-0 { margin:0; }
.mt-1 { margin-top:4px; } .mt-2 { margin-top:8px; } .mt-3 { margin-top:12px; } .mt-4 { margin-top:16px; }
.mb-1 { margin-bottom:4px; } .mb-2 { margin-bottom:8px; } .mb-3 { margin-bottom:12px; } .mb-4 { margin-bottom:16px; }
.text-primary { color:var(--primary); }
.text-primary-dark { color:var(--primary-dark); }
.text-muted { color:var(--muted); }
.text-danger { color:var(--danger); }
.text-warning { color:var(--warning); }
.text-white { color:#fff; }
.bg-white { background:#fff; }
.bg-primary { background:var(--primary); color:#fff; }
.bg-cream { background:var(--cream); }
.bg-cream-light { background:var(--cream-light); }
.bg-blue-50 { background:rgba(94,124,61,.07); }
.border { border:1px solid var(--border); }
.border-soft { border:1px solid var(--border-soft); }
.border-primary { border-color:var(--primary); }
.cursor-pointer { cursor:pointer; }
.cursor-not-allowed { cursor:not-allowed; }
.hidden { display:none !important; }
.relative { position:relative; }
.absolute { position:absolute; }
.fixed { position:fixed; }
.overflow-hidden { overflow:hidden; }
.overflow-auto { overflow:auto; }

/* === material symbols === */
.material-symbols-outlined { font-family:'Material Symbols Outlined'; font-weight:normal; font-style:normal; font-size:18px; line-height:1; letter-spacing:normal; text-transform:none; display:inline-block; white-space:nowrap; word-wrap:normal; direction:ltr; -webkit-font-feature-settings:'liga'; -webkit-font-smoothing:antialiased; vertical-align:-4px; }
.material-symbols-outlined.fill-1 { font-variation-settings:'FILL' 1; }

/* === lift logo === */
.lift-logo { display:inline-flex; align-items:center; gap:6px; }
.lift-logo img { height:36px; width:auto; }
.lift-logo--sm img { height:26px; }
.lift-logo--lg img { height:54px; }
.lift-logo--xl img { height:78px; }
.lift-logo--light img { filter: brightness(0) invert(1); }
.lift-logo-fallback { display:none; flex-direction:column; align-items:flex-start; }
.lift-logo-fallback .name { font-family:'Dancing Script', cursive; font-weight:700; font-size:32px; color:var(--primary-dark); line-height:.9; }
.lift-logo--light .lift-logo-fallback .name { color:#fff; }
.lift-logo-fallback .tag { font-size:7px; letter-spacing:.22em; text-transform:uppercase; color:var(--muted); font-weight:600; }
.lift-logo--light .lift-logo-fallback .tag { color: rgba(255,255,255,.85); }

/* === badges === */
.badge { display:inline-flex; align-items:center; gap:3px; padding:2px 7px; border-radius:9999px; font-size:9px; font-weight:600; line-height:1.4; }
.badge--primary { background: rgba(94,124,61,.15); color: var(--primary-dark); }
.badge--success { background:#DCFCE7; color:#166534; }
.badge--danger { background:#FEE2E2; color:#991B1B; }
.badge--warning { background:#FEF3C7; color:#92400E; }
.badge--neutral { background:#F3F4F6; color:#374151; }
.badge--accent { background: var(--accent-light); color: var(--primary-dark); }
.badge--cream { background: var(--cream); color: var(--primary-dark); }
.badge--blue { background:#DBEAFE; color:#1E40AF; }

/* === buttons === */
.btn-primary, .btn-accent, .btn-outline, .btn-danger, .btn-ghost, .btn-icon {
  display:inline-flex; align-items:center; gap:6px; padding:8px 16px; font-size:12px; font-weight:600;
  border-radius:10px; border:none; cursor:pointer; transition:all .2s; font-family:inherit; white-space:nowrap;
}
.btn-primary { background: var(--primary); color:#fff; }
.btn-primary:hover { background: var(--primary-dark); transform: translateY(-1px); }
.btn-accent { background: var(--primary-soft); color:#fff; }
.btn-accent:hover { background: var(--primary); }
.btn-outline { background:#fff; color: var(--primary-dark); border:1px solid var(--accent); }
.btn-outline:hover { border-color: var(--primary); background: var(--cream-light); }
.btn-danger { background: var(--danger); color:#fff; }
.btn-danger:hover { background:#A93434; }
.btn-ghost { background:transparent; color: var(--primary-dark); }
.btn-ghost:hover { background: rgba(0,0,0,.04); }
.btn-icon { padding:6px 8px; background:transparent; color:var(--primary-dark); }
.btn-sm { padding:5px 10px; font-size:10px; border-radius:8px; }
.btn-primary[disabled], .btn-accent[disabled], .btn-outline[disabled], .btn-danger[disabled] { opacity:.55; cursor:not-allowed; transform:none; }

/* === forms === */
.form-grid { display:grid; grid-template-columns: 1fr 1fr; gap:12px; }
.form-group { display:flex; flex-direction:column; gap:4px; }
.form-group.full { grid-column: 1 / -1; }
.form-group label { font-size:9px; text-transform:uppercase; letter-spacing:.05em; color:var(--primary-dark); font-weight:700; }
.form-group input, .form-group select, .form-group textarea { padding:7px 10px; border:1px solid var(--border-soft); border-radius:6px; background:#fff; color:var(--text); font-size:11px; font-family:inherit; transition: border-color .15s; }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline:none; border-color:var(--primary); }
.form-group textarea { resize:vertical; min-height:60px; }
.form-group.has-error input, .form-group.has-error select, .form-group.has-error textarea { border-color:var(--danger); }
.form-error { display:flex; align-items:center; gap:4px; color: var(--danger); font-size:10px; margin:2px 0 0; }
.form-error .material-symbols-outlined { font-size:11px; }
.form-hint { font-size:10px; color:var(--primary-dark); margin:2px 0 0; background:#EFEAE0; padding:5px 8px; border-radius:4px; border:1px solid var(--border-soft); }
.combo-input { position:relative; }
.combo-input .material-symbols-outlined { position:absolute; left:9px; top:50%; transform:translateY(-50%); font-size:14px; color:var(--primary); pointer-events:none; }
.combo-input input { padding-left:30px; }

/* === toggles === */
.toggle-switch { position:relative; display:inline-block; width:34px; height:20px; cursor:pointer; }
.toggle-switch input { opacity:0; width:0; height:0; }
.toggle-slider { position:absolute; cursor:pointer; inset:0; background:#D9D2C2; border-radius:9999px; transition:.2s; }
.toggle-slider::before { position:absolute; content:""; height:14px; width:14px; left:3px; top:3px; background:#fff; border-radius:50%; transition:.2s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.toggle-switch input:checked + .toggle-slider { background: var(--primary); }
.toggle-switch input:checked + .toggle-slider::before { transform: translateX(14px); }

/* === cards === */
.card { background:#fff; border:1px solid var(--border); border-radius:8px; padding:14px; }
.card-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.card-title { font-size:13px; font-weight:700; color:var(--primary-dark); margin:0; }
.card-sub { font-size:10px; color:var(--muted); margin:2px 0 0; }

/* === stat cards === */
.stat-card { background:#fff; border:1px solid var(--border); border-left:4px solid var(--primary); border-radius:6px; padding:11px 14px; }
.stat-card.accent-soft { border-left-color: var(--primary-soft); }
.stat-card.accent-dark { border-left-color: var(--accent-dark); }
.stat-card.amber { border-left-color: var(--warning); }
.stat-card .label { font-size:9px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); margin:0; font-weight:600; }
.stat-card .value { font-size:22px; font-weight:800; color:var(--primary-dark); margin:2px 0; line-height:1.1; }
.stat-card .sub { font-size:9px; color:var(--muted); margin:0; }

/* === sess-ring === */
.sess-ring { width:60px; height:60px; border-radius:50%; background: conic-gradient(var(--primary) var(--deg, 270deg), var(--accent-light) 0); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.sess-ring .inner { width:50px; height:50px; border-radius:50%; background:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.sess-ring .big { font-size:14px; font-weight:900; color:var(--primary); margin:0; }
.sess-ring .small { font-size:7px; color:var(--muted); margin-top:-2px; }
.sess-ring--lg { width:90px; height:90px; }
.sess-ring--lg .inner { width:74px; height:74px; }
.sess-ring--lg .big { font-size:22px; }

/* === step dots === */
.step-dots { display:flex; gap:6px; align-items:center; justify-content:center; margin:8px 0; }
.step-dot { width:22px; height:4px; border-radius:2px; background: var(--accent-light); }
.step-dot.active { background: var(--primary); }
.step-dot.done { background: var(--primary-soft); }

/* === time slot === */
.time-slot { padding:8px 10px; border:1.5px solid var(--border); border-radius:8px; text-align:center; font-size:11px; font-weight:600; background:#fff; color:var(--primary-dark); cursor:pointer; transition:all .2s; display:inline-block; min-width:64px; }
.time-slot:hover { border-color:var(--primary-soft); background:var(--cream-light); }
.time-slot.selected { background:var(--primary); color:#fff; border-color:var(--primary); }
.time-slot.full { background:var(--cream); color:var(--accent-dark); border-color:var(--border); cursor:not-allowed; text-decoration:line-through; }
.time-slot.few { border-color:var(--warning); background:#FBF3E0; color:#8B6420; }
.time-slot.cerrado { background:#f0eee5; color:#b8aea2; cursor:not-allowed; opacity:.6; }
.time-slot .num { display:block; font-size:8px; color:inherit; opacity:.7; margin-top:2px; }

/* === srv-photo === */
.srv-photo { border-radius:12px; position:relative; overflow:hidden; display:flex; align-items:flex-end; justify-content:flex-start; color:#fff; padding:10px; min-height:96px; }
.srv-photo.pilates { background: linear-gradient(135deg,#8BA05C 0%,#5E7C3D 60%,#3D4A2A 100%); }
.srv-photo.capsula { background: linear-gradient(135deg,#D9C9A3 0%,#B8A775 60%,#8B7A4A 100%); }
.srv-photo.drenaje { background: linear-gradient(135deg,#B8C78A 0%,#8BA05C 60%,#5E7C3D 100%); }
.srv-photo.reformer { background: linear-gradient(135deg,#6B855E 0%,#3D4A2A 60%,#2A3318 100%); }
.srv-photo.body { background: linear-gradient(135deg,#9CA3AF 0%,#6B7280 60%,#374151 100%); }
.srv-photo::before { content:''; position:absolute; inset:0; background: repeating-linear-gradient(135deg, rgba(255,255,255,.06) 0px, rgba(255,255,255,.06) 2px, transparent 2px, transparent 14px); }
.srv-photo .ico { position:relative; z-index:2; display:flex; align-items:center; gap:6px; font-weight:700; font-size:12px; }
.srv-photo .ico .material-symbols-outlined { font-size:18px; }

/* === serv-chip === */
.serv-chip { display:inline-flex; align-items:center; gap:4px; padding:3px 8px; border-radius:9999px; background:var(--cream-light); color:var(--primary-dark); font-size:10px; font-weight:600; border:1px solid var(--border); }
.serv-chip .material-symbols-outlined { font-size:12px; }
.serv-chip.pilates { background:rgba(94,124,61,.14); color:var(--primary-dark); border-color:rgba(94,124,61,.3); }
.serv-chip.capsula { background: rgba(217,201,163,.4); color:var(--primary-dark); border-color: var(--accent-dark); }
.serv-chip.drenaje { background:rgba(139,160,92,.18); color:var(--primary-dark); border-color:var(--primary-soft); }
.serv-chip.reformer { background:rgba(61,74,42,.14); color:var(--primary-deep); border-color:var(--primary-dark); }

/* === t-table === */
.t-wrap { overflow-x:auto; border:1px solid var(--border); border-radius:8px; background:#fff; }
.t-table { width:100%; border-collapse:separate; border-spacing:0; font-size:11px; }
.t-table thead th { background:#EFEAE0; padding:7px 10px; text-align:left; font-weight:600; color:var(--primary-dark); font-size:9px; text-transform:uppercase; letter-spacing:.04em; border-bottom:1px solid var(--border-soft); }
.t-table tbody td { padding:8px 10px; border-bottom:1px solid #ECE7DA; color:var(--text); }
.t-table tbody tr:last-child td { border-bottom:none; }
.t-table tbody tr:hover { background:#F2EFE6; }
.t-table tbody tr.row-en-curso { background: rgba(94,124,61,.07); }
.t-table tbody tr.row-en-curso td:first-child, .t-table tbody tr.row-en-curso td:nth-child(2){ color: var(--primary); font-weight:700; }

/* === modal === */
.modal-backdrop { position:fixed; inset:0; background: rgba(15,20,8,.55); backdrop-filter: blur(2px); z-index:50; opacity:0; pointer-events:none; transition:opacity .2s; }
.modal-backdrop.open { opacity:1; pointer-events:auto; }
.modal { position:fixed; top:50%; left:50%; transform:translate(-50%,-48%) scale(.97); z-index:60; width:560px; max-width:92%; max-height:92vh; background:#fff; border-radius:8px; box-shadow:0 20px 60px rgba(0,0,0,.35); border:1px solid var(--border-soft); overflow:hidden; opacity:0; visibility:hidden; pointer-events:none; transition: opacity .2s, transform .2s, visibility .2s; display:flex; flex-direction:column; }
.modal.open { opacity:1; visibility:visible; pointer-events:auto; transform:translate(-50%,-50%) scale(1); }
.modal-header { padding:14px 18px; border-bottom:1px solid #ECE7DA; display:flex; align-items:flex-start; justify-content:space-between; gap:12px; background:#F7F5F0; }
.modal-header h3 { font-size:14px; font-weight:700; color:var(--text); margin:0; }
.modal-header p { font-size:10px; color:var(--muted); margin:2px 0 0; }
.modal-close { width:26px; height:26px; border-radius:6px; background:transparent; border:1px solid var(--border-soft); color:var(--primary-dark); cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.modal-close:hover { background:#EFEAE0; }
.modal-body { padding:16px 18px; overflow-y:auto; flex:1; }
.modal-footer { padding:12px 18px; border-top:1px solid #ECE7DA; background:#FBFAF6; display:flex; justify-content:flex-end; gap:8px; }
.modal--sm { width:380px; }
.modal--md { width:480px; }
.modal--lg { width:600px; }

/* === toast === */
.lift-toast { position:fixed; bottom:80px; left:50%; transform: translateX(-50%) translateY(20px); padding:10px 20px; color:#fff; font-size:12px; font-weight:600; border-radius:12px; box-shadow:0 8px 24px rgba(0,0,0,.4); border:1px solid rgba(139,160,92,.5); opacity:0; transition: opacity .25s, transform .25s; z-index:99999; pointer-events:none; min-width:160px; max-width:90%; text-align:center; }
.lift-toast--in { opacity:1; transform: translateX(-50%) translateY(0); }
.lift-toast--success { background:#3D4A2A; }
.lift-toast--info { background:#B8A775; color:#3D4A2A; }
.lift-toast--warning { background:#D9A65C; color:#3D4A2A; }
.lift-toast--danger { background:#C94444; }

/* === empty state === */
.empty-state { padding:30px 20px; text-align:center; background: var(--cream-light); border:1px dashed var(--border-soft); border-radius:8px; }
.empty-state .material-symbols-outlined { font-size:36px; color:var(--muted); margin-bottom:8px; }
.empty-state .es-title { font-size:13px; font-weight:700; color:var(--text); margin:0; }
.empty-state .es-sub { font-size:11px; color:var(--muted); margin:4px 0 12px; }

/* === chart bar === */
.chart-bar-wrap { display:flex; gap:6px; align-items:flex-end; height:120px; }
.chart-bar-col { flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; height:100%; justify-content:flex-end; }
.chart-bar { background: linear-gradient(180deg, var(--primary-soft) 0%, var(--primary) 100%); border-radius:4px 4px 0 0; transition:all .3s; min-height:2px; width:100%; }
.chart-bar.dark { background: linear-gradient(180deg, var(--primary) 0%, var(--primary-dark) 100%); }
.chart-bar-label { font-size:8px; color:var(--muted); }
.chart-bar-value { font-size:8px; font-weight:700; }

/* === progress bar === */
.progress { width:100%; height:6px; background:var(--accent-light); border-radius:9999px; overflow:hidden; }
.progress-bar { height:100%; background: var(--primary); border-radius:9999px; transition: width .3s; }

/* === loading === */
body.loading::before { content:''; position:fixed; top:0; left:0; right:0; height:3px; background:var(--primary); animation: loadingBar 1.2s linear infinite; z-index:99998; }
@keyframes loadingBar { 0%{transform:translateX(-100%)} 100%{transform:translateX(100%)} }

/* === pulse === */
@keyframes pulse { 0%,100%{ opacity:1 } 50%{ opacity:.4 } }

/* === visit-card (cliente) === */
.visit-card { background:#fff; border:1.5px solid var(--border); border-radius:12px; padding:11px; cursor:pointer; transition:all .2s; }
.visit-card:hover { border-color:var(--primary); box-shadow:0 4px 12px rgba(94,124,61,.12); }
.visit-card.urgent { border-color:var(--primary); background: linear-gradient(135deg,#F0F5E4 0%,#fff 100%); }
.vc-head { display:flex; gap:8px; align-items:flex-start; }
.vc-icon { width:28px; height:28px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.vc-icon--pilates { background:var(--primary); color:#fff; }
.vc-icon--cap { background:var(--accent-dark); color:#fff; }
.vc-icon--dren { background:var(--primary-soft); color:#fff; }
.vc-icon--mat { background:var(--primary-deep); color:#fff; }
.vc-info { flex:1; min-width:0; }
.vc-title { font-size:12px; font-weight:700; color:var(--text); margin:0; }
.vc-meta { font-size:9px; color:var(--muted); margin:0; }
.vc-extra { font-size:10px; color:var(--muted); margin-top:8px; padding-top:8px; border-top:1px solid var(--border); padding-left:36px; }

/* === day card carrusel === */
.day-carousel { display:flex; gap:6px; overflow-x:auto; padding-bottom:6px; -webkit-overflow-scrolling:touch; }
.day-card { flex-shrink:0; width:56px; padding:8px 0; border-radius:8px; border:1px solid var(--border); background:#fff; text-align:center; cursor:pointer; transition:all .2s; }
.day-card.active { border:2px solid var(--primary); background:var(--primary); color:#fff; }
.day-card.closed { cursor:not-allowed; opacity:.7; background: var(--cream-light); }
.dc-dow { font-size:8px; text-transform:uppercase; font-weight:600; color:var(--muted); margin:0; }
.day-card.active .dc-dow { color:#fff; }
.dc-num { font-size:16px; font-weight:700; margin:0; }
.dc-mes { font-size:8px; color:var(--muted); margin:0; }
.day-card.closed .dc-num { color:#B8AE93; }
.dc-closed { font-size:7px; color:var(--danger); font-weight:700; margin:0; }
