/*
Theme Name: Modern Portfolio
Theme URI: https://fddl.dev
Author: Tristan
Author URI: https://fddl.dev
Description: A clean, UX-driven portfolio theme for a web developer who also ships Swift projects. Apple-adjacent aesthetic with automatic light/dark mode, soft surfaces, and a type-first hero.
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: modern-portfolio
Tags: portfolio, minimal, dark-mode, responsive, custom-menu, featured-images
*/

/* =========================================================
   DESIGN TOKENS
   =========================================================
   Apple-adjacent: SF-like system stack, soft surfaces,
   generous space, restrained color. Tokens are defined for
   light mode on :root and overridden in .theme-dark.
   ========================================================= */
:root {
    /* Typography */
    --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display",
        "Inter", "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;
    --font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas,
        "Liberation Mono", monospace;

    /* Type scale (fluid-ish, but with clean fallbacks) */
    --fs-xs: 0.8125rem;   /* 13 */
    --fs-sm: 0.9375rem;   /* 15 */
    --fs-base: 1.0625rem; /* 17 — Apple body size */
    --fs-md: 1.25rem;     /* 20 */
    --fs-lg: 1.75rem;     /* 28 */
    --fs-xl: 2.5rem;      /* 40 */
    --fs-2xl: clamp(2.75rem, 5vw + 1rem, 4.5rem);
    --fs-3xl: clamp(3.5rem, 7vw + 1rem, 6rem);

    --lh-tight: 1.1;
    --lh-snug: 1.3;
    --lh-normal: 1.55;
    --lh-relaxed: 1.7;

    --tracking-tight: -0.022em;
    --tracking-tighter: -0.03em;
    --tracking-wide: 0.04em;
    --tracking-widest: 0.14em;

    /* Spacing scale (8pt-ish) */
    --s-1: 0.25rem;
    --s-2: 0.5rem;
    --s-3: 0.75rem;
    --s-4: 1rem;
    --s-5: 1.5rem;
    --s-6: 2rem;
    --s-7: 3rem;
    --s-8: 4rem;
    --s-9: 6rem;
    --s-10: 8rem;

    /* Layout */
    --container: 1120px;
    --container-narrow: 720px;
    --radius-sm: 8px;
    --radius: 14px;
    --radius-lg: 22px;
    --radius-xl: 28px;

    /* Light theme colors */
    --color-bg: #fbfbfd;               /* Apple-ish off-white */
    --color-bg-elev: #ffffff;
    --color-surface: #ffffff;
    --color-surface-2: #f2f2f4;
    --color-border: rgba(0, 0, 0, 0.08);
    --color-border-strong: rgba(0, 0, 0, 0.16);
    --color-text: #1d1d1f;             /* Apple near-black */
    --color-text-muted: #6e6e73;
    --color-text-subtle: #86868b;
    --color-accent: #0071e3;           /* Apple blue */
    --color-accent-hover: #0077ed;
    --color-accent-soft: rgba(0, 113, 227, 0.1);
    --color-swift: #f05138;            /* Swift orange */
    --color-swift-soft: rgba(240, 81, 56, 0.1);

    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
    --shadow: 0 6px 20px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
    --shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04);

    --header-bg: rgba(251, 251, 253, 0.72);
    --header-border: rgba(0, 0, 0, 0.08);

    --transition-fast: 150ms cubic-bezier(0.22, 1, 0.36, 1);
    --transition: 250ms cubic-bezier(0.22, 1, 0.36, 1);
}

.theme-dark {
    --color-bg: #0a0a0c;
    --color-bg-elev: #111114;
    --color-surface: #141418;
    --color-surface-2: #1c1c21;
    --color-border: rgba(255, 255, 255, 0.08);
    --color-border-strong: rgba(255, 255, 255, 0.16);
    --color-text: #f5f5f7;
    --color-text-muted: #a1a1a6;
    --color-text-subtle: #6e6e73;
    --color-accent: #2997ff;
    --color-accent-hover: #52a9ff;
    --color-accent-soft: rgba(41, 151, 255, 0.14);
    --color-swift: #ff6a4a;
    --color-swift-soft: rgba(255, 106, 74, 0.14);

    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
    --shadow: 0 6px 20px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
    --shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.55), 0 2px 6px rgba(0, 0, 0, 0.3);

    --header-bg: rgba(10, 10, 12, 0.72);
    --header-border: rgba(255, 255, 255, 0.08);
}

/* Follow OS preference when user hasn't picked. The toggle adds/removes .theme-dark on <html>. */
@media (prefers-color-scheme: dark) {
    :root:not(.theme-light) {
        --color-bg: #0a0a0c;
        --color-bg-elev: #111114;
        --color-surface: #141418;
        --color-surface-2: #1c1c21;
        --color-border: rgba(255, 255, 255, 0.08);
        --color-border-strong: rgba(255, 255, 255, 0.16);
        --color-text: #f5f5f7;
        --color-text-muted: #a1a1a6;
        --color-text-subtle: #6e6e73;
        --color-accent: #2997ff;
        --color-accent-hover: #52a9ff;
        --color-accent-soft: rgba(41, 151, 255, 0.14);
        --color-swift: #ff6a4a;
        --color-swift-soft: rgba(255, 106, 74, 0.14);

        --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
        --shadow: 0 6px 20px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
        --shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.55), 0 2px 6px rgba(0, 0, 0, 0.3);

        --header-bg: rgba(10, 10, 12, 0.72);
        --header-border: rgba(255, 255, 255, 0.08);
    }
}

/* =========================================================
   RESET / BASE
   ========================================================= */
*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    background: var(--color-bg);
    color: var(--color-text);
    font-family: var(--font-sans);
    font-size: var(--fs-base);
    line-height: var(--lh-normal);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    transition: background-color var(--transition), color var(--transition);
}

img,
svg,
video {
    max-width: 100%;
    height: auto;
    display: block;
}

a {
    color: var(--color-accent);
    text-decoration: none;
    transition: color var(--transition-fast);
}

a:hover {
    color: var(--color-accent-hover);
}

button {
    font: inherit;
    color: inherit;
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
}

:focus-visible {
    outline: 2px solid var(--color-accent);
    outline-offset: 3px;
    border-radius: 4px;
}

/* Skip link (accessibility) */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    background: var(--color-accent);
    color: #fff;
    padding: var(--s-3) var(--s-4);
    z-index: 1000;
    border-radius: 0 0 var(--radius-sm) 0;
}
.skip-link:focus {
    left: 0;
}

/* =========================================================
   TYPOGRAPHY
   ========================================================= */
h1, h2, h3, h4, h5, h6 {
    margin: 0 0 var(--s-4);
    font-weight: 600;
    line-height: var(--lh-tight);
    letter-spacing: var(--tracking-tight);
    color: var(--color-text);
}

h1 { font-size: var(--fs-2xl); letter-spacing: var(--tracking-tighter); font-weight: 700; }
h2 { font-size: var(--fs-xl); }
h3 { font-size: var(--fs-lg); }
h4 { font-size: var(--fs-md); }

p {
    margin: 0 0 var(--s-4);
    line-height: var(--lh-relaxed);
    color: var(--color-text);
}

.text-muted { color: var(--color-text-muted); }
.text-subtle { color: var(--color-text-subtle); }

.eyebrow {
    display: inline-block;
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tracking-widest);
    text-transform: uppercase;
    color: var(--color-text-muted);
    margin-bottom: var(--s-4);
}

code, pre, kbd {
    font-family: var(--font-mono);
    font-size: 0.92em;
}

code {
    padding: 0.15em 0.4em;
    background: var(--color-surface-2);
    border-radius: 6px;
}

pre {
    padding: var(--s-4) var(--s-5);
    background: var(--color-surface-2);
    border-radius: var(--radius);
    overflow-x: auto;
    border: 1px solid var(--color-border);
}
pre code {
    background: none;
    padding: 0;
}

blockquote {
    margin: var(--s-6) 0;
    padding-left: var(--s-5);
    border-left: 3px solid var(--color-accent);
    color: var(--color-text-muted);
    font-style: italic;
}

hr {
    border: none;
    border-top: 1px solid var(--color-border);
    margin: var(--s-7) 0;
}

/* =========================================================
   LAYOUT
   ========================================================= */
.container {
    width: 100%;
    max-width: var(--container);
    margin: 0 auto;
    padding-left: var(--s-5);
    padding-right: var(--s-5);
}

.container-narrow {
    max-width: var(--container-narrow);
    margin: 0 auto;
    padding-left: var(--s-5);
    padding-right: var(--s-5);
}

.section {
    padding: var(--s-9) 0;
}

.section-compact {
    padding: var(--s-7) 0;
}

@media (max-width: 640px) {
    .section { padding: var(--s-7) 0; }
    .section-compact { padding: var(--s-6) 0; }
}

/* =========================================================
   HEADER / NAVIGATION
   ========================================================= */
.site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: var(--header-bg);
    backdrop-filter: saturate(180%) blur(16px);
    -webkit-backdrop-filter: saturate(180%) blur(16px);
    border-bottom: 1px solid var(--header-border);
    transition: background-color var(--transition), border-color var(--transition);
}

.site-header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-5);
    height: 60px;
}

.site-branding .site-title {
    margin: 0;
    font-size: var(--fs-base);
    font-weight: 600;
    letter-spacing: var(--tracking-tight);
}

.site-branding .site-title a {
    color: var(--color-text);
}

.site-branding .site-title a:hover {
    color: var(--color-text);
    opacity: 0.7;
}

.site-branding .site-description {
    display: none;
}

.main-navigation ul {
    list-style: none;
    display: flex;
    align-items: center;
    gap: var(--s-5);
    margin: 0;
    padding: 0;
}

.main-navigation a {
    display: inline-block;
    padding: var(--s-2) 0;
    color: var(--color-text-muted);
    font-size: var(--fs-sm);
    font-weight: 500;
    transition: color var(--transition-fast);
}

.main-navigation a:hover,
.main-navigation .current-menu-item > a {
    color: var(--color-text);
}

.header-right {
    display: flex;
    align-items: center;
    gap: var(--s-4);
}

/* Theme toggle */
.theme-toggle {
    width: 36px;
    height: 36px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-muted);
    border: 1px solid var(--color-border);
    background: var(--color-surface);
    transition: color var(--transition-fast), border-color var(--transition-fast),
        background-color var(--transition-fast), transform var(--transition-fast);
}
.theme-toggle:hover {
    color: var(--color-text);
    border-color: var(--color-border-strong);
    transform: translateY(-1px);
}
.theme-toggle svg { width: 18px; height: 18px; }
.theme-toggle .icon-sun { display: none; }
.theme-toggle .icon-moon { display: block; }
.theme-dark .theme-toggle .icon-sun { display: block; }
.theme-dark .theme-toggle .icon-moon { display: none; }

/* Mobile nav toggle */
.menu-toggle {
    display: none;
    width: 36px;
    height: 36px;
    align-items: center;
    justify-content: center;
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: 10px;
    background: var(--color-surface);
}

@media (max-width: 720px) {
    .main-navigation {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        padding: var(--s-4) var(--s-5) var(--s-5);
        background: var(--color-bg-elev);
        border-bottom: 1px solid var(--color-border);
        transform: translateY(-8px);
        opacity: 0;
        pointer-events: none;
        transition: transform var(--transition), opacity var(--transition);
    }
    .main-navigation.is-open {
        transform: translateY(0);
        opacity: 1;
        pointer-events: auto;
    }
    .main-navigation ul {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--s-3);
    }
    .menu-toggle { display: inline-flex; }
}

/* =========================================================
   HERO
   ========================================================= */
.hero {
    padding: var(--s-10) 0 var(--s-9);
    position: relative;
    overflow: hidden;
}

.hero-inner {
    max-width: 840px;
}

.hero h1 {
    font-size: var(--fs-3xl);
    font-weight: 700;
    letter-spacing: var(--tracking-tighter);
    line-height: 1.05;
    margin-bottom: var(--s-5);
    background: linear-gradient(180deg, var(--color-text) 0%, var(--color-text-muted) 120%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.hero-lede {
    font-size: var(--fs-md);
    line-height: var(--lh-snug);
    color: var(--color-text-muted);
    margin-bottom: var(--s-6);
    max-width: 640px;
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--s-3);
    margin-top: var(--s-5);
}

@media (max-width: 640px) {
    .hero { padding: var(--s-8) 0 var(--s-7); }
}

/* =========================================================
   BUTTONS
   ========================================================= */
.btn {
    display: inline-flex;
    align-items: center;
    gap: var(--s-2);
    padding: 0.6875rem 1.25rem;
    font-size: var(--fs-sm);
    font-weight: 500;
    border-radius: 999px;
    border: 1px solid transparent;
    transition: background-color var(--transition-fast),
        color var(--transition-fast),
        border-color var(--transition-fast),
        transform var(--transition-fast);
    text-decoration: none;
    line-height: 1;
    white-space: nowrap;
}

.btn-primary {
    background: var(--color-accent);
    color: #fff;
}
.btn-primary:hover {
    background: var(--color-accent-hover);
    color: #fff;
    transform: translateY(-1px);
}

.btn-secondary {
    background: transparent;
    color: var(--color-text);
    border-color: var(--color-border-strong);
}
.btn-secondary:hover {
    color: var(--color-text);
    background: var(--color-surface-2);
    transform: translateY(-1px);
}

.btn-ghost {
    background: transparent;
    color: var(--color-text-muted);
    padding: var(--s-2) var(--s-3);
}
.btn-ghost:hover {
    color: var(--color-text);
    background: var(--color-surface-2);
}

.btn .arrow { transition: transform var(--transition-fast); }
.btn:hover .arrow { transform: translateX(3px); }

/* =========================================================
   SECTION HEADINGS
   ========================================================= */
.section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--s-5);
    margin-bottom: var(--s-7);
    flex-wrap: wrap;
}

.section-head h2 {
    margin: 0;
    font-size: var(--fs-xl);
    letter-spacing: var(--tracking-tighter);
}

.section-head .section-sub {
    color: var(--color-text-muted);
    margin: var(--s-2) 0 0;
    max-width: 520px;
    font-size: var(--fs-sm);
    line-height: var(--lh-snug);
}

/* =========================================================
   PROJECT GRID / CARDS
   ========================================================= */
.project-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: var(--s-5);
}

.project-card {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: transform var(--transition),
        border-color var(--transition),
        box-shadow var(--transition);
}

.project-card:hover {
    transform: translateY(-4px);
    border-color: var(--color-border-strong);
    box-shadow: var(--shadow-lg);
}

.project-card-link {
    color: inherit;
    display: flex;
    flex-direction: column;
    height: 100%;
}
.project-card-link:hover { color: inherit; }

.project-card-media {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--color-surface-2);
}

.project-card-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 500ms cubic-bezier(0.22, 1, 0.36, 1);
}
.project-card:hover .project-card-media img {
    transform: scale(1.04);
}

.project-card-media.placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--color-surface-2), var(--color-surface));
    color: var(--color-text-subtle);
    font-family: var(--font-mono);
    font-size: var(--fs-sm);
}

.project-card-body {
    padding: var(--s-5);
    display: flex;
    flex-direction: column;
    gap: var(--s-2);
    flex: 1;
}

.project-card-meta {
    display: flex;
    align-items: center;
    gap: var(--s-2);
    font-size: var(--fs-xs);
    color: var(--color-text-subtle);
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    margin-bottom: var(--s-1);
}

.project-card-title {
    font-size: var(--fs-md);
    font-weight: 600;
    letter-spacing: var(--tracking-tight);
    margin: 0;
    color: var(--color-text);
}

.project-card-excerpt {
    font-size: var(--fs-sm);
    color: var(--color-text-muted);
    line-height: var(--lh-snug);
    margin: 0;
}

/* Tag chip */
.tag {
    display: inline-flex;
    align-items: center;
    gap: 0.35em;
    padding: 0.25em 0.625em;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.02em;
    background: var(--color-surface-2);
    color: var(--color-text-muted);
    border: 1px solid var(--color-border);
    text-transform: none;
}

.tag-swift {
    background: var(--color-swift-soft);
    color: var(--color-swift);
    border-color: transparent;
}

.tag-web {
    background: var(--color-accent-soft);
    color: var(--color-accent);
    border-color: transparent;
}

.tag-django {
    background: rgba(9, 150, 90, 0.12);
    color: #09965a;
    border-color: transparent;
}

.tag-nextjs {
    background: rgba(120, 120, 120, 0.12);
    color: var(--color-text-muted);
    border-color: transparent;
}

.tag-wordpress {
    background: rgba(33, 117, 155, 0.12);
    color: #21759b;
    border-color: transparent;
}

.tag-music {
    background: var(--color-surface-2);
    color: var(--color-text-muted);
}

/* =========================================================
   LIST / ARTICLE STYLES (blog, archive, single)
   ========================================================= */
.post-list {
    display: flex;
    flex-direction: column;
}

.post-list-item {
    display: block;
    padding: var(--s-5) 0;
    border-bottom: 1px solid var(--color-border);
    color: inherit;
}
.post-list-item:first-child { border-top: 1px solid var(--color-border); }
.post-list-item:hover { color: inherit; }

.post-list-item-inner {
    display: grid;
    grid-template-columns: 140px 1fr auto;
    gap: var(--s-5);
    align-items: baseline;
}

.post-list-date {
    font-size: var(--fs-xs);
    color: var(--color-text-subtle);
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    font-family: var(--font-mono);
}

.post-list-title {
    font-size: var(--fs-md);
    font-weight: 600;
    letter-spacing: var(--tracking-tight);
    margin: 0 0 var(--s-2);
    color: var(--color-text);
    transition: color var(--transition-fast);
}
.post-list-item:hover .post-list-title {
    color: var(--color-accent);
}

.post-list-excerpt {
    color: var(--color-text-muted);
    font-size: var(--fs-sm);
    line-height: var(--lh-snug);
    margin: 0;
}

.post-list-cta {
    color: var(--color-text-subtle);
    font-size: var(--fs-sm);
    white-space: nowrap;
}

@media (max-width: 720px) {
    .post-list-item-inner {
        grid-template-columns: 1fr;
        gap: var(--s-2);
    }
    .post-list-cta { display: none; }
}

/* Single article */
.single-article {
    width: 100%;
    max-width: var(--container-narrow);
    margin-left: auto;
    margin-right: auto;
    padding: var(--s-9) var(--s-6) var(--s-10);
    text-align: center;
}

.single-header {
    text-align: center;
    margin-bottom: var(--s-8);
}

.single-header .eyebrow { margin-bottom: var(--s-3); }

.single-header h1 {
    font-size: var(--fs-2xl);
    margin-bottom: var(--s-4);
    letter-spacing: var(--tracking-tighter);
}

.single-meta {
    display: flex;
    justify-content: center;
    gap: var(--s-5);
    flex-wrap: wrap;
    color: var(--color-text-subtle);
    font-size: var(--fs-xs);
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    font-family: var(--font-mono);
    padding-bottom: var(--s-5);
    border-bottom: 1px solid var(--color-border);
    margin-bottom: var(--s-6);
}

.single-featured-image {
    border-radius: var(--radius-lg);
    overflow: hidden;
    margin-bottom: var(--s-8);
    border: 1px solid var(--color-border);
    display: flex;
    justify-content: center;
}
.single-featured-image img {
    width: 100%;
    height: auto;
    display: block;
}

.entry-content {
    font-size: var(--fs-base);
    line-height: var(--lh-relaxed);
}

.entry-content p,
.entry-content ul,
.entry-content ol,
.entry-content figure,
.entry-content pre,
.entry-content blockquote {
    margin-bottom: var(--s-5);
}

.entry-content img {
    border-radius: var(--radius);
    border: 1px solid var(--color-border);
    display: block;
    margin-left: auto;
    margin-right: auto;
}

.entry-content h2 {
    text-align: center;
    font-size: var(--fs-lg);
    margin-top: var(--s-8);
    margin-bottom: var(--s-4);
}

.entry-content h3 {
    text-align: center;
    font-size: var(--fs-md);
    margin-top: var(--s-7);
    margin-bottom: var(--s-4);
}

.entry-content ul,
.entry-content ol {
    display: inline-block;
    text-align: left;
    padding-left: var(--s-6);
    margin-left: auto;
    margin-right: auto;
}

.entry-content li { margin-bottom: var(--s-2); }

.entry-content a {
    color: var(--color-accent);
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-thickness: 1px;
    text-decoration-color: color-mix(in srgb, var(--color-accent) 40%, transparent);
}
.entry-content a:hover {
    text-decoration-color: var(--color-accent);
}

/* =========================================================
   PAGINATION
   ========================================================= */
.pagination {
    display: flex;
    justify-content: center;
    gap: var(--s-3);
    margin-top: var(--s-7);
}

.pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 var(--s-3);
    border-radius: 999px;
    border: 1px solid var(--color-border);
    color: var(--color-text-muted);
    font-size: var(--fs-sm);
    text-decoration: none;
    transition: all var(--transition-fast);
}

.pagination .page-numbers.current {
    background: var(--color-text);
    color: var(--color-bg);
    border-color: var(--color-text);
}

.pagination .page-numbers:not(.current):hover {
    color: var(--color-text);
    border-color: var(--color-border-strong);
}

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer {
    margin-top: var(--s-10);
    padding: var(--s-7) 0 var(--s-6);
    border-top: 1px solid var(--color-border);
    color: var(--color-text-muted);
    font-size: var(--fs-sm);
}

.site-footer-inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--s-5);
    flex-wrap: wrap;
}

.site-footer a { color: var(--color-text-muted); }
.site-footer a:hover { color: var(--color-text); }

.footer-social {
    display: flex;
    gap: var(--s-4);
    list-style: none;
    margin: 0;
    padding: 0;
}

/* =========================================================
   UTILITIES
   ========================================================= */
.sr-only,
.screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.stack > * + * { margin-top: var(--s-4); }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
    html { scroll-behavior: auto; }
}

/* =========================================================
   CONTACT FORM
   ========================================================= */
.contact-form-wrapper {
    margin-top: var(--s-8);
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
    text-align: left;
}

.contact-form {
    display: flex;
    flex-direction: column;
    gap: var(--s-5);
}

.form-group {
    display: flex;
    flex-direction: column;
    gap: var(--s-2);
}

.form-group label {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--color-text);
}

.form-group label .required {
    color: var(--color-swift);
}

.form-group input,
.form-group textarea {
    width: 100%;
    padding: var(--s-3) var(--s-4);
    font-family: inherit;
    font-size: var(--fs-base);
    color: var(--color-text);
    background: var(--color-surface-2);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.form-group input:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--color-accent);
    box-shadow: 0 0 0 3px var(--color-accent-soft);
}

.form-status {
    padding: var(--s-4);
    margin-bottom: var(--s-6);
    border-radius: var(--radius-sm);
    font-size: var(--fs-sm);
    text-align: center;
}

.form-status.form-success {
    background: rgba(9, 150, 90, 0.12);
    color: #09965a;
    border: 1px solid rgba(9, 150, 90, 0.2);
}

.form-status.form-error {
    background: var(--color-swift-soft);
    color: var(--color-swift);
    border: 1px solid rgba(255, 106, 74, 0.2);
}
