/* =========================
   CLINICA SUITE – UI (Light + Rosa) – PREMIUM (NO-CONFLICT)
   Objetivo: visual premium + performance + agenda estilo iClinic
========================= */

/* ---------- Tokens ---------- */
:root{
  --bg: #f6f7fb;
  --surface: #ffffff;
  --text: #0f172a;
  --muted: #64748b;
  --line: rgba(15, 23, 42, .10);

  --primary: #ff4fa0;
  --primary2: #ff77b7;
  --primary-ghost: rgba(255, 79, 160, .10);

  --radius-xl: 22px;
  --radius-lg: 18px;
  --radius-md: 14px;

  --shadow: 0 14px 28px rgba(16,24,40,.10);
  --shadow-soft: 0 10px 22px rgba(16,24,40,.08);

  --sidebar-w: 280px;

  /* status */
  --st-scheduled-tx: #9a3412;
  --st-confirmed-tx: #1e3a8a;
  --st-completed-tx: #14532d;
  --st-canceled-tx:  #7f1d1d;
  --st-noshow-tx:    #4c1d95;

  --st-block-bg: #f1f5f9;
  --st-block-bd: rgba(15,23,42,.16);
  --st-block-tx: rgba(15,23,42,.82);

  /* motion */
  --ease: cubic-bezier(.2,.8,.2,1);
  --dur-1: 140ms;
  --dur-2: 220ms;
}

/* ---------- Base ---------- */
*{font-family:Poppins, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;}
html, body{height:100%}
body{background:var(--bg); color:var(--text);}

/* ✅ IMPORTANT: scroll só dentro do sidebar e content */
body{ overflow: hidden; }

.bg-soft{background:var(--bg); color:var(--text);}
.text-muted{color:var(--muted) !important;}

/* ✅ Layout vira “2 painéis” independentes */
.layout{
  min-height:100vh;
}

/* ---------- Focus ring ---------- */
a:focus, button:focus, .btn:focus{outline:none;}
:focus-visible{
  outline: 3px solid rgba(255,79,160,.22);
  outline-offset: 3px;
  border-radius: 12px;
}

/* ---------- Premium hover (global / performance-safe) ---------- */
a, button, .btn, .btnx2, .nav-link{
  transition:
    transform var(--dur-1) var(--ease),
    box-shadow var(--dur-1) var(--ease),
    filter var(--dur-1) var(--ease),
    background var(--dur-1) var(--ease),
    border-color var(--dur-1) var(--ease),
    color var(--dur-1) var(--ease);
  will-change: transform;
}

/* “micro-lift” padrão */
a:hover, button:hover, .btn:hover, .btnx2:hover{
  transform: translateY(-1px);
}

/* ---------- Sidebar ---------- */
/* ✅ FIX DEFINITIVO: sidebar rolável quando o mouse está em cima */
.sidebar{
  width:var(--sidebar-w);
  background:var(--surface);
  border-right:1px solid var(--line);
  padding:18px 16px;

  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  height: auto;

  display:flex;
  flex-direction:column;

  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.brand{
  display:flex;
  gap:12px;
  align-items:center;
  padding:6px 6px 14px;
}
.brand-logo{margin-top:0; display:flex; align-items:center;}
.brand-text{padding-top:0;}
.brand-title{font-weight:800; line-height:1.1; letter-spacing:-.02em;}
.brand-sub{font-size:.80rem; color:var(--muted); margin-top:2px;}

.brand-badge.brand-badge--logo{
  width:74px; height:74px;
  border-radius:22px;
  padding:0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  display:flex; align-items:center; justify-content:center;
  overflow: visible;
}
.brand-logo{
  width:56px;
  height:56px;
  display:flex;
  align-items:center;
  justify-content:center;
  background: transparent;
  border-radius: 14px;
  overflow: visible;
}


.sidebar .nav{gap:6px;}
.sidebar .nav-link{
  color:rgba(15,23,42,.88);
  border-radius:14px;
  padding:10px 12px;
  display:flex;
  align-items:center;
  gap:10px;
  transition:
    transform var(--dur-1) var(--ease),
    background var(--dur-1) var(--ease),
    box-shadow var(--dur-1) var(--ease),
    border-color var(--dur-1) var(--ease);
}
.sidebar .nav-link i{font-size:1.05rem; opacity:.9;}
.sidebar .nav-link:hover{
  background:rgba(15,23,42,.04);
  box-shadow:0 10px 18px rgba(16,24,40,.06);
}

.sidebar .nav{gap:6px;}
.sidebar .nav-link{
  color:rgba(15,23,42,.88);
  border-radius:16px;
  padding:10px 12px;
  display:flex;
  align-items:center;
  gap:10px;
  text-decoration:none;
  transition:
    transform var(--dur-1) var(--ease),
    background var(--dur-1) var(--ease),
    box-shadow var(--dur-1) var(--ease),
    border-color var(--dur-1) var(--ease),
    color var(--dur-1) var(--ease);
}
.sidebar .nav-link i{font-size:1.05rem; opacity:.9;}
.sidebar .nav-link:hover{
  background:rgba(15,23,42,.04);
  box-shadow:0 10px 18px rgba(16,24,40,.06);
}
.sidebar .nav-link.active{
  background:var(--primary-ghost);
  border:1px solid rgba(255,79,160,.22);
  box-shadow:0 10px 18px rgba(255,79,160,.08);
}

/* Subitens (ex.: Serviços, Profissionais, Especialidades, Bloqueios) */
.sidebar .nav-link.nav-sub{
  padding-left:40px;
  font-size:.92rem;
  opacity:.92;
}
.sidebar .nav-link.nav-sub i{
  font-size:.98rem;
  opacity:.78;
}

/* Contadores (badge) */
.nav-count{
  margin-left:auto;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:rgba(15,23,42,.05);
  border:1px solid rgba(15,23,42,.10);
  color:rgba(15,23,42,.70);
  font-weight:800;
  font-size:.80rem;
}
.sidebar .nav-link.active .nav-count{
  background:rgba(255,79,160,.12);
  border-color:rgba(255,79,160,.22);
  color:rgba(255,79,160,.95);
}
.sidebar-footer{
  margin-top:auto;
  padding-top:14px;
  border-top:1px solid var(--line);
}
.sidebar-footer .btn{border-radius:999px;}

/* ---------- Content + Topbar ---------- */
/* ✅ content vira painel rolável (direita) */
.content{
  margin-left: var(--sidebar-w);
  height: 100vh;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}

.topbar{
  position:sticky;
  top:0;
  z-index:10;
  background:rgba(246,247,251,.86);
  backdrop-filter: blur(10px);
  border-bottom:1px solid rgba(15,23,42,.08);
  padding:12px 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
}

/* Mantém o topo em linha (evita empilhar logo/título/usuário/data) */
.topbar-left{
  display:flex;
  align-items:center;
  gap:12px;
  min-width:0;
  flex-wrap:wrap;
}

.topbar-title{min-width:160px; display:flex; flex-direction:column; gap:6px; line-height:1.05;}

/* Topbar brand (logo + nome da clínica) */
.topbar-brand{
  display:flex;
  align-items:center;
  gap:10px;
  padding:6px 10px;
  border-radius: 16px;
  background: rgba(255,255,255,.65);
  border: 1px solid rgba(15,23,42,.08);
  box-shadow: 0 10px 22px rgba(16,24,40,.06);
}

.topbar-brand, .topbar-brand:hover, .topbar-brand:focus{ text-decoration:none; color:inherit; }
.topbar-brand__name{ color: var(--text); font-weight:800; 
  line-height:1.05;
}
.topbar-brand__subtitle{ color: var(--muted); font-weight:600; }
.topbar-brand__logo{display:flex; align-items:flex-start; margin-top:2px;}
.topbar-brand__logo img{
  width:28px;
  height:28px;
  object-fit:contain;
  display:block;
}
.topbar-brand__name{
  font-weight: 900;
  letter-spacing: -.02em;
}
.topbar-brand__subtitle{ font-size: .92rem; color: var(--muted); margin-top: 1px; }

/* Busca global (topbar) */
.topbar-search{
  position:relative;
  align-items:center;
  gap:8px;
  padding:8px 12px;
  border-radius: 999px;
  background: var(--surface);
  border:1px solid var(--line);
  box-shadow:0 10px 20px rgba(16,24,40,.06);
}
.topbar-search i{ color: rgba(15,23,42,.55); }
.topbar-search input{
  border:0;
  outline:0;
  background:transparent;
  width: 260px;
  max-width: 32vw;
  font-weight:600;
  color: var(--text);
}
.topbar-search input::placeholder{ color: rgba(15,23,42,.45); font-weight:500; }

.topbar-page .fw-semibold{ letter-spacing: -.02em; }

.avatar-mini{
  width:28px;height:28px;
  border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  font-weight:900;font-size:.85rem;
  color:#ff4fa0;
  background: rgba(255,79,160,.12);
  border: 1px solid rgba(255,79,160,.25);
}
.topbar-meta{
  display:flex; align-items:center; gap:8px;
  padding:8px 12px;
  border-radius:999px;
  background:var(--surface);
  border:1px solid var(--line);
  box-shadow:0 10px 20px rgba(16,24,40,.06);
  color:var(--muted);
  font-size:.92rem;
}
.topbar-meta i{color:rgba(15,23,42,.55);}

.page{padding:22px;}
.page-title{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:14px;
}
.page-title h1{margin:0; letter-spacing:-.02em;}

/* ---------- Cards ---------- */
.card{
  border:1px solid var(--line);
  border-radius:var(--radius-xl);
  box-shadow:var(--shadow-soft);
}

/* KPI */
.kpi{padding:16px 16px;}
.kpi-top{display:flex; align-items:center; justify-content:space-between; gap:10px;}
.kpi-label{font-size:.86rem; color:var(--muted);}
.kpi-value{font-size:1.45rem; font-weight:900; letter-spacing:-.02em;}
.kpi-icon{
  width:38px; height:38px;
  border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  background:var(--primary-ghost);
  border:1px solid rgba(255,79,160,.22);
}
.kpi-icon i{color:rgba(255,79,160,.95); font-size:1.1rem;}

/* KPI clicável */
.kpi-click{cursor:pointer;}
.kpi-click:hover{transform:translateY(-1px); box-shadow:0 18px 34px rgba(16,24,40,.10);}


/* ---------- Buttons (premium) ---------- */
.btn{border-radius:14px; font-weight:800;}
.btn-feminine{
  background:linear-gradient(135deg,var(--primary),var(--primary2));
  border:none;
  color:#fff;
  box-shadow:0 12px 22px rgba(255,79,160,.18);
}
.btn-feminine:hover{
  color:#fff;
  box-shadow:0 18px 34px rgba(255,79,160,.22);
  filter:saturate(1.05);
}

.btn-outline-secondary{border-radius:14px;}
.btn-outline-secondary:hover{
  box-shadow:0 14px 24px rgba(16,24,40,.10);
}

.btnx2{
  display:inline-flex; align-items:center; gap:8px;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid rgba(15,23,42,.12);
  background:#fff;
  text-decoration:none;
  color:#0f172a;
  font-weight:900;
  font-size:.9rem;
}
.btnx2:hover{
  box-shadow:0 14px 24px rgba(16,24,40,.10);
}

/* clique “responsivo” (sem bounce feio) */
.btn:active, .btnx2:active, .nav-link:active{
  transform: translateY(0px) scale(.99);
}

/* ---------- Forms ---------- */
.form-control, .form-select{
  border-radius:14px;
  border:1px solid rgba(15,23,42,.14);
  padding:10px 12px;
}
.form-control:focus, .form-select:focus{
  border-color: rgba(255,79,160,.55);
  box-shadow: 0 0 0 .25rem rgba(255,79,160,.12);
}

/* ---------- Auth / Empty ---------- */

/* ---------- Auth (Login) – Cartão Postal Premium ---------- */
.auth-body{ overflow:auto; }

.auth-shell{
  min-height:100vh;
  padding:24px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    radial-gradient(900px 420px at 15% 10%, rgba(255,79,160,.18), transparent 60%),
    radial-gradient(900px 420px at 85% 20%, rgba(255,119,183,.16), transparent 58%),
    radial-gradient(900px 420px at 80% 90%, rgba(15,23,42,.08), transparent 55%),
    var(--bg);
}

.auth-grid{
  width:min(1080px, 100%);
  border-radius:28px;
  overflow:hidden;
  box-shadow:0 24px 70px rgba(16,24,40,.14);
  border:1px solid rgba(15,23,42,.08);
  background:var(--surface);
  display:grid;
  grid-template-columns: 1.15fr .85fr;
}

@media (max-width: 992px){
  .auth-grid{ grid-template-columns: 1fr; }
  .auth-side{ display:none; }
}

.auth-side{
  position:relative;
  background:
    radial-gradient(720px 340px at 10% 10%, rgba(255,79,160,.28), transparent 62%),
    radial-gradient(620px 340px at 85% 25%, rgba(255,119,183,.24), transparent 60%),
    linear-gradient(135deg, rgba(15,23,42,.96), rgba(15,23,42,.90));
  color:#fff;
}

.auth-side__inner{
  padding:34px 34px 28px;
  min-height:520px;
  display:flex;
  flex-direction:column;
}

.auth-logo{
  width:78px; height:78px;
  border-radius:20px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.14);
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 12px 30px rgba(0,0,0,.22);
}
.auth-logo img{
  width:56px; height:56px;
  object-fit:contain;
  filter: drop-shadow(0 10px 18px rgba(0,0,0,.22));
}

.auth-headline{ margin-top:22px; max-width:520px; }
.auth-kicker{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-weight:700;
  letter-spacing:.02em;
  color:rgba(255,255,255,.85);
  text-transform:uppercase;
  font-size:.78rem;
}
.auth-headline h1{
  margin:10px 0 10px;
  font-size:2rem;
  line-height:1.12;
  letter-spacing:-.03em;
  font-weight:800;
}
.auth-headline p{
  margin:0;
  color:rgba(255,255,255,.82);
  line-height:1.55;
}

.auth-bullets{
  list-style:none;
  padding:0;
  margin:22px 0 0;
  display:grid;
  gap:10px;
}
.auth-bullets li{
  display:flex;
  align-items:center;
  gap:10px;
  color:rgba(255,255,255,.88);
  font-weight:600;
  font-size:.95rem;
}
.auth-bullets i{
  width:34px; height:34px;
  border-radius:12px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.14);
}

.auth-side__footer{
  margin-top:auto;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,.12);
  color:rgba(255,255,255,.70);
}

/* Main card */
.auth-main{
  padding:30px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    radial-gradient(520px 260px at 15% 10%, rgba(255,79,160,.10), transparent 55%),
    radial-gradient(520px 260px at 90% 20%, rgba(255,119,183,.10), transparent 55%),
    var(--surface);
}

.auth-card--premium{
  width:100%;
  max-width:420px;
  border-radius:22px;
  border:1px solid rgba(15,23,42,.10);
  box-shadow:0 18px 50px rgba(16,24,40,.10);
  padding:22px;
}

.auth-card__top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:16px;
}

.auth-card__title{
  font-weight:900;
  font-size:1.25rem;
  letter-spacing:-.02em;
}

.auth-card__subtitle{
  color:var(--muted);
  font-size:.92rem;
}

.auth-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 12px;
  border-radius:999px;
  background:rgba(255,79,160,.10);
  border:1px solid rgba(255,79,160,.18);
  color:rgba(15,23,42,.88);
  font-weight:800;
  font-size:.82rem;
}

.auth-form{ display:grid; gap:12px; }
.auth-field .form-label{
  font-weight:700;
  font-size:.86rem;
  margin-bottom:6px;
  color:rgba(15,23,42,.80);
}

.auth-alert{
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:10px 12px;
  border-radius:14px;
  border:1px solid rgba(220,38,38,.20);
  background:rgba(220,38,38,.06);
  color:#7f1d1d;
  font-weight:700;
  font-size:.9rem;
}

.auth-submit{
  padding:12px 14px;
  border-radius:14px;
  font-weight:900;
  letter-spacing:-.01em;
}

.auth-help{
  margin-top:6px;
  padding-top:12px;
  border-top:1px dashed rgba(15,23,42,.14);
}

.auth-wrapper{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  background:
    radial-gradient(800px 300px at 10% 10%, rgba(255,79,160,.12), transparent 60%),
    radial-gradient(800px 300px at 90% 20%, rgba(255,119,183,.14), transparent 55%),
    var(--bg);
  padding:24px;
}
.auth-card{
  width:420px; max-width:100%;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:24px;
  padding:22px;
  box-shadow:0 16px 40px rgba(16,24,40,.12);
}
.auth-brand{display:flex; gap:12px; align-items:center;}
.empty-state{text-align:center; padding:28px 12px;}
.empty-emoji{font-size:34px; margin-bottom:8px;}

/* ---------- Status pills ---------- */
.badge-status{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:7px 12px;
  border-radius:999px;
  border:1px solid rgba(15,23,42,.10);
  font-weight:900;
  font-size:.86rem;
  letter-spacing:-.01em;
  line-height:1;
  background:#fff;
}
.badge-status .dot{width:10px;height:10px;border-radius:999px;flex:0 0 10px;}

.badge-status.scheduled{ background:#fff7ed; border-color:#fdba74; color:var(--st-scheduled-tx); }
.badge-status.scheduled .dot{ background:#f59e0b; }

.badge-status.confirmed{ background:#eff6ff; border-color:#93c5fd; color:var(--st-confirmed-tx); }
.badge-status.confirmed .dot{ background:#3b82f6; }

.badge-status.completed{ background:#ecfdf5; border-color:#86efac; color:var(--st-completed-tx); }
.badge-status.completed .dot{ background:#22c55e; }

.badge-status.canceled{ background:#fef2f2; border-color:#fca5a5; color:var(--st-canceled-tx); }
.badge-status.canceled .dot{ background:#ef4444; }

.badge-status.no_show{ background:#f5f3ff; border-color:#c4b5fd; color:var(--st-noshow-tx); }
.badge-status.no_show .dot{ background:#7c3aed; }

/* ---------- Agenda focus ---------- */
body.agenda-focus .sidebar{display:none !important;}
body.agenda-focus .content{margin-left:0 !important; height:100vh; overflow:auto;}
body.agenda-focus .layout{display:block;}
body.agenda-focus .page{max-width: 1500px; margin: 0 auto;}

/* ---------- Agenda layout ---------- */
.agenda-wrap{
  display:grid;
  grid-template-columns: 360px 1fr;
  gap:18px;
  align-items:start;
}
@media (max-width:1100px){
  .agenda-wrap{grid-template-columns:1fr;}
}

.card-soft{
  background:var(--surface);
  border-radius:20px;
  border:1px solid rgba(15,23,42,.06);
  box-shadow:0 14px 30px rgba(16,24,40,.08);
}
.card-soft .hd{padding:16px 16px 0}
.card-soft .bd{padding:16px}

.pill{
  display:inline-flex; align-items:center; gap:8px;
  border-radius:999px;
  padding:7px 12px;
  border:1px solid rgba(15,23,42,.12);
  background:#f8fafc;
  font-weight:900;
  font-size:.92rem;
}
.mini{font-size:.88rem;color:#64748b;}
.list{display:flex;flex-direction:column;gap:12px;}

.appt{
  padding:14px;
  border-radius:16px;
  background:#f8fafc;
  border:1px solid rgba(15,23,42,.08);
  transition: transform var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease);
}
.appt:hover{
  transform: translateY(-2px);
  box-shadow:0 16px 28px rgba(16,24,40,.10);
}
.appt strong{
  display:block;
  font-size:1rem;
  font-weight:900;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width: 240px;
}
.appt .row{display:flex;justify-content:space-between;gap:10px;align-items:center;}

/* =========================
   FULLCALENDAR – PREMIUM iCLINIC SKIN (single source of truth)
========================= */

/* aplique .fc-premium no wrapper do #calendar */
.fc-premium .fc{border:0;}
.fc-premium .fc-toolbar-title{font-size:1.05rem;font-weight:900;}

.fc-premium .fc-button{
  border-radius:14px;
  border:1px solid rgba(15,23,42,.12);
  background:#fff;
  color:#0f172a;
  font-weight:900;
  padding:8px 12px;
}
.fc-premium .fc-button:hover{
  box-shadow:0 14px 22px rgba(16,24,40,.10);
}
.fc-premium .fc-button:focus{ box-shadow:none; }
.fc-premium .fc-button-primary:not(:disabled).fc-button-active{
  background:#0f172a;border-color:#0f172a;color:#fff;
}

/* grid limpo + espaçado */
.fc-premium .fc-timegrid-slot{ height: 44px; }
.fc-premium .fc-timegrid-axis-cushion,
.fc-premium .fc-timegrid-slot-label-cushion{
  color:rgba(15,23,42,.70);
  font-weight:800;
}

.fc-premium .fc-scrollgrid,
.fc-premium .fc-scrollgrid td,
.fc-premium .fc-scrollgrid th{
  border-color: rgba(15,23,42,.10) !important;
}

/* cabeçalho (mais “iClinic”) */
.fc-premium .fc-col-header-cell-cushion{
  padding:12px 0;
  font-weight:900;
  text-decoration:none;
  color:#0f172a;
}

/* EVENTO = CARD iClinic */
.fc-premium .fc-timegrid-event,
.fc-premium .fc-daygrid-event{
  border-radius: 14px !important;
  overflow: hidden;
  border-width: 1px !important;
  box-shadow: none;
  transform: translateZ(0);
  transition:
    transform var(--dur-2) var(--ease),
    box-shadow var(--dur-2) var(--ease),
    filter var(--dur-2) var(--ease);
  position: relative;
}

.fc-premium .fc-timegrid-event:hover,
.fc-premium .fc-daygrid-event:hover{
  transform: translateY(-2px) scale(1.01);
  box-shadow: 0 18px 34px rgba(16,24,40,.18);
  filter: saturate(1.08);
}

/* padding interno */
.fc-premium .fc-event-main{ padding: 10px 10px !important; }

/* wrapper interno do conteúdo do evento (você usa no eventContent) */
.fcx{
  line-height: 1.08;
  position: relative;
  padding-left: 6px;   /* respiro da borda esquerda */
  padding-right: 30px; /* espaço do ícone */
}

/* HORA sempre 1 linha */
.fcx .t{
  font-size: .78rem;
  font-weight: 900;
  letter-spacing: -.01em;
  opacity: .95;
  margin-bottom: 6px;
  white-space: nowrap;
}

/* Nome do paciente (forte, 1 linha) */
.fcx .n{
  font-size: 1.02rem;
  font-weight: 900;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 4px;
}

/* Serviço (menor, 1 linha) */
.fcx .d{
  font-size: .82rem;
  font-weight: 700;
  opacity: .92;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* compactação quando o bloco é baixo */
.fc-event.is-compact .fcx .d{ display:none; }
.fc-event.is-compact .fcx .n{ font-size:.95rem; }
.fc-event.is-compact .fc-event-main{ padding: 8px 9px !important; }

/* ícone no canto (status) */
.fcx .ic{
  position:absolute;
  top:6px;
  right:6px;
  width:18px;
  height:18px;
  border-radius:999px;
  border:1px solid rgba(15,23,42,.18);
  background:rgba(255,255,255,.70);
  backdrop-filter: blur(6px);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  font-weight: 900;
  line-height: 1;
}

/* borda esquerda de acento */
.fc-premium .fc-timegrid-event::before,
.fc-premium .fc-daygrid-event::before{
  content:"";
  position:absolute;
  left:0; top:0; bottom:0;
  width:4px;
  opacity:.95;
}

/* ===== Status com visual iClinic ===== */
.fc-status-scheduled{
  background: linear-gradient(180deg, rgba(245,158,11,.16), rgba(245,158,11,.08)) !important;
  border-color: rgba(245,158,11,.35) !important;
  color: var(--st-scheduled-tx) !important;
}
.fc-status-scheduled::before{ background: rgba(245,158,11,.95); }
.fc-status-scheduled .fcx .ic{ border-color: rgba(245,158,11,.45); }
.fc-status-scheduled .fcx .ic::before{ content:"•"; font-size:16px; transform: translateY(-1px); }

.fc-status-confirmed{
  background: linear-gradient(180deg, rgba(59,130,246,.16), rgba(59,130,246,.08)) !important;
  border-color: rgba(59,130,246,.35) !important;
  color: var(--st-confirmed-tx) !important;
}
.fc-status-confirmed::before{ background: rgba(59,130,246,.95); }
.fc-status-confirmed .fcx .ic{ border-color: rgba(59,130,246,.45); }
.fc-status-confirmed .fcx .ic::before{ content:"✓"; }

.fc-status-completed{
  background: linear-gradient(180deg, rgba(34,197,94,.16), rgba(34,197,94,.08)) !important;
  border-color: rgba(34,197,94,.35) !important;
  color: var(--st-completed-tx) !important;
}
.fc-status-completed::before{ background: rgba(34,197,94,.95); }
.fc-status-completed .fcx .ic{
  border-color: rgba(34,197,94,.55);
  background: rgba(34,197,94,.18);
}
.fc-status-completed .fcx .ic::before{ content:"✓"; }

.fc-status-canceled{
  background: linear-gradient(180deg, rgba(239,68,68,.16), rgba(239,68,68,.08)) !important;
  border-color: rgba(239,68,68,.35) !important;
  color: var(--st-canceled-tx) !important;
}
.fc-status-canceled::before{ background: rgba(239,68,68,.95); }
.fc-status-canceled .fcx .ic{ border-color: rgba(239,68,68,.55); }
.fc-status-canceled .fcx .ic::before{ content:"×"; font-size:14px; }

.fc-status-no_show{
  background: linear-gradient(180deg, rgba(124,58,237,.16), rgba(124,58,237,.08)) !important;
  border-color: rgba(124,58,237,.35) !important;
  color: var(--st-noshow-tx) !important;
}
.fc-status-no_show::before{ background: rgba(124,58,237,.95); }
.fc-status-no_show .fcx .ic{ border-color: rgba(124,58,237,.55); }
.fc-status-no_show .fcx .ic::before{ content:"!"; }

/* herdar cor do container */
.fc-premium .fc-event-main,
.fc-premium .fc-event-main *{ color:inherit !important; }

/* bloqueios (ScheduleBlock) */
.fc-block{
  background:var(--st-block-bg)!important;
  border:1px dashed var(--st-block-bd)!important;
  color:var(--st-block-tx)!important;
  position:relative;
}
.fc-block::before{
  content:"";
  position:absolute;
  inset:0;
  background:repeating-linear-gradient(
    45deg,
    rgba(15,23,42,.05),
    rgba(15,23,42,.05) 6px,
    transparent 6px,
    transparent 12px
  );
  pointer-events:none;
}

/* popover */
.fc-premium .fc-popover{
  border-radius:16px;
  border:1px solid rgba(15,23,42,.12);
  box-shadow:0 18px 40px rgba(16,24,40,.14);
  overflow:hidden;
}
.fc-premium .fc-popover-header{background:#fff;font-weight:900;}

/* mês */
.fc-premium .fc-daygrid-day-number{
  font-weight:900;
  color:#64748b;
  text-decoration:none;
}
.fc-premium .fc-daygrid-event .fc-event-main{ padding: 6px 8px !important; }
.fc-premium .fc-daygrid-event .fcx .t{ display:none; }
.fc-premium .fc-daygrid-event .fcx .d{ display:none; }
.fc-premium .fc-daygrid-event .fcx .n{ font-size:.90rem; }

/* ---------- Mobile ---------- */
@media (max-width: 991px){
  .sidebar{display:none;}
  .content{margin-left:0; height:auto; overflow:visible;}
  body{overflow:auto;}
  .topbar{position:static;}
  .page{padding:16px;}
}

/* ---------- Reduced motion (acessibilidade + performance) ---------- */
@media (prefers-reduced-motion: reduce){
  *{ scroll-behavior:auto !important; }
  a, button, .btn, .btnx2, .nav-link,
  .fc-premium .fc-timegrid-event, .fc-premium .fc-daygrid-event{
    transition:none !important;
    transform:none !important;
  }
}

/* =========================
   AGENDA - VISUAL (IGUAL REF)
   ========================= */

.fc .fc-timegrid-slot { height: 38px; }
.fc .fc-timegrid-axis-cushion { font-size: 12px; }
.fc .fc-col-header-cell { padding: 10px 0; }
.fc .fc-col-header-cell-cushion { text-decoration: none; font-weight: 800; color: #222; }

.dayhdr{
  display:flex; flex-direction:column; align-items:center;
  line-height:1.05; gap:4px; font-weight:800; color:#222;
}
.dayhdr .date{ font-weight:800; font-size:12px; opacity:.70; }
.dayhdr.today{ color:#0b63ff; }

/* Evento card */
.fc .fc-timegrid-event{
  border-radius: 10px;
  border: 0;
  overflow: hidden;
}
.fc .fc-event-main{ padding: 0; }
.appt{
  height:100%;
  padding:8px 10px;
  position:relative;
  display:flex;
  flex-direction:column;
  gap:4px;
  border-radius:10px;
}
.appt .time{ font-size:12px; font-weight:900; opacity:.95; }
.appt .name{ font-size:13px; font-weight:900; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.appt .badge{
  position:absolute;
  top:8px; right:8px;
  width:16px; height:16px;
  border-radius:999px;
  display:grid; place-items:center;
  background: rgba(255,255,255,.55);
  border: 1px solid rgba(0,0,0,.08);
  font-size: 11px;
  font-weight: 900;
  line-height: 1;
}

/* Almoço “listrado” (background event) */
.fc .lunch-bg{
  background: repeating-linear-gradient(
    135deg,
    rgba(0,0,0,.06) 0px,
    rgba(0,0,0,.06) 8px,
    rgba(0,0,0,.02) 8px,
    rgba(0,0,0,.02) 16px
  ) !important;
  border: 0 !important;
  opacity: 1 !important;
}

/* Cores por status (ajuste se quiser) */
.appt.agendado   { background: #ffb347; } /* laranja */
.appt.confirmado { background: #8dd3ff; } /* azul claro */
.appt.concluido  { background: #8be28b; } /* verde */
.appt.cancelado  { background: #ff8a8a; } /* vermelho */
.appt.faltou     { background: #caa3ff; } /* roxo */



/* =========================
   UI SCALE (padrão tipo 80% zoom)
   ========================= */
html{ font-size: 13px; } /* ~81% do padrão 16px */

/* Botões e cards um pouco mais compactos */
.btn{ padding: 10px 14px; border-radius: 14px; font-size: 1rem; }
.btn-sm{ padding: 8px 12px; border-radius: 12px; }

.topbar{ padding: 10px 18px; }
.sidebar{ padding: 16px 14px; }

/* Brand sem logo (somente texto) */
.brand{ display:flex; align-items:center; gap:12px; }
.brand-text{ display:flex; flex-direction:column; gap:2px; }
.brand-name{ font-weight: 900; font-size: 1.05rem; line-height: 1.1; 
  line-height:1.05;
}
.brand-sub{ font-size: .95rem; opacity: .75; }

/* Agenda: diminuir painel “Pacientes do dia” sem sumir */
.card-daypatients{ padding: 14px !important; }
.card-daypatients .hd{ padding-bottom: 8px !important; }
.card-daypatients h2{ font-size: 1rem !important; margin: 10px 0 6px !important; }
.card-daypatients .mini{ font-size: .92rem !important; }


/* =========================
   STATUS PILLS (cores por status)
   ========================= */
.status-pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 12px;
  border-radius: 999px;
  font-weight: 800;
  letter-spacing: -.01em;
  font-size: .92rem;
  border: 1px solid rgba(15,23,42,.08);
  background: rgba(15,23,42,.04);
  color: #0f172a;
  white-space: nowrap;
}
.status-pill::before{
  content:"";
  width:8px; height:8px;
  border-radius:999px;
  background: rgba(15,23,42,.35);
  box-shadow: 0 0 0 4px rgba(15,23,42,.06);
}

/* Agenda (Appointment) */
.status-scheduled{ background: rgba(245, 158, 11, .14); border-color: rgba(245,158,11,.22); color:#7a4b00; }
.status-scheduled::before{ background:#f59e0b; box-shadow: 0 0 0 4px rgba(245,158,11,.16); }

.status-confirmed{ background: rgba(59, 130, 246, .14); border-color: rgba(59,130,246,.22); color:#0b3a8a; }
.status-confirmed::before{ background:#3b82f6; box-shadow: 0 0 0 4px rgba(59,130,246,.16); }

.status-completed{ background: rgba(34, 197, 94, .14); border-color: rgba(34,197,94,.22); color:#0f5a2a; }
.status-completed::before{ background:#22c55e; box-shadow: 0 0 0 4px rgba(34,197,94,.16); }

.status-no_show{ background: rgba(139, 92, 246, .14); border-color: rgba(139,92,246,.22); color:#3f1d93; }
.status-no_show::before{ background:#8b5cf6; box-shadow: 0 0 0 4px rgba(139,92,246,.16); }

.status-canceled{ background: rgba(239, 68, 68, .14); border-color: rgba(239,68,68,.22); color:#8a1212; }
.status-canceled::before{ background:#ef4444; box-shadow: 0 0 0 4px rgba(239,68,68,.16); }

/* Billing (Invoice) */
.status-open{ background: rgba(245, 158, 11, .14); border-color: rgba(245,158,11,.22); color:#7a4b00; }
.status-open::before{ background:#f59e0b; box-shadow: 0 0 0 4px rgba(245,158,11,.16); }

.status-partial{ background: rgba(59, 130, 246, .14); border-color: rgba(59,130,246,.22); color:#0b3a8a; }
.status-partial::before{ background:#3b82f6; box-shadow: 0 0 0 4px rgba(59,130,246,.16); }

.status-paid{ background: rgba(34, 197, 94, .14); border-color: rgba(34,197,94,.22); color:#0f5a2a; }
.status-paid::before{ background:#22c55e; box-shadow: 0 0 0 4px rgba(34,197,94,.16); }

/* Finance (Transaction Kind) */
.status-income{ background: rgba(34, 197, 94, .14); border-color: rgba(34,197,94,.22); color:#0f5a2a; }
.status-income::before{ background:#22c55e; box-shadow: 0 0 0 4px rgba(34,197,94,.16); }

.status-expense{ background: rgba(239, 68, 68, .14); border-color: rgba(239,68,68,.22); color:#8a1212; }
.status-expense::before{ background:#ef4444; box-shadow: 0 0 0 4px rgba(239,68,68,.16); }

/* Commission */
.status-pending{ background: rgba(245, 158, 11, .14); border-color: rgba(245,158,11,.22); color:#7a4b00; }
.status-pending::before{ background:#f59e0b; box-shadow: 0 0 0 4px rgba(245,158,11,.16); }

.status-neutral{ background: rgba(15,23,42,.04); border-color: rgba(15,23,42,.08); color:#334155; }
.status-neutral::before{ background: rgba(15,23,42,.35); box-shadow: 0 0 0 4px rgba(15,23,42,.06); }

/* =========================
   TABELAS (polimento premium)
   ========================= */
.table-card{
  border-radius: 22px;
  overflow: hidden;
}
.table-card .table{
  margin-bottom: 0;
}
.table-card thead th{
  font-weight: 900;
  letter-spacing: -.01em;
  color: #0f172a;
  background: rgba(15,23,42,.03);
  border-bottom: 1px solid rgba(15,23,42,.08);
  padding-top: 14px;
  padding-bottom: 14px;
}
.table-card tbody td{
  padding-top: 14px;
  padding-bottom: 14px;
  border-top: 1px solid rgba(15,23,42,.06);
}
.table-card tbody tr:hover{
  background: rgba(255,79,160,.04);
}

/* =========================
   TABELAS – padrões globais
   ========================= */
.table-premium{
  --row-py: 14px;
}
.table-premium thead th{
  font-weight: 900;
  letter-spacing: -.01em;
  color: var(--text);
  background: rgba(15,23,42,.03);
  border-bottom: 1px solid rgba(15,23,42,.08);
  padding-top: var(--row-py);
  padding-bottom: var(--row-py);
  vertical-align: middle;
}
.table-premium tbody td{
  padding-top: var(--row-py);
  padding-bottom: var(--row-py);
  border-top: 1px solid rgba(15,23,42,.06);
  vertical-align: middle;
}
.table-premium tbody tr{
  transition: background .18s ease;
}
.table-premium tbody tr.has-action:hover{
  background: rgba(255,79,160,.04);
}
.table-premium .text-end{ white-space: nowrap; }

/* Botão de ação padronizado nas tabelas */
.btn-action{
  border-radius: 14px;
  padding: 8px 12px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.btn-action i{ font-size: 1.05em; }

/* =========================
   PAGINAÇÃO – premium
   ========================= */
.pagination{
  gap: 8px;
}
.page-link{
  border-radius: 14px !important;
  padding: 10px 14px;
  border-color: rgba(15,23,42,.12);
  color: rgba(15,23,42,.78);
  background: rgba(255,255,255,.9);
  box-shadow: 0 10px 24px rgba(2,6,23,.06);
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.page-link:hover{
  transform: translateY(-1px);
  border-color: rgba(255,79,160,.35);
  box-shadow: 0 16px 34px rgba(2,6,23,.08);
}
.page-item.disabled .page-link{
  opacity: .6;
  transform: none;
  box-shadow: none;
}

/* =========================
   TOASTS – feedback premium
   ========================= */
.toast-stack{
  position: fixed;
  top: 14px;
  right: 14px;
  z-index: 1080;
  display: grid;
  gap: 10px;
  max-width: min(420px, calc(100vw - 28px));
}
.premium-toast{
  width: 100%;
  border-radius: 18px;
  border: 1px solid rgba(15,23,42,.10);
  background: rgba(255,255,255,.92);
  backdrop-filter: blur(10px);
  box-shadow: 0 18px 50px rgba(2,6,23,.14);
  padding: 12px 12px;
  display: grid;
  grid-template-columns: 28px 1fr 28px;
  align-items: start;
  gap: 10px;
}
.premium-toast__icon{
  width: 28px;
  height: 28px;
  border-radius: 10px;
  background: rgba(15,23,42,.06);
  margin-top: 2px;
  position: relative;
}
.premium-toast.is-success .premium-toast__icon{ background: rgba(34,197,94,.16); }
.premium-toast.is-success .premium-toast__icon::after{ content:"\F26B"; } /* bi-check2-circle */
.premium-toast.is-error .premium-toast__icon{ background: rgba(239,68,68,.16); }
.premium-toast.is-error .premium-toast__icon::after{ content:"\F33A"; } /* bi-exclamation-triangle */
.premium-toast.is-warning .premium-toast__icon{ background: rgba(245,158,11,.16); }
.premium-toast.is-warning .premium-toast__icon::after{ content:"\F33A"; }
.premium-toast.is-info .premium-toast__icon{ background: rgba(59,130,246,.16); }
.premium-toast.is-info .premium-toast__icon::after{ content:"\F4CA"; } /* bi-info-circle */
.premium-toast__icon::after{
  font-family: "bootstrap-icons";
  font-size: 16px;
  line-height: 1;
  color: rgba(15,23,42,.85);
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
}
.premium-toast__title{
  font-weight: 900;
  letter-spacing: -.02em;
  font-size: .98rem;
}
.premium-toast__text{
  font-size: .95rem;
  color: rgba(15,23,42,.72);
  margin-top: 2px;
}
.premium-toast__close{
  border: 0;
  background: transparent;
  width: 28px;
  height: 28px;
  border-radius: 10px;
  color: rgba(15,23,42,.65);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.premium-toast__close:hover{
  background: rgba(15,23,42,.06);
  color: rgba(15,23,42,.85);
}

/* =========================
   MODO IMPRESSÃO
   ========================= */
@media print{
  *{ box-shadow: none !important; text-shadow: none !important; }
  body{ background: #fff !important; }
  .sidebar, .topbar, .btn, .pagination, .toast-stack, .nav, .sidebar-footer{ display: none !important; }
  .content, .page{ margin: 0 !important; padding: 0 !important; }
  .card, .soft-card, .table-card{ border: 0 !important; }
  .table thead th{ background: #f3f4f6 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  a[href]:after{ content: ""; }
}

/* =========================
   BRAND (logo da sidebar)
   ========================= */
.brand{
  display:flex;
  align-items:flex-start;
  gap:12px;
  padding: 10px 10px 6px;
}
.brand-text{ padding-top: 2px; }
.brand-logo img{
  width:56px;
  height:56px;
  object-fit: contain;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  display:block;
}

.brand-name{
  font-weight: 900;
  letter-spacing: -.02em;
}
.brand-sub{
  line-height: 1.25;
}

.topbar-brand__text{display:flex; flex-direction:column; gap:2px; padding-top:1px;}


/* ===== Fix17.4 Brand alignment + unify (sidebar + topbar) ===== */
.brand{
  display:flex;
  align-items:center;
  gap:12px;
}
.brand-logo{
  width:44px;
  height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 44px;
}
.brand-text{ line-height:1.15; }
.brand-name{ font-weight:800; letter-spacing:-.2px; }
.brand-sub{ margin-top:4px; font-size:14px; color: var(--muted); }

/* Topbar brand (when sidebar hidden) should match app style */
.topbar-brand{
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:10px 14px;
  border-radius:18px;
  background: rgba(255,255,255,.86);
  border: 1px solid rgba(15,23,42,.08);
  box-shadow: 0 10px 30px rgba(15,23,42,.06);
  text-decoration:none !important;
  color: inherit !important;
}
.topbar-brand__logo{
  width:20px;
  height:20px;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 20px;
}
.topbar-brand__text{ line-height:1.15; }
.topbar-brand__name{ font-weight:800; letter-spacing:-.2px; }
.topbar-brand__subtitle{ margin-top:2px; font-size:13px; color: var(--muted); }

/* =========================
   Notificações (internas)
========================= */
.notif-dot{
  width:10px;
  height:10px;
  border-radius:999px;
  margin-top:6px;
  background: rgba(15,23,42,.18);
  flex: 0 0 10px;
}
.notif-dot.unread{
  background: var(--primary);
  box-shadow: 0 0 0 6px rgba(255,79,160,.12);
}
