eidotter 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/components/FilterBar/components/FilterBar.d.ts +57 -0
- package/dist/components/FilterBar/components/index.d.ts +2 -0
- package/dist/components/FilterBar/index.d.ts +2 -0
- package/dist/components/Icon/components/Icon.d.ts +1 -1
- package/dist/components/Modal/components/Modal.d.ts +6 -0
- package/dist/components/Progress/components/Progress.d.ts +27 -2
- package/dist/components/RetroEffects/components/RetroEffects.d.ts +13 -0
- package/dist/components/RetroEffects/components/index.d.ts +1 -1
- package/dist/components/RetroEffects/index.d.ts +1 -1
- package/dist/components/Tabs/components/Tabs.d.ts +4 -2
- package/dist/components/registry.d.ts +16 -0
- package/dist/eidotter.css +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.es.js +732 -449
- package/dist/index.umd.js +4 -4
- package/package.json +123 -113
- package/src/styles/theme.amber-mono.css +123 -0
- package/src/styles/theme.cga-amber.css +123 -0
- package/src/styles/theme.cga-mode4-p0.css +92 -0
- package/src/styles/theme.cga-mode4-p1.css +92 -0
- package/src/styles/theme.cga-mode5.css +92 -0
- package/src/styles/tokens.css +2 -0
- package/tailwind.preset.cjs +22 -22
package/README.md
CHANGED
|
@@ -145,7 +145,7 @@ The library uses authentic CGA colors:
|
|
|
145
145
|
Apply the DOS amber theme (amber-on-black terminal aesthetic):
|
|
146
146
|
|
|
147
147
|
```html
|
|
148
|
-
<div data-theme="
|
|
148
|
+
<div data-theme="amber-mono">
|
|
149
149
|
<!-- Components will use amber colors -->
|
|
150
150
|
</div>
|
|
151
151
|
```
|
|
@@ -153,7 +153,7 @@ Apply the DOS amber theme (amber-on-black terminal aesthetic):
|
|
|
153
153
|
Or via CSS class:
|
|
154
154
|
|
|
155
155
|
```html
|
|
156
|
-
<div class="theme-
|
|
156
|
+
<div class="theme-amber-mono">...</div>
|
|
157
157
|
```
|
|
158
158
|
|
|
159
159
|
## Tailwind CSS Integration
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './FilterBar.css';
|
|
3
|
+
export interface FilterBarItem {
|
|
4
|
+
/** Unique identifier for the filter */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Display label */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Optional count displayed as badge */
|
|
9
|
+
count?: number;
|
|
10
|
+
/** Whether this item is disabled */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
/** Optional CGA color token for active state (e.g. '--color-cga-bright-cyan') */
|
|
13
|
+
color?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface FilterBarProps {
|
|
16
|
+
/** Array of filter items to display */
|
|
17
|
+
items: FilterBarItem[];
|
|
18
|
+
/** Currently active filter IDs (controlled mode) */
|
|
19
|
+
activeIds?: string[];
|
|
20
|
+
/** Default active filter IDs (uncontrolled mode) */
|
|
21
|
+
defaultActiveIds?: string[];
|
|
22
|
+
/**
|
|
23
|
+
* Selection mode: 'multi' allows multiple selections, 'single' allows one at a time.
|
|
24
|
+
* Default: 'multi'
|
|
25
|
+
*/
|
|
26
|
+
mode?: 'multi' | 'single';
|
|
27
|
+
/** Show an "All" toggle that selects/deselects everything. Default: false */
|
|
28
|
+
showAll?: boolean;
|
|
29
|
+
/** Label for the "All" toggle. Default: 'All' */
|
|
30
|
+
allLabel?: string;
|
|
31
|
+
/** The size of the filter bar */
|
|
32
|
+
size?: 'small' | 'medium' | 'large';
|
|
33
|
+
/**
|
|
34
|
+
* Callback when selection changes.
|
|
35
|
+
* Receives the new set of active IDs.
|
|
36
|
+
*/
|
|
37
|
+
onChange?: (activeIds: string[]) => void;
|
|
38
|
+
/** Optional CSS class name */
|
|
39
|
+
className?: string;
|
|
40
|
+
/** Accessible label for the filter bar */
|
|
41
|
+
'aria-label'?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* DOS-styled FilterBar component for multi-select or single-select content filtering
|
|
45
|
+
*
|
|
46
|
+
* Features:
|
|
47
|
+
* - Multi-select (default) or single-select mode
|
|
48
|
+
* - Optional count badges on each filter item
|
|
49
|
+
* - Optional "All" toggle that selects/deselects everything
|
|
50
|
+
* - Full keyboard navigation (Arrow keys, Space, Enter, Home, End)
|
|
51
|
+
* - Controlled and uncontrolled modes
|
|
52
|
+
* - DOS-authentic styling with CGA colors
|
|
53
|
+
* - WCAG 2.1 AA compliant
|
|
54
|
+
* - prefers-reduced-motion support
|
|
55
|
+
* - prefers-contrast: high support
|
|
56
|
+
*/
|
|
57
|
+
export declare const FilterBar: React.FC<FilterBarProps>;
|
|
@@ -35,7 +35,7 @@ export interface IconProps {
|
|
|
35
35
|
* Usage:
|
|
36
36
|
* ```tsx
|
|
37
37
|
* <Icon name="Warning" size="base" />
|
|
38
|
-
* <Icon name="Close" size={24} color="var(--color-
|
|
38
|
+
* <Icon name="Close" size={24} color="var(--color-semantic-link-default)" />
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
export declare const Icon: FC<IconProps>;
|
|
@@ -9,6 +9,12 @@ export interface ModalProps {
|
|
|
9
9
|
* Called when modal should close (escape, backdrop, close button)
|
|
10
10
|
*/
|
|
11
11
|
onClose: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Called when the modal's open state actually changes.
|
|
14
|
+
* Fires after the dialog opens or closes, enabling agents
|
|
15
|
+
* to observe state transitions (e.g. form ready, dialog dismissed).
|
|
16
|
+
*/
|
|
17
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
12
18
|
/**
|
|
13
19
|
* Modal title (required for accessibility)
|
|
14
20
|
*/
|
|
@@ -2,13 +2,17 @@ import React from 'react';
|
|
|
2
2
|
import './Progress.css';
|
|
3
3
|
export interface ProgressProps {
|
|
4
4
|
/**
|
|
5
|
-
* Progress value from 0 to
|
|
5
|
+
* Progress value from 0 to max
|
|
6
6
|
*/
|
|
7
|
-
value
|
|
7
|
+
value?: number;
|
|
8
8
|
/**
|
|
9
9
|
* Maximum value (default 100)
|
|
10
10
|
*/
|
|
11
11
|
max?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Whether progress amount is unknown
|
|
14
|
+
*/
|
|
15
|
+
indeterminate?: boolean;
|
|
12
16
|
/**
|
|
13
17
|
* Visual variant
|
|
14
18
|
*/
|
|
@@ -17,10 +21,31 @@ export interface ProgressProps {
|
|
|
17
21
|
* Size of the progress bar
|
|
18
22
|
*/
|
|
19
23
|
size?: 'small' | 'medium' | 'large';
|
|
24
|
+
/**
|
|
25
|
+
* Track display style
|
|
26
|
+
*/
|
|
27
|
+
trackStyle?: 'block' | 'bordered' | 'gradient';
|
|
28
|
+
/**
|
|
29
|
+
* Number of character cells for the bar width (default 20)
|
|
30
|
+
*/
|
|
31
|
+
blocks?: number;
|
|
20
32
|
/**
|
|
21
33
|
* Show percentage label
|
|
22
34
|
*/
|
|
23
35
|
showLabel?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Enable phosphor glow on filled blocks
|
|
38
|
+
*/
|
|
39
|
+
glow?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Human-readable value text for screen readers
|
|
42
|
+
*/
|
|
43
|
+
valueText?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Fill available container width instead of sizing by block count.
|
|
46
|
+
* The label stays adjacent to the bar.
|
|
47
|
+
*/
|
|
48
|
+
fullWidth?: boolean;
|
|
24
49
|
/**
|
|
25
50
|
* Additional CSS class name
|
|
26
51
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import './RetroEffects.css';
|
|
3
|
+
export type PowerState = 'on' | 'powering-on' | 'powering-off' | 'off';
|
|
3
4
|
export interface RetroEffectsProps {
|
|
4
5
|
/**
|
|
5
6
|
* Enable scanline overlay effect
|
|
@@ -30,6 +31,18 @@ export interface RetroEffectsProps {
|
|
|
30
31
|
* Additional CSS class name
|
|
31
32
|
*/
|
|
32
33
|
className?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Callback when power state changes (includes animation states)
|
|
36
|
+
*/
|
|
37
|
+
onPowerStateChange?: (state: PowerState) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Callback when power-on animation completes
|
|
40
|
+
*/
|
|
41
|
+
onPowerOn?: () => void;
|
|
42
|
+
/**
|
|
43
|
+
* Callback when power-off animation completes
|
|
44
|
+
*/
|
|
45
|
+
onPowerOff?: () => void;
|
|
33
46
|
}
|
|
34
47
|
/**
|
|
35
48
|
* CRT Monitor Effects component for authentic DOS terminal aesthetics
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { RetroEffects } from './RetroEffects';
|
|
2
|
-
export type { RetroEffectsProps } from './RetroEffects';
|
|
2
|
+
export type { RetroEffectsProps, PowerState } from './RetroEffects';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { RetroEffects } from './components';
|
|
2
|
-
export type { RetroEffectsProps } from './components';
|
|
2
|
+
export type { RetroEffectsProps, PowerState } from './components';
|
|
@@ -36,9 +36,11 @@ export interface TabsProps {
|
|
|
36
36
|
*/
|
|
37
37
|
defaultActiveTab?: string;
|
|
38
38
|
/**
|
|
39
|
-
* Callback when tab changes
|
|
39
|
+
* Callback when active tab changes.
|
|
40
|
+
* Receives the new tab ID and the previous tab ID,
|
|
41
|
+
* enabling agents to observe navigation transitions.
|
|
40
42
|
*/
|
|
41
|
-
onTabChange?: (tabId: string) => void;
|
|
43
|
+
onTabChange?: (tabId: string, previousTabId: string) => void;
|
|
42
44
|
/**
|
|
43
45
|
* Optional CSS class name
|
|
44
46
|
*/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ProjectId = 'eidotter' | 'spacewar' | 'rizomorf' | 'pomodoke-calendar' | 'keepcoin' | 'steuerdash' | 'sella' | 'lifelines' | 'betamorf';
|
|
2
|
+
export interface ProjectInfo {
|
|
3
|
+
displayName: string;
|
|
4
|
+
url?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const projects: Record<ProjectId, ProjectInfo>;
|
|
7
|
+
export interface ComponentMeta {
|
|
8
|
+
origin: ProjectId;
|
|
9
|
+
consumers: ProjectId[];
|
|
10
|
+
since?: string;
|
|
11
|
+
originNote?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const componentRegistry: Record<string, ComponentMeta>;
|
|
14
|
+
export declare function getComponentMeta(name: string): ComponentMeta | undefined;
|
|
15
|
+
export declare function getComponentsByOrigin(projectId: ProjectId): string[];
|
|
16
|
+
export declare function getComponentsByConsumer(projectId: ProjectId): string[];
|
package/dist/eidotter.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.alert{width:100%;position:relative;overflow:hidden;text-align:left;font-size:16px;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);border:none}.alert--info{background-color:var(--color-semantic-alert-info);color:var(--color-cga-amber)}.alert--success{background-color:var(--color-semantic-alert-success);color:var(--color-cga-bright-green)}.alert--warning{background-color:var(--color-semantic-alert-warning);color:var(--color-cga-amber)}.alert--error{background-color:var(--color-semantic-alert-error);color:var(--color-cga-bright-red)}.alert--large{max-width:1020px;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:var(--spacing-4);box-sizing:border-box;gap:var(--spacing-1)}.alert--small{max-width:350px;min-height:40px;overflow:hidden;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;padding:0 var(--spacing-2);box-sizing:border-box;gap:var(--spacing-2)}.alert__header{align-self:stretch;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;width:100%}.alert__icon{display:flex;align-items:center;justify-content:center;align-self:flex-start;width:24px;height:24px;flex-shrink:0;margin-top:2px}.alert--small .alert__icon{width:20px;height:20px}.alert--small .alert__icon svg{width:20px!important;height:20px!important}.alert__title{flex:1;position:relative;line-height:140%}.alert__close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;background:none;border:none;padding:0;cursor:pointer;color:inherit}.alert__close svg{width:20px!important;height:20px!important}.alert--small .alert__content{display:none}.alert__content{align-self:stretch;display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;padding:0 0 0 32px;font-size:14px}.alert__message{flex:1;position:relative;line-height:140%;color:var(--color-cga-amber-dim)}.alert__link{background:none;border:none;padding:0;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;text-decoration:none}@media(prefers-contrast:high){.alert{border:2px solid currentColor}.alert__title{font-weight:700}.alert__close:focus-visible{outline:3px solid currentColor;outline-offset:2px}.alert__link{text-decoration:underline;font-weight:700}}.icon{display:inline-block;vertical-align:middle;fill:currentColor;color:var(--color-system-foreground)}.icon--l{width:56px;height:56px}.icon--s{width:24px;height:24px}.icon[role=button]{cursor:pointer}.icon[role=button]:hover{color:var(--color-system-link-hover)}@media(prefers-contrast:high){.icon[role=button]:focus-visible{outline:3px solid currentColor;outline-offset:2px}}.section{width:100%;border:1px solid var(--color-semantic-border-default);background-color:var(--color-semantic-background-primary);color:var(--color-semantic-text-primary);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.section__header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:none;border:none;color:inherit;font-family:inherit;cursor:pointer;text-align:left}.section__title{flex:1;font-size:16px;line-height:24px}.section__icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:8px;color:inherit}.section__content{padding:16px;border-top:1px solid var(--color-semantic-border-default);font-size:14px;line-height:20px;color:var(--color-semantic-text-secondary)}.section--hover .section__header,.section__header:hover{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary)}.section--active .section__header,.section__header:active{background-color:var(--color-semantic-background-secondary);color:var(--color-cga-amber);text-shadow:0 0 8px var(--color-cga-amber-glow)}.section--expanded{border-color:var(--color-semantic-text-secondary)}.section--expanded .section__header{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary)}.section__header:focus{outline:none;box-shadow:0 0 0 2px var(--color-semantic-border-focus)}.section__icon{transition:transform .2s ease-in-out}.section--expanded .section__icon{transform:rotate(180deg)}@media(prefers-contrast:high){.section{border-width:3px}.section__title{font-weight:700}.section__content{border-top-width:2px}.section__header:focus{box-shadow:0 0 0 3px var(--color-semantic-border-focus)}}@media(prefers-reduced-motion:reduce){.section__icon{transition:none}}.accordion-fill{width:100%;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:var(--spacing-2);text-align:left;font-size:var(--typography-font-size-base);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);color:var(--color-semantic-text-secondary)}.accordion-fill>.section{margin-bottom:4px}.accordion-fill>.section:last-child{margin-bottom:0}@media(prefers-contrast:high){.accordion-fill{font-weight:600}}.button{display:inline-flex;align-items:center;justify-content:center;position:relative;border:none;outline:none;cursor:pointer;text-decoration:none;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-weight:var(--typography-font-weight-regular);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:all .1s ease;box-sizing:border-box;border:2px solid;background-clip:padding-box}.button--primary{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary);border-color:var(--color-semantic-border-default)}.button--primary:hover:not(:disabled){background-color:var(--color-semantic-border-focus);border-color:var(--color-semantic-text-secondary);box-shadow:var(--shadow-glow-sm)}.button--primary:active:not(:disabled){background-color:var(--color-semantic-background-accent);border-color:var(--color-semantic-text-disabled)}.button--secondary{background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);border-color:var(--color-semantic-border-default)}.button--secondary:hover:not(:disabled){background-color:var(--color-semantic-text-primary);color:var(--color-semantic-background-primary);border-color:var(--color-semantic-text-secondary);box-shadow:var(--shadow-glow-sm)}.button--secondary:active:not(:disabled){background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);border-color:var(--color-semantic-text-disabled)}.button--ghost{background-color:transparent;color:var(--color-semantic-text-primary);border-color:var(--color-semantic-border-default)}.button--ghost:hover:not(:disabled){background-color:var(--color-semantic-text-primary);color:var(--color-semantic-background-primary);border-color:var(--color-semantic-text-secondary);box-shadow:var(--shadow-glow-sm)}.button--ghost:active:not(:disabled){background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary)}.button--link{background-color:transparent;color:var(--color-semantic-text-accent);border-color:transparent;text-decoration:underline}.button--link:hover:not(:disabled){color:var(--color-cga-amber-bright);background-color:transparent;border-color:transparent}.button--link:active:not(:disabled){color:var(--color-semantic-text-disabled)}.button--small{font-size:12px;padding:4px 8px;min-height:24px;gap:4px}.button--medium{font-size:14px;padding:8px 16px;min-height:32px;gap:6px}.button--large{font-size:16px;padding:12px 20px;min-height:40px;gap:8px}.button--disabled,.button:disabled{cursor:not-allowed;opacity:.6;background-color:var(--color-semantic-background-secondary)!important;color:var(--color-semantic-text-disabled)!important;border-color:var(--color-semantic-text-disabled)!important}.button--loading{cursor:wait}.button--full-width{width:100%;justify-content:center}.button__loading-indicator{animation:blink 1s infinite;margin-right:4px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.button__content{display:inline-flex;align-items:center;justify-content:center}.button__content--loading{opacity:.7}.button:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}@media(prefers-contrast:high){.button{border-width:3px}}@media(prefers-reduced-motion:reduce){.button{transition:none}.button__loading-indicator{animation:none}}.card{background-color:var(--color-semantic-background-primary);border:var(--border-width-medium) solid var(--color-semantic-border-default);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);color:var(--color-semantic-text-primary)}.card--default{border-color:var(--color-semantic-border-default)}.card--elevated{border-color:var(--color-semantic-text-secondary);box-shadow:4px 4px 0 0 var(--color-semantic-text-disabled)}.card--glow{border-color:var(--color-cga-amber);box-shadow:var(--shadow-glow-md)}.card--bordered{border-color:var(--color-semantic-text-accent);border-width:var(--border-width-medium)}.card__header{padding:var(--spacing-2) var(--spacing-3);border-bottom:var(--border-width-thin) solid var(--color-semantic-text-disabled);background-color:var(--color-cga-amber-dim)}.card__title{color:var(--color-semantic-text-secondary);font-size:var(--typography-font-size-base);font-weight:var(--typography-font-weight-bold);text-transform:uppercase}.card__body{padding:var(--spacing-3)}.card__footer{padding:var(--spacing-2) var(--spacing-3);border-top:var(--border-width-thin) solid var(--color-semantic-text-disabled);background-color:var(--color-semantic-background-secondary)}.card:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}@media(prefers-contrast:high){.card{border-width:3px}.card__header{border-bottom-width:2px}.card__footer{border-top-width:2px}.card:focus-visible{outline-width:3px}}@media(prefers-reduced-motion:reduce){.card{transition:none}}.checkbox{display:inline-flex;align-items:center;gap:var(--spacing-2);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-size:var(--typography-font-size-base);color:var(--color-semantic-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox--disabled{cursor:not-allowed;opacity:.6}.checkbox__input{position:absolute;opacity:0;width:0;height:0}.checkbox__box{display:inline-block;white-space:nowrap;text-align:center;color:var(--color-semantic-text-primary)}.checkbox__box:before{content:"[ ]"}.checkbox__input:checked+.checkbox__box:before{content:"[X]";color:var(--color-semantic-text-accent)}.checkbox__input:focus-visible+.checkbox__box{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.checkbox:hover:not(.checkbox--disabled) .checkbox__box{color:var(--color-semantic-text-secondary)}.checkbox:hover:not(.checkbox--disabled) .checkbox__input:checked+.checkbox__box:before{color:var(--color-semantic-text-secondary)}.checkbox--disabled .checkbox__box{color:var(--color-semantic-text-disabled)}.checkbox--disabled .checkbox__input:checked+.checkbox__box:before{color:var(--color-semantic-text-disabled)}.checkbox__label{color:inherit}@media(prefers-contrast:high){.checkbox__box{font-weight:700}.checkbox__input:focus-visible+.checkbox__box{outline-width:3px}.checkbox__label{font-weight:600}}@media(prefers-reduced-motion:reduce){.checkbox{transition:none}}.command-prompt{display:flex;align-items:center;font-family:var(--typography-font-family-primary);font-size:var(--typography-font-size-base);background:var(--color-semantic-background-primary);color:var(--color-semantic-text-accent);padding:var(--spacing-2);cursor:text}.command-prompt__prompt{color:var(--color-semantic-text-primary);margin-right:var(--spacing-2);white-space:nowrap;-webkit-user-select:none;user-select:none}.command-prompt__input{flex:1;background:transparent;border:none;color:var(--color-semantic-text-primary);font-family:inherit;font-size:inherit;outline:none;padding:0;margin:0;min-width:0}.command-prompt__input::placeholder{color:var(--color-semantic-text-disabled)}.command-prompt__cursor{color:var(--color-semantic-text-primary);animation:blink 1s step-end infinite;-webkit-user-select:none;user-select:none}.command-prompt--disabled{opacity:.5;cursor:not-allowed}.command-prompt--disabled .command-prompt__cursor{animation:none}.command-prompt__input:focus+.command-prompt__cursor{display:none}@media(prefers-contrast:high){.command-prompt{border:3px solid var(--color-semantic-border-default)}.command-prompt__prompt{font-weight:700}.command-prompt__input:focus{outline:3px solid var(--color-semantic-border-focus);outline-offset:2px}}@media(prefers-reduced-motion:reduce){.command-prompt__cursor{animation:none}}.progress{display:inline-flex;align-items:center;gap:var(--spacing-2);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.progress--small{font-size:var(--typography-font-size-xs)}.progress--medium{font-size:var(--typography-font-size-base)}.progress--large{font-size:var(--typography-font-size-lg)}.progress__bar{display:inline-block;letter-spacing:0;line-height:1}.progress__fill{color:var(--color-semantic-text-primary)}.progress--success .progress__fill{color:var(--color-semantic-status-success)}.progress--warning .progress__fill{color:var(--color-semantic-status-warning)}.progress--error .progress__fill{color:var(--color-semantic-status-error)}.progress__empty{color:var(--color-semantic-text-disabled)}.progress__label{color:var(--color-semantic-text-primary);min-width:4ch;text-align:right}@media(prefers-contrast:high){.progress__fill,.progress__label{font-weight:700}}@media(prefers-reduced-motion:reduce){.progress{transition:none}}.input{background:var(--color-semantic-background-primary);color:var(--color-semantic-text-primary);border:var(--border-width-medium) solid var(--color-semantic-border-default);font-family:var(--typography-font-family-primary);font-size:var(--typography-font-size-base);padding:var(--spacing-2);outline:none;width:100%;box-sizing:border-box}.input::placeholder{color:var(--color-semantic-text-disabled)}.input:focus{border-color:var(--color-semantic-border-focus);box-shadow:var(--shadow-glow-sm)}.input--error{border-color:var(--color-semantic-status-error)}.input--error:focus{border-color:var(--color-semantic-status-error)}.input--disabled,.input:disabled{opacity:.5;cursor:not-allowed;background:var(--color-semantic-background-primary)}@media(prefers-contrast:high){.input{border-width:3px}.input:focus{outline:3px solid var(--color-semantic-border-focus);outline-offset:2px}}:root{--terminal-bg: var(--color-semantic-background-primary);--terminal-border: var(--color-semantic-text-disabled);--terminal-border-active: var(--color-semantic-text-secondary);--terminal-title-bg: var(--color-semantic-background-secondary);--terminal-title-text: var(--color-semantic-text-secondary);--terminal-title-bg-inactive: var(--color-semantic-background-secondary);--terminal-title-text-inactive: var(--color-semantic-text-primary);--terminal-text: var(--color-semantic-text-primary);--terminal-control-bg: var(--color-semantic-text-primary);--terminal-control-symbol: var(--color-semantic-background-primary)}.terminal{background-color:var(--terminal-bg);border:2px solid var(--terminal-border);color:var(--terminal-text);font-family:Perfect DOS VGA,monospace;display:flex;flex-direction:column;box-shadow:5px 5px 0 var(--effects-drop-shadow);min-width:320px;min-height:200px}.terminal:focus,.terminal--active{border-color:var(--terminal-border-active);outline:none}.terminal--active .terminal__title-bar{background-color:var(--color-semantic-background-accent)}.terminal--inactive{border-color:var(--terminal-border)}.terminal--inactive .terminal__title-bar{background-color:var(--terminal-title-bg-inactive);color:var(--terminal-title-text-inactive)}.terminal--small{width:480px;height:320px}.terminal--medium{width:640px;height:480px}.terminal--large{width:800px;height:600px}.terminal--maximized{width:100vw;height:100vh;position:fixed;top:0;left:0;border:none;box-shadow:none;z-index:1000}.terminal__title-bar{background-color:var(--terminal-title-bg);color:var(--terminal-title-text);padding:2px 4px;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none;cursor:default;height:24px}.terminal__title{display:flex;align-items:center;gap:4px}.terminal__controls{display:flex}.terminal__control{background-color:var(--terminal-control-bg);border:1px solid var(--terminal-control-symbol);width:20px;height:20px;margin-left:2px;cursor:default;display:flex;align-items:center;justify-content:center;color:var(--terminal-control-symbol)}.terminal__control:active{filter:invert(1)}.terminal__content{flex-grow:1;padding:8px;overflow-y:auto}.terminal__default-content{display:flex;flex-direction:column}.terminal__prompt{display:flex}.terminal__path{margin-right:4px}.terminal__cursor{background-color:var(--terminal-text);width:8px;height:16px;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.terminal__resize-handle{position:absolute;bottom:0;right:0;width:16px;height:16px;cursor:nwse-resize}.terminal--minimized{display:none}.terminal__taskbar-item{display:inline-flex;align-items:center;background-color:var(--terminal-control-bg);border:1px solid var(--color-semantic-background-primary);padding:2px 8px;cursor:default;-webkit-user-select:none;user-select:none}.terminal__taskbar-title{margin-left:4px;color:var(--color-semantic-background-primary)}@media(prefers-contrast:high){.terminal{border-width:3px}.terminal__title{font-weight:700}.terminal__control{border-width:2px}.terminal:focus{outline:3px solid var(--color-semantic-border-focus);outline-offset:2px}}@media(prefers-reduced-motion:reduce){.terminal__cursor{animation:none}}.tabs{display:inline-flex;align-items:center;gap:0;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);box-sizing:border-box}.tabs__tab{position:relative;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;font-family:inherit;font-weight:var(--typography-font-weight-regular);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;transition:all .15s ease;color:var(--color-semantic-text-primary);opacity:.7}.tabs__tab:hover:not(:disabled){opacity:1}.tabs__tab--active{opacity:1}.tabs__tab--disabled{cursor:not-allowed;opacity:.3}.tabs--underline{gap:4px}.tabs--underline .tabs__tab{padding:8px 16px;border-bottom:2px solid transparent}.tabs--underline .tabs__tab--active{border-bottom-color:var(--color-semantic-text-accent);color:var(--color-semantic-text-accent)}.tabs--underline .tabs__tab:hover:not(:disabled):not(.tabs__tab--active){border-bottom-color:var(--color-semantic-border-default)}.tabs--pills{gap:4px;padding:4px;background-color:var(--color-semantic-background-secondary);border:1px solid var(--color-semantic-border-default);border-radius:2px}.tabs--pills .tabs__tab{padding:6px 12px;border-radius:2px}.tabs--pills .tabs__tab--active{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary)}.tabs--pills .tabs__tab:hover:not(:disabled):not(.tabs__tab--active){background-color:var(--color-semantic-background-primary)}.tabs--small .tabs__tab{font-size:10px;padding:4px 8px}.tabs--small.tabs--underline .tabs__tab{padding:4px 10px}.tabs--medium .tabs__tab{font-size:12px}.tabs--large .tabs__tab{font-size:14px;padding:10px 20px}.tabs--large.tabs--underline .tabs__tab{padding:10px 20px}.tabs--large.tabs--pills .tabs__tab{padding:8px 16px}.tabs__tab:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}@media(prefers-contrast:high){.tabs--underline .tabs__tab{border-bottom-width:3px}.tabs--pills{border-width:2px}}@media(prefers-reduced-motion:reduce){.tabs__tab{transition:none}}.badge{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-weight:var(--typography-font-weight-regular);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:2px;text-transform:uppercase;letter-spacing:.05em;box-sizing:border-box}.badge--small{font-size:10px;padding:2px 6px;min-height:18px;gap:4px}.badge--medium{font-size:12px;padding:4px 8px;min-height:22px;gap:6px}.badge--default{background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);border:1px solid var(--color-semantic-border-default)}.badge--success{background-color:transparent;color:var(--color-cga-bright-green);border:1px solid var(--color-cga-bright-green)}.badge--warning{background-color:transparent;color:var(--color-cga-yellow);border:1px solid var(--color-cga-yellow)}.badge--error{background-color:transparent;color:var(--color-cga-bright-red);border:1px solid var(--color-cga-bright-red)}.badge--info{background-color:transparent;color:var(--color-cga-bright-cyan);border:1px solid var(--color-cga-bright-cyan)}.badge--accent{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary);border:1px solid var(--color-semantic-border-default)}.badge__dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.badge--default .badge__dot{background-color:var(--color-semantic-text-primary)}.badge--success .badge__dot{background-color:var(--color-cga-bright-green)}.badge--warning .badge__dot{background-color:var(--color-cga-yellow)}.badge--error .badge__dot{background-color:var(--color-cga-bright-red)}.badge--info .badge__dot{background-color:var(--color-cga-bright-cyan)}.badge--accent .badge__dot{background-color:var(--color-semantic-text-secondary)}.badge__content{display:inline-flex;align-items:center;transform:translateY(1px)}@media(prefers-contrast:high){.badge{border-width:2px}}@media(prefers-reduced-motion:reduce){.badge{transition:none}}.switch{display:inline-flex;align-items:center;justify-content:flex-start;padding:0;border:none;background:transparent;cursor:pointer;outline:none;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.switch__track{position:relative;display:inline-flex;align-items:center;width:40px;height:20px;background-color:var(--color-semantic-background-secondary);border:2px solid var(--color-semantic-border-default);border-radius:2px;transition:all .15s ease}.switch__thumb{position:absolute;left:2px;width:12px;height:12px;background-color:var(--color-semantic-text-primary);border-radius:1px;transition:transform .15s ease,background-color .15s ease}.switch--checked .switch__track{background-color:var(--color-semantic-background-accent);border-color:var(--color-semantic-border-focus)}.switch--checked .switch__thumb{transform:translate(20px);background-color:var(--color-semantic-text-secondary)}.switch:hover:not(.switch--disabled) .switch__track{border-color:var(--color-semantic-border-hover)}.switch:hover:not(.switch--disabled):not(.switch--checked) .switch__thumb{background-color:var(--color-semantic-text-accent)}.switch:focus-visible .switch__track{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.switch--disabled{cursor:not-allowed;opacity:.5}.switch--disabled .switch__track{background-color:var(--color-semantic-background-secondary);border-color:var(--color-semantic-border-disabled)}.switch--disabled .switch__thumb{background-color:var(--color-semantic-text-disabled)}@media(prefers-contrast:high){.switch__track{border-width:3px}}@media(prefers-reduced-motion:reduce){.switch__track,.switch__thumb{transition:none}}.breadcrumb{font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-size:var(--typography-font-size-xs);text-transform:uppercase;letter-spacing:.35em}.breadcrumb__list{display:flex;flex-wrap:wrap;align-items:center;gap:8px;list-style:none;margin:0;padding:0}.breadcrumb__item{display:flex;align-items:center;gap:8px}.breadcrumb__link{display:inline-flex;align-items:center;gap:4px;color:var(--color-semantic-text-disabled);text-decoration:none;transition:color .15s ease}.breadcrumb__link:hover{color:var(--color-semantic-text-primary)}.breadcrumb__link:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.breadcrumb__back-arrow{font-size:1em;line-height:1}.breadcrumb__separator{color:var(--color-semantic-text-disabled);opacity:.6;-webkit-user-select:none;user-select:none}.breadcrumb__current{color:var(--color-semantic-text-primary)}@media(min-width:768px){.breadcrumb{font-size:var(--typography-font-size-sm)}}@media(prefers-contrast:high){.breadcrumb__link:focus-visible{outline-width:3px}}@media(prefers-reduced-motion:reduce){.breadcrumb__link{transition:none}}.retro-effects{--retro-intensity: 1;pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999}.retro-effects__scanlines{position:absolute;top:0;right:0;bottom:0;left:0;opacity:calc(.6 * var(--retro-intensity));mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,var(--effects-scanline-light) 0px,var(--effects-scanline-dark) 1px,transparent 2px,transparent 4px);animation:retro-scanline 9s linear infinite}.retro-effects__glow{position:absolute;top:0;right:0;bottom:0;left:0;opacity:var(--retro-intensity);box-shadow:inset 0 0 200px var(--effects-vignette-glow);background:radial-gradient(ellipse 120% 100% at center,transparent 0%,transparent 50%,var(--effects-vignette-edge) 80%,var(--effects-vignette-corner) 100%)}.retro-effects__flicker{position:absolute;top:0;right:0;bottom:0;left:0;opacity:calc(.04 * var(--retro-intensity));background-color:var(--effects-screen-tint);animation:retro-flicker .5s steps(4) infinite}.retro-effects__bloom{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:calc(.5 * var(--retro-intensity));box-shadow:inset 0 0 40px var(--effects-phosphor-glow),inset 0 0 80px #ffb0000d;background:radial-gradient(ellipse at center,rgba(255,176,0,.03) 0%,transparent 60%)}@keyframes retro-scanline{0%{transform:translateY(0)}to{transform:translateY(12px)}}@keyframes retro-flicker{0%{opacity:calc(.02 * var(--retro-intensity))}50%{opacity:calc(.06 * var(--retro-intensity))}to{opacity:calc(.02 * var(--retro-intensity))}}@keyframes retro-power-off{0%{transform:scaleY(1) scaleX(1);opacity:1}50%{transform:scaleY(.005) scaleX(1);opacity:1}to{transform:scaleY(0) scaleX(0);opacity:0}}@keyframes retro-power-on{0%{transform:scaleY(0) scaleX(0);opacity:1}50%{transform:scaleY(.02) scaleX(1);opacity:1}to{transform:scaleY(1) scaleX(1);opacity:1}}.retro-effects--powering-off{animation:retro-power-off var(--duration-power-off, .4s) ease-in forwards;transform-origin:center center}.retro-effects--powering-on{animation:retro-power-on var(--duration-power-on, .6s) ease-out forwards;transform-origin:center center}.retro-effects--off{transform:scaleY(0) scaleX(0);opacity:0;pointer-events:none}@media(prefers-reduced-motion:reduce){.retro-effects__scanlines{animation:none}.retro-effects__flicker{animation:none;opacity:calc(.03 * var(--retro-intensity))}.retro-effects--powering-off{animation:none;transition:opacity .2s ease-out;opacity:0}.retro-effects--powering-on{animation:none;transition:opacity .3s ease-in;opacity:1}}@media(prefers-contrast:high){.retro-effects{display:none}}.timeline-node{display:inline-flex;align-items:center;gap:var(--spacing-2);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.timeline-node__marker{display:block;background:var(--color-cga-amber-dim);border:2px solid var(--color-cga-amber-dim);transition:all .15s ease;flex-shrink:0}.timeline-node--small .timeline-node__marker{width:8px;height:8px}.timeline-node--medium .timeline-node__marker{width:12px;height:12px}.timeline-node--large .timeline-node__marker{width:16px;height:16px}.timeline-node--circle .timeline-node__marker{border-radius:50%}.timeline-node--square .timeline-node__marker{border-radius:2px}.timeline-node--diamond .timeline-node__marker{transform:rotate(45deg)}.timeline-node--diamond.timeline-node--small .timeline-node__marker{width:7px;height:7px}.timeline-node--diamond.timeline-node--medium .timeline-node__marker{width:10px;height:10px}.timeline-node--diamond.timeline-node--large .timeline-node__marker{width:14px;height:14px}.timeline-node--default .timeline-node__marker{background:var(--color-cga-amber-dim);border-color:var(--color-cga-amber-dim)}.timeline-node--primary .timeline-node__marker{background:var(--color-cga-amber);border-color:var(--color-cga-amber)}.timeline-node--secondary .timeline-node__marker{background:var(--color-semantic-text-primary);border-color:var(--color-semantic-text-primary)}.timeline-node--accent .timeline-node__marker{background:var(--color-semantic-text-accent);border-color:var(--color-semantic-text-accent)}.timeline-node--interactive{cursor:pointer}.timeline-node--interactive:hover .timeline-node__marker{background:var(--color-cga-amber);border-color:var(--color-cga-amber);box-shadow:var(--shadow-glow-sm)}.timeline-node--active .timeline-node__marker{background:var(--color-cga-amber-bright);border-color:var(--color-cga-amber-bright);box-shadow:var(--shadow-glow-sm)}.timeline-node--active.timeline-node--interactive:hover .timeline-node__marker{box-shadow:var(--shadow-glow-md)}.timeline-node--interactive:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.timeline-node__label{color:var(--color-cga-amber);font-size:var(--typography-font-size-xs);white-space:nowrap}.timeline-node--small .timeline-node__label{font-size:10px}.timeline-node--large .timeline-node__label{font-size:var(--typography-font-size-sm)}.timeline-node--label-left,.timeline-node--label-right{flex-direction:row}.timeline-node--label-top,.timeline-node--label-bottom{flex-direction:column}.timeline-node__label--left,.timeline-node__label--top{order:-1}@media(prefers-reduced-motion:reduce){.timeline-node__marker{transition:none}}@media(prefers-contrast:high){.timeline-node__marker{border-width:3px}.timeline-node--interactive:focus-visible{outline-width:3px}}.modal{padding:0;border:none;background:transparent;max-width:100vw;max-height:100vh}.modal::backdrop{background-color:var(--effects-overlay)}.modal__container{background-color:var(--color-semantic-background-primary);border:2px solid var(--color-cga-yellow);box-shadow:var(--shadow-drop);width:480px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);display:flex;flex-direction:column;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4);border-bottom:1px solid var(--color-cga-dark-gray)}.modal__title{margin:0;font-size:16px;font-weight:400;color:var(--color-cga-yellow);line-height:1.4}.modal__close{display:flex;align-items:center;justify-content:center;background:none;border:none;padding:4px;cursor:pointer;color:var(--color-cga-light-gray)}.modal__close:hover{color:var(--color-cga-yellow)}.modal__close:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.modal__body{padding:var(--spacing-4);color:var(--color-cga-light-gray);font-size:14px;line-height:1.5;overflow-y:auto;flex:1}.modal__footer{display:flex;gap:var(--spacing-2);justify-content:flex-end;padding:var(--spacing-4);border-top:1px solid var(--color-cga-dark-gray)}.modal[open]{animation:modal-open .15s ease-out}.modal[open]::backdrop{animation:backdrop-open .15s ease-out}@keyframes modal-open{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes backdrop-open{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.modal[open],.modal[open]::backdrop{animation:none}}@media(prefers-contrast:high){.modal__container{border-width:3px}}.stat{display:flex;flex-direction:column;gap:4px;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);box-sizing:border-box}.stat--small{gap:2px}.stat--small .stat__label{font-size:10px}.stat--small .stat__value{font-size:18px}.stat--small .stat__trend{font-size:10px}.stat--medium{gap:4px}.stat--medium .stat__label{font-size:11px}.stat--medium .stat__value{font-size:24px}.stat--medium .stat__trend{font-size:11px}.stat--large{gap:6px}.stat--large .stat__label{font-size:12px}.stat--large .stat__value{font-size:32px}.stat--large .stat__trend{font-size:12px}.stat__label{color:var(--color-semantic-text-primary);text-transform:uppercase;letter-spacing:.05em;line-height:1.2}.stat__value{color:var(--color-semantic-text-accent);font-weight:var(--typography-font-weight-bold);line-height:1;font-variant-numeric:tabular-nums}.stat__trend{display:inline-flex;align-items:center;gap:4px;line-height:1}.stat__trend--up{color:var(--color-cga-bright-green)}.stat__trend--down{color:var(--color-cga-bright-red)}.stat__trend--neutral{color:var(--color-semantic-text-primary)}.stat__trend-icon{font-size:.8em}.stat__trend-value{font-variant-numeric:tabular-nums}@media(prefers-contrast:high){.stat__value,.stat__trend{font-weight:700}.stat__trend-icon{font-size:1em}}@media(prefers-reduced-motion:reduce){.stat{transition:none}}
|
|
1
|
+
.alert{width:100%;position:relative;overflow:hidden;text-align:left;font-size:16px;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);border:none;animation:alert-enter var(--duration-slow, .4s) ease-out}@keyframes alert-enter{0%{opacity:0;filter:blur(4px) brightness(.3)}to{opacity:1;filter:blur(0) brightness(1)}}.alert--info{background-color:var(--color-semantic-alert-info);color:var(--color-cga-amber)}.alert--success{background-color:var(--color-semantic-alert-success);color:var(--color-cga-bright-green)}.alert--warning{background-color:var(--color-semantic-alert-warning);color:var(--color-cga-amber)}.alert--error{background-color:var(--color-semantic-alert-error);color:var(--color-cga-bright-red)}.alert--large{max-width:1020px;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:var(--spacing-4);box-sizing:border-box;gap:var(--spacing-1)}.alert--small{max-width:350px;min-height:40px;overflow:hidden;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;padding:0 var(--spacing-2);box-sizing:border-box;gap:var(--spacing-2)}.alert__header{align-self:stretch;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;width:100%}.alert__icon{display:flex;align-items:center;justify-content:center;align-self:flex-start;width:24px;height:24px;flex-shrink:0;margin-top:2px}.alert--small .alert__icon{width:20px;height:20px}.alert--small .alert__icon svg{width:20px!important;height:20px!important}.alert__title{flex:1;position:relative;line-height:140%}.alert__close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;background:none;border:none;padding:0;cursor:pointer;color:inherit;transition:opacity var(--duration-fast, .1s) ease-out;opacity:.7}.alert__close:hover{opacity:1}.alert__close svg{width:20px!important;height:20px!important}.alert--small .alert__content{display:none}.alert__content{align-self:stretch;display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;padding:0 0 0 32px;font-size:14px}.alert__message{flex:1;position:relative;line-height:140%;color:var(--color-cga-amber-dim)}.alert__link{background:none;border:none;padding:0;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;text-decoration:none;transition:text-shadow var(--duration-fast, .1s) ease-out}.alert__link:hover{text-shadow:0 0 6px currentColor}@media(prefers-reduced-motion:reduce){.alert{animation:none}.alert__close,.alert__link{transition:none}}@media(prefers-contrast:high){.alert{border:2px solid currentColor}.alert__title{font-weight:700}.alert__close:focus-visible{outline:3px solid currentColor;outline-offset:2px}.alert__link{text-decoration:underline;font-weight:700}}.icon{display:inline-block;vertical-align:middle;fill:currentColor;color:var(--color-semantic-text-primary)}.icon--l{width:56px;height:56px}.icon--s{width:24px;height:24px}.icon[role=button]{cursor:pointer}.icon[role=button]:hover{color:var(--color-semantic-link-hover)}@media(prefers-contrast:high){.icon[role=button]:focus-visible{outline:3px solid currentColor;outline-offset:2px}}.section{width:100%;border:1px solid var(--color-semantic-border-default);background-color:var(--color-semantic-background-primary);color:var(--color-semantic-text-primary);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.section__header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:none;border:none;color:inherit;font-family:inherit;cursor:pointer;text-align:left}.section__title{flex:1;font-size:16px;line-height:24px}.section__icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:8px;color:inherit}.section__content{padding:16px;border-top:1px solid var(--color-semantic-border-default);font-size:14px;line-height:20px;color:var(--color-semantic-text-secondary);overflow:hidden;animation:section-expand var(--duration-normal, .2s) ease-in-out}@keyframes section-expand{0%{max-height:0;opacity:0;padding-top:0;padding-bottom:0}to{max-height:500px;opacity:1}}.section--hover .section__header,.section__header:hover{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary)}.section--active .section__header,.section__header:active{background-color:var(--color-semantic-background-secondary);color:var(--color-cga-amber);text-shadow:0 0 8px var(--color-cga-amber-glow)}.section--expanded{border-color:var(--color-semantic-text-secondary)}.section--expanded .section__header{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary)}.section__header:focus{outline:none;box-shadow:0 0 0 2px var(--color-semantic-border-focus)}.section__icon{transition:transform var(--duration-normal, .2s) ease-in-out}.section--expanded .section__icon{transform:rotate(180deg)}@media(prefers-contrast:high){.section{border-width:3px}.section__title{font-weight:700}.section__content{border-top-width:2px}.section__header:focus{box-shadow:0 0 0 3px var(--color-semantic-border-focus)}}@media(prefers-reduced-motion:reduce){.section__icon{transition:none}.section__content{animation:none}}.accordion-fill{width:100%;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:var(--spacing-2);text-align:left;font-size:var(--typography-font-size-base);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);color:var(--color-semantic-text-secondary)}.accordion-fill>.section{margin-bottom:4px}.accordion-fill>.section:last-child{margin-bottom:0}@media(prefers-contrast:high){.accordion-fill{font-weight:600}}.button{display:inline-flex;align-items:center;justify-content:center;position:relative;border:none;outline:none;cursor:pointer;text-decoration:none;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-weight:var(--typography-font-weight-bold);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:all .1s ease;box-sizing:border-box;border:2px solid;background-clip:padding-box}.button--primary{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary);border-color:var(--color-semantic-border-default);transition:background-color .6s cubic-bezier(.8,-.5,.2,1.4),border-color .6s cubic-bezier(.8,-.5,.2,1.4),box-shadow .6s cubic-bezier(.8,-.5,.2,1.4),filter .6s cubic-bezier(.8,-.5,.2,1.4),text-shadow .6s cubic-bezier(.8,-.5,.2,1.4)}.button--primary:hover:not(:disabled){background-color:var(--color-semantic-background-accent);border-color:var(--color-semantic-border-default);color:var(--color-semantic-text-secondary);box-shadow:0 0 8px 0 var(--color-cga-amber-glow),0 0 20px 2px var(--effects-phosphor-glow),0 0 40px 4px var(--effects-bloom-outer);text-shadow:0 0 4px var(--color-cga-amber-glow);will-change:filter,box-shadow;animation:phosphor-warmup var(--duration-slow, .4s) ease-out;transition:background-color var(--duration-slow, .4s) ease-out,border-color var(--duration-slow, .4s) ease-out,box-shadow var(--duration-slow, .4s) ease-out,text-shadow var(--duration-slow, .4s) ease-out}.button--primary:active:not(:disabled){background-color:var(--color-cga-amber-bright);border-color:var(--color-cga-amber-bright);box-shadow:0 0 12px 2px var(--color-cga-amber-glow),0 0 30px 4px var(--effects-phosphor-glow),0 0 50px 8px var(--effects-bloom-outer);text-shadow:0 0 6px var(--color-cga-amber-glow);animation:phosphor-energize .15s ease-out forwards;transition:background-color var(--duration-fast, .1s) ease-out,border-color var(--duration-fast, .1s) ease-out,box-shadow var(--duration-fast, .1s) ease-out}.button--primary:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;background:repeating-linear-gradient(to bottom,transparent 0px,transparent 3px,rgba(0,0,0,.06) 3px,rgba(0,0,0,.06) 4px);background-size:100% 4px;transition:opacity var(--duration-fast, .1s) ease-out}.button--primary:active:not(:disabled):after{opacity:1;animation:scanline-crawl 4s linear infinite}@keyframes scanline-crawl{0%{background-position:0 0}to{background-position:0 40px}}@keyframes phosphor-warmup{0%{filter:brightness(1)}15%{filter:brightness(1.3)}30%{filter:brightness(.97)}50%{filter:brightness(1.15)}70%{filter:brightness(1.02)}to{filter:brightness(1)}}@keyframes phosphor-energize{0%{filter:brightness(1)}40%{filter:brightness(1.4)}to{filter:brightness(1.08)}}.button--secondary{background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);border-color:var(--color-semantic-border-default);transition:background-color .4s cubic-bezier(.5,-.2,.2,1.2),border-color .4s cubic-bezier(.5,-.2,.2,1.2),box-shadow .4s cubic-bezier(.5,-.2,.2,1.2),filter .4s cubic-bezier(.5,-.2,.2,1.2),text-shadow .4s cubic-bezier(.5,-.2,.2,1.2)}.button--secondary:hover:not(:disabled){background-color:var(--color-semantic-text-primary);color:var(--color-semantic-background-primary);border-color:var(--color-semantic-text-secondary);box-shadow:0 0 8px 0 var(--color-cga-amber-glow),0 0 20px 2px var(--effects-phosphor-glow);text-shadow:0 0 3px var(--color-cga-amber-glow);will-change:filter,box-shadow;animation:phosphor-warmup var(--duration-slow, .4s) ease-out;transition:background-color var(--duration-slow, .4s) ease-out,border-color var(--duration-slow, .4s) ease-out,box-shadow var(--duration-slow, .4s) ease-out,text-shadow var(--duration-slow, .4s) ease-out}.button--secondary:active:not(:disabled){background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);border-color:var(--color-semantic-text-disabled);box-shadow:0 0 10px 2px var(--color-cga-amber-glow),0 0 24px 4px var(--effects-phosphor-glow);text-shadow:0 0 5px var(--color-cga-amber-glow);animation:phosphor-energize .15s ease-out forwards;transition:background-color var(--duration-fast, .1s) ease-out,border-color var(--duration-fast, .1s) ease-out,box-shadow var(--duration-fast, .1s) ease-out}.button--ghost{background-color:transparent;color:var(--color-semantic-text-primary);border-color:var(--color-semantic-border-default);transition:background-color .3s cubic-bezier(.5,-.1,.2,1.1),border-color .3s cubic-bezier(.5,-.1,.2,1.1),box-shadow .3s cubic-bezier(.5,-.1,.2,1.1),filter .3s cubic-bezier(.5,-.1,.2,1.1),text-shadow .3s cubic-bezier(.5,-.1,.2,1.1)}.button--ghost:hover:not(:disabled){background-color:var(--color-semantic-text-primary);color:var(--color-semantic-background-primary);border-color:var(--color-semantic-text-secondary);box-shadow:0 0 8px 0 var(--color-cga-amber-glow);text-shadow:0 0 3px var(--color-cga-amber-glow);will-change:filter,box-shadow;animation:phosphor-warmup var(--duration-normal, .2s) ease-out;transition:background-color var(--duration-normal, .2s) ease-out,border-color var(--duration-normal, .2s) ease-out,box-shadow var(--duration-normal, .2s) ease-out,text-shadow var(--duration-normal, .2s) ease-out}.button--ghost:active:not(:disabled){background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);box-shadow:0 0 12px 2px var(--color-cga-amber-glow);text-shadow:0 0 4px var(--color-cga-amber-glow);animation:phosphor-energize .15s ease-out forwards;transition:background-color var(--duration-fast, .1s) ease-out,border-color var(--duration-fast, .1s) ease-out,box-shadow var(--duration-fast, .1s) ease-out}.button--link{background-color:transparent;color:var(--color-semantic-text-accent);border-color:transparent;text-decoration:underline}.button--link:hover:not(:disabled){color:var(--color-cga-amber-bright);background-color:transparent;border-color:transparent;text-shadow:0 0 4px var(--color-cga-amber-glow)}.button--link:active:not(:disabled){color:var(--color-semantic-text-disabled)}.button--small{font-size:14px;padding:4px 8px;min-height:24px;gap:4px}.button--medium{font-size:16px;padding:8px 16px;min-height:32px;gap:6px}.button--large{font-size:18px;padding:12px 20px;min-height:40px;gap:8px}.button--disabled,.button:disabled{cursor:not-allowed;opacity:.6;background-color:var(--color-semantic-background-secondary)!important;color:var(--color-semantic-text-disabled)!important;border-color:var(--color-semantic-text-disabled)!important}.button--loading{cursor:wait}.button--full-width{width:100%;justify-content:center}.button__loading-indicator{animation:blink 1s infinite;margin-right:4px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.button__content{display:inline-flex;align-items:center;justify-content:center}.button__content--loading{opacity:.7}.button:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}@media(prefers-contrast:high){.button{border-width:3px}}@media(prefers-reduced-motion:reduce){.button{transition:none}.button--primary:hover:not(:disabled),.button--primary:active:not(:disabled),.button--secondary:hover:not(:disabled),.button--secondary:active:not(:disabled),.button--ghost:hover:not(:disabled),.button--ghost:active:not(:disabled){animation:none;filter:none;transition:none}.button--primary:active:not(:disabled):after{animation:none}.button__loading-indicator{animation:none}}.card{background-color:var(--color-semantic-background-primary);border:var(--border-width-medium) solid var(--color-semantic-border-default);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);color:var(--color-semantic-text-primary);transition:border-color var(--duration-normal, .2s) ease-out,box-shadow var(--duration-slow, .4s) ease-out}.card--default{border-color:var(--color-semantic-border-default)}.card--elevated{border-color:var(--color-semantic-text-secondary);box-shadow:4px 4px 0 0 var(--color-semantic-text-disabled)}.card--glow{border-color:var(--color-cga-amber);box-shadow:var(--shadow-glow-md)}.card--glow:hover{box-shadow:var(--shadow-glow-lg)}.card--bordered{border-color:var(--color-semantic-text-accent);border-width:var(--border-width-medium)}.card__header{padding:var(--spacing-2) var(--spacing-3);border-bottom:var(--border-width-thin) solid var(--color-semantic-text-disabled);background-color:var(--color-cga-amber-dim)}.card__title{color:var(--color-semantic-text-secondary);font-size:var(--typography-font-size-base);font-weight:var(--typography-font-weight-bold);text-transform:uppercase}.card__body{padding:var(--spacing-3)}.card__footer{padding:var(--spacing-2) var(--spacing-3);border-top:var(--border-width-thin) solid var(--color-semantic-text-disabled);background-color:var(--color-semantic-background-secondary)}.card:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}@media(prefers-contrast:high){.card{border-width:3px}.card__header{border-bottom-width:2px}.card__footer{border-top-width:2px}.card:focus-visible{outline-width:3px}}@media(prefers-reduced-motion:reduce){.card{transition:none}}.checkbox{display:inline-flex;align-items:center;gap:var(--spacing-2);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-size:var(--typography-font-size-base);color:var(--color-semantic-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox--disabled{cursor:not-allowed;opacity:.6}.checkbox__input{position:absolute;opacity:0;width:0;height:0}.checkbox__box{display:inline-block;white-space:nowrap;text-align:center;color:var(--color-semantic-text-primary);transition:color var(--duration-fast, .1s) ease-out}.checkbox__box:before{content:"[ ]"}.checkbox__input:checked+.checkbox__box:before{content:"[X]";color:var(--color-semantic-text-accent);text-shadow:0 0 4px var(--color-semantic-text-accent)}.checkbox__input:focus-visible+.checkbox__box{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.checkbox:hover:not(.checkbox--disabled) .checkbox__box{color:var(--color-semantic-text-secondary)}.checkbox:hover:not(.checkbox--disabled) .checkbox__input:checked+.checkbox__box:before{color:var(--color-semantic-text-secondary)}.checkbox--disabled .checkbox__box{color:var(--color-semantic-text-disabled)}.checkbox--disabled .checkbox__input:checked+.checkbox__box:before{color:var(--color-semantic-text-disabled)}.checkbox__label{color:inherit}@media(prefers-contrast:high){.checkbox__box{font-weight:700}.checkbox__input:focus-visible+.checkbox__box{outline-width:3px}.checkbox__label{font-weight:600}}@media(prefers-reduced-motion:reduce){.checkbox__box{transition:none}}.command-prompt{display:flex;align-items:center;font-family:var(--typography-font-family-primary);font-size:var(--typography-font-size-base);background:var(--color-semantic-background-primary);color:var(--color-semantic-text-accent);padding:var(--spacing-2);cursor:text}.command-prompt__prompt{color:var(--color-semantic-text-primary);margin-right:var(--spacing-2);white-space:nowrap;-webkit-user-select:none;user-select:none}.command-prompt__input{flex:1;background:transparent;border:none;color:var(--color-semantic-text-primary);font-family:inherit;font-size:inherit;outline:none;padding:0;margin:0;min-width:0}.command-prompt__input::placeholder{color:var(--color-semantic-text-disabled)}.command-prompt__cursor{color:var(--color-semantic-text-primary);animation:blink 1s step-end infinite;-webkit-user-select:none;user-select:none}.command-prompt--disabled{opacity:.5;cursor:not-allowed}.command-prompt--disabled .command-prompt__cursor{animation:none}.command-prompt__input:focus+.command-prompt__cursor{display:none}@media(prefers-contrast:high){.command-prompt{border:3px solid var(--color-semantic-border-default)}.command-prompt__prompt{font-weight:700}.command-prompt__input:focus{outline:3px solid var(--color-semantic-border-focus);outline-offset:2px}}@media(prefers-reduced-motion:reduce){.command-prompt__cursor{animation:none}}.progress{display:inline-flex;align-items:center;gap:var(--spacing-2);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.progress--full-width{display:flex;width:100%}.progress--full-width .progress__track{flex:1;min-width:0;overflow:hidden}.progress--full-width .progress__bar{display:block;width:100%;overflow:hidden;white-space:nowrap}.progress__track{display:inline-block;position:relative;border:var(--border-width-medium) solid var(--color-semantic-border-default);background-color:var(--color-semantic-background-secondary);padding:1px 3px;line-height:1;letter-spacing:0;box-shadow:inset 0 1px 3px 0 var(--effects-drop-shadow),0 0 6px 0 var(--effects-phosphor-glow)}.progress__track--borderless{border:none;background:none;padding:0;box-shadow:none}.progress__bar{display:inline-block;position:relative;line-height:1;letter-spacing:0}.progress--small{font-size:var(--typography-font-size-xs)}.progress--medium{font-size:var(--typography-font-size-base)}.progress--large{font-size:var(--typography-font-size-lg)}.progress__fill{color:var(--color-semantic-text-primary)}.progress__empty{color:var(--color-cga-brown)}.progress__transition{color:var(--color-semantic-text-primary);opacity:var(--opacity-50)}.progress__bracket{color:var(--color-semantic-border-default)}.progress--success .progress__fill{color:var(--color-semantic-status-success)}.progress--warning .progress__fill{color:var(--color-semantic-status-warning)}.progress--error .progress__fill{color:var(--color-semantic-status-error)}.progress--glow .progress__fill{text-shadow:0 0 4px var(--color-cga-amber-glow),0 0 10px var(--effects-phosphor-glow)}.progress--glow .progress__track{box-shadow:inset 0 1px 3px 0 var(--effects-drop-shadow),0 0 8px 0 var(--color-cga-amber-glow),0 0 20px 2px var(--effects-phosphor-glow)}.progress__label{color:var(--color-semantic-text-primary);min-width:4ch;text-align:right}.progress--indeterminate .progress__bar{overflow:hidden}.progress--indeterminate .progress__scanner{position:absolute;top:0;left:0;color:var(--color-semantic-text-primary);animation:dos-scan 2s ease-in-out infinite alternate}@keyframes dos-scan{0%{transform:translate(0)}to{transform:translate(calc(100% - 3ch))}}@media(prefers-contrast:high){.progress__track{border-width:3px;box-shadow:none}.progress__fill,.progress__label{font-weight:700}.progress--glow .progress__fill{text-shadow:none}.progress--glow .progress__track{box-shadow:none}}@media(prefers-reduced-motion:reduce){.progress{transition:none}.progress--indeterminate .progress__scanner{animation:none;transform:translate(calc(50% - 1.5ch))}}.input{background:var(--color-semantic-background-primary);color:var(--color-semantic-text-primary);border:var(--border-width-medium) solid var(--color-semantic-border-default);font-family:var(--typography-font-family-primary);font-size:var(--typography-font-size-base);padding:var(--spacing-2);outline:none;width:100%;box-sizing:border-box;transition:border-color var(--duration-normal, .2s) ease-out,box-shadow var(--duration-slow, .4s) ease-out}.input::placeholder{color:var(--color-semantic-text-disabled)}.input:focus{border-color:var(--color-semantic-border-focus);box-shadow:var(--shadow-glow-sm)}.input--error{border-color:var(--color-semantic-status-error)}.input--error:focus{border-color:var(--color-semantic-status-error)}.input--disabled,.input:disabled{opacity:.5;cursor:not-allowed;background:var(--color-semantic-background-primary)}@media(prefers-reduced-motion:reduce){.input{transition:none}}@media(prefers-contrast:high){.input{border-width:3px}.input:focus{outline:3px solid var(--color-semantic-border-focus);outline-offset:2px}}:root{--terminal-bg: var(--color-semantic-background-primary);--terminal-border: var(--color-semantic-text-disabled);--terminal-border-active: var(--color-semantic-text-secondary);--terminal-title-bg: var(--color-semantic-background-secondary);--terminal-title-text: var(--color-semantic-text-secondary);--terminal-title-bg-inactive: var(--color-semantic-background-secondary);--terminal-title-text-inactive: var(--color-semantic-text-primary);--terminal-text: var(--color-semantic-text-primary);--terminal-control-bg: var(--color-semantic-text-primary);--terminal-control-symbol: var(--color-semantic-background-primary)}.terminal{background-color:var(--terminal-bg);border:2px solid var(--terminal-border);color:var(--terminal-text);font-family:Perfect DOS VGA,monospace;display:flex;flex-direction:column;box-shadow:5px 5px 0 var(--effects-drop-shadow);min-width:320px;min-height:200px}.terminal:focus,.terminal--active{border-color:var(--terminal-border-active);outline:none}.terminal--active .terminal__title-bar{background-color:var(--color-semantic-background-accent)}.terminal--inactive{border-color:var(--terminal-border)}.terminal--inactive .terminal__title-bar{background-color:var(--terminal-title-bg-inactive);color:var(--terminal-title-text-inactive)}.terminal--small{width:480px;height:320px}.terminal--medium{width:640px;height:480px}.terminal--large{width:800px;height:600px}.terminal--maximized{width:100vw;height:100vh;position:fixed;top:0;left:0;border:none;box-shadow:none;z-index:1000}.terminal__title-bar{background-color:var(--terminal-title-bg);color:var(--terminal-title-text);padding:2px 4px;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none;cursor:default;height:24px}.terminal__title{display:flex;align-items:center;gap:4px}.terminal__controls{display:flex}.terminal__control{background-color:var(--terminal-control-bg);border:1px solid var(--terminal-control-symbol);width:20px;height:20px;margin-left:2px;cursor:default;display:flex;align-items:center;justify-content:center;color:var(--terminal-control-symbol)}.terminal__control:active{filter:invert(1)}.terminal__content{flex-grow:1;padding:8px;overflow-y:auto}.terminal__default-content{display:flex;flex-direction:column}.terminal__prompt{display:flex}.terminal__path{margin-right:4px}.terminal__cursor{background-color:var(--terminal-text);width:8px;height:16px;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.terminal__resize-handle{position:absolute;bottom:0;right:0;width:16px;height:16px;cursor:nwse-resize}.terminal--minimized{display:none}.terminal__taskbar-item{display:inline-flex;align-items:center;background-color:var(--terminal-control-bg);border:1px solid var(--color-semantic-background-primary);padding:2px 8px;cursor:default;-webkit-user-select:none;user-select:none}.terminal__taskbar-title{margin-left:4px;color:var(--color-semantic-background-primary)}@media(prefers-contrast:high){.terminal{border-width:3px}.terminal__title{font-weight:700}.terminal__control{border-width:2px}.terminal:focus{outline:3px solid var(--color-semantic-border-focus);outline-offset:2px}}@media(prefers-reduced-motion:reduce){.terminal__cursor{animation:none}}.tabs{display:inline-flex;align-items:center;gap:0;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);box-sizing:border-box}.tabs__tab{position:relative;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;font-family:inherit;font-weight:var(--typography-font-weight-regular);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;transition:color var(--duration-fast, .1s) ease-out,border-color var(--duration-fast, .1s) ease-out,background-color var(--duration-fast, .1s) ease-out,opacity var(--duration-fast, .1s) ease-out,text-shadow var(--duration-fast, .1s) ease-out;color:var(--color-semantic-text-primary);opacity:.7}.tabs__tab:hover:not(:disabled){opacity:1;text-shadow:0 0 4px currentColor}.tabs__tab--active{opacity:1}.tabs__tab--disabled{cursor:not-allowed;opacity:.3}.tabs--underline{gap:4px}.tabs--underline .tabs__tab{padding:8px 16px;border-bottom:2px solid transparent}.tabs--underline .tabs__tab--active{border-bottom-color:var(--color-semantic-text-accent);color:var(--color-semantic-text-accent)}.tabs--underline .tabs__tab:hover:not(:disabled):not(.tabs__tab--active){border-bottom-color:var(--color-semantic-border-default)}.tabs--pills{gap:4px;padding:4px;background-color:var(--color-semantic-background-secondary);border:1px solid var(--color-semantic-border-default);border-radius:2px}.tabs--pills .tabs__tab{padding:6px 12px;border-radius:2px}.tabs--pills .tabs__tab--active{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary)}.tabs--pills .tabs__tab:hover:not(:disabled):not(.tabs__tab--active){background-color:var(--color-semantic-background-primary)}.tabs--small .tabs__tab{font-size:10px;padding:4px 8px}.tabs--small.tabs--underline .tabs__tab{padding:4px 10px}.tabs--medium .tabs__tab{font-size:12px}.tabs--large .tabs__tab{font-size:14px;padding:10px 20px}.tabs--large.tabs--underline .tabs__tab{padding:10px 20px}.tabs--large.tabs--pills .tabs__tab{padding:8px 16px}.tabs__tab:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}@media(prefers-contrast:high){.tabs--underline .tabs__tab{border-bottom-width:3px}.tabs--pills{border-width:2px}}@media(prefers-reduced-motion:reduce){.tabs__tab{transition:none}}.badge{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-weight:var(--typography-font-weight-regular);line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:2px;text-transform:uppercase;letter-spacing:.05em;box-sizing:border-box}.badge--small{font-size:10px;padding:2px 6px;min-height:18px;gap:4px}.badge--medium{font-size:12px;padding:4px 8px;min-height:22px;gap:6px}.badge--default{background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);border:1px solid var(--color-semantic-border-default)}.badge--success{background-color:transparent;color:var(--color-cga-bright-green);border:1px solid var(--color-cga-bright-green)}.badge--warning{background-color:transparent;color:var(--color-cga-yellow);border:1px solid var(--color-cga-yellow)}.badge--error{background-color:transparent;color:var(--color-cga-bright-red);border:1px solid var(--color-cga-bright-red)}.badge--info{background-color:transparent;color:var(--color-cga-bright-cyan);border:1px solid var(--color-cga-bright-cyan)}.badge--accent{background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary);border:1px solid var(--color-semantic-border-default)}.badge__dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.badge--default .badge__dot{background-color:var(--color-semantic-text-primary)}.badge--success .badge__dot{background-color:var(--color-cga-bright-green)}.badge--warning .badge__dot{background-color:var(--color-cga-yellow)}.badge--error .badge__dot{background-color:var(--color-cga-bright-red)}.badge--info .badge__dot{background-color:var(--color-cga-bright-cyan)}.badge--accent .badge__dot{background-color:var(--color-semantic-text-secondary)}.badge__content{display:inline-flex;align-items:center;transform:translateY(1px)}@media(prefers-contrast:high){.badge{border-width:2px}}@media(prefers-reduced-motion:reduce){.badge{transition:none}}.switch{display:inline-flex;align-items:center;justify-content:flex-start;padding:0;border:none;background:transparent;cursor:pointer;outline:none;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.switch__track{position:relative;display:inline-flex;align-items:center;width:40px;height:20px;background-color:var(--color-semantic-background-secondary);border:2px solid var(--color-semantic-border-default);border-radius:2px;transition:background-color var(--duration-fast, .1s) ease-out,border-color var(--duration-fast, .1s) ease-out,box-shadow var(--duration-fast, .1s) ease-out}.switch__thumb{position:absolute;left:2px;width:12px;height:12px;background-color:var(--color-semantic-text-primary);border-radius:1px;transition:transform var(--duration-normal, .2s) cubic-bezier(.2,.8,.2,1.4),background-color var(--duration-fast, .1s) ease-out}.switch--checked .switch__track{background-color:var(--color-semantic-background-accent);border-color:var(--color-semantic-border-focus);box-shadow:var(--shadow-glow-xs)}.switch--checked .switch__thumb{transform:translate(20px);background-color:var(--color-semantic-text-secondary)}.switch:hover:not(.switch--disabled) .switch__track{border-color:var(--color-semantic-border-hover)}.switch:hover:not(.switch--disabled):not(.switch--checked) .switch__thumb{background-color:var(--color-semantic-text-accent)}.switch:focus-visible .switch__track{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.switch--disabled{cursor:not-allowed;opacity:.5}.switch--disabled .switch__track{background-color:var(--color-semantic-background-secondary);border-color:var(--color-semantic-border-disabled)}.switch--disabled .switch__thumb{background-color:var(--color-semantic-text-disabled)}@media(prefers-contrast:high){.switch__track{border-width:3px}}@media(prefers-reduced-motion:reduce){.switch__track,.switch__thumb{transition:none}.switch--checked .switch__track{box-shadow:none}}.breadcrumb{font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);font-size:var(--typography-font-size-xs);text-transform:uppercase;letter-spacing:.35em}.breadcrumb__list{display:flex;flex-wrap:wrap;align-items:center;gap:8px;list-style:none;margin:0;padding:0}.breadcrumb__item{display:flex;align-items:center;gap:8px}.breadcrumb__link{display:inline-flex;align-items:center;gap:4px;color:var(--color-semantic-text-disabled);text-decoration:none;transition:color .15s ease}.breadcrumb__link:hover{color:var(--color-semantic-text-primary)}.breadcrumb__link:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.breadcrumb__back-arrow{font-size:1em;line-height:1}.breadcrumb__separator{color:var(--color-semantic-text-disabled);opacity:.6;-webkit-user-select:none;user-select:none}.breadcrumb__current{color:var(--color-semantic-text-primary)}@media(min-width:768px){.breadcrumb{font-size:var(--typography-font-size-sm)}}@media(prefers-contrast:high){.breadcrumb__link:focus-visible{outline-width:3px}}@media(prefers-reduced-motion:reduce){.breadcrumb__link{transition:none}}.retro-effects{--retro-intensity: 1;pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999}.retro-effects__scanlines{position:absolute;top:0;right:0;bottom:0;left:0;opacity:calc(.6 * var(--retro-intensity));mix-blend-mode:screen;background:repeating-linear-gradient(to bottom,var(--effects-scanline-light) 0px,var(--effects-scanline-dark) 1px,transparent 2px,transparent 4px);animation:retro-scanline 9s linear infinite;will-change:transform}.retro-effects__glow{position:absolute;top:0;right:0;bottom:0;left:0;opacity:var(--retro-intensity);box-shadow:inset 0 0 200px var(--effects-vignette-glow);background:radial-gradient(ellipse 120% 100% at center,transparent 0%,transparent 50%,var(--effects-vignette-edge) 80%,var(--effects-vignette-corner) 100%)}.retro-effects__flicker{position:absolute;top:0;right:0;bottom:0;left:0;opacity:calc(.04 * var(--retro-intensity));background-color:var(--effects-screen-tint);animation:retro-flicker .5s steps(4) infinite;will-change:opacity}.retro-effects__bloom{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:calc(.5 * var(--retro-intensity));box-shadow:inset 0 0 40px var(--effects-phosphor-glow),inset 0 0 80px var(--effects-bloom-outer);background:radial-gradient(ellipse at center,var(--effects-bloom-center) 0%,transparent 60%)}@keyframes retro-scanline{0%{transform:translateY(0)}to{transform:translateY(12px)}}@keyframes retro-flicker{0%{opacity:calc(.02 * var(--retro-intensity))}50%{opacity:calc(.06 * var(--retro-intensity))}to{opacity:calc(.02 * var(--retro-intensity))}}@keyframes retro-power-off{0%{transform:scale(.95);filter:blur(2px);opacity:1}50%{transform:scaleY(.005) scaleX(1);filter:blur(0);opacity:1}to{transform:scaleY(0) scaleX(0);filter:blur(0);opacity:0}}@keyframes retro-power-on{0%{transform:scaleY(0) scaleX(0);filter:blur(4px) brightness(.3);opacity:1}50%{transform:scaleY(.02) scaleX(1);filter:blur(2px) brightness(.6);opacity:1}to{transform:scaleY(1) scaleX(1);filter:blur(0) brightness(1);opacity:1}}.retro-effects--powering-off{animation:retro-power-off var(--duration-power-off, .4s) ease-in forwards;transform-origin:center center}.retro-effects--powering-on{animation:retro-power-on var(--duration-power-on, .6s) ease-out forwards;transform-origin:center center}.retro-effects--off{transform:scaleY(0) scaleX(0);opacity:0;pointer-events:none}@media(prefers-reduced-motion:reduce){.retro-effects__scanlines{animation:none}.retro-effects__flicker{animation:none;opacity:calc(.03 * var(--retro-intensity))}.retro-effects--powering-off{animation:none;transition:opacity .2s ease-out;opacity:0}.retro-effects--powering-on{animation:none;transition:opacity .3s ease-in;opacity:1}}@media(prefers-contrast:high){.retro-effects{display:none}}.timeline-node{display:inline-flex;align-items:center;gap:var(--spacing-2);font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.timeline-node__marker{display:block;background:var(--color-cga-amber-dim);border:2px solid var(--color-cga-amber-dim);transition:all .15s ease;flex-shrink:0}.timeline-node--small .timeline-node__marker{width:8px;height:8px}.timeline-node--medium .timeline-node__marker{width:12px;height:12px}.timeline-node--large .timeline-node__marker{width:16px;height:16px}.timeline-node--circle .timeline-node__marker{border-radius:50%}.timeline-node--square .timeline-node__marker{border-radius:2px}.timeline-node--diamond .timeline-node__marker{transform:rotate(45deg)}.timeline-node--diamond.timeline-node--small .timeline-node__marker{width:7px;height:7px}.timeline-node--diamond.timeline-node--medium .timeline-node__marker{width:10px;height:10px}.timeline-node--diamond.timeline-node--large .timeline-node__marker{width:14px;height:14px}.timeline-node--default .timeline-node__marker{background:var(--color-cga-amber-dim);border-color:var(--color-cga-amber-dim)}.timeline-node--primary .timeline-node__marker{background:var(--color-cga-amber);border-color:var(--color-cga-amber)}.timeline-node--secondary .timeline-node__marker{background:var(--color-semantic-text-primary);border-color:var(--color-semantic-text-primary)}.timeline-node--accent .timeline-node__marker{background:var(--color-semantic-text-accent);border-color:var(--color-semantic-text-accent)}.timeline-node--interactive{cursor:pointer}.timeline-node--interactive:hover .timeline-node__marker{background:var(--color-cga-amber);border-color:var(--color-cga-amber);box-shadow:var(--shadow-glow-sm)}.timeline-node--active .timeline-node__marker{background:var(--color-cga-amber-bright);border-color:var(--color-cga-amber-bright);box-shadow:var(--shadow-glow-sm)}.timeline-node--active.timeline-node--interactive:hover .timeline-node__marker{box-shadow:var(--shadow-glow-md)}.timeline-node--interactive:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.timeline-node__label{color:var(--color-cga-amber);font-size:var(--typography-font-size-xs);white-space:nowrap}.timeline-node--small .timeline-node__label{font-size:10px}.timeline-node--large .timeline-node__label{font-size:var(--typography-font-size-sm)}.timeline-node--label-left,.timeline-node--label-right{flex-direction:row}.timeline-node--label-top,.timeline-node--label-bottom{flex-direction:column}.timeline-node__label--left,.timeline-node__label--top{order:-1}@media(prefers-reduced-motion:reduce){.timeline-node__marker{transition:none}}@media(prefers-contrast:high){.timeline-node__marker{border-width:3px}.timeline-node--interactive:focus-visible{outline-width:3px}}.modal{padding:0;border:none;background:transparent;color:var(--color-semantic-text-primary);max-width:100vw;max-height:100vh}.modal::backdrop{background-color:var(--effects-overlay)}.modal__container{background-color:var(--color-semantic-background-primary);border:2px solid var(--color-cga-yellow);box-shadow:var(--shadow-drop);width:480px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);display:flex;flex-direction:column;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback)}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4);border-bottom:1px solid var(--color-cga-dark-gray)}.modal__title{margin:0;font-size:16px;font-weight:400;color:var(--color-cga-yellow);line-height:1.4}.modal__close{display:flex;align-items:center;justify-content:center;background:none;border:none;padding:4px;cursor:pointer;color:var(--color-cga-light-gray)}.modal__close:hover{color:var(--color-cga-yellow)}.modal__close:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}.modal__body{padding:var(--spacing-4);color:var(--color-cga-light-gray);font-size:14px;line-height:1.5;overflow-y:auto;flex:1}.modal__footer{display:flex;gap:var(--spacing-2);justify-content:flex-end;padding:var(--spacing-4);border-top:1px solid var(--color-cga-dark-gray);color:var(--color-cga-light-gray)}.modal[open]{animation:modal-crt-enter var(--duration-slow, .4s) ease-out}.modal[open]::backdrop{animation:backdrop-open var(--duration-normal, .2s) ease-out}@keyframes modal-crt-enter{0%{opacity:0;filter:blur(4px) brightness(.3);transform:scale(.95)}to{opacity:1;filter:blur(0) brightness(1);transform:scale(1)}}@keyframes backdrop-open{0%{opacity:0}to{opacity:1}}.modal--closing{animation:modal-crt-exit var(--duration-normal, .2s) ease-in forwards}.modal--closing::backdrop{animation:backdrop-close var(--duration-fast, .1s) ease-in forwards}@keyframes modal-crt-exit{0%{opacity:1;filter:blur(0) brightness(1);transform:scale(1)}to{opacity:0;filter:blur(2px) brightness(.5);transform:scale(.95)}}@keyframes backdrop-close{0%{opacity:1}to{opacity:0}}.modal__close{transition:color var(--duration-fast, .1s) ease-out}@media(prefers-reduced-motion:reduce){.modal[open],.modal[open]::backdrop,.modal--closing,.modal--closing::backdrop{animation:none}.modal__close{transition:none}}@media(prefers-contrast:high){.modal__container{border-width:3px}}.stat{display:flex;flex-direction:column;gap:4px;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);box-sizing:border-box}.stat--small{gap:2px}.stat--small .stat__label{font-size:10px}.stat--small .stat__value{font-size:18px}.stat--small .stat__trend{font-size:10px}.stat--medium{gap:4px}.stat--medium .stat__label{font-size:11px}.stat--medium .stat__value{font-size:24px}.stat--medium .stat__trend{font-size:11px}.stat--large{gap:6px}.stat--large .stat__label{font-size:12px}.stat--large .stat__value{font-size:32px}.stat--large .stat__trend{font-size:12px}.stat__label{color:var(--color-semantic-text-primary);text-transform:uppercase;letter-spacing:.05em;line-height:1.2}.stat__value{color:var(--color-semantic-text-accent);font-weight:var(--typography-font-weight-bold);line-height:1;font-variant-numeric:tabular-nums}.stat__trend{display:inline-flex;align-items:center;gap:4px;line-height:1}.stat__trend--up{color:var(--color-cga-bright-green)}.stat__trend--down{color:var(--color-cga-bright-red)}.stat__trend--neutral{color:var(--color-semantic-text-primary)}.stat__trend-icon{font-size:.8em}.stat__trend-value{font-variant-numeric:tabular-nums}@media(prefers-contrast:high){.stat__value,.stat__trend{font-weight:700}.stat__trend-icon{font-size:1em}}@media(prefers-reduced-motion:reduce){.stat{transition:none}}.filter-bar{display:inline-flex;align-items:center;gap:4px;padding:4px;background-color:var(--color-semantic-background-secondary);border:1px solid var(--color-semantic-border-default);border-radius:2px;font-family:var(--typography-font-family-primary),var(--typography-font-family-fallback);box-sizing:border-box}.filter-bar__item{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;background:transparent;border:1px solid transparent;border-radius:2px;cursor:pointer;font-family:inherit;font-weight:var(--typography-font-weight-regular);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;color:var(--color-semantic-text-primary);opacity:.7;transition:color var(--duration-fast, .1s) ease-out,background-color var(--duration-fast, .1s) ease-out,border-color var(--duration-fast, .1s) ease-out,opacity var(--duration-fast, .1s) ease-out,text-shadow var(--duration-fast, .1s) ease-out,box-shadow var(--duration-fast, .1s) ease-out}.filter-bar__item:hover:not(:disabled){opacity:1;text-shadow:0 0 4px currentColor;border-color:var(--color-semantic-border-default)}.filter-bar__item--active{opacity:1;background-color:var(--color-semantic-background-accent);color:var(--color-semantic-text-secondary);border-color:var(--color-semantic-border-default)}.filter-bar__item--active[style*=--filter-bar-item-color]{background-color:var(--filter-bar-item-color);color:var(--color-semantic-text-secondary);border-color:var(--filter-bar-item-color)}.filter-bar__item--active:hover:not(:disabled){text-shadow:none}.filter-bar__item--disabled{cursor:not-allowed;opacity:.3}.filter-bar__label{display:inline-flex;align-items:center}.filter-bar__count{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;line-height:1;border-radius:2px;background-color:var(--color-semantic-background-primary);color:var(--color-semantic-text-primary);border:1px solid var(--color-semantic-border-default)}.filter-bar__item--active .filter-bar__count{background-color:var(--color-semantic-background-secondary);color:var(--color-semantic-text-primary);border-color:var(--color-semantic-border-default)}.filter-bar--small .filter-bar__item{font-size:10px;padding:2px 6px}.filter-bar--small .filter-bar__count{min-width:14px;height:14px;font-size:9px;padding:0 3px}.filter-bar--medium .filter-bar__item{font-size:12px;padding:6px 12px}.filter-bar--large .filter-bar__item{font-size:14px;padding:8px 16px}.filter-bar--large .filter-bar__count{min-width:18px;height:18px;font-size:11px;padding:0 5px}.filter-bar__item:focus-visible{outline:2px solid var(--color-semantic-border-focus);outline-offset:2px}@media(prefers-contrast:high){.filter-bar,.filter-bar__item{border-width:2px}.filter-bar__item--active{border-color:var(--color-semantic-text-primary);outline:1px solid var(--color-semantic-text-primary);outline-offset:-1px}.filter-bar__count{border-width:2px}}@media(prefers-reduced-motion:reduce){.filter-bar__item{transition:none}}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export { RetroEffects } from './components/RetroEffects';
|
|
|
16
16
|
export { TimelineNode } from './components/TimelineNode';
|
|
17
17
|
export { Modal } from './components/Modal';
|
|
18
18
|
export { Stat } from './components/Stat';
|
|
19
|
+
export { FilterBar } from './components/FilterBar';
|
|
19
20
|
export type { AlertProps } from './components/Alert';
|
|
20
21
|
export type { SectionProps, AccordionFillProps } from './components/Accordion';
|
|
21
22
|
export type { ButtonProps } from './components/Button';
|
|
@@ -30,8 +31,11 @@ export type { TabsProps, TabItem } from './components/Tabs';
|
|
|
30
31
|
export type { BadgeProps } from './components/Badge';
|
|
31
32
|
export type { SwitchProps } from './components/Switch';
|
|
32
33
|
export type { BreadcrumbProps, BreadcrumbItem } from './components/Breadcrumb';
|
|
33
|
-
export type { RetroEffectsProps } from './components/RetroEffects';
|
|
34
|
+
export type { RetroEffectsProps, PowerState } from './components/RetroEffects';
|
|
34
35
|
export type { TimelineNodeProps, TimelineNodeShape, TimelineNodeVariant } from './components/TimelineNode';
|
|
35
36
|
export type { ModalProps } from './components/Modal';
|
|
36
37
|
export type { StatProps } from './components/Stat';
|
|
37
|
-
export
|
|
38
|
+
export type { FilterBarProps, FilterBarItem } from './components/FilterBar';
|
|
39
|
+
export { componentRegistry, projects, getComponentMeta, getComponentsByOrigin, getComponentsByConsumer } from './components/registry';
|
|
40
|
+
export type { ComponentMeta, ProjectId, ProjectInfo } from './components/registry';
|
|
41
|
+
export declare const version = "0.6.0";
|