:root {
    --pine-950: #071e17;
    --pine-900: #0c2b21;
    --pine-800: #123a2c;
    --pine-700: #1b4d3e;
    --pine-600: #2d6a54;
    --primary: #1B4D3E;
    --primary-dark: #0f3529;
    --primary-bg: #f0f5f2;
    --leaf-300: #d3f29a;
    --leaf-400: #b8e663;
    --leaf-500: #9ed54a;
    --leaf-ink: #0b2a1f;
    --ochre-300: #e2934f;
    --ochre-500: #9d4c17;
    --ochre-soft: rgba(157, 76, 23, 0.13);
    --mist-50: #f5f6f2;
    --mist-100: #eceee9;
    --paper: #f5f6f2;
    --paper-deep: #eceee9;
    --bg-subtle: #f5f6f2;
    --surface: #ffffff;
    --text-1: #1f2a24;
    --text-2: #4a544c;
    --text-3: #6a665a;
    --text-dark: #f2f7f4;
    --text-dark-muted: rgba(230, 240, 235, 0.72);
    --border: #e7e6e1;
    --border-strong: #d8d7d2;
    --line-dark: rgba(255, 255, 255, 0.14);
    --shadow-card: 0 1px 2px rgba(7, 30, 23, 0.05), 0 1px 3px rgba(7, 30, 23, 0.07);
    --success: #047857;
    --success-bg: #ecfdf5;
    --success-dark: #166534;
    --warning: #b45309;
    --warning-bg: #fffbeb;
    --warning-dark: #92400e;
    --danger: #b91c1c;
    --danger-bg: #fef2f2;
    --danger-dark: #991b1b;
    --info: #2563eb;
    --info-bg: #eff6ff;
    --info-dark: #1e40af;
    --accent: #6a6f6a;
    --accent-dark: #4a544c;
    --accent-bg: #eef0ec;
    --radius-sm: 6px;
    --radius-md: 8px;
    --radius-tile: 10px;
    --radius-card: 14px;
    --radius-pill: 9999px;
    --ease: cubic-bezier(0.4, 0, 0.2, 1);
    --trans-fast: all 0.15s var(--ease);
    --trans: all 0.2s var(--ease);
    --font-display: 'Schibsted Grotesk', -apple-system, BlinkMacSystemFont, sans-serif;
    --font-brand: 'Bodoni Moda', Georgia, 'Times New Roman', serif;
    --font-mono: 'Spline Sans Mono', ui-monospace, 'SF Mono', Menlo, monospace;

    /* Type scale (public marketing pages) */
    --fs-2xs: 0.75rem;
    --fs-xs: 0.8125rem;
    --fs-sm: 0.875rem;
    --fs-base: 1rem;
    --fs-md: 1.0625rem;
    --fs-lg: 1.25rem;
    --fs-xl: 1.5rem;
    --fs-2xl: 2rem;
    --fs-3xl: 2.5rem;
    --fs-4xl: 3.25rem;
}

@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
*, *::before, *::after { box-sizing: border-box; }

body {
    font-family: var(--font-display); color: var(--text-1); line-height: 1.5;
    font-size: 16px; background: var(--bg-subtle); margin: 0;
    -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}
::selection { background: var(--leaf-400); color: var(--leaf-ink); }

h1, h2, h3, h4, h5, h6 { color: var(--text-1); font-weight: 600; line-height: 1.2; margin: 0; letter-spacing: -0.02em; text-wrap: balance; }
h1 { font-size: 1.75rem; } h2 { font-size: 1.25rem; } h3 { font-size: 1rem; } h4 { font-size: 0.95rem; }
p { margin: 0; }
a { color: var(--primary); text-decoration: none; transition: color 0.15s var(--ease); }
a:hover { color: var(--primary-dark); }

.text-muted { color: var(--text-3); }
.text-subtle { color: var(--text-3); font-size: 0.85rem; }
.text-danger { color: var(--danger); }
.text-success { color: var(--success); }
.text-warning { color: var(--warning); }
.text-primary { color: var(--primary); }
.fw-medium { font-weight: 500; }
.fw-semibold { font-weight: 600; }

.is-hidden { display: none !important; }

.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.skip-link {
    position: absolute; top: -100%; left: 0.5rem; z-index: 1100;
    background: var(--primary); color: #fff; font-weight: 600;
    padding: 0.6rem 1rem; border-radius: 0 0 var(--radius-sm) var(--radius-sm);
    text-decoration: none; transition: top 0.15s var(--ease);
}
.skip-link:focus { top: 0; color: #fff; }
:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }

/* Pressed feedback: physical push on interactive elements */
.btn-brand:active, .btn-outline-brand:active, .btn-ghost:active, .btn-danger-quiet:active,
.btn-action:active, .nav .nav-link:active, .sidebar-collapse-btn:active, .notif-btn:active,
.user-btn:active, .search-trigger:active, .bottom-nav-item:active {
    transform: translateY(1px) scale(0.99);
    transition-duration: 0.05s;
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* Components (buttons, badges, tables, dropdowns, callouts) live in
   components.css; form primitives live in forms.css; page layouts in
   layouts.css. This file is tokens + typography + global utilities only. */