/* Shared foundation. Composition lives in art-directions.css; theme controls luminance. */
:root {
 color-scheme: light;
 --bg: #edf0e9; --surface: #dde3d8; --paper: #fbfcf5;
 --ink: #1a2b24; --muted: #4c5e50; --line: #b7c4b6; --control-line: #657660;
 --accent: #785125; --on-accent: #fffaf0; --soft-accent: #e2d8bf;
 --band-bg: #142b20; --band-ink: #f4f0e3; --band-muted: #d0dac6; --band-accent: #e0c28b; --band-line: #70846d;
 --intro-bg: #11251d; --intro-ink: #f4f0e3; --intro-muted: #d0dac6; --intro-accent: #e0c28b;
 --cta-bg: #795329; --cta-ink: #fffaf0; --cta-line: #795329;
 --focus: #85510f; --error: #982f24; --status: #254b2d; --status-bg: #d3e7ce;
 --book-surface: #253c32; --book-ink: #eeeada; --photo-surface: #d7dfd1;
 --cinema-bg: #08180f; --cinema-ink: #f4f0e3; --cinema-muted: #d0ddc5; --cinema-accent: #e6c998; --cinema-line: #728368;
 --hero-shade: 4 18 14; --scene-shade: 4 18 15; --caption-bg: #06130fe8;
 --book-glow: #344533; --cinema-hover: #fff0cf; --fees-start: #211d17; --fees-end: #18251d;
 --book-intro-glow:#40504380; --book-intro-edge:#211d16;
 --serif: 'Source Serif 4', Georgia, serif; --sans: 'DM Sans', Arial, sans-serif;
 --body-size: 18px; --small-size: 15px; --label-size: 13px;
 --h1-size: clamp(3.2rem, 7.8vw, 7.25rem); --h2-size: clamp(2.4rem, 4.7vw, 4.4rem);
 --section-space: clamp(56px, 6vw, 92px); --intro-space: clamp(48px, 5.5vw, 84px);
 --grid-gap: clamp(32px, 5vw, 76px); --page-gutter: clamp(20px, 5vw, 80px); --content-width: 1320px;
 --rule-width: 2px; --button-radius: 1px; --image-scale: 1.08;
 --reveal-distance: 34px; --reveal-time: 1000ms; --hero-time: 2400ms; --switch-time: 850ms;
 --ease-out: cubic-bezier(.2,.75,.2,1); --ease-in-out: cubic-bezier(.4,0,.15,1);
}
:root[data-theme=dark] {
 color-scheme: dark;
 --bg: #0f1b16; --surface: #192c22; --paper: #22392b;
 --ink: #f0eee2; --muted: #bbcbb6; --line: #4c6650; --control-line: #90a487;
 --accent: #dfbf86; --on-accent: #102016; --soft-accent: #364431;
 --band-bg: #06130d; --band-ink: #f4f0e3; --band-muted: #c9d8bf; --band-accent: #e0c28b; --band-line: #718568;
 --intro-bg: #06130d; --intro-ink: #f4f0e3; --intro-muted: #c9d8bf; --intro-accent: #e0c28b;
 --cta-bg: #dfbf86; --cta-ink: #102016; --cta-line: #dfbf86;
 --focus: #ffce82; --error: #ffb5a3; --status: #d1e8c5; --status-bg: #2d4b32;
 --book-surface: #1b3024; --book-ink: #eeeada; --photo-surface: #273d2b;
}
:root[data-presentation=restorative] {
 --bg: #f5f0e6; --surface: #eae4d7; --paper: #fffaf0;
 --ink: #2b382d; --muted: #5c6455; --line: #c8c4b2; --control-line: #807c66;
 --accent: #745329; --on-accent: #fffaf0; --soft-accent: #e7dcc3;
 --band-bg: #e0e5d6; --band-ink: #293b2b; --band-muted: #4c5d45; --band-accent: #6c4e25; --band-line: #839477;
 --intro-bg: #eae4d7; --intro-ink: #2b382d; --intro-muted: #5c6455; --intro-accent: #745329;
 --cta-bg: #e4d4b5; --cta-ink: #333827; --cta-line: #8e7854;
 --restorative-cta-bg: var(--cta-bg); --restorative-cta-ink: var(--cta-ink); --restorative-cta-line: var(--cta-line);
 --book-surface: #d9dfd0; --book-ink: #30432e; --photo-surface: #e0e4d5;
 --h1-size: clamp(2.85rem, 5vw, 4.85rem); --h2-size: clamp(2.1rem, 3.25vw, 3.3rem);
 --section-space: clamp(64px, 7.4vw, 112px); --intro-space: clamp(52px, 6.2vw, 98px);
 --grid-gap: clamp(38px, 6.5vw, 100px); --rule-width: 1px; --button-radius: 3px;
 --image-scale: 1.025; --reveal-distance: 12px; --reveal-time: 1250ms; --hero-time: 3000ms; --switch-time: 1000ms;
}
:root[data-presentation=restorative][data-theme=dark] {
 color-scheme: dark;
 --bg: #232b23; --surface: #303b2f; --paper: #3a4738;
 --ink: #f3ecdd; --muted: #d0d0bd; --line: #687562; --control-line: #acb29a;
 --accent: #e0c99e; --on-accent: #233022; --soft-accent: #454d36;
 --band-bg: #354530; --band-ink: #f3ecdd; --band-muted: #d6deca; --band-accent: #e4cda1; --band-line: #94a285;
 --intro-bg: #303b2f; --intro-ink: #f3ecdd; --intro-muted: #d0d0bd; --intro-accent: #e0c99e;
 --cta-bg: #49593c; --cta-ink: #fff3d7; --cta-line: #a8ad88;
 --book-surface: #3c4d38; --book-ink: #f3ecdd; --photo-surface: #40513a;
}
/* Reversible DEV exploration. Forest above remains the default, unchanged.
   Only dark luminance changes; composition and light tokens are independent. */
:root[data-palette-preview][data-theme=dark][data-palette=midnight] {
 --bg:#111820; --surface:#1b2633; --paper:#243241;
 --ink:#f3ede1; --muted:#c3c8cf; --line:#495a6d; --control-line:#8e9dad;
 --accent:#d5b37d; --on-accent:#151b23; --soft-accent:#37362e;
 --band-bg:#0c131d; --band-ink:#f3ede1; --band-muted:#c3c8cf; --band-accent:#d5b37d; --band-line:#7e8c9e;
 --intro-bg:#0c131d; --intro-ink:#f3ede1; --intro-muted:#c3c8cf; --intro-accent:#d5b37d;
 --cta-bg:#d5b37d; --cta-ink:#151b23; --cta-line:#d5b37d;
 --focus:#f2cc8f; --error:#ffb9a8; --status:#d0e0d2; --status-bg:#293e39;
 --book-surface:#273343; --book-ink:#f3ede1; --photo-surface:#2c3948;
 --cinema-bg:#0a111a; --cinema-ink:#f3ede1; --cinema-muted:#ccd0d5; --cinema-accent:#e0bd88; --cinema-line:#8290a1;
 --hero-shade:8 14 23; --scene-shade:8 14 23; --caption-bg:#0a111ae8;
 --book-glow:#273343; --cinema-hover:#f5dfbc; --fees-start:#242328; --fees-end:#151e2b;
 --book-intro-glow:#27334380; --book-intro-edge:#242328;
}
:root[data-palette-preview][data-theme=dark][data-palette=graphite] {
 --bg:#1b1918; --surface:#2a2725; --paper:#37322e;
 --ink:#f3ece3; --muted:#cec2b7; --line:#665a50; --control-line:#aa9887;
 --accent:#ddb18c; --on-accent:#241c17; --soft-accent:#49392e;
 --band-bg:#141211; --band-ink:#f3ece3; --band-muted:#cec2b7; --band-accent:#ddb18c; --band-line:#a28f7e;
 --intro-bg:#151312; --intro-ink:#f3ece3; --intro-muted:#cec2b7; --intro-accent:#ddb18c;
 --cta-bg:#ddb18c; --cta-ink:#241c17; --cta-line:#ddb18c;
 --focus:#f3c89e; --error:#ffb9a8; --status:#d4e0cf; --status-bg:#354034;
 --book-surface:#40352d; --book-ink:#f3ece3; --photo-surface:#403a34;
 --cinema-bg:#11100f; --cinema-ink:#f3ece3; --cinema-muted:#d3c7ba; --cinema-accent:#e3b893; --cinema-line:#a28f7e;
 --hero-shade:18 16 15; --scene-shade:18 16 15; --caption-bg:#11100fe8;
 --book-glow:#403229; --cinema-hover:#f5dcc5; --fees-start:#30251e; --fees-end:#211d1a;
 --book-intro-glow:#40322980; --book-intro-edge:#30251e;
}
:root[data-palette-preview][data-theme=dark][data-palette=midnight][data-presentation=restorative] {
 --bg:#202b37; --surface:#2c3948; --paper:#354558;
 --muted:#d1d3d8; --line:#65778d; --control-line:#a2afbd; --accent:#dfc49b;
 --band-bg:#2a3848; --band-accent:#dfc49b; --band-muted:#d1d3d8; --band-line:#a2afbd;
 --intro-bg:#2c3948; --intro-muted:#d1d3d8; --intro-accent:#dfc49b;
 --cta-bg:#465265; --cta-ink:#fff2de; --cta-line:#b8a282;
 --book-surface:#354558; --photo-surface:#354558;
}
:root[data-palette-preview][data-theme=dark][data-palette=graphite][data-presentation=restorative] {
 --bg:#2a2724; --surface:#37312c; --paper:#433b34;
 --ink:#f5eee5; --muted:#d3c7ba; --line:#7b6c5d; --control-line:#b4a18e; --accent:#e2bd99;
 --band-bg:#39312a; --band-ink:#f5eee5; --band-muted:#d3c7ba; --band-accent:#e2bd99; --band-line:#b4a18e;
 --intro-bg:#37312c; --intro-ink:#f5eee5; --intro-muted:#d3c7ba; --intro-accent:#e2bd99;
 --cta-bg:#5c4535; --cta-ink:#fff1de; --cta-line:#bea185;
 --book-surface:#433b34; --photo-surface:#433b34;
}
/* Device theme is also respected when JavaScript is unavailable. */
@media(prefers-color-scheme:dark) {
 :root:not([data-theme]) {
  color-scheme:dark; --bg:#0f1b16; --surface:#192c22; --paper:#22392b; --ink:#f0eee2; --muted:#bbcbb6;
  --line:#4c6650; --control-line:#90a487; --accent:#dfbf86; --on-accent:#102016; --soft-accent:#364431;
  --band-bg:#06130d; --band-ink:#f4f0e3; --band-muted:#c9d8bf; --band-accent:#e0c28b; --band-line:#718568;
  --intro-bg:#06130d; --intro-ink:#f4f0e3; --intro-muted:#c9d8bf; --intro-accent:#e0c28b;
  --cta-bg:#dfbf86; --cta-ink:#102016; --cta-line:#dfbf86; --focus:#ffce82; --error:#ffb5a3;
  --status:#d1e8c5; --status-bg:#2d4b32; --book-surface:#1b3024; --book-ink:#eeeada; --photo-surface:#273d2b;
 }
}
@media(max-width:680px) {
 :root {--page-gutter:20px; --body-size:17px; --h1-size:clamp(2.8rem,12vw,4.6rem); --h2-size:clamp(2.25rem,10vw,3.3rem); --reveal-distance:20px; --hero-time:2000ms; --switch-time:650ms;}
 :root[data-presentation=restorative] {--h1-size:clamp(2.65rem,10.5vw,3.8rem); --h2-size:clamp(2rem,8vw,2.8rem); --reveal-distance:8px; --hero-time:2400ms; --switch-time:750ms;}
}
