:root {
    --navy: #1f2f73;
    --navy-2: #263a87;
    --blue: #2f7fc8;
    --blue-soft: #eaf4ff;
    --purple: #6044a8;
    --ink: #19233d;
    --muted: #68738d;
    --line: #dfe6f2;
    --bg: #f6f8fc;
    --white: #ffffff;
    --success: #168a5b;
    --shadow: 0 18px 55px rgba(31, 47, 115, .12);
    --radius-xl: 28px;
    --radius-lg: 22px;
    --radius-md: 16px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--ink);
    background: var(--bg);
    line-height: 1.5;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
button, input { font: inherit; }

.container { width: min(1180px, calc(100% - 32px)); margin: 0 auto; }

.site-header {
    position: sticky;
    top: 0;
    z-index: 30;
    background: rgba(255,255,255,.93);
    backdrop-filter: blur(16px);
    border-bottom: 1px solid rgba(223,230,242,.9);
}
.header-inner { min-height: 82px; display: flex; align-items: center; gap: 18px; }
.brand img { object-fit: contain; }
.brand-nimbus img { width: 150px; max-height: 52px; }
.brand-dominiomega img { width: 188px; max-height: 48px; }
.header-separator { width: 1px; height: 34px; background: var(--line); }
.header-cta {
    margin-left: auto;
    text-decoration: none;
    background: var(--navy);
    color: var(--white);
    padding: 12px 18px;
    border-radius: 999px;
    font-weight: 800;
    font-size: 14px;
}

.hero {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 15% 10%, rgba(47,127,200,.18), transparent 34%),
        radial-gradient(circle at 90% 20%, rgba(96,68,168,.14), transparent 30%),
        linear-gradient(180deg, #fff 0%, #f6f8fc 100%);
    padding: 86px 0 70px;
}
.hero::before {
    content: "";
    position: absolute;
    width: 520px;
    height: 520px;
    border-radius: 50%;
    border: 90px solid rgba(47,127,200,.05);
    right: -260px;
    bottom: -300px;
}
.hero-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: 58px; align-items: center; }
.eyebrow {
    display: inline-block;
    font-size: 12px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--blue);
    font-weight: 900;
}
.hero h1 {
    margin: 12px 0 18px;
    font-size: clamp(44px, 6vw, 74px);
    line-height: .98;
    letter-spacing: -.045em;
    color: var(--navy);
    max-width: 820px;
}
.hero-lead { font-size: 20px; color: var(--muted); max-width: 780px; margin: 0 0 26px; }
.promo-banner {
    display: flex;
    gap: 14px;
    align-items: center;
    padding: 16px 18px;
    border: 1px solid #bee2d4;
    background: #effbf6;
    border-radius: 16px;
    width: fit-content;
    max-width: 100%;
}
.promo-icon { font-size: 28px; }
.promo-banner strong, .promo-banner span { display: block; }
.promo-banner strong { color: #126746; font-size: 16px; }
.promo-banner span { color: #4e6f63; font-size: 14px; }
.hero-actions { display: flex; gap: 12px; margin-top: 28px; flex-wrap: wrap; }
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 0 22px;
    border-radius: 13px;
    font-weight: 900;
    text-decoration: none;
    border: 0;
    cursor: pointer;
    transition: .2s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: linear-gradient(135deg, var(--navy), var(--navy-2)); color: var(--white); box-shadow: 0 12px 26px rgba(31,47,115,.22); }
.btn-secondary { background: var(--white); color: var(--navy); border: 1px solid var(--line); }
.btn-full { width: 100%; }

.hero-card {
    position: relative;
    background: rgba(255,255,255,.88);
    border: 1px solid rgba(223,230,242,.8);
    border-radius: var(--radius-xl);
    padding: 30px;
    box-shadow: var(--shadow);
    overflow: hidden;
}
.hero-card-glow {
    position: absolute;
    width: 180px;
    height: 180px;
    border-radius: 50%;
    background: rgba(47,127,200,.12);
    right: -70px;
    top: -80px;
    filter: blur(2px);
}
.mini-label { font-size: 12px; font-weight: 900; color: var(--purple); text-transform: uppercase; letter-spacing: .1em; }
.hero-card h2 { margin: 8px 0 22px; font-size: 29px; color: var(--navy); }
.steps-mini { margin: 0; padding: 0; list-style: none; display: grid; gap: 14px; }
.steps-mini li { display: flex; align-items: center; gap: 12px; font-weight: 750; }
.steps-mini span { width: 32px; height: 32px; display: inline-grid; place-items: center; border-radius: 10px; background: var(--blue-soft); color: var(--navy); font-weight: 900; }
.hero-card-note { margin: 22px 0 0; color: var(--muted); font-size: 14px; }

.trust-strip { background: var(--white); border-block: 1px solid var(--line); }
.trust-grid { display: grid; grid-template-columns: repeat(4,1fr); }
.trust-grid > div { padding: 20px 18px; display: grid; gap: 4px; border-right: 1px solid var(--line); }
.trust-grid > div:last-child { border-right: 0; }
.trust-grid strong { color: var(--navy); }
.trust-grid span { color: var(--muted); font-size: 13px; }

.config-section { padding: 78px 0 90px; }
.section-heading { max-width: 760px; margin-bottom: 34px; }
.section-heading h2 { margin: 8px 0 10px; font-size: clamp(34px, 4vw, 50px); letter-spacing: -.03em; color: var(--navy); }
.section-heading p { margin: 0; color: var(--muted); font-size: 17px; }
.section-heading.compact { margin-bottom: 24px; }

.config-layout { display: grid; grid-template-columns: minmax(0,1fr) 350px; gap: 24px; align-items: start; }
.config-main { display: grid; gap: 22px; }
.form-card, .cart-card, .success-panel {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    box-shadow: 0 10px 34px rgba(31,47,115,.06);
}
.form-card { padding: 26px; }
.card-title-row { display: flex; gap: 14px; align-items: flex-start; margin-bottom: 22px; }
.card-title-row h3 { margin: 1px 0 3px; font-size: 22px; color: var(--navy); }
.card-title-row p { margin: 0; color: var(--muted); font-size: 14px; }
.step-badge { flex: 0 0 34px; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 11px; background: var(--navy); color: var(--white); font-weight: 900; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.field { display: grid; gap: 8px; }
.field span { font-weight: 800; font-size: 14px; }
.field input { width: 100%; height: 52px; border: 1px solid var(--line); border-radius: 13px; padding: 0 15px; outline: none; transition: .2s; background: #fbfcff; }
.field input:focus { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(47,127,200,.1); background: var(--white); }

.solution-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
.addon-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; }
.product-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100%;
    padding: 20px;
    border: 1.5px solid var(--line);
    border-radius: 18px;
    background: #fcfdff;
    cursor: pointer;
    transition: .2s ease;
    overflow: hidden;
}
.product-card:hover { border-color: #aebcdb; transform: translateY(-2px); box-shadow: 0 10px 30px rgba(31,47,115,.08); }
.product-card input { position: absolute; opacity: 0; pointer-events: none; }
.product-card.selected { border-color: var(--blue); background: linear-gradient(180deg,#f7fbff 0%, #fff 100%); box-shadow: 0 0 0 3px rgba(47,127,200,.1); }
.selection-dot, .selection-check { position: absolute; right: 16px; top: 16px; width: 26px; height: 26px; border-radius: 50%; border: 2px solid #cdd6e8; background: var(--white); }
.product-card.selected .selection-dot { border: 7px solid var(--blue); }
.selection-check { display: grid; place-items: center; font-size: 13px; color: transparent; border-radius: 8px; font-weight: 900; }
.product-card.selected .selection-check { background: var(--blue); border-color: var(--blue); color: var(--white); }
.product-icon { font-size: 29px; margin-bottom: 12px; }
.product-type { text-transform: uppercase; letter-spacing: .08em; font-size: 10px; font-weight: 900; color: var(--blue); }
.product-card h4 { margin: 5px 0 2px; color: var(--navy); font-size: 22px; }
.product-card .tagline { color: var(--ink); font-size: 13px; }
.product-card p { color: var(--muted); font-size: 13px; margin: 9px 0 18px; }
.price-block { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--line); display: grid; gap: 8px; }
.price-block > div { display: flex; justify-content: space-between; gap: 14px; align-items: baseline; }
.price-block span { color: var(--muted); font-size: 11px; }
.price-block strong { color: var(--navy); font-size: 13px; text-align: right; }
.addon-coming-soon { cursor: default; opacity: .78; }
.addon-coming-soon:hover { transform: none; box-shadow: none; border-color: var(--line); }
.coming-soon-pill { margin-top: auto; display: inline-flex; width: fit-content; padding: 8px 10px; border-radius: 999px; background: #f1edf9; color: var(--purple); font-size: 12px; font-weight: 900; }

.cart-card { position: relative; }
.cart-sticky { position: sticky; top: 105px; padding: 24px; }
.cart-header h3 { margin: 4px 0 0; font-size: 28px; color: var(--navy); }
.cart-empty { text-align: center; color: var(--muted); padding: 38px 10px 28px; }
.cart-empty-icon { font-size: 38px; margin-bottom: 6px; }
.cart-items { display: grid; gap: 12px; margin-top: 18px; }
.cart-item { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; }
.cart-item-name { font-weight: 800; font-size: 14px; color: var(--ink); }
.cart-item small { display: block; color: var(--muted); margin-top: 2px; }
.cart-item-price { font-size: 13px; font-weight: 900; color: var(--navy); white-space: nowrap; }
.cart-divider { height: 1px; background: var(--line); margin: 18px 0; }
.total-line { display: flex; justify-content: space-between; gap: 12px; align-items: flex-end; }
.total-line span { color: var(--muted); font-size: 13px; }
.total-line strong { color: var(--navy); font-size: 26px; letter-spacing: -.03em; text-align: right; }
.one-time-note { margin: 4px 0 16px; text-align: right; color: var(--muted); font-size: 11px; }
.free-month-box { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: #effbf6; border: 1px solid #bee2d4; border-radius: 14px; padding: 12px 13px; margin-bottom: 14px; }
.free-month-box span, .free-month-box strong { display: block; }
.free-month-box > div span { font-size: 11px; color: #527065; }
.free-month-box > div strong { color: #126746; }
.free-pill { padding: 5px 8px; border-radius: 999px; background: #1c8d61; color: white; font-size: 10px; font-weight: 900; letter-spacing: .08em; }
.monthly-line { border-top: 1px dashed var(--line); padding-top: 14px; }
.monthly-line strong { font-size: 18px; }
.cart-disclaimer { color: var(--muted); font-size: 11px; margin: 14px 0 16px; line-height: 1.45; }

.alert { padding: 14px 16px; border-radius: 14px; margin-bottom: 20px; font-weight: 700; }
.alert-error { background: #fff0f0; border: 1px solid #f3c0c0; color: #9d3434; }

.success-panel { padding: 34px; display: grid; grid-template-columns: 56px 1fr; gap: 20px; align-items: start; }
.success-icon { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; background: #e9f8f1; color: var(--success); font-size: 28px; font-weight: 900; }
.success-copy h2 { margin: 6px 0 5px; color: var(--navy); font-size: 34px; }
.success-copy p { color: var(--muted); }
.success-totals { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; margin: 22px 0; }
.success-totals > div { background: var(--bg); border: 1px solid var(--line); border-radius: 14px; padding: 14px; }
.success-totals span, .success-totals strong { display: block; }
.success-totals span { color: var(--muted); font-size: 12px; }
.success-totals strong { color: var(--navy); margin-top: 3px; }

.faq-section { padding: 72px 0; background: var(--white); border-top: 1px solid var(--line); }
.faq-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 16px; }
.faq-grid article { border: 1px solid var(--line); background: #fbfcff; border-radius: 18px; padding: 20px; }
.faq-grid h3 { margin: 0 0 7px; color: var(--navy); font-size: 17px; }
.faq-grid p { margin: 0; color: var(--muted); font-size: 14px; }

.site-footer { background: #162252; color: var(--white); padding: 28px 0; }
.footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.footer-brand { display: flex; align-items: center; gap: 14px; color: #cfd7ef; font-size: 12px; }
.footer-brand img { width: 110px; filter: brightness(0) invert(1); opacity: .95; }
.footer-copy { color: #abb7da; font-size: 12px; }

@media (max-width: 1020px) {
    .hero-grid { grid-template-columns: 1fr; }
    .hero-card { max-width: 680px; }
    .config-layout { grid-template-columns: 1fr; }
    .cart-sticky { position: static; }
    .addon-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 760px) {
    .container { width: min(100% - 22px, 1180px); }
    .site-header { position: static; }
    .header-inner { min-height: 72px; gap: 10px; }
    .brand-nimbus img { width: 105px; }
    .brand-dominiomega img { width: 120px; }
    .header-separator { height: 28px; }
    .header-cta { display: none; }
    .hero { padding: 54px 0 46px; }
    .hero h1 { font-size: 45px; }
    .hero-lead { font-size: 17px; }
    .trust-grid { grid-template-columns: repeat(2,1fr); }
    .trust-grid > div { border-bottom: 1px solid var(--line); }
    .trust-grid > div:nth-child(2) { border-right: 0; }
    .field-grid, .solution-grid, .addon-grid, .faq-grid, .success-totals { grid-template-columns: 1fr; }
    .form-card { padding: 19px; }
    .product-card { padding: 18px; }
    .config-section { padding: 54px 0 64px; }
    .success-panel { grid-template-columns: 1fr; padding: 24px; }
    .footer-inner { flex-direction: column; align-items: flex-start; }
}

/* v1.1 - Datos fiscales, estado e IVA */
.field select {
    width: 100%;
    height: 52px;
    border: 1px solid var(--line);
    border-radius: 13px;
    padding: 0 42px 0 15px;
    outline: none;
    transition: .2s;
    background-color: #fbfcff;
    color: var(--navy);
    font: inherit;
    appearance: none;
    background-image: linear-gradient(45deg, transparent 50%, #7c86a9 50%), linear-gradient(135deg, #7c86a9 50%, transparent 50%);
    background-position: calc(100% - 19px) 22px, calc(100% - 14px) 22px;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
}
.field select:focus {
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(47,127,200,.1);
    background-color: var(--white);
}
.invoice-field {
    border: 0;
    padding: 0;
    margin: 0;
    min-width: 0;
}
.invoice-field legend {
    font-weight: 800;
    font-size: 14px;
    margin-bottom: 8px;
}
.invoice-options {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.invoice-option {
    position: relative;
    cursor: pointer;
}
.invoice-option input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.invoice-option span {
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--line);
    border-radius: 13px;
    background: #fbfcff;
    color: var(--navy);
    font-weight: 800;
    transition: .2s;
}
.invoice-option input:checked + span {
    border-color: var(--blue);
    background: rgba(47,127,200,.08);
    box-shadow: 0 0 0 3px rgba(47,127,200,.09);
}
.invoice-option input:focus-visible + span {
    outline: 3px solid rgba(47,127,200,.2);
    outline-offset: 2px;
}
.tax-breakdown {
    display: grid;
    gap: 8px;
    padding: 10px 0 12px;
}
.tax-breakdown > div {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
}
.tax-breakdown span {
    color: var(--muted);
    font-size: 12px;
}
.tax-breakdown strong {
    color: var(--navy);
    font-size: 14px;
    text-align: right;
}
.monthly-breakdown {
    padding-top: 2px;
}
.cart-item-price small {
    display: block;
    margin-top: 2px;
    color: var(--muted);
    font-size: 9px;
    font-weight: 800;
}
.success-meta {
    margin-top: -4px;
    color: var(--muted);
    font-size: 13px;
}
.success-totals {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}
@media (max-width: 980px) {
    .success-totals { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 640px) {
    .success-totals { grid-template-columns: 1fr; }
}
