/* ==========================================================================
   tools.css — /tools, "What tnaado.ca runs on."
   Pairs with /tools only. Tokens in /css/base/variables.css.

   Modeled on this site's own legal.css / careers.css hero-and-section
   vocabulary (mono-caps red eyebrow + rule, Fraunces headline with an
   italic red <em>, dark ground with a faint red radial wash) rather than
   importing tnaado.com's or service.tnaado.ca's own look.

   THEME: unlike legal.css/careers.css (deliberately dark-only — those pages
   are full-bleed photo bands), this page has no photography, so it supports
   the site's opt-in light theme fully, the same way about.html's non-hero
   sections do. All page-local color lives in the --tp-* custom properties
   below so light mode never has to touch the shared --ink/--on-black tokens
   other (dark-only) pages depend on.
   ========================================================================== */

.tools-page {
    --tp-ink: var(--ink);
    --tp-fg: var(--on-black);
    --tp-fg-mute: var(--on-black-mute);
    --tp-hairline: rgba(245, 241, 232, 0.10);
    --tp-hairline-soft: rgba(245, 241, 232, 0.08);
    --tp-card-bg: var(--ink);

    background-color: var(--tp-ink);
    background-image:
        radial-gradient(ellipse 90% 60% at 50% 0%, rgba(200, 16, 46, 0.05) 0%, transparent 60%),
        radial-gradient(ellipse 70% 70% at 100% 100%, rgba(200, 16, 46, 0.04) 0%, transparent 65%);
    color: var(--tp-fg);
    font-family: var(--font-body);
}

[data-theme="light"] .tools-page {
    --tp-ink: #faf6ec;
    --tp-fg: #1a1510;
    --tp-fg-mute: rgba(26, 21, 16, 0.65);
    --tp-hairline: rgba(26, 21, 16, 0.12);
    --tp-hairline-soft: rgba(26, 21, 16, 0.10);
    --tp-card-bg: #faf6ec;
}

@media (min-width: 1024px) {
    .tools-page { background-attachment: fixed; }
}

.tools-page main {
    display: block;
    position: relative;
    background: var(--tp-ink);
}

.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    background: var(--red);
    color: var(--on-black);
    padding: 12px 20px;
    z-index: 9999;
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    letter-spacing: 0.18em;
    text-transform: uppercase;
}
.skip-link:focus { left: 12px; top: 12px; }

/* ============== HERO ============== */
.tools-hero {
    background: var(--tp-ink);
    padding: 0;
    border-bottom: 1px solid var(--tp-hairline-soft);
    position: relative;
    overflow: hidden;
}

.tools-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
        radial-gradient(ellipse 60% 50% at 15% 15%, rgba(200, 16, 46, 0.08) 0%, transparent 60%),
        radial-gradient(ellipse 70% 70% at 100% 100%, rgba(200, 16, 46, 0.05) 0%, transparent 60%);
}

.tools-hero__inner {
    position: relative;
    z-index: 1;
    max-width: 1140px;
    margin: 0 auto;
    padding: 168px 32px 72px;
}

.tools-hero__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--red-text);
    margin: 0 0 28px;
}

.tools-hero__rule {
    display: inline-block;
    width: 32px;
    height: 1px;
    background: var(--red);
}

.tools-hero__title {
    font: 400 clamp(2.25rem, 5vw, 3.5rem)/1.05 var(--font-display);
    letter-spacing: -0.02em;
    color: var(--tp-fg);
    margin: 0 0 24px;
    max-width: 20ch;
}

.tools-hero__title em {
    font-style: italic;
    font-weight: 400;
    color: color-mix(in oklab, var(--red) 70%, var(--tp-fg));
}

.tools-hero__lede {
    font: 400 var(--text-lg)/1.6 var(--font-body);
    color: var(--tp-fg-mute);
    margin: 0;
    max-width: 62ch;
}

/* ============== SECTION HEADS (shared by grid + partners) ============== */
.tools-section {
    padding: 88px 0;
    border-top: 1px solid var(--tp-hairline-soft);
    position: relative;
}

.tools-section__inner {
    max-width: 1140px;
    margin: 0 auto;
    padding: 0 32px;
}

.tools-section__head {
    max-width: 720px;
    margin-bottom: 48px;
}

.tools-section__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--red-text);
    margin: 0 0 20px;
}

.tools-section__eyebrow .rule {
    display: inline-block;
    width: 24px;
    height: 1px;
    background: var(--red);
}

.tools-section__title {
    font: 400 clamp(1.75rem, 3vw, 2.5rem)/1.15 var(--font-display);
    letter-spacing: -0.02em;
    color: var(--tp-fg);
    margin: 0 0 18px;
    max-width: 24ch;
}

.tools-section__title em {
    font-style: italic;
    font-weight: 400;
    color: color-mix(in oklab, var(--red) 70%, var(--tp-fg));
}

.tools-section__lede {
    font: 400 var(--text-base)/1.65 var(--font-body);
    color: var(--tp-fg-mute);
    margin: 0;
    max-width: 62ch;
}

/* ============== TOOLS GRID ============== */
.tools-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1px;
    background: var(--tp-hairline);
    border: 1px solid var(--tp-hairline);
}

.tools-grid__item {
    background: var(--tp-card-bg);
    padding: 30px 28px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.tools-grid__name-row {
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.tools-grid__name {
    font: 400 1.1rem/1.3 var(--font-display);
    letter-spacing: -0.01em;
    color: var(--tp-fg);
}

.tools-grid__arrow {
    color: var(--tp-fg-mute);
    font-size: 0.85rem;
    transition: transform 200ms ease;
}

a.tools-grid__link:hover .tools-grid__arrow,
a.tools-grid__link:focus-visible .tools-grid__arrow {
    transform: translate(2px, -2px);
}

a.tools-grid__link { text-decoration: none; }

a.tools-grid__link:hover .tools-grid__name,
a.tools-grid__link:focus-visible .tools-grid__name {
    color: var(--red-text);
    outline: none;
}

.tools-grid__used {
    font: 400 var(--text-sm)/1.55 var(--font-body);
    color: var(--tp-fg-mute);
    margin: 0;
}

/* ============== PARTNER BADGES (coming-soon placeholder) ==============
   Same restraint as service.tnaado.ca's /partners: a plain status grid, no
   vendor artwork, no "badge" styling, until a partnership is actually
   granted. Do not add real logos or badge chips here — see the note on
   TRUST_BADGES in tnaado.com's own tools content and follow the same rule
   here: a badge reads as "this vendor vetted us," which isn't true yet. */
.tools-partners {
    background: color-mix(in oklab, var(--tp-ink) 92%, black 8%);
}

[data-theme="light"] .tools-partners {
    background: color-mix(in oklab, var(--tp-ink) 94%, black 3%);
}

.tools-partners__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1px;
    background: var(--tp-hairline);
    border: 1px solid var(--tp-hairline);
}

.tools-partners__card {
    background: var(--tp-card-bg);
    padding: 28px 26px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.tools-partners__name {
    font: 400 1.1rem/1.3 var(--font-display);
    letter-spacing: -0.01em;
    color: var(--tp-fg);
}

.tools-partners__status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    font-family: var(--font-mono);
    font-size: 0.62rem;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--tp-fg-mute);
}

.tools-partners__status::before {
    content: "";
    display: block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--tp-fg-mute);
}

.tools-partners__note {
    margin: 28px 0 0;
    font: 400 var(--text-sm)/1.6 var(--font-body);
    color: var(--tp-fg-mute);
    max-width: 62ch;
}

.tools-partners__note a {
    color: var(--red-text);
    text-decoration: none;
    border-bottom: 1px solid rgba(200, 16, 46, 0.40);
    transition: border-color 300ms ease;
}
.tools-partners__note a:hover { border-bottom-color: var(--red); }

/* ============== CLOSING CTA ============== */
.tools-close {
    background: color-mix(in oklab, var(--tp-ink) 92%, black 8%);
    border-top: 1px solid var(--tp-hairline-soft);
    padding: 96px 0 120px;
}

[data-theme="light"] .tools-close {
    background: color-mix(in oklab, var(--tp-ink) 94%, black 3%);
}

.tools-close__inner {
    max-width: 1140px;
    margin: 0 auto;
    padding: 0 32px;
    max-width: 640px;
}

.tools-close__title {
    font: 400 clamp(1.5rem, 2.6vw, 2rem)/1.2 var(--font-display);
    letter-spacing: -0.02em;
    color: var(--tp-fg);
    margin: 0 0 16px;
}

.tools-close__copy {
    font: 400 var(--text-base)/1.6 var(--font-body);
    color: var(--tp-fg-mute);
    margin: 0 0 28px;
}

.tools-close__cta {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    padding: 14px 26px;
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: 500;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    color: var(--red-text);
    text-decoration: none;
    border: 1px solid var(--red);
    transition: background 400ms ease, color 400ms ease, box-shadow 500ms ease;
}

.tools-close__cta:hover,
.tools-close__cta:focus-visible {
    background: var(--red);
    color: var(--on-black);
    box-shadow: 0 0 24px rgba(200, 16, 46, 0.30);
    outline: none;
}

.tools-close__arrow { transition: transform 300ms ease; }
.tools-close__cta:hover .tools-close__arrow { transform: translateX(4px); }

/* ============== RESPONSIVE ============== */
@media (max-width: 640px) {
    .tools-hero__inner { padding: 132px 24px 56px; }
    .tools-section { padding: 64px 0; }
    .tools-section__inner { padding: 0 24px; }
    .tools-grid__item { padding: 24px 20px; }
    .tools-partners__card { padding: 24px 20px; }
    .tools-close { padding: 72px 0 96px; }
    .tools-close__inner { padding: 0 24px; }
}

@media (prefers-reduced-motion: reduce) {
    .tools-grid__item {
        transition: none;
        opacity: 1;
        transform: none;
    }
}
