/* Common Ground / solar-punk editorial — no external fonts, images or dependencies */
:root { color-scheme:light; --ink:#18372d; --muted:#607469; --paper:#f8f8f1; --paper2:#efefe5; --line:#d6dfd2; --grass:#256c52; --sun:#d6a64b; --page-accent:#225b45; --page-tint:#e7f2e9; --radius:16px; --max:1232px; }
*,*::before,*::after { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:96px; }
body { margin:0; font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif; font-size:16px; line-height:1.7; background:var(--paper); color:var(--ink); -webkit-font-smoothing:antialiased; }
body::selection { background:#cbdfc7; }
a { color:inherit; text-underline-offset:3px; }
a:hover { color:var(--grass); }
button,input,select { font:inherit; }
button { cursor:pointer; }
img { max-width:100%; }
:focus-visible { outline:3px solid #bd8d2e; outline-offset:4px; }
[hidden] { display:none !important; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-link { position:absolute; left:15px; top:-80px; background:#fff; border:2px solid #222; color:#111; z-index:500; padding:12px 20px; }
.skip-link:focus { top:8px; }
.container { width:min(calc(100% - 80px),var(--max)); margin:0 auto; }
.site-header { background:rgba(248,248,241,.95); position:sticky; top:0; z-index:50; border-bottom:1px solid var(--line); backdrop-filter:blur(16px); }
.header-inner { max-width:calc(var(--max) + 80px); padding:0 40px; min-height:82px; margin:auto; display:flex; gap:36px; align-items:center; justify-content:space-between; }
.brand { display:flex; gap:13px; align-items:center; text-decoration:none; color:var(--ink); flex-shrink:0; }
.brand-mark { height:43px; width:43px; border-radius:14px 4px 14px 4px; display:grid; place-items:center; background:var(--grass); font-size:14px; font-weight:850; letter-spacing:-.11em; color:#fff; }
.brand-dot { color:#f2be5d; font-size:20px; align-self:center; }
.brand-name { font-size:11px; line-height:1.14; font-weight:850; letter-spacing:.13em; }
.site-nav { display:flex; align-items:center; flex-wrap:wrap; gap:4px; }
.site-nav a { font-size:13px; font-weight:650; text-decoration:none; color:#42594e; padding:11px 15px; border-radius:6px; }
.site-nav a:hover { background:#e7efe3; color:var(--ink); }
.site-nav a[aria-current="page"] { background:#e2e9dc; color:#1b5a40; }
h1,h2,h3 { font-family:Georgia,"Iowan Old Style",Palatino,"Palatino Linotype",serif; font-weight:500; line-height:1.08; letter-spacing:-.046em; margin:0; }
h1 { font-size:clamp(3.2rem,6.5vw,6.3rem); }
h2 { font-size:clamp(2.15rem,3.5vw,3.4rem); }
h3 { font-size:1.65rem; }
h1 em,h2 em { font-style:italic; color:var(--grass); font-weight:400; }
p { margin:0 0 1.15rem; }
.eyebrow { font-size:10px; font-weight:850; letter-spacing:.17em; line-height:1.5; color:var(--grass); text-transform:uppercase; margin:0 0 15px; }
.lead { font-size:clamp(1.05rem,1.75vw,1.32rem); color:#4a6256; line-height:1.65; max-width:750px; }
.dotsep { margin:0 8px; opacity:.4; }
.hero-home { background:radial-gradient(ellipse at 74% 4%, #eee2b9 0%,transparent 47%), linear-gradient(133deg,#eff4e7 0%,#f9f9ee 51%,#f4eedc 100%); border-bottom:1px solid #dee5d7; overflow:hidden; }
.hero-inner { padding:105px 0 100px; display:grid; grid-template-columns:minmax(0,1.75fr) minmax(250px,.7fr); gap:clamp(50px,10vw,155px); align-items:end; }
.hero-copy h1 { max-width:850px; margin-bottom:27px; }
.hero-copy h1 em { color:#518469; }
.hero-copy .lead { max-width:660px; }
.hero-actions { display:flex; flex-wrap:wrap; gap:16px; margin-top:38px; }
.action-primary,.action-secondary { min-height:48px; text-decoration:none; padding:13px 20px; display:inline-flex; align-items:center; justify-content:space-between; gap:34px; border-radius:7px; font-size:13px; font-weight:750; letter-spacing:.01em; }
.action-primary { background:var(--grass); color:#fff; border:1px solid var(--grass); }
.action-primary:hover { background:#164b37; color:#fff; }
.action-secondary { border:1px solid #b5c8b9; color:var(--ink); }
.action-secondary:hover { border-color:var(--ink); background:#eff5ed; }
.hero-aside { border-left:1px solid #bdccb8; padding:3px 0 0 27px; color:#597567; }
.aside-kicker { font-size:11px; text-transform:uppercase; font-weight:850; letter-spacing:.15em; }
.aside-number { font-family:Georgia,serif; font-size:clamp(3.7rem,6vw,6rem); line-height:1; color:#2b654d; margin-top:25px; display:flex; align-items:end; gap:16px; }
.aside-number span { color:#74857a; line-height:1.5; font-family:ui-sans-serif,system-ui,sans-serif; font-size:12px; font-weight:650; letter-spacing:.02em; padding-bottom:9px; }
.aside-line { height:1px; width:100%; background:#cbd7c6; margin:20px 0 9px; }
.hero-aside p { max-width:230px; margin:28px 0 0; font-size:12px; line-height:1.75; }
.section { padding-top:87px; padding-bottom:92px; }
.section-heading { display:flex; align-items:end; justify-content:space-between; gap:40px; margin-bottom:38px; }
.section-heading h2 { max-width:650px; }
.section-heading >p { max-width:310px; color:#718176; font-size:14px; line-height:1.7; margin:0 0 4px; }
.category-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:13px; }
.category-card { min-height:155px; background:#eef1e8; border:1px solid #d7e0d1; padding:22px 24px; border-radius:8px; text-decoration:none; display:flex; flex-direction:column; justify-content:space-between; position:relative; transition:background .2s, transform .2s, border-color .2s; }
.category-card:hover { background:#e5ecdf; border-color:#aec3ae; transform:translateY(-2px); }
.category-count { font-size:10px; color:#738677; font-weight:800; letter-spacing:.14em; }
.category-name { font-size:1.65rem; line-height:1.15; letter-spacing:-.055em; font-family:Georgia,serif; padding-right:25px; }
.category-arrow { position:absolute; bottom:19px; right:20px; font-size:18px; color:#5a906d; }
.directory { border-top:1px solid var(--line); }
.filterbar { display:grid; grid-template-columns:minmax(230px,2fr) minmax(180px,1fr) minmax(160px,1fr) auto; gap:10px; border:1px solid #dce4d8; background:#f1f4ed; border-radius:10px; padding:11px; margin:5px 0 20px; align-items:center; }
.filterbar input,.filterbar select { background:#fff; color:var(--ink); border:1px solid #d7dfd5; border-radius:6px; width:100%; min-height:48px; padding:12px 14px; font-size:13px; }
.filterbar input::placeholder { color:#7a8e7e; }
.clear-filters { border:none; background:transparent; color:#376c52; font-size:12px; font-weight:750; padding:11px 12px; }
.clear-filters:hover { text-decoration:underline; }
.results-line { margin:0 0 23px; font-size:12px; letter-spacing:.03em; font-weight:800; color:#5c7667; }
.results-note { font-weight:500; color:#869589; }
.card-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }
.program-card { padding:25px 26px 22px; background:#fff; border:1px solid #dae4d8; border-radius:11px; min-height:335px; display:flex; flex-direction:column; position:relative; transition:box-shadow .2s, transform .2s, border-color .2s; overflow:hidden; }
.program-card::before { content:""; position:absolute; top:0; left:0; right:0; height:4px; background:var(--card-accent); opacity:.72; }
.program-card:hover { transform:translateY(-3px); box-shadow:0 16px 35px rgba(40,73,48,.09); border-color:#b4cdb8; }
.card-top { display:flex; align-items:start; justify-content:space-between; gap:10px; min-height:67px; margin-bottom:5px; }
.card-emoji { width:58px; height:58px; border-radius:12px; background:var(--card-tint); display:grid; place-items:center; font-size:31px; line-height:1; }
.program-card .eyebrow { font-size:10px; letter-spacing:.12em; color:#769181; margin-bottom:9px; }
.program-card h3 { font-size:1.85rem; margin-bottom:12px; }
.card-link { text-decoration:none; }
.card-link::after { content:""; position:absolute; inset:0; }
.card-desc { font-size:13px; line-height:1.67; color:#61756a; margin:0 0 24px; }
.card-bottom { display:flex; gap:11px; justify-content:space-between; margin-top:auto; padding-top:18px; border-top:1px solid #e9eee5; font-size:11px; color:#698173; font-weight:650; line-height:1.5; }
.read-more { color:var(--card-accent); white-space:nowrap; }
.status { border:1px solid #d2dfd2; color:#4e7860; background:#eff7ee; padding:5px 9px; border-radius:4px; font-size:10px; font-weight:800; line-height:1.2; letter-spacing:.01em; white-space:nowrap; }
.status-paused { color:#916224; border-color:#e9d4a3; background:#fff4d8; }
.status-merged { color:#6c6b8b; border-color:#dcd9e8; background:#f0eff7; }
.status-needs-verification { color:#7c6c3f; border-color:#e3d8aa; background:#f8f2dc; }
.no-results { border:1px dashed #abbcab; padding:36px; border-radius:12px; text-align:center; color:#637c6b; }
.editorial-note { margin-bottom:95px; padding:36px 43px; background:#e8ede3; display:grid; grid-template-columns:1fr 1fr; gap:30px; align-items:center; border-radius:12px; }
.editorial-note h2 { font-size:2.45rem; }
.editorial-note p:last-child { font-size:14px; color:#5b7264; margin:0; }
.editorial-note a { text-decoration-thickness:1px; color:#1e6a49; font-weight:700; }
.breadcrumbs { width:min(calc(100% - 80px),var(--max)); margin:29px auto 0; }
.breadcrumbs ol { display:flex; flex-wrap:wrap; gap:10px; align-items:center; list-style:none; margin:0; padding:0; }
.breadcrumbs li { font-size:11px; font-weight:650; color:#809384; }
.breadcrumbs li:not(:last-child)::after { content:"/"; margin-left:10px; color:#b0c0af; }
.breadcrumbs li a { text-decoration:none; color:#46745a; }
.breadcrumbs li[aria-current="page"] { color:#68746c; }
.listing-heading { padding-top:90px; padding-bottom:36px; }
.listing-heading h1 { max-width:980px; margin-bottom:26px; }
.listing-heading .lead { max-width:750px; }
.listing-heading + .section { padding-top:32px; }
.hashtag-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.hashtag-card { border-radius:8px; border:1px solid #d6dfd2; padding:20px 22px; background:#fff; display:flex; flex-direction:column; gap:5px; text-decoration:none; transition:.2s; }
.hashtag-card:hover { background:#eaf3e9; transform:translateY(-2px); }
.hashtag-card strong { font-size:15px; overflow-wrap:anywhere; color:#336b4e; }
.hashtag-card small { color:#83978b; font-size:11px; }
.profile-cover { margin-top:23px; background:linear-gradient(124deg,var(--page-tint) 0%,#f5f5ec 95%); border-top:1px solid #dce5da; border-bottom:1px solid #dce5da; }
.profile-cover .container { padding-top:62px; padding-bottom:43px; }
.profile-topline { display:flex; gap:10px; align-items:center; justify-content:space-between; }
.profile-topline .eyebrow { color:var(--page-accent); margin:0; }
.profile-hero { display:flex; justify-content:space-between; align-items:center; gap:30px; padding:29px 0 48px; }
.profile-heading h1 { max-width:1000px; font-size:clamp(3.2rem,6.7vw,6.3rem); color:var(--page-accent); margin-bottom:22px; }
.profile-summary { font-size:clamp(1.08rem,1.7vw,1.37rem); max-width:770px; line-height:1.55; color:#405c4e; margin:0; }
.profile-emoji { font-size:clamp(5rem,10vw,9rem); height:190px; width:210px; flex:0 0 210px; display:grid; place-items:center; line-height:1; filter:drop-shadow(0 12px 8px rgba(25,65,40,.07)); }
.profile-taxonomy { border-top:1px solid rgba(30,70,51,.16); padding-top:25px; display:flex; flex-direction:column; gap:10px; }
.tax-group { display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.tax-group>span { min-width:91px; font-size:10px; font-weight:850; letter-spacing:.11em; color:#607d6a; }
.chip { font-size:11px; font-weight:700; border-radius:5px; border:1px solid #bbcfb9; background:rgba(255,255,255,.66); color:#326147; padding:5px 10px; text-decoration:none; line-height:1.35; }
.chip:hover { background:#fff; border-color:#83a68a; }
.chip-tag { border-color:transparent; background:transparent; color:var(--page-accent); padding:6px 7px; }
.chip-tag:hover { background:rgba(255,255,255,.48); }
.profile-layout { display:grid; grid-template-columns:minmax(0,760px) minmax(260px,322px); gap:min(7vw,120px); padding-top:73px; align-items:start; }
.profile-main { min-width:0; }
.intro-sentence { border-bottom:1px solid var(--line); padding-bottom:31px; margin-bottom:42px; }
.intro-sentence p { font-size:15px; line-height:1.85; color:#5a7064; margin:0; }
.intro-sentence strong { color:#2c5640; }
.inline-ref { font-size:12px; font-weight:750; text-decoration:none; white-space:nowrap; color:var(--page-accent); }
.detail-section { padding-bottom:43px; margin-bottom:43px; border-bottom:1px solid var(--line); }
.detail-section .eyebrow,.sources-section .eyebrow { color:var(--page-accent); }
.detail-section h2,.sources-section h2 { font-size:clamp(2.25rem,3.7vw,3.5rem); margin-bottom:19px; }
.detail-section p:not(.eyebrow) { max-width:700px; font-size:16px; line-height:1.85; color:#52695b; }
.perks { list-style:none; padding:0; margin:27px 0 0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.perks li { border:1px solid #dce7d8; background:#fff; color:#41624e; padding:18px 18px 18px 30px; border-radius:6px; font-size:13px; font-weight:650; line-height:1.55; position:relative; }
.perks li::before { content:""; position:absolute; width:6px; height:6px; border-radius:50%; background:var(--page-accent); left:15px; top:25px; }
.levels { padding:4px 0 35px; border-bottom:1px solid var(--line); margin-bottom:42px; }
.levels h3 { margin-bottom:18px; font-size:1.8rem; }
.level-list { display:flex; flex-wrap:wrap; gap:8px; }
.level-list span { background:#ecf0e8; border:1px solid #d5e0d0; color:#4a7258; padding:9px 13px; font-size:12px; border-radius:5px; font-weight:750; }
.editorial-callout { margin:45px 0 65px; padding:29px 34px 27px; border-radius:8px; border-left:4px solid var(--page-accent); background:#edf1e8; }
.editorial-callout h3 { margin-bottom:14px; font-size:1.86rem; }
.editorial-callout p:last-child { font-size:14px; line-height:1.85; margin:0; color:#567062; }
.facts-panel { position:sticky; top:115px; padding:26px 29px 30px; background:#f0f3e9; border:1px solid #dce5d5; border-radius:11px; }
.facts-panel .eyebrow { color:var(--page-accent); }
.facts-panel dl { margin:7px 0 25px; }
.fact { padding:14px 0; border-bottom:1px solid #d9e2d4; }
.fact dt { color:#758779; font-size:10px; text-transform:uppercase; font-weight:750; letter-spacing:.12em; margin-bottom:6px; }
.fact dd { font-size:13px; line-height:1.5; color:#30523e; font-weight:750; margin:0; }
.action-full { width:100%; background:var(--page-accent); border-color:var(--page-accent); }
.aside-caption { font-size:11px; color:#829285; margin:15px 7px 0; }
.sources-section { scroll-margin-top:100px; }
.sources-section>p:not(.eyebrow) { color:#668073; font-size:14px; line-height:1.7; }
.source-list { list-style:none; padding:0; margin:28px 0 23px; display:flex; flex-direction:column; gap:12px; }
.source-list li { padding:17px 18px; display:grid; grid-template-columns:50px minmax(0,1fr); gap:13px; background:#fff; border:1px solid #dce6da; border-radius:7px; }
.source-index { font-family:Georgia,serif; font-size:16px; color:var(--page-accent); }
.source-list strong { display:block; font-size:13px; margin-bottom:5px; }
.source-list a { display:block; color:#47725b; font-size:12px; overflow-wrap:anywhere; line-height:1.5; }
.sources-section .source-foot { font-size:11px !important; color:#84978a !important; }
.related { margin-top:65px; border-top:1px solid #d8e3d6; }
.text-link { font-size:13px; font-weight:750; color:#2a6d4b; text-decoration:none; white-space:nowrap; }
.related .program-card { min-height:220px; }
.related .card-top { min-height:31px; }
.compare-intro { padding-bottom:26px; }
.overview-pills { display:flex; gap:9px; flex-wrap:wrap; margin-top:35px; }
.overview-pills a { border:1px solid #cbdccc; font-size:12px; font-weight:700; text-decoration:none; padding:8px 13px; border-radius:5px; color:#396b4e; }
.overview-pills a:hover { background:#e7efe5; }
.comparison-layout { margin-top:33px; padding-bottom:105px; }
.comparison-layout>div { scroll-margin-top:105px; }
.comparison-section { padding:44px 0 55px; border-top:1px solid var(--line); }
.comparison-heading { display:flex; align-items:end; gap:40px; justify-content:space-between; margin-bottom:26px; }
.comparison-heading h2 { max-width:630px; }
.comparison-heading p { max-width:350px; font-size:13px; color:#73887a; margin:0; }
.table-scroll { max-width:100%; overflow-x:auto; border:1px solid #dae3d6; border-radius:8px; background:#fff; }
.table-scroll:focus-visible { outline-offset:2px; }
table { border-collapse:collapse; min-width:760px; width:100%; font-size:12px; }
th { font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.1em; background:#e8efe4; color:#355e48; padding:15px 17px; white-space:nowrap; text-align:left; }
td { padding:14px 17px; border-top:1px solid #e7ede3; vertical-align:top; color:#5a7063; line-height:1.65; min-width:120px; }
td:first-child { min-width:165px; color:#325a45; font-weight:750; }
tr:nth-child(even) td { background:#fafbf7; }
tbody tr:hover td { background:#f0f6eb; }
.table-link { color:#326849; font-weight:800; text-decoration:none; }
.table-link:hover { text-decoration:underline; }
.about-layout { display:grid; grid-template-columns:1fr 1fr; gap:100px; padding-top:35px; padding-bottom:100px; }
.about-layout section { min-width:0; }
.about-layout h2 { font-size:2.5rem; margin:12px 0 20px; }
.about-layout h2:not(:first-of-type) { margin-top:43px; }
.about-layout p { color:#566d5e; font-size:15px; line-height:1.88; }
.glossary dt { font-size:14px; font-weight:800; margin-top:17px; }
.glossary dd { font-size:13px; color:#698174; line-height:1.75; margin:4px 0 12px; }
.about-layout code { background:#e6ede1; border:1px solid #d4e0cc; border-radius:4px; padding:2px 5px; font-size:12px; }
.site-footer { background:#16372b; color:#dfebdb; padding:43px 0; border-top:4px solid #b6b86c; }
.footer-inner { max-width:var(--max); padding:0 40px; margin:auto; display:flex; justify-content:space-between; gap:30px; }
.footer-inner strong { font-size:12px; letter-spacing:.15em; }
.footer-inner p { font-size:12px; color:#b1cdb9; margin:8px 0; }
.footer-inner a { color:#e3efcf; }
@media(max-width:1050px) { .hero-inner { gap:45px; } .card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .hashtag-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } .profile-layout { gap:35px; grid-template-columns:minmax(0,1fr) 275px; } .profile-emoji { flex-basis:160px; width:160px; } .filterbar { grid-template-columns:minmax(230px,2fr) minmax(170px,1fr); } .clear-filters { text-align:left; } }
@media(max-width:740px) { .container,.breadcrumbs { width:min(calc(100% - 36px),var(--max)); } .header-inner { min-height:67px; padding:10px 18px; flex-wrap:wrap; gap:9px; } .site-nav { overflow-x:auto; max-width:100%; width:100%; flex-wrap:nowrap; gap:0; } .site-nav a { padding:7px 11px; font-size:12px; white-space:nowrap; } .brand-mark { width:33px; height:33px; } .brand-name { font-size:9px; } .hero-inner { padding:71px 0 72px; grid-template-columns:1fr; } .hero-copy h1 { font-size:clamp(3.25rem,11vw,5rem); } .hero-aside { display:grid; grid-template-columns:1fr 1fr; gap:10px; align-items:center; padding:15px 0 0; border-left:none; border-top:1px solid #cad8c4; } .hero-aside .aside-kicker { grid-column:1/-1; } .hero-aside .aside-number { margin:5px 0 0; font-size:3.4rem; } .aside-number span { font-size:10px; } .aside-line,.hero-aside p { display:none; } .section { padding:65px 0 72px; } .section-heading,.comparison-heading { flex-direction:column; align-items:start; gap:14px; } .section-heading>p { max-width:580px; } .category-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .category-card { min-height:134px; padding:16px; } .category-name { font-size:1.38rem; } .card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; } .program-card { min-height:330px; padding:19px; } .card-desc { font-size:12px; } .program-card h3 { font-size:1.6rem; } .card-bottom { flex-direction:column; gap:4px; } .filterbar { grid-template-columns:1fr; } .editorial-note { grid-template-columns:1fr; padding:28px; margin-bottom:65px; } .listing-heading { padding-top:58px; } .listing-heading h1 { font-size:clamp(3rem,10vw,5rem); } .hashtag-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .profile-cover .container { padding-top:38px; } .profile-hero { align-items:flex-start; padding-bottom:31px; } .profile-emoji { flex-basis:92px; width:92px; height:92px; font-size:4.25rem; } .profile-heading h1 { font-size:clamp(3rem,9.6vw,5rem); } .profile-layout { grid-template-columns:1fr; padding-top:45px; gap:0; } .profile-aside { grid-row:1; margin-bottom:45px; } .facts-panel { position:static; } .facts-panel dl { display:grid; grid-template-columns:1fr 1fr; gap:0 15px; } .aside-caption { display:none; } .related { margin-top:38px; } .about-layout { grid-template-columns:1fr; gap:25px; } .footer-inner { padding:0 20px; flex-direction:column; } }
@media(max-width:485px) { .category-grid,.card-grid,.hashtag-grid { grid-template-columns:1fr; } .hero-home .hero-actions { flex-direction:column; align-items:stretch; } .hero-copy h1 { font-size:3.4rem; } .card-grid .program-card { min-height:290px; } .profile-hero { gap:7px; } .profile-emoji { flex:0 0 63px; width:63px; height:78px; font-size:3rem; } .profile-heading h1 { font-size:3.08rem; } .profile-summary { font-size:1rem; } .tax-group>span { width:100%; } .perks { grid-template-columns:1fr; } .source-list li { grid-template-columns:1fr; gap:5px; } .facts-panel dl { grid-template-columns:1fr; } .section-heading h2 { font-size:2.45rem; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none !important; } }
