Files
browser/platform_web/theme/base.css
T

4230 lines
105 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;
}
.workflow-hint-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
margin: 10px 0 12px;
}
.workflow-hint-card,
.form-guidance,
.role-impact-list {
display: grid;
gap: 4px;
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);
box-shadow: inset 0 1px 0 var(--crystal-rim);
font-size: 12.5px;
line-height: 1.45;
}
.workflow-hint-card strong,
.form-guidance strong,
.role-impact-list strong {
color: var(--ink);
font-size: 13px;
}
.management-form-wide,
.role-impact-list {
grid-column: 1 / -1;
}
.role-impact-list {
margin: 0 0 12px;
}
.management-form .role-impact-list {
margin: 0;
}
.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;
}
.status-update-control {
min-width: 132px;
}
.status-update-control select {
min-height: 32px;
border: 1px solid var(--line-strong);
border-radius: 8px;
padding: 0 8px;
background: var(--surface-solid);
color: var(--ink);
font: inherit;
}
.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: 8px;
}
.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);
}
.page-summary-strip {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: -2px 0 0;
}
.page-summary-chip {
display: inline-flex;
align-items: baseline;
gap: 8px;
min-height: 28px;
padding: 4px 10px;
border: 1px solid color-mix(in srgb, var(--line) 72%, transparent);
border-left-width: 3px;
border-radius: 999px;
background: color-mix(in srgb, var(--surface) 52%, transparent);
color: var(--ink-faint);
-webkit-backdrop-filter: blur(14px) saturate(1.1);
backdrop-filter: blur(14px) saturate(1.1);
box-shadow: inset 0 1px 0 var(--crystal-rim);
}
.page-summary-chip dt,
.page-summary-chip dd {
margin: 0;
}
.page-summary-chip dt {
font-size: 12px;
font-weight: 650;
}
.page-summary-chip dd {
color: var(--ink);
font-size: 13px;
font-weight: 760;
}
.summary-tone-success {
border-left-color: var(--teal);
}
.summary-tone-warning {
border-left-color: var(--gold);
}
.summary-tone-neutral {
border-left-color: var(--accent);
}
/* ---- 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-toolbar {
display: flex;
align-items: center;
gap: 8px;
min-height: 40px;
flex-wrap: wrap;
}
.server-workspace {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
gap: 14px;
align-items: start;
}
.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;
}
.provider-actions-cell {
position: relative;
}
.human-row-actions {
justify-content: flex-start;
}
.human-row-actions button {
width: auto;
min-width: 58px;
height: 32px;
gap: 5px;
padding: 0 9px;
white-space: nowrap;
font-size: 12px;
font-weight: 700;
}
.human-row-actions .row-action-button-active {
border-color: var(--accent);
color: var(--accent-deep);
background: var(--glass-wash), var(--accent-soft);
}
.inline-action-menu {
position: absolute;
right: 10px;
z-index: 4;
display: grid;
gap: 6px;
min-width: 160px;
margin-top: 6px;
padding: 8px;
border: 1px solid var(--line-strong);
border-radius: 8px;
background: var(--frosted-surface), var(--surface-solid);
box-shadow: var(--jelly-inset), 0 16px 36px var(--glass-shadow);
}
.inline-action-menu button {
min-height: 32px;
display: inline-flex;
align-items: center;
gap: 7px;
padding: 0 9px;
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;
text-align: left;
}
.inline-action-menu button:hover,
.inline-action-menu button:focus-visible {
border-color: var(--accent);
outline: none;
color: var(--ink);
}
.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-setup-guide {
grid-column: 1 / -1;
}
.provider-preset-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
.provider-preset-option {
min-height: 74px;
display: grid;
align-content: start;
gap: 4px;
padding: 10px;
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;
box-shadow: inset 0 1px 0 var(--crystal-rim);
}
.provider-preset-option strong {
color: var(--ink);
font-size: 13px;
}
.provider-preset-option span {
font-size: 12px;
line-height: 1.35;
}
.provider-preset-option:hover,
.provider-preset-option:focus-visible {
border-color: var(--accent);
outline: none;
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft);
}
.field-help {
color: var(--ink-faint);
font-size: 11.5px;
font-weight: 600;
line-height: 1.4;
}
.form-helper-actions {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.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);
}
.management-dialog-panel {
width: min(720px, 100%);
height: auto;
max-height: min(760px, calc(100dvh - 32px));
overflow: auto;
border: 1px solid var(--line);
border-left: 1px solid var(--line);
border-radius: 8px;
box-shadow: var(--jelly-inset), inset 0 0 0 1px var(--diamond-line), 0 18px 48px var(--glass-shadow), 0 0 34px var(--moonbeam);
}
.management-dialog-wide {
width: min(920px, 100%);
}
.dialog-description {
margin: 0;
color: var(--ink-soft);
font-size: 14px;
line-height: 1.55;
}
.management-dialog-panel .provider-form,
.management-dialog-panel .management-form {
border: 0;
padding: 0;
background: transparent;
box-shadow: none;
backdrop-filter: none;
}
.management-dialog-panel .management-form {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.management-dialog-panel .dialog-form .role-selector,
.management-dialog-panel .dialog-form .confirm-actions {
grid-column: 1 / -1;
}
.management-dialog-panel .plugin-detail-panel,
.management-dialog-panel .plugin-group {
border: 0;
padding: 0;
background: transparent;
box-shadow: none;
clip-path: none;
}
.management-dialog-panel .plugin-group::before,
.management-dialog-panel .plugin-group::after {
content: none;
}
.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;
}
/* ---- maintenance triage ---- */
.maintenance-triage-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
}
.triage-card {
min-height: 120px;
display: grid;
align-content: start;
gap: 6px;
padding: 13px;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--corner-sparkle), var(--jelly-highlight), var(--glass-wash), var(--surface);
background-size: 52px 52px, auto, auto, auto;
background-position: right 8px top 6px, center, center, center;
background-repeat: no-repeat;
color: var(--ink-soft);
cursor: pointer;
text-align: left;
box-shadow: inset 0 1px 0 var(--crystal-rim), var(--panel-shadow);
}
.triage-card svg {
color: var(--accent-deep);
}
.triage-card span {
color: var(--ink-faint);
font-size: 12px;
font-weight: 700;
}
.triage-card strong {
color: var(--ink);
font-size: 18px;
}
.triage-card small {
color: var(--ink-soft);
line-height: 1.4;
}
.triage-card:hover,
.triage-card:focus-visible {
border-color: var(--accent);
outline: none;
box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft), var(--panel-shadow);
}
.maintenance-node-item {
grid-template-columns: minmax(170px, 1fr) auto minmax(160px, 0.8fr) minmax(220px, 1.2fr);
}
.maintenance-node-item .node-detail,
.maintenance-node-item .maintenance-actions {
grid-column: 1 / -1;
}
.node-detail {
display: grid;
gap: 6px;
padding: 8px 10px;
border: 1px dashed var(--line);
border-radius: 8px;
color: var(--ink-faint);
font-size: 12px;
}
.node-detail summary {
color: var(--ink-soft);
cursor: pointer;
font-weight: 700;
}
.node-detail[open] {
background: var(--glass-wash), var(--accent-soft);
}
.node-detail span {
display: inline-block;
margin-right: 10px;
}
.maintenance-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: flex-end;
}
.maintenance-actions .theme-upload {
min-height: 30px;
}
/* ---- 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;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
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,
.workflow-hint-grid,
.provider-preset-grid,
.maintenance-triage-grid,
.maintenance-node-item,
.profile-settings-hero,
.profile-settings-grid,
.profile-settings-form-row,
.profile-palette-grid,
.profile-background-grid {
grid-template-columns: 1fr;
}
.user-actions,
.maintenance-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;
}
.server-metrics,
.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;
}