.sw-page {
    --sw-primary: #1E3C72;
    --sw-accent: #7E22CE;
    --sw-gold: #E0B958;
    --sw-ink: #1B2433;
    --sw-muted: #4A5568;
    --sw-bg: #F4F5FA;
    --sw-nav-h: 80px;
    padding-top: var(--sw-nav-h);
    font-family: 'Public Sans', system-ui, sans-serif;
    line-height: 1.6;
    color: var(--sw-ink);
    background: #fff;
}

.sw-page *, 
.sw-page *::before, 
.sw-page *::after { 
    box-sizing: border-box; 
}

.sw-page h1, 
.sw-page h2, 
.sw-page h3, 
.sw-page p, 
.sw-page figure { 
    margin: 0;
}

.sw-container { 
    width: 100%; 
    max-width: 1160px; 
    margin: 0 auto; 
    padding: 0 32px; 
}

.sw-section { padding: 80px 0; }
.sw-section--alt { background: var(--sw-bg); }
.sw-section--intro { padding: 56px 0 24px; }

.sw-eyebrow { margin-bottom: 14px; font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--sw-gold); }
.sw-eyebrow--accent { color: var(--sw-accent); }
.sw-title { margin-bottom: 16px; font-family: 'Source Serif 4', Georgia, serif; font-size: 38px; line-height: 1.15; font-weight: 600; color: var(--sw-primary); }
.sw-text { max-width: 680px; font-size: 18px; color: var(--sw-muted); }
.sw-lead { max-width: 760px; font-size: 21px; color: var(--sw-muted); }

.sw-hero {
    position: relative;
    display: flex;
    align-items: flex-end;
    min-height: 420px;
    min-height: calc(100vh - var(--sw-nav-h));
    min-height: calc(100dvh - var(--sw-nav-h));
    overflow: hidden;
    background: var(--sw-primary) center / cover no-repeat;
}

@media (max-height: 500px) {
    .sw-hero { min-height: 420px; }
}

.sw-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to top right,
        rgba(30, 60, 114, .88) 0%,
        rgba(30, 60, 114, .55) 35%,
        rgba(30, 60, 114, .15) 70%,
        rgba(30, 60, 114, 0) 100%
    );
}

.sw-hero__content { position: relative; padding-top: 120px; padding-bottom: 80px; }

.sw-hero__title {
    max-width: 860px;
    font-family: 'Source Serif 4', Georgia, serif;
    font-size: clamp(36px, 6vw, 64px);
    line-height: 1.05;
    font-weight: 600;
    text-shadow: 0 2px 12px rgba(20, 40, 79, .45);
    color: #fff;
}

/* Grid & kartu */
.sw-grid { display: grid; gap: 36px 32px; margin-top: 44px; }
.sw-grid--3 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.sw-grid--4 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: 36px 28px; }

.sw-card { padding-top: 16px; border-top: 3px solid var(--sw-accent); }
.sw-card__title { margin-top: 16px; font-family: 'Source Serif 4', Georgia, serif; font-size: 22px; line-height: 1.25; font-weight: 600; color: var(--sw-primary); }

.sw-media { overflow: hidden; aspect-ratio: 4 / 3; background: #E4E8F2; }
.sw-media--portrait { aspect-ratio: 4 / 5; }
.sw-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.sw-media__placeholder {
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%;
    border: 2px dashed #8FA0C8;
    font-size: 14px; font-weight: 500; color: var(--sw-primary);
}

@media (max-width: 768px) {
    .sw-container { padding: 0 20px; }
    .sw-section { padding: 56px 0; }
    .sw-section--intro { padding: 40px 0 16px; }
    .sw-title { font-size: 30px; }
    .sw-lead { font-size: 18px; }
    .sw-hero { min-height: 440px; }
    .sw-hero__content { padding-top: 100px; padding-bottom: 56px; }
}