/**
 * cloudflaredns.css — Estilos del addon Cloudflare DNS/Registrar para WHMCS.
 * Compatible con Bootstrap 3/4 de WHMCS.
 *
 * EXCEPCIÓN explícita, decidida por el dueño (QA 2026-07-17): este archivo dejó de ser
 * "autocontenido, sin dependencias CDN" — carga Schibsted Grotesk / JetBrains Mono desde Google
 * Fonts (@import abajo) porque son la tipografía real de docs/UI_GUIDELINES.md §3 y no había
 * archivos .woff2 propios para autohospedarlas. Si en el futuro se prefiere autohospedar
 * (evitar la llamada externa), reemplazar el @import por @font-face + .woff2 en
 * templates/assets/fonts/ y quitar esta nota.
 */
@import url('https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

/* ========== Design Tokens (concrete values) ==========
 * Re-alineados con docs/UI_GUIDELINES.md §2/§4 (auditoría QA 2026-07-17): varios
 * habían quedado escritos a mano en vez de copiados del token canónico y se
 * habían desviado del sistema real (el caso más visible: el acento de los
 * botones no era el mismo naranja "Flame" que ya usaban los íconos). */
:root {
    --cfdns-font: 'Schibsted Grotesk', 'Segoe UI', system-ui, -apple-system, sans-serif;
    --cfdns-mono: 'JetBrains Mono', 'Courier New', monospace;

    /* Surface */
    --cfdns-surface-sunken: #F6F4F0;
    --cfdns-surface-card: #FFFFFF;
    --cfdns-surface-raised: #FFFFFF;
    --cfdns-surface-page: #FBFAF8;

    /* Text */
    --cfdns-text-strong: #1D1E24;
    --cfdns-text-body: #34363F;
    --cfdns-text-muted: #6E7280;
    --cfdns-text-subtle: #8B8F9A;

    /* Border */
    --cfdns-border-subtle: #E5E2DA;
    --cfdns-border-default: #D7D3C9;
    --cfdns-border-strong: #B5B0A7;

    /* Accent (Flame) */
    --cfdns-accent: #FF713A;
    --cfdns-accent-hover: #E85C28;
    --cfdns-accent-pressed: #C44A1E;
    --cfdns-accent-tint: #FFF2EC;

    /* Status colors */
    --cfdns-success-50: #EAF4EF;
    --cfdns-success-500: #2F8F6B;
    --cfdns-warning-50: #FBF3E0;
    --cfdns-warning-500: #C68A14;
    --cfdns-danger-50: #FBEBE9;
    --cfdns-danger-500: #C2453A;
    --cfdns-sky-50: #F1F5F9;
    --cfdns-sky-500: #6E8FAD;
    --cfdns-ink-900: #1D1E24;

    /* Sand */
    --cfdns-sand-50: #F6F4F0;
    --cfdns-sand-100: #F5F4F0;
    --cfdns-sand-200: #E5E2DA;
    --cfdns-sand-300: #D7D3C9;

    /* Misc */
    --cfdns-radius-sm: 8px;
    --cfdns-radius-md: 12px;
    --cfdns-radius-lg: 16px;
    --cfdns-radius-xl: 24px;
    --cfdns-radius-full: 999px;
    --cfdns-shadow-xs: 0 1px 2px rgba(0,0,0,.04);
    --cfdns-shadow-sm: 0 1px 3px rgba(0,0,0,.06);
    --cfdns-shadow-md: 0 4px 12px rgba(0,0,0,.06);
    --cfdns-shadow-lg: 0 8px 24px rgba(0,0,0,.1);
    --cfdns-shadow-focus: 0 0 0 3px rgba(255,113,58,.32);
    --cfdns-transition: 0.15s ease;
}

/* ========== Base ========== */
.cfdns-root {
    font-family: var(--cfdns-font);
    color: var(--cfdns-text-body);
    -webkit-font-smoothing: antialiased;
    line-height: 1.5;
    max-width: 960px;
    margin: 0 auto;
    padding: 20px 0;
}

/* Tab panes: hidden by default, shown when .active */
.cfdns-tab-pane { display: none; }
.cfdns-tab-pane.active { display: block; }

.cfdns-root * {
    box-sizing: border-box;
}

.cfdns-mono {
    font-family: var(--cfdns-mono);
    font-variant-numeric: tabular-nums;
}

/* ========== Cards ========== */
.cfdns-card {
    background: var(--cfdns-surface-card);
    border: 1px solid var(--cfdns-border-subtle);
    border-radius: var(--cfdns-radius-lg);
}

/* ========== Buttons ========== */
.cfdns-btn {
    font-family: var(--cfdns-font);
    font-weight: 500;
    font-size: 14px;
    border-radius: var(--cfdns-radius-md);
    cursor: pointer;
    border: 1px solid transparent;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    justify-content: center;
    transition: var(--cfdns-transition);
    padding: 10px 18px;
    line-height: 1;
    text-decoration: none;
}

.cfdns-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.cfdns-btn-pri {
    background: var(--cfdns-accent);
    color: #fff;
    border-color: var(--cfdns-accent);
}

.cfdns-btn-pri:hover {
    background: var(--cfdns-accent-hover);
    border-color: var(--cfdns-accent-hover);
    color: #fff;
    text-decoration: none;
}

.cfdns-btn-pri:active {
    background: var(--cfdns-accent-pressed);
    border-color: var(--cfdns-accent-pressed);
}

.cfdns-btn-sec {
    background: var(--cfdns-surface-raised);
    color: var(--cfdns-text-strong);
    border-color: var(--cfdns-border-default);
}

.cfdns-btn-sec:hover {
    border-color: var(--cfdns-border-strong);
    box-shadow: var(--cfdns-shadow-xs);
    text-decoration: none;
}

.cfdns-btn-ghost {
    background: transparent;
    color: var(--cfdns-text-body);
    border-color: transparent;
}

.cfdns-btn-ghost:hover {
    background: var(--cfdns-sand-100);
    text-decoration: none;
}

.cfdns-btn-danger {
    background: var(--cfdns-danger-50);
    color: var(--cfdns-danger-500);
    border-color: var(--cfdns-danger-500);
}

.cfdns-btn-danger:hover {
    background: var(--cfdns-danger-500);
    color: #fff;
}

.cfdns-btn-sm {
    padding: 9px 16px;
    font-size: 13px;
}

/* ========== Icon button ========== */
.cfdns-iconbtn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: var(--cfdns-radius-sm);
    border: 1px solid var(--cfdns-border-subtle);
    background: var(--cfdns-surface-raised);
    color: var(--cfdns-text-muted);
    cursor: pointer;
    transition: var(--cfdns-transition);
}

.cfdns-iconbtn:hover {
    color: var(--cfdns-text-strong);
    border-color: var(--cfdns-border-default);
    box-shadow: var(--cfdns-shadow-xs);
}

/* ========== Pill / badge ========== */
.cfdns-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 500;
    padding: 4px 11px;
    border-radius: var(--cfdns-radius-full);
    line-height: 1.4;
}

.cfdns-pill-green { background: var(--cfdns-success-50); color: var(--cfdns-success-500); }
.cfdns-pill-sky { background: var(--cfdns-sky-50); color: var(--cfdns-sky-500); }
.cfdns-pill-warn { background: var(--cfdns-warning-50); color: var(--cfdns-warning-500); }
.cfdns-pill-danger { background: var(--cfdns-danger-50); color: var(--cfdns-danger-500); }
.cfdns-pill-gray { background: var(--cfdns-sand-100); color: var(--cfdns-text-muted); }

/* ========== Inputs ========== */
.cfdns-inp {
    font-family: var(--cfdns-font);
    font-size: 14px;
    color: var(--cfdns-text-strong);
    background: var(--cfdns-surface-raised);
    border: 1px solid var(--cfdns-border-default);
    border-radius: var(--cfdns-radius-md);
    padding: 9px 12px;
    width: 100%;
    transition: var(--cfdns-transition);
}

.cfdns-inp:focus {
    outline: none;
    border-color: var(--cfdns-accent);
    box-shadow: var(--cfdns-shadow-focus);
}

/* ========== Table ========== */
.cfdns-table {
    width: 100%;
    border-collapse: collapse;
}

.cfdns-table th {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--cfdns-text-subtle);
    text-align: left;
    padding: 14px 14px 10px;
}

.cfdns-table td {
    padding: 13px 14px;
    border-top: 1px solid var(--cfdns-border-subtle);
    vertical-align: middle;
    font-size: 14px;
}

.cfdns-table tr:hover td {
    background: var(--cfdns-sand-50);
}

/* ========== Tabs (segmented control) ========== */
/* Con 8 pestañas el scroll horizontal (con flechitas del navegador) quedaba escondiendo
   pestañas y se sentía poco premium (feedback QA 2026-07-17). Pasan a envolver en una segunda
   fila cuando no entran todas — siempre visibles, sin interacción extra para descubrirlas. */
.cfdns-tabs {
    display: flex;
    flex-wrap: wrap;
    row-gap: 10px;
    column-gap: 22px;
    border-bottom: 1px solid var(--cfdns-border-subtle);
    margin-bottom: 22px;
}

.cfdns-tab {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 4px 14px;
    font-size: 14px;
    font-weight: 500;
    color: var(--cfdns-text-muted);
    border-bottom: 2px solid transparent;
    cursor: pointer;
    white-space: nowrap;
    transition: var(--cfdns-transition);
    background: none;
    border-top: none;
    border-left: none;
    border-right: none;
}

.cfdns-tab:hover {
    color: var(--cfdns-text-strong);
}

.cfdns-tab.active {
    font-weight: 600;
    color: var(--cfdns-text-strong);
    border-bottom-color: var(--cfdns-accent);
}

.cfdns-tab.active svg {
    color: var(--cfdns-accent);
}

.cfdns-tab-content {
    display: none;
}

.cfdns-tab-content.active {
    display: block;
}

/* ========== Type pill (DNS record type) ========== */
.cfdns-type {
    font-family: var(--cfdns-mono);
    font-size: 12px;
    font-weight: 600;
    padding: 3px 9px;
    border-radius: var(--cfdns-radius-sm);
    letter-spacing: 0.02em;
    display: inline-block;
}

.cfdns-type-a, .cfdns-type-aaaa { background: var(--cfdns-sky-50); color: var(--cfdns-sky-500); }
.cfdns-type-cname { background: var(--cfdns-ink-900); color: #F3F2EF; }
.cfdns-type-mx { background: var(--cfdns-success-50); color: var(--cfdns-success-500); }
.cfdns-type-txt { background: var(--cfdns-sand-100); color: var(--cfdns-text-muted); }
.cfdns-type-ns { background: var(--cfdns-warning-50); color: #C46A14; }

/* Campo bloqueado (p. ej. TTL automático cuando el registro está acelerado) */
.cfdns-locked {
    pointer-events: none;
    opacity: 0.6;
    background: var(--cfdns-surface-sunken);
}

/* Fila en edición en línea */
.cfdns-row-editing > td { background: var(--cfdns-surface-sunken); }

/* ========== Proxy control (toggle + cohete) ========== */
.cfdns-proxy-control {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.cfdns-proxy-rocket {
    display: inline-flex;
    align-items: center;
    line-height: 0;
}

/* ========== Info box ========== */
.cfdns-info {
    display: flex;
    gap: 13px;
    align-items: flex-start;
    padding: 14px 16px;
    border-radius: var(--cfdns-radius-md);
}

.cfdns-info-sky { background: var(--cfdns-sky-50); }
.cfdns-info-warn { background: var(--cfdns-warning-50); border: 1px solid #EAD9AC; }
.cfdns-info-success { background: var(--cfdns-success-50); }
.cfdns-info-danger { background: var(--cfdns-danger-50); }

.cfdns-card details > summary { list-style: none; }
.cfdns-card details > summary::-webkit-details-marker { display: none; }
.cfdns-card details > summary svg { transition: transform 0.15s ease; }
.cfdns-card details[open] > summary svg { transform: rotate(90deg); }

/* ========== Stepper ========== */
.cfdns-stepper {
    display: flex;
    align-items: center;
    gap: 0;
    margin-bottom: 26px;
    max-width: 620px;
}

.cfdns-step {
    display: flex;
    align-items: center;
    flex: 1;
}

.cfdns-step-dot {
    width: 28px;
    height: 28px;
    border-radius: 99px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
    flex: none;
}

.cfdns-step-dot-done {
    background: var(--cfdns-accent);
    color: #fff;
}

.cfdns-step-dot-current {
    background: var(--cfdns-ink-900);
    color: #fff;
}

.cfdns-step-dot-pending {
    background: var(--cfdns-sand-200);
    color: var(--cfdns-text-subtle);
}

.cfdns-step-connector {
    flex: 1;
    height: 2px;
    margin: 0 12px;
    border-radius: 2px;
}

.cfdns-step-connector-done {
    background: var(--cfdns-accent);
}

.cfdns-step-connector-pending {
    background: var(--cfdns-sand-200);
}

/* ========== Checklist ========== */
.cfdns-checklist {
    display: flex;
    flex-direction: column;
    gap: 1px;
    border: 1px solid var(--cfdns-border-subtle);
    border-radius: var(--cfdns-radius-md);
    overflow: hidden;
}

.cfdns-checklist-item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    background: var(--cfdns-surface-raised);
    border-top: 1px solid var(--cfdns-border-subtle);
}

.cfdns-checklist-item:first-child {
    border-top: none;
}

/* ========== Nameserver box ========== */
.cfdns-ns-box {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    border: 1.5px solid var(--cfdns-border-default);
    border-radius: var(--cfdns-radius-md);
    background: var(--cfdns-surface-sunken);
}

.cfdns-ns-label {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    color: var(--cfdns-text-subtle);
    width: 42px;
}

.cfdns-ns-host {
    flex: 1;
    font-family: var(--cfdns-mono);
    font-size: 16px;
    color: var(--cfdns-text-strong);
    font-weight: 500;
    word-break: break-all;
}

/* ========== Spinner ========== */
@keyframes cfdns-spin {
    to { transform: rotate(360deg); }
}

.cfdns-spinner {
    position: relative;
    width: 72px;
    height: 72px;
    margin: 0 auto 26px;
}

.cfdns-spinner-ring {
    position: absolute;
    inset: 0;
    border: 3px solid var(--cfdns-sand-200);
    border-top-color: var(--cfdns-accent);
    border-radius: 99px;
    animation: cfdns-spin 1.1s linear infinite;
}

.cfdns-spinner-inner {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ========== Rocket loader (carga de pestañas) ==========
 * Reemplaza el spinner genérico por el cohete de la marca (QA 2026-07-17, a pedido explícito
 * del dueño: "algo elegante y complejo"). Tres capas independientes:
 *  1. Anillo orbital tipo "cometa" (conic-gradient enmascarado en anillo, no un círculo sólido).
 *  2. El cohete real (mismo path que el resto del módulo) flotando con balanceo suave.
 *  3. Las 3 llamas parpadean escalonadas (delay distinto cada una) simulando empuje real.
 *  4. Partículas de escape que caen y se desvanecen debajo de la llama.
 */
.cfdns-rocket-loader {
    position: relative;
    width: 76px;
    height: 76px;
    margin: 0 auto 18px;
}

@keyframes cfdns-rocket-orbit-spin {
    to { transform: rotate(360deg); }
}

.cfdns-rocket-orbit {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: conic-gradient(from 0deg, transparent 0%, var(--cfdns-accent) 18%, transparent 42%);
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
    mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
    animation: cfdns-rocket-orbit-spin 1.35s linear infinite;
}

@keyframes cfdns-rocket-hover {
    0%, 100% { transform: translateY(0) rotate(-4deg); }
    50% { transform: translateY(-5px) rotate(4deg); }
}

.cfdns-rocket-body {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: cfdns-rocket-hover 1.7s ease-in-out infinite;
    transform-origin: center;
}

@keyframes cfdns-flame-flicker {
    0%, 100% { opacity: 1; transform: scaleY(1); }
    50% { opacity: 0.5; transform: scaleY(0.7); }
}

.cfdns-rocket-flame {
    transform-box: fill-box;
    transform-origin: center top;
    animation: cfdns-flame-flicker 0.55s ease-in-out infinite;
}

.cfdns-rocket-flame.cfdns-rf-1 { animation-delay: 0s; }
.cfdns-rocket-flame.cfdns-rf-2 { animation-delay: 0.12s; }
.cfdns-rocket-flame.cfdns-rf-3 { animation-delay: 0.24s; }

@keyframes cfdns-particle-fall {
    0% { opacity: 0; transform: translateY(0) scale(0.6); }
    30% { opacity: 0.85; }
    100% { opacity: 0; transform: translateY(26px) scale(1); }
}

.cfdns-rocket-particles span {
    position: absolute;
    left: 50%;
    bottom: 12px;
    width: 4px;
    height: 4px;
    margin-left: -2px;
    border-radius: 50%;
    background: var(--cfdns-accent);
    opacity: 0;
    animation: cfdns-particle-fall 1.1s ease-out infinite;
}

.cfdns-rocket-particles span:nth-child(1) { margin-left: -8px; animation-delay: 0s; }
.cfdns-rocket-particles span:nth-child(2) { margin-left: -2px; animation-delay: 0.35s; }
.cfdns-rocket-particles span:nth-child(3) { margin-left: 4px; animation-delay: 0.7s; }

/* ========== Toast ========== */
.cfdns-toast {
    position: fixed;
    bottom: 32px;
    left: 50%;
    transform: translateX(-50%) translateY(100px);
    z-index: 9999;
    background: var(--cfdns-ink-900);
    color: #F3F2EF;
    padding: 11px 20px;
    border-radius: var(--cfdns-radius-full);
    font-size: 13px;
    font-weight: 500;
    box-shadow: var(--cfdns-shadow-lg);
    display: flex;
    align-items: center;
    gap: 8px;
    opacity: 0;
    transition: transform 0.3s ease, opacity 0.3s ease;
    pointer-events: none;
}

.cfdns-toast.show {
    transform: translateX(-50%) translateY(0);
    opacity: 1;
}

/* ========== SSL cards (estilo radio, panel Cloudflare) ========== */
.cfdns-ssl-cards {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cfdns-ssl-card {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    width: 100%;
    text-align: left;
    padding: 14px 16px;
    border-radius: var(--cfdns-radius-md);
    cursor: pointer;
    border: 1.5px solid var(--cfdns-border-subtle);
    background: var(--cfdns-surface-raised);
    transition: var(--cfdns-transition);
}

.cfdns-ssl-card:hover { border-color: var(--cfdns-border-default); }

.cfdns-ssl-card.selected {
    border-color: var(--cfdns-accent);
    background: var(--cfdns-accent-tint);
}

.cfdns-ssl-radio {
    flex: none;
    width: 18px;
    height: 18px;
    margin-top: 1px;
    border-radius: 99px;
    border: 2px solid var(--cfdns-border-strong, #b9b3a6);
    background: var(--cfdns-surface-raised);
    transition: var(--cfdns-transition);
    position: relative;
}

.cfdns-ssl-card.selected .cfdns-ssl-radio {
    border-color: var(--cfdns-accent);
}

.cfdns-ssl-card.selected .cfdns-ssl-radio::after {
    content: "";
    position: absolute;
    inset: 3px;
    border-radius: 99px;
    background: var(--cfdns-accent);
}

/* ========== Nivel de seguridad (tarjetas amigables) ========== */
.cfdns-level-card {
    flex: 1;
    min-width: 150px;
    text-align: left;
    padding: 12px 14px;
    border-radius: var(--cfdns-radius-md);
    cursor: pointer;
    border: 1.5px solid var(--cfdns-border-subtle);
    background: var(--cfdns-surface-raised);
    transition: var(--cfdns-transition);
}

.cfdns-level-card:hover { border-color: var(--cfdns-border-default); }

.cfdns-level-card.selected {
    border-color: var(--cfdns-accent);
    background: var(--cfdns-accent-tint);
}

/* ========== Tarjeta en estado de alerta (modo Bajo ataque activo) ========== */
.cfdns-card-alert {
    border-color: var(--cfdns-danger-500) !important;
    background: var(--cfdns-danger-50);
}

/* ========== Toggle switch ========== */
.cfdns-toggle {
    width: 46px;
    height: 26px;
    border-radius: 99px;
    padding: 3px;
    cursor: pointer;
    transition: var(--cfdns-transition);
    background: var(--cfdns-sand-300);
    display: flex;
    align-items: center;
    border: none;
}

.cfdns-toggle.on {
    background: var(--cfdns-accent);
    justify-content: flex-end;
}

.cfdns-ua-toggle.on {
    background: var(--cfdns-danger-500);
}

.cfdns-toggle-knob {
    width: 20px;
    height: 20px;
    border-radius: 99px;
    background: #fff;
    box-shadow: var(--cfdns-shadow-sm);
}

/* ========== Activation card (hero) ========== */
.cfdns-hero-gradient {
    background: linear-gradient(180deg, var(--cfdns-sky-50), var(--cfdns-surface-raised));
    padding: 38px 38px 8px;
}

.cfdns-hero-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    border-radius: var(--cfdns-radius-md);
    background: var(--cfdns-ink-900);
    margin-bottom: 20px;
}

.cfdns-benefit-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 30px;
}

.cfdns-benefit {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 14px;
    border: 1px solid var(--cfdns-border-subtle);
    border-radius: var(--cfdns-radius-md);
}

/* ========== Tools grid ========== */
.cfdns-tools-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
}

/* ========== Stats grid (admin) ========== */
.cfdns-stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 30px;
}

.cfdns-stat-card {
    padding: 16px 18px;
}

.cfdns-stat-value {
    font-family: var(--cfdns-mono);
    font-size: 30px;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--cfdns-text-strong);
}

.cfdns-stat-value.danger { color: var(--cfdns-danger-500); }
.cfdns-stat-value.warn { color: #C46A14; }

.cfdns-stat-label {
    font-size: 12px;
    color: var(--cfdns-text-muted);
    margin-top: 4px;
    line-height: 1.3;
}

/* ========== Dropdown menu ========== */
.cfdns-dropdown {
    position: relative;
    display: inline-block;
}

.cfdns-dropdown-menu {
    display: none;
    position: absolute;
    right: 0;
    top: 100%;
    z-index: 40;
    width: 208px;
    background: var(--cfdns-surface-raised);
    border: 1px solid var(--cfdns-border-subtle);
    border-radius: var(--cfdns-radius-md);
    box-shadow: var(--cfdns-shadow-lg);
    padding: 6px;
    text-align: left;
}

.cfdns-dropdown.open .cfdns-dropdown-menu {
    display: block;
}

.cfdns-dropdown-item {
    display: block;
    width: 100%;
    padding: 8px 11px;
    border-radius: var(--cfdns-radius-sm);
    font-size: 13px;
    color: var(--cfdns-text-body);
    cursor: pointer;
    border: none;
    background: none;
    text-align: left;
    transition: var(--cfdns-transition);
}

.cfdns-dropdown-item:hover {
    background: var(--cfdns-sand-50);
    color: var(--cfdns-text-strong);
}

.cfdns-dropdown-item.danger {
    color: var(--cfdns-danger-500);
}

.cfdns-dropdown-item.danger:hover {
    background: var(--cfdns-danger-50);
}

.cfdns-dropdown-divider {
    height: 1px;
    background: var(--cfdns-border-subtle);
    margin: 5px 0;
}

/* ========== Modal ========== */
.cfdns-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(22,23,28,.45);
    z-index: 9000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.cfdns-modal-overlay.show {
    display: flex;
}

.cfdns-modal {
    width: 440px;
    max-width: 100%;
    padding: 26px;
    box-shadow: var(--cfdns-shadow-lg);
}

/* ========== Admin header strip ========== */
.cfdns-admin-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    padding: 14px 18px;
    margin-bottom: 24px;
    background: var(--cfdns-surface-raised);
    border: 1px solid var(--cfdns-border-subtle);
    border-radius: var(--cfdns-radius-md);
}

/* ========== Drawer (admin audit) ========== */
.cfdns-drawer-overlay {
    position: fixed;
    inset: 0;
    background: rgba(22,23,28,.45);
    z-index: 9000;
    display: none;
    justify-content: flex-end;
}

.cfdns-drawer-overlay.show {
    display: flex;
}

.cfdns-drawer {
    width: 560px;
    max-width: 100%;
    height: 100%;
    background: var(--cfdns-surface-page, #fff);
    box-shadow: var(--cfdns-shadow-lg);
    overflow-y: auto;
    animation: cfdns-drawer-in .18s ease;
}

@keyframes cfdns-drawer-in {
    from { transform: translateX(24px); opacity: .6; }
    to { transform: none; opacity: 1; }
}

.cfdns-drawer-head {
    position: sticky;
    top: 0;
    background: var(--cfdns-surface-page, #fff);
    padding: 20px 24px;
    border-bottom: 1px solid var(--cfdns-border-subtle);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.cfdns-drawer-body {
    padding: 12px 24px 32px;
}

.cfdns-audit-item {
    padding: 14px 0;
    border-bottom: 1px solid var(--cfdns-border-subtle);
}

/* ========== Alert overrides ========== */
.cfdns-alert {
    padding: 12px 16px;
    border-radius: var(--cfdns-radius-md);
    font-size: 14px;
    margin-bottom: 16px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.cfdns-alert-success {
    background: var(--cfdns-success-50);
    color: var(--cfdns-success-500);
}

.cfdns-alert-error {
    background: var(--cfdns-danger-50);
    color: var(--cfdns-danger-500);
}

/* ========== Responsive ========== */
@media (max-width: 900px) {
    .cfdns-benefit-grid {
        grid-template-columns: 1fr;
    }
    .cfdns-tools-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .cfdns-hero-gradient {
        padding: 24px 20px 8px;
    }
    .cfdns-ns-host {
        font-size: 14px;
    }
}

/* Formulario "Nuevo registro" y panel de edición en línea de la tabla DNS (gap real de QA
   2026-07-17: nunca tuvieron tratamiento responsive — un campo como la IP quedaba cortado en
   pantallas chicas). Bajo 640px cada campo pasa a ocupar todo el ancho disponible en vez de
   competir por espacio en una fila apretada. */
@media (max-width: 640px) {
    .cfdns-form-row {
        flex-direction: column;
        align-items: stretch !important;
    }
    .cfdns-form-field {
        width: 100% !important;
        min-width: 0 !important;
        flex: 1 1 auto !important;
    }
}

/* Resalte breve al abrir "Agregar registro" (QA 2026-07-17: el formulario vive al final de la
   tabla y con muchos registros el cliente no notaba que había aparecido). */
@keyframes cfdns-flash-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(255, 113, 58, 0); }
    30% { box-shadow: 0 0 0 4px rgba(255, 113, 58, 0.35); }
}
.cfdns-flash {
    animation: cfdns-flash-pulse 0.9s ease-out;
}
