:root {
    /* Light Mode Variables */
    --bg-color: #ffffff;
    --text-color: #333333;
    --text-muted: #666666;
    --nav-bg: rgba(255, 255, 255, 0.85);
    --card-bg: #ffffff;
    --border-color: rgba(0, 0, 0, 0.1);
    --primary-color: #65AA51;
    --primary-hover: #559144;
    --section-padding: 100px 5%;
    --glass-border: rgba(255, 255, 255, 0.2);
}

[data-theme="dark"] {
    /* Dark Mode Variables - Clean Blacks and Grays */
    --bg-color: #0a0a0a; /* Deep black */
    --text-color: #ededed; /* Near white */
    --text-muted: #a1a1a1; /* Medium gray */
    --nav-bg: rgba(10, 10, 10, 0.85); /* Black glass */
    --card-bg: #171717; /* Dark gray card background */
    --border-color: rgba(255, 255, 255, 0.1);
    --glass-border: rgba(255, 255, 255, 0.15);
}

/* Reset and base styles */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

main,
section {
    position: relative;
    width: 100%;
    /* Let sections determine their own height/padding */
}

html {
    scroll-behavior: smooth;
}

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    min-height: 100vh;
    background: var(--bg-color);
    color: var(--text-color);
    overflow-x: hidden;
}

/* ─── Global Theme Transition ─── */
.theme-transition,
.theme-transition *,
.theme-transition *::before,
.theme-transition *::after {
    transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease, fill 0.35s ease, stroke 0.35s ease !important;
}

/* ─── Image Glow — light behind app screenshots ─── */
.image-glow {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.image-glow::before {
    content: '';
    position: absolute;
    width: 80%;
    height: 70%;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: radial-gradient(ellipse, rgba(101, 170, 81, 0.18) 0%, rgba(101, 170, 81, 0.06) 40%, transparent 70%);
    filter: blur(40px);
    border-radius: 50%;
    pointer-events: none;
    z-index: -1;
}

/* ─── Global Noise Overlay ─── */
body::after {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 9999;
    pointer-events: none;
    opacity: 0.04;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-repeat: repeat;
    background-size: 180px;
}
