/* ============================================================
   MORETECH -- ABOUT PREVIEW
   First-party markup + CSS (see partials/about_preview.php's own header
   for the full rationale). Every recurring visual value is a real --mt-*
   token.

   Design Language v2 (MoreTech craftsmanship pass): an EDITORIAL
   asymmetric split (wider narrative column, a framed visual), a kicker
   header, mission/vision as accent-edged blocks, and -- the section's
   real hierarchy device -- a divided STAT BAND with oversized figures.
   Class hooks (.mt-about, .mt-about__container/__row/__content/__eyebrow/
   __title/__lead/__actions/__cta-btn/__visual/__secondary/__mv/__mv-item/
   __mv-icon/__mv-label/__mv-text/__features/__feature/__feature-icon/
   __stats/__stat, and the --stacked / --split-media-start modifiers) are
   UNCHANGED. The two real Live-UAT layout bug fixes (__content:only-child
   width cap; --stacked __content flex reset) are preserved verbatim.
   ============================================================ */

.mt-about {
    position: relative;
    padding: var(--mt-section-py) 0;
    background: var(--mt-page-bg);
    background-image: var(--mt-section-glow);
    font-family: var(--mt-font-sans);
    /* About Module Coordinated Pass (2026-09-19): explicit base color so
       .mt-about__title (below) can read `currentColor` and a Studio
       self.color edit actually reaches it -- confirmed via Studio's own
       effectiveness.py that .mt-about__title previously hardcoded this
       same value directly, making self.color a silent no-op (the same
       defect class Hero/CTA were already fixed for). Same literal value
       as before -- default rendering is unchanged. */
    color: var(--mt-text-strong);
}

.mt-about__row {
    display: flex;
    align-items: center;
    gap: var(--mt-space-12) var(--mt-space-16);
    flex-wrap: wrap;
}

/* Editorial asymmetry: the narrative column is deliberately wider than
   the visual, rather than a 50/50 split. */
.mt-about__content {
    flex: 1.2 1 440px;
    min-width: 0;
}

/* Real bug fix (Live UAT) -- preserved verbatim: .mt-about__visual only
   renders when a real image is set. Without it, .mt-about__content is
   .mt-about__row's ONLY flex item and flex-grow stretches its box to the
   full row width even though the text needs a fraction of it. Cap width
   only when there is no sibling to share the row with. */
.mt-about__content:only-child {
    flex-grow: 0;
    max-width: 640px;
}

.mt-about__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: var(--mt-space-3);
    font-size: var(--mt-text-xs);
    font-weight: var(--mt-weight-bold);
    letter-spacing: var(--mt-tracking-wider);
    text-transform: uppercase;
    /* Ally identity (2026-09-19): --mt-accent (orange) -> --ally-blue-500,
       matching the "blue is the only accent" rule Header/Hero/Trust Bar
       already established. */
    color: var(--ally-blue-500);
    margin-bottom: var(--mt-space-4);
}

.mt-about__eyebrow::before {
    content: "";
    width: var(--mt-kicker-rule);
    height: 2px;
    background: currentColor;
    flex-shrink: 0;
}

.mt-about__title {
    font-size: var(--mt-text-4xl);
    font-weight: var(--mt-weight-black);
    /* Ally identity / Studio fix (2026-09-19): was a hardcoded literal --
       now reads .mt-about's own color (same value by default, unchanged
       rendering), so a Studio self.color edit reaches this heading. */
    color: currentColor;
    line-height: var(--mt-leading-tight);
    letter-spacing: var(--mt-tracking-tight);
    margin: 0 0 var(--mt-space-5);
    max-width: 18ch;
}

.mt-about__lead {
    font-size: var(--mt-text-md);
    color: var(--mt-text-body);
    line-height: var(--mt-leading-relaxed);
    max-width: var(--mt-measure);
    margin: 0;
}

.mt-about__actions {
    margin-top: var(--mt-space-8);
}

/* Ally identity (2026-09-19): explicit navy-700 fill / white text -- the
   same pairing the Header's own CTA uses (--mt-header-cta-bg/-fg), the
   correct "inverse of a light section background" reading for About
   (which, unlike Hero, sits on a light surface). Same rendered color as
   the previous --mt-brand-primary alias, now an explicit, named member
   of the Ally navy family instead of a generic brand token. */
.mt-about__cta-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--mt-space-2);
    padding: var(--mt-space-4) var(--mt-space-8);
    border-radius: var(--mt-radius-full);
    background: var(--ally-navy-700);
    color: var(--mt-text-inverse);
    font-weight: var(--mt-weight-semibold);
    text-decoration: none;
    box-shadow: var(--mt-elevation-raised);
    transition: background-color var(--mt-duration-normal) var(--mt-ease-default),
                transform var(--mt-duration-normal) var(--mt-ease-default);
}

.mt-about__cta-btn:hover {
    background: var(--ally-navy-600);
    transform: translateY(-2px);
}

/* Framed visual: a soft offset accent panel behind the image gives the
   column real depth even with a single flat photo. */
.mt-about__visual {
    position: relative;
    flex: 1 1 380px;
    min-width: 0;
}

.mt-about__visual::before {
    content: "";
    position: absolute;
    inset: var(--mt-space-6) auto auto calc(-1 * var(--mt-space-6));
    width: 62%;
    height: 78%;
    border-radius: var(--mt-radius-xl);
    /* Ally identity (2026-09-19): --ally-blue-500 at 10% -- the same wash
       strength Trust Bar's own icon badges use, not a generic brand tint. */
    background: rgba(75, 130, 212, 0.10);
    z-index: 0;
}

.mt-about__visual img {
    position: relative;
    z-index: 1;
    width: 100%;
    height: auto;
    border-radius: var(--mt-radius-xl);
    /* Ally identity (2026-09-19): a subtle navy-tinted inset ring alongside
       the existing elevation shadow -- a deliberate frame, not a bare
       photo -- rather than shadow alone. --ally-navy-700 at 8%, the same
       recipe as --ally-hairline-strong's own documented alpha steps. */
    box-shadow: var(--mt-shadow-lg), inset 0 0 0 1px rgba(20, 33, 61, 0.08);
    display: block;
}

/* ── Mission/Vision + Features + Stats (shared area below) ── */

.mt-about__secondary {
    display: flex;
    gap: var(--mt-space-10) var(--mt-space-12);
    margin-top: var(--mt-space-16);
    padding-top: var(--mt-space-12);
    border-top: 1px solid var(--mt-border-light);
    flex-wrap: wrap;
}

.mt-about__mv {
    flex: 1 1 300px;
    display: flex;
    flex-direction: column;
    gap: var(--mt-space-6);
}

.mt-about__mv-item {
    display: flex;
    gap: var(--mt-space-4);
    align-items: flex-start;
    padding-left: var(--mt-space-4);
    /* Ally identity (2026-09-19): --mt-accent (orange) -> --ally-blue-400. */
    border-left: 2px solid var(--ally-blue-400);
}

/* Ally identity (2026-09-19): reuses Trust Bar's own icon-badge recipe
   verbatim (rgba(--ally-blue-500) at 10% / --ally-blue-500 foreground) --
   the same "blue is the only accent" language, not a separate treatment
   invented for this section. */
.mt-about__mv-icon {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--mt-radius-md);
    background: rgba(75, 130, 212, 0.10);
    color: var(--ally-blue-500);
}

.mt-about__mv-label {
    font-size: var(--mt-text-base);
    font-weight: var(--mt-weight-bold);
    color: var(--mt-text-strong);
    margin: 0 0 var(--mt-space-1);
}

.mt-about__mv-text {
    font-size: var(--mt-text-sm);
    color: var(--mt-text-body);
    margin: 0;
    line-height: var(--mt-leading-normal);
    max-width: var(--mt-measure-tight);
}

.mt-about__features {
    flex: 1 1 300px;
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--mt-space-3) var(--mt-space-5);
    align-content: start;
}

.mt-about__feature {
    display: flex;
    align-items: center;
    gap: var(--mt-space-3);
    font-size: var(--mt-text-sm);
    color: var(--mt-text-body);
}

/* Ally identity (2026-09-19): same blue icon-badge language as
   .mt-about__mv-icon above (was --mt-accent-soft/--mt-accent orange). */
.mt-about__feature-icon {
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--mt-radius-full);
    background: rgba(75, 130, 212, 0.10);
    color: var(--ally-blue-500);
    font-size: var(--mt-text-xs);
}

/* The STAT BAND -- the section's hierarchy device. Oversized figures,
   quiet uppercase labels, a divider rule between blocks. Its own
   classes; conceptually the same "value-led block" thinking the Trust
   Bar's divided composition uses (Trust Bar itself is untouched). */
.mt-about__stats {
    flex-basis: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: var(--mt-space-8) 0;
    margin-top: var(--mt-space-4);
    padding-top: var(--mt-space-10);
    border-top: 1px solid var(--mt-border-light);
}

.mt-about__stat {
    display: flex;
    flex-direction: column;
    gap: var(--mt-space-2);
    padding: 0 var(--mt-space-10);
    border-left: 1px solid var(--mt-border-light);
}

.mt-about__stat:first-child {
    border-left: none;
    padding-left: 0;
}

.mt-about__stat .mt-about__feature-icon {
    margin-bottom: var(--mt-space-1);
}

/* Ally identity (2026-09-19): navy value (was the generic --mt-brand-
   primary alias) plus a short blue underline -- the same value-led,
   blue-underline motif Trust Bar's own 'divided' composition uses, so
   About's stats visually relate to Trust Bar without literally
   duplicating it (About's own stats stay secondary/supporting; Trust
   Bar remains the primary proof showcase). Left-anchored, not centered,
   to match this section's own left-aligned reading (Trust Bar's own
   version is centered because ITS stat blocks are centered). */
.mt-about__stat strong {
    position: relative;
    display: inline-block;
    padding-bottom: 6px;
    font-size: var(--mt-text-4xl);
    font-weight: var(--mt-weight-black);
    color: var(--ally-navy-700);
    line-height: 1;
    letter-spacing: var(--mt-tracking-tight);
}

.mt-about__stat strong::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 22px;
    height: 2px;
    border-radius: var(--mt-radius-full);
    background: var(--ally-blue-400);
}

.mt-about__stat span {
    font-size: var(--mt-text-xs);
    font-weight: var(--mt-weight-semibold);
    letter-spacing: var(--mt-tracking-wide);
    text-transform: uppercase;
    color: var(--mt-text-muted);
}

/* ------------------------------------------------------------
   Composition: stacked -- a single centred narrative column. The real
   image (if set) becomes a wide banner above the text. v2: a real
   reading measure and a centred stat band.
   ------------------------------------------------------------ */

.mt-about--stacked .mt-about__row {
    flex-direction: column;
    text-align: center;
    max-width: 720px;
    margin: 0 auto;
}

/* Real bug fix (Live UAT) -- preserved verbatim: .mt-about__content's own
   flex-basis applies to the flex MAIN axis, which --stacked switches to
   vertical -- forcing a 420px minimum height regardless of content.
   flex:0 1 auto sizes purely from real content height. */
.mt-about--stacked .mt-about__content {
    flex: 0 1 auto;
}

.mt-about--stacked .mt-about__title {
    max-width: none;
}

.mt-about--stacked .mt-about__lead {
    margin-left: auto;
    margin-right: auto;
}

.mt-about--stacked .mt-about__eyebrow {
    justify-content: center;
}

.mt-about--stacked .mt-about__visual {
    order: -1;
    width: 100%;
}

.mt-about--stacked .mt-about__visual::before {
    display: none;
}

.mt-about--stacked .mt-about__visual img {
    max-height: 380px;
    object-fit: cover;
}

.mt-about--stacked .mt-about__actions {
    display: flex;
    justify-content: center;
}

.mt-about--stacked .mt-about__secondary {
    max-width: 760px;
    margin-left: auto;
    margin-right: auto;
    justify-content: center;
    text-align: left;
}

.mt-about--stacked .mt-about__stats {
    justify-content: center;
    text-align: center;
}

.mt-about--stacked .mt-about__stat {
    align-items: center;
}

/* ------------------------------------------------------------
   media_position (whole-page design review round) -- preserved: which
   side the image column occupies within 'split'. Default 'end' needs no
   rule (natural DOM order). This fires only for the deliberate 'start'.
   ------------------------------------------------------------ */
.mt-about--split-media-start .mt-about__visual {
    order: -1;
}

.mt-about--split-media-start .mt-about__visual::before {
    left: auto;
    right: calc(-1 * var(--mt-space-6));
}

/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 1024px) {
    .mt-about__row {
        gap: var(--mt-space-10);
    }
    .mt-about__title {
        font-size: var(--mt-text-3xl);
        max-width: 22ch;
    }
    .mt-about__secondary {
        gap: var(--mt-space-8);
    }
    .mt-about__stat {
        padding: 0 var(--mt-space-6);
    }
    .mt-about__stat strong {
        font-size: var(--mt-text-3xl);
    }
}

@media (max-width: 767px) {
    .mt-about {
        padding: var(--mt-section-py-sm) 0;
    }
    .mt-about__row {
        gap: var(--mt-space-8);
    }
    .mt-about__title {
        font-size: var(--mt-text-2xl);
    }
    /* drop the offset frame on small screens -- it crowds a full-width
       image -- keep the rounded, shadowed photo. */
    .mt-about__visual::before {
        display: none;
    }
    .mt-about__secondary {
        margin-top: var(--mt-space-10);
        padding-top: var(--mt-space-10);
        gap: var(--mt-space-8);
    }
    .mt-about__features {
        grid-template-columns: 1fr;
    }
    /* stat band stacks to a 2-up grid so figures stay large and legible
       instead of scrolling off a nowrap row. */
    .mt-about__stats {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: var(--mt-space-6) var(--mt-space-4);
        padding-top: var(--mt-space-8);
    }
    .mt-about__stat {
        padding: 0;
        border-left: none;
    }
    .mt-about__stat strong {
        font-size: var(--mt-text-3xl);
    }
    .mt-about--stacked .mt-about__stats {
        text-align: left;
    }
    .mt-about--stacked .mt-about__stat {
        align-items: flex-start;
    }
}
