/* TFC shared base. Loaded after the parent theme and before page styles. */
:root {
    --tfc-font-sans: "Zen Kaku Gothic New", "Yu Gothic Medium", "游ゴシック Medium", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif;
    --tfc-font-display: "Helvetica Neue", Helvetica, Arial, sans-serif;
    --tfc-font-quote: Georgia, serif;
    --tfc-max: 1200px;
    --tfc-narrow: 860px;
    --tfc-forest: #396b53;
    --tfc-warm: #c96d3a;
    --tfc-indigo: #536fa8;
    --tfc-line: rgba(23, 52, 74, .18);
    --tfc-radius: 14px;
    --tfc-focus: #ffbf47;
    --tfc-ink: #002387;
    --tfc-ink-2: #00377d;
    --tfc-surface: #f5f6f8;
    --tfc-paper: #fff;
    --tfc-sand: #f5f6f8;
    --tfc-entrepreneur: #00856f;
    --tfc-collaboration: #c75a00;
    --tfc-research: #3f35d5;
    --tfc-color-heading: #002387;
    --tfc-color-text: #202a35;
    --tfc-color-text-secondary: #536171;
    --tfc-color-text-muted: #758292;
    --tfc-color-link: #002387;
    --tfc-muted: var(--tfc-color-text-secondary);
}

*,
*::before,
*::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body.tfc-project-page {
    margin: 0;
    color: var(--tfc-ink);
    background: #fff;
    font-family: var(--tfc-font-sans);
    font-weight: 400;
    line-height: 1.75;
}

.tfc-main { color: var(--tfc-ink); font-size: 1rem; line-height: 1.8; }
.tfc-main p, .tfc-main li { max-width: 74ch; }
.tfc-main h2 { font-size: clamp(2rem, 4vw, 3.4rem); letter-spacing: -.03em; line-height: 1.16; }
.tfc-main summary { cursor: pointer; }
body.tfc-project-page, .tfc-main { color: var(--tfc-color-text); }
.tfc-main h1, .tfc-main h2, .tfc-article-hero h1 { color: var(--tfc-color-heading); }
.tfc-project-title { color: var(--tfc-color-heading); }
.tfc-main h3, .tfc-main h4, .tfc-article-content { color: var(--tfc-color-text); }
.tfc-article-kicker, .tfc-article-person, .tfc-story-profile strong { color: var(--tfc-color-text-secondary); }
.tfc-article-content a { color: var(--tfc-color-link); }

.tfc-site-header__inner { display: flex; align-items: center; justify-content: space-between; }
.tfc-brand { color: inherit; text-decoration: none; line-height: 1.25; }
.tfc-brand__sub { color: var(--tfc-color-text-muted); }
.tfc-button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 24px; border: 1px solid currentColor; border-radius: 999px; color: var(--tfc-ink); background: #fff; text-decoration: none; font-weight: 700; }
.tfc-button--primary { border-color: var(--tfc-ink); color: #fff; background: var(--tfc-ink); }
.tfc-button--small { min-height: 40px; padding-inline: 18px; font-size: 14px; }
.tfc-button--light { border-color: #fff !important; color: var(--tfc-ink) !important; background: #fff !important; }
.tfc-button--ghost-light { border: 1px solid rgba(255,255,255,.78); color: #fff !important; background: rgba(255,255,255,.06); }
.tfc-chip-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.tfc-chip { padding: 5px 10px; border: 1px solid var(--tfc-line); border-radius: 999px; color: var(--tfc-ink); background: transparent; font-size: 13px; }

.tfc-main a:focus-visible,
.tfc-main button:focus-visible,
.tfc-main summary:focus-visible,
.tfc-main select:focus-visible,
.tfc-main input:focus-visible,
.tfc-main textarea:focus-visible { outline: 3px solid var(--tfc-focus); outline-offset: 3px; }

/* Shared supporter card used on the portal and project detail pages. */
.tfc-supporter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.tfc-supporter-card{display:flex;min-width:0;min-height:100%;flex-direction:column;padding:28px;border:1px solid #e5eaf0;border-radius:4px;background:#fff}
.tfc-supporter-card__head{display:grid;grid-template-columns:104px minmax(0,1fr);gap:18px;align-items:start}
.tfc-supporter-card__head--no-image{grid-template-columns:1fr}
.tfc-supporter-card__image{width:104px;aspect-ratio:1/1;overflow:hidden;border-radius:4px;background:#e8edf3}
.tfc-supporter-card__image img{display:block;width:100%;height:100%;object-fit:cover}
.tfc-supporter-card__identity{min-width:0}
.tfc-supporter-card__role{margin:0 0 8px;color:var(--tfc-color-heading);font-size:.72rem;font-weight:700;line-height:1.55}
.tfc-supporter-card h3{margin:0 0 9px;color:var(--tfc-color-heading);font-size:1.4rem;line-height:1.35}
.tfc-supporter-card__org{margin:0;color:var(--tfc-color-text-secondary);font-size:.8rem;line-height:1.65}
.tfc-supporter-card__frequency{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;align-items:start;margin-top:20px}
.tfc-supporter-card__frequency-icon{display:grid;width:28px;height:28px;place-items:center;border-radius:50%;color:var(--tfc-color-heading);background:#e9eef9}
.tfc-supporter-card__frequency-icon svg{width:15px;height:15px}
.tfc-supporter-card__frequency p{margin:0}
.tfc-supporter-card__frequency strong,.tfc-supporter-card__frequency p > span{display:block}
.tfc-supporter-card__frequency strong{margin-bottom:3px;color:var(--tfc-color-heading);font-size:.7rem;line-height:1.4}
.tfc-supporter-card__frequency p > span{color:var(--tfc-color-text-secondary);font-size:.78rem;line-height:1.7}
.tfc-supporter-card blockquote{position:relative;margin:24px 0 0;padding:0 0 0 20px;border:0;color:var(--tfc-color-text-secondary);font-size:.84rem;line-height:1.8}
.tfc-supporter-card blockquote::before{position:absolute;top:-13px;left:0;color:rgba(0,35,135,.18);font-family:serif;font-size:2.8rem;line-height:1;content:"“"}

@media (max-width:1023px){
    .tfc-supporter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:767px){
    .tfc-supporter-grid{grid-template-columns:1fr;gap:14px}
    .tfc-supporter-card{padding:18px}
    .tfc-supporter-card__head{grid-template-columns:88px minmax(0,1fr);gap:15px}
    .tfc-supporter-card__head--no-image{grid-template-columns:1fr}
    .tfc-supporter-card__image{width:88px}
    .tfc-supporter-card h3{font-size:1.25rem}
    .tfc-supporter-card blockquote{margin-top:20px;font-size:.8rem}
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}
