/* ==========================================================================
   BookQly — Sistema de diseño (escritorio primero, responsive a celular)
   ========================================================================== */

:root{
  --navy:#0D1B3E; --navy2:#162447;
  --blue:#00AAFF; --violet:#7B4FD4;
  --success:#16A34A; --danger:#DC2626; --warning:#D97706;
  --bg:#F7F9FC; --white:#FFFFFF; --border:#E2E8F4; --muted:#6B7280; --text:#101828;
  --grad: linear-gradient(135deg, var(--blue), var(--violet));
  --radius-card:16px; --radius-pill:100px;
  --shadow-card:0 1px 2px rgba(13,27,62,0.04);
  --shadow-float:0 20px 40px -20px rgba(13,27,62,0.18);
  --sidebar-w:248px;
}
*{box-sizing:border-box; margin:0; padding:0;}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; background:var(--bg); color:var(--text); line-height:1.5; -webkit-font-smoothing:antialiased;}
a{color:inherit; text-decoration:none;}
button{font-family:inherit; cursor:pointer;}
img{max-width:100%; display:block;}
:focus-visible{outline:2px solid var(--blue); outline-offset:2px;}
ul{list-style:none;}

/* ---------- App shell: sidebar + main ---------- */
.app-shell{display:flex; min-height:100vh;}
.sidebar{
  width:var(--sidebar-w); flex-shrink:0; background:var(--navy); color:white;
  padding:20px 14px; position:fixed; top:0; left:0; bottom:0; overflow-y:auto; z-index:40;
  transition:transform .25s ease;
}
.sidebar .brand{display:flex; align-items:center; gap:9px; padding:6px 10px 22px;}
.sidebar .brand img{width:26px; height:26px;}
.sidebar .brand-text{font-weight:800; font-size:16px; color:white; letter-spacing:-0.02em;}
.sidebar .brand-text b{background:linear-gradient(135deg,#63CFFF,var(--violet)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;}
.sidebar .viewing{
  margin:0 4px 16px; padding:9px 12px; border-radius:11px; background:rgba(255,255,255,0.06);
  font-size:11.5px; font-weight:700; color:#C7D2FE; display:flex; align-items:center; gap:7px;
}
.sidebar .viewing .dot{width:6px; height:6px; border-radius:50%; background:var(--success); flex-shrink:0;}
.nav-group{margin-bottom:4px;}
.nav-eyebrow{font-size:10.5px; font-weight:700; color:#7A88B5; text-transform:uppercase; letter-spacing:0.06em; padding:14px 10px 6px;}
.nav-item{
  display:flex; align-items:center; gap:11px; padding:9px 10px; border-radius:10px;
  font-size:13.5px; font-weight:600; color:#C7D2FE; margin-bottom:2px; position:relative;
}
.nav-item svg{width:17px; height:17px; flex-shrink:0;}
.nav-item:hover{background:rgba(255,255,255,0.06); color:white;}
.nav-item.active{background:rgba(255,255,255,0.1); color:white;}
.nav-item.active::before{content:""; position:absolute; left:-14px; top:8px; bottom:8px; width:3px; background:var(--grad); border-radius:3px;}
.nav-item .lock{margin-left:auto; font-size:9.5px; font-weight:700; background:rgba(255,255,255,0.12); padding:2px 7px; border-radius:100px; color:#C7D2FE;}
.sidebar-footer{margin-top:16px; padding-top:14px; border-top:1px solid rgba(255,255,255,0.08);}

.main{margin-left:var(--sidebar-w); flex:1; min-width:0; display:flex; flex-direction:column;}
.topbar{
  display:flex; align-items:center; justify-content:space-between; padding:14px 28px;
  background:var(--white); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:20;
}
.menu-toggle{display:none; background:none; border:none; color:var(--navy);}
.topbar-right{display:flex; align-items:center; gap:12px;}
.icon-btn{width:36px; height:36px; border-radius:50%; background:var(--bg); display:grid; place-items:center; border:none; color:var(--muted);}
.icon-btn svg{width:17px; height:17px;}
.avatar{width:34px; height:34px; border-radius:50%; background:var(--grad); display:grid; place-items:center; color:white; font-weight:700; font-size:13px;}

.page{padding:26px 28px 60px; max-width:1100px;}
.h1-row{display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin-bottom:20px; flex-wrap:wrap;}
.eyebrow{font-size:11px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:3px;}
.h1{font-size:24px; font-weight:800; color:var(--navy); letter-spacing:-0.02em;}
.sub{font-size:13px; color:var(--muted); margin-top:2px;}

/* ---------- Cards / grids ---------- */
.card{background:var(--white); border:1px solid var(--border); border-radius:var(--radius-card); padding:18px; margin-bottom:16px; box-shadow:var(--shadow-card);}
.card-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; flex-wrap:wrap; gap:8px;}
.card-title{font-size:15px; font-weight:800; color:var(--navy);}
.link{font-size:12.5px; font-weight:700; color:var(--blue);}
.grid-2{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.grid-4{display:grid; grid-template-columns:repeat(4,1fr); gap:14px;}
.grid-3{display:grid; grid-template-columns:repeat(3,1fr); gap:14px;}
@media (max-width:900px){ .grid-4{grid-template-columns:repeat(2,1fr);} .grid-3{grid-template-columns:1fr;} .grid-2{grid-template-columns:1fr;} }

.kpi{background:var(--white); border:1px solid var(--border); border-radius:var(--radius-card); padding:16px; box-shadow:var(--shadow-card);}
.kpi-top{display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:12px;}
.kpi-label{font-size:11px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:0.04em;}
.kpi-ico{width:30px; height:30px; border-radius:9px; display:grid; place-items:center; font-size:14px;}
.kpi-value{font-size:24px; font-weight:800; color:var(--navy); letter-spacing:-0.02em;}
.kpi-sub{font-size:11px; color:var(--muted); font-weight:600; margin-top:3px;}
.kpi-sub.up{color:var(--success);}

/* ---------- Buttons ---------- */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:11px 18px; border-radius:11px; font-size:13.5px; font-weight:700; border:1.5px solid transparent;}
.btn-primary{background:var(--grad); color:white; box-shadow:0 8px 18px -6px rgba(0,170,255,0.4);}
.btn-outline{background:var(--white); border-color:var(--border); color:var(--text);}
.btn-outline:hover{border-color:var(--blue);}
.btn-ghost{background:none; color:var(--muted); font-weight:600;}
.btn-danger-ghost{background:none; color:var(--danger); font-weight:700;}
.btn-sm{padding:8px 14px; font-size:12.5px;}
.btn-row{display:flex; gap:10px; flex-wrap:wrap;}

/* ---------- Table-style rows ---------- */
.row{display:flex; align-items:center; justify-content:space-between; padding:12px 0; border-bottom:1px solid var(--border); gap:10px;}
.row:last-child{border-bottom:none;}
.row-left{display:flex; align-items:center; gap:12px; min-width:0;}
.row-ico{width:38px; height:38px; border-radius:11px; display:grid; place-items:center; font-size:16px; flex-shrink:0;}
.row-title{font-size:13.5px; font-weight:700; color:var(--text);}
.row-sub{font-size:11.5px; color:var(--muted); font-weight:500; margin-top:1px;}
.row-amt{font-size:14px; font-weight:800; flex-shrink:0;}
.row-amt.in{color:var(--success);}
.row-amt.out{color:var(--danger);}
.row-click{cursor:pointer;}
.row-click:hover{background:var(--bg);}
.chevron{color:var(--muted); font-size:16px;}

/* ---------- Badges ---------- */
.badge{font-size:10.5px; font-weight:700; padding:4px 11px; border-radius:var(--radius-pill); white-space:nowrap;}
.badge-success{background:rgba(22,163,74,0.1); color:var(--success);}
.badge-info{background:rgba(0,170,255,0.1); color:var(--blue);}
.badge-danger{background:rgba(220,38,38,0.1); color:var(--danger);}
.badge-warning{background:rgba(217,119,6,0.1); color:var(--warning);}
.badge-muted{background:var(--bg); color:var(--muted);}

/* ---------- Tabs ---------- */
.tabs{display:flex; gap:4px; background:var(--white); border:1px solid var(--border); border-radius:var(--radius-pill); padding:4px; margin-bottom:18px; width:fit-content;}
.tabs button{padding:9px 18px; border-radius:var(--radius-pill); font-size:13px; font-weight:700; color:var(--muted); border:none; background:none;}
.tabs button.active{background:var(--navy); color:white;}

/* ---------- Empty state ---------- */
.empty{text-align:center; padding:40px 24px; border:1.5px dashed var(--border); border-radius:var(--radius-card); background:var(--white);}
.empty-icon{font-size:28px; margin-bottom:10px;}
.empty-title{font-size:14px; font-weight:700; color:var(--navy); margin-bottom:5px;}
.empty-sub{font-size:12.5px; color:var(--muted); margin-bottom:16px; line-height:1.5; max-width:340px; margin-left:auto; margin-right:auto;}

/* ---------- Forms ---------- */
.field{margin-bottom:16px;}
.field label{display:block; font-size:12.5px; font-weight:700; color:var(--navy); margin-bottom:6px;}
.field input, .field select, .field textarea{width:100%; padding:11px 14px; border:1.5px solid var(--border); border-radius:10px; font-size:13.5px; font-family:inherit; background:var(--white); color:var(--text);}
.field input:focus, .field select:focus, .field textarea:focus{outline:none; border-color:var(--blue);}
.field-hint{font-size:11px; color:var(--muted); margin-top:5px;}
.field-row{display:flex; gap:10px;}
.field-row .field{flex:1;}

/* ---------- Modal ---------- */
.modal-overlay{position:fixed; inset:0; background:rgba(13,27,62,0.5); z-index:100; display:none; align-items:center; justify-content:center; padding:20px;}
.modal-overlay.open{display:flex;}
.modal{background:white; border-radius:20px; padding:26px; max-width:520px; width:100%; max-height:88vh; overflow-y:auto; box-shadow:var(--shadow-float);}
.modal-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:18px;}
.modal-title{font-size:17px; font-weight:800; color:var(--navy);}
.modal-close{background:none; border:none; font-size:20px; color:var(--muted); cursor:pointer;}

/* ---------- Auth pages (no sidebar) ---------- */
.auth-wrap{min-height:100vh; height:100vh; display:flex; overflow:hidden;}
.auth-hero{flex:0 0 42%; max-width:480px; background:var(--navy); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:40px; color:white; text-align:center;}
.auth-hero img{height:32px; margin-bottom:22px;}
.auth-hero h1{font-size:20px; font-weight:800; margin-bottom:8px;}
.auth-hero p{font-size:13.5px; opacity:0.75; max-width:300px;}
.auth-body{flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; padding:32px 24px 48px; overflow-y:auto; -webkit-overflow-scrolling:touch;}
.auth-form{max-width:380px; width:100%;}
.divider{display:flex; align-items:center; gap:10px; margin:18px 0; color:var(--muted); font-size:12px; font-weight:600;}
.divider::before, .divider::after{content:""; flex:1; height:1px; background:var(--border);}
.btn-google{width:100%; padding:12px; border-radius:11px; border:1.5px solid var(--border); background:white; display:flex; align-items:center; justify-content:center; gap:10px; font-size:13.5px; font-weight:700; color:var(--text);}
.btn-google svg{width:18px; height:18px;}
.auth-footer{text-align:center; font-size:13px; color:var(--muted); margin-top:20px;}
.auth-footer a{color:var(--blue); font-weight:700;}
@media (max-width:800px){
  .auth-hero{display:none;}
  .auth-wrap{height:auto; min-height:100vh; overflow:visible;}
  .auth-body{overflow:visible; padding:28px 20px 40px;}
}

/* ---------- Landing page ---------- */
.lp-nav{display:flex; align-items:center; justify-content:space-between; padding:16px 5%; position:sticky; top:0; background:rgba(247,249,252,0.9); backdrop-filter:blur(10px); z-index:20; border-bottom:1px solid var(--border);}
.lp-nav .brand{display:flex; align-items:center; gap:9px;}
.lp-nav .brand-text{font-weight:800; font-size:17px; color:var(--navy);}
.lp-nav .brand-text b{background:var(--grad); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;}
.lp-nav-links{display:flex; gap:26px; font-size:13.5px; font-weight:600; color:var(--muted);}
@media (max-width:700px){ .lp-nav-links{display:none;} }
.lp-hero{padding:60px 5% 50px; text-align:center;}
.lp-hero .kicker{display:inline-flex; align-items:center; gap:6px; background:white; border:1px solid var(--border); border-radius:var(--radius-pill); padding:6px 14px; font-size:12px; font-weight:700; color:var(--violet); margin-bottom:22px;}
.lp-hero h1{font-size:40px; font-weight:800; color:var(--navy); letter-spacing:-0.02em; line-height:1.15; margin-bottom:16px; max-width:720px; margin-left:auto; margin-right:auto;}
.lp-hero h1 .grad-text{background:var(--grad); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;}
.lp-hero p{font-size:16px; color:var(--muted); max-width:460px; margin:0 auto 28px; line-height:1.6;}
.lp-hero .btn-row{justify-content:center;}
.lp-section{padding:56px 5%; max-width:1100px; margin:0 auto;}
.lp-section-head{text-align:center; margin-bottom:34px;}
.lp-section-head .eyebrow{display:flex; justify-content:center;}
.lp-section-head h2{font-size:28px; font-weight:800; color:var(--navy); margin-bottom:10px; letter-spacing:-0.02em;}
.lp-section-head p{font-size:14.5px; color:var(--muted); max-width:420px; margin:0 auto;}
.feature-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
@media (max-width:900px){ .feature-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .feature-grid{grid-template-columns:1fr;} }
.feature-card{background:white; border:1px solid var(--border); border-radius:18px; padding:22px;}
.feature-card .ico{width:46px; height:46px; border-radius:12px; display:grid; place-items:center; font-size:21px; margin-bottom:14px;}
.feature-card h3{font-size:15px; font-weight:800; color:var(--navy); margin-bottom:6px;}
.feature-card p{font-size:13px; color:var(--muted); line-height:1.5;}
.pricing-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
@media (max-width:800px){ .pricing-grid{grid-template-columns:1fr; max-width:380px; margin:0 auto;} }
.pricing-card{background:white; border:1.5px solid var(--border); border-radius:20px; padding:26px 22px; position:relative;}
.pricing-card.featured{border-color:var(--blue); box-shadow:var(--shadow-float);}
.pricing-card .tag{position:absolute; top:-11px; right:22px; background:var(--grad); color:white; font-size:10.5px; font-weight:700; padding:4px 12px; border-radius:var(--radius-pill);}
.pricing-card .plan-name{font-size:13px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:0.04em;}
.pricing-card .plan-price{font-size:32px; font-weight:800; color:var(--navy); margin:8px 0 4px;}
.pricing-card .plan-price span{font-size:13px; font-weight:600; color:var(--muted);}
.pricing-card ul{margin:18px 0 22px;}
.pricing-card li{font-size:13px; color:var(--text); padding:6px 0; display:flex; gap:8px; align-items:flex-start;}
.pricing-card li::before{content:"✓"; color:var(--success); font-weight:800; flex-shrink:0;}
.lp-footer{padding:36px 5%; text-align:center; border-top:1px solid var(--border); background:white;}
.lp-footer p{font-size:12px; color:var(--muted); margin-top:10px;}

/* ---------- Public booking page (no sidebar) ---------- */
.pub-wrap{max-width:520px; margin:0 auto; padding:40px 20px;}
.pub-header{text-align:center; margin-bottom:28px;}
.pub-header .logo-circle{width:56px; height:56px; border-radius:50%; background:var(--grad); display:grid; place-items:center; color:white; font-weight:800; font-size:22px; margin:0 auto 14px;}

/* ---------- Responsive: collapse sidebar on mobile ---------- */
@media (max-width:900px){
  .sidebar{transform:translateX(-100%); box-shadow:0 0 40px rgba(0,0,0,0.2);}
  .sidebar.open{transform:translateX(0);}
  .main{margin-left:0;}
  .menu-toggle{display:block;}
  .page{padding:20px 16px 60px;}
  .grid-4, .grid-3{grid-template-columns:1fr 1fr;}
}
@media (max-width:520px){
  .grid-4, .grid-3, .grid-2{grid-template-columns:1fr;}
  .topbar{padding:12px 16px;}
}
.sidebar-scrim{position:fixed; inset:0; background:rgba(13,27,62,0.4); z-index:35; display:none;}
.sidebar-scrim.open{display:block;}
