sillyspace/public/static/css/core/tokens.css
2026-06-03 22:59:03 -04:00

220 lines
10 KiB
CSS

:root {
color-scheme: light;
--color-white: #ffffff;
--color-ink: #1a1a1a;
/* App theme values written by admin branding. Profile skins use these as fallbacks. */
--app-theme-chrome: #7c3aed;
--app-theme-chrome-text: var(--color-white);
--app-theme-accent: #7c3aed;
--app-theme-accent-text: var(--color-white);
--app-theme-link: #6b21a8;
--app-theme-backdrop: #e6e3ea;
--app-theme-page: #ffffff;
--app-theme-surface: #ffffff;
--app-theme-page-text: var(--color-ink);
--app-theme-surface-text: var(--app-theme-page-text);
--app-theme-link-hover: color-mix(in srgb, var(--app-theme-link) 68%, var(--app-theme-page-text));
--app-theme-surface-link: var(--app-theme-link);
--app-theme-surface-link-hover: var(--app-theme-link-hover);
--app-theme-muted: #6b7280;
--app-theme-focus: #f59e0b;
/* Theme source tokens for the app shell and component palette. */
--theme-chrome: var(--app-theme-chrome);
--theme-chrome-text: var(--app-theme-chrome-text);
--theme-accent: var(--app-theme-accent);
--theme-accent-text: var(--app-theme-accent-text);
--theme-link: var(--app-theme-link);
--theme-backdrop: var(--app-theme-backdrop);
--theme-page: var(--app-theme-page);
--theme-surface: var(--app-theme-surface);
--theme-page-text: var(--app-theme-page-text);
--theme-surface-text: var(--theme-page-text);
--theme-link-hover: color-mix(in srgb, var(--theme-link) 68%, var(--theme-page-text));
--theme-surface-link: var(--theme-link);
--theme-surface-link-hover: var(--theme-link-hover);
--theme-muted: var(--app-theme-muted);
--theme-danger: #d32626;
--theme-danger-text: var(--theme-danger);
--theme-success: #34d399;
--theme-success-ink: var(--color-ink);
--theme-success-text: #047857;
--theme-focus: var(--app-theme-focus);
/* Background texture for the default app shell. */
--theme-page-grid-a: color-mix(in srgb, var(--theme-backdrop) 88%, white);
--theme-page-grid-b: color-mix(in srgb, var(--theme-backdrop) 94%, black);
--theme-toggle-dark-display: inline-flex;
--theme-toggle-light-display: none;
--font-body: Verdana, Arial, Helvetica, sans-serif;
--line-height-body: 1.225;
--font-size-main: 80%;
--font-size-footer: 70%;
--font-size-note: 90%;
--font-size-caption: 80%;
--font-size-small: max(0.875em, 12px);
--font-size-nav: 10pt;
--font-size-nav-link: max(0.98em, 12px);
--font-size-utility-action: max(var(--font-size-caption), 12px);
--font-size-card-heading: 1.17em;
--font-size-panel-heading: 1.06em;
--font-size-profile-heading: 1.5em;
--container-width: 960px;
--container-min-height: 100dvh;
--content-measure: 600px;
--nav-side-min: 130px;
--audio-width: 190px;
--avatar-size: 80px;
--avatar-compact-size: 48px;
--profile-photo-size: 235px;
--profile-edit-photo-size: 180px;
--person-card-width: var(--avatar-size);
--person-card-min-height: 100px;
--profile-person-card-width: 105px;
--details-label-width: 33%;
--discussion-author-width: calc(var(--avatar-compact-size) + var(--space-12));
--column-compact: 20%;
--column-profile: 40%;
--column-wide: 60%;
--column-aside-min: 9rem;
--profile-sidebar-min: calc(var(--profile-photo-size) + (var(--space-6) * 2));
--space-1: 2px;
--space-2: 4px;
--space-3: 5px;
--space-4: 7px;
--space-5: 8px;
--space-6: 10px;
--space-7: 12px;
--space-8: 14px;
--space-9: 15px;
--space-10: 20px;
--space-11: 30px;
--space-12: 40px;
--layout-stack-gap: var(--space-8);
--panel-body-gap: var(--space-7);
--list-stack-gap: var(--space-7);
--space-main-y: 0;
--space-main-x: 0;
--space-nav-links-y: 6px;
--space-nav-links-x: 16px;
--link-separator-gap: 0.45em;
--article-title-offset: 3px;
--icon-label-gap: 0.35em;
--icon-offset-y: -0.22em;
--border-thin: 1px;
--border-medium: 2px;
--radius-panel-default: 0;
--radius-media-default: 0;
--radius-panel: var(--radius-panel-default);
--radius-media: var(--radius-media-default);
--radius-control-default: 2px;
--radius-subtle: var(--radius-control-default);
--text-decoration-hairline: 0.5px;
--text-underline-offset: 2px;
--icon-size: 1.2em;
--brand-icon-size: 2em;
--avatar-glyph-size: 70%;
--control-min-height: 24px;
--control-pad-y: var(--space-1);
--control-pad-x: var(--space-3);
--button-active-shift: 1px;
--disabled-opacity: 0.68;
--focus-outline-width: 2px;
--focus-offset: 1px;
--table-cell-y: var(--space-3);
--table-cell-x: 6px;
--contact-cell-min-height: 32px;
--nav-search-width: 170px;
--nav-link-min-height: 24px;
}
:root,
[data-skin-page],
[data-author-skin-page] {
/* Shared resolver: admin themes and profile skins both feed --theme-* here. */
--color-page: var(--theme-backdrop);
--color-canvas: var(--theme-page);
--color-surface: var(--theme-surface);
--color-surface-raised: color-mix(in srgb, var(--color-surface) 94%, var(--color-brand-accent));
--color-surface-tint: color-mix(in srgb, var(--color-surface) 90%, var(--color-brand-accent));
--color-text: var(--theme-page-text);
--color-text-muted: var(--theme-muted);
--color-text-on-bright: var(--theme-chrome-text);
--color-link: var(--theme-link);
--color-link-hover: var(--theme-link-hover);
--color-brand: var(--theme-surface-link);
--color-brand-accent: var(--theme-chrome);
--color-brand-header: color-mix(in srgb, var(--color-brand-accent) 72%, black);
--color-brand-nav: color-mix(in srgb, var(--color-brand-accent) 88%, black);
--color-brand-soft: color-mix(in srgb, var(--color-surface) 84%, var(--color-brand-accent));
--color-brand-border: color-mix(in srgb, var(--color-white) 54%, var(--color-brand-accent));
--color-panel-accent: var(--color-brand-soft);
--color-panel-accent-soft: color-mix(in srgb, var(--color-surface) 94%, var(--color-brand-accent));
--color-panel-rule: color-mix(in srgb, var(--color-brand-border) 72%, var(--color-white));
--color-container-border: color-mix(in srgb, var(--color-page) 70%, var(--color-brand-accent));
--color-danger: var(--theme-danger);
--color-danger-text: var(--theme-danger-text);
--color-danger-soft: color-mix(in srgb, var(--color-surface) 88%, var(--color-danger));
--color-danger-border: color-mix(in srgb, var(--color-white) 52%, var(--color-danger));
--color-success: var(--theme-success);
--color-success-ink: var(--theme-success-ink);
--color-success-text: var(--theme-success-text);
--color-success-soft: color-mix(in srgb, var(--color-surface) 86%, var(--color-success));
--color-success-border: color-mix(in srgb, var(--color-white) 52%, var(--color-success));
--color-field: color-mix(in srgb, var(--color-surface) 98%, var(--color-canvas));
--color-field-disabled: color-mix(in srgb, var(--color-surface) 88%, var(--color-text));
--color-field-border-light: var(--color-white);
--color-field-border: color-mix(in srgb, var(--color-ink) 42%, var(--color-white));
--color-field-border-dark: color-mix(in srgb, var(--color-ink) 62%, var(--color-white));
--color-focus: var(--theme-focus);
--color-link-focus-bg: var(--color-surface-tint);
--color-row-alt: var(--color-surface-tint);
--color-shadow-panel: color-mix(in srgb, var(--color-surface) 70%, var(--color-page));
--color-shadow-soft: color-mix(in srgb, var(--color-white) 70%, var(--color-ink));
--color-shadow-pressed: color-mix(in srgb, var(--color-ink) 55%, black);
--color-shadow-card: color-mix(in srgb, var(--color-surface) 68%, var(--color-page));
--color-button-primary-bg: var(--theme-accent);
--color-button-primary-text: var(--theme-accent-text);
--color-button-primary-border-light: color-mix(in srgb, var(--color-white) 54%, var(--color-button-primary-bg));
--color-button-primary-border-dark: color-mix(in srgb, var(--color-button-primary-bg) 68%, black);
--color-button-primary-hover-bg: var(--color-button-primary-border-dark);
--color-button-primary-hover-text: var(--color-button-primary-text);
--color-button-secondary-bg: var(--color-surface);
--color-button-secondary-text: var(--color-brand);
--color-button-secondary-border-light: var(--color-surface-tint);
--color-button-secondary-border-dark: var(--color-brand-border);
--color-button-secondary-hover-bg: var(--color-surface-tint);
--color-button-secondary-hover-text: var(--theme-surface-link-hover);
--color-button-danger-bg: var(--color-surface);
--color-button-danger-text: var(--color-danger-text);
--color-button-danger-border-light: var(--color-danger-border);
--color-button-danger-border-dark: var(--color-danger);
--color-button-danger-hover-bg: var(--color-danger-soft);
--color-button-danger-hover-text: var(--color-danger);
--surface-background: var(--color-surface);
--surface-background-raised: var(--color-surface-raised);
--surface-background-soft: var(--color-panel-accent-soft);
--surface-background-tint: var(--color-surface-tint);
--surface-border: var(--color-brand-border);
--surface-border-soft: var(--color-panel-accent);
--surface-rule: var(--color-panel-rule);
--surface-shadow: var(--shadow-panel);
--page-background: repeating-linear-gradient(0deg, var(--theme-page-grid-a) 0, var(--theme-page-grid-a) var(--border-thin), var(--theme-page-grid-b) var(--border-thin), var(--theme-page-grid-b) var(--border-medium));
--shadow-panel: var(--border-thin) var(--border-thin) 0 var(--color-white), var(--border-medium) var(--border-medium) 0 var(--color-shadow-panel);
--shadow-button: inset var(--border-thin) var(--border-thin) 0 var(--button-border-light), var(--border-thin) var(--border-thin) 0 var(--button-border-dark);
--shadow-field: inset var(--border-thin) var(--border-thin) var(--border-thin) var(--color-shadow-soft);
--shadow-pressed: inset var(--border-thin) var(--border-thin) var(--border-thin) var(--color-shadow-pressed);
--shadow-photo: var(--border-medium) var(--border-medium) 0 var(--color-shadow-soft);
--shadow-card: var(--border-medium) var(--border-medium) 0 var(--color-shadow-card);
--column-divider-shadow: inset calc(var(--border-thin) * -1) 0 0 var(--color-surface), inset calc(var(--border-medium) * -1) 0 0 var(--color-panel-accent-soft);
accent-color: var(--color-brand);
}