/* ============================================================
   FOCUSIA — Dashboard Clinico
   Paleta: negro + blanco (principal), morado IA (secundario)
   ============================================================ */

:root{
  --bg:        #f4f3f7;
  --surface:   #ffffff;
  --surface-2: #ecebf2;
  --ink:       #16141c;
  --ink-soft:  #6b6878;
  --line:      #e4e2ec;
  --black:     #0b0b10;
  --black-2:   #15141c;
  --purple:    #7c4dff;
  --purple-2:  #6a3df0;
  --purple-soft:#efe9ff;
  --danger:    #c0392b;
  --ok:        #2e9e63;
  --radius:    14px;
  --shadow:    0 10px 30px rgba(20,18,28,.07);
}

*{ box-sizing:border-box; margin:0; padding:0; }
html,body,#root{ height:100%; }
body{
  font-family:'Hanken Grotesk',system-ui,sans-serif;
  background:var(--bg); color:var(--ink);
  font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.serif{ font-family:'Fraunces',Georgia,serif; font-weight:600; letter-spacing:-.01em; }

/* ---------- LOGIN ---------- */
.login-wrap{
  min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px;
  background:
    radial-gradient(80% 60% at 50% 12%, rgba(124,77,255,.30) 0%, rgba(124,77,255,0) 60%),
    linear-gradient(180deg,#0d0c12,#070709);
}
.login-card{
  background:var(--black-2); width:100%; max-width:400px; border:1px solid #221f2c;
  border-radius:20px; padding:40px 36px; box-shadow:0 30px 70px rgba(0,0,0,.5); text-align:center;
}
.login-logo{ width:170px; margin:0 auto 22px; display:block; }
.login-card .tag{ color:#8e8a9c; font-size:11px; margin-bottom:26px; letter-spacing:.18em; text-transform:uppercase; }
.login-card label{ text-align:left; color:#a7a3b6; }
.login-card input{ background:#201d2a; border:1px solid #322e3f; color:#fff; }
.login-card input:focus{ border-color:var(--purple); box-shadow:0 0 0 3px rgba(124,77,255,.25); }

/* ---------- LAYOUT ---------- */
.app{ display:grid; grid-template-columns:248px 1fr; min-height:100vh; }
.sidebar{
  background:linear-gradient(180deg,#0d0c12,#060608); color:#cfccda;
  padding:26px 18px; display:flex; flex-direction:column;
}
.side-logo{ width:150px; display:block; margin:4px auto 4px; }
.side-sub{ font-size:10.5px; letter-spacing:.22em; text-transform:uppercase; color:#7a7689; text-align:center; padding-bottom:26px; }
.nav-item{
  display:flex; align-items:center; gap:11px; padding:11px 14px; border-radius:10px;
  color:#b6b2c4; cursor:pointer; font-weight:500; font-size:14.5px; transition:.15s; margin-bottom:2px;
}
.nav-item:hover{ background:rgba(255,255,255,.06); color:#fff; }
.nav-item.active{ background:var(--purple); color:#fff; font-weight:600; box-shadow:0 6px 18px rgba(124,77,255,.35); }
.nav-item .ic{ width:18px; text-align:center; opacity:.9; }
.nav-spacer{ flex:1; }
.nav-user{ border-top:1px solid rgba(255,255,255,.1); padding-top:16px; font-size:13px; color:#9a96a9; }
.nav-user b{ color:#fff; display:block; font-weight:600; }
.logout{ margin-top:10px; background:none; border:1px solid rgba(255,255,255,.18); color:#c3bfd1;
  padding:7px 12px; border-radius:8px; cursor:pointer; font-size:12.5px; width:100%; }
.logout:hover{ background:rgba(255,255,255,.07); }

.main{ padding:34px 40px; overflow:auto; }
.page-head{ display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:26px; gap:16px; flex-wrap:wrap; }
.page-head h1{ font-size:28px; color:var(--ink); }
.page-head p{ color:var(--ink-soft); font-size:13.5px; }

/* ---------- CARDS / STATS ---------- */
.stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:16px; margin-bottom:30px; }
.stat{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:20px 22px; box-shadow:var(--shadow); }
.stat .label{ font-size:12px; text-transform:uppercase; letter-spacing:.1em; color:var(--ink-soft); }
.stat .value{ font-family:'Fraunces',serif; font-size:30px; color:var(--ink); margin-top:6px; }
.stat.gold{ background:linear-gradient(140deg,#2a1d4d,#1b1530); border-color:#3a2d63; }
.stat.gold .label{ color:#c9bdf0; } .stat.gold .value{ color:#fff; }

.card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); padding:24px; margin-bottom:20px; }

/* ---------- TABLES ---------- */
table{ width:100%; border-collapse:collapse; }
th{ text-align:left; font-size:11.5px; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-soft); padding:10px 12px; border-bottom:2px solid var(--line); }
td{ padding:13px 12px; border-bottom:1px solid var(--line); font-size:14px; }
tr:hover td{ background:rgba(124,77,255,.04); }
.row-click{ cursor:pointer; }

/* ---------- FORMS ---------- */
label{ display:block; font-size:12.5px; font-weight:600; color:var(--ink-soft); margin-bottom:5px; }
input,select,textarea{ width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:var(--surface); font:inherit; color:var(--ink); margin-bottom:14px; }
input:focus,select:focus,textarea:focus{ outline:none; border-color:var(--purple); box-shadow:0 0 0 3px rgba(124,77,255,.14); }
textarea{ resize:vertical; min-height:70px; }
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:0 16px; }
.grid-3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:0 16px; }
.char-count{ font-size:11px; color:var(--ink-soft); margin-top:-10px; margin-bottom:12px; text-align:right; }

/* ---------- BUTTONS ---------- */
.btn{ background:var(--ink); color:#fff; border:none; padding:11px 20px; border-radius:9px; font:inherit; font-weight:600; cursor:pointer; transition:.15s; }
.btn:hover{ background:#2c2838; }
.btn.gold{ background:var(--purple); color:#fff; }
.btn.gold:hover{ background:var(--purple-2); }
.btn.ghost{ background:transparent; color:var(--ink); border:1px solid var(--line); }
.btn.ghost:hover{ background:var(--surface-2); }
.btn.sm{ padding:7px 14px; font-size:13px; }
.btn.danger{ background:var(--danger); }

/* ---------- BADGES / PILLS ---------- */
.pill{ display:inline-block; padding:3px 10px; border-radius:999px; font-size:11.5px; font-weight:600; }
.pill.cat{ background:var(--purple-soft); color:var(--purple-2); }
.pill.facial{ background:#e7eef0; color:#2c5a66; }
.pill.corporal{ background:var(--purple-soft); color:var(--purple-2); }
.pill.clinica{ background:#efe9ff; color:#6a3df0; }
.pill.green{ background:#e1efe6; color:var(--ok); }
.pill.red{ background:#f6e3e1; color:var(--danger); }

/* ---------- MODAL ---------- */
.modal-bg{ position:fixed; inset:0; background:rgba(12,10,18,.6); display:flex; align-items:flex-start; justify-content:center; padding:40px 20px; z-index:50; overflow:auto; }
.modal{ background:var(--surface); border-radius:18px; width:100%; max-width:680px; padding:30px 32px; box-shadow:0 30px 70px rgba(0,0,0,.3); }
.modal h2{ color:var(--ink); margin-bottom:18px; font-size:23px; }
.modal-actions{ display:flex; gap:10px; justify-content:flex-end; margin-top:8px; }
.close-x{ float:right; background:none; border:none; font-size:22px; cursor:pointer; color:var(--ink-soft); }

/* ---------- MISC ---------- */
.empty{ text-align:center; padding:50px 20px; color:var(--ink-soft); }
.empty .ic{ font-size:40px; opacity:.35; display:block; margin-bottom:10px; }
.toolbar{ display:flex; gap:12px; margin-bottom:18px; align-items:center; flex-wrap:wrap; }
.toolbar input{ margin-bottom:0; max-width:280px; }
.section-title{ font-family:'Fraunces',serif; color:var(--ink); font-size:18px; margin:20px 0 10px; }
.treatment-line{ display:grid; grid-template-columns:2fr 1fr 90px 36px; gap:10px; align-items:center; margin-bottom:8px; }
.treatment-line input,.treatment-line select{ margin-bottom:0; }
.x-btn{ background:#f6e3e1; color:var(--danger); border:none; border-radius:8px; cursor:pointer; padding:8px; font-weight:700; }
.muted{ color:var(--ink-soft); font-size:13px; }
.hint{ font-size:12px; color:var(--purple-2); margin-top:-8px; margin-bottom:12px; }
.soon{ background:var(--surface-2); border:1px dashed var(--purple); border-radius:var(--radius); padding:40px; text-align:center; }
.soon h3{ color:var(--ink); font-size:20px; margin-bottom:8px; }

@media(max-width:820px){
  .app{ grid-template-columns:1fr; }
  .sidebar{ flex-direction:row; flex-wrap:wrap; gap:4px; align-items:center; }
  .side-logo,.side-sub{ width:100%; }
  .nav-spacer,.nav-user{ display:none; }
  .grid-2,.grid-3{ grid-template-columns:1fr; }
  .main{ padding:22px; }
}
