/* * CyberPunk theme polish. * * Inspired by neon Cyberpunk 2077 UI treatments: warning yellow surfaces, * cyan/magenta light, hard edges, scanlines, and high-contrast panels. */ :root[data-theme="cyberpunk"] body::before { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(rgba(255, 242, 0, 0.035) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 240, 255, 0.03) 1px, transparent 1px); background-size: 100% 3px, 3rem 100%; mix-blend-mode: screen; } :root[data-theme="cyberpunk"] body::after { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(115deg, transparent 0 18%, rgba(255, 242, 0, 0.06) 18% 19%, transparent 19% 100%), linear-gradient(245deg, transparent 0 76%, rgba(255, 42, 109, 0.08) 76% 77%, transparent 77% 100%); } :root[data-theme="cyberpunk"] .site-header { border-bottom-color: rgba(255, 242, 0, 0.32); box-shadow: 0 0 22px rgba(0, 240, 255, 0.12); backdrop-filter: blur(12px) saturate(150%); -webkit-backdrop-filter: blur(12px) saturate(150%); } :root[data-theme="cyberpunk"] .brand { text-transform: lowercase; letter-spacing: 0.02em; } :root[data-theme="cyberpunk"] .brand-mark { background: #fff200; color: #08070d; box-shadow: 0 0 0 1px rgba(0, 240, 255, 0.45), 0 0 18px rgba(255, 242, 0, 0.42); clip-path: polygon(0 0, 100% 0, 100% 72%, 78% 100%, 0 100%); } :root[data-theme="cyberpunk"] h1 { color: #fff200; text-shadow: 2px 0 0 rgba(255, 42, 109, 0.58), -2px 0 0 rgba(0, 240, 255, 0.46); } :root[data-theme="cyberpunk"] .card, :root[data-theme="cyberpunk"] .app-sidebar, :root[data-theme="cyberpunk"] .storage-card, :root[data-theme="cyberpunk"] .storage-op-card, :root[data-theme="cyberpunk"] .metric-card, :root[data-theme="cyberpunk"] .logs-filter-card, :root[data-theme="cyberpunk"] .advanced-options { position: relative; background: linear-gradient(145deg, rgba(22, 19, 31, 0.96), rgba(13, 10, 20, 0.96)), linear-gradient(90deg, rgba(255, 242, 0, 0.16), rgba(0, 240, 255, 0.08)); border-color: rgba(255, 242, 0, 0.28); box-shadow: var(--shadow); } :root[data-theme="cyberpunk"] .card::before, :root[data-theme="cyberpunk"] .storage-card::before, :root[data-theme="cyberpunk"] .metric-card::before { content: ""; position: absolute; inset: 0; pointer-events: none; border-top: 1px solid rgba(0, 240, 255, 0.4); clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); } :root[data-theme="cyberpunk"] .admin-shell .app-sidebar { border-color: rgba(255, 42, 109, 0.38); background: linear-gradient(180deg, rgba(255, 42, 109, 0.16), rgba(8, 7, 13, 0.94)), #16131f; } :root[data-theme="cyberpunk"] .sidebar-link:hover, :root[data-theme="cyberpunk"] .sidebar-link.is-active, :root[data-theme="cyberpunk"] .admin-shell .sidebar-link.is-active { border-color: rgba(255, 242, 0, 0.42); background: linear-gradient(90deg, rgba(255, 242, 0, 0.2), rgba(0, 240, 255, 0.08)); color: #fff200; } :root[data-theme="cyberpunk"] .kicker, :root[data-theme="cyberpunk"] .admin-shell .kicker { color: #00f0ff; text-shadow: 0 0 12px rgba(0, 240, 255, 0.36); } :root[data-theme="cyberpunk"] .button-primary, :root[data-theme="cyberpunk"] .button.is-active { border-color: #fff200; background: #fff200; color: #08070d; box-shadow: 4px 4px 0 rgba(255, 42, 109, 0.7), 0 0 18px rgba(255, 242, 0, 0.3); clip-path: polygon(0 0, calc(100% - 0.7rem) 0, 100% 0.7rem, 100% 100%, 0.7rem 100%, 0 calc(100% - 0.7rem)); } :root[data-theme="cyberpunk"] .button-primary:hover, :root[data-theme="cyberpunk"] .button.is-active:hover { background: #00f0ff; border-color: #00f0ff; color: #08070d; box-shadow: 4px 4px 0 rgba(255, 42, 109, 0.78), 0 0 22px rgba(0, 240, 255, 0.42); } :root[data-theme="cyberpunk"] .button-outline, :root[data-theme="cyberpunk"] .button-ghost { border-color: rgba(0, 240, 255, 0.28); } :root[data-theme="cyberpunk"] .button-outline:hover, :root[data-theme="cyberpunk"] .button-ghost:hover { border-color: rgba(255, 242, 0, 0.46); background: rgba(255, 242, 0, 0.1); } :root[data-theme="cyberpunk"] input, :root[data-theme="cyberpunk"] select, :root[data-theme="cyberpunk"] textarea { background: rgba(8, 7, 13, 0.92); border-color: rgba(0, 240, 255, 0.34); } :root[data-theme="cyberpunk"] input:focus, :root[data-theme="cyberpunk"] select:focus, :root[data-theme="cyberpunk"] textarea:focus { border-color: #fff200; box-shadow: 0 0 0 3px rgba(255, 242, 0, 0.16), 0 0 22px rgba(0, 240, 255, 0.18); } :root[data-theme="cyberpunk"] .badge { border: 1px solid rgba(0, 240, 255, 0.22); background: rgba(0, 240, 255, 0.08); color: #9bfaff; } :root[data-theme="cyberpunk"] .badge-active, :root[data-theme="cyberpunk"] .storage-detail-test.is-ok > span:last-child { color: #00ff9f; } :root[data-theme="cyberpunk"] .badge-disabled, :root[data-theme="cyberpunk"] .storage-detail-test.is-err > span:last-child, :root[data-theme="cyberpunk"] .form-error { color: #ff2a6d; } :root[data-theme="cyberpunk"] .drop-zone { border-color: rgba(255, 242, 0, 0.34); background: linear-gradient(145deg, rgba(255, 242, 0, 0.08), transparent 38%), rgba(8, 7, 13, 0.76); } :root[data-theme="cyberpunk"] .drop-zone:hover, :root[data-theme="cyberpunk"] .drop-zone.is-dragging { border-color: #00f0ff; background: linear-gradient(145deg, rgba(0, 240, 255, 0.14), transparent 42%), rgba(8, 7, 13, 0.82); } :root[data-theme="cyberpunk"] ::selection { background: #ff2a6d; color: #ffffff; } @media (prefers-reduced-motion: no-preference) { :root[data-theme="cyberpunk"] .brand-mark, :root[data-theme="cyberpunk"] h1 { animation: cyberpunk-pulse 4s ease-in-out infinite; } } @keyframes cyberpunk-pulse { 0%, 100% { filter: none; } 50% { filter: drop-shadow(0 0 0.45rem rgba(0, 240, 255, 0.28)); } }