html{scroll-behavior:smooth;}

:root{
  --bg:#f6f7fb;
  --card:#ffffff;
  --ink:#0f172a;
  --muted:#64748b;
  --border: rgba(2, 6, 23, .08);
  --brand:#111827;
  --accent:#2563eb;
  --accent2:#22c55e;
  --warn:#f59e0b;
  --accent-rgb: 37,99,235;
  --accent2-rgb: 34,197,94;
  --warn-rgb: 245,158,11;
  --glass-bg: rgba(255,255,255,.78);
  --glass-bg-strong: rgba(255,255,255,.90);
  --shadow: 0 8px 24px rgba(2,6,23,.07);
}

html, body{ height:100%; }
body{
  background: radial-gradient(1200px 800px at 20% -10%, rgba(var(--accent-rgb),.14), transparent 60%),
              radial-gradient(900px 700px at 105% 10%, rgba(var(--accent2-rgb),.10), transparent 55%),
              var(--bg);
  color: var(--ink);
}

body::before{
  content:"";
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: var(--wm-opacity, .035);
  background-image: var(--wm-url, url("/static/img/ssg_mark.svg"));
  background-size: var(--wm-size, 240px) var(--wm-size, 240px);
  background-repeat: repeat;
  filter: saturate(var(--wm-saturate, 0));
  transform: rotate(var(--wm-rotate, -10deg));
  z-index: 0;
}

.page-wrap{ position: relative; z-index: 1; }

.brandbar{
  background: var(--glass-bg);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border);
}

.brand{
  display:flex; align-items:center; gap:.6rem;
  font-weight: 800;
  letter-spacing: .2px;
  color: var(--brand);
}
.brand img{
  height: 28px;
  width: auto;
  border-radius: 8px;
}

.cardx{
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: var(--shadow);
}

.hero-title{ font-weight: 800; font-size: 1.05rem; }
.tiny{ font-size: .82rem; color: var(--muted); }
.kbd-hint{
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono","Courier New", monospace;
  background: rgba(2,6,23,.04);
  border: 1px solid rgba(2,6,23,.08);
  padding: .1rem .35rem;
  border-radius: 8px;
  font-size: .78rem;
}



/* Banner automático (carrusel superior) */
.banner-wrap{ }
.banner-carousel{
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  background: #0b1220;
}
.banner-carousel .carousel-item{ position: relative; }

/* Marco del banner: rectangular y responsive */
.banner-frame{
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9; /* móvil */
  background: #0b1220;
}
@media (min-width: 768px){
  .banner-frame{ aspect-ratio: 21 / 9; /* PC: más "banner" */ }
}

/* Fondo difuminado para que nunca se vea "negro" cuando usamos contain */
.banner-frame::before{
  content: "";
  position: absolute;
  inset: -12%;
  background-image: var(--banner-bg);
  background-size: cover;
  background-position: center;
  filter: blur(18px) saturate(1.1);
  transform: scale(1.12);
  opacity: .55;
}

.banner-frame picture,
.banner-frame img{
  position: relative;
  width: 100%;
  height: 100%;
  display: block;
}

.banner-img{
  width: 100%;
  height: 100%;
  object-fit: cover; /* PC */
}

.banner-overlay{
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1rem;
  background: linear-gradient(to top, rgba(0,0,0,.65), rgba(0,0,0,0) 65%);
  color: #fff;
}
.banner-title{
  font-weight: 900;
  letter-spacing: .2px;
  font-size: 1.05rem;
  text-shadow: 0 8px 20px rgba(0,0,0,.35);
}
.banner-subtitle{
  opacity: .88;
  font-size: .92rem;
  text-shadow: 0 8px 20px rgba(0,0,0,.35);
}
.banner-carousel .carousel-indicators [data-bs-target]{
  width: 10px; height: 10px; border-radius: 999px;
}
@media (min-width: 768px){
  .banner-title{ font-size: 1.35rem; }
}

/* Móvil: mostramos la imagen completa sin corte (y el fondo queda "lindo" gracias al blur) */
@media (max-width: 576px){
  .banner-img{ object-fit: contain; }
  .banner-overlay{ padding: .75rem .85rem; }
  .banner-title{ font-size: 1.02rem; }
  .banner-subtitle{ font-size: .88rem; }
}

.promo-strip{
  display:flex; gap:.6rem; overflow:auto; padding-bottom:.25rem;
  scroll-snap-type:x mandatory;
}
.promo-strip::-webkit-scrollbar{ height:6px; }
.promo-strip::-webkit-scrollbar-thumb{ background:rgba(2,6,23,.18); border-radius:999px; }

.promo-card{
  min-width:170px; max-width:170px;
  border-radius: 14px;
  overflow:hidden;
  scroll-snap-align:start;
  border:1px solid var(--border);
  background:#fff;
  padding:0;
}
.promo-card img{ height:92px; object-fit:cover; width:100%; display:block; }
.promo-card .body{ padding:.55rem; }
.promo-card .t{ font-weight:800; font-size:.92rem; line-height:1.15; }
.promo-card .s{ font-size:.8rem; color: var(--muted); }

.bottom-nav{
  position: fixed;
  left:0; right:0; bottom:0;
  background: var(--glass-bg-strong);
  backdrop-filter: blur(10px);
  border-top: 1px solid var(--border);
  padding: .48rem .6rem;
  z-index: 1030;
}
.bottom-nav a{
  text-decoration:none;
  color: var(--ink);
  display:flex; flex-direction:column; align-items:center; gap:.12rem;
  font-size:.72rem;
}
.bottom-nav i{ font-size: 1.15rem; }

.page-pad{ padding-bottom: 84px; }

.modal-fullscreen .modal-content{
  background: #0b1220;
  color: #fff;
}
.modal-fullscreen .btn-close{ filter: invert(1); opacity:.95; }
.promo-slide-img{
  width:100%;
  max-height: 70vh;
  object-fit: contain;
  background: #0b1220;
  border-radius: 16px;
}

.status-pill{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  border-radius: 999px;
  padding: .65rem .9rem;
  font-weight: 800;
  font-size: 1rem;
}
.status-ok{ background: rgba(var(--accent2-rgb),.15); color: var(--accent2); border:1px solid rgba(var(--accent2-rgb),.35); }
.status-wait{ background: rgba(var(--warn-rgb),.18); color: var(--warn); border:1px solid rgba(var(--warn-rgb),.35); }
.status-proc{ background: rgba(var(--accent-rgb),.15); color: var(--accent); border:1px solid rgba(var(--accent-rgb),.35); }
.status-no{ background: rgba(148,163,184,.18); color: var(--ink); border:1px solid rgba(148,163,184,.28); }


.minicard{ background: var(--card); border: 1px solid var(--border); border-radius: 12px; }


/* Desktop: promos as grid (minimal e-commerce feel) */
@media (min-width: 768px){
  .promo-strip{ overflow: visible; flex-wrap: wrap; }
  .promo-card{ flex: 0 0 calc(33.333% - .6rem); scroll-snap-align: unset; min-width: 0; }
}


/* Button theme overrides (pedido: botón negro / estilo minimal) */
.btn-primary{
  background-color: var(--brand) !important;
  border-color: var(--brand) !important;
  color: #fff !important;
}
.btn-primary:hover, .btn-primary:focus{
  filter: brightness(.92);
}
.btn-outline-primary{
  color: var(--brand) !important;
  border-color: rgba(17,24,39,.35) !important;
}
.btn-outline-primary:hover, .btn-outline-primary:focus{
  background-color: rgba(17,24,39,.08) !important;
}

/* ===== Estado OT: caja pastel por estado ===== */
.status-box{
  border-radius: 18px;
  border: 1px solid rgba(148,163,184,.25);
  background: rgba(148,163,184,.10);
}
.status-box-wait{ background: rgba(var(--warn-rgb),.18); border-color: rgba(var(--warn-rgb),.35); }
.status-box-proc{ background: rgba(var(--accent-rgb),.14); border-color: rgba(var(--accent-rgb),.35); }
.status-box-ok{ background: rgba(var(--accent2-rgb),.14); border-color: rgba(var(--accent2-rgb),.35); }
.status-box-no{ background: rgba(248,113,113,.10); border-color: rgba(248,113,113,.22); }
.status-box-other{ background: rgba(148,163,184,.10); border-color: rgba(148,163,184,.25); }

.status-pill-lg{
  font-size: 1.15rem;
  padding: .72rem 1rem;
}

.result-ot{
  font-weight: 900;
  font-size: 1.1rem;
  letter-spacing: .2px;
}

.ready-note{
  font-weight: 850;
  font-size: 1.05rem;
  padding: .75rem .9rem;
  border-radius: 14px;
  background: rgba(255,255,255,.55);
  border: 1px solid rgba(148,163,184,.22);
}
