/* 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: #C7993B;
  --pk-b-team-border: 2px solid;
  --pk-b-team-dark: #0A0A09;
  --pk-b-team-extra: #383731;
  --pk-b-team-font-body: Arial Narrow, sans-serif;
  --pk-b-team-font-display: Impact, sans-serif;
  --pk-b-team-font-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: #F0E5CA;
  --pk-b-team-paper: #151411;
  --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: #666246;
  --pk-b-team-shadow: 7px 7px 0 #000;
  --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, gen2, light) --- */
[data-pw-theme="crafty"], .pw-theme-crafty{
  --pk-crafty-color-blue: #6e89a8;
  --pk-crafty-color-blue-dark: #4e6784;
  --pk-crafty-color-error: #984c43;
  --pk-crafty-color-focus: #245b76;
  --pk-crafty-color-green: #9caf88;
  --pk-crafty-color-green-dark: #67795b;
  --pk-crafty-color-ink: #58483c;
  --pk-crafty-color-ink-soft: #756052;
  --pk-crafty-color-line: #8a6a56;
  --pk-crafty-color-mushroom: #8a6a56;
  --pk-crafty-color-page: #eadfce;
  --pk-crafty-color-paper: #f6f0e8;
  --pk-crafty-color-paper-strong: #fffaf2;
  --pk-crafty-color-rose: #d8a7a1;
  --pk-crafty-color-sage: #9caf88;
  --pk-crafty-color-success: #597346;
  --pk-crafty-color-terracotta: #c97863;
  --pk-crafty-color-warning: #a9852f;
  --pk-crafty-color-wood: #d1ad48;
  --pk-crafty-focus-ring: 0 0 0 3px var(--pk-crafty-color-paper), 0 0 0 6px var(--pk-crafty-color-focus);
  --pk-crafty-font-body: Georgia, "Times New Roman", serif;
  --pk-crafty-font-display: Georgia, "Times New Roman", serif;
  --pk-crafty-font-label: "Trebuchet MS", Arial, sans-serif;
  --pk-crafty-font-note: "Segoe Print", "Bradley Hand", cursive;
  --pk-crafty-frame-stitched: url("/theme/crafty/frames/stitched-frame.svg");
  --pk-crafty-hero-art: url("/theme/crafty/illustrations/craft-table.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-line-stitched: 1.5px dashed var(--pk-crafty-color-line);
  --pk-crafty-line-strong: 2px solid var(--pk-crafty-color-line);
  --pk-crafty-line-thin: 1px solid var(--pk-crafty-color-line);
  --pk-crafty-logo-art: url("/theme/crafty/logos/crafty-wordmark.svg");
  --pk-crafty-pattern-divider: url("/theme/crafty/patterns/stitched-divider.svg");
  --pk-crafty-radius-md: 14px;
  --pk-crafty-radius-pill: 999px;
  --pk-crafty-radius-sm: 8px;
  --pk-crafty-radius-xs: 3px;
  --pk-crafty-shadow-paper: 0 2px 0 rgba(68, 56, 37, .12), 0 8px 24px rgba(68, 56, 37, .1);
  --pk-crafty-shadow-raised: 0 2px 0 #fff9, 0 4px 0 rgba(68, 56, 37, .18), 0 12px 28px rgba(68, 56, 37, .12);
  --pk-crafty-text-body: clamp(.94rem, .88rem + .22vw, 1.08rem);
  --pk-crafty-text-h1: clamp(2.35rem, 1.72rem + 2.3vw, 4.9rem);
  --pk-crafty-text-h2: clamp(1.55rem, 1.25rem + 1.1vw, 2.4rem);
  --pk-crafty-text-h3: clamp(1.15rem, 1rem + .55vw, 1.55rem);
  --pk-crafty-text-sm: clamp(.78rem, .73rem + .18vw, .9rem);
  --pk-crafty-text-xs: clamp(.68rem, .64rem + .13vw, .76rem);
  --pk-crafty-texture-gingham: url("/theme/crafty/textures/gingham.svg");
  --pk-crafty-texture-paper: url("/theme/crafty/textures/cream-paper.svg");
  --pk-crafty-texture-wood: url("/theme/crafty/textures/patchwork.svg");
  --pw-accent: var(--pk-crafty-color-green);
  --pw-accent-deep: var(--pk-crafty-color-green-dark);
  --pw-accent-soft: var(--pk-crafty-color-sage);
  --pw-amber: var(--pk-crafty-color-wood);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-crafty-color-page);
  --pw-bg2: color-mix(in srgb, var(--pw-bg) 92%, var(--pw-ink));
  --pw-border: var(--pk-crafty-line-strong);
  --pw-card: var(--pk-crafty-color-paper);
  --pw-crit: var(--pk-crafty-color-error);
  --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: ui-monospace, "SF Mono", SFMono-Regular, Menlo, "Cascadia Mono", monospace;
  --pw-good: var(--pk-crafty-color-success);
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-crafty-color-ink);
  --pw-line: var(--pk-crafty-color-line);
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-crafty-color-ink-soft);
  --pw-panel: var(--pk-crafty-color-paper-strong);
  --pw-radius: var(--pk-crafty-radius-md);
  --pw-shadow: var(--pk-crafty-shadow-paper);
  --pw-shadow-lg: var(--pk-crafty-shadow-raised);
  --pw-stamp: var(--pk-crafty-color-terracotta);
  --pw-surface: var(--pk-crafty-color-paper);
  --pw-warn: var(--pk-crafty-color-warning);
  --pw-scheme: light;
  --pw-divider: url("/theme/crafty/patterns/stitched-divider.svg");
  --pw-hero: url("/theme/crafty/illustrations/craft-table.svg");
  --pw-logo: url("/theme/crafty/logos/crafty-wordmark.svg");
  --pw-pattern: url("/theme/crafty/textures/cream-paper.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, gen1, light) --- */
[data-pw-theme="datacenter-derricks-day-off"], .pw-theme-datacenter-derricks-day-off{
  --pk-datacenter-derricks-day-off-accent: #617765;
  --pk-datacenter-derricks-day-off-border: 2px solid;
  --pk-datacenter-derricks-day-off-dark: #D86752;
  --pk-datacenter-derricks-day-off-extra: #D9A62E;
  --pk-datacenter-derricks-day-off-font-body: Arial Narrow, sans-serif;
  --pk-datacenter-derricks-day-off-font-display: Impact, sans-serif;
  --pk-datacenter-derricks-day-off-font-mono: Arial, sans-serif;
  --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-paper: #F4E8CF;
  --pk-datacenter-derricks-day-off-pattern: url("/theme/datacenter-derricks-day-off/patterns/pattern.svg");
  --pk-datacenter-derricks-day-off-primary: #D92323;
  --pk-datacenter-derricks-day-off-radius: 3px;
  --pk-datacenter-derricks-day-off-reference: url("/theme/datacenter-derricks-day-off/reference.png");
  --pk-datacenter-derricks-day-off-secondary: #5AA7C9;
  --pk-datacenter-derricks-day-off-shadow: 6px 6px 0 #171717;
  --pw-accent: var(--pk-datacenter-derricks-day-off-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-datacenter-derricks-day-off-accent);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-datacenter-derricks-day-off-paper);
  --pw-bg2: var(--pk-datacenter-derricks-day-off-dark);
  --pw-border: var(--pk-datacenter-derricks-day-off-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-datacenter-derricks-day-off-font-body);
  --pw-font-disp: var(--pk-datacenter-derricks-day-off-font-display);
  --pw-font-mono: var(--pk-datacenter-derricks-day-off-font-mono);
  --pw-good: #2f8f5b;
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-datacenter-derricks-day-off-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-datacenter-derricks-day-off-secondary);
  --pw-panel: var(--pw-surface);
  --pw-radius: var(--pk-datacenter-derricks-day-off-radius);
  --pw-shadow: var(--pk-datacenter-derricks-day-off-shadow);
  --pw-shadow-lg: 0 14px 44px rgba(0,0,0,.42);
  --pw-stamp: var(--pk-datacenter-derricks-day-off-accent);
  --pw-surface: color-mix(in srgb, var(--pw-bg) 88%, var(--pw-ink));
  --pw-warn: #c98016;
  --pw-scheme: light;
  --pw-control: url("/theme/datacenter-derricks-day-off/controls/control.svg");
  --pw-frame: url("/theme/datacenter-derricks-day-off/frames/frame.svg");
  --pw-hero: url("/theme/datacenter-derricks-day-off/illustrations/hero.svg");
  --pw-logo: url("/theme/datacenter-derricks-day-off/logos/wordmark.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: #F4C542;
  --pk-derricks-millions-border: 2px solid;
  --pk-derricks-millions-dark: #FBF4E3;
  --pk-derricks-millions-extra: #0FA3A3;
  --pk-derricks-millions-font-body: Rockwell, Georgia, serif;
  --pk-derricks-millions-font-display: Impact, sans-serif;
  --pk-derricks-millions-font-mono: Courier New, 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: #0D2340;
  --pk-derricks-millions-paper: #F2E8C9;
  --pk-derricks-millions-pattern: url("/theme/derricks-millions/patterns/pattern.svg");
  --pk-derricks-millions-primary: #C8102E;
  --pk-derricks-millions-radius: 3px;
  --pk-derricks-millions-reference: url("/theme/derricks-millions/reference.png");
  --pk-derricks-millions-secondary: #0A6B3A;
  --pk-derricks-millions-shadow: 5px 6px 0 #0D2340;
  --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, gen2, light) --- */
[data-pw-theme="garden"], .pw-theme-garden{
  --pk-garden-color-blue: #7e99a4;
  --pk-garden-color-blue-dark: #587481;
  --pk-garden-color-error: #984c43;
  --pk-garden-color-focus: #245b76;
  --pk-garden-color-green: #66784a;
  --pk-garden-color-green-dark: #495b35;
  --pk-garden-color-ink: #443825;
  --pk-garden-color-ink-soft: #6f6048;
  --pk-garden-color-line: #88785d;
  --pk-garden-color-mushroom: #9b8165;
  --pk-garden-color-page: #eee5cf;
  --pk-garden-color-paper: #f7f0df;
  --pk-garden-color-paper-strong: #fff9ea;
  --pk-garden-color-rose: #c58e83;
  --pk-garden-color-sage: #9cac82;
  --pk-garden-color-success: #597346;
  --pk-garden-color-terracotta: #aa684e;
  --pk-garden-color-warning: #a47725;
  --pk-garden-color-wood: #c6b48f;
  --pk-garden-focus-ring: 0 0 0 3px var(--pk-garden-color-paper), 0 0 0 6px var(--pk-garden-color-focus);
  --pk-garden-font-body: Georgia, "Times New Roman", serif;
  --pk-garden-font-display: Georgia, "Times New Roman", serif;
  --pk-garden-font-label: "Trebuchet MS", Arial, sans-serif;
  --pk-garden-font-note: "Segoe Print", "Bradley Hand", cursive;
  --pk-garden-frame-seed-packet: url("/theme/garden/frames/seed-packet-frame.svg");
  --pk-garden-hero-art: url("/theme/garden/illustrations/garden-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-line-stitched: 1.5px dashed var(--pk-garden-color-line);
  --pk-garden-line-strong: 2px solid var(--pk-garden-color-line);
  --pk-garden-line-thin: 1px solid var(--pk-garden-color-line);
  --pk-garden-logo-art: url("/theme/garden/logos/garden-wordmark.svg");
  --pk-garden-pattern-divider: url("/theme/garden/patterns/botanical-divider.svg");
  --pk-garden-radius-md: 14px;
  --pk-garden-radius-pill: 999px;
  --pk-garden-radius-sm: 8px;
  --pk-garden-radius-xs: 3px;
  --pk-garden-shadow-paper: 0 2px 0 rgba(68, 56, 37, .12), 0 8px 24px rgba(68, 56, 37, .1);
  --pk-garden-shadow-raised: 0 2px 0 #fff9, 0 4px 0 rgba(68, 56, 37, .18), 0 12px 28px rgba(68, 56, 37, .12);
  --pk-garden-text-body: clamp(.94rem, .88rem + .22vw, 1.08rem);
  --pk-garden-text-h1: clamp(2.35rem, 1.72rem + 2.3vw, 4.9rem);
  --pk-garden-text-h2: clamp(1.55rem, 1.25rem + 1.1vw, 2.4rem);
  --pk-garden-text-h3: clamp(1.15rem, 1rem + .55vw, 1.55rem);
  --pk-garden-text-sm: clamp(.78rem, .73rem + .18vw, .9rem);
  --pk-garden-text-xs: clamp(.68rem, .64rem + .13vw, .76rem);
  --pk-garden-texture-gingham: url("/theme/garden/textures/gingham.svg");
  --pk-garden-texture-paper: url("/theme/garden/textures/aged-paper.svg");
  --pk-garden-texture-wood: url("/theme/garden/textures/painted-wood.svg");
  --pw-accent: var(--pk-garden-color-green);
  --pw-accent-deep: var(--pk-garden-color-green-dark);
  --pw-accent-soft: var(--pk-garden-color-sage);
  --pw-amber: var(--pk-garden-color-wood);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-garden-color-page);
  --pw-bg2: color-mix(in srgb, var(--pw-bg) 92%, var(--pw-ink));
  --pw-border: var(--pk-garden-line-strong);
  --pw-card: var(--pk-garden-color-paper);
  --pw-crit: var(--pk-garden-color-error);
  --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: ui-monospace, "SF Mono", SFMono-Regular, Menlo, "Cascadia Mono", monospace;
  --pw-good: var(--pk-garden-color-success);
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-garden-color-ink);
  --pw-line: var(--pk-garden-color-line);
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-garden-color-ink-soft);
  --pw-panel: var(--pk-garden-color-paper-strong);
  --pw-radius: var(--pk-garden-radius-md);
  --pw-shadow: var(--pk-garden-shadow-paper);
  --pw-shadow-lg: var(--pk-garden-shadow-raised);
  --pw-stamp: var(--pk-garden-color-terracotta);
  --pw-surface: var(--pk-garden-color-paper);
  --pw-warn: var(--pk-garden-color-warning);
  --pw-scheme: light;
  --pw-divider: url("/theme/garden/patterns/botanical-divider.svg");
  --pw-frame: url("/theme/garden/frames/seed-packet-frame.svg");
  --pw-hero: url("/theme/garden/illustrations/garden-hero.svg");
  --pw-logo: url("/theme/garden/logos/garden-wordmark.svg");
  --pw-pattern: url("/theme/garden/textures/aged-paper.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, gen2, light) --- */
[data-pw-theme="ranch"], .pw-theme-ranch{
  --pk-ranch-color-accent: var(--pk-ranch-color-blue-dark);
  --pk-ranch-color-blue: #4c6f8e;
  --pk-ranch-color-blue-dark: #34536f;
  --pk-ranch-color-error: #9b2f26;
  --pk-ranch-color-focus: #34536f;
  --pk-ranch-color-green: #8d8a6a;
  --pk-ranch-color-green-dark: #666447;
  --pk-ranch-color-ink: #34251c;
  --pk-ranch-color-ink-soft: #655144;
  --pk-ranch-color-line: #8a7765;
  --pk-ranch-color-mushroom: #6b4a34;
  --pk-ranch-color-page: #d8c6ae;
  --pk-ranch-color-paper: #f3e6d6;
  --pk-ranch-color-paper-strong: #fff7e9;
  --pk-ranch-color-primary: var(--pk-ranch-color-terracotta);
  --pk-ranch-color-rose: #b23a2e;
  --pk-ranch-color-sage: #8d8a6a;
  --pk-ranch-color-success: #666447;
  --pk-ranch-color-terracotta: #b23a2e;
  --pk-ranch-color-warning: #a47e2c;
  --pk-ranch-color-wood: #d2b26c;
  --pk-ranch-focus-ring: 0 0 0 3px var(--pk-ranch-color-paper), 0 0 0 6px var(--pk-ranch-color-focus);
  --pk-ranch-font-body: Georgia, "Times New Roman", serif;
  --pk-ranch-font-display: Rockwell, "Roboto Slab", Georgia, serif;
  --pk-ranch-font-label: "Trebuchet MS", Arial, sans-serif;
  --pk-ranch-font-note: "American Typewriter", "Courier New", serif;
  --pk-ranch-frame-leather: url("/theme/ranch/frames/leather-frame.svg");
  --pk-ranch-hero-art: url("/theme/ranch/illustrations/ranch-horizon.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-line-strong: 2px solid var(--pk-ranch-color-line);
  --pk-ranch-line-thin: 1px solid var(--pk-ranch-color-line);
  --pk-ranch-line-tooled: 1.5px dashed var(--pk-ranch-color-line);
  --pk-ranch-logo-art: url("/theme/ranch/logos/ranch-brand.svg");
  --pk-ranch-pattern-divider: url("/theme/ranch/patterns/rope-divider.svg");
  --pk-ranch-radius-md: 14px;
  --pk-ranch-radius-pill: 999px;
  --pk-ranch-radius-sm: 8px;
  --pk-ranch-radius-xs: 3px;
  --pk-ranch-shadow-paper: 0 2px 0 rgba(68, 56, 37, .12), 0 8px 24px rgba(68, 56, 37, .1);
  --pk-ranch-shadow-raised: 0 2px 0 #fff9, 0 4px 0 rgba(68, 56, 37, .18), 0 12px 28px rgba(68, 56, 37, .12);
  --pk-ranch-text-body: clamp(.94rem, .88rem + .22vw, 1.08rem);
  --pk-ranch-text-h1: clamp(2.35rem, 1.72rem + 2.3vw, 4.9rem);
  --pk-ranch-text-h2: clamp(1.55rem, 1.25rem + 1.1vw, 2.4rem);
  --pk-ranch-text-h3: clamp(1.15rem, 1rem + .55vw, 1.55rem);
  --pk-ranch-text-sm: clamp(.78rem, .73rem + .18vw, .9rem);
  --pk-ranch-text-xs: clamp(.68rem, .64rem + .13vw, .76rem);
  --pk-ranch-texture-paper: url("/theme/ranch/textures/cream-canvas.svg");
  --pk-ranch-texture-plaid-flannel: url("/theme/ranch/textures/plaid-flannel.svg");
  --pk-ranch-texture-wood: url("/theme/ranch/textures/barn-wood.svg");
  --pw-accent: var(--pk-ranch-color-green);
  --pw-accent-deep: var(--pk-ranch-color-green-dark);
  --pw-accent-soft: var(--pk-ranch-color-sage);
  --pw-amber: var(--pk-ranch-color-wood);
  --pw-amber-soft: color-mix(in srgb, var(--pw-amber) 18%, var(--pw-bg));
  --pw-bg: var(--pk-ranch-color-page);
  --pw-bg2: color-mix(in srgb, var(--pw-bg) 92%, var(--pw-ink));
  --pw-border: var(--pk-ranch-line-strong);
  --pw-card: var(--pk-ranch-color-paper);
  --pw-crit: var(--pk-ranch-color-error);
  --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: ui-monospace, "SF Mono", SFMono-Regular, Menlo, "Cascadia Mono", monospace;
  --pw-good: var(--pk-ranch-color-success);
  --pw-good-soft: color-mix(in srgb, var(--pw-good) 18%, var(--pw-bg));
  --pw-ink: var(--pk-ranch-color-ink);
  --pw-line: var(--pk-ranch-color-line);
  --pw-line2: color-mix(in srgb, var(--pw-ink) 12%, var(--pw-bg));
  --pw-muted: var(--pk-ranch-color-ink-soft);
  --pw-panel: var(--pk-ranch-color-paper-strong);
  --pw-radius: var(--pk-ranch-radius-md);
  --pw-shadow: var(--pk-ranch-shadow-paper);
  --pw-shadow-lg: var(--pk-ranch-shadow-raised);
  --pw-stamp: var(--pk-ranch-color-terracotta);
  --pw-surface: var(--pk-ranch-color-paper);
  --pw-warn: var(--pk-ranch-color-warning);
  --pw-scheme: light;
  --pw-divider: url("/theme/ranch/patterns/rope-divider.svg");
  --pw-hero: url("/theme/ranch/illustrations/ranch-horizon.svg");
  --pw-logo: url("/theme/ranch/logos/ranch-brand.svg");
  --pw-pattern: url("/theme/ranch/textures/cream-canvas.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, dark) --- */
[data-pw-theme="roswell"], .pw-theme-roswell{
  --pk-roswell-accent: #6CDD57;
  --pk-roswell-border: 2px solid;
  --pk-roswell-dark: #161917;
  --pk-roswell-extra: #F05A2A;
  --pk-roswell-font-body: Arial Narrow, sans-serif;
  --pk-roswell-font-display: Arial Narrow, sans-serif;
  --pk-roswell-font-mono: Courier New, 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: #F0E6C9;
  --pk-roswell-paper: #2E302C;
  --pk-roswell-pattern: url("/theme/roswell/patterns/pattern.svg");
  --pk-roswell-primary: #9CA19C;
  --pk-roswell-radius: 4px;
  --pk-roswell-reference: url("/theme/roswell/reference.png");
  --pk-roswell-secondary: #555B58;
  --pk-roswell-shadow: inset 0 0 0 2px #111, 0 8px 18px rgba(0,0,0,.42);
  --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: dark;
  --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: #447D75;
  --pk-southwest-border: 2px solid;
  --pk-southwest-dark: #8C6B45;
  --pk-southwest-extra: #315E8A;
  --pk-southwest-font-body: Georgia, serif;
  --pk-southwest-font-display: Rockwell, Georgia, serif;
  --pk-southwest-font-mono: Arial Narrow, sans-serif;
  --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: #3C2B23;
  --pk-southwest-paper: #F3DFC1;
  --pk-southwest-pattern: url("/theme/southwest/patterns/pattern.svg");
  --pk-southwest-primary: #B94C31;
  --pk-southwest-radius: 0;
  --pk-southwest-reference: url("/theme/southwest/reference.png");
  --pk-southwest-secondary: #C98A36;
  --pk-southwest-shadow: 4px 5px 0 rgba(60,43,35,.22);
  --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: #2B3138;
  --pk-t-1000-border: 2px solid;
  --pk-t-1000-dark: #8D99A3;
  --pk-t-1000-extra: #E21A1A;
  --pk-t-1000-font-body: Arial Narrow, sans-serif;
  --pk-t-1000-font-display: Arial Narrow, sans-serif;
  --pk-t-1000-font-mono: Courier New, 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: #EEF2F4;
  --pk-t-1000-paper: #0A0D11;
  --pk-t-1000-pattern: url("/theme/t-1000/patterns/pattern.svg");
  --pk-t-1000-primary: #C9D0D5;
  --pk-t-1000-radius: 1px;
  --pk-t-1000-reference: url("/theme/t-1000/reference.png");
  --pk-t-1000-secondary: #6F7C86;
  --pk-t-1000-shadow: 0 12px 28px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.22);
  --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: #1680C4;
  --pk-uncle-flocker-border: 3px solid;
  --pk-uncle-flocker-dark: #FFFFFF;
  --pk-uncle-flocker-extra: #78B95B;
  --pk-uncle-flocker-font-body: Arial, sans-serif;
  --pk-uncle-flocker-font-display: Arial Rounded MT Bold, Arial, sans-serif;
  --pk-uncle-flocker-font-mono: Arial, sans-serif;
  --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: #12283A;
  --pk-uncle-flocker-paper: #EAF7FF;
  --pk-uncle-flocker-pattern: url("/theme/uncle-flocker/patterns/pattern.svg");
  --pk-uncle-flocker-primary: #E4242E;
  --pk-uncle-flocker-radius: 8px;
  --pk-uncle-flocker-reference: url("/theme/uncle-flocker/reference.png");
  --pk-uncle-flocker-secondary: #F3C43B;
  --pk-uncle-flocker-shadow: 4px 5px 0 #12283A;
  --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.

   Colours 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-muted, var(--muted, #93a4a3));
  font-family:var(--pw-font-mono, var(--mono, ui-monospace, monospace));
  font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  border-radius:20px; padding:6px 12px;
}
.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)) }
