﻿/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Design Tokens â€” Variables globales de la tienda
   Cambiar estos valores afecta toda la UI de forma homogÃ©nea.
   Alineados con Material Design 3 (M3).
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
:root {
    /* â”€â”€ Brand â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --color-primary: #3C76F2;
    --color-primary-hover:  color-mix(in srgb, #fff 8%, #3C76F2);
    --color-primary-active: color-mix(in srgb, #fff 12%, #3C76F2);
    --color-primary-light: #dbeafe;

    /* â”€â”€ Grays (neutral palette, single source of truth) â”€â”€ */
    --gray-50:  #f9fafb;
    --gray-100: #f3f4f6;
    --gray-200: #e5e7eb;
    --gray-300: #d1d5db;
    --gray-400: #9ca3af;
    --gray-500: #6b7280;
    --gray-600: #4b5563;
    --gray-700: #374151;
    --gray-800: #1f2937;
    --gray-900: #111827;

    /* â”€â”€ Semantic â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --color-success: #16a34a;
    --color-danger:  #dc2626;
    --color-danger-hover: #b91c1c;
    --color-warning: #d97706;

    /* â”€â”€ Radii â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --radius-sm:   6px;
    --radius-md:   8px;
    --radius-lg:   12px;
    --radius-pill:  50rem;
    --radius: 0.375rem; /* legacy â€” migrate to named tokens */

    /* â”€â”€ Motion (M3 easing + duration tokens) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --md-easing-standard:            cubic-bezier(0.2, 0, 0, 1);
    --md-easing-standard-decelerate: cubic-bezier(0, 0, 0, 1);
    --md-easing-standard-accelerate: cubic-bezier(0.3, 0, 1, 1);
    --md-duration-short2: 100ms;
    --md-duration-short3: 150ms;
    --md-duration-short4: 200ms;
    --md-duration-medium1: 250ms;
    --md-duration-medium2: 300ms;
    --transition-fast: var(--md-duration-short3) var(--md-easing-standard);
    --transition-base: var(--md-duration-short4) var(--md-easing-standard);

    /* â”€â”€ Elevation (M3 shadow levels) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --md-elevation-0: none;
    --md-elevation-1: 0 1px 2px rgba(0,0,0,0.3), 0 1px 3px 1px rgba(0,0,0,0.15);
    --md-elevation-2: 0 1px 2px rgba(0,0,0,0.3), 0 2px 6px 2px rgba(0,0,0,0.15);
    --md-elevation-3: 0 1px 3px rgba(0,0,0,0.3), 0 4px 8px 3px rgba(0,0,0,0.15);

    /* â”€â”€ State layer opacity (M3) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --md-state-hover:   0.08;
    --md-state-focus:   0.10;
    --md-state-pressed: 0.10;
    --md-state-dragged: 0.16;

    /* â”€â”€ Focus ring â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --shadow-focus: 0 0 0 3px rgba(60, 118, 242, 0.1);
    --shadow-focus-danger: 0 0 0 3px rgba(220, 38, 38, 0.1);

    /* â”€â”€ Layout â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --header-height: 56px;
    --header-gap: 0.75rem;
    --sidebar-width: 250px;

    /* â”€â”€ Spacing scale (4px base, M3-aligned) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
    --space-1: 0.25rem;   /* 4px  */
    --space-2: 0.5rem;    /* 8px  */
    --space-3: 0.75rem;   /* 12px */
    --space-4: 1rem;      /* 16px */
    --space-5: 1.5rem;    /* 24px */
    --space-6: 2rem;      /* 32px */

    /* â”€â”€ Content area (24px visible gap) â”€â”€â”€â”€ */
    --content-padding-x: var(--header-gap);
    --content-padding-y: var(--space-3);
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Focus visible â€” Global (M3 focus indicator)
   Solo aparece al navegar con teclado, no con mouse.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}
:focus:not(:focus-visible) {
    outline: none;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Table Header â€” Componente reutilizable (.tbl-thead)
   Estilo estandarizado para encabezados de tablas.
   Se usa automÃ¡ticamente via <x-table-header :columns="[...]" />
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.tbl-thead th {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    padding: 10px 12px;
    border-bottom: 2px solid #e5e7eb;
    white-space: nowrap;
    background: #f9fafb;
}
.tbl-thead .th-sortable {
    cursor: pointer;
    user-select: none;
}
.tbl-thead .th-sort-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: inherit;
    text-decoration: none;
}
.tbl-thead .th-sort-link:hover {
    color: #111827;
}
.tbl-thead .th-sort-icon {
    display: inline-flex;
    align-items: center;
}
.tbl-thead .th-sort-icon svg {
    stroke: currentColor;
    fill: none;
    opacity: 0.35;
}
.tbl-thead .th-sorted .th-sort-icon svg {
    opacity: 1;
    stroke: #111827;
}
.tbl-thead .th-sorted .th-sort-link {
    color: inherit;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Table Body â€” Estilos globales para todas las tablas
   Aplica a .sites-table y .app-table-hover
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.sites-table,
.app-table-hover {
    font-size: 0.875rem;
    border-collapse: separate;
    border-spacing: 0;
    width: 100%;
}
.sites-table tbody tr,
.app-table-hover tbody tr {
    transition: background 0.12s;
}
.sites-table tbody tr:hover,
.app-table-hover tbody tr:hover {
    background: #f9fafb;
}
.sites-table tbody td,
.app-table-hover tbody td {
    padding: 10px 12px;
    vertical-align: middle;
    border-bottom: 1px solid #f0f1f3;
    color: #374151;
    font-variant-numeric: tabular-nums;
}
.sites-table .site-list-name,
.app-table-hover .site-list-name {
    font-weight: 600;
    color: #111827;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sites-table .site-list-name:hover,
.app-table-hover .site-list-name:hover {
    color: var(--color-primary);
}
.sites-table td .d-flex > img + div,
.sites-table td .d-flex > img + span,
.sites-table td .d-flex > img + .d-flex,
.app-table-hover td .d-flex > img + div,
.app-table-hover td .d-flex > img + span,
.app-table-hover td .d-flex > img + .d-flex {
    font-size: 0.875rem;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Section Header â€” Componente reutilizable (.section-header)
   Uso:
     <div class="section-header">
         <div>
             <h1 class="section-title">TÃ­tulo</h1>
             <p class="section-subtitle">SubtÃ­tulo opcional</p>
         </div>
         <a class="section-action" href="#">+ AcciÃ³n</a>
     </div>
   Variantes del botÃ³n:
     .section-action             â†’ primario (azul)
     .section-action.is-secondary â†’ terciario (outline)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.section-header {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}
.app-card {
    border-radius: 12px;
}

.app-page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: 0 0 1rem;
}
.app-page-header .app-page-title {
    margin: 0;
    min-width: 0;
}

.section-header .section-title,
.app-page-title {
    font-size: 1.45rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #111827;
    margin: 0 0 1rem;
    line-height: 1.3;
}
.section-header .section-title {
    margin-bottom: 0;
}
.section-header .section-subtitle {
    font-size: 0.85rem;
    color: #6b7280;
    margin: 2px 0 0;
}
.section-header .section-action,
.section-action {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: 50rem;
    padding: 9px 22px;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
    transition: background 0.15s, box-shadow 0.15s;
}
.section-header .section-action:hover,
.section-action:hover {
    background: var(--color-primary-hover);
    box-shadow: 0 2px 8px rgba(60,118,242,0.25);
    color: #fff;
}
.section-header .section-action i,
.section-action i {
    font-size: 0.8rem;
}
.section-header .section-action.is-secondary,
.section-action.is-secondary {
    background: transparent;
    color: var(--color-primary);
    border: 1.5px solid var(--color-primary);
}
.section-header .section-action.is-secondary:hover,
.section-action.is-secondary:hover {
    background: color-mix(in srgb, var(--color-primary) 8%, transparent);
    box-shadow: none;
    color: var(--color-primary);
}
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Export button â€” Componente reutilizable (.btn-export)
   Uso:  <a class="btn-export" href="...">
             <i class="bi bi-file-earmark-excel"></i> Exportar a Excel
         </a>
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.btn-export {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    background: #fff;
    color: #374151;
    border: 1px solid #d1d5db;
    border-radius: 50rem;
    padding: 7px 18px;
    font-size: 0.8rem;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
    transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}
.btn-export:hover {
    background: #f9fafb;
    border-color: var(--gray-400);
    color: #111827;
    box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}
.btn-export i {
    font-size: 0.85rem;
    color: #16a34a;
}

/* â”€â”€ Section header â€” mobile (< 768px) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 767.98px) {
    .section-header {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }
    .section-header > div:first-child {
        width: 100%;
    }
    .section-header .section-title {
        font-size: 1.25rem;
    }
    .section-header .d-flex {
        flex-wrap: wrap;
        gap: 8px;
    }
    .section-header .section-action {
        min-height: 44px;
        justify-content: center;
        align-self: flex-start;
    }
    .section-header .d-flex .section-action {
        flex: 1 1 0;
    }
    .section-header {
        position: relative;
    }
    .section-header .btn-export {
        position: absolute;
        top: 0;
        right: 0;
        margin-left: 0;
        width: auto;
        min-width: 44px;
        min-height: 44px;
        padding: 7px 12px;
        font-size: 0;
        gap: 0;
    }
    .section-header .btn-export i {
        font-size: 1rem;
    }
}

input[type="file"] {
    font-size: 11px;
}

.attribute-item {
    margin-bottom: 5px;
    padding: 5px;
    border: 1px solid #ccc;
    border-radius: 5px;
    font-size: 13px;
}

.attribute-item button {
    margin-left: 0px;
}

.app-btn-danger {
    color: #FFFFFF;
}

/**********File Inputs**********/
.inputfile {
    width: 0.1px;
    height: 0.1px;
    opacity: 0;
    overflow: hidden;
    position: absolute;
    z-index: -1;
}

.inputfile + label {
    max-width: 80%;
    font-size: 1.25rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
    display: inline-block;
    overflow: hidden;
    padding: 0.625rem 1.25rem;
}

.inputfile + label svg {
    width: 1em;
    height: 1em;
    vertical-align: middle;
    fill: currentColor;
}

.iborrainputfile {
    font-size:10px !important;
    font-weight:normal;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin-left: 0;
}

/* style 7 */

.inputfile-7 + label {
    color: #ec9b1b;
}

.inputfile-7 + label {
    border: 1px solid #ec9b1b;
    background-color: #fff;
    padding: 0;
}

.inputfile-7:focus + label,
.inputfile-7.has-focus + label,
.inputfile-7 + label:hover {
    border-color: #d47e03;
}

.inputfile-7 + label span,
.inputfile-7 + label strong {
    padding: 0.625rem 1.25rem;
}

.inputfile-7 + label span {
    width: 50% !important;
    height: 42px !important;
    min-height: 2em;
    font-size: 14px;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    vertical-align: top;
    position: absolute;
    background-color: #edfdf6;
    display: flex;
    align-items: center;
    text-align: center;
    color: #0a5936;
    font-weight: 600;
    border: 1px solid #0a5936;
    border-top-left-radius:5px;
    border-bottom-left-radius: 5px;
}

.inputfile-7 + label strong {
    color: #8C8C8C;
    background-color: white;
    font-weight: 100;
    font-size: 14px;
    position: absolute;
    right: 0;
    height: 42px;
    display: flex;
    align-items: center;
    width: 50%;
    border: 1px solid #0a5936;
    border-top-right-radius:5px;
    border-bottom-right-radius: 5px;
    margin-right: 2px;
    overflow: hidden;
}

.inputfile-7:focus + label strong,
.inputfile-7.has-focus + label strong,
.inputfile-7 + label:ahover strong {
    background-color: #39b5b5;
    color: #15a362;
    transition: 1s background-color;
    font-weight: 500;
    transition: 1s font-weight;
}
.file-container  {
    position: relative;
}

.file-container label  {
    margin-bottom: 30px;
}

.file-picker-area {
    padding: 16px;
    cursor: pointer;
    min-height: 80px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: border-color 0.2s;
    border-color: var(--gray-300) !important;
}
.file-picker-area:hover {
    border-color: var(--gray-400) !important;
    background: var(--gray-50, #f9fafb);
}
.file-picker-label {
    font-size: 0.8rem;
    color: #6b7280;
}
.file-picker-preview:empty {
    display: none;
}
.file-picker-preview img {
    max-height: 120px;
    max-width: 100%;
    border-radius: 6px;
    border: 1px solid var(--gray-200);
    object-fit: contain;
}
.file-picker-area:has(.file-picker-preview:not(:empty)) .file-picker-label {
    display: none;
}

.file-upload {
    height:35px; 
    max-width: 100px;
    margin:0 auto;
}

.file-error {
    font-weight: bold; color: #FF0000;
}

.file-delete {
    margin-left: 20%;
}
.input-group .input-group-addon {
    border: 1px solid #e7e9ed;
    background-color: #f0f2f5;
    color: #5d6778;
    font-weight: 500;
    width: 15%;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 0;
}
/* Prefijo: esquinas redondeadas a la izquierda */
.input-group-addon:first-child {
    border-right: 0;
    border-top-left-radius: var(--radius);
    border-bottom-left-radius: var(--radius);
}
/* Sufijo: esquinas redondeadas a la derecha */
.input-group-addon:last-child {
    border-top-right-radius: var(--radius);
    border-bottom-right-radius: var(--radius);
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
.input-group .form-control, .input-group-addon, .input-group-btn {
    display: table-cell;
}
.input-group .form-control {
    position: relative;
    z-index: 2;
    float: left;
    width: 85%;
    margin-bottom: 0;
}
        .validation-banner {
            display: flex;
            align-items: flex-start;
            gap: 12px;
            padding: 12px 16px;
            margin-bottom: 16px;
            border-radius: 8px;
            border-left: 4px solid #EF4444;
            background: #FEF2F2;
            font-size: 14px;
            line-height: 1.5;
        }
        .validation-banner__icon svg {
            color: #EF4444;
            flex-shrink: 0;
        }
        .validation-banner__text {
            margin: 0;
            color: var(--gray-800);
        }
        .validation-banner__text strong {
            color: #EF4444;
        }
        .validation-banner--warning {
            border-left-color: #F59E0B;
            background: #FFFBEB;
        }
        .validation-banner--warning .validation-banner__icon svg {
            color: #F59E0B;
        }
        .validation-banner--warning .validation-banner__text strong {
            color: #B45309;
        }
        .validation-banner__close {
            flex-shrink: 0;
            background: none;
            border: none;
            cursor: pointer;
            padding: 2px;
            opacity: 0.5;
            margin-left: auto;
        }
        .validation-banner__close:hover {
            opacity: 1;
        }
        .validation-banner__close svg {
            stroke: currentColor;
        }

        /* Contenido de los pasos del formulario */
        .form-step-content {
            display: none; /* Ocultar todos los pasos por defecto */
        }

        .form-step-content.active {
            display: block; /* Mostrar el paso activo */
        }

.btn-minus, .btn-plus {
    border: 1px solid #dee2e6;
}
.spinner-input {
    background-color: #F5F4F8;
    padding-left: 20px;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Feature Rows + Numeric Spinner (step-1)
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Layout : icon Â· label â”€â”€â”€â”€â”€â”€â”€â”€ âŠ– value âŠ•
   Counter: standalone .numeric-spinner (NO .input-group)
   Tokens : #d1d5db borders, #222 text, project focus ring
   Ref    : Airbnb "Set up listing" â†’ Beds / Baths / Guests
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Feature list container (single-column) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.feature-list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    padding: 0;
    margin: 0;
}
.feature-list .feature-row:last-child {
    border-bottom: none;
}

/* â”€â”€ Two-column layout (unified container) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.feature-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    overflow: hidden;
}
.feature-col {
    padding: 0.875rem;
}
.feature-col:first-child {
    border-right: 1px solid #e5e7eb;
}
@media (max-width: 767.98px) {
    .feature-columns {
        grid-template-columns: 1fr;
    }
    .feature-col:first-child {
        border-right: none;
        border-bottom: 1px solid #e5e7eb;
    }
}

/* â”€â”€ Group label (Material overline) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.feature-group-label {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #374151;
    margin-top: 0;
    margin-bottom: 0.5rem;
}

/* â”€â”€ Global placeholder color â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.form-control::placeholder,
.form-select::placeholder {
    color: var(--gray-400);
}

/* â”€â”€ Compact form labels â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.form-label-sm {
    display: block;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 0.25rem;
}
.feature-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.625rem 0;
    border-bottom: 1px solid #f0f1f3;
}

/* â”€â”€ Left: icon + label â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.feature-row .row-left {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    flex: 1;
    min-width: 0;
}
.feature-row .row-icon {
    width: 20px;
    height: 20px;
    color: #9CA3AF;
    flex-shrink: 0;
}
.feature-row .row-label {
    font-size: 1rem;
    font-weight: 400;
    color: #222;
    line-height: 1.4;
}

/* â”€â”€ Right: counter or select â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.feature-row .row-control {
    flex-shrink: 0;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Numeric Spinner â€” Standalone component (Airbnb counter)
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   NOT using .input-group. This avoids the global table-cell
   and float rules in custom.css L296-321 that were breaking
   the circular button layout.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.numeric-spinner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}

/* Circular âŠ– âŠ• buttons */
.numeric-spinner .btn-minus,
.numeric-spinner .btn-plus {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 1px solid #d1d5db;
    background: #fff;
    color: #484848;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    font-size: 1.125rem;
    font-weight: 300;
    line-height: 1;
    cursor: pointer;
    transition: border-color 0.2s, color 0.2s;
}
.numeric-spinner .btn-minus:hover,
.numeric-spinner .btn-plus:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
    background: var(--color-primary-light);
}
.numeric-spinner .btn-minus:focus-visible,
.numeric-spinner .btn-plus:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* Borderless value between buttons */
.numeric-spinner .spinner-input {
    width: 2.5ch;
    border: none;
    background: transparent;
    text-align: center;
    font-size: 1rem;
    font-weight: 500;
    color: #222;
    padding: 0;
    font-family: inherit;
    -moz-appearance: textfield;
}
.numeric-spinner .spinner-input::-webkit-outer-spin-button,
.numeric-spinner .spinner-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.numeric-spinner .spinner-input:focus {
    outline: none;
}

/* â”€â”€ Jump Slider â€” Styled range â”€â”€â”€â”€ */
.jump-value-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--color-primary);
    background: #f0f4ff;
    border-radius: 8px;
    padding: 0.25rem 0.75rem;
    min-width: 3.5rem;
    text-align: center;
}
.jump-slider {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: 6px;
    border-radius: 3px;
    background: linear-gradient(
        to right,
        var(--color-primary) var(--fill, 0%),
        #e5e7eb var(--fill, 0%)
    );
    outline: none;
    cursor: pointer;
    transition: background 0.15s;
}
.jump-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--color-primary);
    box-shadow: 0 1px 4px rgba(0,0,0,0.12);
    cursor: pointer;
    transition: box-shadow 0.15s, transform 0.15s;
}
.jump-slider::-webkit-slider-thumb:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.18);
    transform: scale(1.1);
}
.jump-slider::-moz-range-thumb {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--color-primary);
    box-shadow: 0 1px 4px rgba(0,0,0,0.12);
    cursor: pointer;
}
.jump-slider::-moz-range-track {
    height: 6px;
    border-radius: 3px;
    background: #e5e7eb;
}
.jump-slider::-moz-range-progress {
    height: 6px;
    border-radius: 3px;
    background: var(--color-primary);
}

/* â”€â”€ Dropdown controls (OrientaciÃ³n, JardÃ­n) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.feature-row .form-select {
    font-size: 0.95rem;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    padding: 0.45rem 2rem 0.45rem 0.75rem;
    color: #222;
    min-width: 120px;
    transition: border-color 0.2s;
}
.feature-row .form-select:hover {
    border-color: #222;
}
.feature-row .form-select:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.1);
}

/* â”€â”€ Responsive â€” mobile â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 575.98px) {
    .feature-row .row-label {
        font-size: 0.9375rem;
    }
    .numeric-spinner .btn-minus,
    .numeric-spinner .btn-plus {
        width: 28px;
        height: 28px;
    }
    .numeric-spinner .spinner-input {
        width: 2ch;
    }
}

/* â”€â”€ Responsive â€” tablet & mobile (< 768px) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 767.98px) {
    /* Slider hint labels â€” min 14px on mobile */
    .slider-hint {
        font-size: 0.875rem;
    }
    /* Touch targets â€” attribute pills */
    .attr-btn {
        min-height: 44px;
        padding-top: 0.5rem;
        padding-bottom: 0.5rem;
    }
    /* Input-group addon â€” auto width on mobile */
    .input-group .input-group-addon {
        width: auto;
        min-width: 42px;
    }
    /* URL uploaders â€” stack button below input */
    .url-uploader-group {
        flex-wrap: wrap;
    }
    .url-uploader-group .form-control {
        border-radius: var(--radius) !important;
        margin-bottom: 0.5rem;
        width: 100% !important;
        flex: 1 1 100%;
    }
    .url-uploader-group .btn {
        width: 100%;
        border-radius: var(--radius) !important;
    }
}

/* â”€â”€ URL uploader (desktop) â€” input + button inline â”€â”€â”€â”€â”€â”€
   Por defecto .input-group .form-control tiene width: 85% (override
   legacy global) y el botÃ³n-pill no entra en el 15% restante, entonces
   queda wrappeado en otra lÃ­nea. Scope especÃ­fico para los uploaders
   de URL (YouTube / links): input ocupa todo el espacio disponible y
   el botÃ³n queda al costado con separaciÃ³n. */
@media (min-width: 768px) {
    .url-uploader-group {
        display: flex;
        flex-wrap: nowrap;
        align-items: stretch;
        gap: 8px;
    }
    .url-uploader-group > .form-control {
        width: auto !important;
        flex: 1 1 auto;
        min-width: 0;
        float: none;
        border-radius: var(--radius) !important;
    }
    .url-uploader-group > .btn {
        flex: 0 0 auto;
        white-space: nowrap;
        border-radius: var(--radius-pill) !important;
    }
}

/* â”€â”€ Slider hint â€” desktop default â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.slider-hint {
    font-size: 0.75rem;
}

/* â”€â”€ Surface grid â€” clean labeled inputs â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.surface-grid {
    /* full-width, relies on Bootstrap col-6 col-md-3 for responsiveness */
}
.surface-grid .surface-item label {
    font-size: 0.8rem;
    font-weight: 500;
    color: #484848;
    margin-bottom: 0.35rem;
    display: block;
    letter-spacing: 0.01em;
}
.surface-grid .surface-item .form-control {
    font-size: 1rem;
    font-weight: 500;
    color: #222;
}
.surface-grid .surface-item .input-group-addon {
    border-left: 1px solid #e7e9ed;
    border-right: 1px solid #e7e9ed;
}
.surface-grid .surface-item .form-control:first-child {
    border-top-left-radius: var(--radius);
    border-bottom-left-radius: var(--radius);
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
    border-right: 0;
}
/* Hide native arrows on surface inputs */
.surface-grid .form-control[type="number"]::-webkit-outer-spin-button,
.surface-grid .form-control[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.surface-grid .form-control[type="number"] {
    -moz-appearance: textfield;
}

#drop-area {
    transition: background-color 0.2s ease-in-out;
}
#drop-area:hover {
    background-color: #f8f9fa;
}

label {
    font-size: 0.9rem;
}

/* â”€â”€ Orphan card â€” section header â”€â”€â”€â”€â”€â”€ */
.orphan-card {
    padding: 1rem 1.25rem !important;
    margin-bottom: 0.5rem !important;
}
.orphan-card h5 {
    font-size: 1.25rem;
    font-weight: 600;
    color: #222;
    margin-bottom: 0.25rem;
}
.orphan-card p {
    font-size: 1rem;
    color: #6b7280;
    margin-bottom: 0;
    line-height: 1.5;
}

/* â”€â”€ Section description â€” subtitle under h6 in content cards â”€â”€ */
.section-desc {
    font-size: 0.875rem;
    color: #6b7280;
    margin-bottom: 0.75rem;
    line-height: 1.5;
}

/* â”€â”€ Field hint â€” format, size & limit captions below inputs/uploaders â”€â”€ */
.field-hint {
    font-size: 0.75rem;
    color: #9ca3af;
    margin-bottom: 0.5rem;
    line-height: 1.4;
}

/* â”€â”€ Step forms â€” flat cards â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.settings-section .app-card-settings {
    box-shadow: none;
    border: 1px solid #e5e7eb;
}
/* Tighter inter-section spacing for higher density */
.settings-section.mb-3 {
    margin-bottom: 0.75rem !important;
}
.settings-section .app-card-settings.mb-3 {
    margin-bottom: 0 !important;
}
.settings-section .app-card-settings.mb-3.card-spaced {
    margin-bottom: 0.75rem !important;
}

/* â”€â”€ Buttons â€” pill shape + M3 transitions
   Colors/hover/active/disabled/loading: portal.css (_base.scss).
   Focus-visible: global rule above.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.app-btn-primary,
.app-btn-secondary,
.app-btn-terciary,
.app-btn-decline,
.app-btn-success,
.app-btn-warning,
.app-btn-destructive {
    border-radius: var(--radius-pill);
    transition:
        background-color var(--transition-fast),
        border-color var(--transition-fast),
        color var(--transition-fast),
        box-shadow var(--transition-fast);
}
.app-btn-secondary {
    background: #fff;
    color: var(--color-primary, #3C76F2);
    border: 1px solid var(--color-primary, #3C76F2);
}
.app-btn-decline {
   background: #fff;
    color: var(--color-danger, #dc2626);
    border: 1px solid var(--color-danger, #dc2626);
}
.app-btn-success {
   background: #fff;
    color: var(--color-success, #10b981);
    border: 1px solid var(--color-success, #10b981);
}
.app-btn-warning {
   background: #fff;
    color: var(--color-warning, #d6ab3a);
    border: 1px solid var(--color-warning, #d6ab3a);
}
.app-btn-secondary:hover {
    background: var(--color-primary, #3C76F2);
    color: #fff;
    border-color: var(--color-primary, #3C76F2);
}
.app-btn-destructive {
    background: var(--color-danger, #dc2626);
    color: #fff;
    border: 1px solid var(--color-danger, #dc2626);
}
.app-btn-destructive:hover {
    background: #b91c1c;
    border-color: #b91c1c;
    color: #fff;
}

.btn-selected,
.btn-selected:hover,
.btn-selected:active {
    color: var(--color-primary);
    background: #fff;
    border: 1px solid var(--color-primary);
}
.btn-selected::before {
    content: '';
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    border-radius: 50%;
    background-color: var(--color-primary);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2.5-2.5a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");
    background-size: 12px 12px;
    background-repeat: no-repeat;
    background-position: center;
}

/* Unselected attribute pills â€” gray text + border */
.attr-btn.app-btn-secondary {
    color: var(--gray-400);
    border-color: var(--gray-300);
    background: #fff;
}
.attr-btn.app-btn-secondary:hover {
    color: var(--gray-600);
    border-color: var(--gray-400);
    background: var(--gray-50);
}

/* Toggle password visibility (icono "ojo"). Override del azul de
   `.app-btn-secondary` cuando el boton se usa para mostrar/ocultar
   passwords/secrets. Decision UX: mantenemos el azul reservado para
   acciones primarias/secundarias semanticas; los toggles de visibilidad
   son utilitarios y deben quedar en escala gris para no competir
   visualmente con los CTAs reales del form. Aplica a:
   - admin/biometrics (modal Editar credencial: nuevo valor + password)
   - sites/web3 (custodial key wallet)
   No afecta a los toggles dentro de `.payment-input-group` (owners/step-5
   y sites/mpfields) porque ahi `.payment-input-group .payment-toggle-btn`
   gana por especificidad + !important. */
.app-btn-secondary.toggle-password {
    color: var(--gray-700, #374151);
    border-color: var(--gray-300, #d1d5db);
    background: #fff;
}
.app-btn-secondary.toggle-password:hover {
    color: #fff;
    background: var(--gray-700, #374151);
    border-color: var(--gray-700, #374151);
}
.app-btn-secondary.toggle-password:focus-visible {
    outline: 2px solid var(--gray-700, #374151);
    outline-offset: 2px;
}

/* SVG icons inside attribute pills */
.attr-btn .attr-icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    color: inherit;
}
.app-btn-secondary .attr-icon {
    opacity: 0.6;
}
.btn-selected .attr-icon {
    display: none;
}

.btn-xs {
    padding: 0px 7px 0px 7px;
    border-radius: 50%;
    color:#FFFFFF;
}

.fs-sm {
    font-size: 90%;
}

.fs-xs {
    font-size: 80%;
}

/* Celda de fecha estandarizada para tablas de reporte */
.cell-date {
    font-size: .875rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    color: #5d6778;
    letter-spacing: .01em;
    line-height: 1.3;
}

.cell-date small {
    font-size: .75rem;
    color: var(--gray-500);
    font-weight: 400;
}

/* BotÃ³n de acciÃ³n en tablas de reporte */
.cell-action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.125rem;
    height: 2.125rem;
    background: #f0f1f3;
    border-radius: .4375rem;
    text-decoration: none;
    transition: background .15s ease;
}

.cell-action-btn img {
    opacity: .55;
    transition: opacity .15s ease;
}

.cell-action-btn:hover {
    background: #e4e6ea;
}

.cell-action-btn:hover img {
    opacity: .8;
}

/* â”€â”€ Pills de estado para tablas de reporte â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
td:has(.pill-status) {
    text-align: center;
}

.pill-status {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    padding: 2px 6px;
    border-radius: 4px;
    text-transform: uppercase;
    white-space: nowrap;
}

.pill-success {
    background: #ecfdf5;
    color: #5cb377;
}

.pill-warning {
    background: #fffbeb;
    color: #d6ab3a;
}

.pill-danger {
    background: #fef2f2;
    color: #d26d69;
}
.pill-muted {
    background: var(--gray-100);
    color: var(--gray-400);
}
/* Notary certify button (legacy â€” migrated to app-btn-secondary) */
.btn-certify {
    background: #7c3aed;
    color: #fff;
    border: none;
    border-radius: var(--radius-pill);
    transition: background-color var(--transition-fast);
}
.btn-certify:hover,
.btn-certify:focus-visible {
    background: #6d28d9;
    color: #fff;
}

.pill-muted {
    background: #f3f4f6;
    color: var(--gray-500);
}

.pill-light {
    background: #f3f4f6;
    color: #6b7280;
}

.pill-info {
    background: #ede9fe;
    color: #6d28d9;
}

/* â”€â”€ ID abreviado + botÃ³n copiar (global) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.meta-id {
    font-family: 'SF Mono', 'Fira Code', 'Courier New', monospace;
    font-size: 0.6rem;
    color: #6b7280;
    background: #f3f4f6;
    padding: 3px 6px;
    border-radius: 4px;
    display: inline-block;
    letter-spacing: 0.02em;
}

.btn-copy-id {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 4px;
    cursor: pointer;
    padding: 0;
    vertical-align: middle;
    margin-left: 2px;
}
.btn-copy-id svg {
    opacity: 0.35;
    stroke: currentColor;
    color: #6b7280;
    transition: opacity 0.15s;
}
.btn-copy-id:hover {
    background: #f3f4f6;
    border-color: #e5e7eb;
}
.btn-copy-id:hover svg {
    opacity: 0.65;
}
.btn-copy-id.copied {
    background: #ecfdf5;
    border-color: #10b981;
}
.btn-copy-id.copied svg {
    opacity: 0.8;
    color: #059669;
}

.modal-dialog.modal-80 {
  max-width: 80%;
}

.select2-container--default {
    width: 100% !important;
}

.select2-container--default .select2-selection--multiple {
    border: 1px solid #ced4da;
    border-radius: 0.5rem;
    min-height: 42px;
    padding: 4px 8px;
    background: #fff;
}

.select2-container--default .select2-selection--multiple:focus-within {
    border-color: var(--color-primary, #3C76F2);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.15);
}

.select2-container--default .select2-selection--multiple .select2-selection__choice {
    background: #fff !important;
    border: 1px solid var(--color-primary, #3C76F2) !important;
    color: var(--color-primary, #3C76F2);
    border-radius: 1rem !important;
    padding: 4px 10px !important;
    padding-left: 10px !important;
    margin: 3px 4px 3px 0;
    font-size: 0.82rem;
    font-weight: 500;
    line-height: 1.5;
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    position: relative !important;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__display {
    order: 0;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    position: static !important;
    float: none !important;
    border: none !important;
    background: transparent !important;
    color: var(--color-primary, #3C76F2) !important;
    padding: 0 !important;
    font-size: 0.85rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    order: 1;
    flex-shrink: 0;
    transition: color .15s ease;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
    color: #1e3a8a !important;
}

.select2-container--default .select2-search--inline .select2-search__field {
    margin-top: 4px;
    font-size: 0.85rem;
}

/* Chip estÃ¡ndar (tags / etiquetas). Usado por el input de caracterÃ­sticas en
   owners/step-3. Mantiene el mismo lenguaje visual que los chips de select2
   (borde primary, fondo blanco, X a la derecha) para consistencia. */
.pala-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    border: 1px solid var(--color-primary, #3C76F2);
    color: var(--color-primary, #3C76F2);
    border-radius: 1rem;
    padding: 4px 10px;
    font-size: 0.82rem;
    font-weight: 500;
    line-height: 1.5;
    max-width: 100%;
}

.pala-chip__label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pala-chip__remove {
    background: transparent;
    border: 0;
    padding: 0;
    margin: 0;
    color: var(--color-primary, #3C76F2);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    flex-shrink: 0;
    transition: color .15s ease;
}

.pala-chip__remove:hover,
.pala-chip__remove:focus {
    color: #1e3a8a;
    outline: none;
}

.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: var(--color-primary, #3C76F2);
}

.bi-pencil, .bi-files, .bi-trash {
    top:0px !important;
}

.nav-link-text {
    padding-left: 10px;
    font-size: 14px;
}

.app-nav .nav-link {
    padding-top: 8px;
    padding-bottom: 8px;
    display: flex;
    align-items: center;
    padding-left: 1rem;
    position: relative;
}

.app-nav .nav-link:hover,
.app-sidepanel .app-nav .nav-link:hover {
    color: var(--color-primary);
}

.app-nav .nav-link.active,
.app-sidepanel .app-nav .nav-link.active {
    color: var(--color-primary);
    background: #ECF2FE;
    border-left: 3px solid var(--color-primary);
    font-weight: 500;
}

/* Sidebar links â€” force blue everywhere (override portal.css green) */
.app-sidepanel a:hover {
    color: var(--color-primary);
}
.app-sidepanel .submenu-link:hover {
    color: var(--color-primary);
}
.app-sidepanel .submenu-link.active {
    color: var(--color-primary);
}
.app-sidepanel .submenu-link.active:before {
    background-color: var(--color-primary);
}

.app-nav .nav-icon {
    position: static;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}

.app-nav .nav-icon img,
.app-nav .nav-icon svg {
    width: 18px;
    height: 18px;
}

.app-nav .nav-icon svg {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.btn:disabled {
    border-color: #dee2e6 !important;
}

/* Botones no activos */
button.nav-link {
  background: #ffffff !important;
  color: #666276 !important;
  font-family: 'Sora', sans-serif !important;
  font-weight: bold;
}

/* BotÃ³n activo */
button.nav-link.active {
  background: color-mix(in srgb, var(--color-primary) 10%, transparent) !important;
  color: var(--color-primary) !important;
}

.w-35 {
 width: 35%;
}
.step-circle {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background-color: #e9ecef; /* gris claro */
  color: #333;
  flex-shrink: 0;
  font-size: 0.9rem;
}

.step-circle.active {
  background-color: var(--color-primary); /* azul Bootstrap */
  color: white;
}

/* â”€â”€ Toggle switch â€” Componente global â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.form-check-input:checked {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
}
.form-check-input {
    background-color: #a5a4a4dd;
    border-color: #a5a4a4dd;
}
.form-check-input:focus {
    box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--color-primary) 25%, transparent);
}

.iframe-desktop {
    transform: scale(1.5);
    transform-origin: top left;
    width: 150%; /* necesario para compensar el scale */
    height: 750px;
    border: none;
}


 .table-custom {
    border-collapse: separate;   /* Permite el border-spacing */
    border-spacing: 0 10px;      /* Espacio vertical entre filas */
  }

  .table-custom td, 
  .table-custom th {
    padding: 12px 16px;          /* Padding interno */
    background: #fff;            /* Fondo para que no se vea transparente */
    border: 1px solid #dee2e6;   /* Borde de cada celda */
  }

  /* Opcional: bordes redondeados por fila */
  .table-custom tr td:first-child {
    border-top-left-radius: 8px;
    border-bottom-left-radius: 8px;
  }
  .table-custom tr td:last-child {
    border-top-right-radius: 8px;
    border-bottom-right-radius: 8px;
  }

  .format-option {
    cursor: pointer;
    border: 2px solid transparent;
    border-radius: 8px;
    padding: 5px;
    transition: border-color 0.2s ease;
}

.format-option input + img  {
    border: 1px solid #565758; 
    border-radius: 8px;
}

.format-option input:checked + img {
    border: 2px solid var(--color-primary); 
    border-radius: 8px;
    box-shadow: 0 0 5px rgba(60, 118, 242, 0.6);
}

.format-img {
    width: 90%;
    height: auto;
    display: block;
    margin: 0 auto;
}

.segmented-control {
    display: inline-flex;
    gap: 6px;
    flex-wrap: wrap;
}
.segmented-control label {
    cursor: pointer;
    padding: 6px 10px;
    border-radius: 8px;
    border: 1px solid #d1d5db;
    background: #fff;
    font-size: 13px;
    font-weight: 500;
    color: var(--gray-500, #6b7280);
    transition: border-color 0.15s, box-shadow 0.15s, color 0.15s;
    text-align: center;
    white-space: nowrap;
    user-select: none;
}
.segmented-control label:hover {
    border-color: var(--gray-400, #9ca3af);
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.segmented-control input:checked + span {
    display: block;
    margin: -7px -11px;
    padding: 6px 10px;
    border-radius: 8px;
    border: 2px solid var(--color-primary);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.15);
    color: var(--color-primary);
    background: #fff;
}
.segmented-control--icons label {
    padding: 8px 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.segmented-control--icons input:checked + span {
    margin: -9px -13px;
    padding: 8px 12px;
}
.segmented-control--icons svg {
    width: 20px;
    height: 20px;
    stroke: var(--gray-400, #9ca3af);
    transition: stroke 0.15s;
}
.segmented-control--icons input:checked + span svg {
    stroke: var(--color-primary);
}
@media (max-width: 767.98px) {
    .segmented-control {
        display: flex;
        width: 100%;
    }
    .segmented-control label {
        flex: 1;
        padding: 8px 10px;
        font-size: 12px;
    }
    .segmented-control input:checked + span {
        margin: -9px -11px;
        padding: 8px 10px;
    }
    .segmented-control--icons label {
        padding: 8px 10px;
    }
    .segmented-control--icons input:checked + span {
        margin: -9px -11px;
        padding: 8px 10px;
    }
    .segmented-control--icons svg {
        width: 18px;
        height: 18px;
    }
}

.form-actions-fixed {
    position: sticky;
    bottom: 0;
    left: 0;
    width: 100%;
    background: #fafafa;
    border-top: 1px solid #e5e7eb;
    padding: 12px 16px;
    box-shadow: 0 -4px 12px rgba(0,0,0,0.06);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    z-index: 999;
    border-radius: 0 0 12px 12px;
}
/* Buttons adapt to container width at every breakpoint */
.form-actions-fixed .btn {
    white-space: nowrap;
    min-width: 0;
    flex: 0 0 auto;
    padding: 0.5rem 1.25rem;
    font-size: 0.875rem;
}
@media (max-width: 575.98px) {
    .form-actions-fixed {
        flex-direction: column;
        padding: 10px 12px;
    }
    .form-actions-fixed .btn {
        width: 100%;
        padding: 0.5rem 1rem;
        font-size: 0.8125rem;
    }
    .form-actions-fixed .save-status-pill {
        margin-left: 0;
        justify-content: center;
    }
}

.border-dashed {
  border-style: dashed !important;
}

/* Compact color pill */
.color-pill {
    display: flex;
    width: fit-content;
    align-items: center;
    gap: 8px;
    margin-top: 6px;
    padding: 4px 14px 4px 4px;
    border: 1px solid #d1d5db;
    border-radius: 50rem;
    cursor: pointer;
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.color-pill:hover {
    border-color: var(--gray-400);
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.color-pill:focus-within {
    border-color: #6366f1;
    box-shadow: 0 0 0 3px rgba(99,102,241,0.15);
}
.color-pill input[type="color"] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
    margin: 0;
    border: 1.5px solid #d1d5db;
    border-radius: 50%;
    cursor: pointer;
    flex-shrink: 0;
    overflow: hidden;
    background: none;
}
.color-pill input[type="color"]::-webkit-color-swatch-wrapper {
    padding: 0;
}
.color-pill input[type="color"]::-webkit-color-swatch {
    border: none;
    border-radius: 50%;
}
.color-pill input[type="color"]::-moz-color-swatch {
    border: none;
    border-radius: 50%;
}
.color-pill .color-hex {
    font-family: 'SF Mono', 'Fira Code', 'Courier New', monospace;
    font-size: 0.8rem;
    color: #374151;
    text-transform: uppercase;
    cursor: pointer;
    min-width: 5.6ch;
    letter-spacing: 0.02em;
}

/* Hint & description text in settings sections */
.settings-section .drop-area + .mb-2,
.settings-section .form-group p small {
    font-size: 12px;
    color: #6b7280;
}
.settings-section .app-card-body > p {
    font-size: 13px;
    color: #6b7280;
    margin-bottom: 8px;
}
/* Select styled to match color pills */
.settings-section .form-select.select-pill {
    height: 44px;
    max-width: 90%;
    border: 1px solid #d1d5db;
    border-radius: 50rem;
    padding: 4px 36px 4px 16px;
    font-size: 0.8rem;
    color: #374151;
    background-color: #fff;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
    margin-top: 6px;
}
.settings-section .form-select.select-pill:hover {
    border-color: var(--gray-400);
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.settings-section .form-select.select-pill:focus {
    border-color: #6366f1;
    box-shadow: 0 0 0 3px rgba(99,102,241,0.15);
}

/* Color picker labels - match upload hint style */
.settings-section .form-group > label:first-child:not(.form-label-sm) {
    font-size: 12px;
    color: #6b7280;
}
.settings-section .form-group p[style] {
    min-height: auto !important;
    margin-bottom: 4px;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Shared card shell â€” sites + owners + products
   All listings share identical card chrome. Section-specific
   differences (thumb size/img, content padding) live below.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* Container â€” inherits background/radius from .app-card */
.sites-listing,
.owners-listing {
    box-shadow: none;
}

/* Card base (universal) */
.sites-listing .site-card,
.owners-listing .owner-card {
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    box-shadow: none;
    background: #fff;
    display: flex;
    flex-direction: column;
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

/* Thumb â€” position context for overflow btn */
.sites-listing .site-card-thumb,
.owners-listing .owner-card-thumb {
    position: relative;
}

/* Overflow btn â€” always absolute */
.sites-listing .site-card-overflow,
.owners-listing .site-card-overflow {
    position: absolute;
}

/* Content layout */
.sites-listing .site-card-content,
.owners-listing .owner-card-content {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* Title */
.sites-listing .site-card-name,
.owners-listing .owner-card-name {
    font-weight: 600;
    letter-spacing: -0.01em;
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.sites-listing .site-card-name a,
.owners-listing .owner-card-name a {
    color: #111827;
    text-decoration: none;
}
.sites-listing .site-card-name a:hover,
.owners-listing .owner-card-name a:hover {
    color: var(--color-primary);
}

/* Badges */
.sites-listing .site-card-badges,
.owners-listing .site-card-badges {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

/* ID row */
.sites-listing .site-card-id-row,
.owners-listing .site-card-id-row {
    display: flex;
    align-items: center;
    gap: 5px;
}

/* Meta ID */
.sites-listing .meta-id-label,
.owners-listing .meta-id-label {
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 400;
    color: #374151;
    margin-right: 4px;
}
.sites-listing .meta-id,
.owners-listing .meta-id {
    font-family: 'SF Mono', 'Fira Code', 'Courier New', monospace;
    font-size: 0.6rem;
    color: #6b7280;
    background: #f3f4f6;
    padding: 5px 8px;
    border-radius: 4px;
    display: inline-block;
    letter-spacing: 0.02em;
    margin-top: 2px;
}
.sites-listing .meta-id--short,
.owners-listing .meta-id--short {
    display: none;
}

/* Copy ID button */
.sites-listing .btn-copy-id,
.owners-listing .btn-copy-id {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 5px;
    cursor: pointer;
    flex-shrink: 0;
    padding: 0;
    transition: background 0.15s, border-color 0.15s;
}
.sites-listing .btn-copy-id svg,
.owners-listing .btn-copy-id svg {
    opacity: 0.35;
    stroke: currentColor;
    color: #6b7280;
    transition: opacity 0.15s;
}
.sites-listing .btn-copy-id:hover,
.owners-listing .btn-copy-id:hover {
    background: #f3f4f6;
    border-color: #e5e7eb;
}
.sites-listing .btn-copy-id:hover svg,
.owners-listing .btn-copy-id:hover svg {
    opacity: 0.65;
}
.sites-listing .btn-copy-id.copied,
.owners-listing .btn-copy-id.copied {
    background: #ecfdf5;
    border-color: #10b981;
}
.sites-listing .btn-copy-id.copied svg,
.owners-listing .btn-copy-id.copied svg {
    opacity: 0.8;
    color: #059669;
}

/* Overflow dropdown â€” now styled by global .action-dropdown class */
@keyframes siteDropFade {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* â”€â”€ Desktop-only card properties (>= 768px) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (min-width: 768px) {
    .sites-listing .site-card,
    .owners-listing .owner-card {
        overflow: hidden;
    }
    .sites-listing .site-card:hover,
    .owners-listing .owner-card:hover {
        transform: translateY(-2px);
        box-shadow: 0 4px 16px rgba(0,0,0,0.07), 0 1px 3px rgba(0,0,0,0.04);
        border-color: #d1d5db;
    }

    /* Thumb â€” shared desktop chrome */
    .sites-listing .site-card-thumb,
    .owners-listing .owner-card-thumb {
        background: linear-gradient(135deg, #8b929c 0%, #7a828d 100%);
        display: flex;
        align-items: center;
        justify-content: center;
        border-bottom: 1px solid #d1d5db;
    }
    /* Thumb â€” sites (logo, contained) */
    .sites-listing .site-card-thumb {
        height: 150px;
        padding: 1.25rem;
        overflow: visible;
    }
    /* Thumb â€” owners/products (photo, cover) */
    .owners-listing .owner-card-thumb {
        height: 160px;
        padding: 0;
        overflow: hidden;
    }

    /* Overflow btn position */
    .sites-listing .site-card-overflow,
    .owners-listing .site-card-overflow {
        top: 8px;
        right: 8px;
    }

    /* Content gap + padding */
    .sites-listing .site-card-content,
    .owners-listing .owner-card-content {
        gap: 8px;
    }
    .sites-listing .site-card-content {
        padding: 16px 16px 0;
    }
    .owners-listing .owner-card-content {
        padding: 16px 16px 12px;
    }

    /* Title font-size */
    .sites-listing .site-card-name,
    .owners-listing .owner-card-name {
        font-size: 0.9rem;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Sites listing â€” section-specific overrides
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Thumb image (logo â€” contain) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing .site-card-thumb img {
    max-height: 85%;
    max-width: 85%;
    object-fit: contain;
    border-radius: 4px;
}

/* â”€â”€ Sites-only content/metadata â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* â”€â”€ Email â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing .site-card-email {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    color: #6b7280;
    overflow: hidden;
}
.sites-listing .site-card-email i {
    font-size: 0.7rem;
    flex-shrink: 0;
    color: var(--gray-500);
}
.sites-listing .site-card-email span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* â”€â”€ URL â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing .site-card-url {
    font-size: 0.75rem;
    color: #374151;
    text-decoration: none;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sites-listing .site-card-url:hover {
    color: var(--color-primary);
}

/* â”€â”€ Feature icons row â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing .site-card-features {
    display: flex;
    align-items: center;
    gap: 5px;
    flex-shrink: 0;
    flex-wrap: wrap;
}

/* â”€â”€ Card footer (desktop only â€” hidden on mobile via .listing-grid rule) â”€â”€ */
.sites-listing .site-card-footer {
    border-top: 1px solid #f0f1f3;
}
@media (min-width: 768px) {
    .sites-listing .site-card-footer {
        display: flex;
        align-items: center;
        padding: 8px 16px;
        min-height: 52px;
    }
}
.sites-listing .site-card-footer .footer-actions {
    display: flex;
    align-items: center;
    gap: 4px;
    width: 100%;
}
/* Hereda estilos de .action-btn.has-label (componente global)
.sites-listing .site-card-footer .card-action-btn â€” DEPRECATED */
.sites-listing .site-card-footer .card-action-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: none;
    border: none;
    font-size: 0.75rem;
    font-weight: 500;
    color: #374151;
    padding: 6px 10px;
    border-radius: 6px;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
    white-space: nowrap;
}
.sites-listing .site-card-footer .card-action-btn svg {
    color: #374151;
    transition: color 0.15s;
}
.sites-listing .site-card-footer .card-action-btn:hover {
    background: #f3f4f6;
    color: #111827;
}
.sites-listing .site-card-footer .card-action-btn:hover svg {
    color: #111827;
}
.sites-listing .site-card-footer .card-action-btn i {
    font-size: 0.8rem;
}
/* Dropdown + keyframes â†’ see "Shared card shell" above */

/* â”€â”€ View toggle (grid / list) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* â”€â”€ View toggle â€” Componente global â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.view-toggle {
    display: inline-flex;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: hidden;
}
.view-toggle-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 30px;
    background: #fff;
    border: none;
    cursor: pointer;
    color: var(--gray-500);
    transition: background 0.15s, color 0.15s;
}
.view-toggle-btn + .view-toggle-btn {
    border-left: 1px solid #e5e7eb;
}
.view-toggle-btn:hover {
    background: #f9fafb;
    color: #6b7280;
}
.view-toggle-btn.active {
    background: #f3f4f6;
    color: #111827;
}
.view-toggle-btn svg {
    stroke: currentColor;
    fill: none;
    color: inherit;
}

/* â”€â”€ List/table view (.sites-table-wrap â†’ shared section) â”€â”€ */
.sites-listing .sites-table {
    table-layout: fixed;
}
.sites-listing .sites-table .meta-id {
    font-size: 0.72rem;
    padding: 4px 8px;
    max-width: 170px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: inline-block;
    vertical-align: middle;
}
/* â”€â”€ List favicon cell â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing .td-favicon {
    width: 44px;
    padding: 8px !important;
}
.sites-listing .list-favicon {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: linear-gradient(135deg, #8b929c 0%, #7a828d 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
}
.sites-listing .list-favicon--img {
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    padding: 4px;
}
.sites-listing .list-favicon img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* â”€â”€ List web link icon â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing .site-list-weblink {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 6px;
    color: #6b7280;
    transition: background 0.15s, color 0.15s;
}
.sites-listing .site-list-weblink:hover {
    background: #f3f4f6;
    color: var(--color-primary);
}
.sites-listing .site-list-weblink svg {
    stroke: currentColor;
    fill: none;
}

.sites-listing .footer-edit-btn {
    margin-left: auto;
}

/* empty state, filters-bar, table-wrap â†’ shared reusable section above */

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Site Compact Cards â€” mobile representation of list view
   Desktop: hidden (table shown)
   Mobile:  visible (table hidden)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.sites-compact-cards {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.site-compact-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #fff;
    transition: border-color 0.15s;
}
.site-compact-card:active {
    border-color: #d1d5db;
}
.site-compact-card__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}
.site-compact-card__name {
    font-weight: 600;
    font-size: 0.92rem;
    color: #111827;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    flex: 1;
}
.site-compact-card__name:hover {
    color: var(--color-primary);
}
.site-compact-card__badges {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.site-compact-card__footer {
    display: flex;
    align-items: center;
    border-top: 1px solid #f0f1f3;
    padding-top: 8px;
    margin-top: 2px;
}
/* Desktop: hide compact cards, show table */
@media (min-width: 768px) {
    .sites-listing .sites-compact-cards {
        display: none;
    }
}
/* Mobile: hide table, show compact cards */
@media (max-width: 767.98px) {
    .sites-listing .sites-list-table {
        display: none !important;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   LISTING GRID â€” Global responsive layout for card listings
   Change here â†’ every listing page updates automatically.
   Breakpoints aligned with Bootstrap 5.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

.listing-grid {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: repeat(4, 1fr);
}
@media (max-width: 1399.98px) {
    .listing-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 991.98px) {
    .listing-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767.98px) {
    .listing-grid { grid-template-columns: 1fr; gap: 1rem; }
}
@media (max-width: 575.98px) {
    .listing-grid { gap: 0.75rem; }
}

.listing-grid > nav,
.listing-grid > .col-12,
.listing-grid > .sites-empty {
    grid-column: 1 / -1;
}

/* â”€â”€ Shared mobile (< 768px): compact card + force card view â”€â”€ */
@media (max-width: 767.98px) {
    /* Hide tables on mobile (cards take over).
       Sites listing keeps its #view-list visible (compact cards inside). */
    .owners-listing:not(.products-listing) #view-list {
        display: none !important;
    }

    .listing-grid .site-card,
    .listing-grid .owner-card {
        position: relative;
        border-radius: 10px;
        overflow: visible;
    }
    .listing-grid .site-card:hover,
    .listing-grid .owner-card:hover {
        transform: none;
        box-shadow: none;
    }

    .listing-grid .site-card:has(.dropdown-menu.show),
    .listing-grid .owner-card:has(.dropdown-menu.show) {
        z-index: 10;
    }

    .listing-grid .site-card-overflow {
        position: absolute;
        top: 8px;
        right: 8px;
        z-index: 2;
    }
    .listing-grid .site-card-overflow .dropdown-menu {
        position: absolute;
        top: 100%;
        right: 0;
        left: auto;
        margin-top: 4px;
    }

    .listing-grid .site-card-name a,
    .listing-grid .owner-card-name a {
        pointer-events: none;
        color: inherit;
        text-decoration: none;
    }
    .listing-grid .site-card-footer,
    .listing-grid .owner-card-footer {
        display: none;
    }

    .listing-grid .btn-copy-id {
        min-width: 44px;
        min-height: 44px;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   <x-media-placeholder> â€” reglas base del componente
   El componente NO pone `display` inline para que las reglas
   de aqui abajo (y overrides contextuales como .listing-grid)
   puedan tomar control sin tener que usar !important.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.media-placeholder {
    display: inline-flex;
}
/* Caso: hay <img>. El <span> es fallback escondido por default;
   el onerror del <img> agrega .is-broken al img y .is-shown al span. */
.media-placeholder[data-fallback="true"] {
    display: none;
}
.media-placeholder[data-fallback="true"].is-shown {
    display: inline-flex;
}
.media-placeholder-img.is-broken {
    display: none;
}

/* â”€â”€ xs (< 576px): compact card â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 575.98px) {
    .listing-grid .site-card-thumb,
    .listing-grid .owner-card-thumb {
        height: 0;
        min-height: 0;
        padding: 0;
        overflow: visible;
        background: none;
        border-bottom: none;
    }
    .listing-grid .site-card-thumb img,
    .listing-grid .site-card-thumb > svg,
    .listing-grid .site-card-thumb .media-placeholder,
    .listing-grid .owner-card-thumb img,
    .listing-grid .owner-card-thumb > svg,
    .listing-grid .owner-card-thumb .media-placeholder,
    .listing-grid .owner-card-thumb .model-pill {
        display: none;
    }

    .listing-grid .site-card-content,
    .listing-grid .owner-card-content {
        padding: 12px 56px 12px 14px;
        gap: 6px;
    }
    .listing-grid .site-card-name,
    .listing-grid .owner-card-name {
        font-size: 0.95rem;
    }
    .listing-grid .badge-env {
        font-size: 0.7rem;
    }
    .listing-grid .meta-id {
        font-size: 0.7rem;
    }
    .listing-grid .site-card-id-row {
        gap: 6px;
    }
    .listing-grid .meta-id {
        margin-top: 0;
        padding: 3px 6px;
    }
    .listing-grid .meta-id--full {
        display: none;
    }
    .listing-grid .meta-id--short {
        display: inline;
    }
    .listing-grid .site-card-url {
        padding: 0;
    }
    .listing-grid .owner-card-metrics {
        gap: 8px;
    }
    .listing-grid .metric-circle {
        font-size: 0.75rem;
        gap: 3px;
    }
    .listing-grid .metric-circle svg {
        width: 16px;
        height: 16px;
    }
}

/* â”€â”€ sm (576â€“767px): compact card, slightly bigger â”€â”€â”€â”€â”€â”€â”€ */
@media (min-width: 576px) and (max-width: 767.98px) {
    .listing-grid .site-card-thumb,
    .listing-grid .owner-card-thumb {
        height: 0;
        min-height: 0;
        padding: 0;
        overflow: visible;
        background: none;
        border-bottom: none;
    }
    .listing-grid .site-card-thumb img,
    .listing-grid .site-card-thumb > svg,
    .listing-grid .site-card-thumb .media-placeholder,
    .listing-grid .owner-card-thumb img,
    .listing-grid .owner-card-thumb > svg,
    .listing-grid .owner-card-thumb .media-placeholder,
    .listing-grid .owner-card-thumb .model-pill {
        display: none;
    }

    .listing-grid .site-card-content,
    .listing-grid .owner-card-content {
        padding: 12px 56px 12px 14px;
        gap: 6px;
    }
    .listing-grid .site-card-name,
    .listing-grid .owner-card-name {
        font-size: 0.95rem;
    }
    .listing-grid .badge-env {
        font-size: 0.7rem;
    }
    .listing-grid .meta-id {
        font-size: 0.7rem;
    }
    .listing-grid .site-card-id-row {
        gap: 6px;
    }
    .listing-grid .meta-id {
        margin-top: 0;
        padding: 3px 6px;
    }
    .listing-grid .meta-id--full {
        display: none;
    }
    .listing-grid .meta-id--short {
        display: inline;
    }
    .listing-grid .site-card-url {
        padding: 0;
    }
    .listing-grid .owner-card-metrics {
        gap: 10px;
    }
    .listing-grid .metric-circle {
        font-size: 0.78rem;
        gap: 4px;
    }
    .listing-grid .metric-circle svg {
        width: 17px;
        height: 17px;
    }
}

/* â”€â”€ md (768â€“991px): hide ID column in sites table only â”€â”€ */
@media (min-width: 768px) and (max-width: 991.98px) {
    .sites-listing .sites-table th:nth-child(2),
    .sites-listing .sites-table td:nth-child(2) {
        display: none;
    }
}

/* â”€â”€ Badge de proyecto (reutilizable) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.badge-project {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    font-size: 0.68rem;
    font-weight: 600;
    padding: 3px 10px 3px 7px;
    border-radius: 50rem;
    letter-spacing: 0.01em;
    line-height: 1.4;
    white-space: nowrap;
    flex-shrink: 0;
}
.badge-project::before {
    content: '' !important;
    display: inline-block !important;
    width: 6px !important;
    min-width: 6px;
    height: 6px !important;
    min-height: 6px;
    border-radius: 50% !important;
    flex-shrink: 0;
}
.badge-project.is-active    { background: #ecfdf5; color: #059669; }
.badge-project.is-active::before    { background: #10b981; }
.badge-project.is-inactive  { background: #fef2f2; color: #dc2626; }
.badge-project.is-inactive::before  { background: #ef4444; }
.badge-project.is-pending   { background: #fffbeb; color: #d97706; }
.badge-project.is-pending::before   { background: #f59e0b; }
.badge-project.is-draft     { background: #f3f4f6; color: #6b7280; }
.badge-project.is-draft::before     { background: var(--gray-400); }

/* â”€â”€ Environment badge â€” Componente reutilizable (.badge-env) â”€â”€ */
/* bg = color de letra al 30% sobre blanco (color-mix)            */
.badge-env {
    --badge-color: #6b7280;
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    padding: 2px 6px;
    border-radius: 4px;
    text-transform: uppercase;
    white-space: nowrap;
    flex-shrink: 0;
    line-height: 1.4;
    color: var(--badge-color);
    background: color-mix(in srgb, var(--badge-color) 8%, #fff);
}
.badge-env.is-prod {
    --badge-color: var(--color-primary);
}
.badge-env.is-test {
    --badge-color: #6b7280;
}
.badge-env.is-active {
    --badge-color: #059669;
}
.badge-env.is-inactive {
    --badge-color: #667085;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Card overflow button â€” Componente reutilizable (.card-overflow-btn)
   Uso:  <button class="card-overflow-btn" data-bs-toggle="dropdown">
             <svg>...</svg>
         </button>
   Visual: 28px  |  Touch target (mobile): 44px via padding
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.card-overflow-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255,255,255,0.45);
    backdrop-filter: blur(6px);
    border: 1px solid rgba(255,255,255,0.25);
    cursor: pointer;
    color: #6b7280;
    font-size: 0.9rem;
    padding: 0;
    transition: background 0.15s, color 0.15s;
}
.card-overflow-btn:hover {
    background: #fff;
    color: #374151;
}
/* Variante para fondos claros (sin glass) */
.card-overflow-btn.on-light {
    background: #f3f4f6;
    backdrop-filter: none;
    border-color: #e5e7eb;
}
.card-overflow-btn.on-light:hover {
    background: #e5e7eb;
    color: #374151;
}
/* Mobile: visual 28px ghost, tap area 44px via ::after */
@media (max-width: 767.98px) {
    .card-overflow-btn {
        position: relative;
        width: 28px;
        height: 28px;
        background: transparent;
        backdrop-filter: none;
        border-color: transparent;
        color: #6b7280;
    }
    .card-overflow-btn::after {
        content: '';
        position: absolute;
        top: 50%;
        left: 50%;
        width: 44px;
        height: 44px;
        transform: translate(-50%, -50%);
    }
    .card-overflow-btn:active {
        background: rgba(0, 0, 0, 0.06);
        border-color: rgba(0, 0, 0, 0.08);
        color: #374151;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Action Dropdown â€” Componente reutilizable (.action-dropdown)
   Uso en cards:  <div class="site-card-overflow">
                      <button class="card-overflow-btn" data-bs-toggle="dropdown">â€¦</button>
                      <ul class="dropdown-menu action-dropdown">â€¦</ul>
                  </div>
   Uso en tablas: <td>
                      <div class="dropdown">
                          <button class="card-overflow-btn" data-bs-toggle="dropdown">â€¦</button>
                          <ul class="dropdown-menu action-dropdown">â€¦</ul>
                      </div>
                  </td>
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.action-dropdown {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.04);
    padding: 4px;
    min-width: 140px;
    animation: siteDropFade 0.15s ease;
}
.action-dropdown .dropdown-item {
    border-radius: 6px;
    font-size: 0.78rem;
    padding: 6px 10px;
    color: #374151;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: background 0.12s;
}
.action-dropdown .dropdown-item:hover {
    background: #f3f4f6;
    color: #111827;
}
.action-dropdown .dropdown-item.text-danger:hover {
    background: #fef2f2;
}
.action-dropdown .dropdown-item svg,
.action-dropdown .dropdown-item i {
    width: 15px;
    height: 15px;
    font-size: 15px;
    color: #4b5563;
    flex-shrink: 0;
}
.action-dropdown .dropdown-item.text-danger svg,
.action-dropdown .dropdown-item.text-danger i {
    color: inherit;
}
.action-dropdown .dropdown-divider {
    margin: 2px 4px;
    border-color: #f3f4f6;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Status icons â€” Componente reutilizable (.status-icon)
   Uso:  <span class="status-icon is-active"><img src="..."></span>
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.status-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.status-icon img {
    width: 20px;
    height: 20px;
}
.status-icon.is-active img {
    filter: brightness(0) saturate(100%) invert(50%) sepia(95%) saturate(500%) hue-rotate(100deg) brightness(90%);
}
.status-icon.is-inactive img {
    filter: brightness(0) saturate(100%) invert(27%) sepia(95%) saturate(5000%) hue-rotate(350deg) brightness(95%) contrast(95%);
    opacity: 0.8;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Badge variants â€” (.badge-env.is-type-*, .badge-env.is-model-*, .badge-env.is-unit-*)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.badge-env.is-type-edificio  { --badge-color: #1570ef; }
.badge-env.is-type-modular   { --badge-color: #0097a7; }
.badge-env.is-type-loteo     { --badge-color: #5D3CF2; }
.badge-env.is-type-producto  { --badge-color: #475569; }

.badge-env.is-model-venta          { --badge-color: #2563eb; }
.badge-env.is-model-alquiler       { --badge-color: #d97706; }
.badge-env.is-model-integracion    { --badge-color: #a020f0; }
.badge-env.is-model-participacion  { --badge-color: #84cc16; }

.badge-env.is-unit-activa    { --badge-color: #059669; }
.badge-env.is-unit-inactiva  { --badge-color: #667085; }
.badge-env.is-unit-destacada { --badge-color: #1570ef; }
.badge-env.is-unit-senada    { --badge-color: #dc6803; }
.badge-env.is-unit-cerrada   { --badge-color: #6938ef; }
.badge-env.is-unit-vendida   { --badge-color: #d92d20; }

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Metric circle â€” Componente reutilizable (.metric-circle)
   Uso:  <span class="metric-circle" title="...">
             <svg>â€¦</svg> <strong>12</strong> label
         </span>
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.metric-circle {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.8rem;
    color: #6b7280;
    cursor: help;
    background: none;
    padding: 0;
}
.metric-circle svg {
    width: 20px;
    height: 20px;
    color: var(--gray-500);
    flex-shrink: 0;
}
.metric-circle strong {
    font-weight: 600;
    color: #374151;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Listing shared â€” Empty state, filters bar, table wrap
   (used by .sites-listing, .owners-listing)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.sites-empty,
.sites-listing .sites-empty,
.owners-listing .sites-empty {
    text-align: center;
    padding: 60px 20px;
}
.sites-empty-icon,
.sites-listing .sites-empty-icon,
.owners-listing .sites-empty-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    background: #f3f4f6;
    border-radius: 14px;
    margin-bottom: 14px;
    color: var(--gray-500);
    font-size: 1.4rem;
}
.sites-empty h4,
.sites-listing .sites-empty h4,
.owners-listing .sites-empty h4 {
    font-size: 0.95rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 4px;
}
.sites-empty p,
.sites-listing .sites-empty p,
.owners-listing .sites-empty p {
    font-size: 0.82rem;
    color: var(--gray-500);
    margin: 0;
}
.sites-listing .filters-bar,
.owners-listing .filters-bar {
    margin-bottom: 1.25rem;
}
.sites-listing .sites-table-wrap,
.owners-listing .sites-table-wrap,
.suscriptions-listing .sites-table-wrap {
    margin-top: 1rem;
    overflow-x: auto;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Shared listing â€” Responsive table base (#view-list)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.owners-listing #view-list {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* â”€â”€ Owners table (7 cols): Proyecto+Ubic | Tipo | Modelo | Clientes | Susc | Estado | Acciones â”€â”€ */
.owners-listing:not(.products-listing) #view-list .sites-table {
    width: 100%;
    min-width: 680px;
    table-layout: fixed;
}
.owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(1),
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(1) { width: 26%; }
.owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(2),
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(2) { width: 14%; white-space: nowrap; }
.owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(3),
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(3) { width: 14%; white-space: nowrap; }
.owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(4),
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(4) { width: 10%; }
.owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(5),
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(5) { width: 12%; }
.owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(6),
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(6) { width: 10%; white-space: nowrap; }
.owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(7),
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(7) { width: 14%; }
.owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(1) { overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 1023.98px) {
    .owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(4),
    .owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(4),
    .owners-listing:not(.products-listing) #view-list .sites-table th:nth-child(5),
    .owners-listing:not(.products-listing) #view-list .sites-table td:nth-child(5) {
        display: none;
    }
    .owners-listing:not(.products-listing) #view-list .sites-table {
        min-width: 480px;
    }
}

/* â”€â”€ Products table (6 cols): Unidad | Proyecto | Precio | Vendido | Estado | Acciones â”€â”€ */
.products-listing #view-list .sites-table {
    min-width: 600px;
}
.products-listing #view-list .sites-table th:nth-child(1),
.products-listing #view-list .sites-table td:nth-child(1) {
    min-width: 180px;
}
.products-listing #view-list .sites-table td:nth-child(5) {
    white-space: nowrap;
}
@media (max-width: 1023.98px) {
    .products-listing #view-list .sites-table th:nth-child(2),
    .products-listing #view-list .sites-table td:nth-child(2),
    .products-listing #view-list .sites-table th:nth-child(4),
    .products-listing #view-list .sites-table td:nth-child(4) {
        display: none;
    }
    .products-listing #view-list .sites-table {
        min-width: 420px;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Icon sizing â€” Untitled UI Featured Icon tiers
   Uso:  class="icon-md"  â†’  40 Ã— 40 contenedor, 20 Ã— 20 icono
         class="icon-sm"  â†’  32 Ã— 32 contenedor, 16 Ã— 16 icono
         class="icon-lg"  â†’  48 Ã— 48 contenedor, 24 Ã— 24 icono
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.icon-sm  { --icon-box: 32px; --icon-size: 16px; }
.icon-md  { --icon-box: 40px; --icon-size: 20px; }
.icon-lg  { --icon-box: 48px; --icon-size: 24px; }

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Feature icon â€” Componente reutilizable (.feat-icon)
   Uso:  <span class="feat-icon icon-md feat-biometric" title="...">
             <img src="/images/icons/face-id.svg" alt="">
         </span>
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.feat-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--icon-box, 28px);
    height: var(--icon-box, 28px);
    border-radius: 50%;
    font-size: var(--icon-size, 20px);
    flex-shrink: 0;
    cursor: default;
    position: relative;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.feat-icon img {
    width: var(--icon-size, 20px);
    height: var(--icon-size, 20px);
    opacity: 0.7;
}
.feat-icon:hover {
    transform: scale(1.1);
    box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
/* Tooltip nativo mejorado */
.feat-icon[title] {
    cursor: help;
}
/* â”€â”€ Variantes de color â€” 3 familias semanticas â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* AZUL (#3B82F6) â€” step "InformaciÃ³n General" */
.feat-icon.feat-shortform { background: rgba(219, 234, 254, 0.4); color: #3B82F6; }
.feat-icon.feat-shortform img { filter: brightness(0) saturate(100%) invert(44%) sepia(85%) saturate(1800%) hue-rotate(207deg) brightness(100%); }
.feat-icon.feat-prices { background: rgba(219, 234, 254, 0.4); color: #3B82F6; }
.feat-icon.feat-prices img { filter: brightness(0) saturate(100%) invert(44%) sepia(85%) saturate(1800%) hue-rotate(207deg) brightness(100%); }
.feat-icon.feat-levels { background: rgba(219, 234, 254, 0.4); color: #3B82F6; }
.feat-icon.feat-levels img { filter: brightness(0) saturate(100%) invert(44%) sepia(85%) saturate(1800%) hue-rotate(207deg) brightness(100%); }
.feat-icon.feat-reedim { background: rgba(219, 234, 254, 0.4); color: #3B82F6; }
.feat-icon.feat-reedim img { filter: brightness(0) saturate(100%) invert(44%) sepia(85%) saturate(1800%) hue-rotate(207deg) brightness(100%); }
.feat-icon.feat-p2p { background: rgba(219, 234, 254, 0.4); color: #3B82F6; }
.feat-icon.feat-p2p img { filter: brightness(0) saturate(100%) invert(44%) sepia(85%) saturate(1800%) hue-rotate(207deg) brightness(100%); }
.feat-icon.feat-employee-plan { background: rgba(219, 234, 254, 0.4); color: #3B82F6; }
.feat-icon.feat-employee-plan img { filter: brightness(0) saturate(100%) invert(44%) sepia(85%) saturate(1800%) hue-rotate(207deg) brightness(100%); }
/* AZUL (#3B82F6) â€” biometrÃ­a (validaciÃ³n de identidad) */
.feat-icon.feat-biometric { background: rgba(219, 234, 254, 0.4); color: #3B82F6; }
.feat-icon.feat-biometric img { filter: brightness(0) saturate(100%) invert(44%) sepia(85%) saturate(1800%) hue-rotate(207deg) brightness(100%); }
/* INDIGO (#6366F1) â€” step "Medios de Pago" */
.feat-icon.feat-mp { background: rgba(224, 221, 254, 0.4); color: #6366F1; }
.feat-icon.feat-mp img { filter: brightness(0) saturate(100%) invert(40%) sepia(70%) saturate(2000%) hue-rotate(230deg) brightness(98%); }
.feat-icon.feat-crypto { background: rgba(224, 221, 254, 0.4); color: #6366F1; }
.feat-icon.feat-crypto img { filter: brightness(0) saturate(100%) invert(40%) sepia(70%) saturate(2000%) hue-rotate(230deg) brightness(98%); }
.feat-icon.feat-stripe { background: rgba(224, 221, 254, 0.4); color: #6366F1; }
.feat-icon.feat-stripe img { filter: brightness(0) saturate(100%) invert(40%) sepia(70%) saturate(2000%) hue-rotate(230deg) brightness(98%); }

/* â”€â”€ Header section â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 1.25rem;
}
.sites-listing-header h1 {
    font-size: 1.45rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #111827;
    margin-bottom: 2px;
}
.sites-listing-header .subtitle {
    font-size: 0.85rem;
    color: #6b7280;
    margin: 0;
}
.sites-listing-header .btn-new-site {
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 9px 20px;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background 0.15s ease, box-shadow 0.15s ease;
    white-space: nowrap;
}
.sites-listing-header .btn-new-site:hover {
    background: #2b63d9;
    box-shadow: 0 2px 8px rgba(60,118,242,0.25);
}

/* â”€â”€ Search bar â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.sites-listing .search-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}
.sites-listing .search-input-wrap {
    display: flex;
    align-items: center;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    background: #fff;
    padding: 0 12px;
    transition: border-color 0.15s, box-shadow 0.15s;
    height: 38px;
}
.sites-listing .search-input-wrap:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(60,118,242,0.1);
}
.sites-listing .search-input-wrap i {
    color: var(--gray-500);
    font-size: 0.85rem;
}
.sites-listing .search-input-wrap input {
    border: none;
    outline: none;
    background: transparent;
    padding: 0 8px;
    font-size: 0.85rem;
    color: #374151;
    width: 180px;
}
.sites-listing .search-input-wrap input::placeholder {
    color: var(--gray-400);
}
.sites-listing .search-btn {
    background: none;
    border: none;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--color-primary);
    padding: 6px 10px;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.15s;
}
.sites-listing .search-btn:hover {
    background: #f0f4ff;
}
.sites-listing .search-btn-reset {
    color: #6b7280;
}
.sites-listing .search-btn-reset:hover {
    background: #f3f4f6;
}

/* â”€â”€ Results counter â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Results badge â€” Componente reutilizable (.results-badge)
   Uso:  <span class="results-badge">
             <i class="bi bi-check-circle"></i>
             <span>123 resultados</span>
         </span>
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.results-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: none;
    color: #374151;
    padding: 0;
    font-size: 0.7rem;
    font-weight: 400;
    white-space: nowrap;
    font-weight: 500;
    margin-left: auto;
}
.results-badge i {
    font-size: 0.65rem;
    color: #374151;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Pagination â€” Componente reutilizable (.app-pagination)
   Estilo minimalista
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.app-pagination {
    display: flex;
    justify-content: center;
    padding: 1.5rem 0 0.5rem;
}
.app-pagination .pagination-list {
    display: flex;
    align-items: center;
    gap: 4px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.app-pagination .page-item .page-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    height: 34px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 50%;
    font-size: 0.8rem;
    font-weight: 500;
    color: #374151;
    background: none;
    text-decoration: none;
    transition: all 0.15s ease;
    cursor: pointer;
    gap: 4px;
}
.app-pagination .page-item .page-link:hover {
    background: #f3f4f6;
    color: #111827;
}
/* Active page */
.app-pagination .page-item.active .page-link {
    background: #111827;
    color: #fff;
    border-color: transparent;
    font-weight: 600;
}
/* Disabled (prev/next when at edges) */
.app-pagination .page-item.disabled .page-link {
    color: #d1d5db;
    cursor: default;
    pointer-events: none;
}
/* Prev / Next buttons */
.app-pagination .page-item.prev .page-link,
.app-pagination .page-item.next .page-link {
    font-weight: 500;
    gap: 6px;
    padding: 0 12px;
    border-radius: 50rem;
    min-width: auto;
}
.app-pagination .page-item.prev .page-link i,
.app-pagination .page-item.next .page-link i {
    font-size: 0.65rem;
}
/* Ellipsis */
.app-pagination .page-item.ellipsis .page-link {
    cursor: default;
    color: var(--gray-500);
    min-width: 24px;
}
/* Responsive */
@media (max-width: 575.98px) {
    .app-pagination .page-item .page-link {
        min-width: 30px;
        height: 30px;
        font-size: 0.75rem;
    }
    .app-pagination .page-item.prev .page-link,
    .app-pagination .page-item.next .page-link {
        padding: 0 10px;
    }
}

/* â”€â”€ Bootstrap Tooltip override â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.tooltip .tooltip-inner {
    background: #1f2937;
    color: #fff;
    font-size: 0.72rem;
    font-weight: 500;
    padding: 6px 12px;
    border-radius: 6px;
    letter-spacing: 0.01em;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
.tooltip .tooltip-arrow::before {
    border-top-color: #1f2937 !important;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Discount Codes â€” Premium Fintech
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Grid discipline:
     â€¢ Every row = 12 columns. No partial rows.
     â€¢ Allowed splits: 12 | 6+6 | 4+4+4 | 6+3+3
     â€¢ Form max-width: 840px (prevents wide-screen stretch)
     â€¢ Spacing: g-4 (24px) between fields, 32px sections
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Shared: header icon block (used by both pages) â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.dsc-header-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    min-width: 44px;
    background: #f0f4ff;
    border-radius: 10px;
    flex-shrink: 0;
}
.dsc-header-icon img {
    width: 22px;
    height: 22px;
    opacity: 0.85;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   CREATE / EDIT  (.discount-page)
   Single card, 3 field rows, Material Design grid.
   Row 1: 6+2+2+2=12 | Row 2: 4+4+4=12 | Row 3: 3+3+3+3=12
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Overline section label (Material Design pattern) â”€â”€â”€â”€â”€â”€â”€ */
.dsc-overline {
    font-size: 0.68rem !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--gray-500) !important;
    margin-bottom: 12px !important;
    padding-bottom: 0;
    border: none;
}

/* â”€â”€ Labels â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-page .form-label {
    font-size: 0.8rem;
    font-weight: 500;
    color: #374151;
    margin-bottom: 5px;
}

/* â”€â”€ Inputs & selects â€” refined focus/disabled â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-page .form-control,
.discount-page .form-select {
    font-size: 0.85rem;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    padding: 8px 12px;
    color: #1f2937;
    background-color: #fff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
    height: 38px;
}
.discount-page .form-control:focus,
.discount-page .form-select:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.1);
    outline: none;
}
.discount-page .form-control:disabled,
.discount-page .form-select:disabled {
    background-color: #f9fafb;
    color: var(--gray-500);
    border-color: #e5e7eb;
    cursor: not-allowed;
    opacity: 1;
}
.discount-page .form-control::placeholder {
    color: var(--gray-400);
}

/* â”€â”€ Helper text â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-page .form-text {
    font-size: 0.72rem;
    color: var(--gray-500);
    margin-top: 4px;
    line-height: 1.35;
}

/* â”€â”€ Validation â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-page .invalid-feedback {
    font-size: 0.75rem;
    margin-top: 4px;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   INDEX / LISTING  (.discount-listing)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Header â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .listing-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
    gap: 16px;
}
.discount-listing .listing-header-left {
    display: flex;
    align-items: flex-start;
    gap: 14px;
}
.discount-listing .listing-header h1 {
    font-size: 1.35rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: #111827;
    margin: 0;
    line-height: 1.3;
}
.discount-listing .listing-header .subtitle {
    font-size: 0.82rem;
    color: #6b7280;
    margin: 2px 0 0;
}
.discount-listing .btn-new-code {
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 9px 20px;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: background 0.15s, box-shadow 0.15s;
    white-space: nowrap;
    height: 40px;
}
.discount-listing .btn-new-code:hover {
    background: #2b63d9;
    box-shadow: 0 2px 8px rgba(60, 118, 242, 0.25);
    color: #fff;
}
.discount-listing .btn-new-code img {
    width: 16px;
    height: 16px;
    filter: brightness(0) invert(1);
}

/* â”€â”€ Filter bar â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .filter-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}
.discount-listing .search-wrap {
    display: flex;
    align-items: center;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    background: #fff;
    padding: 0 12px;
    height: 38px;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.discount-listing .search-wrap:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.1);
}
.discount-listing .search-wrap img {
    width: 16px;
    height: 16px;
    opacity: 0.4;
    flex-shrink: 0;
}
.discount-listing .search-wrap input {
    border: none;
    outline: none;
    background: transparent;
    padding: 0 8px;
    font-size: 0.85rem;
    color: #374151;
    width: 200px;
}
.discount-listing .search-wrap input::placeholder {
    color: var(--gray-400);
}
.discount-listing .filter-btn {
    background: none;
    border: none;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--color-primary);
    padding: 6px 12px;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.15s;
}
.discount-listing .filter-btn:hover {
    background: #f0f4ff;
}
.discount-listing .filter-btn-reset {
    color: #6b7280;
}
.discount-listing .filter-btn-reset:hover {
    background: #f3f4f6;
}
.discount-listing .results-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: #f0f4ff;
    color: var(--color-primary);
    padding: 5px 14px;
    border-radius: 50rem;
    font-size: 0.78rem;
    font-weight: 500;
    margin-left: auto;
}
.discount-listing .results-pill img {
    width: 14px;
    height: 14px;
    opacity: 0.6;
}

/* â”€â”€ Table â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .table-card {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    overflow: hidden;
}
.discount-listing .table-card .table {
    margin-bottom: 0;
}
.discount-listing .table-card .table thead th {
    background: #f9fafb;
    border-bottom: 1px solid #e5e7eb;
    border-top: none;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    padding: 12px 16px;
    white-space: nowrap;
}
.discount-listing .table-card .table tbody td {
    padding: 14px 16px;
    font-size: 0.84rem;
    color: #374151;
    border-bottom: 1px solid #f0f1f3;
    vertical-align: middle;
}
.discount-listing .table-card .table tbody tr:last-child td {
    border-bottom: none;
}
.discount-listing .table-card .table tbody tr:hover {
    background: #fafbfc;
}

/* â”€â”€ Code cell â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .code-cell {
    display: flex;
    align-items: center;
    gap: 8px;
}
.discount-listing .code-mono {
    font-family: 'SF Mono', 'Fira Code', 'Courier New', monospace;
    font-size: 0.82rem;
    font-weight: 600;
    color: #111827;
    letter-spacing: 0.03em;
    background: #f3f4f6;
    padding: 3px 10px;
    border-radius: 6px;
}
.discount-listing .btn-copy {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    background: #f0f4ff;
    border: 1px solid #dbe4f8;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
    flex-shrink: 0;
    padding: 0;
}
.discount-listing .btn-copy:hover {
    background: #dbe4f8;
    border-color: var(--color-primary);
}
.discount-listing .btn-copy img {
    width: 14px;
    height: 14px;
    opacity: 0.65;
}
.discount-listing .btn-copy.copied {
    background: #ecfdf5;
    border-color: #10b981;
}
.discount-listing .btn-copy.copied img {
    opacity: 0.8;
}

/* â”€â”€ Pills â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .value-pill {
    display: inline-flex;
    align-items: center;
    font-size: 0.82rem;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: 6px;
    white-space: nowrap;
}
.discount-listing .value-pill.is-percent {
    background: #eff6ff;
    color: #2563eb;
}
.discount-listing .value-pill.is-fixed {
    background: #ecfdf5;
    color: #059669;
}
.discount-listing .scope-badge {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 500;
    padding: 3px 10px;
    border-radius: 50rem;
    background: #f3f4f6;
    color: #6b7280;
    text-transform: capitalize;
}
.discount-listing .status-indicator {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.78rem;
    font-weight: 500;
}
.discount-listing .status-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}
.discount-listing .status-dot.is-active  { background: #10b981; }
.discount-listing .status-dot.is-inactive { background: #ef4444; }

/* â”€â”€ Action btns â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: #f0f1f3;
    border: none;
    border-radius: 7px;
    cursor: pointer;
    transition: background 0.15s;
    text-decoration: none;
    padding: 0;
}
.discount-listing .action-btn:hover { background: #e4e6ea; }
.discount-listing .action-btn img { width: 15px; height: 15px; opacity: 0.55; }
.discount-listing .action-btn:hover img { opacity: 0.8; }
.discount-listing .action-btn-danger:hover { background: #fee2e2; }
.discount-listing .action-btn-danger:hover img {
    filter: brightness(0) saturate(100%) invert(42%) sepia(67%) saturate(2600%) hue-rotate(335deg) brightness(92%) contrast(92%);
}

/* â”€â”€ Empty state â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .empty-state {
    text-align: center;
    padding: 48px 20px;
}
.discount-listing .empty-state-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    background: #f3f4f6;
    border-radius: 14px;
    margin-bottom: 12px;
}
.discount-listing .empty-state-icon img { width: 24px; height: 24px; opacity: 0.4; }
.discount-listing .empty-state h4 {
    font-size: 0.92rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 4px;
}
.discount-listing .empty-state p { font-size: 0.8rem; color: var(--gray-500); margin: 0; }

/* â”€â”€ Pagination â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.discount-listing .pagination-wrap { padding: 16px 0 4px; }

/* â”€â”€ Discount table pills â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.dsc-code-pill {
    display: inline-block;
    font-family: 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', monospace;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 5px 14px;
    border-radius: 50rem;
    background: #f3f4f6;
    color: #1f2937;
    white-space: nowrap;
    letter-spacing: 0.02em;
}
.dsc-value-pill {
    display: inline-flex;
    align-items: center;
    font-size: 0.82rem;
    font-weight: 700;
    padding: 5px 16px;
    border-radius: 50rem;
    white-space: nowrap;
}
.dsc-value-pill.is-percent {
    background: transparent;
    color: #2563eb;
}
.dsc-value-pill.is-fixed {
    background: transparent;
    color: #059669;
}
.dsc-scope-pill {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 500;
    padding: 5px 16px;
    border-radius: 50rem;
    background: transparent;
    color: #6b7280;
    text-transform: capitalize;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Action Button â€” Componente Ãºnico (.action-btn)
   BotÃ³n ghost para acciones en tablas, cards, listas.
   Usa SVG sprites sin width/height inline.

   Contenedor:
     <div class="action-group"> ... </div>

   Solo icono:
     <a class="action-btn" href="..." title="Editar">
         <svg><use href="/images/sprite.svg#icon-edit-03"/></svg>
     </a>

   Icono + texto:
     <a class="action-btn has-label" href="...">
         <svg><use href="/images/sprite.svg#icon-edit-03"/></svg> Editar
     </a>

   Variantes:
     .action-btn              â†’ default (gris)
     .action-btn.is-danger    â†’ rojo en hover (eliminar)
     .action-btn.copied       â†’ feedback verde (copiar)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.action-group {
    display: inline-flex;
    align-items: center;
    gap: 0;
}
.action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    border-radius: 6px;
    cursor: pointer;
    color: #374151;
    font-size: 0.75rem;
    font-weight: 500;
    text-decoration: none;
    padding: 0;
    line-height: 1;
    transition: background 0.15s ease, color 0.15s ease;
}
.action-btn svg {
    width: 16px;
    height: 16px;
    color: var(--gray-400, #A3A3AF);
    transition: color 0.15s ease;
    flex-shrink: 0;
}
.action-btn:hover {
    background: #f3f4f6;
    color: #111827;
}
.action-btn:hover svg {
    color: #374151;
}
.action-btn:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 1px;
}
/* Con label (icono + texto) */
.action-btn.has-label {
    width: auto;
    gap: 5px;
    padding: 6px 10px;
    white-space: nowrap;
}
/* Danger variant (eliminar) */
.action-btn.is-danger:hover {
    background: #fef2f2;
    color: #dc2626;
}
.action-btn.is-danger:hover svg {
    color: #dc2626;
}
/* Primary variant (accion principal del row, ej. ver detalle) */
.action-btn--primary:hover {
    background: #ede9fe;
    color: var(--color-primary);
}
.action-btn--primary:hover svg {
    color: var(--color-primary);
}
/* Copied feedback */
.action-btn.copied {
    background: #ecfdf5;
}
.action-btn.copied svg {
    color: #059669;
}

/* â”€â”€ Legacy aliases (backward compat) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Owners / Products listing â€” section-specific overrides
   (products reuses .owners-listing wrapper class)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Thumb image (photo â€” cover) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.owners-listing .owner-card-thumb img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 0;
}

/* â”€â”€ Model pill overlay (Venta / Alquiler / IntegraciÃ³n) â”€â”€ */
.owners-listing .model-pill {
    position: absolute;
    top: 8px;
    left: 16px;
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    border: 1.5px solid var(--color-primary, #3B82F6);
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    color: #fff;
    font-size: 0.6rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1;
    white-space: nowrap;
    z-index: 2;
}

/* Overflow, dropdown, content, title, badges â†’ see "Shared card shell" above */

/* ID row, meta-id, copy-btn â†’ see "Shared card shell" above */

/* â”€â”€ Location row â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.owners-listing .owner-card-location {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 0.75rem;
    color: #6b7280;
}
.owners-listing .owner-card-location svg {
    width: 14px;
    height: 14px;
    color: var(--gray-500);
    flex-shrink: 0;
}

/* â”€â”€ Card footer (desktop only â€” hidden on mobile via .listing-grid rule) â”€â”€ */
.owners-listing .owner-card-footer {
    border-top: 1px solid #f0f1f3;
}
@media (min-width: 768px) {
    .owners-listing .owner-card-footer {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 0 16px;
        height: 48px;
    }
}
/* â”€â”€ Card body metrics â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.owners-listing .owner-card-metrics {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* metric-circle, empty state, filters-bar, table-wrap â†’ shared reusable section above */

/* â•â• Preview Panel â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.preview-sticky-col {
    position: sticky;
    top: 80px;
    align-self: flex-start;
    z-index: 10;
}
.preview-panel {
    border-radius: 12px;
    border: 1px solid #e5e7eb;
    background: #fff;
    overflow: hidden;
}
.preview-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    border-bottom: 1px solid #e5e7eb;
    background: #fafafa;
}
.preview-toolbar__title {
    font-size: 0.82rem;
    font-weight: 600;
    color: #374151;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
}
.preview-toolbar__actions {
    display: flex;
    align-items: center;
    gap: 4px;
}
.preview-device-toggle {
    display: inline-flex;
    background: #f3f4f6;
    border-radius: 8px;
    padding: 2px;
    gap: 2px;
}
.preview-device-toggle .btn {
    border: none;
    background: transparent;
    color: #6b7280;
    padding: 5px 10px;
    border-radius: 6px;
    font-size: 0.78rem;
    line-height: 1;
    transition: all 0.15s ease;
    display: flex;
    align-items: center;
    gap: 4px;
}
.preview-device-toggle .btn:hover { color: #374151; background: #e5e7eb; }
.preview-device-toggle .btn.active {
    background: #fff;
    color: #111827;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.preview-device-toggle .btn svg,
.preview-action-btn svg { color: inherit; vertical-align: middle; }
.preview-action-btn {
    border: none;
    background: transparent;
    color: var(--gray-500);
    padding: 5px 7px;
    border-radius: 6px;
    font-size: 0.9rem;
    line-height: 1;
    transition: all 0.15s ease;
    cursor: pointer;
    text-decoration: none;
}
.preview-action-btn:hover { color: #374151; background: #f3f4f6; }
.preview-toolbar__divider {
    width: 1px;
    height: 20px;
    background: #e5e7eb;
    margin: 0 4px;
}
.preview-frame-wrapper {
    background: #d1d5db;
    padding: 16px;
    position: relative;
    min-height: 400px;
    overflow: hidden;
}
.preview-device-frame {
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.04);
    overflow: hidden;
    margin: 0 5px;
    transition: max-width 0.3s ease;
}
.preview-device-frame--mobile {
    max-width: 375px;
    margin: 0 auto;
    border-radius: 20px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.12), 0 0 0 2px #d1d5db;
}
.preview-address-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: #f9fafb;
    border-bottom: 1px solid #e5e7eb;
}
.preview-address-bar__dots { display: flex; gap: 4px; }
.preview-address-bar__dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: #d1d5db;
}
.preview-address-bar__url {
    flex: 1;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 4px;
    padding: 3px 8px;
    font-size: 0.68rem;
    color: var(--gray-500);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-family: 'SF Mono', 'Fira Code', monospace;
}
.preview-iframe-container {
    position: relative;
    overflow: hidden;
    width: 100%;
}
.preview-iframe-container iframe {
    display: block;
    border: none;
    transform-origin: 0 0;
}
.preview-loading {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: #fff;
    z-index: 5;
    gap: 12px;
    transition: opacity 0.3s ease;
}
.preview-loading.is-hidden { opacity: 0; pointer-events: none; }
.preview-loading__spinner {
    width: 28px; height: 28px;
    border: 3px solid #e5e7eb;
    border-top-color: #6366f1;
    border-radius: 50%;
    animation: preview-spin 0.7s linear infinite;
}
@keyframes preview-spin { to { transform: rotate(360deg); } }
.preview-loading__text { font-size: 0.78rem; color: var(--gray-500); }
.preview-empty {
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
    gap: 8px;
}
.preview-empty.is-visible { display: flex; }
.preview-empty__icon { font-size: 2rem; color: #d1d5db; }
.preview-empty__title { font-size: 0.85rem; font-weight: 600; color: #374151; margin: 0; }
.preview-empty__desc { font-size: 0.75rem; color: var(--gray-500); margin: 0; }
.preview-status {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 16px;
    border-top: 1px solid #e5e7eb;
    background: #fafafa;
    font-size: 0.72rem;
    color: var(--gray-500);
}
.preview-status__unsaved {
    display: none;
    align-items: center;
    gap: 4px;
    color: #d97706;
    font-weight: 500;
}
.preview-status__unsaved.is-visible { display: flex; }
.preview-status__unsaved i { font-size: 0.8rem; }
@media (max-width: 767.98px) {
    .preview-sticky-col { position: static; }
    .preview-frame-wrapper { min-height: 300px; padding: 12px; }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Payment Provider Cards â€” Connection Hub
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Secure badge (header) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.badge-secure {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.7rem;
    font-weight: 500;
    color: #059669;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
    border-radius: 50rem;
    padding: 4px 10px;
    white-space: nowrap;
    letter-spacing: 0.01em;
}
.badge-secure i {
    font-size: 0.75rem;
}

/* â”€â”€ Provider Card â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-provider-card {
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    overflow: hidden;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.payment-provider-card:hover {
    border-color: #d1d5db;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}

/* â”€â”€ Provider Header â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-provider-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    background: #fafbfc;
    border-bottom: 1px solid #f3f4f6;
    gap: 12px;
}

/* â”€â”€ Provider Logo â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-provider-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    flex-shrink: 0;
    overflow: hidden;
    background: #fff;
    border: 1px solid #e5e7eb;
}
.payment-provider-logo img {
    width: 28px;
    height: 28px;
    object-fit: contain;
}
.payment-provider-logo--icon {
    background: #f0f9ff;
    border-color: #bae6fd;
}
.payment-provider-logo--icon svg {
    stroke: #0ea5e9;
    stroke-width: 1.8;
}
.payment-provider-logo--blockchain {
    background: transparent;
    border: none;
}
.payment-provider-logo--blockchain img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* â”€â”€ Provider Name & Tag â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-provider-name {
    font-size: 0.9rem;
    font-weight: 600;
    color: #111827;
    letter-spacing: -0.01em;
}
.payment-provider-tag {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 500;
    color: var(--gray-500);
    background: #f3f4f6;
    border-radius: 50rem;
    padding: 1px 8px;
    margin-left: 8px;
    vertical-align: middle;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* â”€â”€ Status Badge â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.72rem;
    font-weight: 500;
    padding: 3px 10px;
    border-radius: 50rem;
    white-space: nowrap;
    letter-spacing: 0.01em;
    transition: all 0.25s ease;
}
.payment-status-badge svg {
    stroke: currentColor;
    stroke-width: 2;
    flex-shrink: 0;
}
.payment-status-badge--connected svg {
    fill: currentColor;
    stroke: currentColor;
}
.payment-status-badge--disconnected {
    color: #6b7280;
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
}
.payment-status-badge--validator {
    color: #2563eb;
    background: #eff6ff;
    border: 1px solid #93c5fd;
}

/* â”€â”€ Credential Dropdown â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.credential-dropdown { max-width: 352px; }

/* â”€â”€ Credential Card (ID-size) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.credential-card {
    width: 352px;
    max-width: 100%;
    margin: 0 auto;
    border-radius: 10px;
    overflow: hidden;
    font-size: 0.82rem;
    border: 1px solid #e5e7eb;
    background: #fff;
}
.credential-card--validator { border-color: #93c5fd; }
.credential-card--notary   { border-color: #c4b5fd; }

.credential-card__header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    background: #fafbfc;
    border-bottom: 1px solid #f3f4f6;
}
.credential-card__avatar {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: #f0f9ff;
    border: 1px solid #bae6fd;
}
.credential-card__avatar svg {
    stroke: #0ea5e9;
    stroke-width: 1.8;
}
.credential-card--notary .credential-card__avatar {
    background: #f5f3ff;
    border-color: #c4b5fd;
}
.credential-card--notary .credential-card__avatar svg {
    stroke: #7c3aed;
}
.credential-card__identity {
    flex: 1;
    min-width: 0;
    line-height: 1.3;
}
.credential-card__name {
    display: block;
    font-weight: 600;
    font-size: 0.8rem;
    color: #111827;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.credential-card__email {
    display: block;
    font-size: 0.7rem;
    color: #6b7280;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.credential-card__badge {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.65rem;
    font-weight: 500;
    padding: 2px 8px;
    border-radius: 50rem;
    white-space: nowrap;
    flex-shrink: 0;
}
.credential-card__badge svg {
    fill: currentColor;
    stroke: currentColor;
    stroke-width: 0;
}
.credential-card__badge--validator {
    color: #2563eb;
    background: #eff6ff;
    border: 1px solid #93c5fd;
}
.credential-card__badge--notary {
    color: #7c3aed;
    background: #f5f3ff;
    border: 1px solid #c4b5fd;
}

.credential-card__details {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 14px;
    padding: 10px 14px 12px;
}
.credential-card__field { min-width: 0; }
.credential-card__label {
    display: block;
    font-size: 0.68rem;
    font-weight: 600;
    color: #9ca3af;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    line-height: 1.2;
}
.credential-card__value {
    display: block;
    font-size: 0.78rem;
    color: #111827;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.credential-card__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 4px;
    padding: 8px 14px 10px;
    border-top: 1px solid #f3f4f6;
}
.credential-card__license {
    margin-right: auto;
    font-size: 0.72rem;
    font-weight: 600;
    color: #7c3aed;
    letter-spacing: 0.02em;
}
.credential-card__action {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    border: 1px solid #e5e7eb;
    background: #fff;
    color: #6b7280;
    text-decoration: none;
    transition: all 0.15s ease;
}
.credential-card__action:hover {
    background: #f0f9ff;
    border-color: #93c5fd;
    color: #2563eb;
}
.credential-card__action svg {
    stroke: currentColor;
    stroke-width: 1.8;
    fill: none;
}

.credential-empty {
    text-align: center;
    padding: 28px 20px;
    border: 1.5px dashed #e5e7eb;
    border-radius: 12px;
    background: #fafbfc;
}
.credential-empty__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    background: #f3f4f6;
    border-radius: 14px;
    margin-bottom: 14px;
}
.credential-empty__icon svg {
    stroke: #9ca3af;
    stroke-width: 1.8;
    fill: none;
}
.credential-empty h4 {
    font-size: 0.95rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 4px;
}
.credential-empty p {
    font-size: 0.82rem;
    color: var(--gray-500);
    margin: 0;
}
.credential-empty--notary {
    border-color: #ddd6fe;
    background: linear-gradient(180deg, #faf7ff 0%, #ffffff 100%);
}
.credential-empty--notary .credential-empty__icon {
    background: #f5f3ff;
    border: 1px solid #ddd6fe;
}
.credential-empty--notary .credential-empty__icon svg { stroke: #7c3aed; }
.credential-empty--validator {
    border-color: #bfdbfe;
    background: linear-gradient(180deg, #f5f9ff 0%, #ffffff 100%);
}
.credential-empty--validator .credential-empty__icon {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
}
.credential-empty--validator .credential-empty__icon svg { stroke: #3b82f6; }

/* â”€â”€ Role notice (empty dropdown fallback) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.role-notice {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px;
    border-radius: 8px;
    margin-top: 4px;
    border: 1px solid #e5e7eb;
    background: #fafbfc;
}
.role-notice__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    min-width: 28px;
    border-radius: 8px;
    background: #fff;
}
.role-notice__icon svg {
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
}
.role-notice__content { min-width: 0; }
.role-notice__title {
    font-size: 0.82rem;
    font-weight: 600;
    margin: 0 0 2px;
    color: #1f2937;
}
.role-notice__text {
    font-size: 0.76rem;
    color: #6b7280;
    margin: 0;
    line-height: 1.45;
}
.role-notice--notary {
    background: color-mix(in srgb, #7c3aed 4%, #fff);
    border-color: #ddd6fe;
    border-left: 3px solid #7c3aed;
}
.role-notice--notary .role-notice__icon { color: #7c3aed; background: #f5f3ff; border: 1px solid #ddd6fe; }
.role-notice--notary .role-notice__title { color: #5b21b6; }
.role-notice--validator {
    background: color-mix(in srgb, #3b82f6 4%, #fff);
    border-color: #bfdbfe;
    border-left: 3px solid #3b82f6;
}
.role-notice--validator .role-notice__icon { color: #2563eb; background: #eff6ff; border: 1px solid #bfdbfe; }
.role-notice--validator .role-notice__title { color: #1d4ed8; }

/* â”€â”€ Role-colored help collapse link â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.role-help-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.82rem;
    text-decoration: none;
    cursor: pointer;
    padding: 2px 0;
    transition: color 0.15s ease;
}
.role-help-link svg { stroke: currentColor; stroke-width: 2; fill: none; }
.role-help-link:hover { text-decoration: underline; }
.role-help-link--notary    { color: #7c3aed; }
.role-help-link--notary:hover    { color: #5b21b6; }
.role-help-link--validator { color: #2563eb; }
.role-help-link--validator:hover { color: #1d4ed8; }

@media (max-width: 991.98px) {
    .credential-card {
        max-width: 100%;
    }
    .credential-card__header {
        flex-wrap: wrap;
    }
    .credential-card__badge {
        margin-left: auto;
    }
}
.payment-status-badge--connected {
    color: #059669;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
}
.payment-status-badge--error {
    color: #dc2626;
    background: #fef2f2;
    border: 1px solid #fecaca;
}

/* â”€â”€ Provider Body â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-provider-body {
    padding: 20px;
    animation: paymentFadeIn 0.25s ease;
}
@keyframes paymentFadeIn {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* â”€â”€ Description text â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-provider-desc {
    font-size: 0.8rem;
    color: #6b7280;
    margin-bottom: 16px;
    line-height: 1.5;
}

/* â”€â”€ Field Label â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-field-label {
    display: block;
    font-size: 0.85rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 6px;
    letter-spacing: 0.01em;
}

/* â”€â”€ Input styling â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-input {
    font-size: 0.82rem !important;
    padding: 9px 12px !important;
    border: 1px solid #d1d5db !important;
    border-radius: 8px !important;
    color: #111827 !important;
    background: #fff !important;
    transition: border-color 0.15s, box-shadow 0.15s !important;
}
.payment-input:focus {
    border-color: var(--color-primary) !important;
    box-shadow: 0 0 0 3px rgba(60,118,242,0.1) !important;
}
.payment-input::placeholder {
    color: var(--gray-400) !important;
    font-weight: 400;
}
.payment-input.is-invalid {
    border-color: #ef4444 !important;
    box-shadow: 0 0 0 3px rgba(239,68,68,0.08) !important;
}
/* â”€â”€ Toggle password button inside input-group â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-input-group {
    flex-wrap: nowrap !important;
}
.payment-input-group .payment-input {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
    border-right: none !important;
    min-width: 0;
}
.payment-input-group .payment-toggle-btn {
    border: 1px solid #d1d5db !important;
    border-left: none !important;
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
    border-top-right-radius: 8px !important;
    border-bottom-right-radius: 8px !important;
    background: #f9fafb !important;
    color: #6b7280 !important;
    padding: 0 12px !important;
    display: flex;
    align-items: center;
    flex-shrink: 0;
    transition: color 0.15s, background 0.15s;
}
.payment-input-group .payment-toggle-btn:hover {
    background: #f3f4f6 !important;
    color: #374151 !important;
}
.payment-input-group:focus-within .payment-toggle-btn {
    border-color: var(--color-primary) !important;
}

/* â”€â”€ Help link â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-field-help {
    margin-top: 6px;
}
.payment-help-link {
    font-size: 0.72rem;
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    transition: color 0.15s;
}
.payment-help-link:hover {
    color: var(--color-primary-hover);
    text-decoration: underline;
}
.payment-help-link i {
    font-size: 0.65rem;
}

/* â”€â”€ Inline field error â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-field-error {
    display: flex;
    align-items: center;
    gap: 5px;
    margin-top: 6px;
    font-size: 0.72rem;
    color: #dc2626;
    font-weight: 500;
    animation: paymentShake 0.3s ease;
}
.payment-field-error svg {
    stroke: currentColor;
    stroke-width: 2;
    flex-shrink: 0;
}
@keyframes paymentShake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-3px); }
    75% { transform: translateX(3px); }
}

/* â”€â”€ Advanced toggle â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-advanced-toggle {
    font-size: 0.85rem;
    font-weight: 500;
    color: #6b7280;
    background: none;
    border: none;
    padding: 6px 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: color 0.15s;
}
.payment-advanced-toggle:hover {
    color: #374151;
}
.payment-advanced-toggle svg {
    stroke: currentColor;
    stroke-width: 1.8;
    flex-shrink: 0;
}
.payment-chevron {
    transition: transform 0.25s ease;
}
.payment-advanced-toggle[aria-expanded="true"] .payment-chevron {
    transform: rotate(180deg);
}

/* â”€â”€ Advanced fields container â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-advanced-fields {
    padding: 16px;
    background: #f9fafb;
    border-radius: 8px;
    border: 1px solid #f3f4f6;
}

/* â”€â”€ Security note â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-security-note {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
    color: var(--gray-500);
    padding-top: 12px;
    border-top: 1px solid #f3f4f6;
    margin-top: 4px;
}
.payment-security-note svg {
    stroke: #d1d5db;
    stroke-width: 2;
    flex-shrink: 0;
}

/* â”€â”€ Responsive tweaks â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 575.98px) {
    .payment-provider-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 10px;
    }
    .payment-provider-body {
        padding: 16px;
    }
    .seo-section-header {
        gap: 10px;
    }
    .seo-section-header-left {
        flex: 1 1 auto;
        min-width: 0;
    }
    .seo-section-subtitle {
        display: none;
    }
    .payment-advanced-fields .row > div {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
/* SEO Collapsible Section Card                                    */
/* PatrÃ³n de card colapsable usado en step SEO (owners + products) */
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

.seo-section-card {
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.seo-section-card:hover {
    border-color: #d1d5db;
    box-shadow: 0 1px 6px rgba(0, 0, 0, 0.04);
}

.seo-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 14px 18px;
    background: #fafbfc;
    border: none;
    border-bottom: 1px solid transparent;
    gap: 12px;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s;
}
.seo-section-header:hover {
    background: #f3f4f6;
}
.seo-section-header:focus-visible {
    outline: 2px solid #3b82f6;
    outline-offset: -2px;
}
.seo-section-card.is-open > .seo-section-header {
    border-bottom-color: #f3f4f6;
}

.seo-section-header-left {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}
.seo-section-header-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.seo-section-header-right {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.seo-section-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: #fff;
    border: 1px solid #e5e7eb;
    flex-shrink: 0;
    overflow: hidden;
}
.seo-section-icon svg {
    stroke: #0ea5e9;
    stroke-width: 1.8;
}
.seo-section-icon img {
    width: 28px;
    height: 28px;
    object-fit: contain;
}

.seo-section-title {
    display: block;
    font-size: 0.9rem;
    font-weight: 600;
    color: #111827;
    letter-spacing: -0.01em;
    line-height: 1.3;
}
.seo-section-subtitle {
    display: block;
    margin-top: 2px;
    font-size: 0.75rem;
    color: #6b7280;
    line-height: 1.35;
}

.seo-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.72rem;
    font-weight: 500;
    padding: 3px 10px;
    border-radius: 999px;
    white-space: nowrap;
}
/* Coherencia con .pay-status-badge--muted (catalog payments). Audit usuaria 2026-05-02. */
.seo-status-badge--default {
    color: #6b7280;
    background: #f3f4f6;
    border: none;
}
/* Coherencia con .pay-status-badge--ok (catalog payments). Audit usuaria 2026-05-02. */
.seo-status-badge--custom {
    color: #166534;
    background: #dcfce7;
    border: none;
}
/* Estado parcial: cargada pero incompleta (1-2 de N campos). Gris neutro
   para no comunicar urgencia/warning â€” solo indica progreso. Mismo tono
   que --default (visualmente "no completado todavia"); el verde --custom
   marca la diferencia cuando llega a 3/3. */
.seo-status-badge--partial {
    color: #6b7280;
    background: #f3f4f6;
    border: none;
}
.seo-status-badge--ai-hint {
    color: #1d4ed8;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    gap: 4px;
}
.seo-status-badge--ai-hint svg {
    flex: 0 0 auto;
}
.seo-section-pills {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.seo-section-chevron {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    color: #6b7280;
    transition: transform 0.2s ease;
}
.seo-section-chevron svg {
    stroke: currentColor;
    stroke-width: 2;
}
.seo-section-header[aria-expanded="true"] .seo-section-chevron {
    transform: rotate(180deg);
}

.seo-section-body {
    padding: 20px;
    animation: seoFadeIn 0.2s ease;
}
@keyframes seoFadeIn {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

.seo-section-intro {
    font-size: 0.85rem;
    color: #6b7280;
    margin-bottom: 16px;
    line-height: 1.5;
}

/* â”€â”€ Mobile/tablet: badge pasa a una fila debajo del tÃ­tulo â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Evita que el pill "AutomÃ¡tico/Personalizado" comprima el tÃ­tulo y
   lo fuerce a envolver en 2 lÃ­neas. En desktop (>=992px) se mantiene
   el layout flex horizontal original. */
@media (max-width: 991.98px) {
    .seo-section-card > .seo-section-header {
        display: grid;
        grid-template-columns: auto 1fr auto;
        grid-template-areas:
            "icon text chevron"
            "badge badge badge";
        column-gap: 12px;
        row-gap: 10px;
        align-items: center;
    }
    .seo-section-card > .seo-section-header > .seo-section-header-left {
        display: contents;
    }
    .seo-section-card > .seo-section-header .seo-section-icon {
        grid-area: icon;
    }
    .seo-section-card > .seo-section-header .seo-section-header-text {
        grid-area: text;
        min-width: 0;
    }
    .seo-section-card > .seo-section-header > .seo-section-header-right {
        display: contents;
    }
    .seo-section-card > .seo-section-header .seo-status-badge {
        grid-area: badge;
        justify-self: start;
    }
    .seo-section-card > .seo-section-header .seo-section-pills {
        grid-area: badge;
        justify-self: start;
    }
    .seo-section-card > .seo-section-header .seo-section-pills .seo-status-badge {
        grid-area: auto;
    }
    .seo-section-card > .seo-section-header .seo-section-chevron {
        grid-area: chevron;
    }
}

/* â”€â”€ Contract Info Grid (read-only data) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.contract-info-grid {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.contract-info-row {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px 0;
    border-bottom: 1px solid #f3f4f6;
}
.contract-info-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.contract-info-row:first-child {
    padding-top: 0;
}
.contract-info-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    font-weight: 600;
    color: #6b7280;
    letter-spacing: 0.01em;
}
.contract-info-label svg {
    stroke: var(--gray-400);
    stroke-width: 1.8;
    flex-shrink: 0;
}
.contract-info-value {
    font-size: 0.78rem;
    font-weight: 400;
    font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
    color: #6b7280;
    word-break: break-all;
    padding: 6px 10px;
    background: #f9fafb;
    border-radius: 6px;
    border: 1px solid #f3f4f6;
    min-height: 32px;
    line-height: 1.5;
}
.contract-info-value:empty::after {
    content: 'Sin datos';
    color: #d1d5db;
    font-style: italic;
    font-family: inherit;
}

/* â”€â”€ Select styled as payment-input â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
select.payment-input {
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    background-color: #fff !important;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 12px 8px !important;
    padding-right: 36px !important;
}

/* â”€â”€ Copyable contract info row â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.contract-info-copyable {
    display: flex;
    align-items: center;
    gap: 0;
}
.contract-info-copyable .contract-info-value {
    flex: 1;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
    border-right: none;
}
.btn-copy {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: auto;
    align-self: stretch;
    border: 1px solid #f3f4f6;
    border-left: none;
    border-radius: 0 6px 6px 0;
    background: #f9fafb;
    color: var(--gray-500);
    cursor: pointer;
    transition: color 0.15s, background 0.15s;
    flex-shrink: 0;
    padding: 0;
}
.btn-copy:hover {
    background: #f3f4f6;
    color: #374151;
}
.btn-copy.copied {
    color: #059669;
    background: #ecfdf5;
    border-color: #a7f3d0;
}
.btn-copy svg {
    stroke: currentColor;
    stroke-width: 2;
}

.contract-info-copyable .btn-copy:not(:last-child) {
    border-radius: 0;
}
.btn-external-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: auto;
    align-self: stretch;
    border: 1px solid #f3f4f6;
    border-left: none;
    border-radius: 0 6px 6px 0;
    background: #f9fafb;
    color: var(--gray-500);
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}
.btn-external-link:hover {
    background: #f3f4f6;
    color: var(--color-primary);
}
.btn-external-link svg {
    stroke: currentColor;
    stroke-width: 2;
}

/* â”€â”€ Blockchain pill (Polygon / Avalanche / etc) â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.blockchain-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px 3px 4px;
    border-radius: 999px;
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    font-size: 0.72rem;
    font-weight: 600;
    color: #374151;
    letter-spacing: 0.01em;
    line-height: 1;
    white-space: nowrap;
    vertical-align: middle;
}
.blockchain-pill img {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}

/* â”€â”€ Network badge (circular, solo logo) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Version compacta para listados densos. Se usa como prefix
   del address en .contract-info-copyable--with-network.
   Tooltip con el nombre de la red via title=""|bootstrap. */
.network-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    border: 1px solid #e5e7eb;
    background: #fff;
    vertical-align: middle;
}
.network-badge img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.contract-info-copyable--with-network {
    gap: 0;
}
.contract-info-copyable--with-network .network-badge {
    margin-right: 8px;
}
.contract-info-copyable--with-network .contract-info-value {
    flex: 0 0 auto;
}

/* â”€â”€ Locked field (readonly wallet) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.payment-input--locked {
    background: #f9fafb !important;
    color: #6b7280 !important;
    cursor: default;
}
.payment-lock-btn:focus {
    outline: none;
    box-shadow: none !important;
}
.payment-input-group:focus-within .payment-lock-btn {
    border-color: #d1d5db !important;
}
.payment-lock-btn svg {
    stroke: var(--gray-400);
    stroke-width: 1.8;
    transition: stroke 0.15s;
}
.payment-lock-btn:hover svg {
    stroke: #374151;
}
.payment-lock-btn--unlocked svg {
    stroke: #059669;
}
.payment-lock-hint {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 5px;
    font-size: 0.8rem;
    color: var(--gray-500);
}
.payment-lock-hint svg {
    stroke: #d1d5db;
    stroke-width: 1.8;
    flex-shrink: 0;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Toast notifications
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.toast-container {
    position: fixed;
    bottom: 80px;
    right: 24px;
    z-index: 1055;
    display: flex;
    flex-direction: column;
    gap: 8px;
    pointer-events: none;
}
.toast-notification {
    padding: 12px 20px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 500;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 300px;
    pointer-events: auto;
    animation: toastSlideIn 0.3s ease;
}
.toast-notification--success {
    background: #ecfdf5;
    color: #065f46;
    border: 1px solid #a7f3d0;
}
.toast-notification--error {
    background: #fef2f2;
    color: #991b1b;
    border: 1px solid #fecaca;
}
.toast-notification--saving {
    background: #eff6ff;
    color: #1e40af;
    border: 1px solid #bfdbfe;
}
.toast-notification.is-hiding {
    animation: toastSlideOut 0.25s ease forwards;
}
@keyframes toastSlideIn {
    from { transform: translateX(100%); opacity: 0; }
    to   { transform: translateX(0);    opacity: 1; }
}
@keyframes toastSlideOut {
    from { transform: translateX(0);    opacity: 1; }
    to   { transform: translateX(100%); opacity: 0; }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Smart CTA button states
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.form-actions-fixed .btn.is-saving {
    pointer-events: none;
    opacity: 0.7;
}
.form-actions-fixed .btn.is-pristine {
    opacity: 0.5;
    cursor: default;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Save Status Pill â€” Inline form-actions indicator
   States: dirty (amber) Â· saving (blue) Â· saved (green) Â· error (red)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.save-status-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    padding: 5px 14px;
    border-radius: 50rem;
    font-size: 0.78rem;
    font-weight: 500;
    white-space: nowrap;
    transition: background 0.2s, color 0.2s;
    animation: statusPillFade 0.25s ease;
}
@keyframes statusPillFade {
    from { opacity: 0; transform: translateY(2px); }
    to   { opacity: 1; transform: translateY(0); }
}
.save-status-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}
/* Dirty: amber */
.save-status-pill.is-dirty {
    background: #fffbeb;
    color: #b45309;
    border: 1px solid #fde68a;
}
.save-status-pill.is-dirty .save-status-dot {
    background: #f59e0b;
}
/* Saving: same as dirty (amber) */
.save-status-pill.is-saving {
    background: #fffbeb;
    color: #b45309;
    border: 1px solid #fde68a;
}
.save-status-pill.is-saving .save-status-dot {
    background: #f59e0b;
}
/* Saved: green with check + pop animation */
.save-status-pill.is-saved {
    background: #ecfdf5;
    color: #065f46;
    border: 1px solid #a7f3d0;
    animation: statusPillPop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes statusPillPop {
    0%   { opacity: 0; transform: scale(0.85); }
    60%  { transform: scale(1.05); }
    100% { opacity: 1; transform: scale(1); }
}
.save-status-pill.is-saved .save-status-dot {
    width: auto;
    height: auto;
    background: none;
    display: inline-flex;
    align-items: center;
    color: #10b981;
    animation: none;
}
/* Error: red */
.save-status-pill.is-error {
    background: #fef2f2;
    color: #991b1b;
    border: 1px solid #fecaca;
}
.save-status-pill.is-error .save-status-dot {
    background: #ef4444;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Contract Form â€” layout (same look as Pagos Crypto)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.contract-form-stack {
    display: flex;
    flex-direction: column;
}
.contract-form-row {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    gap: 16px;
    margin-bottom: 16px;
}
.contract-form-row:last-child {
    margin-bottom: 0;
}
.contract-form-field {
    flex: 1 1 0%;
    min-width: 0;
}
.contract-form-stack + .payment-security-note {
    margin-top: 20px;
}
.contract-form-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-top: 24px;
    flex-direction: row-reverse;
    justify-content: flex-start;
}

@media (max-width: 575.98px) {
    .contract-form-actions {
        flex-direction: column;
        align-items: stretch;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Scrollbar Gutter â€” Prevent layout shift between pages
   Reserva siempre el espacio del scrollbar para que el
   sidebar no se mueva al cambiar de pÃ¡gina.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
html {
    scrollbar-gutter: stable;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Sidebar Brand Footer â€” "Â© 2026 Pala BlockchainÂ®"
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.sidepanel-brand-footer {
    text-align: center;
    font-size: 0.72rem;
    color: #b0b5bf;
    padding: 12px 16px;
    letter-spacing: 0.01em;
    white-space: nowrap;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Site Selector â€” Pill shape in sidebar
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Site Switcher â€” Custom dropdown (Didit / Clerk style)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.site-switcher {
    position: relative;
}

/* â”€â”€ Trigger button â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-trigger {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 8px 10px;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    background: #f9fafb;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;
    text-align: left;
    font-family: inherit;
}
.site-switcher-trigger:hover {
    background: #fff;
    border-color: #d1d5db;
}
.site-switcher-trigger.is-open {
    background: #fff;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.1);
}

/* â”€â”€ Avatar (initials) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    min-width: 30px;
    border-radius: 8px;
    background: linear-gradient(135deg, var(--color-primary), #6366f1);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    flex-shrink: 0;
}

/* â”€â”€ Name â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-name {
    flex: 1;
    font-size: 0.82rem;
    font-weight: 600;
    color: #111827;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

/* â”€â”€ Chevron â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-chevron {
    color: var(--gray-500);
    flex-shrink: 0;
    transition: transform 0.2s ease;
}
.site-switcher-trigger.is-open .site-switcher-chevron {
    transform: rotate(180deg);
}

/* â•â• Dropdown panel â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.site-switcher-dropdown {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 14px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.04);
    z-index: 100;
    padding: 6px;
    animation: siteSwitcherFade 0.15s ease;
    max-height: 340px;
    overflow-y: auto;
    scrollbar-width: thin;
}
.site-switcher-dropdown.is-open {
    display: block;
}
@keyframes siteSwitcherFade {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* â”€â”€ Current site â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-current {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 10px;
    border-radius: 10px;
    background: #f9fafb;
}
.site-switcher-current-name {
    font-size: 0.82rem;
    font-weight: 600;
    color: #111827;
    line-height: 1.3;
}
.site-switcher-current-label {
    font-size: 0.68rem;
    color: var(--gray-500);
    line-height: 1.3;
}

/* â”€â”€ Divider â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-divider {
    height: 1px;
    background: #f0f1f3;
    margin: 6px 4px;
}

/* â”€â”€ Section label â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-label {
    font-size: 0.68rem;
    font-weight: 500;
    color: var(--gray-500);
    padding: 6px 10px 4px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* â”€â”€ List â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-list {
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.site-switcher-form {
    margin: 0;
}

/* â”€â”€ Item button â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 8px 10px;
    border: none;
    border-radius: 10px;
    background: transparent;
    cursor: pointer;
    transition: background 0.12s;
    text-align: left;
    font-family: inherit;
}
.site-switcher-item:hover {
    background: #f3f4f6;
}

/* â”€â”€ Item avatar â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-item-avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    min-width: 30px;
    border-radius: 8px;
    background: #e5e7eb;
    color: #6b7280;
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    flex-shrink: 0;
}

/* â”€â”€ Item name â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.site-switcher-item-name {
    font-size: 0.82rem;
    font-weight: 500;
    color: #374151;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}


/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Floating Sidebar â€” Desktop only (â‰¥1200px)
   Efecto flotante con bordes redondeados y sombra.
   Mobile queda sin cambios.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
@media (min-width: 1200px) {
    .app-sidepanel,
    .app-sidepanel.sidepanel-visible {
        top: 0.75rem;
        left: 0.75rem;
        height: calc(100vh - 1.5rem);
        min-height: auto;
        border-right: none;
    }

    .app-sidepanel .sidepanel-inner {
        border-radius: 12px;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06),
                    0 8px 24px rgba(0, 0, 0, 0.07);
    }

    .app-sidepanel .app-branding {
        border-radius: 12px 12px 0 0;
    }

    .app-sidepanel .app-sidepanel-footer {
        border-radius: 0 0 12px 12px;
    }

    .app-wrapper {
        margin-left: calc(var(--sidebar-width) + 0.875rem);
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Toast notifications â€” Pala Design System
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.pala-toast {
    position: fixed;
    bottom: 24px;
    right: 24px;
    display: flex;
    align-items: center;
    gap: 10px;
    width: fit-content;
    max-width: 520px;
    min-width: 320px;
    padding: 12px 14px 12px 14px;
    background: #fff;
    border-radius: 8px;
    border: 1px solid #e5e7eb;
    border-left: 3px solid transparent;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.04);
    overflow: hidden;
    animation: pala-toast-in 0.3s ease-out;
    z-index: 1060;
}

.pala-toast--error {
    border-left-color: #EF4444;
}

.pala-toast--success {
    border-left-color: #22C55E;
}

.pala-toast--warning {
    border-left-color: #F59E0B;
}

.pala-toast--warning .pala-toast__icon svg {
    color: #F59E0B;
}

.pala-toast__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
}

.pala-toast--error .pala-toast__icon svg {
    color: #EF4444;
}

.pala-toast--success .pala-toast__icon svg {
    color: #22C55E;
}

.pala-toast__content {
    flex: 1;
    min-width: 0;
}

.pala-toast__text {
    margin: 0;
    font-size: 14px;
    font-weight: 500;
    color: #1e293b;
    line-height: 1.4;
}

.pala-toast__sub {
    margin: 3px 0 0;
    font-size: 12px;
    font-weight: 400;
    color: #64748b;
    line-height: 1.3;
}

.pala-toast__close {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    margin-left: 4px;
    padding: 0;
    border: none;
    background: transparent;
    border-radius: 4px;
    cursor: pointer;
    opacity: 0.4;
    transition: opacity 0.15s, background 0.15s;
}

.pala-toast__close svg {
    stroke: #475569;
    width: 14px;
    height: 14px;
}

.pala-toast__close:hover {
    opacity: 1;
    background: #f1f5f9;
}

.pala-toast__progress {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 2px;
    background: #bbf7d0;
    animation: pala-toast-progress linear forwards;
}

@keyframes pala-toast-in {
    from {
        opacity: 0;
        transform: translateX(100%);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes pala-toast-progress {
    from { width: 100%; }
    to   { width: 0%; }
}

.pala-toast--dismiss {
    animation: pala-toast-out 0.2s ease-in forwards;
}

@keyframes pala-toast-out {
    from {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
    to {
        opacity: 0;
        transform: translateY(-6px) scale(0.98);
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Business Model Cards â€” feature cards
   Reutilizadas por el drawer "Ver todos los modelos" en step-1.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Business model card â€” clickable row inside drawer
   Cada card es un <button>: Ã­cono + cuerpo + chevron.
   Layout horizontal compacto para ver los 4 modelos sin scroll.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.bm-card {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    width: 100%;
    padding: 14px 16px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
    font: inherit;
    color: inherit;
}
.bm-card:hover {
    border-color: #d1d5db;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
    background: #fafbfc;
}
.bm-card:focus-visible {
    outline: none;
    border-color: var(--color-primary, #2563eb);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.bm-card:hover .bm-card__chevron {
    transform: translateX(2px);
    color: #6b7280;
}

/* â”€â”€ Featured icon â€” colored container â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.bm-card__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    font-size: 1.05rem;
    flex-shrink: 0;
    margin-top: 2px;
}
.bm-card__svg {
    width: 20px;
    height: 20px;
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
    flex-shrink: 0;
}
.bm-card__icon--venta {
    background: color-mix(in srgb, #2563eb 8%, #fff);
    color: #2563eb;
}
.bm-card__icon--renta {
    background: color-mix(in srgb, #d97706 8%, #fff);
    color: #d97706;
}
.bm-card__icon--integracion {
    background: color-mix(in srgb, #a020f0 8%, #fff);
    color: #a020f0;
}
.bm-card__icon--participacion {
    background: color-mix(in srgb, #84cc16 12%, #fff);
    color: #84cc16;
}

/* â”€â”€ Body â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.bm-card__body {
    flex: 1;
    min-width: 0;
}
.bm-card__title {
    font-size: 0.9rem;
    font-weight: 650;
    color: #111827;
    letter-spacing: -0.01em;
    margin: 0 0 4px;
}
.bm-card__desc {
    font-size: 0.8rem;
    color: #6b7280;
    line-height: 1.5;
    margin: 0;
}

/* Drawer de modelos: swap de texto segun tipo de proyecto.
   Por defecto se ve la variante "inmueble"; con .is-producto en el drawer
   se muestra la variante "producto". No afecta el payload a Firestore. */
.bm-card__desc-text--producto { display: none; }
.bm-drawer.is-producto .bm-card__desc-text--inmueble { display: none; }
.bm-drawer.is-producto .bm-card__desc-text--producto { display: inline; }

/* â”€â”€ Chevron affordance â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.bm-card__chevron {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    margin-top: 12px;
    color: #9ca3af;
    transition: transform 0.18s ease, color 0.18s ease;
}
.bm-card__chevron svg {
    width: 16px;
    height: 16px;
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
}

/* â”€â”€ Toggle link (progressive disclosure, step-2 owners/products) â”€â”€ */
.bm-toggle-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
    padding: 0;
    background: none;
    border: none;
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--color-primary);
    cursor: pointer;
    transition: color 0.15s;
}
.bm-toggle-link:hover {
    color: var(--color-primary-hover, #2b63d9);
}
.bm-toggle-link i {
    font-size: 0.82rem;
}

/* â”€â”€ Responsive â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 767.98px) {
    .bm-card {
        padding: 12px 14px;
        gap: 12px;
    }
    .bm-card__icon {
        width: 38px;
        height: 38px;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Picker button â€” trigger que abre dropdown inline o drawer
   DiseÃ±o: boton "colapsado" que muestra placeholder o el
   valor elegido con icono + chevron o hint lateral.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.bm-picker {
    position: relative;
}
.bm-picker-btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    min-height: 44px;
    padding: 8px 14px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    color: #111827;
    font-size: 0.9rem;
    font-weight: 500;
    line-height: 1.3;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}
.bm-picker-btn:hover:not(:disabled) {
    border-color: #d1d5db;
    box-shadow: 0 1px 3px rgba(16, 24, 40, 0.06);
}
.bm-picker-btn:focus-visible {
    outline: 2px solid var(--picker-active-color, var(--color-primary, #2563eb));
    outline-offset: 1px;
    border-color: var(--picker-active-color, var(--color-primary, #2563eb));
}
.bm-picker-btn[aria-expanded="true"] {
    border-color: var(--picker-active-color, var(--color-primary, #2563eb));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--picker-active-color, #2563eb) 12%, transparent);
}
.bm-picker-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    background: #f9fafb;
}
/* Lock visual sin perder click: cuando el proyecto ya tiene tokens emitidos, los
   pickers Tipo/Modelo no usan HTML `disabled` para que el click siga llegando y
   abra el modal #tokensIssuedLockModal (definido en step-1.blade.php). El look es
   identico al :disabled pero el cursor es pointer porque hay accion (mostrar info). */
.bm-picker-btn.bm-picker-btn--locked,
.bm-picker-btn.bm-picker-btn--locked:hover,
.bm-picker-btn.bm-picker-btn--locked:focus,
.bm-picker-btn.bm-picker-btn--locked:focus-visible {
    opacity: 0.55;
    background: #f9fafb;
    cursor: pointer;
    border-color: var(--gray-300, #d1d5db);
    box-shadow: none;
    outline: none;
}
.bm-picker-btn.bm-picker-btn--locked .bm-picker-btn__chevron {
    opacity: 0.6;
}
/* Icon container del modal #tokensIssuedLockModal. Sigue el patron oficial
   icon-container-style: rounded-square iOS, fondo azul pastel #eef2ff, icono
   en color primary heredado por currentColor. */
.tokens-lock-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: #eef2ff;
    color: var(--color-primary, #3C76F2);
}
.bm-picker-btn__content {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    flex: 1;
}
.bm-picker-btn__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    color: var(--picker-active-color, #6b7280);
}
.bm-picker-btn__icon:empty {
    display: none;
}
.bm-picker-btn__icon svg {
    width: 20px;
    height: 20px;
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
}
.bm-picker-btn__icon i {
    font-size: 1.05rem;
    line-height: 1;
}
.bm-picker-btn__label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bm-picker-btn__label.is-placeholder {
    color: #9ca3af;
    font-weight: 400;
}
.bm-picker-btn__chevron {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    color: #6b7280;
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
    transition: transform 0.18s ease, color 0.15s ease;
}
.bm-picker-btn[aria-expanded="true"] .bm-picker-btn__chevron {
    transform: rotate(180deg);
    color: var(--picker-active-color, var(--color-primary, #2563eb));
}
.bm-picker-btn__hint {
    flex-shrink: 0;
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--color-primary, #2563eb);
    white-space: nowrap;
}
.bm-picker-btn--drawer:hover:not(:disabled) .bm-picker-btn__hint {
    text-decoration: underline;
}

/* â”€â”€ Dropdown menu (override de Bootstrap .dropdown-menu) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.bm-picker-menu {
    width: 100%;
    min-width: 240px;
    padding: 6px;
    margin-top: 4px !important;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(16, 24, 40, 0.08), 0 2px 6px rgba(16, 24, 40, 0.04);
}
.bm-picker-menu > li {
    list-style: none;
}
.bm-picker-option {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 10px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: #374151;
    font-size: 0.9rem;
    font-weight: 500;
    line-height: 1.3;
    text-align: left;
    cursor: pointer;
    transition: background-color 0.12s ease, color 0.12s ease;
}
.bm-picker-option:hover,
.bm-picker-option:focus-visible {
    background: #f3f4f6;
    color: #111827;
    outline: none;
}
.bm-picker-option__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    color: #6b7280;
}
.bm-picker-option__icon svg {
    width: 18px;
    height: 18px;
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
}
.bm-picker-option__icon i {
    font-size: 1rem;
    line-height: 1;
}

/* â”€â”€ Fraction field (anidado debajo del botÃ³n de Modelo) â”€â”€ */
.bm-fraction-inline .form-label-sm {
    margin-bottom: 4px;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Reveal animation â€” smooth show/hide sin layout jump.
   Usado por fractionPrice cuando cambia el modelo de negocio.
   Se revela anclado debajo del control que lo habilita.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.bm-reveal {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    margin-top: 0 !important;
    transition:
        max-height 0.26s cubic-bezier(0.4, 0, 0.2, 1),
        opacity 0.18s ease,
        margin-top 0.26s cubic-bezier(0.4, 0, 0.2, 1);
    pointer-events: none;
}
.bm-reveal.is-revealed {
    max-height: 200px;
    opacity: 1;
    margin-top: 12px !important;
    pointer-events: auto;
}
/* Variante cuando fractionPrice vive en su propia columna (3-col layout).
   Se alinea verticalmente con Tipo de proyecto / Modelo de negocio: el label
   queda al tope de la columna y no necesita margen extra. */
.bm-fraction-col.bm-reveal.is-revealed {
    margin-top: 0 !important;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Wizard title row â€” h1 + status chip en una sola linea
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.wizard-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}
.wizard-title-row .app-page-title {
    flex: 1;
    min-width: 0;
}
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Hub mode â€” el topbar-title (header global) ya muestra el nombre del
   proyecto/producto + seccion, alimentado directo desde el view via
   window.topbarTitle. En hub-mode el H1 queda visually-hidden (lo lee
   el SR pero no se ve), asi que la wizard-title-row queda con la chip
   de estado empujada a la derecha para mantener la referencia visual.
   Scope: body.hub-mode cubre owners-hub-mode y products-hub-mode.
   Legacy wizard y otros flows (users, discounts) mantienen el H1 visible.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
body.hub-mode .wizard-title-row {
    justify-content: flex-end;
    margin-bottom: 0.5rem;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Status chip â€” pill Active / Draft en el header del wizard
   Estados Active / Draft / Published.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.status-chip {
    flex-shrink: 0;
    position: relative;
}
.status-chip__btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 32px;
    padding: 0 12px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 50rem;
    font-size: 0.82rem;
    font-weight: 600;
    color: #374151;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
    white-space: nowrap;
}
.status-chip__btn:hover:not(:disabled) {
    border-color: #d1d5db;
    background: #fafbfc;
}
.status-chip__btn:focus-visible {
    outline: none;
    border-color: var(--color-primary, #2563eb);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.status-chip__btn:disabled {
    cursor: not-allowed;
    opacity: 0.75;
}
.status-chip__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
}
.status-chip__btn.is-active .status-chip__dot {
    background: #16a34a;
    box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.15);
}
.status-chip__btn.is-draft .status-chip__dot {
    background: #9ca3af;
    box-shadow: 0 0 0 3px rgba(156, 163, 175, 0.15);
}
/* Variantes adicionales para el wizard de productos (status 0..5) */
.status-chip__btn.is-inactive .status-chip__dot {
    background: #9ca3af;
    box-shadow: 0 0 0 3px rgba(156, 163, 175, 0.15);
}
.status-chip__btn.is-featured .status-chip__dot {
    background: #f59e0b;
    box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.18);
}
.status-chip__btn.is-reserved .status-chip__dot {
    background: #8b5cf6;
    box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.18);
}
.status-chip__btn.is-closed .status-chip__dot {
    background: #ef4444;
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.18);
}
.status-chip__btn.is-sold .status-chip__dot {
    background: #111827;
    box-shadow: 0 0 0 3px rgba(17, 24, 39, 0.18);
}
/* Estado vacio (create sin elegir o legacy sin status) */
.status-chip__btn.is-empty .status-chip__dot {
    background: transparent;
    border: 1.5px dashed #9ca3af;
    box-shadow: none;
}
.status-chip__btn.is-empty {
    color: #6b7280;
    border-style: dashed;
}
.status-chip__label {
    line-height: 1;
}
.status-chip__chevron {
    width: 12px;
    height: 12px;
    stroke: currentColor;
    stroke-width: 2.2;
    fill: none;
    color: #9ca3af;
    margin-left: 2px;
    transition: transform 0.15s ease;
}
.status-chip__btn[aria-expanded="true"] .status-chip__chevron {
    transform: rotate(180deg);
}

/* â”€â”€ Dropdown menu â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.status-chip__menu {
    min-width: 280px;
    padding: 6px;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    box-shadow: 0 10px 32px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04);
    margin-top: 6px !important;
}
.status-chip__option {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 10px;
    border-radius: 8px;
    transition: background-color 0.12s ease;
    white-space: normal;
}
.status-chip__option:hover,
.status-chip__option:focus {
    background: #f3f4f6;
    outline: none;
}
.status-chip__option-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    margin-top: 6px;
}
.status-chip__option-dot--active   { background: #16a34a; }
.status-chip__option-dot--draft    { background: #9ca3af; }
.status-chip__option-dot--inactive { background: #9ca3af; }
.status-chip__option-dot--featured { background: #f59e0b; }
.status-chip__option-dot--reserved { background: #8b5cf6; }
.status-chip__option-dot--closed   { background: #ef4444; }
.status-chip__option-dot--sold     { background: #111827; }
.status-chip__option-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.status-chip__option-title {
    font-size: 0.88rem;
    font-weight: 600;
    color: #111827;
    line-height: 1.3;
}
.status-chip__option-desc {
    font-size: 0.76rem;
    color: #6b7280;
    line-height: 1.4;
}
.status-chip__option-check {
    width: 16px;
    height: 16px;
    stroke: var(--color-primary, #2563eb);
    stroke-width: 2.5;
    fill: none;
    flex-shrink: 0;
    margin-top: 4px;
    opacity: 0;
    transition: opacity 0.12s ease;
}
.status-chip__option.is-current .status-chip__option-check {
    opacity: 1;
}

/* â”€â”€ Responsive: en mobile el chip baja debajo del titulo â”€â”€ */
@media (max-width: 575.98px) {
    .wizard-title-row {
        gap: 10px;
    }
    .status-chip__menu {
        min-width: 260px;
    }
}

/* â”€â”€ Drawer trigger link â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.bm-drawer-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    background: none;
    border: none;
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--color-primary);
    cursor: pointer;
    transition: color 0.15s;
    white-space: nowrap;
}
.bm-drawer-link:hover {
    color: var(--color-primary-hover, #2b63d9);
    text-decoration: underline;
}
.bm-drawer-link i,
.bm-drawer-link svg {
    font-size: 0.82rem;
    width: 13px;
    height: 13px;
}

/* â”€â”€ Drawer (modal centrado) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Originalmente era un offcanvas lateral. A pedido del equipo de diseÃ±o
   pasÃ³ a un modal centrado (Bootstrap 5). Conservamos la clase .bm-drawer
   sobre el wrapper .modal para no romper el toggle .is-producto que se
   aplica desde JS (swap de textos inmueble/producto). El tamaÃ±o se
   controla sobre .bm-drawer-dialog (.modal-dialog) y el look interno
   sobre .modal-header / .modal-body. */
.bm-drawer-dialog {
    max-width: 520px;
}
.bm-drawer .modal-content {
    border-radius: 14px;
    border: none;
    box-shadow: 0 20px 48px rgba(15, 23, 42, 0.18);
}
.bm-drawer .modal-header {
    border-bottom: 1px solid #e5e7eb;
    padding: 16px 20px;
}
.bm-drawer .modal-body {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.bm-drawer__item {
    position: relative;
    /* button reset (se aplica sobre .bm-card) */
    appearance: none;
    -webkit-appearance: none;
}
.bm-drawer__item:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

/* â”€â”€ Responsive â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 767.98px) {
    .bm-picker-btn {
        font-size: 0.95rem;
    }
    .bm-picker-btn__hint {
        display: none; /* En mobile deja que el chevron/hint lo inferira del bot\u00f3n completo */
    }
    .bm-picker-btn--drawer::after {
        content: "â€º";
        font-size: 1.3rem;
        line-height: 1;
        color: #9ca3af;
    }
    .bm-drawer-dialog {
        max-width: calc(100% - 1rem);
        margin: 0.5rem auto;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Tip callout â€” inline hint
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.bm-tip {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
    background: color-mix(in srgb, var(--color-primary) 4%, #fff);
    border: 1px solid color-mix(in srgb, var(--color-primary) 12%, #e5e7eb);
    border-radius: 10px;
    border-left: 3px solid var(--color-primary);
}
.bm-tip--danger {
    background: color-mix(in srgb, #dc3545 4%, #fff);
    border: 1px solid color-mix(in srgb, #dc3545 12%, #e5e7eb);
    border-left: 3px solid #dc3545;
}
.bm-tip--danger .bm-tip__icon {
    color: #dc3545;
    background: color-mix(in srgb, #dc3545 10%, #fff);
}
.bm-tip--danger .bm-tip__title {
    color: #dc3545;
}
.bm-tip--warning {
    background: color-mix(in srgb, #d97706 5%, #fff);
    border: 1px solid color-mix(in srgb, #d97706 14%, #e5e7eb);
    border-left: 3px solid #d97706;
}
.bm-tip--warning .bm-tip__icon {
    color: #b45309;
    background: color-mix(in srgb, #f59e0b 14%, #fff);
}
.bm-tip--warning .bm-tip__title {
    color: #92400e;
}
.bm-tip--warning .bm-tip__text,
.bm-tip--warning .bm-tip__list li {
    color: #78350f;
}
.section-jump-link {
    color: #2563eb;
    text-decoration: underline;
    margin-left: 4px;
    cursor: pointer;
    white-space: nowrap;
}
.section-jump-link:hover,
.section-jump-link:focus {
    color: #1d4ed8;
    text-decoration: underline;
}
.bm-tip--notary {
    background: color-mix(in srgb, #7c3aed 4%, #fff);
    border: 1px solid color-mix(in srgb, #7c3aed 14%, #e5e7eb);
    border-left: 3px solid #7c3aed;
}
.bm-tip--notary .bm-tip__icon {
    color: #7c3aed;
    background: color-mix(in srgb, #7c3aed 10%, #fff);
}
.bm-tip--notary .bm-tip__title { color: #5b21b6; }
.bm-tip--validator {
    background: color-mix(in srgb, #3b82f6 4%, #fff);
    border: 1px solid color-mix(in srgb, #3b82f6 14%, #e5e7eb);
    border-left: 3px solid #3b82f6;
}
.bm-tip--validator .bm-tip__icon {
    color: #3b82f6;
    background: color-mix(in srgb, #3b82f6 10%, #fff);
}
.bm-tip--validator .bm-tip__title { color: #1d4ed8; }
.bm-tip__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    min-width: 32px;
    background: color-mix(in srgb, var(--color-primary) 10%, #fff);
    border-radius: 8px;
    color: var(--color-primary);
    flex-shrink: 0;
}
.bm-tip__icon svg {
    stroke: currentColor;
    stroke-width: 2;
    fill: none;
}
.bm-tip__content {
    flex: 1;
    min-width: 0;
}
.bm-tip__title {
    font-size: 0.82rem;
    font-weight: 600;
    color: #1f2937;
    margin: 0 0 6px;
}
.bm-tip__list {
    margin: 0;
    padding-left: 16px;
    list-style: disc;
}
.bm-tip__list li {
    font-size: 0.78rem;
    color: #6b7280;
    line-height: 1.5;
    margin-bottom: 2px;
}
.bm-tip__list li:last-child {
    margin-bottom: 0;
}
.bm-tip .bm-tip__text {
    font-size: 0.82rem;
    color: #6b7280;
    line-height: 1.5;
    margin: 0;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Merge Tag Table â€” Modal de variables de contrato (Step 4)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.merge-tag-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    margin-bottom: 16px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: hidden;
}
.merge-tag-table tr {
    cursor: pointer;
    transition: background 0.12s;
}
.merge-tag-table tr:hover {
    background: #f9fafb;
}
.merge-tag-table tr.merge-tag-copied {
    background: #ecfdf5;
}
.merge-tag-table tr:not(:last-child) td {
    border-bottom: 1px solid #f3f4f6;
}
.merge-tag-label {
    padding: 10px 16px;
    font-size: 0.82rem;
    color: #374151;
    font-weight: 500;
    width: 40%;
}
.merge-tag-code {
    padding: 10px 12px;
    text-align: right;
}
.merge-tag-code code {
    font-size: 0.78rem;
    font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
    color: var(--color-primary, #6366f1);
    background: #f3f4f6;
    border-radius: 4px;
    padding: 3px 8px;
    user-select: all;
    letter-spacing: -0.01em;
}
.merge-tag-table tr:hover .merge-tag-code code {
    background: #e5e7eb;
}
.merge-tag-status {
    padding: 10px 14px 10px 0;
    font-size: 0.72rem;
    font-weight: 600;
    color: #10b981;
    width: 70px;
    text-align: right;
    white-space: nowrap;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Merge Tag Variables Modal â€” sidebar nav + content (2 col)
   Prefix: .mtv-  (merge-tag-variables)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.mtv-modal-dialog {
    max-width: 960px;
}
.mtv-modal-content {
    border-radius: 14px;
    overflow: hidden;
}
.mtv-modal-header {
    padding: 18px 24px 14px;
    align-items: flex-start;
    border-bottom: 1px solid #f3f4f6;
}
.mtv-modal-header .modal-title {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 600;
}
.mtv-intro {
    margin: 4px 0 0;
    font-size: 0.82rem;
    color: #6b7280;
    line-height: 1.4;
}
.mtv-modal-body {
    padding: 0;
}
.mtv-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px 24px;
    border-bottom: 1px solid #f3f4f6;
    background: #fafbfc;
    flex-wrap: wrap;
}
.mtv-tabs {
    display: inline-flex;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 3px;
    gap: 2px;
}
.mtv-tab {
    border: none;
    background: transparent;
    color: #6b7280;
    font-size: 0.8rem;
    font-weight: 500;
    padding: 5px 12px;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.12s;
    white-space: nowrap;
}
.mtv-tab:hover {
    color: #111827;
}
.mtv-tab.active {
    background: var(--color-primary, #6366f1);
    color: #fff;
    font-weight: 600;
}
.mtv-format {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
}
.mtv-format-label {
    font-size: 0.76rem;
    color: #6b7280;
    font-weight: 500;
    white-space: nowrap;
}
.mtv-format-options {
    display: inline-flex;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}
.mtv-format-option {
    border: none;
    background: transparent;
    font-size: 0.75rem;
    color: #6b7280;
    padding: 4px 10px;
    cursor: pointer;
    transition: all 0.12s;
    font-weight: 500;
}
.mtv-format-option:hover {
    color: #111827;
}
.mtv-format-option.active {
    background: #f3f4f6;
    color: #111827;
    font-weight: 600;
}

/* Layout 2 columnas */
.mtv-layout {
    display: grid;
    grid-template-columns: 240px 1fr;
    min-height: 460px;
    max-height: 60vh;
}
.mtv-nav {
    border-right: 1px solid #f3f4f6;
    background: #fafbfc;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.mtv-search {
    position: relative;
    display: flex;
    align-items: center;
    padding: 14px 14px 10px;
}
.mtv-search-icon {
    position: absolute;
    left: 24px;
    color: #9ca3af;
    pointer-events: none;
}
.mtv-search-input {
    width: 100%;
    padding: 7px 32px 7px 32px;
    font-size: 0.82rem;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    background: #fff;
    color: #111827;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.mtv-search-input:focus {
    outline: none;
    border-color: var(--color-primary, #6366f1);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}
.mtv-search-input::placeholder {
    color: #9ca3af;
}
.mtv-search-clear {
    position: absolute;
    right: 18px;
    border: none;
    background: transparent;
    padding: 3px;
    color: #9ca3af;
    cursor: pointer;
    border-radius: 4px;
    display: inline-flex;
}
.mtv-search-clear:hover {
    color: #374151;
    background: #f3f4f6;
}
.mtv-nav-list {
    list-style: none;
    margin: 0;
    padding: 4px 8px 12px;
    overflow-y: auto;
    flex: 1;
}
.mtv-nav-list li {
    margin: 0;
    padding: 0;
}
.mtv-nav-item {
    width: 100%;
    border: none;
    background: transparent;
    padding: 7px 10px;
    border-radius: 6px;
    font-size: 0.82rem;
    font-weight: 500;
    color: #4b5563;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    text-align: left;
    transition: background 0.1s, color 0.1s;
    margin-bottom: 1px;
}
.mtv-nav-item:hover {
    background: #f3f4f6;
    color: #111827;
}
.mtv-nav-item.active {
    background: rgba(99, 102, 241, 0.1);
    color: var(--color-primary, #6366f1);
    font-weight: 600;
}
.mtv-nav-item.active .mtv-nav-count {
    background: var(--color-primary, #6366f1);
    color: #fff;
}
.mtv-nav-item--p2p {
    color: #6f42c1;
}
.mtv-nav-item--p2p:hover {
    color: #5a2d9e;
}
.mtv-nav-item--p2p.active {
    background: rgba(111, 66, 193, 0.1);
    color: #6f42c1;
}
.mtv-nav-item--p2p.active .mtv-nav-count {
    background: #6f42c1;
}
.mtv-nav-label {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.mtv-nav-count {
    background: #e5e7eb;
    color: #6b7280;
    font-size: 0.68rem;
    font-weight: 600;
    padding: 1px 7px;
    border-radius: 999px;
    line-height: 1.4;
    flex-shrink: 0;
    min-width: 22px;
    text-align: center;
}
.mtv-nav-count--highlight {
    background: #fef3c7;
    color: #92400e;
}
.mtv-nav-group {
    border-top: 1px solid #f3f4f6;
    margin-top: 8px;
    padding-top: 8px;
}

/* Content */
.mtv-content {
    overflow-y: auto;
    padding: 18px 24px 24px;
}
.mtv-section {
    margin: 0;
}
.mtv-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
}
.mtv-section-header .feature-group-label {
    margin: 0;
    font-size: 0.9rem;
}
.mtv-p2p-label {
    color: #6f42c1;
}
.mtv-copy-section {
    border: 1px solid #e5e7eb;
    background: #fff;
    color: #4b5563;
    font-size: 0.72rem;
    font-weight: 600;
    padding: 5px 10px;
    border-radius: 6px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: all 0.12s;
    flex-shrink: 0;
}
.mtv-copy-section:hover {
    background: #f9fafb;
    border-color: var(--color-primary, #6366f1);
    color: var(--color-primary, #6366f1);
}
.mtv-copy-section.copied {
    background: #ecfdf5;
    border-color: #10b981;
    color: #10b981;
}
.mtv-copy-section svg {
    flex-shrink: 0;
}
.mtv-section-note {
    font-size: 0.78rem;
    color: #6b7280;
    margin: -2px 0 10px;
    line-height: 1.4;
}
.mtv-section-note-sm {
    font-size: 0.72rem;
    margin: 10px 0 0;
}
.mtv-example {
    display: block;
    font-size: 0.7rem;
    color: #9ca3af;
    font-weight: 400;
    margin-top: 2px;
    font-style: italic;
}
.mtv-empty {
    text-align: center;
    padding: 60px 20px;
    color: #6b7280;
}
.mtv-empty svg {
    color: #d1d5db;
    margin-bottom: 10px;
}
.mtv-empty p {
    margin: 0 0 14px;
    font-size: 0.88rem;
}
.mtv-live-region {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Responsive â€” mobile: nav a horizontal scroll */
@media (max-width: 767px) {
    .mtv-layout {
        grid-template-columns: 1fr;
        max-height: none;
    }
    .mtv-nav {
        border-right: none;
        border-bottom: 1px solid #f3f4f6;
        max-height: 220px;
    }
    .mtv-nav-list {
        max-height: 130px;
    }
    .mtv-topbar {
        padding: 12px 16px;
    }
    .mtv-content {
        padding: 16px;
    }
    .mtv-format-label {
        display: none;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Owner Detail Card â€” unified card component
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.owner-detail-card {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 0;
}
.owner-detail-card .owner-header {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem 1.75rem;
    flex-wrap: wrap;
}
.owner-detail-card .owner-header-identity {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex: 1;
    min-width: 0;
}
.owner-detail-card .owner-avatar {
    width: 96px;
    height: 96px;
    object-fit: cover;
    border-radius: 14px;
    flex-shrink: 0;
}
.owner-detail-card .owner-title {
    font-size: 1.25rem;
    font-weight: 700;
    color: #111827;
    margin: 0;
    line-height: 1.3;
}
.owner-detail-card .owner-location {
    display: flex;
    align-items: center;
    gap: 4px;
    color: #6b7280;
    font-size: 0.82rem;
    margin-top: 2px;
}
.owner-detail-card .owner-location svg { color: #9ca3af; flex-shrink: 0; }
.owner-detail-card .owner-badges {
    display: flex;
    gap: 6px;
    margin-top: 6px;
    flex-wrap: wrap;
}

/* Header metrics (right side numbers) */
.owner-detail-card .owner-header-metrics {
    display: flex;
    gap: 0;
    flex-shrink: 0;
}
.owner-detail-card .owner-header-metric {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 0 1.25rem;
    border-left: 1px solid #f0f1f3;
}
.owner-detail-card .owner-header-metric:first-child {
    border-left: 0;
}
.owner-detail-card .owner-header-metric-value {
    font-size: 1.35rem;
    font-weight: 800;
    color: #111827;
    line-height: 1.2;
    letter-spacing: -0.02em;
}
.owner-detail-card .owner-header-metric-label {
    font-size: 0.8rem;
    font-weight: 500;
    color: #6b7280;
    margin-top: 2px;
    white-space: nowrap;
}

/* Progress band */
.owner-detail-card .owner-progress-band {
    padding: 1rem 1.75rem 1.5rem;
    border-top: 1px solid #f0f1f3;
    background: #fff;
}
.owner-detail-card .owner-progress-labels {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
}
.owner-detail-card .owner-progress-sold {
    font-size: 0.95rem;
    font-weight: 700;
    color: #111827;
}
.owner-detail-card .owner-progress-amount {
    font-size: 1.15rem;
    font-weight: 800;
    color: #111827;
    letter-spacing: -0.02em;
}
.owner-detail-card .owner-progress-amount small {
    font-size: 0.75rem;
    font-weight: 500;
    color: #9ca3af;
}
.owner-detail-card .owner-progress-track {
    height: 9px;
    background: #e5e7eb;
    border-radius: 5px;
    overflow: hidden;
}
.owner-detail-card .owner-progress-fill {
    height: 100%;
    background: var(--color-primary, #3C76F2);
    border-radius: 5px;
    transition: width .4s ease;
}

/* KPI accent cards inside detail card */
.owner-detail-card .dash-kpi-accent {
    border: none;
    border-left: 3px solid;
    box-shadow: none;
    padding: 6px 14px;
    border-radius: 0;
}
.owner-detail-card .dash-kpi-accent .kpi-label {
    font-size: 0.8rem;
}
svg.kpi-icon {
    vertical-align: -0.15em;
    stroke: currentColor;
    stroke-width: 1.8;
    fill: none;
    flex-shrink: 0;
}
.owner-detail-card .dash-kpi-accent .kpi-value {
    font-size: 1.1rem;
    margin-bottom: 0;
}

/* KPI row */
.owner-detail-card .owner-kpi-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    padding: 0 1.75rem 1.5rem;
    border-top: 1px solid #f0f1f3;
    margin-top: 0;
    padding-top: 1.25rem;
}
.owner-detail-card .owner-kpi-row .owner-kpi-col {
    border-right: 1px solid #f0f1f3;
    padding: 0 1.25rem;
}
.owner-detail-card .owner-kpi-row .owner-kpi-col:first-child {
    padding-left: 0;
}
.owner-detail-card .owner-kpi-row .owner-kpi-col:last-child {
    border-right: 0;
    padding-right: 0;
}

/* Stats row */
.owner-detail-card .owner-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    border-top: 1px solid #f3f4f6;
    background: #f9fafb;
}
.owner-detail-card .owner-stat {
    padding: 1rem 1.25rem;
    border-left: 1px solid #eef0f2;
    min-width: 0;
    text-align: center;
}
.owner-detail-card .owner-stat:first-child {
    border-left: 0;
}
.owner-detail-card .owner-stat .kpi-value {
    font-size: 1.35rem;
    font-weight: 800;
    color: #111827;
}
.owner-detail-card .owner-stat .kpi-label {
    font-size: 0.75rem;
    font-weight: 500;
    color: #6b7280;
}

@media (max-width: 767.98px) {
    .owner-detail-card .owner-stats {
        grid-template-columns: repeat(3, 1fr);
    }
    .owner-detail-card .owner-stat:nth-child(n+4) {
        border-top: 1px solid #eef0f2;
    }
    .owner-detail-card .owner-header {
        flex-direction: column;
        align-items: flex-start;
    }
    .owner-detail-card .owner-header-metrics {
        margin-top: 1rem;
    }
}

/* (pala-tabs removed â€” replaced by seg-ctrl-group / seg-ctrl) */

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Validation Levels Stepper (owner-detail-card context)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.owner-detail-card .cd-hero-levels {
    padding: 20px 28px 24px;
    border-bottom: 1px solid #f3f4f6;
    background: #fff;
}
.owner-detail-card .cd-levels-stepper {
    display: flex;
    align-items: flex-start;
    gap: 0;
}
.owner-detail-card .cd-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    flex: 1;
    min-width: 0;
}
.owner-detail-card .cd-step-indicator {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
    font-weight: 700;
    position: relative;
    z-index: 1;
    transition: all 0.2s ease;
}
.owner-detail-card .cd-step--complete .cd-step-indicator {
    background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
    color: #059669;
    border: 2px solid #a7f3d0;
}
.owner-detail-card .cd-step--incomplete .cd-step-indicator {
    background: #fff;
    color: #6b7280;
    border: 2px solid #e5e7eb;
}
.owner-detail-card .cd-step-number {
    font-size: 0.875rem;
    font-weight: 700;
    line-height: 1;
}
.owner-detail-card .cd-step-indicator svg {
    stroke: currentColor;
    fill: none;
}
.owner-detail-card .cd-step-connector {
    position: absolute;
    top: 20px;
    left: calc(50% + 24px);
    width: calc(100% - 48px);
    height: 2px;
    background: #e5e7eb;
    border-radius: 1px;
    z-index: 0;
}
.owner-detail-card .cd-step-connector--done {
    background: linear-gradient(90deg, #a7f3d0, #6ee7b7);
}
.owner-detail-card .cd-step-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-top: 10px;
    text-align: center;
}
.owner-detail-card .cd-step-label {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #374151;
    line-height: 1.3;
}
.owner-detail-card .cd-step--complete .cd-step-label {
    color: #059669;
}
.owner-detail-card .cd-step-status {
    font-size: 0.75rem;
    font-weight: 500;
    margin-top: 2px;
    line-height: 1.3;
}
.owner-detail-card .cd-step--complete .cd-step-status {
    color: #10b981;
}
.owner-detail-card .cd-step--incomplete .cd-step-status {
    color: #9ca3af;
}
@media (max-width: 767.98px) {
    .owner-detail-card .cd-hero-levels { padding: 16px 16px 20px; }
    .owner-detail-card .cd-step-indicator { width: 36px; height: 36px; }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   cd-data-* â€” Reutilizable fuera de .client-detail
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.cd-data-grid {
    padding: 4px 0 0;
}
.cd-section {
    padding: 14px 0 10px;
}
.cd-section:first-child {
    padding-top: 8px;
}
.cd-data-grid > .cd-section:first-child {
    padding-bottom: 20px;
}
.cd-section + .cd-section {
    border-top: 1px solid #e5e7eb;
    margin-top: 18px;
    padding-top: 18px;
}
.cd-section-title {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #3C76F2;
    margin: 0 0 10px;
    padding: 0;
    display: flex;
    align-items: center;
    gap: 8px;
}
.cd-section-title::before {
    content: '';
    width: 3px;
    height: 12px;
    background: #3C76F2;
    border-radius: 2px;
    flex-shrink: 0;
}
.cd-data-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 32px;
    align-items: start;
}
.cd-data-row .cd-data-item--full {
    grid-column: 1 / -1;
}
@media (max-width: 767.98px) {
    .cd-data-row {
        grid-template-columns: 1fr;
        gap: 10px 0;
    }
}
.cd-data-item {
    padding: 0;
    min-height: 0;
}
.cd-data-label {
    font-size: 0.68rem;
    font-weight: 500;
    color: #9ca3af;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 1px;
    line-height: 1.2;
}
.cd-data-value {
    font-size: 0.86rem;
    font-weight: 500;
    color: #374151;
    line-height: 1.4;
    word-break: break-word;
}
.cd-data-value--empty {
    color: #d1d5db;
    font-weight: 400;
    font-style: italic;
    font-size: 0.8rem;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Action circle button  (.btn-action-circle)
   CÃ­rculo 28 px neutro para acciones de tabla (â†‘ â†“ editar)
   Mismo tamaÃ±o que .btn-remove para mantener consistencia.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.btn-action-circle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 1px solid #d1d5db;
    background: #f3f4f6;
    color: #6b7280;
    padding: 0;
    cursor: pointer;
    transition: background var(--transition-fast),
                color var(--transition-fast),
                border-color var(--transition-fast);
    flex-shrink: 0;
}
.btn-action-circle:hover {
    background: #e5e7eb;
    color: #374151;
    border-color: #9ca3af;
}
.btn-action-circle svg {
    width: 14px;
    height: 14px;
    color: inherit;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Inline remove button  (.btn-remove)
   CÃ­rculo 28 px Â· fondo rosa Â· borde coral Â· Ã­cono rojo
   Usar para eliminar Ã­tems inline (fotos, docs, filtrosâ€¦)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.btn-remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 1px solid rgba(209,213,219,0.8);
    background: rgba(243,244,246,0.75);
    color: #6b7280;
    font-size: 1rem;
    line-height: 1;
    padding: 0;
    cursor: pointer;
    transition: background var(--transition-fast),
                color var(--transition-fast),
                border-color var(--transition-fast);
    flex-shrink: 0;
}
.btn-remove:hover {
    background: #fef2f2;
    color: #dc2626;
    border-color: #fca5a5;
}
.btn-remove svg {
    width: 14px;
    height: 14px;
    color: inherit;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Document card  (.doc-card)
   Card horizontal compacta para documentos en uploaders
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.doc-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 8px 12px;
    margin-bottom: 6px;
    transition: border-color var(--transition-fast);
}
a.doc-card {
    cursor: pointer;
    color: inherit;
}
a.doc-card:hover {
    border-color: var(--color-primary);
    background: #f0f7ff;
}
a.doc-card:hover .doc-card-name {
    color: var(--color-primary);
}
.doc-card:hover {
    border-color: #d1d5db;
}
.doc-card-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background: #eff6ff;
    border-radius: 6px;
    flex-shrink: 0;
    color: var(--color-primary);
}
.doc-card-icon svg {
    color: inherit;
}
/* En el uploader: limitar el ancho del doc-card para que no se estire
   en cards anchas (owners/products a col-12) y quede proporcionado. */
.drop-area .doc-card {
    max-width: 520px;
    width: 100%;
}
/* Uploader colapsable para secciones opcionales (ej. DocumentaciÃ³n Adicional).
   Usa <details>/<summary> nativo estilizado para que no ocupe espacio cuando estÃ¡ vacÃ­o. */
details.uploader-collapse {
    border-radius: 8px;
}
details.uploader-collapse > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 6px 0;
    user-select: none;
}
details.uploader-collapse > summary::-webkit-details-marker,
details.uploader-collapse > summary::marker {
    display: none;
    content: '';
}
.uploader-collapse-title {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #374151;
}
.uploader-collapse-caret {
    color: #9ca3af;
    transition: transform 0.2s ease;
    flex-shrink: 0;
}
details.uploader-collapse[open] .uploader-collapse-caret {
    transform: rotate(180deg);
}
details.uploader-collapse > summary:hover .uploader-collapse-title,
details.uploader-collapse > summary:hover .uploader-collapse-caret {
    color: var(--color-primary);
}
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Order status bar  (.order-status-bar)
   Barra sticky con Firma + ValidaciÃ³n + CertificaciÃ³n
   Siempre visible al scrollear
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.order-status-bar {
    background: #fff;
    border-top: 1px solid var(--gray-200);
    border-bottom: 1px solid var(--gray-200);
    padding: 0.5rem 0.75rem;
    margin-bottom: var(--space-3);
}
.order-status-bar .status-group {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
}
.order-status-bar .status-label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--gray-700);
    white-space: nowrap;
}
.order-status-bar .status-hint {
    font-size: 0.75rem;
    color: var(--gray-400);
}
.order-status-bar .status-divider {
    width: 1px;
    height: 20px;
    background: var(--gray-200);
    flex-shrink: 0;
}
@media (max-width: 991.98px) {
    .order-status-bar {
        padding: 0.75rem 1rem;
    }
    .order-status-bar .d-flex {
        gap: 0.5rem 0.625rem !important;
    }
    .order-status-bar .status-label {
        font-size: 0.78rem;
    }
    .order-status-bar .status-divider {
        display: none;
    }
    .order-status-bar .btn.ms-auto {
        margin-left: 0 !important;
        width: 100%;
        margin-top: 0.5rem;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Compliance Log â€” inline timeline (tab Historial)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.compliance-log__entry {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 0.5rem 0;
    border-bottom: 1px solid #f0f1f3;
}
.compliance-log__entry:last-child {
    border-bottom: none;
}
.compliance-log__dot {
    width: 8px;
    height: 8px;
    min-width: 8px;
    border-radius: 50%;
    margin-top: 5px;
}
.compliance-log__detail {
    flex: 1;
    font-size: 0.82rem;
    line-height: 1.5;
}
.compliance-log__action {
    font-weight: 600;
}
.compliance-log__meta {
    color: #6b7280;
}
.compliance-log__reason {
    color: #6b7280;
    margin-top: 2px;
    font-style: italic;
    font-size: 0.78rem;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Order page card  (.order-page-card)
   Wrapper de card blanca para vistas de detalle de orden
   Tokens consistentes con owner-detail-card y app-card-settings
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.order-page-card {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius-lg);
    padding: var(--space-4);
}
@media (min-width: 992px) {
    .order-page-card {
        padding: var(--space-5);
    }
}

.doc-card-name {
    font-size: 0.85rem;
    font-weight: 500;
    color: #374151;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Reduced motion â€” Accesibilidad (WCAG 2.1 AA Â§2.3.3)
   Desactiva animaciones y transiciones para usuarios que
   configuran "reducir movimiento" en su sistema operativo.
   Aplica a todo el dashboard, presente y futuro.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Body offset â€” override portal.css so we don't depend on SCSS
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.app {
    padding-top: var(--header-height);
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   App Content â€” consistent page padding driven by tokens
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.app-content {
    padding: var(--space-3) var(--space-3);
}
@media (min-width: 768px) {
    .app-content {
        padding: var(--space-4) var(--space-4);
    }
}
@media (min-width: 992px) {
    .app-content {
        padding: var(--content-padding-y) var(--content-padding-x);
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Top Bar â€” Clean Integrated Style
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.app-header {
    background: transparent !important;
    border-bottom: none !important;
    box-shadow: none !important;
    height: auto !important;
}

.app-header-inner {
    height: var(--header-height);
    background: #fff;
}

.app-header-inner .container-fluid {
    height: var(--header-height);
    display: flex;
    align-items: center;
    padding-top: 0;
    padding-bottom: 0;
}

.app-header-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    height: var(--header-height);
}

.topbar-left {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.topbar-right {
    display: flex;
    align-items: center;
    gap: 16px;
}

/* Hamburger */
.app-header .sidepanel-toggler {
    color: #6b7280;
    line-height: 1;
    display: flex;
    align-items: center;
}

.app-header .sidepanel-toggler:hover {
    color: #111827;
}

/* Page title */
.topbar-title {
    /* Elemento <h1> semantico (un H1 por pagina, accesible a screen readers).
       Reset de defaults del browser (margin, line-height) para que visualmente
       funcione igual que el <span> previo. */
    margin: 0;
    line-height: 1.2;
    color: #111827;
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* DEMO badge (matches login style) */
.topbar-badge-demos {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fef2f2;
    color: #dc2626;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 4px 12px;
    border-radius: 6px;
    border: 1px solid #fecaca;
    line-height: 1.4;
    margin-left: 12px;
}

.topbar-badge-demos::before {
    content: '';
    width: 7px;
    height: 7px;
    background: #dc2626;
    border-radius: 50%;
    flex-shrink: 0;
}

/* Settings icon */
.topbar-icon-link {
    color: #6b7280;
    display: flex;
    align-items: center;
    transition: color 0.15s;
}

.topbar-icon-link:hover {
    color: #111827;
}

/* Avatar iniciales */
.topbar-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
    color: #fff !important;
    text-decoration: none !important;
    letter-spacing: 0.02em;
    transition: opacity 0.15s;
}

.topbar-avatar::after {
    display: none !important;
}

.topbar-avatar:hover {
    opacity: 0.85;
}

.topbar-avatar--admin {
    background: #3c76f2;
}

.topbar-avatar--creator {
    background: #10b981;
}

.topbar-avatar--validator {
    background: #f59e0b;
}

.topbar-avatar--siteAdmin {
    background: #0ea5e9;
}

.topbar-avatar--escribano {
    background: #8b5cf6;
}

.topbar-avatar--editor {
    background: #f97316;
}

.topbar-avatar--security {
    background: #dc2626;
}

/* Dropdown */
.topbar-dropdown {
    background: #fff !important;
    border: 1px solid #e5e7eb !important;
    border-radius: 8px !important;
    padding: 4px 0 !important;
    min-width: 200px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;
}

.topbar-dropdown .dropdown-divider {
    border-color: #e5e7eb;
    margin: 4px 0;
}

.topbar-dropdown .dropdown-item {
    color: #374151 !important;
    font-size: 13px;
    padding: 6px 16px;
}

.topbar-dropdown .dropdown-item:hover,
.topbar-dropdown .dropdown-item:focus {
    background: #f3f4f6 !important;
    color: #111827 !important;
}

.topbar-dropdown-header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 8px 16px;
    gap: 4px;
}

.topbar-dropdown-name {
    color: #111827;
    font-size: 13px;
    font-weight: 600;
}

.topbar-dropdown-role {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px 8px;
    border-radius: 4px;
    color: #fff;
}

.topbar-dropdown-role--admin {
    background: #3c76f2;
}

.topbar-dropdown-role--creator {
    background: #10b981;
}

.topbar-dropdown-role--validator {
    background: #f59e0b;
}

.topbar-dropdown-role--siteAdmin {
    background: #0ea5e9;
}

.topbar-dropdown-role--escribano {
    background: #8b5cf6;
}

.topbar-dropdown-role--editor {
    background: #f97316;
}

/* Topbar user dropdown alignment */
.topbar-user .dropdown-menu {
    right: 0;
    left: auto;
}

/* Wrapper offset â€” body.app handles header height; only add gap for desktop floating header */
.app-wrapper {
    padding-top: 0;
}
@media (min-width: 1200px) {
    .app-wrapper {
        padding-top: var(--header-gap);
    }
}

/* â”€â”€ Responsive: mobile â”€â”€ */
@media (max-width: 767.98px) {
    .topbar-title {
        max-width: 160px;
        font-size: 14px;
    }

    .topbar-right {
        gap: 12px;
    }
}

@media (max-width: 374.98px) {
    .topbar-title {
        display: none;
    }
}

/* Desktop: topbar flotante al lado del sidebar */
@media (min-width: 1200px) {
    .app-header {
        padding: var(--header-gap) var(--header-gap) 0 calc(var(--sidebar-width) + 0.875rem + var(--header-gap)) !important;
    }

    .app-header-inner {
        margin-left: 0 !important;
        border-radius: 12px;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06),
                    0 8px 24px rgba(0, 0, 0, 0.07);
    }
}

/* Mobile/tablet: topbar integrada edge-to-edge */
@media (max-width: 1199.98px) {
    .app-header {
        padding: 0 !important;
        background: #fff !important;
        border-bottom: 1px solid #e5e7eb !important;
    }

    .app-header-inner {
        margin-left: 0 !important;
        border-radius: 0;
        box-shadow: none;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Suscriptions listing â€” container override
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.suscriptions-listing {
    box-shadow: none;
}
.suscriptions-listing .filters-bar {
    margin-bottom: 1.25rem;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Subscription card â€” compact card for suscriptions listing
   Mobile only (hidden on desktop via .suscriptions-listing rule)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.subscription-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #fff;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.subscription-card:hover {
    border-color: #c7d2fe;
    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.08);
    color: inherit;
    text-decoration: none;
}

.subscription-card__header {
    display: flex;
    align-items: center;
    gap: 10px;
}
.subscription-card__avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}
.subscription-card__user {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.subscription-card__name {
    font-weight: 600;
    font-size: 0.92rem;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.subscription-card__email {
    font-size: 0.78rem;
    color: #64748b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.subscription-card__level {
    font-size: 0.72rem;
    font-weight: 600;
    color: #6366f1;
}
.subscription-card__date {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    font-size: 0.78rem;
    color: #94a3b8;
    flex-shrink: 0;
}

.subscription-card__body {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}
.subscription-card__project {
    font-size: 0.82rem;
    color: #475569;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.subscription-card__pct {
    font-size: 0.85rem;
    font-weight: 700;
    color: #1e293b;
    flex-shrink: 0;
}

.subscription-card__pills {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
    flex-wrap: wrap;
}

/* â”€â”€ Suscriptions listing â€” desktop: hide cards, show table â”€â”€ */
@media (min-width: 768px) {
    .suscriptions-listing .listing-grid {
        display: none;
    }
}

.suscriptions-listing .sites-table {
    min-width: 900px;
}

/* â”€â”€ Suscriptions listing â€” mobile: hide table, show cards â”€â”€ */
@media (max-width: 767.98px) {
    .suscriptions-listing .sites-table-wrap {
        display: none !important;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Validator owner card â€” compact card for owners listing
   Mobile only (hidden on desktop via .owners-listing rule)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.validator-owner-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #fff;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.validator-owner-card:hover {
    border-color: #c7d2fe;
    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.08);
    color: inherit;
    text-decoration: none;
}

.validator-owner-card__header {
    display: flex;
    align-items: center;
    gap: 10px;
}
.validator-owner-card__thumb {
    width: 42px;
    height: 42px;
    border-radius: 8px;
    object-fit: cover;
    flex-shrink: 0;
}
.validator-owner-card__info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.validator-owner-card__name {
    font-weight: 600;
    font-size: 0.92rem;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.validator-owner-card__sub {
    font-size: 0.78rem;
    color: #64748b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.validator-owner-card__badges {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.validator-owner-card__metrics {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 0.78rem;
    color: #64748b;
}
.validator-owner-card__metrics strong {
    color: #1e293b;
}

/* â”€â”€ Owners listing (validator) â€” desktop: hide cards, show table â”€â”€ */
@media (min-width: 768px) {
    .owners-listing .validator-owners-grid {
        display: none;
    }
}

/* â”€â”€ Owners listing (validator) â€” mobile: hide table, show cards â”€â”€ */
@media (max-width: 767.98px) {
    .owners-listing .sites-table-wrap:not(#view-list) {
        display: none !important;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   User Avatar â€” reusable component (<x-user-avatar>)
   3 levels: photo > initials+color > icon fallback
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
img.user-avatar {
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
    vertical-align: middle;
}
.user-avatar--initials,
.user-avatar--icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    flex-shrink: 0;
    vertical-align: middle;
    user-select: none;
    line-height: 1;
}
.user-avatar--initials {
    font-weight: 600;
    letter-spacing: 0.02em;
}
.user-avatar--icon {
    background: rgba(148, 163, 184, 0.12);
    color: #94a3b8;
}
.user-avatar--icon svg {
    stroke: currentColor;
    stroke-width: 1.8;
    fill: none;
}

/* â”€â”€ Action Modal Component â”€â”€ */
.action-modal {
    border-radius: 16px;
    border: none;
    overflow: hidden;
    box-shadow:
        0 0 0 1px rgba(0, 0, 0, 0.04),
        0 8px 24px rgba(0, 0, 0, 0.08),
        0 24px 48px rgba(0, 0, 0, 0.06);
}
.action-modal__head {
    text-align: center;
    padding: 2rem 2.25rem 0.5rem;
}
.action-modal__icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 1rem;
}
.action-modal__icon svg {
    stroke: currentColor;
    stroke-width: 1.8;
    fill: none;
}
.action-modal__title {
    font-weight: 600;
    font-size: 1.125rem;
    color: #111827;
    margin-bottom: 0.375rem;
    letter-spacing: -0.01em;
}
.action-modal__desc {
    color: #6b7280;
    font-size: 0.875rem;
    line-height: 1.55;
    margin-bottom: 0;
}
.action-modal__warning {
    color: var(--color-danger, #dc2626);
    font-size: 0.8125rem;
    font-weight: 500;
    margin-top: 0.625rem;
    margin-bottom: 0;
}
.action-modal__body {
    padding: 0.75rem 2.25rem 0.25rem;
}
.action-modal__body .form-control {
    border-radius: 8px;
    border: 1px solid #e5e7eb;
    font-size: 0.875rem;
    padding: 0.625rem 0.875rem;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.action-modal__body .form-control:focus {
    border-color: var(--color-primary, #3C76F2);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.1);
}
.action-modal__footer {
    display: flex;
    gap: 0.75rem;
    border-top: none;
    padding: 1.25rem 2.25rem 1.75rem;
}
.action-modal__footer .btn {
    flex: 1;
    justify-content: center;
}
.modal.fade .action-modal {
    transform: scale(0.96);
    transition: transform 0.2s cubic-bezier(0.32, 0.72, 0, 1);
}
.modal.show .action-modal {
    transform: scale(1);
}
.modal-backdrop.show {
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* â”€â”€ Scale slider â€” font-size range control â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.scale-slider {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.5rem 0;
}
.scale-slider__icon {
    color: #64748b;
    flex-shrink: 0;
    line-height: 1;
}
.scale-slider__badge {
    font-size: 0.6875rem;
    font-weight: 600;
    color: #3C76F2;
    background: #eff4ff;
    border-radius: 4px;
    padding: 2px 6px;
    min-width: 2.25rem;
    text-align: center;
    flex-shrink: 0;
    line-height: 1.4;
}
.scale-slider__track {
    flex: 1;
    -webkit-appearance: none;
    appearance: none;
    height: 4px;
    border-radius: 2px;
    background: #e2e8f0;
    outline: none;
    cursor: pointer;
}
.scale-slider__track::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid #3C76F2;
    box-shadow: 0 1px 3px rgba(0,0,0,.12);
    cursor: pointer;
    transition: box-shadow .15s ease;
}
.scale-slider__track::-webkit-slider-thumb:hover {
    box-shadow: 0 0 0 4px rgba(60,118,242,.15);
}
.scale-slider__track::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid #3C76F2;
    box-shadow: 0 1px 3px rgba(0,0,0,.12);
    cursor: pointer;
}

/* â”€â”€ Weight selector â€” segmented with sub-labels â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.segmented-control--weight label span {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 2px;
    line-height: 1.1;
}
.segmented-control--weight input:checked + span {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
}
.segmented-control--weight .weight-label {
    font-size: 0.5625rem;
    color: #94a3b8;
    font-weight: 400 !important;
    letter-spacing: 0.02em;
}

/* â”€â”€ Contract cards â”€â”€ */
.contract-card {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 10px;
    box-shadow: 0 1px 2px rgba(0,0,0,.04);
}
.contract-card__header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 10px;
}
.contract-card__name {
    font-weight: 600;
    font-size: 0.9rem;
    color: #111827;
    line-height: 1.3;
}
.contract-card__site {
    font-size: 0.78rem;
    color: #6b7280;
    margin-top: 2px;
}
.contract-card__date {
    font-size: 0.75rem;
    color: #9ca3af;
    margin-top: 6px;
    padding-left: 10px;
}
.contract-card__body {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 10px;
}
.pill-neutral {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 500;
    padding: 2px 10px;
    border-radius: 999px;
    background: #f3f4f6;
    color: #374151;
}
.contract-card__footer {
    display: flex;
    align-items: center;
    gap: 0;
}
.contract-card__footer .contract-info-copyable {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
}
.contract-card__actions {
    flex-shrink: 0;
}
/* Truncado dinÃ¡mico tipo wallet: prefix con ellipsis, sufijo siempre visible
   para que se identifique el contrato en cualquier ancho de pantalla. */
.contract-info-value--truncate {
    display: flex;
    overflow: hidden;
    white-space: nowrap;
    word-break: normal;
    min-width: 0;
}
.contract-info-value--truncate .addr-prefix {
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex-shrink: 1;
}
.contract-info-value--truncate .addr-suffix {
    flex-shrink: 0;
}

/* â”€â”€ Contracts listing â€” desktop table density â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Filas con padding 18px vertical (comfortable density) y
   leve gap entre los 3 iconos de accion para que respiren. */
.contracts-listing .app-table-hover tbody td {
    padding: 18px 12px;
}
.contracts-listing .action-group {
    gap: 2px;
}

/* â”€â”€ Responsive: contracts listing dual layout â”€â”€ */
@media (max-width: 767.98px) {
    .contracts-listing #view-list {
        display: none !important;
    }
    .contracts-listing #view-grid {
        display: block !important;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Users Listing â€” mobile cards
   Desktop: table visible, cards hidden
   Mobile:  cards visible, table hidden
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.user-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #fff;
}
.user-card__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}
.user-card__info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1;
}
.user-card__name {
    font-weight: 600;
    font-size: 0.92rem;
    color: #111827;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.user-card__email {
    font-size: 0.78rem;
    color: #64748b;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Role variants for badge-env */
.badge-env.is-role-admin     { --badge-color: #3c76f2; }
.badge-env.is-role-creator   { --badge-color: #059669; }
.badge-env.is-role-siteAdmin { --badge-color: #0ea5e9; }
.badge-env.is-role-validator { --badge-color: #d97706; }
.badge-env.is-role-escribano { --badge-color: #8b5cf6; }
.badge-env.is-role-security  { --badge-color: #dc2626; }
.user-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-top: 1px solid #f0f1f3;
    padding-top: 8px;
}
.user-card__id {
    font-size: 0.75rem;
    font-weight: 500;
    color: #9ca3af;
}

/* Desktop: show table, hide cards */
@media (min-width: 768px) {
    .users-listing .users-cards {
        display: none;
    }
}
/* Mobile: show cards, hide table */
@media (max-width: 767.98px) {
    .users-listing .users-table {
        display: none !important;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Audit Log â€” mobile cards
   Desktop: table visible, cards hidden
   Mobile:  cards visible, table hidden
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.audit-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 14px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #fff;
}
.audit-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.audit-card__date {
    font-size: 0.75rem;
    color: #6b7280;
    white-space: nowrap;
}
.audit-card__body {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.audit-card__row {
    display: flex;
    align-items: baseline;
    gap: 8px;
}
.audit-card__label {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #9ca3af;
    flex-shrink: 0;
    min-width: 52px;
}
.audit-card__value {
    font-size: 0.82rem;
    color: #374151;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.audit-card__arrow {
    vertical-align: -2px;
    color: #9ca3af;
    margin: 0 2px;
    flex-shrink: 0;
}

/* Desktop: show table, hide cards */
@media (min-width: 768px) {
    .audit-log-listing .audit-log-cards {
        display: none;
    }
}
/* Mobile: show cards, hide table */
@media (max-width: 767.98px) {
    .audit-log-listing .audit-log-table {
        display: none !important;
    }
}

/* â”€â”€ Segment control (underline tabs) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.seg-ctrl-group {
    display: flex;
    align-items: stretch;
    background: #fff;
    border-bottom: 1px solid var(--gray-200, #e5e7eb);
    padding: 0;
    gap: 0;
    margin-bottom: 1rem;
}
.seg-ctrl {
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    padding: 10px 16px;
    font-size: 14px;
    font-weight: 500;
    color: var(--gray-500, #737373);
    cursor: pointer;
    transition: color .15s ease, border-color .15s ease;
    margin-bottom: -1px;
}
.seg-ctrl:hover { color: var(--color-primary-hover, #2b63d9); }
.seg-ctrl--active {
    color: var(--color-primary, #3C76F2);
    border-bottom-color: var(--color-primary, #3C76F2);
    font-weight: 600;
}
@media (max-width: 575.98px) {
    .seg-ctrl-group { flex-wrap: wrap; }
    .seg-ctrl { font-size: 13px; padding: 8px 12px; }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Help Center
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.help-center {
    max-width: 100%;
    margin: 0 auto;
    padding: 0;
}

/* â”€â”€ Hero â”€â”€ */
.help-center__hero {
    text-align: center;
    padding: 0.5rem 0 1.5rem;
}
.help-center__title {
    font-size: 1.75rem;
    font-weight: 700;
    color: #111827;
    margin-bottom: 0.35rem;
}
.help-center__subtitle {
    font-size: 0.95rem;
    color: #6b7280;
    margin-bottom: 1.5rem;
}

/* â”€â”€ Search â”€â”€ */
.help-center__search {
    max-width: 600px;
    margin: 0 auto;
}
.help-center__search--compact {
    margin-bottom: 1.5rem;
}
.help-center__search-wrap {
    display: flex;
    align-items: center;
    background: #fff;
    border: 1.5px solid #e5e7eb;
    border-radius: 10px;
    padding: 4px 4px 4px 14px;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.help-center__search-wrap:focus-within {
    border-color: #3b82f6;
    box-shadow: 0 0 0 3px rgba(59,130,246,0.1);
}
.help-center__search-icon {
    flex-shrink: 0;
    stroke: #9ca3af;
    stroke-width: 1.8;
    fill: none;
}
.help-center__search-input {
    flex: 1;
    border: none;
    outline: none;
    font-size: 0.9rem;
    padding: 10px 10px;
    background: transparent;
    color: #111827;
}
.help-center__search-input::placeholder {
    color: #9ca3af;
}
.help-center__search-btn {
    flex-shrink: 0;
    padding: 8px 20px;
    border: none;
    border-radius: 8px;
    background: #3b82f6;
    color: #fff;
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.help-center__search-btn:hover {
    background: #2563eb;
}

/* â”€â”€ AI trigger â”€â”€ */
.help-center__ai-trigger {
    margin-top: 0.75rem;
}
.help-center__ai-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 16px;
    border: 1.5px solid #dbeafe;
    border-radius: 8px;
    background: #e8f0fe;
    color: #3C76F2;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.help-center__ai-btn:hover {
    background: #dbeafe;
    border-color: #93c5fd;
}
.help-center__ai-btn svg {
    stroke: #3C76F2;
    stroke-width: 1.8;
    fill: none;
}
.help-center__ai-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* â”€â”€ AI panel â”€â”€ */
.help-center__ai-panel {
    max-width: 600px;
    margin: 1rem auto 0;
    background: #fff;
    border: 1.5px solid #e0e7ff;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 12px rgba(0,0,0,0.06);
}
.help-center__ai-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    background: #eef2ff;
    font-size: 0.82rem;
    font-weight: 600;
    color: #4338ca;
}
.help-center__ai-header svg {
    stroke: #4338ca;
    stroke-width: 1.8;
    fill: none;
}
.help-center__ai-close {
    margin-left: auto;
    background: none;
    border: none;
    font-size: 1.2rem;
    color: #6b7280;
    cursor: pointer;
    line-height: 1;
}
.help-center__ai-body {
    padding: 14px;
    min-height: 60px;
    max-height: 300px;
    overflow-y: auto;
    text-align: left;
}
.help-center__ai-placeholder {
    font-size: 0.82rem;
    color: #9ca3af;
    margin: 0;
}
.help-center__ai-footer {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px 10px;
    border-top: 1px solid #f3f4f6;
}
.help-center__ai-input {
    flex: 1;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 0.82rem;
    outline: none;
}
.help-center__ai-input:focus {
    border-color: #3b82f6;
}
.help-center__ai-send {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: none;
    border-radius: 8px;
    background: #3b82f6;
    color: #fff;
    cursor: pointer;
    transition: background 0.15s;
}
.help-center__ai-send:hover {
    background: #2563eb;
}
.help-center__ai-send svg,
.help-center__ai-send .bi {
    stroke: #fff;
    stroke-width: 2;
    fill: currentColor;
    color: #fff;
    font-size: 14px;
}
.help-center__breadcrumb-sep {
    font-size: 10px;
    color: #9ca3af;
    flex-shrink: 0;
}

/* â”€â”€ AI messages â”€â”€ */
.help-center__ai-msg {
    font-size: 0.875rem;
    line-height: 1.65;
    padding: 12px 16px;
    border-radius: 12px;
    margin-bottom: 10px;
    max-width: 90%;
}
.help-center__ai-msg--user {
    background: #f3f4f6;
    color: #374151;
    margin-left: auto;
    text-align: right;
    padding: 10px 14px;
}
.help-center__ai-msg--ai {
    background: #f3ecfe;
    color: #1e1b4b;
    position: relative;
}
.help-center__ai-msg--ai::before {
    content: 'IA';
    font-size: 0.6rem;
    font-weight: 700;
    color: #873df6;
    background: rgba(135, 61, 246, 0.1);
    padding: 1px 5px;
    border-radius: 4px;
    letter-spacing: 0.5px;
    display: inline-block;
    margin-bottom: 4px;
    line-height: 1.4;
}
.ai-msg__inline-followup {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 10px;
    padding: 10px 12px;
    background: rgba(135, 61, 246, 0.05);
    border: 1px solid #e8d8fc;
    border-radius: 10px;
    font-size: 0.82rem;
    color: #5B21B6;
    line-height: 1.5;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.ai-msg__inline-followup:hover {
    background: rgba(135, 61, 246, 0.1);
    border-color: #873df6;
}
.ai-msg__inline-followup svg {
    width: 18px;
    height: 18px;
    stroke: #873df6;
    fill: none;
    stroke-width: 2;
    flex-shrink: 0;
    margin-top: 1px;
}
.help-center__ai-msg--ai p {
    margin: 0 0 8px;
}
.help-center__ai-msg--ai p:last-child {
    margin-bottom: 0;
}
.help-center__ai-msg--ai ol,
.help-center__ai-msg--ai ul {
    margin: 6px 0;
    padding-left: 20px;
}
.help-center__ai-msg--ai li {
    margin-bottom: 6px;
    line-height: 1.65;
}
.help-center__ai-msg--ai strong {
    font-weight: 600;
    color: #5B21B6;
}
.help-center__ai-msg--ai br + br {
    display: none;
}
.help-center__ai-link {
    color: #873df6;
    text-decoration: none;
    border-bottom: 1px dashed #a5b4fc;
    transition: border-color 0.15s;
}
.help-center__ai-link:hover {
    color: #3730a3;
    border-bottom-style: solid;
}
.help-center__ai-link strong {
    color: inherit;
}
.help-center__ai-msg--loading {
    background: #f3ecfe;
    color: #9585b5;
}
.help-center__ai-dots {
    display: inline-flex;
    gap: 3px;
}
.help-center__ai-dots span {
    display: inline-block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #b794f4;
    animation: aiDot 1.2s infinite;
}
.help-center__ai-dots span:nth-child(2) { animation-delay: 0.2s; }
.help-center__ai-dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes aiDot {
    0%, 80%, 100% { opacity: 0.3; }
    40% { opacity: 1; }
}
.help-center__ai-sources {
    font-size: 0.72rem;
    color: #6b7280;
    padding: 8px 16px 4px;
    margin-top: 6px;
    border-top: 1px solid #f0f0f2;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}
.help-center__ai-sources-label {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-weight: 600;
    color: #6b7280;
    font-size: 0.7rem;
    letter-spacing: 0.3px;
    text-transform: uppercase;
}
.help-center__ai-sources-label svg {
    width: 12px;
    height: 12px;
    stroke: #6b7280;
    fill: none;
}
.help-center__ai-sources a {
    color: #4b5563;
    text-decoration: none;
    font-weight: 500;
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    border-radius: 20px;
    padding: 2px 10px;
    font-size: 0.7rem;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 180px;
    display: inline-block;
    line-height: 1.6;
}
.help-center__ai-sources a:hover {
    background: #e5e7eb;
    border-color: #9ca3af;
    color: #1f2937;
}

/* â”€â”€ AI suggest (search page) â”€â”€ */
.help-center__ai-suggest {
    margin-top: 2rem;
    text-align: center;
    padding: 1.5rem;
    background: #fafbff;
    border: 1px solid #e0e7ff;
    border-radius: 10px;
}
.help-center__ai-suggest p {
    font-size: 0.85rem;
    color: #6b7280;
    margin-bottom: 0.75rem;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Floating AI Assistant (FAB)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.ai-fab {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 1050;
    width: 52px;
    height: 52px;
    border: none;
    border-radius: 50%;
    background: linear-gradient(135deg, #7030D6, #873df6);
    color: #fff;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(135, 61, 246, 0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s, box-shadow 0.2s;
}
.ai-fab:hover {
    transform: scale(1.08);
    box-shadow: 0 6px 20px rgba(135, 61, 246, 0.5);
}
.ai-fab--open {
    background: linear-gradient(135deg, #873df6, #9D5FF8);
}
.ai-fab svg {
    stroke: #fff;
    stroke-width: 1.8;
    fill: none;
}

/* Panel */
.ai-fab-panel {
    position: fixed;
    bottom: 88px;
    right: 24px;
    z-index: 1050;
    width: 460px;
    max-width: calc(100vw - 32px);
    background: #fff;
    border: 1.5px solid #e8d8fc;
    border-radius: 14px;
    box-shadow: 0 8px 30px rgba(0,0,0,0.12);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    animation: aiFabSlideUp 0.2s ease-out;
}
@keyframes aiFabSlideUp {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
.ai-fab-panel__header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
    background: #f3ecfe;
    font-size: 0.85rem;
    font-weight: 600;
    color: #873df6;
}
.ai-fab-panel__header svg {
    stroke: #873df6;
    stroke-width: 1.8;
    fill: none;
    flex-shrink: 0;
}
.ai-fab-panel__close {
    margin-left: auto;
    background: none;
    border: none;
    font-size: 1.3rem;
    color: #6b7280;
    cursor: pointer;
    line-height: 1;
    padding: 0 2px;
}
.ai-fab-panel__close:hover {
    color: #374151;
}
.ai-fab-panel__body {
    padding: 16px 20px;
    min-height: 80px;
    max-height: 480px;
    overflow-y: auto;
    text-align: left;
}
.ai-fab-panel__placeholder {
    font-size: 0.85rem;
    color: #6b7280;
    margin: 0;
    line-height: 1.5;
}
.ai-fab-panel__footer {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 12px 20px 12px;
}
.ai-fab-panel__input-wrap {
    display: flex;
    align-items: center;
    width: 100%;
    border: 1.5px solid #e5e7eb;
    border-radius: 24px;
    padding: 4px 4px 4px 16px;
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.ai-fab-panel__input-wrap:focus-within {
    border-color: #c4a4f4;
    box-shadow: 0 0 0 1.5px rgba(135, 61, 246, 0.08);
}
.ai-fab-panel__input {
    flex: 1;
    border: none;
    padding: 8px 0;
    font-size: 0.85rem;
    outline: none;
    background: transparent;
}
.ai-fab-panel__send {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: none;
    border-radius: 50%;
    background: #873df6;
    color: #fff;
    cursor: pointer;
    transition: background 0.15s;
    flex-shrink: 0;
}
.ai-fab-panel__send:hover {
    background: #7030D6;
}
.ai-fab-panel__send .bi {
    font-size: 14px;
    color: #fff;
}
.ai-fab-panel__privacy {
    font-size: 0.72rem;
    color: #9ca3af;
    text-decoration: none;
}
.ai-fab-panel__privacy:hover {
    color: #6b7280;
    text-decoration: underline;
}
/* â”€â”€ AI feedback thumbs â”€â”€ */
.ai-fab-panel__feedback {
    display: flex;
    justify-content: flex-end;
    gap: 4px;
    margin-top: -4px;
    margin-bottom: 6px;
    padding-right: 4px;
}
.ai-fab-panel__feedback-btn {
    background: none;
    border: none;
    cursor: pointer;
    padding: 3px 5px;
    border-radius: 6px;
    opacity: 0.45;
    transition: opacity 0.15s, background 0.15s;
    display: inline-flex;
    align-items: center;
}
.ai-fab-panel__feedback-btn:hover {
    opacity: 1;
    background: #f3ecfe;
}
.ai-fab-panel__feedback-btn svg {
    width: 14px;
    height: 14px;
    stroke: #9ca3af;
    fill: none;
    stroke-width: 2;
}
.ai-fab-panel__feedback-btn:hover svg {
    stroke: #873df6;
}
.ai-fab-panel__feedback-btn--active {
    opacity: 1;
}
.ai-fab-panel__feedback-btn--active svg {
    stroke: #873df6;
    fill: #873df6;
}
.ai-fab-panel__feedback-btn--hidden {
    display: none;
}
.ai-fab-panel__suggestions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 12px;
}
.ai-fab-panel__followups {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px 0 8px;
    margin-top: 4px;
    border-top: 1px solid #f0e6ff;
}
.ai-fab-panel__followup-btn {
    background: #f3ecfe;
    color: #873df6;
    border: 1px solid #dcc8f5;
    border-radius: 16px;
    padding: 6px 14px;
    font-size: 0.78rem;
    cursor: pointer;
    font-family: inherit;
    line-height: 1.3;
    transition: background 0.15s, border-color 0.15s;
    text-align: left;
}
.ai-fab-panel__followup-btn:hover {
    background: #e8d8fc;
    border-color: #873df6;
}

@media (max-width: 480px) {
    .ai-fab-panel {
        right: 8px;
        bottom: 80px;
        width: calc(100vw - 16px);
    }
    .ai-fab {
        bottom: 16px;
        right: 16px;
    }
}

/* â”€â”€ Section title â”€â”€ */
.help-center__collections + .help-center__collections {
    margin-top: 2rem;
}
.help-center__section-title {
    font-size: 1rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 1rem;
}

/* â”€â”€ Collections grid â”€â”€ */
.help-center__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
}
.help-center__card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 1.25rem;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    text-decoration: none;
    transition: border-color 0.15s, box-shadow 0.15s;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    font-size: inherit;
    width: 100%;
}
.help-center__card:hover {
    border-color: #93c5fd;
    box-shadow: 0 2px 8px rgba(59,130,246,0.08);
}
.help-center__card-icon {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f3f4f6;
    border-radius: 10px;
    font-size: 1.3rem;
}
.help-center__card-body {
    flex: 1;
    min-width: 0;
}
.help-center__card-title {
    font-size: 0.88rem;
    font-weight: 600;
    color: #111827;
    margin: 0 0 3px;
}
.help-center__card-desc {
    font-size: 0.78rem;
    color: #6b7280;
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.help-center__card-arrow {
    flex-shrink: 0;
    stroke: #9ca3af;
    stroke-width: 2;
    fill: none;
    transition: stroke 0.15s;
}
.help-center__card:hover .help-center__card-arrow {
    stroke: #3b82f6;
}

/* â”€â”€ Outline link â”€â”€ */
.help-center__outline-link {
    text-align: center;
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid #f3f4f6;
}
.help-center__outline-link p {
    font-size: 0.82rem;
    color: #9ca3af;
    margin-bottom: 0.5rem;
}
.help-center__outline-link a {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.82rem;
    color: #3b82f6;
    text-decoration: none;
    font-weight: 500;
}
.help-center__outline-link a:hover {
    text-decoration: underline;
}
.help-center__outline-link a svg {
    stroke: currentColor;
    stroke-width: 1.8;
    fill: none;
}

/* â”€â”€ Breadcrumb â”€â”€ */
.help-center__breadcrumb {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
    color: #9ca3af;
    margin-bottom: 1.25rem;
    padding-top: 1rem;
}
.help-center__breadcrumb a {
    color: #3b82f6;
    text-decoration: none;
}
.help-center__breadcrumb a:hover {
    text-decoration: underline;
}
.help-center__breadcrumb svg {
    stroke: #9ca3af;
    stroke-width: 2;
    fill: none;
}

/* â”€â”€ Collection layout â”€â”€ */
.help-center__collection-layout {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 2rem;
}

/* â”€â”€ Sidebar â”€â”€ */
.help-center__sidebar {
    position: sticky;
    top: 1rem;
}
.help-center__sidebar-title {
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #9ca3af;
    margin-bottom: 0.75rem;
}
.help-center__sidebar-link {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    border-radius: 6px;
    font-size: 0.8rem;
    color: #374151;
    text-decoration: none;
    transition: background 0.12s;
    margin-bottom: 2px;
}
.help-center__sidebar-link:hover {
    background: #f3f4f6;
}
.help-center__sidebar-link--active {
    background: #e8f0fe;
    color: #3C76F2;
    font-weight: 600;
}
.help-center__sidebar-link svg {
    stroke: currentColor;
    stroke-width: 1.8;
    fill: none;
}
.help-center__sidebar-hr {
    margin: 0.75rem 0;
    border: none;
    border-top: 1px solid #f3f4f6;
}

/* â”€â”€ Collection header â”€â”€ */
.help-center__collection-header {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 1.5rem;
}
.help-center__collection-icon {
    font-size: 1.8rem;
    line-height: 1;
}
.help-center__collection-title {
    font-size: 1.3rem;
    font-weight: 700;
    color: #111827;
    margin: 0;
}
.help-center__collection-desc {
    font-size: 0.85rem;
    color: #6b7280;
    margin: 4px 0 0;
}

/* â”€â”€ Document list â”€â”€ */
.help-center__doc-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
}
.help-center__doc-list {
    display: flex;
    flex-direction: column;
    gap: 1px;
    background: #f3f4f6;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    overflow: hidden;
}
.help-center__doc-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 16px;
    background: #fff;
    text-decoration: none;
    transition: background 0.12s;
}
.help-center__doc-item:hover {
    background: #f9fafb;
}
.help-center__doc-info {
    flex: 1;
    min-width: 0;
}
.help-center__doc-title {
    font-size: 0.88rem;
    font-weight: 600;
    color: #111827;
    margin: 0;
}
.help-center__doc-snippet {
    font-size: 0.78rem;
    color: #6b7280;
    margin: 3px 0 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.help-center__doc-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.help-center__doc-date {
    font-size: 0.72rem;
    color: #9ca3af;
}
.help-center__doc-meta svg {
    stroke: #9ca3af;
    stroke-width: 1.8;
    fill: none;
}
.help-center__doc-item:hover .help-center__doc-meta svg {
    stroke: #3b82f6;
}

/* â”€â”€ Doc cards (collection view) â”€â”€ */
.help-center__doc-card {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 1.25rem;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    text-decoration: none;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
}
.help-center__doc-card:hover {
    border-color: #93c5fd;
    box-shadow: 0 4px 12px rgba(60, 118, 242, 0.08);
    transform: translateY(-2px);
}
.help-center__doc-card-body {
    flex: 1;
}
.help-center__doc-card-title {
    font-size: 0.9rem;
    font-weight: 600;
    color: #111827;
    margin: 0 0 6px;
    line-height: 1.4;
}
.help-center__doc-card:hover .help-center__doc-card-title {
    color: #3C76F2;
}
.help-center__doc-card-desc {
    font-size: 0.8rem;
    color: #6b7280;
    margin: 0;
    line-height: 1.5;
}
.help-center__doc-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid #f3f4f6;
}
.help-center__doc-card-date {
    font-size: 0.72rem;
    color: #9ca3af;
    display: flex;
    align-items: center;
    gap: 4px;
}
.help-center__doc-card-date .bi {
    font-size: 11px;
}
.help-center__doc-card-action {
    font-size: 0.75rem;
    font-weight: 500;
    color: #3C76F2;
    display: flex;
    align-items: center;
    gap: 4px;
}
.help-center__doc-card-action svg {
    stroke: #3C76F2;
    stroke-width: 1.8;
    fill: none;
}
@media (max-width: 700px) {
    .help-center__doc-grid {
        grid-template-columns: 1fr;
    }
}

/* â”€â”€ Search results â”€â”€ */
.help-center__results-count {
    font-size: 0.85rem;
    color: #6b7280;
    margin-bottom: 1rem;
}
.help-center__search-results {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.help-center__result-card {
    display: block;
    padding: 1rem 1.25rem;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    text-decoration: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.help-center__result-card:hover {
    border-color: #93c5fd;
    box-shadow: 0 2px 8px rgba(59,130,246,0.08);
}
.help-center__result-title {
    font-size: 0.9rem;
    font-weight: 600;
    color: #111827;
    margin: 0 0 4px;
}
.help-center__result-snippet {
    font-size: 0.8rem;
    color: #6b7280;
    margin: 0 0 8px;
    line-height: 1.5;
}
.help-center__result-meta {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.72rem;
    color: #9ca3af;
}
.help-center__result-meta svg {
    stroke: currentColor;
    stroke-width: 1.8;
    fill: none;
}

/* â”€â”€ Empty state â”€â”€ */
.help-center__empty {
    text-align: center;
    padding: 3rem 1rem;
    color: #9ca3af;
}
.help-center__empty svg {
    stroke: #d1d5db;
    stroke-width: 1.5;
    fill: none;
    margin-bottom: 0.75rem;
}
.help-center__empty h3 {
    font-size: 1rem;
    font-weight: 600;
    color: #374151;
    margin-bottom: 0.25rem;
}
.help-center__empty p {
    font-size: 0.85rem;
    margin: 0;
}

/* â”€â”€ Responsive â”€â”€ */
@media (max-width: 767.98px) {
    .help-center__grid {
        grid-template-columns: 1fr;
    }
    .help-center__collection-layout {
        grid-template-columns: 1fr;
    }
    .help-center__sidebar {
        position: static;
        display: flex;
        gap: 6px;
        overflow-x: auto;
        padding-bottom: 8px;
    }
    .help-center__sidebar-title {
        display: none;
    }
    .help-center__sidebar-hr {
        display: none;
    }
    .help-center__sidebar-link {
        white-space: nowrap;
        border: 1px solid #e5e7eb;
        border-radius: 20px;
        padding: 6px 12px;
        font-size: 0.75rem;
    }
    .help-center__sidebar-link--active {
        border-color: #c7d2fe;
    }
    .help-center__hero {
        padding: 1.5rem 0.5rem 1rem;
    }
    .help-center__title {
        font-size: 1.35rem;
    }
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   HUB MODE â€” Modo full-editor (owners + products)
   Cuando body.hub-mode esta activo (owners-hub-mode o products-hub-mode),
   el admin sidepanel (#app-sidepanel) se oculta en desktop y se reemplaza
   por .hub-sidepanel que ocupa exactamente el mismo slot.
   En mobile/tablet se mantiene el admin (drawer accesible por hamburguesa)
   y el hub usa una pillbar horizontal scrollable.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* Desktop: ocultamos admin y ponemos hub en su lugar.
   Breakpoint bajado de 1200 â†’ 992 (lg) para que laptops chicas (1280Ã—800
   y MacBook 13") entren en modo desktop. Reglas scopeadas a .hub-mode
   para no afectar el layout global del admin en otras paginas. */
@media (min-width: 992px) {
    body.hub-mode .app-sidepanel {
        display: none !important;
    }

    body.hub-mode .hub-sidepanel {
        position: fixed;
        top: 0.75rem;
        left: 0.75rem;
        width: var(--sidebar-width);
        height: calc(100vh - 1.5rem);
        background: #fff;
        border-radius: 12px;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06),
                    0 8px 24px rgba(0, 0, 0, 0.07);
        overflow: hidden;
        z-index: 1030;
    }

    body.hub-mode .hub-sidepanel-mobile {
        display: none;
    }

    /* Header global: dejar slot para el hub-sidepanel en 992-1199
       (en >=1200 ya lo hace la regla global del admin).
       Gap canonico sidebar->topbar = 12px (var(--header-gap)):
       sidebar-right (262px) a topbar-inner-left (274px) = 12px. */
    body.hub-mode .app-header {
        padding: var(--header-gap) var(--header-gap) 0 calc(var(--sidebar-width) + var(--header-gap) * 2) !important;
        background: transparent !important;
        border-bottom: 0 !important;
    }

    body.hub-mode .app-header-inner {
        margin-left: 0 !important;
        border-radius: 12px;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06),
                    0 8px 24px rgba(0, 0, 0, 0.07);
    }

    body.hub-mode .app-wrapper {
        padding-top: var(--header-gap);
        /* Offset del main content para dejar slot al hub-sidepanel fijo.
           Gap sidebar->card = 6px en hub-mode (compacto).
           wrapper arranca pegado al sidebar (margin-left = sidebar-width + header-gap),
           y el padding-left intrinseco de .app-content se override a 6px
           mediante --content-padding-x abajo. */
        margin-left: calc(var(--sidebar-width) + var(--header-gap));
    }

    /* Override del padding horizontal del .app-content solo en hub-mode,
       para lograr gap compacto de 6px entre sidebar y borde izquierdo de las cards. */
    body.hub-mode .app-content {
        --content-padding-x: 6px;
    }

    /* Hamburguesa del admin no tiene sentido en hub-mode desktop: el admin
       sidepanel esta oculto y el hub ya tiene su propio sidebar.
       El template usa d-xl-none (oculto >=1200), pero bajamos el breakpoint
       del hub a 992 -> entre 992-1199 quedaba visible sin funcion. */
    body.hub-mode #sidepanel-toggler {
        display: none !important;
    }
}

/* Hub mode: spacing vertical compacto entre cards (6px en TODOS los viewports).
   Antes vivian dentro del @media (min-width: 992px), pero el spacing entre cards
   es agnostico al breakpoint en hub-mode, asi que ahora aplica tambien en
   mobile (<576px) y tablet (576-991px). default settings-section.mb-3 = 12px,
   hub = 6px (0.375rem). */
body.hub-mode .settings-section.mb-3,
body.hub-mode .settings-section .app-card-settings.mb-3.card-spaced {
    margin-bottom: 0.375rem !important;
}
/* Wrapper mb-3 alrededor de los payment cards en step-5 tambien a 6px */
body.hub-mode .mb-3:has(> .payment-provider-card) {
    margin-bottom: 0.375rem !important;
}
/* Orphan card (header de cada step): por default tiene margin-bottom: 8px
   que se suma al 6px del wrapper .settings-section.mb-3 -> 14px en hub.
   Se neutraliza para que el gap despues del header sea igual al resto (6px). */
body.hub-mode .orphan-card {
    margin-bottom: 0 !important;
}

/* Tablet / mobile: hub desktop escondido, pillbar visible */
@media (max-width: 991.98px) {
    .hub-sidepanel {
        display: none;
    }
}
@media (min-width: 992px) {
    body.hub-mode .hub-pillbar {
        display: none;
    }
}

/* Estructura interior (siempre que .hub-sidepanel sea visible) */
.hub-sidepanel__inner {
    height: 100%;
    padding: 12px 10px;
    gap: 10px;
}

.hub-sidepanel__header {
    padding: 4px 8px 12px;
    border-bottom: 1px solid #f3f4f6;
    margin-bottom: 8px;
}

.hub-sidepanel__back {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 0;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--gray-600, #6b7280);
    text-decoration: none;
    transition: color 0.15s ease;
}

.hub-sidepanel__back:hover {
    color: var(--color-primary, #1b69d4);
}

.hub-sidepanel__back svg {
    stroke: currentColor;
    fill: none;
}

.hub-sidepanel__title {
    margin-top: 6px;
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--gray-900, #111827);
    line-height: 1.3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.hub-sidepanel__nav {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 2px;
    overflow-y: auto;
}

.hub-sidepanel__group-title {
    margin: 16px 0 4px;
    padding: 8px 12px 6px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #94a3b8;
    border-top: 1px solid #e5e7eb;
}

.hub-sidepanel__item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 10px 12px;
    background: transparent;
    border: 0;
    border-radius: 8px;
    color: var(--gray-700, #374151);
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: 500;
    text-align: left;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.hub-sidepanel__item:hover {
    background: var(--gray-50, #f9fafb);
    color: var(--color-primary, #1b69d4);
}

.hub-sidepanel__item:focus-visible {
    outline: 2px solid var(--color-primary, #1b69d4);
    outline-offset: 2px;
}

.hub-sidepanel__item--locked {
    opacity: 0.55;
    cursor: not-allowed;
}
.hub-sidepanel__item--locked:hover {
    background: transparent;
    color: var(--gray-700, #374151);
}
.hub-sidepanel__lock {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 12px;
    height: 12px;
    color: var(--gray-400, #9ca3af);
    flex: 0 0 12px;
}
.hub-sidepanel__lock svg {
    stroke: currentColor;
    fill: none;
    stroke-width: 1.8;
}

.hub-sidepanel__item.active {
    background: #ECF2FE;
    color: var(--color-primary, #1b69d4);
    font-weight: 600;
}

.hub-sidepanel__icon {
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
}

.hub-sidepanel__icon svg {
    stroke: currentColor;
    fill: none;
}

.hub-sidepanel__label {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.hub-sidepanel__dot {
    flex: 0 0 6px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: transparent;
    border: 1px solid #d1d5db;
}

.hub-sidepanel__dot.has-data {
    background: #9ca3af;
    border-color: #9ca3af;
}

.hub-sidepanel__item.active .hub-sidepanel__dot.has-data {
    background: var(--color-primary, #1b69d4);
    border-color: var(--color-primary, #1b69d4);
}

.hub-sidepanel__footer {
    padding: 10px 12px 4px;
    border-top: 1px solid #f3f4f6;
    margin-top: 8px;
    font-size: 0.7rem;
    color: var(--gray-500, #9ca3af);
    text-align: left;
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Mobile pillbar (<1200px) â€” reemplaza al <select> legacy.
   Patron: pills scrollables horizontales sticky-top, con
   iconos + dot 'has-data'. Mantiene paridad con sidebar desktop
   y acompana al usuario en el scroll vertical del form.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.hub-pillbar {
    position: sticky;
    top: var(--header-height, 56px);
    z-index: 10;
    margin: 0 -0.75rem 12px;
    padding: 10px 0 10px;
    background: #fff;
    border-bottom: 1px solid #f3f4f6;
}

.hub-pillbar__scroll {
    display: flex;
    flex-wrap: nowrap;
    gap: 8px;
    padding: 2px 0.75rem;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    touch-action: pan-x;
}

.hub-pillbar__scroll::-webkit-scrollbar {
    display: none;
}

.hub-pillbar__divider {
    flex: 0 0 auto;
    width: 1px;
    align-self: center;
    height: 24px;
    background: #e5e7eb;
    margin: 0 4px;
}

.hub-pillbar__pill {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 36px;
    padding: 8px 14px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 9999px;
    color: var(--gray-700, #374151);
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: 500;
    white-space: nowrap;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
    scroll-snap-align: center;
}

.hub-pillbar__pill:hover {
    border-color: #d1d5db;
    color: var(--gray-900, #111827);
}

.hub-pillbar__pill:focus-visible {
    outline: 2px solid var(--color-primary, #1b69d4);
    outline-offset: 2px;
}

.hub-pillbar__pill--locked {
    opacity: 0.55;
    cursor: not-allowed;
    background: #f9fafb;
}
.hub-pillbar__pill--locked:hover {
    border-color: #e5e7eb;
    color: var(--gray-700, #374151);
}
.hub-pillbar__pill--locked .hub-pillbar__icon {
    color: var(--gray-400, #9ca3af);
}

.hub-pillbar__pill.active {
    background: #ECF2FE;
    border-color: transparent;
    color: var(--color-primary, #1b69d4);
    font-weight: 600;
}

.hub-pillbar__icon {
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
}

.hub-pillbar__icon svg {
    stroke: currentColor;
    fill: none;
    stroke-width: 1.5;
}

.hub-pillbar__label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.hub-pillbar__dot {
    flex: 0 0 6px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #9ca3af;
    margin-left: 2px;
}

.hub-pillbar__pill.active .hub-pillbar__dot.has-data {
    background: var(--color-primary, #1b69d4);
}

/* Fade-right sutil: signal de "hay mas" cuando el content se scrollea horizontalmente */
.hub-pillbar::after {
    content: "";
    position: absolute;
    right: 0;
    top: 10px;
    bottom: 10px;
    width: 24px;
    background: linear-gradient(90deg, rgba(255,255,255,0) 0%, #fff 100%);
    pointer-events: none;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   bootstrap-datepicker â€” estilo Pala
   Overrides globales: tipografÃ­a consistente, radios redondeados,
   acento ECF2FE en hover y azul primario en selecciÃ³n.
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.datepicker.datepicker-dropdown {
    padding: 12px;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(17, 24, 39, 0.12), 0 2px 6px rgba(17, 24, 39, 0.06);
    background: #fff;
    font-family: inherit;
    color: var(--gray-800, #1f2937);
    min-width: 260px;
    z-index: 2000;
}
.datepicker.datepicker-dropdown:before,
.datepicker.datepicker-dropdown:after {
    display: none;
}
.datepicker.datepicker-dropdown table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 2px;
}
.datepicker.datepicker-dropdown thead tr:first-child th {
    padding: 6px 4px 10px;
    font-weight: 600;
    color: var(--gray-900, #111827);
}
.datepicker.datepicker-dropdown .datepicker-switch {
    font-size: 0.9rem;
    font-weight: 600;
    text-transform: capitalize;
}
.datepicker.datepicker-dropdown .prev,
.datepicker.datepicker-dropdown .next {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    color: var(--gray-600, #4b5563);
    font-size: 1rem;
    line-height: 28px;
    transition: background 0.12s, color 0.12s;
}
.datepicker.datepicker-dropdown .prev:hover,
.datepicker.datepicker-dropdown .next:hover,
.datepicker.datepicker-dropdown .datepicker-switch:hover {
    background: #ECF2FE;
    color: var(--color-primary);
}
.datepicker.datepicker-dropdown .dow {
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--gray-500, #6b7280);
    padding: 4px 0;
}
.datepicker.datepicker-dropdown td.day,
.datepicker.datepicker-dropdown td.month,
.datepicker.datepicker-dropdown td.year {
    width: 34px;
    height: 34px;
    padding: 0;
    border-radius: 50%;
    font-size: 0.85rem;
    color: var(--gray-800, #1f2937);
    border: 1px solid transparent;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.datepicker.datepicker-dropdown td.month,
.datepicker.datepicker-dropdown td.year {
    width: auto;
    height: 38px;
    padding: 0 10px;
    border-radius: 8px;
}
.datepicker.datepicker-dropdown td.old,
.datepicker.datepicker-dropdown td.new {
    color: var(--gray-300, #d1d5db);
}
.datepicker.datepicker-dropdown td.day:hover,
.datepicker.datepicker-dropdown td.month:hover,
.datepicker.datepicker-dropdown td.year:hover,
.datepicker.datepicker-dropdown td.focused {
    background: #ECF2FE;
    color: var(--color-primary);
}
.datepicker.datepicker-dropdown td.today,
.datepicker.datepicker-dropdown td.today:hover,
.datepicker.datepicker-dropdown td.today.disabled,
.datepicker.datepicker-dropdown td.today.disabled:hover {
    /* !important + background-color/image explicitos para neutralizar el
       amarillo + gradient del bootstrap-datepicker.min.css default (CDN
       lo carga DESPUES de custom.css en js.blade.php, y aunque la
       specificity de Pala es mayor, el background-image lineal del
       default sobrevivia en algunos contextos â€” visible en el modal
       Cierre donde el .today no esta acompanado de .active). */
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    color: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
    font-weight: 600;
}
.datepicker.datepicker-dropdown td.active,
.datepicker.datepicker-dropdown td.active:hover,
.datepicker.datepicker-dropdown td.active.today,
.datepicker.datepicker-dropdown td.active.today:hover,
.datepicker.datepicker-dropdown td.active.focused,
.datepicker.datepicker-dropdown td.active.disabled,
.datepicker.datepicker-dropdown td.active.disabled:hover {
    background: var(--color-primary) !important;
    background-color: var(--color-primary) !important;
    background-image: none !important;
    color: #fff !important;
    border-color: var(--color-primary) !important;
    text-shadow: none;
    box-shadow: 0 2px 6px rgba(60, 118, 242, 0.25);
}
.datepicker.datepicker-dropdown td.disabled,
.datepicker.datepicker-dropdown td.disabled:hover {
    background: transparent;
    color: var(--gray-300, #d1d5db);
    cursor: not-allowed;
}
.datepicker.datepicker-dropdown tfoot tr th {
    padding: 4px 0;
    border-top: 1px solid var(--gray-100, #f3f4f6);
}
.datepicker.datepicker-dropdown tfoot tr:first-child th {
    border-top: 1px solid var(--gray-200, #e5e7eb);
    padding-top: 10px;
    margin-top: 4px;
}
.datepicker.datepicker-dropdown tfoot .today,
.datepicker.datepicker-dropdown tfoot .clear {
    display: block;
    padding: 8px 14px;
    margin: 2px auto;
    border-radius: 8px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--color-primary);
    background: transparent;
    cursor: pointer;
    text-shadow: none;
    transition: background 0.12s, color 0.12s;
}
.datepicker.datepicker-dropdown tfoot .today:hover,
.datepicker.datepicker-dropdown tfoot .clear:hover {
    background: #ECF2FE;
    color: var(--color-primary);
}
.datepicker.datepicker-dropdown tfoot .clear {
    color: var(--gray-600, #4b5563);
}
.datepicker.datepicker-dropdown tfoot .clear:hover {
    background: var(--gray-100, #f3f4f6);
    color: var(--gray-800, #1f2937);
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   HUB MODE â€” Badge de error en items del sidepanel y pillbar
   Dot rojo (#EF4444) que marca steps con campos invalidos tras
   runFullValidation(). Aplica en body.hub-mode (owners y products).
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.hub-sidepanel__item--has-error {
    position: relative;
}
.hub-sidepanel__item--has-error::after {
    content: '';
    position: absolute;
    top: 10px;
    right: 12px;
    width: 8px;
    height: 8px;
    background: #EF4444;
    border-radius: 50%;
    border: 2px solid #fff;
    z-index: 3;
}

.hub-pillbar__pill--has-error {
    position: relative;
}
.hub-pillbar__pill--has-error::after {
    content: '';
    position: absolute;
    top: -2px;
    right: -2px;
    width: 8px;
    height: 8px;
    background: #EF4444;
    border-radius: 50%;
    border: 2px solid #fff;
    z-index: 3;
}

/* ==========================================================================
   Hub ConfiguraciÃ³n general (/admin/settings)
   body.admin-settings-hub-mode hereda todo el layout de body.hub-mode
   (sidepanel fijo, pillbar mobile, offset del header/main). Aca van solo
   ajustes especificos: link-based nav (sin form-step-content) y empty state
   para rol creator.
   ========================================================================== */

/* Nav por links: los <a>.hub-sidepanel__item heredan color/underline del reset global.
   Forzamos el look-and-feel de tab igual que los <button> del hub de owners/products. */
body.admin-settings-hub-mode .hub-sidepanel__item,
body.admin-settings-hub-mode .hub-sidepanel__item:hover,
body.admin-settings-hub-mode .hub-sidepanel__item:focus {
    text-decoration: none;
}

/* El <span> activo no puede recibir click ni hover; neutralizamos el pointer. */
body.admin-settings-hub-mode span.hub-sidepanel__item.active {
    cursor: default;
}

/* F1.10 â€” Empty state para perfiles con 1 sola seccion visible (ej. creator). */
.hub-sidepanel__hint {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 12px;
    margin-top: 12px;
    background: var(--gray-50, #f9fafb);
    border: 1px solid var(--gray-200, #e5e7eb);
    border-radius: 8px;
    color: var(--gray-600, #4b5563);
    font-size: 0.75rem;
    line-height: 1.4;
}
.hub-sidepanel__hint svg {
    flex: 0 0 14px;
    margin-top: 1px;
    color: var(--gray-400, #9ca3af);
    stroke: currentColor;
    fill: none;
    stroke-width: 1.8;
}

/* El pillbar mobile del hub config no necesita scroll horizontal si hay solo 1
   tab visible (rol creator). Centramos el pill unico. */
body.admin-settings-hub-mode .hub-pillbar__scroll:has(> :only-child) {
    justify-content: center;
}

/* Spacing consistente entre cards dentro de cada tab del hub Configuracion.
   Los partials _index_content.blade.php (users/contracts/security) se reusan
   tanto en vistas legacy (donde piden mb-5 = 48px o settings-section.mb-1) como
   en el hub (donde el estandar es 6px). Aca forzamos el gap del hub sin tocar
   el partial para no romper las vistas legacy.

   Seguridad envuelve cada card en un .row.settings-section.mb-1, asi que el
   margin total seria mb-1(wrapper) + mb-1(card) = 8px. Neutralizamos el wrapper
   y dejamos que solo el margin-bottom de la card dicte el gap (6px). */
body.admin-settings-hub-mode .admin-settings-hub-tab .app-card.mb-1,
body.admin-settings-hub-mode .admin-settings-hub-tab .app-card.mb-2,
body.admin-settings-hub-mode .admin-settings-hub-tab .app-card.mb-3,
body.admin-settings-hub-mode .admin-settings-hub-tab .app-card.mb-4,
body.admin-settings-hub-mode .admin-settings-hub-tab .app-card.mb-5 {
    margin-bottom: 0.375rem !important;
}

/* Tabs del hub que envuelven su contenido en `.app-content` propio.
   Los partials `users/_index_content`, `contracts/_index_content`,
   `admin/security/_content` y `tab-shipping` se reusan tambien fuera del
   hub (vistas legacy standalone), donde `.app-content` aporta el padding
   estandar (32px+ vertical / 16px horizontal a >=992). Adentro del hub eso
   queda DOBLE: el `.app-content` outer (`.admin-settings-hub-content`) ya
   tiene su padding hub aplicado, y el inner suma encima desplazando la card
   hacia adentro y hacia abajo. Resultado visible: ancho menor + mas lejos
   de la pillbar comparado con `BiometrÃ­a` (que va directo al `.row` sin
   `.app-content`). Neutralizamos el padding del inner solo dentro del hub
   para alinear los 4 tabs con biometrics. */
body.admin-settings-hub-mode .admin-settings-hub-tab > .app-content {
    padding: 0;
}

/* Cards del hub 20px mas anchas que el wrapper.
   Margen horizontal negativo de 10px a cada lado = +20px de ancho total.
   Aplica solo a las cards dentro del hub Configuracion, no afecta otros
   lados del back. */
body.admin-settings-hub-mode .admin-settings-hub-tab .app-card {
    margin-left: -10px !important;
    margin-right: -10px !important;
}
body.admin-settings-hub-mode .admin-settings-hub-tab .settings-section.mb-1,
body.admin-settings-hub-mode .admin-settings-hub-tab .settings-section.mb-2,
body.admin-settings-hub-mode .admin-settings-hub-tab .settings-section.mb-3,
body.admin-settings-hub-mode .admin-settings-hub-tab .settings-section.mb-4,
body.admin-settings-hub-mode .admin-settings-hub-tab .settings-section.mb-5 {
    margin-bottom: 0 !important;
}

/* Placeholder para tabs del hub Configuracion que todavia no tienen contenido
   real (ej. Gestion de envios). Lo usan los partials tab-*.blade.php que son
   solo un marcador. */
.hub-placeholder {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 3rem 2rem;
    text-align: center;
    color: #4b5563;
    max-width: 640px;
    margin: 2rem auto;
}
.hub-placeholder__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: #eff6ff;
    color: #3b82f6;
    margin-bottom: 1rem;
}
.hub-placeholder__title {
    font-size: 1.25rem;
    font-weight: 600;
    color: #111827;
    margin-bottom: 0.5rem;
}
.hub-placeholder__text {
    font-size: 0.95rem;
    line-height: 1.5;
    margin: 0;
    color: #6b7280;
}

/* =========================================================================
   Home / checklist de onboarding "Configuremos tu negocio"
   Ver resources/views/home/ y HomeController.
   V1 = solo estructura visual. Sin rutas, sin progreso real.
   ========================================================================= */

.home-page {
    padding-top: 1.25rem;
}

/* Card blanca de fondo que envuelve H1 + checklist. Mismo patron que
   /admin/settings/users (app-card shadow-sm con padding interior).

   Margen horizontal negativo de 6px a cada lado = +12px de ancho total,
   mismo truco que usamos en el hub Configuracion. No afecta otras .app-card
   del back porque es selector propio (.home-card). */
.home-card {
    margin-left: -6px !important;
    margin-right: -6px !important;
}

.home-card__body {
    padding: 1.5rem;
}

/* =========================================================================
   Statistics white canvas
   Card blanca de fondo que envuelve el dashboard completo de /statistics.
   Mismo patron visual que .home-card. Vista usada por IndexController@index
   en rutas GET / y /statistics. Margen horizontal -6px = +12px de ancho,
   mismo truco que .home-card. Visual-only.
   ========================================================================= */

.stats-page {
    padding-top: 1.25rem;
}

.stats-card {
    margin-left: -6px !important;
    margin-right: -6px !important;
}

.stats-card__body {
    padding: 1.5rem;
}

/* =========================================================================
   Graficos tab â€” polish visual
   Overhaul de UX para que un admin pueda leer su tienda en 30s:
   - Titulos sentence-case legibles (no uppercase gris chico).
   - Contador de contexto bajo los filtros.
   - Estados loading/empty dentro del chart-container (canvas se oculta,
     no se destruye, para preservar el layout).
   Acotado a la vista /statistics. No afecta otros dashboards.
   ========================================================================= */

.dash-filters-footer {
    border-top: 1px solid #edf0f5;
    padding-top: 0.875rem;
}

.dash-filters-info {
    font-size: 0.875rem;
    color: #6b7280;
}

.dash-chart-header {
    margin-bottom: 1rem;
}

.dash-chart-title {
    font-size: 1rem;
    font-weight: 600;
    color: #1f2538;
    margin: 0 0 0.25rem;
    text-transform: none;
    letter-spacing: 0;
}

.dash-chart-subtitle {
    font-size: 0.8125rem;
    color: #6b7280;
    margin: 0;
}

.chart-container > .chart-loading,
.chart-container > .chart-empty {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 1rem;
    text-align: center;
}

.chart-empty-icon {
    width: 40px;
    height: 40px;
    opacity: 0.5;
    margin-bottom: 0.5rem;
}

.chart-empty-title {
    font-size: 0.9375rem;
    font-weight: 600;
    color: #1f2538;
    margin: 0;
}

.chart-empty-sub {
    font-size: 0.8125rem;
    color: #6b7280;
    margin: 0;
    max-width: 40ch;
}

/* =========================================================================
   Daterangepicker â€” alinear botones al estilo Pala
   El plugin (daterangepicker.js) inyecta un .drp-buttons con botones default
   de Bootstrap (btn-primary/btn-default, esquinas cuadradas). Los pisamos
   para que el boton "Aplicar" sea pill azul con letra blanca (mismo lenguaje
   que "+ Nuevo proyecto" / "Aplicar filtros") y el "Limpiar" sea pill
   outline, manteniendo coherencia visual en toda la plataforma.
   ========================================================================= */

.daterangepicker .drp-buttons {
    padding: 0.75rem 0.75rem 0.85rem;
}

.daterangepicker .drp-buttons .btn {
    border-radius: 9999px !important;
    padding: 0.35rem 1rem;
    font-size: 0.8125rem;
    font-weight: 500;
    line-height: 1.25;
}

.daterangepicker .drp-buttons .btn.applyBtn {
    background-color: var(--color-primary, #2563eb) !important;
    border-color: var(--color-primary, #2563eb) !important;
    color: #ffffff !important;
}

.daterangepicker .drp-buttons .btn.applyBtn:hover,
.daterangepicker .drp-buttons .btn.applyBtn:focus {
    filter: brightness(0.92);
    color: #ffffff !important;
}

.daterangepicker .drp-buttons .btn.cancelBtn {
    background-color: #ffffff !important;
    border: 1px solid #d1d5db !important;
    color: #4b5563 !important;
}

.daterangepicker .drp-buttons .btn.cancelBtn:hover,
.daterangepicker .drp-buttons .btn.cancelBtn:focus {
    background-color: #f9fafb !important;
    color: #1f2538 !important;
}

/* Rango intermedio: azul Pala muy suave */
.daterangepicker td.in-range {
    background-color: var(--color-primary-light, #dbeafe) !important;
    color: #1f2538 !important;
}

/* Dias seleccionados (start/end): gama del azul Pala, mas claro que el default.
   Especificidad extra (start-date / end-date) para que gane sobre in-range,
   ya que el end-date recibe ambas clases (active + in-range) desde el plugin. */
.daterangepicker td.active,
.daterangepicker td.active:hover,
.daterangepicker td.active.start-date,
.daterangepicker td.active.end-date,
.daterangepicker td.active.start-date.in-range,
.daterangepicker td.active.end-date.in-range {
    background-color: color-mix(in srgb, var(--color-primary) 55%, #ffffff) !important;
    color: #ffffff !important;
}

/* Hover en celdas disponibles: azul Pala muy suave */
.daterangepicker td.available:hover {
    background-color: color-mix(in srgb, var(--color-primary) 12%, #ffffff) !important;
    color: #1f2538 !important;
}

.home-welcome-title {
    font-size: 1.375rem;
    font-weight: 600;
    color: #1f2538;
    margin: 0 0 1.25rem;
}

.home-welcome-name {
    font-weight: 600;
    color: #1f2538;
}

/* Wrapper neutro del checklist (ya vive dentro de home-card, no es otra
   card). Sin background ni borde para evitar el efecto "card dentro de
   card".

   Ancho del checklist entero = 9/12 (75%) del contenedor. Ponerlo aca (en
   vez de solo en .home-setup-items) evita que la progress bar quede
   huerfana flotando en el vacio cuando los items estan mas angostos. */
.home-setup {
    background: transparent;
    border: 0;
    padding: 0;
    width: 75%;
    max-width: 75%;
}

@media (max-width: 991.98px) {
    .home-setup {
        width: 100%;
        max-width: 100%;
    }
}

.home-setup-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 1.25rem;
}

.home-setup-title {
    font-size: 1rem;
    font-weight: 600;
    color: #1f2538;
    margin: 0;
}

.home-setup-progress {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 240px;
}

.home-setup-progress__count {
    font-size: 0.8125rem;
    color: #6b7280;
    white-space: nowrap;
}

.home-setup-progress__count strong {
    color: #1f2538;
    font-weight: 600;
}

.home-setup-progress__bar {
    flex: 1;
    height: 6px;
    background: #e5e7eb;
    border-radius: 999px;
    overflow: hidden;
    min-width: 120px;
}

.home-setup-progress__bar-fill {
    height: 100%;
    background: #3b82f6;
    border-radius: 999px;
    transition: width 240ms ease;
}

.home-setup-blocks {
    display: flex;
    flex-direction: column;
    gap: 1.125rem;
}

.home-setup-block-title {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #8b8fa3;
    margin: 0 0 0.5rem;
    padding-left: 0.25rem;
}

.home-setup-items {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* ---- Item del accordion ---- */
.home-setup-item {
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #ffffff;
    transition: border-color 120ms ease, box-shadow 120ms ease;
}

.home-setup-item[open] {
    border-color: #cbd5e1;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
}

.home-setup-item__summary {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    padding: 0.75rem 1rem;
    cursor: pointer;
    list-style: none;
    user-select: none;
}

/* Oculta el triangulo default del <details> en todos los browsers. */
.home-setup-item__summary::-webkit-details-marker { display: none; }
.home-setup-item__summary::marker { content: ''; }

.home-setup-item__icon-circle {
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #eff6ff;
    color: #3b82f6;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.home-setup-item__icon-circle svg {
    width: 18px;
    height: 18px;
}

.home-setup-item__icon {
    color: currentColor;
}

.home-setup-item__title {
    flex: 1;
    font-size: 0.9375rem;
    font-weight: 500;
    color: #1f2538;
}

.home-setup-item__chevron {
    color: #8b8fa3;
    transition: transform 200ms ease;
    flex-shrink: 0;
}

.home-setup-item[open] .home-setup-item__chevron {
    transform: rotate(180deg);
}

/* ---- Body (expandido) ---- */
.home-setup-item__body {
    padding: 0 1rem 0.875rem 3.75rem;
    /* 3.75rem = 1rem (padding-left summary) + 34px (icon) + 0.875rem (gap) */
}

.home-setup-item__description {
    font-size: 0.875rem;
    line-height: 1.5;
    color: #4b5563;
    margin: 0 0 0.75rem;
}

.home-setup-item__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.home-setup-item__cta {
    padding: 0.4375rem 1.125rem;
    border-radius: 999px;
    font-size: 0.875rem;
    font-weight: 500;
}

/* ---- Badge "Completado" (aparece solo en items completos) ---- */
.home-setup-item__badge {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.3125rem;
    padding: 0.1875rem 0.625rem 0.1875rem 0.5rem;
    background: #ecfdf5;
    color: #047857;
    border: 1px solid #a7f3d0;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0.01em;
    white-space: nowrap;
}

.home-setup-item__badge svg {
    color: #10b981;
}

/* ---- Estado completado ----
   El icono se mantiene igual que en pending (mismo color, mismo estilo).
   El unico indicador visual es el badge "Completado" a la derecha + el
   titulo en gris mas claro. */
.home-setup-item--completed .home-setup-item__title {
    color: #6b7280;
    font-weight: 400;
}

/* En items completados el chevron es mas sutil (la accion ya fue hecha,
   expandir es secundario). */
.home-setup-item--completed .home-setup-item__chevron {
    color: #cbd5e1;
}

/* ---- Responsive ---- */
@media (max-width: 768px) {
    .home-setup-card {
        padding: 1.25rem 1rem;
    }

    .home-setup-header {
        flex-direction: column;
        align-items: stretch;
        gap: 0.875rem;
    }

    .home-setup-progress {
        min-width: 0;
    }

    .home-setup-item__body {
        padding-left: 1rem;
    }

    .home-welcome-title {
        font-size: 1.25rem;
    }
}


/* â”€â”€ Form help icon â€” tooltip discreto al lado del label del campo â”€â”€â”€
   Se usa en step-leasing para explicar campos con terminologia tecnica.
   Se dispara el tooltip nativo via `title=""` y tambien con Bootstrap
   si `data-bs-toggle="tooltip"` esta activo. */
.form-help-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 14px;
    height: 14px;
    margin-left: 4px;
    border-radius: 50%;
    background: #e5e7eb;
    color: #6b7280;
    font-size: 9px;
    font-weight: 700;
    font-style: italic;
    font-family: Georgia, serif;
    line-height: 1;
    cursor: help;
    vertical-align: middle;
    user-select: none;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.form-help-icon:hover {
    background: #d1d5db;
    color: #374151;
}

/* Nota: la card informativa de leasing se reemplazo por un bm-toggle-link + bm-tip
   en la card "Activacion del leasing" (ver step-leasing.blade.php). Reutiliza los
   estilos existentes de bm-tip / bm-tip--danger. */

/* â”€â”€ VOC type radios: toggle con radios inline compactos arriba del input.
   Dimensionado para caber comodo en col-lg-3 (~220px utiles). */
.voc-type-radios {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
}
.voc-type-radios .form-check-inline {
    margin-right: 0;
    padding-left: 1.35em;
}
.voc-type-radios .form-check-label {
    font-size: 0.8rem;
    color: #374151;
    cursor: pointer;
}

/* â”€â”€ Audit trail pill (admin-only).
   Boton compacto al lado del titulo del modulo (cesiones / leasing).
   Abre el modal con el historial append-only de cambios.
   C1a: ISO 27001 A.8.15 / A.8.34. */
.audit-trail-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border: 1px solid #cbd5e1;
    background: #f1f5f9;
    color: #475569;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 500;
    line-height: 1.2;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.audit-trail-pill:hover,
.audit-trail-pill:focus-visible {
    background: #e0e7ff;
    color: #3730a3;
    border-color: #a5b4fc;
    outline: none;
}
.audit-trail-pill svg {
    flex-shrink: 0;
    color: currentColor;
    stroke: currentColor;
}

/* â”€â”€ Audit trail modal: timeline de cambios. */
.audit-timeline {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.audit-entry {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 12px 14px;
    background: #fafafa;
}
.audit-entry__header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 8px;
    padding-bottom: 8px;
    border-bottom: 1px dashed #e5e7eb;
}
.audit-entry__who {
    display: inline-flex;
    align-items: baseline;
    gap: 8px;
}
.audit-entry__name {
    font-weight: 600;
    color: #111827;
    font-size: 13px;
}
.audit-entry__role {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6366f1;
    background: #eef2ff;
    padding: 1px 6px;
    border-radius: 4px;
    font-weight: 600;
}
.audit-entry__when {
    font-size: 11px;
    color: #6b7280;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.audit-changes-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.audit-changes-table thead th {
    text-align: left;
    color: #6b7280;
    font-weight: 600;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 4px 8px;
    border-bottom: 1px solid #e5e7eb;
}
.audit-changes-table tbody td {
    padding: 6px 8px;
    border-bottom: 1px solid #f3f4f6;
    vertical-align: top;
    word-break: break-word;
}
.audit-changes-table tbody tr:last-child td {
    border-bottom: none;
}
.audit-changes-table code {
    font-size: 11px;
    background: #f3f4f6;
    color: #374151;
    padding: 1px 5px;
    border-radius: 3px;
}
.audit-changes-table .audit-before {
    color: #b91c1c;
    background: #fef2f2;
}
.audit-changes-table .audit-after {
    color: #047857;
    background: #ecfdf5;
}
.fs-xxs { font-size: 10px; }

/* â”€â”€ Banner colapsable de informacion (moneda + aplicabilidad).
   Cerrado por default, expande al click del summary (button).
   Mantiene los colores azul claro del banner original. */
.info-collapsible {
    background: #EFF6FF;
    border: 1px solid #BEDBFF;
    border-radius: 8px;
    overflow: hidden;
}
.info-collapsible__summary {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    width: 100%;
    cursor: pointer;
    color: #1E3A8A;
    font-size: 13px;
    font-weight: 600;
    background: transparent;
    border: none;
    text-align: left;
    user-select: none;
    transition: background-color 0.15s ease;
}
.info-collapsible__summary:hover {
    background: color-mix(in srgb, #BEDBFF 35%, #EFF6FF);
}
.info-collapsible__summary:focus-visible {
    outline: 2px solid #1E40AF;
    outline-offset: -2px;
}
.info-collapsible__icon {
    flex-shrink: 0;
    color: #1E40AF;
}
.info-collapsible__label {
    flex: 1;
}
.info-collapsible__chevron {
    flex-shrink: 0;
    color: #1E40AF;
    transition: transform 0.2s ease;
}
.info-collapsible.is-open .info-collapsible__chevron {
    transform: rotate(180deg);
}
.info-collapsible__body {
    display: none;
    padding: 0 14px 12px 44px;
    color: #1E3A8A;
    font-weight: 400;
}
.info-collapsible.is-open .info-collapsible__body {
    display: block;
}
.info-collapsible__body strong { color: #1E3A8A; }

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Attribute Editor â€” direccion "Editorial / Linear-style" (2026)
   Reemplaza al patron Material (overline uppercase + tabla con borders +
   inputs siempre con chrome) por un layout typography-first con inputs
   ghost, hover-revealed actions, separators sutiles y CTA dashed
   full-width. Scoped al componente para no impactar otras vistas que
   siguen usando feature-group-label (Edificio / Casa Modular / Loteo).
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

/* Header â€” title sentence-case + subtitle gris + divider sutil */
.attribute-editor__header {
    margin: 0 0 0.5rem 0;
    padding-bottom: 0.875rem;
    border-bottom: 1px solid #f1f3f5;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}
.attribute-editor__header-text {
    flex: 1 1 auto;
    min-width: 0;
}
.attribute-editor__save-template {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.125rem;
    padding: 0.4rem 0.875rem;
    background: #fff;
    border: 1px solid var(--color-primary, #3C76F2);
    border-radius: 999px;
    color: var(--color-primary, #3C76F2);
    font-size: 0.8125rem;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, opacity 0.15s ease;
}
.attribute-editor__save-template:hover {
    background: rgba(60, 118, 242, 0.06);
}
.attribute-editor__save-template:focus-visible {
    outline: 2px solid var(--color-primary, #3C76F2);
    outline-offset: 2px;
}
.attribute-editor__save-template:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.attribute-editor__save-template i {
    font-size: 0.95rem;
    line-height: 1;
}
.attribute-editor__title {
    font-size: 1.0625rem;
    font-weight: 600;
    color: #1a202c;
    line-height: 1.4;
    margin: 0 0 0.25rem 0;
    text-transform: none;
    letter-spacing: 0;
}
.attribute-editor__subtitle {
    font-size: 0.8125rem;
    color: #6b7280;
    line-height: 1.55;
    margin: 0;
}
.attribute-editor__subtitle b {
    color: #374151;
    font-weight: 600;
}

/* Tabla â€” flat (sin chrome de Bootstrap, solo separators entre filas) */
.attribute-editor__table {
    width: 100%;
    margin: 0;
    border-collapse: separate;
    border-spacing: 0;
    background: transparent;
}
.attribute-editor__table > tbody > tr > td {
    border: 0;
    padding: 0.5rem 0.5rem;
    background: transparent;
    vertical-align: middle;
}
.attribute-editor__table > tbody > tr > td:first-child {
    padding-left: 0;
}
.attribute-editor__table > tbody > tr > td:last-child {
    padding-right: 0;
}

/* Headers de columna â€” uppercase pequeÃ±o y muted, estilo form-table tipo Stripe.
   Se ocultan via [hidden] cuando no hay filas (lo maneja toggleEmptyState). */
.attribute-editor__thead > tr > th {
    border: 0;
    padding: 0 0.5rem 0.5rem;
    background: transparent;
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    text-align: left;
    white-space: nowrap;
}
.attribute-editor__thead > tr > th:first-child {
    padding-left: 0;
}
.attribute-editor__thead > tr > th:last-child {
    padding-right: 0;
}
.attribute-editor__thead[hidden] {
    display: none;
}

/* Filas â€” separator sutil + hover bg discreto + radius en hover */
.attribute-editor__row {
    border-bottom: 1px solid #f1f3f5;
    transition: background-color 0.15s ease;
}
.attribute-editor__row:last-child {
    border-bottom: 0;
}
.attribute-editor__row:hover,
.attribute-editor__row:focus-within {
    background: #fafbfc;
}

/* Drag handle â€” oculto hasta hover/focus de la fila (Linear/Notion-style) */
.attribute-editor__drag {
    opacity: 0;
    transition: opacity 0.15s ease, color 0.15s ease;
    color: #cbd5e0;
}
.attribute-editor__row:hover .attribute-editor__drag,
.attribute-editor__row:focus-within .attribute-editor__drag,
.attribute-editor__row--chosen .attribute-editor__drag,
.attribute-editor__row--ghost .attribute-editor__drag {
    opacity: 1;
}
.attribute-editor__drag:hover {
    color: #6c757d;
}

/* Delete (action-btn is-danger) â€” oculto hasta hover/focus de la fila */
.attribute-editor__row .attribute-editor__remove {
    opacity: 0;
    transition: opacity 0.15s ease;
}
.attribute-editor__row:hover .attribute-editor__remove,
.attribute-editor__row:focus-within .attribute-editor__remove {
    opacity: 1;
}

/* Inputs ghost â€” sin border hasta hover/focus.
   Sensacion "texto plano editable" (Notion/Linear). El hover muestra
   border claro como hint de "esto es editable", el focus pinta el
   border primary y un ring suave (no shadow exagerada). */
.attribute-editor .form-control,
.attribute-editor .form-select {
    border-color: transparent;
    background-color: transparent;
    box-shadow: none;
    transition: border-color 0.12s ease, background-color 0.12s ease, box-shadow 0.12s ease;
}
.attribute-editor .form-control:hover,
.attribute-editor .form-select:hover {
    border-color: #e5e7eb;
    background-color: #fff;
}
.attribute-editor .form-control:focus,
.attribute-editor .form-select:focus {
    border-color: var(--color-primary, #3C76F2);
    background-color: #fff;
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.12);
    outline: 0;
}

/* Icon trigger â€” mismo patron ghost (sutil hasta hover/focus) */
.attribute-editor .attribute-editor__icon-trigger {
    border-color: transparent;
    background-color: transparent;
}
.attribute-editor__row:hover .attribute-editor__icon-trigger,
.attribute-editor .attribute-editor__icon-trigger:hover,
.attribute-editor .attribute-editor__icon-trigger:focus-visible,
.attribute-editor .attribute-editor__icon-trigger[aria-expanded="true"] {
    border-color: #e5e7eb;
    background-color: #fff;
}
.attribute-editor .attribute-editor__icon-trigger:focus-visible,
.attribute-editor .attribute-editor__icon-trigger[aria-expanded="true"] {
    border-color: var(--color-primary, #3C76F2);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.12);
}

/* Add CTA â€” dashed full-width estilo Vercel/Linear "Add property" */
.attribute-editor__add {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    margin-top: 0.75rem;
    padding: 0.75rem 1rem;
    background: transparent;
    border: 1px dashed #d1d5db;
    border-radius: 8px;
    color: #6b7280;
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}
.attribute-editor__add svg {
    flex-shrink: 0;
}
.attribute-editor__add:hover {
    border-color: var(--color-primary, #3C76F2);
    background: rgba(60, 118, 242, 0.04);
    color: var(--color-primary, #3C76F2);
}
.attribute-editor__add:focus-visible {
    outline: 0;
    border-color: var(--color-primary, #3C76F2);
    border-style: solid;
    box-shadow: 0 0 0 3px rgba(60, 118, 242, 0.15);
    color: var(--color-primary, #3C76F2);
}

/* Footer split â€” dos botones lado a lado cuando templatesEnabled es true.
   Si no hay templates (ownerId vacio), el __add queda solo y mantiene
   el ancho 100% original via `:not(.has-templates)`. */
.attribute-editor__footer {
    margin-top: 0.75rem;
}
.attribute-editor__footer.has-templates {
    display: flex;
    gap: 0.625rem;
}
.attribute-editor__footer.has-templates .attribute-editor__add {
    flex: 1 1 50%;
    margin-top: 0;
}
.attribute-editor__template-wrap {
    flex: 1 1 50%;
    position: relative;
}
.attribute-editor__add--template {
    margin-top: 0;
    width: 100%;
}
.attribute-editor__add-caret {
    margin-left: 0.25rem;
    font-size: 0.75rem;
    transition: transform 0.15s ease;
}
.attribute-editor__add--template[aria-expanded="true"] .attribute-editor__add-caret {
    transform: rotate(180deg);
}
.attribute-editor__template-menu {
    position: absolute;
    bottom: calc(100% + 6px);
    right: 0;
    left: 0;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.12);
    max-height: 320px;
    overflow-y: auto;
    z-index: 1080;
    padding: 0.375rem;
}
.attribute-editor__template-menu[hidden] {
    display: none;
}
.attribute-editor__template-item {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    width: 100%;
    padding: 0.5rem 0.625rem;
    background: transparent;
    border: 0;
    border-radius: 6px;
    color: #1f2937;
    font-size: 0.875rem;
    text-align: left;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.attribute-editor__template-item:hover,
.attribute-editor__template-item:focus-visible {
    background: rgba(60, 118, 242, 0.07);
    outline: 0;
}
.attribute-editor__template-item-name {
    flex: 1 1 auto;
    min-width: 0;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.attribute-editor__template-item-meta {
    flex-shrink: 0;
    font-size: 0.75rem;
    color: #6b7280;
}
.attribute-editor__template-item-actions {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin-left: 0.25rem;
}
.attribute-editor__template-item-action {
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 0;
    border-radius: 4px;
    color: #6b7280;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.attribute-editor__template-item-action:hover {
    background: #f3f4f6;
    color: #1f2937;
}
.attribute-editor__template-item-action.is-danger:hover {
    background: rgba(220, 38, 38, 0.08);
    color: #dc2626;
}
.attribute-editor__template-empty {
    padding: 0.875rem 0.625rem;
    font-size: 0.8125rem;
    color: #6b7280;
    text-align: center;
    line-height: 1.5;
}
.attribute-editor__template-divider {
    height: 1px;
    background: #f1f3f5;
    margin: 0.375rem 0;
}

/* Modal "Guardar como plantilla" â€” overlay + card centrada con form
   minimalista. Reusa el mismo z-index range que el icon picker para
   stack consistente; la animacion es la misma fade-in/scale del editor. */
.attribute-editor__template-modal {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1090;
    padding: 1rem;
    animation: attrTplFadeIn 0.18s ease;
}
.attribute-editor__template-modal[hidden] {
    display: none;
}
@keyframes attrTplFadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}
.attribute-editor__template-modal-card {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 20px 60px rgba(15, 23, 42, 0.25);
    width: 100%;
    max-width: 520px;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    animation: attrTplScaleIn 0.18s ease;
}
@keyframes attrTplScaleIn {
    from { transform: scale(0.96); opacity: 0; }
    to   { transform: scale(1); opacity: 1; }
}
.attribute-editor__template-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #f1f3f5;
}
.attribute-editor__template-modal-title {
    font-size: 1rem;
    font-weight: 600;
    color: #111827;
    margin: 0;
}
.attribute-editor__template-modal-close {
    background: transparent;
    border: 0;
    color: #6b7280;
    cursor: pointer;
    padding: 0.25rem;
    border-radius: 6px;
    display: inline-flex;
    align-items: center;
}
.attribute-editor__template-modal-close:hover {
    background: #f3f4f6;
    color: #111827;
}
.attribute-editor__template-modal-body {
    padding: 1rem 1.25rem;
    overflow-y: auto;
    flex: 1 1 auto;
}
.attribute-editor__template-modal-label {
    display: block;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #374151;
    margin-bottom: 0.375rem;
}
.attribute-editor__template-modal-input {
    width: 100%;
    padding: 0.5rem 0.75rem;
    font-size: 0.9375rem;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    background: #fff;
}
.attribute-editor__template-modal-input:focus-visible {
    outline: 2px solid var(--color-primary, #3C76F2);
    outline-offset: 1px;
    border-color: var(--color-primary, #3C76F2);
}
.attribute-editor__template-modal-hint {
    margin: 0.375rem 0 0 0;
    font-size: 0.75rem;
    color: #6b7280;
}
.attribute-editor__template-modal-error {
    margin: 0.5rem 0 0 0;
    font-size: 0.8125rem;
    color: #dc2626;
}
.attribute-editor__template-modal-error[hidden] {
    display: none;
}
.attribute-editor__template-preview {
    margin-top: 1rem;
    padding: 0.75rem;
    background: #f9fafb;
    border-radius: 8px;
    border: 1px solid #f1f3f5;
}
.attribute-editor__template-preview-title {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b7280;
    margin: 0 0 0.5rem 0;
}
.attribute-editor__template-preview-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}
.attribute-editor__template-preview-item {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: 0.8125rem;
    color: #374151;
}
.attribute-editor__template-preview-item i {
    flex-shrink: 0;
    width: 18px;
    color: #6b7280;
    margin-top: 2px;
}
.attribute-editor__template-preview-item-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1;
}
.attribute-editor__template-preview-item-label {
    font-weight: 500;
    color: #111827;
}
.attribute-editor__template-preview-item-value {
    color: #6b7280;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.attribute-editor__template-preview-item-loc {
    font-size: 0.6875rem;
    color: #9ca3af;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.attribute-editor__template-modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 0.875rem 1.25rem;
    border-top: 1px solid #f1f3f5;
    background: #fafbfc;
}

/* Empty state â€” visible cuando 0 filas. Onboarding didactico para
   producto recien creado o cuando se borraron todos los atributos. */
.attribute-editor__empty {
    text-align: center;
    padding: 2.25rem 1.5rem 1.5rem;
    color: #6b7280;
}
.attribute-editor__empty-icon {
    width: 40px;
    height: 40px;
    margin-bottom: 0.75rem;
    color: #cbd5e0;
}
.attribute-editor__empty-title {
    font-size: 0.9375rem;
    font-weight: 600;
    color: #374151;
    margin: 0 0 0.375rem 0;
}
.attribute-editor__empty-text {
    font-size: 0.8125rem;
    line-height: 1.55;
    margin: 0;
    color: #6b7280;
}

/* AI CTA â€” usa el patron `app-btn-secondary` del design system: fondo
   blanco, texto y borde en primary, radius pill, hover invertido.
   Solo agregamos lo especifico del contexto (gap interno, margen al
   empty state) y el sizing del sparkle icon. */
.attribute-editor__ai-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 1rem;
}
.attribute-editor__ai-cta-icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    color: currentColor;
}
.attribute-editor__ai-hint {
    font-size: 0.75rem;
    line-height: 1.5;
    color: #9ca3af;
    margin: 0.5rem 0 0 0;
}

/* En mobile, el hover desaparece â€” mostramos los handles siempre para
   que el usuario tactil pueda agarrarlos sin truco. */
@media (hover: none), (pointer: coarse) {
    .attribute-editor__drag,
    .attribute-editor__row .attribute-editor__remove {
        opacity: 1;
    }
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   AI Attribute Modal (.attr-ai-modal)
   Singleton dialog para generar atributos con IA. Patron visual
   alineado con .icon-picker-modal: backdrop + dialog centrado, bordes
   suaves, header/body/footer con divisores ligeros. Z-index alto para
   pisar al wizard de productos. Bloquea scroll del body via .attr-ai-modal-open.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
body.attr-ai-modal-open { overflow: hidden; }

.attr-ai-modal {
    position: fixed;
    inset: 0;
    z-index: 10010;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.attr-ai-modal[hidden] { display: none; }

.attr-ai-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(17, 24, 39, .55);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

.attr-ai-modal__dialog {
    position: relative;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .25);
    width: 100%;
    max-width: 520px;
    max-height: calc(100vh - 2rem);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.attr-ai-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid #f3f4f6;
}
.attr-ai-modal__title {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    font-size: 1rem;
    font-weight: 600;
    color: #111827;
    margin: 0;
}
.attr-ai-modal__title-icon {
    width: 18px;
    height: 18px;
    color: var(--color-primary, #3C76F2);
}
.attr-ai-modal__title-text {
    font-weight: 600;
}
.attr-ai-modal__close {
    background: transparent;
    border: 0;
    padding: 4px 8px;
    color: #6b7280;
    cursor: pointer;
    border-radius: 6px;
    line-height: 1;
}
.attr-ai-modal__close:hover { background: #f3f4f6; color: #111827; }
.attr-ai-modal__close:disabled { opacity: 0.5; cursor: not-allowed; }

.attr-ai-modal__body {
    padding: 1.25rem;
    overflow-y: auto;
}
.attr-ai-modal__label {
    display: block;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #374151;
    margin: 0 0 0.5rem 0;
}
.attr-ai-modal__textarea {
    width: 100%;
    min-height: 110px;
    padding: 0.625rem 0.75rem;
    font-size: 0.875rem;
    line-height: 1.5;
    color: #111827;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    resize: vertical;
    transition: border-color .15s ease, box-shadow .15s ease;
    font-family: inherit;
}
.attr-ai-modal__textarea:focus {
    outline: none;
    border-color: var(--color-primary, #3C76F2);
    box-shadow: 0 0 0 3px rgba(60, 118, 242, .12);
}
.attr-ai-modal__textarea[readonly] { background: #f9fafb; cursor: not-allowed; }

.attr-ai-modal__meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 0.5rem;
}
.attr-ai-modal__help {
    font-size: 0.75rem;
    color: #6b7280;
    margin: 0;
    line-height: 1.5;
}
.attr-ai-modal__help b { color: #374151; font-weight: 600; }
.attr-ai-modal__counter {
    font-size: 0.6875rem;
    color: #9ca3af;
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
}

.attr-ai-modal__error {
    margin-top: 0.875rem;
    padding: 0.625rem 0.75rem;
    background: #fef2f2;
    border: 1px solid #fee2e2;
    border-radius: 6px;
    color: #b91c1c;
    font-size: 0.8125rem;
    line-height: 1.5;
}

.attr-ai-modal__loading {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 0.875rem;
    font-size: 0.8125rem;
    color: #6b7280;
}
.attr-ai-modal__spinner {
    width: 14px;
    height: 14px;
    border: 2px solid #e5e7eb;
    border-top-color: var(--color-primary, #3C76F2);
    border-radius: 50%;
    animation: attr-ai-spin .7s linear infinite;
}
@keyframes attr-ai-spin {
    to { transform: rotate(360deg); }
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Modal AI â€” bloques de privacidad: consent (1ra vez) + warning PII
   permanente. Usan amarillo claro (#fffbeb / #fef3c7) para diferenciarse
   del estado de error (rojo) y del de loading (neutro). Aceptan que el
   usuario aprenda esto la primera vez y luego solo recordatorio breve.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* Consent block â€” informativo, no alarmista.
   Sin icono escudo, sin fondo de panel: una nota breve en el flow del
   modal. El CTA "Continuar" vive en el footer (mismo slot que "Generar 5
   atributos"), asi el footer es el unico punto de accion primaria. */
.attr-ai-modal__consent {
    padding: 0;
    margin-bottom: 0.5rem;
}
.attr-ai-modal__consent-title {
    font-size: 0.875rem;
    font-weight: 600;
    color: #374151;
    margin: 0 0 0.5rem 0;
}
.attr-ai-modal__consent-list {
    list-style: disc;
    padding-left: 1.25rem;
    margin: 0 0 0.75rem 0;
    font-size: 0.8125rem;
    color: #6b7280;
    line-height: 1.5;
}
.attr-ai-modal__consent-list li + li { margin-top: 0.25rem; }
.attr-ai-modal__consent-check {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 0.8125rem;
    color: #374151;
    cursor: pointer;
    line-height: 1.45;
}
.attr-ai-modal__consent-check input { margin-top: 3px; }

/* Recordatorio PII permanente arriba del textarea. Tono neutro, no warning:
   es info recurrente, no urgencia. Mismo tratamiento que el consent block. */
.attr-ai-modal__pii-warn {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0.5rem 0.75rem;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    margin: 0 0 0.75rem 0;
    font-size: 0.75rem;
    color: #4b5563;
    line-height: 1.4;
}
.attr-ai-modal__pii-warn svg {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
    color: #6b7280;
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Modal AI â€” preview de sugerencias antes de inyectar al wrapper.
   Aparece tras un submit exitoso. Cada item muestra icono + label â†’
   value. Permite mirar antes de aceptar y regenerar sin tocar la lista.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.attr-ai-modal__preview {
    margin-top: 0.5rem;
    padding: 0.875rem 1rem;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
}
.attr-ai-modal__preview-title {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #111827;
    margin: 0 0 0.5rem 0;
}
.attr-ai-modal__preview-list {
    list-style: none;
    padding: 0;
    margin: 0 0 0.5rem 0;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}
.attr-ai-modal__preview-item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.8125rem;
    color: #374151;
    line-height: 1.4;
}
.attr-ai-modal__preview-item i {
    color: var(--color-primary, #3C76F2);
    font-size: 0.875rem;
    flex-shrink: 0;
    width: 16px;
    text-align: center;
}
.attr-ai-modal__preview-label {
    font-weight: 600;
    color: #111827;
}
.attr-ai-modal__preview-sep {
    color: #9ca3af;
    flex-shrink: 0;
}
.attr-ai-modal__preview-value {
    color: #4b5563;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.attr-ai-modal__preview-hint {
    font-size: 0.6875rem;
    color: #6b7280;
    margin: 0.25rem 0 0 0;
    line-height: 1.4;
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Modal AI â€” footer: disclosure permanente del provider/modelo
   + acciones (Cancelar / Regenerar / Generar/Aceptar). El layout cambia
   en mobile a 2 filas para no apretar.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.attr-ai-modal__footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    padding: 0.875rem 1.25rem;
    border-top: 1px solid #f3f4f6;
    background: #fafbfc;
    flex-wrap: wrap;
}
.attr-ai-modal__footer-actions {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.attr-ai-modal__regenerate {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.attr-ai-modal__generate.is-loading {
    pointer-events: none;
    opacity: .8;
}

@media (max-width: 575.98px) {
    .attr-ai-modal { padding: 0; align-items: flex-end; }
    .attr-ai-modal__dialog {
        max-width: 100%;
        max-height: calc(100vh - env(safe-area-inset-top, 0px));
        border-radius: 12px 12px 0 0;
    }
    .attr-ai-modal__footer {
        flex-direction: column;
        align-items: stretch;
    }
    .attr-ai-modal__footer-actions {
        justify-content: flex-end;
        flex-wrap: wrap;
    }
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Attribute Editor â€” combobox custom (sugerencias de CategorÃ­a/Valor)
   Reemplaza al <datalist> nativo (que usa el dropdown del SO y no se
   puede estilizar). Hereda variables Bootstrap para mantener la
   estetica del resto de la app. Se usa adentro de la tabla de features.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.attr-combobox {
    position: relative;
}
.attr-combobox__menu {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    right: 0;
    z-index: 1050;
    max-height: 220px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    box-shadow: 0 4px 14px rgba(15, 23, 42, .08);
    padding: 0.25rem 0;
    margin: 0;
}
.attr-combobox__option {
    display: block;
    width: 100%;
    text-align: left;
    padding: 0.4rem 0.75rem;
    background: transparent;
    border: 0;
    color: #212529;
    font-size: 0.8125rem;
    line-height: 1.3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
    transition: background-color 0.12s ease;
}
.attr-combobox__option:hover,
.attr-combobox__option.is-active {
    background: #f1f3f5;
    color: #1E3A8A;
}
.attr-combobox__option:focus {
    outline: none;
    background: #f1f3f5;
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Attribute Editor â€” drag handle + estados de drag
   Feedback visual durante el reorder con SortableJS.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.attribute-editor__drag {
    cursor: grab;
    color: #adb5bd;
    transition: color 0.12s ease;
    user-select: none;
}
.attribute-editor__drag:hover {
    color: #6c757d;
}
.attribute-editor__drag:active,
.attribute-editor__row--chosen .attribute-editor__drag {
    cursor: grabbing;
    color: #1E3A8A;
}
.attribute-editor__row--ghost {
    opacity: 0.45;
    background: #f1f3f5;
}
.attribute-editor__row--chosen {
    background: #fff;
    box-shadow: 0 4px 14px rgba(15, 23, 42, .12);
}
.attribute-editor__row--drag {
    background: #fff;
    box-shadow: 0 6px 18px rgba(15, 23, 42, .16);
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Attribute Editor â€” trigger del icon picker
   Trigger compacto que reemplaza al input de texto. Se usa adentro
   de la celda "Ãcono" del attribute-editor (tabla de features).
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.attribute-editor__icon-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: auto;
    min-width: 64px;
    padding: 6px 10px;
    background: #fff;
    border: 1px solid #ced4da;
    border-radius: 6px;
    font-size: 0.85rem;
    color: #495057;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
    min-height: 32px;
}
.attribute-editor__icon-trigger:hover {
    border-color: #86b7fe;
}
.attribute-editor__icon-trigger:focus-visible {
    outline: 0;
    border-color: #86b7fe;
    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.15);
}
.attribute-editor__icon-trigger[aria-expanded="true"] {
    border-color: #0d6efd;
    box-shadow: 0 0 0 0.15rem rgba(13, 110, 253, 0.18);
}
.attribute-editor__icon-trigger .attribute-editor__icon-preview {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #6c757d;
    font-size: 1rem;
}
.attribute-editor__icon-trigger .attribute-editor__icon-label {
    display: none;
}
.attribute-editor__icon-trigger .attribute-editor__icon-caret {
    flex-shrink: 0;
    color: #adb5bd;
    font-size: 0.75rem;
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   Icon Picker Modal â€” singleton centrado en viewport.
   Renderizado como hijo de <body> para evitar clipping del
   overflow del .table-responsive del attribute-editor.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
body.icon-picker-modal-open { overflow: hidden; }

.icon-picker-modal {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}
.icon-picker-modal[hidden] { display: none; }

.icon-picker-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

.icon-picker-modal__dialog {
    position: relative;
    width: 100%;
    max-width: 600px;
    max-height: calc(100vh - 32px);
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 20px 60px rgba(15, 23, 42, 0.3);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.icon-picker-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid #e9ecef;
}
.icon-picker-modal__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 600;
    color: #212529;
}
.icon-picker-modal__close {
    background: transparent;
    border: 0;
    width: 32px;
    height: 32px;
    border-radius: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #6c757d;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.icon-picker-modal__close:hover { background: #f1f3f5; color: #212529; }

/* Container unificado que agrupa search + filtros como un solo bloque
   visualmente cohesivo. Border y border-radius una sola vez (afuera), las
   dos zonas se separan con un border-top sutil. */
.icon-picker-modal__searchbar {
    margin: 12px 20px 0 20px;
    border: 1px solid #dee2e6;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
    transition: border-color 0.15s ease;
}
.icon-picker-modal__searchbar:focus-within { border-color: #adb5bd; }

.icon-picker-modal__search {
    position: relative;
    padding: 0;
}
.icon-picker-modal__search-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: #adb5bd;
    pointer-events: none;
    font-size: 0.95rem;
}
.icon-picker-modal__search-input {
    width: 100%;
    padding: 10px 12px 10px 38px;
    border: 0;
    border-radius: 0;
    font-size: 0.9rem;
    background: transparent;
}
.icon-picker-modal__search-input:focus {
    outline: 0;
    box-shadow: none;
}

/* Filter bar con chips: cada filtro es una pildora con icono + label + valor +
   chevron. El <select> nativo va overlayed transparente para mantener la a11y
   y el picker nativo en mobile, mientras visualmente se ve un chip pulido.
   Patron habitual en barras de filtros de dashboards modernos. */
.icon-picker-modal__filterbar {
    display: flex;
    gap: 8px;
    padding: 8px 10px;
    flex-wrap: wrap;
    align-items: center;
    border-top: 1px solid #f1f3f5;
    background: #fafbfc;
}
.icon-picker-modal__chip {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    cursor: pointer;
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.2;
    color: #495057;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
    user-select: none;
    white-space: nowrap;
}
.icon-picker-modal__chip:hover {
    border-color: #adb5bd;
    background: #f8f9fa;
}
.icon-picker-modal__chip:focus-within {
    outline: 0;
    border-color: #86b7fe;
    box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.15);
}
.icon-picker-modal__chip-label {
    color: #6c757d;
    font-weight: 400;
}
.icon-picker-modal__chip-value {
    color: #212529;
    font-weight: 600;
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.icon-picker-modal__chip-caret {
    color: #6c757d;
    flex-shrink: 0;
    margin-left: 2px;
    display: block;
}
/* El <select> real cubre el chip entero pero invisible: capta el click,
   teclado y abre el picker nativo (esp. util en mobile). */
.icon-picker-modal__chip-select {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    border: 0;
    padding: 0;
    margin: 0;
    font: inherit;
    background: transparent;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}
/* Estado activo (filtro distinto al default): borde gris ligeramente mas
   marcado, sin azules. El azul se reserva para el icono seleccionado en la
   grilla; los chips compiten visualmente si tambien se ponen azules. */
.icon-picker-modal__chip.is-active {
    background: transparent;
    border-color: #adb5bd;
}

.icon-picker-modal__body {
    flex: 0 0 auto;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 12px 20px;
    /* Altura FIJA en desktop: el modal mantiene siempre el mismo tamaÃ±o desde
       que se abre, sin importar si la categoria seleccionada tiene 5 o 500
       iconos. Evita saltos visuales al cambiar de tab/search. ~4 filas
       visibles (4Ã—64 + 3Ã—6 = 274 + padding 24 â‰ˆ 304). En mobile esta regla
       se resetea para que el body fluya y llene el dialog full-screen. */
    height: 304px;
}

/* minmax(0,1fr) en lugar de 1fr: por defecto las columnas grid usan
   minmax(auto,1fr), y el "auto" no encoge mas alla del contenido. Con tiles
   que tienen white-space:nowrap eso fuerza scroll horizontal. minmax(0,1fr)
   permite que las columnas se compriman correctamente sin desbordar. */
.icon-picker-modal__grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 6px;
}
.icon-picker-modal__tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 10px 4px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 8px;
    cursor: pointer;
    transition: background-color 0.12s ease, border-color 0.12s ease, transform 0.12s ease;
    min-height: 64px;
}
.icon-picker-modal__tile:hover {
    background: #f8f9fa;
    border-color: #dee2e6;
}
.icon-picker-modal__tile:focus-visible {
    outline: 0;
    border-color: #86b7fe;
    box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.2);
}
.icon-picker-modal__tile i {
    font-size: 1.4rem;
    color: #495057;
}
.icon-picker-modal__tile-name {
    font-size: 0.65rem;
    color: #6c757d;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}
.icon-picker-modal__tile.is-selected {
    background: transparent;
    border-color: #0d6efd;
}
.icon-picker-modal__tile.is-selected i { color: #0d6efd; }
.icon-picker-modal__tile.is-selected .icon-picker-modal__tile-name { color: #0d6efd; }

.icon-picker-modal__loading,
.icon-picker-modal__empty {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 32px 16px;
    color: #6c757d;
    text-align: center;
}
.icon-picker-modal__empty i {
    font-size: 2rem;
    color: #ced4da;
    margin-bottom: 8px;
}
.icon-picker-modal__empty-title {
    margin: 0 0 4px 0;
    font-weight: 600;
    color: #495057;
}
.icon-picker-modal__empty-hint {
    margin: 0;
    font-size: 0.85rem;
}

.icon-picker-modal__custom {
    padding: 12px 20px;
    border-top: 1px solid #e9ecef;
    background: #f8f9fa;
}
.icon-picker-modal__custom-label {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: #495057;
    margin-bottom: 4px;
}
.icon-picker-modal__custom-hint {
    font-weight: 400;
    color: #6c757d;
    font-size: 0.72rem;
}
.icon-picker-modal__custom-input {
    width: 100%;
    padding: 6px 10px;
    border: 1px solid #ced4da;
    border-radius: 6px;
    font-size: 0.85rem;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    background: #fff;
}
.icon-picker-modal__custom-input:focus {
    outline: 0;
    border-color: #86b7fe;
    box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.15);
}
.icon-picker-modal__custom-help {
    margin: 6px 0 0 0;
    font-size: 0.72rem;
    color: #6c757d;
    line-height: 1.45;
}
.icon-picker-modal__custom-help code {
    background: #f1f3f5;
    border: 1px solid #e9ecef;
    border-radius: 3px;
    padding: 0 4px;
    font-size: 0.72rem;
    color: #495057;
}
.icon-picker-modal__custom-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: #0d6efd;
    text-decoration: none;
    font-weight: 500;
}
.icon-picker-modal__custom-link:hover { text-decoration: underline; }
.icon-picker-modal__custom-link i { font-size: 0.7rem; }

.icon-picker-modal__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 20px;
    border-top: 1px solid #e9ecef;
    background: #fff;
}
.icon-picker-modal__footer-hint {
    font-size: 0.78rem;
    color: #6c757d;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1 1 auto;
}
.icon-picker-modal__footer-actions {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
}

/* Tablet / desktop angosto: bajamos a 6 col y mantenemos altura fija */
@media (max-width: 991.98px) and (min-width: 576px) {
    .icon-picker-modal__dialog { max-width: 540px; }
    .icon-picker-modal__grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .icon-picker-modal__body { height: 340px; }
}

/* Mobile: full-screen, 4 col, body fluye para llenar el dialog full-screen */
@media (max-width: 575.98px) {
    .icon-picker-modal { padding: 0; align-items: stretch; }
    .icon-picker-modal__dialog {
        max-width: 100%;
        max-height: 100vh;
        border-radius: 0;
        height: 100vh;
    }
    /* Safe-area top para evitar que el header quede pegado al notch en iOS */
    .icon-picker-modal__header {
        padding: calc(16px + env(safe-area-inset-top, 0px)) 16px 14px 16px;
    }
    .icon-picker-modal__searchbar { margin: 10px 16px 0 16px; }
    .icon-picker-modal__filterbar { padding: 8px; gap: 6px; }
    .icon-picker-modal__chip { padding: 6px 8px; font-size: 0.75rem; }
    .icon-picker-modal__chip-value { max-width: 110px; }
    .icon-picker-modal__body { padding: 10px 12px; height: auto; flex: 1 1 auto; }
    .icon-picker-modal__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; }
    .icon-picker-modal__tile { min-height: 64px; padding: 8px 2px; }
    .icon-picker-modal__tile i { font-size: 1.3rem; }
    /* Nombre mas chico en mobile + line-height tight, deja entrar mas chars
       antes de truncar (ej. "house-door-fill" entero en pantallas >= 380px) */
    .icon-picker-modal__tile-name { font-size: 0.55rem; line-height: 1.15; }
    .icon-picker-modal__custom { padding: 10px 16px; }
    .icon-picker-modal__footer { padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px)) 16px; }
}

/* Mobile muy chico (<=360px, ej. iPhone SE 1ra gen): nombres ya no caben en
   4 col, ocultamos label y dejamos solo el icono. El nombre se preserva en
   aria-label/title para tooltip en long-press. */
@media (max-width: 360px) {
    .icon-picker-modal__tile-name { display: none; }
    .icon-picker-modal__tile { min-height: 56px; }
}

/* â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
   AI SEO/AEO Content Assistant â€” boton + modal singleton.
   Usado en owners/step-6 y products/step-5. Reusa tokens visuales del
   editor de atributos para que el feature se sienta del mismo set.
   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.seo-aeo-orphan-card .seo-aeo-orphan-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.seo-aeo-orphan-card__copy { flex: 1 1 auto; min-width: 0; }
.seo-aeo-orphan-card__cta  { flex: 0 0 auto; }

/* Solo lo especifico del CTA: gap interno para separar el sparkle del texto.
   Tamanio, color, radius y hover los hereda de `app-btn-secondary`. */
.seo-aeo-ai-trigger {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}
/* Defendemos el contrato visual contra el override global
   `.btn:disabled { border-color: #dee2e6 !important; }` que pisa
   el borde azul del CTA cuando el boton esta disabled. Specificity
   `.seo-aeo-ai-trigger.app-btn-secondary` (2 clases) gana sobre
   `.btn:disabled` (1 clase) salvo en la prop con !important â€” ahi
   contraatacamos con !important. */
.seo-aeo-ai-trigger.app-btn-secondary,
.seo-aeo-ai-trigger.app-btn-secondary:disabled,
.seo-aeo-ai-trigger.app-btn-secondary[aria-disabled="true"] {
    background-color: #fff;
    color: var(--color-primary, #3C76F2);
    border: 1px solid var(--color-primary, #3C76F2) !important;
    border-radius: var(--radius-pill, 50rem);
}
.seo-aeo-ai-trigger.app-btn-secondary:hover:not(:disabled):not([aria-disabled="true"]) {
    background-color: var(--color-primary, #3C76F2);
    color: #fff;
}
.seo-aeo-ai-trigger:disabled,
.seo-aeo-ai-trigger[aria-disabled="true"] {
    opacity: .55;
    cursor: not-allowed;
}
.seo-aeo-ai-trigger__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: currentColor;
}

@media (max-width: 575.98px) {
    .seo-aeo-orphan-card .seo-aeo-orphan-card__head {
        align-items: stretch;
    }
    .seo-aeo-orphan-card__cta { width: 100%; }
    .seo-aeo-ai-trigger { width: 100%; justify-content: center; }
}

/* â”€â”€ Modal â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.seo-aeo-modal[hidden] { display: none; }
.seo-aeo-modal {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
body.seo-aeo-modal-open { overflow: hidden; }

.seo-aeo-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(17, 24, 39, .55);
    backdrop-filter: blur(2px);
}
.seo-aeo-modal__dialog {
    position: relative;
    background: #fff;
    border-radius: 12px;
    width: 100%;
    max-width: 640px;
    max-height: calc(100vh - 2rem);
    display: flex;
    flex-direction: column;
    box-shadow: 0 16px 40px rgba(15, 23, 42, .25);
    overflow: hidden;
}
.seo-aeo-modal__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.1rem 1.25rem .75rem;
    border-bottom: 1px solid #e5e7eb;
}
.seo-aeo-modal__title-wrap {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
}
.seo-aeo-modal__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: #eef2ff;
    color: var(--color-primary, #3C76F2);
    flex-shrink: 0;
}
.seo-aeo-modal__header h3 {
    font-size: 1.05rem;
    font-weight: 600;
    margin: 0 0 .15rem;
    color: #111827;
}
.seo-aeo-modal__subtitle {
    font-size: .85rem;
    color: #6b7280;
    margin: 0;
    line-height: 1.4;
}
.seo-aeo-modal__close {
    background: transparent;
    border: 0;
    padding: .35rem;
    border-radius: 6px;
    color: #6b7280;
    cursor: pointer;
}
.seo-aeo-modal__close:hover { background: #f3f4f6; color: #111827; }

.seo-aeo-modal__body {
    padding: 1.1rem 1.25rem 1.25rem;
    overflow-y: auto;
}

/* Setup */
.seo-aeo-modal__label {
    display: block;
    font-size: .85rem;
    font-weight: 500;
    color: #374151;
    margin-bottom: .35rem;
}
/* Intro del setup. Reemplaza al selector de tono que existia antes.
   La voz de marca ahora vive en el owner â€” el modal solo informa que
   se va a usar y deja al usuario apretar "Generar". */
.seo-aeo-modal__intro {
    margin: 0 0 .65rem;
    font-size: .9rem;
    color: #374151;
    line-height: 1.5;
}

/* Empty state: owner sin voz de marca cargada. CTA al edit del owner. */
.seo-aeo-modal__empty-voice {
    text-align: center;
    padding: 1.25rem 1rem 0;
}
.seo-aeo-modal__empty-voice-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 16px;
    background: #eef2ff;
    color: var(--color-primary, #3C76F2);
    margin-bottom: .85rem;
}
.seo-aeo-modal__empty-voice-title {
    font-size: 1.05rem;
    font-weight: 600;
    color: #111827;
    margin: 0 0 .5rem;
}
.seo-aeo-modal__empty-voice-text {
    color: #4b5563;
    font-size: .9rem;
    line-height: 1.55;
    margin: 0 auto .55rem;
    max-width: 42ch;
}
.seo-aeo-modal__empty-voice-hint {
    color: #6b7280;
    font-size: .8rem;
    line-height: 1.45;
    margin: 0 auto;
    max-width: 42ch;
}
.seo-aeo-modal__empty-voice .seo-aeo-modal__actions {
    justify-content: center;
}
.seo-aeo-modal__disclosure {
    margin-top: 1rem;
    padding: .65rem .8rem;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    font-size: .8rem;
    color: #475569;
    line-height: 1.5;
}
.seo-aeo-modal__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
    flex-wrap: wrap;
    margin-top: 1.1rem;
}
.seo-aeo-modal__actions .btn-link { color: #6b7280; text-decoration: none; }
.seo-aeo-modal__actions .btn-link:hover { color: #111827; }

/* Defendemos el color del texto de los CTA del modal contra
   `.btn:hover/:focus/:active` de Bootstrap que resetea el color
   via --bs-btn-active-color a negro. */
.seo-aeo-modal .app-btn-primary,
.seo-aeo-modal .app-btn-primary:hover,
.seo-aeo-modal .app-btn-primary:focus,
.seo-aeo-modal .app-btn-primary:focus-visible,
.seo-aeo-modal .app-btn-primary:active,
.seo-aeo-modal a.app-btn-primary,
.seo-aeo-modal a.app-btn-primary:hover {
    color: #fff;
    background-color: var(--color-primary, #3C76F2);
    border-color: var(--color-primary, #3C76F2);
}
.seo-aeo-modal .app-btn-secondary,
.seo-aeo-modal .app-btn-secondary:focus,
.seo-aeo-modal .app-btn-secondary:focus-visible {
    color: var(--color-primary, #3C76F2);
    background-color: #fff;
    border: 1px solid var(--color-primary, #3C76F2);
}
.seo-aeo-modal .app-btn-secondary:hover,
.seo-aeo-modal .app-btn-secondary:active {
    color: #fff;
    background-color: var(--color-primary, #3C76F2);
}

/* Loading */
.seo-aeo-modal__loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: 2.5rem 1rem;
    text-align: center;
    color: #374151;
}
.seo-aeo-modal__loading p { margin: .5rem 0 0; font-size: .95rem; }
.seo-aeo-modal__loading small { color: #6b7280; }
.seo-aeo-modal__spinner {
    width: 36px;
    height: 36px;
    border: 3px solid #e5e7eb;
    border-top-color: #6366f1;
    border-radius: 50%;
    animation: seoAeoSpin .9s linear infinite;
}
@keyframes seoAeoSpin {
    from { transform: rotate(0); }
    to   { transform: rotate(360deg); }
}

/* Preview */
.seo-aeo-modal__preview-header p {
    font-size: .85rem;
    color: #4b5563;
    margin: 0 0 .9rem;
    line-height: 1.5;
}
.seo-aeo-modal__fields {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}
.seo-aeo-modal__field {
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: .7rem .9rem;
    background: #fff;
}
.seo-aeo-modal__field-head {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
    margin-bottom: .4rem;
}
.seo-aeo-modal__field-head input[type="checkbox"] {
    width: 16px; height: 16px; cursor: pointer;
    accent-color: #6366f1;
}
.seo-aeo-modal__field-label {
    font-size: .9rem;
    font-weight: 600;
    color: #1f2937;
    margin: 0;
    cursor: pointer;
}
.seo-aeo-modal__badge {
    display: inline-flex;
    align-items: center;
    padding: .1rem .5rem;
    border-radius: 999px;
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 600;
}
.seo-aeo-modal__badge--filled {
    background: #fef3c7;
    color: #92400e;
}
.seo-aeo-modal__badge--skip {
    background: #f3f4f6;
    color: #6b7280;
}
.seo-aeo-modal__field-body {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}
.seo-aeo-modal__field-row {
    display: grid;
    grid-template-columns: 70px 1fr;
    gap: .6rem;
    font-size: .85rem;
    line-height: 1.45;
}
.seo-aeo-modal__field-row-label {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #6b7280;
    font-weight: 600;
    padding-top: .15rem;
}
.seo-aeo-modal__field-row-value {
    color: #111827;
    word-break: break-word;
}
.seo-aeo-modal__field-row-value--muted {
    color: #6b7280;
    font-style: italic;
}
.seo-aeo-modal__field-row--empty {
    grid-template-columns: 1fr;
    color: #9ca3af;
    font-style: italic;
    font-size: .8rem;
}

.seo-aeo-modal__error {
    margin-top: .8rem;
    padding: .6rem .8rem;
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #991b1b;
    border-radius: 8px;
    font-size: .85rem;
}

.seo-aeo-modal__error-state {
    text-align: center;
    padding: 2rem 1rem 1rem;
}
.seo-aeo-modal__error-icon {
    color: #dc2626;
    margin-bottom: .5rem;
}
.seo-aeo-modal__error-state p {
    color: #374151;
    font-size: .95rem;
    margin: 0 0 1.2rem;
    line-height: 1.5;
}

@media (max-width: 575.98px) {
    .seo-aeo-modal { padding: 0; align-items: stretch; }
    .seo-aeo-modal__dialog {
        max-width: 100%;
        max-height: 100vh;
        border-radius: 0;
    }
    .seo-aeo-modal__field-row {
        grid-template-columns: 1fr;
        gap: .15rem;
    }
}



/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   Required field asterisk â€” uso global para labels de forms
   Patron: <label class="form-label-sm">Nombre <span class="is-required" aria-label="(obligatorio)">*</span></label>
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
.is-required {
    color: #dc2626;
    font-weight: 600;
    margin-left: 2px;
}

/* Mensajes inline de validacion: dejamos el .invalid-feedback de Bootstrap por
   default (color/tamaÃ±o) para no afectar las 8 vistas que ya lo usan. Si en el
   futuro se decide refinar el look del system de errores, hacerlo en una pasada
   coordinada y verificar cada vista. */

/* Banner inline que anuncia "estos campos pasan a ser obligatorios"
   cuando el usuario cambia rol/is_notary y aparecen secciones nuevas */
.form-required-hint {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #eff6ff;
    color: #1d4ed8;
    border: 1px solid #bfdbfe;
    border-radius: 6px;
    padding: 4px 10px;
    font-size: 0.75rem;
    font-weight: 500;
    margin-bottom: 8px;
}
.form-required-hint__icon {
    color: #2563eb;
    flex-shrink: 0;
}

/* Boton submit con estado .is-submitting: desactiva clicks y muestra spinner.
   Clase distinta de .is-saving (que ya se usa en sites/edit para apagar TODOS
   los botones de .form-actions-fixed sin spinner) para no romper ese flow.
   Aplica solo al boton submit individual al que el JS le agrega la clase. */
.btn.is-submitting {
    pointer-events: none;
    opacity: 0.85;
    position: relative;
    color: transparent !important;
}
.btn.is-submitting::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 14px;
    height: 14px;
    margin-top: -7px;
    margin-left: -7px;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    color: #ffffff;
    animation: btn-submitting-spin 0.7s linear infinite;
}
.btn.app-btn-secondary.is-submitting::after,
.btn.app-btn-terciary.is-submitting::after {
    color: var(--color-primary, #3C76F2);
}
@keyframes btn-submitting-spin {
    to { transform: rotate(360deg); }
}


/* Boton X de cierre de modal, canonico del backoffice: sprite de 16px en hit
   area de 32px. Reemplaza al .btn-close nativo de Bootstrap, que pinta una X
   mas grande y azul. Clones previos: .shp-modal__close, .bio-modal__close,
   .pay-modal__close, .news-modal__close. Ver
   .cursor/rules/confirm-modal-centered.mdc */
.pala-modal-close {
    flex: 0 0 auto;
    width: 32px;
    height: 32px;
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    border-radius: 6px;
    cursor: pointer;
    color: var(--gray-500, #6b7280);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color .12s ease, color .12s ease;
}
.pala-modal-close svg {
    display: block;
    stroke: currentColor;
}
.pala-modal-close:hover {
    background: var(--gray-100, #f3f4f6);
    color: var(--gray-900, #111827);
}
.pala-modal-close:focus-visible {
    outline: 2px solid var(--color-primary, #3C76F2);
    outline-offset: 2px;
}
.action-modal__footer {

/* ΓöÇΓöÇ Uploader: badge "Sin guardar" en archivos aun no persistidos ΓöÇΓöÇ */
.uploader-unsaved-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    padding: 2px 8px;
    border-radius: var(--radius-pill, 999px);
    background: #fef3c7;
    color: #92400e;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}

/* ΓöÇΓöÇ seg-ctrl: dot de cambios sin guardar en el tab ΓöÇΓöÇ */
.seg-ctrl--dirty {
    position: relative;
}
.seg-ctrl--dirty::after {
    content: '';
    position: absolute;
    top: 5px;
    right: 5px;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #f59e0b;
}


/* ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ
   Uploader ΓÇö variante "editor" (Pie de p├ígina en sites/edit)
   Patr├│n visual de la cinta de logos del editor de bloques:
   encabezado con contador + bot├│n ├║nico de subida, items
   compactos con thumb ajedrezado y tacho, estado vac├¡o con
   mensaje, hint abajo. La mec├ínica NO cambia: mismos ids e
   inputs de initUploader, mismo POST del form. Solo aplica
   donde el include pasa variant => 'editor'.
   ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ */
.uploader--editor .uploader-editor__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
}
.uploader-editor__count {
    font-size: 12px;
    font-weight: 400;
    color: #6b7280;
    margin-left: 4px;
}
.uploader-editor__add {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border: 1px dashed #d4d4d8;
    border-radius: 6px;
    font-size: 12px;
    color: #6b7280;
    background: #fff;
    cursor: pointer;
}
.uploader-editor__add:hover {
    border-color: #a1a1aa;
    color: #374151;
}
.uploader-editor__add.is-disabled {
    opacity: .45;
    pointer-events: none;
}
.uploader--editor .field-hint {
    font-size: 11px;
    color: #6b7280;
    margin: 6px 0 0;
}
.uploader--editor .drop-area {
    display: block;
    padding: 0;
    border: 0;
    background: transparent;
}
/* initUploader inyecta su propio casillero "+" (drop-area-content); en esta
   variante el disparador ├║nico es el bot├│n del encabezado. */
.uploader--editor .drop-area-content {
    display: none !important;
}
.uploader-editor__empty {
    margin: 0;
    font-size: 13px;
    color: #6b7280;
    padding: 10px 12px;
    border: 1px dashed #cbd5e1;
    border-radius: 8px;
    background: #f8fafc;
    cursor: pointer;
}
/* Items de preview con el mismo look que los de la cinta de logos.
   Los estilos inline (120px, checker 16px, bot├│n absoluto) vienen de
   wrapperImg() en js.blade.php (JS compartido por 19+ vistas que no se
   toca): por eso los overrides necesitan !important. */
.uploader--editor .uploader-editor__previews {
    gap: 8px !important;
}
.uploader--editor .uploader-editor__previews > div {
    width: auto !important;
    flex-direction: row !important;
    align-items: center;
    gap: 4px;
    padding: 6px;
    border: 1px solid #e4e4e7;
    border-radius: 8px;
    background: #fff;
}
.uploader--editor .uploader-editor__previews img {
    width: 72px !important;
    height: 40px !important;
    object-fit: contain !important;
    border: 0 !important;
    border-radius: 4px;
    background-size: 10px 10px !important;
    background-position: 0 0, 5px 5px !important;
}
.uploader--editor .uploader-editor__previews .btn-remove {
    position: static !important;
    width: 22px;
    height: 22px;
    border: 0;
    background: transparent;
    color: #6b7280;
    border-radius: 4px;
    box-shadow: none;
}
.uploader--editor .uploader-editor__previews .btn-remove:hover {
    color: #dc2626;
    background: #fef2f2;
}
.uploader--editor .uploader-editor__previews .btn-remove svg {
    width: 12px;
    height: 12px;
}

/* ΓöÇΓöÇ Pie de p├ígina: fila "Colores" con c├¡rculos (estilo Tarjetas) ΓöÇΓöÇ */
.pie-colors {
    display: flex;
    gap: 24px;
}
.pie-color-swatch {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    margin: 0;
    cursor: pointer;
}
.pie-color-swatch__name {
    font-size: 12px;
    font-weight: 600;
    color: #374151;
}
.pie-color-swatch input[type="color"] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid #d1d5db;
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
}
.pie-color-swatch input[type="color"]::-webkit-color-swatch-wrapper {
    padding: 0;
}
.pie-color-swatch input[type="color"]::-webkit-color-swatch {
    border: none;
    border-radius: 50%;
}
.pie-color-swatch input[type="color"]::-moz-color-swatch {
    border: none;
    border-radius: 50%;
}
/* El span queda en el DOM (el oninput del input lo referencia);
   solo se oculta visualmente. */
.pie-color-swatch .color-hex {
    display: none;
}

