:root {
    --bg: #eef3f9;
    --bg-soft: #f8fbff;
    --card: #ffffff;
    --text: #0f172a;
    --muted: #64748b;
    --border: #dbe4f0;
    --primary: #1d4ed8;
    --primary-dark: #1e3a8a;
    --primary-soft: #eaf2ff;
    --primary-shadow: rgba(29, 78, 216, 0.22);
    --success: #166534;
    --success-soft: #ecfdf5;
    --success-shadow: rgba(22, 101, 52, 0.22);
    --danger: #b91c1c;
    --danger-soft: #fef2f2;
    --danger-shadow: rgba(153, 27, 27, 0.22);
    --shadow: 0 12px 24px rgba(15, 23, 42, 0.065);
    --radius-xl: 16px;
    --radius-lg: 12px;
    --radius-md: 10px;
}
@font-face {
    font-family: "Together";
    src: url("../fonts/Together.ttf") format("truetype"),
         url("../fonts/Together.otf") format("opentype");
    font-weight: 400 700;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "Lobster";
    src: url("../fonts/Lobster-Regular.ttf") format("truetype");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "Lobster";
    src: url("../fonts/Lobster-Regular.ttf") format("truetype");
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

/* ================================
   BASE GENERAL
================================ */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    color: var(--text);
    background:
        radial-gradient(circle at top right, rgba(29, 78, 216, 0.12), transparent 25%),
        linear-gradient(180deg, #f8fbff 0%, #eef3f9 100%);
}
a { color: var(--primary); text-decoration: none; }
img { max-width: 100%; }
hr { border: none; border-top: 1px solid var(--border); margin: 24px 0; }

/* ================================
   LAYOUT GENERAL
================================ */
.layout-shell { min-height: 100vh; display: flex; }
.public-shell { display: block; }
.main-content { flex: 1; padding: 16px; }
.main-content.no-sidebar { width: 100%; padding: 0; }

/* ================================
   SIDEBAR
================================ */
.sidebar {
    width: 235px;
    background: linear-gradient(180deg, #0f172a 0%, #111827 100%);
    color: #fff;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    position: sticky;
    top: 0;
    height: 100vh;
}
.brand-card {
    display: flex;
    gap: 12px;
    align-items: center;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: var(--radius-lg);
    padding: 10px;
}
.brand-card img {
    width: 46px;
    height: 46px;
    object-fit: contain;
    border-radius: 10px;
    background: #fff;
    padding: 5px;
}
.brand-card strong, .brand-card small { display: block; }
.brand-card small { color: #cbd5e1; margin-top: 4px; }
.menu { display: grid; gap: 6px; }
.sidebar-footer { margin-top: auto; display: grid; gap: 6px; }
.menu-link {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #dbeafe;
    padding: 9px 10px;
    border-radius: 10px;
    border: 1px solid transparent;
    background: rgba(255, 255, 255, 0.04);
    transition: 0.2s ease;
    font-weight: 600;
}
.menu-link:hover { background: rgba(255, 255, 255, 0.1); transform: translateX(2px); }
.menu-link.active {
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.32), rgba(29, 78, 216, 0.48));
    color: #fff;
    border-color: rgba(147, 197, 253, 0.4);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.04);
}
.menu-link.ghost { background: rgba(255,255,255,.03); }
.menu-link.danger { background: rgba(185, 28, 28, 0.22); color: #fee2e2; }
.menu-icon {
    width: 22px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 7px;
    background: rgba(255, 255, 255, 0.10);
    font-size: 14px;
}
.logout-form { margin: 0; }
.logout-button {
    width: 100%;
    margin-top: 0;
    text-align: left;
    cursor: pointer;
    font: inherit;
}

/* ================================
   TOPBAR
================================ */
.topbar {
    position: sticky;
    top: 12px;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 14px;
    padding: 14px 16px;
    background: rgba(255,255,255,0.82);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(219,228,240,0.9);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow);
}
.eyebrow {
    margin: 0 0 4px;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: 10px;
    color: var(--muted);
    font-weight: 700;
}
.topbar h1 { margin: 0; font-size: 22px; }
.topbar-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.user-chip {
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--bg-soft);
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 5px 10px 5px 5px;
}
.user-chip strong, .user-chip small { display: block; }
.user-chip small { color: var(--muted); }
.user-avatar {
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--primary), var(--primary-dark));
    color: #fff;
    font-weight: 700;
}
.notification-bell {
    position: relative;
    flex: 0 0 auto;
}
.notification-trigger {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: #fff;
    color: var(--primary-dark);
    cursor: pointer;
    margin: 0;
    padding: 0;
    box-shadow: none;
}
.notification-trigger:hover { transform: translateY(-1px); }
.bell-icon { font-size: 18px; line-height: 1; }
.notification-count {
    position: absolute;
    top: -6px;
    right: -6px;
    min-width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: #dc2626;
    color: #fff;
    border: 2px solid #fff;
    font-size: 11px;
    font-weight: 800;
}
.notification-panel {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    z-index: 80;
    width: min(360px, calc(100vw - 32px));
    padding: 10px;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 20px 48px rgba(15,23,42,.18);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
}
.notification-panel::before {
    content: '';
    position: absolute;
    top: -7px;
    right: 14px;
    width: 14px;
    height: 14px;
    background: #fff;
    border-left: 1px solid var(--border);
    border-top: 1px solid var(--border);
    transform: rotate(45deg);
}
.notification-bell.is-open .notification-panel {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.notification-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 4px 4px 10px;
    border-bottom: 1px solid #edf2f7;
}
.link-button {
    width: auto;
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    color: var(--primary);
    font-weight: 800;
    cursor: pointer;
}
.notification-list {
    display: grid;
    gap: 8px;
    max-height: 320px;
    overflow: auto;
    padding-top: 10px;
}
.notification-item {
    display: block;
    padding: 10px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: #f8fbff;
    color: var(--text);
}
.notification-item.is-unread {
    border-color: #bfdbfe;
    background: #eff6ff;
}
.notification-item strong,
.notification-item span,
.notification-item small {
    display: block;
}
.notification-item span {
    margin-top: 4px;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.35;
}
.notification-item small {
    margin-top: 6px;
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}
.notification-empty {
    margin: 0;
    padding: 12px;
    color: var(--muted);
    font-weight: 700;
}

/* ================================
   BOTONES
================================ */
.btn,
.btn-secondary,
button:not(.menu-link):not(.logout-button):not(.link-button):not(.notification-trigger):not(.designer-focus) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: linear-gradient(135deg, var(--primary), var(--primary-dark));
    color: #fff;
    border: none;
    border-radius: 10px;
    padding: 9px 14px;
    font-weight: 700;
    cursor: pointer;
    text-align: center;
    text-decoration: none;
    transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease, background .15s ease;
    box-shadow: 0 8px 16px var(--primary-shadow);
}
.btn:hover,
.btn-secondary:hover,
button:not(.menu-link):not(.logout-button):not(.link-button):not(.notification-trigger):not(.designer-focus):hover {
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 11px 20px var(--primary-shadow);
}
.btn:active,
.btn-secondary:active,
.icon-btn:active,
.visual-designer-tools button:active {
    transform: translateY(1px) scale(.99);
    box-shadow: inset 0 2px 5px rgba(15, 23, 42, .18);
}
.btn.is-saving,
.btn-secondary.is-saving,
button.is-saving {
    transform: translateY(1px) scale(.99);
    opacity: .86;
    pointer-events: none;
}
.btn:disabled,
.btn-secondary:disabled,
button:disabled {
    opacity: .58;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}
.btn-save-design {
    margin-top: 16px;
    padding: 12px 16px;
    font-size: 15px;
    box-shadow: 0 10px 20px rgba(29, 78, 216, .2);
}
.btn-light {
    background: #fff;
    color: var(--primary-dark);
    border: 1px solid var(--border);
    box-shadow: 0 5px 12px rgba(15, 23, 42, .06);
}
.btn-light:hover {
    color: var(--primary-dark);
    background: #f8fbff;
    box-shadow: 0 8px 16px rgba(15, 23, 42, .08);
}
.btn-success {
    background: linear-gradient(135deg, #16a34a, #166534);
    color: #fff;
    border: none;
    box-shadow: 0 8px 16px var(--success-shadow);
    font-weight: 800;
}
.btn-danger {
    background: linear-gradient(135deg, #dc2626, #991b1b);
    color: #fff;
    border: none;
    box-shadow: 0 8px 16px var(--danger-shadow);
    font-weight: 800;
}
.btn-success:hover {
    box-shadow: 0 11px 20px var(--success-shadow);
    color: #fff;
}
.btn-danger:hover {
    box-shadow: 0 11px 20px var(--danger-shadow);
    color: #fff;
}
.btn-secondary {
    padding: 7px 10px;
    border-radius: 9px;
    background: linear-gradient(135deg, #eff6ff, #dbeafe);
    border: 1px solid #c9dcff;
    color: var(--primary-dark);
    box-shadow: 0 6px 12px rgba(29, 78, 216, .10);
}
.btn-secondary:hover {
    color: var(--primary-dark);
    background: linear-gradient(135deg, #dbeafe, #bfdbfe);
    box-shadow: 0 9px 16px rgba(29, 78, 216, .14);
}

/* ================================
   TARJETAS Y GRID
================================ */
.card {
    background: rgba(255,255,255,0.92);
    border: 1px solid rgba(219,228,240,0.95);
    border-radius: var(--radius-xl);
    padding: 14px;
    box-shadow: var(--shadow);
}
.card h2, .card h3 { margin-top: 0; }
.grid { display: grid; gap: 12px; }
.two-columns { grid-template-columns: 1.05fr 0.95fr; margin-bottom: 12px; }
.stats-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 12px; }
.stats-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cards-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.form-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.full-col { grid-column: 1 / -1; }

/* ================================
   DASHBOARD / MINI CARDS
================================ */
.dashboard-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 12px;
    padding: 18px;
    border: 1px solid rgba(219,228,240,0.95);
    border-radius: var(--radius-xl);
    background: linear-gradient(135deg, rgba(255,255,255,.96), rgba(236,253,245,.9));
    box-shadow: var(--shadow);
}
.dashboard-hero h2 { margin: 0; font-size: 24px; }
.dashboard-hero p:last-child {
    max-width: 680px;
    margin: 8px 0 0;
    color: #475569;
    line-height: 1.5;
}
.dashboard-hero-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: flex-end;
}
.dashboard-hero-actions .btn { width: auto; margin-top: 0; white-space: nowrap; }
.dashboard-stats { align-items: stretch; }
.stat-card {
    position: relative;
    overflow: hidden;
    min-height: 92px;
    padding: 12px;
}
.stat-card::after {
    content: '';
    position: absolute;
    right: -16px;
    top: -16px;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: rgba(59,130,246,.10);
}
.stat-card h3 { font-size: 26px; margin-bottom: 4px; line-height: 1; }
.stat-card p { margin: 0; color: var(--muted); font-weight: 600; }
.stat-kicker {
    position: relative;
    z-index: 1;
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.stat-card-primary::after { background: rgba(37,99,235,.12); }
.stat-card-success::after { background: rgba(22,163,74,.13); }
.stat-card-info::after { background: rgba(8,145,178,.14); }
.stat-card-warning::after { background: rgba(245,158,11,.16); }
.dashboard-columns {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    margin-bottom: 12px;
}
.dashboard-panel { min-width: 0; }
.dashboard-panel .section-heading { margin-bottom: 10px; }
.dashboard-panel h2 { margin: 0; }
.workflow-list,
.rank-list,
.activity-list {
    display: grid;
    gap: 10px;
}
.workflow-item,
.rank-row,
.activity-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: #f8fbff;
}
.workflow-item {
    color: var(--text);
    font-weight: 800;
}
.workflow-item strong {
    display: inline-flex;
    min-width: 44px;
    height: 36px;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: #fff;
    color: var(--primary-dark);
    border: 1px solid #dbeafe;
}
.workflow-item:hover { border-color: #bfdbfe; }
.workflow-item.is-muted { color: #334155; }
.rank-row strong,
.activity-row strong,
.dashboard-shortcuts strong { display: block; color: var(--text); }
.rank-row span,
.activity-row span,
.dashboard-shortcuts span {
    display: block;
    margin-top: 4px;
    color: var(--muted);
    font-size: 13px;
    font-weight: 600;
}
.activity-row { align-items: flex-start; }
.activity-meta {
    display: grid;
    justify-items: end;
    gap: 6px;
    flex: 0 0 auto;
}
.activity-meta code {
    padding: 4px 7px;
    border-radius: 8px;
    background: #eef2ff;
    color: var(--primary-dark);
    font-size: 12px;
    font-weight: 800;
}
.activity-meta small {
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}
.empty-state {
    margin: 0;
    padding: 14px;
    border: 1px dashed var(--border);
    border-radius: 12px;
    color: var(--muted);
    background: #f8fbff;
    font-weight: 700;
}
.mini-card {
    display: block;
    background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
    border: 1px solid var(--border);
    padding: 11px 12px;
    border-radius: 12px;
    color: var(--text);
    font-weight: 700;
    min-height: 70px;
    box-shadow: 0 6px 14px rgba(15,23,42,.035);
}
.mini-card:hover { border-color: #bfd4ff; color: var(--primary-dark); }

/* ================================
   FORMULARIOS
================================ */
label {
    display: block;
    margin: 8px 0 5px;
    font-weight: 700;
    color: var(--primary-dark);
}
input, select, button, textarea {
    width: 100%;
    padding: 9px 10px;
    border-radius: 10px;
    border: 1px solid #cdd8e6;
    background: #fff;
    font-size: 13px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
button:not(.menu-link):not(.logout-button):not(.link-button):not(.notification-trigger):not(.designer-focus) {
    border-color: transparent;
}
input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: #8eb5ff;
    box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.12);
}
.uppercase-input { text-transform: uppercase; }
button { margin-top: 12px; }
.form-actions-inline {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-top: 14px;
}
.form-actions-inline button,
.form-actions-inline .btn {
    width: 100%;
    margin-top: 0;
}
.helper { display:block; margin-top:6px; color: var(--muted); font-size: 13px; }

/* ================================
   TABLAS
================================ */
.table-wrap {
    overflow: auto;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: #fff;
}
table { width: 100%; border-collapse: collapse; min-width: 760px; }
th, td {
    padding: 12px 14px;
    border-bottom: 1px solid #edf2f7;
    text-align: left;
    vertical-align: top;
}
th {
    background: #f8fbff;
    color: var(--primary-dark);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .03em;
}
tr:hover td { background: #fbfdff; }
.table-actions { display: grid; gap: 10px; min-width: 260px; }
.inline-form {
    display: grid;
    grid-template-columns: minmax(150px, 1fr) minmax(120px, 1fr) auto;
    gap: 8px;
    align-items: center;
    min-width: 440px;
}
.inline-form input, .inline-form button {
    margin: 0;
}
.inline-form button {
    white-space: nowrap;
}
.link-field {
    margin: 0;
    padding: 8px 10px;
    border-radius: 10px;
    background: #f8fbff;
    color: var(--muted);
    font-size: 12px;
}

/* ================================
   ALERTAS
================================ */
.alert {
    padding: 12px 14px;
    border-radius: 12px;
    margin-bottom: 14px;
    font-weight: 600;
}
.alert.success { background: var(--success-soft); color: var(--success); border: 1px solid #bbf7d0; }
.alert.error { background: var(--danger-soft); color: var(--danger); border: 1px solid #fecaca; }

/* ================================
   VISTAS PUBLICAS / LOGIN
================================ */
.auth-wrapper, .public-wrapper {
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 20px;
}
.public-wrapper {
    background:
        linear-gradient(135deg, rgba(15, 23, 42, 0.08), rgba(29, 78, 216, 0.12)),
        linear-gradient(160deg, #f8fbff 0%, #eaf2ff 45%, #ecfdf5 100%);
}
.auth-card, .public-card {
    width: min(100%, 980px);
    background: rgba(255,255,255,0.96);
}
.public-card { width: min(100%, 860px); }
.auth-card { max-width: 500px; }
.auth-logo { width: 88px; display: block; margin: 0 auto 16px; }
.public-brand-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-bottom: 18px;
    padding: 10px 14px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: linear-gradient(135deg, #fbfdff 0%, #f1f6ff 100%);
    text-align: center;
}
.public-brand-logo {
    width: 46px;
    height: 46px;
    object-fit: contain;
    border-radius: 12px;
    background: #fff;
    padding: 5px;
    border: 1px solid #dbe4f0;
}
.public-brand-copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.public-brand-name {
    font-size: 18px;
    font-weight: 800;
    color: var(--primary-dark);
    line-height: 1.1;
}
.public-brand-subtitle {
    margin-top: 2px;
    font-size: 13px;
    color: var(--muted);
    font-weight: 600;
}
.public-link { display: block; text-align: center; margin-top: 14px; font-weight: 700; }
.public-certificate-page {
    overflow: hidden;
}
.public-brand-formal {
    justify-content: center;
    border-radius: 12px;
    background: linear-gradient(135deg, #f8fbff 0%, #eef6ff 100%);
    padding: 8px 12px;
}
.public-certificate-heading {
    margin: 14px 0;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--border);
}
.public-certificate-heading h2 {
    margin: 0;
    font-size: 22px;
    color: var(--primary-dark);
}
.public-certificate-heading p:last-child {
    margin: 6px 0 0;
    color: var(--muted);
    line-height: 1.5;
    font-size: 15px;
}
.public-search-form {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    gap: 12px;
    align-items: end;
}
.public-search-form button { width: auto; margin-top: 0; white-space: nowrap; }
.public-certificate-list {
    display: grid;
    gap: 12px;
}
.public-certificate-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: #f8fbff;
}
.public-certificate-card h3 {
    margin: 8px 0;
    font-size: 18px;
    color: var(--text);
}
.public-certificate-card dl {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0;
}
.public-certificate-card dt {
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
}
.public-certificate-card dd {
    margin: 3px 0 0;
    font-weight: 800;
    font-size: 14px;
}
.public-certificate-card code,
.public-info-grid code {
    padding: 4px 7px;
    border-radius: 8px;
    background: #eef2ff;
    color: var(--primary-dark);
    font-weight: 800;
}
.public-verification-seal {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 14px;
    padding: 16px;
    border: 1px solid #bbf7d0;
    border-radius: 14px;
    background: linear-gradient(135deg, #ecfdf5, #f8fbff);
    color: var(--success);
}
.public-verification-seal span {
    display: block;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.public-verification-seal strong {
    display: block;
    margin-top: 5px;
    color: var(--text);
    font-size: 22px;
}
.public-info-grid > div {
    background: #fff;
}
.verified-box {
    padding: 12px 14px;
    border-radius: 12px;
    background: var(--success-soft);
    color: var(--success);
    font-weight: 800;
    margin-bottom: 14px;
    border: 1px solid #bbf7d0;
}
.info-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.info-grid > div {
    padding: 14px;
    border-radius: 14px;
    border: 1px solid var(--border);
    background: var(--bg-soft);
}
.clean-list { margin: 0; padding-left: 18px; line-height: 1.9; }
.clean-list li::marker { color: var(--primary); }
.feature-list li { padding: 10px 0; border-bottom: 1px dashed var(--border); }
.feature-list li:last-child { border-bottom: none; }
.section-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom: 14px; }
.section-actions { display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap; }
.badge {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:6px 10px;
    border-radius:999px;
    font-size:12px;
    font-weight:700;
    background: var(--primary-soft);
    color: var(--primary-dark);
    border:1px solid #c9dcff;
}
.badge.info { background:#ecfeff; color:#155e75; border-color:#a5f3fc; }
.badge.status-pendiente { background:#fff7ed; color:#9a3412; border-color:#fed7aa; }
.badge.status-aprobado { background:var(--success-soft); color:var(--success); border-color:#bbf7d0; }
.badge.status-rechazado { background:var(--danger-soft); color:var(--danger); border-color:#fecaca; }
.compact-action { width:auto; margin-top: 8px; }
.enrollment-card { width: min(100%, 760px); }
.lookup-form { margin-bottom: 16px; }
.lookup-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: end;
}
.lookup-row button { width: auto; margin-top: 0; white-space: nowrap; }
.app-footer { margin-top: 24px; text-align: center; color: var(--muted); font-size: 14px; }

/* ================================
   RESPONSIVE
================================ */
@media (max-width: 1200px) {
    .cards-4, .stats-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1180px) {
    .sidebar { width: 250px; }
    .topbar { flex-direction: column; align-items: flex-start; }
    .topbar-actions { width: 100%; }
}
@media (max-width: 980px) {
    .layout-shell { flex-direction: column; }
    .sidebar {
        width: 100%;
        height: auto;
        position: relative;
    }
    .main-content { padding: 16px; }
    .stats-grid, .cards-3, .two-columns, .info-grid, .dashboard-columns { grid-template-columns: 1fr; }
    .topbar { padding: 18px; }
    .notification-panel {
        left: 0;
        right: auto;
    }
    .notification-panel::before {
        left: 14px;
        right: auto;
    }
    .user-chip { width: 100%; border-radius: 18px; }
    .dashboard-hero { align-items: flex-start; flex-direction: column; }
    .dashboard-hero-actions { width: 100%; justify-content: flex-start; }
}
@media (max-width: 900px) {
    .form-2, .cards-4, .stats-grid-4 { grid-template-columns: 1fr; }
    .students-grid { grid-template-columns: 1fr; }
    .certificate-summary { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
    .auth-wrapper, .public-wrapper { padding: 14px; }
    .public-brand-header {
        align-items: center;
        gap: 10px;
        padding: 10px 12px;
    }
    .public-brand-logo {
        width: 42px;
        height: 42px;
    }
    .public-brand-name { font-size: 16px; }
    .public-brand-subtitle { font-size: 12px; }
    .card { padding: 18px; }
    .topbar h1 { font-size: 24px; }
    table { min-width: 640px; }
    .inline-form {
        min-width: 320px;
        grid-template-columns: 1fr;
    }
    .form-actions-inline {
        grid-template-columns: 1fr;
    }
    .lookup-row { grid-template-columns: 1fr; }
    .lookup-row button { width: 100%; }
    .public-search-form,
    .public-certificate-card,
    .public-certificate-card dl {
        grid-template-columns: 1fr;
    }
    .public-search-form button,
    .public-certificate-card .btn-secondary {
        width: 100%;
    }
    .dashboard-hero-actions .btn { width: 100%; }
    .workflow-item,
    .rank-row,
    .activity-row {
        align-items: flex-start;
        flex-direction: column;
    }
    .activity-meta { justify-items: start; }
}

/* Busquedas y filtros agregados */
.filter-bar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    align-items: end;
    margin: 12px 0 16px;
}
.filter-bar .btn,
.filter-bar button,
.filter-bar a { width: auto; margin-top: 0; }
.js-select-filter { margin-bottom: 8px; }

/* Paginacion de tablas */

.table-pagination {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 10px;
    flex-wrap: wrap;
}
.table-pagination .btn {
    width: auto;
    margin-top: 0;
    padding: 7px 12px;
}
.table-pagination .btn:disabled {
    opacity: .55;
    cursor: not-allowed;
    transform: none;
}
.table-pagination .btn.is-disabled {
    opacity: .55;
    pointer-events: none;
    transform: none;
}
.pagination-info {
    color: var(--muted);
    font-size: 13px;
    font-weight: 700;
}

.required-mark {
    color: #b91c1c;
    font-weight: 800;
}

.optional-label {
    color: #64748b;
    font-weight: 600;
    margin-left: 4px;
}

.form-note {
    margin: 10px 0 14px;
    padding: 10px 12px;
    border-radius: 10px;
    background: rgba(248, 250, 252, 0.95);
    border: 1px solid rgba(203, 213, 225, 0.9);
    color: #0f172a;
    font-size: 14px;
}

/* Configuracion de certificado */
.certificate-summary{
    display:grid;
    grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr);
    gap:16px;
    margin:16px 0 22px;
    padding:14px;
    border:1px solid var(--border);
    border-radius:14px;
    background:#f8fbff;
}
.certificate-summary img{
    display:block;
    max-height:220px;
    width:100%;
    object-fit:contain;
    margin-top:10px;
    border:1px solid var(--border);
    border-radius:12px;
    background:#fff;
}
.summary-text{
    padding:10px 0;
    border-bottom:1px dashed var(--border);
}
.summary-text:last-child{border-bottom:none;}
.summary-text p{
    margin:6px 0 0;
    color:#334155;
    line-height:1.5;
}
.design-summary-table{margin:18px 0 8px;}
.design-summary-table table{min-width:860px;}
.certificate-style-section{
    margin:10px 0 14px;
}
.certificate-style-section h3{
    margin:0 0 7px;
    line-height:1.15;
}
.certificate-style-grid{
    grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
    gap:8px 10px;
    align-items:end;
}
.certificate-style-grid label{
    margin-bottom:4px;
    font-size:13px;
}
.certificate-style-grid input,
.certificate-style-grid select{
    min-height:38px;
    padding:8px 10px;
}
.template-upload-fields input,
.template-upload-fields select{
    margin-bottom:8px;
}
.template-upload-fields input[type="file"]{
    padding:8px 10px;
}
.template-card-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
    gap:14px;
    margin:14px 0 20px;
}
.template-card{
    display:grid;
    gap:10px;
    padding:12px;
    border:1px solid var(--border);
    border-radius:14px;
    background:#f8fbff;
}
.template-card img{
    width:100%;
    aspect-ratio:16/10;
    object-fit:contain;
    border:1px solid var(--border);
    border-radius:12px;
    background:#fff;
}
.template-card strong{display:block;margin-bottom:6px;}
.template-modal{
    display:none;
    position:fixed;
    inset:0;
    z-index:50;
    padding:20px;
    background:rgba(15,23,42,.48);
    overflow:auto;
}
.template-modal.is-open{display:block;}
.template-modal-panel{
    width:min(1120px,100%);
    margin:0 auto;
    padding:18px;
    border:1px solid var(--border);
    border-radius:18px;
    background:#fff;
    box-shadow:0 24px 70px rgba(15,23,42,.22);
}

/* Modulo Office 365 */
.office-page{display:grid;gap:16px;}
.office-page .card{margin:0;}
.office-steps{gap:16px;margin-bottom:0;}
.office-steps .card{min-height:100%;}
.office-summary .four-columns{gap:14px;}
.four-columns{grid-template-columns:repeat(4,minmax(0,1fr));}
.office-page .stat-card{padding:16px;border:1px solid rgba(15,23,42,.08);border-radius:16px;background:#f8fafc;display:flex;flex-direction:column;gap:4px;}
.office-page .stat-card strong{font-size:28px;line-height:1;color:#0f172a;}
.office-page .stat-card span{font-size:13px;color:#64748b;}
textarea{width:100%;border:1px solid #d7dde8;border-radius:14px;padding:12px;font:inherit;resize:vertical;}
@media (max-width: 980px){.four-columns{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width: 620px){.four-columns{grid-template-columns:1fr;}}

.action-icons{display:flex;gap:8px;align-items:center;}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;border:1px solid #c9dcff;background:linear-gradient(135deg,#eff6ff,#dbeafe);color:var(--primary-dark);text-decoration:none;font-size:17px;box-shadow:0 6px 12px rgba(29,78,216,.10);transition:transform .15s ease,box-shadow .15s ease,background .15s ease;}
.icon-btn:hover{background:linear-gradient(135deg,#dbeafe,#bfdbfe);transform:translateY(-1px);box-shadow:0 9px 16px rgba(29,78,216,.14);}
.inline-edit-form input,
.inline-edit-form select,
.inline-edit-form textarea { margin:0; min-width:160px; }

/* Popup de inscritos por curso */
.course-modal{
    position:fixed;
    inset:0;
    z-index:60;
    display:none;
    padding:20px;
    background:rgba(15,23,42,.54);
    overflow:auto;
}
.course-modal.is-open{display:block;}
.course-modal-panel{
    width:min(1120px,100%);
    margin:24px auto;
    max-height:calc(100vh - 48px);
    overflow:auto;
}
.course-modal-actions{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    justify-content:flex-end;
}
.course-modal-actions .btn{width:auto;margin-top:0;}
@media (max-width:640px){
    .course-modal{padding:12px;}
    .course-modal-panel{margin:8px auto;max-height:calc(100vh - 16px);}
    .course-modal-actions{width:100%;justify-content:flex-start;}
    .course-modal-actions .btn{width:100%;}
}

/* Editor visual de certificados */
.visual-designer-grid{
    display:grid;
    grid-template-columns:210px minmax(0,1fr);
    gap:16px;
    align-items:start;
    margin:14px 0 18px;
}
.visual-designer-tools{
    position:sticky;
    top:16px;
    display:grid;
    gap:8px;
    padding:12px;
    border:1px solid var(--border);
    border-radius:14px;
    background:#f8fbff;
}
.visual-designer-tools button{
    width:100%;
    margin:0;
    padding:9px 10px;
    border-radius:10px;
    border:1px solid #cbd5e1;
    background:#fff;
    color:#0f172a;
    cursor:pointer;
    text-align:left;
    font-weight:700;
}
.certificate-designer-wrap{overflow:auto;padding:10px;border:1px solid var(--border);border-radius:16px;background:#eef3f9;}
.certificate-designer,
.certificate-reverse-designer{
    position:relative;
    width:min(100%,980px);
    aspect-ratio:297/210;
    margin:0 auto;
    overflow:hidden;
    border:1px solid #94a3b8;
    border-radius:10px;
    background:#fff;
    box-shadow:0 12px 28px rgba(15,23,42,.16);
    user-select:none;
    touch-action:none;
}
.designer-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:1;pointer-events:none;}
.designer-block{position:absolute;z-index:2;box-sizing:border-box;border:1px dashed rgba(37,99,235,.8);background:rgba(255,255,255,.22);cursor:move;min-height:20px;padding:0;}
.designer-block.is-hidden-by-setting,
.designer-block.is-placement-hidden{display:none!important;}
.designer-block.is-selected{border:2px solid #2563eb;background:rgba(219,234,254,.55);box-shadow:0 0 0 3px rgba(37,99,235,.16);}
.designer-label{position:absolute;left:0;top:-22px;padding:2px 6px;border-radius:7px;background:#1e293b;color:#fff;font:700 10px/1.2 Arial,sans-serif;white-space:nowrap;opacity:.9;}
.designer-content{text-align:center;pointer-events:none;}
.designer-name{font-weight:800;letter-spacing:.02em;}
.designer-date .designer-content{text-align:right;}
.designer-resize{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;border-radius:50%;background:#2563eb;border:2px solid #fff;cursor:nwse-resize;box-shadow:0 1px 5px rgba(15,23,42,.35);}
.designer-signatures{border-color:rgba(202,138,4,.9);background:rgba(255,251,235,.42);}
.designer-signature-row{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;width:100%;pointer-events:none;text-align:center;}
.designer-signature-row span{display:block;position:relative;width:var(--line-width,150px);max-width:90%;margin:0 auto 3px;border-top:var(--line-thickness,2px) solid var(--line-color,#000);}
.designer-signature-row span::before,
.designer-signature-row span::after{
    content:"";
    position:absolute;
    top:calc((var(--line-thickness, 2px) + 7px) / -2);
    width:7px;
    height:7px;
    border:var(--line-thickness,2px) solid var(--line-color,#000);
    background:#fff;
    transform:rotate(45deg);
}
.designer-signature-row span::before{left:-2px;}
.designer-signature-row span::after{right:-2px;}
.designer-signature-row strong{display:block;font-size:inherit;line-height:1.15;min-height:var(--person-role-gap,12px);}
.designer-signature-row small{display:block;font-size:var(--role-font-size,14px);font-family:var(--role-font-family, "DejaVu Serif");font-weight:var(--role-font-weight, 400);letter-spacing:var(--role-letter-spacing, 0);word-spacing:var(--role-word-spacing, 0);line-height:1.1;}
.reverse-designer-box{margin:16px 0 18px;padding:12px;border:1px solid var(--border);border-radius:14px;background:#f8fbff;}
.reverse-designer-box summary{cursor:pointer;font-weight:800;color:#0f172a;}
.certificate-reverse-designer{max-width:760px;background:#fff;}
.reverse-paper-label{position:absolute;inset:0;display:grid;place-items:center;color:#e2e8f0;font-size:42px;font-weight:900;letter-spacing:.15em;}
.designer-qr{display:grid;place-items:center;padding:0;}
.fake-qr{display:grid;place-items:center;width:100%;height:100%;box-sizing:border-box;border:4px double #0f172a;color:#0f172a;font-weight:900;background:repeating-linear-gradient(45deg,#fff 0,#fff 6px,#e2e8f0 6px,#e2e8f0 12px);}
.designer-code{background:rgba(241,245,249,.78);width:max-content!important;min-width:max-content;white-space:nowrap;text-align:center;transform:translateX(-50%);}
.designer-code .designer-resize{display:none;}
@media (max-width: 900px){.visual-designer-grid{grid-template-columns:1fr}.visual-designer-tools{position:static}.designer-label{display:none}}
.enrollment-answers{
    margin-top:10px;
    padding:9px 10px;
    border:1px solid #dbeafe;
    border-radius:10px;
    background:#f8fbff;
}
.enrollment-answers .helper{
    margin:0 0 6px;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.04em;
    color:#64748b;
}
.answer-line{
    display:grid;
    gap:2px;
    margin-top:6px;
    font-size:12px;
    line-height:1.35;
}
.answer-line strong{color:#0f3f93;}
.answer-line span{color:#0f172a;}
