/* ============================================================
   AIGYM — corporate top page design system (2026)

   The subject is inspection: auditing, correcting and gating AI
   output before it ships. So the page is set like an inspection
   record — ruled, aligned, tabular, one ink, one signal colour.
   Headings are 明朝 because an established Japanese company sets
   its voice in 明朝, and because generated pages never do.
   ============================================================ */

:root {
    /* Button gradients are corp-ui only; the rest of the palette is core. */
    --grad-start: #0A6C7D;
    --grad-end:   #07505E;
    --grad-glow:  rgba(10, 108, 125, .22);
}

/* ── Tailwind utility overrides ──────────────────────
   This file loads after the compiled utilities, so equal
   specificity wins on source order. ─────────────────── */

.text-gray-900 { color: var(--ink); }
.text-gray-800 { color: var(--ink); }
.text-gray-700 { color: var(--ink-mid); }
.text-gray-600 { color: var(--ink-mid); }
.text-gray-500 { color: var(--ink-soft); }
.text-gray-400 { color: var(--ink-soft); }
.text-gray-300 { color: #C8D0D8; }

.bg-gray-50  { background-color: var(--paper-2); }
.bg-gray-800 { background-color: var(--ink); }
.bg-gray-900 { background-color: var(--ink); }
.bg-gray-700 { background-color: #2B3646; }

.font-bold     { font-weight: 700; }
.font-semibold { font-weight: 600; }

h2.text-4xl, h2.text-3xl {
    font-family: var(--serif);
    letter-spacing: .015em;
}

.text-4xl { font-size: clamp(1.55rem, 3.2vw, 2.1rem); line-height: 1.45; }
.text-3xl { font-size: clamp(1.4rem, 2.8vw, 1.8rem);  line-height: 1.5; }
.text-2xl { font-size: 1.28rem; line-height: 1.6; }
.text-xl  { font-size: 1.06rem; line-height: 1.85; }
.text-lg  { font-size: 1rem;    line-height: 1.9; }

.rounded-3xl { border-radius: 3px; }
.rounded-2xl { border-radius: 3px; }
.rounded-xl  { border-radius: 3px; }
.shadow-xl, .shadow-lg, .shadow-sm { box-shadow: none; }

/* The gradient headline accent becomes 傍点 — the Japanese way to
   emphasise a phrase. In English there are no 傍点, so it rules under. */
.gradient-text,
.gradient-text--toramon {
    background: none;
    -webkit-text-fill-color: currentColor;
    color: var(--ink);
    background-clip: border-box;
}
html[lang="ja"] .gradient-text {
    -webkit-text-emphasis: filled dot var(--signal);
    text-emphasis: filled dot var(--signal);
    text-emphasis-position: over right;
}
html[lang="en"] .gradient-text {
    box-shadow: inset 0 -2px 0 var(--signal);
}
.founder-name.gradient-text {
    -webkit-text-emphasis: none;
    text-emphasis: none;
    box-shadow: none;
}

/* ── Hero headline mask ──────────────────────────────
   The generic .aigym-line lives in core. The corp-ui hero has two
   panels, so the inactive one must not stay masked behind the scenes.
   ──────────────────────────────────────────────────── */

/* The one orchestrated moment: the hero headline sets itself,
   line by line, as the page opens. */
.corp-hero-line {
    display: block;
    overflow: hidden;
    white-space: normal;
    word-break: normal;
    line-break: strict;
    overflow-wrap: anywhere;
    padding-bottom: .04em;
}
.corp-hero-ink { display: block; }
html.js-anim .corp-hero-line > .corp-hero-ink {
    transform: translateY(108%);
    transition: transform .95s var(--ease-out) var(--d);
}
html.js-anim.is-ready .hero-panel.is-active .corp-hero-line > .corp-hero-ink,
html.js-anim .hero-panel:not(.is-active) .corp-hero-line > .corp-hero-ink {
    transform: none;
}

/* ── Buttons ─────────────────────────────────────────
   Solid ink or a ruled outline. The fill sweeps in from the
   left on hover, which is motion answering an action. ─── */

.btn-base {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    padding: 14px 26px;
    border-radius: 2px;
    font-family: var(--sans);
    font-weight: 700;
    font-size: .92rem;
    letter-spacing: .03em;
    cursor: pointer;
    text-decoration: none;
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition: color .28s var(--ease), border-color .28s var(--ease);
}
.btn-base::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .34s var(--ease);
}
.btn-base:hover::before,
.btn-base:focus-visible::before { transform: scaleX(1); }

.btn-grad {
    color: #fff;
    background: var(--signal);
    border: 1px solid var(--signal);
    box-shadow: none;
}
.btn-grad::before { background: var(--ink); }
.btn-grad:hover {
    color: #fff;
    border-color: var(--ink);
    transform: none;
    box-shadow: none;
    filter: none;
}
.btn-grad:active { transform: none; box-shadow: none; }

.btn-outline-grad {
    background: transparent;
    color: var(--ink);
    border: 1px solid var(--rule-firm);
    border-image: none;
    box-shadow: none;
}
.btn-outline-grad::before { background: var(--ink); }
.btn-outline-grad:hover {
    color: #fff;
    background: transparent;
    border-color: var(--ink);
    box-shadow: none;
    transform: none;
}
.btn-sm { padding: 10px 18px; font-size: .84rem; }
.btn-icon { font-size: 1rem; }

/* The shine sweep was decoration on a loop. Gone. */
.btn-grad-shine::after { display: none; content: none; }

.btn-base:focus-visible {
    outline: 2px solid var(--signal);
    outline-offset: 2px;
}

/* Buttons standing on ink grounds invert. */
.bg-gray-900 .btn-outline-grad,
footer .btn-outline-grad,
.axis-award-strip .btn-outline-grad {
    color: #fff;
    border-color: rgba(255, 255, 255, .42);
}
.bg-gray-900 .btn-outline-grad::before,
footer .btn-outline-grad::before { background: #fff; }
.bg-gray-900 .btn-outline-grad:hover,
footer .btn-outline-grad:hover { color: var(--ink); border-color: #fff; }
.bg-gray-900 .btn-grad,
footer .btn-grad { background: #fff; color: var(--ink); border-color: #fff; }
.bg-gray-900 .btn-grad::before,
footer .btn-grad::before { background: var(--signal); }
.bg-gray-900 .btn-grad:hover,
footer .btn-grad:hover { color: #fff; border-color: var(--signal); }

.mobile-nav-cta { background: var(--ink); border-radius: 2px; }
.mobile-nav-link { font-family: var(--sans); font-weight: 500; color: var(--ink-mid); }
.mobile-nav-link:hover { color: var(--signal); }
.mobile-nav-heading {
    font-family: var(--serif);
    font-weight: 700;
    font-size: .86rem;
    letter-spacing: .04em;
    text-transform: none;
    color: var(--ink);
    border-bottom: 1px solid var(--rule);
}
.mobile-nav-close { border-radius: 2px; border-color: var(--rule); }
.mobile-nav-panel { border-radius: 0; }

/* ── Header ──────────────────────────────────────────── */

header.bg-white {
    background: rgba(255, 255, 255, .94);
    backdrop-filter: saturate(1.4) blur(10px);
    border-bottom: 1px solid transparent;
    box-shadow: none;
    transition: transform .3s var(--ease), border-color .3s var(--ease), background .3s var(--ease);
}
body.is-scrolled header.bg-white { border-bottom-color: var(--rule); }

header nav a,
header nav .nav-dropdown-btn,
.nav-dropdown-btn {
    font-family: var(--sans);
    font-size: .92rem;
    font-weight: 500;
    letter-spacing: .04em;
    color: var(--ink-mid);
}
header nav a { position: relative; padding-bottom: 3px; }
header nav > a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: var(--signal);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .3s var(--ease);
}
header nav > a:hover { color: var(--ink); }
header nav > a:hover::after { transform: scaleX(1); }
.nav-dropdown-btn:hover { color: var(--ink); }

.nav-dropdown-menu {
    display: block;
    border-radius: 2px;
    border: 1px solid var(--rule);
    box-shadow: 0 12px 28px rgba(23, 32, 45, .08);
    opacity: 0;
    visibility: hidden;
    transform: translateX(-50%) translateY(-6px);
    transition: opacity .22s var(--ease), transform .22s var(--ease), visibility 0s linear .22s;
}
.nav-dropdown-wrap.is-open .nav-dropdown-menu {
    display: block;
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
    transition: opacity .22s var(--ease), transform .22s var(--ease), visibility 0s;
}
.nav-dropdown-item {
    font-family: var(--sans);
    font-weight: 500;
    font-size: .88rem;
    letter-spacing: .03em;
    color: var(--ink-mid);
    padding: 10px 18px;
}
.nav-dropdown-item:hover { background: var(--signal-wash); color: var(--signal-deep); }

.corp-logo { border-radius: 0; }

/* The desktop nav appears at 768px, but the English labels are longer than
   the Japanese ones and overrun the bar between 768 and 1023. The menu stays
   behind the hamburger until there is genuinely room for it. */
@media (max-width: 1023px) {
    header nav.hidden { display: none; }
    .mobile-menu-btn { display: flex; align-items: center; }
}

/* ── Notice + award strips ───────────────────────────── */

.out-of-office-notice {
    background: var(--paper-2);
    border-bottom: 1px solid var(--rule);
    color: var(--ink-mid);
}
.out-of-office-notice-icon { color: var(--ink-soft); }
.out-of-office-notice-title { color: var(--ink); font-weight: 700; font-size: .92rem; }
.out-of-office-notice-text-en { color: var(--ink-soft); }

.axis-award-strip {
    background: var(--ink);
    border-bottom: none;
}
.axis-award-link { color: #fff; padding: .95rem 1.5rem; }
.axis-award-icon {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .28);
    border-radius: 2px;
    color: #fff;
    box-shadow: none;
}
.axis-award-label {
    font-family: var(--sans);
    font-size: .7rem;
    letter-spacing: .06em;
    text-transform: none;
    color: #9FB3B7;
}
.axis-award-title { font-weight: 700; letter-spacing: .02em; color: #fff; }
.axis-award-note { color: #A9B4C0; font-size: .84rem; }
.axis-award-cta {
    font-family: var(--sans);
    font-weight: 500;
    font-size: .85rem;
    color: #fff;
    letter-spacing: .03em;
}
.axis-award-link:hover .axis-award-cta { color: #fff; }
.axis-award-cta i { transition: transform .3s var(--ease); }
.axis-award-link:hover .axis-award-cta i { transform: translate(2px, -2px); }

.toramon-launch {
    background: var(--paper-2);
    border-bottom: 1px solid var(--rule);
    color: var(--ink);
}
.toramon-launch-label {
    font-family: var(--sans);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: none;
    color: var(--signal);
    background: none;
    border: none;
    padding: 0;
}
.toramon-launch-title {
    font-family: var(--serif);
    color: var(--ink);
    font-weight: 700;
    letter-spacing: .02em;
}
.toramon-launch-copy { color: var(--ink-mid); }
.toramon-launch-actions a { border-radius: 2px; font-weight: 700; letter-spacing: .03em; }
.toramon-launch-primary { background: var(--signal); color: #fff; }
.toramon-launch-primary:hover { background: var(--ink); }
.toramon-launch-secondary { border: 1px solid var(--rule-firm); color: var(--ink); }
.toramon-launch-secondary:hover { border-color: var(--ink); background: var(--ink); color: #fff; }

@media (max-width: 767px) {
    /* The strip's CTA collapses to its icon on a phone. This file loads after
       the page's own mobile rule, so it has to restate it or the label comes
       back and wraps one character per line inside the 2rem box. */
    .axis-award-cta {
        justify-content: center;
        width: 2rem;
        height: 2rem;
        padding: 0;
        border-radius: 2px;
        background: rgba(255, 255, 255, .14);
        font-size: 0;
    }
    .axis-award-cta i { font-size: 1rem; }
}

/* The mobile menu already carries 、お問い合わせ, so the header button drops
   its label rather than wrapping in a crowded bar. */
@media (max-width: 520px) {
    header .btn-outline-grad {
        font-size: 0;
        gap: 0;
        padding: 10px 12px;
    }
    header .btn-outline-grad .btn-icon { font-size: 1.05rem; }
}

/* ── Hero ────────────────────────────────────────────── */

.hero-bg { background: var(--paper-2) !important; }
/* The fluid background is the page's one ambient motion. It stays behind
   the headline rather than competing with it. */
#fluid-canvas { opacity: .5; }
@media (prefers-reduced-motion: reduce) { #fluid-canvas { display: none; } }

.corp-hero-title {
    font-family: var(--serif);
    font-weight: 700;
    letter-spacing: .02em;
    line-height: 1.42;
    font-feature-settings: "palt" 1;
}
.corp-hero-body {
    font-size: 1rem;
    line-height: 2;
    color: var(--ink-mid);
}

.hero-eyebrow-badge,
.hero-eyebrow-badge--toramon {
    background: none;
    border: none;
    border-left: 2px solid var(--signal);
    border-radius: 0;
    padding: 2px 0 2px 12px;
    font-family: var(--sans);
    font-size: .78rem;
    font-weight: 500;
    letter-spacing: .04em;
    text-transform: none;
    color: var(--ink-mid);
}
.hero-eyebrow-badge--toramon { border-left-color: var(--signal); }
/* The pulsing dot was motion with nothing to say. */
.hero-eyebrow-dot { display: none; }

.hero-tab {
    border-radius: 2px;
    background: transparent;
    border: 1px solid var(--rule);
    backdrop-filter: none;
    padding: 12px 24px 13px;
    transition: border-color .28s var(--ease), background .28s var(--ease);
}
.hero-tab:hover { transform: none; border-color: var(--rule-firm); }
.hero-tab-name {
    font-family: var(--serif);
    font-weight: 700;
    font-size: 1rem;
    letter-spacing: .03em;
    color: var(--ink-mid);
}
.hero-tab-sub {
    font-family: var(--sans);
    font-size: .72rem;
    letter-spacing: .04em;
    color: var(--ink-soft);
}
.hero-tab[data-hero-tab="toramon"].is-active,
.hero-tab[data-hero-tab="celsius"].is-active {
    background: var(--paper);
    border-color: var(--ink);
    box-shadow: none;
}
.hero-tab[data-hero-tab="toramon"].is-active .hero-tab-name,
.hero-tab[data-hero-tab="celsius"].is-active .hero-tab-name { color: var(--ink); }
.hero-tab[data-hero-tab="toramon"].is-active .hero-tab-sub,
.hero-tab[data-hero-tab="celsius"].is-active .hero-tab-sub { color: var(--ink-mid); }
.hero-tab[data-hero-tab="toramon"] .hero-tab-progress,
.hero-tab[data-hero-tab="celsius"] .hero-tab-progress { background: var(--signal); height: 2px; }

[data-hero-panel="toramon"] {
    --grad-start: #0A6C7D;
    --grad-end: #07505E;
    --grad-glow: rgba(10, 108, 125, .22);
}

.demo-video-wrap {
    border-radius: 2px;
    box-shadow: none;
    border: 1px solid var(--rule);
    background: var(--ink);
}
.demo-video-wrap video,
.demo-video-wrap--embed iframe { border-radius: 0; }

/* The page is a left-aligned document, and the hero is part of it.
   Copy and video share one left edge instead of floating centred. */
.hero-stage { max-width: 1080px; }
.hero-tabs { justify-content: flex-start; }
.hero-grid { align-items: stretch; }
.hero-grid .corp-hero-copy {
    text-align: left;
    align-items: flex-start;
    width: 100%;
    max-width: 1080px;
}
.hero-grid .corp-hero-copy .flex { justify-content: flex-start; }
.hero-grid .demo-video-wrap { max-width: 1080px; }
.corp-hero-title { font-size: clamp(1.85rem, 3.9vw, 2.6rem); }

/* On desktop the claim and the proof sit side by side. */
@media (min-width: 1024px) {
    .hero-stage { max-width: 1240px; }
    .hero-grid {
        display: grid;
        grid-template-columns: minmax(0, 46fr) minmax(0, 54fr);
        align-items: center;
        gap: 56px;
    }
    .hero-grid .corp-hero-copy { max-width: none; }
    .hero-grid .demo-video-wrap { max-width: none; }
    .corp-hero-title { font-size: clamp(1.8rem, 2.75vw, 2.4rem); }
}

.quality-loop-heading { text-align: left; }
.quality-loop-split { text-align: left; }

@media (max-width: 767px) {
    .corp-hero-title { font-size: clamp(1.6rem, 7.4vw, 2.1rem) !important; }
    .hero-grid .corp-hero-copy .btn-base { width: 100%; }
}

/* Hero claim list: what the product actually does, in order. */
.hero-claims {
    display: flex;
    flex-direction: column;
    gap: .45rem;
    margin: 0 0 1.75rem;
    padding: 0;
    list-style: none;
    max-width: 560px;
}
.hero-claims li {
    position: relative;
    padding-left: 1rem;
    font-size: .9rem;
    font-weight: 500;
    color: var(--ink);
    letter-spacing: .02em;
}
.hero-claims li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .78em;
    width: 6px;
    height: 1px;
    background: var(--signal);
}

/* ── Figures band ────────────────────────────────────── */

.stat-band {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 2.5rem 3rem;
    max-width: 72rem;
    margin: 0 auto;
}
.stat-item { text-align: left; }
.stat-rule {
    height: 1px;
    background: rgba(255, 255, 255, .28);
    margin-bottom: 1.1rem;
    transform-origin: left center;
}
.stat-figure {
    font-family: var(--sans);
    font-weight: 700;
    font-size: clamp(2.2rem, 4.6vw, 3rem);
    line-height: 1;
    color: #fff;
    letter-spacing: -.01em;
}
.stat-figure .stat-unit {
    font-size: .42em;
    font-weight: 500;
    color: #9FB3B7;
    margin-left: .25em;
    letter-spacing: .04em;
}
.stat-label {
    font-family: var(--sans);
    font-size: .84rem;
    font-weight: 500;
    letter-spacing: .04em;
    color: #C6D0D6;
    text-transform: none;
    margin-top: .7rem;
}
.stat-sub {
    font-family: var(--sans);
    font-size: .72rem;
    color: #7C8B97;
    margin-top: .2rem;
    letter-spacing: .03em;
}

/* ── Panels (were cards) ─────────────────────────────── */

.card-ed,
.mvv-card,
.val-card,
.impact-card,
.celsius-svc-card,
.celsius-val-card,
.note-card-corp,
.impact-banner,
.quality-loop-card,
.pull-quote {
    border-radius: 2px;
    box-shadow: none;
}

.card-ed, .celsius-svc-card {
    background: var(--paper);
    border: 1px solid var(--rule);
    border-top: 1px solid var(--rule);
    padding: 2.25rem;
    transition: border-color .28s var(--ease);
}
.card-ed:hover, .celsius-svc-card:hover {
    border-color: var(--ink);
    background: var(--paper);
}
.card-ed-rule { display: none; }
/* 01 / 02 / 03 markers on things that are not a sequence. */
.card-ed-num, .val-num, .celsius-val-num, .gap-card-num { display: none; }

.svc-tag {
    font-family: var(--sans);
    font-size: .74rem;
    font-weight: 500;
    letter-spacing: .05em;
    text-transform: none;
    color: var(--ink-soft);
    margin-bottom: .75rem;
}

.mvv-card {
    background: var(--paper);
    border: 1px solid var(--rule);
    padding: 2.25rem;
    transition: border-color .28s var(--ease);
}
.mvv-card:hover { border-color: var(--rule-firm); }
.mvv-tag {
    font-family: var(--sans);
    font-size: .74rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: none;
    border: none;
    border-left: 2px solid currentColor;
    border-radius: 0;
    padding: 0 0 0 10px;
    margin-bottom: 1rem;
    color: var(--signal) !important;
}

.val-card {
    background: var(--paper);
    border: 1px solid var(--rule);
    border-top: 1px solid var(--rule);
    padding: 2rem;
    transition: border-color .28s var(--ease);
}
.val-card:hover { border-color: var(--ink); border-top-color: var(--ink); }
.val-card h3 { font-family: var(--serif); letter-spacing: .01em; }

.gap-cards-grid { background: var(--rule); }
.gap-card {
    background: var(--paper);
    transition: background .28s var(--ease);
}
.gap-card:hover { background: var(--paper-2); transform: none; box-shadow: none; }
.gap-card-accent { display: none; }
.gap-card-title { font-family: var(--serif); color: var(--ink); letter-spacing: .015em; }
.gap-card-body { color: var(--ink-mid); }
.gap-card-tag {
    font-family: var(--sans);
    font-size: .74rem;
    letter-spacing: .05em;
    text-transform: none;
    color: var(--ink-soft);
    background: none;
    border: none;
    padding: 0;
}

.quality-loop-card {
    background: var(--paper);
    border: 1px solid var(--rule);
    transition: border-color .28s var(--ease);
}
.quality-loop-card:hover { transform: none; box-shadow: none; border-color: var(--ink); }
.quality-loop-card--voice, .quality-loop-card--software { background: var(--paper); }
.quality-loop-badge {
    font-family: var(--sans);
    font-size: .74rem;
    font-weight: 500;
    letter-spacing: .05em;
    text-transform: none;
    background: none;
    border: none;
    border-radius: 0;
    padding: 0;
    color: var(--ink-soft) !important;
}
.quality-loop-product { font-family: var(--serif); color: var(--ink); }
.quality-loop-title { font-family: var(--serif); color: var(--ink); }
.quality-loop-body { color: var(--ink-mid); }
.quality-loop-cta,
.quality-loop-card--voice .quality-loop-cta,
.quality-loop-card--software .quality-loop-cta {
    color: var(--signal);
    font-family: var(--sans);
    font-weight: 700;
    letter-spacing: .03em;
}
.quality-loop-cta i { transition: transform .3s var(--ease); }
.quality-loop-card:hover .quality-loop-cta i { transform: translateX(4px); }
.quality-loop-heading { font-family: var(--serif); color: var(--ink); letter-spacing: .02em; }

.celsius-val-card {
    background: var(--paper);
    border: 1px solid var(--rule);
    border-top: 1px solid var(--rule);
    transition: border-color .28s var(--ease);
}
.celsius-val-card:hover { border-color: var(--ink); border-top-color: var(--ink); box-shadow: none; }
.celsius-val-icon { color: var(--ink-faint); }
.celsius-val-card:hover .celsius-val-icon { color: var(--signal); }
.celsius-val-title { font-family: var(--serif); color: var(--ink); letter-spacing: .015em; }
.celsius-val-body { color: var(--ink-mid); }
.celsius-val-foot {
    font-family: var(--sans);
    font-size: .74rem;
    letter-spacing: .05em;
    text-transform: none;
    color: var(--ink-soft);
    border-top: 1px solid var(--rule);
}

.impact-card {
    background: var(--paper);
    border: 1px solid var(--rule);
    border-top: 1px solid var(--rule);
    padding: 2.25rem;
}
.impact-tag {
    font-family: var(--sans);
    font-size: .76rem;
    font-weight: 500;
    letter-spacing: .05em;
    text-transform: none;
    color: var(--ink-soft);
    margin-bottom: 1rem;
}
.impact-list-dot {
    font-size: 0;
    flex: 0 0 auto;
    width: 6px;
    height: 1px;
    background: var(--signal);
    margin: .85em .7rem 0 0;
}
.impact-banner {
    background: var(--paper-2);
    border: 1px solid var(--rule);
    border-top: 1px solid var(--rule);
    text-align: left;
}

.slogan-banner {
    border: 1px solid var(--rule);
    background: var(--paper);
    text-align: left;
    /* The banner is a panel, so its content is inset from its own edge like
       every other panel. Without this the text sits flush on the border and
       reads as clipped. */
    padding: clamp(2rem, 4vw, 3rem) clamp(1.25rem, 3vw, 2.5rem);
}
.slogan-main {
    font-family: var(--serif);
    font-weight: 700;
    font-size: clamp(1.75rem, 5.4vw, 3.6rem);
    letter-spacing: .01em;
    line-height: 1.2;
    color: var(--ink);
}
.slogan-main .slogan-accent { color: var(--signal); }
.slogan-sub {
    font-family: var(--sans);
    font-size: .86rem;
    letter-spacing: .04em;
    color: var(--ink-mid);
    text-transform: none;
    margin-top: .75rem;
}

.pull-quote {
    background: var(--paper-2);
    border: none;
    border-left: 2px solid var(--ink);
    padding: 2rem 2rem 1.75rem 2.25rem;
}
.pull-quote::before { display: none; content: none; }
.founder-name { font-family: var(--serif); color: var(--ink); }
.founder-title { color: var(--ink-soft); font-family: var(--sans); }
#founder .bg-white { border: 1px solid var(--rule); }
#founder.bg-gradient-to-br { background: var(--paper-2); }
.founder-profile img { border-radius: 2px; border: 1px solid var(--rule); box-shadow: none; }

/* ── News index ──────────────────────────────────────
   The complaint was clutter: eight cards, six accent colours,
   a floating badge on each. Now it is one ruled index —
   date, category, headline, one supporting line. ─────── */

.news-index {
    border-top: 1px solid var(--ink);
    max-width: 56rem;
}
.news-row {
    display: grid;
    grid-template-columns: 8.5rem 1fr;
    gap: 0 2rem;
    padding: 1.7rem 0 1.6rem;
    border-bottom: 1px solid var(--rule);
    transition: background .28s var(--ease);
}
.news-row-meta { padding-top: .2rem; }
.news-row-date {
    display: block;
    font-family: var(--sans);
    font-size: .84rem;
    font-weight: 500;
    color: var(--ink-soft);
    letter-spacing: .03em;
    line-height: 1.6;
}
.news-row-cat {
    display: inline-block;
    margin-top: .4rem;
    font-family: var(--sans);
    font-size: .74rem;
    font-weight: 500;
    letter-spacing: .04em;
    color: var(--ink-mid);
    text-transform: none;
    background: none;
    border: none;
    border-radius: 0;
    padding: 0;
    position: static;
}
/* The newest entry is the only one that carries the signal. */
.news-row:first-child .news-row-cat { color: var(--signal); font-weight: 700; }

.news-row-title {
    font-family: var(--serif);
    font-size: 1.04rem;
    font-weight: 700;
    line-height: 1.75;
    color: var(--ink);
    letter-spacing: .015em;
    margin: 0 0 .35rem;
    font-feature-settings: "palt" 1;
}
.news-row-body {
    margin: 0;
    font-size: .88rem;
    line-height: 1.9;
    color: var(--ink-mid);
    max-width: 42em;
}
/* i18n injects these with their own inline colours, so they are forced. */
.news-row-body strong { font-weight: 700; color: var(--ink) !important; }
.news-row-body a,
.news-row-title a {
    color: var(--signal) !important;
    text-decoration: none !important;
    background-image: linear-gradient(var(--signal), var(--signal));
    background-size: 0% 1px;
    background-position: 0 100%;
    background-repeat: no-repeat;
    transition: background-size .3s var(--ease);
    font-weight: 700;
}
.news-row-body a:hover,
.news-row-title a:hover { background-size: 100% 1px; }

@media (max-width: 767px) {
    .news-row {
        grid-template-columns: 1fr;
        gap: .5rem;
        padding: 1.4rem 0 1.3rem;
    }
    .news-row-meta {
        display: flex;
        align-items: baseline;
        gap: 1rem;
        padding-top: 0;
    }
    .news-row-cat { margin-top: 0; }
    .news-row-title { font-size: .99rem; }
}

/* ── CEO notes ───────────────────────────────────────── */

.note-card-corp {
    background: var(--paper);
    border: none;
    border-bottom: 1px solid var(--rule);
    border-radius: 0;
    padding: 1.5rem 0;
    transition: background .28s var(--ease);
}
.note-card-corp:first-child { border-top: 1px solid var(--ink); }
.note-card-corp:hover { background: var(--paper-2); border-color: var(--rule); }
.note-card-corp + .note-card-corp { margin-top: 0; }
.note-card-meta { gap: 14px; margin-bottom: 6px; }
.note-card-num { display: none; }
.note-card-date {
    font-family: var(--sans);
    font-size: .82rem;
    color: var(--ink-soft);
    letter-spacing: .03em;
}
.note-card-tag {
    font-family: var(--sans);
    font-size: .74rem;
    letter-spacing: .04em;
    text-transform: none;
    color: var(--ink-mid);
    border: none;
    padding: 0;
    border-radius: 0;
}
.note-card-title {
    font-family: var(--serif);
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--ink);
    letter-spacing: .015em;
    line-height: 1.7;
}
.note-card-excerpt { color: var(--ink-mid); font-size: .87rem; }
.note-card-hint {
    font-family: var(--sans);
    font-size: .78rem;
    color: var(--signal);
    letter-spacing: .03em;
    opacity: 0;
    transform: translateX(-6px);
    display: inline-block;
    transition: opacity .3s var(--ease), transform .3s var(--ease);
}
.note-card-corp:hover .note-card-hint { opacity: 1; transform: none; }
.ceo-notes-details summary {
    font-family: var(--sans);
    font-weight: 500;
    color: var(--ink-mid);
    letter-spacing: .03em;
}
.ceo-notes-details summary::after { font-family: var(--sans); }

/* ── Closing band + footer ───────────────────────────── */

footer.bg-gray-800 { background: var(--ink); }
footer h4 { font-family: var(--serif); color: #fff; letter-spacing: .03em; }
footer a { color: #C6D0D6; transition: color .22s var(--ease); }
footer a:hover { color: #fff; }
footer .rounded-full {
    border-radius: 2px;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .24);
    transition: background .26s var(--ease), border-color .26s var(--ease);
}
footer .rounded-full:hover { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .5); }
.hover\:text-primary:hover { color: #fff; }

#backToTop span {
    background: var(--ink) !important;
    box-shadow: 0 10px 24px rgba(23, 32, 45, .24) !important;
    border-radius: 2px !important;
}

/* ── Contact modal ───────────────────────────────────── */

.corp-contact-dialog { border-radius: 3px; }
#corp-contact-title { font-family: var(--serif); letter-spacing: .02em; }

/* Figures band on narrow screens keeps its left alignment. */
@media (max-width: 767px) {
    .stat-band { gap: 1.75rem 1.25rem !important; }
    .stat-label { font-size: .78rem; margin-top: .5rem; }
    .stat-sub { font-size: .66rem; }
    .stat-rule { margin-bottom: .8rem; }
    .hero-claims { gap: .35rem 1.25rem; }
    .hero-claims li { font-size: .84rem; }
}

/* ── Reduced motion (corp-ui additions; the rest is core) ── */

@media (prefers-reduced-motion: reduce) {
    html.js-anim .corp-hero-line > .corp-hero-ink {
        transform: none !important;
        transition: none !important;
    }
    .btn-base::before { transition: none; }
    .news-row, .note-card-corp, .nav-dropdown-menu { transition: none; }
}
