:root {
    /* Tecnonube ERP — azul marca (sustituye guindo Odoo var(--sfe-primary)) */
    --primary: #007BFF;
    --primary-dark: #0056CC;
    --primary-light: #E8F4FF;
    --sfe-primary: #007BFF;
    --sfe-secondary: #2C7BE5;
    --sfe-navy: #1E2B3C;
    --sfe-accent: #2C7BE5;
    /* Alias legacy (evita guindo si un CSS antiguo redefine --primary) */
    --odoo-purple: var(--sfe-primary);
    --odoo-teal: var(--sfe-secondary);
    --success: #059669;
    --success-light: #d1fae5;
    --warning: #d97706;
    --warning-light: #fef3c7;
    --info: #0891b2;
    --info-light: #cffafe;
    --danger: #dc2626;
    --danger-light: #fee2e2;
    --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;
    --sidebar-width: 260px;
    --radius: 10px;
    --shadow: 0 1px 3px rgba(0,0,0,.08), 0 4px 12px rgba(0,0,0,.04);
    --shadow-lg: 0 4px 24px rgba(0,0,0,.1);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 14px;
    line-height: 1.5;
    color: var(--gray-800);
    background: var(--gray-50);
    -webkit-font-smoothing: antialiased;
}

.icon { width: 18px; height: 18px; flex-shrink: 0; }

/* SPA / AJAX navigation */
.content-area.sfe-loading {
    opacity: 0.55;
    pointer-events: none;
    transition: opacity .15s ease;
}

/* SPA / AJAX navigation */
.content-area.sfe-loading {
    opacity: 0.55;
    pointer-events: none;
    transition: opacity .15s ease;
}

body.sfe-is-loading {
    cursor: progress;
}

.sfe-loading-overlay {
    position: fixed;
    inset: 0;
    z-index: 14500;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.22s ease;
}

.sfe-loading-overlay:not([hidden]) {
    display: flex;
}

.sfe-loading-overlay.is-visible {
    opacity: 1;
    pointer-events: auto;
}

.sfe-loading-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.42);
    backdrop-filter: blur(4px);
}

.sfe-loading-card {
    position: relative;
    min-width: 220px;
    padding: 28px 32px 24px;
    text-align: center;
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 24px 64px rgba(15, 23, 42, 0.22);
    transform: translateY(8px) scale(0.98);
    transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.sfe-loading-overlay.is-visible .sfe-loading-card {
    transform: translateY(0) scale(1);
}

.sfe-loading-brand {
    position: relative;
    width: 84px;
    height: 84px;
    margin: 0 auto 14px;
}

.sfe-loading-ring {
    position: absolute;
    inset: 0;
    border: 3px solid rgba(0, 123, 255, 0.15);
    border-top-color: var(--primary);
    border-right-color: var(--sfe-accent);
    border-radius: 50%;
    animation: sfe-loading-spin 0.9s linear infinite;
}

.sfe-loading-logo {
    position: absolute;
    inset: 14px;
    width: 56px;
    height: 56px;
    object-fit: contain;
    border-radius: 12px;
    animation: sfe-loading-pulse 1.6s ease-in-out infinite;
}

.sfe-loading-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--gray-800);
    margin-bottom: 4px;
}

.sfe-loading-message {
    font-size: 13px;
    color: var(--gray-500);
    margin-bottom: 10px;
}

.sfe-loading-dots {
    display: inline-flex;
    gap: 6px;
    align-items: center;
    justify-content: center;
}

.sfe-loading-dots span {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--primary);
    animation: sfe-loading-dot 1.2s ease-in-out infinite;
}

.sfe-loading-dots span:nth-child(2) { animation-delay: 0.15s; }
.sfe-loading-dots span:nth-child(3) { animation-delay: 0.3s; }

@keyframes sfe-loading-spin {
    to { transform: rotate(360deg); }
}

@keyframes sfe-loading-pulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(0.94); opacity: 0.88; }
}

@keyframes sfe-loading-dot {
    0%, 80%, 100% { transform: translateY(0); opacity: 0.35; }
    40% { transform: translateY(-4px); opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .sfe-loading-ring,
    .sfe-loading-logo,
    .sfe-loading-dots span {
        animation: none;
    }
}

.sfe-flash {
    margin: 0 0 12px;
    padding: 12px 16px;
    border-radius: var(--radius);
    font-size: 14px;
}

.sfe-flash-success { background: var(--success-light); color: #065f46; border: 1px solid #6ee7b7; }
.sfe-flash-error { background: var(--danger-light); color: #991b1b; border: 1px solid #fca5a5; }
.sfe-flash-info { background: var(--primary-light); color: #1e40af; border: 1px solid #93c5fd; }

/* Toast flotante (instalaciones, acciones) */
.sfe-toast {
    position: fixed;
    top: 18px;
    left: calc(var(--sidebar-width) / 2 + 50vw);
    transform: translateX(-50%) translateY(-140%);
    z-index: 12000;
    width: min(460px, calc(100vw - var(--sidebar-width) - 48px));
    max-width: calc(100vw - 32px);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.38s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.28s ease;
}

/* Home, apps y pantallas sin sidebar: centrado en viewport */
.o_home_background .sfe-toast,
body.sfe-no-sidebar .sfe-toast {
    left: 50%;
    width: min(460px, calc(100vw - 32px));
}

.sfe-toast.is-visible {
    transform: translateX(-50%) translateY(0);
    opacity: 1;
    pointer-events: auto;
}

.sfe-toast-card {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 16px 44px 16px 16px;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 16px 48px rgba(15, 23, 42, 0.16), 0 0 0 1px rgba(15, 23, 42, 0.06);
    overflow: hidden;
}

.sfe-toast-card.is-success {
    border-left: 4px solid #22c55e;
}

.sfe-toast-card.is-error {
    border-left: 4px solid #ef4444;
}

.sfe-toast-card.is-info {
    border-left: 4px solid #3b82f6;
}

.sfe-toast-icon-wrap {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.sfe-toast-icon-wrap.is-success {
    background: rgba(34, 197, 94, 0.12);
    color: #15803d;
}

.sfe-toast-icon-wrap.is-error {
    background: rgba(239, 68, 68, 0.12);
    color: #b91c1c;
}

.sfe-toast-icon-wrap.is-info {
    background: rgba(59, 130, 246, 0.12);
    color: #1d4ed8;
}

.sfe-toast-icon {
    width: 22px;
    height: 22px;
}

.sfe-toast-content {
    flex: 1;
    min-width: 0;
    padding-top: 2px;
}

.sfe-toast-title {
    display: block;
    font-size: 15px;
    font-weight: 700;
    color: var(--gray-900);
    margin: 0 0 4px;
}

.sfe-toast-message {
    margin: 0;
    font-size: 14px;
    line-height: 1.45;
    color: var(--gray-600);
}

.sfe-toast-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 28px;
    height: 28px;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: var(--gray-400);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.sfe-toast-close:hover {
    background: var(--gray-100);
    color: var(--gray-700);
}

.sfe-toast-progress {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 3px;
    width: 100%;
    background: rgba(15, 23, 42, 0.06);
    transform-origin: left center;
    transform: scaleX(0);
}

.sfe-toast-progress.is-running {
    animation: sfe-toast-progress 6s linear forwards;
}

.sfe-toast-card.is-success .sfe-toast-progress.is-running {
    background: linear-gradient(90deg, #22c55e, #86efac);
}

.sfe-toast-card.is-error .sfe-toast-progress.is-running {
    background: linear-gradient(90deg, #ef4444, #fca5a5);
}

.sfe-toast-card.is-info .sfe-toast-progress.is-running {
    background: linear-gradient(90deg, #3b82f6, #93c5fd);
}

@keyframes sfe-toast-progress {
    from { transform: scaleX(1); }
    to { transform: scaleX(0); }
}

@media (max-width: 900px) {
    .sfe-toast {
        left: 50%;
        width: min(460px, calc(100vw - 32px));
    }
}

.sfe-bank-import-upload,
.sfe-ocr-file-upload {
    margin-bottom: 1rem;
    padding: 12px 14px;
    background: var(--gray-50, #f8fafc);
    border: 1px dashed var(--gray-200, #e2e8f0);
    border-radius: 10px;
}

.sfe-bank-import-upload .form-label,
.sfe-ocr-file-upload .form-label {
    display: block;
    margin-bottom: 6px;
    font-weight: 600;
    font-size: 13px;
}

/* Modal de confirmación del sistema */
.sfe-confirm {
    position: fixed;
    inset: 0;
    z-index: 13000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.24s ease;
}

.sfe-confirm.is-visible {
    opacity: 1;
    pointer-events: auto;
}

.sfe-confirm-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.48);
    backdrop-filter: blur(4px);
}

.sfe-confirm-dialog {
    position: relative;
    width: min(440px, 100%);
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 24px 64px rgba(15, 23, 42, 0.22);
    padding: 24px 24px 20px;
    transform: translateY(12px) scale(0.98);
    transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.sfe-confirm.is-visible .sfe-confirm-dialog {
    transform: translateY(0) scale(1);
}

.sfe-confirm-icon-wrap {
    width: 48px;
    height: 48px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 16px;
}

.sfe-confirm-icon-wrap.is-primary {
    background: rgba(37, 99, 235, 0.12);
    color: #2563eb;
}

.sfe-confirm-icon-wrap.is-secondary {
    background: rgba(0, 123, 255, 0.12);
    color: var(--sfe-primary);
}

.sfe-confirm-icon-wrap.is-danger {
    background: rgba(239, 68, 68, 0.12);
    color: #dc2626;
}

.sfe-confirm-icon {
    width: 24px;
    height: 24px;
}

.sfe-confirm-title {
    margin: 0 0 8px;
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--gray-900);
}

.sfe-confirm-message {
    margin: 0 0 16px;
    font-size: 14px;
    line-height: 1.55;
    color: var(--gray-600);
}

.sfe-confirm-list {
    list-style: none;
    margin: 0 0 18px;
    padding: 12px 14px;
    max-height: 160px;
    overflow-y: auto;
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
    border-radius: 10px;
}

.sfe-confirm-list li {
    position: relative;
    padding: 4px 0 4px 16px;
    font-size: 13px;
    color: var(--gray-700);
    line-height: 1.4;
}

.sfe-confirm-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 11px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--primary);
}

.sfe-confirm-list li.is-more {
    color: var(--gray-500);
    font-style: italic;
}

.sfe-confirm-list li.is-more::before {
    background: var(--gray-400);
}

.sfe-confirm-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding-top: 4px;
}

/* Overlay instalación / actualización en lote (marketplace) */
.sfe-batch-overlay {
    position: fixed;
    inset: 0;
    z-index: 15000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.24s ease;
}

.sfe-batch-overlay:not([hidden]) {
    display: flex;
}

.sfe-batch-overlay.is-visible {
    opacity: 1;
    pointer-events: auto;
}

.sfe-batch-brand {
    margin: 0 auto 16px;
}

.sfe-batch-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(5px);
}

.sfe-batch-card {
    position: relative;
    width: min(520px, 100%);
    max-height: min(80vh, 640px);
    overflow: auto;
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 28px 72px rgba(15, 23, 42, 0.24);
    padding: 28px 28px 24px;
    transform: translateY(10px) scale(0.98);
    transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.sfe-batch-overlay.is-visible .sfe-batch-card {
    transform: translateY(0) scale(1);
}

.sfe-batch-spinner {
    width: 44px;
    height: 44px;
    margin: 0 auto 18px;
    border: 3px solid rgba(37, 99, 235, 0.15);
    border-top-color: #2563eb;
    border-radius: 50%;
    animation: sfe-batch-spin 0.85s linear infinite;
}

@keyframes sfe-batch-spin {
    to { transform: rotate(360deg); }
}

.sfe-batch-title {
    margin: 0 0 8px;
    text-align: center;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--gray-900);
}

.sfe-batch-subtitle {
    margin: 0 0 18px;
    text-align: center;
    font-size: 14px;
    line-height: 1.5;
    color: var(--gray-600);
}

.sfe-batch-progress-meta {
    text-align: center;
    font-size: 13px;
    font-weight: 600;
    color: var(--primary);
    margin-bottom: 10px;
}

.sfe-batch-progress-bar {
    height: 6px;
    border-radius: 999px;
    background: var(--gray-100);
    overflow: hidden;
    margin-bottom: 18px;
}

.sfe-batch-progress-bar span {
    display: block;
    height: 100%;
    width: 0;
    border-radius: inherit;
    background: linear-gradient(90deg, #2563eb, var(--sfe-primary));
    transition: width 0.35s ease;
}

.sfe-batch-list {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 220px;
    overflow-y: auto;
}

.sfe-batch-list li {
    position: relative;
    padding: 8px 0 8px 28px;
    font-size: 14px;
    color: var(--gray-600);
    border-bottom: 1px solid var(--gray-100);
}

.sfe-batch-list li:last-child {
    border-bottom: none;
}

.sfe-batch-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 2px solid var(--gray-300);
    background: #fff;
}

.sfe-batch-list li.is-active {
    color: var(--gray-900);
    font-weight: 600;
}

.sfe-batch-list li.is-active::before {
    border-color: #2563eb;
    border-top-color: transparent;
    animation: sfe-batch-spin 0.85s linear infinite;
}

.sfe-batch-list li.is-done {
    color: #15803d;
}

.sfe-batch-list li.is-done::before {
    border-color: #22c55e;
    background: #22c55e url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/11px no-repeat;
}

.sfe-batch-result-icon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 16px;
}

.sfe-batch-result-icon.is-success {
    background: rgba(34, 197, 94, 0.12);
    color: #15803d;
}

.sfe-batch-result-icon.is-error {
    background: rgba(239, 68, 68, 0.12);
    color: #b91c1c;
}

.sfe-batch-result-icon .icon {
    width: 28px;
    height: 28px;
}

.sfe-batch-result-section {
    margin-bottom: 16px;
}

.sfe-batch-result-section h3 {
    margin: 0 0 8px;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--gray-500);
}

.sfe-batch-list.is-success li::before {
    border-color: #22c55e;
    background: #22c55e;
}

.sfe-batch-list.is-errors li {
    color: #b91c1c;
}

.sfe-batch-list.is-errors li::before {
    border-color: #ef4444;
    background: #ef4444;
}

.sfe-batch-actions {
    display: flex;
    justify-content: center;
    padding-top: 8px;
}

/* App Shell */
.app-shell { display: flex; min-height: 100vh; }

/* Sidebar */
.sidebar {
    width: var(--sidebar-width);
    background: var(--gray-900);
    color: #fff;
    display: flex;
    flex-direction: column;
    position: fixed;
    top: 0; left: 0; bottom: 0;
    z-index: 100;
}

.sidebar-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 20px;
    border-bottom: 1px solid rgba(255,255,255,.08);
}

.brand-icon {
    width: 40px; height: 40px;
    background: linear-gradient(135deg, var(--sfe-primary), var(--sfe-secondary));
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 13px;
}

.brand-icon-lg { width: 56px; height: 56px; font-size: 16px; margin: 0 auto 16px; }

.brand-logo {
    display: block;
    height: auto;
    object-fit: contain;
}

.brand-logo-xl {
    width: 160px;
    max-width: 100%;
    margin-bottom: 8px;
}

.brand-logo-sm { width: 120px; }

.brand-logo-sidebar {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    flex-shrink: 0;
}

.brand-text { display: flex; flex-direction: column; }
.brand-text strong { font-size: 15px; }
.brand-text span { font-size: 11px; color: var(--gray-400); }

.sidebar-nav { flex: 1; padding: 12px 0; overflow-y: auto; }

.nav-group { margin-bottom: 8px; }

.nav-group-label {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 20px;
    font-size: 11px; font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--gray-500);
}

.nav-link {
    display: flex; align-items: center; gap: 8px;
    padding: 9px 20px 9px 36px;
    color: var(--gray-300);
    text-decoration: none;
    font-size: 13px;
    transition: all .15s;
}

.nav-link-main { padding-left: 20px; }

.nav-link:hover { background: rgba(255,255,255,.06); color: #fff; }
.nav-link.is-active { background: rgba(37, 99, 235, .25); color: #fff; border-left: 3px solid var(--primary); padding-left: calc(20px - 3px); }

.sidebar-footer {
    padding: 16px;
    border-top: 1px solid rgba(255,255,255,.08);
}

.user-chip { display: flex; align-items: center; gap: 10px; }

.user-avatar {
    width: 36px; height: 36px;
    background: var(--primary);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 600; font-size: 14px;
}

.user-info { display: flex; flex-direction: column; }
.user-info strong { font-size: 13px; }
.user-info a { font-size: 11px; color: var(--gray-400); text-decoration: none; }
.user-info a:hover { color: #fff; }

/* Main Content */
.main-content {
    flex: 1;
    margin-left: var(--sidebar-width);
    min-height: 100vh;
}

.app-shell.is-apps-shell .main-content {
    margin-left: 0;
    background: #f0f0f0;
}

.app-shell.is-apps-shell .topbar {
    padding: 0 20px;
    min-height: 48px;
}

.app-shell.is-apps-shell .o_apps_navbar {
    border-bottom: 1px solid var(--gray-200);
    box-shadow: 0 1px 0 rgba(0, 123, 255, .06);
}

.topbar.o_apps_navbar,
.topbar.o_settings_navbar {
    padding: 0 20px;
    min-height: 48px;
    border-bottom: 1px solid var(--gray-200);
    box-shadow: 0 1px 0 rgba(0, 123, 255, .06);
    background: linear-gradient(180deg, #fff 0%, #fcfbfd 100%);
}

.o_module_navbar_left,
.o_settings_navbar_left,
.o_apps_navbar_left {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    flex: 1;
}

.o_module_home_btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px 6px 10px;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    background: #fff;
    color: var(--gray-700);
    text-decoration: none;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    flex-shrink: 0;
    transition: color .15s, border-color .15s, background .15s, box-shadow .15s;
    box-shadow: 0 1px 2px rgba(17, 24, 39, .04);
}

.o_module_home_btn:hover {
    color: var(--sfe-primary);
    border-color: rgba(0, 123, 255, .28);
    background: var(--primary-light);
    box-shadow: 0 2px 8px rgba(0, 123, 255, .08);
}

.o_module_home_icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 6px;
    background: rgba(0, 123, 255, .1);
    color: var(--sfe-primary);
}

.o_module_home_icon .icon {
    width: 14px;
    height: 14px;
}

.o_module_home_label {
    letter-spacing: .01em;
}

.o_module_navbar_divider {
    width: 1px;
    height: 22px;
    background: var(--gray-200);
    flex-shrink: 0;
}

.o_settings_navbar_app {
    font-size: 14px;
    font-weight: 600;
    color: var(--gray-800);
    white-space: nowrap;
}

.o_settings_cp_tabs,
.o_settings_navbar_tabs {
    display: flex;
    align-items: stretch;
    gap: 0;
    flex-wrap: wrap;
    border-bottom: 1px solid transparent;
}

.o_settings_navbar_tab {
    padding: 10px 16px;
    font-size: 13px;
    font-weight: 500;
    color: var(--gray-500);
    text-decoration: none;
    border-radius: 0;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    white-space: nowrap;
    transition: color .15s, border-color .15s;
    background: transparent;
}

.o_settings_navbar_tab:hover {
    color: var(--sfe-primary);
    background: transparent;
}

.o_settings_navbar_tab.is-active {
    color: var(--sfe-primary);
    border-bottom-color: var(--sfe-primary);
    background: transparent;
    font-weight: 600;
}

.o_topbar_title {
    flex: 1;
    min-width: 0;
}

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

.o_apps_menu_btn {
    display: none;
}

.o_apps_menu_logo {
    width: 26px;
    height: 26px;
    object-fit: contain;
}

.o_apps_navbar_app {
    font-size: 15px;
    font-weight: 600;
    color: var(--sfe-primary);
    white-space: nowrap;
}

.o_apps_navbar_sep {
    color: var(--gray-400);
    font-size: 14px;
}

.o_apps_navbar_crumb {
    font-size: 14px;
    color: var(--gray-600);
    white-space: nowrap;
}

.o_systray_apps .o_systray_username {
    font-size: 12px;
    font-weight: 600;
    color: var(--gray-600);
    letter-spacing: .04em;
    text-transform: uppercase;
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.o_systray_apps .o_systray_user_btn .o_systray_avatar {
    box-shadow: 0 0 0 2px #fff, 0 0 0 3px rgba(0, 123, 255, .18);
}

.o_systray_apps .o_systray_user {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.o_systray_apps .o_systray_user_btn {
    padding: 2px;
}

.o_cp_title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.o_cp_module_icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background: linear-gradient(135deg, rgba(0, 123, 255, .14) 0%, rgba(0, 123, 255, .06) 100%);
    color: var(--sfe-primary);
    flex-shrink: 0;
}

.o_cp_module_icon .icon {
    width: 16px;
    height: 16px;
}

.o_cp_title_text {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
    color: var(--gray-900);
    letter-spacing: -.01em;
}

.o_cp_gear_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    background: transparent;
    color: var(--gray-500);
    border-radius: 4px;
    cursor: pointer;
    padding: 0;
}

.o_cp_gear_btn:hover {
    background: var(--gray-100);
    color: var(--gray-700);
}

.o_cp_gear_btn .icon {
    width: 16px;
    height: 16px;
}

.o_searchview_facet_icon {
    width: 12px;
    height: 12px;
    flex-shrink: 0;
    opacity: .9;
}

.o_apps_search_dropdown {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 100%;
    border: none;
    border-left: 1px solid var(--gray-200);
    background: var(--gray-50);
    color: var(--gray-500);
    cursor: pointer;
    padding: 0;
    flex-shrink: 0;
}

.o_apps_search_dropdown .icon {
    width: 14px;
    height: 14px;
}

.o_apps_pager {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.o_apps_pager_range {
    font-size: 13px;
    color: var(--gray-600);
    white-space: nowrap;
    padding: 0 4px;
}

.o_apps_pager_nav {
    display: inline-flex;
    border: 1px solid var(--gray-300);
    border-radius: 4px;
    overflow: hidden;
}

.o_apps_pager_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    background: #fff;
    color: var(--gray-600);
    cursor: pointer;
    padding: 0;
}

.o_apps_pager_btn + .o_apps_pager_btn {
    border-left: 1px solid var(--gray-300);
}

.o_apps_pager_btn:disabled {
    opacity: .4;
    cursor: default;
}

.o_apps_pager_btn:not(:disabled):hover {
    background: var(--gray-50);
}

.o_apps_pager_btn .icon {
    width: 14px;
    height: 14px;
}

.o_apps_settings_wrap {
    position: relative;
}

.o_cp_left .o_apps_settings_panel {
    left: 0;
    right: auto;
}

.topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 32px;
    background: #fff;
    border-bottom: 1px solid var(--gray-200);
    position: sticky;
    top: 0;
    z-index: 50;
}

.topbar h1 { font-size: 22px; font-weight: 600; color: var(--gray-900); }
.topbar-actions { display: flex; gap: 8px; }

.content-area { padding: 24px 32px; }

.content-area:has(.o_apps_view),
.content-area:has(.o_settings_app),
.content-area:has(.o_help_app),
.content-area:has(.o_contacts_view),
.content-area:has(.contacts-workspace),
.content-area:has(.discuss-workspace) { padding: 0; }
.content-area:has(.discuss-channels-workspace) { padding: 0; }

/* Buttons */
.btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 8px 16px;
    border: 1px solid transparent;
    border-radius: 8px;
    font-size: 13px; font-weight: 500;
    cursor: pointer;
    text-decoration: none;
    transition: all .15s;
    font-family: inherit;
}

.btn-primary { background: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-dark); }

.btn-secondary { background: #fff; color: var(--gray-700); border-color: var(--gray-300); }
.btn-secondary:hover { background: var(--gray-50); }

.btn-success { background: var(--success); color: #fff; }
.btn-success:hover { background: #047857; }

.btn-warning { background: #f59e0b; color: #fff; border: none; }
.btn-warning:hover { background: #d97706; }

.btn-danger { background: var(--danger); color: #fff; border: none; padding: 4px 10px; }
.btn-danger:hover { background: #b91c1c; }

.btn-sm { padding: 4px 10px; font-size: 12px; }
.btn-block { width: 100%; justify-content: center; }

/* Forms */
.form-group { margin-bottom: 16px; }
.form-group label { display: block; margin-bottom: 6px; font-weight: 500; font-size: 13px; color: var(--gray-700); }

.form-control {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid var(--gray-300);
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    transition: border-color .15s, box-shadow .15s;
    background: #fff;
}

.form-control:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px var(--primary-light);
}

.form-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px 24px;
    background: #fff;
    padding: 24px;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.form-group-full { grid-column: 1 / -1; }
.form-group-wysiwyg { grid-column: 1 / -1; }

.sfe-wysiwyg {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    overflow: hidden;
}
.sfe-wysiwyg-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 8px;
    border-bottom: 1px solid var(--border);
    background: var(--bg-muted, #f8fafc);
}
.sfe-wysiwyg-btn {
    min-width: 32px;
    height: 32px;
    padding: 0 8px;
    border: 1px solid var(--border);
    border-radius: 4px;
    background: #fff;
    cursor: pointer;
    font-size: 13px;
    line-height: 1;
}
.sfe-wysiwyg-btn:hover { background: var(--primary-light, #eef2ff); }
.sfe-wysiwyg-editor {
    min-height: 220px;
    padding: 12px 14px;
    line-height: 1.6;
    outline: none;
}
.sfe-wysiwyg-editor:focus { box-shadow: inset 0 0 0 2px var(--primary-light, #eef2ff); }
.sfe-wysiwyg-editor h2 { font-size: 1.35rem; margin: 0.75em 0 0.35em; }
.sfe-wysiwyg-editor ul, .sfe-wysiwyg-editor ol { margin: 0.5em 0; padding-left: 1.5em; }
.sfe-wysiwyg-editor img { max-width: 100%; height: auto; }
.sfe-wysiwyg-source {
    display: none;
}
.sfe-wysiwyg-readonly {
    padding: 12px 14px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--bg-muted, #f8fafc);
    line-height: 1.6;
}
.sfe-wysiwyg-readonly img { max-width: 100%; height: auto; }

/* Page builder (website.page) */
.sfe-page-builder {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 12px;
    background: var(--bg-muted, #f8fafc);
}
.sfe-pb-toolbar {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
}
.sfe-pb-segments {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
    min-height: 48px;
}
.sfe-pb-empty {
    padding: 16px;
    text-align: center;
    color: var(--gray-500);
    border: 2px dashed var(--border);
    border-radius: var(--radius);
}
.sfe-pb-segment {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px;
    margin-bottom: 8px;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    cursor: grab;
}
.sfe-pb-segment.is-dragging { opacity: 0.55; }
.sfe-pb-handle {
    color: var(--gray-400);
    font-size: 14px;
    line-height: 1;
    user-select: none;
    padding-top: 2px;
}
.sfe-pb-segment-body { flex: 1; min-width: 0; }
.sfe-pb-segment-body strong {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--gray-500);
    margin-bottom: 4px;
}
.sfe-pb-meta { font-size: 14px; color: var(--gray-700); }
.sfe-pb-html-input { margin-top: 4px; font-family: ui-monospace, monospace; font-size: 13px; }
.sfe-pb-add {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding-top: 8px;
    border-top: 1px solid var(--border);
}
.sfe-pb-add-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--gray-600);
    margin-left: 4px;
}
.sfe-pb-block-select,
.sfe-pb-shortcode-select { max-width: 220px; }
.sfe-pb-source {
    width: 100%;
    margin-top: 8px;
    font-family: ui-monospace, monospace;
    font-size: 13px;
}
.form-group-page-builder { grid-column: 1 / -1; }

/* Email template builder (crm.email.template) */
.sfe-email-builder {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 12px;
    background: var(--bg-muted, #f8fafc);
}
.sfe-et-toolbar { display: flex; gap: 8px; margin-bottom: 12px; }
.sfe-et-layout { display: grid; grid-template-columns: 1fr; gap: 16px; }
.sfe-et-layout:has(.sfe-et-preview-pane:not([hidden])) { grid-template-columns: 1fr 320px; }
.sfe-et-segments { list-style: none; margin: 0 0 12px; padding: 0; min-height: 48px; }
.sfe-et-empty {
    padding: 16px; text-align: center; color: var(--gray-500);
    border: 2px dashed var(--border); border-radius: var(--radius);
}
.sfe-et-segment {
    display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; margin-bottom: 8px;
    background: #fff; border: 1px solid var(--border); border-radius: var(--radius); cursor: grab;
}
.sfe-et-segment.is-dragging { opacity: 0.55; }
.sfe-et-handle { color: var(--gray-400); user-select: none; }
.sfe-et-segment-body { flex: 1; min-width: 0; }
.sfe-et-segment-body strong {
    display: block; font-size: 12px; text-transform: uppercase; letter-spacing: 0.04em;
    color: var(--gray-500); margin-bottom: 6px;
}
.sfe-et-field { display: block; margin-bottom: 6px; font-size: 12px; color: var(--gray-600); }
.sfe-et-text-input { font-family: ui-monospace, monospace; font-size: 13px; }
.sfe-et-add { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding-top: 8px; border-top: 1px solid var(--border); }
.sfe-et-add-label { font-size: 12px; font-weight: 600; color: var(--gray-600); }
.sfe-et-palette { display: flex; flex-wrap: wrap; gap: 6px; }
.sfe-et-preview-pane {
    border: 1px solid var(--border); border-radius: var(--radius); padding: 12px; background: #fff;
}
.sfe-et-preview-pane h4 { margin: 0 0 10px; font-size: 13px; color: var(--gray-600); }
.sfe-et-preview-frame {
    padding: 12px; background: #f1f5f9; border-radius: var(--radius); max-height: 480px; overflow: auto;
}
.sfe-et-source { width: 100%; margin-top: 8px; font-family: ui-monospace, monospace; font-size: 13px; }
.form-group-email-builder { grid-column: 1 / -1; }

.form-footer {
    display: flex; gap: 8px;
    margin-top: 20px;
    padding-top: 20px;
}

.form-actions-bar {
    display: flex; gap: 8px;
    margin-bottom: 16px;
}

.inline-form { display: inline; }

/* Statusbar */
.statusbar {
    display: flex;
    gap: 0;
    margin-bottom: 20px;
    background: #fff;
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow);
}

.status-step {
    flex: 1;
    padding: 12px 16px;
    text-align: center;
    font-size: 12px;
    font-weight: 500;
    color: var(--gray-400);
    background: var(--gray-50);
    border-right: 1px solid var(--gray-200);
    position: relative;
}

.status-step:last-child { border-right: none; }
.status-step.done { background: var(--primary-light); color: var(--primary); }
.status-step.active { background: var(--primary); color: #fff; font-weight: 600; }

/* Tables */
.table-responsive { overflow-x: auto; }

.data-table {
    width: 100%;
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    border-collapse: collapse;
    overflow: hidden;
}

.data-table th {
    text-align: left;
    padding: 12px 16px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-500);
    background: var(--gray-50);
    border-bottom: 1px solid var(--gray-200);
}

.data-table td {
    padding: 12px 16px;
    border-bottom: 1px solid var(--gray-100);
    font-size: 13px;
}

.data-table tbody tr:hover { background: var(--gray-50); }
.clickable-row { cursor: pointer; }
.list-row-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 4px;
    white-space: nowrap;
}
.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 6px;
    border: 1px solid var(--gray-200, #e2e8f0);
    background: #fff;
    color: var(--gray-600, #475569);
    text-decoration: none;
    padding: 0;
}
.btn-icon:hover {
    background: var(--gray-50, #f8fafc);
    color: var(--sfe-primary, #007BFF);
    border-color: var(--primary-light, #E8F4FF);
}
.btn-icon .icon { width: 16px; height: 16px; }
.form-report-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    margin: -4px 0 12px;
    padding: 0 4px;
}
.form-actions-bar + .form-report-actions {
    margin-top: 8px;
}
.empty-state { text-align: center; color: var(--gray-400); padding: 40px !important; }

/* Dashboard */
.dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 20px;
    margin-bottom: 32px;
}

.stat-card {
    background: #fff;
    border-radius: var(--radius);
    padding: 20px;
    box-shadow: var(--shadow);
    position: relative;
    overflow: hidden;
}

.stat-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
}

.stat-primary::before { background: var(--primary); }
.stat-success::before { background: var(--success); }
.stat-warning::before { background: var(--warning); }
.stat-info::before { background: var(--info); }

.stat-icon {
    width: 40px; height: 40px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    margin-bottom: 12px;
}

.stat-primary .stat-icon { background: var(--primary-light); color: var(--primary); }
.stat-success .stat-icon { background: var(--success-light); color: var(--success); }
.stat-warning .stat-icon { background: var(--warning-light); color: var(--warning); }
.stat-info .stat-icon { background: var(--info-light); color: var(--info); }

.stat-label { font-size: 12px; color: var(--gray-500); display: block; }
.stat-value { font-size: 28px; font-weight: 700; color: var(--gray-900); }

.stat-link {
    display: inline-block;
    margin-top: 12px;
    font-size: 12px;
    color: var(--primary);
    text-decoration: none;
    font-weight: 500;
}

.quick-actions, .flow-info {
    background: #fff;
    border-radius: var(--radius);
    padding: 24px;
    box-shadow: var(--shadow);
    margin-bottom: 24px;
}

.quick-actions h2, .flow-info h2 {
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 16px;
    color: var(--gray-900);
}

.action-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
}

.action-card {
    display: flex; flex-direction: column; align-items: center; gap: 8px;
    padding: 20px;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    text-decoration: none;
    color: var(--gray-700);
    transition: all .15s;
}

.action-card:hover {
    border-color: var(--primary);
    background: var(--primary-light);
    color: var(--primary);
}

.action-card .icon { width: 24px; height: 24px; }

.flow-diagram {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.flow-step {
    padding: 10px 20px;
    background: var(--primary-light);
    color: var(--primary);
    border-radius: 20px;
    font-weight: 500;
    font-size: 13px;
}

.flow-arrow { color: var(--gray-400); font-size: 18px; }
.flow-note { text-align: center; color: var(--gray-500); font-size: 13px; }

/* Auth pages (login, forgot/reset password) */
.auth-page {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--gray-50);
}

.auth-hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 48px;
    overflow: hidden;
    color: #fff;
}

.auth-hero-bg {
    position: absolute;
    inset: 0;
    background: linear-gradient(145deg, #0f172a 0%, #1e3a5f 35%, #2563eb 70%, var(--sfe-primary) 100%);
}

.auth-hero-bg::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 20% 80%, rgba(0, 123, 255, .35) 0%, transparent 50%),
        radial-gradient(circle at 80% 20%, rgba(37, 99, 235, .4) 0%, transparent 45%);
}

.auth-hero-inner {
    position: relative;
    max-width: 420px;
    z-index: 1;
}

.auth-hero-brand { margin-bottom: 48px; }

.auth-hero-brand h1 {
    font-size: 32px;
    font-weight: 700;
    margin: 20px 0 8px;
    letter-spacing: -.02em;
}

.auth-hero-brand p {
    font-size: 16px;
    color: rgba(255, 255, 255, .75);
    line-height: 1.6;
}

.brand-icon-xl {
    width: 64px;
    height: 64px;
    font-size: 18px;
    border-radius: 16px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, .25);
}

.brand-icon-sm {
    width: 44px;
    height: 44px;
    font-size: 14px;
    border-radius: 12px;
}

.auth-features {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.auth-features li {
    display: flex;
    align-items: flex-start;
    gap: 16px;
}

.auth-feature-icon {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .15);
    border-radius: 12px;
    backdrop-filter: blur(8px);
}

.auth-feature-icon svg { width: 22px; height: 22px; }

.auth-features strong {
    display: block;
    font-size: 15px;
    font-weight: 600;
    margin-bottom: 2px;
}

.auth-features span {
    font-size: 13px;
    color: rgba(255, 255, 255, .65);
    line-height: 1.5;
}

.auth-hero-footer {
    margin-top: 48px;
    font-size: 12px;
    color: rgba(255, 255, 255, .45);
}

.auth-main {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px 24px;
}

.auth-card {
    width: 100%;
    max-width: 420px;
    background: #fff;
    border-radius: 20px;
    padding: 40px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, .04), 0 20px 48px rgba(0, 0, 0, .08);
    border: 1px solid var(--gray-100);
}

.auth-back {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 500;
    color: var(--gray-500);
    text-decoration: none;
    margin-bottom: 24px;
    transition: color .15s;
}

.auth-back svg { width: 16px; height: 16px; }
.auth-back:hover { color: var(--primary); }

.auth-header { margin-bottom: 28px; }

.auth-header-brand { display: none; }

.auth-header h2 {
    font-size: 26px;
    font-weight: 700;
    color: var(--gray-900);
    margin-bottom: 6px;
    letter-spacing: -.02em;
}

.auth-header p {
    font-size: 14px;
    color: var(--gray-500);
    line-height: 1.5;
}

.auth-form .form-group { margin-bottom: 20px; }

.form-label-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 6px;
}

.form-label-row label { margin-bottom: 0; }

.auth-link {
    font-size: 13px;
    font-weight: 500;
    color: var(--primary);
    text-decoration: none;
    white-space: nowrap;
}

.auth-link:hover { color: var(--primary-dark); text-decoration: underline; }

.input-group {
    position: relative;
    display: flex;
    align-items: center;
}

.input-icon {
    position: absolute;
    left: 14px;
    color: var(--gray-400);
    pointer-events: none;
    display: flex;
}

.input-icon svg { width: 18px; height: 18px; }

.auth-form .input-group .form-control {
    padding-left: 44px;
    padding-right: 44px;
    height: 48px;
    border-radius: 12px;
    border-color: var(--gray-200);
    font-size: 14px;
    transition: border-color .15s, box-shadow .15s;
}

.auth-form .input-group .form-control:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px var(--primary-light);
}

.input-toggle {
    position: absolute;
    right: 4px;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    color: var(--gray-400);
    cursor: pointer;
    border-radius: 8px;
    transition: color .15s, background .15s;
}

.input-toggle svg { width: 18px; height: 18px; }
.input-toggle .icon-hide { display: none; }
.input-toggle.is-visible .icon-show { display: none; }
.input-toggle.is-visible .icon-hide { display: block; }
.input-toggle:hover { color: var(--gray-600); background: var(--gray-100); }

.btn-lg {
    height: 48px;
    font-size: 15px;
    font-weight: 600;
    border-radius: 12px;
}

.form-hint {
    margin-top: 8px;
    font-size: 12px;
    color: var(--gray-500);
    line-height: 1.5;
}

.password-rules {
    list-style: none;
    margin: -4px 0 20px;
    padding: 12px 16px;
    background: var(--gray-50);
    border-radius: 10px;
    font-size: 12px;
    color: var(--gray-600);
}

.password-rules li {
    position: relative;
    padding-left: 16px;
    margin-bottom: 4px;
}

.password-rules li::before {
    content: '•';
    position: absolute;
    left: 0;
    color: var(--primary);
}

.password-rules li:last-child { margin-bottom: 0; }

.auth-empty-state {
    text-align: center;
    padding: 12px 0;
}

.auth-empty-icon {
    width: 56px;
    height: 56px;
    margin: 0 auto 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--danger-light);
    color: var(--danger);
    border-radius: 50%;
}

.auth-empty-icon svg { width: 28px; height: 28px; }

.auth-empty-state p {
    color: var(--gray-600);
    margin-bottom: 24px;
    line-height: 1.6;
}

.auth-dev-hint {
    margin-top: 12px;
    font-size: 12px;
    color: var(--gray-500);
}

.auth-dev-link {
    font-size: 12px;
    word-break: break-all;
}

.auth-dev-link a { color: var(--primary); }

.alert {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 16px;
    border-radius: 10px;
    margin-bottom: 20px;
    font-size: 13px;
    line-height: 1.5;
}

.alert svg {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin-top: 1px;
}

.alert-error { background: var(--danger-light); color: var(--danger); }
.alert-success { background: var(--success-light); color: var(--success); }

.form-notice-panel {
    margin: 0 0 20px;
    padding: 14px 16px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: #f8fafc;
    font-size: 13px;
    line-height: 1.5;
}
.form-notice-title { margin: 0 0 10px; font-size: 14px; font-weight: 600; }
.form-notice-list { margin: 0; padding-left: 18px; }
.form-notice-list li + li { margin-top: 8px; }
.form-notice-meta { color: var(--text-muted); font-size: 12px; }
.form-notice-hint { margin: 10px 0 0; color: var(--text-muted); font-size: 12px; }

.portal-share-layout {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    align-items: flex-start;
}
.portal-share-main { flex: 1; min-width: 240px; }
.portal-share-url { margin-bottom: 10px; font-size: 13px; }
.portal-share-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.portal-share-qr {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}
.portal-share-qr img {
    border: 1px solid var(--border);
    border-radius: 8px;
    background: #fff;
}

.documents-acl-tree { margin-top: 16px; }
.documents-acl-tree ul {
    list-style: none;
    margin: 0;
    padding-left: 0;
}
.documents-acl-tree ul ul { padding-left: 20px; }
.documents-acl-tree li { margin: 6px 0; }
.documents-acl-node {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: #fff;
}
.documents-acl-node a { font-weight: 600; }
.documents-acl-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
}
.documents-acl-badge.is-open { background: #ecfdf5; color: #047857; }
.documents-acl-badge.is-restricted { background: #fef3c7; color: #b45309; }
.documents-acl-badge.is-inherited { background: #eff6ff; color: #1d4ed8; }
.documents-acl-badge.is-denied { background: #fef2f2; color: #b91c1c; }
.documents-acl-perms { font-size: 12px; color: var(--text-muted); }

.documents-folder-list--nested {
    margin-left: calc(var(--folder-depth, 0) * 12px);
    border-left: 1px solid var(--border);
    padding-left: 4px;
}
.documents-folder-list--nested .documents-folder-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 140px;
}
.documents-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin-bottom: 12px;
    font-size: 13px;
    color: var(--text-muted);
}
.documents-breadcrumb a { color: var(--primary); text-decoration: none; }
.documents-breadcrumb-sep { color: var(--gray-400); }
.documents-subfolders { margin-bottom: 20px; }
.documents-subfolders h4 { margin: 0 0 10px; font-size: 14px; }
.documents-subfolder-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 10px;
}
.documents-subfolder-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: #fff;
    text-decoration: none;
    color: inherit;
}
.documents-subfolder-card:hover { border-color: var(--primary); background: var(--primary-light, #eff6ff); }
.documents-subfolder-name { font-weight: 600; font-size: 13px; }
.documents-subfolder-meta { font-size: 12px; color: var(--text-muted); }
.portal-share-actions .inline-form { display: inline-block; }

.crm-stats--compact { margin-top: 0; }
.industries-sector-stats .crm-stat-card { min-width: 120px; }

.sfe-bar-chart {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    min-height: 180px;
    padding: 12px 4px 0;
    overflow-x: auto;
}
.sfe-bar-chart-item {
    flex: 1 1 48px;
    min-width: 44px;
    max-width: 72px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}
.sfe-bar-chart-track {
    width: 100%;
    height: 120px;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    background: var(--gray-100, #f3f4f6);
    border-radius: 8px 8px 4px 4px;
    padding: 4px;
}
.sfe-bar-chart-bar {
    width: 100%;
    max-width: 36px;
    background: var(--primary, #2563eb);
    border-radius: 6px 6px 2px 2px;
    min-height: 4px;
}
.sfe-bar-chart-value {
    font-size: 12px;
    font-weight: 600;
    color: var(--text);
}
.sfe-bar-chart-label {
    font-size: 11px;
    color: var(--text-muted);
    text-align: center;
    line-height: 1.2;
}

.documents-move-form {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
    min-width: 180px;
}
.documents-move-form select { max-width: 140px; }
.documents-table tr.is-dragging { opacity: 0.55; }
.documents-subfolder-card.is-drop-target {
    outline: 2px dashed var(--primary);
    background: var(--primary-light, #eff6ff);
}

.portal-access-history {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid var(--border);
}
.portal-access-history-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
}
.portal-access-log-table { font-size: 12px; margin-top: 8px; }
.portal-access-log-table th,
.portal-access-log-table td { padding: 6px 8px; }

.documents-check-col { width: 36px; text-align: center; }
.documents-batch-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}
.documents-batch-bar .marketplace-batch-info strong { font-size: 18px; }
.documents-batch-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
}

.industries-coverage-bar {
    display: inline-block;
    min-width: 72px;
    padding: 4px 8px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--primary, #2563eb) var(--coverage), var(--gray-100, #f3f4f6) var(--coverage));
    font-size: 12px;
    font-weight: 600;
    text-align: center;
}
.industries-bundle-comparison .data-table { margin-top: 10px; }
.industries-bundle-link { font-weight: 600; text-decoration: none; }
.industries-bundle-link:hover { text-decoration: underline; }
.industries-bundle-detail .industries-module-table { margin-top: 8px; }
.industries-bundle-detail .calendar-dashboard-header { margin-bottom: 16px; }
.industries-panel-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 12px;
    margin-bottom: 10px;
}
.industries-panel-header h3 { margin: 0; }
.industries-detail-filters { margin: 12px 0 16px; }
.industries-coverage-alerts .industries-alert-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.industries-coverage-alerts .industries-alert-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
}
.industries-coverage-bar.is-low {
    background: linear-gradient(90deg, #dc2626 var(--coverage), var(--gray-100, #f3f4f6) var(--coverage));
}
.portal-access-summary .portal-access-config-list {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.portal-access-digest-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
}
.documents-archived .documents-restore-one { display: inline; }
.documents-inline-action { display: inline-block; margin-right: 4px; }
.portal-access-filters { margin-bottom: 16px; }
.portal-responsible-chart { margin-bottom: 16px; }
.portal-daily-chart { margin-bottom: 16px; }
.portal-week-comparison { margin-bottom: 16px; }
.sfe-bar-chart--compare {
    max-width: 280px;
    margin-top: 12px;
}
.sfe-bar-chart-bar.is-muted {
    background: linear-gradient(180deg, #9ca3af, #d1d5db);
}
.industries-bundle-filter-chips { margin-bottom: 12px; }
.industries-heatmap-cell-link {
    display: inline-block;
    text-decoration: none;
    color: inherit;
}
.industries-heatmap-cell-link:hover .industries-heatmap-cell {
    outline: 2px solid var(--primary, #2563eb);
    outline-offset: 1px;
}
.industries-heatmap-cell-detail { margin-bottom: 16px; }
.industries-heatmap-date-link { color: inherit; text-decoration: underline; font-weight: 500; }
.industries-heatmap-timeline { margin-bottom: 16px; }
.industries-heatmap-timeline-chart { gap: 12px; }
.industries-timeline-bundle {
    display: grid;
    grid-template-columns: minmax(100px, 140px) 1fr auto auto;
    align-items: center;
    gap: 8px 12px;
}
.industries-timeline-bars { display: flex; gap: 12px; align-items: flex-end; }
.industries-timeline-bar-group { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.industries-timeline-track { height: 48px; width: 28px; }
.industries-timeline-pct { font-size: 0.7rem; color: var(--gray-600, #6b7280); }
.app-badge-warning { background: #f59e0b; color: #fff; padding: 2px 8px; border-radius: 4px; font-size: 0.75rem; }
.portal-responsible-alert-history { margin-top: 16px; }
.portal-my-account-panel { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--gray-200, #e5e7eb); }
.documents-rotated-archive { margin-top: 16px; }
.documents-rotated-purge-age { margin-top: 8px; }
.documents-jsonl-preview { margin-bottom: 16px; }
.documents-jsonl-search { margin: 16px 0; gap: 12px; align-items: end; }
.documents-jsonl-search-actions { display: flex; gap: 8px; align-items: center; }
.documents-jsonl-file-chips { margin-bottom: 12px; }
.documents-jsonl-file-meta { margin-bottom: 12px; }
.documents-jsonl-trash-summary { margin-bottom: 16px; }
.documents-jsonl-action-summary { margin-bottom: 8px; }
.documents-jsonl-action-summary-hint { margin: 0 0 12px; }
.documents-jsonl-action-summary-export { margin: 0 0 16px; }
.documents-jsonl-action-other {
    cursor: default;
    opacity: 0.85;
}
.portal-pref-change-history { margin-top: 16px; }
.portal-pref-history-filters { margin-bottom: 12px; }
.portal-pref-source-summary { margin-bottom: 12px; }
.portal-pref-source-summary .crm-stat-card { text-decoration: none; color: inherit; }
.portal-pref-history-pagination { margin-top: 12px; }
.industries-comparison-sector-summary { margin-bottom: 16px; }
.industries-coverage-min-filters { margin-bottom: 8px; }
.industries-coverage-sort-filters { margin-bottom: 12px; }
.industries-comparison-sector-card {
    text-decoration: none;
    color: inherit;
    min-width: 140px;
}
.industries-comparison-sector-meta {
    display: block;
    margin-top: 4px;
    font-size: 12px;
}
.industries-recent-install-filters { margin-bottom: 12px; }
.portal-bulk-pref-bar { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; margin-bottom: 12px; }
.industries-recent-install-item { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.portal-pref-filters { margin-top: 8px; }
.portal-pref-filter-active { margin-bottom: 12px; }
.portal-alert-pref-summary { margin-bottom: 16px; }
.portal-alert-history { margin-top: 16px; }
.portal-access-by-responsible { margin-bottom: 16px; }
.industries-heatmap-compare { margin-bottom: 16px; }
.industries-heatmap-compare-chart { max-width: 320px; }
.industries-compare-table { margin-top: 12px; }
.portal-week-alert-reasons { margin: 8px 0 0 1.2rem; }
.sfe-bar-chart--daily {
    overflow-x: auto;
    flex-wrap: nowrap;
    justify-content: flex-start;
    gap: 4px;
    padding-bottom: 4px;
}
.sfe-bar-chart--daily .sfe-bar-chart-item {
    min-width: 28px;
    flex: 0 0 auto;
}
.sfe-bar-chart--daily .sfe-bar-chart-label {
    font-size: 0.65rem;
    white-space: nowrap;
}
.documents-trash-admin-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}
.industries-coverage-heatmap { margin-bottom: 16px; }
.industries-heatmap-scroll { overflow-x: auto; margin-bottom: 8px; }
.industries-heatmap-table {
    border-collapse: collapse;
    font-size: 0.8125rem;
    min-width: 100%;
}
.industries-heatmap-table th,
.industries-heatmap-table td {
    padding: 4px 6px;
    text-align: center;
    vertical-align: middle;
    border: 1px solid var(--gray-200, #e5e7eb);
}
.industries-heatmap-table th[scope="row"] {
    text-align: left;
    white-space: nowrap;
    font-weight: 500;
}
.industries-heatmap-cell {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    min-height: 1.75rem;
    padding: 2px 4px;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 600;
    color: #fff;
}
.industries-heatmap-cell.is-empty { background: #e5e7eb; color: #6b7280; }
.industries-heatmap-cell.is-low { background: #dc2626; }
.industries-heatmap-cell.is-mid { background: #ea580c; }
.industries-heatmap-cell.is-good { background: #ca8a04; }
.industries-heatmap-cell.is-high { background: #16a34a; }
.industries-heatmap-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}
.sfe-bar-chart--horizontal {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.sfe-bar-chart-item--horizontal {
    display: grid;
    grid-template-columns: minmax(100px, 140px) 1fr auto auto;
    align-items: center;
    gap: 8px 12px;
}
.sfe-bar-chart-track--horizontal {
    height: 10px;
    min-width: 80px;
    background: var(--gray-100, #f3f4f6);
    border-radius: 999px;
    overflow: hidden;
}
.sfe-bar-chart-track--horizontal .sfe-bar-chart-bar {
    height: 100%;
    min-height: 0;
    background: linear-gradient(90deg, #2563eb, #3b82f6);
    border-radius: 999px;
}
.industries-delta { font-weight: 600; }
.industries-delta.is-up { color: #059669; }
.industries-delta.is-down { color: #dc2626; }
.industries-coverage-history .data-table { margin-top: 8px; }
.industries-coverage-timeline { margin-bottom: 16px; }
.sfe-bar-chart--coverage .sfe-bar-chart-bar.is-coverage {
    background: linear-gradient(180deg, #2563eb, #3b82f6);
}
.documents-empty-trash-form { display: inline-block; }

.industry-filter-chips { margin-bottom: 16px; }

.sector-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 16px;
}
.sector-chip {
    display: inline-flex;
    align-items: center;
    padding: 6px 12px;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: #fff;
    color: var(--text);
    font-size: 13px;
    text-decoration: none;
}
.sector-chip.is-active {
    border-color: var(--primary);
    background: var(--primary-light, #eff6ff);
    color: var(--primary);
    font-weight: 600;
}
.sector-chip-group {
    display: inline-flex;
    align-items: stretch;
}
.sector-chip-group .sector-chip {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.sector-chip-link {
    display: inline-flex;
    align-items: center;
    padding: 6px 10px;
    font-size: 12px;
    border: 1px solid var(--border);
    border-left: none;
    border-radius: 0 999px 999px 0;
    color: var(--text-muted, var(--gray-600));
    text-decoration: none;
    background: #fff;
}
.sector-chip-link:hover {
    background: var(--primary-light, #eff6ff);
    color: var(--primary);
}
.o_app_sector_tag {
    display: inline-block;
    margin-bottom: 6px;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.06);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* Legacy login aliases */
.login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: var(--gray-50); }
.login-container { width: 100%; max-width: 420px; padding: 20px; }
.login-card { background: #fff; border-radius: 16px; padding: 40px; box-shadow: var(--shadow-lg); }
.login-brand { text-align: center; margin-bottom: 32px; }
.login-brand h1 { font-size: 24px; margin-bottom: 4px; }
.login-brand p { color: var(--gray-500); font-size: 14px; }
.login-form .form-group { margin-bottom: 20px; }
.login-footer { text-align: center; margin-top: 20px; font-size: 12px; color: var(--gray-400); }
.login-footer code { background: var(--gray-100); padding: 2px 6px; border-radius: 4px; }

/* Switch toggle */
.switch { position: relative; display: inline-block; width: 44px; height: 24px; }
.switch input { opacity: 0; width: 0; height: 0; }
.slider {
    position: absolute; cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background: var(--gray-300);
    border-radius: 24px;
    transition: .2s;
}
.slider::before {
    content: '';
    position: absolute;
    height: 18px; width: 18px;
    left: 3px; bottom: 3px;
    background: #fff;
    border-radius: 50%;
    transition: .2s;
}
.switch input:checked + .slider { background: var(--primary); }
.switch input:checked + .slider::before { transform: translateX(20px); }

@media (max-width: 768px) {
    .auth-page { grid-template-columns: 1fr; }
    .auth-hero { display: none; }
    .auth-header-brand { display: block; margin-bottom: 20px; }
    .auth-card { padding: 28px 24px; border-radius: 16px; box-shadow: var(--shadow); }
    .auth-main { padding: 20px 16px; align-items: flex-start; padding-top: 48px; }
    .sidebar { transform: translateX(-100%); }
    .main-content { margin-left: 0; }
    .form-grid { grid-template-columns: 1fr; }
    .topbar { padding: 16px; }
    .content-area { padding: 16px; }
}

/* Line Editor */
.line-editor { margin-top: 24px; background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 20px; }
.line-editor-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.line-editor-header h3 { font-size: 15px; font-weight: 600; }

.sale-upsell-panel {
    margin-top: 20px;
    padding: 18px 20px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: var(--radius);
}
.sale-upsell-header h3 { margin: 0 0 4px; font-size: 15px; font-weight: 600; }
.sale-upsell-group { margin-top: 16px; }
.sale-upsell-group h4 { margin: 0 0 10px; font-size: 13px; color: #64748b; font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; }
.sale-upsell-cards { display: flex; flex-wrap: wrap; gap: 10px; }
.sale-upsell-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 220px;
    max-width: 320px;
    flex: 1 1 220px;
    padding: 12px 14px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
}
.sale-upsell-card--added { opacity: 0.55; border-color: #86efac; background: #f0fdf4; }
.sale-upsell-card-body { display: grid; gap: 2px; min-width: 0; }
.sale-upsell-card-body strong { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sale-upsell-code { font-size: 12px; color: #64748b; }
.sale-upsell-price { font-size: 13px; font-weight: 600; color: #2563eb; }
.line-table input.form-control { padding: 6px 8px; font-size: 12px; }
.line-table select.form-control { padding: 6px 8px; font-size: 12px; min-width: 140px; }
.totals-row td { background: var(--gray-50); }

/* Auth extras + users (SFE) */
.auth-footer-text {
    margin-top: 24px;
    text-align: center;
    font-size: 14px;
    color: var(--gray-500);
}

.field-hint {
    margin: 6px 0 0;
    font-size: 12px;
    color: var(--gray-500);
}

.field-hint-env {
    color: var(--warning, #d97706);
}

.settings-intro {
    margin: 0 0 20px;
    font-size: 14px;
    color: var(--gray-600);
    max-width: 720px;
}

.settings-section {
    margin-bottom: 28px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--gray-200);
}

.settings-section-title {
    margin: 0 0 16px;
    font-size: 18px;
}

.settings-form .form-actions {
    margin-top: 8px;
}

/* Ajustes patrón SFE (Opciones generales / Usuarios y compañías) */
.o_settings_app {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin: 0;
    background: #fff;
}

.o_settings_body {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 0;
    align-items: stretch;
    padding: 0;
    background: #f0f0f0;
    min-height: calc(100vh - 92px);
}

.o_settings_body:not(:has(.o_settings_sidebar)) {
    grid-template-columns: minmax(0, 1fr);
}

.o_settings_main {
    flex: 1;
    min-width: 0;
    padding: 16px 20px;
}

.o_settings_control_panel {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 16px;
    padding: 0 20px;
    background: #fff;
    border-bottom: 1px solid var(--gray-200);
    min-height: 48px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8);
}

.o_settings_control_panel .o_cp_center {
    flex: 1 1 auto;
    display: flex;
    justify-content: center;
    align-items: flex-end;
    min-width: 0;
    align-self: stretch;
}

.o_settings_control_panel .o_cp_left {
    padding: 8px 0;
}

.o_settings_control_panel .o_cp_right {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
    padding: 8px 0;
}

.o_settings_control_panel_actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.o_settings_control_panel_search {
    position: relative;
    flex: 0 1 240px;
    min-width: 180px;
    max-width: 320px;
}

.o_settings_search_icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    color: var(--gray-400);
    pointer-events: none;
}

.o_settings_search_input {
    padding-left: 36px;
    width: 100%;
}

.o_settings_module_title {
    margin: 0 0 20px;
    font-size: 22px;
    font-weight: 600;
    color: var(--gray-900);
}

.o_setting_about_name { margin: 0 0 4px; font-size: 15px; }

.o_setting_about_copy { margin-top: 8px; }

.o_settings_sidebar {
    flex: 0 0 220px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    background: #fff;
    border-right: 1px solid var(--gray-200);
    padding: 12px 0 24px;
    min-height: calc(100vh - 92px);
}

.o_settings_sidebar_empty {
    margin: 8px 16px 0;
    font-size: 12px;
    line-height: 1.45;
    color: var(--gray-500);
}

.o_settings_sidebar_item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    font-size: 13px;
    font-weight: 500;
    color: var(--gray-600);
    text-decoration: none;
    border-radius: 6px;
    border-left: 3px solid transparent;
}

.o_settings_sidebar_item .icon { width: 16px; height: 16px; }

.o_settings_sidebar_item:hover {
    background: var(--gray-50);
    color: var(--primary);
}

.o_settings_sidebar_item.is-active {
    background: rgba(0, 123, 255, .08);
    color: var(--sfe-primary);
    border-left-color: var(--sfe-primary);
}

.o_settings_sidebar_item--child {
    padding-left: 20px;
    font-weight: 400;
    font-size: 12px;
}

.o_settings_sidebar_group { margin-top: 8px; }

.o_settings_sidebar_group_label {
    display: block;
    padding: 6px 12px 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-400);
}

.o_settings_main {
    flex: 1;
    min-width: 0;
}

.o_settings_boxes {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin-bottom: 24px;
}

.o_setting_box {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    margin-bottom: 12px;
    overflow: hidden;
}

.o_setting_box_header {
    padding: 14px 20px;
    border-bottom: 1px solid var(--gray-100);
    background: var(--gray-50);
}

.o_setting_box_header h2 {
    margin: 0;
    font-size: 15px;
    font-weight: 600;
    color: var(--gray-800);
}

.o_setting_box_body {
    padding: 16px 20px;
}

.o_setting_box_body--split {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
    align-items: flex-start;
    justify-content: space-between;
}

.o_setting_box_col { flex: 1 1 280px; min-width: 200px; }

.o_setting_box_col--stat {
    flex: 0 1 auto;
    text-align: right;
}

.o_setting_box_col--end { text-align: right; }

.o_setting_box_subtitle {
    margin: 0 0 10px;
    font-size: 13px;
    font-weight: 600;
    color: var(--gray-700);
}

.o_invite_user_form {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    max-width: 480px;
}

.o_invite_user_form .form-control { flex: 1 1 220px; }

.o_setting_stat {
    margin: 0 0 8px;
    font-size: 14px;
    color: var(--gray-600);
}

.o_setting_stat strong {
    display: block;
    font-size: 28px;
    font-weight: 700;
    color: var(--gray-900);
    line-height: 1.2;
}

.o_setting_company_name { margin: 0 0 6px; font-size: 15px; }

.o_setting_company_address {
    margin: 0 0 8px;
    font-size: 13px;
    color: var(--gray-600);
    font-style: normal;
    line-height: 1.5;
}

.o_setting_company_vat {
    margin: 0 0 10px;
    font-size: 13px;
    color: var(--gray-600);
}

.o_settings_link_list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.o_settings_link_list a {
    font-weight: 500;
    color: var(--primary);
    text-decoration: none;
}

.o_settings_link_list a:hover { text-decoration: underline; }

.o_settings_users_list_header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}
.o_settings_entity_list_header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}
.o_settings_entity_list .list-view {
    margin-top: 0;
}

.o_settings_company_form .o_company_header,
.o_settings_user_form .o_company_header {
    display: flex;
    align-items: flex-start;
    gap: 24px;
    margin-bottom: 16px;
    padding: 20px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}
.o_settings_company_form .o_company_logo,
.o_settings_user_form .o_company_logo {
    flex-shrink: 0;
    text-align: center;
    position: relative;
}
.o_settings_company_form .o_company_logo_label,
.o_settings_user_form .o_company_logo_label {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 120px;
    height: 120px;
    border: 2px dashed var(--border);
    border-radius: var(--radius);
    cursor: pointer;
    overflow: hidden;
    background: #fff;
}
.o_settings_user_form .o_company_logo_label {
    border-radius: 50%;
}
.o_settings_company_form .o_company_logo_img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
.o_settings_user_form .o_company_logo_img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.o_settings_company_form .o_company_logo_placeholder,
.o_settings_user_form .o_company_logo_placeholder {
    font-size: 13px;
    color: var(--text-muted);
    padding: 8px;
    text-align: center;
}
.o_settings_company_form .o_company_logo_input,
.o_settings_user_form .o_company_logo_input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.o_settings_company_form .o_company_logo_btn,
.o_settings_user_form .o_company_logo_btn {
    display: inline-block;
    margin-top: 8px;
}
.o_settings_company_form .o_company_logo.is-uploading,
.o_settings_user_form .o_company_logo.is-uploading,
[data-user-avatar].is-uploading {
    opacity: 0.65;
    pointer-events: none;
}
.o_settings_company_form .o_company_logo.is-uploading .o_company_logo_label,
.o_settings_user_form .o_company_logo.is-uploading .o_company_logo_label {
    cursor: wait;
}
.o_settings_company_form .o_company_logo_hint,
.o_settings_user_form .o_company_logo_hint {
    display: block;
    margin-top: 4px;
    font-size: 11px;
}
.o_settings_company_form .o_company_logo_status,
.o_user_avatar_status {
    display: block;
    margin-top: 6px;
    font-size: 12px;
    min-height: 1.2em;
}
.o_settings_company_form .o_company_logo_status.is-info,
.o_user_avatar_status.is-info { color: var(--text-muted); }
.o_settings_company_form .o_company_logo_status.is-success,
.o_user_avatar_status.is-success { color: #047857; }
.o_settings_company_form .o_company_logo_status.is-error,
.o_user_avatar_status.is-error { color: #b91c1c; }
.o_settings_company_form .o_company_name_block,
.o_settings_user_form .o_company_name_block {
    flex: 1;
    min-width: 0;
}
.o_settings_company_form .o_company_name_label,
.o_settings_user_form .o_company_name_label {
    display: block;
    font-size: 13px;
    color: var(--text-muted);
    margin-bottom: 6px;
}
.o_settings_company_form .o_company_name_input,
.o_settings_company_form .o_company_name_block .form-control,
.o_settings_user_form .o_company_name_input,
.o_settings_user_form .o_company_name_block .form-control {
    font-size: 28px;
    font-weight: 600;
    border: none;
    border-bottom: 1px solid transparent;
    padding-left: 0;
    background: transparent;
}
.o_settings_company_form .o_company_name_block .form-control:focus {
    border-bottom-color: var(--sfe-primary);
    box-shadow: none;
}
.o_settings_company_form .o_company_notebook {
    margin-top: 0;
}
.o_settings_company_form .o_company_notebook_tabs {
    margin-bottom: 16px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius);
    padding: 0 12px;
    box-shadow: var(--shadow);
}
.o_settings_company_form .o_company_sections {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.o_settings_company_form .o_company_section.o_setting_box {
    margin-bottom: 0;
    box-shadow: var(--shadow);
}
.o_settings_company_form .o_company_fields_grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px 24px;
    padding: 0;
    background: transparent;
    border-radius: 0;
    box-shadow: none;
}
.o_settings_company_form .form-footer,
.o_settings_company_form .o_company_form_footer {
    margin-top: 16px;
    padding-top: 0;
    border-top: none;
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
}
.o_settings_company_form .o_company_branches_header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.o_settings_company_form .o_company_branches .table-wrap {
    margin: 0;
}
@media (max-width: 768px) {
    .o_settings_company_form .o_company_fields_grid { grid-template-columns: 1fr; }
    .o_settings_company_form .o_company_header,
    .o_settings_user_form .o_company_header { flex-direction: column; align-items: stretch; }
    .o_settings_company_form .o_company_branches_header { flex-wrap: wrap; }
}
.o_settings_company_parent_hint {
    margin-bottom: 12px;
}
.o_company_add_line {
    display: inline-block;
    padding: 8px 0;
    color: var(--sfe-primary, #2563eb);
    text-decoration: none;
    font-weight: 500;
}
.o_company_add_line:hover {
    text-decoration: underline;
}
.o_company_branch_add_row td {
    border-bottom: none;
}
.o_settings_users_search {
    margin-bottom: 12px;
    max-width: 320px;
}
.o_settings_users_table .col-check {
    width: 36px;
}
.o_settings_user_cell {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.o_settings_user_avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}
.o_settings_user_avatar--placeholder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--sfe-primary);
    color: #fff;
    font-size: 12px;
    font-weight: 600;
}
.badge-status.is-confirmed { background: #ecfdf5; color: #047857; }
.badge-status.is-pending { background: #fffbeb; color: #b45309; }
.badge-status.is-inactive { background: #f3f4f6; color: #6b7280; }
.badge-role { background: #eef2ff; color: #4338ca; }

.o_settings_params_form { margin-top: 8px; }

.o_settings_form_actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

.o_color_field {
    display: flex;
    align-items: center;
    gap: 10px;
}

.o_color_picker {
    width: 44px;
    height: 36px;
    padding: 2px;
    border: 1px solid var(--gray-200);
    border-radius: 6px;
    cursor: pointer;
    background: #fff;
}

.o_color_hex { max-width: 120px; font-family: ui-monospace, monospace; font-size: 13px; }

.o_mail_color_preview {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 8px;
}

.o_mail_color_swatches { display: flex; gap: 8px; }

.o_mail_color_dot {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 2px solid #fff;
    box-shadow: 0 0 0 1px var(--gray-300);
}

.o_mail_color_labels { font-size: 13px; color: var(--gray-500); }

.o_mail_button_preview { margin-top: 10px; }

.o_mail_button_sample {
    display: inline-block;
    margin-left: 6px;
    padding: 4px 12px;
    border-radius: 6px;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    vertical-align: middle;
}

.auth-oauth-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 20px 0 16px;
    color: var(--gray-400);
    font-size: 13px;
}

.auth-oauth-divider::before,
.auth-oauth-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--gray-200);
}

.auth-oauth-buttons {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.auth-oauth-btn { margin-bottom: 0; }

.auth-google-btn { margin-bottom: 0; }

.form-captcha { margin-bottom: 16px; }

.form-captcha-turnstile { display: flex; justify-content: center; }

.barcode-lookup-panel {
    margin-bottom: 16px;
    padding: 12px 16px;
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}

.barcode-lookup-preview img { vertical-align: middle; }

.many2many-checkboxes {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.checkbox-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid var(--gray-200);
    border-radius: 999px;
    background: var(--gray-50);
    font-size: 13px;
    cursor: pointer;
    user-select: none;
}

.checkbox-chip:has(input:checked) {
    border-color: var(--primary);
    background: rgba(37, 99, 235, .08);
    color: var(--primary);
}

.checkbox-chip input { accent-color: var(--primary); }

.company-switcher select {
    min-width: 180px;
}

.company-badge {
    display: inline-flex;
    align-items: center;
    padding: 8px 12px;
    border-radius: 8px;
    background: var(--gray-100);
    color: var(--gray-700);
    font-size: 13px;
    font-weight: 500;
}

.api-key-panel {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.api-key-badge,
.api-key-value {
    font-family: ui-monospace, monospace;
    font-size: 12px;
}

.btn-sm {
    padding: 6px 12px;
    font-size: 13px;
}

.user-info a {
    display: block;
    font-size: 12px;
    color: rgba(255, 255, 255, .65);
    text-decoration: none;
}

.user-info a:hover { color: #fff; }
.totals-grand td { background: var(--primary-light); font-size: 14px; }
.text-right { text-align: right; }

/* Security editor (SFE access rights) */
.security-tabs {
    display: flex;
    gap: 4px;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--gray-200);
    padding-bottom: 0;
}

.security-tab {
    padding: 10px 16px;
    font-size: 14px;
    font-weight: 500;
    color: var(--gray-500);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color .15s, border-color .15s;
}

.security-tab:hover { color: var(--primary); }

.security-tab.active {
    color: var(--primary);
    border-bottom-color: var(--primary);
}

.security-panel {
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 24px;
}

.security-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: flex-end;
    margin-bottom: 20px;
}

.security-toolbar .form-group { min-width: 200px; margin: 0; }

.security-help {
    color: var(--gray-600);
    font-size: 14px;
    margin-bottom: 16px;
    line-height: 1.6;
}

.access-matrix-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.access-matrix .perm-col { width: 72px; text-align: center; }

.access-matrix .perm-header {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    user-select: none;
}

.model-code {
    font-size: 12px;
    background: var(--gray-100);
    padding: 2px 6px;
    border-radius: 4px;
}

.domain-preview {
    font-size: 11px;
    word-break: break-all;
    max-width: 280px;
    display: inline-block;
}

.badge-global {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(37, 99, 235, .1);
    color: var(--primary);
    font-size: 11px;
    font-weight: 600;
}

.code-input {
    font-family: ui-monospace, monospace;
    font-size: 13px;
}

.checkbox-inline {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    cursor: pointer;
}

.security-delete-form {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--gray-200);
}

.btn-danger {
    background: #dc2626;
    color: #fff;
    border: none;
}

.btn-danger:hover { background: #b91c1c; }

/* Company switcher (ERP referencia systray style) */
.company-menu { position: relative; }

.company-menu-trigger {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    background: #fff;
    color: var(--gray-700);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}

.company-menu-trigger:hover {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .1);
}

.company-menu-trigger .icon { width: 18px; height: 18px; color: var(--primary); }

.company-menu-chevron { width: 14px; height: 14px; color: var(--gray-400); }

.company-menu-panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 260px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .12);
    z-index: 200;
    overflow: hidden;
}

.company-menu-header {
    padding: 12px 16px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-500);
    border-bottom: 1px solid var(--gray-100);
}

.company-menu-list { list-style: none; margin: 0; padding: 8px; }

.company-menu-item-form { margin: 0; }

.company-menu-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 10px 12px;
    border: none;
    border-radius: 8px;
    background: transparent;
    text-align: left;
    font-size: 14px;
    color: var(--gray-800);
    cursor: pointer;
}

.company-menu-item:hover { background: var(--gray-50); }

.company-menu-item.is-active {
    background: rgba(37, 99, 235, .08);
    color: var(--primary);
    font-weight: 600;
}

.company-menu-item .icon { width: 16px; height: 16px; }

.company-menu-footer {
    display: block;
    padding: 12px 16px;
    border-top: 1px solid var(--gray-100);
    font-size: 13px;
    color: var(--primary);
    text-decoration: none;
    text-align: center;
}

.company-menu-footer:hover { background: var(--gray-50); }

/* Language switcher (ERP referencia systray style) */
.lang-menu { position: relative; }

.lang-menu-trigger {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 10px;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    background: #fff;
    color: var(--gray-700);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}

.lang-menu-trigger:hover {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .1);
}

.lang-menu-trigger .icon { width: 16px; height: 16px; color: var(--gray-500); }

.lang-menu-code { font-size: 12px; letter-spacing: .04em; }

.lang-menu-panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 220px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .12);
    z-index: 201;
    overflow: hidden;
}

.lang-menu-header {
    padding: 12px 16px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-500);
    border-bottom: 1px solid var(--gray-100);
}

.lang-menu-list { list-style: none; margin: 0; padding: 8px; }

.lang-menu-item-form { margin: 0; }

.lang-menu-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 10px 12px;
    border: none;
    border-radius: 8px;
    background: transparent;
    text-align: left;
    font-size: 14px;
    color: var(--gray-800);
    cursor: pointer;
}

.lang-menu-item:hover { background: var(--gray-50); }

.lang-menu-item.is-active {
    background: rgba(37, 99, 235, .08);
    color: var(--primary);
    font-weight: 600;
}

.lang-menu-item .icon { width: 16px; height: 16px; }

.auth-lang-switch {
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--gray-100);
    display: flex;
    justify-content: center;
}

.auth-lang-switch .lang-menu-panel { right: auto; left: 50%; transform: translateX(-50%); }

/* Apps / módulos (patrón SFE) */
.apps-page { max-width: 1200px; }

.apps-header { margin-bottom: 24px; }

.apps-header h1 { margin: 0 0 8px; font-size: 1.75rem; }

.apps-subtitle { margin: 0; color: var(--gray-600); }

.apps-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 16px;
}

.app-card {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.app-card.is-installed { border-color: rgba(37, 99, 235, .35); }

.app-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.app-card-head h2 { margin: 0; font-size: 1.1rem; }

.app-badge {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 4px 8px;
    border-radius: 999px;
    white-space: nowrap;
}

.app-badge-installed { background: rgba(34, 197, 94, .12); color: #15803d; }

.app-badge-uninstalled { background: var(--gray-100); color: var(--gray-600); }

.app-badge-parity {
    font-variant-numeric: tabular-nums;
    letter-spacing: .02em;
}

.app-badge-parity-p5 { background: rgba(124, 58, 237, .14); color: #5b21b6; }
.app-badge-parity-p4 { background: rgba(37, 99, 235, .12); color: #1d4ed8; }
.app-badge-parity-p3 { background: rgba(14, 165, 233, .12); color: #0369a1; }
.app-badge-parity-p2 { background: rgba(245, 158, 11, .14); color: #b45309; }
.app-badge-parity-p1 { background: rgba(234, 88, 12, .12); color: #c2410c; }
.app-badge-parity-p0 { background: var(--gray-100); color: var(--gray-600); }

.o_apps_parity_scorecard {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 16px;
    margin: 0 0 12px;
    padding: 12px 16px;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius-md, 8px);
    background: var(--gray-50, #f9fafb);
}

.o_apps_parity_scorecard_main {
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
}

.o_apps_parity_avg {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--sfe-primary, #2563eb);
}

.o_apps_parity_meta {
    font-size: 13px;
    color: var(--gray-500);
}

.o_apps_parity_breakdown {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.o_apps_parity_gap_hint {
    margin: 0;
    flex: 1 1 100%;
    font-size: 13px;
    color: var(--gray-600);
}

.marketplace-card.has-parity-gap {
    outline: 1px dashed rgba(245, 158, 11, .45);
}

.app-summary { margin: 0; color: var(--gray-600); font-size: 14px; line-height: 1.5; }

.app-meta {
    margin: 0;
    display: grid;
    gap: 6px;
    font-size: 13px;
}

.app-meta div { display: flex; gap: 12px; align-items: flex-start; }

.app-meta dt { color: var(--gray-500); flex: 0 0 96px; }

.app-meta dd { margin: 0; color: var(--gray-800); flex: 1; min-width: 0; word-break: break-word; overflow-wrap: anywhere; }

.app-meta dd a { word-break: break-all; }

.app-meta dd code { word-break: break-all; }

.app-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: auto;
    padding-top: 8px;
}

.app-hint { font-size: 12px; color: var(--gray-500); }

/* Marketplace (Marketplace Tecnonube) */
.o_apps_view {
    margin: 0;
    max-width: none;
    width: 100%;
    min-height: calc(100vh - 56px);
    background: #f0f0f0;
}

.o_apps_view.marketplace {
    max-width: none;
}

.o_apps_control_panel {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 16px;
    padding: 8px 20px;
    background: #fff;
    border-bottom: 1px solid var(--gray-200);
    min-height: 48px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8);
}

.o_cp_system_status {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
    flex-wrap: wrap;
}

.o_apps_version_badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    background: var(--primary-light, #E8F4FF);
    color: var(--sfe-primary, #007BFF);
}

.o_apps_upgrade_badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    background: #fff3cd;
    color: #856404;
}

.o_breadcrumb,
.o_apps_breadcrumb {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 14px;
    color: var(--gray-600);
    min-width: 0;
}

.o_breadcrumb_link,
.o_apps_breadcrumb a {
    color: var(--gray-600);
    text-decoration: none;
    font-weight: 500;
    white-space: nowrap;
    transition: color .15s;
}

.o_breadcrumb_app {
    color: var(--sfe-primary);
    font-weight: 600;
}

.o_breadcrumb_app:hover {
    color: var(--primary-dark);
    text-decoration: underline;
}

.o_breadcrumb_link:hover,
.o_apps_breadcrumb a:hover {
    color: var(--sfe-primary);
    text-decoration: underline;
}

.o_breadcrumb_sep,
.o_apps_breadcrumb_sep { color: var(--gray-400); }

.o_breadcrumb_current,
.o_apps_breadcrumb_current {
    color: var(--gray-700);
    font-weight: 500;
    white-space: nowrap;
}

.o_breadcrumb_page {
    color: var(--gray-900);
    font-weight: 600;
}

.o_topbar_breadcrumb_wrap {
    flex: 1;
    min-width: 0;
}

.o_settings_navbar_left .o_breadcrumb,
.o_apps_navbar_left .o_breadcrumb {
    min-width: 0;
}

.o_apps_navbar_app,
.o_apps_navbar_sep,
.o_apps_navbar_crumb {
    display: none;
}

.o_settings_navbar_app {
    display: none;
}

.o_cp_left { flex: 0 0 auto; }

.o_cp_center { flex: 1 1 320px; min-width: 220px; }

.o_apps_search {
    display: flex;
    align-items: stretch;
    gap: 0;
    border: 1px solid var(--gray-300);
    border-radius: 4px;
    background: #fff;
    overflow: hidden;
    width: 100%;
    max-width: 720px;
}

.o_searchview_facet {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    margin: 4px 0 4px 6px;
    background: var(--sfe-primary);
    color: #fff;
    border-radius: 3px;
    font-size: 12px;
    white-space: nowrap;
}

.o_searchview_facet_remove {
    color: rgba(255, 255, 255, .85);
    text-decoration: none;
    font-size: 14px;
    line-height: 1;
    padding: 0 2px;
}

.o_searchview_facet_remove:hover { color: #fff; }

.o_apps_search_input {
    flex: 1;
    border: none;
    outline: none;
    padding: 8px 12px;
    font-size: 14px;
    min-width: 120px;
    background: transparent;
}

.o_cp_right {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
    flex: 0 0 auto;
}

.o_view_switcher {
    display: inline-flex;
    border: 1px solid var(--gray-300);
    border-radius: 4px;
    overflow: hidden;
}

.o_view_switcher_btn,
.marketplace-view-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 30px;
    border: none;
    background: #fff;
    color: var(--gray-500);
    cursor: pointer;
    padding: 0;
}

.o_view_switcher_btn + .o_view_switcher_btn,
.marketplace-view-btn + .marketplace-view-btn {
    border-left: 1px solid var(--gray-300);
}

.o_view_switcher_btn.is-active,
.marketplace-view-btn.is-active {
    background: #fff;
    color: var(--sfe-accent);
    box-shadow: inset 0 0 0 2px var(--sfe-accent);
}

.o_view_switcher_btn .icon,
.marketplace-view-btn .icon { width: 16px; height: 16px; }

.o_apps_settings_wrap { position: relative; }

.o_apps_settings_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 30px;
    border: 1px solid var(--gray-300);
    border-radius: 4px;
    background: #fff;
    color: var(--gray-600);
    cursor: pointer;
    padding: 0;
}

.o_apps_settings_btn .icon { width: 16px; height: 16px; }

.o_apps_settings_panel {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 50;
    width: min(320px, 90vw);
    padding: 16px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .12);
}

.o_apps_settings_panel h3 {
    margin: 0 0 6px;
    font-size: 14px;
}

.o_apps_settings_panel p {
    margin: 0 0 10px;
    font-size: 13px;
    color: var(--gray-600);
}

.o_apps_settings_panel hr {
    margin: 14px 0;
    border: none;
    border-top: 1px solid var(--gray-200);
}

.o_apps_flash { margin: 12px 16px 0; }

.o_apps_body {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 0;
    align-items: stretch;
    width: 100%;
}

.o_apps_sidebar {
    background: #fff;
    border-right: 1px solid var(--gray-200);
    padding: 12px 0 24px;
    min-height: calc(100vh - 110px);
}

.o_apps_sidebar_section + .o_apps_sidebar_section {
    margin-top: 16px;
    padding-top: 12px;
    border-top: 1px solid var(--gray-100);
}

.o_apps_sidebar_title {
    margin: 0 0 6px;
    padding: 0 16px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--gray-500);
}

.o_apps_sidebar_nav {
    display: flex;
    flex-direction: column;
}

.o_apps_sidebar_link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 7px 16px;
    font-size: 14px;
    color: var(--gray-700);
    text-decoration: none;
}

.o_apps_sidebar_link:hover {
    background: var(--gray-50);
    color: var(--primary);
}

.o_apps_sidebar_link.is-active {
    background: rgba(37, 99, 235, .08);
    color: var(--primary);
    font-weight: 600;
}

.o_apps_sidebar_count {
    font-size: 12px;
    color: var(--gray-500);
    font-weight: 400;
}

.o_apps_content {
    padding: 16px;
    min-width: 0;
}

.o_apps_kanban,
.marketplace-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}

[data-marketplace-cards][hidden],
[data-marketplace-list][hidden],
.o_apps_kanban[hidden],
.marketplace-list-wrap[hidden] {
    display: none !important;
}

.o_apps_view.is-list-view .o_apps_content {
    display: block;
}

.o_apps_view.is-list-view .marketplace-list-wrap {
    width: 100%;
}

.o_app_card.is-search-hidden,
.marketplace-list tbody tr.is-search-hidden,
.o_app_card[hidden],
.marketplace-list tbody tr[hidden] {
    display: none !important;
}

.o_app_card {
    display: flex;
    flex-direction: column;
    min-height: 148px;
    padding: 16px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 4px;
    position: relative;
    transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease;
}

.o_app_card:hover {
    box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}

.o_app_card.is-installed { border-color: rgba(34, 197, 94, .35); }

/* Tarjetas premium del marketplace (/apps) */
.o_app_card.marketplace-card {
    min-height: 196px;
    padding: 18px 18px 16px;
    border-radius: 14px;
    border: 1px solid rgba(15, 23, 42, .08);
    background:
        linear-gradient(180deg, rgba(255, 255, 255, .98) 0%, rgba(248, 250, 252, .98) 100%);
    box-shadow:
        0 1px 2px rgba(15, 23, 42, .04),
        0 8px 24px rgba(15, 23, 42, .05);
    overflow: hidden;
}

.o_app_card.marketplace-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(
        90deg,
        var(--app-color, var(--sfe-primary)) 0%,
        color-mix(in srgb, var(--app-color, var(--sfe-primary)) 55%, #fff) 100%
    );
    opacity: .92;
}

.o_app_card.marketplace-card:hover {
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--app-color, var(--sfe-primary)) 22%, var(--gray-200));
    box-shadow:
        0 4px 12px rgba(15, 23, 42, .06),
        0 16px 36px color-mix(in srgb, var(--app-color, var(--sfe-primary)) 14%, transparent);
}

.o_app_card.marketplace-card.is-featured {
    border-color: color-mix(in srgb, var(--app-color, var(--sfe-primary)) 28%, var(--gray-200));
    background:
        linear-gradient(
            165deg,
            color-mix(in srgb, var(--app-color, var(--sfe-primary)) 6%, #fff) 0%,
            #fff 38%,
            rgba(248, 250, 252, .98) 100%
        );
}

.o_app_card.marketplace-card.is-featured::before {
    height: 4px;
}

.o_app_card.marketplace-card.is-installed {
    border-color: rgba(34, 197, 94, .4);
    box-shadow:
        0 1px 2px rgba(34, 197, 94, .08),
        0 8px 24px rgba(34, 197, 94, .08);
}

.marketplace-featured-badge {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #92400e;
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    padding: 3px 9px;
    border-radius: 999px;
    border: 1px solid rgba(245, 158, 11, .28);
    box-shadow: 0 1px 3px rgba(245, 158, 11, .12);
}

.o_app_card.marketplace-card .marketplace-card-icon {
    width: 52px;
    height: 52px;
    border-radius: 13px;
    margin-bottom: 12px;
    background: linear-gradient(
        145deg,
        color-mix(in srgb, var(--app-color, var(--sfe-primary)) 24%, #fff) 0%,
        color-mix(in srgb, var(--app-color, var(--sfe-primary)) 10%, #fff) 100%
    );
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .85),
        0 4px 14px color-mix(in srgb, var(--app-color, var(--sfe-primary)) 18%, transparent);
}

.o_app_card.marketplace-card .marketplace-card-icon .icon {
    width: 28px;
    height: 28px;
}

.o_app_card.marketplace-card .marketplace-card-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 8px;
    margin-bottom: 8px;
}

.marketplace-card-version {
    font-size: 11px;
    font-weight: 600;
    color: var(--gray-500);
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(15, 23, 42, .04);
}

.o_app_card.marketplace-card .o_app_card_title {
    font-size: 16px;
    letter-spacing: -.01em;
}

.o_app_card.marketplace-card .o_app_card_summary {
    font-size: 13px;
    line-height: 1.5;
    color: var(--gray-600);
}

.o_app_card.marketplace-card .marketplace-card-actions {
    margin-top: auto;
    padding-top: 14px;
    border-top: 1px solid rgba(15, 23, 42, .06);
}

.o_app_card_icon,
.marketplace-card-icon {
    width: 48px;
    height: 48px;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--app-color, var(--sfe-primary)) 18%, #fff);
    color: var(--app-color, var(--sfe-primary));
    margin-bottom: 10px;
    flex-shrink: 0;
}

.o_app_card_icon .icon,
.marketplace-card-icon .icon { width: 28px; height: 28px; }

.o_app_card_body,
.marketplace-card-body { flex: 1; min-width: 0; }

.o_app_card_title,
.marketplace-card-body h2,
.marketplace-card-body h3 {
    margin: 0 0 6px;
    font-size: 15px;
    font-weight: 600;
    color: var(--gray-900);
    line-height: 1.3;
}

.o_app_card_summary,
.marketplace-card-body p {
    margin: 0;
    font-size: 13px;
    color: var(--gray-600);
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.o_app_card_actions,
.marketplace-card-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    margin-top: 12px;
    padding-top: 0;
}

.o_app_install_btn {
    background: var(--sfe-primary) !important;
    border-color: var(--sfe-primary) !important;
    min-width: 88px;
}

.o_app_install_btn:hover {
    background: var(--primary-dark) !important;
    border-color: var(--primary-dark) !important;
}

.o_app_learn_more {
    font-size: 13px;
    font-weight: 500;
    color: var(--gray-500);
    text-decoration: none;
    margin-left: auto;
    transition: color .15s ease;
}

.o_app_learn_more:hover {
    color: var(--sfe-primary);
    text-decoration: underline;
}

.o_app_card.marketplace-card .o_app_install_btn {
    border-radius: 8px;
    font-weight: 600;
    box-shadow: 0 2px 8px color-mix(in srgb, var(--sfe-primary) 24%, transparent);
}

.marketplace { max-width: 1280px; }

.marketplace-hero {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 28px;
    padding: 28px 32px;
    border-radius: 16px;
    background: linear-gradient(135deg, var(--sfe-navy) 0%, var(--sfe-primary) 55%, var(--sfe-secondary) 100%);
    color: #fff;
}

.marketplace-hero h1 { margin: 0 0 8px; font-size: 1.85rem; }

.marketplace-hero p { margin: 0; opacity: .92; max-width: 520px; }

.marketplace-import {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 16px;
    margin-bottom: 28px;
}

.marketplace-import-card {
    padding: 20px;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    background: #fff;
}

.marketplace-import-card h2 {
    margin: 0 0 8px;
    font-size: 1.05rem;
}

.marketplace-import-card p {
    margin: 0 0 14px;
    font-size: 14px;
    color: var(--gray-600);
}

.marketplace-upload-form {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}

.marketplace-upload-form .form-control {
    flex: 1 1 200px;
}

.app-badge-remote {
    background: #dbeafe;
    color: #1d4ed8;
}

.marketplace-search {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: min(100%, 340px);
    padding: 10px 14px;
    background: rgba(255, 255, 255, .14);
    border: 1px solid rgba(255, 255, 255, .25);
    border-radius: 12px;
    backdrop-filter: blur(8px);
}

.marketplace-search .icon { width: 18px; height: 18px; color: rgba(255, 255, 255, .85); flex-shrink: 0; }

.marketplace-search input {
    flex: 1;
    border: none;
    background: transparent;
    color: #fff;
    font-size: 15px;
    outline: none;
}

.marketplace-search input::placeholder { color: rgba(255, 255, 255, .65); }

.marketplace-bundles { margin-bottom: 32px; }

.marketplace-bundles h2,
.marketplace-section-hint { margin: 0 0 8px; }

.marketplace-section-hint { color: var(--gray-600); font-size: 14px; margin-bottom: 16px; }

.bundle-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}

.bundle-card {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 14px;
    align-items: center;
    padding: 18px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 14px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .04);
}

.bundle-icon,
.marketplace-card-icon,
.marketplace-detail-icon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--app-color, var(--sfe-primary)) 14%, white);
    color: var(--app-color, var(--sfe-primary));
}

.bundle-icon .icon,
.marketplace-card-icon .icon,
.marketplace-detail-icon .icon { width: 26px; height: 26px; }

.bundle-body h3 { margin: 0 0 4px; font-size: 1rem; }

.bundle-body p { margin: 0; color: var(--gray-600); font-size: 13px; line-height: 1.45; }

.bundle-modules { margin-top: 8px !important; font-size: 12px !important; }

.marketplace-layout {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 24px;
    align-items: start;
}

.marketplace-sidebar {
    position: sticky;
    top: 16px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 14px;
    padding: 16px;
}

.marketplace-sidebar h3 {
    margin: 16px 0 10px;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--gray-500);
}

.marketplace-sidebar h3:first-child { margin-top: 0; }

.marketplace-filters,
.marketplace-categories { display: flex; flex-direction: column; gap: 4px; }

.marketplace-filter,
.marketplace-cat {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 10px;
    border-radius: 8px;
    color: var(--gray-700);
    text-decoration: none;
    font-size: 14px;
}

.marketplace-filter:hover,
.marketplace-cat:hover { background: var(--gray-50); color: var(--primary); }

.marketplace-filter.is-active,
.marketplace-cat.is-active {
    background: rgba(37, 99, 235, .1);
    color: var(--primary);
    font-weight: 600;
}

.marketplace-cat-count {
    font-size: 12px;
    color: var(--gray-500);
    background: var(--gray-100);
    padding: 2px 8px;
    border-radius: 999px;
}

.marketplace-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(272px, 1fr));
    gap: 18px;
}

.marketplace-card {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 14px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease;
}

.marketplace-card:hover {
    box-shadow: 0 8px 24px rgba(0, 0, 0, .08);
    transform: translateY(-2px);
}

.marketplace-card.is-installed { border-color: rgba(34, 197, 94, .35); }

.marketplace-card.is-featured {
    border-color: color-mix(in srgb, var(--app-color, var(--sfe-primary)) 28%, var(--gray-200));
}

.marketplace-card-link {
    display: flex;
    gap: 14px;
    padding: 18px 18px 10px;
    text-decoration: none;
    color: inherit;
    flex: 1;
}

.marketplace-card-body h2 {
    margin: 0 0 6px;
    font-size: 1.05rem;
    color: var(--gray-900);
}

.marketplace-card-body p {
    margin: 0;
    font-size: 13px;
    color: var(--gray-600);
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.marketplace-card-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}

.marketplace-cat-tag {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--app-color, var(--primary));
    background: color-mix(in srgb, var(--app-color, var(--sfe-primary)) 12%, white);
    padding: 3px 9px;
    border-radius: 999px;
    border: 1px solid color-mix(in srgb, var(--app-color, var(--sfe-primary)) 16%, transparent);
}

.marketplace-price {
    font-size: 11px;
    font-weight: 700;
    color: #15803d;
    background: linear-gradient(135deg, rgba(34, 197, 94, .16) 0%, rgba(34, 197, 94, .08) 100%);
    padding: 3px 9px;
    border-radius: 999px;
    border: 1px solid rgba(34, 197, 94, .18);
}

.marketplace-price.is-premium {
    color: #92400e;
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    border-color: rgba(245, 158, 11, .28);
}

.o_app_card.marketplace-card .marketplace-featured-badge {
    font-size: 10px;
    letter-spacing: .04em;
    text-transform: uppercase;
    box-shadow: 0 1px 3px rgba(245, 158, 11, .12);
}

.marketplace-card-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 12px;
    padding: 0 18px 16px;
}

.marketplace-card-actions .app-hint {
    flex: 1 1 100%;
    margin: 0;
    line-height: 1.4;
}

.marketplace-card-actions form { flex-shrink: 0; }

.marketplace-card-actions .btn-outline { margin-left: auto; }

.app-badge-unavailable { background: var(--gray-100); color: var(--gray-600); }

.marketplace-empty {
    grid-column: 1 / -1;
    text-align: center;
    color: var(--gray-500);
    padding: 48px 16px;
}

.marketplace-detail { max-width: 1140px; }

.marketplace-back { display: inline-flex; margin-bottom: 20px; }

.marketplace-detail-header {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 24px;
    align-items: start;
    padding: 28px 30px;
    background:
        linear-gradient(
            135deg,
            #fff 0%,
            color-mix(in srgb, var(--app-color, var(--sfe-primary)) 5%, #fff) 52%,
            color-mix(in srgb, var(--app-color, var(--sfe-primary)) 9%, #f8fafc) 100%
        );
    border: 1px solid color-mix(in srgb, var(--app-color, var(--sfe-primary)) 14%, var(--gray-200));
    border-radius: 18px;
    margin-bottom: 22px;
    box-shadow:
        0 2px 8px rgba(15, 23, 42, .04),
        0 16px 40px color-mix(in srgb, var(--app-color, var(--sfe-primary)) 10%, transparent);
    position: relative;
    overflow: hidden;
}

.marketplace-detail-header::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: linear-gradient(
        90deg,
        var(--app-color, var(--sfe-primary)) 0%,
        color-mix(in srgb, var(--app-color, var(--sfe-primary)) 45%, #fff) 100%
    );
}

.marketplace-detail-icon {
    width: 76px;
    height: 76px;
    border-radius: 18px;
    background: linear-gradient(
        145deg,
        color-mix(in srgb, var(--app-color, var(--sfe-primary)) 24%, #fff) 0%,
        color-mix(in srgb, var(--app-color, var(--sfe-primary)) 10%, #fff) 100%
    );
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .9),
        0 8px 22px color-mix(in srgb, var(--app-color, var(--sfe-primary)) 20%, transparent);
}

.marketplace-detail-icon .icon { width: 34px; height: 34px; }

.marketplace-detail-head h1 {
    margin: 0 0 8px;
    font-size: 1.85rem;
    letter-spacing: -.02em;
    color: var(--gray-900);
}

.marketplace-detail-summary {
    margin: 0 0 14px;
    color: var(--gray-600);
    font-size: 15px;
    line-height: 1.55;
    max-width: 62ch;
}

.marketplace-detail-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.marketplace-detail-badges .marketplace-featured-badge {
    font-size: 11px;
    text-transform: none;
    letter-spacing: normal;
}

.marketplace-version { font-size: 13px; color: var(--gray-500); }

.marketplace-detail-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-items: stretch;
    min-width: 160px;
}

.marketplace-detail-grid {
    display: grid;
    /* Descripción más estrecha; Información con más aire (todas las fichas /apps/{mod}) */
    grid-template-columns: minmax(240px, 38%) minmax(420px, 62%);
    gap: 24px;
    align-items: start;
}

.marketplace-panel-meta {
    min-width: 0;
    padding: 22px 26px 24px;
}

.marketplace-panel-meta .app-meta {
    gap: 12px;
}

/* Meta técnica: etiqueta fija + valor con salto de línea (URLs, dependencias) */
.marketplace-detail .app-meta div {
    display: grid;
    grid-template-columns: 108px minmax(0, 1fr);
    gap: 8px 16px;
    align-items: start;
}

.marketplace-detail .app-meta dt {
    flex: unset;
    min-width: 0;
    margin: 0;
    padding-top: 1px;
}

.marketplace-detail .app-meta dd {
    margin: 0;
    min-width: 0;
    word-break: break-word;
    overflow-wrap: anywhere;
    line-height: 1.45;
}

.marketplace-detail .app-meta dd a,
.marketplace-detail .app-meta dd code {
    word-break: break-all;
}

.marketplace-panel:not(.marketplace-panel-meta) {
    min-width: 0;
}

.marketplace-panel:not(.marketplace-panel-meta) p {
    max-width: 48ch;
    line-height: 1.6;
    margin: 0;
}

.marketplace-panel {
    background: #fff;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 16px;
    padding: 24px;
    box-shadow: 0 2px 12px rgba(15, 23, 42, .04);
}

.marketplace-panel h2 {
    margin: 0 0 16px;
    font-size: 1.02rem;
    color: var(--gray-900);
}

.marketplace-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }

.marketplace-tag {
    font-size: 12px;
    padding: 5px 11px;
    border-radius: 999px;
    background: var(--gray-100);
    color: var(--gray-700);
    border: 1px solid rgba(15, 23, 42, .06);
}

.marketplace-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 16px;
    margin-bottom: 16px;
    padding: 12px 14px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
}

.marketplace-toolbar-left {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}

.marketplace-select-all {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: var(--gray-700);
    cursor: pointer;
    user-select: none;
}

.marketplace-selection-count {
    font-size: 13px;
    font-weight: 600;
    color: var(--primary);
}

.marketplace-view-toggle {
    display: inline-flex;
    gap: 4px;
    padding: 4px;
    background: var(--gray-100);
    border-radius: 10px;
}

.marketplace-view-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: var(--gray-600);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
}

.marketplace-view-btn .icon {
    width: 16px;
    height: 16px;
}

.marketplace-view-btn.is-active {
    background: #fff;
    color: var(--primary);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .08);
}

.marketplace-card {
    position: relative;
}

.marketplace-card.is-selected {
    border-color: var(--primary);
    box-shadow: 0 0 0 2px rgba(37, 99, 235, .15);
}

.marketplace-card-check {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    background: rgba(255, 255, 255, .95);
    border: 1px solid var(--gray-200);
    cursor: pointer;
}

.marketplace-card-check input {
    width: 16px;
    height: 16px;
    cursor: pointer;
}

.app-badge-available {
    background: rgba(37, 99, 235, .12);
    color: #1d4ed8;
}

.app-badge-upgrade {
    background: rgba(245, 158, 11, .15);
    color: #b45309;
}

.marketplace-list-wrap {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 14px;
    overflow: hidden;
}

.marketplace-list {
    width: 100%;
    margin: 0;
}

.marketplace-list-check-col {
    width: 42px;
    text-align: center;
}

.marketplace-list-app {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

.marketplace-list-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: color-mix(in srgb, var(--app-color, var(--sfe-primary)) 14%, white);
    color: var(--app-color, var(--sfe-primary));
}

.marketplace-list-icon .icon {
    width: 20px;
    height: 20px;
}

.marketplace-list-title {
    font-weight: 600;
    color: var(--gray-900);
    text-decoration: none;
}

.marketplace-list-title:hover {
    color: var(--primary);
}

.marketplace-list-tech {
    margin-top: 2px;
    font-size: 12px;
    color: var(--gray-500);
}

.marketplace-list-summary {
    margin-top: 4px;
    font-size: 13px;
    color: var(--gray-600);
    line-height: 1.4;
    max-width: 520px;
}

.marketplace-list-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.marketplace-list tbody tr.is-selected {
    background: rgba(37, 99, 235, .06);
}

.marketplace-batch-bar {
    position: fixed;
    left: 50%;
    bottom: 24px;
    transform: translateX(-50%);
    z-index: 120;
    min-width: min(92vw, 720px);
    padding: 14px 18px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 14px;
    box-shadow: 0 12px 40px rgba(15, 23, 42, .18);
}

.marketplace-batch-bar[hidden] {
    display: none !important;
}

.marketplace-batch-bar:not([hidden]) {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 20px;
}

.marketplace-batch-info {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 14px;
    color: var(--gray-700);
}

.marketplace-batch-info strong {
    font-size: 18px;
    color: var(--primary);
}

.marketplace-batch-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.marketplace-batch-form {
    margin: 0;
}

@media (max-width: 900px) {
    .marketplace-layout { grid-template-columns: 1fr; }
    .marketplace-sidebar { position: static; }
    .o_apps_body { grid-template-columns: 1fr; }
    .o_apps_sidebar {
        min-height: 0;
        border-right: none;
        border-bottom: 1px solid var(--gray-200);
    }
    .o_apps_control_panel,
    .o_settings_control_panel { padding: 8px 12px; }
    .o_settings_body { grid-template-columns: 1fr; }
    .o_settings_sidebar {
        min-height: 0;
        border-right: none;
        border-bottom: 1px solid var(--gray-200);
    }
    .o_cp_left { display: none; }
    .topbar.o_apps_navbar,
    .topbar.o_settings_navbar { padding: 0 12px; }
    .o_module_home_btn { padding: 6px 10px; }
    .o_settings_control_panel .o_cp_center {
        order: 3;
        width: 100%;
        justify-content: flex-start;
        overflow-x: auto;
    }
    .marketplace-detail-header { grid-template-columns: 1fr; }
    .marketplace-detail-grid { grid-template-columns: 1fr; }
}

/* SFE form widgets */
.stat-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 16px;
}

.stat-button {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: 96px;
    padding: 10px 14px;
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    background: #fff;
    text-decoration: none;
    color: var(--gray-800);
    transition: border-color 0.15s, box-shadow 0.15s;
}

.stat-button:hover {
    border-color: var(--primary);
    box-shadow: 0 2px 8px rgba(37, 99, 235, 0.08);
}

.stat-button .stat-value {
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.2;
}

.stat-button .stat-label {
    font-size: 0.75rem;
    color: var(--gray-500);
    margin-top: 2px;
}

.many2one-widget {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.many2one-search {
    font-size: 0.875rem;
}

select.many2one-select.many2one-expanded {
    min-height: 180px;
}

.form-footer-readonly {
    border-top: 1px solid var(--gray-200);
    padding-top: 16px;
    margin-top: 8px;
}

.sfe-flash.alert-error {
    background: #fef2f2;
    color: #991b1b;
    border: 1px solid #fecaca;
    padding: 12px 16px;
    border-radius: 8px;
    margin-bottom: 16px;
}

.sfe-flash.alert-success {
    background: #f0fdf4;
    color: #166534;
    border: 1px solid #bbf7d0;
    padding: 12px 16px;
    border-radius: 8px;
    margin-bottom: 16px;
}

.notebook-tabs {
    display: flex;
    gap: 4px;
    border-bottom: 1px solid var(--gray-200);
    margin-bottom: 16px;
}

.notebook-tab {
    background: none;
    border: none;
    padding: 10px 16px;
    cursor: pointer;
    color: var(--gray-600);
    border-bottom: 2px solid transparent;
    font-weight: 500;
}

.notebook-tab.active {
    color: var(--primary);
    border-bottom-color: var(--primary);
}

.notebook-page { display: none; }
.notebook-page.active { display: block; }

.o_chatter {
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--gray-200);
}

.chatter-title { font-size: 1rem; margin: 0 0 12px; }

.chatter-message {
    background: var(--gray-50);
    border-radius: 8px;
    padding: 12px;
    margin-bottom: 10px;
}

.chatter-message header {
    display: flex;
    justify-content: space-between;
    font-size: 0.8125rem;
    margin-bottom: 6px;
    color: var(--gray-500);
}

.chatter-message--notification {
    background: #f0f4ff;
    border-left: 3px solid var(--primary);
}

.chatter-badge {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--primary);
    font-weight: 600;
}

.chatter-activities { margin-bottom: 16px; }
.chatter-activity-list { list-style: none; padding: 0; margin: 0 0 10px; }
.chatter-activity-list li { display: flex; gap: 8px; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--gray-100); }
.chatter-activity-list li.is-overdue { color: var(--danger, #c0392b); }
.chatter-compose-mode { display: block; margin-bottom: 8px; font-size: 0.875rem; }

.discuss-chat-message.is-reply { margin-left: 28px; }
.discuss-chat-reactions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.discuss-chat-reaction, .discuss-chat-reaction-add {
    border: 1px solid var(--gray-200);
    background: #fff;
    border-radius: 999px;
    padding: 2px 8px;
    font-size: 0.8125rem;
    cursor: pointer;
}
.discuss-chat-reaction.is-mine { border-color: var(--primary); background: #eef4ff; }
.discuss-chat-reply-btn { margin-left: auto; font-size: 0.75rem; border: 0; background: transparent; color: var(--primary); cursor: pointer; }
.discuss-chat-attachments { list-style: none; padding: 0; margin: 8px 0 0; font-size: 0.8125rem; }

.activities-calendar-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.activities-calendar-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.activities-calendar-day { border: 1px solid var(--gray-200); border-radius: 8px; padding: 8px; min-height: 100px; }
.activities-calendar-day.has-items { border-color: var(--primary); }
.activities-calendar-day ul { list-style: none; padding: 0; margin: 6px 0 0; font-size: 0.75rem; }
.activities-calendar-day li.is-overdue a { color: var(--danger, #c0392b); }

.crm-forecast { margin-top: 8px; }
.crm-forecast-toolbar { margin-bottom: 16px; }
.crm-team-toolbar { display: flex; align-items: center; gap: 16px; margin-bottom: 12px; flex-wrap: wrap; }
.crm-team-filter { display: flex; align-items: center; gap: 8px; }
.crm-team-filter select { max-width: 220px; }
.crm-forecast-summary { display: flex; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.crm-forecast-summary .stat-card {
    background: var(--gray-50);
    border-radius: 8px;
    padding: 16px 20px;
    min-width: 200px;
}
.crm-forecast-summary .stat-value { display: block; font-size: 1.25rem; margin: 4px 0; }
.crm-forecast-table tfoot th { border-top: 2px solid var(--gray-200); }

/* CRM dashboard */
.crm-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.crm-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.crm-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.crm-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.crm-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.crm-stat-card.is-highlight { border-color: #059669; background: #ecfdf5; }
.crm-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.crm-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.crm-stat-label { font-size: 13px; color: var(--gray-600); }
.crm-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
.crm-panel { margin-bottom: 24px; }
.crm-panel h3 { margin-bottom: 10px; }
.crm-lead-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.crm-lead-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.crm-lead-list a { color: var(--sfe-primary); text-decoration: none; }
.crm-lead-list span { color: var(--gray-500); font-size: 13px; white-space: nowrap; }
.crm-score-badge {
    display: inline-block;
    min-width: 1.5em;
    padding: 1px 6px;
    border-radius: 999px;
    background: var(--sfe-primary, var(--sfe-primary));
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    text-align: center;
}
.crm-score-badge.is-ml { background: #2563eb; }
.crm-score-badge.is-ai { background: #059669; }

.crm-cohort { margin-top: 8px; }
.crm-cohort-toolbar { margin-bottom: 16px; }
.crm-cohort-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 16px;
    align-items: flex-end;
}
.crm-cohort-filters label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
    color: var(--gray-600);
}
.crm-cohort-filters select { min-width: 140px; max-width: 200px; }
.crm-cohort-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
}
.crm-cohort-table th,
.crm-cohort-table td { text-align: center; vertical-align: middle; }
.crm-cohort-table th:first-child,
.crm-cohort-table td:first-child { text-align: left; }
.crm-cohort-cell {
    --cohort-intensity: 0;
    background: color-mix(in srgb, #059669 calc(var(--cohort-intensity) * 100%), #fff);
    min-width: 72px;
}
.crm-cohort-cell.is-empty { background: var(--gray-50); color: var(--gray-400); }
.crm-cohort-cell.is-retention {
    background: color-mix(in srgb, #2563eb calc(var(--cohort-intensity) * 100%), #fff);
}
.crm-cohort-cell.is-invoiced {
    background: color-mix(in srgb, var(--sfe-primary) calc(var(--cohort-intensity) * 100%), #fff);
}
.crm-cohort-cell small { display: block; color: var(--gray-600); font-size: 11px; }
.crm-cohort-retention-curve {
    margin: 20px 0;
    padding: 16px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--bg-muted, #f8fafc);
}
.crm-cohort-retention-curve h3 { margin: 0 0 12px; font-size: 14px; }
.crm-retention-bars {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    min-height: 120px;
    padding-top: 8px;
}
.crm-retention-bar {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    min-width: 48px;
}
.crm-retention-bar-fill {
    width: 100%;
    max-width: 40px;
    background: linear-gradient(to top, #2563eb, #93c5fd);
    border-radius: 4px 4px 0 0;
    min-height: 4px;
}
.crm-retention-bar-label { font-size: 11px; color: var(--gray-500); }
.crm-retention-bar-value { font-size: 12px; font-weight: 600; color: var(--gray-700); }

@media (max-width: 768px) {
    .crm-dashboard-columns { grid-template-columns: 1fr; }
}

/* Helpdesk & project dashboards */
.helpdesk-dashboard-header,
.project-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.helpdesk-dashboard-actions,
.project-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.helpdesk-stats,
.project-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.helpdesk-stat-card,
.project-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.helpdesk-stat-card.is-active,
.project-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.helpdesk-stat-card.is-warning,
.project-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.helpdesk-stat-value,
.project-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.helpdesk-stat-label,
.project-stat-label { font-size: 13px; color: var(--gray-600); }
.helpdesk-dashboard-columns,
.project-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.helpdesk-panel,
.project-panel { margin-bottom: 24px; }
.helpdesk-panel h3,
.project-panel h3 { margin-bottom: 10px; }
.helpdesk-ticket-list,
.project-item-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.helpdesk-ticket-list li,
.project-item-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.helpdesk-ticket-list a,
.project-item-list a { color: var(--sfe-primary); text-decoration: none; }
.helpdesk-ticket-list span,
.project-item-list span { color: var(--gray-500); font-size: 13px; white-space: nowrap; }
@media (max-width: 768px) {
    .helpdesk-dashboard-columns,
    .project-dashboard-columns { grid-template-columns: 1fr; }
}

.helpdesk-bot-panel { margin-top: 16px; }
.helpdesk-bot-log {
    max-height: 220px;
    overflow-y: auto;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    padding: 10px;
    margin-bottom: 10px;
    background: var(--gray-50);
}
.helpdesk-bot-msg { margin-bottom: 8px; font-size: 14px; line-height: 1.4; }
.helpdesk-bot-msg--user { text-align: right; color: var(--sfe-primary, #2563eb); }
.helpdesk-bot-msg--bot { color: var(--gray-700); }
.helpdesk-bot-form { display: flex; gap: 8px; align-items: center; }
.helpdesk-bot-form .form-control { flex: 1; }

.project-gantt-filter {
    margin-bottom: 12px;
    display: flex;
    gap: 12px;
    align-items: end;
}

.project-gantt-filter select {
    min-width: 220px;
}

.project-budget-page { display: grid; gap: 20px; }

.project-budget-filter {
    display: flex;
    gap: 12px;
    align-items: end;
}

.project-budget-filter select { min-width: 260px; }

.project-budget-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
}

.project-budget-card {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    display: grid;
    gap: 4px;
}

.project-budget-card.is-over { border-color: #f59e0b; background: #fffbeb; }
.project-budget-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }

.project-budget-label { font-size: 13px; color: var(--gray-600); }
.project-budget-value { font-size: 22px; font-weight: 700; line-height: 1.2; }
.project-budget-value.is-negative { color: #b91c1c; }
.project-budget-meta { font-size: 12px; color: var(--gray-500); }

.project-budget-bar-wrap {
    height: 10px;
    background: var(--gray-200);
    border-radius: 999px;
    overflow: hidden;
}

.project-budget-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--sfe-primary), var(--sfe-secondary));
    border-radius: 999px;
    min-width: 2%;
}

.project-budget-bar.is-over { background: linear-gradient(90deg, #dc2626, #f59e0b); }

.project-budget-pill {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    background: #ede9fe;
    color: #6d28d9;
}

.project-budget-pill.is-over { background: #fef2f2; color: #b91c1c; }

.project-budget-table tr.is-over-budget { background: #fffbeb; }
.project-budget-alert h3 { color: #b45309; }

.text-danger { color: #b91c1c; }

.gantt-toolbar {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.gantt-nav {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.gantt-board {
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    overflow: auto;
    background: #fff;
}

.gantt-header,
.gantt-row {
    display: grid;
    grid-template-columns: 240px minmax(640px, 1fr);
    border-bottom: 1px solid var(--gray-100);
}

.gantt-header {
    background: var(--gray-50);
    font-weight: 600;
    position: sticky;
    top: 0;
    z-index: 2;
}

.gantt-task-col {
    padding: 10px 12px;
    border-right: 1px solid var(--gray-100);
}

.gantt-timeline-col {
    position: relative;
    min-height: 52px;
}

.gantt-day-header,
.gantt-grid {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(28px, 1fr);
    height: 100%;
}

.gantt-day-label,
.gantt-grid-cell {
    border-right: 1px solid var(--gray-100);
    font-size: 11px;
    text-align: center;
    padding: 4px 0;
}

.gantt-day-label.is-weekend,
.gantt-grid-cell.is-weekend { background: #fafafa; }

.gantt-day-label.is-today,
.gantt-grid-cell.is-today { background: rgba(0, 160, 157, 0.08); }

.gantt-task-title {
    display: block;
    color: var(--sfe-primary);
    text-decoration: none;
    font-weight: 500;
}

.gantt-task-dates {
    display: block;
    color: var(--gray-500);
    margin-top: 2px;
}

.gantt-bar {
    position: absolute;
    top: 14px;
    height: 24px;
    border-radius: 4px;
    background: linear-gradient(90deg, var(--sfe-primary), var(--sfe-secondary));
    color: #fff;
    font-size: 11px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    padding: 0 8px;
    line-height: 24px;
    text-decoration: none;
    cursor: grab;
    z-index: 1;
}

.gantt-bar.is-closed {
    background: var(--gray-400);
}

.gantt-bar span {
    pointer-events: none;
}

.gantt-body {
    position: relative;
}

.gantt-deps {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
}

.gantt-dep-line {
    stroke: #94a3b8;
    stroke-width: 1.5;
    marker-end: url(#gantt-arrow);
}

@media (max-width: 900px) {
    .gantt-header,
    .gantt-row {
        grid-template-columns: 180px minmax(480px, 1fr);
    }
}

/* eCommerce & stock dashboards */
.shop-dashboard-header,
.stock-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.shop-dashboard-actions,
.stock-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.shop-stats,
.stock-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.shop-stat-card,
.stock-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.shop-stat-card.is-active,
.stock-stat-card.is-active { border-color: var(--sfe-secondary); background: rgba(44, 123, 229, 0.06); }
.shop-stat-card.is-warning,
.stock-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.shop-stat-value,
.stock-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.shop-stat-label,
.stock-stat-label { font-size: 13px; color: var(--gray-600); }
.shop-panel,
.stock-panel { margin-bottom: 24px; }
.shop-panel h3,
.stock-panel h3 { margin-bottom: 10px; }
.stock-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.stock-picking-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.stock-picking-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.stock-picking-list a { color: var(--sfe-primary); text-decoration: none; }
.stock-picking-list span { color: var(--gray-500); font-size: 13px; }
@media (max-width: 768px) {
    .stock-dashboard-columns { grid-template-columns: 1fr; }
}

.stock-forecast { margin-top: 4px; }
.stock-forecast-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 16px;
    align-items: flex-end;
    margin-bottom: 20px;
}
.stock-forecast-filters label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
    color: var(--gray-600);
}
.stock-forecast-filters select { min-width: 180px; max-width: 240px; }
.stock-forecast-checkbox {
    flex-direction: row !important;
    align-items: center;
    gap: 8px !important;
    padding-bottom: 8px;
}
.stock-forecast-table th,
.stock-forecast-table td { font-size: 13px; }
.stock-forecast-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
}
.stock-forecast-badge.is-ok { background: #ecfdf5; color: #047857; }
.stock-forecast-badge.is-low { background: #fffbeb; color: #b45309; }
.stock-forecast-badge.is-shortage { background: #fef2f2; color: #b91c1c; }
.stock-forecast-row.is-shortage td { background: rgba(254, 242, 242, 0.45); }
.stock-forecast-row.is-low td { background: rgba(255, 251, 235, 0.5); }

/* Purchase & mailing dashboards */
.purchase-dashboard-header,
.mailing-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.purchase-dashboard-actions,
.mailing-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.purchase-stats,
.mailing-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.purchase-stat-card,
.mailing-dash-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.purchase-stat-card.is-active,
.mailing-dash-stat-card.is-active { border-color: #2563eb; background: rgba(37, 99, 235, 0.06); }
.purchase-stat-card.is-warning,
.mailing-dash-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.purchase-stat-card.is-highlight,
.mailing-dash-stat-card.is-highlight { border-color: var(--sfe-secondary); background: rgba(44, 123, 229, 0.06); }
.purchase-stat-value,
.mailing-dash-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.purchase-stat-label,
.mailing-dash-stat-label { font-size: 13px; color: var(--gray-600); }
.purchase-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.purchase-panel,
.mailing-panel { margin-bottom: 24px; }
.purchase-panel h3,
.mailing-panel h3 { margin-bottom: 10px; }
.mailing-funnel { margin-bottom: 24px; }
.mailing-funnel-bars { display: flex; flex-direction: column; gap: 10px; }
.mailing-funnel-row {
    display: grid;
    grid-template-columns: 140px 1fr 110px;
    gap: 12px;
    align-items: center;
    font-size: 13px;
}
.mailing-funnel-track {
    height: 10px;
    background: var(--gray-100);
    border-radius: 999px;
    overflow: hidden;
}
.mailing-funnel-fill {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--sfe-secondary), var(--sfe-primary));
    border-radius: 999px;
}
.mailing-funnel-meta { text-align: right; color: var(--gray-600); font-size: 12px; }
.mailing-analytics-page { margin-bottom: 24px; }
.data-table tr.is-winner { background: rgba(44, 123, 229, 0.08); }
.purchase-order-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.purchase-order-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.purchase-order-list a { color: var(--sfe-primary); text-decoration: none; }
.purchase-order-list span { color: var(--gray-500); font-size: 13px; }
@media (max-width: 768px) {
    .purchase-dashboard-columns { grid-template-columns: 1fr; }
}

/* Accounting & MRP dashboards */
.accounting-dashboard-header,
.mrp-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.accounting-dashboard-actions,
.mrp-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.accounting-stats,
.mrp-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.accounting-stat-card,
.mrp-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.accounting-stat-card.is-active,
.mrp-stat-card.is-active { border-color: #1f4e79; background: rgba(31, 78, 121, 0.06); }
.accounting-stat-card.is-warning,
.mrp-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.accounting-stat-card.is-highlight,
.mrp-stat-card.is-highlight { border-color: #5C5C5C; background: rgba(92, 92, 92, 0.06); }
.accounting-stat-value,
.mrp-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.accounting-stat-label,
.mrp-stat-label { font-size: 13px; color: var(--gray-600); }
.accounting-dashboard-columns,
.mrp-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.accounting-panel,
.mrp-panel { margin-bottom: 24px; }
.accounting-panel h3,
.mrp-panel h3 { margin-bottom: 10px; }
.accounting-entry-list,
.mrp-order-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.accounting-entry-list li,
.mrp-order-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.accounting-entry-list a,
.mrp-order-list a { color: var(--sfe-primary); text-decoration: none; }
.accounting-entry-list span,
.mrp-order-list span { color: var(--gray-500); font-size: 13px; }
@media (max-width: 768px) {
    .accounting-dashboard-columns,
    .mrp-dashboard-columns { grid-template-columns: 1fr; }
}

/* Shop Floor kiosco / tablets */
.shop-floor-kiosk { max-width: 1400px; }
.shop-floor-kiosk-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 16px;
}
.shop-floor-kiosk-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}
.shop-floor-barcode-input {
    min-width: 220px;
    padding: 10px 12px;
    font-size: 16px;
    border: 1px solid var(--gray-300);
    border-radius: 8px;
}
.shop-floor-offline-badge {
    color: #b45309;
    font-size: 13px;
    margin: 4px 0 0;
}
.shop-floor-pending {
    font-size: 13px;
    color: var(--sfe-primary);
    font-weight: 600;
}
.shop-floor-kiosk.is-offline .shop-floor-kiosk-header { opacity: 0.95; }
.shop-floor-kiosk-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}
.shop-floor-kiosk-card {
    background: var(--surface);
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    padding: 16px;
}
.shop-floor-kiosk-card h3 { margin: 0 0 12px; font-size: 1.1rem; }
.shop-floor-wo-row {
    flex-direction: column;
    align-items: stretch !important;
    gap: 8px !important;
}
.shop-floor-wo-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.shop-floor-wo-actions .btn { min-height: 44px; min-width: 100px; font-size: 15px; }
.sf-wo-state {
    display: inline-block;
    margin-left: 8px;
    font-size: 12px;
    text-transform: uppercase;
    color: var(--gray-500);
}
.pre.xml-preview, pre.xml-preview {
    background: #111827;
    color: #e5e7eb;
    padding: 16px;
    border-radius: 8px;
    overflow: auto;
    max-height: 70vh;
    font-size: 12px;
}

.website-multisite-dashboard { max-width: 1200px; }
.website-create-site-form {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
}
.website-create-site-form label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
    min-width: 160px;
}
.website-create-site-form .checkbox-inline {
    flex-direction: row;
    align-items: center;
    min-width: auto;
}
.website-site-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}
.data-table tr.is-highlight-row { background: rgba(44, 123, 229, 0.06); }
.badge {
    display: inline-block;
    font-size: 11px;
    padding: 2px 6px;
    border-radius: 4px;
    background: var(--gray-200);
    margin-left: 6px;
}
.badge-info { background: #dbeafe; color: #1e40af; }
.accounting-report-filter,
.bank-reconcile-entry-form {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: end;
    margin-bottom: 20px;
}
.accounting-report-filter label,
.bank-reconcile-entry-form label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
}
.accounting-report-links { margin-bottom: 20px; }
.accounting-net-result { font-size: 1.25rem; }
.bank-reconcile-suggestions,
.bank-reconcile-entry-bridge { margin: 16px 0; }
.bank-reconcile-success { color: #16a34a; }
.bank-reconcile-error { color: #dc2626; }

.bank-reconcile-hub,
.bank-reconcile { max-width: 1200px; }
.bank-reconcile-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 20px;
}
.bank-reconcile-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.bank-reconcile-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 16px;
}
.bank-reconcile-panel {
    background: var(--surface);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius-md);
    padding: 16px;
}
.bank-reconcile-panel h3 { margin: 0 0 12px; font-size: 15px; }
.bank-reconcile-table { font-size: 13px; }
.bank-reconcile-footer { margin-top: 8px; }
.bank-reconcile-flash {
    padding: 10px 14px;
    border-radius: var(--radius-sm);
    margin-bottom: 12px;
    font-size: 14px;
}
.bank-reconcile-flash.is-success { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.bank-reconcile-flash.is-error { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.saas-storage-banner {
    margin: 0 16px 12px;
    padding: 10px 14px;
    border-radius: var(--radius-sm);
    font-size: 13px;
    line-height: 1.45;
}
.saas-storage-banner.is-warning {
    background: #fffbeb;
    color: #92400e;
    border: 1px solid #fcd34d;
}
.saas-storage-banner.is-critical {
    background: #fef2f2;
    color: #991b1b;
    border: 1px solid #fecaca;
}
.bank-journal-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.bank-journal-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 14px 16px;
    border: 1px solid var(--gray-200);
    border-radius: var(--radius-md);
    text-decoration: none;
    color: inherit;
    background: var(--surface);
}
.bank-journal-card:hover { border-color: var(--sfe-primary); }
.bank-journal-meta { font-size: 13px; color: var(--gray-500); }
@media (max-width: 900px) {
    .bank-reconcile-columns { grid-template-columns: 1fr; }
}

.chatter-compose textarea { margin-bottom: 8px; }

/* —— Shell Tecnonube ERP —— */
.o_home_background {
    background: linear-gradient(145deg, #ddd6e8 0%, #ece6f2 30%, #e8eef8 60%, #f5f3f8 100%);
    min-height: 100vh;
}

.o_home_header {
    display: flex;
    justify-content: flex-end;
    padding: 12px 20px;
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 200;
}

.o_home_main {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 80px 24px 40px;
}

.o_home_content {
    width: 100%;
    max-width: 920px;
}

.home-fiscal-widgets {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 12px;
    margin: 0 auto 12px;
    max-width: 920px;
}

.home-fiscal-widget {
    border-radius: 12px;
    border: 1px solid var(--gray-200);
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

.home-fiscal-widget.is-ok { border-left: 4px solid #059669; }
.home-fiscal-widget.is-warn { border-left: 4px solid #d97706; }
.home-fiscal-widget.is-bad { border-left: 4px solid #dc2626; }

.home-fiscal-widget-body {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.home-fiscal-widget-body h2 {
    margin: 0;
    font-size: 1rem;
    color: #006847;
}

.home-fiscal-score {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

.home-fiscal-score-value {
    font-size: 26px;
    font-weight: 700;
    color: var(--gray-900);
}

.home-fiscal-score-meta {
    font-size: 12px;
    color: var(--gray-500);
}

.home-fiscal-issues {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.home-fiscal-issues li { font-size: 12px; }
.home-fiscal-issues li.level-error a { color: #dc2626; }
.home-fiscal-issues li.level-warning a { color: #d97706; }
.home-fiscal-issues a { text-decoration: none; font-weight: 600; }

.home-fiscal-widget-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.home-failed-stamp-widget {
    grid-column: 1 / -1;
    border: 1px solid #fcd34d;
    border-left: 4px solid #f59e0b;
    border-radius: 10px;
    background: #fffbeb;
    padding: 16px 18px;
}

.home-failed-stamp-body {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.home-failed-stamp-body h2 {
    margin: 0 0 4px;
    font-size: 16px;
}

.home-failed-stamp-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.home-fiscal-ops-widget {
    border-radius: 12px;
    border: 1px solid #fde68a;
    background: #fffbeb;
    padding: 16px 18px;
    margin-bottom: 16px;
}

.home-fiscal-ops-body {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.home-fiscal-ops-body h2 {
    margin: 0 0 6px;
    font-size: 16px;
}

.home-fiscal-ops-stats {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 12px 18px;
    font-size: 13px;
}

.home-fiscal-ops-stats li.is-error {
    color: #dc2626;
}

.home-fiscal-ops-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.home-batch-log-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.home-fiscal-month-widget {
    border-radius: 12px;
    border: 1px solid var(--gray-200);
    background: #fff;
    padding: 16px 18px;
}

.home-fiscal-month-body h2 {
    margin: 0 0 4px;
    font-size: 16px;
}

.home-fiscal-month-stats {
    list-style: none;
    margin: 10px 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 12px 18px;
    font-size: 13px;
}

.home-fiscal-month-stats li.is-error {
    color: #b45309;
    font-weight: 600;
}

.home-fiscal-month-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.home-batch-log-widget {
    border-radius: 12px;
    border: 1px solid var(--gray-200);
    background: #f8fafc;
    padding: 16px 18px;
}

.home-batch-log-body h2 {
    margin: 0 0 4px;
    font-size: 16px;
}

.home-batch-log-list {
    list-style: none;
    margin: 10px 0;
    padding: 0;
    font-size: 12px;
}

.home-batch-log-list li {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    padding: 4px 0;
    border-bottom: 1px solid var(--gray-100);
}

.home-batch-log-list li.is-ok .home-batch-log-meta { color: #059669; }
.home-batch-log-list li.is-error .home-batch-log-meta { color: #dc2626; }

.home-batch-log-kind {
    font-weight: 600;
}

.home-diot-widget {
    margin: 0;
    max-width: none;
}

.home-diot-widget-body {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 16px 24px;
    padding: 16px 20px;
    border-radius: 12px;
    border: 1px solid rgba(0, 104, 71, 0.25);
    background: linear-gradient(135deg, rgba(0, 104, 71, 0.06), rgba(37, 99, 235, 0.04));
}
.home-diot-widget-body h2 {
    margin: 0 0 4px;
    font-size: 1rem;
    color: #006847;
}
.home-diot-widget-stats {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 14px;
    color: var(--gray-700);
}
.home-diot-badge {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
}
.home-diot-badge.is-draft { background: #fef3c7; color: #92400e; }
.home-diot-badge.is-validated { background: #d1fae5; color: #065f46; }
.home-diot-badge.is-exported { background: #dbeafe; color: #1e40af; }
.home-diot-badge.is-missing { background: #fee2e2; color: #991b1b; }
.home-diot-widget-actions {
    display: flex;
    gap: 8px;
    margin-left: auto;
}

.o_home_apps {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 28px 24px;
    justify-items: center;
}

.o_app_tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: #374151;
    transition: transform .15s ease;
    width: 120px;
}

.o_app_tile:hover {
    transform: translateY(-3px);
}

.o_app_icon {
    width: 72px;
    height: 72px;
    border-radius: 16px;
    background: var(--app-color, var(--sfe-primary));
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
}

.o_app_icon .icon {
    width: 36px;
    height: 36px;
    color: #fff;
    stroke: #fff;
}

.o_app_label {
    font-size: 13px;
    font-weight: 500;
    text-align: center;
    line-height: 1.3;
}

.o_systray {
    display: flex;
    align-items: center;
    gap: 4px;
}

.o_systray_home,
.o_systray_btn,
.o_systray_user_btn {
    border: none;
    background: transparent;
    cursor: pointer;
    color: #4b5563;
    padding: 8px 10px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    font: inherit;
}

.o_systray_home:hover,
.o_systray_btn:hover:not(:disabled),
.o_systray_user_btn:hover {
    background: rgba(255, 255, 255, 0.65);
}

.o_systray_btn:disabled {
    opacity: 0.45;
    cursor: default;
}

.o_systray_messaging {
    position: relative;
}

.o_systray_badge {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 999px;
    background: #dc2626;
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}

.o_systray_company {
    font-size: 13px;
    color: #374151;
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.o_systray_avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--sfe-secondary), var(--sfe-primary));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 14px;
    overflow: hidden;
}

.o_systray_avatar.has-image {
    background: #e5e7eb;
}

.o_systray_user {
    position: relative;
}

/* Enterprise app shell (inside modules) */
.sfe-shell .sidebar {
    background: #fff;
    color: #374151;
    border-right: 1px solid var(--gray-200);
    box-shadow: none;
}

.sfe-shell .sidebar-brand {
    border-bottom-color: var(--gray-200);
}

.sfe-shell .brand-text span {
    color: var(--gray-500);
}

.sfe-shell .nav-group-label {
    color: var(--gray-500);
}

.sfe-shell .nav-link {
    color: #374151;
}

.sfe-shell .nav-link:hover,
.sfe-shell .nav-link.active {
    background: #f3f4f6;
    color: var(--sfe-primary);
}

.sfe-shell .sidebar-footer {
    border-top: 1px solid var(--gray-200);
}

.sfe-shell .user-chip .user-info a {
    color: var(--gray-600);
}

.o_action_topbar {
    background: #fff;
    border-bottom: 1px solid var(--gray-200);
    padding: 8px 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    min-height: 48px;
}

.o_topbar_title h1 {
    font-size: 18px;
    font-weight: 600;
    color: #111827;
}

.o_topbar_systray {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}

.sfe-shell .main-content {
    background: #f0eef4;
}

.o_action_manager {
    background: #f0eef4;
}

/* Kanban CRM */
.kanban-toolbar {
    margin-bottom: 12px;
}

.kanban-view-switch {
    display: inline-flex;
    background: #fff;
    border-radius: 8px;
    border: 1px solid var(--gray-200);
    overflow: hidden;
}

.kanban-switch {
    padding: 8px 14px;
    font-size: 13px;
    text-decoration: none;
    color: var(--gray-600);
}

.kanban-switch.is-active {
    background: var(--sfe-primary);
    color: #fff;
}

.kanban-board {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    padding-bottom: 12px;
    min-height: 420px;
}

.kanban-column {
    flex: 0 0 280px;
    background: rgba(255, 255, 255, 0.85);
    border-radius: 10px;
    border: 1px solid var(--gray-200);
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 180px);
}

.kanban-column.is-drag-over {
    border-color: var(--sfe-accent);
    box-shadow: 0 0 0 2px rgba(0, 160, 157, 0.25);
}

.kanban-column-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    justify-content: space-between;
    padding: 10px 12px;
    border-bottom: 1px solid var(--gray-200);
    font-weight: 600;
    font-size: 13px;
}

.kanban-column-header h3 {
    font-size: 13px;
    font-weight: 600;
}

.kanban-count {
    background: var(--gray-100);
    border-radius: 999px;
    padding: 2px 8px;
    font-size: 12px;
}

.kanban-cards {
    flex: 1;
    overflow-y: auto;
    padding: 8px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.kanban-card {
    background: #fff;
    border-radius: 8px;
    padding: 10px 12px;
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.08);
    cursor: grab;
    border-left: 3px solid var(--sfe-primary);
}

.kanban-card.is-dragging {
    opacity: 0.55;
}

.kanban-card-title {
    font-weight: 600;
    color: var(--gray-800);
    text-decoration: none;
    display: block;
    margin-bottom: 6px;
}

.kanban-card-field {
    font-size: 12px;
    color: var(--gray-500);
}

.kanban-card-revenue {
    margin-top: 6px;
    font-weight: 700;
    color: var(--sfe-accent);
    font-size: 13px;
}

/* Command palette */
.o_command_palette {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 12vh;
}

.o_command_palette[hidden] {
    display: none !important;
}

.o_command_backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
}

.o_command_dialog {
    position: relative;
    width: min(560px, 92vw);
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 20px 50px rgba(15, 23, 42, 0.25);
    overflow: hidden;
}

.o_command_input_wrap {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px;
    border-bottom: 1px solid var(--gray-200);
}

.o_command_input {
    flex: 1;
    border: none;
    outline: none;
    font-size: 16px;
}

.o_command_kbd {
    font-size: 11px;
    background: var(--gray-100);
    padding: 2px 6px;
    border-radius: 4px;
    color: var(--gray-500);
}

.o_command_results {
    list-style: none;
    max-height: 320px;
    overflow-y: auto;
    margin: 0;
    padding: 6px 0;
}

.o_command_item {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    cursor: pointer;
}

.o_command_item.is-active,
.o_command_item:hover {
    background: var(--primary-light);
}

.o_command_meta {
    font-size: 12px;
    color: var(--gray-500);
}

.o_command_empty {
    padding: 16px;
    color: var(--gray-500);
}

.o_command_hint {
    padding: 8px 16px 12px;
    font-size: 11px;
    color: var(--gray-400);
    margin: 0;
}

/* Discuss popover */
.o_systray_messaging_wrap {
    position: relative;
}

.o_discuss_popover {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    width: 360px;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 12px 40px rgba(15, 23, 42, 0.18);
    z-index: 400;
    overflow: hidden;
}

.o_discuss_popover[hidden] {
    display: none !important;
}

.o_discuss_header {
    border-bottom: 1px solid var(--gray-200);
    padding: 0 12px;
}

.o_discuss_header_row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.o_discuss_new_msg {
    font-size: 12px;
    color: var(--sfe-accent);
    text-decoration: none;
    white-space: nowrap;
    font-weight: 600;
}

.o_discuss_new_msg:hover {
    text-decoration: underline;
}

.o_discuss_push_banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 10px 14px;
    background: #f8fafc;
    border-bottom: 1px solid var(--gray-100);
    font-size: 12px;
    color: var(--gray-600);
}

.o_discuss_push_banner[hidden] {
    display: none !important;
}

.o_discuss_tabs {
    display: flex;
    gap: 4px;
    flex: 1;
    min-width: 0;
}

.o_discuss_tabs button {
    border: none;
    background: none;
    padding: 12px 10px;
    font-size: 13px;
    cursor: pointer;
    color: var(--gray-500);
    border-bottom: 2px solid transparent;
}

.o_discuss_tabs button.is-active {
    color: var(--sfe-accent);
    border-bottom-color: var(--sfe-accent);
    font-weight: 600;
}

.o_discuss_body {
    max-height: 360px;
    overflow-y: auto;
}

.o_discuss_thread {
    display: flex;
    gap: 10px;
    padding: 10px 14px;
    text-decoration: none;
    color: inherit;
    border-bottom: 1px solid var(--gray-100);
    align-items: flex-start;
}

.o_discuss_thread:hover {
    background: var(--gray-50);
}

.o_discuss_avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #e9d5ff;
    color: #6b21a8;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
    flex-shrink: 0;
}

.o_discuss_avatar_hash {
    background: #dbeafe;
    color: #1d4ed8;
    border-radius: 6px;
    font-weight: 600;
}

.o_discuss_avatar_user {
    background: #fce7f3;
    color: #9d174d;
}

.o_discuss_thread_main {
    min-width: 0;
    flex: 1;
}

.o_discuss_thread_top {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    align-items: baseline;
}

.o_discuss_thread_top strong {
    font-size: 13px;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.o_discuss_thread_top time {
    font-size: 11px;
    color: var(--gray-400);
    flex-shrink: 0;
}

.o_discuss_thread_preview {
    display: block;
    font-size: 12px;
    color: var(--gray-500);
    margin-top: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

button.o_discuss_thread {
    width: 100%;
    border: none;
    background: none;
    text-align: left;
    cursor: pointer;
    font: inherit;
}

.o_discuss_thread_header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 1px solid var(--gray-200);
    background: #fafafa;
}

.o_discuss_thread_header[hidden] {
    display: none !important;
}

.o_discuss_back {
    border: none;
    background: none;
    font-size: 18px;
    cursor: pointer;
    color: var(--gray-600);
    padding: 0 4px;
}

.o_discuss_open_full {
    margin-left: auto;
    font-size: 11px;
    color: var(--sfe-accent);
    text-decoration: none;
}

.o_discuss_composer {
    border-top: 1px solid var(--gray-200);
    padding: 10px 12px;
    background: #fff;
}

.o_discuss_composer[hidden] {
    display: none !important;
}

.o_discuss_compose_form {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: flex-end;
    position: relative;
}

.o_discuss_compose_form .o_discuss_gif_btn {
    order: 1;
    align-self: center;
}

.o_discuss_compose_form .o_discuss_compose_input {
    order: 2;
    flex: 1;
    min-width: 0;
}

.o_discuss_compose_form .o_discuss_compose_send {
    order: 3;
    flex-shrink: 0;
}

.o_discuss_compose_form .o_discuss_gif_preview {
    order: 0;
}

.o_discuss_compose_form .o_discuss_gif_picker {
    order: 10;
}

.o_discuss_gif_picker {
    flex: 1 1 100%;
    order: 10;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    background: var(--gray-50);
    padding: 8px;
    max-height: 200px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.o_discuss_gif_picker[hidden] {
    display: none !important;
}

.o_discuss_gif_picker_head {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 6px;
    align-items: center;
}

.o_discuss_gif_tabs {
    display: flex;
    gap: 4px;
    flex: 0 0 auto;
}

.o_discuss_gif_tab {
    border: 1px solid var(--gray-300);
    background: #fff;
    border-radius: 14px;
    padding: 4px 10px;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    color: var(--gray-600);
}

.o_discuss_gif_tab.is-active {
    border-color: var(--primary);
    background: var(--primary);
    color: #fff;
}

.o_discuss_gif_search {
    flex: 1 1 120px;
    min-width: 0;
    flex: 1;
    border: 1px solid var(--gray-300);
    border-radius: 6px;
    padding: 6px 10px;
    font-size: 13px;
}

.o_discuss_gif_close {
    border: none;
    background: transparent;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    color: var(--gray-500);
    padding: 0 6px;
}

.o_discuss_gif_results {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
    overflow-y: auto;
    max-height: 140px;
}

.o_discuss_gif_thumb {
    border: none;
    padding: 0;
    background: #fff;
    border-radius: 4px;
    overflow: hidden;
    cursor: pointer;
    aspect-ratio: 1;
}

.o_discuss_gif_thumb:hover {
    outline: 2px solid var(--primary);
}

.o_discuss_gif_thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.o_discuss_gif_empty {
    grid-column: 1 / -1;
    margin: 0;
    font-size: 12px;
    color: var(--gray-500);
    text-align: center;
}

.o_discuss_gif_btn {
    border: 1px solid var(--gray-300);
    background: #fff;
    border-radius: 20px;
    padding: 6px 10px;
    font-size: 11px;
    font-weight: 700;
    cursor: pointer;
    color: var(--gray-600);
    flex-shrink: 0;
    min-width: 40px;
    min-height: 36px;
}

.o_discuss_gif_btn:hover {
    border-color: var(--primary);
    color: var(--primary);
}

.o_discuss_gif_btn[hidden] {
    display: none !important;
}

.o_discuss_gif_preview {
    flex: 1 1 100%;
    order: -2;
}

.o_discuss_gif_preview[hidden] {
    display: none !important;
}

.o_discuss_gif_preview_img {
    max-height: 64px;
    border-radius: 6px;
}

.o_discuss_gif_wrap {
    display: inline-block;
    margin: 4px 0;
}

.o_discuss_gif_img {
    max-width: 220px;
    max-height: 180px;
    border-radius: 8px;
    display: block;
}

.o_discuss_compose_input {
    flex: 1;
    border: 1px solid var(--gray-300);
    border-radius: 20px;
    padding: 8px 14px;
    font-size: 13px;
}

.o_discuss_compose_send {
    border: none;
    background: var(--sfe-accent);
    color: #fff;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

.o_discuss_inline_thread {
    padding: 8px 0;
}

.o_discuss_inline_msg {
    padding: 8px 14px;
    border-bottom: 1px solid var(--gray-100);
}

.o_discuss_inline_msg header {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 12px;
    margin-bottom: 4px;
}

.o_discuss_inline_msg p {
    margin: 0;
    font-size: 13px;
    line-height: 1.4;
    white-space: pre-wrap;
    word-break: break-word;
}

.o_discuss_item {
    display: block;
    padding: 10px 14px;
    text-decoration: none;
    color: inherit;
    border-bottom: 1px solid var(--gray-100);
}

.o_discuss_item:hover {
    background: var(--gray-50);
}

.o_discuss_item strong {
    display: block;
    font-size: 13px;
    margin-bottom: 2px;
}

.o_discuss_item span {
    font-size: 12px;
    color: var(--gray-500);
}

.o_discuss_empty {
    padding: 20px 14px;
    color: var(--gray-500);
    font-size: 13px;
    margin: 0;
}

.o_systray_badge_warn {
    background: #d97706;
}

.o_systray_badge_danger {
    background: #dc2626;
}

.o_activities_popover .o_discuss_header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
}

.o_fiscal_popover .o_discuss_header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
}

.o_fiscal_title {
    font-size: 14px;
}

.o_fiscal_checklist {
    font-size: 12px;
    color: var(--sfe-accent);
    text-decoration: none;
    font-weight: 600;
}

.o_fiscal_score {
    padding: 6px 14px;
    font-size: 12px;
    color: var(--gray-600);
    border-bottom: 1px solid var(--gray-100);
    background: var(--gray-50);
}

.o_fiscal_item {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 14px;
    border-bottom: 1px solid var(--gray-100);
}

.o_fiscal_item.level-error {
    background: #fef2f2;
}

.o_fiscal_item.level-warning {
    background: #fffbeb;
}

.o_fiscal_body {
    flex: 1;
    min-width: 0;
}

.o_fiscal_body a {
    font-weight: 600;
    color: inherit;
    text-decoration: none;
    font-size: 13px;
}

.o_fiscal_meta {
    font-size: 11px;
    color: var(--gray-500);
    margin-top: 2px;
}

.o_fiscal_actions {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex-shrink: 0;
}

.o_fiscal_snooze,
.o_fiscal_dismiss {
    border: none;
    background: var(--gray-100);
    color: var(--gray-600);
    border-radius: 6px;
    padding: 2px 6px;
    font-size: 11px;
    cursor: pointer;
    line-height: 1.2;
}

.o_fiscal_snooze:hover,
.o_fiscal_dismiss:hover {
    background: var(--gray-200);
}

.o_fiscal_diot {
    padding: 8px 14px;
    border-bottom: 1px solid var(--gray-100);
    background: #f0fdf4;
}

.o_fiscal_diot_link {
    display: block;
    text-decoration: none;
    color: inherit;
    font-size: 12px;
}

.o_fiscal_diot_link strong {
    display: block;
    font-size: 13px;
    color: #047857;
}

.o_fiscal_diot_link span {
    color: var(--gray-600);
    font-size: 11px;
}

.o_fiscal_failed {
    padding: 8px 14px;
    border-bottom: 1px solid var(--gray-100);
    background: #fffbeb;
}

.o_fiscal_failed_link {
    display: block;
    text-decoration: none;
    color: inherit;
    font-size: 12px;
}

.o_fiscal_failed_link strong {
    display: block;
    font-size: 13px;
    color: #b45309;
}

.o_fiscal_failed_link span {
    color: var(--gray-600);
    font-size: 11px;
}

.o_fiscal_batch {
    padding: 8px 14px;
    border-bottom: 1px solid var(--gray-100);
    background: #f8fafc;
    font-size: 12px;
}

.o_fiscal_batch_title {
    font-weight: 600;
    font-size: 11px;
    text-transform: uppercase;
    color: var(--gray-500);
    margin-bottom: 6px;
}

.o_fiscal_batch_stats {
    margin: 0 0 8px;
    font-size: 11px;
    color: var(--gray-600);
}

.o_fiscal_batch_errors {
    display: inline-block;
    margin-bottom: 8px;
    font-size: 11px;
    color: #d97706;
    text-decoration: none;
}

.o_fiscal_batch_list {
    list-style: none;
    margin: 0 0 8px;
    padding: 0;
}

.o_fiscal_batch_list li {
    padding: 3px 0;
    border-bottom: 1px solid var(--gray-100);
}

.o_fiscal_batch_list li.is-ok span { color: #059669; }
.o_fiscal_batch_list li.is-error span { color: #dc2626; }

.o_fiscal_batch_link {
    font-size: 11px;
    font-weight: 600;
    color: #2563eb;
    text-decoration: none;
}

.o_fiscal_ops_footer {
    padding: 8px 12px;
    border-top: 1px solid var(--gray-100);
    text-align: center;
}

.o_fiscal_ops_link {
    font-size: 11px;
    font-weight: 600;
    color: #2563eb;
    text-decoration: none;
}

.l10n-mx-sat-export-bar {
    margin-bottom: 0;
}

.l10n-mx-sat-export-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.l10n-mx-sat-export-form label {
    font-size: 13px;
    font-weight: 600;
    color: var(--gray-700);
}

.l10n-mx-sat-export-form select {
    min-width: 160px;
    padding: 6px 10px;
    border: 1px solid var(--gray-300);
    border-radius: 6px;
    font-size: 13px;
}

.l10n-mx-batch-validate {
    margin-bottom: 20px;
}

.l10n-mx-batch-ops {
    margin-bottom: 20px;
}

.l10n-mx-batch-block {
    padding: 12px 0;
    border-bottom: 1px solid var(--gray-100);
}

.l10n-mx-batch-block:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.l10n-mx-batch-block h4 {
    margin: 0 0 8px;
    font-size: 14px;
}

.l10n-mx-stamp-queue {
    margin-bottom: 16px;
    padding: 12px;
    border-radius: 8px;
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
}

.l10n-mx-stamp-progress-track {
    height: 8px;
    background: var(--gray-200);
    border-radius: 999px;
    overflow: hidden;
    margin-bottom: 8px;
}

.l10n-mx-stamp-progress-bar {
    height: 100%;
    background: #059669;
    transition: width 0.2s ease;
}

.l10n-mx-stamp-log {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
    max-height: 120px;
    overflow-y: auto;
    font-size: 12px;
}

.l10n-mx-stamp-log li.is-ok { color: #059669; }
.l10n-mx-stamp-log li.is-error { color: #dc2626; }

.l10n-mx-wizard-queue {
    border-color: #93c5fd;
    background: #eff6ff;
}

.l10n-mx-stamp-progress-bar.is-wizard {
    background: #2563eb;
}

.l10n-mx-wizard-block {
    border-bottom: 2px solid var(--gray-200);
    margin-bottom: 12px;
    padding-bottom: 16px;
}

.l10n-mx-xml-export {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.l10n-mx-xml-export-panel {
    margin-top: 16px;
}

.l10n-mx-xml-export-panel h3 {
    margin: 0 0 8px;
    font-size: 15px;
}

.l10n-mx-xml-export-form {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 10px;
    margin-top: 8px;
}

.l10n-mx-xml-export-form label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 12px;
    color: var(--gray-600);
}

.l10n-mx-xml-export-form .input-sm {
    width: 88px;
    padding: 4px 8px;
    font-size: 13px;
}

.l10n-mx-failed-block {
    border-left: 3px solid #f59e0b;
    padding-left: 12px;
}

.l10n-mx-batch-log {
    margin-bottom: 20px;
}

.l10n-mx-batch-log-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.l10n-mx-batch-log-header h3 {
    margin: 0;
    font-size: 16px;
}

.l10n-mx-batch-log .data-table tr.is-ok td:nth-child(3) {
    color: #059669;
}

.l10n-mx-batch-log .data-table tr.is-error td:nth-child(3) {
    color: #dc2626;
}

.l10n-mx-batch-log-page {
    max-width: 1100px;
}

.l10n-mx-batch-log-page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.l10n-mx-batch-log-page-header h2 {
    margin: 0 0 4px;
}

.l10n-mx-batch-log-filter {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    margin-bottom: 16px;
}

.l10n-mx-batch-log-filter label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
}

.l10n-mx-batch-log-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}

.l10n-mx-batch-log-stats .l10n-mx-stat-card {
    padding: 12px 14px;
}

.l10n-mx-batch-log-stats .l10n-mx-stat-card.is-warning .l10n-mx-stat-value {
    color: #d97706;
}

.l10n-mx-filter-check {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    padding-bottom: 2px;
}

.l10n-mx-pagination {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 16px;
    flex-wrap: wrap;
}

.l10n-mx-pagination-info {
    font-size: 13px;
    color: var(--gray-600);
}

.l10n-mx-failed-retry-history {
    margin-bottom: 16px;
}

.l10n-mx-checklist-batch-log {
    margin-bottom: 20px;
}

.l10n-mx-checklist-batch-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.l10n-mx-checklist-batch-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    padding: 8px 0;
    border-bottom: 1px solid #e5e7eb;
    font-size: 13px;
}

.l10n-mx-checklist-batch-list li:last-child {
    border-bottom: none;
}

.l10n-mx-checklist-batch-list li.is-ok strong { color: #059669; }
.l10n-mx-checklist-batch-list li.is-error strong { color: #dc2626; }

.l10n-mx-checklist-batch-list time {
    color: #6b7280;
    font-size: 12px;
    margin-left: auto;
}

.l10n-mx-failed-page {
    max-width: 1100px;
}

.l10n-mx-failed-page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.l10n-mx-failed-page-header h2 {
    margin: 0 0 4px;
}

.l10n-mx-failed-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}

.l10n-mx-failed-ops {
    margin-bottom: 16px;
}

.l10n-mx-failed-ops .l10n-mx-stamp-queue {
    margin-bottom: 12px;
}

.l10n-mx-failed-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
    padding: 12px;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 8px;
}

.l10n-mx-failed-filter {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    margin-bottom: 16px;
}

.l10n-mx-failed-filter label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
}

.l10n-mx-failed-error {
    max-width: 420px;
    word-break: break-word;
    color: #dc2626;
    font-size: 13px;
}

.l10n-mx-ops-page {
    max-width: 1200px;
}

.l10n-mx-ops-page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
}

.l10n-mx-ops-page-header h2 {
    margin: 0 0 4px;
}

.l10n-mx-ops-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}

.l10n-mx-ops-shortcuts {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.l10n-mx-ops-crons {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 24px;
    font-size: 13px;
}

.l10n-mx-ops-crons-label {
    color: var(--gray-600);
}

.l10n-mx-cron-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    border: 1px solid var(--gray-300);
    color: var(--gray-600);
    background: var(--gray-50);
}

.l10n-mx-cron-badge.is-on {
    border-color: #059669;
    color: #047857;
    background: #ecfdf5;
}

.l10n-mx-cron-badge.is-off {
    opacity: 0.65;
}

.l10n-mx-ops-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.l10n-mx-ops-panel {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
}

.l10n-mx-ops-panel-wide {
    grid-column: 1 / -1;
}

.l10n-mx-ops-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.l10n-mx-ops-panel-header h3 {
    margin: 0;
    font-size: 15px;
}

@media (max-width: 900px) {
    .l10n-mx-ops-grid {
        grid-template-columns: 1fr;
    }

    .l10n-mx-ops-page-header {
        flex-direction: column;
    }
}

.o_fiscal_failed_row {
    display: flex;
    align-items: center;
    gap: 8px;
}

.o_fiscal_failed_export {
    flex-shrink: 0;
    font-size: 11px;
    padding: 2px 8px;
}

.l10n-mx-batch-ops .data-table tr.is-ok td:last-child {
    color: #059669;
}

.l10n-mx-batch-validate .data-table tr.is-error td:last-child,
.l10n-mx-batch-ops .data-table tr.is-error td:last-child {
    color: #dc2626;
}

.l10n-mx-fiscal-history {
    margin-top: 24px;
}

.l10n-mx-fiscal-history-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.l10n-mx-fiscal-history-header h3 {
    margin: 0;
    font-size: 16px;
}

.o_fiscal_diot_row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.o_fiscal_diot_generate {
    flex-shrink: 0;
    font-size: 11px;
    padding: 4px 8px;
}

.kanban-export-csv {
    margin-left: auto;
    font-size: 10px;
    padding: 2px 6px;
}

.o_activities_title {
    font-size: 14px;
}

.o_activities_new {
    font-size: 12px;
    color: var(--sfe-accent);
    text-decoration: none;
    font-weight: 600;
}

.o_activity_item {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 14px;
    border-bottom: 1px solid var(--gray-100);
}

.o_activity_item.is-overdue {
    background: #fff7ed;
}

.o_activity_body {
    flex: 1;
    min-width: 0;
}

.o_activity_body a {
    font-weight: 600;
    color: inherit;
    text-decoration: none;
    font-size: 13px;
}

.o_activity_meta {
    font-size: 11px;
    color: var(--gray-500);
}

.o_activity_done {
    border: none;
    background: var(--sfe-accent);
    color: #fff;
    border-radius: 6px;
    padding: 4px 8px;
    font-size: 11px;
    cursor: pointer;
    flex-shrink: 0;
}

.o_systray_ai .icon {
    color: var(--sfe-secondary);
}

.o_systray_ai_glyph {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 20px;
    font-weight: 700;
    line-height: 1;
    background: linear-gradient(135deg, var(--sfe-primary) 0%, var(--sfe-secondary) 55%, var(--primary-dark) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.o_systray_ai.is-active,
.o_systray_ai[aria-expanded="true"] {
    background: rgba(255, 255, 255, 0.85);
}

.o_user_menu {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    min-width: 220px;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 8px 30px rgba(15, 23, 42, 0.15);
    padding: 6px 0;
    z-index: 300;
}

.o_user_menu_item,
.o_user_menu_btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 10px 16px;
    color: #374151;
    text-decoration: none;
    font-size: 14px;
    border: none;
    background: transparent;
    cursor: pointer;
    text-align: left;
    font: inherit;
    box-sizing: border-box;
}

.o_user_menu_item:hover,
.o_user_menu_btn:hover {
    background: #f3f4f6;
}

.o_user_menu_kbd {
    font-size: 11px;
    color: #6b7280;
    background: #f3f4f6;
    border-radius: 4px;
    padding: 2px 6px;
    font-family: inherit;
}

.o_user_menu_sep {
    height: 1px;
    margin: 4px 0;
    background: #e5e7eb;
}

.o_user_menu_status {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    font-size: 14px;
    color: #374151;
}

.o_user_menu_status_wrap {
    position: relative;
}

.o_user_menu_status_btn {
    gap: 12px;
}

.o_user_menu_status_left {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.o_user_menu_chevron {
    width: 14px;
    height: 14px;
    color: #9ca3af;
    flex-shrink: 0;
}

.o_user_menu_submenu {
    position: absolute;
    top: 0;
    right: calc(100% + 4px);
    min-width: 240px;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 8px 30px rgba(15, 23, 42, 0.15);
    padding: 6px 0;
    z-index: 320;
}

.o_user_menu_submenu_item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    width: 100%;
    padding: 10px 16px;
    border: none;
    background: transparent;
    color: #374151;
    font: inherit;
    font-size: 14px;
    text-align: left;
    cursor: pointer;
    box-sizing: border-box;
}

.o_user_menu_submenu_item:hover,
.o_user_menu_submenu_item.is-active {
    background: #f3f4f6;
}

.o_user_menu_submenu_text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.o_user_menu_submenu_text small {
    font-size: 12px;
    color: #6b7280;
    font-weight: 400;
}

.o_user_menu_status_dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #22c55e;
    flex-shrink: 0;
    margin-top: 5px;
}

.o_user_menu_status_dot.is-online {
    background: #22c55e;
}

.o_user_menu_status_dot.is-away {
    background: #eab308;
}

.o_user_menu_status_dot.is-dnd {
    background: #ef4444;
}

.o_user_menu_status_dot.is-offline {
    background: transparent;
    border: 2px solid #9ca3af;
    box-sizing: border-box;
}

.o_user_menu_logout {
    color: #111827;
}

.o_user_menu a {
    display: block;
    padding: 10px 16px;
    color: #374151;
    text-decoration: none;
    font-size: 14px;
}

.o_user_menu a:hover {
    background: #f3f4f6;
}

/* Modal preferencias — paleta Tecnonube ERP (no heredar guindo Odoo legacy del :root) */
.sfe-user-prefs,
.sfe-user-prefs-page,
.sfe-user-prefs-form {
    --sfe-prefs-accent: #007BFF;
    --sfe-prefs-accent-dark: #0056CC;
    --sfe-prefs-accent-soft: #E8F4FF;
    --sfe-prefs-accent-ring: rgba(0, 123, 255, 0.14);
    --sfe-prefs-accent-hover: #f0f7ff;
    --sfe-prefs-accent-muted: #60a5fa;
}

.sfe-user-prefs {
    position: fixed;
    inset: 0;
    z-index: 500;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.sfe-user-prefs.is-visible {
    opacity: 1;
    pointer-events: auto;
}

.sfe-user-prefs-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
}

.sfe-user-prefs-dialog {
    position: relative;
    width: min(720px, 100%);
    max-height: min(90vh, 820px);
    overflow: auto;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.25);
    z-index: 1;
}

.sfe-user-prefs-body {
    position: relative;
    padding: 24px 28px 20px;
}

.sfe-user-prefs-modal-title {
    margin: 0 36px 20px 0;
    font-size: 20px;
    font-weight: 600;
    color: #111827;
}

.sfe-user-prefs-close {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 32px;
    height: 32px;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: #6b7280;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
}

.sfe-user-prefs-close:hover {
    background: #f3f4f6;
    color: #111827;
}

.sfe-user-prefs-header,
.sfe-user-prefs-profile {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    margin-bottom: 20px;
    padding-right: 36px;
}

.sfe-user-prefs-avatar-label {
    cursor: pointer;
    flex-shrink: 0;
}

.sfe-user-prefs-avatar-format-hint {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    color: var(--text-muted);
}

.sfe-user-prefs-profile [data-user-avatar] {
    flex-shrink: 0;
}

.sfe-user-prefs-avatar {
    width: 72px;
    height: 72px;
    border-radius: 8px;
    background: #9ca3af;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    font-weight: 700;
    flex-shrink: 0;
    position: relative;
    overflow: hidden;
}

.sfe-user-prefs-avatar.has-image {
    background: #e5e7eb;
}

.sfe-user-prefs-avatar img,
.o_systray_avatar img.o_systray_avatar_img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.sfe-user-prefs-avatar-initial {
    line-height: 1;
}

.sfe-user-prefs-avatar-hint {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 6px;
    background: rgba(17, 24, 39, 0.55);
    color: #fff;
    font-size: 11px;
    font-weight: 500;
    line-height: 1.25;
    text-align: center;
    opacity: 0;
    transition: opacity 0.15s ease;
}

.sfe-user-prefs-avatar-label:hover .sfe-user-prefs-avatar-hint,
.sfe-user-prefs-avatar-label:focus-within .sfe-user-prefs-avatar-hint {
    opacity: 1;
}

.sfe-user-prefs-avatar:not(.has-image) .sfe-user-prefs-avatar-hint {
    opacity: 1;
    background: rgba(17, 24, 39, 0.35);
}

.sfe-user-prefs-display-name {
    margin: 0 0 8px;
    font-size: 18px;
    font-weight: 600;
    color: #111827;
}

.sfe-user-prefs-contact-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
    color: #6b7280;
    font-size: 14px;
}

.sfe-user-prefs-contact-row .icon {
    width: 16px;
    height: 16px;
    color: #9ca3af;
}

.sfe-user-prefs-contact-edit input {
    flex: 1;
    min-width: 0;
    border: none;
    border-bottom: 1px solid transparent;
    background: transparent;
    padding: 2px 0;
    font: inherit;
    color: #374151;
}

.sfe-user-prefs-contact-edit input:focus {
    outline: none;
    border-bottom-color: var(--sfe-prefs-accent);
}

.sfe-user-prefs-name {
    margin: 0 0 4px;
    font-size: 22px;
    font-weight: 600;
    color: #111827;
}

.sfe-user-prefs-email {
    margin: 0;
    color: #6b7280;
    font-size: 14px;
}

.sfe-user-prefs-tabs {
    display: flex;
    gap: 20px;
    border-bottom: 1px solid #e5e7eb;
    margin-bottom: 20px;
}

.sfe-user-prefs-tabs button {
    border: none;
    background: transparent;
    padding: 10px 0;
    margin-bottom: -1px;
    font: inherit;
    font-size: 14px;
    color: #6b7280;
    cursor: pointer;
    border-bottom: 2px solid transparent;
}

.sfe-user-prefs-tabs button.is-active {
    color: var(--sfe-prefs-accent) !important;
    border-bottom-color: var(--sfe-prefs-accent) !important;
    font-weight: 600;
}

.sfe-user-prefs-footer .btn-primary,
.sfe-user-prefs-ooo-actions .btn-primary {
    background: var(--sfe-prefs-accent) !important;
    border-color: var(--sfe-prefs-accent) !important;
    color: #fff !important;
}

.sfe-user-prefs-footer .btn-primary:hover,
.sfe-user-prefs-ooo-actions .btn-primary:hover {
    background: var(--sfe-prefs-accent-dark) !important;
    border-color: var(--sfe-prefs-accent-dark) !important;
}

.sfe-user-prefs-columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px 32px;
}

.sfe-user-prefs-col {
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}

.sfe-user-prefs-calendario-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 12px;
}

.sfe-user-prefs-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 20px;
}

.sfe-user-prefs-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 14px;
    color: #374151;
}

.sfe-user-prefs-field input,
.sfe-user-prefs-field select,
.sfe-user-prefs-field textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    font: inherit;
    box-sizing: border-box;
}

.sfe-user-prefs-field-full {
    grid-column: 1 / -1;
}

.sfe-user-prefs-field fieldset {
    border: none;
    padding: 0;
    margin: 0;
}

.sfe-user-prefs-field legend {
    font-size: 13px;
    font-weight: 500;
    color: #374151;
    margin-bottom: 8px;
}

.sfe-user-prefs-field-label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: #374151;
    margin-bottom: 10px;
}

.sfe-user-prefs-choice-block {
    margin-bottom: 20px;
}

.sfe-user-prefs-choice-block:last-child {
    margin-bottom: 0;
}

.sfe-prefs-choice-group {
    display: grid;
    gap: 8px;
}

.sfe-prefs-choice-group--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.sfe-prefs-choice-group--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.sfe-prefs-choice {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 72px;
    padding: 12px 10px;
    border: 2px solid #e5e7eb;
    border-radius: 10px;
    background: #fafafa;
    cursor: pointer;
    text-align: center;
    transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease;
}

.sfe-prefs-choice:hover {
    border-color: color-mix(in srgb, var(--sfe-prefs-accent) 35%, #e5e7eb);
    background: var(--sfe-prefs-accent-hover);
}

.sfe-prefs-choice:has(.sfe-prefs-choice-input:checked) {
    border-color: var(--sfe-prefs-accent) !important;
    background: linear-gradient(180deg, #fff 0%, var(--sfe-prefs-accent-soft) 100%) !important;
    box-shadow: 0 0 0 1px var(--sfe-prefs-accent-ring) !important;
}

.sfe-prefs-choice:has(.sfe-prefs-choice-input:focus-visible) {
    outline: 2px solid var(--sfe-prefs-accent);
    outline-offset: 2px;
}

.sfe-prefs-choice-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.sfe-prefs-choice-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #fff;
    color: #6b7280;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
    transition: color 0.15s ease, background 0.15s ease;
}

.sfe-prefs-choice:has(.sfe-prefs-choice-input:checked) .sfe-prefs-choice-icon {
    background: var(--sfe-prefs-accent) !important;
    color: #fff !important;
}

.sfe-prefs-choice-icon .icon {
    width: 20px;
    height: 20px;
}

.sfe-prefs-choice-label {
    font-size: 13px;
    font-weight: 600;
    color: #374151;
    line-height: 1.2;
}

.sfe-prefs-choice:has(.sfe-prefs-choice-input:checked) .sfe-prefs-choice-label {
    color: var(--sfe-prefs-accent) !important;
}

@media (max-width: 520px) {
    .sfe-prefs-choice-group--3 {
        grid-template-columns: 1fr;
    }

    .sfe-prefs-choice {
        flex-direction: row;
        justify-content: flex-start;
        min-height: 0;
        padding: 12px 14px;
        gap: 12px;
    }

    .sfe-prefs-choice-icon {
        width: 32px;
        height: 32px;
        flex-shrink: 0;
    }
}

.sfe-user-prefs-radios {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}

.sfe-user-prefs-radios label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}

.sfe-user-prefs-api-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-top: 8px;
}

.sfe-user-prefs-api-new code {
    word-break: break-all;
}

.sfe-user-prefs-calendario {
    display: flex;
    flex-direction: column;
    gap: 20px;
    max-width: 420px;
}

.sfe-user-prefs-calendario .sfe-user-prefs-field > span,
.sfe-user-prefs-ooo-label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: #374151;
    margin-bottom: 8px;
}

.sfe-user-prefs-calendario select {
    width: 100%;
}

.sfe-user-prefs-ooo-control {
    position: relative;
}

.sfe-user-prefs-ooo-trigger {
    width: 100%;
    text-align: left;
    padding: 10px 12px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    background: #fff;
    font: inherit;
    font-size: 14px;
    color: #111827;
    cursor: pointer;
}

.sfe-user-prefs-ooo-trigger:hover {
    border-color: var(--sfe-prefs-accent);
}

.sfe-user-prefs-ooo-popover {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 20;
    width: min(320px, 100%);
    padding: 12px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);
}

.sfe-user-prefs-ooo-cal-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}

.sfe-user-prefs-ooo-month {
    font-weight: 600;
    font-size: 14px;
    color: #111827;
    text-transform: capitalize;
}

.sfe-user-prefs-ooo-nav {
    border: none;
    background: transparent;
    font-size: 20px;
    line-height: 1;
    color: #6b7280;
    cursor: pointer;
    padding: 4px 8px;
    border-radius: 4px;
}

.sfe-user-prefs-ooo-nav:hover {
    background: #f3f4f6;
    color: #111827;
}

.sfe-user-prefs-ooo-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    margin-bottom: 4px;
    font-size: 11px;
    font-weight: 600;
    color: #9ca3af;
    text-align: center;
}

.sfe-user-prefs-ooo-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.sfe-user-prefs-ooo-day {
    border: none;
    background: transparent;
    font: inherit;
    font-size: 13px;
    padding: 6px 0;
    border-radius: 4px;
    cursor: pointer;
    color: #374151;
}

.sfe-user-prefs-ooo-day.is-empty {
    pointer-events: none;
}

.sfe-user-prefs-ooo-day:hover:not(.is-empty) {
    background: var(--sfe-prefs-accent-soft);
}

.sfe-user-prefs-ooo-day.in-range {
    background: color-mix(in srgb, var(--sfe-prefs-accent) 16%, #fff);
}

.sfe-user-prefs-ooo-day.is-selected {
    background: var(--sfe-prefs-accent);
    color: #fff;
}

.sfe-user-prefs-ooo-time {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #e5e7eb;
}

.sfe-user-prefs-ooo-time input[type="time"] {
    flex: 1;
    min-width: 0;
    padding: 6px 8px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font: inherit;
}

.sfe-user-prefs-ooo-time-sep {
    color: #9ca3af;
}

.sfe-user-prefs-ooo-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 12px;
    gap: 10px;
}

.sfe-user-prefs-ooo-clear {
    border: none;
    background: transparent;
    padding: 6px;
    color: #6b7280;
    cursor: pointer;
    border-radius: 6px;
}

.sfe-user-prefs-ooo-clear:hover {
    background: #f3f4f6;
    color: #111827;
}

.sfe-user-prefs-ooo-clear .icon {
    width: 18px;
    height: 18px;
}

.sfe-user-prefs-ooo-actions .btn-primary {
    flex: 1;
    max-width: 140px;
    margin-left: auto;
}

.sfe-user-prefs-ooo-message {
    width: 100%;
    margin-top: 12px;
    padding: 10px 12px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font: inherit;
    font-size: 14px;
    resize: vertical;
}

.sfe-user-prefs-sections {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.sfe-user-prefs-section {
    padding-bottom: 20px;
    border-bottom: 1px solid #e5e7eb;
}

.sfe-user-prefs-section:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.sfe-user-prefs-section-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.sfe-user-prefs-section-head {
    flex: 1;
    min-width: 0;
}

.sfe-user-prefs-section-action {
    flex-shrink: 0;
}

.sfe-user-prefs-section-devices .sfe-user-prefs-section-head {
    margin-bottom: 12px;
}

.sfe-user-prefs-revoke-all {
    margin-top: 4px;
}

.sfe-prefs-totp-setup,
.sfe-prefs-totp-disable-wrap,
.sfe-prefs-totp-backup {
    margin-top: 12px;
    padding: 12px 14px;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    background: var(--gray-50, #f8fafc);
}

.sfe-prefs-totp-secret-wrap {
    margin: 10px 0 12px;
}

.sfe-prefs-totp-secret {
    display: block;
    margin-top: 6px;
    padding: 10px 12px;
    font-size: 0.95rem;
    letter-spacing: 0.08em;
    word-break: break-all;
    background: #fff;
    border: 1px dashed var(--gray-300);
    border-radius: 6px;
}

.sfe-prefs-totp-status.is-on {
    color: #15803d;
}

.sfe-prefs-totp-backup-list {
    margin: 8px 0 0;
    padding-left: 1.2rem;
    font-family: ui-monospace, monospace;
    font-size: 0.9rem;
}

.sfe-user-prefs-device-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: 6px;
    vertical-align: middle;
}

.sfe-user-prefs-device-dot.is-current {
    background: #22c55e;
}

.sfe-user-prefs-section-head h3 {
    margin: 0 0 4px;
    font-size: 14px;
    font-weight: 600;
    color: #111827;
}

.sfe-user-prefs-section-head .field-hint {
    margin: 0;
}

.sfe-user-prefs-password-wrap {
    margin-top: 12px;
}

.sfe-user-prefs-devices {
    list-style: none;
    margin: 12px 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.sfe-user-prefs-device {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #f9fafb;
}

.sfe-user-prefs-device strong {
    display: block;
    font-size: 13px;
    color: #111827;
}

.sfe-user-prefs-ooo-status {
    margin: 0 0 8px;
    font-size: 13px;
    color: #6b7280;
}

.sfe-user-prefs-footer {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 24px;
    padding-top: 16px;
    border-top: 1px solid #e5e7eb;
}

.sfe-user-prefs-loading,
.sfe-user-prefs-error {
    padding: 40px 0;
    text-align: center;
    color: #6b7280;
}

.sfe-user-prefs-page {
    max-width: 720px;
    margin: 0 auto;
    padding: 8px 0 24px;
}

.sfe-user-prefs-page .sfe-user-prefs-modal-title {
    margin-top: 0;
}

@media (max-width: 640px) {
    .sfe-user-prefs-columns,
    .sfe-user-prefs-grid {
        grid-template-columns: 1fr;
    }
}

/* Tema de usuario (preferencias) */
html[data-sfe-theme="dark"] body.o_web_client {
    color: #e5e7eb;
    background: #111827;
}

html[data-sfe-theme="dark"] body.o_web_client .topbar,
html[data-sfe-theme="dark"] body.o_web_client .sidebar,
html[data-sfe-theme="dark"] body.o_web_client .main-content,
html[data-sfe-theme="dark"] body.o_web_client .form-card,
html[data-sfe-theme="dark"] body.o_web_client .sfe-user-prefs-dialog {
    background: #1f2937;
    color: #e5e7eb;
    border-color: #374151;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-prefs-choice {
    background: #111827;
    border-color: #374151;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-prefs-choice:hover {
    background: #1f2937;
    border-color: #6b7280;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-prefs-choice:has(.sfe-prefs-choice-input:checked) {
    background: linear-gradient(180deg, #1e293b 0%, color-mix(in srgb, var(--sfe-prefs-accent) 22%, #1f2937) 100%) !important;
    border-color: var(--sfe-prefs-accent) !important;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-prefs-choice-icon {
    background: #374151;
    color: #d1d5db;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-prefs-choice:has(.sfe-prefs-choice-input:checked) .sfe-prefs-choice-icon {
    background: var(--sfe-prefs-accent) !important;
    color: #fff !important;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-prefs-choice-label {
    color: #e5e7eb;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-prefs-choice:has(.sfe-prefs-choice-input:checked) .sfe-prefs-choice-label {
    color: var(--sfe-prefs-accent-muted) !important;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-user-prefs-tabs button.is-active {
    color: var(--sfe-prefs-accent-muted) !important;
    border-bottom-color: var(--sfe-prefs-accent) !important;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-user-prefs-footer .btn-primary,
html[data-sfe-theme="dark"] body.o_web_client .sfe-user-prefs-ooo-actions .btn-primary {
    background: var(--sfe-prefs-accent) !important;
    border-color: var(--sfe-prefs-accent) !important;
}

html[data-sfe-theme="dark"] body.o_web_client .sfe-user-prefs-ooo-day.is-selected {
    background: var(--sfe-prefs-accent) !important;
}

.sfe-help-page {
    display: flex;
    flex-direction: column;
    gap: 28px;
    padding: 4px 0 32px;
}

.sfe-help-hero {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    padding: 22px 24px;
    border-radius: 16px;
    background: linear-gradient(135deg, #fff 0%, var(--primary-light, #E8F4FF) 52%, rgba(255, 255, 255, .95) 100%);
    border: 1px solid color-mix(in srgb, var(--sfe-primary) 14%, var(--gray-200));
    box-shadow: 0 2px 12px rgba(15, 23, 42, .05);
}

.sfe-help-hero-icon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--sfe-primary);
    background: linear-gradient(145deg, rgba(0, 123, 255, .14) 0%, rgba(0, 123, 255, .06) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9);
}

.sfe-help-hero-icon .icon { width: 28px; height: 28px; }

.sfe-help-hero h2 {
    margin: 0 0 6px;
    font-size: 1.35rem;
    letter-spacing: -.02em;
    color: var(--gray-900);
}

.sfe-help-hero p {
    margin: 0;
    color: var(--gray-600);
    line-height: 1.55;
    max-width: 58ch;
}

.sfe-help-quick-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}

.sfe-help-card {
    display: flex;
    flex-direction: column;
    min-height: 196px;
    padding: 20px;
    background: #fff;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 22px rgba(15, 23, 42, .05);
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
    position: relative;
    overflow: hidden;
}

.sfe-help-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--sfe-primary);
    opacity: .85;
}

.sfe-help-card--primary::before { background: linear-gradient(90deg, var(--sfe-primary), #2C7BE5); }
.sfe-help-card--apps::before { background: linear-gradient(90deg, #6366f1, #818cf8); }
.sfe-help-card--knowledge::before { background: linear-gradient(90deg, #059669, #34d399); }

.sfe-help-card:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--sfe-primary) 18%, var(--gray-200));
    box-shadow: 0 8px 28px rgba(15, 23, 42, .08);
}

.sfe-help-card-icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 14px;
    color: var(--sfe-primary);
    background: color-mix(in srgb, var(--sfe-primary) 12%, #fff);
}

.sfe-help-card--apps .sfe-help-card-icon { color: #6366f1; background: rgba(99, 102, 241, .12); }
.sfe-help-card--knowledge .sfe-help-card-icon { color: #059669; background: rgba(5, 150, 105, .12); }

.sfe-help-card-icon .icon { width: 22px; height: 22px; }

.sfe-help-card-body { flex: 1; }

.sfe-help-card-body h3 {
    margin: 0 0 8px;
    font-size: 1.05rem;
    color: var(--gray-900);
}

.sfe-help-card-body p {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--gray-600);
}

.sfe-help-card-foot { margin-top: 16px; }

.sfe-help-section {
    display: none;
    padding-top: 8px;
}

.sfe-help-section.is-active {
    display: block;
}

.sfe-help-section[hidden] {
    display: none !important;
}

.sfe-help-section-title {
    margin: 0 0 6px;
    font-size: 1.1rem;
    color: var(--gray-900);
}

.sfe-help-section-lead {
    margin: 0 0 16px;
    color: var(--gray-600);
    font-size: 14px;
    max-width: 62ch;
}

.sfe-help-shortcut-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.sfe-help-shortcut-item {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 14px 16px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
}

.sfe-help-shortcut-item strong {
    display: block;
    margin-bottom: 2px;
    color: var(--gray-900);
}

.sfe-help-shortcut-item span {
    font-size: 13px;
    color: var(--gray-600);
    line-height: 1.45;
}

.sfe-help-kbd {
    display: inline-flex;
    align-items: center;
    padding: 3px 8px;
    border-radius: 6px;
    border: 1px solid var(--gray-300);
    background: var(--gray-50);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 12px;
    font-weight: 600;
    color: var(--gray-700);
    box-shadow: 0 1px 0 rgba(255, 255, 255, .8) inset;
    white-space: nowrap;
}

.sfe-help-tile-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 14px;
}

.sfe-help-tile {
    padding: 16px 18px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
}

.sfe-help-tile h4 {
    margin: 0 0 6px;
    font-size: 15px;
    color: var(--gray-900);
}

.sfe-help-tile p {
    margin: 0 0 12px;
    font-size: 13px;
    color: var(--gray-600);
    line-height: 1.45;
}

.sfe-help-tile--support {
    border-color: color-mix(in srgb, var(--sfe-primary) 16%, var(--gray-200));
    background: linear-gradient(180deg, rgba(0, 123, 255, .04) 0%, #fff 100%);
}

.sfe-help-flow-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.sfe-help-flow {
    padding: 18px 20px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
}

.sfe-help-flow header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}

.sfe-help-flow h4 {
    margin: 0;
    font-size: 15px;
    color: var(--gray-900);
}

.sfe-help-flow ol {
    margin: 0;
    padding-left: 20px;
    color: var(--gray-600);
    font-size: 13px;
    line-height: 1.55;
}

.sfe-help-flow li + li { margin-top: 6px; }

.o_help_navbar_left { flex: 1; min-width: 0; }

.o_help_cp_hint {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
}

.o_help_cp_subtitle {
    margin: 0;
    font-size: 13px;
    color: var(--gray-600);
}

.o_help_control_panel .o_cp_right {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.o_help_control_panel .o_cp_right .btn .icon {
    width: 16px;
    height: 16px;
    margin-right: 4px;
}

.o_help_control_panel .o_cp_right .btn .sfe-help-kbd {
    margin-left: 6px;
    font-size: 11px;
    padding: 1px 6px;
}

.o_help_sidebar .o_help_sidebar_item {
    text-decoration: none;
}

.o_help_main {
    padding: 20px 24px 28px;
    max-width: 960px;
}

@media (max-width: 900px) {
    .o_help_cp_hint { display: none; }
    .o_help_main { padding: 16px; }
    .sfe-help-quick-grid { grid-template-columns: 1fr; }
}

/* Ask AI — FAB flotante + panel (systray A también abre el panel) */
.o_ask_ai {
    position: fixed;
    bottom: 24px;
    right: 24px;
    top: auto;
    left: auto;
    z-index: 9500;
    pointer-events: none;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 12px;
}

.o_ask_ai.is-systray-mode {
    top: 52px;
    right: 20px;
    bottom: auto;
}

.o_ask_ai.o-panel-open {
    pointer-events: auto;
}

.o_ask_ai_fab {
    pointer-events: auto;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    background: linear-gradient(135deg, var(--sfe-primary) 0%, var(--sfe-secondary) 55%, var(--primary-dark) 100%);
    box-shadow: 0 8px 24px rgba(0, 123, 255, 0.45);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.o_ask_ai_fab:hover {
    transform: scale(1.05);
    box-shadow: 0 12px 32px rgba(0, 123, 255, 0.5);
}

.o_ask_ai_fab:focus-visible {
    outline: 2px solid var(--sfe-accent);
    outline-offset: 2px;
}

.o_ask_ai_fab_icon {
    width: 22px;
    height: 22px;
}

.o_ask_ai_fab_label {
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 0.06em;
    line-height: 1;
    color: #fff;
    text-transform: uppercase;
}

.o_ask_ai_fab .icon {
    width: 24px;
    height: 24px;
}

.o_ask_ai_panel {
    position: absolute;
    bottom: calc(100% + 12px);
    top: auto;
    right: 0;
    width: min(380px, calc(100vw - 40px));
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 16px 48px rgba(15, 23, 42, 0.2);
    display: flex;
    flex-direction: column;
    max-height: min(520px, calc(100vh - 100px));
    overflow: hidden;
}

.o_ask_ai.is-systray-mode .o_ask_ai_panel {
    bottom: auto;
    top: 0;
    max-height: min(520px, calc(100vh - 80px));
}

.o_ask_ai_panel[hidden] {
    display: none !important;
}

.o_ask_ai_header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px;
    border-bottom: 1px solid var(--gray-200);
    background: linear-gradient(90deg, #faf8fc, #fff);
}

.o_ask_ai_title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 700;
    font-size: 15px;
    color: var(--sfe-primary);
}

.o_ask_ai_sparkle {
    width: 20px;
    height: 20px;
}

.o_ask_ai_window_btns {
    display: flex;
    gap: 4px;
}

.o_ask_ai_btn {
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    color: var(--gray-500);
    padding: 2px 6px;
}

.o_ask_ai_body {
    flex: 1;
    overflow-y: auto;
    padding: 14px;
}

.o_ask_ai_intro {
    font-size: 13px;
    color: var(--gray-500);
    margin: 0 0 12px;
}

.o_ask_ai_context_hint {
    font-size: 12px;
    color: var(--sfe-primary);
    margin: 0 0 10px;
    padding: 6px 10px;
    background: #f3eef8;
    border-radius: 6px;
}

.o_ask_ai_context_hint[hidden] {
    display: none;
}

.o_ask_ai_suggestions {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 12px;
}

.o_ask_ai_chip {
    text-align: left;
    border: 1px solid var(--gray-200);
    background: var(--gray-50);
    border-radius: 8px;
    padding: 8px 10px;
    font-size: 12px;
    cursor: pointer;
    color: var(--gray-700);
}

.o_ask_ai_chip:hover {
    border-color: var(--sfe-primary);
    background: var(--primary-light);
}

.o_ask_ai_msg {
    margin-bottom: 10px;
    padding: 10px 12px;
    border-radius: 10px;
    font-size: 13px;
    line-height: 1.45;
    white-space: pre-wrap;
}

.o_ask_ai_msg.is-user {
    background: var(--primary-light);
    margin-left: 24px;
}

.o_ask_ai_msg.is-bot {
    background: var(--gray-50);
    margin-right: 12px;
}

.o_ask_ai_footer {
    border-top: 1px solid var(--gray-200);
    padding: 10px 12px;
}

.o_ask_ai_form {
    display: flex;
    gap: 8px;
    align-items: center;
}

.o_ask_ai_input {
    flex: 1;
    border: 1px solid var(--gray-200);
    border-radius: 999px;
    padding: 10px 14px;
    font-size: 13px;
    outline: none;
}

.o_ask_ai_input:focus {
    border-color: var(--sfe-primary);
}

.o_ask_ai_send {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: none;
    background: var(--sfe-primary);
    color: #fff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

.o_ask_ai.o-panel-open .o_ask_ai_fab {
    display: none;
}

/* Calendario actividades */
.calendar-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.calendar-nav {
    display: flex;
    align-items: center;
    gap: 10px;
}

.calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 1px;
    background: var(--gray-200);
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    overflow: hidden;
}

.calendar-weekday {
    background: #fff;
    padding: 8px;
    font-size: 12px;
    font-weight: 600;
    text-align: center;
    color: var(--gray-600);
}

.calendar-cell {
    background: #fff;
    min-height: 96px;
    padding: 6px;
    vertical-align: top;
}

.calendar-cell.is-empty {
    background: #fafafa;
}

.calendar-cell.is-today {
    background: #f3eef8;
}

.calendar-day-num {
    font-size: 12px;
    font-weight: 600;
    color: var(--gray-500);
    margin-bottom: 4px;
}

.calendar-event {
    display: block;
    font-size: 11px;
    padding: 3px 6px;
    margin-bottom: 3px;
    border-radius: 4px;
    background: var(--sfe-primary);
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.calendar-event:hover {
    filter: brightness(1.08);
}

/* RRHH — organigrama */
.hr-orgchart {
    padding: 16px 0;
}

.hr-org-list {
    list-style: none;
    margin: 0;
    padding-left: 0;
}

.hr-org-list .hr-org-list {
    margin-top: 8px;
    padding-left: 24px;
    border-left: 2px solid var(--gray-200);
}

.hr-org-dept {
    margin-bottom: 12px;
    padding: 12px 16px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
}

.hr-org-manager {
    font-size: 13px;
    color: var(--gray-600);
    font-weight: normal;
}

.hr-org-employees {
    list-style: disc;
    margin: 8px 0 0 20px;
    padding: 0;
}

.hr-org-employees li {
    margin-bottom: 4px;
    font-size: 14px;
}

.hr-org-employees a {
    color: var(--sfe-primary);
    text-decoration: none;
}

.hr-org-employees a:hover {
    text-decoration: underline;
}

/* Studio */
.studio-hero { margin-bottom: 24px; }
.studio-model-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}
.studio-model-card {
    display: block;
    padding: 16px;
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    background: #fff;
    text-decoration: none;
    color: inherit;
}
.studio-model-card:hover { border-color: var(--sfe-primary); }
.studio-model-card code { display: block; margin-top: 6px; font-size: 12px; color: var(--gray-600); }
.studio-editor-header { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; flex-wrap: wrap; }
.studio-view-tabs { display: flex; gap: 8px; margin-bottom: 16px; }
.studio-view-tab {
    padding: 8px 14px;
    border-radius: 8px;
    border: 1px solid var(--gray-200);
    text-decoration: none;
    color: inherit;
    font-size: 14px;
}
.studio-view-tab.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.08); font-weight: 600; }
.studio-editor-layout { display: grid; grid-template-columns: 1fr 280px; gap: 24px; }
.studio-sortable { list-style: none; margin: 0; padding: 0; }
.studio-field-row {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; margin-bottom: 8px;
    border: 1px solid var(--gray-200); border-radius: 8px; background: #fff;
}
.studio-field-row.is-dragging { opacity: 0.6; }
.studio-drag { cursor: grab; color: var(--gray-400); }
.studio-field-row label { display: flex; align-items: center; gap: 8px; flex: 1; }
.studio-field-row code { font-size: 11px; color: var(--gray-500); }
.studio-badge { font-size: 11px; background: var(--sfe-primary); color: #fff; padding: 2px 6px; border-radius: 4px; }
.studio-sidebar label { display: block; margin-bottom: 12px; }
.timesheet-week-header { margin-bottom: 16px; }
.attendance-kiosk-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
    margin-top: 16px;
}
.attendance-kiosk-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.attendance-kiosk-status.is-in { color: var(--success, #059669); font-weight: 600; }
.attendance-kiosk-status.is-out { color: var(--gray-500); }
.attendance-kiosk-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}
.attendance-kiosk-alert { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; font-size: 14px; }
.attendance-kiosk-success { background: #d1fae5; color: #065f46; }
.attendance-kiosk-error { background: #fee2e2; color: #991b1b; }
.attendance-dashboard-header,
.appraisal-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.attendance-dashboard-actions,
.appraisal-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.attendance-stats,
.appraisal-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.attendance-stat-card,
.appraisal-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.attendance-stat-card.is-active,
.appraisal-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.appraisal-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.attendance-stat-value,
.appraisal-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.attendance-stat-label,
.appraisal-stat-label { font-size: 13px; color: var(--gray-600); }
.attendance-panel,
.appraisal-panel { margin-bottom: 28px; }
.attendance-panel h3,
.appraisal-panel h3 { margin-bottom: 12px; }
.attendance-in-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px;
}
.attendance-in-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 14px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 13px;
}
.attendance-in-card span { color: var(--gray-600); font-size: 12px; }
.holidays-dashboard-header,
.timesheet-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.holidays-dashboard-actions,
.timesheet-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.holidays-stats,
.timesheet-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.holidays-stat-card,
.timesheet-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.holidays-stat-card.is-active,
.timesheet-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.holidays-stat-card.is-warning,
.timesheet-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.holidays-stat-value,
.timesheet-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.holidays-stat-label,
.timesheet-stat-label { font-size: 13px; color: var(--gray-600); }
.holidays-panel,
.timesheet-panel { margin-bottom: 28px; }
.holidays-panel h3,
.timesheet-panel h3 { margin-bottom: 12px; }
.holidays-on-leave-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px;
}
.holidays-on-leave-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 14px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 13px;
}
.holidays-on-leave-card span { color: var(--gray-600); font-size: 12px; }
.holidays-team-calendar-page { margin-bottom: 24px; }
.holidays-team-filter {
    display: flex;
    gap: 12px;
    margin-bottom: 16px;
    align-items: center;
}
.holidays-team-filter select { min-width: 200px; }
.holidays-team-row .gantt-timeline-col { min-height: 44px; }
.holidays-leave-bar.is-validate { background: #008784; border-color: #006d6a; }
.holidays-leave-bar.is-confirm { background: #f59e0b; border-color: #d97706; }
.holidays-team-legend { display: flex; gap: 16px; margin-top: 12px; }
.holidays-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
}
.holidays-legend-item::before {
    content: '';
    width: 12px;
    height: 12px;
    border-radius: 3px;
    display: inline-block;
}
.holidays-legend-item.is-validate::before { background: #008784; }
.holidays-legend-item.is-confirm::before { background: #f59e0b; }
.timesheet-week-nav {
    display: flex;
    align-items: center;
    gap: 8px;
}
.timesheet-week-label { font-weight: 600; min-width: 80px; text-align: center; }
.timesheet-week-summary { margin-bottom: 16px; }
.timesheet-week-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }

.timesheet-grid-page { margin-bottom: 24px; }
.timesheet-grid-header {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}
.timesheet-grid-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.timesheet-grid-filter { margin-bottom: 12px; }
.timesheet-grid-filter select { min-width: 220px; }
.timesheet-grid-wrap { overflow-x: auto; margin-bottom: 12px; }
.timesheet-grid-table th,
.timesheet-grid-table td { vertical-align: middle; min-width: 72px; }
.timesheet-grid-table th:first-child,
.timesheet-grid-table td:first-child { min-width: 180px; }
.timesheet-grid-input {
    width: 64px;
    padding: 4px 6px;
    font-size: 13px;
}
.timesheet-grid-existing {
    display: inline-block;
    padding: 2px 6px;
    border-radius: 4px;
    background: rgba(0, 123, 255, 0.1);
    color: var(--sfe-primary);
    font-size: 12px;
    font-weight: 600;
}
.timesheet-grid-submit { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.text-danger { color: #dc2626; font-weight: 600; }
.forum-dashboard-header,
.livechat-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.forum-dashboard-actions,
.livechat-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.forum-stats,
.livechat-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.forum-stat-card,
.livechat-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.forum-stat-card.is-active,
.livechat-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.forum-stat-card.is-warning,
.livechat-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.forum-stat-value,
.livechat-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.forum-stat-label,
.livechat-stat-label { font-size: 13px; color: var(--gray-600); }
.forum-panel,
.livechat-panel { margin-bottom: 28px; }
.forum-panel h3,
.livechat-panel h3 { margin-bottom: 12px; }
.livechat-badge {
    display: inline-block;
    background: #dc2626;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 7px;
    border-radius: 999px;
}
tr.is-unread td { font-weight: 600; }
.livechat-session-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.livechat-session-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.livechat-thread {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 16px;
    max-height: 480px;
    overflow-y: auto;
    padding: 12px;
    background: #f8fafc;
    border-radius: 10px;
}
.livechat-bubble {
    max-width: 80%;
    padding: 10px 14px;
    border-radius: 10px;
    background: #fff;
    border: 1px solid var(--gray-200);
}
.livechat-bubble.is-visitor { align-self: flex-start; }
.livechat-bubble.is-operator { align-self: flex-end; background: rgba(0, 123, 255, 0.08); border-color: var(--sfe-primary); }
.livechat-bubble.is-bot { align-self: flex-end; background: rgba(37, 99, 235, 0.08); border-color: #2563eb; }
.livechat-bubble-meta { font-size: 11px; color: var(--gray-600); margin: 0 0 4px; }
.livechat-reply-form textarea { width: 100%; min-height: 80px; margin-bottom: 8px; }
.livechat-alert { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; }
.livechat-success { background: #d1fae5; color: #065f46; }
.livechat-error { background: #fee2e2; color: #991b1b; }
.payroll-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.payroll-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.payroll-regional-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
}
.payroll-regional-card {
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    padding: 16px;
    background: #fff;
}
.payroll-regional-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}
.payroll-regional-card-header h3 { margin: 0; font-size: 1.05rem; }
.payroll-regional-stats { margin-bottom: 12px; }
.payroll-regional-highlights {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
    display: grid;
    gap: 6px;
}
.payroll-regional-highlights li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    font-size: 13px;
    color: var(--gray-700);
}
.website-ai-configurator .website-ai-form__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 16px;
    margin-bottom: 16px;
}
.website-ai-form__full { display: block; margin-bottom: 16px; }
.website-ai-form__actions { display: flex; gap: 10px; flex-wrap: wrap; }
.website-ai-preview-list { margin: 0 0 16px; padding-left: 20px; }
.website-ai-preview-list li { margin-bottom: 6px; }
.payroll-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.payroll-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.payroll-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.payroll-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.payroll-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.payroll-stat-label { font-size: 13px; color: var(--gray-600); }
.payroll-panel { margin-bottom: 28px; }
.payroll-panel h3 { margin-bottom: 12px; }
.payroll-generate-form {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 8px;
}
.payroll-generate-form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.payroll-alert { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; }
.payroll-success { background: #d1fae5; color: #065f46; }
.payroll-error { background: #fee2e2; color: #991b1b; }

/* Documents workspace */
.documents-workspace-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.documents-workspace-actions { display: flex; gap: 8px; }
.documents-workspace-layout {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 24px;
}
.documents-folder-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.documents-folder-list li a {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    border-radius: 8px;
    text-decoration: none;
    color: inherit;
}
.documents-folder-list li.is-active a,
.documents-folder-list li a:hover {
    background: var(--gray-100);
}
.documents-folder-count {
    font-size: 12px;
    color: var(--gray-500);
    background: var(--gray-100);
    padding: 2px 8px;
    border-radius: 999px;
}
.documents-upload-form {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: flex-end;
    margin-bottom: 20px;
    padding: 16px;
    border: 1px dashed var(--gray-300);
    border-radius: 10px;
    background: var(--gray-50, #fafafa);
}
.documents-upload-form label { margin: 0; }
.documents-table { width: 100%; }

/* Documents dashboard */
.documents-dashboard-header,
.knowledge-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.documents-dashboard-actions,
.knowledge-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.documents-stats,
.knowledge-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.documents-stat-card,
.knowledge-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.documents-stat-card.is-active,
.knowledge-stat-card.is-active { border-color: #008784; background: rgba(0, 135, 132, 0.06); }
.documents-stat-card.is-warning,
.knowledge-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.documents-stat-card.is-highlight,
.knowledge-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(44, 123, 229, 0.06); }
.documents-stat-value,
.knowledge-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.documents-stat-label,
.knowledge-stat-label { font-size: 13px; color: var(--gray-600); }
.documents-onboarding-list {
    list-style: none;
    padding: 0;
    margin: 0 0 20px;
    display: grid;
    gap: 6px;
}
.documents-onboarding-list li.is-done { color: #059669; }
.documents-onboarding-list li.is-pending { color: #b45309; }
.documents-dashboard-columns,
.knowledge-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.documents-panel,
.knowledge-panel { margin-bottom: 24px; }
.documents-panel h3,
.knowledge-panel h3 { margin-bottom: 10px; }
.documents-recent-list,
.documents-folder-summary,
.knowledge-entry-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.documents-recent-list li,
.documents-folder-summary li,
.knowledge-entry-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
    align-items: center;
}
.documents-recent-list a,
.documents-folder-summary a,
.knowledge-entry-list a { color: var(--sfe-primary); text-decoration: none; }
.documents-recent-list span,
.documents-folder-summary span,
.knowledge-entry-list span { color: var(--gray-500); font-size: 13px; }
.knowledge-edit-link { font-size: 12px !important; color: var(--gray-600) !important; }
@media (max-width: 768px) {
    .documents-dashboard-columns,
    .knowledge-dashboard-columns { grid-template-columns: 1fr; }
}

/* IoT & VoIP dashboards */
.iot-dashboard-header,
.voip-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.iot-dashboard-actions,
.voip-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.iot-stats,
.voip-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.iot-stat-card,
.voip-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.iot-stat-card.is-active,
.voip-stat-card.is-active { border-color: #008784; background: rgba(0, 135, 132, 0.06); }
.iot-stat-card.is-warning,
.voip-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.iot-stat-card.is-highlight,
.voip-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(44, 123, 229, 0.06); }
.iot-stat-value,
.voip-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.iot-stat-label,
.voip-stat-label { font-size: 13px; color: var(--gray-600); }
.iot-panel,
.voip-panel { margin-bottom: 24px; }
.iot-panel h3,
.voip-panel h3 { margin-bottom: 10px; }
.iot-driver-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px;
    margin-bottom: 12px;
}
.iot-driver-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 12px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 13px;
}
.iot-driver-card code { color: var(--gray-600); }
.voip-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.voip-call-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.voip-call-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.voip-call-list a { color: var(--sfe-primary); text-decoration: none; }
.voip-call-list span { color: var(--gray-500); font-size: 13px; }
@media (max-width: 768px) {
    .voip-dashboard-columns { grid-template-columns: 1fr; }
}

.voip-my-account-panel {
    margin-top: 24px;
    padding: 16px;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    background: #fff;
}

.o_systray_voip.is-ringing .icon { animation: voip-pulse 1s infinite; }

.o_voip_popover {
    width: 280px;
    max-width: calc(100vw - 24px);
}

.o_voip_header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}

.o_voip_status {
    font-size: 12px;
    color: var(--gray-500);
}

.o_voip_status.is-ok { color: #008784; }
.o_voip_status.is-active { color: #2563eb; }
.o_voip_status.is-error { color: #dc2626; }
.o_voip_status.is-warn { color: #d97706; }

.o_voip_display {
    font-size: 22px;
    font-weight: 600;
    text-align: center;
    padding: 10px 8px;
    margin-bottom: 8px;
    background: var(--gray-50);
    border-radius: 6px;
    letter-spacing: 1px;
}

.o_voip_keypad {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 6px;
    margin-bottom: 10px;
}

.o_voip_key {
    border: 1px solid var(--gray-200);
    background: #fff;
    border-radius: 6px;
    padding: 10px 0;
    font-size: 16px;
    cursor: pointer;
}

.o_voip_key:hover { background: var(--gray-50); }

.o_voip_actions {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}

.o_voip_settings {
    margin-top: 8px;
    font-size: 13px;
}

.o_voip_settings summary { cursor: pointer; margin-bottom: 8px; }

.o_voip_agent_form label {
    display: block;
    margin-bottom: 8px;
}

.o_voip_agent_form input {
    width: 100%;
    margin-top: 4px;
}

.o_systray_badge_voip {
    background: #008784;
}

@keyframes voip-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.45; }
}

/* Knowledge wiki */
.knowledge-home-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.knowledge-search {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
    max-width: 520px;
}
.knowledge-categories {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 20px;
}
.knowledge-category-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border: 1px solid var(--gray-200);
    border-radius: 999px;
    text-decoration: none;
    color: inherit;
    font-size: 13px;
}
.knowledge-category-chip.is-active,
.knowledge-category-chip:hover {
    border-color: var(--sfe-primary);
    background: rgba(0, 123, 255, 0.08);
}
.knowledge-category-chip span {
    font-size: 11px;
    color: var(--gray-500);
}
.knowledge-article-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
}
.knowledge-article-card {
    display: block;
    padding: 16px;
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    background: #fff;
    text-decoration: none;
    color: inherit;
}
.knowledge-article-card:hover { border-color: var(--sfe-primary); }
.knowledge-article-card p {
    margin: 8px 0 0;
    font-size: 13px;
    color: var(--gray-600);
}
.knowledge-article-read { max-width: 820px; }
.knowledge-breadcrumb {
    font-size: 13px;
    color: var(--gray-500);
    margin-bottom: 12px;
}
.knowledge-breadcrumb a { color: var(--sfe-primary); text-decoration: none; }
.knowledge-article-body {
    line-height: 1.6;
    margin: 20px 0;
    white-space: pre-wrap;
}
.knowledge-subarticles ul { margin: 8px 0 0 20px; }
.knowledge-article-footer { margin-top: 24px; }

/* Maintenance dashboard */
.maintenance-dashboard-header,
.quality-inspection-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.maintenance-dashboard-actions,
.quality-inspection-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.maintenance-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.maintenance-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.maintenance-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.maintenance-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.maintenance-stat-label { font-size: 13px; color: var(--gray-600); }
.maintenance-panel { margin-bottom: 28px; }
.maintenance-panel h3 { margin-bottom: 12px; }
.maintenance-batch { margin-bottom: 20px; }
.maintenance-alert { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; }
.maintenance-success { background: #d1fae5; color: #065f46; }
.maintenance-error { background: #fee2e2; color: #991b1b; }
tr.is-priority td { font-weight: 600; }

/* Quality inspection */
.quality-check-list { display: flex; flex-direction: column; gap: 12px; }
.quality-check-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
}
.quality-check-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
.quality-check-picking {
    font-size: 13px;
    color: var(--sfe-primary);
    text-decoration: none;
}
.quality-check-meta { font-size: 13px; color: var(--gray-600); margin: 6px 0; }
.quality-tolerance { font-size: 13px; margin: 0 0 8px; }
.quality-check-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin-top: 12px;
}
.quality-measure-input { width: 120px; }

.quality-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.quality-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.quality-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.quality-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.quality-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.quality-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.quality-stat-card.is-danger { border-color: #dc2626; background: #fef2f2; }
.quality-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.quality-stat-label { font-size: 13px; color: var(--gray-600); }
.quality-panel { margin-bottom: 28px; }
.quality-panel h3 { margin-bottom: 12px; }

/* FSM schedule */
.fsm-schedule-header,
.fsm-dashboard-header,
.repair-workshop-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.fsm-schedule-actions,
.fsm-dashboard-actions,
.repair-workshop-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.fsm-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.fsm-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.fsm-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.fsm-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.fsm-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.fsm-stat-label { font-size: 13px; color: var(--gray-600); }
.fsm-panel { margin-bottom: 28px; }
.fsm-panel h3 { margin-bottom: 12px; }
.fsm-alert { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; }
.fsm-success { background: #d1fae5; color: #065f46; }
.fsm-error { background: #fee2e2; color: #991b1b; }
.fsm-day-block { margin-bottom: 24px; }
.fsm-day-block h3 { margin-bottom: 10px; }
.fsm-order-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
}
.fsm-order-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 14px;
    background: #fff;
}
.fsm-order-card.state-in_progress { border-color: var(--sfe-primary); }
.fsm-order-card-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
}
.fsm-order-card-head a { color: inherit; text-decoration: none; }
.fsm-order-time { font-size: 13px; color: var(--gray-600); }
.fsm-order-meta { font-size: 12px; color: var(--gray-500); margin: 6px 0 0; }
.fsm-map { height: 360px; border-radius: var(--radius-md); border: 1px solid var(--gray-200); margin-bottom: 8px; z-index: 1; }

/* Repair workshop */
.repair-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.repair-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.repair-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.repair-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.repair-stat-label { font-size: 13px; color: var(--gray-600); }
.repair-workshop-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
.repair-panel h3 { margin-bottom: 10px; }
.repair-order-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.repair-order-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.repair-order-list a { color: var(--sfe-primary); text-decoration: none; }
.repair-order-list span { color: var(--gray-500); font-size: 13px; }
.repair-order-row { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.repair-alert { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; }
.repair-success { background: #d1fae5; color: #065f46; }
.repair-error { background: #fee2e2; color: #991b1b; }
.repair-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }

/* Marketing automation & SMS */
.marketing-dashboard-header,
.sms-dashboard-header,
.sms-send-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.sms-dashboard-actions,
.sms-send-actions,
.marketing-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.sms-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.sms-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.sms-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.sms-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.sms-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.sms-stat-label { font-size: 13px; color: var(--gray-600); }
.sms-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.sms-panel { margin-bottom: 0; }
.sms-panel h3 { margin-bottom: 12px; }
.sms-template-list {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
}
.sms-template-list li {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
}
.sms-template-list li:last-child { border-bottom: none; }
.sms-template-list span { font-size: 13px; color: var(--gray-600); }
@media (max-width: 900px) {
    .sms-dashboard-columns { grid-template-columns: 1fr; }
}
.marketing-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.marketing-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.marketing-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.marketing-stat-value { font-size: 28px; font-weight: 700; }
.marketing-stat-label { font-size: 13px; color: var(--gray-600); }
.marketing-panel { margin-bottom: 24px; }
.marketing-workflow-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.marketing-workflow-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.marketing-workflow-trigger { margin-bottom: 16px; }
.marketing-workflow-steps {
    list-style: none;
    padding: 0;
    margin: 0 0 20px;
    max-width: 640px;
}
.marketing-workflow-node {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    background: #fff;
    margin-bottom: 0;
}
.marketing-workflow-node.is-trigger {
    background: rgba(0, 123, 255, 0.06);
    border-color: var(--sfe-primary);
    flex-direction: column;
    align-items: flex-start;
}
.marketing-workflow-node.is-dragging { opacity: 0.6; }
.marketing-workflow-node-body { flex: 1; display: flex; flex-direction: column; gap: 4px; }
.marketing-workflow-meta { font-size: 13px; color: var(--gray-600); }
.marketing-workflow-drag { cursor: grab; color: var(--gray-400); user-select: none; }
.marketing-workflow-connector {
    list-style: none;
    text-align: center;
    color: var(--gray-400);
    padding: 4px 0;
    font-size: 18px;
}

/* POS backoffice & restaurant dashboard */
.pos-backoffice-header,
.restaurant-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.pos-backoffice-actions,
.restaurant-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.pos-backoffice-stats,
.restaurant-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.pos-bo-stat-card,
.restaurant-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.pos-bo-stat-card.is-active,
.restaurant-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.pos-bo-stat-card.is-warning,
.restaurant-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.pos-bo-stat-value,
.restaurant-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.pos-bo-stat-label,
.restaurant-stat-label { font-size: 13px; color: var(--gray-600); }
.pos-backoffice-panel,
.restaurant-panel { margin-bottom: 24px; }
.pos-backoffice-panel h3,
.restaurant-panel h3 { margin-bottom: 10px; }
.restaurant-table-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
}
.restaurant-table-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 14px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 14px;
}
.restaurant-table-card.state-available { border-color: #10b981; background: #ecfdf5; }
.restaurant-table-card.state-occupied { border-color: #f59e0b; background: #fffbeb; }
.restaurant-table-card.state-reserved { border-color: #6366f1; background: #eef2ff; }
.restaurant-table-state { font-size: 12px; color: var(--gray-600); }
.sms-send-form {
    display: grid;
    gap: 12px;
    max-width: 520px;
}
.sms-send-form label { display: block; }

/* Rental & subscriptions dashboards */
.rental-dashboard-header,
.subscription-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.rental-dashboard-actions,
.subscription-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.rental-stats,
.subscription-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.rental-stat-card,
.subscription-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.rental-stat-card.is-active,
.subscription-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.rental-stat-card.is-warning,
.subscription-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.rental-stat-value,
.subscription-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.rental-stat-label,
.subscription-stat-label { font-size: 13px; color: var(--gray-600); }
.rental-panel,
.subscription-panel { margin-bottom: 24px; }
.rental-order-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.rental-order-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.rental-order-list a { color: var(--sfe-primary); text-decoration: none; }
.rental-order-list span { color: var(--gray-500); font-size: 13px; }

/* Planning & appointment dashboards */
.planning-dashboard-header,
.appointment-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.planning-dashboard-actions,
.appointment-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.planning-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.planning-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.planning-stat-card.is-active { border-color: var(--sfe-secondary); background: rgba(44, 123, 229, 0.06); }
.planning-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.planning-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.planning-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.planning-stat-label { font-size: 13px; color: var(--gray-600); }
.planning-dashboard-columns,
.appointment-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.planning-panel,
.appointment-panel { margin-bottom: 24px; }
.planning-panel h3,
.appointment-panel h3 { margin-bottom: 10px; }
.planning-entry-list,
.appointment-entry-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.planning-entry-list li,
.appointment-entry-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.planning-entry-list a,
.appointment-entry-list a { color: var(--sfe-primary); text-decoration: none; }
.planning-entry-list span,
.appointment-entry-list span { color: var(--gray-500); font-size: 13px; text-align: right; }
@media (max-width: 768px) {
    .planning-dashboard-columns,
    .appointment-dashboard-columns { grid-template-columns: 1fr; }
}

/* Planning schedule */
.planning-schedule-header,
.appointment-schedule-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.planning-schedule-actions,
.appointment-schedule-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.planning-week-grid-wrap { overflow-x: auto; }
.planning-week-grid th,
.planning-week-grid td { vertical-align: top; min-width: 110px; }
.planning-week-grid th.is-today,
.planning-week-grid td.is-today { background: rgba(0, 123, 255, 0.06); }
.planning-week-grid th small { font-weight: 400; color: var(--gray-500); }
.planning-slot-chip {
    display: block;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    padding: 8px 10px;
    margin-bottom: 6px;
    font-size: 12px;
    text-decoration: none;
    color: inherit;
    background: #fff;
}
.planning-slot-chip.state-published { border-color: var(--sfe-primary); }
.planning-slot-chip strong { display: block; font-size: 13px; margin-bottom: 2px; }
.planning-slot-chip span { color: var(--gray-600); }

/* Appointment schedule (internal) */
.appointment-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.appointment-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.appointment-stat-card.is-active { border-color: var(--sfe-secondary); background: rgba(44, 123, 229, 0.06); }
.appointment-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.appointment-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.appointment-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.appointment-stat-label { font-size: 13px; color: var(--gray-600); }

/* Fleet dashboard */
.fleet-dashboard-header,
.sign-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.fleet-dashboard-actions,
.sign-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.fleet-stats,
.sign-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.fleet-stat-card,
.sign-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.fleet-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.sign-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.fleet-stat-value,
.sign-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.fleet-stat-label,
.sign-stat-label { font-size: 13px; color: var(--gray-600); }
.fleet-panel,
.sign-panel { margin-bottom: 28px; }
.fleet-panel h3,
.sign-panel h3 { margin-bottom: 12px; }

/* Approvals inbox */
.approvals-dashboard-header,
.approvals-inbox-header,
.expense-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.approvals-dashboard-actions,
.approvals-inbox-actions,
.expense-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.approvals-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.approvals-panel { margin-bottom: 0; }
.approvals-panel h3 { margin-bottom: 12px; }
@media (max-width: 900px) {
    .approvals-dashboard-columns { grid-template-columns: 1fr; }
}
.approvals-stats,
.expense-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.approvals-stat-card,
.expense-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.approvals-stat-card.is-active,
.expense-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.approvals-stat-value,
.expense-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.approvals-stat-label,
.expense-stat-label { font-size: 13px; color: var(--gray-600); }
.approvals-card-list { display: flex; flex-direction: column; gap: 12px; }
.approvals-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
}
.approvals-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
.approvals-card-head a { color: inherit; text-decoration: none; }
.approvals-card-meta { font-size: 13px; color: var(--gray-600); margin: 4px 0 0; }
.approvals-card-desc { font-size: 14px; margin: 10px 0 0; color: var(--gray-700); }
.approvals-card-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.expense-panel { margin-bottom: 28px; }
.expense-panel h3 { margin-bottom: 12px; }

/* Asset dashboard */
.asset-dashboard-header,
.esg-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.asset-dashboard-actions,
.esg-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.asset-stats,
.esg-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.asset-stat-card,
.esg-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.asset-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.asset-stat-value,
.esg-stat-value { font-size: 22px; font-weight: 700; line-height: 1.2; word-break: break-word; }
.asset-stat-label,
.esg-stat-label { font-size: 13px; color: var(--gray-600); }
.asset-panel,
.esg-panel { margin-bottom: 28px; }
.asset-panel h3,
.esg-panel h3 { margin-bottom: 12px; }
.esg-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
    margin-bottom: 12px;
}
.esg-kpi-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 14px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.esg-kpi-card.pillar-environment { border-top: 3px solid #059669; }
.esg-kpi-card.pillar-social { border-top: 3px solid #2563eb; }
.esg-kpi-label { font-size: 12px; color: var(--gray-600); }
.esg-kpi-value { font-size: 24px; font-weight: 700; }

/* Social dashboard */
.social-dashboard-header,
.recruitment-pipeline-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.social-dashboard-actions,
.recruitment-pipeline-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.social-stats,
.recruitment-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.social-stat-card,
.recruitment-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.social-stat-card.is-active,
.recruitment-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.social-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.social-stat-value,
.recruitment-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.social-stat-label,
.recruitment-stat-label { font-size: 13px; color: var(--gray-600); }
.social-panel,
.recruitment-panel { margin-bottom: 28px; }
.social-panel h3,
.recruitment-panel h3 { margin-bottom: 12px; }
.social-post-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
}
.social-post-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 14px;
    background: #fff;
}
.social-post-card.platform-linkedin { border-top: 3px solid #0a66c2; }
.social-post-card.platform-facebook { border-top: 3px solid #1877f2; }
.social-post-card.platform-twitter { border-top: 3px solid #1da1f2; }
.social-post-card.platform-instagram { border-top: 3px solid #e1306c; }
.social-post-card-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
}
.social-post-card-head a { color: inherit; text-decoration: none; }
.social-post-card-head span { font-size: 12px; color: var(--gray-500); }
.social-post-meta { font-size: 12px; color: var(--gray-500); margin: 6px 0 0; }
.social-stream-dashboard .social-stream-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}
.social-stream-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 20px;
}
.social-stream-filter {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px;
    border-radius: 999px;
    border: 1px solid var(--gray-200);
    background: #fff;
    color: var(--gray-700);
    text-decoration: none;
    font-size: 13px;
}
.social-stream-filter.is-active {
    border-color: var(--sfe-primary);
    background: rgba(0, 123, 255, 0.08);
    color: var(--sfe-primary);
    font-weight: 600;
}
.social-stream-timeline {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.social-stream-item {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 14px 16px;
    background: #fff;
    border-left: 4px solid var(--gray-300);
}
.social-stream-item.source-social_post { border-left-color: #1877f2; }
.social-stream-item.source-email_campaign { border-left-color: var(--sfe-secondary); }
.social-stream-item.source-discuss_message { border-left-color: var(--sfe-primary); }
.social-stream-item.source-crm_lead { border-left-color: #16a34a; }
.social-stream-item.source-stream_item { border-left-color: #f59e0b; }
.social-stream-item__head {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
    margin-bottom: 8px;
    flex-wrap: wrap;
}
.social-stream-badge {
    display: inline-block;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--gray-600);
    margin-right: 8px;
}
.social-stream-item__head time { font-size: 12px; color: var(--gray-500); }
.social-stream-author { font-size: 13px; color: var(--gray-700); }
.social-stream-item h3 { margin: 0 0 8px; font-size: 16px; }
.social-stream-item h3 a { color: inherit; text-decoration: none; }
.social-stream-item h3 a:hover { color: var(--sfe-primary); }
.social-stream-item p { margin: 0; color: var(--gray-700); font-size: 14px; line-height: 1.5; }
.social-stream-item__foot {
    display: flex;
    gap: 10px;
    align-items: center;
    margin-top: 10px;
    font-size: 12px;
    color: var(--gray-500);
}
.social-stream-state.is-new {
    color: #b45309;
    font-weight: 600;
}
.recruitment-kanban-columns {
    display: grid;
    grid-template-columns: repeat(4, minmax(200px, 1fr));
    gap: 12px;
    overflow-x: auto;
    margin-bottom: 28px;
}
.recruitment-kanban-col {
    background: var(--gray-50);
    border-radius: 10px;
    padding: 12px;
    min-height: 200px;
}
.recruitment-kanban-col h3 { font-size: 14px; margin-bottom: 10px; }
.recruitment-applicant-list { display: flex; flex-direction: column; gap: 8px; }
.recruitment-applicant-card {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    padding: 10px;
    font-size: 13px;
}
.recruitment-applicant-card a { color: inherit; text-decoration: none; }
.recruitment-applicant-meta { color: var(--gray-600); margin: 4px 0 0; font-size: 12px; }
.recruitment-priority { font-size: 11px; color: var(--sfe-primary); font-weight: 600; }

/* PLM dashboard */
.plm-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.plm-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.plm-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.plm-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.plm-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.plm-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.plm-stat-card.is-highlight { border-color: #2563eb; background: #eff6ff; }
.plm-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.plm-stat-label { font-size: 13px; color: var(--gray-600); }
.plm-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.plm-panel { margin-bottom: 0; }
.plm-panel h3 { margin-bottom: 12px; }
@media (max-width: 900px) {
    .plm-dashboard-columns { grid-template-columns: 1fr; }
}

/* Spreadsheet dashboard & editor */
.spreadsheet-dashboard-header,
.spreadsheet-editor-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.spreadsheet-dashboard-actions,
.spreadsheet-editor-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.spreadsheet-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.spreadsheet-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.spreadsheet-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.spreadsheet-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.spreadsheet-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.spreadsheet-stat-label { font-size: 13px; color: var(--gray-600); }
.spreadsheet-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.spreadsheet-panel { margin-bottom: 0; }
.spreadsheet-panel h3 { margin-bottom: 12px; }
.spreadsheet-sheet-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.spreadsheet-sheet-list li { padding: 8px 0; border-bottom: 1px solid var(--gray-100); }
.spreadsheet-grid-wrap { overflow-x: auto; margin-bottom: 16px; }
.spreadsheet-grid {
    border-collapse: collapse;
    min-width: 100%;
    background: #fff;
}
.spreadsheet-grid td {
    border: 1px solid var(--gray-200);
    padding: 0;
}
.spreadsheet-cell {
    border: none;
    width: 120px;
    padding: 8px 10px;
    font-size: 14px;
    background: transparent;
}
.spreadsheet-cell:focus {
    outline: 2px solid var(--sfe-primary);
    outline-offset: -2px;
    background: #faf5ff;
}
.spreadsheet-pivot-form .form-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.spreadsheet-pivot-wrap { overflow-x: auto; margin-top: 16px; }
.spreadsheet-pivot-table th,
.spreadsheet-pivot-table td.num { text-align: right; }
.spreadsheet-pivot-table th:first-child,
.spreadsheet-pivot-table td.num.is-total,
.spreadsheet-pivot-table tr.is-total-row th { font-weight: 600; background: var(--gray-50); }
@media (max-width: 900px) {
    .spreadsheet-dashboard-columns { grid-template-columns: 1fr; }
}

/* Referral dashboard */
.referral-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.referral-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.referral-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.referral-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.referral-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.referral-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.referral-stat-card.is-highlight { border-color: #2563eb; background: #eff6ff; }
.referral-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.referral-stat-label { font-size: 13px; color: var(--gray-600); }
.referral-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.referral-panel { margin-bottom: 0; }
.referral-panel h3 { margin-bottom: 12px; }
@media (max-width: 900px) {
    .referral-dashboard-columns { grid-template-columns: 1fr; }
}

/* Blog dashboard */
.blog-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.blog-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.blog-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.blog-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.blog-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.blog-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.blog-stat-card.is-highlight { border-color: #2563eb; background: #eff6ff; }
.blog-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.blog-stat-label { font-size: 13px; color: var(--gray-600); }
.blog-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.blog-panel { margin-bottom: 0; }
.blog-panel h3 { margin-bottom: 12px; }
.blog-post-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.blog-post-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
}
.blog-post-list li:last-child { border-bottom: none; }
.blog-post-list span { font-size: 13px; color: var(--gray-600); }
.blog-public-link { font-size: 13px; }
@media (max-width: 900px) {
    .blog-dashboard-columns { grid-template-columns: 1fr; }
}

/* Event dashboard */
.event-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.event-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.event-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.event-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.event-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.event-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.event-stat-card.is-highlight { border-color: #2563eb; background: #eff6ff; }
.event-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.event-stat-label { font-size: 13px; color: var(--gray-600); }
.event-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.event-panel { margin-bottom: 0; }
.event-panel h3 { margin-bottom: 12px; }
.event-agenda-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.event-agenda-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
}
.event-agenda-list li:last-child { border-bottom: none; }
.event-agenda-list span { font-size: 13px; color: var(--gray-600); }
.event-seats { font-size: 12px; color: var(--sfe-primary); }
@media (max-width: 900px) {
    .event-dashboard-columns { grid-template-columns: 1fr; }
}

/* Event check-in scanner */
.event-checkin-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.event-checkin-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.event-checkin-form {
    max-width: 560px;
    margin-bottom: 24px;
    padding: 16px;
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    background: #fff;
}
.event-checkin-field { display: block; margin-bottom: 12px; font-size: 14px; }
.event-checkin-field input {
    display: block;
    width: 100%;
    margin-top: 6px;
    padding: 10px 12px;
    border: 1px solid var(--gray-300);
    border-radius: 8px;
    font-family: ui-monospace, monospace;
}
.event-checkin-events { list-style: none; margin: 0; padding: 0; }
.event-checkin-events li { padding: 8px 0; border-bottom: 1px solid var(--gray-100); font-size: 14px; }
.event-checkin-events li:last-child { border-bottom: none; }

/* Slides / eLearning dashboard */
.slides-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.slides-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.slides-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.slides-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.slides-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.slides-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.slides-stat-card.is-highlight { border-color: #2563eb; background: #eff6ff; }
.slides-stat-card.is-success { border-color: #059669; background: #ecfdf5; }
.slides-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.slides-stat-label { font-size: 13px; color: var(--gray-600); }
.slides-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.slides-panel { margin-bottom: 0; }
.slides-panel h3 { margin-bottom: 12px; }
.slides-course-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.slides-course-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
}
.slides-course-list li:last-child { border-bottom: none; }
.slides-course-list span { font-size: 13px; color: var(--gray-600); }
.slides-public-link { font-size: 13px; }
@media (max-width: 900px) {
    .slides-dashboard-columns { grid-template-columns: 1fr; }
}

/* Studio dashboard */
.studio-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.studio-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.studio-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.studio-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.studio-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.studio-stat-card.is-highlight { border-color: #2563eb; background: #eff6ff; }
.studio-stat-value { font-size: 28px; font-weight: 700; line-height: 1; }
.studio-stat-label { font-size: 13px; color: var(--gray-600); }
.studio-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.studio-panel { margin-bottom: 0; }
.studio-panel h3 { margin-bottom: 12px; }
.studio-view-list {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
}
.studio-view-list li {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
}
.studio-view-list li:last-child { border-bottom: none; }
.studio-view-list span { font-size: 13px; color: var(--gray-600); }
@media (max-width: 900px) {
    .studio-dashboard-columns { grid-template-columns: 1fr; }
}

/* Survey dashboard */
.survey-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.survey-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.survey-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.survey-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.survey-stat-card.is-active { border-color: var(--sfe-secondary); background: rgba(44, 123, 229, 0.06); }
.survey-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.survey-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.survey-stat-label { font-size: 13px; color: var(--gray-600); }
.survey-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.survey-panel { margin-bottom: 24px; }
.survey-panel h3 { margin-bottom: 10px; }
.survey-entry-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.survey-entry-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.survey-entry-list a { color: var(--sfe-primary); text-decoration: none; }
.survey-entry-list span { color: var(--gray-500); font-size: 13px; text-align: right; }
@media (max-width: 768px) {
    .survey-dashboard-columns { grid-template-columns: 1fr; }
}

.survey-public-body {
    margin: 0;
    background: #f1f5f9;
    font-family: var(--font-sans, system-ui, sans-serif);
    color: #1e293b;
}
.survey-public-header {
    background: var(--sfe-secondary);
    color: #fff;
    padding: 12px 20px;
    font-size: 14px;
}
.survey-public-main {
    max-width: 640px;
    margin: 24px auto;
    padding: 0 16px 40px;
}
.survey-public-card {
    background: #fff;
    border-radius: 12px;
    padding: 24px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.survey-public-card h1 { margin: 0 0 12px; font-size: 22px; }
.survey-public-desc { color: #64748b; margin-bottom: 20px; }
.survey-public-alert {
    padding: 12px 16px;
    border-radius: 8px;
    margin-bottom: 16px;
}
.survey-public-alert.is-error { background: #fef2f2; color: #b91c1c; }
.survey-public-question {
    border: none;
    margin: 0 0 20px;
    padding: 0;
}
.survey-public-question legend {
    font-weight: 600;
    margin-bottom: 8px;
    padding: 0;
}
.survey-public-choices { display: flex; flex-direction: column; gap: 8px; }
.survey-public-choice { display: flex; align-items: center; gap: 8px; }
.survey-public-score { display: flex; flex-wrap: wrap; gap: 12px; }
.survey-public-score label { font-size: 14px; }
.survey-public-score-result { margin-top: 16px; font-size: 16px; }

/* Calendar dashboard & agenda */
.calendar-dashboard-header,
.calendar-agenda-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.calendar-dashboard-actions,
.calendar-agenda-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.calendar-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.calendar-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.calendar-stat-card.is-active { border-color: var(--sfe-primary); background: color-mix(in srgb, var(--sfe-primary) 8%, #fff); }
.calendar-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.calendar-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.calendar-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.calendar-stat-label { font-size: 13px; color: var(--gray-600); }
.calendar-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.calendar-panel { margin-bottom: 24px; }
.calendar-panel h3 { margin-bottom: 10px; }
.calendar-entry-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.calendar-entry-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.calendar-entry-list a { color: var(--sfe-primary); text-decoration: none; }
.calendar-entry-list span { color: var(--gray-500); font-size: 13px; text-align: right; }
.calendar-week-columns {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 10px;
    overflow-x: auto;
}
.calendar-day-column {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 10px;
    background: #fff;
    min-height: 120px;
}
.calendar-day-column.is-today { border-color: var(--sfe-primary); background: color-mix(in srgb, var(--sfe-primary) 6%, #fff); }
.calendar-day-column header {
    display: flex;
    justify-content: space-between;
    gap: 6px;
    margin-bottom: 10px;
    font-size: 13px;
    color: var(--gray-600);
}
.calendar-event-chip {
    display: block;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    padding: 8px;
    margin-bottom: 8px;
    text-decoration: none;
    color: inherit;
    background: var(--gray-50);
    font-size: 13px;
}
.calendar-event-chip strong { display: block; margin-bottom: 4px; color: var(--sfe-primary); }
.calendar-event-chip span { display: block; color: var(--gray-600); }
.calendar-event-chip small { display: block; margin-top: 4px; color: var(--gray-500); }
.calendar-event-chip.state-confirmed { border-left: 3px solid var(--sfe-primary); }
.calendar-event-chip.state-draft { border-left: 3px solid #f59e0b; }
@media (max-width: 768px) {
    .calendar-dashboard-columns { grid-template-columns: 1fr; }
    .calendar-week-columns { grid-template-columns: 1fr; }
}

/* Meeting rooms calendar grid */
.meeting-rooms-grid { overflow-x: auto; border: 1px solid var(--gray-200); border-radius: 10px; }
.meeting-rooms-grid-header,
.meeting-rooms-grid-row {
    display: grid;
    grid-template-columns: 160px repeat(7, minmax(100px, 1fr));
    gap: 1px;
    background: var(--gray-200);
}
.meeting-rooms-room-col,
.meeting-rooms-day-col {
    background: #fff;
    padding: 10px;
    min-height: 64px;
}
.meeting-rooms-day-col.is-today { background: #f0fdfa; }
.meeting-rooms-room-col small { display: block; color: var(--gray-500); margin-top: 4px; }
.meeting-rooms-day-col .calendar-event-chip { display: block; margin-bottom: 6px; }

/* Payroll MX checklist */
.payroll-mx-checklist { list-style: none; padding: 0; margin: 0; }
.payroll-mx-checklist li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    margin-bottom: 8px;
}
.payroll-mx-checklist li.is-done { border-color: #059669; background: #ecfdf5; }
.payroll-mx-checklist li.is-partial { border-color: #f59e0b; background: #fffbeb; }
.payroll-mx-checklist li.is-pending { border-color: var(--gray-200); }
.payroll-mx-checklist li.is-info { border-color: #2563eb; background: #eff6ff; }
.marketing-card-preview-card {
    max-width: 420px;
    margin: 0 auto;
    padding: 24px;
    border: 1px solid var(--gray-200);
    border-radius: 12px;
    text-align: center;
}
.marketing-card-qr {
    margin-top: 16px;
    padding: 12px;
    background: var(--gray-50);
    border-radius: 8px;
    font-size: 12px;
    word-break: break-all;
}

/* Discuss workspace — layout Odoo, colores Tecnonube (--sfe-primary) */
.discuss-workspace {
    --discuss-brand: var(--sfe-primary);
    --discuss-brand-soft: var(--primary-light, #E8F4FF);
    --discuss-dm-soft: color-mix(in srgb, var(--sfe-accent) 14%, #fff);
    display: flex;
    flex-direction: column;
    height: calc(100vh - 46px);
    min-height: 480px;
    margin: 0;
    background: #fff;
}
.discuss-module-nav {
    display: flex;
    align-items: stretch;
    gap: 0;
    padding: 0 16px;
    border-bottom: 1px solid #e9ecef;
    flex-shrink: 0;
    min-height: 38px;
    background: #fff;
}
.discuss-module-nav-item {
    padding: 10px 16px;
    font-size: 13px;
    color: #6c757d;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
}
.discuss-module-nav-item:hover { color: #212529; }
.discuss-module-nav-item.is-active {
    color: var(--discuss-brand);
    font-weight: 600;
    border-bottom-color: var(--discuss-brand);
}
.discuss-module-nav-config-wrap {
    position: relative;
    display: flex;
    align-items: stretch;
}
.discuss-module-nav-config-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: none;
    background: transparent;
    cursor: pointer;
    font: inherit;
}
.discuss-module-nav-chevron {
    width: 12px;
    height: 12px;
    opacity: 0.7;
}
.discuss-module-nav-config-menu {
    position: absolute;
    top: calc(100% + 2px);
    left: 0;
    min-width: 220px;
    background: #fff;
    border: 1px solid #e9ecef;
    border-radius: 6px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
    z-index: 40;
    padding: 6px 0;
}
.discuss-module-nav-config-menu[hidden] {
    display: none !important;
}
.discuss-module-nav-config-item {
    display: block;
    padding: 8px 16px;
    font-size: 13px;
    color: #212529;
    text-decoration: none;
}
.discuss-module-nav-config-item:hover {
    background: #f1f3f5;
}
.discuss-module-nav-config-item.is-active {
    background: #e7f1ff;
    color: var(--discuss-brand, var(--sfe-primary));
    font-weight: 600;
}
.discuss-notifications-workspace {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 46px);
    min-height: 480px;
    background: #fff;
}
.discuss-notifications-backdrop {
    flex: 1;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 48px 16px;
    background: rgba(15, 23, 42, 0.08);
}
.discuss-notifications-dialog {
    width: min(560px, 100%);
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 16px 48px rgba(15, 23, 42, 0.18);
    border: 1px solid #e9ecef;
}
.discuss-notifications-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid #e9ecef;
}
.discuss-notifications-header h2 {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
}
.discuss-notifications-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 6px;
    color: #6c757d;
    text-decoration: none;
    font-size: 22px;
    line-height: 1;
}
.discuss-notifications-close:hover {
    background: #f1f3f5;
    color: #212529;
}
.discuss-notifications-form {
    padding: 20px;
}
.discuss-notifications-fieldset {
    border: 0;
    margin: 0;
    padding: 0;
}
.discuss-notifications-fieldset legend {
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 6px;
}
.discuss-notifications-help {
    margin: 0 0 14px;
}
.discuss-notifications-radios {
    display: grid;
    gap: 10px;
}
.discuss-notifications-radio {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    cursor: pointer;
}
.discuss-notifications-radio input {
    margin: 0;
}
.discuss-notifications-sounds {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid #e9ecef;
}
.discuss-notifications-sounds-copy strong {
    font-size: 14px;
    font-weight: 600;
}
.discuss-notifications-switch {
    flex-shrink: 0;
}
.discuss-notifications-status.is-error {
    color: #c0392b;
}
.discuss-voice-video-tabs {
    display: flex;
    gap: 0;
    padding: 0 20px;
    border-bottom: 1px solid #e9ecef;
}
.discuss-voice-video-tabs button {
    border: none;
    background: transparent;
    padding: 12px 16px;
    font-size: 13px;
    color: #6c757d;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
}
.discuss-voice-video-tabs button.is-active {
    color: var(--discuss-brand, var(--sfe-primary));
    font-weight: 600;
    border-bottom-color: var(--discuss-brand, var(--sfe-primary));
}
.discuss-voice-video-panel {
    padding-top: 4px;
}
.discuss-voice-video-device,
.discuss-voice-video-sensitivity,
.discuss-voice-video-toggle-row {
    margin-top: 18px;
}
.discuss-voice-video-label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #6c757d;
    margin-bottom: 8px;
}
.discuss-voice-video-sensitivity-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 6px;
}
.discuss-voice-video-slider-row {
    display: flex;
    align-items: center;
    gap: 12px;
}
.discuss-voice-video-slider-row input[type="range"] {
    flex: 1;
}
.discuss-config-list-workspace {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 46px);
    background: #fff;
}
.discuss-config-list-cp {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 12px 16px;
    border-bottom: 1px solid #e9ecef;
}
.discuss-config-list-cp-row {
    display: flex;
    align-items: center;
    gap: 12px;
}
.discuss-config-list-title {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
}
.discuss-config-list-search {
    min-width: 240px;
}
.discuss-config-list-empty {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 48px 24px;
    gap: 8px;
}
.discuss-config-list-empty-icon {
    font-size: 48px;
    opacity: 0.35;
}
.discuss-config-list-table-wrap {
    padding: 0 16px 24px;
}
.discuss-config-list-table tbody tr {
    cursor: pointer;
}
.discuss-layout {
    display: flex;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}
.discuss-sidebar {
    width: 260px;
    flex-shrink: 0;
    border-right: 1px solid #e9ecef;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    background: #fff;
}
.discuss-sidebar-search {
    display: flex;
    gap: 6px;
    padding: 10px 12px;
    align-items: center;
}
.discuss-sidebar-search-field {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    padding: 5px 8px;
}
.discuss-sidebar-search-field .icon { width: 15px; height: 15px; color: #adb5bd; flex-shrink: 0; }
.discuss-sidebar-search-input {
    border: none;
    outline: none;
    width: 100%;
    font-size: 13px;
    background: transparent;
    color: #495057;
}
.discuss-sidebar-meeting-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 4px;
    border: none;
    background: var(--discuss-brand);
    color: #fff;
    flex-shrink: 0;
    cursor: pointer;
    padding: 0;
}
.discuss-sidebar-meeting-btn .icon { width: 16px; height: 16px; }
.discuss-sidebar-section { padding: 2px 0 8px; }
.discuss-sidebar-section-head {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    font-size: 12px;
    font-weight: 600;
    color: #6c757d;
}
.discuss-sidebar-hash { font-weight: 700; color: #868e96; font-size: 14px; }
.discuss-sidebar-section-icon { width: 13px; height: 13px; color: #868e96; }
.discuss-sidebar-add {
    margin-left: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border: none;
    background: transparent;
    color: #868e96;
    cursor: pointer;
    border-radius: 3px;
    text-decoration: none;
    padding: 0;
}
.discuss-sidebar-add:hover { background: #f1f3f5; color: #495057; }
.discuss-sidebar-add .icon { width: 13px; height: 13px; }
.discuss-sidebar-list { list-style: none; margin: 0; padding: 0; }
.discuss-sidebar-link {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 12px 5px 14px;
    font-size: 13px;
    color: #495057;
    text-decoration: none;
    border-radius: 0;
    line-height: 1.35;
}
.discuss-sidebar-link:hover { background: #f8f9fa; }
.discuss-sidebar-link.is-active.is-channel-active {
    background: var(--discuss-brand-soft);
    color: var(--primary-dark, #0056CC);
    font-weight: 500;
}
.discuss-sidebar-link.is-active.is-dm-active {
    background: var(--discuss-dm-soft);
    color: var(--sfe-secondary);
    font-weight: 500;
}
.discuss-sidebar-avatar {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #868e96;
    color: #fff;
    font-size: 10px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    position: relative;
}
.discuss-sidebar-avatar.is-bot { background: var(--sfe-secondary); }
.discuss-sidebar-status {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #28a745;
    margin-left: auto;
    flex-shrink: 0;
    border: 1.5px solid #fff;
}
.discuss-sidebar-empty,
.discuss-sidebar-empty-item {
    padding: 2px 14px 6px;
    font-size: 12px;
    color: #adb5bd;
    list-style: none;
}
.discuss-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    background: #fff;
}
.discuss-main-empty {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    color: #868e96;
}
.discuss-chat-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    padding: 8px 16px;
    border-bottom: 1px solid #e9ecef;
    flex-shrink: 0;
    background: #fff;
    position: relative;
    min-height: 44px;
}
.discuss-chat-header-left { display: flex; align-items: center; gap: 8px; min-width: 0; }
.discuss-chat-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #868e96;
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.discuss-chat-avatar.is-bot { background: var(--sfe-secondary); }
.discuss-chat-title { margin: 0; font-size: 14px; font-weight: 600; color: #212529; }
.discuss-chat-header-actions { display: flex; gap: 2px; align-items: center; }
.discuss-chat-action-btn {
    width: 30px;
    height: 30px;
    border: none;
    background: transparent;
    border-radius: 4px;
    color: #6c757d;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    padding: 0;
}
.discuss-chat-action-btn:hover { background: #f1f3f5; color: #495057; }
.discuss-chat-action-btn.is-muted { color: #adb5bd; }
.discuss-chat-action-btn.is-disabled { opacity: 0.55; }
.discuss-chat-action-btn.is-starred { color: var(--discuss-brand); }
.discuss-chat-action-btn .icon { width: 16px; height: 16px; }
.discuss-thread-search {
    flex: 1 1 100%;
    padding: 6px 0 0;
}
.discuss-thread-search-input {
    width: 100%;
    max-width: 280px;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    padding: 5px 10px;
    font-size: 13px;
}
.discuss-chat-thread {
    flex: 1;
    overflow-y: auto;
    padding: 12px 20px 16px;
    background: #fff;
}
.discuss-chat-welcome {
    text-align: center;
    padding: 28px 16px 20px;
    max-width: 480px;
    margin: 0 auto 8px;
}
.discuss-chat-welcome-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #868e96;
    color: #fff;
    font-size: 20px;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 10px;
}
.discuss-chat-welcome-avatar.is-bot { background: var(--sfe-secondary); }
.discuss-chat-welcome h3 { margin: 0 0 6px; font-size: 16px; font-weight: 600; color: #212529; }
.discuss-chat-welcome p { margin: 0; font-size: 13px; color: #6c757d; line-height: 1.45; }
.discuss-chat-separator {
    display: flex;
    align-items: center;
    margin: 14px 0;
    text-align: center;
}
.discuss-chat-separator::before,
.discuss-chat-separator::after {
    content: '';
    flex: 1;
    border-bottom: 1px solid #dee2e6;
}
.discuss-chat-separator span {
    padding: 0 10px;
    font-size: 11px;
    color: #868e96;
    white-space: nowrap;
}
.discuss-chat-message {
    display: flex;
    gap: 8px;
    margin-bottom: 8px;
    padding: 2px 0;
    max-width: 860px;
}
.discuss-chat-message:hover { background: rgba(0, 0, 0, 0.015); border-radius: 4px; }
.discuss-chat-message.is-hidden { display: none; }
.discuss-chat-message-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #adb5bd;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    overflow: hidden;
    margin-top: 2px;
}
.discuss-chat-message-avatar img { width: 100%; height: 100%; object-fit: cover; }
.discuss-chat-message-avatar.is-bot { background: var(--sfe-secondary); }
.discuss-chat-message-content { flex: 1; min-width: 0; padding-top: 1px; }
.discuss-chat-message-meta {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 2px;
    font-size: 13px;
}
.discuss-chat-message-meta strong { font-weight: 600; color: #212529; }
.discuss-chat-message-meta time { font-size: 11px; color: #868e96; font-weight: 400; }
.discuss-chat-message-text { font-size: 13px; line-height: 1.5; word-break: break-word; color: #343a40; }
.discuss-chat-composer {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px 14px;
    border-top: 1px solid #e9ecef;
    flex-shrink: 0;
    background: #fff;
}
.discuss-composer-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--discuss-brand);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    overflow: hidden;
}
.discuss-composer-avatar img { width: 100%; height: 100%; object-fit: cover; }
.discuss-compose {
    flex: 1;
    min-width: 0;
    position: relative;
}
.discuss-compose-pill {
    display: flex;
    align-items: center;
    gap: 4px;
    border: 1px solid #ced4da;
    border-radius: 20px;
    padding: 4px 8px 4px 4px;
    background: #fff;
    min-height: 38px;
}
.discuss-compose-pill:focus-within {
    border-color: var(--discuss-brand);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--discuss-brand) 20%, transparent);
}
.discuss-compose-plus {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: none;
    background: transparent;
    font-size: 20px;
    line-height: 1;
    color: #868e96;
    flex-shrink: 0;
    cursor: pointer;
    padding: 0;
}
.discuss-compose-plus:hover { color: #495057; background: #f1f3f5; }
.discuss-compose-input {
    flex: 1;
    border: none;
    outline: none;
    font-size: 13px;
    padding: 4px 6px;
    min-width: 0;
    background: transparent;
}
.discuss-compose-tools {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
    position: relative;
}
.discuss-compose-tool {
    border: none;
    background: transparent;
    font-size: 15px;
    color: #868e96;
    cursor: pointer;
    padding: 2px 5px;
    border-radius: 4px;
    line-height: 1.2;
}
.discuss-compose-tool:hover { background: #f1f3f5; color: #495057; }
.discuss-compose-tool.is-starred { color: var(--discuss-brand); }
.discuss-compose-gif-wrap { display: flex; align-items: center; }
.discuss-compose .o_discuss_gif_btn {
    margin: 0;
    padding: 2px 5px;
    font-size: 11px;
    font-weight: 600;
    color: #868e96;
    background: transparent;
    border: none;
    cursor: pointer;
}
.discuss-compose .o_discuss_gif_picker {
    position: absolute;
    bottom: calc(100% + 8px);
    right: 0;
    width: min(360px, 90vw);
    z-index: 30;
}
.discuss-compose-file-name {
    display: block;
    font-size: 11px;
    color: #868e96;
    margin-top: 4px;
    padding-left: 4px;
}
@media (max-width: 900px) {
    .discuss-sidebar { width: 220px; }
}
@media (max-width: 640px) {
    .discuss-workspace { height: calc(100vh - 46px); }
    .discuss-layout { flex-direction: column; }
    .discuss-sidebar {
        width: 100%;
        max-height: 36vh;
        border-right: none;
        border-bottom: 1px solid #e9ecef;
    }
}

/* Discuss — vista Canales estilo Odoo */
.discuss-channels-workspace {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 46px);
    background: #f8f9fa;
}
.discuss-channels-control-panel {
    flex-shrink: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    background: #fff;
    border-bottom: 1px solid #e9ecef;
    padding: 8px 16px 10px;
}
.discuss-channels-cp-row {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}
.discuss-channels-cp-row-title { flex-wrap: wrap; }
.discuss-channels-cp-row-search {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
}
.discuss-channels-cp-row-search .discuss-channels-search,
.discuss-channels-cp-row-search .o_apps_search {
    flex: 1 1 auto;
    min-width: 180px;
}
.discuss-channels-cp-row-tools {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.discuss-channels-control-panel .o_cp_title {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.discuss-channels-control-panel .o_cp_title_text {
    font-size: 16px;
    font-weight: 600;
    margin: 0;
}
.discuss-channels-cp-gear-wrap { position: relative; }
.discuss-channels-cp-gear-dropdown {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    min-width: 220px;
    background: #fff;
    border: 1px solid #e9ecef;
    border-radius: 6px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
    z-index: 30;
    padding: 4px 0;
}
.discuss-channels-cp-gear-dropdown[hidden] { display: none !important; }
.discuss-channels-cp-gear-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    color: #212529;
    text-decoration: none;
    font-size: 13px;
    border: none;
    background: transparent;
    width: 100%;
    cursor: pointer;
}
.discuss-channels-cp-gear-item:hover { background: #f1f3f5; }
.discuss-channels-body {
    flex: 1;
    padding: 16px;
    overflow: auto;
}
.discuss-channels-kanban {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 12px;
    align-content: start;
}
.discuss-channel-card {
    background: #fff;
    border: 1px solid #e9ecef;
    border-radius: 8px;
    display: flex;
    flex-direction: column;
    min-height: 132px;
    overflow: hidden;
}
.discuss-channel-card-main {
    flex: 1;
    padding: 14px 14px 8px;
    text-decoration: none;
    color: inherit;
    display: block;
}
.discuss-channel-card-main:hover { background: #fafbfc; }
.discuss-channel-card-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}
.discuss-channel-card-icon {
    width: 28px;
    height: 28px;
    border-radius: 4px;
    background: var(--channel-color, var(--sfe-primary));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 14px;
    flex-shrink: 0;
}
.discuss-channel-card-title {
    margin: 0;
    font-size: 15px;
    font-weight: 600;
    color: var(--channel-color, var(--sfe-primary));
}
.discuss-channel-card-desc {
    margin: 0;
    font-size: 13px;
    color: #6c757d;
    line-height: 1.45;
}
.discuss-channel-card-foot {
    padding: 8px 14px 12px;
    display: flex;
    justify-content: flex-end;
}
.discuss-channel-leave-form,
.discuss-channel-join-form {
    margin: 0;
}
.discuss-channel-leave-btn,
.discuss-channel-join-btn {
    border: 1px solid #dee2e6;
    background: #fff;
    color: #495057;
    border-radius: 4px;
    padding: 4px 10px;
    font-size: 12px;
    cursor: pointer;
}
.discuss-channel-leave-btn:hover,
.discuss-channel-join-btn:hover { background: #f1f3f5; }
.discuss-channel-join-btn {
    border-color: var(--sfe-primary);
    color: var(--sfe-primary);
}
.discuss-channels-list-view { background: #fff; border: 1px solid #e9ecef; border-radius: 8px; overflow: hidden; }
.discuss-channels-table { margin: 0; }
.discuss-channels-list-name {
    color: var(--channel-color, var(--sfe-primary));
    font-weight: 600;
    text-decoration: none;
}
.discuss-channels-list-name:hover { text-decoration: underline; }
.discuss-channels-col-actions {
    white-space: nowrap;
    text-align: right;
}
.discuss-channels-col-actions .btn { margin-left: 4px; }
.discuss-channels-col-actions .discuss-channel-leave-form,
.discuss-channels-col-actions .discuss-channel-join-form { display: inline-block; }

/* Discuss fase 2 — popovers y adjuntos */
.discuss-chat-action-btn.is-active {
    background: color-mix(in srgb, var(--discuss-brand) 12%, transparent);
    color: var(--discuss-brand);
}
.discuss-members-popover,
.discuss-more-popover {
    position: absolute;
    top: calc(100% + 4px);
    right: 16px;
    z-index: 30;
    width: 220px;
    background: #fff;
    border: 1px solid #e9ecef;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    padding: 6px 0;
}
.discuss-more-popover a {
    display: block;
    padding: 8px 14px;
    font-size: 13px;
    color: #495057;
    text-decoration: none;
}
.discuss-more-popover a:hover { background: #f8f9fa; }
.discuss-members-popover header {
    padding: 6px 12px 8px;
    font-size: 12px;
    font-weight: 600;
    color: #6c757d;
    border-bottom: 1px solid #f1f3f5;
}
.discuss-members-list { list-style: none; margin: 0; padding: 4px 0; max-height: 220px; overflow-y: auto; }
.discuss-members-list li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    font-size: 13px;
}
.discuss-members-avatar {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #adb5bd;
    color: #fff;
    font-size: 11px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.discuss-emoji-picker {
    position: absolute;
    bottom: calc(100% + 6px);
    right: 0;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 2px;
    padding: 6px;
    background: #fff;
    border: 1px solid #e9ecef;
    border-radius: 6px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
    z-index: 25;
}
.discuss-emoji-picker[hidden] {
    display: none !important;
}
.discuss-compose-tool.is-emoji-open {
    background: #f1f3f5;
    color: #495057;
}
.discuss-emoji-item {
    border: none;
    background: transparent;
    font-size: 18px;
    cursor: pointer;
    border-radius: 4px;
    padding: 4px;
}
.discuss-emoji-item:hover { background: #f1f3f5; }
.o_discuss_attach_file a,
.o_discuss_attach_img { margin-top: 6px; }
.o_discuss_attach_img img { max-width: 260px; border-radius: 4px; }
.discuss-meeting-panel {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
}
.discuss-meeting-panel[hidden] { display: none !important; }
.discuss-meeting-backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.45); }
.discuss-meeting-dialog {
    position: relative;
    width: min(920px, 94vw);
    max-height: 90vh;
    background: #fff;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.2);
}
.discuss-meeting-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--gray-200);
}
.discuss-meeting-header h3 { margin: 0; font-size: 16px; }
.discuss-meeting-close-btn {
    border: none;
    background: transparent;
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    color: var(--gray-600);
}
.discuss-meeting-body { flex: 1; padding: 16px; overflow: auto; min-height: 280px; }
.discuss-meeting-footer {
    display: flex;
    gap: 8px;
    align-items: center;
    padding: 12px 16px;
    border-top: 1px solid var(--gray-200);
}
.discuss-meeting-hint { font-size: 13px; color: var(--gray-600); margin: 0; }
.discuss-meeting-iframe { width: 100%; height: 420px; border: none; border-radius: 8px; }
.discuss-meeting-videos {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
.discuss-meeting-local,
.discuss-meeting-remote {
    width: 100%;
    background: #111;
    border-radius: 8px;
    min-height: 200px;
    object-fit: cover;
}
@media (max-width: 640px) {
    .discuss-meeting-videos { grid-template-columns: 1fr; }
}

/* Discuss dashboard & channel (legacy) */
.discuss-dashboard-header,
.discuss-channel-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.discuss-dashboard-actions,
.discuss-channel-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.discuss-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.discuss-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.discuss-stat-card.is-active { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.discuss-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.discuss-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.discuss-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.discuss-stat-label { font-size: 13px; color: var(--gray-600); }
.discuss-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.discuss-panel { margin-bottom: 24px; }
.discuss-panel h3 { margin-bottom: 10px; }
.discuss-channel-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.discuss-channel-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.discuss-channel-list a { color: var(--sfe-primary); text-decoration: none; }
.discuss-channel-list span { color: var(--gray-500); font-size: 13px; text-align: right; }
.discuss-message-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.discuss-message-list li {
    padding: 12px 0;
    border-bottom: 1px solid var(--gray-100);
}
.discuss-message-list p { margin: 6px 0 0; font-size: 14px; color: var(--gray-700); }
.discuss-message-meta { font-size: 12px; color: var(--gray-500); margin-left: 8px; }
.discuss-thread {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    max-height: 480px;
    overflow-y: auto;
    margin-bottom: 20px;
}
.discuss-thread-item {
    padding: 12px 0;
    border-bottom: 1px solid var(--gray-100);
}
.discuss-thread-item:last-child { border-bottom: none; }
.discuss-thread-item header {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 6px;
    font-size: 13px;
}
.discuss-thread-item time { color: var(--gray-500); }
.discuss-mail-from, .discuss-mail-subject { font-size: 12px; color: var(--gray-600); margin-left: 6px; }
.discuss-mail-send-failed { color: #b91c1c; font-size: 12px; margin-left: 6px; }
.discuss-mail-send-ok { color: #047857; font-size: 12px; margin-left: 6px; }
.discuss-thread-actions { margin-top: 8px; }
.discuss-thread-item.is-inbound-mail { background: #f8fafc; padding: 8px; border-radius: 6px; }
.discuss-thread-item p { margin: 0; font-size: 14px; line-height: 1.5; }
.discuss-compose {
    max-width: 720px;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: flex-end;
    position: relative;
}

.discuss-compose .o_discuss_gif_btn {
    order: 1;
    align-self: flex-end;
}

.discuss-compose .discuss-compose-label {
    order: 2;
    flex: 1 1 100%;
    display: block;
}

.discuss-compose > .btn-primary {
    order: 3;
}

.discuss-compose .o_discuss_gif_picker {
    order: 10;
    flex: 1 1 100%;
}

.discuss-compose .o_discuss_gif_preview {
    order: 0;
    flex: 1 1 100%;
}

@media (max-width: 768px) {
    .o_discuss_gif_picker {
        max-height: min(42vh, 220px);
    }

    .o_discuss_gif_results {
        grid-template-columns: repeat(3, 1fr);
        max-height: min(32vh, 160px);
    }

    .o_discuss_gif_picker_head {
        flex-direction: column;
        align-items: stretch;
    }

    .o_discuss_gif_tabs {
        width: 100%;
        justify-content: stretch;
    }

    .o_discuss_gif_tab {
        flex: 1;
        text-align: center;
    }

    .o_discuss_gif_search {
        width: 100%;
        flex: 1 1 100%;
    }

    .o_discuss_gif_close {
        position: absolute;
        top: 6px;
        right: 6px;
    }

    .o_discuss_gif_picker {
        position: relative;
        padding-top: 28px;
    }

    .o_discuss_compose_form .o_discuss_gif_btn {
        padding: 6px 8px;
        font-size: 10px;
        min-width: 36px;
        min-height: 34px;
    }

    .o_systray_messaging_popover .o_discuss_compose_form {
        gap: 6px;
    }
}

.discuss-compose .discuss-compose-label textarea {
    width: 100%;
    margin-top: 6px;
}

.discuss-thread-body,
.o_discuss_inline_msg_body {
    font-size: 14px;
    line-height: 1.5;
    word-break: break-word;
}
@media (max-width: 768px) {
    .discuss-dashboard-columns { grid-template-columns: 1fr; }
}

/* WhatsApp dashboard (patrón SMS) */
.whatsapp-dashboard-header,
.whatsapp-send-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.whatsapp-dashboard-actions,
.whatsapp-send-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.whatsapp-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.whatsapp-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.whatsapp-stat-card.is-active { border-color: #25D366; background: rgba(37, 211, 102, 0.08); }
.whatsapp-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.whatsapp-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.whatsapp-stat-label { font-size: 13px; color: var(--gray-600); }
.whatsapp-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.whatsapp-panel { margin-bottom: 24px; }
.whatsapp-panel h3 { margin-bottom: 10px; }
.whatsapp-template-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.whatsapp-template-list li {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.whatsapp-template-list a { color: var(--sfe-primary); text-decoration: none; font-weight: 600; }
.whatsapp-template-list span { color: var(--gray-500); font-size: 13px; }
.whatsapp-send-form { max-width: 560px; display: flex; flex-direction: column; gap: 14px; }
@media (max-width: 768px) {
    .whatsapp-dashboard-columns { grid-template-columns: 1fr; }
}

/* Localización México (l10n_mx) */
.l10n-mx-stat-card.is-skeleton {
    opacity: 0.55;
    animation: l10n-mx-pulse 1.2s ease-in-out infinite;
}

.l10n-mx-widgets-loading .l10n-mx-stat-value {
    letter-spacing: 0.08em;
}

.l10n-mx-widgets-error .l10n-mx-widgets-status {
    color: #dc2626;
}

@keyframes l10n-mx-pulse {
    0%, 100% { opacity: 0.45; }
    50% { opacity: 0.85; }
}

.l10n-mx-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.l10n-mx-dashboard-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.l10n-mx-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 24px;
}
.l10n-mx-stat-card {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.l10n-mx-stat-card.is-active { border-color: #006847; background: rgba(0, 104, 71, 0.08); }
.l10n-mx-stat-card.is-highlight { border-color: var(--sfe-primary); background: rgba(0, 123, 255, 0.06); }
.l10n-mx-stat-card.is-warning { border-color: #f59e0b; background: #fffbeb; }
.l10n-mx-stat-value { font-size: 24px; font-weight: 700; line-height: 1.2; }
.l10n-mx-stat-label { font-size: 13px; color: var(--gray-600); }
.l10n-mx-stat-meta { font-size: 11px; color: var(--gray-500); margin-top: 2px; }
.l10n-mx-dashboard-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}
.l10n-mx-panel { margin-bottom: 24px; }
.l10n-mx-panel h3 { margin-bottom: 10px; }
.l10n-mx-catalog-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.l10n-mx-catalog-list li {
    display: flex;
    gap: 10px;
    padding: 8px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.l10n-mx-catalog-list code {
    min-width: 88px;
    font-size: 12px;
    color: #006847;
}
.l10n-mx-catalog-list span { color: var(--gray-700); }
@media (max-width: 768px) {
    .l10n-mx-dashboard-columns { grid-template-columns: 1fr; }
}
.l10n-mx-inline-form { display: inline; margin: 0; }
.l10n-mx-sat-apply {
    border: 1px solid rgba(0, 104, 71, 0.25);
    background: rgba(0, 104, 71, 0.04);
    border-radius: 10px;
    padding: 16px 20px;
}
.l10n-mx-sat-apply code {
    font-size: 12px;
    color: #006847;
    background: rgba(0, 104, 71, 0.08);
    padding: 2px 6px;
    border-radius: 4px;
}
.l10n-mx-settings-hint {
    margin-bottom: 20px;
    padding: 12px 16px;
    border-radius: 8px;
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
}
.l10n-mx-diot-generate {
    border: 1px solid rgba(37, 99, 235, 0.2);
    background: rgba(37, 99, 235, 0.04);
    border-radius: 10px;
    padding: 16px 20px;
    margin-bottom: 20px;
}
.l10n-mx-sat-import {
    border: 1px dashed var(--gray-300);
    border-radius: 10px;
    padding: 16px 20px;
    margin-bottom: 20px;
}
.l10n-mx-sat-import-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-top: 10px;
}
.l10n-mx-sat-csv-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-top: 10px;
}
.l10n-mx-sat-import code {
    font-size: 12px;
    background: var(--gray-100);
    padding: 2px 6px;
    border-radius: 4px;
}

.l10n-mx-settings-hint code {
    font-size: 11px;
    background: var(--gray-100);
    padding: 2px 6px;
    border-radius: 4px;
}

/* Vista previa XML CFDI/REP */
.l10n-mx-xml-preview-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.l10n-mx-xml-preview-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.l10n-mx-xml-valid.badge-ok {
    font-size: 12px;
    color: #059669;
    font-weight: 600;
}

.l10n-mx-xml-block {
    background: #0f172a;
    color: #e2e8f0;
    padding: 16px 20px;
    border-radius: 10px;
    overflow-x: auto;
    font-size: 12px;
    line-height: 1.5;
    max-height: 70vh;
    white-space: pre-wrap;
    word-break: break-word;
}

/* Checklist fiscal */
.l10n-mx-checklist-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}
.l10n-mx-checklist-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.l10n-mx-checklist-summary {
    display: flex;
    align-items: center;
    gap: 24px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}
.l10n-mx-checklist-score {
    border-radius: 12px;
    padding: 20px 28px;
    min-width: 140px;
    text-align: center;
    border: 2px solid var(--gray-200);
}
.l10n-mx-checklist-score.is-ok { border-color: #006847; background: rgba(0, 104, 71, 0.08); }
.l10n-mx-checklist-score.is-warn { border-color: #f59e0b; background: #fffbeb; }
.l10n-mx-checklist-score.is-bad { border-color: #dc2626; background: #fef2f2; }
.l10n-mx-checklist-score-value { display: block; font-size: 32px; font-weight: 700; line-height: 1; }
.l10n-mx-checklist-score-label { font-size: 13px; color: var(--gray-600); }
.l10n-mx-checklist-counts {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
}
.l10n-mx-checklist-counts li { font-size: 14px; color: var(--gray-700); }
.l10n-mx-checklist-counts .is-error strong { color: #dc2626; }
.l10n-mx-checklist-counts .is-warning strong { color: #d97706; }
.l10n-mx-checklist-counts .is-ok strong { color: #006847; }
.l10n-mx-checklist-section {
    border: 1px solid var(--gray-200);
    border-radius: 10px;
    padding: 16px;
    margin-bottom: 16px;
    background: #fff;
}
.l10n-mx-checklist-section.status-error { border-left: 4px solid #dc2626; }
.l10n-mx-checklist-section.status-warning { border-left: 4px solid #f59e0b; }
.l10n-mx-checklist-section.status-ok { border-left: 4px solid #006847; }
.l10n-mx-checklist-section h3 { margin: 0 0 12px; font-size: 16px; }
.l10n-mx-checklist-items {
    list-style: none;
    margin: 0;
    padding: 0;
}
.l10n-mx-checklist-items li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--gray-100);
    font-size: 14px;
}
.l10n-mx-checklist-items li:last-child { border-bottom: none; }
.l10n-mx-checklist-item-main { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.l10n-mx-checklist-item-main span { color: var(--gray-600); }
.l10n-mx-checklist-badge {
    font-size: 11px;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--gray-100);
    color: var(--gray-600);
}

/* App móvil facturación (PWA) */
.mobile-shell { background: var(--gray-50, #f8fafc); min-height: 100vh; padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px)); }
.mobile-content { max-width: 480px; margin: 0 auto; padding: 16px; }
.mobile-tab-bar {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    display: flex; justify-content: space-around; align-items: stretch;
    max-width: 480px; margin: 0 auto;
    background: #fff; border-top: 1px solid var(--gray-200, #e2e8f0);
    padding-bottom: env(safe-area-inset-bottom, 0px);
    box-shadow: 0 -4px 12px rgba(15, 23, 42, 0.06);
}
.mobile-tab {
    flex: 1; display: flex; align-items: center; justify-content: center;
    position: relative;
    padding: 10px 4px; text-decoration: none; color: var(--gray-500, #64748b);
    font-size: 11px; font-weight: 600; text-align: center;
}
.mobile-tab-badge {
    position: absolute; top: 4px; left: 50%; margin-left: 22px;
    min-width: 18px; padding: 1px 5px; border-radius: 999px;
    background: #f59e0b; color: #fff; font-size: 10px; font-weight: 700; line-height: 1.3;
}
.mobile-tab-badge.is-warning { background: #dc2626; }
.mobile-tab.is-active { color: #b45309; background: #fffbeb; }
.mobile-tab-bar.is-offline { opacity: 0.92; }
.mobile-tab-bar.is-offline::before {
    content: ''; position: absolute; top: 6px; right: 10px; width: 8px; height: 8px;
    border-radius: 50%; background: #f59e0b; box-shadow: 0 0 0 2px #fff;
}
.mobile-tab-label { line-height: 1.2; }
.mobile-batch-recent {
    margin: 0 0 16px; padding: 14px; border-radius: 10px;
    border: 1px solid var(--gray-200, #e2e8f0); background: #fff;
}
.mobile-batch-recent-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.mobile-batch-recent-head h2 { margin: 0; font-size: 0.95rem; }
.mobile-batch-recent-head a { font-size: 12px; color: #b45309; text-decoration: none; }
.mobile-batch-recent-list { list-style: none; padding: 0; margin: 0; }
.mobile-batch-recent-item {
    display: grid; grid-template-columns: 1fr auto; gap: 2px 10px;
    padding: 10px 0; border-bottom: 1px solid var(--gray-200, #e2e8f0); font-size: 13px;
}
.mobile-batch-recent-item:last-child { border-bottom: none; }
.mobile-batch-recent-item.is-warning strong { color: #b45309; }
.mobile-batch-recent-item small { grid-column: 1 / -1; color: var(--gray-500, #64748b); font-size: 11px; }
.mobile-header h1 { font-size: 1.35rem; margin: 0 0 4px; }
.mobile-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 16px 0; }
.mobile-stat-card {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    padding: 14px 8px; border-radius: 12px; background: #fff; border: 1px solid var(--gray-200, #e2e8f0);
    text-decoration: none; color: inherit; text-align: center; font-size: 12px;
}
.mobile-stat-card.is-highlight { border-color: #f59e0b; background: #fffbeb; }
.mobile-stat-card.is-warning { border-color: #dc2626; background: #fef2f2; }
.mobile-stat-value { font-size: 1.5rem; font-weight: 700; line-height: 1.2; }
.mobile-nav { display: flex; flex-direction: column; gap: 8px; margin-top: 20px; }
.btn-block { width: 100%; text-align: center; }
.mobile-filter { display: flex; gap: 8px; margin-top: 8px; }
.mobile-filter a {
    padding: 4px 10px; border-radius: 999px; font-size: 13px; text-decoration: none;
    background: var(--gray-100, #f1f5f9); color: var(--gray-700, #334155);
}
.mobile-filter a.is-active { background: #f59e0b; color: #fff; }
.mobile-invoice-list { list-style: none; padding: 0; margin: 0; }
.mobile-invoice-list li { border-bottom: 1px solid var(--gray-200, #e2e8f0); position: relative; }
.mobile-stamp-form { padding: 0 4px 10px; text-align: right; }
.mobile-app .alert { margin-bottom: 12px; padding: 10px 12px; border-radius: 8px; font-size: 14px; }
.mobile-app .alert-success { background: #ecfdf5; color: #047857; }
.mobile-app .alert-danger { background: #fef2f2; color: #b91c1c; }
.mobile-batch-form { margin-bottom: 12px; }
.mobile-detail-list { margin: 0 0 16px; }
.mobile-detail-list div { display: grid; grid-template-columns: 110px 1fr; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--gray-200, #e2e8f0); font-size: 14px; }
.mobile-detail-list dt { color: var(--gray-500, #64748b); margin: 0; }
.mobile-detail-list dd { margin: 0; text-align: right; word-break: break-word; }
.mobile-uuid { font-size: 11px; font-family: monospace; }
.mobile-app .text-danger { color: #b91c1c; }
.mobile-stats-secondary { margin-top: -6px; }
.mobile-stats-today { grid-template-columns: repeat(3, 1fr); }
.mobile-kpi-date { margin: -8px 0 12px; font-size: 12px; color: var(--gray-500, #64748b); text-align: center; }
.mobile-month-kpi {
    display: block; margin: 0 0 12px; padding: 14px; border-radius: 10px;
    border: 1px solid var(--gray-200, #e2e8f0); background: #fff; text-decoration: none; color: inherit;
}
.mobile-month-kpi-stats { display: flex; flex-wrap: wrap; gap: 8px 12px; margin-top: 8px; font-size: 13px; color: var(--gray-600, #475569); }
.mobile-month-kpi-stats .is-warning { color: #b45309; font-weight: 600; }
.mobile-export-failed { margin-bottom: 12px; }
.mobile-export-row { margin: 0 0 12px; }
.mobile-offline-banner {
    margin-bottom: 12px; padding: 10px 12px; border-radius: 8px;
    background: #fffbeb; color: #92400e; border: 1px solid #fcd34d; font-size: 13px;
}
.mobile-is-offline .mobile-offline-banner { display: block; }
.mobile-ptr-indicator {
    position: fixed; top: 0; left: 50%; z-index: 50;
    transform: translate(-50%, -120%);
    padding: 8px 14px; border-radius: 999px;
    background: #fff; border: 1px solid var(--gray-200, #e2e8f0);
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.08);
    font-size: 12px; font-weight: 600; color: var(--gray-600, #475569);
    transition: transform 0.18s ease;
    pointer-events: none;
}
.mobile-ptr-indicator:not([hidden]) { transform: translate(-50%, calc(8px + env(safe-area-inset-top, 0px))); }
.mobile-ptr-indicator.is-ready { color: #b45309; border-color: #fcd34d; background: #fffbeb; }
.mobile-ptr-indicator.is-loading { color: #b45309; }
.mobile-ptr-active .mobile-content { transition: transform 0.12s ease; }
.mobile-sync-at {
    margin: 16px 0 0; text-align: center; font-size: 11px;
    color: var(--gray-500, #64748b);
}
.mobile-list-meta {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    margin: 0 0 10px; font-size: 12px; color: var(--gray-600, #475569);
}
.mobile-sync-at-inline { font-size: 11px; color: var(--gray-500, #64748b); }
.mobile-copy-field { margin-top: 8px; text-align: left; }
.mobile-xml-preview {
    display: block; max-height: 55vh; overflow: auto; padding: 10px;
    background: #0f172a; color: #e2e8f0; border-radius: 8px; font-size: 11px;
    line-height: 1.35; white-space: pre-wrap; word-break: break-word;
}
.btn-warning { background: #d97706; color: #fff; border: none; }
.btn-warning:hover { background: #b45309; color: #fff; }
.mobile-invoice-list a {
    display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 12px 4px;
    text-decoration: none; color: inherit;
}
.mobile-invoice-list small { grid-column: 1 / -1; color: var(--gray-500, #64748b); font-size: 12px; }
.mobile-invoice-empty { padding: 24px; text-align: center; color: var(--gray-500); }
.mobile-stamp-queue { margin: 12px 0; }
.mobile-stamp-status { margin: 0; font-size: 13px; color: var(--gray-600, #475569); }
.mobile-fiscal-score {
    display: flex; align-items: center; gap: 12px; margin: 12px 0 16px;
    padding: 14px; border-radius: 10px; border: 1px solid var(--gray-200, #e2e8f0);
    background: #fff; text-decoration: none; color: inherit;
}
.mobile-fiscal-score.is-warning { border-color: #f59e0b; background: #fffbeb; }
.mobile-fiscal-score.is-error { border-color: #dc2626; background: #fef2f2; }
.mobile-fiscal-score-value { font-size: 1.75rem; font-weight: 700; min-width: 64px; text-align: center; }
.mobile-fiscal-score small { display: block; color: var(--gray-500, #64748b); margin-top: 2px; }
.mobile-fiscal-section { margin-bottom: 16px; }
.mobile-fiscal-section h2 { font-size: 1rem; margin: 0 0 8px; }
.mobile-fiscal-items { list-style: none; padding: 0; margin: 0; }
.mobile-fiscal-item {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 8px;
    padding: 10px 0; border-bottom: 1px solid var(--gray-200, #e2e8f0); font-size: 13px;
}
.mobile-fiscal-item.is-error strong { color: #b91c1c; }
.mobile-fiscal-item.is-warning strong { color: #b45309; }
.mobile-fiscal-item small { display: block; color: var(--gray-500, #64748b); margin-top: 2px; }
.mobile-cancel-panel { margin-top: 8px; }
.mobile-cancel-panel summary { cursor: pointer; list-style: none; }
.mobile-cancel-panel summary::-webkit-details-marker { display: none; }
.mobile-cancel-form { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.mobile-cancel-form select { width: 100%; padding: 8px; border-radius: 8px; border: 1px solid var(--gray-300, #cbd5e1); }
.mobile-qr-panel { margin: 16px 0; text-align: center; }
.mobile-qr-panel h2 { font-size: 1rem; margin: 0 0 10px; }
.mobile-qr-wrap { display: inline-block; padding: 10px; background: #fff; border: 1px solid var(--gray-200, #e2e8f0); border-radius: 10px; }
.mobile-qr-image { display: block; max-width: 100%; height: auto; }
.mobile-diot-summary {
    display: block; margin: 0 0 12px; padding: 12px 14px; border-radius: 10px;
    border: 1px solid var(--gray-200, #e2e8f0); background: #fff; text-decoration: none; color: inherit;
}
.mobile-diot-summary small { display: block; color: var(--gray-500, #64748b); margin-top: 4px; }
.mobile-diot-card {
    margin-bottom: 16px; padding: 14px; border-radius: 10px;
    border: 1px solid var(--gray-200, #e2e8f0); background: #fff;
}
.mobile-diot-card h2 { font-size: 0.95rem; margin: 0 0 8px; color: var(--gray-600, #475569); }
.mobile-share-panel { margin: 16px 0; padding: 14px; border-radius: 10px; border: 1px solid var(--gray-200, #e2e8f0); background: #fff; }
.mobile-share-panel h2 { font-size: 1rem; margin: 0 0 6px; }
.mobile-share-item { margin-top: 10px; }
.mobile-share-item label { display: block; font-size: 12px; color: var(--gray-500, #64748b); margin-bottom: 4px; }
.mobile-share-row { display: flex; gap: 6px; align-items: center; }
.mobile-share-input { flex: 1; min-width: 0; font-size: 11px; padding: 8px; border-radius: 8px; border: 1px solid var(--gray-300, #cbd5e1); background: var(--gray-50, #f8fafc); }
.mobile-filter-wrap { flex-wrap: wrap; }
.mobile-list-head {
    position: sticky; top: 0; z-index: 15;
    margin: 0 -16px 12px; padding: 0 16px 8px;
    background: var(--gray-50, #f8fafc);
    border-bottom: 1px solid var(--gray-200, #e2e8f0);
}
.mobile-quick-search {
    display: flex; gap: 8px; margin-top: 8px;
}
.mobile-recent-invoices,
.mobile-recent-reps,
.mobile-fiscal-alerts {
    margin: 0 0 16px; padding: 14px; border-radius: 10px;
    border: 1px solid var(--gray-200, #e2e8f0); background: #fff;
}
.mobile-fiscal-alert-list { list-style: none; padding: 0; margin: 0; }
.mobile-fiscal-alert-item {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 8px;
    padding: 10px 0; border-bottom: 1px solid var(--gray-200, #e2e8f0); font-size: 13px;
}
.mobile-fiscal-alert-item:last-child { border-bottom: none; }
.mobile-fiscal-alert-item.is-error strong { color: #b91c1c; }
.mobile-fiscal-alert-item.is-warning strong { color: #b45309; }
.mobile-fiscal-alert-item small { display: block; color: var(--gray-500, #64748b); margin-top: 2px; }
.mobile-install-banner {
    position: sticky; top: 0; z-index: 30;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px;
    margin: 0 -16px 12px; padding: 12px 16px;
    background: #fffbeb; border-bottom: 1px solid #fcd34d;
}
.mobile-install-banner-text strong { display: block; font-size: 14px; }
.mobile-install-banner-text span { font-size: 12px; color: var(--gray-600, #475569); }
.mobile-install-banner-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.mobile-quick-search input[type="search"] {
    flex: 1; min-width: 0; padding: 8px 10px; border-radius: 8px;
    border: 1px solid var(--gray-200, #e2e8f0); font-size: 14px;
}
.mobile-filter-advanced { margin: 12px 0; border: 1px solid var(--gray-200, #e2e8f0); border-radius: 10px; background: #fff; }
.mobile-filter-advanced summary { padding: 10px 12px; cursor: pointer; font-weight: 600; }
.mobile-filter-form { padding: 0 12px 12px; display: flex; flex-direction: column; gap: 8px; }
.mobile-filter-form label { font-size: 12px; color: var(--gray-500, #64748b); }
.mobile-filter-form input[type="search"],
.mobile-filter-form input[type="date"],
.mobile-filter-form select { width: 100%; padding: 8px; border-radius: 8px; border: 1px solid var(--gray-300, #cbd5e1); }
.mobile-filter-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mobile-share-regenerate { margin-top: 12px; }
.mobile-pdf-shell { display: flex; flex-direction: column; min-height: calc(100vh - 32px); }
.mobile-pdf-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.mobile-pdf-frame { flex: 1; width: 100%; min-height: 60vh; border: 1px solid var(--gray-200, #e2e8f0); border-radius: 10px; background: #fff; margin-bottom: 12px; }
.accounting-company-filter { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-bottom: 12px; border: none; }
.accounting-company-filter legend { font-weight: 600; width: 100%; margin-bottom: 4px; }
.checkbox-inline { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; }
.level-error .l10n-mx-checklist-badge { background: #fef2f2; color: #dc2626; }
.level-warning .l10n-mx-checklist-badge { background: #fffbeb; color: #d97706; }
.level-ok .l10n-mx-checklist-badge { background: rgba(0, 104, 71, 0.1); color: #006847; }

/* —— Traceback (patrón SFE) —— */
.sfe-traceback-page { margin: 0; min-height: 100vh; background: var(--gray-50, #f8fafc); font-family: Inter, system-ui, sans-serif; }
.sfe-traceback-shell { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; }
.sfe-traceback-card { max-width: 520px; width: 100%; background: #fff; border-radius: 16px; border: 1px solid var(--gray-200, #e2e8f0); box-shadow: 0 20px 50px rgba(15, 23, 42, 0.08); padding: 32px; text-align: center; }
.sfe-traceback-card__icon { width: 56px; height: 56px; margin: 0 auto 16px; border-radius: 50%; background: #fef2f2; color: #dc2626; font-size: 28px; font-weight: 700; line-height: 56px; }
.sfe-traceback-card h1 { margin: 0 0 8px; font-size: 1.5rem; color: var(--gray-900, #0f172a); }
.sfe-traceback-lead { color: var(--gray-600, #475569); margin: 0 0 20px; line-height: 1.5; }
.sfe-traceback-ref { margin: 20px 0; padding: 16px; border-radius: 12px; background: var(--gray-50, #f8fafc); border: 1px dashed var(--gray-300, #cbd5e1); }
.sfe-traceback-ref--inline { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; text-align: left; }
.sfe-traceback-ref__label { display: block; width: 100%; font-size: 12px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--gray-500, #64748b); }
.sfe-traceback-ref--inline .sfe-traceback-ref__label { width: auto; margin-right: 4px; }
.sfe-traceback-ref__code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 1.05rem; font-weight: 600; color: #0f766e; background: #ecfdf5; padding: 4px 10px; border-radius: 8px; }
.sfe-traceback-hint { font-size: 13px; color: var(--gray-500, #64748b); margin: 0 0 20px; }
.sfe-traceback-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

.sfe-traceback-page--debug { background: #0f172a; color: #e2e8f0; }
.sfe-traceback-debug { max-width: 1100px; margin: 0 auto; padding: 24px; }
.sfe-traceback-debug__header { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid #334155; }
.sfe-traceback-debug__badge { display: inline-block; margin: 0 0 8px; padding: 4px 10px; border-radius: 999px; background: #422006; color: #fdba74; font-size: 12px; font-weight: 600; }
.sfe-traceback-debug__header h1 { margin: 0 0 6px; font-size: 1.25rem; color: #fca5a5; font-family: ui-monospace, monospace; }
.sfe-traceback-debug__msg { margin: 0; color: #cbd5e1; }
.sfe-traceback-debug__meta { display: flex; flex-direction: column; gap: 10px; align-items: flex-end; }

.sfe-traceback-panel { margin-bottom: 20px; padding: 16px; border-radius: 12px; background: #fff; border: 1px solid var(--gray-200, #e2e8f0); }
.sfe-traceback-page--debug .sfe-traceback-panel { background: #1e293b; border-color: #334155; }
.sfe-traceback-panel h2, .sfe-traceback-panel h3 { margin: 0 0 12px; font-size: 1rem; }
.sfe-traceback-panel__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.sfe-traceback-panel__head h3 { margin: 0; }

.sfe-traceback-stack { display: flex; flex-direction: column; gap: 8px; }
.sfe-traceback-frame { border: 1px solid var(--gray-200, #e2e8f0); border-radius: 10px; overflow: hidden; background: var(--gray-50, #f8fafc); }
.sfe-traceback-page--debug .sfe-traceback-frame { border-color: #334155; background: #0f172a; }
.sfe-traceback-frame summary { cursor: pointer; list-style: none; padding: 10px 12px; display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
.sfe-traceback-frame summary::-webkit-details-marker { display: none; }
.sfe-traceback-frame__fn { font-family: ui-monospace, monospace; font-weight: 600; color: var(--sfe-primary); }
.sfe-traceback-page--debug .sfe-traceback-frame__fn { color: #c4b5fd; }
.sfe-traceback-frame__loc { font-size: 12px; color: var(--gray-500, #64748b); word-break: break-all; }

.sfe-traceback-snippet { margin: 0; padding: 10px 0; overflow-x: auto; background: #111827; color: #e5e7eb; font-size: 12px; line-height: 1.45; }
.sfe-traceback-snippet__line { display: block; padding: 0 12px 0 0; white-space: pre; }
.sfe-traceback-snippet__line--hit { background: rgba(220, 38, 38, 0.25); }
.sfe-traceback-snippet__no { display: inline-block; width: 42px; padding-right: 12px; text-align: right; color: #6b7280; user-select: none; border-right: 1px solid #374151; margin-right: 10px; }

.sfe-traceback-tabs__nav { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.sfe-traceback-tabs__nav button { border: 1px solid var(--gray-200, #e2e8f0); background: #fff; border-radius: 8px; padding: 6px 12px; cursor: pointer; font-size: 13px; }
.sfe-traceback-page--debug .sfe-traceback-tabs__nav button { background: #1e293b; border-color: #334155; color: #e2e8f0; }
.sfe-traceback-tabs__nav button.is-active { background: var(--primary, #006847); border-color: var(--primary, #006847); color: #fff; }
.sfe-traceback-tabs__pane { display: none; }
.sfe-traceback-tabs__pane.is-active { display: block; }
.sfe-traceback-json { margin: 0; padding: 12px; border-radius: 10px; background: #0f172a; color: #cbd5e1; font-size: 12px; overflow: auto; max-height: 420px; white-space: pre-wrap; word-break: break-word; }
.sfe-traceback-chain { margin: 0; padding-left: 18px; }
.sfe-traceback-chain li { margin-bottom: 6px; }
.sfe-traceback-kv { display: grid; grid-template-columns: 120px 1fr; gap: 8px 12px; margin: 0; font-size: 14px; }
.sfe-traceback-kv dt { color: var(--gray-500, #64748b); margin: 0; }
.sfe-traceback-kv dd { margin: 0; word-break: break-word; }

.sfe-traceback-admin__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.sfe-traceback-admin__states { display: flex; flex-wrap: wrap; gap: 6px; }
.sfe-traceback-admin__states .inline-form { display: inline; margin: 0; }
.sfe-traceback-admin__hero { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; padding: 16px; border-radius: 12px; border: 1px solid var(--gray-200, #e2e8f0); background: linear-gradient(135deg, #fff 0%, #f8fafc 100%); margin-bottom: 16px; }
.sfe-traceback-admin__title { margin: 8px 0 4px; font-family: ui-monospace, monospace; font-size: 1.1rem; color: #b91c1c; }
.sfe-traceback-admin__message { margin: 0; color: var(--gray-700, #334155); }
.sfe-traceback-admin__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
@media (max-width: 900px) { .sfe-traceback-admin__grid { grid-template-columns: 1fr; } }
.sfe-traceback-notes label { display: block; font-weight: 600; margin-bottom: 6px; }
.sfe-traceback-pill { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; margin-right: 6px; }
.sfe-traceback-pill--error { background: #fef2f2; color: #dc2626; }
.sfe-traceback-pill--warning { background: #fffbeb; color: #d97706; }
.sfe-traceback-pill--critical { background: #450a0a; color: #fecaca; }
.sfe-traceback-pill--state { background: #eff6ff; color: #2563eb; }
.sfe-traceback-raw { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

.sfe-traceback-origin { margin-bottom: 16px; padding: 16px; border-radius: 12px; border: 1px solid #fecaca; background: linear-gradient(180deg, #fff5f5 0%, #fff 100%); }
.sfe-traceback-page--debug .sfe-traceback-origin { border-color: #7f1d1d; background: linear-gradient(180deg, #450a0a 0%, #1e293b 100%); }
.sfe-traceback-origin__head h3 { margin: 0 0 6px; font-size: 0.95rem; }
.sfe-traceback-origin__label { margin: 0 0 10px; font-family: ui-monospace, monospace; font-size: 13px; color: #b91c1c; }
.sfe-traceback-page--debug .sfe-traceback-origin__label { color: #fca5a5; }
.sfe-traceback-origin__loc { display: grid; grid-template-columns: 100px 1fr; gap: 6px 12px; margin: 0 0 12px; font-size: 13px; }
.sfe-traceback-origin__loc dt { color: var(--gray-500, #64748b); margin: 0; }
.sfe-traceback-origin__loc dd { margin: 0; word-break: break-all; }
.sfe-traceback-origin__path { font-family: ui-monospace, monospace; font-weight: 600; color: #0f766e; }
.sfe-traceback-origin__line { font-family: ui-monospace, monospace; font-weight: 700; color: #dc2626; }

.sfe-traceback-stack-tools { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.sfe-traceback-frame--origin { border-color: #fca5a5; }
.sfe-traceback-frame--app { border-left: 3px solid #006847; }
.sfe-traceback-frame__idx { font-family: ui-monospace, monospace; font-size: 11px; color: var(--gray-400, #94a3b8); min-width: 28px; }
.sfe-traceback-frame__badge { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; padding: 2px 6px; border-radius: 999px; }
.sfe-traceback-frame__badge--origin { background: #fef2f2; color: #dc2626; }
.sfe-traceback-frame__badge--app { background: #ecfdf5; color: #047857; }
.sfe-traceback-page--debug .sfe-traceback-frame__badge--origin { background: #450a0a; color: #fecaca; }
.sfe-traceback-page--debug .sfe-traceback-frame__badge--app { background: #064e3b; color: #6ee7b7; }
.sfe-traceback-frame__args { font-weight: 400; color: var(--gray-500, #64748b); font-size: 11px; }
.sfe-traceback-frame__fullpath { margin: 0; padding: 0 12px 8px; font-size: 11px; word-break: break-all; }
.sfe-traceback-frame__empty { margin: 0; padding: 8px 12px 12px; font-size: 12px; }
.sfe-traceback-admin__location { margin: 8px 0 0; font-family: ui-monospace, monospace; font-size: 13px; }
.sfe-traceback-chain-block { margin-top: 16px; padding-top: 16px; border-top: 1px dashed var(--gray-200, #e2e8f0); }
.sfe-traceback-chain-block__head h4 { margin: 0 0 4px; font-family: ui-monospace, monospace; color: #b45309; }
.sfe-traceback-chain-block__head p { margin: 0 0 12px; }
.sfe-traceback-debug__loc { margin: 8px 0 0; font-family: ui-monospace, monospace; font-size: 13px; color: #fca5a5; }

.mobile-crm-stage { margin: 16px 0; }
.mobile-crm-stage h2 { font-size: 1rem; margin: 0 0 8px; color: var(--gray-700, #334155); }
.mobile-crm-stage h2 small { font-weight: 400; color: var(--gray-500, #64748b); }
.mobile-crm-lead { padding-bottom: 8px; }
.mobile-crm-actions {
    display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
    padding: 0 4px 10px 4px;
}
.mobile-crm-stage-form { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; flex: 1; min-width: 160px; }
.mobile-crm-stage-form select {
    flex: 1; min-width: 100px; padding: 6px 8px; border-radius: 8px;
    border: 1px solid var(--gray-300, #cbd5e1); font-size: 13px;
}

.partner-tags-widget {
    margin: 16px 0; padding: 14px 16px; border: 1px solid var(--gray-200, #e2e8f0);
    border-radius: 10px; background: #fafafa;
}
.partner-tags-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.partner-tags-header h3 { margin: 0; font-size: 15px; font-weight: 600; }
.partner-tags-list { display: flex; flex-wrap: wrap; gap: 8px; }
.partner-tag-chip {
    border: 1px solid var(--tag-color, var(--sfe-primary)); background: #fff; color: #334155;
    border-radius: 999px; padding: 4px 12px; font-size: 13px; cursor: pointer;
    transition: background 0.15s, color 0.15s;
}
.partner-tag-chip.is-active { background: var(--tag-color, var(--sfe-primary)); color: #fff; border-color: var(--tag-color, var(--sfe-primary)); }
.partner-tag-chip:disabled { opacity: 0.6; cursor: wait; }

.barcode-offline-banner {
    margin-bottom: 12px; padding: 10px 14px; border-radius: 8px;
    background: #fef3c7; color: #92400e; font-size: 14px; font-weight: 500;
}
.barcode-is-offline .stock-barcode-input { border-color: #f59e0b; }

/* Kioscos SPA (PoS, asistencias, barcode, shop floor) */
.sfe-kiosk-spa .sfe-kiosk-main {
    min-height: 100vh;
    max-width: 100%;
}
.sfe-kiosk-spa.pos-body .sfe-kiosk-main,
.sfe-kiosk-spa.shop-floor-kiosk-body .sfe-kiosk-main {
    padding: 0;
}
.attendance-kiosk-actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
#attendance-pending-badge:not([hidden]) {
    display: inline-block;
    padding: 0.25rem 0.6rem;
    border-radius: 999px;
    font-size: 12px;
}

/* Vistas avanzadas (kanban) */
.sfe-kanban-board {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px;
    margin-top: 12px;
}
.sfe-kanban-card {
    background: var(--sfe-surface, #fff);
    border: 1px solid var(--sfe-border, #e2e8f0);
    border-radius: 8px;
    padding: 12px;
    cursor: pointer;
    font-size: 14px;
}
.sfe-kanban-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.08); }

/* Contactos — workspace Odoo-style */
.o_contacts_view {
    margin: 0;
    max-width: none;
    width: 100%;
    min-height: calc(100vh - 56px);
    background: #f0f0f0;
    display: flex;
    flex-direction: column;
}
.contacts-control-panel { flex-shrink: 0; flex-direction: column; align-items: stretch; flex-wrap: nowrap; gap: 8px; }
.contacts-cp-row { display: flex; align-items: center; gap: 12px; min-width: 0; }
.contacts-cp-row-title { flex-wrap: wrap; }
.contacts-cp-row-search {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-width: 0;
}
.contacts-cp-row-search .contacts-workspace-search,
.contacts-cp-row-search .o_apps_search {
    flex: 1 1 auto;
    min-width: 180px;
    max-width: none;
    width: auto;
}
.contacts-cp-row-tools {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
    margin-left: auto;
}
.contacts-btn-new { white-space: nowrap; }
.contacts-control-panel .o_cp_title { gap: 4px; display: inline-flex; align-items: center; }
.contacts-control-panel .o_cp_title_text { font-size: 16px; font-weight: 600; margin: 0; }
.contacts-cp-gear-wrap { position: relative; display: inline-flex; align-items: center; flex-shrink: 0; }
.contacts-cp-gear-dropdown {
    position: fixed;
    z-index: 1200;
    min-width: 280px;
    max-width: 320px;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    box-shadow: 0 10px 28px rgba(15, 23, 42, .14);
    padding: 6px 0;
}
.contacts-cp-gear-dropdown[hidden] { display: none !important; }
.contacts-cp-gear-hint {
    margin: 0;
    padding: 10px 16px 6px;
    font-size: 12px;
    line-height: 1.45;
    color: var(--gray-600);
}
.contacts-cp-gear-divider {
    height: 1px;
    margin: 6px 0;
    background: var(--gray-200);
}
.contacts-cp-gear-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 16px;
    font-size: 13px;
    color: var(--gray-800);
    text-decoration: none;
    border: none;
    background: transparent;
    cursor: pointer;
    box-sizing: border-box;
    text-align: left;
    font-family: inherit;
    line-height: 1.3;
}
.contacts-cp-gear-item:hover:not(.is-disabled) { background: var(--gray-50); color: var(--gray-900); }
.contacts-cp-gear-item.is-disabled { opacity: .65; cursor: not-allowed; pointer-events: none; }
.contacts-cp-gear-item-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.contacts-cp-gear-item-title { font-size: 13px; }
.contacts-cp-gear-item-meta { font-size: 11px; color: var(--gray-500); }
.contacts-cp-gear-item .icon { width: 16px; height: 16px; flex-shrink: 0; color: var(--gray-500); }
.contacts-cp-gear-item--spreadsheet .contacts-cp-gear-chevron {
    width: 14px;
    height: 14px;
    margin-left: auto;
    color: var(--gray-400);
}
.contacts-import-form[hidden] { display: none !important; }
.contacts-import-file {
    position: fixed;
    left: -9999px;
    width: 0;
    height: 0;
    opacity: 0;
    pointer-events: none;
}
.contacts-cp-row-title { overflow: visible; }
.contacts-control-panel .o_cp_title { overflow: visible; }
.contacts-import-flash { margin: 8px 20px 0; }
.contacts-column-picker { position: relative; }
.contacts-column-picker summary { list-style: none; cursor: pointer; }
.contacts-column-picker summary::-webkit-details-marker { display: none; }
.contacts-col-picker {
    width: 42px;
    min-width: 42px;
    padding: 0 6px !important;
    text-align: center;
    vertical-align: middle;
}
.contacts-column-picker--header { display: inline-block; }
.o_list_column_picker_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    border-radius: 4px;
    background: transparent;
    color: var(--gray-500);
    padding: 0;
}
.o_list_column_picker_btn:hover { background: var(--gray-100); color: var(--gray-700); }
.o_list_column_picker_btn .icon { width: 16px; height: 16px; }
.contacts-column-picker--header .contacts-column-picker-menu {
    right: 0;
    left: auto;
    top: calc(100% + 4px);
}
.contacts-workspace.is-search-loading .contacts-workspace-main {
    opacity: .55;
    pointer-events: none;
    transition: opacity .15s ease;
}
.contacts-workspace-search .contacts-workspace-search-input:focus {
    outline: none;
}
.contacts-tags-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 8px 20px;
    background: #fff;
    border-bottom: 1px solid var(--gray-200);
}
.contacts-tags-bar-label {
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-500);
}
.contacts-tags-bar-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}
.contacts-workspace { display: flex; flex-direction: column; gap: 0; min-height: 60vh; }
.contacts-workspace-body { display: flex; flex-direction: column; min-height: 0; flex: 1; padding: 0; }
.contacts-workspace-main { flex: 1; min-width: 0; background: #fff; }
.contacts-list-view { min-height: 100%; position: relative; }
.contacts-list-table-wrap { overflow-x: auto; overflow-y: visible; }
.contacts-partners-table.o_list_table {
    margin: 0;
    border: none;
    border-radius: 0;
    font-size: 13px;
}
.contacts-partners-table.o_list_table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #fff;
    border-bottom: 1px solid var(--gray-200);
    font-size: 12px;
    font-weight: 600;
    color: var(--gray-600);
    text-transform: none;
    white-space: nowrap;
    padding: 10px 12px;
}
.contacts-partners-table.o_list_table tbody td {
    padding: 8px 12px;
    border-bottom: 1px solid var(--gray-100);
    vertical-align: middle;
    color: var(--gray-800);
}
.contacts-partners-table.o_list_table tbody tr:hover { background: rgba(0, 123, 255, .04); }
.contacts-col-check { width: 40px; text-align: center; }
.contacts-col-icon { width: 44px; text-align: center; }
.contacts-name-cell { display: inline-flex; align-items: center; gap: 10px; min-width: 0; }
.contacts-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: linear-gradient(135deg, #714b67 0%, #875a7b 100%);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    flex-shrink: 0;
}
.contacts-avatar.is-company {
    background: #fff;
    border: 1px solid var(--gray-200);
    color: var(--gray-500);
}
.contacts-avatar.is-company .icon { width: 14px; height: 14px; }
.contacts-name-text { font-weight: 500; color: var(--gray-900); }
.contacts-activity-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: relative;
    width: 28px;
    height: 28px;
    border-radius: 4px;
    color: var(--gray-500);
    text-decoration: none;
}
.contacts-activity-btn .icon { width: 16px; height: 16px; }
.contacts-activity-btn:hover { background: var(--gray-100); color: var(--sfe-primary); }
.contacts-activity-btn.is-muted { opacity: .35; pointer-events: none; }
.contacts-activity-btn.has-count { color: var(--sfe-primary); }
.contacts-activity-count {
    position: absolute;
    top: -2px;
    right: -2px;
    min-width: 14px;
    height: 14px;
    padding: 0 3px;
    border-radius: 999px;
    background: var(--sfe-primary);
    color: #fff;
    font-size: 10px;
    line-height: 14px;
    text-align: center;
}
.contacts-hierarchy-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 4px;
    color: var(--gray-500);
    text-decoration: none;
}
.contacts-hierarchy-btn .icon { width: 16px; height: 16px; }
.contacts-hierarchy-btn:hover { background: var(--gray-100); color: var(--sfe-primary); }
.contacts-column-picker-menu {
    position: fixed;
    z-index: 1200;
    min-width: 240px;
    max-width: 320px;
    max-height: min(70vh, 420px);
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .12);
    padding: 10px 12px;
}
.contacts-column-picker-menu[hidden] { display: none !important; }
.contacts-column-option {
    display: flex;
    gap: 8px;
    align-items: center;
    font-size: 13px;
    padding: 6px 0;
    cursor: pointer;
    white-space: nowrap;
}
.contacts-column-option input { flex-shrink: 0; }
.contacts-partners-table [data-col].is-col-hidden { display: none; }
.contacts-tag-badge {
    display: inline-block;
    margin: 0 4px 4px 0;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11px;
    color: #fff;
}
.contacts-tag-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 4px 10px;
    border-radius: 999px;
    text-decoration: none;
    color: var(--gray-800);
    border: 1px solid var(--gray-200);
    background: #fff;
    font-size: 12px;
}
.contacts-tag-chip:hover { background: var(--gray-50); }
.contacts-tag-chip.is-active { background: rgba(0, 160, 157, .08); border-color: rgba(0, 160, 157, .35); }
.contacts-tag-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--tag-color, #00A09D); flex-shrink: 0; }
.contacts-tag-name { min-width: 0; }
.contacts-tag-count { font-size: 11px; color: var(--gray-500); }
.contacts-tags-clear { font-size: 12px; color: var(--sfe-primary); text-decoration: none; margin-left: 4px; }
.contacts-kanban-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
    padding: 16px 20px;
}
.contacts-kanban-card {
    background: #fff;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    transition: box-shadow .15s ease;
}
.contacts-kanban-card:hover { box-shadow: 0 4px 14px rgba(15, 23, 42, .08); }
.contacts-kanban-card h3 { font-size: 15px; margin-bottom: 8px; }
.contacts-kanban-meta { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--gray-600); margin-bottom: 4px; }
.contacts-kanban-meta .icon { width: 14px; height: 14px; }
.contacts-kanban-tags { margin-top: 8px; }
.contacts-map-layout { display: grid; grid-template-columns: 260px 1fr; gap: 12px; min-height: 420px; padding: 16px 20px; }
.contacts-map-sidebar { border: 1px solid var(--gray-200); border-radius: 8px; padding: 12px; overflow: auto; max-height: 520px; background: #fff; }
.contacts-map-group + .contacts-map-group { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--gray-100); }
.contacts-map-group h4 { font-size: 13px; margin-bottom: 6px; }
.contacts-map-group ul { list-style: none; margin: 0; padding: 0; }
.contacts-map-group li { margin-bottom: 4px; font-size: 13px; }
.contacts-map-canvas { min-height: 420px; border: 1px solid var(--gray-200); border-radius: 8px; background: var(--gray-50); }
.contacts-hierarchy { display: flex; flex-direction: column; gap: 4px; padding: 16px 20px; background: #fff; }
.contacts-hierarchy-node { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
.contacts-hierarchy-link { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; text-decoration: none; }
.contacts-hierarchy-link .icon { width: 16px; height: 16px; }
.contacts-hierarchy-meta { font-size: 12px; color: var(--gray-500); }
.contacts-schedule-link { font-size: 13px; color: var(--sfe-primary, #2563eb); white-space: nowrap; }
.contacts-activity-table { margin: 16px 20px; }
.contacts-activity-table td, .contacts-activity-table th { vertical-align: middle; }

@media (max-width: 960px) {
    .contacts-cp-row-search { flex-wrap: wrap; }
    .contacts-cp-row-tools { margin-left: 0; width: 100%; justify-content: flex-end; }
    .contacts-map-layout { grid-template-columns: 1fr; }
}

/* —— P175 SPA / UX shell —— */
.o_command_section {
    padding: 8px 14px 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--gray-500);
    list-style: none;
}

.o_command_item--action .o_command_label {
    font-weight: 600;
}

.o_command_item--action .o_command_meta {
    color: var(--sfe-primary, #2563eb);
}

.sfe-line-totals-bar {
    position: sticky;
    bottom: 0;
    z-index: 6;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    padding: 10px 14px;
    margin-top: 8px;
    border: 1px solid var(--gray-200);
    border-radius: 8px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 -4px 16px rgba(15, 23, 42, .08);
}

.sfe-line-totals-label {
    font-size: 13px;
    color: var(--gray-600);
}

.sfe-line-totals-amount {
    font-size: 18px;
    color: var(--gray-900);
}

input.is-invalid[data-fiscal-rfc-bound],
input.is-invalid[name="vat"],
input.is-invalid[name="rfc"] {
    border-color: var(--danger, #dc2626);
}

@media (min-width: 769px) and (max-width: 1100px) {
    .form-view .form-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .line-editor .line-table {
        font-size: 13px;
    }

    .line-editor .line-table th,
    .line-editor .line-table td {
        padding: 6px 8px;
    }

    .pos-session-shell,
    .pos-order-shell {
        grid-template-columns: 1fr 320px;
    }

    .stock-dashboard .crm-stats,
    .attendance-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .o_settings_body {
        grid-template-columns: 220px minmax(0, 1fr);
    }

    .o_settings_cp_tabs {
        flex-wrap: wrap;
        gap: 4px;
    }
}

@media (max-width: 768px) {
    .sfe-line-totals-bar {
        border-radius: 0;
        margin-left: -12px;
        margin-right: -12px;
    }
}
