diff --git a/platform_web/theme/base.css b/platform_web/theme/base.css index ae601db..f808a97 100644 --- a/platform_web/theme/base.css +++ b/platform_web/theme/base.css @@ -1,5575 +1,731 @@ -: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)); - --control-surface: linear-gradient(180deg, color-mix(in srgb, var(--surface-solid) 90%, rgba(255, 255, 255, 0.08)), color-mix(in srgb, var(--surface-solid) 76%, var(--accent-soft))), var(--glass-wash); - --control-surface-active: linear-gradient(180deg, color-mix(in srgb, var(--surface-solid) 72%, var(--accent-soft)), color-mix(in srgb, var(--surface-solid) 82%, var(--pink-soft))), var(--glass-wash); - --primary-command-surface: linear-gradient(180deg, color-mix(in srgb, var(--accent) 42%, rgba(255, 255, 255, 0.16)), color-mix(in srgb, var(--pink) 36%, var(--surface-solid)) 68%, color-mix(in srgb, var(--surface-solid) 84%, var(--pink-soft))); - --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: 100dvh; - 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); - background-size: cover; - background-position: center; - background-repeat: no-repeat; - filter: none; - opacity: 0; - 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); - } -} - -.mobile-sidebar-handle, -.mobile-sidebar-backdrop, -.mobile-sidebar-close { - display: none; -} - -@keyframes mobile-sidebar-beacon { - 0%, - 100% { - opacity: 0.48; - transform: scaleY(0.72); - } - - 50% { - opacity: 1; - transform: scaleY(1); - } -} - -.app-sidebar { - position: sticky; - top: 0; - z-index: 1; - display: flex; - flex-direction: column; - gap: 14px; - width: var(--sidebar-width, 216px); - min-width: 0; - height: 100dvh; - max-height: 100dvh; - 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; - overflow-x: hidden; - overflow-y: auto; - overscroll-behavior: contain; - scrollbar-gutter: stable; -} - -.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(--control-surface); - 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(--primary-command-surface); - 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(--control-surface-active); - 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-option-fallback { - border-style: dashed; - border-color: color-mix(in srgb, var(--line-strong) 72%, transparent); - color: var(--ink-soft); - background: var(--control-surface); -} - -.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; -} - -.background-preset-fallback-badge { - padding: 1px 6px; - border: 1px solid color-mix(in srgb, var(--line-strong) 76%, transparent); - border-radius: 999px; - background: var(--gold-soft); - color: var(--accent-deep); - font-size: 11px; - line-height: 1.35; -} - -.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; - justify-content: center; - gap: 6px; - min-height: 32px; - padding: 0 10px; - border: 1px solid var(--line); - border-radius: 999px; - background: var(--control-surface); - color: var(--ink-soft); - cursor: pointer; - font-size: 12px; - font-weight: 700; - line-height: 1; - white-space: nowrap; - box-shadow: inset 0 1px 0 var(--crystal-rim); -} - -.theme-upload svg, -.theme-upload span { - flex: 0 0 auto; -} - -.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(--background-base); -} - -.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(--control-surface); - 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(--control-surface); - 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(--control-surface); - 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: color-mix(in srgb, var(--surface-solid) 36%, transparent); - color: var(--ink); - box-shadow: inset 0 1px 0 color-mix(in srgb, var(--rim-light) 28%, transparent); - 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(--control-surface); - 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 color-mix(in srgb, var(--line-strong) 54%, rgba(255, 255, 255, 0.16)); - background: color-mix(in srgb, var(--surface-solid) 78%, rgba(255, 255, 255, 0.08)); - color: var(--ink); - font-size: 13px; - white-space: nowrap; - box-shadow: inset 0 1px 0 color-mix(in srgb, var(--rim-light) 26%, transparent); -} - -.page-status-ready { - background: color-mix(in srgb, var(--success-soft) 72%, var(--surface-solid)); - border-color: color-mix(in srgb, var(--success) 42%, var(--line)); - color: color-mix(in srgb, var(--success) 82%, var(--ink)); -} - -.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; -} - +: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));--control-surface:linear-gradient(180deg, color-mix(in srgb, var(--surface-solid) 90%, rgba(255, 255, 255, 0.08)), color-mix(in srgb, var(--surface-solid) 76%, var(--accent-soft))),var(--glass-wash);--control-surface-active:linear-gradient(180deg, color-mix(in srgb, var(--surface-solid) 72%, var(--accent-soft)), color-mix(in srgb, var(--surface-solid) 82%, var(--pink-soft))),var(--glass-wash);--primary-command-surface:linear-gradient(180deg, color-mix(in srgb, var(--accent) 42%, rgba(255, 255, 255, 0.16)), color-mix(in srgb, var(--pink) 36%, var(--surface-solid)) 68%, color-mix(in srgb, var(--surface-solid) 84%, var(--pink-soft)));--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{min-height:100dvh;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,.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);background-size:cover;background-position:center;background-repeat:no-repeat;filter:none;opacity:0;pointer-events:none} +:root[data-custom-background=true] .workspace-background-layer::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,7,11,.28) 0,rgba(4,7,11,.1) 216px,transparent 42%),linear-gradient(180deg,rgba(4,7,11,.02),rgba(4,7,11,.1));pointer-events:none} +:root[data-custom-background=true] .workspace-background-layer{filter:saturate(.92) contrast(.96) brightness(.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:.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:.62;transform:rotate(12deg)} +.global-particle-orbit::after,.global-particle-orbit::before{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:.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:.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:.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:.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:.46;transform:rotate(45deg)} +.global-particle-glint::after,.global-particle-glint::before{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:.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::after,:root[data-theme-palette=mecha-black] .global-particle-glint::before{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) * -.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:.18} +48%{transform:translateX(18vw) rotate(24deg);opacity:.46} +} +@keyframes particle-glint{0%,100%{opacity:.18;transform:scale(.72) rotate(45deg)} +50%{opacity:.68;transform:scale(1.16) rotate(45deg)} +} +.mobile-sidebar-backdrop,.mobile-sidebar-close,.mobile-sidebar-handle{display:none} +@keyframes mobile-sidebar-beacon{0%,100%{opacity:.48;transform:scaleY(.72)} +50%{opacity:1;transform:scaleY(1)} +} +.app-sidebar{position:sticky;top:0;z-index:1;display:flex;flex-direction:column;gap:14px;width:var(--sidebar-width,216px);min-width:0;height:100dvh;max-height:100dvh;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,.34);transition:width 180ms ease,padding 180ms ease;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable} +.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:.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:0 0;color:var(--ink-soft);cursor:pointer} +.app-menu-toggle:focus-visible,.app-menu-toggle:hover{border-color:var(--line);color:var(--accent-deep);outline:0;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::after,.app-nav-group::before{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:0 0;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:focus-visible,.app-nav-group-button:hover{border-color:color-mix(in srgb,var(--line) 72%,transparent);color:var(--ink);outline:0;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:0 0;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:-.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-account-button,:root[data-theme-palette=mecha-black] .app-menu-toggle,:root[data-theme-palette=mecha-black] .app-nav-group-button,:root[data-theme-palette=mecha-black] .app-session,:root[data-theme-palette=mecha-black] .background-preset-option,:root[data-theme-palette=mecha-black] .palette-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,.42) 0 3px,transparent 3px),linear-gradient(135deg,rgba(23,36,48,.96),rgba(6,10,16,.88))} +:root[data-theme-palette=magical-girl] .app-sidebar{background:radial-gradient(circle at 92% 3%,rgba(255,255,255,.56) 0 2px,transparent 3px),linear-gradient(180deg,rgba(255,220,239,.14),rgba(103,27,62,.36) 46%,rgba(62,16,40,.42));background-size:auto,auto;background-position:center,center;background-repeat:no-repeat,no-repeat;border-right-color:rgba(255,214,235,.42);box-shadow:inset -1px 0 0 rgba(255,255,255,.3),inset 0 0 0 1px rgba(255,214,235,.12),14px 0 34px rgba(72,0,34,.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,.78) 0 3px,transparent 3px),var(--menu-item-active-bg);box-shadow:var(--jelly-inset),0 0 0 1px rgba(255,255,255,.42),0 10px 24px var(--glass-shadow),0 0 24px rgba(255,221,117,.34),0 0 30px rgba(255,119,200,.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 .account-chevron,.app-shell-sidebar-collapsed .app-account-button>span:not(.account-avatar),.app-shell-sidebar-collapsed .app-brand>span:last-child,.app-shell-sidebar-collapsed .app-menu-toggle span,.app-shell-sidebar-collapsed .app-menu-toolbar>span,.app-shell-sidebar-collapsed .app-nav-copy,.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:0 0;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,.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,.2);color:var(--ink-soft);cursor:pointer;text-align:left} +.app-account-button:focus-visible,.app-account-button:hover{border-color:var(--line-strong);outline:0} +.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,.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:#fff;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,.42);border-radius:999px;background:rgba(255,255,255,.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,.88);border-radius:999px;box-shadow:inset 0 1px 0 rgba(255,255,255,.86),0 3px 10px rgba(255,255,255,.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(--control-surface);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(--primary-command-surface);color:#fff;cursor:pointer;font-weight:700;box-shadow:var(--jelly-inset),0 10px 24px var(--candy-glow),0 0 18px var(--moonbeam)} +.profile-save-button:focus-visible,.profile-save-button:hover{outline:0;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:focus-visible,.palette-option:hover{border-color:var(--accent);outline:0} +.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,.78);border-radius:999px;box-shadow:inset 0 1px 0 rgba(255,255,255,.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:focus-visible,.background-preset-option:hover{border-color:var(--accent);outline:0} +.background-preset-option-active{border-color:var(--line-strong);color:var(--accent-deep);background:var(--control-surface-active);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-option-fallback{border-style:dashed;border-color:color-mix(in srgb,var(--line-strong) 72%,transparent);color:var(--ink-soft);background:var(--control-surface)} +.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} +.background-preset-fallback-badge{padding:1px 6px;border:1px solid color-mix(in srgb,var(--line-strong) 76%,transparent);border-radius:999px;background:var(--gold-soft);color:var(--accent-deep);font-size:11px;line-height:1.35} +.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;justify-content:center;gap:6px;min-height:32px;padding:0 10px;border:1px solid var(--line);border-radius:999px;background:var(--control-surface);color:var(--ink-soft);cursor:pointer;font-size:12px;font-weight:700;line-height:1;white-space:nowrap;box-shadow:inset 0 1px 0 var(--crystal-rim)} +.theme-upload span,.theme-upload svg{flex:0 0 auto} +.theme-upload:focus-visible,.theme-upload:hover{border-color:var(--accent);outline:0} +.theme-upload:disabled{cursor:default;opacity:.58} +.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(--background-base)} +.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:.42;pointer-events:none} +.auth-brand,.auth-copy,.auth-form,.auth-mode-tabs{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(--control-surface);color:var(--ink-soft);cursor:pointer;font-weight:700;box-shadow:var(--jelly-inset),0 8px 18px var(--glass-shadow)} +.auth-mode-tabs button:focus-visible,.auth-mode-tabs button:hover,.role-chip:focus-visible,.role-chip:hover{border-color:var(--accent);outline:0} +.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(--control-surface);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,.45);background:var(--danger-soft);color:var(--danger)} +.auth-result-success{border-color:rgba(25,125,116,.38);background:var(--success-soft);color:var(--success)} +.auth-local-action,.auth-submit{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} +.form-guidance,.role-impact-list,.workflow-hint-card{display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--control-surface);color:var(--ink-soft);box-shadow:inset 0 1px 0 var(--crystal-rim);font-size:12.5px;line-height:1.45} +.form-guidance strong,.role-impact-list strong,.workflow-hint-card 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:color-mix(in srgb,var(--surface-solid) 36%,transparent);color:var(--ink);box-shadow:inset 0 1px 0 color-mix(in srgb,var(--rim-light) 28%,transparent);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(--control-surface);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{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 color-mix(in srgb,var(--line-strong) 54%,rgba(255,255,255,.16));background:color-mix(in srgb,var(--surface-solid) 78%,rgba(255,255,255,.08));color:var(--ink);font-size:13px;white-space:nowrap;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--rim-light) 26%,transparent)} +.page-status-ready{background:color-mix(in srgb,var(--success-soft) 72%,var(--surface-solid));border-color:color-mix(in srgb,var(--success) 42%,var(--line));color:color-mix(in srgb,var(--success) 82%,var(--ink))} +.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 dd,.page-summary-chip dt{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-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} +.catalog-card::before,.console-panel::before,.metric-card::before,.overview-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,.9),color-mix(in srgb,var(--accent) 35%,transparent),color-mix(in srgb,var(--pink) 24%,transparent),rgba(255,255,255,.46));mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;opacity:.86;z-index:2;pointer-events:none} +.catalog-card::after,.confirm-panel::after,.console-panel::after,.drawer-panel::after,.metric-card::after,.overview-card::after,.server-card::after,.server-detail-header::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} +.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} +.catalog-card,.console-panel{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: var(--panel-material); - 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.22; - --surface: rgba(22, 22, 29, 0.64); - --surface-solid: rgba(18, 19, 26, 0.88); - --surface-raised: rgba(25, 24, 32, 0.72); - --line: rgba(238, 215, 236, 0.34); - --line-strong: rgba(250, 240, 249, 0.5); - --glass-wash: linear-gradient(145deg, rgba(255, 246, 253, 0.08), rgba(22, 22, 29, 0.66) 48%, rgba(255, 221, 117, 0.025)); - --panel-material: linear-gradient(145deg, rgba(255, 246, 253, 0.08), rgba(22, 22, 29, 0.72) 44%, rgba(18, 19, 26, 0.64)); - --panel-shadow: inset 0 1px 0 rgba(255, 246, 253, 0.18), inset 0 0 0 1px rgba(255, 185, 226, 0.06), 0 16px 34px rgba(12, 12, 18, 0.3); -} - -:root[data-custom-background="true"][data-theme-palette="magical-girl"] .app-sidebar { - border-right-color: rgba(242, 224, 240, 0.26); - background: - linear-gradient(180deg, rgba(34, 31, 40, 0.72), rgba(18, 19, 26, 0.68)), - rgba(18, 18, 24, 0.5); - -webkit-backdrop-filter: blur(14px) saturate(0.92); - backdrop-filter: blur(14px) saturate(0.92); - box-shadow: inset -1px 0 0 rgba(255, 246, 253, 0.12), 10px 0 28px rgba(12, 12, 18, 0.26); -} - -:root[data-custom-background="true"][data-theme-palette="magical-girl"] .page-header > div:first-child { - border-color: rgba(242, 224, 240, 0.18); - background: - linear-gradient(135deg, rgba(255, 246, 253, 0.075), transparent 36%), - rgba(22, 22, 29, 0.58); - -webkit-backdrop-filter: blur(8px) saturate(0.9); - backdrop-filter: blur(8px) saturate(0.9); -} - -: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, 221, 242, 0.07), transparent 32%), - linear-gradient(135deg, rgba(255, 246, 253, 0.065), transparent 34%), - linear-gradient(180deg, rgba(24, 24, 31, 0.66), rgba(18, 19, 26, 0.58)); - border-color: color-mix(in srgb, var(--line-strong) 54%, rgba(255, 255, 255, 0.16)); - -webkit-backdrop-filter: none; - backdrop-filter: none; - box-shadow: inset 0 1px 0 rgba(255, 246, 253, 0.18), inset 0 0 0 1px rgba(255, 185, 226, 0.045), 0 16px 32px rgba(12, 12, 18, 0.28); -} - -: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.68), rgba(255, 221, 117, 0.32), rgba(255, 143, 208, 0.36)); - opacity: 0.46; -} - -: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 3px rgba(255, 180, 226, 0.24)); -} - -: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"] .server-card-stat { - border-color: color-mix(in srgb, var(--line-strong) 62%, rgba(255, 255, 255, 0.2)); - background: - linear-gradient(180deg, rgba(5, 10, 16, 0.9), rgba(5, 10, 16, 0.78)), - var(--glass-wash); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), 0 9px 20px rgba(0, 0, 0, 0.28); -} - -:root[data-custom-background="true"] .server-card-stat span, -:root[data-custom-background="true"] .runtime-action-group-label { - color: rgba(236, 249, 253, 0.9); -} - -:root[data-custom-background="true"] .server-card-stat strong, -:root[data-custom-background="true"] .runtime-action-item { - color: rgba(250, 254, 255, 0.98); -} - -:root[data-custom-background="true"] .runtime-action-popover { - border-color: color-mix(in srgb, var(--line-strong) 56%, rgba(255, 255, 255, 0.18)); - background: - linear-gradient(135deg, rgba(255, 255, 255, 0.07), transparent 32%), - rgba(5, 10, 16, 0.94); - -webkit-backdrop-filter: blur(14px) saturate(0.86); - backdrop-filter: blur(14px) saturate(0.86); -} - -: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); -} - +.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] .catalog-card,:root[data-theme-palette=mecha-black] .confirm-panel,:root[data-theme-palette=mecha-black] .console-panel,:root[data-theme-palette=mecha-black] .drawer-panel,:root[data-theme-palette=mecha-black] .metric-card,:root[data-theme-palette=mecha-black] .operation-item,:root[data-theme-palette=mecha-black] .overview-card,:root[data-theme-palette=mecha-black] .plugin-group,:root[data-theme-palette=mecha-black] .server-card{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] .catalog-card,:root[data-theme-palette=magical-girl] .confirm-panel,:root[data-theme-palette=magical-girl] .console-panel,:root[data-theme-palette=magical-girl] .drawer-panel,:root[data-theme-palette=magical-girl] .metric-card,:root[data-theme-palette=magical-girl] .operation-item,:root[data-theme-palette=magical-girl] .overview-card,:root[data-theme-palette=magical-girl] .plugin-group,:root[data-theme-palette=magical-girl] .provider-table-wrap,:root[data-theme-palette=magical-girl] .resource-table-wrap,:root[data-theme-palette=magical-girl] .server-card,:root[data-theme-palette=magical-girl] .server-detail-header,:root[data-theme-palette=magical-girl] .server-table-wrap{background:var(--panel-material);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] .catalog-card::before,:root[data-theme-palette=magical-girl] .console-panel::before,:root[data-theme-palette=magical-girl] .metric-card::before,:root[data-theme-palette=magical-girl] .overview-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,.88),rgba(255,221,117,.7),rgba(255,119,200,.62));opacity:.72} +:root[data-theme-palette=magical-girl] .catalog-card::after,:root[data-theme-palette=magical-girl] .confirm-panel::after,:root[data-theme-palette=magical-girl] .console-panel::after,:root[data-theme-palette=magical-girl] .drawer-panel::after,:root[data-theme-palette=magical-girl] .metric-card::after,:root[data-theme-palette=magical-girl] .overview-card::after,:root[data-theme-palette=magical-girl] .server-card::after,:root[data-theme-palette=magical-girl] .server-detail-header::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, .58)) drop-shadow(0 0 2px rgba(255, 221, 117, .42))} +:root[data-theme-palette=mecha-black] .catalog-card::before,:root[data-theme-palette=mecha-black] .console-panel::before,:root[data-theme-palette=mecha-black] .metric-card::before,:root[data-theme-palette=mecha-black] .overview-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,.72),rgba(255,184,77,.42),rgba(72,230,255,.18));opacity:.76} +:root[data-custom-background=true] .app-sidebar{background:radial-gradient(circle at 92% 3%,rgba(255,255,255,.18) 0 2px,transparent 3px),linear-gradient(180deg,rgba(8,10,16,.42),rgba(8,10,16,.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.22;--surface:rgba(22, 22, 29, 0.64);--surface-solid:rgba(18, 19, 26, 0.88);--surface-raised:rgba(25, 24, 32, 0.72);--line:rgba(238, 215, 236, 0.34);--line-strong:rgba(250, 240, 249, 0.5);--glass-wash:linear-gradient(145deg, rgba(255, 246, 253, 0.08), rgba(22, 22, 29, 0.66) 48%, rgba(255, 221, 117, 0.025));--panel-material:linear-gradient(145deg, rgba(255, 246, 253, 0.08), rgba(22, 22, 29, 0.72) 44%, rgba(18, 19, 26, 0.64));--panel-shadow:inset 0 1px 0 rgba(255, 246, 253, 0.18),inset 0 0 0 1px rgba(255, 185, 226, 0.06),0 16px 34px rgba(12, 12, 18, 0.3)} +:root[data-custom-background=true][data-theme-palette=magical-girl] .app-sidebar{border-right-color:rgba(242,224,240,.26);background:linear-gradient(180deg,rgba(34,31,40,.72),rgba(18,19,26,.68)),rgba(18,18,24,.5);-webkit-backdrop-filter:blur(14px) saturate(0.92);backdrop-filter:blur(14px) saturate(0.92);box-shadow:inset -1px 0 0 rgba(255,246,253,.12),10px 0 28px rgba(12,12,18,.26)} +:root[data-custom-background=true][data-theme-palette=magical-girl] .page-header>div:first-child{border-color:rgba(242,224,240,.18);background:linear-gradient(135deg,rgba(255,246,253,.075),transparent 36%),rgba(22,22,29,.58);-webkit-backdrop-filter:blur(8px) saturate(0.9);backdrop-filter:blur(8px) saturate(0.9)} +:root[data-custom-background=true] .app-sidebar{border-right-color:rgba(210,239,246,.24);background:linear-gradient(180deg,rgba(5,10,16,.76),rgba(5,9,14,.68)),rgba(4,8,12,.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,.12),10px 0 28px rgba(0,0,0,.22)} +:root[data-custom-background=true] .app-brand-subtitle,:root[data-custom-background=true] .app-menu-toolbar,:root[data-custom-background=true] .profile-form label,:root[data-custom-background=true] .profile-settings-form label,:root[data-custom-background=true] .provider-id{color:rgba(222,242,248,.72)} +:root[data-custom-background=true] .app-brand strong,:root[data-custom-background=true] .app-nav-copy strong,:root[data-custom-background=true] .form-header h2,:root[data-custom-background=true] .page-title,:root[data-custom-background=true] .panel-header h2,:root[data-custom-background=true] .profile-settings-hero h2{color:rgba(247,253,255,.96);text-shadow:0 1px 2px rgba(0,0,0,.34)} +:root[data-custom-background=true] .app-nav-group-button,:root[data-custom-background=true] .app-nav-icon,:root[data-custom-background=true] .catalog-card p,:root[data-custom-background=true] .metric-detail,:root[data-custom-background=true] .overview-card p,:root[data-custom-background=true] .page-kicker,:root[data-custom-background=true] .profile-settings-hero p,:root[data-custom-background=true] .theme-background-note{color:rgba(224,243,249,.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,.08);border-radius:8px;background:linear-gradient(135deg,rgba(255,255,255,.055),transparent 36%),rgba(5,10,16,.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,.18)} +:root[data-custom-background=true] .page-kicker{margin-bottom:4px;text-shadow:0 1px 2px rgba(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,.78),rgba(7,14,20,.56));border-color:color-mix(in srgb,var(--accent) 64%,rgba(255,255,255,.18));box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 8px 22px rgba(0,0,0,.22)} +:root[data-custom-background=true] .catalog-card,:root[data-custom-background=true] .confirm-panel,:root[data-custom-background=true] .console-panel,:root[data-custom-background=true] .drawer-panel,:root[data-custom-background=true] .metric-card,:root[data-custom-background=true] .operation-item,:root[data-custom-background=true] .overview-card,:root[data-custom-background=true] .plugin-group,:root[data-custom-background=true] .provider-table-wrap,:root[data-custom-background=true] .resource-table-wrap,:root[data-custom-background=true] .server-card,:root[data-custom-background=true] .server-detail-header,:root[data-custom-background=true] .server-table-wrap,:root[data-custom-background=true] .server-toolbar,:root[data-custom-background=true] .state-view{-webkit-backdrop-filter:blur(16px) saturate(0.78);backdrop-filter:blur(16px) saturate(0.78)} +:root[data-custom-background=true] .catalog-card,:root[data-custom-background=true] .confirm-panel,:root[data-custom-background=true] .console-panel,:root[data-custom-background=true] .drawer-panel,:root[data-custom-background=true] .metric-card,:root[data-custom-background=true] .operation-item,:root[data-custom-background=true] .overview-card,:root[data-custom-background=true] .plugin-group,:root[data-custom-background=true] .provider-table-wrap,:root[data-custom-background=true] .resource-table-wrap,:root[data-custom-background=true] .server-card,:root[data-custom-background=true] .server-detail-header,:root[data-custom-background=true] .server-table-wrap,:root[data-custom-background=true] .server-toolbar,:root[data-custom-background=true] .state-view{background:linear-gradient(135deg,rgba(255,255,255,.065),transparent 30%),linear-gradient(180deg,rgba(5,10,16,.86),rgba(5,10,16,.78));border-color:color-mix(in srgb,var(--line-strong) 44%,rgba(255,255,255,.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,.12),inset 0 0 0 1px rgba(255,255,255,.04),0 16px 34px rgba(0,0,0,.3)} +:root[data-custom-background=true][data-theme-palette=magical-girl] .catalog-card,:root[data-custom-background=true][data-theme-palette=magical-girl] .confirm-panel,:root[data-custom-background=true][data-theme-palette=magical-girl] .console-panel,:root[data-custom-background=true][data-theme-palette=magical-girl] .drawer-panel,:root[data-custom-background=true][data-theme-palette=magical-girl] .metric-card,:root[data-custom-background=true][data-theme-palette=magical-girl] .operation-item,:root[data-custom-background=true][data-theme-palette=magical-girl] .overview-card,:root[data-custom-background=true][data-theme-palette=magical-girl] .plugin-group,:root[data-custom-background=true][data-theme-palette=magical-girl] .provider-table-wrap,:root[data-custom-background=true][data-theme-palette=magical-girl] .resource-table-wrap,: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-table-wrap,:root[data-custom-background=true][data-theme-palette=magical-girl] .server-toolbar,:root[data-custom-background=true][data-theme-palette=magical-girl] .state-view{background:radial-gradient(circle at 100% 0,rgba(255,221,242,.07),transparent 32%),linear-gradient(135deg,rgba(255,246,253,.065),transparent 34%),linear-gradient(180deg,rgba(24,24,31,.66),rgba(18,19,26,.58));border-color:color-mix(in srgb,var(--line-strong) 54%,rgba(255,255,255,.16));-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:inset 0 1px 0 rgba(255,246,253,.18),inset 0 0 0 1px rgba(255,185,226,.045),0 16px 32px rgba(12,12,18,.28)} +: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, .62)) drop-shadow(0 0 2px rgba(255, 221, 117, .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] .catalog-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] .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] .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,.68),rgba(255,221,117,.32),rgba(255,143,208,.36));opacity:.46} +:root[data-custom-background=true][data-theme-palette=magical-girl] .catalog-card::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .confirm-panel::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .console-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] .metric-card::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .operation-item::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .overview-card::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .plugin-group::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] .resource-table-wrap::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-table-wrap::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{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 3px rgba(255, 180, 226, .24))} +:root[data-custom-background=true] .catalog-card::after,:root[data-custom-background=true] .confirm-panel::after,:root[data-custom-background=true] .console-panel::after,:root[data-custom-background=true] .drawer-panel::after,:root[data-custom-background=true] .metric-card::after,:root[data-custom-background=true] .operation-item::after,:root[data-custom-background=true] .overview-card::after,:root[data-custom-background=true] .plugin-group::after,:root[data-custom-background=true] .provider-table-wrap::after,:root[data-custom-background=true] .resource-table-wrap::after,:root[data-custom-background=true] .server-card::after,:root[data-custom-background=true] .server-detail-header::after,:root[data-custom-background=true] .server-table-wrap::after,:root[data-custom-background=true] .server-toolbar::after,:root[data-custom-background=true] .state-view::after{opacity:.04} +:root[data-custom-background=true][data-theme-palette=magical-girl] .catalog-card::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .confirm-panel::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .console-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] .metric-card::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .operation-item::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .overview-card::after,:root[data-custom-background=true][data-theme-palette=magical-girl] .plugin-group::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] .resource-table-wrap::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-table-wrap::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{opacity:var(--frame-accessory-opacity)} +:root[data-theme-palette=magical-girl] .provider-table-wrap::after,:root[data-theme-palette=magical-girl] .resource-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:.03} +:root[data-custom-background=true] .log-filter-bar input,:root[data-custom-background=true] .log-filter-bar select,:root[data-custom-background=true] .profile-form input,:root[data-custom-background=true] .profile-settings-form input,:root[data-custom-background=true] .profile-settings-form textarea,: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{background:rgba(5,10,16,.94);border-color:color-mix(in srgb,var(--accent) 48%,rgba(255,255,255,.18));color:rgba(247,253,255,.96);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 8px 18px rgba(0,0,0,.18)} +:root[data-custom-background=true] .action-strip button,:root[data-custom-background=true] .app-account-button,:root[data-custom-background=true] .app-session,:root[data-custom-background=true] .background-preset-option,:root[data-custom-background=true] .icon-command,:root[data-custom-background=true] .palette-option,:root[data-custom-background=true] .row-actions button,:root[data-custom-background=true] .segmented-button,:root[data-custom-background=true] .state-action,:root[data-custom-background=true] .theme-upload{background:linear-gradient(135deg,rgba(255,255,255,.055),transparent 34%),rgba(5,10,16,.84);border-color:color-mix(in srgb,var(--line-strong) 40%,rgba(255,255,255,.14));color:rgba(229,246,251,.9);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 7px 16px rgba(0,0,0,.16)} +:root[data-custom-background=true] .background-preset-option-active,:root[data-custom-background=true] .palette-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,.78));border-color:color-mix(in srgb,var(--accent) 58%,rgba(255,255,255,.18));color:rgba(247,253,255,.96);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent),0 9px 20px rgba(0,0,0,.2)} +:root[data-custom-background=true] .primary-command,:root[data-custom-background=true] .profile-save-button{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 78%,#fff 6%),color-mix(in srgb,var(--pink) 58%,#0b1620 42%));border-color:color-mix(in srgb,var(--accent-deep) 72%,rgba(255,255,255,.22));color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.36);box-shadow:0 10px 24px rgba(0,0,0,.28),0 0 18px color-mix(in srgb,var(--accent) 24%,transparent)} +:root[data-custom-background=true] .server-card-stat{border-color:color-mix(in srgb,var(--line-strong) 62%,rgba(255,255,255,.2));background:linear-gradient(180deg,rgba(5,10,16,.9),rgba(5,10,16,.78)),var(--glass-wash);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 9px 20px rgba(0,0,0,.28)} +:root[data-custom-background=true] .runtime-action-group-label,:root[data-custom-background=true] .server-card-stat span{color:rgba(236,249,253,.9)} +:root[data-custom-background=true] .runtime-action-item,:root[data-custom-background=true] .server-card-stat strong{color:rgba(250,254,255,.98)} +:root[data-custom-background=true] .runtime-action-popover{border-color:color-mix(in srgb,var(--line-strong) 56%,rgba(255,255,255,.18));background:linear-gradient(135deg,rgba(255,255,255,.07),transparent 32%),rgba(5,10,16,.94);-webkit-backdrop-filter:blur(14px) saturate(0.86);backdrop-filter:blur(14px) saturate(0.86)} +:root[data-custom-background=true] .job-chip,:root[data-custom-background=true] .page-status,:root[data-custom-background=true] .result-badge-pending,:root[data-custom-background=true] .status-disabled,:root[data-custom-background=true] .status-pending{background:rgba(76,54,18,.62);border:1px solid rgba(255,214,109,.42);color:#ffe6a3} +:root[data-custom-background=true] .action-result-success,:root[data-custom-background=true] .page-status-ready,:root[data-custom-background=true] .result-badge-succeeded,:root[data-custom-background=true] .status-active{background:rgba(79,255,215,.16);border:1px solid rgba(79,255,215,.36);color:#b9fff2} +:root[data-custom-background=true] .action-result-failed,:root[data-custom-background=true] .result-badge-failed,:root[data-custom-background=true] .status-error{background:rgba(255,90,110,.16);border:1px solid rgba(255,138,157,.36);color:#ffc6d0} +:root[data-custom-background=true] .state-error{background:linear-gradient(135deg,rgba(255,126,153,.08),transparent 34%),linear-gradient(180deg,rgba(12,10,16,.9),rgba(8,10,15,.82));border-color:rgba(255,138,157,.46);color:rgba(248,238,244,.9);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 16px 36px rgba(0,0,0,.34)} +:root[data-custom-background=true] .state-error p{color:rgba(255,211,224,.82)} +:root[data-custom-background=true] .state-error strong{color:rgba(255,246,250,.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)} +.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,.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:focus-visible,.state-action:hover{border-color:var(--accent);outline:0} +.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} +.provider-table-wrap,.resource-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} +.operation-item::before,.plugin-group::before,.provider-table-wrap::before,.resource-table-wrap::before,.server-table-wrap::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(135deg,rgba(255,255,255,.74),color-mix(in srgb,var(--accent) 26%,transparent),rgba(255,255,255,.2));mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;opacity:.72;z-index:2;pointer-events:none} +.operation-item::after,.plugin-group::after,.provider-table-wrap::after,.resource-table-wrap::after,.server-table-wrap::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:.16;z-index:0;pointer-events:none} +:root[data-theme-palette=magical-girl] .operation-item::after,:root[data-theme-palette=magical-girl] .plugin-group::after,:root[data-theme-palette=magical-girl] .provider-table-wrap::after,:root[data-theme-palette=magical-girl] .resource-table-wrap::after,:root[data-theme-palette=magical-girl] .server-table-wrap::after{inset:-12px;background-image:var(--frame-accessory-image);background-size:62px 40px;background-position:right -3px top -4px;opacity:var(--frame-accessory-opacity)} :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, - .server-toolbar, - .state-view -)::after { - content: none; - background: none; - box-shadow: none; - filter: none; +.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,.server-toolbar,.state-view +)::after{content:none;background:0 0;box-shadow:none;filter:none} +.provider-table,.resource-table{width:100%;min-width:760px;border-collapse:collapse} +.provider-table{min-width:780px;table-layout:fixed} +.provider-table td,.provider-table th,.resource-table td,.resource-table th{padding:12px;border-bottom:1px solid rgba(124,92,255,.1);text-align:left;vertical-align:middle;font-size:14px} +.provider-table th,.resource-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,.12)} +.action-strip{display:flex;gap:8px;flex-wrap:wrap;align-items:center} +.action-strip button,.icon-command,.primary-command,.row-actions button,.segmented-button,.table-link-button{border:1px solid var(--line-strong);background:var(--control-surface);color:var(--ink-soft);cursor:pointer;box-shadow:inset 0 1px 0 var(--crystal-rim),inset 0 -1px 0 rgba(255,255,255,.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:focus-visible,.action-strip button:hover,.icon-command:focus-visible,.icon-command:hover,.primary-command:focus-visible,.primary-command:hover,.row-actions button:focus-visible,.row-actions button:hover,.segmented-button:focus-visible,.segmented-button:hover,.table-link-button:focus-visible,.table-link-button:hover{border-color:var(--accent);outline:0;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(--primary-command-surface);border-color:var(--accent-deep);color:#fff;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,.24),0 0 18px var(--moonbeam)} +.action-strip .primary-command{width:auto;min-width:112px} +.catalog-card .primary-command,.provider-form .primary-command{width:100%} +.icon-command:disabled,.primary-command:disabled{opacity:.55;cursor:not-allowed;box-shadow:inset 0 1px 0 var(--crystal-rim)} +.danger-command{border-color:rgba(214,51,92,.5);color:var(--danger)} +.danger-command:focus-visible,.danger-command:hover{border-color:var(--danger)} +.runtime-action-popover{position:fixed;z-index:45;display:grid;gap:10px;max-height:min(320px,calc(100vh - 24px));padding:10px;overflow:auto;border:1px solid color-mix(in srgb,var(--line-strong) 68%,rgba(255,255,255,.2));border-radius:8px;background:var(--corner-sparkle),linear-gradient(145deg,color-mix(in srgb,var(--surface-solid) 94%,rgba(255,255,255,.04)),color-mix(in srgb,var(--surface-solid) 86%,var(--accent-soft)) 72%,color-mix(in srgb,var(--surface-solid) 94%,#000 8%));background-size:48px 48px,auto;background-repeat:no-repeat,no-repeat;background-position:right 6px top 4px,center;-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1);box-shadow:var(--jelly-inset),inset 0 0 0 1px color-mix(in srgb,var(--diamond-line) 52%,transparent),0 18px 42px rgba(0,0,0,.36),0 0 18px color-mix(in srgb,var(--accent) 18%,transparent)} +.runtime-action-group{display:grid;gap:6px} +.runtime-action-group-label{color:color-mix(in srgb,var(--ink) 76%,var(--accent-deep));font-size:11px;font-weight:850;line-height:1.1;text-shadow:0 1px 2px rgba(0,0,0,.5)} +.runtime-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px} +.runtime-action-item{min-height:32px;padding:0 9px;border:1px solid color-mix(in srgb,var(--line) 76%,rgba(255,255,255,.12));border-radius:7px;background:var(--menu-item-bg);color:color-mix(in srgb,var(--ink) 92%,#fff);cursor:pointer;font-size:12px;font-weight:780;text-align:left;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:inset 0 1px 0 color-mix(in srgb,var(--crystal-rim) 52%,transparent)} +.runtime-action-item:focus-visible,.runtime-action-item:hover{border-color:var(--accent);outline:0;color:var(--ink);background:var(--menu-item-active-bg);box-shadow:inset 0 1px 0 var(--crystal-rim),0 0 0 2px var(--accent-soft),0 10px 22px rgba(0,0,0,.24)} +.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} +.ai-providers-page,.maintenance-page,.server-detail-page,.servers-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:0 0;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,.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(--control-surface);color:var(--ink-soft);cursor:pointer;font-weight:700;text-align:left} +.inline-action-menu button:focus-visible,.inline-action-menu button:hover{border-color:var(--accent);outline:0;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(3,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(--control-surface);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-active,.provider-preset-option:focus-visible,.provider-preset-option:hover{border-color:var(--accent);outline:0;box-shadow:inset 0 1px 0 var(--crystal-rim),0 0 0 2px var(--accent-soft)} +.provider-generated-id{display:grid;gap:4px;padding:10px;border:1px dashed var(--line);border-radius:8px;background:color-mix(in srgb,var(--surface-solid) 72%,transparent);color:var(--ink-soft);font-size:12px} +.provider-generated-id>span{font-weight:800} +.provider-generated-id code{width:max-content;max-width:100%;padding:3px 6px;border-radius:6px;background:var(--surface-solid);color:var(--ink);overflow-wrap:anywhere} +.provider-generated-id small{color:var(--ink-faint);font-weight:700} +.provider-advanced-settings{display:grid;gap:10px;padding:10px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--surface-solid) 62%,transparent)} +.provider-advanced-settings summary{cursor:pointer;color:var(--ink);font-size:13px;font-weight:850} +.provider-advanced-settings[open] summary{margin-bottom:8px} +.provider-advanced-settings>.form-grid,.provider-advanced-settings>label{margin-top:10px} +.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,.9)} +.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px} +.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;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,.2);position:relative;overflow:hidden;min-width:0} +.server-card:focus-visible,.server-card:hover{border-color:var(--accent);outline:0;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:1px solid color-mix(in srgb,var(--line-strong) 56%,rgba(255,255,255,.16));border-radius:8px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface-solid) 88%,rgba(255,255,255,.06)),color-mix(in srgb,var(--surface-solid) 72%,var(--accent-soft))),var(--glass-wash);min-height:52px;align-content:center;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--crystal-rim) 68%,transparent),0 8px 18px rgba(0,0,0,.18);min-width:0;backdrop-filter:blur(10px) saturate(0.92)} +.server-card-stat span{color:color-mix(in srgb,var(--ink) 78%,var(--accent-deep));font-size:11px;font-weight:800;line-height:1.15;text-shadow:0 1px 2px rgba(0,0,0,.48)} +.server-card-stat strong{color:color-mix(in srgb,var(--ink) 94%,#fff);font-size:15px;font-weight:850;line-height:1.16;overflow-wrap:anywhere;text-shadow:0 1px 2px rgba(0,0,0,.56)} +.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,.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-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,.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(--control-surface);color:var(--ink-soft);cursor:pointer;white-space:nowrap} +.section-tab:focus-visible,.section-tab:hover{border-color:var(--accent);outline:0} +.section-tab-active{background:var(--primary-command-surface);border-color:var(--accent-deep);color:#fff;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} +.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,.1),transparent 36%),var(--code-surface);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 14px 32px rgba(255,255,255,.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:0 0;color:var(--code-ink);text-align:left;cursor:pointer} +.log-line:focus-visible,.log-line:hover{background:rgba(124,92,255,.22);outline:0} +.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-backdrop{position:fixed;inset:0;z-index:40;background:rgba(61,36,65,.34);backdrop-filter:blur(6px);display:flex;justify-content:flex-end;overflow-y:auto;overscroll-behavior:contain} +.drawer-panel{width:min(440px,100%);height:100%;max-height:100dvh;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-x:hidden;overflow-y:auto;overscroll-behavior:contain} +.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,calc(100vw - 32px));height:auto;max-height:min(760px,calc(100dvh - 32px));overflow-x:hidden;overflow-y: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,calc(100vw - 32px))} +.management-dialog-backdrop{place-items:center;overflow-y:auto;overscroll-behavior:contain} +:root[data-theme-palette] .confirm-panel,:root[data-theme-palette] .drawer-panel,:root[data-theme-palette] .management-dialog-panel{overflow-x:hidden;overflow-y:auto} +.confirm-panel>.panel-header,.dialog-panel-header,.drawer-panel>.panel-header{position:sticky;top:-20px;z-index:4;margin:-20px -20px 12px;padding:16px 20px 12px;border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent);background:var(--glass-wash),var(--surface-raised);-webkit-backdrop-filter:blur(20px) saturate(1.12);backdrop-filter:blur(20px) saturate(1.12)} +.confirm-panel>.confirm-actions,.drawer-panel>.confirm-actions,.management-dialog-panel .dialog-form>.confirm-actions,.runtime-task-actions{position:sticky;bottom:-20px;z-index:4;margin:4px -20px -20px;padding:12px 20px 16px;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent);background:var(--glass-wash),var(--surface-raised);-webkit-backdrop-filter:blur(20px) saturate(1.12);backdrop-filter:blur(20px) saturate(1.12)} +.dialog-description{margin:0;color:var(--ink-soft);font-size:14px;line-height:1.55} +.management-dialog-panel .management-form,.management-dialog-panel .provider-form{border:0;padding:0;background:0 0;box-shadow:none;backdrop-filter:none} +.management-dialog-panel .management-form{grid-template-columns:repeat(2,minmax(0,1fr))} +.management-dialog-panel .dialog-form .confirm-actions,.management-dialog-panel .dialog-form .role-selector{grid-column:1/-1} +.management-dialog-panel .plugin-detail-panel,.management-dialog-panel .plugin-group{border:0;padding:0;background:0 0;box-shadow:none;clip-path:none} +.management-dialog-panel .plugin-group::after,.management-dialog-panel .plugin-group::before{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{display:grid;gap:2px;padding:12px;border-radius:8px;background:radial-gradient(circle at 92% 0,rgba(255,255,255,.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,.16),0 14px 32px rgba(255,255,255,.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,.18);color:#8df0dd} +.diff-line-removed{background:rgba(214,51,92,.2);color:#ff9cb6;text-decoration:line-through} +.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:0 0;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,.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} +.client-manager-lifecycle-panel h2{display:inline-flex;align-items:center;gap:7px} +.client-manager-lifecycle-list{display:grid;gap:12px;margin-top:12px} +.client-manager-lifecycle-row{display:grid;gap:12px;padding:14px;border-block:1px solid color-mix(in srgb,var(--line-strong) 78%,transparent);background:color-mix(in srgb,var(--surface) 42%,transparent);box-shadow:inset 3px 0 0 color-mix(in srgb,var(--accent) 72%,transparent);min-width:0} +.client-manager-job-progress>div,.client-manager-lifecycle-head,.client-manager-phase-line{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;min-width:0} +.client-manager-lifecycle-head>div:first-child{display:grid;gap:4px;min-width:0} +.client-manager-lifecycle-head strong{color:var(--ink);font-size:15px;overflow-wrap:anywhere} +.client-manager-version-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px} +.client-manager-version-cell{display:grid;align-content:center;gap:3px;min-height:72px;min-width:0;padding:9px 10px;border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:6px;background:color-mix(in srgb,var(--surface-solid) 70%,transparent)} +.client-manager-version-cell small,.client-manager-version-cell span{color:var(--ink-soft);font-size:11px;overflow-wrap:anywhere} +.client-manager-version-cell strong{color:var(--ink);font-size:14px;overflow-wrap:anywhere} +.client-manager-phase-line{justify-content:flex-start;color:var(--ink-soft);font-size:12px} +.client-manager-phase-line span:first-child{display:inline-flex;align-items:center;gap:5px;color:var(--ink);font-weight:700} +.client-manager-job-progress{display:grid;gap:6px;padding:10px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));border-radius:6px;background:color-mix(in srgb,var(--accent-soft) 36%,transparent);color:var(--ink-soft);font-size:12px} +.client-manager-job-progress progress{width:100%;height:8px;accent-color:var(--accent)} +.client-manager-recovery{display:flex;align-items:flex-start;gap:8px;padding:10px;border-left:3px solid var(--gold);background:color-mix(in srgb,var(--gold-soft) 38%,transparent);color:var(--ink);font-size:12px;line-height:1.5} +.client-manager-recovery svg{flex:0 0 auto;margin-top:1px} +.client-manager-command-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:7px} +.client-manager-command-grid .icon-command{justify-content:center;min-width:0} +@media (max-width:1080px){.client-manager-version-grid{grid-template-columns:repeat(2,minmax(0,1fr))} +} +.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(--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:focus-visible,.triage-card:hover{border-color:var(--accent);outline:0;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 .maintenance-actions,.maintenance-node-item .node-detail{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-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} +.ai-diff-review-panel,.production-governance-panel{margin-block:14px} +.production-capacity-strip{margin-bottom:12px} +.production-alert-list{margin-top:12px} +.plugin-lifecycle-controls,.production-alert-actions{flex-wrap:wrap} +.plugin-lifecycle-workbench{display:grid;gap:10px;padding-block:10px;border-block:1px solid color-mix(in srgb,var(--frame-accent) 34%,transparent)} +.plugin-lifecycle-controls{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(132px,0.8fr) minmax(120px,0.8fr) auto;align-items:center} +.ai-config-proposal,.plugin-lifecycle-state{min-width:0} +.ai-config-proposal{max-height:280px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere} +@media (max-width:640px){.plugin-lifecycle-controls{grid-template-columns:minmax(0,1fr)} +.production-alert-actions,.production-alert-actions button{width:100%} +} +.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} +.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:linear-gradient(180deg,color-mix(in srgb,var(--surface-solid) 90%,rgba(255,255,255,.08)),color-mix(in srgb,var(--surface-solid) 76%,var(--accent-soft))),var(--glass-wash);color:var(--ink-soft);cursor:pointer;text-align:left;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--crystal-rim) 54%,transparent),0 8px 18px color-mix(in srgb,var(--glass-shadow) 58%,transparent)} +.signal-item:focus-visible,.signal-item:hover{border-color:var(--accent);outline:0;box-shadow:inset 0 1px 0 var(--crystal-rim),0 0 0 2px var(--accent-soft),0 10px 22px color-mix(in srgb,var(--glass-shadow) 62%,transparent)} +:root[data-custom-background=true][data-theme-palette=magical-girl] .signal-item{border-color:color-mix(in srgb,var(--line-strong) 68%,rgba(255,255,255,.22));background:linear-gradient(90deg,rgba(255,246,253,.22),rgba(255,246,253,.1) 36%,rgba(255,185,226,.08)),linear-gradient(180deg,rgba(58,44,56,.72),rgba(36,29,39,.68));-webkit-backdrop-filter:blur(12px) saturate(0.92);backdrop-filter:blur(12px) saturate(0.92);box-shadow:inset 0 1px 0 rgba(255,246,253,.32),inset 0 0 0 1px rgba(255,185,226,.1),0 10px 22px rgba(18,10,17,.26)} +:root[data-custom-background=true][data-theme-palette=magical-girl] .signal-item strong{color:#fffafd;text-shadow:0 1px 2px rgba(48,18,36,.72)} +:root[data-custom-background=true][data-theme-palette=magical-girl] .signal-item .provider-id,:root[data-custom-background=true][data-theme-palette=magical-girl] .signal-item p{color:rgba(255,232,245,.9);text-shadow:0 1px 2px rgba(48,18,36,.66)} +.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-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:rgba(61,36,65,.38);backdrop-filter:blur(6px);overflow-y:auto;overscroll-behavior:contain} +.confirm-panel{width:min(460px,100%);max-height:calc(100dvh - 32px);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-x:hidden;overflow-y:auto;overscroll-behavior:contain} +.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:#fff;font-weight:700} +.confirm-actions .confirm-danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:700} +.runtime-task-backdrop{z-index:55} +.runtime-task-panel{width:min(720px,100%);gap:16px} +.runtime-task-header{align-items:flex-start} +.runtime-task-header>span:first-child{display:grid;gap:4px;min-width:0} +.runtime-task-header strong{color:var(--ink);font-size:18px} +.runtime-task-current small,.runtime-task-header small,.runtime-task-stage-copy small{color:var(--ink-faint);font-size:12px;line-height:1.45} +.runtime-task-meter{display:grid;gap:8px} +.runtime-task-meter-row{display:flex;justify-content:space-between;gap:10px;color:var(--ink-soft);font-size:13px} +.runtime-task-meter-row strong{color:var(--ink)} +.runtime-task-meter-track{height:10px;display:block;overflow:hidden;border:1px solid color-mix(in srgb,var(--line-strong) 72%,transparent);border-radius:999px;background:linear-gradient(90deg,rgba(255,255,255,.08),transparent 30%),color-mix(in srgb,var(--surface-solid) 82%,#000 18%);box-shadow:inset 0 1px 0 color-mix(in srgb,var(--crystal-rim) 42%,transparent)} +.runtime-task-meter-fill{height:100%;display:block;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--teal),var(--gold));box-shadow:0 0 18px color-mix(in srgb,var(--accent) 36%,transparent);transition:width 260ms ease} +.runtime-task-meter-failed{background:linear-gradient(90deg,var(--danger),#ff9cb6)} +.runtime-task-current{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;padding:12px;border:1px solid color-mix(in srgb,var(--accent) 46%,var(--line));border-radius:8px;background:var(--jelly-highlight),var(--glass-wash),color-mix(in srgb,var(--surface) 82%,var(--accent-soft));box-shadow:inset 0 1px 0 var(--crystal-rim),0 12px 28px color-mix(in srgb,var(--accent) 14%,transparent)} +.runtime-task-current-icon,.runtime-task-stage-icon{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--line-strong) 66%,transparent);border-radius:8px;background:color-mix(in srgb,var(--surface-solid) 78%,var(--accent-soft));color:var(--accent);box-shadow:inset 0 1px 0 var(--crystal-rim)} +.runtime-task-current span:last-child,.runtime-task-stage-copy{display:grid;gap:2px;min-width:0} +.runtime-task-current strong,.runtime-task-stage-copy strong{color:var(--ink);font-size:13px} +.runtime-task-stages{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none} +.runtime-task-stage{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--glass-wash),rgba(255,255,255,.16);box-shadow:inset 0 1px 0 color-mix(in srgb,var(--crystal-rim) 62%,transparent)} +.runtime-task-stage-running{border-color:color-mix(in srgb,var(--accent) 56%,var(--line))} +.runtime-task-stage-completed .runtime-task-stage-icon{color:var(--success);border-color:color-mix(in srgb,var(--success) 52%,var(--line))} +.runtime-task-stage-failed .runtime-task-stage-icon{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 52%,var(--line))} +.runtime-task-stage-status{color:var(--ink-faint);font-size:11px;font-weight:800;white-space:nowrap} +.runtime-task-log{display:grid;gap:4px;max-height:132px;overflow:auto;padding:10px;border:1px solid color-mix(in srgb,var(--line) 70%,transparent);border-radius:8px;background:var(--code-surface);color:var(--code-ink);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px} +.runtime-task-log span{display:flex;align-items:center;gap:7px;min-width:0;overflow-wrap:anywhere} +.runtime-task-error{border-color:color-mix(in srgb,var(--danger) 58%,var(--line));color:var(--danger)} +.runtime-task-actions button:disabled{opacity:.55;cursor:not-allowed} +.runtime-task-spin{animation:runtime-task-spin 1s linear infinite} +@keyframes runtime-task-spin{to{transform:rotate(360deg)} +} +@media (prefers-reduced-motion:reduce){.runtime-task-spin{animation:none} +.runtime-task-meter-fill{transition:none} +} +@media (max-width:760px){.auth-shell{padding:14px;place-items:stretch} +.auth-card{align-self:center} +.maintenance-node-item,.maintenance-triage-grid,.management-form,.profile-background-grid,.profile-palette-grid,.profile-settings-form-row,.profile-settings-grid,.profile-settings-hero,.provider-preset-grid,.runtime-task-stages,.user-management-item,.workflow-hint-grid{grid-template-columns:1fr} +.maintenance-actions,.profile-settings-actions,.user-actions{justify-content:flex-start} +.app-shell{display:block;grid-template-columns:1fr} +.app-sidebar{position:fixed;inset:0 auto 0 0;z-index:60;width:min(82vw,300px);min-width:0;height:100dvh;display:flex;flex-direction:column;gap:12px;align-items:stretch;padding:max(14px,env(safe-area-inset-top)) 12px max(14px,env(safe-area-inset-bottom));border-right:1px solid color-mix(in srgb,var(--line-strong) 74%,transparent);border-bottom:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;opacity:0;visibility:hidden;pointer-events:none;transform:translateX(calc(-100% - 18px));transition:transform .2s ease,opacity 160ms ease,visibility .2s step-end} +.app-sidebar-mobile-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(0);transition:transform .2s ease,opacity 160ms ease,visibility 0s step-start} +.mobile-sidebar-backdrop{position:fixed;inset:0;z-index:55;display:block;padding:0;border:0;border-radius:0;background:rgba(2,5,10,.52);backdrop-filter:blur(3px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity 160ms ease,visibility 160ms step-end} +.app-shell-mobile-sidebar-open .mobile-sidebar-backdrop{opacity:1;visibility:visible;pointer-events:auto;transition:opacity 160ms ease,visibility 0s step-start} +.mobile-sidebar-handle{position:fixed;left:0;top:clamp(92px,22vh,178px);z-index:50;width:38px;min-height:82px;display:grid;place-items:center;gap:5px;padding:9px 5px 8px;border:1px solid color-mix(in srgb,var(--line-strong) 80%,transparent);border-left:0;border-radius:0 8px 8px 0;background:var(--menu-item-active-bg);color:var(--accent-deep);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--rim-light) 18%,transparent),8px 0 24px color-mix(in srgb,var(--accent) 18%,transparent);backdrop-filter:blur(20px) saturate(1.2);cursor:pointer;overflow:hidden;transition:opacity 140ms ease,transform 140ms ease} +.mobile-sidebar-handle::before{content:"";position:absolute;inset:9px auto 9px 0;width:3px;border-radius:0 999px 999px 0;background:var(--accent);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 76%,transparent);transform-origin:center;animation:mobile-sidebar-beacon 1.8s ease-in-out infinite} +.mobile-sidebar-handle::after{content:"";position:absolute;inset:5px 3px;background:var(--frame-accessory-top) center top/28px 10px no-repeat;opacity:.72;pointer-events:none} +.mobile-sidebar-handle>*{position:relative;z-index:1} +.mobile-sidebar-handle span{color:var(--ink);font-size:11px;font-weight:850;line-height:1.05;letter-spacing:0;writing-mode:vertical-rl;text-orientation:upright} +.app-shell-mobile-sidebar-open .mobile-sidebar-handle{opacity:0;pointer-events:none;transform:translateX(-12px)} +.mobile-sidebar-close{position:absolute;top:max(12px,env(safe-area-inset-top));right:10px;z-index:2;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--surface-raised) 82%,transparent);color:var(--ink-soft);cursor:pointer} +.app-brand{width:100%;min-height:44px;grid-template-columns:40px minmax(0,1fr);padding-right:42px} +.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{display:none} +.app-nav{display:grid;gap:6px;width:100%;max-width:100%;min-width:0;padding:2px 0 6px;overflow:visible} +.app-nav-group{width:100%} +.app-nav-group-button{width:100%;min-height:48px;grid-template-columns:40px minmax(0,1fr);justify-items:stretch;gap:9px;padding:4px 10px 4px 4px} +.app-nav-icon{width:40px;height:40px} +.app-nav-icon svg{width:22px;height:22px} +.app-nav-copy strong{display:block;font-size:14px;line-height:1.2} +.app-session{width:100%;margin-top:auto;grid-auto-flow:row;align-items:stretch;justify-content:stretch;padding:8px} +.app-account-button{min-height:40px} +.app-shell-sidebar-collapsed .app-sidebar{align-items:stretch;gap:12px;padding:max(14px,env(safe-area-inset-top)) 12px max(14px,env(safe-area-inset-bottom))} +.app-shell-sidebar-collapsed .app-brand{display:grid;justify-content:stretch;padding-right:42px} +.app-shell-sidebar-collapsed .app-account-button>span:not(.account-avatar),.app-shell-sidebar-collapsed .app-brand>span:last-child,.app-shell-sidebar-collapsed .app-nav-copy{display:grid} +.app-shell-sidebar-collapsed .account-chevron{display:block} +.app-shell-sidebar-collapsed .palette-mini-strip{display:flex} +.app-shell-sidebar-collapsed .app-nav,.app-shell-sidebar-collapsed .app-nav-group{width:100%;gap:6px} +.app-shell-sidebar-collapsed .app-nav-group-button{width:100%;min-height:48px;grid-template-columns:40px minmax(0,1fr);place-items:center stretch;gap:9px;padding:4px 10px 4px 4px;margin:0} +.app-shell-sidebar-collapsed .app-nav-icon{width:40px;height:40px} +.app-shell-sidebar-collapsed .app-session{width:100%;justify-items:stretch;padding:8px;background:var(--sugar-dust),var(--glass-wash),var(--glass-tint),var(--surface);border-color:var(--line);box-shadow:var(--jelly-inset),inset 0 0 0 1px var(--diamond-line),0 12px 32px var(--glass-shadow)} +.app-shell-sidebar-collapsed .app-account-button{width:100%;min-height:40px;grid-template-columns:28px minmax(0,1fr) auto;place-items:center stretch;padding:5px} +.app-main{padding:14px 14px 14px 52px} +.page-header{align-items:flex-start;flex-direction:column} +.page-title{font-size:24px} +.catalog-grid,.console-grid,.metric-grid,.overview-two-col,.resource-list-item,.server-card-grid{grid-template-columns:1fr} +.form-grid,.server-metrics,.server-workspace{grid-template-columns:1fr} +.server-detail-stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))} +.client-manager-command-grid,.client-manager-version-grid{grid-template-columns: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} +.plugin-control-row,.server-card-head,.server-detail-title-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} +.provider-table,.resource-table{min-width:680px} +.log-line{grid-template-columns:minmax(0,1fr);gap:2px} +.ai-provider-toolbar{align-items:stretch} +.icon-command,.segmented-button{flex:1 1 auto} +.provider-form{order:-1} +.drawer-panel{width:100%;max-height:100dvh} +.confirm-backdrop{padding:max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom));place-items:stretch center} +.confirm-panel,.management-dialog-panel,.management-dialog-wide{width:min(100%,calc(100vw - 20px));max-height:calc(100dvh - 20px)} +.management-dialog-panel .management-form,.management-dialog-panel .provider-form .form-grid{grid-template-columns:1fr} +.confirm-panel>.confirm-actions,.drawer-panel>.confirm-actions,.management-dialog-panel .dialog-form>.confirm-actions,.runtime-task-actions{justify-content:stretch} +.confirm-panel>.confirm-actions>*,.drawer-panel>.confirm-actions>*,.management-dialog-panel .dialog-form>.confirm-actions>*,.runtime-task-actions>*{flex:1 1 140px} } - -.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(--control-surface); - 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(--primary-command-surface); - 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); -} - -.runtime-action-popover { - position: fixed; - z-index: 45; - display: grid; - gap: 10px; - max-height: min(320px, calc(100vh - 24px)); - padding: 10px; - overflow: auto; - border: 1px solid color-mix(in srgb, var(--line-strong) 68%, rgba(255, 255, 255, 0.2)); - border-radius: 8px; - background: - var(--corner-sparkle), - linear-gradient(145deg, color-mix(in srgb, var(--surface-solid) 94%, rgba(255, 255, 255, 0.04)), color-mix(in srgb, var(--surface-solid) 86%, var(--accent-soft)) 72%, color-mix(in srgb, var(--surface-solid) 94%, #000000 8%)); - background-size: 48px 48px, auto; - background-repeat: no-repeat, no-repeat; - background-position: right 6px top 4px, center; - -webkit-backdrop-filter: blur(18px) saturate(1.1); - backdrop-filter: blur(18px) saturate(1.1); - box-shadow: var(--jelly-inset), inset 0 0 0 1px color-mix(in srgb, var(--diamond-line) 52%, transparent), 0 18px 42px rgba(0, 0, 0, 0.36), 0 0 18px color-mix(in srgb, var(--accent) 18%, transparent); -} - -.runtime-action-group { - display: grid; - gap: 6px; -} - -.runtime-action-group-label { - color: color-mix(in srgb, var(--ink) 76%, var(--accent-deep)); - font-size: 11px; - font-weight: 850; - line-height: 1.1; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); -} - -.runtime-action-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 6px; -} - -.runtime-action-item { - min-height: 32px; - padding: 0 9px; - border: 1px solid color-mix(in srgb, var(--line) 76%, rgba(255, 255, 255, 0.12)); - border-radius: 7px; - background: var(--menu-item-bg); - color: color-mix(in srgb, var(--ink) 92%, #ffffff); - cursor: pointer; - font-size: 12px; - font-weight: 780; - text-align: left; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); - box-shadow: inset 0 1px 0 color-mix(in srgb, var(--crystal-rim) 52%, transparent); -} - -.runtime-action-item:hover, -.runtime-action-item:focus-visible { - border-color: var(--accent); - outline: none; - color: var(--ink); - background: var(--menu-item-active-bg); - box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft), 0 10px 22px rgba(0, 0, 0, 0.24); -} - -/* ---- 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(--control-surface); - 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(3, 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(--control-surface); - 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, -.provider-preset-option-active { - border-color: var(--accent); - outline: none; - box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft); -} - -.provider-generated-id { - display: grid; - gap: 4px; - padding: 10px; - border: 1px dashed var(--line); - border-radius: 8px; - background: color-mix(in srgb, var(--surface-solid) 72%, transparent); - color: var(--ink-soft); - font-size: 12px; -} - -.provider-generated-id > span { - font-weight: 800; -} - -.provider-generated-id code { - width: max-content; - max-width: 100%; - padding: 3px 6px; - border-radius: 6px; - background: var(--surface-solid); - color: var(--ink); - overflow-wrap: anywhere; -} - -.provider-generated-id small { - color: var(--ink-faint); - font-weight: 700; -} - -.provider-advanced-settings { - display: grid; - gap: 10px; - padding: 10px; - border: 1px solid var(--line); - border-radius: 8px; - background: color-mix(in srgb, var(--surface-solid) 62%, transparent); -} - -.provider-advanced-settings summary { - cursor: pointer; - color: var(--ink); - font-size: 13px; - font-weight: 850; -} - -.provider-advanced-settings[open] summary { - margin-bottom: 8px; -} - -.provider-advanced-settings > label, -.provider-advanced-settings > .form-grid { - margin-top: 10px; -} - -.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; - 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: 1px solid color-mix(in srgb, var(--line-strong) 56%, rgba(255, 255, 255, 0.16)); - border-radius: 8px; - background: - linear-gradient(180deg, color-mix(in srgb, var(--surface-solid) 88%, rgba(255, 255, 255, 0.06)), color-mix(in srgb, var(--surface-solid) 72%, var(--accent-soft))), - var(--glass-wash); - min-height: 52px; - align-content: center; - box-shadow: inset 0 1px 0 color-mix(in srgb, var(--crystal-rim) 68%, transparent), 0 8px 18px rgba(0, 0, 0, 0.18); - min-width: 0; - backdrop-filter: blur(10px) saturate(0.92); -} - -.server-card-stat span { - color: color-mix(in srgb, var(--ink) 78%, var(--accent-deep)); - font-size: 11px; - font-weight: 800; - line-height: 1.15; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.48); -} - -.server-card-stat strong { - color: color-mix(in srgb, var(--ink) 94%, #ffffff); - font-size: 15px; - font-weight: 850; - line-height: 1.16; - overflow-wrap: anywhere; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.56); -} - -.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(--control-surface); - 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(--primary-command-surface); - 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; - overflow-y: auto; - overscroll-behavior: contain; -} - -.drawer-panel { - width: min(440px, 100%); - height: 100%; - max-height: 100dvh; - 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-x: hidden; - overflow-y: auto; - overscroll-behavior: contain; -} - -.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, calc(100vw - 32px)); - height: auto; - max-height: min(760px, calc(100dvh - 32px)); - overflow-x: hidden; - overflow-y: 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, calc(100vw - 32px)); -} - -.management-dialog-backdrop { - place-items: center; - overflow-y: auto; - overscroll-behavior: contain; -} - -:root[data-theme-palette] .drawer-panel, -:root[data-theme-palette] .management-dialog-panel, -:root[data-theme-palette] .confirm-panel { - overflow-x: hidden; - overflow-y: auto; -} - -.dialog-panel-header, -.drawer-panel > .panel-header, -.confirm-panel > .panel-header { - position: sticky; - top: -20px; - z-index: 4; - margin: -20px -20px 12px; - padding: 16px 20px 12px; - border-bottom: 1px solid color-mix(in srgb, var(--line) 72%, transparent); - background: var(--glass-wash), var(--surface-raised); - -webkit-backdrop-filter: blur(20px) saturate(1.12); - backdrop-filter: blur(20px) saturate(1.12); -} - -.management-dialog-panel .dialog-form > .confirm-actions, -.drawer-panel > .confirm-actions, -.confirm-panel > .confirm-actions, -.runtime-task-actions { - position: sticky; - bottom: -20px; - z-index: 4; - margin: 4px -20px -20px; - padding: 12px 20px 16px; - border-top: 1px solid color-mix(in srgb, var(--line) 72%, transparent); - background: var(--glass-wash), var(--surface-raised); - -webkit-backdrop-filter: blur(20px) saturate(1.12); - backdrop-filter: blur(20px) saturate(1.12); -} - -.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; -} - -/* ---- Client Manager lifecycle ---- */ - -.client-manager-lifecycle-panel h2 { - display: inline-flex; - align-items: center; - gap: 7px; -} - -.client-manager-lifecycle-list { - display: grid; - gap: 12px; - margin-top: 12px; -} - -.client-manager-lifecycle-row { - display: grid; - gap: 12px; - padding: 14px; - border-block: 1px solid color-mix(in srgb, var(--line-strong) 78%, transparent); - background: color-mix(in srgb, var(--surface) 42%, transparent); - box-shadow: inset 3px 0 0 color-mix(in srgb, var(--accent) 72%, transparent); - min-width: 0; -} - -.client-manager-lifecycle-head, -.client-manager-job-progress > div, -.client-manager-phase-line { - display: flex; - align-items: center; - justify-content: space-between; - gap: 10px; - flex-wrap: wrap; - min-width: 0; -} - -.client-manager-lifecycle-head > div:first-child { - display: grid; - gap: 4px; - min-width: 0; -} - -.client-manager-lifecycle-head strong { - color: var(--ink); - font-size: 15px; - overflow-wrap: anywhere; -} - -.client-manager-version-grid { - display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 8px; -} - -.client-manager-version-cell { - display: grid; - align-content: center; - gap: 3px; - min-height: 72px; - min-width: 0; - padding: 9px 10px; - border: 1px solid color-mix(in srgb, var(--line) 80%, transparent); - border-radius: 6px; - background: color-mix(in srgb, var(--surface-solid) 70%, transparent); -} - -.client-manager-version-cell span, -.client-manager-version-cell small { - color: var(--ink-soft); - font-size: 11px; - overflow-wrap: anywhere; -} - -.client-manager-version-cell strong { - color: var(--ink); - font-size: 14px; - overflow-wrap: anywhere; -} - -.client-manager-phase-line { - justify-content: flex-start; - color: var(--ink-soft); - font-size: 12px; -} - -.client-manager-phase-line span:first-child { - display: inline-flex; - align-items: center; - gap: 5px; - color: var(--ink); - font-weight: 700; -} - -.client-manager-job-progress { - display: grid; - gap: 6px; - padding: 10px; - border: 1px solid color-mix(in srgb, var(--accent) 42%, var(--line)); - border-radius: 6px; - background: color-mix(in srgb, var(--accent-soft) 36%, transparent); - color: var(--ink-soft); - font-size: 12px; -} - -.client-manager-job-progress progress { - width: 100%; - height: 8px; - accent-color: var(--accent); -} - -.client-manager-recovery { - display: flex; - align-items: flex-start; - gap: 8px; - padding: 10px; - border-left: 3px solid var(--gold); - background: color-mix(in srgb, var(--gold-soft) 38%, transparent); - color: var(--ink); - font-size: 12px; - line-height: 1.5; -} - -.client-manager-recovery svg { - flex: 0 0 auto; - margin-top: 1px; -} - -.client-manager-command-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); - gap: 7px; -} - -.client-manager-command-grid .icon-command { - justify-content: center; - min-width: 0; -} - -@media (max-width: 1080px) { - .client-manager-version-grid { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } -} - -/* ---- 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(--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; -} - -.production-governance-panel, -.ai-diff-review-panel { - margin-block: 14px; -} - -.production-capacity-strip { - margin-bottom: 12px; -} - -.production-alert-list { - margin-top: 12px; -} - -.production-alert-actions, -.plugin-lifecycle-controls { - flex-wrap: wrap; -} - -.plugin-lifecycle-workbench { - display: grid; - gap: 10px; - padding-block: 10px; - border-block: 1px solid color-mix(in srgb, var(--frame-accent) 34%, transparent); -} - -.plugin-lifecycle-controls { - display: grid; - grid-template-columns: minmax(180px, 1.4fr) minmax(132px, 0.8fr) minmax(120px, 0.8fr) auto; - align-items: center; -} - -.plugin-lifecycle-state, -.ai-config-proposal { - min-width: 0; -} - -.ai-config-proposal { - max-height: 280px; - overflow: auto; - white-space: pre-wrap; - overflow-wrap: anywhere; -} - -@media (max-width: 640px) { - .plugin-lifecycle-controls { - grid-template-columns: minmax(0, 1fr); - } - - .production-alert-actions, - .production-alert-actions button { - width: 100%; - } -} - -.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: - linear-gradient(180deg, color-mix(in srgb, var(--surface-solid) 90%, rgba(255, 255, 255, 0.08)), color-mix(in srgb, var(--surface-solid) 76%, var(--accent-soft))), - var(--glass-wash); - color: var(--ink-soft); - cursor: pointer; - text-align: left; - box-shadow: inset 0 1px 0 color-mix(in srgb, var(--crystal-rim) 54%, transparent), 0 8px 18px color-mix(in srgb, var(--glass-shadow) 58%, transparent); -} - -.signal-item:hover, -.signal-item:focus-visible { - border-color: var(--accent); - outline: none; - box-shadow: inset 0 1px 0 var(--crystal-rim), 0 0 0 2px var(--accent-soft), 0 10px 22px color-mix(in srgb, var(--glass-shadow) 62%, transparent); -} - -:root[data-custom-background="true"][data-theme-palette="magical-girl"] .signal-item { - border-color: color-mix(in srgb, var(--line-strong) 68%, rgba(255, 255, 255, 0.22)); - background: - linear-gradient(90deg, rgba(255, 246, 253, 0.22), rgba(255, 246, 253, 0.1) 36%, rgba(255, 185, 226, 0.08)), - linear-gradient(180deg, rgba(58, 44, 56, 0.72), rgba(36, 29, 39, 0.68)); - -webkit-backdrop-filter: blur(12px) saturate(0.92); - backdrop-filter: blur(12px) saturate(0.92); - box-shadow: inset 0 1px 0 rgba(255, 246, 253, 0.32), inset 0 0 0 1px rgba(255, 185, 226, 0.1), 0 10px 22px rgba(18, 10, 17, 0.26); -} - -:root[data-custom-background="true"][data-theme-palette="magical-girl"] .signal-item strong { - color: #fffafd; - text-shadow: 0 1px 2px rgba(48, 18, 36, 0.72); -} - -:root[data-custom-background="true"][data-theme-palette="magical-girl"] .signal-item p, -:root[data-custom-background="true"][data-theme-palette="magical-girl"] .signal-item .provider-id { - color: rgba(255, 232, 245, 0.9); - text-shadow: 0 1px 2px rgba(48, 18, 36, 0.66); -} - -.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); - overflow-y: auto; - overscroll-behavior: contain; -} - -.confirm-panel { - width: min(460px, 100%); - max-height: calc(100dvh - 32px); - 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-x: hidden; - overflow-y: auto; - overscroll-behavior: contain; -} - -.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; -} - -/* ---- runtime task progress ---- */ - -.runtime-task-backdrop { - z-index: 55; -} - -.runtime-task-panel { - width: min(720px, 100%); - gap: 16px; -} - -.runtime-task-header { - align-items: flex-start; -} - -.runtime-task-header > span:first-child { - display: grid; - gap: 4px; - min-width: 0; -} - -.runtime-task-header strong { - color: var(--ink); - font-size: 18px; -} - -.runtime-task-header small, -.runtime-task-current small, -.runtime-task-stage-copy small { - color: var(--ink-faint); - font-size: 12px; - line-height: 1.45; -} - -.runtime-task-meter { - display: grid; - gap: 8px; -} - -.runtime-task-meter-row { - display: flex; - justify-content: space-between; - gap: 10px; - color: var(--ink-soft); - font-size: 13px; -} - -.runtime-task-meter-row strong { - color: var(--ink); -} - -.runtime-task-meter-track { - height: 10px; - display: block; - overflow: hidden; - border: 1px solid color-mix(in srgb, var(--line-strong) 72%, transparent); - border-radius: 999px; - background: - linear-gradient(90deg, rgba(255, 255, 255, 0.08), transparent 30%), - color-mix(in srgb, var(--surface-solid) 82%, #000000 18%); - box-shadow: inset 0 1px 0 color-mix(in srgb, var(--crystal-rim) 42%, transparent); -} - -.runtime-task-meter-fill { - height: 100%; - display: block; - border-radius: inherit; - background: linear-gradient(90deg, var(--accent), var(--teal), var(--gold)); - box-shadow: 0 0 18px color-mix(in srgb, var(--accent) 36%, transparent); - transition: width 260ms ease; -} - -.runtime-task-meter-failed { - background: linear-gradient(90deg, var(--danger), #ff9cb6); -} - -.runtime-task-current { - display: grid; - grid-template-columns: auto minmax(0, 1fr); - gap: 10px; - align-items: center; - padding: 12px; - border: 1px solid color-mix(in srgb, var(--accent) 46%, var(--line)); - border-radius: 8px; - background: var(--jelly-highlight), var(--glass-wash), color-mix(in srgb, var(--surface) 82%, var(--accent-soft)); - box-shadow: inset 0 1px 0 var(--crystal-rim), 0 12px 28px color-mix(in srgb, var(--accent) 14%, transparent); -} - -.runtime-task-current-icon, -.runtime-task-stage-icon { - width: 28px; - height: 28px; - display: inline-flex; - align-items: center; - justify-content: center; - border: 1px solid color-mix(in srgb, var(--line-strong) 66%, transparent); - border-radius: 8px; - background: color-mix(in srgb, var(--surface-solid) 78%, var(--accent-soft)); - color: var(--accent); - box-shadow: inset 0 1px 0 var(--crystal-rim); -} - -.runtime-task-current span:last-child, -.runtime-task-stage-copy { - display: grid; - gap: 2px; - min-width: 0; -} - -.runtime-task-current strong, -.runtime-task-stage-copy strong { - color: var(--ink); - font-size: 13px; -} - -.runtime-task-stages { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 8px; - margin: 0; - padding: 0; - list-style: none; -} - -.runtime-task-stage { - display: grid; - grid-template-columns: auto minmax(0, 1fr) auto; - gap: 9px; - align-items: center; - padding: 10px; - border: 1px solid var(--line); - border-radius: 8px; - background: var(--glass-wash), rgba(255, 255, 255, 0.16); - box-shadow: inset 0 1px 0 color-mix(in srgb, var(--crystal-rim) 62%, transparent); -} - -.runtime-task-stage-running { - border-color: color-mix(in srgb, var(--accent) 56%, var(--line)); -} - -.runtime-task-stage-completed .runtime-task-stage-icon { - color: var(--success); - border-color: color-mix(in srgb, var(--success) 52%, var(--line)); -} - -.runtime-task-stage-failed .runtime-task-stage-icon { - color: var(--danger); - border-color: color-mix(in srgb, var(--danger) 52%, var(--line)); -} - -.runtime-task-stage-status { - color: var(--ink-faint); - font-size: 11px; - font-weight: 800; - white-space: nowrap; -} - -.runtime-task-log { - display: grid; - gap: 4px; - max-height: 132px; - overflow: auto; - padding: 10px; - border: 1px solid color-mix(in srgb, var(--line) 70%, transparent); - border-radius: 8px; - background: var(--code-surface); - color: var(--code-ink); - font-family: ui-monospace, SFMono-Regular, Menlo, monospace; - font-size: 12px; -} - -.runtime-task-log span { - display: flex; - align-items: center; - gap: 7px; - min-width: 0; - overflow-wrap: anywhere; -} - -.runtime-task-error { - border-color: color-mix(in srgb, var(--danger) 58%, var(--line)); - color: var(--danger); -} - -.runtime-task-actions button:disabled { - opacity: 0.55; - cursor: not-allowed; -} - -.runtime-task-spin { - animation: runtime-task-spin 1s linear infinite; -} - -@keyframes runtime-task-spin { - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: reduce) { - .runtime-task-spin { - animation: none; - } - - .runtime-task-meter-fill { - transition: none; - } -} - -/* ---- narrow screens ---- */ - -@media (max-width: 760px) { - .auth-shell { - padding: 14px; - place-items: stretch; - } - - .auth-card { - align-self: center; - } - - .management-form, - .runtime-task-stages, - .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 { - display: block; - grid-template-columns: 1fr; - } - - .app-sidebar { - position: fixed; - inset: 0 auto 0 0; - z-index: 60; - width: min(82vw, 300px); - min-width: 0; - height: 100dvh; - display: flex; - flex-direction: column; - gap: 12px; - align-items: stretch; - padding: max(14px, env(safe-area-inset-top)) 12px max(14px, env(safe-area-inset-bottom)); - border-right: 1px solid color-mix(in srgb, var(--line-strong) 74%, transparent); - border-bottom: 0; - overflow-x: hidden; - overflow-y: auto; - overscroll-behavior: contain; - opacity: 0; - visibility: hidden; - pointer-events: none; - transform: translateX(calc(-100% - 18px)); - transition: transform 200ms ease, opacity 160ms ease, visibility 200ms step-end; - } - - .app-sidebar-mobile-open { - opacity: 1; - visibility: visible; - pointer-events: auto; - transform: translateX(0); - transition: transform 200ms ease, opacity 160ms ease, visibility 0s step-start; - } - - .mobile-sidebar-backdrop { - position: fixed; - inset: 0; - z-index: 55; - display: block; - padding: 0; - border: 0; - border-radius: 0; - background: rgba(2, 5, 10, 0.52); - backdrop-filter: blur(3px); - opacity: 0; - visibility: hidden; - pointer-events: none; - transition: opacity 160ms ease, visibility 160ms step-end; - } - - .app-shell-mobile-sidebar-open .mobile-sidebar-backdrop { - opacity: 1; - visibility: visible; - pointer-events: auto; - transition: opacity 160ms ease, visibility 0s step-start; - } - - .mobile-sidebar-handle { - position: fixed; - left: 0; - top: clamp(92px, 22vh, 178px); - z-index: 50; - width: 38px; - min-height: 82px; - display: grid; - place-items: center; - gap: 5px; - padding: 9px 5px 8px; - border: 1px solid color-mix(in srgb, var(--line-strong) 80%, transparent); - border-left: 0; - border-radius: 0 8px 8px 0; - background: var(--menu-item-active-bg); - color: var(--accent-deep); - box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rim-light) 18%, transparent), 8px 0 24px color-mix(in srgb, var(--accent) 18%, transparent); - backdrop-filter: blur(20px) saturate(1.2); - cursor: pointer; - overflow: hidden; - transition: opacity 140ms ease, transform 140ms ease; - } - - .mobile-sidebar-handle::before { - content: ""; - position: absolute; - inset: 9px auto 9px 0; - width: 3px; - border-radius: 0 999px 999px 0; - background: var(--accent); - box-shadow: 0 0 14px color-mix(in srgb, var(--accent) 76%, transparent); - transform-origin: center; - animation: mobile-sidebar-beacon 1.8s ease-in-out infinite; - } - - .mobile-sidebar-handle::after { - content: ""; - position: absolute; - inset: 5px 3px; - background: var(--frame-accessory-top) center top / 28px 10px no-repeat; - opacity: 0.72; - pointer-events: none; - } - - .mobile-sidebar-handle > * { - position: relative; - z-index: 1; - } - - .mobile-sidebar-handle span { - color: var(--ink); - font-size: 11px; - font-weight: 850; - line-height: 1.05; - letter-spacing: 0; - writing-mode: vertical-rl; - text-orientation: upright; - } - - .app-shell-mobile-sidebar-open .mobile-sidebar-handle { - opacity: 0; - pointer-events: none; - transform: translateX(-12px); - } - - .mobile-sidebar-close { - position: absolute; - top: max(12px, env(safe-area-inset-top)); - right: 10px; - z-index: 2; - width: 36px; - height: 36px; - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0; - border: 1px solid var(--line); - border-radius: 8px; - background: color-mix(in srgb, var(--surface-raised) 82%, transparent); - color: var(--ink-soft); - cursor: pointer; - } - - .app-brand { - width: 100%; - min-height: 44px; - grid-template-columns: 40px minmax(0, 1fr); - padding-right: 42px; - } - - .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 { - display: none; - } - - .app-nav { - display: grid; - gap: 6px; - width: 100%; - max-width: 100%; - min-width: 0; - padding: 2px 0 6px; - overflow: visible; - } - - .app-nav-group { - width: 100%; - } - - .app-nav-group-button { - width: 100%; - min-height: 48px; - grid-template-columns: 40px minmax(0, 1fr); - justify-items: stretch; - gap: 9px; - padding: 4px 10px 4px 4px; - } - - .app-nav-icon { - width: 40px; - height: 40px; - } - - .app-nav-icon svg { - width: 22px; - height: 22px; - } - - .app-nav-copy strong { - display: block; - font-size: 14px; - line-height: 1.2; - } - - .app-session { - width: 100%; - margin-top: auto; - grid-auto-flow: row; - align-items: stretch; - justify-content: stretch; - padding: 8px; - } - - .app-account-button { - min-height: 40px; - } - - .app-shell-sidebar-collapsed .app-sidebar { - align-items: stretch; - gap: 12px; - padding: max(14px, env(safe-area-inset-top)) 12px max(14px, env(safe-area-inset-bottom)); - } - - .app-shell-sidebar-collapsed .app-brand { - display: grid; - justify-content: stretch; - padding-right: 42px; - } - - .app-shell-sidebar-collapsed .app-brand > span:last-child, - .app-shell-sidebar-collapsed .app-nav-copy, - .app-shell-sidebar-collapsed .app-account-button > span:not(.account-avatar) { - display: grid; - } - - .app-shell-sidebar-collapsed .account-chevron { - display: block; - } - - .app-shell-sidebar-collapsed .palette-mini-strip { - display: flex; - } - - .app-shell-sidebar-collapsed .app-nav, - .app-shell-sidebar-collapsed .app-nav-group { - width: 100%; - gap: 6px; - } - - .app-shell-sidebar-collapsed .app-nav-group-button { - width: 100%; - min-height: 48px; - grid-template-columns: 40px minmax(0, 1fr); - place-items: center stretch; - gap: 9px; - padding: 4px 10px 4px 4px; - margin: 0; - } - - .app-shell-sidebar-collapsed .app-nav-icon { - width: 40px; - height: 40px; - } - - .app-shell-sidebar-collapsed .app-session { - width: 100%; - justify-items: stretch; - padding: 8px; - background: var(--sugar-dust), var(--glass-wash), var(--glass-tint), var(--surface); - border-color: var(--line); - box-shadow: var(--jelly-inset), inset 0 0 0 1px var(--diamond-line), 0 12px 32px var(--glass-shadow); - } - - .app-shell-sidebar-collapsed .app-account-button { - width: 100%; - min-height: 40px; - grid-template-columns: 28px minmax(0, 1fr) auto; - place-items: center stretch; - padding: 5px; - } - - .app-main { - padding: 14px 14px 14px 52px; - } - - .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)); - } - - .client-manager-version-grid, - .client-manager-command-grid { - grid-template-columns: 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%; - max-height: 100dvh; - } - - .confirm-backdrop { - padding: max(10px, env(safe-area-inset-top)) 10px max(10px, env(safe-area-inset-bottom)); - place-items: stretch center; - } - - .confirm-panel, - .management-dialog-panel, - .management-dialog-wide { - width: min(100%, calc(100vw - 20px)); - max-height: calc(100dvh - 20px); - } - - .management-dialog-panel .management-form, - .management-dialog-panel .provider-form .form-grid { - grid-template-columns: 1fr; - } - - .management-dialog-panel .dialog-form > .confirm-actions, - .drawer-panel > .confirm-actions, - .confirm-panel > .confirm-actions, - .runtime-task-actions { - justify-content: stretch; - } - - .management-dialog-panel .dialog-form > .confirm-actions > *, - .drawer-panel > .confirm-actions > *, - .confirm-panel > .confirm-actions > *, - .runtime-task-actions > * { - flex: 1 1 140px; - } -} - -/* 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; -} - +.console-panel,.catalog-card,.server-card,.resource-table-wrap,.provider-table-wrap,.server-table-wrap,.plugin-group,.operation-item +) .state-view{border:0;background:0 0;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; +.console-panel,.catalog-card,.server-card,.resource-table-wrap,.provider-table-wrap,.server-table-wrap,.plugin-group,.operation-item +) .state-view::after,: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{content:none;background:0 0;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:0 0;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::after,: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{content:none;background:0 0;box-shadow:none;filter:none} +.page-header-actions,.panel-header-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap} +.operations-command-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px} +.operations-module{min-width:0} +.operations-module .panel-header h2{display:inline-flex;align-items:center;gap:7px} +.operations-module-empty,.operations-module-freshness{display:block;margin:10px 0 0;color:var(--ink-faint);font-size:12px} +.operations-pulse-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0} +.operations-pulse-strip>div{display:grid;gap:3px;min-width:0;padding:9px 10px;border:1px solid color-mix(in srgb,var(--line) 78%,transparent);border-radius:6px;background:color-mix(in srgb,var(--surface-solid) 78%,var(--accent-soft))} +.operations-pulse-strip dt{color:var(--ink-faint);font-size:11px} +.operations-pulse-strip dd{margin:0;color:var(--ink);font-size:18px;font-weight:850} +.operations-endpoint-list,.operations-job-list{display:grid;gap:6px;margin-top:10px} +.operations-endpoint-row,.operations-job-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--control-surface);color:var(--ink-soft);text-align:left} +.operations-job-row{width:100%;cursor:pointer} +.operations-job-row:focus-visible,.operations-job-row:hover{border-color:var(--accent);color:var(--ink);outline:0} +.operations-job-row-failed{border-color:color-mix(in srgb,var(--danger) 68%,var(--line))} +.operations-endpoint-row>span:first-child,.operations-job-row>span:first-child{display:grid;gap:2px;min-width:0} +.operations-endpoint-row strong,.operations-job-row strong{color:var(--ink);overflow-wrap:anywhere} +.operations-endpoint-row small,.operations-job-row small{color:var(--ink-faint);font-size:11px;overflow-wrap:anywhere} +.operations-endpoint-row>span:last-child,.operations-job-row>span:not(:first-child){white-space:nowrap;font-size:12px} +.operations-inline-warning,.server-card-warning{display:inline-flex;align-items:center;gap:6px;color:var(--gold);font-size:12px} +.operations-inline-warning{width:100%;margin-top:10px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--gold) 54%,var(--line));border-radius:6px;background:color-mix(in srgb,var(--gold-soft) 72%,var(--surface));text-align:left} +button.operations-inline-warning{cursor:pointer} +.inline-link-command{border:0;padding:0;background:0 0;color:var(--accent-deep);text-decoration:underline;cursor:pointer} +.inline-link-command:focus-visible,.inline-link-command:hover{color:var(--ink);outline:0} +.server-card-warning{justify-self:start;color:var(--gold)} +.resource-filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0} +.resource-filter-bar input,.resource-filter-bar select{min-height:36px;min-width:150px;border:1px solid var(--line-strong);border-radius:6px;padding:0 10px;background:var(--surface-solid);color:var(--ink);font:inherit} +.resource-filter-bar input{flex:1 1 240px} +.resource-filter-bar input:focus,.resource-filter-bar select:focus{border-color:var(--accent);outline:2px solid var(--accent-soft)} +.operations-tray{position:relative;z-index:2;min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--panel-material),var(--surface);box-shadow:var(--panel-shadow)} +.operations-tray-trigger{width:100%;display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:44px;padding:6px 8px;border:0;background:0 0;color:var(--ink-soft);cursor:pointer;text-align:left} +.operations-tray-trigger:focus-visible,.operations-tray-trigger:hover{color:var(--ink);outline:0;background:color-mix(in srgb,var(--accent-soft) 74%,transparent)} +.operations-tray-glyph{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--line);border-radius:6px;background:var(--menu-glyph-bg);color:var(--accent-deep)} +.operations-tray-copy{display:grid;gap:2px;min-width:0} +.operations-tray-copy strong{color:var(--ink);font-size:12px} +.operations-tray-copy span,.operations-tray-heading span{color:var(--ink-faint);font-size:10px} +.operations-tray-panel{position:absolute;left:calc(100% + 10px);bottom:0;width:min(360px,36vw);max-height:min(420px,66vh);overflow:auto;padding:10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel-material),var(--surface-solid);box-shadow:var(--panel-shadow),0 18px 40px rgba(0,0,0,.42)} +.operations-tray-heading{display:grid;gap:3px;padding-bottom:8px;border-bottom:1px solid var(--line)} +.operations-tray-heading strong{color:var(--ink);font-size:12px} +.operations-tray-list{display:grid;gap:6px;margin:8px 0 0;padding:0;list-style:none} +.operations-tray-item{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:7px;align-items:start;padding:8px;border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--surface-solid) 86%,var(--accent-soft))} +.operations-tray-item-failed{border-color:color-mix(in srgb,var(--danger) 62%,var(--line))} +.operations-tray-status{display:inline-flex;color:var(--accent-deep)} +.operations-tray-item-failed .operations-tray-status{color:var(--danger)} +.operations-tray-item-succeeded .operations-tray-status{color:var(--success)} +.operations-tray-item-copy{display:grid;gap:2px;min-width:0} +.operations-tray-item-copy strong{color:var(--ink);font-size:12px} +.operations-tray-item-copy span{color:var(--ink-soft);font-size:11px;overflow-wrap:anywhere} +.operations-tray-item-copy code{color:var(--gold);font-size:10px} +.operations-tray-item time{color:var(--ink-faint);font-size:10px;white-space:nowrap} +.operations-tray-empty{margin:10px 0 2px;color:var(--ink-faint);font-size:11px} +.app-shell-sidebar-collapsed .operations-tray{width:44px} +.app-shell-sidebar-collapsed .operations-tray-trigger{grid-template-columns:1fr;place-items:center;padding:6px 0} +.app-shell-sidebar-collapsed .operations-tray-copy,.app-shell-sidebar-collapsed .operations-tray-trigger>svg{display:none} +:root[data-theme-palette=magical-girl] .operations-tray,:root[data-theme-palette=magical-girl] .operations-tray-panel{border-radius:12px;box-shadow:var(--jelly-inset),var(--panel-shadow)} +@media (max-width:760px){.operations-command-grid{grid-template-columns:1fr} +.page-header-actions,.panel-header-actions{width:100%;justify-content:flex-start} +.operations-endpoint-row,.operations-job-row{grid-template-columns:minmax(0,1fr) auto} +.operations-endpoint-row>span:last-child,.operations-job-row>span:last-child{grid-column:2} +.resource-filter-bar>*{flex:1 1 100%;min-width:0} +.resource-filter-bar .inline-link-command{flex:0 0 auto;width:auto} +:root[data-theme-palette=magical-girl] .provider-table-wrap,:root[data-theme-palette=magical-girl] .resource-table-wrap,:root[data-theme-palette=magical-girl] .server-table-wrap{overflow-x:auto;overflow-y:hidden} +.operations-tray{grid-column:1/-1;width:100%} +.operations-tray-panel{position:static;width:100%;max-height:280px;border-top:1px solid var(--line);border-radius:0 0 8px 8px;box-shadow:none} +.app-shell-sidebar-collapsed .operations-tray{width:100%} +.app-shell-sidebar-collapsed .operations-tray-trigger{grid-template-columns:28px minmax(0,1fr) auto;place-items:center stretch;padding:6px 8px} +.app-shell-sidebar-collapsed .operations-tray-copy,.app-shell-sidebar-collapsed .operations-tray-trigger>svg{display:grid} } - -: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; -} - -/* ---- operations console enrichment ---- */ - -.page-header-actions, -.panel-header-actions { - display: inline-flex; - align-items: center; - justify-content: flex-end; - gap: 8px; - flex-wrap: wrap; -} - -.operations-command-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 14px; -} - -.operations-module { - min-width: 0; -} - -.operations-module .panel-header h2 { - display: inline-flex; - align-items: center; - gap: 7px; -} - -.operations-module-empty, -.operations-module-freshness { - display: block; - margin: 10px 0 0; - color: var(--ink-faint); - font-size: 12px; -} - -.operations-pulse-strip { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 8px; - margin: 0; -} - -.operations-pulse-strip > div { - display: grid; - gap: 3px; - min-width: 0; - padding: 9px 10px; - border: 1px solid color-mix(in srgb, var(--line) 78%, transparent); - border-radius: 6px; - background: color-mix(in srgb, var(--surface-solid) 78%, var(--accent-soft)); -} - -.operations-pulse-strip dt { - color: var(--ink-faint); - font-size: 11px; -} - -.operations-pulse-strip dd { - margin: 0; - color: var(--ink); - font-size: 18px; - font-weight: 850; -} - -.operations-job-list, -.operations-endpoint-list { - display: grid; - gap: 6px; - margin-top: 10px; -} - -.operations-job-row, -.operations-endpoint-row { - display: grid; - grid-template-columns: minmax(0, 1fr) auto auto; - align-items: center; - gap: 10px; - min-width: 0; - padding: 8px 10px; - border: 1px solid var(--line); - border-radius: 6px; - background: var(--control-surface); - color: var(--ink-soft); - text-align: left; -} - -.operations-job-row { - width: 100%; - cursor: pointer; -} - -.operations-job-row:hover, -.operations-job-row:focus-visible { - border-color: var(--accent); - color: var(--ink); - outline: none; -} - -.operations-job-row-failed { - border-color: color-mix(in srgb, var(--danger) 68%, var(--line)); -} - -.operations-job-row > span:first-child, -.operations-endpoint-row > span:first-child { - display: grid; - gap: 2px; - min-width: 0; -} - -.operations-job-row strong, -.operations-endpoint-row strong { - color: var(--ink); - overflow-wrap: anywhere; -} - -.operations-job-row small, -.operations-endpoint-row small { - color: var(--ink-faint); - font-size: 11px; - overflow-wrap: anywhere; -} - -.operations-job-row > span:not(:first-child), -.operations-endpoint-row > span:last-child { - white-space: nowrap; - font-size: 12px; -} - -.operations-inline-warning, -.server-card-warning { - display: inline-flex; - align-items: center; - gap: 6px; - color: var(--gold); - font-size: 12px; -} - -.operations-inline-warning { - width: 100%; - margin-top: 10px; - padding: 8px 10px; - border: 1px solid color-mix(in srgb, var(--gold) 54%, var(--line)); - border-radius: 6px; - background: color-mix(in srgb, var(--gold-soft) 72%, var(--surface)); - text-align: left; -} - -button.operations-inline-warning { - cursor: pointer; -} - -.inline-link-command { - border: 0; - padding: 0; - background: transparent; - color: var(--accent-deep); - text-decoration: underline; - cursor: pointer; -} - -.inline-link-command:hover, -.inline-link-command:focus-visible { - color: var(--ink); - outline: none; -} - -.server-card-warning { - justify-self: start; - color: var(--gold); -} - -.resource-filter-bar { - display: flex; - align-items: center; - gap: 8px; - flex-wrap: wrap; - margin: 12px 0; -} - -.resource-filter-bar input, -.resource-filter-bar select { - min-height: 36px; - min-width: 150px; - border: 1px solid var(--line-strong); - border-radius: 6px; - padding: 0 10px; - background: var(--surface-solid); - color: var(--ink); - font: inherit; -} - -.resource-filter-bar input { - flex: 1 1 240px; -} - -.resource-filter-bar input:focus, -.resource-filter-bar select:focus { - border-color: var(--accent); - outline: 2px solid var(--accent-soft); -} - -.operations-tray { - position: relative; - z-index: 2; - min-width: 0; - border: 1px solid var(--line); - border-radius: 8px; - background: var(--panel-material), var(--surface); - box-shadow: var(--panel-shadow); -} - -.operations-tray-trigger { - width: 100%; - display: grid; - grid-template-columns: 28px minmax(0, 1fr) auto; - align-items: center; - gap: 7px; - min-height: 44px; - padding: 6px 8px; - border: 0; - background: transparent; - color: var(--ink-soft); - cursor: pointer; - text-align: left; -} - -.operations-tray-trigger:hover, -.operations-tray-trigger:focus-visible { - color: var(--ink); - outline: none; - background: color-mix(in srgb, var(--accent-soft) 74%, transparent); -} - -.operations-tray-glyph { - display: inline-flex; - align-items: center; - justify-content: center; - width: 28px; - height: 28px; - border: 1px solid var(--line); - border-radius: 6px; - background: var(--menu-glyph-bg); - color: var(--accent-deep); -} - -.operations-tray-copy { - display: grid; - gap: 2px; - min-width: 0; -} - -.operations-tray-copy strong { - color: var(--ink); - font-size: 12px; -} - -.operations-tray-copy span, -.operations-tray-heading span { - color: var(--ink-faint); - font-size: 10px; -} - -.operations-tray-panel { - position: absolute; - left: calc(100% + 10px); - bottom: 0; - width: min(360px, 36vw); - max-height: min(420px, 66vh); - overflow: auto; - padding: 10px; - border: 1px solid var(--line-strong); - border-radius: 8px; - background: var(--panel-material), var(--surface-solid); - box-shadow: var(--panel-shadow), 0 18px 40px rgba(0, 0, 0, 0.42); -} - -.operations-tray-heading { - display: grid; - gap: 3px; - padding-bottom: 8px; - border-bottom: 1px solid var(--line); -} - -.operations-tray-heading strong { - color: var(--ink); - font-size: 12px; -} - -.operations-tray-list { - display: grid; - gap: 6px; - margin: 8px 0 0; - padding: 0; - list-style: none; -} - -.operations-tray-item { - display: grid; - grid-template-columns: 20px minmax(0, 1fr) auto; - gap: 7px; - align-items: start; - padding: 8px; - border: 1px solid var(--line); - border-radius: 6px; - background: color-mix(in srgb, var(--surface-solid) 86%, var(--accent-soft)); -} - -.operations-tray-item-failed { - border-color: color-mix(in srgb, var(--danger) 62%, var(--line)); -} - -.operations-tray-status { - display: inline-flex; - color: var(--accent-deep); -} - -.operations-tray-item-failed .operations-tray-status { - color: var(--danger); -} - -.operations-tray-item-succeeded .operations-tray-status { - color: var(--success); -} - -.operations-tray-item-copy { - display: grid; - gap: 2px; - min-width: 0; -} - -.operations-tray-item-copy strong { - color: var(--ink); - font-size: 12px; -} - -.operations-tray-item-copy span { - color: var(--ink-soft); - font-size: 11px; - overflow-wrap: anywhere; -} - -.operations-tray-item-copy code { - color: var(--gold); - font-size: 10px; -} - -.operations-tray-item time { - color: var(--ink-faint); - font-size: 10px; - white-space: nowrap; -} - -.operations-tray-empty { - margin: 10px 0 2px; - color: var(--ink-faint); - font-size: 11px; -} - -.app-shell-sidebar-collapsed .operations-tray { - width: 44px; -} - -.app-shell-sidebar-collapsed .operations-tray-trigger { - grid-template-columns: 1fr; - place-items: center; - padding: 6px 0; -} - -.app-shell-sidebar-collapsed .operations-tray-copy, -.app-shell-sidebar-collapsed .operations-tray-trigger > svg { - display: none; -} - -:root[data-theme-palette="magical-girl"] .operations-tray, -:root[data-theme-palette="magical-girl"] .operations-tray-panel { - border-radius: 12px; - box-shadow: var(--jelly-inset), var(--panel-shadow); -} - -@media (max-width: 760px) { - .operations-command-grid { - grid-template-columns: 1fr; - } - - .page-header-actions, - .panel-header-actions { - width: 100%; - justify-content: flex-start; - } - - .operations-job-row, - .operations-endpoint-row { - grid-template-columns: minmax(0, 1fr) auto; - } - - .operations-job-row > span:last-child, - .operations-endpoint-row > span:last-child { - grid-column: 2; - } - - .resource-filter-bar > * { - flex: 1 1 100%; - min-width: 0; - } - - .resource-filter-bar .inline-link-command { - flex: 0 0 auto; - width: auto; - } - - :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 { - overflow-x: auto; - overflow-y: hidden; - } - - .operations-tray { - grid-column: 1 / -1; - width: 100%; - } - - .operations-tray-panel { - position: static; - width: 100%; - max-height: 280px; - border-top: 1px solid var(--line); - border-radius: 0 0 8px 8px; - box-shadow: none; - } - - .app-shell-sidebar-collapsed .operations-tray { - width: 100%; - } - - .app-shell-sidebar-collapsed .operations-tray-trigger { - grid-template-columns: 28px minmax(0, 1fr) auto; - place-items: center stretch; - padding: 6px 8px; - } - - .app-shell-sidebar-collapsed .operations-tray-copy, - .app-shell-sidebar-collapsed .operations-tray-trigger > svg { - display: grid; - } -} - -@media (prefers-reduced-motion: reduce) { - .operations-job-row, - .operations-tray-trigger { - transition: none; - } +@media (prefers-reduced-motion:reduce){.operations-job-row,.operations-tray-trigger{transition:none} }