:root{
  --bg:#f6f8fb;
  --card:#ffffff;
  --radius:18px;
  --shadow:0 12px 35px rgba(17,24,39,.08);
}
html,body{height:100%;}
body{background:var(--bg);}

.card-soft{
  background:var(--card);
  border:1px solid rgba(0,0,0,.06);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}
.btn-pill{border-radius:999px !important;}

/* Topbar */
.nav-top{
  position:sticky;top:0;z-index:1000;
  background:#fff;
  border-bottom:1px solid rgba(0,0,0,.06);
}

/* Icon rail */
.rail{
  position:fixed;left:0;top:0;bottom:0;
  width:68px;
  background:#101214;
  border-right:1px solid rgba(255,255,255,.08);
  display:flex;flex-direction:column;align-items:center;
  padding:10px 0;
  transition:width .18s ease;
}
.rail .brand{
  width:44px;height:44px;border-radius:14px;
  background:#1d2228;
  display:flex;align-items:center;justify-content:center;
  margin:6px 0 10px;
  gap:10px;
}
.rail a{
  width:44px;height:44px;
  border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  color:#c8d0da;text-decoration:none;
  margin:6px 0;
  gap:10px;
  transition:background .18s ease, color .18s ease, width .18s ease;
}
.rail a.active,.rail a:hover{background:#1d2228;color:#fff;}

.rail .label{
  display:none;
  white-space:nowrap;
  font-weight:600;
  font-size:.92rem;
  letter-spacing:.02em;
}

/* Expandir al pasar el mouse para mostrar nombres */
@media (min-width: 992px){
  .rail:hover{width:220px; align-items:stretch;}
  .rail:hover .brand,
  .rail:hover a{width:auto; justify-content:flex-start; padding:0 14px;}
  .rail:hover .brand{margin-left:12px; margin-right:12px;}
  .rail:hover a{margin-left:12px; margin-right:12px;}
  .rail:hover .label{display:inline;}
  .rail:hover .brand{justify-content:flex-start;}
  .rail:hover .brand i{min-width:18px;}
}

.main{ margin-left:68px; transition:margin-left .18s ease; }

@media (min-width: 992px){
  .rail:hover ~ .main{ margin-left:220px; }
}

/* Mantener el contenido centrado en pantallas grandes/ultrawide */
.container-app{
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  padding-left: 16px;
  padding-right: 16px;
}

/* KPI cards */
.kpi{
  border-radius:18px; color:#fff; overflow:hidden;
  position:relative;
}
.kpi .icon{
  width:44px;height:44px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.18);
}
.kpi::after{
  content:'';
  position:absolute; right:-30px; top:-30px;
  width:120px;height:120px;border-radius:999px;
  background:rgba(255,255,255,.12);
}
.kpi-link{color:inherit;text-decoration:none;}

.table thead th{
  font-size:.78rem;
  letter-spacing:.04em;
  text-transform:uppercase;
  white-space:nowrap;
}
.badge-soft{padding:.45rem .75rem;border-radius:999px;}

/* Responsive: hide table on small, show cards */
@media (max-width: 768px){
  .table-responsive-md{display:none;}
  .cards-mobile{display:block;}
}
@media (min-width: 769px){
  .cards-mobile{display:none;}
}

.card-row{
  border:1px solid rgba(0,0,0,.06);
  border-radius:18px;
  background:#fff;
  box-shadow:0 8px 24px rgba(17,24,39,.06);
  padding:12px;
  margin-bottom:10px;
}
.card-row .top{
  display:flex;justify-content:space-between;gap:10px;
}
.card-row .folio{
  font-weight:700;
  letter-spacing:.08em;
}
.card-row .muted{color:#6b7280;font-size:.9rem;}
.card-row .grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:10px;
  margin-top:10px;
}
.card-row .actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}

/* Print label 62mm */
@media print{
  .no-print{display:none !important;}
}

/* Mobile rail (offcanvas) */
.rail-backdrop{
  position:fixed; inset:0;
  background:rgba(0,0,0,.45);
  z-index:1500;
  display:none;
}
body.rail-open .rail-backdrop{ display:block; }

@media (max-width: 991.98px){
  .main{ margin-left:0!important; }
  .rail{
    width:240px;
    align-items:stretch;
    padding:10px;
    transform:translateX(-110%);
    z-index:1600;
  }
  .rail .brand,
  .rail a{
    width:auto;
    justify-content:flex-start;
    padding:0 14px;
  }
  .rail .label{ display:inline; }
  body.rail-open .rail{ transform:none; }
}


@media (min-width: 992px){
  body.rail-pinned .rail{width:220px; align-items:stretch;}
  body.rail-pinned .rail .brand,
  body.rail-pinned .rail a{width:auto; justify-content:flex-start; padding:0 14px;}
  body.rail-pinned .rail .brand{margin-left:12px; margin-right:12px;}
  body.rail-pinned .rail a{margin-left:12px; margin-right:12px;}
  body.rail-pinned .rail .label{display:inline;}
  body.rail-pinned .main{margin-left:220px;}
}
.chart-card canvas{width:100% !important; height:320px !important;}
.whatsapp-float{position:fixed;right:18px;bottom:18px;z-index:50;width:58px;height:58px;border-radius:999px;background:#25D366;color:#fff;display:grid;place-items:center;text-decoration:none;box-shadow:0 10px 25px rgba(0,0,0,.2);font-size:28px;}


.cards-mobile{display:none;}
.status-chip,
.status-chip-fixed{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  gap:.35rem;
  min-width:132px;
  height:30px;
  padding:0 .9rem;
  border-radius:999px;
  font-weight:700;
  white-space:nowrap;
}
.status-chip-fixed .caret,
.status-chip .caret{font-size:.72rem; line-height:1; opacity:.95;}
.status-dropdown{background:transparent !important; box-shadow:none !important;}
.status-dropdown::after{display:none !important;}
.status-cell{min-width:150px;}
.mobile-stack{display:flex; flex-direction:column; gap:12px;}
.table-responsive.mobile-scroll{overflow-x:auto; -webkit-overflow-scrolling:touch;}
@media (max-width: 768px){
  .cards-mobile{display:block;}
  .desktop-table-only{display:none !important;}
  .card-row .grid{grid-template-columns:1fr 1fr;}
  .card-row .actions .btn,
  .card-row .actions .badge{font-size:.84rem;}
}
@media (max-width: 575.98px){
  .container-app{padding-left:10px; padding-right:10px;}
  .nav-top .container-fluid{padding-left:10px; padding-right:10px;}
  .card-row .grid{grid-template-columns:1fr;}
  .status-chip,
  .status-chip-fixed{min-width:128px;}
}


.templados-btn{background:#22c55e !important;border-color:#22c55e !important;color:#052e16 !important;}
.templados-btn:hover{background:#16a34a !important;border-color:#16a34a !important;color:#fff !important;}

.status-chip,.status-chip-fixed{font-size:.78rem;}

.card-row.compact-card{padding:12px 14px;}
.card-row.compact-card .top{align-items:flex-start;}
.card-row.compact-card .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;}
.card-row.compact-card .meta-line{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 14px;margin-top:10px;}
.card-row.compact-card .actions{gap:6px;}
.card-row.compact-card .actions .btn{width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;}
.card-row.compact-card .actions form{display:inline-flex;}
.card-row.compact-card .actions .btn .label-hide{display:none;}
.card-row.compact-card .mini{font-size:.82rem;color:#6b7280;}
.card-row.compact-dashboard .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;}
.card-row.compact-dashboard .actions .btn{width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;}
.card-row.compact-dashboard .actions .label-hide{display:none;}
.cards-mobile.cards-mobile-dashboard .card-row{padding:12px 14px;}
.cards-mobile.cards-mobile-dashboard .card-row .folio{font-size:1.05rem;}
.cards-mobile.cards-mobile-dashboard .card-row .muted{font-size:.82rem;}

@media (max-width: 768px){
  .chart-card canvas{height:240px !important;}
  .kpi{min-height:116px;}
  .kpi .small:last-child{display:none;}
}
@media (max-width: 575.98px){
  .card-row .grid,
  .card-row.compact-card .grid,
  .card-row.compact-dashboard .grid,
  .card-row.compact-card .meta-line{grid-template-columns:repeat(2,minmax(0,1fr));}
  .card-row{padding:12px;}
  .card-row .top{gap:8px;}
  .card-row .folio{font-size:1rem;}
  .status-chip,.status-chip-fixed{min-width:120px;height:32px;padding:0 .7rem;font-size:.74rem;}
}

.folio-status-badge{font-size:.88rem;padding:.55rem .8rem;border-radius:999px;letter-spacing:.03em;}
.pattern-board{display:grid;grid-template-columns:repeat(3,72px);gap:18px;justify-content:center;background:#3d86be;border-radius:0 0 10px 10px;padding:18px;max-width:290px;}
.pattern-tabs{display:flex;border:1px solid #d6dbe3;border-bottom:none;border-radius:10px 10px 0 0;overflow:hidden;max-width:290px;background:#fff;}
.pattern-tabs span{flex:1;padding:10px 12px;text-align:center;font-size:.95rem;}
.pattern-tabs span.active{background:#f8fafc;font-weight:700;}
.pattern-dot{width:26px;height:26px;border:3px solid #17a300;border-radius:50%;background:#fff;justify-self:center;align-self:center;cursor:pointer;}
.pattern-dot.active{background:#dbeafe;}

.unlock-preview-card{border-color:rgba(37,99,235,.14)!important;background:#f8fbff;}
.pattern-board{
  position:relative;
  width:100%;
  max-width:310px;
  aspect-ratio:1/1;
  background:#3f86bf;
  border-radius:0;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  grid-template-rows:repeat(3,1fr);
  padding:28px;
  gap:24px;
  touch-action:none;
  user-select:none;
}
.pattern-svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
}
.pattern-line{
  stroke:rgba(255,255,255,.78);
  stroke-width:8;
  stroke-linecap:round;
}
.pattern-line-live{stroke:rgba(255,255,255,.5);}
.pattern-dot{
  position:relative;
  z-index:1;
  border:0;
  border-radius:999px;
  background:transparent;
  box-shadow:none;
}
.pattern-dot::before{
  content:'';
  position:absolute;
  inset:50% auto auto 50%;
  width:12px;
  height:12px;
  margin-left:-6px;
  margin-top:-6px;
  background:#fff;
  border-radius:999px;
}
.pattern-dot::after{
  content:'';
  position:absolute;
  inset:50% auto auto 50%;
  width:44px;
  height:44px;
  margin-left:-22px;
  margin-top:-22px;
  border:4px solid transparent;
  border-radius:999px;
}
.pattern-dot.active::after{border-color:#129400;}


.repair-actions-wrap{align-items:center;flex-wrap:nowrap;}
.action-icon-btn{width:36px !important;height:36px !important;min-width:36px !important;padding:0 !important;display:inline-flex !important;align-items:center !important;justify-content:center !important;border-radius:999px !important;line-height:1 !important;}
.action-icon-btn i{margin:0 !important;}


.pattern-dot{position:relative;overflow:visible;}
.pattern-dot::after{content:attr(data-order-label);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#1e3a8a;opacity:0;}
.pattern-dot.active::after{opacity:1;}
.pattern-dot[data-start="1"]::before,
.pattern-dot[data-end="1"]::before{content:attr(data-marker);position:absolute;top:-18px;left:50%;transform:translateX(-50%);background:#111827;color:#fff;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700;line-height:1.5;white-space:nowrap;}
