        /* ===== PAGE-SPECIFIC STYLES ===== */
        .page-hero {
            background: var(--color-primary);
            color: #fff;
            padding: 2.5rem 1.5rem 2rem;
            text-align: center;
        }
        .page-hero h1 {
            font-size: clamp(1.5rem, 4vw, 2.25rem);
            font-weight: 800;
            margin: 0 0 0.5rem;
        }
        .page-hero p {
            opacity: 0.85;
            max-width: 580px;
            margin: 0 auto;
            font-size: 1rem;
            line-height: 1.6;
        }

        .page-body {
            max-width: 860px;
            margin: 0 auto;
            padding: 2rem 1.25rem 4rem;
        }

        /* Section headers */
        .section-header {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            margin: 2.5rem 0 1.25rem;
            padding-bottom: 0.75rem;
            border-bottom: 2px solid var(--color-border);
        }
        .section-header h2 {
            font-size: 1.25rem;
            font-weight: 700;
            color: var(--color-text);
            margin: 0;
        }
        .section-icon {
            font-size: 1.5rem;
            line-height: 1;
        }

        /* Portal cards — the main feature blocks */
        .portal-card {
            background: var(--color-card);
            border: 1px solid var(--color-border);
            border-radius: 14px;
            padding: 1.75rem;
            margin-bottom: 1.25rem;
        }
        .portal-card.featured {
            border-color: var(--color-heading);
            border-width: 2px;
        }

        .portal-header {
            display: flex;
            align-items: flex-start;
            gap: 1rem;
            margin-bottom: 1rem;
        }
        .portal-logo-placeholder {
            width: 52px;
            height: 52px;
            border-radius: 10px;
            background: var(--color-bg);
            border: 1px solid var(--color-border);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 1.5rem;
            flex-shrink: 0;
        }
        .portal-info { flex: 1; }
        .portal-name {
            font-size: 1.15rem;
            font-weight: 700;
            color: var(--color-text);
            margin: 0 0 0.2rem;
        }
        .portal-tagline {
            font-size: 0.875rem;
            color: var(--color-text-light);
            margin: 0;
        }

        /* Badge row */
        .badge-row {
            display: flex;
            flex-wrap: wrap;
            gap: 0.4rem;
            margin-bottom: 1rem;
        }
        .badge {
            display: inline-flex;
            align-items: center;
            gap: 0.25rem;
            font-size: 0.72rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.04em;
            padding: 0.2em 0.6em;
            border-radius: 999px;
        }
        .badge-free { background: var(--color-success-bg); color: #15803D; border: 1px solid rgba(22,163,74,0.2); }
        [data-theme="dark"] .badge-free { background: rgba(22,163,74,0.12); color: #86EFAC; }
        .badge-discount { background: #EFF6FF; color: #1D4ED8; border: 1px solid rgba(37,99,235,0.15); }
        [data-theme="dark"] .badge-discount { background: rgba(37,99,235,0.12); color: #93C5FD; }
        .badge-nonprofit { background: #FFF7ED; color: #C2410C; border: 1px solid rgba(249,115,22,0.15); }
        [data-theme="dark"] .badge-nonprofit { background: rgba(249,115,22,0.1); color: #FBA86F; }
        .badge-verification { background: #F5F3FF; color: #6D28D9; border: 1px solid rgba(109,40,217,0.15); }
        [data-theme="dark"] .badge-verification { background: rgba(109,40,217,0.1); color: #C4B5FD; }

        /* Description text */
        .portal-desc {
            font-size: 0.925rem;
            color: var(--color-text-light);
            line-height: 1.65;
            margin-bottom: 1rem;
        }
        .portal-desc strong { color: var(--color-text); }

        /* How it works steps */
        .how-it-works {
            background: var(--color-bg);
            border-radius: 8px;
            padding: 1rem 1.25rem;
            margin-bottom: 1rem;
        }
        .how-it-works__title {
            font-size: 0.75rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.06em;
            color: var(--color-text-light);
            margin-bottom: 0.6rem;
        }
        .steps {
            list-style: none;
            padding: 0;
            margin: 0;
            display: flex;
            flex-direction: column;
            gap: 0.4rem;
        }
        .steps li {
            display: flex;
            gap: 0.6rem;
            font-size: 0.875rem;
            color: var(--color-text);
            line-height: 1.4;
        }
        .step-num {
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background: var(--color-primary);
            color: #fff;
            font-size: 0.65rem;
            font-weight: 700;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            margin-top: 1px;
        }

        /* Eligibility strip */
        .eligibility-strip {
            display: flex;
            flex-wrap: wrap;
            gap: 0.4rem;
            align-items: center;
            font-size: 0.8rem;
            color: var(--color-text-light);
            margin-bottom: 1rem;
        }
        .eligibility-strip strong { color: var(--color-text); }
        .elig-tag {
            background: var(--color-bg);
            border: 1px solid var(--color-border);
            border-radius: 999px;
            padding: 0.15em 0.6em;
            font-size: 0.72rem;
            font-weight: 600;
            color: var(--color-text-light);
        }

        /* CTA button */
        .portal-cta {
            display: inline-flex;
            align-items: center;
            gap: 0.4rem;
            padding: 0.6rem 1.5rem;
            background: var(--color-primary);
            color: #fff;
            font-weight: 700;
            font-size: 0.9rem;
            border-radius: 8px;
            text-decoration: none;
            transition: background 0.15s, box-shadow 0.15s;
        }
        .portal-cta:hover {
            background: var(--color-secondary);
            text-decoration: none;
            box-shadow: 0 4px 12px rgba(37,99,235,0.25);
        }
        .portal-cta.secondary {
            background: none;
            color: var(--color-heading);
            border: 1px solid var(--color-primary);
        }
        .portal-cta.secondary:hover {
            background: var(--color-primary);
            color: #fff;
        }

        /* Other sources grid */
        .sources-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
            gap: 1rem;
            margin-bottom: 1.5rem;
        }
        .source-card {
            background: var(--color-card);
            border: 1px solid var(--color-border);
            border-radius: 10px;
            padding: 1.1rem 1.25rem;
        }
        .source-card__name {
            font-size: 0.95rem;
            font-weight: 700;
            color: var(--color-text);
            margin-bottom: 0.3rem;
        }
        .source-card__desc {
            font-size: 0.825rem;
            color: var(--color-text-light);
            line-height: 1.5;
        }
        .source-card__link {
            display: inline-block;
            margin-top: 0.5rem;
            font-size: 0.8rem;
            font-weight: 600;
            color: var(--color-heading);
        }

        /* Blog posts "Coming soon" section */
        .blog-teaser-section {
            background: var(--color-card);
            border: 1px solid var(--color-border);
            border-radius: 14px;
            padding: 1.75rem;
            margin-top: 2.5rem;
        }
        .blog-teaser-section h2 {
            font-size: 1.1rem;
            font-weight: 700;
            margin: 0 0 0.4rem;
        }
        .blog-teaser-section__sub {
            font-size: 0.875rem;
            color: var(--color-text-light);
            margin: 0 0 1.25rem;
        }
        .blog-stub-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
            gap: 0.75rem;
        }
        .blog-stub {
            background: var(--color-bg);
            border: 1px dashed var(--color-border);
            border-radius: 8px;
            padding: 0.9rem 1rem;
            opacity: 0.65;
        }
        .blog-stub__label {
            font-size: 0.65rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.07em;
            color: var(--color-text-muted);
            margin-bottom: 0.35rem;
        }
        .blog-stub__title {
            font-size: 0.875rem;
            font-weight: 600;
            color: var(--color-text-light);
            line-height: 1.35;
        }
        .blog-stub__coming {
            font-size: 0.72rem;
            color: var(--color-text-muted);
            margin-top: 0.4rem;
        }

        /* Pro tip box */
        .pro-tip {
            background: #FFFBEB;
            border: 1px solid #FDE68A;
            border-left: 4px solid #F59E0B;
            border-radius: 0 8px 8px 0;
            padding: 0.85rem 1.1rem;
            font-size: 0.875rem;
            color: var(--color-text);
            line-height: 1.55;
            margin: 1rem 0;
        }
        [data-theme="dark"] .pro-tip {
            background: rgba(245,158,11,0.08);
            border-color: rgba(245,158,11,0.2);
            border-left-color: #F59E0B;
            color: var(--color-text);
        }
        .pro-tip strong { color: #92400E; }
        [data-theme="dark"] .pro-tip strong { color: #FCD34D; }

        /* Back link */
        .back-link-row {
            margin-bottom: 1.5rem;
            font-size: 0.875rem;
        }
        .back-link-row a {
            display: inline-flex;
            align-items: center;
            gap: 0.3rem;
            color: var(--color-text-light);
            text-decoration: none;
        }
        .back-link-row a:hover { color: var(--color-heading); }

        @media (max-width: 560px) {
            .portal-header { flex-direction: column; gap: 0.75rem; }
            .sources-grid { grid-template-columns: 1fr; }
            .blog-stub-grid { grid-template-columns: 1fr; }
        }
