@layer utilities.aegisjsproject.animations {
	.animation-trampoline {
		animation-name: trampoline;
	}

	.animation-fade-in {
		animation-name: fade-in;
	}

	.animation-fade-out {
		animation-name: fade-out;
	}

	.animation-shrink {
		animation-name: shrink;
	}

	.animation-grow {
		animation-name: grow;
	}

	.animation-fly-in {
		animation-name: fly-in;
	}

	.animation-slide-up {
		animation-name: slide-up;
	}

	.animation-flip-down {
		animation-name: flip-down;
	}

	.animation-tear-off {
		animation-name: tear-off;
	}

	.animation-blink {
		animation-name: blink;
	}

	.animation-paused {
		animation-play-state: paused;
	}

	.animation-running {
		animation-play-state: running;
	}

	.animation-speed-blink {
		animation-duration: var(--aegis-blink-speed, 200ms);
	}

	.animation-speed-fast {
		animation-duration: var(--aegis-fast-speed, 400ms);
	}

	.animation-speed-normal {
		animation-duration: var(--aegis-normal-speed, 600ms);
	}

	.animation-speed-slow {
		animation-duration: var(--aegis-slow-speed, 800ms);
	}

	.animation-speed-crawl {
		animation-duration: var(--aegis-crawl-speed, 1200ms);
	}

	.animation-infinite {
		animation-iteration-count: infinite;
	}

	.animation-alternate {
		animation-direction: alternate;
	}

	.animation-reverse {
		animation-direction: reverse;
	}

	.animation-alternate-reverse {
		animation-direction: alternate-reverse;
	}

	.animation-normal {
		animation-direction: normal;
	}

	.animation-fill-forwards {
		animation-fill-mode: forwards;
	}

	.animation-fill-backwards {
		animation-fill-mode: backwards;
	}

	.animation-fill-both {
		animation-fill-mode: both;
	}

	.animation-fill-none {
		animation-fill-mode: none;
	}

	.animation-linear {
		animation-timing-function: linear;
	}

	.animation-ease {
		animation-timing-function: ease;
	}

	.animation-ease-in {
		animation-timing-function: ease-in;
	}

	.animation-ease-out {
		animation-timing-function: ease-out;
	}

	.animation-ease-in-out {
		animation-timing-function: ease-in-out;
	}

	.animation-overshoot {
		animation-timing-function: cubic-bezier(.59,1.16,.83,1.11);
	}

	.animation-stagger > :nth-child(5n+1) {
		animation-delay: calc(1 * var(--aegis-animation-stagger, 200ms));
	}

	.animation-stagger > :nth-child(5n+2) {
		animation-delay: calc(2 * var(--aegis-animation-stagger, 200ms));
	}

	.animation-stagger > :nth-child(5n+3) {
		animation-delay: calc(3 * var(--aegis-animation-stagger, 200ms));
	}

	.animation-stagger > :nth-child(5n+4) {
		animation-delay: calc(4 * var(--aegis-animation-stagger, 200ms));
	}

	.animation-stagger > :nth-child(5n+5) {
		animation-delay: calc(5 * var(--aegis-animation-stagger, 200ms));
	}
}

@layer base.aegisjsproject.theme {
	:root {
		color-scheme: light dark;
		font-family: var(--aegis-font, system-ui);
	}

	[data-theme="light"] {
		color-scheme: only light;
	}

	[data-theme="dark"] {
		color-scheme: only dark;
	}

	:root, [data-theme] {
		color: light-dark(var(--aegis-color-light, #212529), var(--aegis-color-dark, #f8f9fa));
		background-color: light-dark(var(--aegis-bg-light, #f8f9fa), var(--aegis-bg-dark, #212529));
	}
}

@layer components.aegisjsproject.button {
	.btn:not([hidden]) {
		cursor: pointer;
		display: inline-block;
		padding: 0.6em 1.3em;
		border-width: var(--aegis-btn-border-width, 0px);
		border-style: solid;
		appearance: button;
		line-height: 1.5;
		text-align: center;
		vertical-align: middle;
		font-family: inherit;
		font-size: 1rem;
		border-radius: var(--aegis-btn-border-radius, 5px);
		text-decoration: none;
		transition: background-color 150ms ease-in-out, border-color 150ms ease-in-out, color 150ms ease-in-out;
	}

	.btn:disabled, .disabled, :state(disabled) {
		pointer-events: none;
	}

	.btn.btn-sm {
		padding: 0.5em 1em;
		font-size: 0.7rem;
	}

	.btn.btn-lg {
		padding: 0.5em 1.1em;
		font-size: 1.3rem;
	}

	.btn.btn-block {
		display: block;
		width: 100%;
	}

	.btn:disabled:not(.btn-system, .btn-system-accent), .btn.disabled:not(.btn-system, .btn-system-accent), .btn:disabled, .disabled, :state(disabled) {
		cursor: not-allowed;
		opacity: var(--aegis-btn-disabled-opacity, 0.65);
		filter: saturate(var(--aegis-btn-disabled-saturation, 50%)) brightness(var(--aegis-btn-disabled-brightness, 90%));
	}

	.btn.disabled, .btn:state(disabled) {
		pointer-events: none;
	}

	.btn:focus-visible {
		outline: 2px solid;
		outline-offset: 2px;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-danger {
		background-color: var(--aegis-btn-danger, #dc3545);
		color: var(--aegis-color-dark, #f8f9fa);
		border-color: #842029;
	}

	.btn.btn-danger:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-danger:focus-visible {
		background-color: var(--aegis-btn-danger-hover, #b02a37);
		border-color: #58151c;
	}

	.btn.btn-danger:focus-visible {
		outline-color: var(--aegis-btn-danger, #dc3545);
	}

	.btn.btn-danger:active {
		background-color: var(--aegis-btn-danger-active, #842029);
		border-color: #2c0b0e;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-dark {
		background-color: var(--aegis-btn-dark, #212529);
		color: var(--aegis-color-dark, #f8f9fa);
		border-color: #343a40;
	}

	.btn.btn-dark:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-dark:focus-visible {
		background-color: var(--aegis-btn-dark-hover, #495057);
		border-color: #212529;
	}

	.btn.btn-dark:focus-visible {
		outline-color: var(--aegis-btn-dark, #212529);
	}

	.btn.btn-dark:active {
		background-color: var(--aegis-btn-dark-active, #343a40);
		border-color: #212529;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-info {
		background-color: var(--aegis-btn-info, #0dcaf0);
		color: var(--aegis-color-dark, #f8f9fa);
		border-color: #087990;
	}

	.btn.btn-info:not(:disabled, .disabled, :state(disabled)), .btn.btn-info:focus-visible {
		background-color: var(--aegis-btn-info-hover, #087990);
		border-color: #055160;
	}

	.btn.btn-info:focus-visible {
		outline-color: var(--aegis-btn-info, #0dcaf0);
	}

	.btn.btn-info:active {
		background-color: var(--aegis-btn-info-active, #0aa2c0);
		border-color: #032830;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-light {
		background-color: var(--aegis-btn-light, #f8f9fa);
		color: var(--aegis-color-light, #212529);
		border-color: #dee2e6;
	}

	.btn.btn-light:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-light:focus-visible {
		background-color: var(--aegis-btn-light-hover, #e9ecef);
		border-color: #ced4da;
	}

	.btn.btn-light:focus-visible {
		outline-color: var(--aegis-btn-light, #f8f9fa);
	}

	.btn.btn-light:active {
		background-color: var(--aegis-btn-light-active, #dee2e6);
		border-color: #adb5bd;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-link {
		background-color: var(--aegis-btn-link, transparent);
		color: LinkText;
		border-color: transparent;
		text-decoration: none;
	}

	.btn.btn-link:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-link:focus-visible {
		background-color: var(--aegis-btn-link-hover, transparent);
		text-decoration: underline;
	}

	.btn.btn-link:focus-visible {
		outline-color: var(--aegis-btn-link, transparent);
	}

	.btn.btn-link:active {
		background-color: var(--aegis-btn-link-active, transparent);
		text-decoration: underline;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-danger {
		background-color: transparent;
		color: var(--aegis-btn-danger, #dc3545);
		border-color: currentColor;
	}

	.btn.btn-outline-danger:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-danger:focus-visible {
		background-color: var(--aegis-btn-danger-hover, #b02a37);
		border-color: #58151c;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-danger:focus-visible {
		outline-color: var(--aegis-btn-danger, #dc3545);
	}

	.btn.btn-outline-danger:active {
		background-color: var(--aegis-btn-danger-active, #842029);
		border-color: #2c0b0e;
		color: var(--aegis-color-dark, #f8f9fa);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-dark {
		background-color: transparent;
		color: var(--aegis-btn-dar, #212529);
		border-color: currentColor;
	}

	.btn.btn-outline-dark:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-dark:focus-visible {
		background-color: var(--aegis-btn-dark-hover, #495057);
		border-color: #212529;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-dark:focus-visible {
		outline-color: var(--aegis-btn-dark, #212529);
	}

	.btn.btn-outline-dark:active {
		background-color: var(--aegis-btn-dark-active, #343a40);
		border-color: #212529;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-secondary:disabled, .btn.btn-outline-secondary.disabled, .btn.btn-outline-secondary:state(disabled) {
		color: var(--aegis-btn-active-disabled, #6c757d);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-info {
		background-color: transparent;
		color: var(--aegis-btn-info, #0dcaf0);
		border-color: currentColor;
	}

	.btn.btn-outline-info:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-info:focus-visible {
		background-color: var(--aegis-btn-info-hover, #087990);
		border-color: #055160;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-info:focus-visible {
		outline-color: var(--aegis-btn-info, #0dcaf0);
	}

	.btn.btn-outline-info:active {
		background-color: var(--aegis-btn-info-active, #0aa2c0);
		border-color: #032830;
		color: var(--aegis-color-dark, #f8f9fa);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-light {
		background-color: transparent;
		color: var(--aegis-btn-light, #f8f9fa);
		border-color: currentColor;
	}

	.btn.btn-outline-light:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-light:focus-visible {
		background-color: var(--aegis-btn-light-hover, #e9ecef);
		border-color: #ced4da;
		color: var(--aegis-color-light, #212529);
	}

	.btn.btn-outline-light:focus-visible {
		outline-color: var(--aegis-btn-light, #f8f9fa);
	}

	.btn.btn-outline-light:active {
		background-color: var(--aegis-btn-light-active, #dee2e6);
		border-color: #adb5bd;
		color: var(--aegis-btn-light-active, #dee2e6);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-primary {
		background-color: transparent;
		color: var(--aegis-btn-primary, #0d6efd);
		border-color: currentColor;
	}

	.btn.btn-outline-primary:focus-visible {
		outline-color: var(--aegis-btn-primary, #0d6efd);
	}

	.btn.btn-outline-primary:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-primary:focus-visible {
		background-color: var(--aegis-btn-primary-hover, #0a58ca);
		border-color: #052c65;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-primary:active {
		background-color: var(--aegis-btn-primary-active, #084298);
		border-color: #031633;
		color: var(--aegis-color-dark, #f8f9fa);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-secondary {
		background-color: transparent;
		color: var(--aegis-btn-secondary, #6c757d);
		border-color: currentColor;
	}

	.btn.btn-outline-secondary:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-secondary:focus-visible {
		background-color: var(--aegis-btn-secondary-hover, #495057);
		border-color: #212529;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-secondary:focus-visible {
		outline-color: var(--aegis-btn-secondary, #6c757d);
	}

	.btn.btn-outline-secondary:active {
		background-color: var(--aegis-btn-secondary-active, #343a40);
		border-color: #212529;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-secondary:disabled, .btn.btn-outline-secondary.disabled, .btn.btn-outline-seconday:state(disabled) {
		color: var(--aegis-btn-active-disabled, #6c757d);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-success {
		background-color: transparent;
		color: var(--aegis-btn-success, #198754);
		border-color: currentColor;
	}

	.btn.btn-outline-success:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-success:focus-visible {
		background-color: var(--aegis-btn-success-hover, #146c43);
		border-color: #0a3622;
		color: var(--aegis-color-dark, #f8f9fa);
	}

	.btn.btn-outline-success:focus-visible {
		outline-color: var(--aegis-btn-success, #198754);
	}

	.btn.btn-outline-success:active {
		background-color: var(--aegis-btn-success-active, #0f5132);
		border-color: #051b11;
		color: var(--aegis-color-dark, #f8f9fa);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-outline-warning {
		background-color: transparent;
		color: var(--aegis-btn-warning, #ffc107);
		border-color: currentColor;
	}

	.btn.btn-outline-warning:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-outline-warning:focus-visible {
		background-color: var(--aegis-btn-warning-hover, #cc9a06);
		border-color: #664d03;
		color: var(--aegis-color-light, #212529);
	}

	.btn.btn-outline-warning:active {
		background-color: var(--aegis-btn-warning-active, #997404);
		border-color: #332701;
		color: var(--aegis-color-light, #212529);
	}

	.btn.btn-outline-warning:focus-visible {
		outline-color: var(--aegis-btn-warning, #ffc107);
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-primary {
		background-color: var(--aegis-btn-primary, #0d6efd);
		color: var(--aegis-color-dark, #f8f9fa);
		border-color: #084298;
	}

	.btn.btn-primary:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-primary:focus-visible {
		background-color: var(--aegis-btn-primary-hover, #0a58ca);
		border-color: #052c65;
	}

	.btn.btn-primary:focus-visible {
		outline-color: var(--aegis-btn-primary, #0d6efd);
	}

	.btn.btn-primary:active {
		background-color: var(--aegis-btn-primary-active, #084298);
		border-color: #031633;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-secondary {
		background-color: var(--aegis-btn-secondary, #6c757d);
		color: var(--aegis-color-dark, #f8f9fa);
		border-color: #343a40;
	}

	.btn.btn-secondary:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-secondary:focus-visible {
		background-color: var(--aegis-btn-secondary-hover, #495057);
		border-color: #212529;
	}

	.btn.btn-secondary:focus-visible {
		outline-color: var(--aegis-btn-secondary, #6c757d);
	}

	.btn.btn-secondary:active {
		background-color: var(--aegis-btn-secondary-active, #343a40);
		border-color: #212529;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-success {
		background-color: var(--aegis-btn-success, #198754);
		color: var(--aegis-color-dark, #f8f9fa);
		border-color: #0f5132;
	}

	.btn.btn-success:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-success:focus-visible {
		background-color: var(--aegis-btn-success-hover, #146c43);
		border-color: #0a3622;
	}

	.btn.btn-success:focus-visible {
		outline-color: var(--aegis-btn-success, #198754);
	}

	.btn.btn-success:active {
		background-color: var(--aegis-btn-success-active, #0f5132);
		border-color: #051b11;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-system {
		background-color: ButtonFace;
		color: ButtonText;
		border-color: hsl(from ButtonFace h s calc(l - 0.2));
	}

	.btn.btn-system:hover {
		background-color: hsl(from ButtonFace h s calc(l * 1.1));
		border-color: hsl(from ButtonFace h s calc(l * 1.1));
	}

	.btn.btn-system:focus-visible {
		background-color: hsl(from ButtonFace h calc(s * 1.05) calc(l * 1.05));
		border-color: hsl(from ButtonFace h calc(s * 1.05) calc(l * 1.05));
		outline: 2px solid ButtonText;
		outline-offset: 2px;
	}

	.btn.btn-system:active {
		background-color: hsl(from ButtonFace h s calc(l * 0.8));
		border-color: hsl(from ButtonFace h s calc(l * 0.8));
	}

	.btn.btn-system:disabled, .btn.btn-system.disabled, .btn.btn-system:state(disabled) {
		background-color: hsl(from ButtonFace h calc(s * 0.2) l);
		border-color: hsl(from ButtonFace h calc(s * 0.2) l);
		color: GrayText;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-system-accent {
		background-color: AccentColor;
		color: AccentColorText;
		border-color: hsl(from AccentColor h s calc(l - 0.2));
	}

	.btn.btn-system-accent:hover {
		background-color: hsl(from AccentColor h s calc(l * 1.1));
		border-color: hsl(from AccentColor h s calc(l * 1.1));
	}

	.btn.btn-system-accent:focus-visible {
		background-color: hsl(from AccentColor h calc(s * 1.05) calc(l * 1.05));
		border-color: hsl(from AccentColor h calc(s * 1.05) calc(l * 1.05));
		outline: 2px solid hsl(from AccentColor h s calc(l - 0.3));
		outline-offset: 2px;
	}

	.btn.btn-system-accent:active {
		background-color: hsl(from AccentColor h s calc(l * 0.8));
		border-color: hsl(from AccentColor h s calc(l * 0.8));
	}

	.btn.btn-system-accent:disabled, .btn.btn-system-accent.disabled, .btn.btn-system:state(disabled) {
		background-color: hsl(from AccentColor h calc(s * 0.2) l);
		border-color: hsl(from AccentColor h calc(s * 0.2) l);
		color: GrayText;
	}
}

@layer components.aegisjsproject.button {
	.btn.btn-warning {
		background-color: var(--aegis-btn-warning, #ffc107);
		color: var(--aegis-color-light, #212529);
		border-color: #997404;
	}

	.btn.btn-warning:hover:not(:disabled, .disabled, :state(disabled)), .btn.btn-warning:focus-visible {
		background-color: var(--aegis-btn-warning-hover, #cc9a06);
		border-color: #664d03;
	}

	.btn.btn-warning:focus-visible {
		outline-color: var(--aegis-btn-warning, #ffc107);
	}

	.btn.btn-warning:active {
		background-color: var(--aegis-btn-warning-active, #997404);
		border-color: #332701;
	}
}

@layer base.aegisjsproject.colors {
	.current-color {
		fill: currentColor;
	}

	.color-initial {
		color: initial;
	}

	.color-inherit {
		color: inherit;
	}
}

@layer components.aegisjsproject.theme {
	:host {
		color: var(--aegis-color-light, #212529);
		color: light-dark(var(--aegis-color-light, #212529), var(--aegis-color-dark, #f8f9fa));
		background-color: var(--aegis-bg-light, #f8f9fa);
		background-color: light-dark(var(--aegis-bg-light, #f8f9fa), var(--aegis-bg-dark, #212529));
		font-family: system-ui;
	}

	:host(:not([hidden]):not([popover])) {
		display: block;
	}

	:host([theme="light"]) {
		color-scheme: only light;
	}

	:host([theme="dark"]) {
		color-scheme: only dark;
	}
}

@layer components.aegisjsproject.theme {
	:host {
		border-width: 1px;
		border-style: solid;
		border-color: light-dark(var(--aegis-border-color-light, #dee2e6), var(--aegis-border-color-dark, #495057));
		border-radius: var(--aegis-border-radius, 8px);
	}
}

@layer component.aegisjsproject.scrollbar {
	:host {
		scrollbar-color: var(--aegis-scrollbar-color, #0d6efd) var(--aegis-scrollbar-track, #212529);
		scrollbar-width: var(----aegis-scrollbar-width, auto);
	}
}

@layer base.aegisjsproject.cursors {
	.no-pointer-events {
		pointer-events: none;
	}

	.cursor-auto {
		cursor: auto;
	}

	.cursor-default {
		cursor: var(--default-cursor, default);
	}

	.cursor-none {
		cursor: none;
	}

	.cursor-context-menu {
		cursor: context-menu;
	}

	.cursor-help {
		cursor: help;
	}

	.cursor-pointer {
		cursor: var(--pointer-cursor, pointer);
	}

	.cursor-progress {
		cursor: var(--progress-cursor, progress);
	}

	.cursor-wait {
		cursor: var(--wait-cursor, wait);
	}

	.cursor-cell {
		cursor: cell;
	}

	.cursor-crosshair {
		cursor: crosshair;
	}

	.cursor-text {
		cursor: text;
	}

	.cursor-vertical-text, .cursor-text-vertical {
		cursor: vertical-text;
	}

	.cursor-alias {
		cursor: alias;
	}

	.cursor-copy {
		cursor: copy;
	}

	.cursor-move {
		cursor: move;
	}

	.cursor-no-drop {
		cursor: no-drop;
	}

	.cursor-not-allowed {
		cursor: not-allowed;
	}

	.cursor-all-scroll {
		cursor: all-scroll;
	}

	.cursor-col-resize {
		cursor: col-resize;
	}

	.cursor-row-resize {
		cursor: row-resize;
	}

	.cursor-n-resize {
		cursor: n-resize;
	}

	.cursor-e-resize {
		cursor: e-resize;
	}

	.cursor-s-resize {
		cursor: s-resize;
	}

	.cursor-w-resize {
		cursor: w-resize;
	}

	.cursor-ne-resize {
		cursor: ne-resize;
	}

	.cursor-nw-resize {
		cursor: nw-resize;
	}

	.cursor-se-resize {
		cursor: se-resize;
	}

	.cursor-sw-resize {
		cursor: sw-resize;
	}

	.cursor-zoom-in {
		cursor: zoom-in;
	}

	.cursor-zoom-out {
		cursor: zoom-out;
	}

	.cursor-grab {
		cursor: grab;
	}

	.cursor-grabbing {
		cursor: grabbing;
	}
}

@layer components.aegisjsproject.button {
	:host {
		display: inline flow-root;
		appearance: button;
		user-select: none;
		white-space: nowrap;
		align-items: flex-start;
		text-align: center;
		cursor: default;
		box-sizing: border-box;
		background-color: ButtonFace;
		color: ButtonText;
		border: 1px outset ButtonBorder;
		border-radius: 2px;
		padding: 2px 6px;
		font-family: system-ui, -apple-system, sans-serif;
		font-size: small;
	}

	:host(:focus-visible) {
		/* Universal fallback for older engines or high contrast overrides */
		outline: auto;
		outline: 2px solid CanvasText;
		outline-offset: 2px;
	}

	/* WebKit & Blink (Chrome, Safari, Edge) native focus ring targeting */
	@supports (outline-color: -webkit-focus-ring-color) {
		:host(:focus-visible) {
			outline: 5px auto -webkit-focus-ring-color;
		}
	}

	/* Firefox cross-platform fallback (Windows, Android, Linux) */
	@supports (-moz-appearance: none) {
		:host(:focus-visible) {
			outline: 2px solid AccentColor;
		}
	}

	:host(:state(disabled)) {
		color: GrayText;
		border-color: color-mix(in srgb, GrayText, transparent 50%);
		background-color: color-mix(in srgb, ButtonFace, transparent 50%);
		pointer-events: none;
	}

	:host(:hover:not(:state(disabled))) {
		background-color: color-mix(in srgb, ButtonFace, ButtonText 10%);
	}

	:host(:active:not(:state(disabled))) {
		background-color: color-mix(in srgb, ButtonFace, ButtonText 20%);
	}
}

@layer layout.aegisjsproject.displays {
	.block:not([hidden]):not([popover]) {
		display: block;
	}

	.inline:not([hidden]):not([popover]) {
		display: inline;
	}

	.inline-block:not([hidden]):not([popover]) {
		display: inline-block;
	}

	.flex:not([hidden]):not([popover]) {
		display: flex;
	}

	.inline-flex:not([hidden]):not([popover]) {
		display: inline-flex;
	}

	.grid:not([hidden]):not([popover]) {
		display: grid;
	}

	.inline-grid:not([hidden]):not([popover]) {
		display: inline-grid;
	}
}

@layer layout.aegisjsproject.floats {
	.float-left {
		float: left;
	}

	.float-right {
		float: right;
	}

	.float-none {
		float: none;
	}

	.clear-left {
		clear: left;
	}

	.clear-right {
		clear: right;
	}

	.clear-both {
		clear: both;
}
}

@layer base.aegisjsproject.fonts {
	.system-ui {
		font-family: system-ui, sans-serif;
	}

	.ui-sans-serif {
		font-family: ui-sans-serif, sans-serif;
	}

	.ui-serif {
		font-family: ui-serif, serif;
	}

	.ui-monospace {
		font-family: ui-monospace, monospace;
	}
}

@layer component.aegisjsproject.forms {
	.form-group {
		border: 1px solid transparent;
		padding: var(--form-group-padding, 0.4em 0.8em);
		margin-bottom: 0.4em;
		border-radius: 6px;
		transition: border-color 200ms ease-in-out;
	}

	.form-group:focus-within {
		border-color: var(--form-group-border, #cacaca);
	}

	.form-group .input-label {
		display: block;
		margin: 0.4em 0;
	}

	.form-group .input-label.required::after {
		content: ' *';
		display: inline;
		font-size: 0.8em;
		font-weight: 800;
	}

	.form-group .input, .form-group .input:required:invalid:placeholder-shown {
		display: block;
		width: var(--input-width, 100%);
		max-width: 100%;
		color: currentColor;
		border-style: solid;
		border-color: var(--input-border, #cacaca);
		border-width: 0 0 1px 0;
		background: transparent;
		padding: var(--form-group-padding, 0.5em 0.3em);
		transition: color 300ms ease-in-out, background-color 300ms ease-in-out;
	}

	.form-group textarea.input {
		resize: vertical;
	}

	.form-group .input:invalid {
		box-shadow: none;
	}

	.form-group .input:invalid:not(:focus) {
		color: var(--invalid-color, #-871717);
		border-color: currentColor;
		background-color: var(--invalid-background, #F7C1C1);
	}

	.form-group input[hidden] + label[for].btn-toggle {
		background-color: var(--button-disabled-background);
		margin: var(--form-group-margin, 0.3rem);
		transition: background-color 300ms ease-in-out;
	}

	.form-group input[hidden]:checked + label[for].btn-toggle {
		background-color: var(--button-background);
	}

	.form-group input[hidden]:not(:checked) + label[for].btn-toggle .when-checked {
		display: none;
	}

	.form-group input[hidden]:checked + label[for].btn-toggle .when-unchecked {
		display: none;
	}
}

@layer base.aegisjsproject.animations {
	@keyframes trampoline {
		from {
			transform: scaleY(.85);
			filter: drop-shadow(0 0.3em 0.1em rgba(0,0,0,0.7));
		}

		to {
			filter: drop-shadow(0 0.7em 0.3em rgba(0,0,0,0.7));
			transform: translateY(-1.2em);
		}
	}

	@keyframes fade-in {
		from {
			opacity: 0;
		}
	}

	@keyframes fade-out {
		to {
			opacity: 0;
		}
	}

	@keyframes shrink {
		to {
			transform: scale(0);
		}
	}

	@keyframes grow {
		from {
			transform: scale(0);
		}
	}

	@keyframes fly-in {
		from {
			transform: translate(100vw, -3vh) scaleX(0.1) skew(-20deg);
		}
	}

	@keyframes flip-down {
		from {
			transform: rotateX(-90deg);
		}
	}

	@keyframes tear-off {
		40% {
			transform: rotateZ(30deg) rotateX(40deg) skew(-20deg);
		}

		99% {
			transform: rotateZ(40deg)  translate(-30vw, 120vh) skew(20deg);
			opacity: 1;
		}

		to {
			opacity: 0;
		}
	}

	@keyframes slide {
		from {
			left: 100%;
		}

		to {
			left: 0;
		}
	}

	@keyframes slide-up {
		from {
			top: 100%;
		}

		to {
			top: 0%;
		}
	}

	@keyframes progress {
		to {
			background-position: right;
		}
	}

	@keyframes hanger {
		from {
			transform: rotateX(-90deg);
			transform-origin: center -40%;
		}
	}

	@keyframes door {
		from {
			transform: rotateY(90deg);
		}
	}

	@keyframes sidekick {
		from {
			left: 100%;
			transform: rotate(270deg) scale(0);
		}
	}

	@keyframes cube {
		from {
			left: 100%;
			transform: matrix(0.133,-0.489,-0.200,2.489,-100.667,80.000);
		}
	}

	@keyframes shine {
		0% {
			text-shadow: 4px 8px 2px #ddd;
		}

		25% {
			text-shadow: 4px -8px 2px #ddd;
		}

		50% {
			text-shadow: -2px -8px 2px #ddd;
		}

		75% {
			text-shadow: -2px 8px 2px #ddd;
		}

		100% {
			text-shadow: 4px 8px 2px #ddd;
		}
	}

	@keyframes blink {
		from {
			opacity: 0;
		}
	}
}

@layer reset, vendor, base, layout, components, utilities;

@layer layout.aegisjsproject.fit {
	.fit-contain {
		object-fit: contain;
	}

	.fit-cover {
		object-fit: cover;
	}

	.fit-fill {
		object-fit: fill;
	}

	.fit-none {
		object-fit: none;
	}

	.fit-scale-down {
		object-fit: scale-down;
	}
}

@layer layout.aegisjsproject.overflows {
	.overflow-hidden {
		overflow: hidden;
	}

	.overflow-visible {
		overflow: visible;
	}

	.overflow-scroll {
		overflow: scroll;
	}

	.overflow-auto {
		overflow: auto;
	}

	.overflow-x-hidden {
		overflow-x: hidden;
	}

	.overflow-x-visible {
		overflow-x: visible;
	}

	.overflow-x-scroll {
		overflow-x: scroll;
	}

	.overflow-x-auto {
		overflow-x: auto;
	}

	.overflow-y-hidden {
		overflow-y: hidden;
	}

	.overflow-y-visible {
		overflow-y: visible;
	}

	.overflow-y-scroll {
		overflow-y: scroll;
	}

	.overflow-y-auto {
		overflow-y: auto;
	}
}

@layer layout.aegisjsproject.positions {
	.fixed {
		position: fixed;
	}

	.relative {
		position: relative;
	}

	.absolute {
		position: absolute;
	}

	.sticky {
		position: sticky;
	}

	.top {
		top: 0;
	}

	.bottom {
		bottom: 0;
	}

	.left {
		left: 0;
	}

	.right {
		right: 0;
	}

	.z-0 {
		z-index: 0;
	}

	.z-1 {
		z-index: 1;
	}

	.z-2 {
		z-index: 2;
	}

	.z-3 {
		z-index: 3;
	}

	.z-4 {
		z-index: 4;
	}

	.z-top {
		z-index: var(--z-top, 9999);
	}

	.z-max {
		z-index: 2147483647;
	}
}

@layer utilities.aegisjsproject.presentation {
	[data-width] { width: attr(data-width rem); }
	[data-min-width] { min-width: attr(data-min-width rem); }
	[data-max-width] { max-width: attr(data-max-width rem); }
	[data-height] { height: attr(data-height rem); }
	[data-min-height] { min-height: attr(data-min-height rem); }
	[data-max-height] { max-height: attr(data-max-height rem); }
	[data-aspect-ratio] { aspect-ratio: attr(data-aspect-ratio type(<number>)); }

	[data-padding-block] { padding-block: attr(data-padding-block rem); }
	[data-padding-inline] { padding-inline: attr(data-padding-inline rem); }
	[data-padding-block-end] { padding-block-end: attr(data-padding-block-end rem); }
	[data-padding-inline-end] { padding-inline-end: attr(data-padding-inline-end rem); }
	[data-padding-block-start] { padding-block-start: attr(data-padding-block-start rem); }
	[data-padding-inline-start] { padding-inline-start: attr(data-padding-inline-start rem); }

	[data-margin-block] { margin-block: attr(data-margin-block rem); }
	[data-margin-inline] { margin-inline: attr(data-margin-inline rem); }
	[data-margin-block-end] { margin-block-end: attr(data-margin-block-end rem); }
	[data-margin-inline-end] { margin-inline-end: attr(data-margin-inline-end rem); }
	[data-margin-block-start] { margin-block-start: attr(data-margin-block-start rem); }
	[data-margin-inline-start] { margin-inline-start: attr(data-margin-inline-start rem); }

	[data-border-width] { border-width: attr(data-border-width px); }
	[data-border-color] { border-color: attr(data-border-color type(<color>)); }
	[data-border-style] { border-style: attr(data-border-style type(<custom-ident>), solid); }
	[data-border-width]:not([data-border-style]) { border-style: solid; }
	[data-border-radius] { border-radius: attr(data-border-radius px); }

	[data-inset-block]         { inset-block: attr(data-inset-block px); }
	[data-inset-inline]        { inset-inline: attr(data-inset-inline px); }
	[data-inset-block-start]   { inset-block-start: attr(data-inset-block-start px); }
	[data-inset-block-end]     { inset-block-end: attr(data-inset-block-end px); }
	[data-inset-inline-start]  { inset-inline-start: attr(data-inset-inline-start px); }
	[data-inset-inline-end]    { inset-inline-end: attr(data-inset-inline-end px); }

	[data-outline-width]  { outline-width: attr(data-outline-width px); }
	[data-outline-color]  { outline-color: attr(data-outline-color type(<color>)); }
	[data-outline-offset] { outline-offset: attr(data-outline-offset px); }
	[data-outline-width]:not([data-outline-style]) { outline-style: solid; }

	[data-gap] { gap: attr(data-gap rem); }
	[data-row-gap] { row-gap: attr(data-row-gap rem); }
	[data-column-gap] { column-gap: attr(data-column-gap rem); }
	[data-flex-basis] { flex-basis: attr(data-flex-basis rem); }
	[data-flex-grow] { flex-grow: attr(data-flex-grow type(<number>)); }
	[data-flex-shrink] { flex-shrink: attr(data-flex-shrink type(<number>)); }
	[data-column-span] { grid-column: span attr(data-column-span type(<integer>)); }
	[data-row-span] { grid-row: span attr(data-row-span type(<integer>)); }
	[data-grid-columns] { grid-template-columns: repeat(attr(data-grid-columns type(<integer>)), 1fr); }
	[data-grid-rows] { grid-template-rows: repeat(attr(data-grid-rows type(<integer>)), 1fr); }
	[data-grid-area] { grid-area: attr(data-grid-area type(<custom-ident>)); }

	[data-font-size] { font-size: attr(data-font-size rem); }
	[data-font-family] { font-family: attr(data-font-family type(<custom-ident>)); }
	[data-font-weight] { font-weight: attr(data-font-weight type(<number>)); }
	[data-line-height] { line-height: attr(data-line-height type(<number>)); }
	[data-letter-spacing] { letter-spacing: attr(data-letter-spacing em); }
	[data-word-spacing] { word-spacing: attr(data-word-spacing em); }
	[data-text-transform] { text-transform: attr(data-text-transform type(<custom-ident>)); }
	[data-text-decoration-thickness] { text-decoration-thickness: attr(data-text-decoration-thickness px); }
	[data-text-underline-offset] { text-underline-offset: attr(data-text-underline-offset px); }
	[data-text-indent] { text-indent: attr(data-text-indent rem); }

	/* scroll margin */
	[data-scroll-margin]        { scroll-margin: attr(data-scroll-margin px); }
	[data-scroll-margin-block]  { scroll-margin-block: attr(data-scroll-margin-block px); }
	[data-scroll-margin-inline] { scroll-margin-inline: attr(data-scroll-margin-inline px); }
	[data-scroll-margin-block-start] { scroll-margin-block-start: attr(data-scroll-margin-block-start px); }
	[data-scroll-margin-block-end] { scroll-margin-block-end: attr(data-scroll-margin-block-end px); }
	[data-scroll-margin-inline-start] { scroll-margin-inline-start: attr(data-scroll-margin-inline-start px); }
	[data-scroll-margin-inline-end] { scroll-margin-inline-end: attr(data-scroll-margin-inline-end px);}

	/* scroll padding */
	[data-scroll-padding]        { scroll-padding: attr(data-scroll-padding px); }
	[data-scroll-padding-block]  { scroll-padding-block: attr(data-scroll-padding-block px); }
	[data-scroll-padding-inline] { scroll-padding-inline: attr(data-scroll-padding-inline px); }
	[data-scroll-padding-block-start] { scroll-padding-block-start: attr(data-scroll-padding-block-start px); }
	[data-scroll-padding-block-end] { scroll-padding-block-end: attr(data-scroll-padding-block-end px); }
	[data-scroll-padding-inline-start] { scroll-padding-inline-start: attr(data-scroll-padding-inline-start px); }
	[data-scroll-padding-inline-end] { scroll-padding-inline-end: attr(data-scroll-padding-inline-end px); }

	[data-rotate] { rotate: attr(data-rotate deg); }
	[data-scale] { scale: attr(data-scale type(<number>)); }
	[data-opacity] { opacity: attr(data-opacity type(<number>)); }
	[data-color] { color: attr(data-color type(<color>)); }
	[data-background-color] { background-color: attr(data-background-color type(<color>)); }
	[data-accent-color] { accent-color: attr(data-accent-color type(<color>)); }
	[data-z-index] { z-index: attr(data-z-index type(<integer>)); }

	[data-animation-duration] { animation-duration: attr(data-animation-duration ms); }
	[data-transition-duration] { transition-duration: attr(data-transition-duration ms, 0); }

	/* Filters — single-property, non-composed (last one wins if multiple are present) */
	[data-filter-blur] { filter: blur(attr(data-filter-blur px)); }
	[data-filter-brightness] { filter: brightness(attr(data-filter-brightness type(<number>))); }
	[data-filter-contrast] { filter: contrast(attr(data-filter-contrast type(<number>))); }
	[data-filter-grayscale] { filter: grayscale(attr(data-filter-grayscale type(<number>))); }
	[data-filter-hue-rotate] { filter: hue-rotate(attr(data-filter-hue-rotate deg)); }
	[data-filter-invert] { filter: invert(attr(data-filter-invert type(<number>))); }
	[data-filter-opacity] { filter: opacity(attr(data-filter-opacity type(<number>))); }
	[data-filter-saturate] { filter: saturate(attr(data-filter-saturate type(<number>))); }
	[data-filter-sepia] { filter: sepia(attr(data-filter-sepia type(<number>))); }
}

@property --aegis-font {
		syntax: "<custom-ident> | <string>";
		inherits: true;
		initial-value: system-ui;
	}

@property --aegis-btn-border-radius {
		syntax: "<length>";
		inherits: true;
		initial-value: 5px;
	}

@property --aegis-btn-border-width {
		syntax: "<length>";
		inherits: true;
		initial-value: 0px;
	}

@property --aegis-color-light {
		syntax: "<color>";
		inherits: true;
		initial-value: #212529;
	}

@property --aegis-color-dark {
		syntax: "<color>";
		inherits: true;
		initial-value: #f8f9fa;
	}

@property --aegis-bg-light {
		syntax: "<color>";
		inherits: true;
		initial-value: #f8f9fa;
	}

@property --aegis-bg-dark {
		syntax: "<color>";
		inherits: true;
		initial-value: #212529;
	}

@property --aegis-border-color-light {
		syntax: "<color>";
		inherits: true;
		initial-value: #dee2e6;
	}

@property --aegis-border-color-dark {
		syntax: "<color>";
		inherits: true;
		initial-value: #495057;
	}

@property --aegis-border-radius {
		syntax: "<length>";
		inherits: true;
		initial-value: 8px;
	}

@property --aegis-btn-primary {
		syntax: "<color>";
		inherits: true;
		initial-value: #0d6efd;
	}

@property --aegis-btn-primary-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #0a58ca;
	}

@property --aegis-btn-primary-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #084298;
	}

@property --aegis-btn-primary-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-secondary {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-secondary-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #495057;
	}

@property --aegis-btn-secondary-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #343a40;
	}

@property --aegis-btn-success {
		syntax: "<color>";
		inherits: true;
		initial-value: #198754;
	}

@property --aegis-btn-success-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #146c43;
	}

@property --aegis-btn-success-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #0f5132;
	}

@property --aegis-btn-success-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-info {
		syntax: "<color>";
		inherits: true;
		initial-value: #0dcaf0;
	}

@property --aegis-btn-info-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #087990;
	}

@property --aegis-btn-info-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #0aa2c0;
	}

@property --aegis-btn-info-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-warning {
		syntax: "<color>";
		inherits: true;
		initial-value: #ffc107;
	}

@property --aegis-btn-warning-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #cc9a06;
	}

@property --aegis-btn-warning-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #997404;
	}

@property --aegis-btn-warning-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-danger {
		syntax: "<color>";
		inherits: true;
		initial-value: #dc3545;
	}

@property --aegis-btn-danger-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #b02a37;
	}

@property --aegis-btn-danger-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #842029;
	}

@property --aegis-btn-danger-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-dark {
		syntax: "<color>";
		inherits: true;
		initial-value: #212529;
	}

@property --aegis-btn-dark-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #495057;
	}

@property --aegis-btn-dark-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #343a40;
	}

@property --aegis-btn-dark-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-light {
		syntax: "<color>";
		inherits: true;
		initial-value: #f8f9fa;
	}

@property --aegis-btn-light-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: #e9ecef;
	}

@property --aegis-btn-light-active {
		syntax: "<color>";
		inherits: true;
		initial-value: #dee2e6;
	}

@property --aegis-btn-light-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-btn-link {
		syntax: "<color>";
		inherits: true;
		initial-value: transparent;
	}

@property --aegis-btn-link-hover {
		syntax: "<color>";
		inherits: true;
		initial-value: transparent;
	}

@property --aegis-btn-link-active {
		syntax: "<color>";
		inherits: true;
		initial-value: transparent;
	}

@property --aegis-btn-link-disabled {
		syntax: "<color>";
		inherits: true;
		initial-value: #6c757d;
	}

@property --aegis-link-color {
		syntax: "<color>";
		inherits: true;
		initial-value: LinkText;
	}

@property --aegis-scrollbar-color {
		syntax: "<color>";
		inherits: true;
		initial-value: #0d6efd;
	}

@property --aegis-scrollbar-track {
		syntax: "<color>";
		inherits: true;
		initial-value: #212529;
	}

@property --aegis-scrollbar-width {
		syntax: "<custom-ident>";
		inherits: true;
		initial-value: auto;
	}

@property --aegis-blink-speed {
		syntax: "<time>";
		inherits: true;
		initial-value: 200ms;
	}

@property --aegis-fast-speed {
		syntax: "<time>";
		inherits: true;
		initial-value: 400ms;
	}

@property --aegis-normal-speed {
		syntax: "<time>";
		inherits: true;
		initial-value: 600ms;
	}

@property --aegis-slow-speed {
		syntax: "<time>";
		inherits: true;
		initial-value: 800ms;
	}

@property --aegis-crawl-speed {
		syntax: "<time>";
		inherits: true;
		initial-value: 1200ms;
	}

@property --aegis-btn-disabled-opacity {
		syntax: "<number>";
		inherits: true;
		initial-value: 0.65;
	}

@property --aegis-btn-disabled-saturation {
		syntax: "<percentage>";
		inherits: true;
		initial-value: 50%;
	}

@property --aegis-btn-disabled-brightness {
		syntax: "<percentage>";
		inherits: true;
		initial-value: 90%;
	}

@layer reset.aegisjsproject {
	:root {
		color-scheme: light dark;
		interpolate-size: allow-keywords;
		-webkit-text-size-adjust: none;
		text-size-adjust: none;
	}

	body {
		margin: 0;
		hanging-punctuation: first last;
		-webkit-font-smoothing: antialiased;
	}

	*, ::before, *::after {
		box-sizing: border-box;
		transition-behavior: allow-discrete;
	}

	h1, h2, h3, h4, h5, h6 {
		text-wrap: balance;
	}

	p {
		text-wrap: pretty;
	}

	p, h1, h2, h3, h4, h5, h6 {
		overflow-wrap: break-word;
	}

	input, button, textarea, select {
		font: inherit;
		color: inherit;
	}
}

@layer base.aegisjsproject.scrollbar {
	:root {
		scrollbar-color: var(--aegis-scrollbar-color, #0d6efd) var(--aegis-scrollbar-track, #212529);
		scrollbar-width: var(----aegis-scrollbar-width, auto);
	}
}

@layer base.aegisjsproject.scrollbar {
	@supports not (scrollbar-color: currentColor transparent) {
		::-webkit-scrollbar {
			display: block;
		}

		::-webkit-scrollbar-thumb {
			background-color: var(--aegis-scrollbar-color, #0d6efd);
		}

		::-webkit-scrollbar-track {
			background-color: var(--aegis-scrollbar-track, #212529);
		}
	}
}

@layer component.aegisjsproject.status-box {
	.status-box {
		padding: 1.2em;
		border: 1px dashed currentColor;
		text-align: center;
		margin-top: 0.7em;
		border-radius: 8px;
	}

	.status-box.alert, .status-box.error {
		color: var(--alert-color, #6f0606);
		background-color: var(--alert-background, #e88a8a);
	}

	.status-box.warn {
		color: var(--warn-color, #51430c);
		background-color: var(--warn-background, #f0d155);
	}

	.status-box.info {
		color: var(--info-color, #555553);
		background-color: var(--info-background, #d2d2d2);
	}

	.status-box.success {
		color: var(--success-color, #1d4f01);
		background-color: var(--success-background, #8cee69);
	}
}

@layer base.aegisjsproject.text {
	.text-align-left {
		text-align: left;
	}

	.text-align-right {
		text-align: right;
	}

	.text-align-center {
		text-align: center;
	}

	.text-align-justify {
		text-align: justify;
	}

	.text-align-justify-all {
		text-align: justify-all;
	}

	.text-align-start {
		text-align: start;
	}

	.text-align-end {
		text-align: end;
	}

	.text-decoration-solid {
		text-decoration-style: solid;
	}

	.text-decoration-wavy {
		text-decoration-style: wavy;
	}

	.text-decoration-dotted {
		text-decoration-style: dotted;
	}

	.text-decoration-dashed {
		text-decoration-style: dashed;
	}

	.text-decoration-double {
		text-decoration-style: double;
	}

	.no-text-decoration, .no-text-decoration * {
		text-decoration: none;
	}

	.underline {
		text-decoration-line: underline;
	}

	.overline {
		text-decoration-line: overline;
	}

	.line-through {
		text-decoration-line: line-through;
	}

	.optimize-speed {
		text-rendering: optimizeSpeed;
	}

	.optimize-legibility {
		text-rendering: optimizeLegibility;
	}

	.geometric-precision {
		text-rendering: geometricPrecision;
	}

	.capitalize {
		text-transform: capitalize;
	}

	.uppercase {
		text-transform: uppercase;
	}

	.lowercase {
		text-transform: lowercase;
	}

	.center, .align-center {
		text-align: center;
	}

	.align-left {
		text-align: left;
	}

	.align-right {
		text-align: right;
	}

	.indent {
		text-indent: var(--indent, 4ch);
	}

	.indent-all {
		text-indent: var(--indent, 4ch) each-line;
	}

	.indent-hanging {
		text-indent: var(--indent, 4ch) hanging;
	}
}

@layer utilities.aegisjsproject.animations {
	.transform-origin-center {
		transform-origin: center;
	}

	.transform-origin-top {
		transform-origin: top;
	}

	.transform-origin-bottom {
		transform-origin: bottom;
	}

	.transform-origin-left {
		transform-origin: left;
	}

	.transform-origin-right {
		transform-origin: right;
	}

	.transform-origin-top-center {
		transform-origin: top center;
	}

	.transform-origin-top-left {
		transform-origin: top left;
	}

	.transform-origin-top-right {
		transform-origin: top right;
	}

	.transform-origin-bottom-left {
		transform-origin: bottom left;
	}

	.transform-origin-bottom-right {
		transform-origin: bottom right;
	}
}

@layer utilities.aegisjsproject.animations {
	.transition-linear {
		transition-timing-function: linear;
	}

	.transition-ease {
		transition-timing-function: ease;
	}

	.transition-ease-in {
		transition-timing-function: ease-in;
	}

	.transition-ease-out {
		transition-timing-function: ease-out;
	}

	.transition-ease-in-out {
		transition-timing-function: ease-in-out;
	}

	.transition-speed-blink {
		transition-duration: var(--aegis-blink-speed, 200ms);
	}

	.transition-speed-fast {
		transition-duration: var(--aegis-fast-speed, 400ms);
	}

	.transition-speed-normal {
		transition-duration: var(--aegis-normal-speed, 600ms);
	}

	.transition-speed-slow {
		transition-duration: var(--aegis-slow-speed, 800ms);
	}

	.transition-speed-crawl {
		transition-duration: var(--aegis-crawl-speed, 1600ms);
	}

	.transition-none {
		transition-property: none;
	}

	.transition-all {
		transition-property: all;
	}

	.transition-transform {
		transition-property: transform;
	}

	.transition-opacity {
		transition-property: opacity;
	}

	.transition-filter {
		transition-property: filter;
	}

	.transition-background-position {
		transition-property: background-position;
	}

	.transition-top {
		transition-property: top;
	}

	.transition-right {
		transition-property: right;
	}

	.transition-bottom {
		transition-property: bottom;
	}

	.transition-left {
		transition-property: left;
	}

	.transition-margin {
		transition-property: margin;
	}

	.transition-padding {
		transition-property: padding;
	}

	.transtion-color {
		transition-property: color;
	}

	.transition-background-color {
		transition-property: background-color;
	}

	.transition-color {
		transition-property: color;
	}

	.transition-background {
		transition-property: background;
	}


	.transition-width {
		transition-property: width;
	}

	.transition-height {
		transition-property: height;
	}

	.transition-max-width {
		transition-property: max-width;
	}

	.transition-max-height {
		transition-property: max-height;
	}

	.transition-stagger > :nth-child(5n+1) {
		transition-delay: calc(1 * var(--aegis-transition-stagger, 200ms));
	}

	.transition-stagger > :nth-child(5n+2) {
		transition-delay: calc(2 * var(--aegis-transition-stagger, 200ms));
	}

	.transition-stagger > :nth-child(5n+3) {
		transition-delay: calc(3 * var(--aegis-transition-stagger, 200ms));
	}

	.transition-stagger > :nth-child(5n+4) {
		transition-delay: calc(4 * var(--aegis-transition-stagger, 200ms));
	}

	.transition-stagger > :nth-child(5n+5) {
		transition-delay: calc(5 * var(--aegis-transition-stagger, 200ms));
	}
}

@layer utilities.aegisjsproject {
	.clearfix::after {
		clear: both;
		content: '';
		display: block;
	}

	.shadow {
		box-shadow: var(--shadow-x, 0) var(--shadow-y, 2px) var(--shadow-blur, 10px) var(--shadow-spread, 0) var(--shadow-color, rgba(0,0,0,.2));
	}

	.shadow-dark {
		box-shadow: var(--shadow-x, 0) var(--shadow-y, 2px) var(--shadow-blur, 10px) var(--shadow-spread, 0) var(--shadow-dark-color, rgba(0,0,0,.6));
	}

	.icon, .icon * {
		color: inherit;
		max-width: 100%;
		max-height: 100%;
		width: var(--icon-size, 1em);
		height: var(--icon-size, 1em);
		vertical-align: middle;
	}

	.round {
		border-radius: 50%;
	}
}

@layer component.aegisjsproject {
	.card {
		border: var(--card-border, 1px solid #ccc);
		border-radius: var(--card-radius, 2px);
		background: var(--card-bg, var(--primary-color, white));
		padding: var(--card-padding, 0.7em);
	}

	.custom-element:not(:defined) .if-defined[slot], .custom-element.if-defined:not(:defined) {
		display: none;
	}
}