/* P26M — ROI Calculator: wizard shell, progress bar, step navigation.
 * Page-scoped: enqueued only on page-roi-calculator template.
 */

.roi-calc {
    position: relative;
    padding-block: var(--section-pad-y);
    min-height: 100vh;
    isolation: isolate;
}

.roi-calc::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 70% 40% at 50% 0%,
            rgba(115, 196, 75, 0.08) 0%, transparent 60%),
        radial-gradient(ellipse 50% 50% at 80% 80%,
            rgba(59, 91, 255, 0.06) 0%, transparent 50%);
    z-index: -1;
    pointer-events: none;
}

.roi-calc__head {
    text-align: center;
    max-width: 720px;
    margin-inline: auto;
    margin-bottom: var(--space-8);
}

.roi-calc__head .section__title {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: var(--fs-4xl);
    line-height: 1.1;
    letter-spacing: -0.03em;
    color: var(--color-text);
    text-wrap: balance;
    margin-bottom: var(--space-4);
}

.roi-calc__head .section__lead {
    font-size: var(--fs-lg);
    color: var(--color-text-secondary);
    max-width: 60ch;
    margin-inline: auto;
    line-height: var(--lh-relaxed);
}

/* ── Progress bar ──────────────────────────────────────────────────────────── */
.roi-calc__progress {
    display: flex;
    align-items: center;
    gap: 0;
    max-width: 640px;
    margin-inline: auto;
    margin-bottom: var(--space-8);
    padding: 0 var(--space-4);
}

.roi-calc__step-dot {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    flex: 1;
}

.roi-calc__step-dot:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 18px;
    left: calc(50% + 18px);
    right: calc(-50% + 18px);
    height: 2px;
    background: var(--color-border);
    transition: background var(--dur-slow) var(--ease-out);
}

.roi-calc__step-dot[data-step-complete]::after {
    background: var(--color-brand);
}

.roi-calc__step-num {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 2px solid var(--color-border);
    background: var(--color-elevated);
    display: grid;
    place-items: center;
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    font-weight: 600;
    color: var(--color-text-tertiary);
    transition:
        border-color var(--dur-base) var(--ease-out),
        background var(--dur-base) var(--ease-out),
        color var(--dur-base) var(--ease-out);
    position: relative;
    z-index: 1;
}

.roi-calc__step-dot[aria-current="step"] .roi-calc__step-num {
    border-color: var(--color-brand);
    background: rgba(115, 196, 75, 0.12);
    color: var(--color-brand);
}

.roi-calc__step-dot[data-step-complete] .roi-calc__step-num {
    border-color: var(--color-brand);
    background: var(--color-brand);
    color: var(--color-text-inverse);
}

.roi-calc__step-label {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--color-text-tertiary);
    text-align: center;
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    transition: color var(--dur-base) var(--ease-out);
    display: none;
}

@media (min-width: 640px) {
    .roi-calc__step-label { display: block; }
}

.roi-calc__step-dot[aria-current="step"] .roi-calc__step-label {
    color: var(--color-brand);
}

.roi-calc__step-dot[data-step-complete] .roi-calc__step-label {
    color: var(--color-text-secondary);
}

/* ── Wizard frame ──────────────────────────────────────────────────────────── */
.roi-calc__wizard {
    max-width: 1320px;
    margin-inline: auto;
}

@media (min-width: 1024px) {
    .roi-calc__wizard {
        display: grid;
        grid-template-columns: 1fr 360px;
        gap: var(--space-7);
        align-items: start;
    }
}

.roi-calc__panel {
    background: var(--color-elevated);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-2xl);
    padding: var(--space-6);
    box-shadow: var(--shadow-lift);
}

@media (min-width: 640px) {
    .roi-calc__panel { padding: var(--space-7); }
}

/* ── Steps (all in DOM; JS controls visibility) ───────────────────────────── */
.roi-calc__step { display: none; }
.roi-calc__step[data-active] { display: block; }

.roi-calc__step-heading {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: var(--fs-2xl);
    letter-spacing: -0.02em;
    color: var(--color-text);
    margin-bottom: var(--space-2);
}

/* JS programmatically focuses the heading on step change for screen readers.
 * The heading uses tabindex="-1", so keyboard Tab never lands here — only programmatic
 * focus. Suppress the focus ring entirely. */
.roi-calc__step-heading:focus,
.roi-calc__step-heading:focus-visible {
    outline: none;
}

.roi-calc__step-sub {
    font-size: var(--fs-base);
    color: var(--color-text-secondary);
    margin-bottom: var(--space-6);
    line-height: var(--lh-relaxed);
}

/* ── Nav buttons row ───────────────────────────────────────────────────────── */
.roi-calc__nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: var(--space-7);
    gap: var(--space-4);
}

.roi-calc__nav .btn:first-child:last-child {
    margin-inline-start: auto;
}

/* ── Live summary aside ────────────────────────────────────────────────────── */
.roi-calc__aside {
    display: none;
}

@media (min-width: 1024px) {
    .roi-calc__aside {
        display: block;
        position: sticky;
        top: calc(var(--header-height) + var(--space-5));
    }
}

.roi-calc__aside-card {
    background: var(--color-elevated);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xl);
    padding: var(--space-5);
    box-shadow: var(--shadow-soft);
}

.roi-calc__aside-title {
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--color-text-tertiary);
    text-transform: uppercase;
    letter-spacing: var(--tracking-wider);
    margin-bottom: var(--space-4);
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.roi-calc__aside-title .p26m-icon {
    width: 14px; height: 14px;
    color: var(--color-brand);
}

/* ── Validation region ────────────────────────────────────────────────────── */
.roi-calc__validation {
    max-width: 1320px;
    margin-inline: auto;
    margin-top: var(--space-3);
}

.roi-calc__validation:empty {
    display: none;
}

.roi-calc__validation:not(:empty) {
    margin-bottom: var(--space-4);
}

.roi-calc__error-msg {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--color-danger);
    padding: var(--space-3) var(--space-4);
    background: rgba(239, 68, 68, 0.08);
    border: 1px solid rgba(239, 68, 68, 0.25);
    border-radius: var(--radius-sm);
}

.roi-calc__success-msg {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-family: var(--font-mono);
    font-size: var(--fs-xs);
    color: var(--color-brand);
    padding: var(--space-3) var(--space-4);
    background: rgba(115, 196, 75, 0.08);
    border: 1px solid rgba(115, 196, 75, 0.25);
    border-radius: var(--radius-sm);
}

.roi-calc__loading {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    color: var(--color-text-secondary);
    font-size: var(--fs-sm);
}

.roi-calc__spinner {
    width: 16px; height: 16px;
    border: 2px solid var(--color-border-strong);
    border-top-color: var(--color-brand);
    border-radius: 50%;
    animation: roi-spin 0.6s linear infinite;
}

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

/* Light mode: the aside sticky card is white-on-near-white — add a more present
   border + shadow so it reads as a distinct elevated panel, not a merged region. */
.surface--light .roi-calc__aside-card {
    border-color: var(--color-border-strong);
    box-shadow: 0 2px 6px rgba(16, 24, 40, 0.06), 0 12px 32px rgba(16, 24, 40, 0.09);
}

@media (prefers-reduced-motion: reduce) {
    .roi-calc__spinner { animation-duration: 0.01ms; }
    .roi-calc__step-dot::after { transition: none; }
    .roi-calc__step-num { transition: none; }
}
