:root {
    --cnc-intake-accent: #0b766e;
    --cnc-intake-accent-dark: #075a55;
    --cnc-intake-text: #10203a;
    --cnc-intake-muted: #53627a;
    --cnc-intake-border: #d6dee8;
    --cnc-intake-background: #f6f9fc;
    --cnc-intake-card: #ffffff;
    --cnc-intake-error: #b3261e;
    --cnc-intake-focus: #1d4ed8;
}

.cnc-intake-app,
.cnc-intake-app * {
    box-sizing: border-box;
}

.cnc-intake-app {
    width: 100%;
    min-height: 620px;
    margin: 0;
    color: var(--cnc-intake-text);
    background: var(--cnc-intake-background);
    font-family:
        system-ui,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        sans-serif;
}

.cnc-intake-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    min-height: 68px;
    padding: 14px 34px;
    border-bottom: 1px solid var(--cnc-intake-border);
    background: #fff;
}

.cnc-intake-brand {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1.05rem;
    font-weight: 700;
}

.cnc-shield {
    color: var(--cnc-intake-accent);
    font-size: 1.4rem;
}

.cnc-security-badge {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 13px;
    border: 1px solid #89d8c4;
    border-radius: 999px;
    background: #edfff8;
    color: #075f4c;
    font-size: 0.82rem;
    font-weight: 600;
}

.cnc-preview-notice {
    max-width: 1180px;
    margin: 18px auto 0;
    padding: 11px 16px;
    border: 1px solid #c9d6e6;
    border-radius: 8px;
    background: #fff;
    color: #38465a;
    font-size: 0.88rem;
}

.cnc-intake-layout {
    display: grid;
    grid-template-columns: minmax(230px, 270px) minmax(0, 1fr);
    gap: 32px;
    width: min(1180px, calc(100% - 40px));
    margin: 30px auto;
}

.cnc-step-nav {
    padding-top: 3px;
}

.cnc-step-counter {
    margin: 0 0 16px;
    color: #365177;
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.14em;
}

.cnc-step-nav ol {
    display: grid;
    gap: 5px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.cnc-step-button {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-height: 43px;
    padding: 8px 12px;
    border: 1px solid transparent;
    border-radius: 8px;
    background: transparent;
    color: #4b5f7d;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.cnc-step-button:hover {
    background: #eef5f6;
}

.cnc-step-button.is-current {
    background: var(--cnc-intake-accent);
    color: #fff;
    font-weight: 700;
}

.cnc-step-button.is-complete:not(.is-current) {
    color: var(--cnc-intake-accent-dark);
}

.cnc-step-number {
    display: inline-grid;
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    place-items: center;
    border: 1px solid currentColor;
    border-radius: 50%;
    font-size: 0.76rem;
}

.cnc-intake-main {
    width: 100%;
}

.cnc-intake-step {
    width: 100%;
    max-width: 760px;
    margin: 0 auto;
    padding: 34px 36px 26px;
    border: 1px solid var(--cnc-intake-border);
    border-radius: 14px;
    background: var(--cnc-intake-card);
    box-shadow: 0 2px 5px rgba(16, 32, 58, 0.08);
}

.cnc-intake-step[hidden] {
    display: none !important;
}

.cnc-intake-step h2 {
    margin: 0 0 26px;
    color: #08152e;
    font-size: clamp(1.65rem, 3vw, 2rem);
    line-height: 1.15;
}

.cnc-intake-step h3 {
    color: #12213b;
}

.cnc-fields-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 19px 16px;
}

.cnc-field {
    min-width: 0;
}

.cnc-field--full {
    grid-column: 1 / -1;
}

.cnc-field label,
.cnc-choice-group legend {
    display: block;
    margin: 0 0 8px;
    color: #15233e;
    font-size: 0.89rem;
    font-weight: 650;
}

.cnc-required {
    margin-left: 5px;
    color: var(--cnc-intake-error);
}

.cnc-field input[type="text"],
.cnc-field input[type="email"],
.cnc-field input[type="date"],
.cnc-field input[type="number"],
.cnc-field input[type="file"],
.cnc-field textarea {
    display: block;
    width: 100%;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid #ccd6e2;
    border-radius: 8px;
    background: #fff;
    color: #12213b;
    font: inherit;
}

.cnc-field textarea {
    min-height: 105px;
    resize: vertical;
}

.cnc-field:focus-within label,
.cnc-choice-group:focus-within legend {
    color: var(--cnc-intake-accent-dark);
}

.cnc-field input:focus,
.cnc-field textarea:focus,
.cnc-step-button:focus,
.cnc-body-map-canvas:focus,
.cnc-intake-app button:focus-visible {
    outline: 3px solid var(--cnc-intake-focus);
    outline-offset: 3px;
}

.cnc-field input:focus,
.cnc-field textarea:focus {
    border-color: var(--cnc-intake-focus);
}

.cnc-choice-group {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.cnc-choice-list {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 18px;
}

.cnc-choice,
.cnc-check-option {
    display: inline-flex !important;
    align-items: flex-start;
    gap: 8px;
    margin: 0 !important;
    font-weight: 500 !important;
    cursor: pointer;
}

.cnc-choice input,
.cnc-check-option input {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 2px 0 0;
}

.cnc-field-help,
.cnc-body-map-help {
    margin: 8px 0 0;
    color: var(--cnc-intake-muted);
    font-size: 0.82rem;
    line-height: 1.45;
}

.cnc-form-navigation {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-top: 30px;
    padding-top: 22px;
    border-top: 1px solid var(--cnc-intake-border);
}

.cnc-form-navigation button,
.cnc-body-map-controls button,
.cnc-secondary-button {
    min-height: 44px;
    padding: 9px 14px;
    border-radius: 8px;
    font: inherit;
    font-weight: 650;
    cursor: pointer;
}

.cnc-back-button {
    border: 1px solid transparent;
    background: transparent;
    color: #59667a;
}

.cnc-back-button:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.cnc-continue-button,
.cnc-primary-button {
    border: 1px solid var(--cnc-intake-accent);
    background: var(--cnc-intake-accent);
    color: #fff;
}

.cnc-continue-button:hover,
.cnc-primary-button:hover {
    background: var(--cnc-intake-accent-dark);
}

.cnc-secondary-button,
.cnc-body-map-controls button:not(.cnc-primary-button) {
    border: 1px solid #9aaabd;
    background: #fff;
    color: #26354d;
}

.cnc-body-map-area {
    margin-top: 30px;
}

.cnc-body-map-block {
    margin: 24px 0 0;
    padding: 20px;
    border: 1px solid var(--cnc-intake-border);
    border-radius: 11px;
    background: #fbfdff;
}

.cnc-body-map-block[hidden] {
    display: none !important;
}

.cnc-body-map-block h3 {
    margin: 0 0 8px;
}

.cnc-body-map-canvas {
    display: block;
    width: 100%;
    max-width: 700px;
    height: auto;
    margin: 16px auto;
    border: 2px solid #697a92;
    border-radius: 9px;
    background: #fff;
    cursor: crosshair;
    touch-action: none;
}

.cnc-body-map-canvas.is-saved {
    border-color: var(--cnc-intake-accent);
}

.cnc-body-map-controls {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

.cnc-body-map-status {
    margin: 12px 0 0;
    color: #34465e;
    text-align: center;
    font-size: 0.88rem;
    font-weight: 650;
}

.cnc-add-complaint-wrap {
    margin-top: 18px;
}

.cnc-final-preview-message {
    margin-top: 28px;
    padding: 17px;
    border-left: 4px solid var(--cnc-intake-accent);
    border-radius: 6px;
    background: #f1fbf8;
}

.cnc-final-preview-message h3 {
    margin-top: 0;
}

.cnc-screen-reader-text {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

@media (max-width: 900px) {
    .cnc-intake-layout {
        grid-template-columns: 1fr;
    }

    .cnc-step-nav ol {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .cnc-step-counter {
        text-align: center;
    }
}

@media (max-width: 640px) {
    .cnc-intake-header {
        align-items: flex-start;
        flex-direction: column;
        padding: 15px 18px;
    }

    .cnc-preview-notice {
        margin-left: 16px;
        margin-right: 16px;
    }

    .cnc-intake-layout {
        width: calc(100% - 24px);
        gap: 20px;
        margin-top: 20px;
    }

    .cnc-step-nav ol {
        grid-template-columns: 1fr;
    }

    .cnc-intake-step {
        padding: 25px 18px 20px;
    }

    .cnc-fields-grid {
        grid-template-columns: 1fr;
    }

    .cnc-field--full {
        grid-column: auto;
    }

    .cnc-form-navigation {
        align-items: stretch;
        flex-direction: column-reverse;
    }

    .cnc-form-navigation button {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cnc-intake-app *,
    .cnc-intake-app *::before,
    .cnc-intake-app *::after {
        scroll-behavior: auto !important;
        transition: none !important;
        animation: none !important;
    }
}

/* ==========================================================
   CNC Patient Intake v0.2.0
   ========================================================== */

/*
 * Intake-only full width mode.
 * These selectors apply only when the shortcode is present.
 */
.cnc-intake-page #secondary,
.cnc-intake-page .widget-area,
.cnc-intake-page aside.sidebar,
.cnc-intake-page .sidebar-area,
.cnc-intake-page .site-sidebar {
    display: none !important;
}

.cnc-intake-page #primary,
.cnc-intake-page .content-area,
.cnc-intake-page .site-content > main,
.cnc-intake-page .site-main {
    width: 100% !important;
    max-width: none !important;
    float: none !important;
}

/* Stop themes from re-introducing ordered-list numbering. */
.cnc-step-nav ol,
.cnc-step-nav li {
    list-style: none !important;
}

.cnc-step-nav li::marker {
    content: "" !important;
}

.cnc-intake-layout {
    grid-template-columns:
        minmax(240px, 270px)
        minmax(0, 1fr);
    width: min(1260px, calc(100% - 40px));
}

.cnc-intake-step {
    max-width: 900px;
}

.cnc-intake-welcome {
    width: min(920px, calc(100% - 32px));
    margin: 36px auto;
}

.cnc-welcome-card {
    padding: clamp(28px, 5vw, 52px);
    border: 1px solid var(--cnc-intake-border);
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 3px 12px rgba(16, 32, 58, 0.08);
}

.cnc-welcome-kicker {
    margin: 0 0 8px;
    color: var(--cnc-intake-accent-dark);
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.14em;
}

.cnc-welcome-card h2 {
    margin: 0 0 22px;
    font-size: clamp(1.8rem, 4vw, 2.6rem);
    line-height: 1.15;
}

.cnc-welcome-card h3 {
    margin-top: 24px;
}

.cnc-welcome-card li {
    margin-bottom: 7px;
}

.cnc-welcome-important {
    margin: 22px 0;
    padding: 18px 20px;
    border-left: 4px solid var(--cnc-intake-accent);
    border-radius: 8px;
    background: #f0fbf8;
}

.cnc-welcome-important h3 {
    margin: 0 0 8px;
}

.cnc-preview-warning {
    margin-top: 26px;
    padding: 12px 14px;
    border: 1px solid #d8c989;
    border-radius: 7px;
    background: #fffbea;
}

.cnc-start-button {
    min-height: 48px;
    margin-top: 20px;
    padding: 11px 22px;
    border: 1px solid var(--cnc-intake-accent);
    border-radius: 8px;
    background: var(--cnc-intake-accent);
    color: #fff;
    font: inherit;
    font-weight: 750;
    cursor: pointer;
}

.cnc-disclosures-intro {
    margin-bottom: 24px;
    padding: 18px;
    border: 1px solid #b9d7d2;
    border-radius: 9px;
    background: #f2fbf9;
}

.cnc-disclosures-intro h3 {
    margin-top: 0;
}

.cnc-disclosure-list {
    display: grid;
    gap: 18px;
}

.cnc-disclosure-card {
    padding: 20px;
    border: 1px solid var(--cnc-intake-border);
    border-radius: 11px;
    background: #fff;
}

.cnc-disclosure-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 16px;
}

.cnc-disclosure-card-head h3 {
    margin: 0;
}

.cnc-disclosure-source {
    margin: 6px 0 0;
    color: var(--cnc-intake-muted);
    font-size: 0.78rem;
}

.cnc-disclosure-status {
    flex: 0 0 auto;
    padding: 5px 9px;
    border: 1px solid #c5ced9;
    border-radius: 999px;
    color: #58677a;
    background: #f7f9fb;
    font-size: 0.75rem;
    font-weight: 750;
}

.cnc-disclosure-card.is-reviewed
.cnc-disclosure-status {
    border-color: #89d8c4;
    color: #075f4c;
    background: #edfff8;
}

.cnc-read-disclosure {
    min-height: 44px;
    padding: 9px 14px;
    border: 1px solid #8799ad;
    border-radius: 8px;
    background: #fff;
    color: #16263e;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.cnc-disclosure-agreement {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-top: 18px;
    padding: 14px;
    border: 1px solid #cfd8e3;
    border-radius: 8px;
    background: #fbfcfe;
    font-weight: 650;
}

.cnc-disclosure-agreement input {
    width: 19px;
    height: 19px;
    margin-top: 1px;
}

.cnc-disclosure-agreement.is-disabled {
    opacity: 0.58;
}

.cnc-authorization-decision {
    display: grid;
    gap: 10px;
    margin: 18px 0 0;
    padding: 16px;
    border: 1px solid #d3dce7;
    border-radius: 8px;
}

.cnc-authorization-decision label {
    display: flex;
    align-items: flex-start;
    gap: 9px;
}

.cnc-communication-details {
    margin-top: 18px;
}

.cnc-signature-fieldset {
    margin: 18px 0 0;
    padding: 18px;
    border: 1px solid #ccd7e4;
    border-radius: 9px;
}

.cnc-signature-fieldset:disabled {
    opacity: 0.55;
}

.cnc-signature-fieldset legend {
    padding: 0 7px;
    font-weight: 750;
}

.cnc-signature-draw {
    margin-top: 18px;
}

.cnc-signature-draw > p {
    margin-bottom: 8px;
    font-weight: 650;
}

.cnc-signature-draw > p span {
    color: var(--cnc-intake-muted);
    font-size: 0.82rem;
    font-weight: 500;
}

.cnc-signature-pad {
    display: block;
    width: 100%;
    height: 165px;
    border: 2px solid #8797aa;
    border-radius: 8px;
    background: #fff;
    cursor: crosshair;
    touch-action: none;
}

.cnc-signature-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 10px;
}

.cnc-signature-controls button {
    min-height: 42px;
    padding: 8px 13px;
    border: 1px solid #99a8b9;
    border-radius: 7px;
    background: #fff;
    font: inherit;
    font-weight: 650;
    cursor: pointer;
}

.cnc-signature-controls .cnc-primary-button {
    border-color: var(--cnc-intake-accent);
    background: var(--cnc-intake-accent);
    color: #fff;
}

.cnc-signature-status {
    margin: 10px 0 0;
    color: var(--cnc-intake-muted);
    font-size: 0.82rem;
}

.cnc-field select {
    display: block;
    width: 100%;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid #ccd6e2;
    border-radius: 8px;
    background: #fff;
    color: #12213b;
    font: inherit;
}

.cnc-disclosure-dialog {
    width: min(800px, calc(100% - 30px));
    max-height: min(84vh, 900px);
    padding: 0;
    border: 0;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 18px 70px rgba(0, 0, 0, 0.32);
}

.cnc-disclosure-dialog::backdrop {
    background: rgba(8, 18, 39, 0.68);
}

.cnc-dialog-head {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    padding: 20px 22px;
    border-bottom: 1px solid #d6dee8;
    background: #fff;
}

.cnc-dialog-head h2 {
    margin: 0;
    font-size: 1.35rem;
}

.cnc-dialog-close {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    border: 1px solid #9cabbc;
    border-radius: 8px;
    background: #fff;
    font-size: 1.45rem;
    cursor: pointer;
}

.cnc-dialog-document {
    max-height: 58vh;
    overflow-y: auto;
    padding: 24px;
    color: #17253a;
    line-height: 1.65;
}

.cnc-dialog-document h3 {
    margin: 28px 0 8px;
    font-size: 1rem;
}

.cnc-dialog-document h3:first-child {
    margin-top: 0;
}

.cnc-dialog-actions {
    position: sticky;
    bottom: 0;
    padding: 16px 22px;
    border-top: 1px solid #d6dee8;
    background: #fff;
    text-align: right;
}

.cnc-dialog-actions button {
    min-height: 46px;
    padding: 9px 16px;
    border-radius: 8px;
    font: inherit;
    font-weight: 750;
    cursor: pointer;
}

@media (max-width: 900px) {
    .cnc-intake-layout {
        grid-template-columns: 1fr;
    }

    .cnc-disclosure-card-head {
        flex-direction: column;
    }
}


/*
 * ================================================================
 * CNC Required Field Indicator
 * Version 0.2.1
 * ================================================================
 *
 * Visual replacement for the traditional red asterisk.
 *
 * Accessibility:
 * - HTML required semantics remain intact.
 * - The visual indicator is aria-hidden by JavaScript.
 * - Screen-reader-only "Required" text is added to the label/legend.
 * - Reduced-motion preference disables the animated glow.
 */

.cnc-intake-app .cnc-required {
    display: inline-block;
    box-sizing: border-box;

    width: 8px;
    height: 8px;

    margin-left: 8px;

    border: 0;
    border-radius: 50%;

    background: #c62828;

    color: transparent !important;

    font-size: 0 !important;
    line-height: 0;

    vertical-align: middle;

    box-shadow:
        0 0 0 3px rgba(198, 40, 40, 0.20),
        0 0 10px 4px rgba(198, 40, 40, 0.20);

    animation:
        cnc-required-indicator-glow
        2.4s
        ease-in-out
        infinite;
}

/*
 * Dynamically-required fields use a pseudo-element.
 * This replaces any older " *" pseudo-content.
 */
.cnc-intake-app
.cnc-conditionally-required h3::after,

.cnc-intake-app
.cnc-conditionally-required label:first-child::after,

.cnc-intake-app
.cnc-conditionally-required legend:first-child::after {
    content: "";

    display: inline-block;
    box-sizing: border-box;

    width: 8px;
    height: 8px;

    margin-left: 8px;

    border: 0;
    border-radius: 50%;

    background: #c62828;

    vertical-align: middle;

    box-shadow:
        0 0 0 3px rgba(198, 40, 40, 0.20),
        0 0 10px 4px rgba(198, 40, 40, 0.20);

    animation:
        cnc-required-indicator-glow
        2.4s
        ease-in-out
        infinite;
}

@keyframes cnc-required-indicator-glow {
    0%,
    100% {
        box-shadow:
            0 0 0 2px rgba(198, 40, 40, 0.30),
            0 0 7px 2px rgba(198, 40, 40, 0.24);
    }

    50% {
        box-shadow:
            0 0 0 7px rgba(198, 40, 40, 0),
            0 0 14px 7px rgba(198, 40, 40, 0);
    }
}

/*
 * Do not require animation to understand which fields are required.
 */
@media (prefers-reduced-motion: reduce) {
    .cnc-intake-app .cnc-required,

    .cnc-intake-app
    .cnc-conditionally-required h3::after,

    .cnc-intake-app
    .cnc-conditionally-required label:first-child::after,

    .cnc-intake-app
    .cnc-conditionally-required legend:first-child::after {
        animation: none !important;

        box-shadow:
            0 0 0 3px rgba(198, 40, 40, 0.20),
            0 0 8px 3px rgba(198, 40, 40, 0.18);
    }
}


/* ================================================================
   CNC Technology POC v0.2.12 Active-Step Glow
   Adapted for CNC Patient Intake 0.3.7
   ================================================================ */

@property --cnc-intake-step-glow-angle {
    syntax: "<angle>";
    initial-value: 0deg;
    inherits: false;
}

@keyframes cnc-intake-step-glow-spin {
    to {
        --cnc-intake-step-glow-angle: 360deg;
    }
}

.cnc-step-button.is-current,
.cnc-step-button[aria-current="step"] {
    --cnc-intake-step-glow-angle: 0deg;

    position: relative;
    isolation: isolate;
    z-index: 0;

    overflow: visible;
    box-sizing: border-box;

    border: 4px solid transparent;

    background:
        linear-gradient(
            var(--cnc-intake-accent),
            var(--cnc-intake-accent)
        ) padding-box,

        conic-gradient(
            from var(--cnc-intake-step-glow-angle),
            #72d9ea 0deg,
            #e5fcff 42deg,
            #45a7ff 95deg,
            #5b73ff 145deg,
            #49dbb1 205deg,
            #38e1d3 255deg,
            #73eaff 315deg,
            #72d9ea 360deg
        ) border-box;

    color: #fff;
    font-weight: 700;

    box-shadow:
        0 16px 38px rgba(5, 7, 53, 0.10),
        0 0 18px rgba(114, 217, 234, 0.28);

    animation:
        cnc-intake-step-glow-spin
        8s
        linear
        infinite;
}

.cnc-step-button.is-current::before,
.cnc-step-button[aria-current="step"]::before {
    content: "";

    position: absolute;
    inset: -6px;

    z-index: -1;

    border-radius: inherit;

    pointer-events: none;

    background:
        conic-gradient(
            from var(--cnc-intake-step-glow-angle),
            rgba(114, 217, 234, 0.82) 0deg,
            rgba(229, 252, 255, 0.92) 42deg,
            rgba(69, 167, 255, 0.84) 95deg,
            rgba(91, 115, 255, 0.75) 145deg,
            rgba(73, 219, 177, 0.82) 205deg,
            rgba(56, 225, 211, 0.88) 255deg,
            rgba(115, 234, 255, 0.84) 315deg,
            rgba(114, 217, 234, 0.82) 360deg
        );

    filter: blur(16px);
    opacity: 0.56;
}

.cnc-step-button.is-current:focus-visible,
.cnc-step-button[aria-current="step"]:focus-visible {
    outline: 4px solid var(--cnc-intake-focus);
    outline-offset: 7px;
}


/* ================================================================
   Communication authorization duration
   ================================================================ */

.cnc-authorization-duration {
    margin: 5px 0 0;
    padding: 16px;

    border: 1px solid var(--cnc-intake-border);
    border-radius: 10px;

    background: #fbfdff;
}

.cnc-authorization-duration > legend {
    padding: 0 5px;

    color: #15233e;
    font-size: 0.92rem;
    font-weight: 700;
}

.cnc-duration-choice-list {
    align-items: flex-start;
    flex-direction: column;

    margin-top: 13px;
}

.cnc-authorization-duration-detail {
    width: 100%;
    max-width: 460px;

    margin-top: 16px;
}

.cnc-authorization-duration-detail[hidden] {
    display: none !important;
}

.cnc-required-dot {
    display: inline-block;

    margin-left: 5px;

    color: var(--cnc-intake-error);

    font-size: 0.72em;
    line-height: 1;

    vertical-align: middle;
}

.cnc-duration-status[aria-invalid="true"] {
    color: var(--cnc-intake-error);
}


/* ================================================================
   Signature reuse
   ================================================================ */

.cnc-signature-controls {
    flex-wrap: wrap;
}

.cnc-use-previous-signature[hidden] {
    display: none !important;
}


/* ================================================================
   Reduced motion
   ================================================================ */

@media (prefers-reduced-motion: reduce) {
    .cnc-step-button.is-current,
    .cnc-step-button[aria-current="step"] {
        animation: none !important;
    }

    .cnc-step-button.is-current::before,
    .cnc-step-button[aria-current="step"]::before {
        filter: none;
        opacity: 0.28;
    }
}

/* ================================================================
   CNC Patient Intake 0.3.7 Rounded Step Buttons
   ================================================================ */


/*
 * Every sidebar step now receives the same button/card footprint.
 */

.cnc-step-button {
    width: 100%;
    min-height: 52px;

    display: flex;
    align-items: center;

    box-sizing: border-box;

    padding: 12px 14px;

    border-radius: 18px;

    text-align: left;

    transition:
        background-color 180ms ease,
        border-color 180ms ease,
        box-shadow 180ms ease,
        transform 180ms ease;
}


/*
 * Inactive buttons.
 *
 * Current steps are intentionally excluded so the existing
 * animated POC background and border remain untouched.
 */

.cnc-step-button:not(.is-current):not([aria-current="step"]) {
    background: rgba(255, 255, 255, 0.84);

    border: 1px solid rgba(37, 122, 137, 0.22);

    box-shadow:
        0 3px 10px rgba(15, 23, 42, 0.055);
}


/*
 * Inactive hover.
 */

.cnc-step-button:not(.is-current):not([aria-current="step"]):hover {
    background: rgba(255, 255, 255, 0.98);

    border-color: rgba(37, 122, 137, 0.38);

    box-shadow:
        0 6px 16px rgba(15, 23, 42, 0.085);

    transform: translateY(-1px);
}


/*
 * Current step remains rounded while retaining the existing
 * 0.3.7 POC rotating border/halo.
 */

.cnc-step-button.is-current,
.cnc-step-button[aria-current="step"] {
    border-radius: 18px;
    overflow: visible;
}


/*
 * Keep the numbered circle from shrinking if a label wraps.
 */

.cnc-step-button > :first-child {
    flex: 0 0 auto;
}


/*
 * Strong keyboard focus for inactive buttons.
 *
 * Current-step focus continues to use the stronger 0.3.7 rule.
 */

.cnc-step-button:not(.is-current):not([aria-current="step"]):focus-visible {
    outline: 3px solid var(--cnc-intake-focus);
    outline-offset: 3px;
}


/*
 * Reduced-motion support.
 */

@media (prefers-reduced-motion: reduce) {

    .cnc-step-button {
        transition: none;
    }

    .cnc-step-button:not(.is-current):not([aria-current="step"]):hover {
        transform: none;
    }
}

/*
 * ================================================================
 * CNC Intake 0.3.9
 * Sticky desktop step navigation + PHI expiration selector
 * ================================================================
 */

.cnc-intake-app .cnc-privacy-expiration-group {
    margin-top: 4px;
}

.cnc-intake-app .cnc-privacy-expiration-options {
    display: grid;
    gap: 10px;
    margin-top: 12px;
}

.cnc-intake-app .cnc-privacy-expiration-options .cnc-choice {
    width: 100%;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid #ccd6e2;
    border-radius: 8px;
    background: #fff;
}

.cnc-intake-app .cnc-privacy-expiration-options .cnc-choice:focus-within {
    outline: 3px solid var(--cnc-intake-focus);
    outline-offset: 3px;
}

.cnc-intake-app .cnc-privacy-expiration-detail {
    margin-top: 16px;
}

.cnc-intake-app .cnc-privacy-expiration-detail[hidden] {
    display: none !important;
}

/*
 * Keep the intake step navigator visible while the form column
 * scrolls. Scoped to the CNC intake application only.
 */
@media (min-width: 901px) {
    .cnc-intake-app .cnc-step-nav {
        position: sticky;
        top: 24px;
        align-self: start;
        max-height: calc(100vh - 48px);
        overflow-y: auto;
        overscroll-behavior: contain;
        scrollbar-gutter: stable;
    }
}

/*
 * The existing intake layout becomes a single column at 900px.
 * Disable sticky behavior there so the navigation remains part of
 * the normal document flow on tablets/phones.
 */
@media (max-width: 900px) {
    .cnc-intake-app .cnc-step-nav {
        position: static;
        top: auto;
        max-height: none;
        overflow: visible;
    }
}

/*
 * ================================================================
 * CNC Intake 0.3.9 RC2 fixed Steps
 * ================================================================
 *
 * The JavaScript viewport positioning is intentional. Some
 * WordPress/theme ancestor containers prevent CSS sticky from
 * functioning reliably.
 */

@media (min-width: 901px) {

    /*
     * Neutralize the RC1 sticky rule. JavaScript supplies fixed
     * positioning only while the intake region is being viewed.
     */
    .cnc-intake-app .cnc-step-nav {
        position: static;
        top: auto;
        align-self: start;
        max-height: none;
        overflow: visible;
    }

    /*
     * Keep the form in grid column two when the navigation is taken
     * out of document flow by fixed positioning.
     */
    .cnc-intake-app
    .cnc-intake-layout
    > .cnc-step-nav
    + * {
        grid-column: 2;
        min-width: 0;
    }

    .cnc-intake-app
    .cnc-step-nav[data-cnc-step-pinned="true"] {
        box-sizing: border-box;
        overflow-y: auto;
        overscroll-behavior: contain;
        scrollbar-gutter: stable;
    }
}

@media (max-width: 900px) {

    .cnc-intake-app
    .cnc-intake-layout
    > .cnc-step-nav
    + * {
        grid-column: auto;
    }

    .cnc-intake-app .cnc-step-nav {
        position: static !important;
        top: auto !important;
        left: auto !important;
        width: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }
}

/*
 * ================================================================
 * CNC Intake 0.3.9 RC4 - Scroll-free Steps navigation
 * ================================================================
 *
 * Do not create a nested horizontal or vertical scroll region.
 * JavaScript disables fixed-follow mode when the complete navigator
 * cannot fit in the current viewport.
 */

@media (min-width: 901px) {

    .cnc-intake-app
    .cnc-step-nav[data-cnc-step-pinned="true"] {
        max-height: none !important;
        overflow: visible !important;
        overflow-x: visible !important;
        overflow-y: visible !important;
        overscroll-behavior: auto;
        scrollbar-gutter: auto;
    }
}

/*
 * ================================================================
 * CNC Intake 0.3.9.6 RC6 - Completion screen
 * ================================================================
 */

.cnc-intake-completion {
    box-sizing: border-box;
    width: min(100%, 780px);
    margin: 2rem auto;
    padding: clamp(1.25rem, 3vw, 2.25rem);
    border: 2px solid currentColor;
    border-radius: 18px;
}

.cnc-intake-completion h2 {
    margin-top: 0;
}

.cnc-intake-completion h2:focus {
    outline: 3px solid currentColor;
    outline-offset: 5px;
}

.cnc-completion-reference {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem;
    margin: 1.25rem 0 0.75rem;
    padding: 1rem;
    border: 2px solid currentColor;
    border-radius: 12px;
}

.cnc-completion-reference code {
    font: inherit;
    font-weight: 700;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.cnc-copy-reference {
    margin-bottom: 0.25rem;
}

.cnc-completion-copy-status {
    min-height: 1.5em;
    margin-top: 0.25rem;
}

.cnc-completion-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

.cnc-completion-actions button {
    max-width: 100%;
    white-space: normal;
}

@media (max-width: 600px) {

    .cnc-intake-completion {
        margin: 1rem auto;
    }

    .cnc-completion-actions button {
        width: 100%;
    }
}
