/* Franchise Scale Readiness Assessment — derived from the franchiseflow.io brand (app.css). */

@font-face {
    font-family: "Montserrat";
    font-style: normal;
    font-weight: 500 800;
    font-display: swap;
    src: url("/assets/fonts/montserrat-latin.woff2") format("woff2");
}

@font-face {
    font-family: "Roboto";
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url("/assets/fonts/roboto-latin.woff2") format("woff2");
}

:root {
    --ff-orange: #f26322;
    --ff-orange-dark: #d84b13;
    --ff-orange-text: #b94312;
    --ff-amber: #f7b733;
    --ff-ink: #181818;
    --ff-navy: #171717;
    --ff-muted: #5f5f5f;
    --ff-line: #e7e1dc;
    --ff-surface: #fff8f2;
    --ff-surface-2: #fff3ea;
    --ff-white: #fff;
    --ff-good: #2f7d4f;
    --ff-radius: 20px;
    --ff-radius-sm: 12px;
    --ff-shadow: 0 18px 50px rgba(68, 34, 12, .10);
}

body.fsa {
    margin: 0;
    color: var(--ff-ink);
    background: var(--ff-white);
    font-family: "Roboto", Arial, sans-serif;
    font-size: 16px;
    line-height: 1.65;
    overflow-x: hidden;
}

.fsa h1, .fsa h2, .fsa h3, .fsa .btn {
    font-family: "Montserrat", Arial, sans-serif;
}

.fsa a { color: var(--ff-orange-text); }
.fsa a:hover { color: var(--ff-orange-dark); }

.fsa :focus-visible {
    outline: 3px solid rgba(242, 99, 34, .55);
    outline-offset: 2px;
}

.fsa-skip {
    position: absolute;
    left: 12px;
    top: -60px;
    z-index: 10;
    padding: .5rem 1rem;
    background: var(--ff-navy);
    color: #fff !important;
    border-radius: 8px;
}
.fsa-skip:focus { top: 12px; }

#main:focus { outline: none; }

/* Buttons — match the site: gradient primary, 10px radius. */
.fsa .btn {
    border-radius: 10px;
    font-weight: 700;
    transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.fsa .btn-primary {
    color: #fff;
    background: linear-gradient(110deg, var(--ff-orange), #f47d22);
    border-color: var(--ff-orange);
    box-shadow: 0 10px 28px rgba(242, 99, 34, .22);
}
.fsa .btn-primary:hover, .fsa .btn-primary:focus-visible {
    background: var(--ff-orange-dark);
    border-color: var(--ff-orange-dark);
    color: #fff;
    transform: translateY(-1px);
}
.fsa .btn-primary:disabled { opacity: .6; transform: none; }
.fsa .btn-outline-dark { border-width: 2px; }
.fsa .btn-lg { padding: .85rem 1.5rem; font-size: 1rem; }
.fsa-link-button {
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    text-decoration: underline;
    font: inherit;
}

/* Header and footer */
.fsa-header {
    border-bottom: 1px solid var(--ff-line);
    background: rgba(255, 255, 255, .96);
}
.fsa-header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 68px;
}
.fsa-brand img { display: block; width: auto; height: 34px; }
.fsa-header-tag {
    color: var(--ff-muted);
    font-family: "Montserrat", Arial, sans-serif;
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .02em;
}
.fsa-footer {
    margin-top: 4rem;
    padding: 1.5rem 0;
    border-top: 1px solid var(--ff-line);
    color: var(--ff-muted);
    font-size: .85rem;
}
.fsa-footer-links { display: flex; flex-wrap: wrap; gap: .4rem 1rem; }
.fsa-footer a { color: var(--ff-muted); }

/* Typography helpers */
.fsa-eyebrow {
    margin: 0 0 .5rem;
    color: var(--ff-orange-text);
    font-family: "Montserrat", Arial, sans-serif;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.fsa-h2 {
    margin-bottom: 1rem;
    color: var(--ff-navy);
    font-size: clamp(1.5rem, 3.4vw, 2.1rem);
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.15;
}
.fsa-muted { color: var(--ff-muted); font-size: .92rem; }
.fsa-fineprint { margin-top: 2rem; color: var(--ff-muted); font-size: .85rem; }
.fsa-section { padding: 3rem 0; }
.fsa-narrow .container { max-width: 680px; }

/* Landing */
.fsa-hero {
    padding: clamp(2.5rem, 7vw, 5rem) 0 clamp(2.5rem, 6vw, 4rem);
    background:
        radial-gradient(circle at 85% 10%, rgba(247, 183, 51, .18), transparent 40%),
        linear-gradient(180deg, var(--ff-surface) 0%, #fff 100%);
}
.fsa-hero-grid {
    display: grid;
    gap: 2.5rem;
    align-items: center;
}
@media (min-width: 992px) {
    .fsa-hero-grid { grid-template-columns: 1.15fr .85fr; gap: 4rem; }
}
.fsa-hero h1 {
    margin: 0 0 1rem;
    color: var(--ff-navy);
    font-size: clamp(2.1rem, 6vw, 3.6rem);
    font-weight: 800;
    letter-spacing: -.035em;
    line-height: 1.05;
}
.fsa-hero h1 em { color: var(--ff-orange); font-style: normal; }
.fsa-lead { margin-bottom: .75rem; font-size: clamp(1.08rem, 2.2vw, 1.25rem); color: #2b2b2b; }
.fsa-support { color: var(--ff-muted); max-width: 36rem; }
.fsa-hero-actions { margin: 1.75rem 0 1.25rem; }
.fsa-cta { min-width: 15rem; }
@media (max-width: 575px) { .fsa-cta { width: 100%; } }
.fsa-facts {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
    color: #3a3a3a;
    font-size: .92rem;
}
.fsa-facts li { display: inline-flex; align-items: center; gap: .45rem; }
.fsa-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--ff-orange); }

.fsa-preview-card {
    padding: 1.75rem;
    border: 1px solid var(--ff-line);
    border-radius: var(--ff-radius);
    background: #fff;
    box-shadow: var(--ff-shadow);
}
.fsa-preview-label { margin: 0; color: var(--ff-muted); font-size: .85rem; }
.fsa-preview-score { margin: 0 0 1rem; font-family: "Montserrat", Arial, sans-serif; font-size: 1.1rem; color: var(--ff-muted); }
.fsa-preview-score span { color: var(--ff-orange); font-size: 2.6rem; font-weight: 800; }
.fsa-preview-bars { margin: 0; padding: 0; list-style: none; }
.fsa-preview-bars li { display: grid; gap: .3rem; margin-bottom: .7rem; font-size: .85rem; }
.fsa-preview-note { margin: .5rem 0 0; color: var(--ff-muted); font-size: .8rem; }

.fsa-bar {
    display: block;
    height: 8px;
    border-radius: 99px;
    background: #f1ece8;
    overflow: hidden;
}
.fsa-bar > span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--ff-orange), var(--ff-amber));
    transition: width .9s cubic-bezier(.2, .7, .2, 1);
}
.fsa-bar > span.is-low { background: linear-gradient(90deg, #e2572b, #f08a4b); }
.fsa-bar-lg { height: 10px; }

.fsa-cards { display: grid; gap: 1rem; }
@media (min-width: 768px) { .fsa-cards { grid-template-columns: repeat(3, 1fr); } }
.fsa-card {
    padding: 1.5rem;
    border: 1px solid var(--ff-line);
    border-radius: var(--ff-radius);
    background: var(--ff-surface);
}
.fsa-card h3 { font-size: 1.05rem; font-weight: 700; }
.fsa-card p { margin: 0; color: var(--ff-muted); }

/* Assessment app */
.fsa-app { padding: 1.5rem 0 3rem; min-height: 70vh; }
.fsa-app-container { max-width: 720px; }
.fsa-progress { margin-bottom: 1.75rem; }
.fsa-progress-meta {
    display: flex;
    justify-content: space-between;
    margin-bottom: .45rem;
    color: var(--ff-muted);
    font-size: .85rem;
}
.fsa-progress-track { height: 6px; border-radius: 99px; background: #f1ece8; overflow: hidden; }
.fsa-progress-track span {
    display: block;
    width: 0;
    height: 100%;
    background: var(--ff-orange);
    transition: width .35s ease;
}

.fsa-stage { min-height: 320px; }
.fsa-step { animation: fsa-in .28s ease both; }
@keyframes fsa-in {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
    .fsa-step, .fsa-bar > span, .fsa-progress-track span { animation: none; transition: none; }
}
.fsa-question {
    margin: 0 0 .5rem;
    color: var(--ff-navy);
    font-size: clamp(1.3rem, 3.6vw, 1.7rem);
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.25;
}
.fsa-hint { margin-bottom: 1.25rem; color: var(--ff-muted); }
.fsa-options {
    display: grid;
    gap: .65rem;
    margin: 1.25rem 0 0;
    padding: 0;
    border: 0;
}
.fsa-options.is-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 576px) { .fsa-options.is-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.fsa-option {
    display: flex;
    align-items: center;
    gap: .75rem;
    width: 100%;
    min-height: 56px;
    padding: .85rem 1.1rem;
    border: 1.5px solid var(--ff-line);
    border-radius: var(--ff-radius-sm);
    background: #fff;
    color: var(--ff-ink);
    font-size: 1rem;
    line-height: 1.35;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.fsa-option:hover { border-color: #f4a77e; background: var(--ff-surface); }
.fsa-option[aria-pressed="true"], .fsa-option[aria-checked="true"] {
    border-color: var(--ff-orange);
    background: var(--ff-surface-2);
    box-shadow: 0 0 0 1px var(--ff-orange) inset;
}
.fsa-option-mark {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    border: 2px solid #cfc6bf;
    border-radius: 50%;
    position: relative;
}
.fsa-option.is-multi .fsa-option-mark { border-radius: 6px; }
.fsa-option[aria-pressed="true"] .fsa-option-mark,
.fsa-option[aria-checked="true"] .fsa-option-mark {
    border-color: var(--ff-orange);
    background: var(--ff-orange);
    box-shadow: inset 0 0 0 3px #fff;
}
.fsa-options.is-grid .fsa-option { justify-content: center; text-align: center; font-weight: 600; }
.fsa-options.is-grid .fsa-option-mark { display: none; }
.fsa-options.is-grid.is-multi .fsa-option { justify-content: flex-start; text-align: left; font-weight: 400; }
.fsa-options.is-grid.is-multi .fsa-option-mark { display: block; }

.fsa-other { margin-top: 1rem; }

.fsa-label { display: block; margin: 1.1rem 0 .35rem; font-weight: 600; font-family: "Montserrat", Arial, sans-serif; font-size: .92rem; }
.fsa-input {
    min-height: 52px;
    border: 1.5px solid var(--ff-line);
    border-radius: var(--ff-radius-sm);
    font-size: 1rem;
}
.fsa-input:focus { border-color: var(--ff-orange); box-shadow: 0 0 0 3px rgba(242, 99, 34, .18); }
.fsa-input[aria-invalid="true"] { border-color: #c0392b; }
.fsa-field-error { margin: .35rem 0 0; color: #b42318; font-size: .88rem; }
.fsa-help { margin: .35rem 0 0; color: var(--ff-muted); font-size: .88rem; }
.fsa-check { display: flex; gap: .65rem; align-items: flex-start; margin-top: 1rem; font-size: .92rem; }
.fsa-check input { flex: 0 0 auto; width: 20px; height: 20px; margin-top: .15rem; accent-color: var(--ff-orange); }

.fsa-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 1.75rem;
}
.fsa-back { padding-left: 0; color: var(--ff-muted) !important; text-decoration: none; font-weight: 600; }
.fsa-continue { min-width: 10rem; }
@media (max-width: 575px) {
    .fsa-continue, .fsa-submit { flex: 1; }
}
.fsa-error {
    margin: 1rem 0 0;
    padding: .75rem 1rem;
    border-radius: var(--ff-radius-sm);
    background: #fdecea;
    color: #8a1f11;
}
.fsa-loading { display: flex; align-items: center; gap: .75rem; color: var(--ff-muted); padding: 2rem 0; }
.fsa-spinner {
    width: 22px;
    height: 22px;
    border: 3px solid #f1ddd0;
    border-top-color: var(--ff-orange);
    border-radius: 50%;
    animation: fsa-spin .8s linear infinite;
}
@keyframes fsa-spin { to { transform: rotate(360deg); } }

.fsa-otp { display: flex; gap: .5rem; margin: 1.25rem 0 .5rem; }
.fsa-otp input {
    width: 100%;
    max-width: 56px;
    height: 60px;
    border: 1.5px solid var(--ff-line);
    border-radius: var(--ff-radius-sm);
    font-family: "Montserrat", Arial, sans-serif;
    font-size: 1.5rem;
    font-weight: 700;
    text-align: center;
}
.fsa-otp input:focus { border-color: var(--ff-orange); outline: none; box-shadow: 0 0 0 3px rgba(242, 99, 34, .2); }
.fsa-panel-note {
    margin-top: 1.25rem;
    padding: 1rem 1.1rem;
    border-radius: var(--ff-radius-sm);
    background: var(--ff-surface);
    color: #3d3d3d;
    font-size: .9rem;
}

/* Analysis screen */
.fsa-analyzing-card {
    padding: 2rem;
    border: 1px solid var(--ff-line);
    border-radius: var(--ff-radius);
    background: #fff;
    box-shadow: var(--ff-shadow);
}
.fsa-pulse {
    display: block;
    width: 44px;
    height: 44px;
    margin-bottom: 1.25rem;
    border-radius: 50%;
    background: var(--ff-orange);
    animation: fsa-pulse 1.6s ease-in-out infinite;
}
@keyframes fsa-pulse {
    0%, 100% { transform: scale(.85); opacity: .55; }
    50% { transform: scale(1); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) { .fsa-pulse { animation: none; } }
.fsa-steps { margin: 1.25rem 0 0; padding-left: 1.2rem; color: #b5aca5; }
.fsa-steps li { margin-bottom: .35rem; transition: color .3s ease; }
.fsa-steps li.is-done { color: var(--ff-muted); }
.fsa-steps li.is-active { color: var(--ff-ink); font-weight: 600; }

/* Result */
.fsa-result { padding: 2.5rem 0 1rem; }
.fsa-result .container { max-width: 960px; }
.fsa-result-title {
    margin-bottom: 1.5rem;
    color: var(--ff-navy);
    font-size: clamp(1.7rem, 4.5vw, 2.6rem);
    font-weight: 800;
    letter-spacing: -.03em;
    line-height: 1.1;
}
.fsa-score-panel {
    display: grid;
    gap: 2rem;
    padding: clamp(1.25rem, 4vw, 2.25rem);
    border: 1px solid var(--ff-line);
    border-radius: var(--ff-radius);
    background: linear-gradient(160deg, var(--ff-surface) 0%, #fff 70%);
}
@media (min-width: 860px) { .fsa-score-panel { grid-template-columns: .9fr 1.1fr; gap: 3rem; } }
.fsa-score-label { margin: 0; color: var(--ff-muted); font-size: .9rem; }
.fsa-score-value { margin: 0 0 .75rem; font-family: "Montserrat", Arial, sans-serif; color: var(--ff-muted); font-size: 1.3rem; }
.fsa-score-value strong { color: var(--ff-navy); font-size: clamp(3.4rem, 10vw, 4.6rem); font-weight: 800; letter-spacing: -.04em; }
.fsa-stage-badge {
    display: inline-block;
    margin: 0 0 .75rem;
    padding: .3rem .85rem;
    border-radius: 99px;
    background: var(--ff-navy);
    color: #fff;
    font-family: "Montserrat", Arial, sans-serif;
    font-size: .85rem;
    font-weight: 700;
}
.fsa-stage-scale_ready { background: var(--ff-good); }
.fsa-stage-growth_ready { background: #8a6d12; }
.fsa-stage-scaling_under_pressure { background: var(--ff-orange-dark); }
.fsa-stage-foundation { background: #4a4a4a; }
.fsa-stage-message { margin: 0; color: #333; }
.fsa-dimensions ul { margin: 0; padding: 0; list-style: none; }
.fsa-dimensions li { margin-bottom: 1rem; }
.fsa-dim-row { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: .3rem; font-size: .92rem; }
.fsa-dim-name { font-weight: 600; }
.fsa-dim-value { color: var(--ff-muted); white-space: nowrap; }

.fsa-summary { margin: 2rem 0; font-size: 1.08rem; max-width: 46rem; }
.fsa-insights { display: grid; gap: 1.25rem; }
@media (min-width: 768px) { .fsa-insights { grid-template-columns: 1fr 1fr; } }
.fsa-insight, .fsa-priorities, .fsa-observations, .fsa-relevance {
    padding: 1.5rem;
    border: 1px solid var(--ff-line);
    border-radius: var(--ff-radius);
    background: #fff;
}
.fsa-priorities, .fsa-observations, .fsa-relevance { margin-top: 1.25rem; }
.fsa-result h2 { margin-bottom: 1rem; color: var(--ff-navy); font-size: 1.15rem; font-weight: 800; }
.fsa-result h3 { margin: 0 0 .25rem; font-size: 1rem; font-weight: 700; }
.fsa-insight article + article { margin-top: 1rem; }
.fsa-insight p, .fsa-priorities p { margin-bottom: .25rem; }
.fsa-priorities ol { margin: 0; padding-left: 1.25rem; }
.fsa-priorities li { margin-bottom: 1rem; }
.fsa-priorities li::marker { color: var(--ff-orange); font-weight: 800; font-family: "Montserrat", Arial, sans-serif; }
.fsa-severity {
    margin-left: .35rem;
    padding: .1rem .5rem;
    border-radius: 99px;
    background: #f1ece8;
    color: #555;
    font-size: .72rem;
    font-weight: 700;
    vertical-align: middle;
}
.fsa-severity-high { background: #fde4dc; color: #a2310b; }
.fsa-severity-medium { background: #fff1d6; color: #7a5600; }
.fsa-observations ul { margin: 0 0 .75rem; padding-left: 1.1rem; }
.fsa-observations li { margin-bottom: .5rem; }
.fsa-source { margin-left: .25rem; color: var(--ff-muted) !important; font-size: .8rem; }
.fsa-relevance { background: var(--ff-surface); }

.fsa-next {
    margin-top: 2rem;
    padding: clamp(1.5rem, 4vw, 2.25rem);
    border-radius: var(--ff-radius);
    background: var(--ff-surface);
    border: 1px solid var(--ff-line);
}
.fsa-next-primary { background: var(--ff-navy); color: #fff; border: 0; }
.fsa-next-primary h2 { color: #fff !important; font-size: 1.5rem !important; }
.fsa-next-primary .fsa-muted { color: #c9c3be; }
.fsa-next-primary .btn-outline-dark { color: #fff; border-color: rgba(255, 255, 255, .55); }
.fsa-next-primary .btn-outline-dark:hover { background: #fff; color: var(--ff-navy); }
.fsa-next-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.25rem 0 .75rem; align-items: center; }
@media (max-width: 575px) {
    .fsa-next-actions > .btn, .fsa-next-actions > form, .fsa-next-actions > form .btn { width: 100%; }
}
.fsa-report-details { margin-top: 1.25rem; padding: 1rem 1.25rem; border: 1px solid var(--ff-line); border-radius: var(--ff-radius-sm); }
.fsa-report-details summary { cursor: pointer; font-weight: 600; }
.fsa-columns { columns: 2 220px; margin: 1rem 0 .5rem; padding-left: 1.1rem; }

/* Forms (consultation) */
.fsa-form { margin: 1.5rem 0; }
.fsa-fieldset { margin: 0; padding: 0; border: 0; }
.fsa-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.fsa-chip input { position: absolute; opacity: 0; pointer-events: none; }
.fsa-chip span {
    display: inline-block;
    padding: .6rem 1rem;
    border: 1.5px solid var(--ff-line);
    border-radius: 99px;
    cursor: pointer;
}
.fsa-chip input:checked + span { border-color: var(--ff-orange); background: var(--ff-surface-2); }
.fsa-chip input:focus-visible + span { outline: 3px solid rgba(242, 99, 34, .55); outline-offset: 2px; }
.fsa-submit { margin: 1.5rem 0 .75rem; }
.fsa-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* Full report (web) */
.fsa-report { padding: 2.5rem 0; }
.fsa-report .container { max-width: 860px; }
.fsa-report-head { padding-bottom: 1.5rem; margin-bottom: 1.5rem; border-bottom: 3px solid var(--ff-orange); }
.rpt-section { margin-bottom: 2rem; }
.rpt-section h2 { padding-bottom: .4rem; border-bottom: 1px solid var(--ff-line); color: var(--ff-navy); font-size: 1.2rem; font-weight: 800; }
.rpt-section h3 { margin-top: 1rem; font-size: 1rem; font-weight: 700; }
.rpt-score strong { color: var(--ff-orange); font-size: 2.2rem; font-family: "Montserrat", Arial, sans-serif; }
.rpt-table { width: 100%; margin: .75rem 0; border-collapse: collapse; font-size: .92rem; }
.rpt-table th { padding: .5rem; background: var(--ff-surface-2); text-align: left; }
.rpt-table td { padding: .5rem; border-bottom: 1px solid var(--ff-line); vertical-align: top; }
.rpt-pill { margin-left: .35rem; padding: .1rem .5rem; border-radius: 99px; background: var(--ff-surface-2); color: var(--ff-orange-text); font-size: .75rem; }
.rpt-high { background: #fde4dc; color: #a2310b; }
.rpt-source, .rpt-sources { color: var(--ff-muted); font-size: .82rem; word-break: break-word; }
.rpt-method { color: var(--ff-muted); font-size: .9rem; }
@media (max-width: 575px) {
    .rpt-table { display: block; overflow-x: auto; }
}

/* Legal */
.fsa-legal .container { max-width: 760px; }
.fsa-legal h2 { margin-top: 2rem; font-size: 1.15rem; font-weight: 800; }

/* Analytics consent (same behaviour as the main site) */
.analytics-consent {
    position: fixed;
    right: 16px;
    bottom: 16px;
    left: 16px;
    z-index: 50;
    max-width: 420px;
    margin-left: auto;
    padding: 1rem 1.1rem;
    border: 1px solid var(--ff-line);
    border-radius: 16px;
    background: #fff;
    box-shadow: var(--ff-shadow);
    font-size: .88rem;
}
.analytics-consent p { margin: .35rem 0 .75rem; }
.analytics-consent-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.analytics-consent .btn { padding: .5rem .85rem; font-size: .8rem; }

@media (max-width: 420px) {
    .fsa-header-tag { display: none; }
}

/* ------------------------------------------------------------------ */
/* Visual result and report (v2)                                       */
/* ------------------------------------------------------------------ */
.fsa svg { flex: 0 0 auto; }
.fsa-gauge svg, .fsa-radar svg, .rpt-glance svg { max-width: 100%; height: auto; }
.fsa-h-icon { display: inline-flex; align-items: center; margin-right: .5rem; vertical-align: -4px; }
.fsa-icon-circle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: var(--ff-surface-2);
}
.fsa-icon-circle.is-green { background: #e6f4ec; }
.fsa-icon-circle.is-red { background: #fde8e6; }
.fsa-icon-circle.is-lg { width: 52px; height: 52px; border-radius: 14px; }

.fsa-hero-result {
    display: grid;
    gap: 1.5rem;
    padding: clamp(1.25rem, 4vw, 2rem);
    border: 1px solid var(--ff-line);
    border-radius: var(--ff-radius);
    background: linear-gradient(160deg, var(--ff-surface) 0%, #fff 75%);
}
@media (min-width: 860px) { .fsa-hero-result { grid-template-columns: 1fr 1fr; align-items: center; } }
.fsa-hero-score { text-align: center; }
.fsa-hero-score .fsa-stage-message { max-width: 30rem; margin: 0 auto; }
.fsa-gauge { margin: .25rem 0 .5rem; }
.fsa-hero-radar { text-align: center; }

.fsa-glance { display: grid; gap: .75rem; margin-top: 1rem; }
@media (min-width: 768px) { .fsa-glance { grid-template-columns: repeat(3, 1fr); } }
.fsa-glance-tile {
    display: flex;
    gap: .85rem;
    align-items: center;
    padding: 1rem 1.1rem;
    border: 1px solid var(--ff-line);
    border-radius: 16px;
    background: #fff;
}
.fsa-glance-tile strong { display: block; font-family: "Montserrat", Arial, sans-serif; font-size: .98rem; line-height: 1.3; }
.fsa-glance-tile .fsa-muted { font-size: .82rem; }
.fsa-glance-label { display: block; color: var(--ff-muted); font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }

.fsa-block { margin-top: 2rem; }
.fsa-block-title { display: flex; align-items: center; margin-bottom: 1rem; color: var(--ff-navy); font-size: 1.2rem !important; font-weight: 800; }
.fsa-dim-grid { display: grid; gap: .85rem; }
@media (min-width: 576px) { .fsa-dim-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 992px) { .fsa-dim-grid { grid-template-columns: repeat(3, 1fr); } }
.fsa-dim-card { padding: 1rem 1.1rem 1.1rem; border: 1px solid var(--ff-line); border-radius: 16px; background: #fff; }
.fsa-dim-card-head { display: flex; gap: .75rem; align-items: center; margin-bottom: .75rem; }
.fsa-dim-card-head h3 { margin: 0; font-size: .98rem !important; line-height: 1.25; }
.fsa-dim-card-meta { display: flex; justify-content: space-between; align-items: center; margin-bottom: .5rem; font-size: .9rem; }
.fsa-chip { display: inline-block; padding: .15rem .6rem; border-radius: 99px; font-size: .75rem; font-weight: 700; }
.fsa-chip-strong { background: #e6f4ec; color: #1f6b40; }
.fsa-chip-developing { background: #fff4d6; color: #7a5600; }
.fsa-chip-attention { background: #fff0e6; color: #a33a0a; }
.fsa-chip-gap { background: #fde8e6; color: #9b1c12; }
.fsa-bar > span.fsa-fill-strong { background: linear-gradient(90deg, #2f7d4f, #4fae78); }
.fsa-bar > span.fsa-fill-developing { background: linear-gradient(90deg, #d39b00, #f7c548); }
.fsa-bar > span.fsa-fill-attention { background: linear-gradient(90deg, #e2572b, #f08a4b); }
.fsa-bar > span.fsa-fill-gap { background: linear-gradient(90deg, #b42318, #e0523f); }

.fsa-callout {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    margin: 2rem 0;
    padding: 1.25rem 1.4rem;
    border-left: 4px solid var(--ff-orange);
    border-radius: 0 16px 16px 0;
    background: var(--ff-surface);
    font-size: 1.05rem;
}
.fsa-callout p { margin: 0; }
.fsa-callout-icon { padding-top: .15rem; }

.fsa-insight h2, .fsa-relevance h2, .fsa-observations h2 { display: flex; align-items: center; }
.fsa-item { padding: .85rem 1rem; border-radius: 12px; border-left: 4px solid var(--ff-line); background: #fcfaf8; }
.fsa-item + .fsa-item { margin-top: .75rem; }
.fsa-item p { margin: 0; }
.fsa-item-good { border-left-color: #2f7d4f; background: #f4faf6; }
.fsa-item-high { border-left-color: #b42318; background: #fdf3f2; }
.fsa-item-medium { border-left-color: #e08a00; background: #fffaf0; }
.fsa-item-low { border-left-color: #9a9087; }

.fsa-steps-grid { display: grid; gap: 1rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 860px) { .fsa-steps-grid { grid-template-columns: repeat(3, 1fr); } }
.fsa-step-card { position: relative; padding: 1.25rem; border: 1px solid var(--ff-line); border-radius: 16px; background: #fff; }
.fsa-step-card p { margin-bottom: .4rem; }
.fsa-step-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    margin-bottom: .75rem;
    border-radius: 50%;
    background: var(--ff-orange);
    color: #fff;
    font-family: "Montserrat", Arial, sans-serif;
    font-weight: 800;
}
.fsa-step-why { color: var(--ff-muted); font-size: .88rem; }
.fsa-obs-list { margin: 0 0 .75rem; padding-left: 1.1rem; }
.fsa-obs-list li { margin-bottom: .5rem; }

.fsa-report-teaser { margin-top: 1.5rem; padding: clamp(1.25rem, 4vw, 2rem); border: 1px solid var(--ff-line); border-radius: var(--ff-radius); background: #fff; }
.fsa-report-teaser h2 { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.fsa-price { padding: .2rem .7rem; border-radius: 99px; background: var(--ff-orange); color: #fff; font-size: .9rem; }
.fsa-teaser-grid { display: grid; gap: 1rem; margin: 1.25rem 0 .75rem; padding: 0; list-style: none; }
@media (min-width: 768px) { .fsa-teaser-grid { grid-template-columns: repeat(2, 1fr); } }
.fsa-teaser-grid li { display: flex; gap: .85rem; align-items: flex-start; }
.fsa-teaser-grid strong { display: block; font-family: "Montserrat", Arial, sans-serif; font-size: .95rem; }
.fsa-teaser-grid span { color: var(--ff-muted); font-size: .9rem; }

/* Full report */
.fsa-report { padding: 0 0 2.5rem; }
.rpt-cover { padding: clamp(2rem, 6vw, 3.5rem) 0 2rem; background: radial-gradient(circle at 90% 0%, rgba(242, 99, 34, .35), transparent 45%), var(--ff-navy); color: #fff; }
.rpt-cover h1 { margin: .25rem 0 .5rem; font-size: clamp(1.9rem, 5vw, 3rem); font-weight: 800; letter-spacing: -.03em; }
.rpt-cover-eyebrow { margin: 0; color: #ffb48a; font-family: "Montserrat", Arial, sans-serif; font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.rpt-cover-meta { color: #c9c3be; }
.rpt-cover-note { color: #e8e2dd; font-size: .9rem; }
.rpt-cover .btn-outline-light { border-width: 2px; color: #fff; }
.rpt-cover .btn-outline-light:hover { color: var(--ff-navy); }
.rpt-body { max-width: 980px; }
.rpt-glance { display: grid; gap: 1rem; margin-top: -1.25rem; padding: 1.5rem; border: 1px solid var(--ff-line); border-radius: var(--ff-radius); background: #fff; box-shadow: var(--ff-shadow); }
@media (min-width: 900px) { .rpt-glance { grid-template-columns: 1fr 1.1fr 1fr; align-items: center; } }
.rpt-glance-score, .rpt-glance-radar { text-align: center; }
.rpt-glance-facts { display: grid; gap: .75rem; }
.rpt-fact { display: flex; gap: .75rem; align-items: center; }
.rpt-fact > div > span { display: block; color: var(--ff-muted); font-size: .75rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.rpt-fact > div > strong { display: block; line-height: 1.3; }
.rpt-fact strong { font-family: "Montserrat", Arial, sans-serif; }
.rpt-takeaways { margin-top: 1.5rem; padding: 1.5rem; border-radius: var(--ff-radius); background: var(--ff-surface); }
.rpt-takeaways h2 { margin-bottom: .75rem; font-size: 1.1rem; font-weight: 800; }
.rpt-takeaways ol { margin: 0; padding-left: 1.25rem; }
.rpt-takeaways li { margin-bottom: .5rem; font-weight: 500; }
.rpt-takeaways li::marker { color: var(--ff-orange); font-weight: 800; }
.rpt-section { margin-top: 2.5rem; }
.rpt-h2 { display: flex; align-items: center; padding-bottom: .6rem; border-bottom: 1px solid var(--ff-line); color: var(--ff-navy); font-size: 1.3rem; font-weight: 800; }
.rpt-h2-num { margin-right: .65rem; color: var(--ff-orange); font-size: .95rem; }
.rpt-lead { font-size: 1.08rem; }
.rpt-dim { margin-top: 1.25rem; padding: 1.25rem; border: 1px solid var(--ff-line); border-radius: var(--ff-radius); background: #fff; }
.rpt-dim-head { display: flex; gap: 1rem; align-items: center; margin-bottom: 1rem; }
.rpt-dim-head h3 { margin: 0 0 .25rem; font-size: 1.15rem; font-weight: 800; }
.rpt-dim-body { display: grid; gap: 1.25rem; }
@media (min-width: 860px) { .rpt-dim-body { grid-template-columns: .9fr 1.1fr; } }
.rpt-ladder { padding: 1rem; border-radius: 14px; background: #fcfaf8; }
.rpt-ladder h4 { margin-bottom: .75rem; color: var(--ff-muted); font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.rpt-rung + .rpt-rung { margin-top: .9rem; padding-top: .9rem; border-top: 1px dashed var(--ff-line); }
.rpt-rung-head { display: flex; justify-content: space-between; align-items: center; gap: .75rem; font-size: .9rem; }
.rpt-rung p { margin: .25rem 0 0; font-size: .9rem; }
.rpt-rung-now { color: #3a3a3a; }
.rpt-rung-next { display: flex; align-items: flex-start; color: var(--ff-orange-text); font-weight: 500; }
.rpt-rung-top { display: flex; align-items: center; color: var(--ff-good); }
.rpt-boxes { display: grid; gap: .75rem; margin-top: 1rem; }
@media (min-width: 576px) { .rpt-boxes { grid-template-columns: 1fr 1fr; } }
.rpt-box { display: flex; gap: .5rem; padding: .8rem .9rem; border-radius: 12px; font-size: .9rem; }
.rpt-box span:not(.fsa-h-icon) { display: block; font-size: .72rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.rpt-box-win { background: #fff4d6; }
.rpt-box-win span:not(.fsa-h-icon) { color: #7a5600; }
.rpt-box-kpi { background: #eef3fd; }
.rpt-box-kpi span:not(.fsa-h-icon) { color: #1d4f91; }
.rpt-cards { display: grid; gap: .75rem; margin-top: 1rem; }
@media (min-width: 768px) { .rpt-cards { grid-template-columns: repeat(2, 1fr); } .rpt-cards-3 { grid-template-columns: repeat(3, 1fr); } }
.rpt-cards .fsa-item + .fsa-item { margin-top: 0; }
.rpt-checklist { margin: 1rem 0 0; padding: 0; list-style: none; }
.rpt-checklist li { display: grid; grid-template-columns: auto 1fr; gap: .25rem 1rem; padding: 1rem 0; border-bottom: 1px solid var(--ff-line); }
@media (min-width: 768px) { .rpt-checklist li { grid-template-columns: auto 1fr auto; } }
.rpt-checklist p { margin: .2rem 0 0; color: #3a3a3a; }
.rpt-checkbox { width: 22px; height: 22px; margin-top: .15rem; border: 2px solid var(--ff-orange); border-radius: 6px; }
.rpt-owner { align-self: start; grid-column: 2; padding: .2rem .65rem; border-radius: 99px; background: var(--ff-surface-2); color: var(--ff-orange-text); font-size: .8rem; font-weight: 600; justify-self: start; }
@media (min-width: 768px) { .rpt-owner { grid-column: auto; } }
.rpt-timeline { display: grid; gap: 1rem; margin: 1rem 0 0; padding: 0; list-style: none; }
@media (min-width: 860px) { .rpt-timeline { grid-template-columns: repeat(3, 1fr); } }
.rpt-timeline > li { position: relative; padding: 1.25rem; border-top: 4px solid var(--ff-orange); border-radius: 0 0 16px 16px; background: var(--ff-surface); }
.rpt-timeline > li:nth-child(2) { border-top-color: #f47d22; }
.rpt-timeline > li:nth-child(3) { border-top-color: var(--ff-amber); }
.rpt-timeline-dot { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: var(--ff-navy); color: #fff; font-weight: 800; }
.rpt-timeline-period { margin: .5rem 0 0; color: var(--ff-muted); font-size: .8rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.rpt-timeline h3 { font-size: 1.02rem; font-weight: 800; }
.rpt-timeline ul { margin: 0; padding-left: 1.1rem; font-size: .92rem; }
.rpt-opportunity { padding: 1.1rem; border: 1px solid var(--ff-line); border-radius: 16px; }
.rpt-opportunity h3 { margin: .75rem 0 .35rem; font-size: 1rem; font-weight: 800; }
.rpt-opportunity p { margin-bottom: .35rem; font-size: .92rem; }
.rpt-benefit { color: var(--ff-good); }
.rpt-final { margin: 1rem 0 0; padding: 0; list-style: none; }
.rpt-final li { display: flex; align-items: flex-start; margin-bottom: .6rem; }
.rpt-method { margin-top: 2.5rem; padding: 1.25rem; border-radius: 16px; background: #f7f5f3; color: var(--ff-muted); font-size: .88rem; }
.rpt-method h2 { font-size: 1rem; font-weight: 800; }
