: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; } :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); } :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; } .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; } :root[data-theme-palette] :where( .console-panel, .catalog-card, .server-card, .resource-table-wrap, .provider-table-wrap, .server-table-wrap, .plugin-group, .operation-item ) .state-view::before, :root[data-theme-palette] :where( .console-panel, .catalog-card, .server-card, .resource-table-wrap, .provider-table-wrap, .server-table-wrap, .plugin-group, .operation-item ) .state-view::after { content: none; background: none; box-shadow: none; filter: none; } :root[data-custom-background="true"][data-theme-palette] :where( .console-panel, .catalog-card, .server-card, .resource-table-wrap, .provider-table-wrap, .server-table-wrap, .plugin-group, .operation-item ) .state-view { border: 0; background: transparent; box-shadow: none; clip-path: none; -webkit-backdrop-filter: none; backdrop-filter: none; } :root[data-custom-background="true"][data-theme-palette] :where( .console-panel, .catalog-card, .server-card, .resource-table-wrap, .provider-table-wrap, .server-table-wrap, .plugin-group, .operation-item ) .state-view::before, :root[data-custom-background="true"][data-theme-palette] :where( .console-panel, .catalog-card, .server-card, .resource-table-wrap, .provider-table-wrap, .server-table-wrap, .plugin-group, .operation-item ) .state-view::after { content: none; background: none; box-shadow: none; filter: none; } /* ---- 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; } }