:root {
    /* Color Palette */
    --color-background: #f8f8f6; /* Very light, warm grey */
    --color-surface: #ffffff;    /* White for cards, modals */
    --color-primary: #607D8B;    /* Soft blue-grey */
    --color-primary-dark: #455A64; /* Darker blue-grey for hover */
    --color-secondary: #A1887F; /* Muted brown */
    --color-accent: #81C784;     /* Gentle green for success/actions */
    --color-text-primary: #424242; /* Dark grey */
    --color-text-secondary: #757575; /* Medium grey */
    --color-text-subtle: #9E9E9E;   /* Light grey */
    --color-border: #E0E0E0;      /* Light grey border */
    --color-error: #E57373;      /* Soft red */
    --color-success: var(--color-accent);

    /* Fonts */
    --font-primary: 'Lato', sans-serif;
    --font-secondary: 'Merriweather', serif;

    /* Spacing */
    --spacing-xs: 0.25rem;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 1.5rem;
    --spacing-xl: 2rem;
    --spacing-xxl: 3rem;

    /* Borders */
    --border-radius: 4px;
    --border-standard: 1px solid var(--color-border);

    /* Shadows */
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
    --shadow-md: 0 3px 6px rgba(0, 0, 0, 0.1);
    --shadow-lg: 0 10px 20px rgba(0, 0, 0, 0.1);
}

*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    font-size: 16px;
    scroll-behavior: smooth;
}

body {
    font-family: var(--font-primary);
    line-height: 1.6;
    color: var(--color-text-primary);
    background-color: var(--color-background);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-secondary);
    font-weight: 400; /* Merriweather regular */
    line-height: 1.3;
    color: var(--color-primary);
    margin-bottom: var(--spacing-md);
}
h1 { font-size: 2.5rem; }
h2 { font-size: 2rem; }
h3 { font-size: 1.5rem; }
h4 { font-size: 1.25rem; }

a {
    color: var(--color-secondary);
    text-decoration: none;
    transition: color 0.2s ease;
}

a:hover,
a:focus {
    color: var(--color-primary);
    text-decoration: underline;
}

p {
    margin-bottom: var(--spacing-md);
}

ul, ol {
    list-style-position: inside;
    margin-bottom: var(--spacing-md);
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

blockquote {
    margin: var(--spacing-md) 0;
    padding-left: var(--spacing-md);
    border-left: 3px solid var(--color-accent);
    font-style: italic;
    color: var(--color-text-secondary);
}

hr {
    border: 0;
    height: 1px;
    background-color: var(--color-border);
    margin: var(--spacing-lg) 0;
}

/* Utility Classes */
.required {
    color: var(--color-error);
    margin-left: var(--spacing-xs);
}

.error-message {
    color: var(--color-error);
    background-color: #fdecea; /* Light red background */
    border: 1px solid var(--color-error);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-md);
}

.success-message {
    color: #1B5E20; /* Dark Green */
    background-color: #E8F5E9; /* Light green background */
    border: 1px solid var(--color-success);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-md);
}

.message-area {
     margin-bottom: var(--spacing-lg);
} 