/* ============================================================
   TecnoHosting — Design System v2.0
   100% CSS nativo, sem frameworks externos
   ============================================================ */

/* Google Fonts — única dependência externa permitida */
@import url('https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:ital,wght@0,300;0,400;0,500;1,400&display=swap');

/* ── Tokens ─────────────────────────────────────────────── */
:root {
  --bg:          #0a0e1a;
  --bg-s:        #111827;
  --bg-e:        #1a2235;
  --bg-c:        #1e2d42;

  --cyan:        #00d4ff;
  --green:       #00e5a0;
  --amber:       #f59e0b;
  --red:         #ff4d6d;
  --purple:      #818cf8;

  --t1:          #f0f4ff;
  --t2:          #8899bb;
  --t3:          #445577;

  --border:      rgba(0,212,255,.12);
  --border-h:    rgba(0,212,255,.35);

  --r-s:  6px;
  --r-m: 12px;
  --r-l: 20px;
  --r-xl:28px;

  --shadow-s: 0 2px 8px rgba(0,0,0,.4);
  --shadow-m: 0 8px 32px rgba(0,0,0,.5);
  --glow-c:   0 0 32px rgba(0,212,255,.15);
  --glow-g:   0 0 32px rgba(0,229,160,.15);

  --fd: 'Syne', sans-serif;
  --fb: 'DM Sans', sans-serif;

  --sw: 260px;   /* sidebar width */
  --th:  64px;   /* topbar height */
}

/* ── Reset ──────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--fb);background:var(--bg);color:var(--t1);min-height:100vh;line-height:1.6}
a{color:inherit;text-decoration:none}
button{cursor:pointer;border:none;background:none;font-family:inherit;line-height:1}
img{max-width:100%;display:block}
input,select,textarea{font-family:inherit}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bg-e);border-radius:3px}

/* ── Layout Shell ───────────────────────────────────────── */
.app-shell{display:flex;min-height:100vh}

/* ─ Sidebar ─ */
.sidebar{
  width:var(--sw);background:var(--bg-s);border-right:1px solid var(--border);
  display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;
  z-index:200;transition:transform .3s cubic-bezier(.4,0,.2,1)
}
.sidebar-logo{padding:22px 20px 18px;border-bottom:1px solid var(--border)}
.logo-mark{font-family:var(--fd);font-size:1.2rem;font-weight:800;color:var(--cyan);letter-spacing:-.02em}
.logo-sub{font-size:.65rem;color:var(--t3);margin-top:3px;letter-spacing:.1em;text-transform:uppercase}

.nav{flex:1;padding:14px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:1px}
.nav-section{font-size:.63rem;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);
  padding:14px 10px 4px;font-weight:600}
.nav-a{
  display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:var(--r-s);
  font-size:.855rem;font-weight:500;color:var(--t2);transition:all .15s;cursor:pointer;
  border:1px solid transparent
}
.nav-a:hover{background:var(--bg-e);color:var(--t1)}
.nav-a.active{background:rgba(0,212,255,.1);color:var(--cyan);border-color:rgba(0,212,255,.2)}
.nav-a svg{width:18px;height:18px;flex-shrink:0;opacity:.7}
.nav-a.active svg{opacity:1}
.nav-badge{
  margin-left:auto;background:var(--red);color:#fff;font-size:.65rem;
  font-weight:700;padding:1px 6px;border-radius:100px;min-width:18px;text-align:center
}

.sidebar-foot{padding:14px;border-top:1px solid var(--border)}
.user-chip{
  display:flex;align-items:center;gap:9px;padding:9px 11px;
  background:var(--bg-e);border-radius:var(--r-m);cursor:pointer;transition:background .15s
}
.user-chip:hover{background:var(--bg-c)}
.user-av{
  width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--cyan),var(--green));
  display:grid;place-items:center;font-family:var(--fd);font-size:.82rem;font-weight:700;
  color:#000;flex-shrink:0
}
.user-info{flex:1;overflow:hidden}
.user-n{font-size:.78rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-r{font-size:.65rem;color:var(--t3);text-transform:capitalize}

/* ─ Main area ─ */
.main{margin-left:var(--sw);flex:1;display:flex;flex-direction:column;min-height:100vh}
.topbar{
  height:var(--th);background:var(--bg-s);border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;padding:0 28px;
  position:sticky;top:0;z-index:100
}
.topbar-title{font-family:var(--fd);font-size:1rem;font-weight:700}
.topbar-right{display:flex;align-items:center;gap:12px}
.online-dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green)}

.content{flex:1;padding:28px;max-width:1340px;width:100%}

/* ── Page header ────────────────────────────────────────── */
.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:16px;flex-wrap:wrap}
.page-head-left{}
.page-title{font-family:var(--fd);font-size:1.45rem;font-weight:800;line-height:1.1}
.page-sub{color:var(--t2);font-size:.875rem;margin-top:4px}

/* ── Cards / Surfaces ───────────────────────────────────── */
.card{
  background:var(--bg-s);border:1px solid var(--border);border-radius:var(--r-l);
  transition:border-color .2s
}
.card:hover{border-color:rgba(0,212,255,.22)}
.card-pad{padding:22px}
.card-head{
  padding:16px 22px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:12px
}
.card-title{font-family:var(--fd);font-size:.95rem;font-weight:700}

/* ── Stat cards ─────────────────────────────────────────── */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-bottom:28px}
.stat-card{
  background:var(--bg-s);border:1px solid var(--border);border-radius:var(--r-l);
  padding:18px 20px;position:relative;overflow:hidden;transition:border-color .2s,transform .18s
}
.stat-card:hover{border-color:var(--border-h);transform:translateY(-2px)}
.stat-card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:var(--c,var(--cyan))
}
.stat-label{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--t3);font-weight:600;margin-bottom:7px}
.stat-val{font-family:var(--fd);font-size:1.9rem;font-weight:800;line-height:1}
.stat-delta{font-size:.75rem;color:var(--t2);margin-top:5px}
.stat-icon{position:absolute;bottom:14px;right:14px;width:32px;height:32px;opacity:.12}

/* ── Tables ─────────────────────────────────────────────── */
.table-wrap{background:var(--bg-s);border:1px solid var(--border);border-radius:var(--r-l);overflow:hidden}
.table-head{padding:16px 22px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);gap:10px;flex-wrap:wrap}
.table-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:.67rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--t3);font-weight:600;padding:11px 20px;border-bottom:1px solid var(--border)}
td{padding:12px 20px;font-size:.855rem;color:var(--t2);border-bottom:1px solid rgba(255,255,255,.035)}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(255,255,255,.018);color:var(--t1)}
.td-strong{color:var(--t1);font-weight:500}
.td-mono{font-family:'Courier New',monospace;font-size:.8rem}

/* ── Badges ─────────────────────────────────────────────── */
.badge{
  display:inline-flex;align-items:center;gap:4px;padding:2px 9px;
  border-radius:100px;font-size:.7rem;font-weight:600;letter-spacing:.03em;white-space:nowrap
}
.b-dot{width:5px;height:5px;border-radius:50%;background:currentColor}
.b-green  {background:rgba(0,229,160,.12);color:var(--green)}
.b-amber  {background:rgba(245,158,11,.12);color:var(--amber)}
.b-red    {background:rgba(255,77,109,.12);color:var(--red)}
.b-cyan   {background:rgba(0,212,255,.12);color:var(--cyan)}
.b-purple {background:rgba(129,140,248,.12);color:var(--purple)}
.b-gray   {background:rgba(136,153,187,.1);color:var(--t2)}

/* ── Buttons ─────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:9px 18px;border-radius:var(--r-s);font-size:.835rem;font-weight:600;
  font-family:var(--fb);transition:all .15s;cursor:pointer;letter-spacing:.02em;
  border:1px solid transparent;white-space:nowrap
}
.btn-primary{background:var(--cyan);color:#000}
.btn-primary:hover{background:#33ddff;box-shadow:var(--glow-c)}
.btn-success{background:var(--green);color:#000}
.btn-success:hover{background:#33ffbc;box-shadow:var(--glow-g)}
.btn-ghost{background:transparent;border-color:var(--border);color:var(--t2)}
.btn-ghost:hover{border-color:var(--border-h);color:var(--t1)}
.btn-danger{background:rgba(255,77,109,.1);border-color:rgba(255,77,109,.3);color:var(--red)}
.btn-danger:hover{background:rgba(255,77,109,.2)}
.btn-amber{background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.3);color:var(--amber)}
.btn-amber:hover{background:rgba(245,158,11,.2)}
.btn-sm{padding:6px 12px;font-size:.77rem}
.btn-lg{padding:12px 28px;font-size:.92rem}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn-block{display:flex;width:100%}

/* ── Forms ──────────────────────────────────────────────── */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-group.full{grid-column:1/-1}
.form-group.col3{grid-column:span 1}
label,.form-label{font-size:.77rem;font-weight:600;color:var(--t2);letter-spacing:.04em}
input[type=text],input[type=email],input[type=password],input[type=date],
input[type=time],input[type=number],input[type=url],input[type=tel],
select,textarea{
  background:var(--bg-e);border:1px solid var(--border);color:var(--t1);
  border-radius:var(--r-s);padding:9px 13px;outline:none;width:100%;
  font-family:var(--fb);font-size:.875rem;transition:border-color .15s
}
input:focus,select:focus,textarea:focus{border-color:var(--cyan)}
input::placeholder,textarea::placeholder{color:var(--t3)}
select option{background:var(--bg-e)}
textarea{resize:vertical;min-height:88px}
.form-hint{font-size:.72rem;color:var(--t3);margin-top:3px}
.form-box{background:var(--bg-s);border:1px solid var(--border);border-radius:var(--r-l);padding:24px}
.form-box-title{font-family:var(--fd);font-size:.95rem;font-weight:700;margin-bottom:18px;
  padding-bottom:12px;border-bottom:1px solid var(--border)}
.form-actions{display:flex;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}

/* ── Alerts / Flash ─────────────────────────────────────── */
.alert{
  padding:13px 16px;border-radius:var(--r-m);font-size:.855rem;
  display:flex;align-items:flex-start;gap:10px;margin-bottom:18px;line-height:1.5
}
.alert-success{background:rgba(0,229,160,.08);border:1px solid rgba(0,229,160,.25);color:var(--green)}
.alert-error  {background:rgba(255,77,109,.08);border:1px solid rgba(255,77,109,.25);color:var(--red)}
.alert-warn   {background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);color:var(--amber)}
.alert-info   {background:rgba(0,212,255,.07);border:1px solid rgba(0,212,255,.2);color:var(--cyan)}
.alert-icon   {font-size:1.1rem;flex-shrink:0;margin-top:1px}

/* ── Detail list ────────────────────────────────────────── */
.detail-list{display:flex;flex-direction:column;gap:0}
.detail-row{
  display:flex;align-items:flex-start;gap:16px;padding:11px 0;
  border-bottom:1px solid rgba(255,255,255,.04)
}
.detail-row:last-child{border-bottom:none}
.detail-label{font-size:.75rem;font-weight:600;color:var(--t3);letter-spacing:.06em;text-transform:uppercase;
  min-width:140px;flex-shrink:0;margin-top:2px}
.detail-val{font-size:.875rem;color:var(--t1);flex:1;word-break:break-word}

/* ── Progress bar ───────────────────────────────────────── */
.progress-wrap{background:var(--bg-e);border-radius:100px;height:7px;overflow:hidden;margin-top:4px}
.progress-bar{height:100%;border-radius:100px;background:var(--cyan);transition:width .4s}
.progress-bar.warn{background:var(--amber)}
.progress-bar.danger{background:var(--red)}

/* ── Session status flow ────────────────────────────────── */
.status-flow{display:flex;align-items:center;gap:0;margin:16px 0}
.sf-step{
  flex:1;text-align:center;font-size:.72rem;font-weight:600;padding:8px 4px;
  border-top:3px solid var(--bg-e);color:var(--t3);transition:all .2s
}
.sf-step.done{border-color:var(--green);color:var(--green)}
.sf-step.active{border-color:var(--cyan);color:var(--cyan)}
.sf-step.cancelled{border-color:var(--red);color:var(--red)}

/* ── WA button ──────────────────────────────────────────── */
.btn-wa{
  display:inline-flex;align-items:center;gap:7px;padding:9px 16px;
  background:rgba(37,211,102,.12);border:1px solid rgba(37,211,102,.3);color:#25d366;
  border-radius:var(--r-s);font-size:.835rem;font-weight:600;font-family:var(--fb);
  transition:all .15s;cursor:pointer;text-decoration:none
}
.btn-wa:hover{background:rgba(37,211,102,.22)}

/* ── Login screen ───────────────────────────────────────── */
.login-screen{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:
    radial-gradient(ellipse 60% 50% at 20% 50%,rgba(0,212,255,.07) 0%,transparent 70%),
    radial-gradient(ellipse 50% 40% at 80% 20%,rgba(0,229,160,.06) 0%,transparent 60%),
    var(--bg)
}
.login-card{
  width:100%;max-width:420px;background:var(--bg-s);border:1px solid var(--border);
  border-radius:var(--r-xl);padding:38px 34px;box-shadow:var(--shadow-m);margin:16px
}
.login-logo{font-family:var(--fd);font-size:1.5rem;font-weight:800;color:var(--cyan);margin-bottom:3px}
.login-sub{font-size:.84rem;color:var(--t2);margin-bottom:28px}
.login-form{display:flex;flex-direction:column;gap:14px}

/* ── Client panel ───────────────────────────────────────── */
.panel-hero{
  background:linear-gradient(135deg,var(--bg-e) 0%,rgba(0,212,255,.06) 100%);
  border:1px solid var(--border);border-radius:var(--r-xl);padding:24px 28px;
  display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px
}
.panel-hero-left{}
.panel-greeting{font-size:.82rem;color:var(--t2);margin-bottom:4px}
.panel-name{font-family:var(--fd);font-size:1.5rem;font-weight:800}
.panel-pkg{font-size:.8rem;color:var(--t2);margin-top:4px}
.hours-ring{text-align:center}
.hours-big{font-family:var(--fd);font-size:2.4rem;font-weight:800;color:var(--cyan);line-height:1}
.hours-label{font-size:.72rem;color:var(--t2);margin-top:4px}

/* ── Session cards (client view) ────────────────────────── */
.session-card{
  background:var(--bg-s);border:1px solid var(--border);border-radius:var(--r-l);
  padding:18px 20px;transition:border-color .2s
}
.session-card:hover{border-color:var(--border-h)}
.session-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
.session-subject{font-family:var(--fd);font-size:1rem;font-weight:700}
.session-meta{display:flex;flex-wrap:wrap;gap:14px;font-size:.8rem;color:var(--t2);margin-bottom:12px}
.session-meta span{display:flex;align-items:center;gap:4px}
.session-actions{display:flex;gap:8px;flex-wrap:wrap}

/* ── Booking form specifics ─────────────────────────────── */
.cancel-rules{
  background:rgba(245,158,11,.07);border:1px solid rgba(245,158,11,.2);
  border-radius:var(--r-m);padding:14px 16px;font-size:.83rem;color:var(--amber);margin-bottom:20px
}
.cancel-rules ul{margin:8px 0 0 18px;display:flex;flex-direction:column;gap:4px}

/* ── Animations ─────────────────────────────────────────── */
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
.fade-up{animation:fadeUp .32s ease both}
.fade-1{animation-delay:.04s}.fade-2{animation-delay:.1s}.fade-3{animation-delay:.18s}
.pulse{animation:pulse 2s ease infinite}

/* ── Dividers ───────────────────────────────────────────── */
.divider{border:none;border-top:1px solid var(--border);margin:20px 0}

/* ── Empty state ────────────────────────────────────────── */
.empty{text-align:center;padding:48px 24px;color:var(--t2)}
.empty-icon{font-size:2.5rem;margin-bottom:12px}
.empty-text{font-size:.9rem}

/* ── Responsive ─────────────────────────────────────────── */
@media (max-width:900px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0);box-shadow:var(--shadow-m)}
  .main{margin-left:0}
  .sidebar-overlay{display:block}
  .form-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:1fr 1fr}
  .content{padding:16px}
  .topbar{padding:0 16px}
}
@media (max-width:540px){
  .stat-grid{grid-template-columns:1fr}
  .login-card{padding:24px 18px}
  .panel-hero{flex-direction:column}
  .hours-ring{text-align:left}
  table{font-size:.8rem}
  th,td{padding:9px 12px}
}


/* ── Role colors ─────────────────────────────────────────── */
.role-admin    { --role-color: #818cf8; --role-bg: rgba(129,140,248,.12); }
.role-atendente{ --role-color: #00d4ff; --role-bg: rgba(0,212,255,.12); }
.role-cliente  { --role-color: #00e5a0; --role-bg: rgba(0,229,160,.12); }

.badge-admin    { background:rgba(129,140,248,.15);color:#818cf8;border:1px solid rgba(129,140,248,.3); }
.badge-atendente{ background:rgba(0,212,255,.12);color:#00d4ff;border:1px solid rgba(0,212,255,.25); }
.badge-cliente  { background:rgba(0,229,160,.1);color:#00e5a0;border:1px solid rgba(0,229,160,.25); }

/* Sidebar por role */
body.role-admin     .sidebar-logo { border-bottom-color: rgba(129,140,248,.3); }
body.role-admin     .logo-mark    { color: #818cf8; }
body.role-atendente .sidebar-logo { border-bottom-color: rgba(0,212,255,.3); }
body.role-atendente .logo-mark    { color: #00d4ff; }
body.role-cliente   .sidebar-logo { border-bottom-color: rgba(0,229,160,.3); }
body.role-cliente   .logo-mark    { color: #00e5a0; }

body.role-admin     .nav-item.active,
body.role-admin     .nav-a.active  { background:rgba(129,140,248,.1);color:#818cf8;border-color:rgba(129,140,248,.25); }
body.role-atendente .nav-a.active  { background:rgba(0,212,255,.1);color:#00d4ff;border-color:rgba(0,212,255,.25); }
body.role-cliente   .nav-a.active  { background:rgba(0,229,160,.08);color:#00e5a0;border-color:rgba(0,229,160,.2); }

/* ── Calendar weekly view ────────────────────────────────── */
.calendar-wrap {
  overflow-x: auto;
}
.calendar-grid {
  display: grid;
  grid-template-columns: 60px repeat(7, 1fr);
  min-width: 700px;
  border: 1px solid var(--border);
  border-radius: var(--r-l);
  overflow: hidden;
  background: var(--bg-s);
}
.cal-header {
  background: var(--bg-e);
  padding: 10px 6px;
  text-align: center;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .04em;
  border-bottom: 1px solid var(--border);
  border-right: 1px solid var(--border);
}
.cal-header.today { background: rgba(0,212,255,.12); color: var(--cyan); }
.cal-time {
  padding: 6px 8px;
  font-size: .68rem;
  color: var(--t3);
  text-align: right;
  border-right: 1px solid var(--border);
  border-bottom: 1px solid rgba(255,255,255,.04);
  background: var(--bg-e);
  white-space: nowrap;
}
.cal-cell {
  border-right: 1px solid var(--border);
  border-bottom: 1px solid rgba(255,255,255,.04);
  min-height: 40px;
  padding: 2px;
  position: relative;
}
.cal-cell.today-col { background: rgba(0,212,255,.03); }
.cal-event {
  background: rgba(0,212,255,.15);
  border: 1px solid rgba(0,212,255,.3);
  border-radius: 4px;
  padding: 3px 6px;
  font-size: .7rem;
  color: var(--cyan);
  cursor: pointer;
  transition: background .15s;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.cal-event:hover { background: rgba(0,212,255,.25); }
.cal-event.status-confirmed { background:rgba(0,229,160,.12);border-color:rgba(0,229,160,.3);color:var(--green); }
.cal-event.status-completed { background:rgba(136,153,187,.1);border-color:rgba(136,153,187,.2);color:var(--t2); }
.cal-event.status-cancelled_client,
.cal-event.status-cancelled_admin { background:rgba(255,77,109,.08);border-color:rgba(255,77,109,.2);color:var(--red);text-decoration:line-through; }
.cal-slot-avail { background:rgba(0,229,160,.04); }

/* ══════════════════════════════════════════════════════════════
   MELHORIAS v3 — Cores por Perfil + Topbar Info + Comunicação
   ══════════════════════════════════════════════════════════════ */

/* ── Topbar: info de painel, perfil e nome ───────────────────── */
.topbar-panel-info {
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(255,255,255,.035);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  padding: 5px 14px 5px 10px;
}
.topbar-panel-name {
  font-family: var(--fd);
  font-size: .72rem;
  font-weight: 700;
  color: var(--role-color, var(--cyan));
  letter-spacing: .04em;
  text-transform: uppercase;
}
.topbar-role-badge {
  font-size: .65rem;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 100px;
  letter-spacing: .05em;
  background: var(--role-bg, rgba(0,212,255,.12));
  color: var(--role-color, var(--cyan));
  border: 1px solid var(--role-color, rgba(0,212,255,.3));
}
.topbar-user-name {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: .78rem;
  color: var(--t1);
  font-weight: 500;
}

/* ── Cores completas por perfil ──────────────────────────────── */
/* ADMIN — roxo/indigo */
body.role-admin {
  --role-color: #818cf8;
  --role-bg:    rgba(129,140,248,.12);
  --accent:     #818cf8;
  --accent-glow:0 0 32px rgba(129,140,248,.18);
}
body.role-admin .sidebar {
  border-right-color: rgba(129,140,248,.2);
  background: linear-gradient(180deg, #111827 0%, #0f1325 100%);
}
body.role-admin .sidebar-logo   { border-bottom-color: rgba(129,140,248,.3); }
body.role-admin .logo-mark      { color: #818cf8; }
body.role-admin .topbar         { border-bottom-color: rgba(129,140,248,.18); background: linear-gradient(90deg,var(--bg-s) 0%,rgba(129,140,248,.04) 100%); }
body.role-admin .nav-a.active   { background:rgba(129,140,248,.12);color:#818cf8;border-color:rgba(129,140,248,.3); }
body.role-admin .nav-a.active svg { opacity: 1; }
body.role-admin .online-dot     { background: #818cf8; box-shadow: 0 0 8px #818cf8; }
body.role-admin .sidebar-logo::after {
  content: '';
  display: block;
  height: 2px;
  background: linear-gradient(90deg,#818cf8,transparent);
  margin-top: 10px;
  border-radius: 1px;
}

/* ATENDENTE — ciano */
body.role-atendente {
  --role-color: #00d4ff;
  --role-bg:    rgba(0,212,255,.12);
  --accent:     #00d4ff;
  --accent-glow: var(--glow-c);
}
body.role-atendente .sidebar {
  border-right-color: rgba(0,212,255,.2);
  background: linear-gradient(180deg, #0d1a26 0%, #091620 100%);
}
body.role-atendente .sidebar-logo { border-bottom-color: rgba(0,212,255,.3); }
body.role-atendente .logo-mark    { color: #00d4ff; }
body.role-atendente .topbar       { border-bottom-color: rgba(0,212,255,.15); background: linear-gradient(90deg,var(--bg-s) 0%,rgba(0,212,255,.04) 100%); }
body.role-atendente .nav-a.active { background:rgba(0,212,255,.1);color:#00d4ff;border-color:rgba(0,212,255,.25); }
body.role-atendente .online-dot   { background: #00d4ff; box-shadow: 0 0 8px #00d4ff; }

/* CLIENTE — verde */
body.role-cliente {
  --role-color: #00e5a0;
  --role-bg:    rgba(0,229,160,.12);
  --accent:     #00e5a0;
  --accent-glow: var(--glow-g);
}
body.role-cliente .sidebar {
  border-right-color: rgba(0,229,160,.2);
  background: linear-gradient(180deg, #0a1a14 0%, #081612 100%);
}
body.role-cliente .sidebar-logo { border-bottom-color: rgba(0,229,160,.3); }
body.role-cliente .logo-mark    { color: #00e5a0; }
body.role-cliente .topbar       { border-bottom-color: rgba(0,229,160,.15); background: linear-gradient(90deg,var(--bg-s) 0%,rgba(0,229,160,.04) 100%); }
body.role-cliente .nav-a.active { background:rgba(0,229,160,.08);color:#00e5a0;border-color:rgba(0,229,160,.2); }
body.role-cliente .online-dot   { background: #00e5a0; box-shadow: 0 0 8px #00e5a0; }

/* ── Faixa colorida no topo da sidebar por perfil ────────────── */
body.role-admin    .sidebar::before,
body.role-atendente .sidebar::before,
body.role-cliente  .sidebar::before {
  content: '';
  display: block;
  height: 3px;
  width: 100%;
  position: absolute;
  top: 0; left: 0;
  background: linear-gradient(90deg, var(--role-color), transparent);
  z-index: 1;
}

/* ── Botões de comunicação WhatsApp/Email ────────────────────── */
.comm-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  padding: 12px 16px;
  background: rgba(255,255,255,.025);
  border: 1px solid var(--border);
  border-radius: var(--r-m);
  margin-bottom: 18px;
}
.comm-bar-label {
  font-size: .7rem;
  font-weight: 700;
  color: var(--t3);
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-right: 4px;
}
.btn-wa-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  background: rgba(37,211,102,.1);
  border: 1px solid rgba(37,211,102,.25);
  color: #25d366;
  border-radius: var(--r-s);
  font-size: .78rem;
  font-weight: 600;
  text-decoration: none;
  transition: all .15s;
  cursor: pointer;
  white-space: nowrap;
}
.btn-wa-inline:hover { background: rgba(37,211,102,.22); }
.btn-email-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  background: rgba(0,212,255,.08);
  border: 1px solid rgba(0,212,255,.2);
  color: var(--cyan);
  border-radius: var(--r-s);
  font-size: .78rem;
  font-weight: 600;
  text-decoration: none;
  transition: all .15s;
  cursor: pointer;
  white-space: nowrap;
}
.btn-email-inline:hover { background: rgba(0,212,255,.18); }
.btn-gcal-inline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  background: rgba(66,133,244,.1);
  border: 1px solid rgba(66,133,244,.25);
  color: #4285f4;
  border-radius: var(--r-s);
  font-size: .78rem;
  font-weight: 600;
  text-decoration: none;
  transition: all .15s;
  cursor: pointer;
  white-space: nowrap;
}
.btn-gcal-inline:hover { background: rgba(66,133,244,.2); }

/* ── Parcelas — tabela ordenada ──────────────────────────────── */
.parcelas-table tr.parcel-row td:first-child { font-weight: 700; color: var(--t1); }
.parcel-seq {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px; height: 26px;
  border-radius: 50%;
  background: var(--bg-e);
  border: 1px solid var(--border);
  font-size: .72rem;
  font-weight: 700;
  color: var(--t2);
  flex-shrink: 0;
}
/* Parcela paga */
.parcel-row.paid-row .parcel-seq { background: rgba(0,229,160,.15); border-color: rgba(0,229,160,.3); color: var(--green); }
/* Parcela vencida */
.parcel-row.overdue-row .parcel-seq { background: rgba(255,77,109,.15); border-color: rgba(255,77,109,.3); color: var(--red); }
/* Atendente não pode editar parcela */
.parcel-row .no-perm { opacity: .35; cursor: not-allowed; pointer-events: none; }

/* ── Calendário com ícones de status ─────────────────────────── */
.cal-event {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 3px 7px;
  border-radius: 5px;
  font-size: .72rem;
  font-weight: 500;
  cursor: pointer;
  transition: opacity .15s;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 2px;
}
.cal-event:hover { opacity: .8; }
.cal-event-icon { font-size: .85rem; flex-shrink: 0; }
.cal-event.ev-pending   { background: rgba(245,158,11,.18); color: #f59e0b; border-left: 2px solid #f59e0b; }
.cal-event.ev-confirmed { background: rgba(0,212,255,.15);  color: var(--cyan); border-left: 2px solid var(--cyan); }
.cal-event.ev-completed { background: rgba(0,229,160,.13);  color: var(--green); border-left: 2px solid var(--green); }
.cal-event.ev-cancelled { background: rgba(255,77,109,.13); color: var(--red); border-left: 2px solid var(--red); opacity:.7; }

/* ── Badge de perfil no user chip ────────────────────────────── */
.user-r { font-size: .65rem; color: var(--role-color, var(--t3)); text-transform: capitalize; font-weight: 600; }

/* ── Auditoria ───────────────────────────────────────────────── */
.audit-row-action { font-family: monospace; font-size: .75rem; color: var(--amber); }
