/* GENERATED by scripts/gallery/build.py — DO NOT EDIT BY HAND.
 * Source of truth: themes/contract/contract.json + themes/suite/<id>/.
 * Regenerate: python3 scripts/gallery/build.py
 * Drift guard: python3 scripts/gallery/build.py --check
 *
 * THE TOKEN SHEET — loaded by every page.
 *
 * Custom properties only. `--pk-<id>-*` are the pack's own values;
 * `--pw-*` are the contract's roles, pointing at them. Nothing here
 * paints anything, which is what makes it safe site-wide.
 */

/* --- Architect Steve (architect-steve, gen3, dark) --- */
[data-pw-theme="architect-steve"], .pw-theme-architect-steve{
  --pk-architect-steve-accent: #f2b134;
  --pk-architect-steve-accent-deep: #c8891c;
  --pk-architect-steve-accent-soft: #4a3813;
  --pk-architect-steve-amber: #d9d152;
  --pk-architect-steve-amber-soft: #4a4718;
  --pk-architect-steve-bg: #0e2440;
  --pk-architect-steve-bg2: #091a30;
  --pk-architect-steve-border: 1px solid #3c6493;
  --pk-architect-steve-card: #143050;
  --pk-architect-steve-contract: "gallery/1.0";
  --pk-architect-steve-control: url("/theme/architect-steve/controls/revision-tag.svg");
  --pk-architect-steve-crit: #ff6f61;
  --pk-architect-steve-crit-soft: #4d1c18;
  --pk-architect-steve-divider: url("/theme/architect-steve/patterns/dimension-rule.svg");
  --pk-architect-steve-faint: #7e9cbe;
  --pk-architect-steve-font-body: Tahoma, Verdana, "DejaVu Sans", Arial, sans-serif;
  --pk-architect-steve-font-disp: "Arial Narrow", "Helvetica Neue Condensed", Tahoma, Arial, sans-serif;
  --pk-architect-steve-font-mono: Consolas, "Lucida Console", "DejaVu Sans Mono", "Courier New", monospace;
  --pk-architect-steve-frame: url("/theme/architect-steve/frames/title-block.svg");
  --pk-architect-steve-good: #56c98d;
  --pk-architect-steve-good-soft: #123d2c;
  --pk-architect-steve-hero: url("/theme/architect-steve/illustrations/axonometric.svg");
  --pk-architect-steve-ink: #eaf2fb;
  --pk-architect-steve-line: #3c6493;
  --pk-architect-steve-line2: #24446c;
  --pk-architect-steve-logo: url("/theme/architect-steve/logos/wordmark.svg");
  --pk-architect-steve-muted: #a9c4e2;
  --pk-architect-steve-panel: #1b3c62;
  --pk-architect-steve-pattern: url("/theme/architect-steve/patterns/blueprint-grid.svg");
  --pk-architect-steve-radius: 0px;
  --pk-architect-steve-shadow: 0 1px 0 #06101d;
  --pk-architect-steve-shadow-lg: 0 3px 0 #06101d;
  --pk-architect-steve-stamp: #f0554a;
  --pk-architect-steve-surface: #143050;
  --pk-architect-steve-warn: #e8873c;
  --pw-accent: var(--pk-architect-steve-accent);
  --pw-accent-deep: var(--pk-architect-steve-accent-deep);
  --pw-accent-soft: var(--pk-architect-steve-accent-soft);
  --pw-amber: var(--pk-architect-steve-amber);
  --pw-amber-soft: var(--pk-architect-steve-amber-soft);
  --pw-bg: var(--pk-architect-steve-bg);
  --pw-bg2: var(--pk-architect-steve-bg2);
  --pw-border: var(--pk-architect-steve-border);
  --pw-card: var(--pk-architect-steve-card);
  --pw-crit: var(--pk-architect-steve-crit);
  --pw-crit-soft: var(--pk-architect-steve-crit-soft);
  --pw-faint: var(--pk-architect-steve-faint);
  --pw-font-body: var(--pk-architect-steve-font-body);
  --pw-font-disp: var(--pk-architect-steve-font-disp);
  --pw-font-mono: var(--pk-architect-steve-font-mono);
  --pw-good: var(--pk-architect-steve-good);
  --pw-good-soft: var(--pk-architect-steve-good-soft);
  --pw-ink: var(--pk-architect-steve-ink);
  --pw-line: var(--pk-architect-steve-line);
  --pw-line2: var(--pk-architect-steve-line2);
  --pw-muted: var(--pk-architect-steve-muted);
  --pw-panel: var(--pk-architect-steve-panel);
  --pw-radius: var(--pk-architect-steve-radius);
  --pw-shadow: var(--pk-architect-steve-shadow);
  --pw-shadow-lg: var(--pk-architect-steve-shadow-lg);
  --pw-stamp: var(--pk-architect-steve-stamp);
  --pw-surface: var(--pk-architect-steve-surface);
  --pw-warn: var(--pk-architect-steve-warn);
  --pw-scheme: dark;
  --pw-control: url("/theme/architect-steve/controls/revision-tag.svg");
  --pw-divider: url("/theme/architect-steve/patterns/dimension-rule.svg");
  --pw-frame: url("/theme/architect-steve/frames/title-block.svg");
  --pw-hero: url("/theme/architect-steve/illustrations/axonometric.svg");
  --pw-logo: url("/theme/architect-steve/logos/wordmark.svg");
  --pw-pattern: url("/theme/architect-steve/patterns/blueprint-grid.svg");
  --pw-icon-counter: url("/theme/architect-steve/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/architect-steve/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/architect-steve/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/architect-steve/icons/localnode.svg");
  --pw-icon-news: url("/theme/architect-steve/icons/news.svg");
  --pw-icon-records: url("/theme/architect-steve/icons/records.svg");
  --pw-icon-studio: url("/theme/architect-steve/icons/studio.svg");
  --pw-icon-town-square: url("/theme/architect-steve/icons/town-square.svg");
}

/* --- The B-Team (b-team, gen1, dark) --- */
[data-pw-theme="b-team"], .pw-theme-b-team{
  --pk-b-team-accent: #D99A2B;
  --pk-b-team-border: 2px solid;
  --pk-b-team-dark: #0B0B0B;
  --pk-b-team-extra: #7B807E;
  --pk-b-team-font-body: Inter, "Helvetica Neue", Arial, sans-serif;
  --pk-b-team-font-display: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif;
  --pk-b-team-font-mono: "IBM Plex Mono", "Courier New", monospace;
  --pk-b-team-hero: url("/theme/b-team/illustrations/hero.svg");
  --pk-b-team-icon-counter: url("/theme/b-team/icons/counter.svg");
  --pk-b-team-icon-field-kit: url("/theme/b-team/icons/field-kit.svg");
  --pk-b-team-icon-hoodbuster: url("/theme/b-team/icons/hoodbuster.svg");
  --pk-b-team-icon-localnode: url("/theme/b-team/icons/localnode.svg");
  --pk-b-team-icon-news: url("/theme/b-team/icons/news.svg");
  --pk-b-team-icon-records: url("/theme/b-team/icons/records.svg");
  --pk-b-team-icon-studio: url("/theme/b-team/icons/studio.svg");
  --pk-b-team-icon-town-square: url("/theme/b-team/icons/town-square.svg");
  --pk-b-team-ink: #F2E6C9;
  --pk-b-team-paper: #171717;
  --pk-b-team-pattern: url("/theme/b-team/patterns/pattern.svg");
  --pk-b-team-primary: #C9292E;
  --pk-b-team-radius: 0;
  --pk-b-team-reference: url("/theme/b-team/reference.png");
  --pk-b-team-secondary: #667044;
  --pk-b-team-shadow: 6px 7px 0 rgb(0 0 0 / 74%);
  --pw-accent: var(--pk-b-team-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-b-team-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-b-team-paper);
  --pw-bg2: var(--pk-b-team-dark);
  --pw-border: var(--pk-b-team-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-b-team-font-body);
  --pw-font-disp: var(--pk-b-team-font-display);
  --pw-font-mono: var(--pk-b-team-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-b-team-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-b-team-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-b-team-radius);
  --pw-shadow: var(--pk-b-team-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-b-team-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: dark;
  --pw-control: url("/theme/b-team/controls/control.svg");
  --pw-frame: url("/theme/b-team/frames/frame.svg");
  --pw-hero: url("/theme/b-team/illustrations/hero.svg");
  --pw-logo: url("/theme/b-team/logos/wordmark.svg");
  --pw-pattern: url("/theme/b-team/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/b-team/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/b-team/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/b-team/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/b-team/icons/localnode.svg");
  --pw-icon-news: url("/theme/b-team/icons/news.svg");
  --pw-icon-records: url("/theme/b-team/icons/records.svg");
  --pw-icon-studio: url("/theme/b-team/icons/studio.svg");
  --pw-icon-town-square: url("/theme/b-team/icons/town-square.svg");
}

/* --- Crafty (crafty, gen1, light) --- */
[data-pw-theme="crafty"], .pw-theme-crafty{
  --pk-crafty-accent: #D8A23A;
  --pk-crafty-border: 2px solid;
  --pk-crafty-dark: #D7D7C1;
  --pk-crafty-extra: #5F8E81;
  --pk-crafty-font-body: Arial, Helvetica, sans-serif;
  --pk-crafty-font-display: Georgia, "Times New Roman", serif;
  --pk-crafty-font-mono: "Courier New", Courier, monospace;
  --pk-crafty-hero: url("/theme/crafty/illustrations/hero.svg");
  --pk-crafty-icon-counter: url("/theme/crafty/icons/counter.svg");
  --pk-crafty-icon-field-kit: url("/theme/crafty/icons/field-kit.svg");
  --pk-crafty-icon-hoodbuster: url("/theme/crafty/icons/hoodbuster.svg");
  --pk-crafty-icon-localnode: url("/theme/crafty/icons/localnode.svg");
  --pk-crafty-icon-news: url("/theme/crafty/icons/news.svg");
  --pk-crafty-icon-records: url("/theme/crafty/icons/records.svg");
  --pk-crafty-icon-studio: url("/theme/crafty/icons/studio.svg");
  --pk-crafty-icon-town-square: url("/theme/crafty/icons/town-square.svg");
  --pk-crafty-ink: #51453E;
  --pk-crafty-paper: #F3EADF;
  --pk-crafty-pattern: url("/theme/crafty/patterns/pattern.svg");
  --pk-crafty-primary: #DC7F79;
  --pk-crafty-radius: 15px;
  --pk-crafty-reference: url("/theme/crafty/reference.png");
  --pk-crafty-secondary: #5A4740;
  --pk-crafty-shadow: 4px 5px 0 #5F8E81;
  --pw-accent: var(--pk-crafty-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-crafty-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-crafty-paper);
  --pw-bg2: var(--pk-crafty-dark);
  --pw-border: var(--pk-crafty-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-crafty-font-body);
  --pw-font-disp: var(--pk-crafty-font-display);
  --pw-font-mono: var(--pk-crafty-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-crafty-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-crafty-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-crafty-radius);
  --pw-shadow: var(--pk-crafty-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-crafty-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-hero: url("/theme/crafty/illustrations/hero.svg");
  --pw-pattern: url("/theme/crafty/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/crafty/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/crafty/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/crafty/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/crafty/icons/localnode.svg");
  --pw-icon-news: url("/theme/crafty/icons/news.svg");
  --pw-icon-records: url("/theme/crafty/icons/records.svg");
  --pw-icon-studio: url("/theme/crafty/icons/studio.svg");
  --pw-icon-town-square: url("/theme/crafty/icons/town-square.svg");
}

/* --- Datacenter Derrick's Day Off (datacenter-derricks-day-off, gen3, light) --- */
[data-pw-theme="datacenter-derricks-day-off"], .pw-theme-datacenter-derricks-day-off{
  --pk-datacenter-derricks-day-off-accent: #D92323;
  --pk-datacenter-derricks-day-off-accent-deep: #A6151A;
  --pk-datacenter-derricks-day-off-accent-soft: #EFC7B0;
  --pk-datacenter-derricks-day-off-amber: #D9A62E;
  --pk-datacenter-derricks-day-off-amber-soft: #EFDFB2;
  --pk-datacenter-derricks-day-off-bg: #F4EBCF;
  --pk-datacenter-derricks-day-off-bg2: #DECDA9;
  --pk-datacenter-derricks-day-off-border: 3px solid #171717;
  --pk-datacenter-derricks-day-off-card: #FFFDF7;
  --pk-datacenter-derricks-day-off-contract: "gallery/1.0";
  --pk-datacenter-derricks-day-off-crit: #B91F25;
  --pk-datacenter-derricks-day-off-crit-soft: #E9C6B0;
  --pk-datacenter-derricks-day-off-dark: #617765;
  --pk-datacenter-derricks-day-off-extra: #5AA7C9;
  --pk-datacenter-derricks-day-off-faint: #66615B;
  --pk-datacenter-derricks-day-off-font-body: "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --pk-datacenter-derricks-day-off-font-disp: Impact, Haettenschweiler, "Arial Narrow Bold", sans-serif;
  --pk-datacenter-derricks-day-off-font-mono: "Courier New", Courier, monospace;
  --pk-datacenter-derricks-day-off-good: #2F7D4B;
  --pk-datacenter-derricks-day-off-good-soft: #D1D7B7;
  --pk-datacenter-derricks-day-off-hero: url("/theme/datacenter-derricks-day-off/illustrations/hero.svg");
  --pk-datacenter-derricks-day-off-icon-counter: url("/theme/datacenter-derricks-day-off/icons/counter.svg");
  --pk-datacenter-derricks-day-off-icon-field-kit: url("/theme/datacenter-derricks-day-off/icons/field-kit.svg");
  --pk-datacenter-derricks-day-off-icon-hoodbuster: url("/theme/datacenter-derricks-day-off/icons/hoodbuster.svg");
  --pk-datacenter-derricks-day-off-icon-localnode: url("/theme/datacenter-derricks-day-off/icons/localnode.svg");
  --pk-datacenter-derricks-day-off-icon-news: url("/theme/datacenter-derricks-day-off/icons/news.svg");
  --pk-datacenter-derricks-day-off-icon-records: url("/theme/datacenter-derricks-day-off/icons/records.svg");
  --pk-datacenter-derricks-day-off-icon-studio: url("/theme/datacenter-derricks-day-off/icons/studio.svg");
  --pk-datacenter-derricks-day-off-icon-town-square: url("/theme/datacenter-derricks-day-off/icons/town-square.svg");
  --pk-datacenter-derricks-day-off-ink: #171717;
  --pk-datacenter-derricks-day-off-line: #171717;
  --pk-datacenter-derricks-day-off-line2: #9B927F;
  --pk-datacenter-derricks-day-off-muted: #34322F;
  --pk-datacenter-derricks-day-off-panel: #FFFAF0;
  --pk-datacenter-derricks-day-off-pattern: url("/theme/datacenter-derricks-day-off/patterns/pattern.svg");
  --pk-datacenter-derricks-day-off-radius: 0px;
  --pk-datacenter-derricks-day-off-reference: url("/theme/datacenter-derricks-day-off/reference.png");
  --pk-datacenter-derricks-day-off-shadow: 4px 4px 0 #171717;
  --pk-datacenter-derricks-day-off-shadow-lg: 6px 6px 0 #171717;
  --pk-datacenter-derricks-day-off-stamp: #D9A62E;
  --pk-datacenter-derricks-day-off-surface: #FFFDF7;
  --pk-datacenter-derricks-day-off-warn: #D9A62E;
  --pw-accent: var(--pk-datacenter-derricks-day-off-accent);
  --pw-accent-deep: var(--pk-datacenter-derricks-day-off-accent-deep);
  --pw-accent-soft: var(--pk-datacenter-derricks-day-off-accent-soft);
  --pw-amber: var(--pk-datacenter-derricks-day-off-amber);
  --pw-amber-soft: var(--pk-datacenter-derricks-day-off-amber-soft);
  --pw-bg: var(--pk-datacenter-derricks-day-off-bg);
  --pw-bg2: var(--pk-datacenter-derricks-day-off-bg2);
  --pw-border: var(--pk-datacenter-derricks-day-off-border);
  --pw-card: var(--pk-datacenter-derricks-day-off-card);
  --pw-crit: var(--pk-datacenter-derricks-day-off-crit);
  --pw-crit-soft: var(--pk-datacenter-derricks-day-off-crit-soft);
  --pw-faint: var(--pk-datacenter-derricks-day-off-faint);
  --pw-font-body: var(--pk-datacenter-derricks-day-off-font-body);
  --pw-font-disp: var(--pk-datacenter-derricks-day-off-font-disp);
  --pw-font-mono: var(--pk-datacenter-derricks-day-off-font-mono);
  --pw-good: var(--pk-datacenter-derricks-day-off-good);
  --pw-good-soft: var(--pk-datacenter-derricks-day-off-good-soft);
  --pw-ink: var(--pk-datacenter-derricks-day-off-ink);
  --pw-line: var(--pk-datacenter-derricks-day-off-line);
  --pw-line2: var(--pk-datacenter-derricks-day-off-line2);
  --pw-muted: var(--pk-datacenter-derricks-day-off-muted);
  --pw-panel: var(--pk-datacenter-derricks-day-off-panel);
  --pw-radius: var(--pk-datacenter-derricks-day-off-radius);
  --pw-shadow: var(--pk-datacenter-derricks-day-off-shadow);
  --pw-shadow-lg: var(--pk-datacenter-derricks-day-off-shadow-lg);
  --pw-stamp: var(--pk-datacenter-derricks-day-off-stamp);
  --pw-surface: var(--pk-datacenter-derricks-day-off-surface);
  --pw-warn: var(--pk-datacenter-derricks-day-off-warn);
  --pw-scheme: light;
  --pw-hero: url("/theme/datacenter-derricks-day-off/illustrations/hero.svg");
  --pw-pattern: url("/theme/datacenter-derricks-day-off/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/datacenter-derricks-day-off/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/datacenter-derricks-day-off/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/datacenter-derricks-day-off/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/datacenter-derricks-day-off/icons/localnode.svg");
  --pw-icon-news: url("/theme/datacenter-derricks-day-off/icons/news.svg");
  --pw-icon-records: url("/theme/datacenter-derricks-day-off/icons/records.svg");
  --pw-icon-studio: url("/theme/datacenter-derricks-day-off/icons/studio.svg");
  --pw-icon-town-square: url("/theme/datacenter-derricks-day-off/icons/town-square.svg");
}

/* --- Derrick's Millions (derricks-millions, gen1, light) --- */
[data-pw-theme="derricks-millions"], .pw-theme-derricks-millions{
  --pk-derricks-millions-accent: #C9A54A;
  --pk-derricks-millions-border: 3px solid;
  --pk-derricks-millions-dark: #D8E6C6;
  --pk-derricks-millions-extra: #168F55;
  --pk-derricks-millions-font-body: Arial, Helvetica, sans-serif;
  --pk-derricks-millions-font-display: Impact, "Arial Black", sans-serif;
  --pk-derricks-millions-font-mono: "Courier New", Courier, monospace;
  --pk-derricks-millions-hero: url("/theme/derricks-millions/illustrations/hero.svg");
  --pk-derricks-millions-icon-counter: url("/theme/derricks-millions/icons/counter.svg");
  --pk-derricks-millions-icon-field-kit: url("/theme/derricks-millions/icons/field-kit.svg");
  --pk-derricks-millions-icon-hoodbuster: url("/theme/derricks-millions/icons/hoodbuster.svg");
  --pk-derricks-millions-icon-localnode: url("/theme/derricks-millions/icons/localnode.svg");
  --pk-derricks-millions-icon-news: url("/theme/derricks-millions/icons/news.svg");
  --pk-derricks-millions-icon-records: url("/theme/derricks-millions/icons/records.svg");
  --pk-derricks-millions-icon-studio: url("/theme/derricks-millions/icons/studio.svg");
  --pk-derricks-millions-icon-town-square: url("/theme/derricks-millions/icons/town-square.svg");
  --pk-derricks-millions-ink: #153628;
  --pk-derricks-millions-paper: #EFE7CE;
  --pk-derricks-millions-pattern: url("/theme/derricks-millions/patterns/pattern.svg");
  --pk-derricks-millions-primary: #D33A2A;
  --pk-derricks-millions-radius: 0px;
  --pk-derricks-millions-reference: url("/theme/derricks-millions/reference.png");
  --pk-derricks-millions-secondary: #2A4B38;
  --pk-derricks-millions-shadow: 5px 6px 0 #153628;
  --pw-accent: var(--pk-derricks-millions-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-derricks-millions-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-derricks-millions-paper);
  --pw-bg2: var(--pk-derricks-millions-dark);
  --pw-border: var(--pk-derricks-millions-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-derricks-millions-font-body);
  --pw-font-disp: var(--pk-derricks-millions-font-display);
  --pw-font-mono: var(--pk-derricks-millions-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-derricks-millions-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-derricks-millions-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-derricks-millions-radius);
  --pw-shadow: var(--pk-derricks-millions-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-derricks-millions-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-control: url("/theme/derricks-millions/controls/control.svg");
  --pw-frame: url("/theme/derricks-millions/frames/frame.svg");
  --pw-hero: url("/theme/derricks-millions/illustrations/hero.svg");
  --pw-logo: url("/theme/derricks-millions/logos/wordmark.svg");
  --pw-pattern: url("/theme/derricks-millions/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/derricks-millions/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/derricks-millions/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/derricks-millions/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/derricks-millions/icons/localnode.svg");
  --pw-icon-news: url("/theme/derricks-millions/icons/news.svg");
  --pw-icon-records: url("/theme/derricks-millions/icons/records.svg");
  --pw-icon-studio: url("/theme/derricks-millions/icons/studio.svg");
  --pw-icon-town-square: url("/theme/derricks-millions/icons/town-square.svg");
}

/* --- Garden (garden, gen1, light) --- */
[data-pw-theme="garden"], .pw-theme-garden{
  --pk-garden-accent: #D9A34D;
  --pk-garden-border: 2px solid;
  --pk-garden-dark: #D7E5E4;
  --pk-garden-extra: #6F8457;
  --pk-garden-font-body: Arial, Helvetica, sans-serif;
  --pk-garden-font-display: Georgia, "Times New Roman", serif;
  --pk-garden-font-mono: "Courier New", Courier, monospace;
  --pk-garden-hero: url("/theme/garden/illustrations/hero.svg");
  --pk-garden-icon-counter: url("/theme/garden/icons/counter.svg");
  --pk-garden-icon-field-kit: url("/theme/garden/icons/field-kit.svg");
  --pk-garden-icon-hoodbuster: url("/theme/garden/icons/hoodbuster.svg");
  --pk-garden-icon-localnode: url("/theme/garden/icons/localnode.svg");
  --pk-garden-icon-news: url("/theme/garden/icons/news.svg");
  --pk-garden-icon-records: url("/theme/garden/icons/records.svg");
  --pk-garden-icon-studio: url("/theme/garden/icons/studio.svg");
  --pk-garden-icon-town-square: url("/theme/garden/icons/town-square.svg");
  --pk-garden-ink: #315535;
  --pk-garden-paper: #F5EEDB;
  --pk-garden-pattern: url("/theme/garden/patterns/pattern.svg");
  --pk-garden-primary: #B65236;
  --pk-garden-radius: 8px;
  --pk-garden-reference: url("/theme/garden/reference.png");
  --pk-garden-secondary: #514632;
  --pk-garden-shadow: 4px 5px 0 #6F8457;
  --pw-accent: var(--pk-garden-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-garden-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-garden-paper);
  --pw-bg2: var(--pk-garden-dark);
  --pw-border: var(--pk-garden-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-garden-font-body);
  --pw-font-disp: var(--pk-garden-font-display);
  --pw-font-mono: var(--pk-garden-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-garden-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-garden-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-garden-radius);
  --pw-shadow: var(--pk-garden-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-garden-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-hero: url("/theme/garden/illustrations/hero.svg");
  --pw-pattern: url("/theme/garden/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/garden/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/garden/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/garden/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/garden/icons/localnode.svg");
  --pw-icon-news: url("/theme/garden/icons/news.svg");
  --pw-icon-records: url("/theme/garden/icons/records.svg");
  --pw-icon-studio: url("/theme/garden/icons/studio.svg");
  --pw-icon-town-square: url("/theme/garden/icons/town-square.svg");
}

/* --- Ranch (ranch, gen1, light) --- */
[data-pw-theme="ranch"], .pw-theme-ranch{
  --pk-ranch-accent: #C28B2C;
  --pk-ranch-border: 3px solid;
  --pk-ranch-dark: #EAD6AD;
  --pk-ranch-extra: #3D684A;
  --pk-ranch-font-body: Arial, Helvetica, sans-serif;
  --pk-ranch-font-display: Georgia, "Times New Roman", serif;
  --pk-ranch-font-mono: "Courier New", Courier, monospace;
  --pk-ranch-hero: url("/theme/ranch/illustrations/hero.svg");
  --pk-ranch-icon-counter: url("/theme/ranch/icons/counter.svg");
  --pk-ranch-icon-field-kit: url("/theme/ranch/icons/field-kit.svg");
  --pk-ranch-icon-hoodbuster: url("/theme/ranch/icons/hoodbuster.svg");
  --pk-ranch-icon-localnode: url("/theme/ranch/icons/localnode.svg");
  --pk-ranch-icon-news: url("/theme/ranch/icons/news.svg");
  --pk-ranch-icon-records: url("/theme/ranch/icons/records.svg");
  --pk-ranch-icon-studio: url("/theme/ranch/icons/studio.svg");
  --pk-ranch-icon-town-square: url("/theme/ranch/icons/town-square.svg");
  --pk-ranch-ink: #39251A;
  --pk-ranch-paper: #DFC795;
  --pk-ranch-pattern: url("/theme/ranch/patterns/pattern.svg");
  --pk-ranch-primary: #8E2F25;
  --pk-ranch-radius: 3px;
  --pk-ranch-reference: url("/theme/ranch/reference.png");
  --pk-ranch-secondary: #4A3022;
  --pk-ranch-shadow: 6px 7px 0 #4A3022;
  --pw-accent: var(--pk-ranch-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-ranch-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-ranch-paper);
  --pw-bg2: var(--pk-ranch-dark);
  --pw-border: var(--pk-ranch-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-ranch-font-body);
  --pw-font-disp: var(--pk-ranch-font-display);
  --pw-font-mono: var(--pk-ranch-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-ranch-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-ranch-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-ranch-radius);
  --pw-shadow: var(--pk-ranch-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-ranch-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-hero: url("/theme/ranch/illustrations/hero.svg");
  --pw-pattern: url("/theme/ranch/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/ranch/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/ranch/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/ranch/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/ranch/icons/localnode.svg");
  --pw-icon-news: url("/theme/ranch/icons/news.svg");
  --pw-icon-records: url("/theme/ranch/icons/records.svg");
  --pw-icon-studio: url("/theme/ranch/icons/studio.svg");
  --pw-icon-town-square: url("/theme/ranch/icons/town-square.svg");
}

/* --- Roswell (roswell, gen1, light) --- */
[data-pw-theme="roswell"], .pw-theme-roswell{
  --pk-roswell-accent: #F2B84B;
  --pk-roswell-border: 2px solid;
  --pk-roswell-dark: #26373B;
  --pk-roswell-extra: #2E7D82;
  --pk-roswell-font-body: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  --pk-roswell-font-display: "Arial Narrow","Avenir Next Condensed","Roboto Condensed",Arial,sans-serif;
  --pk-roswell-font-mono: ui-monospace,"SFMono-Regular",Consolas,"Liberation Mono",monospace;
  --pk-roswell-hero: url("/theme/roswell/illustrations/hero.svg");
  --pk-roswell-icon-counter: url("/theme/roswell/icons/counter.svg");
  --pk-roswell-icon-field-kit: url("/theme/roswell/icons/field-kit.svg");
  --pk-roswell-icon-hoodbuster: url("/theme/roswell/icons/hoodbuster.svg");
  --pk-roswell-icon-localnode: url("/theme/roswell/icons/localnode.svg");
  --pk-roswell-icon-news: url("/theme/roswell/icons/news.svg");
  --pk-roswell-icon-records: url("/theme/roswell/icons/records.svg");
  --pk-roswell-icon-studio: url("/theme/roswell/icons/studio.svg");
  --pk-roswell-icon-town-square: url("/theme/roswell/icons/town-square.svg");
  --pk-roswell-ink: #172C36;
  --pk-roswell-paper: #F3EBD7;
  --pk-roswell-pattern: url("/theme/roswell/patterns/pattern.svg");
  --pk-roswell-primary: #B64A32;
  --pk-roswell-radius: 4px;
  --pk-roswell-reference: url("/theme/roswell/reference.png");
  --pk-roswell-secondary: #536167;
  --pk-roswell-shadow: 0 3px 0 #172C36, 0 8px 18px rgba(23,44,54,.22);
  --pw-accent: var(--pk-roswell-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-roswell-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-roswell-paper);
  --pw-bg2: var(--pk-roswell-dark);
  --pw-border: var(--pk-roswell-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-roswell-font-body);
  --pw-font-disp: var(--pk-roswell-font-display);
  --pw-font-mono: var(--pk-roswell-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-roswell-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-roswell-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-roswell-radius);
  --pw-shadow: var(--pk-roswell-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-roswell-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-control: url("/theme/roswell/controls/control.svg");
  --pw-frame: url("/theme/roswell/frames/frame.svg");
  --pw-hero: url("/theme/roswell/illustrations/hero.svg");
  --pw-logo: url("/theme/roswell/logos/wordmark.svg");
  --pw-pattern: url("/theme/roswell/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/roswell/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/roswell/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/roswell/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/roswell/icons/localnode.svg");
  --pw-icon-news: url("/theme/roswell/icons/news.svg");
  --pw-icon-records: url("/theme/roswell/icons/records.svg");
  --pw-icon-studio: url("/theme/roswell/icons/studio.svg");
  --pw-icon-town-square: url("/theme/roswell/icons/town-square.svg");
}

/* --- Southwest (southwest, gen1, light) --- */
[data-pw-theme="southwest"], .pw-theme-southwest{
  --pk-southwest-accent: #D99042;
  --pk-southwest-border: 3px solid;
  --pk-southwest-dark: #DFC596;
  --pk-southwest-extra: #2E7770;
  --pk-southwest-font-body: Arial, Helvetica, sans-serif;
  --pk-southwest-font-display: Georgia, "Times New Roman", serif;
  --pk-southwest-font-mono: "Courier New", Courier, monospace;
  --pk-southwest-hero: url("/theme/southwest/illustrations/hero.svg");
  --pk-southwest-icon-counter: url("/theme/southwest/icons/counter.svg");
  --pk-southwest-icon-field-kit: url("/theme/southwest/icons/field-kit.svg");
  --pk-southwest-icon-hoodbuster: url("/theme/southwest/icons/hoodbuster.svg");
  --pk-southwest-icon-localnode: url("/theme/southwest/icons/localnode.svg");
  --pk-southwest-icon-news: url("/theme/southwest/icons/news.svg");
  --pk-southwest-icon-records: url("/theme/southwest/icons/records.svg");
  --pk-southwest-icon-studio: url("/theme/southwest/icons/studio.svg");
  --pk-southwest-icon-town-square: url("/theme/southwest/icons/town-square.svg");
  --pk-southwest-ink: #3E2B1E;
  --pk-southwest-paper: #EFE1C1;
  --pk-southwest-pattern: url("/theme/southwest/patterns/pattern.svg");
  --pk-southwest-primary: #BB4C2F;
  --pk-southwest-radius: 0px;
  --pk-southwest-reference: url("/theme/southwest/reference.png");
  --pk-southwest-secondary: #5B4030;
  --pk-southwest-shadow: 5px 5px 0 #BB4C2F;
  --pw-accent: var(--pk-southwest-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-southwest-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-southwest-paper);
  --pw-bg2: var(--pk-southwest-dark);
  --pw-border: var(--pk-southwest-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-southwest-font-body);
  --pw-font-disp: var(--pk-southwest-font-display);
  --pw-font-mono: var(--pk-southwest-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-southwest-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-southwest-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-southwest-radius);
  --pw-shadow: var(--pk-southwest-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-southwest-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-control: url("/theme/southwest/controls/control.svg");
  --pw-frame: url("/theme/southwest/frames/frame.svg");
  --pw-hero: url("/theme/southwest/illustrations/hero.svg");
  --pw-logo: url("/theme/southwest/logos/wordmark.svg");
  --pw-pattern: url("/theme/southwest/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/southwest/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/southwest/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/southwest/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/southwest/icons/localnode.svg");
  --pw-icon-news: url("/theme/southwest/icons/news.svg");
  --pw-icon-records: url("/theme/southwest/icons/records.svg");
  --pw-icon-studio: url("/theme/southwest/icons/studio.svg");
  --pw-icon-town-square: url("/theme/southwest/icons/town-square.svg");
}

/* --- T-1000 (t-1000, gen1, dark) --- */
[data-pw-theme="t-1000"], .pw-theme-t-1000{
  --pk-t-1000-accent: #FF3546;
  --pk-t-1000-border: 3px solid;
  --pk-t-1000-dark: #252C34;
  --pk-t-1000-extra: #69747E;
  --pk-t-1000-font-body: Arial, Helvetica, sans-serif;
  --pk-t-1000-font-display: "Arial Black", Impact, sans-serif;
  --pk-t-1000-font-mono: "Courier New", Courier, monospace;
  --pk-t-1000-hero: url("/theme/t-1000/illustrations/hero.svg");
  --pk-t-1000-icon-counter: url("/theme/t-1000/icons/counter.svg");
  --pk-t-1000-icon-field-kit: url("/theme/t-1000/icons/field-kit.svg");
  --pk-t-1000-icon-hoodbuster: url("/theme/t-1000/icons/hoodbuster.svg");
  --pk-t-1000-icon-localnode: url("/theme/t-1000/icons/localnode.svg");
  --pk-t-1000-icon-news: url("/theme/t-1000/icons/news.svg");
  --pk-t-1000-icon-records: url("/theme/t-1000/icons/records.svg");
  --pk-t-1000-icon-studio: url("/theme/t-1000/icons/studio.svg");
  --pk-t-1000-icon-town-square: url("/theme/t-1000/icons/town-square.svg");
  --pk-t-1000-ink: #EEF3F6;
  --pk-t-1000-paper: #05070A;
  --pk-t-1000-pattern: url("/theme/t-1000/patterns/pattern.svg");
  --pk-t-1000-primary: #E31C2D;
  --pk-t-1000-radius: 1px;
  --pk-t-1000-reference: url("/theme/t-1000/reference.png");
  --pk-t-1000-secondary: #BFC8D0;
  --pk-t-1000-shadow: 0 0 18px #E31C2D;
  --pw-accent: var(--pk-t-1000-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-t-1000-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-t-1000-paper);
  --pw-bg2: var(--pk-t-1000-dark);
  --pw-border: var(--pk-t-1000-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-t-1000-font-body);
  --pw-font-disp: var(--pk-t-1000-font-display);
  --pw-font-mono: var(--pk-t-1000-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-t-1000-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-t-1000-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-t-1000-radius);
  --pw-shadow: var(--pk-t-1000-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-t-1000-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: dark;
  --pw-control: url("/theme/t-1000/controls/control.svg");
  --pw-frame: url("/theme/t-1000/frames/frame.svg");
  --pw-hero: url("/theme/t-1000/illustrations/hero.svg");
  --pw-logo: url("/theme/t-1000/logos/wordmark.svg");
  --pw-pattern: url("/theme/t-1000/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/t-1000/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/t-1000/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/t-1000/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/t-1000/icons/localnode.svg");
  --pw-icon-news: url("/theme/t-1000/icons/news.svg");
  --pw-icon-records: url("/theme/t-1000/icons/records.svg");
  --pw-icon-studio: url("/theme/t-1000/icons/studio.svg");
  --pw-icon-town-square: url("/theme/t-1000/icons/town-square.svg");
}

/* --- Uncle Flocker (uncle-flocker, gen1, light) --- */
[data-pw-theme="uncle-flocker"], .pw-theme-uncle-flocker{
  --pk-uncle-flocker-accent: #176EB2;
  --pk-uncle-flocker-border: 3px solid;
  --pk-uncle-flocker-dark: #FFFFFF;
  --pk-uncle-flocker-extra: #65B8E6;
  --pk-uncle-flocker-font-body: Arial, Helvetica, sans-serif;
  --pk-uncle-flocker-font-display: "Trebuchet MS", Arial, sans-serif;
  --pk-uncle-flocker-font-mono: "Courier New", Courier, monospace;
  --pk-uncle-flocker-hero: url("/theme/uncle-flocker/illustrations/hero.svg");
  --pk-uncle-flocker-icon-counter: url("/theme/uncle-flocker/icons/counter.svg");
  --pk-uncle-flocker-icon-field-kit: url("/theme/uncle-flocker/icons/field-kit.svg");
  --pk-uncle-flocker-icon-hoodbuster: url("/theme/uncle-flocker/icons/hoodbuster.svg");
  --pk-uncle-flocker-icon-localnode: url("/theme/uncle-flocker/icons/localnode.svg");
  --pk-uncle-flocker-icon-news: url("/theme/uncle-flocker/icons/news.svg");
  --pk-uncle-flocker-icon-records: url("/theme/uncle-flocker/icons/records.svg");
  --pk-uncle-flocker-icon-studio: url("/theme/uncle-flocker/icons/studio.svg");
  --pk-uncle-flocker-icon-town-square: url("/theme/uncle-flocker/icons/town-square.svg");
  --pk-uncle-flocker-ink: #0C2437;
  --pk-uncle-flocker-paper: #DFF3FF;
  --pk-uncle-flocker-pattern: url("/theme/uncle-flocker/patterns/pattern.svg");
  --pk-uncle-flocker-primary: #E51F2C;
  --pk-uncle-flocker-radius: 9px;
  --pk-uncle-flocker-reference: url("/theme/uncle-flocker/reference.png");
  --pk-uncle-flocker-secondary: #24445B;
  --pk-uncle-flocker-shadow: 4px 5px 0 #0C2437;
  --pw-accent: var(--pk-uncle-flocker-primary);
  --pw-accent-deep: color-mix(in srgb, var(--pw-accent) 74%, #000);
  --pw-accent-soft: color-mix(in srgb, var(--pw-accent) 18%, var(--pw-bg));
  --pw-amber: var(--pk-uncle-flocker-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-uncle-flocker-paper);
  --pw-bg2: var(--pk-uncle-flocker-dark);
  --pw-border: var(--pk-uncle-flocker-border) var(--pw-line);
  --pw-card: var(--pw-surface);
  --pw-crit: #bb3f2c;
  --pw-crit-soft: color-mix(in srgb, var(--pw-crit) 18%, var(--pw-bg));
  --pw-faint: color-mix(in srgb, var(--pw-ink) 55%, var(--pw-bg));
  --pw-font-body: var(--pk-uncle-flocker-font-body);
  --pw-font-disp: var(--pk-uncle-flocker-font-display);
  --pw-font-mono: var(--pk-uncle-flocker-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-uncle-flocker-ink);
  --pw-line: color-mix(in srgb, var(--pw-ink) 22%, var(--pw-bg));
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-uncle-flocker-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-uncle-flocker-radius);
  --pw-shadow: var(--pk-uncle-flocker-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-uncle-flocker-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-control: url("/theme/uncle-flocker/controls/control.svg");
  --pw-frame: url("/theme/uncle-flocker/frames/frame.svg");
  --pw-hero: url("/theme/uncle-flocker/illustrations/hero.svg");
  --pw-logo: url("/theme/uncle-flocker/logos/wordmark.svg");
  --pw-pattern: url("/theme/uncle-flocker/patterns/pattern.svg");
  --pw-icon-counter: url("/theme/uncle-flocker/icons/counter.svg");
  --pw-icon-field-kit: url("/theme/uncle-flocker/icons/field-kit.svg");
  --pw-icon-hoodbuster: url("/theme/uncle-flocker/icons/hoodbuster.svg");
  --pw-icon-localnode: url("/theme/uncle-flocker/icons/localnode.svg");
  --pw-icon-news: url("/theme/uncle-flocker/icons/news.svg");
  --pw-icon-records: url("/theme/uncle-flocker/icons/records.svg");
  --pw-icon-studio: url("/theme/uncle-flocker/icons/studio.svg");
  --pw-icon-town-square: url("/theme/uncle-flocker/icons/town-square.svg");
}

/* GENERATED by scripts/gallery/build.py — DO NOT EDIT BY HAND.
 * Source of truth: themes/contract/contract.json + themes/suite/<id>/.
 * Regenerate: python3 scripts/gallery/build.py
 * Drift guard: python3 scripts/gallery/build.py --check
 *
 * THE LAUNCHER CONTRACT — loaded by every page, beside the token sheet.
 *
 * hubnav.js lives in a shadow root and reads these seven names; custom
 * properties cross that boundary, which is the whole mechanism. The global
 * navigation wears the pack on all 43 pages while module interiors are left
 * strictly alone.
 */
:root[data-pw-theme]{
  --pw-nav-bg:     var(--pw-surface);
  --pw-nav-panel:  var(--pw-panel);
  --pw-nav-ink:    var(--pw-ink);
  --pw-nav-muted:  var(--pw-muted);
  --pw-nav-faint:  var(--pw-faint);
  --pw-nav-line:   var(--pw-line);
  --pw-nav-accent: var(--pw-accent);
  --pw-nav-font:   var(--pw-font-body);
  --pw-nav-scrim:  color-mix(in srgb, var(--pw-bg) 78%, transparent);
}

/* ---------------------------------------------------------------------------
   THE PICKER CHROME.

   These rules PAINT, which is why this is the shell sheet and not the token
   sheet — but every selector is a .pw-wd-* class, and those elements exist
   only because /theme.js created them. Nothing a module authored can be hit.
   assert_scoped() enforces that at build time.

   Colors read the nav contract first so the picker wears the pack, then fall
   back to the page's own palette, then to a literal. The undressed case
   therefore looks exactly as it did before any of this existed.
   --------------------------------------------------------------------------- */
.pw-wardrobe{ position:relative; margin-left:10px }
.pw-wd-btn{
  display:flex; align-items:center; gap:7px; cursor:pointer;
  background:var(--pw-nav-panel, var(--panel, #141d21));
  border:1px solid var(--pw-nav-line, var(--line, #26333a));
  color:var(--pw-nav-ink, var(--ink, #e9efec));
  font-family:var(--pw-font-mono, var(--mono, ui-monospace, monospace));
  font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  border-radius:20px; padding:7px 13px;
}
.pw-wd-word{ color:var(--pw-nav-muted, var(--muted, #93a4a3)); font-weight:700 }
.pw-wd-btndots{ display:flex; gap:2px }
.pw-wd-btndots i{ width:8px; height:8px; border-radius:50%;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.28) }
.pw-wd-caret{ opacity:.65; margin-left:1px }
.pw-wd-btn:hover{ color:var(--pw-nav-ink, var(--ink, #e9efec));
  border-color:var(--pw-nav-accent, var(--accent-deep, #2bb3ac)) }
.pw-wd-btn:focus-visible{
  outline:2px solid var(--pw-nav-accent, var(--accent-deep, #2bb3ac)); outline-offset:2px }
.pw-wd-panel{
  position:absolute; right:0; top:calc(100% + 8px); z-index:60; min-width:272px;
  max-height:min(70vh,520px); overflow:auto; overscroll-behavior:contain;
  background:var(--pw-nav-panel, var(--panel, #141d21));
  border:1px solid var(--pw-nav-line, var(--line, #26333a));
  border-radius:10px; padding:6px; box-shadow:0 16px 40px rgb(0 0 0 / .35);
}
.pw-wd-head{
  padding:8px 10px 6px; font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  font-family:var(--pw-font-mono, var(--mono, ui-monospace, monospace));
  color:var(--pw-nav-accent, var(--accent-deep, #2bb3ac));
  border-bottom:1px solid var(--pw-nav-line, var(--line, #26333a)); margin-bottom:4px;
}
.pw-wd-head span{ color:var(--pw-nav-faint, var(--faint, #7d9092)) }
.pw-wd-opt{
  display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto;
  column-gap:10px; align-items:center; width:100%; text-align:left; cursor:pointer;
  background:none; border:0; border-radius:7px; padding:9px 10px;
  color:var(--pw-nav-ink, var(--ink, #e9efec));
  font-family:var(--pw-nav-font, var(--font, inherit)); font-size:13px;
}
.pw-wd-opt:hover{ background:var(--pw-nav-bg, var(--panel-2, #18242a)) }
.pw-wd-opt[aria-pressed="true"]{
  box-shadow:inset 0 0 0 1.5px var(--pw-nav-accent, var(--accent-deep, #2bb3ac)) }
.pw-wd-dots{ display:flex; gap:3px; grid-row:1 / span 2 }
.pw-wd-dots i{ width:11px; height:11px; border-radius:50%;
  border:1px solid rgb(128 128 128 / .45) }
.pw-wd-name{ font-weight:700; letter-spacing:-.01em }
.pw-wd-tag{ grid-column:2; font-size:11px; font-style:italic;
  color:var(--pw-nav-muted, var(--muted, #93a4a3)) }
