
:root{
  --bg:#f5f6f8;
  --surface:#ffffff;
  --surface-2:#fafbfc;
  --text:#111318;
  --muted:#7b808b;
  --line:#e9ebef;
  --line-strong:#dde0e6;
  --red:#e50924;
  --red-dark:#b90018;
  --red-soft:#fff2f4;
  --green:#0ca765;
  --green-soft:#eaf8f1;
  --amber:#f39a1c;
  --shadow:0 14px 34px rgba(18,20,27,.055);
  --shadow-soft:0 8px 24px rgba(18,20,27,.035);
  --radius:22px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}
body{overflow-x:hidden}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}

.app-shell{min-height:100vh;display:grid;grid-template-columns:238px minmax(0,1fr)}

.sidebar{
  position:sticky;top:0;height:100vh;background:#fff;border-right:1px solid var(--line);
  padding:22px 15px 18px;display:flex;flex-direction:column;z-index:40
}
.brand{display:flex;align-items:center;gap:11px;padding:3px 7px 20px}
.brand-emblem{
  width:44px;height:44px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(145deg,#fff5f6,#fff);border:1px solid #f6dfe3
}
.brand-emblem img{width:38px;height:34px;object-fit:contain}
.brand-copy{display:flex;flex-direction:column;line-height:1}
.brand-copy strong{font-size:21px;letter-spacing:-.75px}
.brand-copy span{margin-top:6px;font-size:9px;text-transform:uppercase;letter-spacing:1.35px;color:#979ba4;font-weight:700}
.sidebar-label{
  margin:3px 8px 10px;padding-top:12px;border-top:1px solid #f1f2f4;
  color:#a0a4ad;font-size:9px;text-transform:uppercase;letter-spacing:1.1px;font-weight:800
}
.nav{display:flex;flex-direction:column;gap:4px}
.nav-link{
  display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:13px;
  color:#5b606a;font-weight:650;font-size:13px;transition:.18s
}
.nav-link:hover{background:#fafafa;color:#17181d}
.nav-link.active{
  background:linear-gradient(135deg,#d90722,#f72d44);color:#fff;
  box-shadow:0 10px 22px rgba(229,9,36,.16)
}
.nav-icon{width:20px;text-align:center;font-size:16px}
.nav-section{padding:18px 12px 7px;color:#a0a4ad;font-size:9px;text-transform:uppercase;letter-spacing:1.1px;font-weight:800}
.sidebar-foot{
  margin-top:auto;border-top:1px solid #f1f2f4;padding:14px 8px 0;color:#9a9ea7;font-size:10px
}
.sidebar-foot>div{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}
.sidebar-foot strong{color:#50545c;font-size:11px}.sidebar-foot small{font-size:10px}

.main{min-width:0}
.topbar{
  height:84px;background:rgba(255,255,255,.93);border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:18px;
  position:sticky;top:0;backdrop-filter:blur(14px);z-index:25
}
.topbar-left,.topbar-right{display:flex;align-items:center;gap:14px}
.topbar h1{font-size:20px;margin:2px 0 0;letter-spacing:-.55px}
.eyebrow{font-size:9px;color:#9599a3;text-transform:uppercase;letter-spacing:1.15px;font-weight:800}
.menu-btn{display:none;border:0;background:transparent;font-size:21px;cursor:pointer}
.user-chip{
  display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);
  padding:6px 7px;border-radius:15px;box-shadow:var(--shadow-soft)
}
.avatar{
  width:35px;height:35px;border-radius:11px;background:linear-gradient(145deg,#b90018,#f22940);
  display:grid;place-items:center;color:#fff;font-weight:800
}
.user-chip-copy{display:flex;flex-direction:column;min-width:118px}
.user-chip-copy strong{font-size:12px}.user-chip-copy span{font-size:10px;color:var(--muted);margin-top:2px}
.logout{width:28px;height:28px;display:grid;place-items:center;color:#888}

.content{padding:30px 32px 44px;max-width:1480px;margin:0 auto}
.hero-row{
  display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:20px
}
.hero-row h2{font-size:30px;letter-spacing:-1px;margin:5px 0 6px}
.hero-row p{margin:0;color:var(--muted);font-size:13px}
.connection-pill{
  min-width:210px;background:#fff;border:1px solid var(--line);border-radius:15px;
  padding:11px 13px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-soft)
}
.connection-pill small{display:block;color:#9498a2;font-size:9px;text-transform:uppercase;letter-spacing:.8px;font-weight:800}
.connection-pill strong{display:block;margin-top:3px;font-size:11px}
.connection-dot{width:9px;height:9px;border-radius:50%;background:#b5b8bf;box-shadow:0 0 0 5px #f0f1f3}
.connection-pill.connected .connection-dot{background:var(--green);box-shadow:0 0 0 5px var(--green-soft)}

.btn{
  border:0;border-radius:12px;padding:10px 14px;font-weight:750;font-size:12px;cursor:pointer;
  display:inline-flex;align-items:center;gap:8px
}
.btn-primary{background:linear-gradient(135deg,#d6001c,#ff334b);color:#fff;box-shadow:0 9px 20px rgba(229,9,36,.14)}
.btn-secondary{background:#fff;border:1px solid var(--line);color:#333}
.btn-danger{background:#fff1f3;color:#c9001a}

.metric-grid{display:grid;gap:15px;margin:18px 0}
.metric-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.metric{
  background:var(--surface);border:1px solid var(--line);border-radius:19px;padding:18px 19px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;min-height:132px
}
.metric:after{
  content:"";position:absolute;right:-36px;top:-34px;width:115px;height:115px;border-radius:50%;
  background:radial-gradient(circle,rgba(229,9,36,.075),rgba(229,9,36,0) 68%)
}
.metric.emphasis{background:linear-gradient(145deg,#fff,#fff5f6);border-color:#f7dce1}
.metric-top{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}
.metric-top span{font-size:12px;color:#6e737d;font-weight:700}
.metric-top b{font-size:9px;color:#bbbfc6;letter-spacing:.5px}
.metric-value{
  position:relative;z-index:1;font-size:31px;font-weight:850;letter-spacing:-1.15px;margin-top:15px
}
.metric.emphasis .metric-value{color:#d50721}
.metric-note{position:relative;z-index:1;font-size:11px;margin-top:6px;color:#9a9ea7}

.panel{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;margin-top:16px
}
.chart-panel{margin-top:18px}
.panel-head{
  padding:19px 21px;border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;gap:14px
}
.panel-head h3{margin:3px 0 0;font-size:16px;letter-spacing:-.32px}
.panel-head p{margin:4px 0 0;color:var(--muted);font-size:11px}
.panel-body{padding:21px}
.grid-2{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}
.grid-equal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}

.empty{padding:44px 24px;text-align:center;color:var(--muted)}
.empty strong{display:block;color:#34373d;margin-bottom:7px}
.compact-empty{padding:55px 20px}
.compact-empty strong{font-size:15px}
.compact-empty span{display:block;font-size:12px;margin-top:6px}

.status{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;font-size:10px;font-weight:800}
.status.green{background:#eaf9f1;color:#0a8a50}
.status.amber{background:#fff5e6;color:#c97400}
.status.red{background:#fff0f2;color:#c3001a}
.status.gray{background:#f2f3f5;color:#70757e}

.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;font-size:12px}
th{text-align:left;color:#8b9099;font-size:9px;text-transform:uppercase;letter-spacing:.65px;padding:11px 12px;border-bottom:1px solid var(--line)}
td{padding:13px 12px;border-bottom:1px solid #f1f2f4;white-space:nowrap}

.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.form-group{display:flex;flex-direction:column;gap:7px}.form-group.full{grid-column:1/-1}
label{font-size:11px;font-weight:700;color:#5e636d}
input,select,textarea{
  width:100%;border:1px solid #dedfe4;border-radius:12px;background:#fff;
  padding:10px 11px;outline:none;color:#202228
}
input:focus,select:focus,textarea:focus{border-color:#f16677;box-shadow:0 0 0 4px rgba(229,9,36,.06)}
textarea{min-height:110px;resize:vertical}
.alert{padding:12px 14px;border-radius:12px;margin-bottom:16px;font-size:12px;font-weight:650}
.alert.success{background:#eaf9f1;color:#087847}.alert.error{background:#fff0f2;color:#ba0018}

.spark{
  height:210px;display:flex;align-items:flex-end;gap:7px;padding:12px 2px 0;
  border-bottom:1px solid var(--line);position:relative
}
.premium-spark:before{
  content:"";position:absolute;inset:0;background:
  linear-gradient(to bottom,transparent 24%,#f3f4f6 25%,transparent 26%,transparent 49%,#f3f4f6 50%,transparent 51%,transparent 74%,#f3f4f6 75%,transparent 76%);
  pointer-events:none
}
.bar{
  flex:1;min-width:7px;max-width:28px;margin:0 auto;
  background:linear-gradient(180deg,#ff5a6e,#df071f);border-radius:7px 7px 2px 2px;
  opacity:.9;position:relative;z-index:1
}
.bar:hover{opacity:1}
.bar small{
  display:none;position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);
  background:#17191e;color:#fff;padding:5px 7px;border-radius:7px;font-size:9px;white-space:nowrap;z-index:5
}
.bar:hover small{display:block}

.kv{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #f1f2f4;font-size:12px}
.kv span{color:var(--muted)}.kv strong{font-weight:700}
.callout{border-radius:17px;background:linear-gradient(135deg,#fff6f7,#fff);border:1px solid #ffe1e5;padding:17px}
.callout h4{margin:0 0 5px}.callout p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}

.login-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:#fff}
.login-art{background:linear-gradient(145deg,#fff5f6 0%,#fff 45%,#f4f5f7 100%);display:flex;align-items:center;justify-content:center;padding:50px;position:relative;overflow:hidden}
.login-art:before,.login-art:after{content:"";position:absolute;border-radius:50%;filter:blur(2px)}
.login-art:before{width:430px;height:430px;background:radial-gradient(circle,rgba(229,9,36,.20),rgba(229,9,36,0) 70%);top:-120px;left:-120px}
.login-art:after{width:350px;height:350px;background:radial-gradient(circle,rgba(25,25,28,.08),rgba(25,25,28,0) 70%);bottom:-100px;right:-70px}
.login-brand{max-width:560px;position:relative;z-index:1}.login-brand-row{display:flex;align-items:center;gap:14px}.login-brand-row img{width:82px}
.login-brand-row strong{font-size:34px;letter-spacing:-1.5px}.login-brand h2{font-size:44px;line-height:1.05;letter-spacing:-2px;margin:34px 0 16px}
.login-brand p{font-size:16px;color:#666b75;line-height:1.65;max-width:470px}
.login-panel{display:flex;align-items:center;justify-content:center;padding:55px}.login-card{width:min(420px,100%)}
.login-card h1{font-size:29px;letter-spacing:-1px;margin:0 0 7px}.login-card>p{color:var(--muted);margin:0 0 28px}
.login-card .form-group{margin-bottom:14px}.login-card .btn{width:100%;justify-content:center;margin-top:6px;padding:13px}
.login-foot{margin-top:22px;text-align:center;color:#9a9da5;font-size:11px}

.installer{max-width:760px;margin:50px auto;padding:0 20px}.installer .brand{padding-left:0}
.installer-card{background:#fff;border:1px solid var(--line);border-radius:24px;padding:28px;box-shadow:var(--shadow)}
.installer h1{margin-top:0}
.update-drop{border:1.5px dashed #d7d9df;border-radius:16px;padding:24px;text-align:center;background:#fbfbfc}
.sidebar-scrim{display:none}

@media(max-width:1080px){
  .app-shell{grid-template-columns:220px minmax(0,1fr)}
  .sidebar{padding-left:12px;padding-right:12px}
  .content{padding-left:24px;padding-right:24px}
  .metric-value{font-size:27px}
}
@media(max-width:760px){
  .app-shell{grid-template-columns:1fr}
  .sidebar{
    position:fixed;left:-270px;width:238px;transition:.22s;box-shadow:none
  }
  .sidebar-open .sidebar{left:0;box-shadow:30px 0 60px rgba(0,0,0,.14)}
  .sidebar-scrim{
    display:block;position:fixed;inset:0;background:rgba(17,19,24,.28);opacity:0;pointer-events:none;
    transition:.2s;z-index:35
  }
  .sidebar-open .sidebar-scrim{opacity:1;pointer-events:auto}
  .menu-btn{display:block}
  .topbar{padding:0 16px;height:78px}
  .content{padding:22px 15px 34px}
  .user-chip-copy{display:none}.user-chip{padding:5px}
  .metric-grid-3{grid-template-columns:1fr 1fr}
  .hero-row{align-items:flex-start;flex-direction:column}
  .connection-pill{min-width:0;width:100%}
  .form-grid,.grid-equal,.grid-2{grid-template-columns:1fr}
  .form-group.full{grid-column:auto}
  .login-shell{grid-template-columns:1fr}.login-art{display:none}.login-panel{padding:35px 20px}
}
@media(max-width:520px){
  .metric-grid-3{grid-template-columns:1fr}
  .hero-row h2{font-size:27px}
}

/* v1.0.3 — integración segura del logo completo Qbexza */
.brand-stacked{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:7px;
  padding:4px 8px 18px;
}
.brand-full{
  width:174px;
  max-width:100%;
  height:auto;
  display:block;
  object-fit:contain;
}
.brand-subtitle{
  font-size:9px;
  text-transform:uppercase;
  letter-spacing:1.75px;
  color:#969aa3;
  font-weight:800;
  padding-left:5px;
}
.login-brand-stacked{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:10px;
}
.login-brand-row img.login-full-logo{
  width:245px;
  max-width:100%;
  height:auto;
  display:block;
  object-fit:contain;
}
.login-brand-mini{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:1.9px;
  color:#8d929d;
  font-weight:800;
  margin-left:5px;
}

/* v1.0.4 — marca integrada: la Q del símbolo forma parte de "Qbexza" */
.brand-integrated{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:7px;
  padding:4px 8px 18px;
}
.brand-row{
  display:flex;
  align-items:center;
  gap:7px;
}
.brand-icon-box{
  width:48px;
  height:48px;
  border-radius:14px;
  background:linear-gradient(145deg,#fff7f8,#ffffff);
  border:1px solid #f1dfe3;
  display:grid;
  place-items:center;
  overflow:hidden;
  flex:0 0 48px;
}
.brand-icon{
  width:43px;
  height:38px;
  object-fit:contain;
  display:block;
}
.brand-wordmark{
  font-size:27px;
  line-height:1;
  font-weight:850;
  letter-spacing:-1.4px;
  color:#111318;
  margin-left:-1px;
}
.brand-integrated .brand-subtitle{
  padding-left:56px;
  margin-top:-1px;
  font-size:9px;
  letter-spacing:1.65px;
}
