@layer config, theme, reset, base, utils, components, helpers;

@font-face {
    font-family: "PT Sans";
    src:
        local("PT Sans Regular"),
        url("/assets/fonts/PTSans-Regular.woff2") format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: fallback;
}

@font-face {
    font-family: "PT Sans";
    src:
        local("PT Sans Bold"),
        url("/assets/fonts/PTSans-Bold.woff2") format("woff2");
    font-weight: 700;
    font-style: normal;
    font-display: fallback;
}

@layer config {
    :where(html) {
        /* Typography */

        --font-family-mono: monospace;
        --font-family-sans: "PT Sans", system-ui, sans-serif;
        --font-family-serif: serif;
        --font-family-default: var(--font-family-sans);

        --font-weight-default: 400;
        --font-weight-heading: 700;
        --font-weight-active: 700;
        --font-weight-strong: 700;

        --line-height-large: 1.85;
        --line-height-base: 1.55;
        --line-height-small: 1.1;

        --tracking-base: normal;
        --tracking-tight: -0.04ch;
        --tracking-wide: 0.04ch;

        --measure-large: 88ch;
        --measure-base: 72ch;
        --measure-small: 44ch;

        --font-size-smallest: max(0.75rem, 12px);
        --font-size-small: max(0.875rem, 14px);
        --font-size-base: 1rem;
        --font-size-medium: 1.125rem;
        --font-size-large: 1.25rem;
        --font-size-largest: 2.5rem;
        --font-size-display: 3rem;

        /* Transparency */
        --transparency-weaker: 0.8;

        /* Spacing */

        --spacing-tiny: 0.125rem;
        --spacing-nearest: 0.25rem;
        --spacing-near: 0.5rem;
        --spacing-base: 1rem;
        --spacing-far: 2rem;
        --spacing-farthest: 4rem;

        /* Borders */

        --border-width-thin: 1px;
        --border-width-medium: 2px;
        --border-width-thick: 4px;

        --border-radius-none: 0px;
        --border-radius-small: 4px;
        --border-radius-medium: 12px;
        --border-radius-large: 18px;
        --border-radius-round: 1e5px;

        /* UI Density Elements */

        --control-height-base: 2.5em;
        --control-height-small: 2em;

        --control-spacing-minimal: 0.125em;
        --control-spacing-tiny: 0.25em;
        --control-spacing-nearest: 0.375em;
        --control-spacing-near: 0.5em;
        --control-spacing-base: 0.75em;
        --control-spacing-far: 1em;
        --control-spacing-farthest: 1.5em;


        /* SHADOWS */

        --shadow-box: 0.4px 0.8px 1px 0px color-mix(in oklch, var(--shadow-color), transparent 68%), inset -0.4px 0.8px 1px 0px color-mix(in oklch, var(--color-surface-base), transparent 68%), inset 0.4px 0.8px 1px 0px color-mix(in oklch, var(--color-surface-base), transparent 68%);
        --shadow-inset: inset 0.4px 0.8px 1px 0px color-mix(in oklch, var(--shadow-color), transparent 68%);
        --shadow-nearest: 0.4px 0.8px 1px 0px color-mix(in oklch, var(--shadow-color), transparent 68%);
        --shadow-near: 0.4px 0.8px 1px 0px color-mix(in oklch, var(--shadow-color), transparent 68%), 0.7px 1.4px 1.8px -0.5px color-mix(in oklch, var(--shadow-color), transparent 72.8%), 1.3px 2.6px 3.4px -1px color-mix(in oklch, var(--shadow-color), transparent 76.9%);
        --shadow-medium: 0.4px 0.8px 1px 0px color-mix(in oklch, var(--shadow-color), transparent 68%), 0.7px 1.4px 1.8px -0.5px color-mix(in oklch, var(--shadow-color), transparent 72.8%), 1.3px 2.6px 3.4px -1px color-mix(in oklch, var(--shadow-color), transparent 76.9%), 2.4px 4.7px 6.1px -1.5px color-mix(in oklch, var(--shadow-color), transparent 80.3%), 4.2px 8.4px 10.9px -2px color-mix(in oklch, var(--shadow-color), transparent 83.3%);
        --shadow-far: 0.4px 0.8px 1px 0px color-mix(in oklch, var(--shadow-color), transparent 68%), 0.7px 1.4px 1.8px -0.5px color-mix(in oklch, var(--shadow-color), transparent 72.8%), 1.3px 2.6px 3.4px -1px color-mix(in oklch, var(--shadow-color), transparent 76.9%), 2.4px 4.7px 6.1px -1.5px color-mix(in oklch, var(--shadow-color), transparent 80.3%), 4.2px 8.4px 10.9px -2px color-mix(in oklch, var(--shadow-color), transparent 83.3%), 7.6px 15.1px 19.6px -2.5px color-mix(in oklch, var(--shadow-color), transparent 85.8%), 13.6px 27.2px 35.4px -3px color-mix(in oklch, var(--shadow-color), transparent 87.9%), 24.5px 49px 63.7px -3.5px color-mix(in oklch, var(--shadow-color), transparent 89.7%);
        /* Light Theme */

        --shadow-color-light: oklch(89% 0.008 123);
        --shadow-color-light-lch: 89% 0.008 123;

        /* Dark Theme */

        --shadow-color-dark: oklch(30% 0.008 123);
        --shadow-color-dark-lch: 30% 0.008 123;


        --lightness-max: 1;
        --lightness-min: 0.03;
        --neutral-chroma-scale: 1;
        --c-brand-primary: 0.185;
        --h-brand-primary: 123;
        --l-brand-primary-light: 0.76;
        --color-brand-primary-base-light: oklch(var(--l-brand-primary-light) var(--c-brand-primary) var(--h-brand-primary));
        --color-brand-primary-emphasis-light: oklch(from var(--color-brand-primary-base-light) calc(l * 0.85) calc(c * 1.1) h);
        --color-brand-primary-surface-light: oklch(from var(--color-brand-primary-base-light) calc(var(--lightness-max) - 0.1 + l / 10) calc(c * 0.25) h);
        --color-brand-primary-contrast-light: oklch(from var(--color-brand-primary-base-light) var(--lightness-min) calc(c * 0.25) h);
        --color-brand-primary-hover-light: oklch(from var(--color-brand-primary-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-brand-primary-dark: 0.76;
        --color-brand-primary-base-dark: oklch(var(--l-brand-primary-dark) var(--c-brand-primary) var(--h-brand-primary));
        --color-brand-primary-emphasis-dark: oklch(from var(--color-brand-primary-base-dark) calc(l * 1.25) calc(c * 1.1) h);
        --color-brand-primary-surface-dark: oklch(from var(--color-brand-primary-base-dark) calc(var(--lightness-min) + l / 3) calc(c * 0.25) h);
        --color-brand-primary-contrast-dark: oklch(from var(--color-brand-primary-base-dark) var(--lightness-min) calc(c * 0.25) h);
        --color-brand-primary-hover-dark: oklch(from var(--color-brand-primary-base-dark) l c h / calc(var(--transparency-weaker) / 10));
        --c-brand-secondary: 0.1;
        --h-brand-secondary: 87.4;
        --l-brand-secondary-light: 0.76;
        --color-brand-secondary-base-light: oklch(var(--l-brand-secondary-light) var(--c-brand-secondary) var(--h-brand-secondary));
        --color-brand-secondary-emphasis-light: oklch(from var(--color-brand-secondary-base-light) calc(l * 0.85) calc(c * 1.1) h);
        --color-brand-secondary-surface-light: oklch(from var(--color-brand-secondary-base-light) calc(var(--lightness-max) - 0.1 + l / 10) calc(c * 0.25) h);
        --color-brand-secondary-contrast-light: oklch(from var(--color-brand-secondary-base-light) var(--lightness-min) calc(c * 0.25) h);
        --color-brand-secondary-hover-light: oklch(from var(--color-brand-secondary-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-brand-secondary-dark: 0.76;
        --color-brand-secondary-base-dark: oklch(var(--l-brand-secondary-dark) var(--c-brand-secondary) var(--h-brand-secondary));
        --color-brand-secondary-emphasis-dark: oklch(from var(--color-brand-secondary-base-dark) calc(l * 1.25) calc(c * 1.1) h);
        --color-brand-secondary-surface-dark: oklch(from var(--color-brand-secondary-base-dark) calc(var(--lightness-min) + l / 3) calc(c * 0.25) h);
        --color-brand-secondary-contrast-dark: oklch(from var(--color-brand-secondary-base-dark) var(--lightness-min) calc(c * 0.25) h);
        --color-brand-secondary-hover-dark: oklch(from var(--color-brand-secondary-base-dark) l c h / calc(var(--transparency-weaker) / 10));
        --l-text-light: 0.22;
        --c-text-light: 0.02;
        --h-text-light: var(--h-brand-secondary);
        --scale-text-light: 1.3;
        --color-text-base-light: oklch(var(--l-text-light) var(--c-text-light) var(--h-text-light));
        --color-text-muted-light: oklch(from var(--color-text-base-light) calc(l * var(--scale-text-light)) calc(c * var(--neutral-chroma-scale)) h);
        --color-text-subtle-light: oklch(from var(--color-text-base-light) calc(l * var(--scale-text-light) * var(--scale-text-light)) calc(c * var(--neutral-chroma-scale) * var(--neutral-chroma-scale)) h);
        --color-text-on-emphasis-light: oklch(from var(--color-text-base-light) var(--lightness-max) calc(c * 0.1) h);
        --color-text-hover-light: oklch(from var(--color-text-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-text-dark: 0.98;
        --c-text-dark: 0.01;
        --h-text-dark: var(--h-brand-secondary);
        --scale-text-dark: 0.9;
        --color-text-base-dark: oklch(var(--l-text-dark) var(--c-text-dark) var(--h-text-dark));
        --color-text-muted-dark: oklch(from var(--color-text-base-dark) calc(l * var(--scale-text-dark)) calc(c * var(--neutral-chroma-scale)) h);
        --color-text-subtle-dark: oklch(from var(--color-text-base-dark) calc(l * var(--scale-text-dark) * var(--scale-text-dark)) calc(c * var(--neutral-chroma-scale) * var(--neutral-chroma-scale)) h);
        --color-text-on-emphasis-dark: oklch(from var(--color-text-base-dark) var(--lightness-min) c h);
        --color-text-hover-dark: oklch(from var(--color-text-base-dark) l c h / calc(var(--transparency-weaker) / 10));
        --l-surface-light: 1;
        --c-surface-light: 0.012;
        --h-surface-light: var(--h-brand-secondary);
        --scale-surface-light: 0.98;
        --color-surface-base-light: oklch(var(--l-surface-light) var(--c-surface-light) var(--h-surface-light));
        --color-surface-muted-light: oklch(from var(--color-surface-base-light) calc(l * var(--scale-surface-light)) calc(c * var(--neutral-chroma-scale)) h);
        --color-surface-subtle-light: oklch(from var(--color-surface-base-light) calc(l * var(--scale-surface-light) * var(--scale-surface-light)) calc(c * var(--neutral-chroma-scale) * var(--neutral-chroma-scale)) h);
        --color-surface-emphasis-light: oklch(from var(--color-surface-base-light) var(--lightness-min) c h);
        --l-surface-dark: 0.2;
        --c-surface-dark: 0.03;
        --h-surface-dark: var(--h-brand-secondary);
        --scale-surface-dark: 1.15;
        --color-surface-base-dark: oklch(var(--l-surface-dark) var(--c-surface-dark) var(--h-surface-dark));
        --color-surface-muted-dark: oklch(from var(--color-surface-base-dark) calc(l * var(--scale-surface-dark)) calc(c * var(--neutral-chroma-scale)) h);
        --color-surface-subtle-dark: oklch(from var(--color-surface-base-dark) calc(l * var(--scale-surface-dark) * var(--scale-surface-dark)) calc(c * var(--neutral-chroma-scale) * var(--neutral-chroma-scale)) h);
        --color-surface-emphasis-dark: oklch(from var(--color-surface-base-dark) var(--lightness-max) calc(c * 0.1) h);
        --l-border-light: 0.89;
        --c-border-light: 0.025;
        --h-border-light: var(--h-brand-secondary);
        --scale-border-light: 1.025;
        --color-border-base-light: oklch(var(--l-border-light) var(--c-border-light) var(--h-border-light));
        --color-border-muted-light: oklch(from var(--color-border-base-light) calc(l * var(--scale-border-light)) calc(c * var(--neutral-chroma-scale)) h);
        --color-border-subtle-light: oklch(from var(--color-border-base-light) calc(l * var(--scale-border-light) * var(--scale-border-light)) calc(c * var(--neutral-chroma-scale) * var(--neutral-chroma-scale)) h);
        --color-border-on-emphasis-light: oklch(from var(--color-border-base-light) var(--lightness-max) c h);
        --color-border-hover-light: oklch(from var(--color-border-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-border-dark: 0.35;
        --c-border-dark: 0.03;
        --scale-border-dark: 0.96;
        --h-border-dark: var(--h-brand-secondary);
        --color-border-base-dark: oklch(var(--l-border-dark) var(--c-border-dark) var(--h-border-dark));
        --color-border-muted-dark: oklch(from var(--color-border-base-dark) calc(l * var(--scale-border-dark)) calc(c * var(--neutral-chroma-scale)) h);
        --color-border-subtle-dark: oklch(from var(--color-border-base-dark) calc(l * var(--scale-border-dark) * var(--scale-border-dark)) calc(c * var(--neutral-chroma-scale) * var(--neutral-chroma-scale)) h);
        --color-border-on-emphasis-dark: oklch(from var(--color-border-base-dark) var(--lightness-max) c h);
        --color-border-hover-dark: oklch(from var(--color-border-base-dark) l c h / calc(var(--transparency-weaker) / 10));
        --c-status-success: 0.185;
        --h-status-success: 142;
        --l-status-success-light: 0.76;
        --color-status-success-base-light: oklch(var(--l-status-success-light) var(--c-status-success) var(--h-status-success));
        --color-status-success-emphasis-light: oklch(from var(--color-status-success-base-light) calc(l * 0.85) calc(c * 1.1) h);
        --color-status-success-surface-light: oklch(from var(--color-status-success-base-light) calc(var(--lightness-max) - 0.1 + l / 10) calc(c * 0.25) h);
        --color-status-success-contrast-light: oklch(from var(--color-status-success-base-light) var(--lightness-min) calc(c * 0.25) h);
        --color-status-success-hover-light: oklch(from var(--color-status-success-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-status-success-dark: 0.76;
        --color-status-success-base-dark: oklch(var(--l-status-success-dark) var(--c-status-success) var(--h-status-success));
        --color-status-success-emphasis-dark: oklch(from var(--color-status-success-base-dark) calc(l * 1.25) calc(c * 1.1) h);
        --color-status-success-surface-dark: oklch(from var(--color-status-success-base-dark) calc(var(--lightness-min) + l / 3) calc(c * 0.25) h);
        --color-status-success-contrast-dark: oklch(from var(--color-status-success-base-dark) var(--lightness-min) calc(c * 0.25) h);
        --color-status-success-hover-dark: oklch(from var(--color-status-success-base-dark) l c h / calc(var(--transparency-weaker) / 10));
        --c-status-warning: 0.185;
        --h-status-warning: 97;
        --l-status-warning-light: 0.76;
        --color-status-warning-base-light: oklch(var(--l-status-warning-light) var(--c-status-warning) var(--h-status-warning));
        --color-status-warning-emphasis-light: oklch(from var(--color-status-warning-base-light) calc(l * 0.85) calc(c * 1.1) h);
        --color-status-warning-surface-light: oklch(from var(--color-status-warning-base-light) calc(var(--lightness-max) - 0.1 + l / 10) calc(c * 0.25) h);
        --color-status-warning-contrast-light: oklch(from var(--color-status-warning-base-light) var(--lightness-min) calc(c * 0.25) h);
        --color-status-warning-hover-light: oklch(from var(--color-status-warning-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-status-warning-dark: 0.76;
        --color-status-warning-base-dark: oklch(var(--l-status-warning-dark) var(--c-status-warning) var(--h-status-warning));
        --color-status-warning-emphasis-dark: oklch(from var(--color-status-warning-base-dark) calc(l * 1.25) calc(c * 1.1) h);
        --color-status-warning-surface-dark: oklch(from var(--color-status-warning-base-dark) calc(var(--lightness-min) + l / 3) calc(c * 0.25) h);
        --color-status-warning-contrast-dark: oklch(from var(--color-status-warning-base-dark) var(--lightness-min) calc(c * 0.25) h);
        --color-status-warning-hover-dark: oklch(from var(--color-status-warning-base-dark) l c h / calc(var(--transparency-weaker) / 10));
        --c-status-danger: 0.185;
        --h-status-danger: 32;
        --l-status-danger-light: 0.76;
        --color-status-danger-base-light: oklch(var(--l-status-danger-light) var(--c-status-danger) var(--h-status-danger));
        --color-status-danger-emphasis-light: oklch(from var(--color-status-danger-base-light) calc(l * 0.85) calc(c * 1.1) h);
        --color-status-danger-surface-light: oklch(from var(--color-status-danger-base-light) calc(var(--lightness-max) - 0.1 + l / 10) calc(c * 0.25) h);
        --color-status-danger-contrast-light: oklch(from var(--color-status-danger-base-light) var(--lightness-min) calc(c * 0.25) h);
        --color-status-danger-hover-light: oklch(from var(--color-status-danger-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-status-danger-dark: 0.76;
        --color-status-danger-base-dark: oklch(var(--l-status-danger-dark) var(--c-status-danger) var(--h-status-danger));
        --color-status-danger-emphasis-dark: oklch(from var(--color-status-danger-base-dark) calc(l * 1.25) calc(c * 1.1) h);
        --color-status-danger-surface-dark: oklch(from var(--color-status-danger-base-dark) calc(var(--lightness-min) + l / 3) calc(c * 0.25) h);
        --color-status-danger-contrast-dark: oklch(from var(--color-status-danger-base-dark) var(--lightness-min) calc(c * 0.25) h);
        --color-status-danger-hover-dark: oklch(from var(--color-status-danger-base-dark) l c h / calc(var(--transparency-weaker) / 10));
        --c-status-info: 0.185;
        --h-status-info: 245;
        --l-status-info-light: 0.76;
        --color-status-info-base-light: oklch(var(--l-status-info-light) var(--c-status-info) var(--h-status-info));
        --color-status-info-emphasis-light: oklch(from var(--color-status-info-base-light) calc(l * 0.85) calc(c * 1.1) h);
        --color-status-info-surface-light: oklch(from var(--color-status-info-base-light) calc(var(--lightness-max) - 0.1 + l / 10) calc(c * 0.25) h);
        --color-status-info-contrast-light: oklch(from var(--color-status-info-base-light) var(--lightness-min) calc(c * 0.25) h);
        --color-status-info-hover-light: oklch(from var(--color-status-info-base-light) l c h / calc(var(--transparency-weaker) / 10));
        --l-status-info-dark: 0.76;
        --color-status-info-base-dark: oklch(var(--l-status-info-dark) var(--c-status-info) var(--h-status-info));
        --color-status-info-emphasis-dark: oklch(from var(--color-status-info-base-dark) calc(l * 1.25) calc(c * 1.1) h);
        --color-status-info-surface-dark: oklch(from var(--color-status-info-base-dark) calc(var(--lightness-min) + l / 3) calc(c * 0.25) h);
        --color-status-info-contrast-dark: oklch(from var(--color-status-info-base-dark) var(--lightness-min) calc(c * 0.25) h);
        --color-status-info-hover-dark: oklch(from var(--color-status-info-base-dark) l c h / calc(var(--transparency-weaker) / 10));
    }
}
