:root{
  --bg:#eef3fb; --panel:#ffffff; --ink:#0f172a; --muted:#64748b; --line:#dbe4f0;
  --brand:#2563eb; --brand2:#14b8a6; --danger:#dc2626; --ok:#16a34a; --warn:#f59e0b;
  --shadow:0 18px 45px rgba(15,23,42,.08); --radius:22px;
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:linear-gradient(135deg,#edf5ff 0%,#f8fafc 45%,#eefdf8 100%);color:var(--ink)}
a{color:inherit;text-decoration:none}.shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:24px;background:#0f172a;color:#e2e8f0;display:flex;flex-direction:column;gap:28px}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:46px;height:46px;border-radius:16px;background:linear-gradient(135deg,var(--brand),var(--brand2));display:grid;place-items:center;font-weight:900;font-size:24px}.brand span{display:block;color:#94a3b8;font-size:13px;margin-top:2px}.sidebar nav{display:grid;gap:8px}.sidebar nav a{padding:13px 14px;border-radius:14px;color:#cbd5e1}.sidebar nav a:hover{background:rgba(255,255,255,.08);color:white}.logout-form{margin-top:auto}.main{padding:30px;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.topbar h1{margin:0;font-size:32px;letter-spacing:-.04em}.topbar p{margin:6px 0 0;color:var(--muted)}.user-pill{background:rgba(255,255,255,.7);border:1px solid var(--line);padding:10px 14px;border-radius:999px}.card,.metric-card,.auth-card{background:rgba(255,255,255,.92);border:1px solid rgba(219,228,240,.85);border-radius:var(--radius);box-shadow:var(--shadow)}.card{padding:22px;margin-bottom:20px}.card-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.card-header h2{margin:0;font-size:20px}.metrics-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:20px}.metric-card{padding:22px}.metric-card span{display:block;color:var(--muted);font-size:13px}.metric-card strong{font-size:38px;line-height:1.1}.metric-card.highlight{background:linear-gradient(135deg,#2563eb,#14b8a6);color:#fff}.metric-card.highlight span{color:#dff9ff}.two-col{display:grid;grid-template-columns:1.15fr .85fr;gap:20px}.agenda-layout{align-items:start}.sticky-card{position:sticky;top:20px}.btn{border:0;background:#e9eff8;color:#0f172a;padding:10px 14px;border-radius:13px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{filter:brightness(.98)}.btn.primary{background:linear-gradient(135deg,var(--brand),#1d4ed8);color:white}.btn.danger{background:#fee2e2;color:#991b1b}.btn.ghost{background:rgba(255,255,255,.08);color:#e2e8f0}.btn.small{padding:7px 10px;border-radius:10px;font-size:12px}.btn.full,.full{width:100%}.alert{padding:14px 16px;border-radius:16px;margin-bottom:18px;font-weight:700}.alert.success{background:#dcfce7;color:#166534}.alert.error{background:#fee2e2;color:#991b1b}.muted{color:var(--muted)}.list{display:grid;gap:10px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px;border:1px solid var(--line);border-radius:16px}.list-row span{display:block;color:var(--muted);font-size:13px;margin-top:3px}.timeline{display:grid;gap:14px}.timeline-item{display:grid;grid-template-columns:92px 1fr;gap:12px;padding:12px;border-left:4px solid var(--brand);background:#f8fafc;border-radius:14px}.timeline-item time{font-weight:900}.timeline-item span{display:block;color:var(--muted);font-size:13px}.inline-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.stack-form{display:grid;gap:10px}.stack-form.compact{gap:8px}label{font-size:13px;color:#334155;font-weight:800}input,select,textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:13px;padding:11px 12px;font:inherit;color:var(--ink)}textarea{resize:vertical}.field-error{color:#dc2626;font-size:12px}.auth-card{display:grid;grid-template-columns:1fr 420px;overflow:hidden;min-height:520px}.auth-hero{padding:48px;background:radial-gradient(circle at top left,#dbeafe,#fff 42%,#ccfbf1);display:flex;flex-direction:column;justify-content:center}.auth-hero h2{font-size:42px;line-height:1.02;letter-spacing:-.05em;margin:16px 0}.auth-hero p{color:var(--muted);font-size:17px}.form-card{padding:42px;display:flex;flex-direction:column;justify-content:center;gap:10px}.badge{display:inline-flex;width:max-content;background:#e0f2fe;color:#075985;border:1px solid #bae6fd;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:900}.appointments{display:grid;gap:14px}.appointment{display:grid;grid-template-columns:110px 1fr;gap:16px;border:1px solid var(--line);border-radius:18px;padding:14px;background:#fff}.appointment.solicitada{border-left:5px solid var(--warn)}.appointment.confirmada{border-left:5px solid var(--brand)}.appointment.finalizada,.appointment.facturada{border-left:5px solid var(--ok)}.appointment.cancelada{opacity:.65;border-left:5px solid var(--danger)}.appointment-time{background:#f1f5f9;border-radius:15px;padding:12px;text-align:center}.appointment-time strong,.appointment-time span{display:block}.appointment-time span{color:var(--muted);font-size:12px}.appointment h3{margin:0}.appointment p{margin:6px 0}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.status,.invoice-pill{display:inline-flex;background:#f1f5f9;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:900}.invoice-pill{background:#dcfce7;color:#166534;margin-top:8px}.actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.public-hero{background:linear-gradient(135deg,#fff,#eff6ff 55%,#ecfdf5)}.public-hero h2{font-size:34px;letter-spacing:-.04em;margin:12px 0 8px}.slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-bottom:20px}.slot-card{background:white;border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:var(--shadow);display:grid;gap:8px}.slot-card span{color:var(--muted);font-size:13px}.selected-slot{padding:12px;border-radius:14px;background:#eff6ff;color:#1e40af;font-weight:800}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;border-bottom:1px solid var(--line);padding:12px}th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.notes-list{display:grid;gap:12px}.note-card{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff}.note-card span{display:block;color:var(--muted);font-size:12px}.note-card strong{display:block;margin:5px 0}hr{border:0;border-top:1px solid var(--line);margin:20px 0}
@media(max-width:980px){.shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.metrics-grid,.two-col,.auth-card{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.sticky-card{position:static}}
.three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.mini-row{padding:10px 0;border-bottom:1px solid var(--line)}.mini-row strong,.mini-row span{display:block}.mini-row span{color:var(--muted);font-size:12px}@media(max-width:1100px){.three-col{grid-template-columns:1fr}}
.public-body{background:linear-gradient(135deg,#edf5ff 0%,#f8fafc 45%,#ecfdf5 100%)}
.public-main{max-width:1180px;margin:0 auto;padding:28px}
.public-topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:22px}
.public-brand{display:flex;align-items:center;gap:12px}.public-brand small{display:block;color:var(--muted);font-weight:700}
@media(max-width:700px){.public-main{padding:18px}.public-topbar{align-items:flex-start;flex-direction:column}}
.tenant-card{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:13px 14px;display:grid;gap:3px}.tenant-card small{color:#94a3b8;font-weight:800}.tenant-card strong{color:#fff}.tenant-card span{color:#cbd5e1;font-size:12px}.user-pill{display:grid;gap:2px}.user-pill small{display:block;color:var(--muted);font-size:11px;font-weight:700}
