/**
 * Xico — componentes y compatibilidad legacy (PHP puro, sin build).
 * Usar junto con Tailwind CDN. Variables alineadas al tema institucional.
 */
:root {
  --xico-vino: #6b0030;
  --xico-vino-dark: #4d001f;
  --xico-magenta: #b12560;
  --xico-oro: #d39a3d;
  --xico-bg: #fbf7fb;
  --xico-border: #e2e8f0;
  --xico-muted: #64748b;
  --xico-text: #1d2433;
  --xico-sidebar: 260px;
}

/* Anular max-width legacy en bundles v2_4 */
.citizen-main-inner,
.citizen-page-wrap,
.xico-shell,
.xico-page,
.vsc-shell {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* ── Sticky footer (pie al borde inferior de la ventana) ── */
html { height: 100%; }
body.xico-sticky-footer {
  min-height: 100%;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
}
body.xico-sticky-footer > main,
body.xico-sticky-footer .xico-app-main {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
}
body.xico-sticky-footer .xico-citizen-layout {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
}

/* Sidebar + contenido: grid en desktop (resta ancho del menú) */
@media (min-width: 1024px) {
  .xico-citizen-layout {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
  }
  #citizenSidebar[data-xico-nav-panel] {
    position: relative;
    inset: auto;
    transform: none;
    width: auto;
    min-height: 100%;
  }
}
.xico-footer,
.vsc-footer,
footer.doc-footer {
  margin-top: auto;
  width: 100%;
  padding-top: 2.5rem;
  padding-bottom: 1.25rem;
  border-top: 1px solid var(--xico-border);
  color: var(--xico-muted);
  font-size: 0.875rem;
  line-height: 1.5;
}
.xico-footer-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1rem;
}
.xico-footer-inner strong { color: var(--xico-vino); font-weight: 800; }
@media (max-width: 640px) {
  .xico-footer-inner { flex-direction: column; align-items: flex-start; }
}

/* ── Grid legacy ── */
.vsc-grid, .xico-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1.125rem; }
.vsc-col-12, .xico-col-12 { grid-column: span 12; }
.vsc-col-6, .xico-col-6 { grid-column: span 6; }
.vsc-col-4, .xico-col-4 { grid-column: span 4; }
.vsc-col-3, .xico-col-3 { grid-column: span 3; }

/* ── Cards ── */
.vsc-card, .xico-card {
  background: #fff; border: 1px solid var(--xico-border); border-radius: 1.375rem;
  box-shadow: 0 10px 28px rgba(68,18,45,.08); overflow: hidden; margin-bottom: 1.25rem;
}
.vsc-card-head, .xico-card-head {
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  padding: 1.125rem 1.375rem; border-bottom: 1px solid var(--xico-border);
}
.vsc-card-head h2, .xico-card-head h2 { margin: 0; color: var(--xico-vino); font-size: 1.25rem; font-weight: 900; }
.vsc-card-body, .xico-card-body { padding: 1.5rem; }

/* ── Stats ── */
.vsc-stat, .xico-stat-card {
  display: flex; align-items: center; gap: .875rem; background: #fff;
  border: 1px solid var(--xico-border); border-radius: 1.125rem; padding: 1.125rem;
  box-shadow: 0 10px 28px rgba(68,18,45,.08); min-height: 100px;
}
.vsc-stat-icon {
  width: 3.375rem; height: 3.375rem; border-radius: 1rem; display: grid; place-items: center;
  background: #f8e6ef; color: var(--xico-vino); font-size: 1.55rem; flex-shrink: 0;
}
.vsc-stat-label, .xico-stat-card__label { display: block; color: var(--xico-muted); font-weight: 700; font-size: .94rem; }
.vsc-stat-value, .xico-stat-card__value { display: block; font-weight: 900; font-size: 1.25rem; line-height: 1.15; margin-top: 2px; }

/* ── Botones ── */
.btn-xico, .vsc-btn-primary {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: 2.625rem; padding: .625rem 1rem; border-radius: .75rem; border: 1px solid transparent;
  text-decoration: none; font-weight: 900; font-size: .94rem; cursor: pointer; color: #fff;
  background: linear-gradient(135deg, var(--xico-vino), var(--xico-magenta));
  box-shadow: 0 10px 20px rgba(107,0,48,.18); transition: transform .15s, box-shadow .15s;
}
.btn-oro {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: 2.625rem; padding: .625rem 1rem; border-radius: .75rem; border: none;
  text-decoration: none; font-weight: 900; font-size: .94rem; cursor: pointer; color: #fff;
  background: linear-gradient(135deg, #b86f38, var(--xico-oro));
}
.btn-outline-xico, .vsc-btn-outline {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: 2.625rem; padding: .625rem 1rem; border-radius: .75rem;
  border: 1px solid #d9adc3; background: #fff; color: var(--xico-vino);
  text-decoration: none; font-weight: 900; font-size: .94rem; cursor: pointer;
}
.btn-xico:hover, .btn-oro:hover, .btn-outline-xico:hover { transform: translateY(-1px); }

/* ── Alertas ── */
.vsc-alert, .xico-alert { border-radius: .875rem; padding: .75rem 1rem; margin-bottom: 1rem; font-weight: 700; border: 1px solid transparent; }
.xico-alert-danger, .vsc-alert-danger { background: #fff1f2; border-color: #fecdd3; color: #b42318; }
.xico-alert-success, .vsc-alert-success { background: #ecfdf3; border-color: #bbf7d0; color: #166534; }

/* ── Formularios (base; ver xico-forms.css para estilo Algolia completo) ── */
.vsc-actions, .xico-actions { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; margin-top: 1.125rem; }

/* ── Admin legacy ── */
.adm-card { background: #fff; border: 1px solid #eadfce; border-radius: 1.5rem; padding: 1.375rem; box-shadow: 0 10px 28px rgba(63,18,29,.06); }
.adm-card-head { display: flex; justify-content: space-between; align-items: center; gap: .75rem; margin-bottom: .875rem; }
.adm-card-head h2, .adm-card-head h3 { margin: 0; color: var(--xico-vino); }
.stat-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1rem; margin-bottom: 1.125rem; }
.stat-card { grid-column: span 3; background: #fff; border: 1px solid #eadfce; border-radius: 1.375rem; padding: 1.125rem; }
.stat-label { color: #7b7280; font-weight: 700; font-size: .92rem; }
.stat-value { font-size: 2rem; font-weight: 900; color: var(--xico-vino); margin-top: 4px; }
.adm-btn { display: inline-flex; align-items: center; justify-content: center; padding: .625rem 1rem; border-radius: .875rem; font-weight: 800; text-decoration: none; cursor: pointer; border: 1px solid transparent; font-size: .94rem; }
.adm-btn-primary { background: var(--xico-vino); color: #fff; }
.adm-btn-primary:hover { background: var(--xico-vino-dark); }
.adm-btn-outline { background: #fff; color: var(--xico-vino); border-color: var(--xico-vino); }
.adm-btn-danger { background: #fff; color: #b42318; border-color: #fecaca; }
.adm-btn-small { padding: .375rem .75rem; font-size: .86rem; border-radius: .625rem; }
.adm-table-shell { background: #fff; border: 1px solid #eadfce; border-radius: 1.5rem; overflow: hidden; }
.adm-table { width: 100%; border-collapse: collapse; }
.adm-table th, .adm-table td { padding: .875rem 1rem; border-bottom: 1px solid #f1e2cb; text-align: left; vertical-align: top; }
.adm-table th { background: #fffaf4; color: var(--xico-vino); font-size: .88rem; text-transform: uppercase; letter-spacing: .04em; }
.adm-table tr:hover td { background: #fffaf4; }
.adm-badge { display: inline-flex; padding: .375rem .75rem; border-radius: 999px; font-weight: 800; font-size: .78rem; }
.adm-badge-ok { background: #e8f7ee; color: #166534; }
.adm-badge-warn { background: #fff7ed; color: #9a3412; }
.adm-badge-danger { background: #fff1f2; color: #b42318; }
.adm-badge-info { background: #eef2ff; color: #3730a3; }
.adm-badge-muted { background: #f3f4f6; color: #6b7280; }
.adm-alert { padding: .875rem 1rem; border-radius: .875rem; margin-bottom: .875rem; font-weight: 600; }
.adm-alert-ok { background: #e8f7ee; color: #166534; border: 1px solid #bbf7d0; }
.adm-alert-error { background: #fff1f2; color: #b42318; border: 1px solid #fecaca; }
.adm-alert-info { background: #eef2ff; color: #3730a3; border: 1px solid #c7d2fe; }
.adm-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1rem; }
.adm-col-3 { grid-column: span 3; } .adm-col-4 { grid-column: span 4; } .adm-col-5 { grid-column: span 5; }
.adm-col-6 { grid-column: span 6; } .adm-col-7 { grid-column: span 7; } .adm-col-8 { grid-column: span 8; }
.adm-col-12 { grid-column: span 12; }
.adm-field { display: flex; flex-direction: column; gap: .375rem; margin-bottom: .875rem; }
.adm-field label { font-weight: 700; font-size: .92rem; color: #374151; }
.adm-actions { display: flex; flex-wrap: wrap; gap: .625rem; margin-top: 1rem; }
.adm-toolbar { display: flex; flex-wrap: wrap; gap: .625rem; }
.adm-empty { padding: 1.875rem; text-align: center; color: #7b7280; }

/* ── Badges estatus solicitudes ── */
.badge-recibido, .st-recibido { background: #eef2ff; color: #3730a3; }
.badge-proceso, .st-proceso { background: #fff7ed; color: #9a3412; }
.badge-atendido, .st-atendido { background: #ecfdf3; color: #166534; }
.badge-rechazado, .st-rechazado { background: #fff1f2; color: #b42318; }
.badge-recibido, .badge-proceso, .badge-atendido, .badge-rechazado,
.st-recibido, .st-proceso, .st-atendido, .st-rechazado {
  display: inline-flex; padding: .375rem .75rem; border-radius: 999px; font-weight: 800; font-size: .78rem;
}

/* ── Accesibilidad ── */
.visually-hidden-focusable { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.visually-hidden-focusable:focus {
  position: static; width: auto; height: auto; padding: .5rem .75rem;
  background: var(--xico-vino); color: #fff; border-radius: .375rem; display: inline-block; margin: .5rem;
}

@media (max-width: 1024px) {
  .vsc-col-6, .vsc-col-4, .vsc-col-3, .xico-col-6, .xico-col-4, .xico-col-3 { grid-column: span 12; }
  .stat-card { grid-column: span 6; }
  .adm-col-3, .adm-col-4, .adm-col-6 { grid-column: span 12; }
}
@media (max-width: 700px) {
  .stat-card, .adm-col-3, .adm-col-4, .adm-col-5, .adm-col-6, .adm-col-7, .adm-col-8 { grid-column: span 12; }
}

/* ── Detalle solicitud (ver_solicitud.php) ── */
.vsc-vs-hero {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1.25rem;
  background: linear-gradient(135deg, var(--xico-vino), var(--xico-magenta) 62%, var(--xico-oro) 140%);
  border-radius: 1.875rem; color: #fff; padding: 1.75rem; box-shadow: 0 18px 48px rgba(107,0,48,.12);
  margin-bottom: 1.125rem; position: relative; overflow: hidden;
}
.vsc-vs-kicker { display: inline-flex; padding: .4375rem .75rem; border-radius: 999px; background: rgba(255,255,255,.16); font-weight: 900; font-size: .82rem; }
.vsc-vs-hero h1 { font-size: clamp(1.8rem, 3vw, 2.65rem); line-height: 1.05; margin: .75rem 0 .5rem; }
.vsc-vs-hero p { margin: 0; opacity: .92; max-width: 760px; }
.vsc-vs-status { display: inline-flex; align-items: center; border-radius: 999px; padding: .6875rem 1rem; font-weight: 950; background: #fff; color: var(--xico-vino); border: 1px solid rgba(255,255,255,.35); }
.vsc-vs-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .875rem; margin-bottom: 1.125rem; }
.vsc-vs-mini-card, .vsc-vs-card { background: rgba(255,255,255,.94); border: 1px solid var(--xico-border); border-radius: 1.5rem; box-shadow: 0 10px 28px rgba(68,18,45,.08); }
.vsc-vs-mini-card { padding: 1.125rem; }
.vsc-vs-mini-card span { display: block; color: var(--xico-muted); font-size: .78rem; text-transform: uppercase; font-weight: 900; }
.vsc-vs-mini-card strong { display: block; margin-top: .375rem; color: var(--xico-vino); font-size: 1.05rem; }
.vsc-vs-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1.125rem; margin-bottom: 1.125rem; }
.vsc-vs-col-8 { grid-column: span 8; } .vsc-vs-col-4 { grid-column: span 4; }
.vsc-vs-col-7 { grid-column: span 7; } .vsc-vs-col-5 { grid-column: span 5; }
.vsc-vs-card { padding: 1.25rem; margin-bottom: 1.125rem; }
.vsc-vs-card-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; border-bottom: 1px solid var(--xico-border); padding-bottom: .875rem; margin-bottom: 1rem; }
.vsc-vs-card-head h2 { margin: 0; color: var(--xico-vino); font-size: 1.15rem; }
.vsc-vs-detail-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .875rem; }
.vsc-vs-detail { background: #fffafc; border: 1px solid var(--xico-border); border-radius: 1.125rem; padding: .875rem; }
.vsc-vs-detail.full { grid-column: 1 / -1; }
.vsc-vs-detail span { display: block; color: var(--xico-muted); font-weight: 900; text-transform: uppercase; font-size: .76rem; }
.vsc-vs-detail strong, .vsc-vs-detail p { display: block; margin: .375rem 0 0; line-height: 1.45; }
.vsc-vs-timeline { padding-left: 4px; }
.vsc-vs-step { display: grid; grid-template-columns: 42px 1fr; gap: .75rem; position: relative; margin-bottom: 1.125rem; }
.vsc-vs-step:before { content: ""; position: absolute; left: 20px; top: 42px; bottom: -18px; width: 3px; background: #f1c8d8; }
.vsc-vs-step:last-child:before { display: none; }
.vsc-vs-step i { width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center; background: #fff; border: 3px solid #f1c8d8; color: var(--xico-vino); font-style: normal; font-weight: 950; }
.vsc-vs-step.done i { background: #15803d; border-color: #15803d; color: #fff; }
.vsc-vs-step.active i { background: var(--xico-vino); border-color: var(--xico-magenta); color: #fff; }
.vsc-vs-map { height: 340px; border-radius: 1.375rem; border: 1px solid var(--xico-border); overflow: hidden; }
.vsc-vs-history { display: grid; gap: .75rem; }
.vsc-vs-history-item { border: 1px solid var(--xico-border); border-radius: 1.125rem; background: #fff; padding: .875rem; }
.vsc-vs-history-item.soft { background: #fffafc; }
.vsc-vs-history-item .top { display: flex; justify-content: space-between; gap: .625rem; }
.vsc-vs-history-item strong { color: var(--xico-vino); }
.vsc-vs-history-item span { font-size: .86rem; color: var(--xico-muted); }
.vsc-vs-link { display: inline-flex; margin-top: .625rem; color: var(--xico-vino); font-weight: 900; text-decoration: none; }
.vsc-vs-files { display: grid; gap: .75rem; }
.vsc-vs-file { display: flex; align-items: center; gap: .8125rem; border: 1px solid var(--xico-border); border-radius: 1.125rem; padding: .8125rem; background: #fff; }
.vsc-vs-file .icon { width: 52px; height: 52px; border-radius: 1rem; display: grid; place-items: center; background: #fff0f6; color: var(--xico-vino); font-weight: 950; }
.vsc-vs-file.qr img { width: 78px; height: 78px; object-fit: contain; background: #fff; border-radius: .875rem; border: 1px solid #eee; padding: 5px; }
.vsc-vs-file a { display: inline-flex; margin-top: 5px; color: var(--xico-vino); font-weight: 950; text-decoration: none; }
.vsc-vs-doc-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .875rem; }
.vsc-vs-doc { border: 1px solid var(--xico-border); border-radius: 1.125rem; background: #fff; padding: .875rem; }
.vsc-vs-actions { display: flex; gap: .625rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.vsc-vs-btn { display: inline-flex; align-items: center; justify-content: center; border-radius: .9375rem; padding: .75rem 1rem; font-weight: 950; text-decoration: none; border: 1px solid transparent; cursor: pointer; }
.vsc-vs-btn.primary { background: linear-gradient(135deg, var(--xico-vino), var(--xico-magenta)); color: #fff; }
.vsc-vs-btn.secondary { background: #fff; color: var(--xico-vino); border-color: var(--xico-border); }
.vsc-vs-empty { padding: 2.625rem; text-align: center; }
.vsc-vs-empty-icon { width: 64px; height: 64px; border-radius: 1.375rem; background: #fff0f6; color: var(--xico-vino); display: grid; place-items: center; margin: 0 auto .75rem; font-size: 2rem; font-weight: 950; }
.vsc-vs-empty-inline { border: 1px dashed var(--xico-border); border-radius: 1rem; padding: 1rem; color: var(--xico-muted); background: #fffafc; }
@media (max-width: 1100px) {
  .vsc-vs-summary-grid { grid-template-columns: repeat(2, 1fr); }
  .vsc-vs-col-8, .vsc-vs-col-4, .vsc-vs-col-7, .vsc-vs-col-5 { grid-column: span 12; }
  .vsc-vs-doc-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 680px) {
  .vsc-vs-hero { display: block; }
  .vsc-vs-status { margin-top: .875rem; }
  .vsc-vs-summary-grid, .vsc-vs-detail-grid, .vsc-vs-doc-grid { grid-template-columns: 1fr; }
  .vsc-vs-actions { display: grid; }
  .vsc-vs-btn { width: 100%; }
}

/* ── Dirección legacy ── */
.dir-hero {
  position: relative; overflow: hidden; border-radius: 2rem; padding: 1.75rem; margin-bottom: 1.25rem;
  background: linear-gradient(135deg, var(--xico-vino), #a62c47 45%, var(--xico-oro));
  color: #fff; box-shadow: 0 20px 44px rgba(63,18,29,.18);
}
.table-shell { background: #fff; border: 1px solid #eadfce; border-radius: 1.5rem; overflow: hidden; box-shadow: 0 10px 28px rgba(63,18,29,.06); }
.table-shell table { width: 100%; border-collapse: collapse; }
.table-shell th, .table-shell td { padding: .875rem 1rem; border-bottom: 1px solid #f1e2cb; text-align: left; }
.table-shell th { background: #fffaf4; color: var(--xico-vino); }
.badge-dir { display: inline-flex; padding: .375rem .75rem; border-radius: 999px; font-weight: 800; font-size: .78rem; }
.badge-ok { background: #e8f7ee; color: #166534; }
.badge-warn { background: #fff7ed; color: #9a3412; }
.badge-danger { background: #fff1f2; color: #b42318; }
.badge-info { background: #eef2ff; color: #3730a3; }
.filter-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .875rem; }
.f-col-2 { grid-column: span 2; } .f-col-3 { grid-column: span 3; } .f-col-4 { grid-column: span 4; }
.detail-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .875rem; }
.detail-card { grid-column: span 4; background: #fffaf4; border: 1px solid #f1e2cb; border-radius: 1.125rem; padding: .75rem; }
.doc-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .875rem; }
.doc-card { grid-column: span 6; border: 1px solid #eadfce; border-radius: 1.125rem; background: #fff; padding: .875rem; }
.actions { display: flex; flex-wrap: wrap; gap: .625rem; }
@media (max-width: 1100px) { .detail-card, .doc-card { grid-column: span 12; } }
@media (max-width: 700px) { .f-col-2, .f-col-3, .f-col-4, .detail-card, .doc-card { grid-column: span 12; } }

/* ── Formularios de trámite ── */
.vsc-form-hero {
  position: relative; overflow: hidden; border-radius: 1.625rem; padding: 1.625rem 1.875rem; margin: 0 0 1.125rem;
  background: linear-gradient(135deg, var(--xico-vino), var(--xico-magenta) 58%, var(--xico-oro));
  color: #fff; box-shadow: 0 18px 45px rgba(68,18,45,.10); display: flex; align-items: center; gap: 1.125rem; min-height: 132px;
}
.vsc-form-hero-logo { flex: 0 0 78px; width: 78px; height: 78px; border-radius: 1.125rem; background: #fff; display: flex; align-items: center; justify-content: center; }
.vsc-form-hero-logo img { max-width: 66px; max-height: 66px; object-fit: contain; }
.vsc-form-kicker { display: inline-flex; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.15); border-radius: 999px; padding: .375rem .75rem; margin-bottom: .5rem; font-weight: 900; font-size: .78rem; text-transform: uppercase; }
.vsc-form-hero h1 { margin: 0; font-size: clamp(1.75rem, 4vw, 2.5rem); font-weight: 950; color: #fff; }
.vsc-form-hero p { margin: .5rem 0 0; color: rgba(255,255,255,.94); font-weight: 700; max-width: 820px; }
.vsc-form-card { background: #fff; border: 1px solid var(--xico-border); border-radius: 1.375rem; box-shadow: 0 10px 28px rgba(68,18,45,.08); overflow: hidden; margin-bottom: 1.125rem; }
.vsc-form-card-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: 1.125rem 1.375rem; border-bottom: 1px solid var(--xico-border); }
.vsc-form-card-head h2 { margin: 0; color: var(--xico-vino); font-size: 1.35rem; font-weight: 900; }
.vsc-form-card-body { padding: 1.625rem 1.75rem; }
.vsc-form-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1.125rem; }
.vsc-col-8 { grid-column: span 8; }
.vsc-field label { display: block; margin: 0 0 .5rem; color: var(--xico-vino); font-weight: 900; font-size: .94rem; }
.vsc-form-tip { border-radius: 1rem; background: #fff7ed; border: 1px solid #fed7aa; color: #8a3a00; padding: .8125rem 1rem; font-weight: 750; margin-bottom: 1.375rem; }
.vsc-btn-primary { display: inline-flex; align-items: center; justify-content: center; min-height: 2.875rem; border-radius: .8125rem; padding: .6875rem 1.125rem; font-weight: 900; cursor: pointer; border: 0; color: #fff !important; background: linear-gradient(135deg, var(--xico-vino), var(--xico-magenta)); box-shadow: 0 12px 24px rgba(107,0,48,.18); text-decoration: none; }
.vsc-btn-outline { display: inline-flex; align-items: center; justify-content: center; min-height: 2.875rem; border-radius: .8125rem; padding: .6875rem 1.125rem; font-weight: 900; cursor: pointer; background: #fff; color: var(--xico-vino) !important; border: 1px solid #b66b98; text-decoration: none; }
.vsc-check { display: flex; align-items: flex-start; gap: .625rem; cursor: pointer; font-size: .875rem; line-height: 1.5; }
.vsc-check input[type="checkbox"] { width: 1.125rem; height: 1.125rem; margin-top: 2px; accent-color: var(--xico-vino); }
.vsc-map-tools { display: flex; gap: .75rem; flex-wrap: wrap; margin: .25rem 0 .875rem; }
.vsc-map-panel { border: 1px solid var(--xico-border); border-radius: 1.25rem; background: #fff; overflow: hidden; margin: .75rem 0 .375rem; }
.vsc-leaflet-map { height: 420px; width: 100%; background: #f8f0ff; z-index: 1; }
.vsc-map-preview { border: 1px dashed var(--xico-border); border-radius: 1rem; background: linear-gradient(135deg, #fff, #fbf7fb); min-height: 98px; padding: 1rem; color: var(--xico-muted); display: flex; align-items: center; gap: .75rem; }
@media (max-width: 1100px) { .vsc-col-8, .vsc-col-6, .vsc-col-4, .vsc-col-3 { grid-column: span 12; } .vsc-form-hero { flex-direction: column; align-items: flex-start; } }
@media (max-width: 620px) { .vsc-form-card-body { padding: 1.25rem; } .vsc-actions .vsc-btn-primary, .vsc-actions .vsc-btn-outline { width: 100%; } .vsc-leaflet-map { height: 340px; } }

/* ── Catálogo trámites ── */
.tramite-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
.tramite-card { display: grid; grid-template-columns: 64px minmax(0, 1fr) 20px; gap: 1.125rem; align-items: center; min-height: 150px; padding: 1.375rem; border-radius: 1.25rem; background: #fff; border: 1px solid var(--xico-border); box-shadow: 0 10px 28px rgba(68,18,45,.07); text-decoration: none; color: var(--xico-text); transition: .16s ease; }
.tramite-card:hover { transform: translateY(-2px); box-shadow: 0 18px 45px rgba(68,18,45,.12); border-color: #d9adc3; }
.tramite-icon { width: 58px; height: 58px; border-radius: 1rem; display: grid; place-items: center; background: #fff7f0; border: 1px solid #f2d5c2; color: var(--xico-vino); font-size: 1.8rem; }
.tramite-name { font-size: 1.05rem; font-weight: 950; color: var(--xico-vino); margin-bottom: .5rem; }
.tramite-desc { font-size: .92rem; color: #536074; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.tramite-empty { padding: 1.75rem; border-radius: 1.125rem; background: #fff; border: 1px dashed var(--xico-border); color: var(--xico-muted); text-align: center; }
@media (max-width: 1180px) { .tramite-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) { .tramite-grid { grid-template-columns: 1fr; } }

/* ── Dialog y toasts nativos (VSCUI) ── */
.vsc-dialog {
  border: none;
  padding: 0;
  max-width: min(420px, calc(100vw - 2rem));
  background: transparent;
}
.vsc-dialog::backdrop {
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(2px);
}
.vsc-dialog-panel {
  background: #fff;
  border: 1px solid var(--xico-border);
  border-radius: 1.375rem;
  box-shadow: 0 24px 48px rgba(68, 18, 45, 0.18);
  padding: 1.5rem 1.625rem 1.375rem;
  text-align: center;
}
.vsc-dialog-icon {
  width: 3.25rem;
  height: 3.25rem;
  margin: 0 auto 0.875rem;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-size: 1.65rem;
}
.vsc-dialog-icon--success { background: #ecfdf5; color: #059669; }
.vsc-dialog-icon--error { background: #fef2f2; color: #dc2626; }
.vsc-dialog-icon--warning { background: #fffbeb; color: #d97706; }
.vsc-dialog-icon--question { background: #fdf2f8; color: var(--xico-vino); }
.vsc-dialog-icon--info { background: #eff6ff; color: #2563eb; }
.vsc-dialog-title {
  margin: 0 0 0.5rem;
  font-size: 1.25rem;
  font-weight: 900;
  color: var(--xico-vino);
  line-height: 1.25;
}
.vsc-dialog-text {
  margin: 0 0 1.25rem;
  color: #536074;
  font-size: 0.95rem;
  line-height: 1.45;
}
.vsc-dialog-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.625rem;
  justify-content: center;
}
.vsc-dialog-btn {
  min-height: 2.75rem;
  padding: 0.625rem 1.125rem;
  border-radius: 0.75rem;
  font-weight: 800;
  font-size: 0.9rem;
  cursor: pointer;
  border: 1px solid transparent;
}
.vsc-dialog-btn-cancel {
  background: #fff;
  color: #64748b;
  border-color: var(--xico-border);
}
.vsc-dialog-btn-confirm {
  background: linear-gradient(135deg, var(--xico-vino), var(--xico-magenta));
  color: #fff;
  box-shadow: 0 8px 20px rgba(107, 0, 48, 0.2);
}
.vsc-dialog-btn-danger {
  background: linear-gradient(135deg, #991b1b, #dc2626);
}
.vsc-toast-root {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  z-index: 99999;
  display: flex;
  flex-direction: column-reverse;
  gap: 0.75rem;
  pointer-events: none;
  max-width: min(440px, calc(100vw - 2rem));
}
.vsc-toast {
  display: flex;
  align-items: center;
  gap: 1rem;
  min-height: 4.75rem;
  padding: 1rem 1.25rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid var(--xico-border);
  box-shadow: 0 14px 36px rgba(68, 18, 45, 0.14);
  font-weight: 800;
  font-size: 1rem;
  line-height: 1.4;
  color: var(--xico-text);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.32s ease, transform 0.32s ease;
}
.vsc-toast.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.vsc-toast-icon {
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  border-radius: 1rem;
  display: grid;
  place-items: center;
  font-size: 1.45rem;
  background: #f8e6ef;
  color: var(--xico-vino);
}
.vsc-toast-text {
  flex: 1;
  min-width: 0;
  padding-right: 0.25rem;
}
.vsc-toast--success {
  background: linear-gradient(135deg, #fff 0%, #f0fdf4 100%);
  border-color: #bbf7d0;
}
.vsc-toast--success .vsc-toast-icon { background: #dcfce7; color: #166534; }
.vsc-toast--success .vsc-toast-text { color: #166534; }
.vsc-toast--error {
  background: linear-gradient(135deg, #fff 0%, #fff1f2 100%);
  border-color: #fecdd3;
}
.vsc-toast--error .vsc-toast-icon { background: #ffe4e6; color: #b42318; }
.vsc-toast--error .vsc-toast-text { color: #b42318; }
.vsc-toast--warning {
  background: linear-gradient(135deg, #fff 0%, #fffbeb 100%);
  border-color: #fde68a;
}
.vsc-toast--warning .vsc-toast-icon { background: #fef3c7; color: #b45309; }
.vsc-toast--warning .vsc-toast-text { color: #92400e; }
.vsc-toast--info {
  background: linear-gradient(135deg, #fff 0%, var(--xico-bg) 100%);
  border-color: #e9d5ff;
}
.vsc-toast--info .vsc-toast-icon {
  background: linear-gradient(135deg, #f8e6ef, #fce7f3);
  color: var(--xico-vino);
}
.vsc-toast--info .vsc-toast-text { color: var(--xico-vino-dark); }
@media (max-width: 640px) {
  .vsc-toast-root {
    left: 1rem;
    right: 1rem;
    bottom: 1rem;
    max-width: none;
  }
  .vsc-toast {
    min-height: 4.25rem;
    padding: 0.9375rem 1.125rem;
    font-size: 0.9375rem;
  }
}
