.labos-launcher,
.labos-launcher *{box-sizing:border-box}
.labos-launcher{
  --labos-bg-card:rgba(15,23,42,0.55);
  --labos-border:rgba(255,255,255,0.08);
  --labos-border-strong:rgba(255,255,255,0.14);
  --labos-text:#f1f5f9;
  --labos-text-muted:#94a3b8;
  --labos-text-faint:#94a3b8;
  --labos-text-hint:#64748b;
  --labos-accent:#60a5fa;
  --labos-accent-bg:rgba(96,165,250,0.12);
  --labos-success:#4ade80;
  --labos-success-bg:rgba(34,197,94,0.12);
  --labos-surface-muted:rgba(255,255,255,0.06);
  --labos-radius-lg:18px;
  --labos-radius-md:14px;
  --labos-radius-sm:10px;
  position:relative;
  overflow:hidden;
  min-height:100vh;
  padding:64px 56px 48px;
  background-image:var(--labos-bg-url);
  background-size:cover;
  background-position:center center;
  background-attachment:fixed;
  background-color:#0a1628;
  color:var(--labos-text);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Inter",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
/* Overlay oscuro sobre la imagen de fondo */
.labos-launcher::before{
  content:'';position:absolute;pointer-events:none;z-index:0;
  top:0;right:0;bottom:0;left:0;
  background:rgba(10,22,40,0.35);
}
/* Gradiente sutil en la parte inferior para mejorar legibilidad del admin bar */
.labos-launcher::after{
  content:'';position:absolute;pointer-events:none;z-index:0;
  bottom:0;left:0;right:0;height:220px;
  background:linear-gradient(to top,rgba(10,22,40,0.5) 0%,transparent 100%);
}
.labos-launcher__ambient{display:none}
.labos-launcher__header,.labos-launcher__hero,.labos-launcher__grid,.labos-admin-bar{
  position:relative;z-index:1;max-width:1400px;margin:0 auto;
}
.labos-launcher__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:96px}
.labos-launcher__brand{display:flex;align-items:center;gap:14px}
.labos-launcher__logo{width:40px;height:40px}
.ribes-logo-hex{object-fit:contain;display:block}
.labos-launcher__brand-name{font-size:24px;font-weight:500;letter-spacing:-.01em;line-height:1.2;color:#e2e8f0}
.labos-launcher__user{display:flex;align-items:center;gap:14px;font-size:14px;color:#94a3b8}
.labos-launcher__user-action{
  display:flex;align-items:center;justify-content:center;width:40px;height:40px;
  border-radius:50%;background:rgba(15,23,42,0.55);
  border:1px solid rgba(255,255,255,0.1);color:#94a3b8;
  text-decoration:none;transition:all 150ms ease;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.labos-launcher__user-action:hover{background:rgba(255,255,255,0.1);color:#f1f5f9}
.labos-launcher__hero{text-align:center;margin-bottom:72px}
.labos-launcher__greeting{
  font-size:clamp(36px,4vw,56px);font-weight:500;letter-spacing:-.025em;
  margin:0 0 12px;line-height:1.1;color:#f1f5f9;
}
.labos-launcher__greeting-name{font-weight:500;color:#f1f5f9}
.labos-launcher__subtitle{font-size:17px;color:#94a3b8;margin:0;font-weight:400}
.labos-launcher__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:64px}
.labos-tile{
  position:relative;display:flex;flex-direction:column;gap:18px;padding:28px;
  background:rgba(255,255,255,0.75);
  backdrop-filter:blur(20px) saturate(140%);
  -webkit-backdrop-filter:blur(20px) saturate(140%);
  border:1px solid rgba(0,0,0,0.07);
  box-shadow:0 8px 32px rgba(0,0,0,0.18);
  border-radius:var(--labos-radius-lg);color:#1e293b;text-decoration:none;
  transition:all 220ms cubic-bezier(0.4,0,0.2,1);min-height:200px;
}
.labos-tile--featured{
  grid-column:1/-1;flex-direction:row;align-items:center;gap:28px;
  min-height:auto;padding:36px 40px;
  background:rgba(255,255,255,0.80);
  border:1px solid rgba(96,165,250,0.45);
  backdrop-filter:blur(20px) saturate(140%);
  -webkit-backdrop-filter:blur(20px) saturate(140%);
}
a.labos-tile:not(.labos-tile--featured):hover{
  transform:translateY(-2px);
  box-shadow:0 12px 36px rgba(0,0,0,0.22);
  border-color:rgba(0,0,0,0.12);
  background:rgba(255,255,255,0.88);
}
a.labos-tile--featured:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 40px rgba(96,165,250,0.15);
  border-color:rgba(96,165,250,0.45);
}
.labos-tile--coming-soon{
  cursor:default;position:relative;overflow:hidden;opacity:0.55;
}
.labos-tile--coming-soon::after{
  content:'';position:absolute;bottom:0;left:0;height:2px;width:0%;
  background:linear-gradient(90deg,rgba(96,165,250,0.5),transparent);
  transition:width 320ms ease;
}
.labos-tile--coming-soon:hover{opacity:0.7}
.labos-tile--coming-soon:hover::after{width:30%}
/* Locked: módulo construido pero no contratado */
.labos-tile--locked{cursor:not-allowed;opacity:0.4;}
.labos-tile--locked:hover{opacity:0.4}
.labos-tile--locked::after{
  content:attr(data-tooltip);
  position:absolute;left:50%;bottom:calc(100% + 8px);
  transform:translateX(-50%);
  background:rgba(15,23,42,0.95);color:#e2e8f0;
  font-size:12px;padding:8px 12px;border-radius:8px;
  white-space:nowrap;
  opacity:0;pointer-events:none;
  transition:opacity 150ms ease;
  z-index:10;
  box-shadow:0 4px 12px rgba(0,0,0,0.4);
  border:1px solid rgba(255,255,255,0.1);
}
.labos-tile--locked:hover::after{opacity:1}
.labos-tile__badge--locked{
  background:rgba(148,163,184,0.1);
  color:var(--labos-text-hint);
  font-size:10px;letter-spacing:.1em;
  font-weight:500;padding:3px 8px;
  border-radius:999px;border:1px solid rgba(148,163,184,0.2);
}
.labos-tile__icon{
  display:flex;align-items:center;justify-content:center;width:52px;height:52px;
  border-radius:var(--labos-radius-sm);background:rgba(0,0,0,0.05);
  color:#64748b;flex-shrink:0;
}
.labos-tile__icon svg{width:26px;height:26px}
.labos-tile--featured .labos-tile__icon{
  position:relative;
  width:72px;height:72px;border-radius:var(--labos-radius-md);
  background:var(--labos-accent-bg);color:var(--labos-accent);
}
.labos-tile--featured .labos-tile__icon::before{
  content:'';position:absolute;inset:0;
  background:rgba(96,165,250,0.15);
  border-radius:12px;filter:blur(14px);
  transform:scale(0.85);z-index:0;
}
.labos-tile--featured .labos-tile__icon svg{
  position:relative;z-index:1;width:36px;height:36px;
}
.labos-tile__body{flex:1;min-width:0}
.labos-tile__label{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:500;letter-spacing:-.005em;margin-bottom:4px;color:#0f172a}
.labos-tile--featured .labos-tile__label{font-size:22px}
.labos-tile__badge{
  font-size:11px;font-weight:500;padding:3px 10px;border-radius:999px;
  background:var(--labos-success-bg);color:var(--labos-success);
  letter-spacing:.04em;text-transform:uppercase;
  border:1px solid rgba(74,222,128,0.2);
}
.labos-tile--coming-soon .labos-tile__badge{
  background:#f1f5f9;
  color:#64748b;
  border:1px solid #e2e8f0;
  padding:3px 10px;
  font-size:10px;letter-spacing:.1em;font-weight:500;
}
.labos-tile__badge--internal{
  background:rgba(167,139,250,0.15);color:#a78bfa;
  font-size:10px;font-weight:600;
  padding:2px 8px;border-radius:999px;letter-spacing:.04em;
  border:1px solid rgba(167,139,250,0.25);
}
.labos-tile__desc{font-size:14px;color:#475569;line-height:1.45}
.labos-tile--featured .labos-tile__desc{font-size:15px;color:#475569}
.labos-tile__arrow{
  display:flex;align-items:center;justify-content:center;width:40px;height:40px;
  color:#64748b;flex-shrink:0;transition:all 150ms ease;
}
.labos-tile__arrow svg{width:22px;height:22px}
a.labos-tile:hover .labos-tile__arrow{color:#0f172a;transform:translateX(3px)}
/* Y9 — barra inferior Sistema/Admin */
.labos-admin-bar{
  display:flex;align-items:center;gap:12px;
  margin-top:32px;padding:0 4px;
}
.labos-admin-bar__spacer{flex:1}

/* Badge Sistema activo */
.labos-admin-bar__status{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 18px;
  background:rgba(34,197,94,0.12);color:#4ade80;
  border:1px solid rgba(74,222,128,0.2);
  border-radius:10px;
  font-size:14px;font-weight:500;
  flex-shrink:0;white-space:nowrap;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.labos-admin-bar__status-dot{
  width:8px;height:8px;border-radius:50%;
  background:currentColor;
}
.labos-admin-bar__status-version{
  font-family:var(--labos-font-mono,ui-monospace,monospace);
  font-size:13px;opacity:0.6;margin-left:4px;
}

/* Items: cards mini */
.labos-admin-bar__item{
  display:inline-flex;align-items:center;gap:12px;
  padding:12px 18px;
  background:rgba(15,23,42,0.55);
  border:1px solid rgba(255,255,255,0.08);
  border-radius:10px;text-decoration:none;
  transition:border-color 150ms ease,background-color 150ms ease,transform 50ms ease;
  min-height:56px;box-sizing:border-box;
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
}
.labos-admin-bar__item-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;color:inherit;flex-shrink:0;
}
.labos-admin-bar__item-icon svg{width:22px;height:22px;stroke-width:1.75}
.labos-admin-bar__item-text{display:flex;flex-direction:column;gap:2px;line-height:1.2}
.labos-admin-bar__item-title{font-size:14px;font-weight:500;color:#e2e8f0}
.labos-admin-bar__item-subtitle{font-size:11px;color:#94a3b8;letter-spacing:0.2px}

/* Variante FUNCIONAL: Mi laboratorio */
.labos-admin-bar__item--active{
  background:rgba(37,99,235,0.18);
  border-color:rgba(96,165,250,0.3);
}
.labos-admin-bar__item--active .labos-admin-bar__item-icon{color:#60a5fa}
.labos-admin-bar__item--active .labos-admin-bar__item-title{color:#bfdbfe}
.labos-admin-bar__item--active .labos-admin-bar__item-subtitle{color:#93c5fd;opacity:0.85}
.labos-admin-bar__item--active:hover{
  border-color:rgba(96,165,250,0.5);
  background:rgba(37,99,235,0.28);
}
.labos-admin-bar__item--active:active{transform:scale(0.99)}

/* Variante PLACEHOLDER: Usuarios, Soporte */
.labos-admin-bar__item--placeholder{cursor:not-allowed;opacity:0.4}
.labos-admin-bar__item--placeholder .labos-admin-bar__item-icon{color:#64748b}
.labos-admin-bar__item--placeholder .labos-admin-bar__item-title{color:#94a3b8}
.labos-admin-bar__item--placeholder .labos-admin-bar__item-subtitle{
  color:#64748b;text-transform:uppercase;font-size:10px;letter-spacing:0.5px;
}

/* Fallback sin backdrop-filter (Firefox sin flag, algunas versiones antiguas) */
@supports not (backdrop-filter:blur(1px)){
  .labos-tile{background:rgba(255,255,255,0.90);}
  .labos-tile--featured{background:rgba(255,255,255,0.93);}
  .labos-admin-bar__item{background:rgba(15,23,42,0.88);}
  .labos-launcher__user-action{background:rgba(15,23,42,0.88);}
}

@media (max-width:1100px){
  .labos-launcher{padding:48px 32px 32px}
  .labos-launcher__header{margin-bottom:64px}
  .labos-launcher__hero{margin-bottom:56px}
  .labos-tile{min-height:170px;padding:24px}
  .labos-tile--featured{padding:28px 32px}
}
@media (max-width:768px){
  .labos-launcher{padding:32px 16px 24px}
  .labos-launcher__header{margin-bottom:40px}
  .labos-launcher__hero{margin-bottom:36px}
  .labos-launcher__grid{grid-template-columns:1fr 1fr;gap:12px}
  .labos-tile{padding:20px;min-height:140px}
  .labos-tile--featured{flex-direction:column;align-items:flex-start;gap:16px;padding:24px}
}
@media (max-width:720px){
  /* Fix iOS jank: background-attachment:fixed no funciona bien en Safari mobile */
  .labos-launcher{background-attachment:scroll}
  /* Y9 — admin bar stack vertical en mobile, items full width */
  .labos-admin-bar{flex-direction:column;align-items:stretch;gap:8px}
  .labos-admin-bar__spacer{display:none}
  .labos-admin-bar__status{justify-content:center}
  .labos-admin-bar__item{width:100%}
}
@media (max-width:480px){.labos-launcher__grid{grid-template-columns:1fr}}
