Files
StarPilot/starpilot/system/the_pond/assets/components/main.css
T
firestar5683 3d8af2361e Rename
2026-03-27 18:05:44 -05:00

425 lines
8.6 KiB
CSS

:root {
/* Borders */
--border-color-base: var(--sidebar-border-color);
--border-radius-sm: 4px;
--border-radius-base: 5px;
--border-radius-md: 8px;
--border-radius-lg: 10px;
--border-radius-xl: 1rem;
--border-width-thin: 1px;
--border-width-base: 2px;
--border-width-thick: 5px;
--border-solid: solid;
--border-style-base: solid;
--border-style-input: 1px solid var(--sidebar-border-color);
/* Breakpoints */
--breakpoint-xs: 360px;
--breakpoint-sm: 480px;
--breakpoint-md: 768px;
--breakpoint-lg: 1024px;
--breakpoint-xl: 1280px;
/* Colors — Galaxy palette (cosmic purple · teal · rose · amber) */
--accent-bg: #8b6cc5;
--accent-hover-bg: #7558b0;
--card-bg: #121224;
--color-black: #000000;
--color-confirm: #8b6cc5;
--color-confirm-hover: #7558b0;
--color-gray-100: #f0f0f8;
--color-gray-200: #d8d8e4;
--color-gray-300: #b8b8cc;
--color-gray-400: #9898b0;
--color-gray-500: #7e7e98;
--color-gray-600: #636380;
--color-gray-700: #4a4a64;
--color-gray-800: #2e2e44;
--color-gray-900: #1a1a30;
--color-white: #ffffff;
--danger-bg: #e05577;
--danger-fg: #e05577;
--danger-hover-bg: #c04466;
--glow-primary: 0 0 0 2px var(--main-fg), 0 0 10px rgba(139, 108, 197, 0.35);
--input-bg: #161630;
--main-bg: #06060f;
--main-fg: #8b6cc5;
--secondary-bg: #0e0e1a;
--selected-camera-bg: #0b0b18;
--sidebar-active-bg: rgba(139, 108, 197, 0.15);
--sidebar-bg: #0a0a16;
--sidebar-border-color: #1e1e3e;
--sidebar-fg: #ffffff;
--sidebar-title-fg: #8b6cc5;
--success-bg: #5ec8c8;
--success-fg: #5ec8c8;
--success-hover-bg: #4ab3b3;
--switch-inactive-bg: #1e1e3e;
--text-color: #e8e8f0;
--text-muted: #8080a8;
--text-on-primary: var(--sidebar-fg);
--text-on-surface: var(--text-color);
--thumb-color: #8b6cc5;
--track-color: #14142e;
--warning-bg: #d4a060;
--warning-hover-bg: #b8884a;
/* Effects */
--disabled-opacity: 0.5;
--focus-ring-color: var(--main-fg);
--hover-opacity: 0.85;
--hover-scale-sm: scale(1.01);
--hover-scale-base: scale(1.05);
--hover-scale-lg: scale(1.1);
/* Fonts */
--font-body: "Inter", "Open Sans", sans-serif;
--font-mono: "Courier New", Courier, monospace;
--font-size-xs: 0.75rem;
--font-size-sm: 0.85rem;
--font-size-base: 1rem;
--font-size-lg: 1.2rem;
--font-size-xl: 1.5rem;
--font-weight-normal: 400;
--font-weight-demi-bold: 550;
--font-weight-bold: 700;
--heading-font: var(--font-body);
/* Layout */
--max-width-content: 700px;
--sidebar-width: 250px;
--width-xs: 100px;
--width-sm: 150px;
--width-md: 300px;
--width-lg: 500px;
--width-xl: 750px;
--width-xxl: 900px;
--width-xxxl: 1050px;
--width-xxxxl: 1200px;
/* Shadows */
--shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
--shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.1);
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.2);
/* Spacing */
--gap-xxs: 0.125rem;
--gap-xs: 0.25rem;
--gap-sm: 0.5rem;
--gap-md: 1rem;
--gap-lg: 1.5rem;
--gap-xl: 2rem;
--gap-xxl: 3rem;
--margin-xxs: 0.125rem;
--margin-xs: 0.3rem;
--margin-sm: 0.5rem;
--margin-base: 1rem;
--margin-lg: 1.5rem;
--margin-xl: 2rem;
--margin-xxl: 3rem;
--padding-xxs: 0.125rem;
--padding-xs: 0.3rem;
--padding-sm: 0.5rem;
--padding-base: 1rem;
--padding-lg: 1.5rem;
--padding-xl: 2rem;
--padding-xxl: 3rem;
--space-xxs: 0.125rem;
--space-xs: 0.25rem;
--space-sm: 0.5rem;
--space-md: 1rem;
--space-lg: 1.5rem;
--space-xl: 2rem;
--space-xxl: 3rem;
/* Transitions */
--transition-fast: 0.15s ease-in-out;
--transition-base: 0.3s ease;
--transition-slow: 0.5s ease;
/* Typography */
--letter-spacing-base: 0;
--line-height-base: 1.5;
/* Z-Index */
--z-overlay: 800;
--z-sidebar: 900;
--z-modal: 1000;
--z-tooltip: 1100;
}
/* ――― Base elements ――― */
a.button {
background-color: var(--sidebar-active-bg);
border: none;
border-radius: var(--border-radius-base);
color: var(--main-fg);
display: inline-block;
margin: var(--margin-base) 0;
padding: var(--padding-sm) var(--padding-base);
text-align: center;
text-decoration: none;
}
/* clickables share the pointer */
a[href],
button,
[role="button"],
input[type="button"],
input[type="submit"],
input[type="checkbox"],
input[type="radio"],
.manage-keys-link,
.route_card,
.sidebar .menu_section>li>ul>li,
.clickable {
cursor: pointer;
}
body {
padding-bottom: 0 !important;
}
/* ――― Layout containers ――― */
.content {
color: var(--main-fg);
flex-grow: 1;
margin-left: var(--sidebar-width, 250px);
overflow-y: auto;
padding-bottom: var(--padding-xl);
padding-left: var(--padding-lg);
}
/* ――― Headings ――― */
h1,
h2,
h3 {
color: var(--text-color);
margin: 0;
padding: var(--padding-base) 0 var(--heading-bottom, 10px);
}
/* ――― Helpers & states ――― */
.hidden {
display: none;
}
html {
cursor: default;
}
.no_scroll {
overflow: hidden;
}
.not_implemented {
cursor: not-allowed;
text-decoration: line-through;
}
/* ――― Base typography & page reset ――― */
html,
body {
background-color: var(--main-bg);
font-family: var(--font-body);
margin: 0;
min-height: 100dvh;
overflow-x: hidden;
padding: 0;
}
/* weight-override set once for all matching selectors */
html,
body,
h1,
h2,
h3,
.open-sans-regular {
font-family: var(--font-body);
font-optical-sizing: auto;
font-style: normal;
font-weight: var(--font-weight-demi-bold);
}
/* ――― HR line ――― */
hr {
background-color: var(--sidebar-border-color);
border: none;
height: var(--border-width-thin);
}
/* text-inputs keep the I-beam */
input[type="email"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="text"],
.navkeys-input,
.settings .textinput,
textarea {
cursor: text;
}
label[for] {
cursor: default;
}
/* ――― Snackbar component ――― */
.snackbar {
background-color: var(--color-confirm);
border-radius: var(--border-radius-base);
color: var(--text-color);
margin-bottom: var(--margin-base);
padding: var(--padding-base);
text-align: center;
transition: var(--snackbar-transition, 1s);
visibility: hidden;
}
.snackbar.show {
animation: fadein var(--snackbar-fade-time, 0.5s);
visibility: visible;
}
/* zero-ed default list / link styles */
ul,
li,
a {
display: block;
list-style: none;
margin: 0;
padding: 0;
}
/* ――― Snackbar wrapper ――― */
#snackbar_wrapper {
bottom: var(--snackbar-offset, 30px);
left: var(--sidebar-width);
margin: 0 auto;
position: fixed;
right: 0;
width: min(var(--snackbar-width, 300px), 70%);
z-index: var(--z-overlay);
}
/* ――― Animations ――― */
@keyframes fadein {
from {
bottom: 0;
opacity: 0;
}
to {
bottom: var(--snackbar-offset, 30px);
opacity: 1;
}
}
@keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
/* ――― Breakpoint overrides ――― */
@media only screen and (max-width: var(--breakpoint-md)) {
.content {
margin-left: 0;
}
}
@media only screen and (max-width: 768px) and (orientation: portrait) {
.content {
box-sizing: border-box;
margin-left: 0;
padding-left: 1rem;
padding-right: 1rem;
}
#snackbar_wrapper {
left: 50%;
transform: translateX(-50%);
width: 80%;
}
}
/* legacy WebKit keyframes */
@-webkit-keyframes fadein {
from {
bottom: 0;
opacity: 0;
}
to {
bottom: var(--snackbar-offset, 30px);
opacity: 1;
}
}
@-webkit-keyframes fadeout {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
/* ——— Tunnel notice banner ——— */
.tunnel-notice {
align-items: center;
background: linear-gradient(135deg, var(--card-bg), var(--secondary-bg));
border: var(--border-width-thin) var(--border-style-base) var(--sidebar-border-color);
border-left: 3px solid var(--main-fg);
border-radius: var(--border-radius-lg);
box-shadow: var(--shadow-md);
color: var(--text-color);
display: flex;
flex-direction: column;
gap: var(--gap-md);
margin: var(--margin-xl) auto;
max-width: var(--width-xl);
padding: var(--padding-xl) var(--padding-xxl);
text-align: center;
}
.tunnel-notice-icon {
font-size: 2.5rem;
opacity: 0.8;
}
.tunnel-notice-title {
color: var(--text-color);
font-size: var(--font-size-lg);
font-weight: var(--font-weight-bold);
margin: 0;
}
.tunnel-notice-body {
color: var(--text-muted);
font-size: var(--font-size-base);
line-height: var(--line-height-base);
margin: 0;
}
::-webkit-scrollbar {
height: 8px;
width: 8px;
}
::-webkit-scrollbar-track {
background: var(--track-color);
}
::-webkit-scrollbar-thumb {
background-color: var(--thumb-color);
border-radius: var(--border-radius-sm);
}