3853 lines
97 KiB
CSS
3853 lines
97 KiB
CSS
:root {
|
|
--ink: #e7f7ff;
|
|
--ink-soft: #a4bfca;
|
|
--ink-faint: #6f8b98;
|
|
--surface: rgba(5, 9, 15, 0.68);
|
|
--surface-solid: rgba(8, 13, 20, 0.94);
|
|
--surface-raised: rgba(12, 20, 29, 0.78);
|
|
--line: rgba(84, 227, 255, 0.24);
|
|
--line-strong: rgba(104, 239, 255, 0.62);
|
|
--accent: #48e6ff;
|
|
--accent-deep: #9af7ff;
|
|
--accent-soft: rgba(72, 230, 255, 0.14);
|
|
--teal: #4fffd7;
|
|
--teal-soft: rgba(79, 255, 215, 0.14);
|
|
--pink: #ff4d6d;
|
|
--pink-soft: rgba(255, 77, 109, 0.13);
|
|
--gold: #ffb84d;
|
|
--gold-soft: rgba(255, 184, 77, 0.18);
|
|
--danger: #ff5a6e;
|
|
--danger-soft: rgba(255, 90, 110, 0.14);
|
|
--success: #4fffd7;
|
|
--success-soft: rgba(79, 255, 215, 0.14);
|
|
--background-base: #05070b;
|
|
--background-glow-1: rgba(72, 230, 255, 0.16);
|
|
--background-glow-2: rgba(255, 184, 77, 0.11);
|
|
--background-glow-3: rgba(255, 77, 109, 0.1);
|
|
--rim-light: rgba(180, 248, 255, 0.64);
|
|
--candy-glow: rgba(72, 230, 255, 0.32);
|
|
--glass-wash: linear-gradient(145deg, rgba(39, 56, 68, 0.82), rgba(5, 9, 15, 0.66) 46%, rgba(72, 230, 255, 0.1));
|
|
--shine-sweep: linear-gradient(112deg, transparent 0 38%, rgba(132, 243, 255, 0.24) 46%, transparent 56%);
|
|
--glass-tint: rgba(72, 230, 255, 0.08);
|
|
--crystal-rim: rgba(137, 239, 255, 0.64);
|
|
--moonbeam: rgba(60, 176, 255, 0.34);
|
|
--diamond-line: rgba(119, 237, 255, 0.34);
|
|
--glass-shadow: rgba(0, 0, 0, 0.56);
|
|
--crystal-spark: rgba(172, 250, 255, 0.92);
|
|
--sparkle: rgba(196, 252, 255, 0.96);
|
|
--sparkle-gold: rgba(255, 184, 77, 0.82);
|
|
--corner-sparkle: linear-gradient(135deg, rgba(72, 230, 255, 0.72) 0 2px, transparent 2px 100%), linear-gradient(315deg, rgba(255, 184, 77, 0.72) 0 2px, transparent 2px 100%), radial-gradient(circle at 86% 18%, rgba(132, 243, 255, 0.88) 0 1.4px, transparent 2.4px);
|
|
--jelly-highlight: linear-gradient(145deg, rgba(132, 243, 255, 0.16), transparent 32%), radial-gradient(circle at 82% 16%, rgba(255, 184, 77, 0.16), transparent 24%);
|
|
--sugar-dust: linear-gradient(90deg, rgba(72, 230, 255, 0.08) 1px, transparent 1px), linear-gradient(180deg, rgba(72, 230, 255, 0.07) 1px, transparent 1px), radial-gradient(circle at 88% 18%, rgba(255, 184, 77, 0.62) 0 1.2px, transparent 2px);
|
|
--crystal-edge-glow: 0 0 0 1px rgba(72, 230, 255, 0.28), 0 0 22px rgba(72, 230, 255, 0.2), 0 0 44px rgba(0, 0, 0, 0.48);
|
|
--jelly-inset: inset 0 1px 0 rgba(180, 248, 255, 0.22), inset 0 -1px 0 rgba(72, 230, 255, 0.16), inset 0 0 24px rgba(72, 230, 255, 0.08);
|
|
--frosted-edge: linear-gradient(180deg, rgba(132, 243, 255, 0.18), rgba(7, 12, 18, 0.74) 48%, rgba(255, 184, 77, 0.1));
|
|
--frosted-surface: linear-gradient(145deg, rgba(18, 29, 40, 0.92), rgba(6, 10, 16, 0.72) 48%, rgba(72, 230, 255, 0.08));
|
|
--frame-corner: linear-gradient(135deg, rgba(72, 230, 255, 0.9) 0 2px, transparent 2px), linear-gradient(315deg, rgba(255, 184, 77, 0.72) 0 2px, transparent 2px);
|
|
--frame-accent: linear-gradient(90deg, rgba(72, 230, 255, 0), rgba(72, 230, 255, 0.78), rgba(255, 184, 77, 0.58), rgba(72, 230, 255, 0));
|
|
--frame-accessory-top: none;
|
|
--frame-accessory-bottom: none;
|
|
--frame-accessory-heart: var(--frame-accessory-top);
|
|
--frame-accessory-wand: var(--frame-accessory-top);
|
|
--frame-accessory-moon: var(--frame-accessory-top);
|
|
--frame-accessory-ribbon: var(--frame-accessory-bottom);
|
|
--frame-accessory-crystal: var(--frame-accessory-bottom);
|
|
--frame-accessory-circle: var(--frame-accessory-bottom);
|
|
--frame-accessory-image: var(--frame-accessory-top);
|
|
--frame-accessory-opacity: 0.22;
|
|
--frame-accessory-size: 44px 16px;
|
|
--menu-item-bg: linear-gradient(90deg, rgba(72, 230, 255, 0.14) 0 1px, transparent 1px 100%), linear-gradient(135deg, rgba(17, 31, 43, 0.94), rgba(4, 8, 13, 0.82) 58%, rgba(255, 184, 77, 0.08));
|
|
--menu-item-active-bg: linear-gradient(90deg, rgba(72, 230, 255, 0.44) 0 3px, transparent 3px 100%), linear-gradient(135deg, rgba(20, 51, 64, 0.98), rgba(6, 11, 18, 0.9) 52%, rgba(255, 184, 77, 0.18));
|
|
--menu-glyph-bg: linear-gradient(135deg, rgba(72, 230, 255, 0.28), rgba(255, 184, 77, 0.14)), repeating-linear-gradient(90deg, rgba(137, 239, 255, 0.18) 0 1px, transparent 1px 6px), rgba(5, 9, 15, 0.9);
|
|
--menu-title-shadow: 0 0 14px rgba(72, 230, 255, 0.5), 0 0 2px rgba(255, 184, 77, 0.8);
|
|
--menu-active-outline: linear-gradient(90deg, rgba(72, 230, 255, 0.95), rgba(255, 184, 77, 0.72), rgba(72, 230, 255, 0.95));
|
|
--panel-material: var(--sugar-dust), var(--glass-wash), linear-gradient(135deg, rgba(4, 8, 13, 0.78), rgba(13, 23, 32, 0.64));
|
|
--panel-shadow: var(--jelly-inset), inset 0 0 0 1px rgba(119, 237, 255, 0.24), inset 9px 0 0 rgba(72, 230, 255, 0.08), 0 18px 42px rgba(0, 0, 0, 0.5), 0 0 34px rgba(72, 230, 255, 0.14);
|
|
--ultimate-effect-alpha: 0.86;
|
|
--custom-background-overlay: linear-gradient(180deg, rgba(4, 7, 11, 0.62), rgba(4, 7, 11, 0.78));
|
|
--code-surface: #05090f;
|
|
--code-ink: #dffcff;
|
|
--code-muted: #87afba;
|
|
--workspace-background-image: none;
|
|
--workspace-background-pattern-image: radial-gradient(circle at 76% 18%, transparent 0 68px, rgba(72, 230, 255, 0.3) 69px 71px, transparent 72px), radial-gradient(circle at 76% 18%, transparent 0 34px, rgba(255, 184, 77, 0.24) 35px 36px, transparent 37px), conic-gradient(from 0deg at 76% 18%, transparent 0 8%, rgba(72, 230, 255, 0.24) 8% 9%, transparent 9% 28%, rgba(72, 230, 255, 0.18) 28% 29%, transparent 29% 100%), linear-gradient(90deg, rgba(72, 230, 255, 0.08) 1px, transparent 1px), linear-gradient(180deg, rgba(72, 230, 255, 0.07) 1px, transparent 1px), linear-gradient(135deg, transparent 0 48%, rgba(255, 184, 77, 0.1) 49% 50%, transparent 51% 100%), radial-gradient(circle at 20% 78%, rgba(255, 77, 109, 0.12), transparent 28%);
|
|
--workspace-background-pattern-size: auto, auto, auto, 42px 42px, 42px 42px, 180px 180px, auto;
|
|
--workspace-background-pattern-position: center, center, center, 0 0, 0 0, 0 0, center;
|
|
--workspace-background-pattern-repeat: no-repeat, no-repeat, no-repeat, repeat, repeat, repeat, no-repeat;
|
|
--workspace-background-pattern-opacity: 0.92;
|
|
--workspace-background-pattern-filter: saturate(1.18) contrast(1.08);
|
|
color: var(--ink);
|
|
background: var(--background-base);
|
|
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
font-synthesis: none;
|
|
text-rendering: optimizeLegibility;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
min-width: 320px;
|
|
min-height: 100vh;
|
|
}
|
|
|
|
button {
|
|
font: inherit;
|
|
}
|
|
|
|
/* ---- app shell with themed background ---- */
|
|
|
|
.app-shell {
|
|
min-height: 100vh;
|
|
display: grid;
|
|
grid-template-columns: var(--sidebar-width, 216px) minmax(0, 1fr);
|
|
position: relative;
|
|
isolation: isolate;
|
|
transition: grid-template-columns 180ms ease;
|
|
background:
|
|
radial-gradient(1200px 520px at 82% -12%, var(--background-glow-1), transparent 62%),
|
|
radial-gradient(900px 440px at -12% 26%, var(--background-glow-2), transparent 58%),
|
|
radial-gradient(760px 390px at 64% 110%, var(--background-glow-3), transparent 62%),
|
|
linear-gradient(135deg, rgba(255, 255, 255, 0.06), transparent 48%),
|
|
var(--background-base);
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed {
|
|
--sidebar-width: 72px;
|
|
}
|
|
|
|
.workspace-background-layer {
|
|
content: "";
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 0;
|
|
background-image: var(--workspace-background-image), var(--workspace-background-pattern-image);
|
|
background-size: cover, var(--workspace-background-pattern-size);
|
|
background-position: center, var(--workspace-background-pattern-position);
|
|
background-repeat: no-repeat, var(--workspace-background-pattern-repeat);
|
|
filter: var(--workspace-background-pattern-filter);
|
|
opacity: var(--workspace-background-pattern-opacity);
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* readability overlay above user-uploaded backgrounds */
|
|
:root[data-custom-background="true"] .workspace-background-layer::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background:
|
|
linear-gradient(90deg, rgba(4, 7, 11, 0.28) 0, rgba(4, 7, 11, 0.1) 216px, transparent 42%),
|
|
linear-gradient(180deg, rgba(4, 7, 11, 0.02), rgba(4, 7, 11, 0.1));
|
|
pointer-events: none;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .workspace-background-layer {
|
|
filter: saturate(0.92) contrast(0.96) brightness(0.94);
|
|
opacity: 1;
|
|
}
|
|
|
|
.global-particle-layer {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
pointer-events: none;
|
|
opacity: var(--ultimate-effect-alpha);
|
|
mix-blend-mode: screen;
|
|
overflow: hidden;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .global-particle-layer {
|
|
opacity: 0.08;
|
|
}
|
|
|
|
.global-particle-layer span {
|
|
position: absolute;
|
|
display: block;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.global-particle-orbit {
|
|
right: 9vw;
|
|
bottom: 6vh;
|
|
width: min(36vw, 440px);
|
|
aspect-ratio: 1;
|
|
border: 2px solid color-mix(in srgb, var(--accent) 42%, transparent);
|
|
border-radius: 50%;
|
|
box-shadow: 0 0 34px color-mix(in srgb, var(--accent) 18%, transparent), inset 0 0 42px color-mix(in srgb, var(--accent) 12%, transparent);
|
|
opacity: 0.62;
|
|
transform: rotate(12deg);
|
|
}
|
|
|
|
.global-particle-orbit::before,
|
|
.global-particle-orbit::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 18%;
|
|
border: 1px solid color-mix(in srgb, var(--gold) 34%, transparent);
|
|
border-radius: inherit;
|
|
}
|
|
|
|
.global-particle-orbit::after {
|
|
inset: 34%;
|
|
border-color: color-mix(in srgb, var(--accent) 28%, transparent);
|
|
}
|
|
|
|
.global-particle-orbit-secondary {
|
|
right: 23vw;
|
|
top: 9vh;
|
|
bottom: auto;
|
|
width: min(18vw, 230px);
|
|
opacity: 0.36;
|
|
transform: rotate(-18deg);
|
|
}
|
|
|
|
.global-particle-sweep {
|
|
top: -12vh;
|
|
left: 63vw;
|
|
width: 28px;
|
|
height: 118vh;
|
|
background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--accent) 42%, transparent), transparent);
|
|
opacity: 0.42;
|
|
transform: rotate(24deg);
|
|
filter: blur(1px);
|
|
}
|
|
|
|
.global-particle-ribbon {
|
|
left: -12vw;
|
|
bottom: 24vh;
|
|
width: 128vw;
|
|
height: 120px;
|
|
background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--pink) 24%, transparent), color-mix(in srgb, var(--gold) 16%, transparent), transparent);
|
|
opacity: 0.28;
|
|
transform: rotate(-11deg);
|
|
filter: blur(18px);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .global-particle-ribbon {
|
|
display: none;
|
|
}
|
|
|
|
.global-particle-frame {
|
|
width: 120px;
|
|
height: 120px;
|
|
border: 2px solid color-mix(in srgb, var(--gold) 44%, transparent);
|
|
opacity: 0.46;
|
|
}
|
|
|
|
.global-particle-frame-tl {
|
|
top: 18px;
|
|
left: 20px;
|
|
border-right: 0;
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.global-particle-frame-br {
|
|
right: 22px;
|
|
bottom: 24px;
|
|
border-left: 0;
|
|
border-top: 0;
|
|
}
|
|
|
|
.global-particle-glint {
|
|
--particle-index: 0;
|
|
--particle-x: 12%;
|
|
--particle-y: 16%;
|
|
left: var(--particle-x);
|
|
top: var(--particle-y);
|
|
width: 9px;
|
|
height: 9px;
|
|
opacity: 0.46;
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
.global-particle-glint::before,
|
|
.global-particle-glint::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: color-mix(in srgb, var(--sparkle) 76%, transparent);
|
|
border-radius: 999px;
|
|
}
|
|
|
|
.global-particle-glint::after {
|
|
transform: rotate(90deg);
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .global-particle-ribbon {
|
|
background: repeating-linear-gradient(90deg, transparent 0 80px, color-mix(in srgb, var(--gold) 24%, transparent) 81px 86px, transparent 87px 150px);
|
|
opacity: 0.32;
|
|
filter: blur(2px);
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .global-particle-glint {
|
|
width: 6px;
|
|
height: 18px;
|
|
border: 1px solid color-mix(in srgb, var(--accent) 54%, transparent);
|
|
background: color-mix(in srgb, var(--accent) 18%, transparent);
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .global-particle-glint::before,
|
|
:root[data-theme-palette="mecha-black"] .global-particle-glint::after {
|
|
display: none;
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .global-particle-orbit {
|
|
border-color: color-mix(in srgb, var(--sparkle) 62%, transparent);
|
|
box-shadow: 0 0 44px color-mix(in srgb, var(--pink) 28%, transparent), inset 0 0 34px color-mix(in srgb, var(--gold) 14%, transparent);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .global-particle-frame {
|
|
border-radius: 22px;
|
|
box-shadow: 0 0 22px color-mix(in srgb, var(--gold) 22%, transparent);
|
|
}
|
|
|
|
@media (prefers-reduced-motion: no-preference) {
|
|
.global-particle-orbit {
|
|
animation: particle-orbit-drift 22s linear infinite;
|
|
}
|
|
|
|
.global-particle-orbit-secondary {
|
|
animation-duration: 30s;
|
|
animation-direction: reverse;
|
|
}
|
|
|
|
.global-particle-sweep {
|
|
animation: particle-sweep 12s ease-in-out infinite;
|
|
}
|
|
|
|
.global-particle-glint {
|
|
animation: particle-glint 4.8s ease-in-out infinite;
|
|
animation-delay: calc(var(--particle-index) * -0.42s);
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.global-particle-layer * {
|
|
animation: none !important;
|
|
}
|
|
}
|
|
|
|
@keyframes particle-orbit-drift {
|
|
from {
|
|
transform: rotate(12deg);
|
|
}
|
|
|
|
to {
|
|
transform: rotate(372deg);
|
|
}
|
|
}
|
|
|
|
@keyframes particle-sweep {
|
|
0%,
|
|
100% {
|
|
transform: translateX(-18vw) rotate(24deg);
|
|
opacity: 0.18;
|
|
}
|
|
|
|
48% {
|
|
transform: translateX(18vw) rotate(24deg);
|
|
opacity: 0.46;
|
|
}
|
|
}
|
|
|
|
@keyframes particle-glint {
|
|
0%,
|
|
100% {
|
|
opacity: 0.18;
|
|
transform: scale(0.72) rotate(45deg);
|
|
}
|
|
|
|
50% {
|
|
opacity: 0.68;
|
|
transform: scale(1.16) rotate(45deg);
|
|
}
|
|
}
|
|
|
|
.app-sidebar {
|
|
position: relative;
|
|
z-index: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 14px;
|
|
width: var(--sidebar-width, 216px);
|
|
min-width: 0;
|
|
padding: 16px 10px;
|
|
border-right: 1px solid color-mix(in srgb, var(--line) 72%, transparent);
|
|
background:
|
|
radial-gradient(circle at 92% 3%, color-mix(in srgb, var(--sparkle) 72%, transparent) 0 2px, transparent 3px),
|
|
linear-gradient(180deg, color-mix(in srgb, var(--surface-raised) 86%, transparent), color-mix(in srgb, var(--surface-solid) 72%, transparent));
|
|
backdrop-filter: blur(26px) saturate(1.2);
|
|
box-shadow: inset -1px 0 0 color-mix(in srgb, var(--rim-light) 24%, transparent), 12px 0 34px rgba(0, 0, 0, 0.34);
|
|
transition: width 180ms ease, padding 180ms ease;
|
|
}
|
|
|
|
.app-brand {
|
|
display: grid;
|
|
grid-template-columns: 36px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: 9px;
|
|
min-height: 42px;
|
|
padding: 0 2px;
|
|
font-weight: 800;
|
|
color: var(--ink);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.app-brand > span:last-child {
|
|
display: grid;
|
|
gap: 2px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.app-brand strong,
|
|
.app-brand-subtitle,
|
|
.app-nav-copy strong,
|
|
.provider-id {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.app-brand-subtitle {
|
|
color: var(--ink-faint);
|
|
font-size: 11px;
|
|
letter-spacing: 0.02em;
|
|
}
|
|
|
|
.app-brand-mark {
|
|
display: inline-flex;
|
|
width: 36px;
|
|
height: 36px;
|
|
flex: 0 0 36px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 1px solid color-mix(in srgb, var(--line-strong) 68%, transparent);
|
|
border-radius: 50%;
|
|
background: var(--menu-glyph-bg);
|
|
color: var(--accent-deep);
|
|
box-shadow: inset 0 1px 0 color-mix(in srgb, var(--rim-light) 42%, transparent), 0 0 18px color-mix(in srgb, var(--accent) 18%, transparent);
|
|
}
|
|
|
|
.app-menu-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
min-height: 30px;
|
|
padding: 0 2px;
|
|
color: var(--ink-faint);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.app-menu-toggle {
|
|
min-height: 30px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 6px;
|
|
padding: 0 8px;
|
|
border: 1px solid transparent;
|
|
border-radius: 8px;
|
|
background: transparent;
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.app-menu-toggle:hover,
|
|
.app-menu-toggle:focus-visible {
|
|
border-color: var(--line);
|
|
color: var(--accent-deep);
|
|
outline: none;
|
|
background: color-mix(in srgb, var(--accent-soft) 58%, transparent);
|
|
}
|
|
|
|
.app-nav {
|
|
display: grid;
|
|
gap: 6px;
|
|
align-content: start;
|
|
}
|
|
|
|
.app-nav-group {
|
|
position: relative;
|
|
min-width: 0;
|
|
}
|
|
|
|
.app-nav-group::before,
|
|
.app-nav-group::after {
|
|
display: none;
|
|
}
|
|
|
|
.app-nav-group-button {
|
|
width: 100%;
|
|
min-height: 38px;
|
|
display: grid;
|
|
grid-template-columns: 34px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 3px 9px 3px 3px;
|
|
border: 1px solid transparent;
|
|
border-radius: 8px;
|
|
color: var(--ink-soft);
|
|
background: transparent;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
position: relative;
|
|
}
|
|
|
|
.app-nav-group-button::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 9px auto 9px 0;
|
|
width: 3px;
|
|
border-radius: 999px;
|
|
background: var(--accent);
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.app-nav-group-button:hover,
|
|
.app-nav-group-button:focus-visible {
|
|
border-color: color-mix(in srgb, var(--line) 72%, transparent);
|
|
color: var(--ink);
|
|
outline: none;
|
|
background: color-mix(in srgb, var(--surface-raised) 78%, transparent);
|
|
}
|
|
|
|
.app-nav-icon {
|
|
width: 34px;
|
|
height: 34px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 0;
|
|
border-radius: 8px;
|
|
background: transparent;
|
|
color: var(--ink-faint);
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.app-nav-copy {
|
|
min-width: 0;
|
|
display: grid;
|
|
}
|
|
|
|
.app-nav-copy strong {
|
|
color: var(--ink);
|
|
font-size: 13px;
|
|
line-height: 1.18;
|
|
letter-spacing: -0.01em;
|
|
}
|
|
|
|
.app-nav-item-active {
|
|
color: var(--accent-deep);
|
|
background: var(--menu-item-active-bg);
|
|
border-color: color-mix(in srgb, var(--line-strong) 82%, transparent);
|
|
font-weight: 800;
|
|
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rim-light) 18%, transparent), 0 0 18px color-mix(in srgb, var(--accent) 12%, transparent);
|
|
}
|
|
|
|
.app-nav-item-active::before {
|
|
opacity: 1;
|
|
}
|
|
|
|
.app-nav-item-active .app-nav-icon {
|
|
color: var(--accent-deep);
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .app-sidebar {
|
|
clip-path: none;
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .app-nav-group-button,
|
|
:root[data-theme-palette="mecha-black"] .app-menu-toggle,
|
|
:root[data-theme-palette="mecha-black"] .app-session,
|
|
:root[data-theme-palette="mecha-black"] .app-account-button,
|
|
:root[data-theme-palette="mecha-black"] .palette-option,
|
|
:root[data-theme-palette="mecha-black"] .background-preset-option {
|
|
clip-path: none;
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .app-nav-icon {
|
|
clip-path: none;
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .app-nav-item-active {
|
|
background:
|
|
var(--frame-accessory-top) right 6px top 3px / 32px 12px no-repeat,
|
|
linear-gradient(90deg, rgba(72, 230, 255, 0.42) 0 3px, transparent 3px),
|
|
linear-gradient(135deg, rgba(23, 36, 48, 0.96), rgba(6, 10, 16, 0.88));
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .app-sidebar {
|
|
background:
|
|
radial-gradient(circle at 92% 3%, rgba(255, 255, 255, 0.56) 0 2px, transparent 3px),
|
|
linear-gradient(180deg, rgba(255, 220, 239, 0.14), rgba(103, 27, 62, 0.36) 46%, rgba(62, 16, 40, 0.42));
|
|
background-size: auto, auto;
|
|
background-position: center, center;
|
|
background-repeat: no-repeat, no-repeat;
|
|
border-right-color: rgba(255, 214, 235, 0.42);
|
|
box-shadow:
|
|
inset -1px 0 0 rgba(255, 255, 255, 0.3),
|
|
inset 0 0 0 1px rgba(255, 214, 235, 0.12),
|
|
14px 0 34px rgba(72, 0, 34, 0.24);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .app-brand-mark,
|
|
:root[data-theme-palette="magical-girl"] .app-nav-icon {
|
|
border-radius: 999px;
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .app-nav-group-button {
|
|
border-radius: 14px;
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .app-nav-item-active {
|
|
background:
|
|
var(--frame-accessory-top) right 6px top 3px / 32px 12px no-repeat,
|
|
linear-gradient(90deg, rgba(255, 221, 117, 0.78) 0 3px, transparent 3px),
|
|
var(--menu-item-active-bg);
|
|
box-shadow:
|
|
var(--jelly-inset),
|
|
0 0 0 1px rgba(255, 255, 255, 0.42),
|
|
0 10px 24px var(--glass-shadow),
|
|
0 0 24px rgba(255, 221, 117, 0.34),
|
|
0 0 30px rgba(255, 119, 200, 0.26);
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-sidebar {
|
|
align-items: center;
|
|
gap: 14px;
|
|
padding: 14px 8px;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-brand {
|
|
display: flex;
|
|
justify-content: center;
|
|
width: 100%;
|
|
padding: 0;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-brand > span:last-child,
|
|
.app-shell-sidebar-collapsed .app-menu-toolbar > span,
|
|
.app-shell-sidebar-collapsed .app-menu-toggle span,
|
|
.app-shell-sidebar-collapsed .app-nav-copy,
|
|
.app-shell-sidebar-collapsed .app-account-button > span:not(.account-avatar),
|
|
.app-shell-sidebar-collapsed .account-chevron,
|
|
.app-shell-sidebar-collapsed .palette-mini-strip {
|
|
display: none;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-menu-toolbar {
|
|
justify-content: center;
|
|
width: 100%;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-menu-toggle {
|
|
width: 40px;
|
|
min-height: 36px;
|
|
padding: 0;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-nav {
|
|
width: 100%;
|
|
gap: 12px;
|
|
justify-items: center;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-nav-group {
|
|
width: 100%;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-nav-group-button {
|
|
width: 44px;
|
|
min-height: 44px;
|
|
grid-template-columns: 1fr;
|
|
place-items: center;
|
|
padding: 0;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-nav-icon {
|
|
width: 44px;
|
|
height: 44px;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-session {
|
|
width: 100%;
|
|
justify-items: center;
|
|
padding: 8px 0;
|
|
background: transparent;
|
|
border-color: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.app-shell-sidebar-collapsed .app-account-button {
|
|
width: 44px;
|
|
min-height: 44px;
|
|
grid-template-columns: 1fr;
|
|
place-items: center;
|
|
padding: 0;
|
|
}
|
|
|
|
.app-session {
|
|
margin-top: auto;
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 8px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--sugar-dust), var(--glass-wash), var(--glass-tint), var(--surface);
|
|
backdrop-filter: blur(22px) saturate(1.28);
|
|
box-shadow: var(--jelly-inset), inset 0 0 0 1px var(--diamond-line), 0 12px 32px var(--glass-shadow), 0 0 26px rgba(255, 255, 255, 0.16);
|
|
font-size: 12px;
|
|
color: var(--ink-soft);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.app-session strong {
|
|
color: var(--ink);
|
|
}
|
|
|
|
.app-account-button {
|
|
width: 100%;
|
|
min-height: 38px;
|
|
display: grid;
|
|
grid-template-columns: 28px minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 5px;
|
|
border: 1px solid transparent;
|
|
border-radius: 8px;
|
|
background: var(--jelly-highlight), var(--glass-wash), rgba(255, 255, 255, 0.2);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.app-account-button:hover,
|
|
.app-account-button:focus-visible {
|
|
border-color: var(--line-strong);
|
|
outline: none;
|
|
}
|
|
|
|
.account-avatar {
|
|
display: inline-flex;
|
|
width: 28px;
|
|
height: 28px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 1px solid var(--crystal-rim);
|
|
border-radius: 50%;
|
|
background:
|
|
var(--corner-sparkle),
|
|
radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.86), transparent 34%),
|
|
linear-gradient(135deg, var(--pink), var(--accent));
|
|
background-size: 36px 36px, auto, auto;
|
|
background-position: right -5px top -4px, center, center;
|
|
background-repeat: no-repeat;
|
|
color: #ffffff;
|
|
box-shadow: var(--jelly-inset), 0 8px 20px var(--candy-glow), 0 0 16px var(--moonbeam);
|
|
}
|
|
|
|
.account-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: inherit;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.account-chevron {
|
|
color: var(--accent-deep);
|
|
}
|
|
|
|
.palette-mini-strip {
|
|
display: flex;
|
|
gap: 5px;
|
|
min-height: 18px;
|
|
padding: 4px 6px;
|
|
border: 1px solid rgba(255, 255, 255, 0.42);
|
|
border-radius: 999px;
|
|
background: rgba(255, 255, 255, 0.24);
|
|
box-shadow: var(--jelly-inset);
|
|
backdrop-filter: blur(12px) saturate(1.18);
|
|
}
|
|
|
|
.palette-mini-strip span {
|
|
flex: 1 1 0;
|
|
min-width: 0;
|
|
min-height: 12px;
|
|
border: 1px solid rgba(255, 255, 255, 0.88);
|
|
border-radius: 999px;
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.86), 0 3px 10px rgba(255, 255, 255, 0.22);
|
|
}
|
|
|
|
.profile-panel {
|
|
display: grid;
|
|
gap: 12px;
|
|
padding-top: 12px;
|
|
border-top: 1px solid var(--line);
|
|
}
|
|
|
|
.profile-form,
|
|
.theme-panel {
|
|
display: grid;
|
|
gap: 9px;
|
|
}
|
|
|
|
.profile-panel-title {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
color: var(--accent-deep);
|
|
}
|
|
|
|
.profile-form label {
|
|
display: grid;
|
|
gap: 4px;
|
|
color: var(--ink-soft);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.profile-form input {
|
|
width: 100%;
|
|
min-height: 34px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
padding: 0 10px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
box-shadow: var(--jelly-inset);
|
|
}
|
|
|
|
.profile-form input:focus {
|
|
border-color: var(--accent);
|
|
outline: 2px solid var(--accent-soft);
|
|
}
|
|
|
|
.profile-save-button {
|
|
min-height: 34px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 6px;
|
|
border: 1px solid var(--rim-light);
|
|
border-radius: 999px;
|
|
background:
|
|
var(--sugar-dust),
|
|
var(--corner-sparkle),
|
|
linear-gradient(145deg, rgba(255, 255, 255, 0.72), transparent 36%),
|
|
linear-gradient(135deg, var(--accent), var(--pink));
|
|
background-size: auto, 44px 44px, auto, auto;
|
|
background-position: center, right 8px top 2px, center, center;
|
|
background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
|
|
color: #ffffff;
|
|
cursor: pointer;
|
|
font-weight: 700;
|
|
box-shadow: var(--jelly-inset), 0 10px 24px var(--candy-glow), 0 0 18px var(--moonbeam);
|
|
}
|
|
|
|
.profile-save-button:hover,
|
|
.profile-save-button:focus-visible {
|
|
outline: none;
|
|
filter: brightness(1.03);
|
|
}
|
|
|
|
.profile-save-result {
|
|
display: inline-flex;
|
|
min-height: 24px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 999px;
|
|
background: var(--success-soft);
|
|
color: var(--success);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.palette-grid {
|
|
display: grid;
|
|
gap: 7px;
|
|
}
|
|
|
|
.palette-option {
|
|
display: grid;
|
|
gap: 5px;
|
|
min-height: 54px;
|
|
padding: 8px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--sugar-dust), var(--jelly-highlight), var(--glass-wash), var(--glass-tint), var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
text-align: left;
|
|
box-shadow: var(--jelly-inset), 0 8px 18px var(--glass-shadow);
|
|
}
|
|
|
|
.palette-option:hover,
|
|
.palette-option:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
}
|
|
|
|
.palette-option-active {
|
|
border-color: var(--line-strong);
|
|
color: var(--accent-deep);
|
|
background: var(--sugar-dust), var(--corner-sparkle), var(--jelly-highlight), var(--glass-wash), var(--accent-soft);
|
|
background-size: auto, 46px 46px, auto, auto, auto;
|
|
background-position: center, right 8px top 4px, center, center, center;
|
|
background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat;
|
|
box-shadow: var(--jelly-inset), 0 8px 22px var(--candy-glow), 0 0 18px var(--moonbeam);
|
|
}
|
|
|
|
.palette-swatch-row {
|
|
display: grid;
|
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
gap: 4px;
|
|
}
|
|
|
|
.palette-swatch-row span {
|
|
min-height: 14px;
|
|
border: 1px solid rgba(255, 255, 255, 0.78);
|
|
border-radius: 999px;
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
|
|
}
|
|
|
|
.palette-option-label {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.theme-background-actions {
|
|
display: flex;
|
|
gap: 7px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.background-preset-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 7px;
|
|
}
|
|
|
|
.background-preset-option {
|
|
display: grid;
|
|
gap: 6px;
|
|
min-height: 76px;
|
|
padding: 8px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--glass-tint), var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
text-align: left;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 8px 20px var(--glass-shadow);
|
|
}
|
|
|
|
.background-preset-option:hover,
|
|
.background-preset-option:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
}
|
|
|
|
.background-preset-option-active {
|
|
border-color: var(--line-strong);
|
|
color: var(--accent-deep);
|
|
background: var(--corner-sparkle), var(--jelly-highlight), var(--glass-wash), var(--accent-soft);
|
|
background-size: 46px 46px, auto, auto, auto;
|
|
background-position: right 8px top 4px, center, center, center;
|
|
background-repeat: no-repeat;
|
|
box-shadow: inset 0 1px 0 var(--rim-light), inset 0 0 0 1px var(--diamond-line), 0 10px 24px var(--candy-glow);
|
|
}
|
|
|
|
.background-preset-preview {
|
|
min-height: 34px;
|
|
border: 1px solid var(--crystal-rim);
|
|
border-radius: 8px;
|
|
box-shadow: inset 0 1px 0 var(--rim-light), 0 0 18px var(--moonbeam);
|
|
}
|
|
|
|
.background-preset-label {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
min-width: 0;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.theme-background-note {
|
|
display: block;
|
|
padding: 7px 9px;
|
|
border: 1px dashed var(--line-strong);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--accent-soft);
|
|
color: var(--ink-soft);
|
|
font-size: 12px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.theme-upload {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
min-height: 32px;
|
|
padding: 0 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 999px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
}
|
|
|
|
.theme-upload:hover,
|
|
.theme-upload:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
}
|
|
|
|
.theme-upload:disabled {
|
|
cursor: default;
|
|
opacity: 0.58;
|
|
}
|
|
|
|
/* ---- authentication and management forms ---- */
|
|
|
|
.auth-shell {
|
|
min-height: 100vh;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 24px;
|
|
position: relative;
|
|
isolation: isolate;
|
|
background:
|
|
radial-gradient(900px 430px at 82% 10%, var(--background-glow-1), transparent 64%),
|
|
radial-gradient(740px 420px at 14% 82%, var(--background-glow-3), transparent 62%),
|
|
var(--workspace-background-pattern-image),
|
|
var(--background-base);
|
|
background-size: auto, auto, var(--workspace-background-pattern-size), auto;
|
|
}
|
|
|
|
.auth-card {
|
|
width: min(100%, 460px);
|
|
display: grid;
|
|
gap: 16px;
|
|
padding: 22px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--sugar-dust), var(--glass-wash), var(--glass-tint), var(--surface-raised);
|
|
backdrop-filter: blur(24px) saturate(1.28);
|
|
box-shadow: var(--jelly-inset), inset 0 0 0 1px var(--diamond-line), 0 22px 58px var(--glass-shadow), 0 0 42px var(--moonbeam);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.auth-card::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: var(--shine-sweep), var(--jelly-highlight);
|
|
background-repeat: no-repeat;
|
|
background-position: right 16px top 12px, center;
|
|
opacity: 0.42;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.auth-brand,
|
|
.auth-form,
|
|
.auth-mode-tabs,
|
|
.auth-copy {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.auth-brand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
}
|
|
|
|
.auth-brand h1 {
|
|
margin: 0;
|
|
color: var(--ink);
|
|
font-size: 24px;
|
|
line-height: 1.18;
|
|
}
|
|
|
|
.auth-copy {
|
|
margin: 0;
|
|
color: var(--ink-soft);
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.auth-mode-tabs {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.auth-mode-tabs button,
|
|
.role-chip {
|
|
min-height: 36px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 6px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
font-weight: 700;
|
|
box-shadow: var(--jelly-inset), 0 8px 18px var(--glass-shadow);
|
|
}
|
|
|
|
.auth-mode-tabs button:hover,
|
|
.auth-mode-tabs button:focus-visible,
|
|
.role-chip:hover,
|
|
.role-chip:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
}
|
|
|
|
.auth-mode-active,
|
|
.role-chip-active {
|
|
color: var(--accent-deep) !important;
|
|
border-color: var(--line-strong) !important;
|
|
background: var(--corner-sparkle), var(--jelly-highlight), var(--glass-wash), var(--accent-soft) !important;
|
|
}
|
|
|
|
.auth-form,
|
|
.management-form {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.auth-form label,
|
|
.management-form label {
|
|
display: grid;
|
|
gap: 5px;
|
|
color: var(--ink-soft);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.auth-form input,
|
|
.management-form input,
|
|
.management-form select {
|
|
width: 100%;
|
|
min-height: 36px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
padding: 0 10px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
box-shadow: var(--jelly-inset);
|
|
}
|
|
|
|
.auth-form input:focus,
|
|
.management-form input:focus,
|
|
.management-form select:focus {
|
|
border-color: var(--accent);
|
|
outline: 2px solid var(--accent-soft);
|
|
}
|
|
|
|
.auth-result {
|
|
display: grid;
|
|
gap: 3px;
|
|
padding: 9px 10px;
|
|
border: 1px dashed var(--line-strong);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--accent-soft);
|
|
color: var(--ink-soft);
|
|
font-size: 12px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.auth-result strong {
|
|
color: var(--ink);
|
|
}
|
|
|
|
.auth-result-error {
|
|
border-color: rgba(194, 85, 130, 0.45);
|
|
background: var(--danger-soft);
|
|
color: var(--danger);
|
|
}
|
|
|
|
.auth-result-success {
|
|
border-color: rgba(25, 125, 116, 0.38);
|
|
background: var(--success-soft);
|
|
color: var(--success);
|
|
}
|
|
|
|
.auth-submit,
|
|
.auth-local-action {
|
|
width: 100%;
|
|
}
|
|
|
|
.management-form {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
align-items: end;
|
|
}
|
|
|
|
.role-selector {
|
|
grid-column: 1 / -1;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
|
|
.user-management-list {
|
|
gap: 10px;
|
|
}
|
|
|
|
.user-management-item {
|
|
grid-template-columns: minmax(180px, 1.2fr) auto minmax(160px, 1fr) minmax(180px, 1.2fr) minmax(220px, auto);
|
|
}
|
|
|
|
.user-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.profile-settings-page {
|
|
gap: 18px;
|
|
}
|
|
|
|
.profile-settings-hero {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 14px;
|
|
}
|
|
|
|
.profile-settings-avatar {
|
|
width: 72px;
|
|
height: 72px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 1px solid var(--crystal-rim);
|
|
border-radius: 50%;
|
|
background:
|
|
var(--corner-sparkle),
|
|
radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.86), transparent 34%),
|
|
linear-gradient(135deg, var(--pink), var(--accent));
|
|
background-size: 54px 54px, auto, auto;
|
|
background-position: right -5px top -4px, center, center;
|
|
background-repeat: no-repeat;
|
|
color: #ffffff;
|
|
box-shadow: var(--jelly-inset), 0 10px 26px var(--candy-glow), 0 0 18px var(--moonbeam);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.profile-settings-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.profile-settings-hero h2 {
|
|
margin: 0 0 4px;
|
|
color: var(--ink);
|
|
font-size: 22px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.profile-settings-hero p {
|
|
margin: 0 0 8px;
|
|
color: var(--ink-soft);
|
|
}
|
|
|
|
.profile-settings-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.profile-settings-grid {
|
|
display: grid;
|
|
grid-template-columns: minmax(280px, 0.9fr) minmax(360px, 1.1fr);
|
|
gap: 16px;
|
|
align-items: start;
|
|
}
|
|
|
|
.profile-settings-form {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.profile-settings-form label {
|
|
display: grid;
|
|
gap: 5px;
|
|
color: var(--ink-soft);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.profile-settings-form input,
|
|
.profile-settings-form textarea {
|
|
width: 100%;
|
|
min-height: 38px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
padding: 0 10px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
box-shadow: var(--jelly-inset);
|
|
}
|
|
|
|
.profile-settings-form textarea {
|
|
min-height: 92px;
|
|
padding: 10px;
|
|
resize: vertical;
|
|
}
|
|
|
|
.profile-settings-form input:focus,
|
|
.profile-settings-form textarea:focus {
|
|
border-color: var(--accent);
|
|
outline: 2px solid var(--accent-soft);
|
|
}
|
|
|
|
.profile-settings-form-row {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
.profile-palette-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.profile-background-grid {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
|
|
.app-main {
|
|
position: relative;
|
|
z-index: 1;
|
|
min-width: 0;
|
|
padding: 24px;
|
|
}
|
|
|
|
/* ---- page frame ---- */
|
|
|
|
.page-frame {
|
|
width: min(100%, 1180px);
|
|
display: grid;
|
|
gap: 18px;
|
|
}
|
|
|
|
.page-header {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
min-height: 52px;
|
|
}
|
|
|
|
.page-kicker {
|
|
margin: 0 0 6px;
|
|
font-size: 13px;
|
|
color: var(--accent-deep);
|
|
font-weight: 700;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.page-title {
|
|
margin: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 28px;
|
|
line-height: 1.18;
|
|
font-weight: 720;
|
|
letter-spacing: 0;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.page-title svg {
|
|
color: var(--pink);
|
|
filter: drop-shadow(0 0 10px var(--candy-glow));
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.page-status {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
min-height: 30px;
|
|
padding: 0 10px;
|
|
border-radius: 999px;
|
|
border: 1px solid rgba(255, 255, 255, 0.58);
|
|
background: var(--glass-wash), var(--gold-soft);
|
|
color: #6f4d00;
|
|
font-size: 13px;
|
|
white-space: nowrap;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 8px 20px var(--glass-shadow);
|
|
}
|
|
|
|
.page-status-ready {
|
|
background: var(--success-soft);
|
|
color: var(--success);
|
|
}
|
|
|
|
/* ---- metric cards ---- */
|
|
|
|
.metric-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.metric-card,
|
|
.overview-card {
|
|
min-height: 104px;
|
|
display: grid;
|
|
align-content: space-between;
|
|
gap: 12px;
|
|
padding: 16px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--panel-material);
|
|
backdrop-filter: blur(22px) saturate(1.28);
|
|
box-shadow: var(--panel-shadow);
|
|
position: relative;
|
|
isolation: isolate;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.metric-card::before,
|
|
.overview-card::before,
|
|
.console-panel::before,
|
|
.catalog-card::before,
|
|
.server-card::before,
|
|
.server-detail-header::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: inherit;
|
|
padding: 1px;
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.9), color-mix(in srgb, var(--accent) 35%, transparent), color-mix(in srgb, var(--pink) 24%, transparent), rgba(255, 255, 255, 0.46));
|
|
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
|
|
mask-composite: exclude;
|
|
opacity: 0.86;
|
|
z-index: 2;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.metric-card::after,
|
|
.overview-card::after,
|
|
.console-panel::after,
|
|
.catalog-card::after,
|
|
.server-card::after,
|
|
.server-detail-header::after,
|
|
.confirm-panel::after,
|
|
.drawer-panel::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: var(--frame-accessory-top), var(--frame-accessory-bottom), var(--shine-sweep), var(--jelly-highlight);
|
|
background-size: var(--frame-accessory-size), 34px 34px, auto;
|
|
background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
|
|
background-position: right 6px top 5px, left 6px bottom 5px, right 10px top 8px, center;
|
|
opacity: var(--frame-accessory-opacity);
|
|
z-index: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.metric-label {
|
|
color: var(--ink-faint);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.metric-value {
|
|
color: var(--ink);
|
|
font-size: 24px;
|
|
line-height: 1.2;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.metric-tone-success {
|
|
border-top: 3px solid var(--teal);
|
|
}
|
|
|
|
.metric-tone-warning {
|
|
border-top: 3px solid var(--gold);
|
|
}
|
|
|
|
.metric-tone-neutral {
|
|
border-top: 3px solid var(--accent);
|
|
}
|
|
|
|
.metric-detail {
|
|
margin: 0;
|
|
color: var(--ink-faint);
|
|
font-size: 13px;
|
|
}
|
|
|
|
/* ---- generic page/panel layout ---- */
|
|
|
|
.console-page {
|
|
width: min(100%, 1180px);
|
|
display: grid;
|
|
gap: 16px;
|
|
}
|
|
|
|
.console-page > * {
|
|
min-width: 0;
|
|
}
|
|
|
|
.console-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.overview-card {
|
|
min-height: 132px;
|
|
gap: 10px;
|
|
}
|
|
|
|
.overview-card p {
|
|
margin: 0;
|
|
color: var(--ink-faint);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.console-panel,
|
|
.catalog-card {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--panel-material);
|
|
backdrop-filter: blur(22px) saturate(1.28);
|
|
box-shadow: var(--panel-shadow);
|
|
padding: 16px;
|
|
position: relative;
|
|
isolation: isolate;
|
|
overflow: hidden;
|
|
}
|
|
|
|
:where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.server-detail-header,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.plugin-group,
|
|
.operation-item,
|
|
.confirm-panel,
|
|
.drawer-panel
|
|
) > * {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .metric-card,
|
|
:root[data-theme-palette="mecha-black"] .overview-card,
|
|
:root[data-theme-palette="mecha-black"] .console-panel,
|
|
:root[data-theme-palette="mecha-black"] .catalog-card,
|
|
:root[data-theme-palette="mecha-black"] .server-card,
|
|
:root[data-theme-palette="mecha-black"] .drawer-panel,
|
|
:root[data-theme-palette="mecha-black"] .confirm-panel,
|
|
:root[data-theme-palette="mecha-black"] .plugin-group,
|
|
:root[data-theme-palette="mecha-black"] .operation-item {
|
|
clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 12px 100%, 0 calc(100% - 12px));
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .metric-card,
|
|
:root[data-theme-palette="magical-girl"] .overview-card,
|
|
:root[data-theme-palette="magical-girl"] .console-panel,
|
|
:root[data-theme-palette="magical-girl"] .catalog-card,
|
|
:root[data-theme-palette="magical-girl"] .server-card,
|
|
:root[data-theme-palette="magical-girl"] .server-detail-header,
|
|
:root[data-theme-palette="magical-girl"] .resource-table-wrap,
|
|
:root[data-theme-palette="magical-girl"] .provider-table-wrap,
|
|
:root[data-theme-palette="magical-girl"] .server-table-wrap,
|
|
:root[data-theme-palette="magical-girl"] .drawer-panel,
|
|
:root[data-theme-palette="magical-girl"] .confirm-panel,
|
|
:root[data-theme-palette="magical-girl"] .plugin-group,
|
|
:root[data-theme-palette="magical-girl"] .operation-item {
|
|
background-image: var(--corner-sparkle), var(--panel-material);
|
|
background-size: 56px 56px, auto;
|
|
background-position: right 6px top 4px, center;
|
|
background-repeat: no-repeat, no-repeat;
|
|
overflow: visible;
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] :where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.server-detail-header,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.drawer-panel,
|
|
.confirm-panel,
|
|
.plugin-group,
|
|
.operation-item,
|
|
.server-toolbar,
|
|
.state-view
|
|
) {
|
|
--frame-accessory-image: var(--frame-accessory-heart);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] :where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.plugin-group,
|
|
.operation-item
|
|
):nth-child(6n + 2) {
|
|
--frame-accessory-image: var(--frame-accessory-wand);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] :where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.plugin-group,
|
|
.operation-item
|
|
):nth-child(6n + 3) {
|
|
--frame-accessory-image: var(--frame-accessory-moon);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] :where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.plugin-group,
|
|
.operation-item
|
|
):nth-child(6n + 4) {
|
|
--frame-accessory-image: var(--frame-accessory-ribbon);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] :where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.plugin-group,
|
|
.operation-item
|
|
):nth-child(6n + 5) {
|
|
--frame-accessory-image: var(--frame-accessory-crystal);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] :where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.plugin-group,
|
|
.operation-item
|
|
):nth-child(6n) {
|
|
--frame-accessory-image: var(--frame-accessory-circle);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .resource-table-wrap {
|
|
--frame-accessory-image: var(--frame-accessory-circle);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .provider-table-wrap {
|
|
--frame-accessory-image: var(--frame-accessory-wand);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .server-table-wrap {
|
|
--frame-accessory-image: var(--frame-accessory-crystal);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .server-toolbar {
|
|
--frame-accessory-image: var(--frame-accessory-moon);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .state-view {
|
|
--frame-accessory-image: var(--frame-accessory-ribbon);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .metric-card::before,
|
|
:root[data-theme-palette="magical-girl"] .overview-card::before,
|
|
:root[data-theme-palette="magical-girl"] .console-panel::before,
|
|
:root[data-theme-palette="magical-girl"] .catalog-card::before,
|
|
:root[data-theme-palette="magical-girl"] .server-card::before,
|
|
:root[data-theme-palette="magical-girl"] .server-detail-header::before {
|
|
background: linear-gradient(180deg, rgba(255, 238, 248, 0.88), rgba(255, 221, 117, 0.7), rgba(255, 119, 200, 0.62));
|
|
opacity: 0.72;
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .metric-card::after,
|
|
:root[data-theme-palette="magical-girl"] .overview-card::after,
|
|
:root[data-theme-palette="magical-girl"] .console-panel::after,
|
|
:root[data-theme-palette="magical-girl"] .catalog-card::after,
|
|
:root[data-theme-palette="magical-girl"] .server-card::after,
|
|
:root[data-theme-palette="magical-girl"] .server-detail-header::after,
|
|
:root[data-theme-palette="magical-girl"] .confirm-panel::after,
|
|
:root[data-theme-palette="magical-girl"] .drawer-panel::after {
|
|
inset: -14px;
|
|
background-image: var(--frame-accessory-image);
|
|
background-size: var(--frame-accessory-size);
|
|
background-repeat: no-repeat;
|
|
background-position: right -4px top -6px;
|
|
opacity: var(--frame-accessory-opacity);
|
|
filter: drop-shadow(0 0 4px rgba(255, 119, 200, 0.58)) drop-shadow(0 0 2px rgba(255, 221, 117, 0.42));
|
|
}
|
|
|
|
:root[data-theme-palette="mecha-black"] .metric-card::before,
|
|
:root[data-theme-palette="mecha-black"] .overview-card::before,
|
|
:root[data-theme-palette="mecha-black"] .console-panel::before,
|
|
:root[data-theme-palette="mecha-black"] .catalog-card::before,
|
|
:root[data-theme-palette="mecha-black"] .server-card::before,
|
|
:root[data-theme-palette="mecha-black"] .server-detail-header::before {
|
|
background: linear-gradient(135deg, rgba(72, 230, 255, 0.72), rgba(255, 184, 77, 0.42), rgba(72, 230, 255, 0.18));
|
|
opacity: 0.76;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .app-sidebar {
|
|
background:
|
|
radial-gradient(circle at 92% 3%, rgba(255, 255, 255, 0.18) 0 2px, transparent 3px),
|
|
linear-gradient(180deg, rgba(8, 10, 16, 0.42), rgba(8, 10, 16, 0.3));
|
|
}
|
|
|
|
:root[data-custom-background="true"] {
|
|
--frame-accessory-opacity: 0.04;
|
|
--surface: rgba(5, 10, 16, 0.76);
|
|
--surface-solid: rgba(5, 10, 16, 0.92);
|
|
--surface-raised: rgba(7, 13, 20, 0.82);
|
|
--glass-tint: transparent;
|
|
--glass-wash: linear-gradient(145deg, rgba(255, 255, 255, 0.08), rgba(5, 10, 16, 0.76) 44%, rgba(255, 255, 255, 0.03));
|
|
--panel-material: linear-gradient(145deg, rgba(255, 255, 255, 0.075), rgba(5, 10, 16, 0.86) 48%, rgba(5, 10, 16, 0.76));
|
|
--panel-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.13), inset 0 0 0 1px rgba(255, 255, 255, 0.045), 0 18px 38px rgba(0, 0, 0, 0.32);
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] {
|
|
--frame-accessory-opacity: 0.82;
|
|
--surface: rgba(34, 27, 34, 0.5);
|
|
--surface-solid: rgba(24, 20, 26, 0.78);
|
|
--surface-raised: rgba(44, 34, 43, 0.58);
|
|
--line: rgba(255, 185, 226, 0.52);
|
|
--line-strong: rgba(255, 236, 249, 0.78);
|
|
--glass-wash: linear-gradient(145deg, rgba(255, 236, 249, 0.16), rgba(38, 30, 38, 0.48) 46%, rgba(255, 221, 117, 0.06));
|
|
--panel-material: linear-gradient(145deg, rgba(255, 246, 253, 0.14), rgba(39, 31, 39, 0.5) 44%, rgba(24, 21, 27, 0.46));
|
|
--panel-shadow: inset 0 1px 0 rgba(255, 246, 253, 0.3), inset 0 0 0 1px rgba(255, 185, 226, 0.12), 0 16px 34px rgba(20, 10, 18, 0.26), 0 0 20px rgba(255, 119, 200, 0.14);
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .app-sidebar {
|
|
border-right-color: rgba(255, 226, 244, 0.42);
|
|
background:
|
|
linear-gradient(180deg, rgba(52, 37, 50, 0.66), rgba(22, 20, 27, 0.58)),
|
|
rgba(20, 18, 24, 0.42);
|
|
-webkit-backdrop-filter: blur(14px) saturate(1.04);
|
|
backdrop-filter: blur(14px) saturate(1.04);
|
|
box-shadow: inset -1px 0 0 rgba(255, 246, 253, 0.18), 10px 0 28px rgba(18, 10, 17, 0.22), 0 0 18px rgba(255, 119, 200, 0.1);
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .page-header > div:first-child {
|
|
border-color: rgba(255, 226, 244, 0.28);
|
|
background:
|
|
linear-gradient(135deg, rgba(255, 246, 253, 0.13), transparent 36%),
|
|
rgba(38, 30, 38, 0.48);
|
|
-webkit-backdrop-filter: blur(8px) saturate(1.02);
|
|
backdrop-filter: blur(8px) saturate(1.02);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .app-sidebar {
|
|
border-right-color: rgba(210, 239, 246, 0.24);
|
|
background:
|
|
linear-gradient(180deg, rgba(5, 10, 16, 0.76), rgba(5, 9, 14, 0.68)),
|
|
rgba(4, 8, 12, 0.58);
|
|
-webkit-backdrop-filter: blur(18px) saturate(0.9);
|
|
backdrop-filter: blur(18px) saturate(0.9);
|
|
box-shadow: inset -1px 0 0 rgba(255, 255, 255, 0.12), 10px 0 28px rgba(0, 0, 0, 0.22);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .app-brand-subtitle,
|
|
:root[data-custom-background="true"] .provider-id,
|
|
:root[data-custom-background="true"] .app-menu-toolbar,
|
|
:root[data-custom-background="true"] .profile-settings-form label,
|
|
:root[data-custom-background="true"] .profile-form label {
|
|
color: rgba(222, 242, 248, 0.72);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .app-nav-copy strong,
|
|
:root[data-custom-background="true"] .app-brand strong,
|
|
:root[data-custom-background="true"] .profile-settings-hero h2,
|
|
:root[data-custom-background="true"] .page-title,
|
|
:root[data-custom-background="true"] .panel-header h2,
|
|
:root[data-custom-background="true"] .form-header h2 {
|
|
color: rgba(247, 253, 255, 0.96);
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.34);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .app-nav-icon,
|
|
:root[data-custom-background="true"] .app-nav-group-button,
|
|
:root[data-custom-background="true"] .page-kicker,
|
|
:root[data-custom-background="true"] .profile-settings-hero p,
|
|
:root[data-custom-background="true"] .theme-background-note,
|
|
:root[data-custom-background="true"] .metric-detail,
|
|
:root[data-custom-background="true"] .overview-card p,
|
|
:root[data-custom-background="true"] .catalog-card p {
|
|
color: rgba(224, 243, 249, 0.82);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .page-header > div:first-child {
|
|
display: grid;
|
|
justify-items: start;
|
|
padding: 7px 12px 9px;
|
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
border-radius: 8px;
|
|
background:
|
|
linear-gradient(135deg, rgba(255, 255, 255, 0.055), transparent 36%),
|
|
rgba(5, 10, 16, 0.38);
|
|
-webkit-backdrop-filter: blur(10px) saturate(0.8);
|
|
backdrop-filter: blur(10px) saturate(0.8);
|
|
box-shadow: 0 10px 22px rgba(0, 0, 0, 0.18);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .page-kicker {
|
|
margin-bottom: 4px;
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.42);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .app-nav-item-active {
|
|
background:
|
|
linear-gradient(90deg, color-mix(in srgb, var(--accent) 72%, transparent) 0 3px, transparent 3px),
|
|
linear-gradient(135deg, rgba(7, 16, 23, 0.78), rgba(7, 14, 20, 0.56));
|
|
border-color: color-mix(in srgb, var(--accent) 64%, rgba(255, 255, 255, 0.18));
|
|
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12), 0 8px 22px rgba(0, 0, 0, 0.22);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .metric-card,
|
|
:root[data-custom-background="true"] .overview-card,
|
|
:root[data-custom-background="true"] .console-panel,
|
|
:root[data-custom-background="true"] .catalog-card,
|
|
:root[data-custom-background="true"] .server-card,
|
|
:root[data-custom-background="true"] .server-detail-header,
|
|
:root[data-custom-background="true"] .server-toolbar,
|
|
:root[data-custom-background="true"] .state-view,
|
|
:root[data-custom-background="true"] .resource-table-wrap,
|
|
:root[data-custom-background="true"] .provider-table-wrap,
|
|
:root[data-custom-background="true"] .server-table-wrap,
|
|
:root[data-custom-background="true"] .plugin-group,
|
|
:root[data-custom-background="true"] .operation-item,
|
|
:root[data-custom-background="true"] .confirm-panel,
|
|
:root[data-custom-background="true"] .drawer-panel {
|
|
-webkit-backdrop-filter: blur(16px) saturate(0.78);
|
|
backdrop-filter: blur(16px) saturate(0.78);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .metric-card,
|
|
:root[data-custom-background="true"] .overview-card,
|
|
:root[data-custom-background="true"] .console-panel,
|
|
:root[data-custom-background="true"] .catalog-card,
|
|
:root[data-custom-background="true"] .server-card,
|
|
:root[data-custom-background="true"] .server-detail-header,
|
|
:root[data-custom-background="true"] .server-toolbar,
|
|
:root[data-custom-background="true"] .state-view,
|
|
:root[data-custom-background="true"] .drawer-panel,
|
|
:root[data-custom-background="true"] .confirm-panel,
|
|
:root[data-custom-background="true"] .plugin-group,
|
|
:root[data-custom-background="true"] .operation-item,
|
|
:root[data-custom-background="true"] .resource-table-wrap,
|
|
:root[data-custom-background="true"] .provider-table-wrap,
|
|
:root[data-custom-background="true"] .server-table-wrap {
|
|
background:
|
|
linear-gradient(135deg, rgba(255, 255, 255, 0.065), transparent 30%),
|
|
linear-gradient(180deg, rgba(5, 10, 16, 0.86), rgba(5, 10, 16, 0.78));
|
|
border-color: color-mix(in srgb, var(--line-strong) 44%, rgba(255, 255, 255, 0.16));
|
|
-webkit-backdrop-filter: blur(16px) saturate(0.78);
|
|
backdrop-filter: blur(16px) saturate(0.78);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), inset 0 0 0 1px rgba(255, 255, 255, 0.04), 0 16px 34px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .metric-card,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .overview-card,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .console-panel,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .catalog-card,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-card,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-detail-header,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-toolbar,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .state-view,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .drawer-panel,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .confirm-panel,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .plugin-group,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .operation-item,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .resource-table-wrap,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .provider-table-wrap,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-table-wrap {
|
|
background:
|
|
radial-gradient(circle at 100% 0, rgba(255, 185, 226, 0.18), transparent 30%),
|
|
linear-gradient(135deg, rgba(255, 246, 253, 0.13), transparent 32%),
|
|
linear-gradient(180deg, rgba(42, 32, 41, 0.42), rgba(24, 21, 27, 0.36));
|
|
border-color: color-mix(in srgb, var(--line-strong) 76%, rgba(255, 255, 255, 0.2));
|
|
-webkit-backdrop-filter: none;
|
|
backdrop-filter: none;
|
|
box-shadow: inset 0 1px 0 rgba(255, 246, 253, 0.28), inset 0 0 0 1px rgba(255, 185, 226, 0.1), 0 16px 32px rgba(18, 10, 17, 0.26), 0 0 20px rgba(255, 119, 200, 0.14);
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-toolbar,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .state-view {
|
|
position: relative;
|
|
isolation: isolate;
|
|
overflow: visible;
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-toolbar::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .state-view::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: -14px;
|
|
border-radius: inherit;
|
|
background-image: var(--frame-accessory-image);
|
|
background-size: var(--frame-accessory-size);
|
|
background-repeat: no-repeat;
|
|
background-position: right -4px top -6px;
|
|
opacity: var(--frame-accessory-opacity);
|
|
filter: drop-shadow(0 0 4px rgba(255, 119, 200, 0.62)) drop-shadow(0 0 2px rgba(255, 221, 117, 0.46));
|
|
z-index: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-toolbar > *,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .state-view > * {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .metric-card::before,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .overview-card::before,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .console-panel::before,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .catalog-card::before,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-card::before,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-detail-header::before {
|
|
background: linear-gradient(180deg, rgba(255, 246, 253, 0.96), rgba(255, 221, 117, 0.72), rgba(255, 119, 200, 0.78));
|
|
opacity: 0.84;
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .metric-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .overview-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .console-panel::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .catalog-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-detail-header::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-toolbar::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .state-view::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .confirm-panel::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .drawer-panel::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .resource-table-wrap::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .provider-table-wrap::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-table-wrap::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .plugin-group::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .operation-item::after {
|
|
inset: -14px;
|
|
background-image: var(--frame-accessory-image);
|
|
background-size: var(--frame-accessory-size);
|
|
background-repeat: no-repeat;
|
|
background-position: right -4px top -6px;
|
|
opacity: var(--frame-accessory-opacity);
|
|
filter: drop-shadow(0 0 4px rgba(255, 119, 200, 0.62)) drop-shadow(0 0 2px rgba(255, 221, 117, 0.46));
|
|
}
|
|
|
|
:root[data-custom-background="true"] .metric-card::after,
|
|
:root[data-custom-background="true"] .overview-card::after,
|
|
:root[data-custom-background="true"] .console-panel::after,
|
|
:root[data-custom-background="true"] .catalog-card::after,
|
|
:root[data-custom-background="true"] .server-card::after,
|
|
:root[data-custom-background="true"] .server-detail-header::after,
|
|
:root[data-custom-background="true"] .server-toolbar::after,
|
|
:root[data-custom-background="true"] .state-view::after,
|
|
:root[data-custom-background="true"] .confirm-panel::after,
|
|
:root[data-custom-background="true"] .drawer-panel::after,
|
|
:root[data-custom-background="true"] .resource-table-wrap::after,
|
|
:root[data-custom-background="true"] .provider-table-wrap::after,
|
|
:root[data-custom-background="true"] .server-table-wrap::after,
|
|
:root[data-custom-background="true"] .plugin-group::after,
|
|
:root[data-custom-background="true"] .operation-item::after {
|
|
opacity: 0.04;
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .metric-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .overview-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .console-panel::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .catalog-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-card::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-detail-header::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-toolbar::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .state-view::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .confirm-panel::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .drawer-panel::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .resource-table-wrap::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .provider-table-wrap::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .server-table-wrap::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .plugin-group::after,
|
|
:root[data-custom-background="true"][data-theme-palette="magical-girl"] .operation-item::after {
|
|
opacity: var(--frame-accessory-opacity);
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .resource-table-wrap::after,
|
|
:root[data-theme-palette="magical-girl"] .provider-table-wrap::after,
|
|
:root[data-theme-palette="magical-girl"] .server-table-wrap::after {
|
|
inset: -10px;
|
|
background-image: var(--frame-accessory-image);
|
|
background-size: 60px 40px;
|
|
background-position: right -2px top -4px;
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] :where(
|
|
.metric-card,
|
|
.overview-card,
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.server-detail-header,
|
|
.plugin-group,
|
|
.operation-item,
|
|
.confirm-panel
|
|
) {
|
|
overflow: visible;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .global-particle-layer {
|
|
opacity: 0.03;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .profile-settings-form input,
|
|
:root[data-custom-background="true"] .profile-settings-form textarea,
|
|
:root[data-custom-background="true"] .profile-form input,
|
|
:root[data-custom-background="true"] .provider-form input,
|
|
:root[data-custom-background="true"] .provider-form select,
|
|
:root[data-custom-background="true"] .provider-form textarea,
|
|
:root[data-custom-background="true"] .server-toolbar input[type="search"],
|
|
:root[data-custom-background="true"] .server-toolbar select,
|
|
:root[data-custom-background="true"] .log-filter-bar input,
|
|
:root[data-custom-background="true"] .log-filter-bar select {
|
|
background: rgba(5, 10, 16, 0.94);
|
|
border-color: color-mix(in srgb, var(--accent) 48%, rgba(255, 255, 255, 0.18));
|
|
color: rgba(247, 253, 255, 0.96);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 8px 18px rgba(0, 0, 0, 0.18);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .palette-option,
|
|
:root[data-custom-background="true"] .background-preset-option,
|
|
:root[data-custom-background="true"] .theme-upload,
|
|
:root[data-custom-background="true"] .state-action,
|
|
:root[data-custom-background="true"] .action-strip button,
|
|
:root[data-custom-background="true"] .segmented-button,
|
|
:root[data-custom-background="true"] .icon-command,
|
|
:root[data-custom-background="true"] .row-actions button,
|
|
:root[data-custom-background="true"] .app-account-button,
|
|
:root[data-custom-background="true"] .app-session {
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.055), transparent 34%), rgba(5, 10, 16, 0.84);
|
|
border-color: color-mix(in srgb, var(--line-strong) 40%, rgba(255, 255, 255, 0.14));
|
|
color: rgba(229, 246, 251, 0.9);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 7px 16px rgba(0, 0, 0, 0.16);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .palette-option-active,
|
|
:root[data-custom-background="true"] .background-preset-option-active,
|
|
:root[data-custom-background="true"] .segmented-button-active {
|
|
background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 10%, transparent), rgba(5, 10, 16, 0.78));
|
|
border-color: color-mix(in srgb, var(--accent) 58%, rgba(255, 255, 255, 0.18));
|
|
color: rgba(247, 253, 255, 0.96);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.16), 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent), 0 9px 20px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .profile-save-button,
|
|
:root[data-custom-background="true"] .primary-command {
|
|
background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 78%, #ffffff 6%), color-mix(in srgb, var(--pink) 58%, #0b1620 42%));
|
|
border-color: color-mix(in srgb, var(--accent-deep) 72%, rgba(255, 255, 255, 0.22));
|
|
color: #ffffff;
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.36);
|
|
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28), 0 0 18px color-mix(in srgb, var(--accent) 24%, transparent);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .page-status,
|
|
:root[data-custom-background="true"] .job-chip,
|
|
:root[data-custom-background="true"] .status-disabled,
|
|
:root[data-custom-background="true"] .status-pending,
|
|
:root[data-custom-background="true"] .result-badge-pending {
|
|
background: rgba(76, 54, 18, 0.62);
|
|
border: 1px solid rgba(255, 214, 109, 0.42);
|
|
color: #ffe6a3;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .page-status-ready,
|
|
:root[data-custom-background="true"] .status-active,
|
|
:root[data-custom-background="true"] .result-badge-succeeded,
|
|
:root[data-custom-background="true"] .action-result-success {
|
|
background: rgba(79, 255, 215, 0.16);
|
|
border: 1px solid rgba(79, 255, 215, 0.36);
|
|
color: #b9fff2;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .status-error,
|
|
:root[data-custom-background="true"] .result-badge-failed,
|
|
:root[data-custom-background="true"] .action-result-failed {
|
|
background: rgba(255, 90, 110, 0.16);
|
|
border: 1px solid rgba(255, 138, 157, 0.36);
|
|
color: #ffc6d0;
|
|
}
|
|
|
|
:root[data-custom-background="true"] .state-error {
|
|
background:
|
|
linear-gradient(135deg, rgba(255, 126, 153, 0.08), transparent 34%),
|
|
linear-gradient(180deg, rgba(12, 10, 16, 0.9), rgba(8, 10, 15, 0.82));
|
|
border-color: rgba(255, 138, 157, 0.46);
|
|
color: rgba(248, 238, 244, 0.9);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 16px 36px rgba(0, 0, 0, 0.34);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .state-error p {
|
|
color: rgba(255, 211, 224, 0.82);
|
|
}
|
|
|
|
:root[data-custom-background="true"] .state-error strong {
|
|
color: rgba(255, 246, 250, 0.96);
|
|
}
|
|
|
|
.panel-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
margin-bottom: 12px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.panel-header h2,
|
|
.panel-header h3 {
|
|
margin: 0;
|
|
color: var(--ink);
|
|
font-size: 17px;
|
|
line-height: 1.25;
|
|
}
|
|
|
|
.action-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
color: var(--ink-soft);
|
|
}
|
|
|
|
/* ---- shared state views ---- */
|
|
|
|
.state-view {
|
|
display: grid;
|
|
justify-items: center;
|
|
align-content: center;
|
|
gap: 8px;
|
|
min-height: 130px;
|
|
padding: 20px;
|
|
border: 1px dashed var(--line-strong);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--surface);
|
|
color: var(--ink-soft);
|
|
text-align: center;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 12px 30px var(--glass-shadow);
|
|
}
|
|
|
|
.state-view p {
|
|
margin: 0;
|
|
max-width: 460px;
|
|
font-size: 13px;
|
|
color: var(--ink-faint);
|
|
}
|
|
|
|
.state-view strong {
|
|
color: var(--ink);
|
|
}
|
|
|
|
.state-icon {
|
|
display: inline-flex;
|
|
color: var(--accent);
|
|
}
|
|
|
|
.state-error {
|
|
border-color: rgba(214, 51, 92, 0.5);
|
|
background: var(--danger-soft);
|
|
}
|
|
|
|
.state-error .state-icon {
|
|
color: var(--danger);
|
|
}
|
|
|
|
.state-compact {
|
|
min-height: 56px;
|
|
padding: 10px;
|
|
grid-auto-flow: column;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.state-spinner {
|
|
animation: state-spin 1s linear infinite;
|
|
}
|
|
|
|
@keyframes state-spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
.state-action {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
min-height: 34px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
background: var(--surface-solid);
|
|
color: var(--accent-deep);
|
|
cursor: pointer;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.state-action:hover,
|
|
.state-action:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
}
|
|
|
|
.result-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
min-height: 26px;
|
|
padding: 0 8px;
|
|
border-radius: 999px;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.result-badge-pending {
|
|
color: #6b4b00;
|
|
background: var(--gold-soft);
|
|
}
|
|
|
|
.result-badge-succeeded {
|
|
color: var(--success);
|
|
background: var(--success-soft);
|
|
}
|
|
|
|
.result-badge-failed {
|
|
color: var(--danger);
|
|
background: var(--danger-soft);
|
|
}
|
|
|
|
.diagnostic-summary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 12px;
|
|
color: var(--ink-soft);
|
|
}
|
|
|
|
.diagnostic-summary code {
|
|
padding: 2px 6px;
|
|
border-radius: 6px;
|
|
background: var(--accent-soft);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.diagnostic-copy {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
min-height: 24px;
|
|
padding: 0 6px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 6px;
|
|
background: var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
}
|
|
|
|
/* ---- tables ---- */
|
|
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap {
|
|
min-width: 0;
|
|
overflow: auto;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--glass-tint), var(--surface);
|
|
backdrop-filter: blur(16px) saturate(1.12);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), inset 0 0 0 1px var(--diamond-line), 0 14px 34px var(--glass-shadow);
|
|
position: relative;
|
|
isolation: isolate;
|
|
}
|
|
|
|
.resource-table-wrap::before,
|
|
.provider-table-wrap::before,
|
|
.server-table-wrap::before,
|
|
.plugin-group::before,
|
|
.operation-item::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: inherit;
|
|
padding: 1px;
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.74), color-mix(in srgb, var(--accent) 26%, transparent), rgba(255, 255, 255, 0.2));
|
|
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
|
|
mask-composite: exclude;
|
|
opacity: 0.72;
|
|
z-index: 2;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.resource-table-wrap::after,
|
|
.provider-table-wrap::after,
|
|
.server-table-wrap::after,
|
|
.plugin-group::after,
|
|
.operation-item::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: inherit;
|
|
background: var(--frame-accessory-top), var(--frame-accessory-bottom), var(--jelly-highlight);
|
|
background-size: var(--frame-accessory-size), auto;
|
|
background-repeat: no-repeat, no-repeat, no-repeat;
|
|
background-position: right 6px top 5px, left 6px bottom 5px, center;
|
|
opacity: 0.16;
|
|
z-index: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
:root[data-theme-palette="magical-girl"] .resource-table-wrap::after,
|
|
:root[data-theme-palette="magical-girl"] .provider-table-wrap::after,
|
|
:root[data-theme-palette="magical-girl"] .server-table-wrap::after,
|
|
:root[data-theme-palette="magical-girl"] .plugin-group::after,
|
|
:root[data-theme-palette="magical-girl"] .operation-item::after {
|
|
inset: -12px;
|
|
background-image: var(--frame-accessory-image);
|
|
background-size: 62px 40px;
|
|
background-position: right -3px top -4px;
|
|
opacity: var(--frame-accessory-opacity);
|
|
}
|
|
|
|
.resource-table,
|
|
.provider-table {
|
|
width: 100%;
|
|
min-width: 760px;
|
|
border-collapse: collapse;
|
|
}
|
|
|
|
.provider-table {
|
|
min-width: 780px;
|
|
table-layout: fixed;
|
|
}
|
|
|
|
.resource-table th,
|
|
.resource-table td,
|
|
.provider-table th,
|
|
.provider-table td {
|
|
padding: 12px;
|
|
border-bottom: 1px solid rgba(124, 92, 255, 0.1);
|
|
text-align: left;
|
|
vertical-align: middle;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.resource-table th,
|
|
.provider-table th {
|
|
color: var(--ink-faint);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
background: var(--accent-soft);
|
|
}
|
|
|
|
.server-table {
|
|
min-width: 860px;
|
|
}
|
|
|
|
.server-panel-header {
|
|
margin: 0;
|
|
padding: 14px;
|
|
border-bottom: 1px solid rgba(124, 92, 255, 0.12);
|
|
}
|
|
|
|
/* ---- buttons ---- */
|
|
|
|
.action-strip {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
}
|
|
|
|
.action-strip button,
|
|
.segmented-button,
|
|
.icon-command,
|
|
.primary-command,
|
|
.row-actions button,
|
|
.table-link-button {
|
|
border: 1px solid var(--line-strong);
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), inset 0 -1px 0 rgba(255, 255, 255, 0.28), 0 8px 18px var(--glass-shadow);
|
|
}
|
|
|
|
.action-strip button {
|
|
min-height: 36px;
|
|
padding: 0 12px;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.segmented-button {
|
|
min-height: 34px;
|
|
padding: 0 12px;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.segmented-button-active {
|
|
border-color: var(--accent);
|
|
background: var(--glass-wash), var(--accent-soft);
|
|
color: var(--accent-deep);
|
|
font-weight: 700;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 8px 20px var(--candy-glow);
|
|
}
|
|
|
|
.icon-command,
|
|
.primary-command {
|
|
min-height: 36px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
border-radius: 8px;
|
|
padding: 0 12px;
|
|
}
|
|
|
|
.action-strip button:hover,
|
|
.action-strip button:focus-visible,
|
|
.icon-command:hover,
|
|
.icon-command:focus-visible,
|
|
.primary-command:hover,
|
|
.primary-command:focus-visible,
|
|
.row-actions button:hover,
|
|
.row-actions button:focus-visible,
|
|
.table-link-button:hover,
|
|
.table-link-button:focus-visible,
|
|
.segmented-button:hover,
|
|
.segmented-button:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
color: var(--ink);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft), 0 12px 26px var(--glass-shadow);
|
|
}
|
|
|
|
.primary-command {
|
|
width: 100%;
|
|
background:
|
|
var(--corner-sparkle),
|
|
linear-gradient(145deg, rgba(255, 255, 255, 0.72), transparent 36%),
|
|
linear-gradient(135deg, var(--accent), var(--pink));
|
|
background-size: 48px 48px, auto, auto;
|
|
background-position: right 8px top 4px, center, center;
|
|
background-repeat: no-repeat;
|
|
border-color: var(--accent-deep);
|
|
color: #ffffff;
|
|
font-weight: 700;
|
|
box-shadow: 0 12px 26px var(--candy-glow), inset 0 1px 0 var(--crystal-rim), inset 0 -2px 0 rgba(255, 255, 255, 0.24), 0 0 18px var(--moonbeam);
|
|
}
|
|
|
|
.action-strip .primary-command {
|
|
width: auto;
|
|
min-width: 112px;
|
|
}
|
|
|
|
.provider-form .primary-command,
|
|
.catalog-card .primary-command {
|
|
width: 100%;
|
|
}
|
|
|
|
.primary-command:disabled,
|
|
.icon-command:disabled {
|
|
opacity: 0.55;
|
|
cursor: not-allowed;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
}
|
|
|
|
.danger-command {
|
|
border-color: rgba(214, 51, 92, 0.5);
|
|
color: var(--danger);
|
|
}
|
|
|
|
.danger-command:hover,
|
|
.danger-command:focus-visible {
|
|
border-color: var(--danger);
|
|
}
|
|
|
|
/* ---- catalog / detail lists ---- */
|
|
|
|
.catalog-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 14px;
|
|
}
|
|
|
|
.catalog-card {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
|
|
.catalog-card-active {
|
|
border-color: var(--accent);
|
|
box-shadow: var(--panel-shadow), 0 0 0 2px var(--accent-soft);
|
|
}
|
|
|
|
.catalog-card p {
|
|
margin: 0;
|
|
color: var(--ink-soft);
|
|
font-size: 13px;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.detail-list {
|
|
display: grid;
|
|
gap: 10px;
|
|
margin: 0;
|
|
}
|
|
|
|
.detail-list div {
|
|
display: grid;
|
|
grid-template-columns: 96px minmax(0, 1fr);
|
|
gap: 10px;
|
|
}
|
|
|
|
.detail-list dt {
|
|
color: var(--ink-faint);
|
|
font-size: 13px;
|
|
}
|
|
|
|
.detail-list dd {
|
|
margin: 0;
|
|
color: var(--ink-soft);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.resource-list {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.resource-list-item {
|
|
display: grid;
|
|
grid-template-columns: minmax(180px, 1fr) auto minmax(140px, 1fr) minmax(140px, 1fr);
|
|
gap: 12px;
|
|
align-items: center;
|
|
padding: 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--glass-tint), var(--surface);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
min-width: 0;
|
|
}
|
|
|
|
.resource-list-item > * {
|
|
min-width: 0;
|
|
}
|
|
|
|
/* ---- page containers ---- */
|
|
|
|
.ai-providers-page,
|
|
.servers-page,
|
|
.server-detail-page,
|
|
.maintenance-page {
|
|
width: min(100%, 1180px);
|
|
display: grid;
|
|
gap: 16px;
|
|
}
|
|
|
|
.ai-provider-header {
|
|
min-height: 52px;
|
|
}
|
|
|
|
.ai-provider-metrics {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
|
|
.ai-provider-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-height: 40px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.ai-provider-workspace,
|
|
.server-workspace {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
|
|
gap: 14px;
|
|
align-items: start;
|
|
}
|
|
|
|
.ai-provider-workspace > *,
|
|
.server-workspace > * {
|
|
min-width: 0;
|
|
}
|
|
|
|
.provider-form {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--glass-tint), var(--surface);
|
|
backdrop-filter: blur(18px) saturate(1.2);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), inset 0 0 0 1px var(--diamond-line), 0 16px 36px var(--glass-shadow);
|
|
display: grid;
|
|
gap: 12px;
|
|
padding: 14px;
|
|
align-self: start;
|
|
}
|
|
|
|
.job-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
min-height: 26px;
|
|
padding: 0 8px;
|
|
border-radius: 999px;
|
|
color: #6b4b00;
|
|
background: var(--gold-soft);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.provider-row-active {
|
|
background: var(--accent-soft);
|
|
}
|
|
|
|
.provider-row-active td:first-child {
|
|
box-shadow: inset 3px 0 0 var(--accent);
|
|
}
|
|
|
|
.table-link-button {
|
|
display: block;
|
|
width: 100%;
|
|
min-height: 28px;
|
|
padding: 0;
|
|
border: 0;
|
|
color: var(--accent-deep);
|
|
background: transparent;
|
|
text-align: left;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.provider-id {
|
|
display: block;
|
|
color: var(--ink-faint);
|
|
font-size: 12px;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.status-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
min-height: 26px;
|
|
padding: 0 8px;
|
|
border-radius: 999px;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
white-space: nowrap;
|
|
box-shadow: inset 0 1px 0 color-mix(in srgb, currentColor 18%, transparent);
|
|
}
|
|
|
|
.status-active {
|
|
color: var(--success);
|
|
background: var(--success-soft);
|
|
}
|
|
|
|
.status-disabled {
|
|
color: #6b4b00;
|
|
background: var(--gold-soft);
|
|
}
|
|
|
|
.status-pending {
|
|
color: #6b4b00;
|
|
background: var(--gold-soft);
|
|
}
|
|
|
|
.status-error {
|
|
color: var(--danger);
|
|
background: var(--danger-soft);
|
|
}
|
|
|
|
.secret-ref {
|
|
display: block;
|
|
max-width: 100%;
|
|
color: var(--ink-soft);
|
|
font-size: 12px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.row-actions {
|
|
display: flex;
|
|
gap: 6px;
|
|
justify-content: flex-end;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.row-actions button {
|
|
width: 32px;
|
|
height: 32px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 8px;
|
|
padding: 0;
|
|
}
|
|
|
|
.row-actions button:disabled {
|
|
border-color: var(--line);
|
|
color: #9aa8ae;
|
|
background: rgba(243, 246, 247, 0.9);
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.form-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
min-height: 32px;
|
|
}
|
|
|
|
.form-header h2 {
|
|
margin: 0;
|
|
color: var(--ink);
|
|
font-size: 17px;
|
|
line-height: 1.25;
|
|
}
|
|
|
|
.action-result {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
min-height: 26px;
|
|
padding: 0 8px;
|
|
border-radius: 999px;
|
|
font-size: 12px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.action-result-success {
|
|
color: var(--success);
|
|
background: var(--success-soft);
|
|
}
|
|
|
|
.action-result-failed {
|
|
color: var(--danger);
|
|
background: var(--danger-soft);
|
|
}
|
|
|
|
.provider-form label {
|
|
display: grid;
|
|
gap: 6px;
|
|
color: var(--ink-soft);
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.provider-form input,
|
|
.provider-form select,
|
|
.provider-form textarea {
|
|
width: 100%;
|
|
min-height: 38px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
padding: 0 10px;
|
|
background: var(--surface-solid);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
}
|
|
|
|
.provider-form textarea {
|
|
min-height: 120px;
|
|
padding: 10px;
|
|
resize: vertical;
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.provider-form input:focus,
|
|
.provider-form select:focus,
|
|
.provider-form textarea:focus {
|
|
border-color: var(--accent);
|
|
outline: 2px solid var(--accent-soft);
|
|
}
|
|
|
|
.provider-form input:disabled {
|
|
color: var(--ink-faint);
|
|
background: rgba(243, 246, 247, 0.9);
|
|
}
|
|
|
|
.form-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 10px;
|
|
}
|
|
|
|
/* ---- server cards ---- */
|
|
|
|
.server-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
min-width: 0;
|
|
padding: 10px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--frosted-surface), var(--glass-tint), color-mix(in srgb, var(--surface) 82%, transparent);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
}
|
|
|
|
.server-toolbar input[type="search"] {
|
|
flex: 1 1 220px;
|
|
min-height: 38px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
padding: 0 12px;
|
|
background: var(--surface-solid);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
}
|
|
|
|
.server-toolbar select {
|
|
min-height: 38px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
padding: 0 10px;
|
|
background: var(--surface-solid);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
min-width: 180px;
|
|
}
|
|
|
|
.server-toolbar select:focus {
|
|
border-color: var(--accent);
|
|
outline: 2px solid var(--accent-soft);
|
|
}
|
|
|
|
.server-toolbar input[type="search"]:focus {
|
|
border-color: var(--accent);
|
|
outline: 2px solid var(--accent-soft);
|
|
}
|
|
|
|
.server-card-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(310px, 1fr));
|
|
gap: 14px;
|
|
}
|
|
|
|
.server-card {
|
|
display: grid;
|
|
gap: 12px;
|
|
padding: 16px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--frosted-surface), var(--glass-tint), var(--surface);
|
|
backdrop-filter: blur(22px) saturate(1.28);
|
|
text-align: left;
|
|
cursor: pointer;
|
|
transition: transform 120ms ease, border-color 120ms ease;
|
|
box-shadow: var(--jelly-inset), inset 0 0 0 1px var(--diamond-line), 0 18px 42px var(--glass-shadow), 0 0 28px rgba(255, 255, 255, 0.2);
|
|
position: relative;
|
|
overflow: hidden;
|
|
min-width: 0;
|
|
}
|
|
|
|
.server-card:hover,
|
|
.server-card:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.server-card-head {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
}
|
|
|
|
.server-card-head > span:first-child {
|
|
min-width: 0;
|
|
}
|
|
|
|
.server-card-head strong {
|
|
display: block;
|
|
font-size: 16px;
|
|
color: var(--ink);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.server-card-stats {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.server-card-stat {
|
|
display: grid;
|
|
gap: 2px;
|
|
padding: 8px;
|
|
border-radius: 8px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--accent-soft);
|
|
min-height: 52px;
|
|
align-content: center;
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
min-width: 0;
|
|
}
|
|
|
|
.server-card-stat span {
|
|
color: var(--ink-faint);
|
|
font-size: 11px;
|
|
}
|
|
|
|
.server-card-stat strong {
|
|
font-size: 14px;
|
|
color: var(--ink);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.server-card-meters {
|
|
display: grid;
|
|
gap: 6px;
|
|
}
|
|
|
|
.usage-meter {
|
|
display: grid;
|
|
grid-template-columns: 52px minmax(0, 1fr) 44px;
|
|
gap: 8px;
|
|
align-items: center;
|
|
font-size: 12px;
|
|
color: var(--ink-soft);
|
|
}
|
|
|
|
.usage-meter-track {
|
|
height: 8px;
|
|
border-radius: 999px;
|
|
background: rgba(255, 255, 255, 0.62);
|
|
box-shadow: inset 0 0 0 1px var(--line);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.usage-meter-fill {
|
|
height: 100%;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, var(--teal), var(--accent), var(--pink));
|
|
box-shadow: 0 0 10px var(--candy-glow);
|
|
}
|
|
|
|
.usage-meter-fill.usage-high {
|
|
background: linear-gradient(90deg, var(--gold), var(--danger));
|
|
}
|
|
|
|
.usage-meter-value {
|
|
text-align: right;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
}
|
|
|
|
/* ---- server detail ---- */
|
|
|
|
.server-detail-header {
|
|
display: grid;
|
|
gap: 12px;
|
|
padding: 18px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--glass-tint), var(--surface);
|
|
backdrop-filter: blur(22px) saturate(1.28);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), inset 0 0 0 1px var(--diamond-line), 0 18px 42px var(--glass-shadow), 0 0 24px rgba(255, 255, 255, 0.18);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.server-detail-title-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.server-detail-title-row > div:first-child {
|
|
min-width: 0;
|
|
}
|
|
|
|
.server-detail-title-row h1 {
|
|
margin: 0;
|
|
font-size: 24px;
|
|
color: var(--ink);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.server-detail-stat-strip {
|
|
display: grid;
|
|
grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.section-tabs {
|
|
display: flex;
|
|
gap: 6px;
|
|
flex-wrap: wrap;
|
|
padding: 8px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--frosted-surface), color-mix(in srgb, var(--surface) 72%, transparent);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
}
|
|
|
|
.section-tab {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
min-height: 38px;
|
|
padding: 0 14px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 999px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.section-tab:hover,
|
|
.section-tab:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
}
|
|
|
|
.section-tab-active {
|
|
background:
|
|
var(--corner-sparkle),
|
|
linear-gradient(145deg, rgba(255, 255, 255, 0.72), transparent 36%),
|
|
linear-gradient(135deg, var(--accent), var(--pink));
|
|
background-size: 46px 46px, auto, auto;
|
|
background-position: right 8px top 4px, center, center;
|
|
background-repeat: no-repeat;
|
|
border-color: var(--accent-deep);
|
|
color: #ffffff;
|
|
font-weight: 700;
|
|
box-shadow: 0 10px 24px var(--candy-glow), inset 0 1px 0 var(--crystal-rim), 0 0 18px var(--moonbeam);
|
|
}
|
|
|
|
.overview-two-col {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 14px;
|
|
}
|
|
|
|
/* ---- logs ---- */
|
|
|
|
.log-filter-bar {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
}
|
|
|
|
.log-filter-bar input,
|
|
.log-filter-bar select {
|
|
min-height: 36px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
padding: 0 10px;
|
|
background: var(--surface-solid);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.log-filter-bar input:focus,
|
|
.log-filter-bar select:focus {
|
|
border-color: var(--accent);
|
|
outline: 2px solid var(--accent-soft);
|
|
}
|
|
|
|
.log-list {
|
|
display: grid;
|
|
gap: 4px;
|
|
max-height: 420px;
|
|
overflow: auto;
|
|
padding: 10px;
|
|
border-radius: 8px;
|
|
background:
|
|
radial-gradient(circle at 92% 0, rgba(255, 255, 255, 0.1), transparent 36%),
|
|
var(--code-surface);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.16), 0 14px 32px rgba(255, 255, 255, 0.12);
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
font-size: 12.5px;
|
|
}
|
|
|
|
.log-line {
|
|
display: grid;
|
|
grid-template-columns: 72px 64px minmax(0, 1fr);
|
|
gap: 10px;
|
|
width: 100%;
|
|
padding: 4px 8px;
|
|
border: 0;
|
|
border-radius: 6px;
|
|
background: transparent;
|
|
color: var(--code-ink);
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.log-line:hover,
|
|
.log-line:focus-visible {
|
|
background: rgba(124, 92, 255, 0.22);
|
|
outline: none;
|
|
}
|
|
|
|
.log-line time {
|
|
color: var(--code-muted);
|
|
}
|
|
|
|
.log-line .log-level {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.log-level-error {
|
|
color: #ff7a9c;
|
|
}
|
|
|
|
.log-level-warn {
|
|
color: #ffc861;
|
|
}
|
|
|
|
.log-level-info {
|
|
color: #7ce3d3;
|
|
}
|
|
|
|
.log-line span:last-child {
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
/* ---- drawer ---- */
|
|
|
|
.drawer-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 40;
|
|
background: rgba(61, 36, 65, 0.34);
|
|
backdrop-filter: blur(6px);
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.drawer-panel {
|
|
width: min(440px, 100%);
|
|
height: 100%;
|
|
overflow: auto;
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 14px;
|
|
padding: 20px;
|
|
background: var(--glass-wash), var(--glass-tint), var(--surface-raised);
|
|
backdrop-filter: blur(24px) saturate(1.28);
|
|
border-left: 1px solid var(--line);
|
|
box-shadow: inset 1px 0 0 var(--crystal-rim), -18px 0 42px var(--glass-shadow);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.plugin-detail-panel {
|
|
width: 100%;
|
|
height: auto;
|
|
overflow: visible;
|
|
border: 1px solid var(--line);
|
|
border-left: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
box-shadow: var(--panel-shadow);
|
|
}
|
|
|
|
.plugin-detail-actions {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.drawer-panel h2 {
|
|
margin: 0;
|
|
font-size: 18px;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.drawer-close {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
min-height: 34px;
|
|
padding: 0 12px;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 8px;
|
|
background: var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* ---- diff view ---- */
|
|
|
|
.diff-view {
|
|
display: grid;
|
|
gap: 2px;
|
|
padding: 12px;
|
|
border-radius: 8px;
|
|
background:
|
|
radial-gradient(circle at 92% 0, rgba(255, 255, 255, 0.1), transparent 36%),
|
|
var(--code-surface);
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
font-size: 12.5px;
|
|
max-height: 360px;
|
|
overflow: auto;
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.16), 0 14px 32px rgba(255, 255, 255, 0.12);
|
|
}
|
|
|
|
.diff-line {
|
|
display: grid;
|
|
grid-template-columns: 20px minmax(0, 1fr);
|
|
gap: 8px;
|
|
padding: 2px 8px;
|
|
border-radius: 4px;
|
|
color: var(--code-ink);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.diff-line-added {
|
|
background: rgba(25, 184, 166, 0.18);
|
|
color: #8df0dd;
|
|
}
|
|
|
|
.diff-line-removed {
|
|
background: rgba(214, 51, 92, 0.2);
|
|
color: #ff9cb6;
|
|
text-decoration: line-through;
|
|
}
|
|
|
|
/* ---- plugin control groups ---- */
|
|
|
|
.plugin-group {
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--glass-tint), var(--surface);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim), inset 0 0 0 1px var(--diamond-line);
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
|
|
.plugin-group .server-card-stats {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.plugin-group-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
width: 100%;
|
|
padding: 14px 16px;
|
|
border: 0;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.plugin-group-header strong {
|
|
color: var(--ink);
|
|
font-size: 15px;
|
|
}
|
|
|
|
.plugin-group-body {
|
|
display: grid;
|
|
gap: 10px;
|
|
padding: 0 16px 16px;
|
|
}
|
|
|
|
.plugin-control-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 12px;
|
|
align-items: center;
|
|
padding: 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--jelly-highlight), var(--glass-wash), rgba(255, 255, 255, 0.24);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
min-width: 0;
|
|
}
|
|
|
|
.plugin-control-row > div {
|
|
min-width: 0;
|
|
}
|
|
|
|
.plugin-control-row p {
|
|
margin: 2px 0 0;
|
|
color: var(--ink-faint);
|
|
font-size: 12.5px;
|
|
}
|
|
|
|
/* ---- operation history ---- */
|
|
|
|
.operation-list {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.operation-item {
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 12px 14px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--glass-wash), var(--glass-tint), var(--surface);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
position: relative;
|
|
overflow: hidden;
|
|
min-width: 0;
|
|
}
|
|
|
|
.operation-item-head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.operation-item-head > strong {
|
|
min-width: 0;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.operation-item-head strong {
|
|
color: var(--ink);
|
|
}
|
|
|
|
.operation-meta {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
color: var(--ink-faint);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.operation-meta span {
|
|
min-width: 0;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.inline-result-strip {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--frosted-surface), var(--surface);
|
|
box-shadow: inset 0 1px 0 var(--crystal-rim);
|
|
}
|
|
|
|
.operation-meta code {
|
|
padding: 1px 6px;
|
|
border-radius: 6px;
|
|
background: var(--accent-soft);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
/* ---- signals ---- */
|
|
|
|
.signal-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.signal-item {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
gap: 10px;
|
|
align-items: center;
|
|
width: 100%;
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--jelly-highlight), var(--glass-wash), var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.signal-item:hover,
|
|
.signal-item:focus-visible {
|
|
border-color: var(--accent);
|
|
outline: none;
|
|
}
|
|
|
|
.signal-item strong {
|
|
display: block;
|
|
color: var(--ink);
|
|
font-size: 13.5px;
|
|
}
|
|
|
|
.signal-item p {
|
|
margin: 2px 0 0;
|
|
font-size: 12.5px;
|
|
color: var(--ink-faint);
|
|
}
|
|
|
|
.signal-tone-warning .state-icon,
|
|
.signal-tone-warning svg {
|
|
color: var(--gold);
|
|
}
|
|
|
|
.signal-tone-error svg {
|
|
color: var(--danger);
|
|
}
|
|
|
|
.signal-tone-info svg {
|
|
color: var(--teal);
|
|
}
|
|
|
|
/* ---- confirm dialog ---- */
|
|
|
|
.confirm-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 50;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 16px;
|
|
background: rgba(61, 36, 65, 0.38);
|
|
backdrop-filter: blur(6px);
|
|
}
|
|
|
|
.confirm-panel {
|
|
width: min(460px, 100%);
|
|
display: grid;
|
|
gap: 14px;
|
|
padding: 20px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--frosted-surface), var(--glass-tint), var(--surface-raised);
|
|
backdrop-filter: blur(24px) saturate(1.28);
|
|
box-shadow: var(--jelly-inset), inset 0 0 0 1px var(--diamond-line), 0 18px 48px var(--glass-shadow), 0 0 34px var(--moonbeam);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.confirm-panel h2 {
|
|
margin: 0;
|
|
font-size: 18px;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.confirm-panel p {
|
|
margin: 0;
|
|
color: var(--ink-soft);
|
|
font-size: 14px;
|
|
}
|
|
|
|
.confirm-actions {
|
|
display: flex;
|
|
gap: 8px;
|
|
justify-content: flex-end;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.confirm-actions button {
|
|
min-height: 38px;
|
|
padding: 0 16px;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--line-strong);
|
|
background: var(--surface-solid);
|
|
color: var(--ink-soft);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.confirm-actions .confirm-primary {
|
|
background: linear-gradient(135deg, var(--accent), var(--accent-deep));
|
|
border-color: var(--accent-deep);
|
|
color: #ffffff;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.confirm-actions .confirm-danger {
|
|
background: var(--danger);
|
|
border-color: var(--danger);
|
|
color: #ffffff;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* ---- narrow screens ---- */
|
|
|
|
@media (max-width: 760px) {
|
|
.auth-shell {
|
|
padding: 14px;
|
|
place-items: stretch;
|
|
}
|
|
|
|
.auth-card {
|
|
align-self: center;
|
|
}
|
|
|
|
.management-form,
|
|
.user-management-item,
|
|
.profile-settings-hero,
|
|
.profile-settings-grid,
|
|
.profile-settings-form-row,
|
|
.profile-palette-grid,
|
|
.profile-background-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.user-actions,
|
|
.profile-settings-actions {
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.app-shell {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.app-sidebar {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 10;
|
|
width: 100%;
|
|
min-width: 0;
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 10px 12px;
|
|
align-items: center;
|
|
padding: 10px 12px;
|
|
border-right: 0;
|
|
border-bottom: 1px solid var(--line);
|
|
overflow: visible;
|
|
}
|
|
|
|
.app-brand {
|
|
min-height: 44px;
|
|
grid-template-columns: 40px minmax(0, 1fr);
|
|
}
|
|
|
|
.app-brand-mark {
|
|
width: 40px;
|
|
height: 40px;
|
|
flex-basis: 40px;
|
|
}
|
|
|
|
.app-brand strong {
|
|
font-size: 15px;
|
|
}
|
|
|
|
.app-brand-subtitle {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.app-menu-toolbar {
|
|
justify-content: flex-end;
|
|
min-height: 40px;
|
|
}
|
|
|
|
.app-menu-toolbar > span,
|
|
.app-menu-toggle span {
|
|
display: none;
|
|
}
|
|
|
|
.app-menu-toggle {
|
|
width: 40px;
|
|
min-height: 40px;
|
|
padding: 0;
|
|
}
|
|
|
|
.app-nav {
|
|
grid-column: 1 / -1;
|
|
display: flex;
|
|
gap: 8px;
|
|
width: 100%;
|
|
max-width: 100%;
|
|
min-width: 0;
|
|
max-height: none;
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
overscroll-behavior: contain;
|
|
padding: 2px 2px 6px;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
.app-nav::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
.app-nav-group {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.app-nav-group-button {
|
|
width: 52px;
|
|
min-height: 52px;
|
|
grid-template-columns: 1fr;
|
|
place-items: center;
|
|
gap: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.app-nav-icon {
|
|
width: 52px;
|
|
height: 52px;
|
|
}
|
|
|
|
.app-nav-icon svg {
|
|
width: 22px;
|
|
height: 22px;
|
|
}
|
|
|
|
.app-nav-copy strong {
|
|
display: none;
|
|
}
|
|
|
|
.app-session {
|
|
grid-column: 1 / -1;
|
|
margin-top: 0;
|
|
grid-auto-flow: column;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 8px;
|
|
}
|
|
|
|
.app-account-button {
|
|
min-height: 40px;
|
|
}
|
|
|
|
.app-main {
|
|
padding: 14px;
|
|
}
|
|
|
|
.page-header {
|
|
align-items: flex-start;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.page-title {
|
|
font-size: 24px;
|
|
}
|
|
|
|
.metric-grid,
|
|
.console-grid,
|
|
.catalog-grid,
|
|
.resource-list-item,
|
|
.overview-two-col,
|
|
.server-card-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.ai-provider-metrics,
|
|
.server-metrics,
|
|
.ai-provider-workspace,
|
|
.server-workspace,
|
|
.form-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.server-detail-stat-strip {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.server-card-stats {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.section-tabs {
|
|
overflow-x: auto;
|
|
flex-wrap: nowrap;
|
|
padding-bottom: 4px;
|
|
}
|
|
|
|
.server-toolbar {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.server-toolbar input[type="search"],
|
|
.server-toolbar select {
|
|
flex: 1 1 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
.server-card-head,
|
|
.server-detail-title-row,
|
|
.plugin-control-row {
|
|
grid-template-columns: 1fr;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.server-card-head,
|
|
.server-detail-title-row {
|
|
display: grid;
|
|
}
|
|
|
|
.server-detail-title-row .action-strip {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.server-detail-title-row .action-strip > * {
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.resource-table,
|
|
.provider-table {
|
|
min-width: 680px;
|
|
}
|
|
|
|
.log-line {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
gap: 2px;
|
|
}
|
|
|
|
.ai-provider-toolbar {
|
|
align-items: stretch;
|
|
}
|
|
|
|
.segmented-button,
|
|
.icon-command {
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.provider-form {
|
|
order: -1;
|
|
}
|
|
|
|
.drawer-panel {
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
/* A state view inside an already framed surface is content, not a second frame. */
|
|
:root[data-theme-palette] :where(
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.plugin-group,
|
|
.operation-item
|
|
) .state-view {
|
|
border: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
clip-path: none;
|
|
-webkit-backdrop-filter: none;
|
|
backdrop-filter: none;
|
|
}
|
|
|
|
:root[data-theme-palette] :where(
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.plugin-group,
|
|
.operation-item
|
|
) .state-view::before,
|
|
:root[data-theme-palette] :where(
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.plugin-group,
|
|
.operation-item
|
|
) .state-view::after {
|
|
content: none;
|
|
background: none;
|
|
box-shadow: none;
|
|
filter: none;
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette] :where(
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.plugin-group,
|
|
.operation-item
|
|
) .state-view {
|
|
border: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
clip-path: none;
|
|
-webkit-backdrop-filter: none;
|
|
backdrop-filter: none;
|
|
}
|
|
|
|
:root[data-custom-background="true"][data-theme-palette] :where(
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.plugin-group,
|
|
.operation-item
|
|
) .state-view::before,
|
|
:root[data-custom-background="true"][data-theme-palette] :where(
|
|
.console-panel,
|
|
.catalog-card,
|
|
.server-card,
|
|
.resource-table-wrap,
|
|
.provider-table-wrap,
|
|
.server-table-wrap,
|
|
.plugin-group,
|
|
.operation-item
|
|
) .state-view::after {
|
|
content: none;
|
|
background: none;
|
|
box-shadow: none;
|
|
filter: none;
|
|
}
|