diff --git a/panels/Elite_Dangerous/index.html b/panels/Elite_Dangerous/index.html
new file mode 100644
index 0000000..2d230d9
--- /dev/null
+++ b/panels/Elite_Dangerous/index.html
@@ -0,0 +1,913 @@
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
+
Frame Shift Drive
+
+
+ Toggle FSD
+
+
+
+
+
+
+
+
Mode
+
Analysis
+
+
Combat
+
+
+
Hardpoints
+
Retract
+
+
Deploy
+
+
+
+
+
+
+
+
Flight Assist
+
+
+
+ Rotational Correction
+
+
+
+
+
+
+
Lights
+
+
+ Off
+ On
+
+
+
+
Night Vis.
+
+
+ Off
+ On
+
+
+
+
+
+
Silent Running
+
+
+ Off
+ On
+
+
+
+
+
+
JETTISON CARGO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panels/Elite_Dangerous/input.css b/panels/Elite_Dangerous/input.css
new file mode 100644
index 0000000..6056744
--- /dev/null
+++ b/panels/Elite_Dangerous/input.css
@@ -0,0 +1,253 @@
+@import url(https://fonts.bunny.net/css?family=orbitron:400,600,800);
+@layer theme, utilities;
+@import "tailwindcss/theme.css" layer(theme);
+@import "tailwindcss/utilities.css" layer(utilities);
+
+@layer theme {
+ /* :root {
+ } */
+}
+
+html,
+body,
+#panel-html__body {
+ @apply relative;
+}
+
+#panel-html__body {
+ --font-sans: "Orbitron", sans-serif;
+ @apply font-sans text-sm font-light tracking-wide bg-gray-900 text-slate-50 size-full;
+
+ * {
+ box-sizing: border-box;
+ }
+}
+
+.group-left,
+.group-middle,
+.group-right {
+ @apply grid gap-2 h-fit;
+}
+
+.ed-panel {
+ @apply w-full p-2 border h-fit rounded-b-xl;
+
+ h3,
+ h4 {
+ @apply m-0 mb-1 font-extralight;
+ }
+
+ h3 {
+ @apply text-base;
+ }
+
+ h4 {
+ @apply text-sm;
+ }
+
+ &.pnl__blue {
+ @apply border-sky-300 bg-sky-500/30;
+
+ h3,
+ h4 {
+ @apply text-sky-100;
+
+ text-shadow: 0 0 0.2em var(--color-sky-300);
+ }
+ }
+
+ &.pnl__yellow {
+ @apply border-amber-300 bg-amber-500/30;
+
+ h3,
+ h4 {
+ @apply text-amber-100;
+
+ text-shadow: 0 0 0.2em var(--color-amber-300);
+ }
+ }
+
+ &.pnl__orange {
+ @apply border-orange-300 bg-orange-500/30;
+
+ h3,
+ h4 {
+ @apply text-orange-100;
+
+ text-shadow: 0 0 0.2em var(--color-orange-300);
+ }
+ }
+
+ &.pnl__red {
+ @apply border-rose-300 bg-rose-500/30;
+
+ h3,
+ h4 {
+ @apply text-rose-100;
+
+ text-shadow: 0 0 0.2em var(--color-rose-400);
+ }
+ }
+
+ &.pnl__white {
+ @apply border-white bg-white/20;
+
+ h3,
+ h4 {
+ @apply text-white;
+
+ text-shadow: 0 0 0.2em var(--color-white);
+ }
+ }
+}
+
+.ed-button {
+ @apply flex items-center justify-center px-4 py-2 text-base text-center rounded-lg border-3;
+
+ svg {
+ @apply block !size-5;
+ }
+
+ &.btn__vertical {
+ @apply flex-col;
+ }
+
+ &.btn__filled {
+ @apply text-gray-900;
+ }
+
+ &.btn__orange {
+ @apply text-orange-100 border-orange-400 bg-orange-500/50;
+
+ &.btn__filled {
+ @apply bg-orange-400;
+ }
+ }
+
+ &.btn__yellow {
+ @apply text-orange-100 border-amber-400 bg-amber-500/50;
+
+ &.btn__filled {
+ @apply bg-amber-400;
+ }
+ }
+
+ &.btn__blue {
+ @apply border-sky-400 bg-sky-500/50 text-sky-100;
+
+ &.btn__filled {
+ @apply bg-sky-500;
+ }
+ }
+
+ &.btn__red {
+ @apply border-rose-500 bg-rose-600/50 text-rose-100;
+
+ &.btn__filled {
+ @apply bg-rose-600;
+ }
+ }
+
+ &.btn__white {
+ @apply border-white bg-white/30;
+
+ &.btn__filled {
+ @apply bg-white;
+ }
+ }
+}
+
+.ed-button-group__horizontal {
+ @apply grid divide-x;
+
+ .ed-button {
+ @apply rounded-none;
+
+ &:first-child {
+ @apply rounded-l-lg;
+ }
+
+ &:last-child {
+ @apply rounded-r-lg;
+ }
+ }
+}
+
+.ed-button-group__vertical {
+ @apply grid divide-y;
+
+ .ed-button {
+ @apply rounded-none;
+
+ &:first-child {
+ @apply rounded-t-lg;
+ }
+
+ &:last-child {
+ @apply rounded-b-lg;
+ }
+ }
+}
+
+.ed-toggle {
+ .toggle__wrapper {
+ @apply relative p-1.5 border-2 rounded-full size-full;
+ }
+
+ .toggle__indicator {
+ @apply absolute transition rounded-full aspect-square;
+ }
+
+ &.toggle__horizontal {
+ @apply w-20 h-12;
+
+ .toggle__indicator {
+ @apply left-1.5 translate-x-0 h-[calc(100%-.75rem)];
+ }
+
+ &[active] .toggle__indicator {
+ @apply translate-x-full;
+ }
+ }
+
+ &.toggle__vertical {
+ @apply w-12 h-20;
+
+ .toggle__indicator {
+ @apply top-1.5 translate-y-0 w-[calc(100%-.75rem)];
+ }
+ &[active] .toggle__indicator {
+ @apply translate-y-full;
+ }
+ }
+}
+
+dialog[open] {
+ @apply absolute -translate-x-1/2 -translate-y-1/2 bg-transparent border-0 outline-0 top-1/2 left-1/2;
+ @apply backdrop:absolute backdrop:bg-black/50;
+
+ .dialog__close {
+ @apply absolute text-white top-3 right-3;
+ }
+}
+
+#clock {
+ @apply relative flex pr-16 text-3xl w-fit;
+
+ i {
+ @apply pl-1 not-italic;
+ }
+
+ .hours-minutes,
+ .seconds {
+ @apply flex gap-1;
+ }
+
+ span {
+ @apply inline-block w-[.75em] text-center;
+ }
+
+ sup {
+ @apply absolute right-0 w-16 pl-2 text-lg text-left opacity-80;
+ }
+}
diff --git a/panels/Elite_Dangerous/output.css b/panels/Elite_Dangerous/output.css
new file mode 100644
index 0000000..4446c1f
--- /dev/null
+++ b/panels/Elite_Dangerous/output.css
@@ -0,0 +1,688 @@
+/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */
+@import url(https://fonts.bunny.net/css?family=orbitron:400,600,800);
+@layer properties;
+@layer theme, utilities;
+@layer theme {
+ :root, :host {
+ --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
+ 'Noto Color Emoji';
+ --color-red-400: oklch(70.4% 0.191 22.216);
+ --color-red-500: oklch(63.7% 0.237 25.331);
+ --color-red-600: oklch(57.7% 0.245 27.325);
+ --color-orange-100: oklch(95.4% 0.038 75.164);
+ --color-orange-300: oklch(83.7% 0.128 66.29);
+ --color-orange-400: oklch(75% 0.183 55.934);
+ --color-orange-500: oklch(70.5% 0.213 47.604);
+ --color-amber-100: oklch(96.2% 0.059 95.617);
+ --color-amber-300: oklch(87.9% 0.169 91.605);
+ --color-amber-400: oklch(82.8% 0.189 84.429);
+ --color-amber-500: oklch(76.9% 0.188 70.08);
+ --color-lime-400: oklch(84.1% 0.238 128.85);
+ --color-lime-600: oklch(64.8% 0.2 131.684);
+ --color-sky-100: oklch(95.1% 0.026 236.824);
+ --color-sky-300: oklch(82.8% 0.111 230.318);
+ --color-sky-400: oklch(74.6% 0.16 232.661);
+ --color-sky-500: oklch(68.5% 0.169 237.323);
+ --color-sky-600: oklch(58.8% 0.158 241.966);
+ --color-sky-900: oklch(39.1% 0.09 240.876);
+ --color-rose-100: oklch(94.1% 0.03 12.58);
+ --color-rose-300: oklch(81% 0.117 11.638);
+ --color-rose-400: oklch(71.2% 0.194 13.428);
+ --color-rose-500: oklch(64.5% 0.246 16.439);
+ --color-rose-600: oklch(58.6% 0.253 17.585);
+ --color-slate-50: oklch(98.4% 0.003 247.858);
+ --color-slate-950: oklch(12.9% 0.042 264.695);
+ --color-gray-800: oklch(27.8% 0.033 256.848);
+ --color-gray-900: oklch(21% 0.034 264.665);
+ --color-black: #000;
+ --color-white: #fff;
+ --spacing: 0.25rem;
+ --text-xs: 0.75rem;
+ --text-xs--line-height: calc(1 / 0.75);
+ --text-sm: 0.875rem;
+ --text-sm--line-height: calc(1.25 / 0.875);
+ --text-base: 1rem;
+ --text-base--line-height: calc(1.5 / 1);
+ --text-lg: 1.125rem;
+ --text-lg--line-height: calc(1.75 / 1.125);
+ --text-3xl: 1.875rem;
+ --text-3xl--line-height: calc(2.25 / 1.875);
+ --font-weight-extralight: 200;
+ --font-weight-light: 300;
+ --tracking-wide: 0.025em;
+ --radius-lg: 0.5rem;
+ --radius-xl: 0.75rem;
+ --default-transition-duration: 150ms;
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+}
+@layer utilities {
+ .absolute {
+ position: absolute;
+ }
+ .relative {
+ position: relative;
+ }
+ .inset-0 {
+ inset: calc(var(--spacing) * 0);
+ }
+ .right-0 {
+ right: calc(var(--spacing) * 0);
+ }
+ .bottom-full {
+ bottom: 100%;
+ }
+ .m-0 {
+ margin: calc(var(--spacing) * 0);
+ }
+ .mt-4 {
+ margin-top: calc(var(--spacing) * 4);
+ }
+ .flex {
+ display: flex;
+ }
+ .grid {
+ display: grid;
+ }
+ .aspect-square {
+ aspect-ratio: 1 / 1;
+ }
+ .size-8 {
+ width: calc(var(--spacing) * 8);
+ height: calc(var(--spacing) * 8);
+ }
+ .size-16 {
+ width: calc(var(--spacing) * 16);
+ height: calc(var(--spacing) * 16);
+ }
+ .size-full {
+ width: 100%;
+ height: 100%;
+ }
+ .h-28 {
+ height: calc(var(--spacing) * 28);
+ }
+ .h-full {
+ height: 100%;
+ }
+ .\!w-fit {
+ width: fit-content !important;
+ }
+ .w-28 {
+ width: calc(var(--spacing) * 28);
+ }
+ .w-fit {
+ width: fit-content;
+ }
+ .w-full {
+ width: 100%;
+ }
+ .grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+ .grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+ .grid-cols-\[1fr_2fr\] {
+ grid-template-columns: 1fr 2fr;
+ }
+ .grid-cols-\[1fr_2fr_1fr\] {
+ grid-template-columns: 1fr 2fr 1fr;
+ }
+ .grid-cols-\[2fr_1fr\] {
+ grid-template-columns: 2fr 1fr;
+ }
+ .grid-cols-\[3fr_1fr_1fr\] {
+ grid-template-columns: 3fr 1fr 1fr;
+ }
+ .grid-rows-3 {
+ grid-template-rows: repeat(3, minmax(0, 1fr));
+ }
+ .flex-col {
+ flex-direction: column;
+ }
+ .items-center {
+ align-items: center;
+ }
+ .items-end {
+ align-items: flex-end;
+ }
+ .\!justify-start {
+ justify-content: flex-start !important;
+ }
+ .justify-between {
+ justify-content: space-between;
+ }
+ .justify-center {
+ justify-content: center;
+ }
+ .justify-end {
+ justify-content: flex-end;
+ }
+ .justify-items-center {
+ justify-items: center;
+ }
+ .gap-2 {
+ gap: calc(var(--spacing) * 2);
+ }
+ .divide-x {
+ :where(& > :not(:last-child)) {
+ --tw-divide-x-reverse: 0;
+ border-inline-style: var(--tw-border-style);
+ border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));
+ border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
+ }
+ }
+ .rounded-full {
+ border-radius: calc(infinity * 1px);
+ }
+ .\!rounded-tl-none {
+ border-top-left-radius: 0 !important;
+ }
+ .\!rounded-tr-none {
+ border-top-right-radius: 0 !important;
+ }
+ .\!rounded-b-none {
+ border-bottom-right-radius: 0 !important;
+ border-bottom-left-radius: 0 !important;
+ }
+ .border-3 {
+ border-style: var(--tw-border-style);
+ border-width: 3px;
+ }
+ .border-lime-600 {
+ border-color: var(--color-lime-600);
+ }
+ .border-red-500 {
+ border-color: var(--color-red-500);
+ }
+ .border-red-600 {
+ border-color: var(--color-red-600);
+ }
+ .border-sky-600 {
+ border-color: var(--color-sky-600);
+ }
+ .border-white {
+ border-color: var(--color-white);
+ }
+ .\!bg-sky-900 {
+ background-color: var(--color-sky-900) !important;
+ }
+ .bg-lime-400 {
+ background-color: var(--color-lime-400);
+ }
+ .bg-lime-400\/30 {
+ background-color: color-mix(in srgb, oklch(84.1% 0.238 128.85) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-lime-400) 30%, transparent);
+ }
+ }
+ .bg-red-400 {
+ background-color: var(--color-red-400);
+ }
+ .bg-red-400\/30 {
+ background-color: color-mix(in srgb, oklch(70.4% 0.191 22.216) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-red-400) 30%, transparent);
+ }
+ }
+ .bg-red-500\/80 {
+ background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 80%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-red-500) 80%, transparent);
+ }
+ }
+ .bg-sky-400 {
+ background-color: var(--color-sky-400);
+ }
+ .bg-sky-400\/30 {
+ background-color: color-mix(in srgb, oklch(74.6% 0.16 232.661) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-sky-400) 30%, transparent);
+ }
+ }
+ .bg-slate-950 {
+ background-color: var(--color-slate-950);
+ }
+ .bg-white {
+ background-color: var(--color-white);
+ }
+ .bg-white\/30 {
+ background-color: color-mix(in srgb, #fff 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-white) 30%, transparent);
+ }
+ }
+ .\!p-0 {
+ padding: calc(var(--spacing) * 0) !important;
+ }
+ .\!p-4 {
+ padding: calc(var(--spacing) * 4) !important;
+ }
+ .p-2 {
+ padding: calc(var(--spacing) * 2);
+ }
+ .\!px-2 {
+ padding-inline: calc(var(--spacing) * 2) !important;
+ }
+ .\!pt-8 {
+ padding-top: calc(var(--spacing) * 8) !important;
+ }
+ .text-center {
+ text-align: center;
+ }
+ .text-left {
+ text-align: left;
+ }
+ .text-right {
+ text-align: right;
+ }
+ .text-base {
+ font-size: var(--text-base);
+ line-height: var(--tw-leading, var(--text-base--line-height));
+ }
+ .text-xs {
+ font-size: var(--text-xs);
+ line-height: var(--tw-leading, var(--text-xs--line-height));
+ }
+ .\!text-gray-800 {
+ color: var(--color-gray-800) !important;
+ }
+ .text-red-400 {
+ color: var(--color-red-400);
+ }
+ .text-white {
+ color: var(--color-white);
+ }
+ .opacity-80 {
+ opacity: 80%;
+ }
+ .opacity-90 {
+ opacity: 90%;
+ }
+}
+@layer theme;
+html, body, #panel-html__body {
+ position: relative;
+}
+#panel-html__body {
+ --font-sans: "Orbitron", sans-serif;
+ width: 100%;
+ height: 100%;
+ background-color: var(--color-gray-900);
+ font-family: var(--font-sans);
+ font-size: var(--text-sm);
+ line-height: var(--tw-leading, var(--text-sm--line-height));
+ --tw-font-weight: var(--font-weight-light);
+ font-weight: var(--font-weight-light);
+ --tw-tracking: var(--tracking-wide);
+ letter-spacing: var(--tracking-wide);
+ color: var(--color-slate-50);
+ * {
+ box-sizing: border-box;
+ }
+}
+.group-left, .group-middle, .group-right {
+ display: grid;
+ height: fit-content;
+ gap: calc(var(--spacing) * 2);
+}
+.ed-panel {
+ height: fit-content;
+ width: 100%;
+ border-bottom-right-radius: var(--radius-xl);
+ border-bottom-left-radius: var(--radius-xl);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ padding: calc(var(--spacing) * 2);
+ h3, h4 {
+ margin: calc(var(--spacing) * 0);
+ margin-bottom: calc(var(--spacing) * 1);
+ --tw-font-weight: var(--font-weight-extralight);
+ font-weight: var(--font-weight-extralight);
+ }
+ h3 {
+ font-size: var(--text-base);
+ line-height: var(--tw-leading, var(--text-base--line-height));
+ }
+ h4 {
+ font-size: var(--text-sm);
+ line-height: var(--tw-leading, var(--text-sm--line-height));
+ }
+ &.pnl__blue {
+ border-color: var(--color-sky-300);
+ background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-sky-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-sky-100);
+ text-shadow: 0 0 0.2em var(--color-sky-300);
+ }
+ }
+ &.pnl__yellow {
+ border-color: var(--color-amber-300);
+ background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-amber-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-amber-100);
+ text-shadow: 0 0 0.2em var(--color-amber-300);
+ }
+ }
+ &.pnl__orange {
+ border-color: var(--color-orange-300);
+ background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-orange-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-orange-100);
+ text-shadow: 0 0 0.2em var(--color-orange-300);
+ }
+ }
+ &.pnl__red {
+ border-color: var(--color-rose-300);
+ background-color: color-mix(in srgb, oklch(64.5% 0.246 16.439) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-rose-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-rose-100);
+ text-shadow: 0 0 0.2em var(--color-rose-400);
+ }
+ }
+ &.pnl__white {
+ border-color: var(--color-white);
+ background-color: color-mix(in srgb, #fff 20%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-white);
+ text-shadow: 0 0 0.2em var(--color-white);
+ }
+ }
+}
+.ed-button {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: var(--radius-lg);
+ border-style: var(--tw-border-style);
+ border-width: 3px;
+ padding-inline: calc(var(--spacing) * 4);
+ padding-block: calc(var(--spacing) * 2);
+ text-align: center;
+ font-size: var(--text-base);
+ line-height: var(--tw-leading, var(--text-base--line-height));
+ svg {
+ display: block;
+ width: calc(var(--spacing) * 5) !important;
+ height: calc(var(--spacing) * 5) !important;
+ }
+ &.btn__vertical {
+ flex-direction: column;
+ }
+ &.btn__filled {
+ color: var(--color-gray-900);
+ }
+ &.btn__orange {
+ border-color: var(--color-orange-400);
+ background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-orange-500) 50%, transparent);
+ }
+ color: var(--color-orange-100);
+ &.btn__filled {
+ background-color: var(--color-orange-400);
+ }
+ }
+ &.btn__yellow {
+ border-color: var(--color-amber-400);
+ background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-amber-500) 50%, transparent);
+ }
+ color: var(--color-orange-100);
+ &.btn__filled {
+ background-color: var(--color-amber-400);
+ }
+ }
+ &.btn__blue {
+ border-color: var(--color-sky-400);
+ background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-sky-500) 50%, transparent);
+ }
+ color: var(--color-sky-100);
+ &.btn__filled {
+ background-color: var(--color-sky-500);
+ }
+ }
+ &.btn__red {
+ border-color: var(--color-rose-500);
+ background-color: color-mix(in srgb, oklch(58.6% 0.253 17.585) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-rose-600) 50%, transparent);
+ }
+ color: var(--color-rose-100);
+ &.btn__filled {
+ background-color: var(--color-rose-600);
+ }
+ }
+ &.btn__white {
+ border-color: var(--color-white);
+ background-color: color-mix(in srgb, #fff 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-white) 30%, transparent);
+ }
+ &.btn__filled {
+ background-color: var(--color-white);
+ }
+ }
+}
+.ed-button-group__horizontal {
+ display: grid;
+ :where(& > :not(:last-child)) {
+ --tw-divide-x-reverse: 0;
+ border-inline-style: var(--tw-border-style);
+ border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));
+ border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
+ }
+ .ed-button {
+ border-radius: 0;
+ &:first-child {
+ border-top-left-radius: var(--radius-lg);
+ border-bottom-left-radius: var(--radius-lg);
+ }
+ &:last-child {
+ border-top-right-radius: var(--radius-lg);
+ border-bottom-right-radius: var(--radius-lg);
+ }
+ }
+}
+.ed-button-group__vertical {
+ display: grid;
+ :where(& > :not(:last-child)) {
+ --tw-divide-y-reverse: 0;
+ border-bottom-style: var(--tw-border-style);
+ border-top-style: var(--tw-border-style);
+ border-top-width: calc(1px * var(--tw-divide-y-reverse));
+ border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
+ }
+ .ed-button {
+ border-radius: 0;
+ &:first-child {
+ border-top-left-radius: var(--radius-lg);
+ border-top-right-radius: var(--radius-lg);
+ }
+ &:last-child {
+ border-bottom-right-radius: var(--radius-lg);
+ border-bottom-left-radius: var(--radius-lg);
+ }
+ }
+}
+.ed-toggle {
+ .toggle__wrapper {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ border-radius: calc(infinity * 1px);
+ border-style: var(--tw-border-style);
+ border-width: 2px;
+ padding: calc(var(--spacing) * 1.5);
+ }
+ .toggle__indicator {
+ position: absolute;
+ aspect-ratio: 1 / 1;
+ border-radius: calc(infinity * 1px);
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+ &.toggle__horizontal {
+ height: calc(var(--spacing) * 12);
+ width: calc(var(--spacing) * 20);
+ .toggle__indicator {
+ left: calc(var(--spacing) * 1.5);
+ height: calc(100% - .75rem);
+ --tw-translate-x: calc(var(--spacing) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ &[active] .toggle__indicator {
+ --tw-translate-x: 100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ }
+ &.toggle__vertical {
+ height: calc(var(--spacing) * 20);
+ width: calc(var(--spacing) * 12);
+ .toggle__indicator {
+ top: calc(var(--spacing) * 1.5);
+ width: calc(100% - .75rem);
+ --tw-translate-y: calc(var(--spacing) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ &[active] .toggle__indicator {
+ --tw-translate-y: 100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ }
+}
+dialog[open] {
+ position: absolute;
+ top: calc(1/2 * 100%);
+ left: calc(1/2 * 100%);
+ --tw-translate-x: calc(calc(1/2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ border-style: var(--tw-border-style);
+ border-width: 0px;
+ background-color: transparent;
+ outline-style: var(--tw-outline-style);
+ outline-width: 0px;
+ &::backdrop {
+ background-color: color-mix(in srgb, #000 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
+ }
+ }
+ .dialog__close {
+ position: absolute;
+ top: calc(var(--spacing) * 3);
+ right: calc(var(--spacing) * 3);
+ color: var(--color-white);
+ }
+}
+#clock {
+ position: relative;
+ display: flex;
+ width: fit-content;
+ padding-right: calc(var(--spacing) * 16);
+ font-size: var(--text-3xl);
+ line-height: var(--tw-leading, var(--text-3xl--line-height));
+ i {
+ padding-left: calc(var(--spacing) * 1);
+ font-style: normal;
+ }
+ .hours-minutes, .seconds {
+ display: flex;
+ gap: calc(var(--spacing) * 1);
+ }
+ span {
+ display: inline-block;
+ width: .75em;
+ text-align: center;
+ }
+ sup {
+ position: absolute;
+ right: calc(var(--spacing) * 0);
+ width: calc(var(--spacing) * 16);
+ padding-left: calc(var(--spacing) * 2);
+ text-align: left;
+ font-size: var(--text-lg);
+ line-height: var(--tw-leading, var(--text-lg--line-height));
+ opacity: 80%;
+ }
+}
+@property --tw-divide-x-reverse {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-font-weight {
+ syntax: "*";
+ inherits: false;
+}
+@property --tw-tracking {
+ syntax: "*";
+ inherits: false;
+}
+@property --tw-divide-y-reverse {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-x {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-y {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-z {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-outline-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@layer properties {
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
+ *, ::before, ::after, ::backdrop {
+ --tw-divide-x-reverse: 0;
+ --tw-border-style: solid;
+ --tw-font-weight: initial;
+ --tw-tracking: initial;
+ --tw-divide-y-reverse: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-translate-z: 0;
+ --tw-outline-style: solid;
+ }
+ }
+}
diff --git a/panels/Elite_Dangerous/package-lock.json b/panels/Elite_Dangerous/package-lock.json
new file mode 100644
index 0000000..1fb3ab8
--- /dev/null
+++ b/panels/Elite_Dangerous/package-lock.json
@@ -0,0 +1,974 @@
+{
+ "name": "test_panel",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "test_panel",
+ "version": "1.0.0",
+ "license": "ISC",
+ "devDependencies": {
+ "@tailwindcss/cli": "^4.1.2",
+ "tailwindcss": "^4.1.2"
+ }
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@tailwindcss/cli": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.4.tgz",
+ "integrity": "sha512-gP05Qihh+cZ2FqD5fa0WJXx3KEk2YWUYv/RBKAyiOg0V4vYVDr/xlLc0sacpnVEXM45BVUR9U2hsESufYs6YTA==",
+ "dev": true,
+ "dependencies": {
+ "@parcel/watcher": "^2.5.1",
+ "@tailwindcss/node": "4.1.4",
+ "@tailwindcss/oxide": "4.1.4",
+ "enhanced-resolve": "^5.18.1",
+ "mri": "^1.2.0",
+ "picocolors": "^1.1.1",
+ "tailwindcss": "4.1.4"
+ },
+ "bin": {
+ "tailwindcss": "dist/index.mjs"
+ }
+ },
+ "node_modules/@tailwindcss/node": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.4.tgz",
+ "integrity": "sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==",
+ "dev": true,
+ "dependencies": {
+ "enhanced-resolve": "^5.18.1",
+ "jiti": "^2.4.2",
+ "lightningcss": "1.29.2",
+ "tailwindcss": "4.1.4"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.4.tgz",
+ "integrity": "sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.1.4",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.4",
+ "@tailwindcss/oxide-darwin-x64": "4.1.4",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.4",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.4",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.4",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.4",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.4",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.4",
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.4",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.4",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.4"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.4.tgz",
+ "integrity": "sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.4.tgz",
+ "integrity": "sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.4.tgz",
+ "integrity": "sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.4.tgz",
+ "integrity": "sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.4.tgz",
+ "integrity": "sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.4.tgz",
+ "integrity": "sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.4.tgz",
+ "integrity": "sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.4.tgz",
+ "integrity": "sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.4.tgz",
+ "integrity": "sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.4.tgz",
+ "integrity": "sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.0",
+ "@emnapi/runtime": "^1.4.0",
+ "@emnapi/wasi-threads": "^1.0.1",
+ "@napi-rs/wasm-runtime": "^0.2.8",
+ "@tybys/wasm-util": "^0.9.0",
+ "tslib": "^2.8.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.4.tgz",
+ "integrity": "sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.4.tgz",
+ "integrity": "sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
+ "dev": true,
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/lightningcss": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz",
+ "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==",
+ "dev": true,
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.29.2",
+ "lightningcss-darwin-x64": "1.29.2",
+ "lightningcss-freebsd-x64": "1.29.2",
+ "lightningcss-linux-arm-gnueabihf": "1.29.2",
+ "lightningcss-linux-arm64-gnu": "1.29.2",
+ "lightningcss-linux-arm64-musl": "1.29.2",
+ "lightningcss-linux-x64-gnu": "1.29.2",
+ "lightningcss-linux-x64-musl": "1.29.2",
+ "lightningcss-win32-arm64-msvc": "1.29.2",
+ "lightningcss-win32-x64-msvc": "1.29.2"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz",
+ "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz",
+ "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz",
+ "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz",
+ "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz",
+ "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz",
+ "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz",
+ "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz",
+ "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz",
+ "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz",
+ "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss/node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.4.tgz",
+ "integrity": "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==",
+ "dev": true
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ }
+ }
+}
diff --git a/panels/Elite_Dangerous/package.json b/panels/Elite_Dangerous/package.json
new file mode 100644
index 0000000..cf85d0c
--- /dev/null
+++ b/panels/Elite_Dangerous/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "test_panel",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "dev": "npx tailwindcss -i ./input.css -o ./output.css --watch"
+ },
+ "author": "",
+ "license": "ISC",
+ "devDependencies": {
+ "@tailwindcss/cli": "^4.1.2",
+ "tailwindcss": "^4.1.2"
+ }
+}
diff --git a/panels/Elite_Dangerous/panel.json b/panels/Elite_Dangerous/panel.json
new file mode 100644
index 0000000..54ebe8c
--- /dev/null
+++ b/panels/Elite_Dangerous/panel.json
@@ -0,0 +1,48 @@
+{
+ "dir": "",
+ "name": "Elite Dangerous",
+ "description": "A Semi Realistic button panel for Elite Dangerous, made by JaxxMoss.",
+ "aspectRatio": "16/10",
+ "macros": {
+ "CM__Chaff": "ED-CM-Chaff",
+ "CM__ECM": "ED-CM-ECM",
+ "CM__Heatsink": "ED-CM-Heat_Sink",
+ "CM__Shieldcell": "ED-CM-Schield_Cell",
+ "Camera__Pos1": "ED-Camera-Position1",
+ "Camera__Pos2": "ED-Camera-Position2",
+ "Camera__Suite": "ED-Camera-Suite",
+ "Comms__panel": "ED-Comms_Panel",
+ "External__panel": "ED-External_Panel",
+ "FSD__toggle": "ED-Toggle_FSD",
+ "Fighter__engage": "ED-Fighter-Engage",
+ "Fighter__hold": "ED-Fighter-Hold",
+ "Fighter__recall": "ED-Fighter-Recall",
+ "Fighter__wingman1": "ED-Fighter-Wingman1",
+ "Fighter__wingman2": "ED-Fighter-Wingman2",
+ "Fighter__wingman3": "ED-Fighter-Wingman3",
+ "Fighter_attack": "ED-Fighter-Attack",
+ "Fighter_defend": "ED-Fighter-Defend",
+ "Fighter_follow": "ED-Fighter-Follow",
+ "FlightAssist__toggle": "ED-Flight_Assist",
+ "Free__Camera": "ED-Camera-Free",
+ "Galaxy__map": "ED-Galaxy_Map",
+ "Hardpoints__toggle": "ED-Hardpoints_Switch",
+ "Hyper__Space": "ED-Hyperspace",
+ "Internal__panel": "ED-Internal_Panel",
+ "Jettison__Cargo": "ED-Jettison_Cargo",
+ "Lights__toggle": "ED-Flight_Assist",
+ "Mode__toggle": "ED-Mode_Switch",
+ "Next__Camera": "ED-Camera-Next",
+ "NightVis__toggle": "ED-Night_Vision",
+ "Previous__Camera": "ED-Camera-Previous",
+ "Roles__panel": "ED-Roles_Panel",
+ "Rotational__Correction": "ED-Rotational_Correction",
+ "Route__NextSystem": "ED-Route_Next_System",
+ "Scanner__DiscScan": "ED-Scanner_Discovery",
+ "Scanner__FSS": "ED-Scanner-FSS",
+ "SilentRunning__toggle": "ED-Silent_Running",
+ "Speed_0percent": "ED-0percent_Speed",
+ "Super__Cruise": "ED-Super_Cruise",
+ "System__map": "ED-System_Map"
+ }
+}
diff --git a/panels/Elite_Dangerous/tailwind.config.js b/panels/Elite_Dangerous/tailwind.config.js
new file mode 100644
index 0000000..2c1a5aa
--- /dev/null
+++ b/panels/Elite_Dangerous/tailwind.config.js
@@ -0,0 +1,17 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ "./index.html", // Ensure this path is correct
+ ],
+ theme: {
+ extend: {},
+ },
+ safelist: [
+ {
+ pattern: /^(border|bg)-(blue|red|sky|orange|lime)-(200|400|300\/40)$/,
+ },
+ ],
+ plugins: [],
+ preflight: false,
+ mode: "jit",
+};