/
indra
/
zhidao-protocol
Обзор
Документация
Войти
/
indra
/
zhidao-protocol
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
css/styles.css
19 118 строк
551 KB
Claude
Profile button toggles closed, instruction tour adapts to feature freeze
25 июн 2026, 00:32
25 июн 2026, 00:32
0241c1f
Код
Авторство
О чём код?
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color: transparent; } :focus { outline: none; } /* Tactile press feedback to replace the removed default tap-highlight. Scoped to real buttons only — a blanket [onclick] selector matched every card/tile/row in the app (huge style-recalc cost on big re-renders like the shop catalog) and made large elements feel heavy/slow when scaled. */ button, .btn { transition: transform 0.08s ease; } button:active, .btn:active { transform: scale(0.96); } :root { --red: #cc2200; --red-dim: rgba(180,20,20,0.15); --red-border: rgba(180,20,20,0.35); --gold: #d4af37; --gold-dim: rgba(212,175,55,0.1); --gold-border: rgba(212,175,55,0.25); --bg: #050510; --bg2: rgba(255,255,255,0.03); --bg3: rgba(255,255,255,0.06); --border: rgba(255,255,255,0.07); --text: #ffffff; --text2: #cccccc; --text3: #888888; --purple: #9b59b6; --purple-dim: rgba(155,89,182,0.15); --purple-border: rgba(155,89,182,0.3); --nav-h: 68px; --app-height: 100dvh; --app-width: 100vw; --tg-viewport-height: 100dvh; --tg-safe-top: env(safe-area-inset-top, 0px); --tg-safe-right: env(safe-area-inset-right, 0px); --tg-safe-bottom: env(safe-area-inset-bottom, 0px); --tg-safe-left: env(safe-area-inset-left, 0px); --font-ui: -apple-system, sans-serif; --btn-radius: 8px; --card-radius: 10px; --scan-opacity: 0.025; /* Design tokens */ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 14px; --radius-xl: 18px; --radius-pill: 999px; --transition-fast: 120ms; --transition-normal: 200ms; --transition-slow: 350ms; --ease-standard: cubic-bezier(0.4, 0, 0.2, 1); --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); } /* ===== NETWATCH LIGHT ===== */ body.theme-nw-light { --red: #993333; --red-dim: rgba(180,20,20,0.08); --red-border: rgba(180,20,20,0.22); --gold: #7a5010; --gold-dim: rgba(150,100,20,0.1); --gold-border: rgba(150,100,20,0.25); --bg: #f4f1ed; --bg2: rgba(0,0,0,0.03); --bg3: rgba(0,0,0,0.05); --border: rgba(0,0,0,0.08); --text: #1a1a1a; --text2: #333333; --text3: #5a5a5a; --scan-opacity: 0.01; --contract-card-bg: rgba(255,255,255,0.78); --contract-card-border: rgba(0,0,0,0.09); --contract-card-shadow: 0 4px 16px rgba(0,0,0,0.07); } /* ===== GENSHIN LIGHT ===== */ body.theme-genshin-light { --red: #4b5366; --red-dim: rgba(75,83,102,0.08); --red-border: rgba(75,83,102,0.2); --gold: #8a6820; --gold-dim: rgba(219,177,101,0.12); --gold-border: rgba(219,177,101,0.3); --bg: #ece5d8; --bg2: rgba(255,255,255,0.6); --bg3: rgba(255,255,255,0.8); --border: rgba(219,177,101,0.2); --text: #3d4555; --text2: #454d5e; --text3: #6b7280; --font-ui: Georgia, serif; --btn-radius: 20px; --card-radius: 12px; --scan-opacity: 0.005; } body.theme-genshin-light .bottom-nav { background: rgba(236,229,216,0.97); border-top-color: rgba(219,177,101,0.25); } body.theme-genshin-light .bottom-nav::before { background: linear-gradient(90deg, transparent, rgba(219,177,101,0.5), transparent); } body.theme-genshin-light .btn-primary { border-radius: 20px; font-family: Georgia, serif; letter-spacing: 0.5px; text-transform: none; } body.theme-genshin-light .page-title { font-family: Georgia, serif; } /* ===== GENSHIN DARK ===== */ body.theme-genshin-dark { --red: #c87941; --red-dim: rgba(200,121,65,0.1); --red-border: rgba(200,121,65,0.25); --gold: rgba(219,177,101,0.9); --gold-dim: rgba(219,177,101,0.1); --gold-border: rgba(219,177,101,0.25); --bg: #1a1628; --bg2: rgba(255,255,255,0.04); --bg3: rgba(255,255,255,0.07); --border: rgba(219,177,101,0.1); --text: #e8e0d0; --text2: #a09880; --text3: #5a5248; --font-ui: Georgia, serif; --btn-radius: 20px; --card-radius: 12px; --scan-opacity: 0.02; } body.theme-genshin-dark .bottom-nav { background: rgba(26,22,40,0.97); border-top-color: rgba(219,177,101,0.15); } body.theme-genshin-dark .bottom-nav::before { background: linear-gradient(90deg, transparent, rgba(219,177,101,0.4), transparent); } body.theme-genshin-dark .btn-primary { border-radius: 20px; font-family: Georgia, serif; letter-spacing: 0.5px; text-transform: none; } body.theme-genshin-dark .page-title { font-family: Georgia, serif; text-shadow: none; } /* ===== ADMIN PROTOCOL ===== */ body.theme-admin { --accent: #6478ff; --accent2: #00d4ff; --accent-warn: #ffb400; --red: #6478ff; --red-dim: rgba(100,120,255,0.1); --red-border: rgba(100,120,255,0.3); --gold: #00d4ff; --gold-dim: rgba(0,212,255,0.08); --gold-border: rgba(0,212,255,0.2); --bg: #0a0a14; --bg2: #0d0d20; --bg3: rgba(100,120,255,0.06); --border: rgba(100,120,255,0.2); --text: #e0e8ff; --text2: rgba(224,232,255,0.55); --text3: rgba(224,232,255,0.3); --scan-opacity: 0.03; } body.theme-admin .bottom-nav { background: rgba(10,10,20,0.97); border-top-color: rgba(100,120,255,0.25); } body.theme-admin .bottom-nav::before { background: linear-gradient(90deg, transparent, rgba(100,120,255,0.5), transparent); } body.theme-admin .page-title { text-shadow: 0 0 20px rgba(100,120,255,0.4); } /* Nav active: синий вместо красного */ body.theme-admin .nav-item.active { color: #6478ff; } body.theme-admin .nav-item.active::before { background: linear-gradient(90deg, transparent, rgba(100,120,255,0.9), transparent); } body.theme-admin .nav-item.active .ti { color: #6478ff; filter: drop-shadow(0 0 6px rgba(100,120,255,0.5)); } /* Кнопки */ body.theme-admin .btn-primary { color: #8090ff; } body.theme-admin .btn-primary::after { background: linear-gradient(90deg, transparent, rgba(100,120,255,0.12), transparent); } /* Card label + divider accent */ body.theme-admin .card-label { color: rgba(140,160,255,0.85); } body.theme-admin .card-label::after { background: linear-gradient(90deg, rgba(100,120,255,0.2), transparent); } /* Neuro статус и кикер */ body.theme-admin .neuro-status { color: #6478ff; } body.theme-admin .profile-card-kicker { color: rgba(100,120,255,0.7); } /* Subtabs и date-btn active */ body.theme-admin .subtab.active { color: #6478ff; } body.theme-admin .date-btn.active { color: #6478ff; } /* Разные var(--red) метки */ body.theme-admin .shop-item-limit.limit-soldout { color: #8090ff; } body.theme-admin .prize-result-points.negative { color: #ff7f7f; } body.theme-admin .inv-btn-sell { background: rgba(100,120,255,0.1); color: #8090ff; } /* Профильные бейджи */ body.theme-admin .profile-badge-path { background: rgba(100,120,255,0.12); border-color: rgba(100,120,255,0.28); color: rgba(160,180,255,0.9); } body.theme-admin .profile-badge-rank { background: rgba(0,212,255,0.1); border-color: rgba(0,212,255,0.3); color: #00d4ff; } /* Admin profile card: синий гlow вместо красного */ body.is-admin.theme-admin .profile-card-home { border-color: rgba(100,120,255,0.5); background: radial-gradient(ellipse at 0% 0%, rgba(100,120,255,0.12), transparent 48%), radial-gradient(ellipse at 100% 100%, rgba(0,212,255,0.07), transparent 52%), linear-gradient(155deg, rgba(255,255,255,0.03), rgba(5,5,20,0.7)); box-shadow: 0 0 28px rgba(100,120,255,0.14), inset 0 0 20px rgba(100,120,255,0.06); } body.is-admin.theme-admin .profile-card-home::before, body.is-admin.theme-admin .profile-card-home::after { border-color: rgba(100,120,255,0.55); } body.is-admin.theme-admin .profile-scan-line { background: linear-gradient(90deg, transparent, rgba(100,120,255,0.6) 40%, rgba(140,160,255,0.9) 50%, rgba(100,120,255,0.6) 60%, transparent); } body.is-admin.theme-admin .profile-card-kicker { color: rgba(100,120,255,0.75); } body.is-admin.theme-admin .profile-admin-badge { background: rgba(80,100,220,0.88); } /* Карточка темы admin скрыта для обычных пользователей */ #theme-btn-admin { display: none; } body.is-admin #theme-btn-admin { display: block; } /* ===== ADMIN LIGHT THEME ===== */ body.theme-admin-light { --accent: #4456e0; --accent2: #0099cc; --accent-warn: #cc7700; --red: #4456e0; --red-dim: rgba(68,86,224,0.1); --red-border: rgba(68,86,224,0.28); --gold: #0099cc; --gold-dim: rgba(0,153,204,0.1); --gold-border: rgba(0,153,204,0.25); --bg: #eef0fa; --bg2: rgba(255,255,255,0.75); --bg3: rgba(255,255,255,0.95); --border: rgba(68,86,224,0.15); --text: #1a1f40; --text2: #3a4070; --text3: #6a72a0; --scan-opacity: 0.01; } body.theme-admin-light .bottom-nav { background: rgba(238,240,250,0.97); border-top-color: rgba(68,86,224,0.2); } body.theme-admin-light .bottom-nav::before { background: linear-gradient(90deg, transparent, rgba(68,86,224,0.4), transparent); } body.theme-admin-light .page-title { color: #1a1f40; text-shadow: none; } body.theme-admin-light .nav-item.active { color: #4456e0; } body.theme-admin-light .nav-item.active::before { background: linear-gradient(90deg, transparent, rgba(68,86,224,0.7), transparent); } body.theme-admin-light .nav-item.active .ti { color: #4456e0; filter: drop-shadow(0 0 6px rgba(68,86,224,0.4)); } body.theme-admin-light .btn-primary { color: #4456e0; } body.theme-admin-light .card-label { color: rgba(68,86,200,0.85); } body.theme-admin-light .neuro-status { color: #4456e0; } body.theme-admin-light .profile-card-kicker { color: rgba(68,86,200,0.7); } body.theme-admin-light .subtab.active { color: #4456e0; } body.theme-admin-light .date-btn.active { color: #4456e0; } body.theme-admin-light .inv-btn-sell { background: rgba(68,86,224,0.08); color: #4456e0; } body.theme-admin-light .profile-badge-path { background: rgba(68,86,224,0.1); border-color: rgba(68,86,224,0.25); color: rgba(50,70,200,0.9); } body.theme-admin-light .profile-badge-rank { background: rgba(0,153,204,0.1); border-color: rgba(0,153,204,0.3); color: #0099cc; } body.is-admin.theme-admin-light .profile-card-home { border-color: rgba(68,86,224,0.4); background: radial-gradient(ellipse at 0% 0%, rgba(68,86,224,0.08), transparent 48%), radial-gradient(ellipse at 100% 100%, rgba(0,153,204,0.05), transparent 52%), linear-gradient(155deg, rgba(255,255,255,0.7), rgba(238,240,250,0.9)); box-shadow: 0 0 28px rgba(68,86,224,0.1), inset 0 0 20px rgba(68,86,224,0.04); } body.is-admin.theme-admin-light .profile-card-home::before, body.is-admin.theme-admin-light .profile-card-home::after { border-color: rgba(68,86,224,0.45); } body.is-admin.theme-admin-light .profile-scan-line { background: linear-gradient(90deg, transparent, rgba(68,86,224,0.5) 40%, rgba(100,120,255,0.8) 50%, rgba(68,86,224,0.5) 60%, transparent); } body.is-admin.theme-admin-light .profile-admin-badge { background: rgba(68,86,200,0.88); color: #fff; } /* Карточка темы admin-light скрыта для обычных пользователей */ #theme-btn-admin-light { display: none; } body.is-admin #theme-btn-admin-light { display: block; } /* ===== ARCHITECT PROTOCOL THEME ===== */ body.theme-architect { --accent: #00ff88; --accent2: #00e5ff; --accent3: #39ff14; --red: #00ff88; --red-dim: rgba(0,255,136,0.10); --red-border: rgba(0,255,136,0.35); --gold: #00e5ff; --gold-dim: rgba(0,229,255,0.10); --gold-border: rgba(0,229,255,0.28); --bg: #020a05; --bg2: #030e06; --bg3: rgba(0,255,136,0.05); --border: rgba(0,255,136,0.18); --text: #e8fff3; --text2: rgba(232,255,243,0.58); --text3: rgba(232,255,243,0.30); --scan-opacity: 0.04; } body.theme-architect .bottom-nav { background: rgba(2,10,5,0.97); border-top-color: rgba(0,255,136,0.40); } body.theme-architect .bottom-nav::before { background: linear-gradient(90deg, transparent, rgba(0,255,136,0.55), rgba(0,229,255,0.45), rgba(57,255,20,0.20), rgba(0,229,255,0.45), rgba(0,255,136,0.55), transparent); } body.theme-architect .page-title { text-shadow: 0 0 30px rgba(0,255,136,0.7), 0 0 70px rgba(0,255,136,0.22); } body.theme-architect .nav-item.active { color: rgba(0,255,136,0.95); } body.theme-architect .nav-item.active::before { background: linear-gradient(90deg, transparent, rgba(0,255,136,0.85), rgba(0,229,255,0.5), rgba(0,255,136,0.85), transparent); } body.theme-architect .nav-item.active .ti { color: rgba(0,255,136,0.95); filter: drop-shadow(0 0 8px rgba(0,255,136,0.6)) drop-shadow(0 0 16px rgba(0,255,136,0.2)); } body.theme-architect .btn-primary { color: #00ff88; } body.theme-architect .btn-primary::after { background: linear-gradient(90deg, transparent, rgba(0,255,136,0.12), rgba(0,229,255,0.07), transparent); } body.theme-architect .card-label { color: rgba(0,255,136,0.88); } body.theme-architect .card-label::after { background: linear-gradient(90deg, rgba(0,255,136,0.28), rgba(0,229,255,0.10), transparent); } body.theme-architect .neuro-status { color: #00ff88; } body.theme-architect .subtab.active { color: #00ff88; } body.theme-architect .date-btn.active { color: #00ff88; } body.theme-architect .profile-card-kicker { color: rgba(0,255,136,0.78); } body.theme-architect .profile-badge-path { background: rgba(0,255,136,0.10); border-color: rgba(0,255,136,0.32); color: rgba(100,255,180,0.92); } body.theme-architect .profile-badge-rank { background: rgba(0,229,255,0.10); border-color: rgba(0,229,255,0.32); color: #00e5ff; } /* ── Architect profile card ────────────────────────────────── */ body.is-architect .profile-card-home { border-color: rgba(0,255,136,0.55); background: radial-gradient(ellipse at 0% 0%, rgba(0,255,136,0.13), transparent 44%), radial-gradient(ellipse at 100% 100%,rgba(0,229,255,0.12), transparent 44%), radial-gradient(ellipse at 55% 45%, rgba(57,255,20,0.05), transparent 55%), linear-gradient(155deg, rgba(255,255,255,0.03), rgba(2,10,5,0.92)); } body.is-architect .profile-card-home::before, body.is-architect .profile-card-home::after { border-color: rgba(0,255,136,0.70); } body.is-architect .profile-scan-line { display: block; animation: architectScanLine 4s ease-in-out infinite; } body.is-architect .profile-card-kicker { color: rgba(0,255,136,0.85); text-shadow: 0 0 8px rgba(0,255,136,0.45); } body.is-architect .profile-admin-badge { background: linear-gradient(90deg, rgba(0,180,90,0.92), rgba(0,140,70,0.88), rgba(0,180,200,0.45)); border-top: 1px solid rgba(0,229,255,0.30); font-size: 8px; letter-spacing: 2px; padding: 3px 0; text-shadow: 0 0 10px rgba(0,255,136,0.6); } /* Pulse glow — architect green */ body.is-architect .profile-card-home { animation: profilePulseArchitect 3.5s ease-in-out infinite; } body.is-architect.theme-architect .profile-card-home { animation: profilePulseArchitect 3.5s ease-in-out infinite; } /* Holo-ring — static glow, no spin for architect */ body.is-architect .profile-holo-ring { animation: none; opacity: 0.28; filter: drop-shadow(0 0 12px rgba(0,255,136,0.30)); } /* Architect scan line animation */ @keyframes architectScanLine { 0% { top: 0%; opacity: 0; background: linear-gradient(90deg, transparent, rgba(0,255,136,0.7) 40%, rgba(0,255,180,1.0) 50%, rgba(0,255,136,0.7) 60%, transparent); } 8% { opacity: 1; } 45% { background: linear-gradient(90deg, transparent, rgba(0,200,255,0.6) 40%, rgba(0,229,255,0.9) 50%, rgba(0,200,255,0.6) 60%, transparent); } 85% { opacity: 0.6; } 100% { top: 100%; opacity: 0; background: linear-gradient(90deg, transparent, rgba(57,255,20,0.5) 40%, rgba(0,255,136,0.8) 50%, rgba(57,255,20,0.5) 60%, transparent); } } /* Architect triple-layer pulse */ @keyframes profilePulseArchitect { 0%, 100% { box-shadow: 0 0 18px rgba(0,255,136,0.18), 0 0 0 1px rgba(0,255,136,0.28), inset 0 0 22px rgba(0,255,136,0.06); } 33% { box-shadow: 0 0 50px rgba(0,255,136,0.35), 0 0 100px rgba(0,255,136,0.12), 0 0 0 1px rgba(0,229,255,0.55), 0 0 0 3px rgba(0,255,136,0.10), inset 0 0 35px rgba(0,255,136,0.10); } 66% { box-shadow: 0 0 32px rgba(0,255,136,0.24), 0 0 72px rgba(0,229,255,0.12), 0 0 0 1px rgba(0,255,136,0.36), inset 0 0 28px rgba(0,255,136,0.08); } } /* Architect glitch — green/cyan */ body.is-architect .page-title-cn, body.theme-architect .page-title-cn { animation-name: glitchCnArchitect; animation-duration: 7s; } @keyframes glitchCnArchitect { 0%, 72%, 100% { transform: none; text-shadow: none; clip-path: none; opacity: 1; } 73% { transform: translateX(-4px) skewX(-5deg); text-shadow: 3px 0 #00ff88, -3px 0 #00e5ff; opacity: 0.75; } 74% { transform: translateX(5px); text-shadow: -4px 0 #39ff14, 4px 0 #00e5ff; clip-path: polygon(0 12%, 100% 12%, 100% 46%, 0 46%); opacity: 0.7; } 75% { transform: translateX(-2px); text-shadow: 2px 0 rgba(0,255,136,0.9); clip-path: polygon(0 54%, 100% 54%, 100% 83%, 0 83%); } 76% { transform: none; text-shadow: none; clip-path: none; opacity: 1; } 82% { transform: translateX(2px); text-shadow: -2px 0 rgba(0,229,255,0.7); } 83% { transform: none; text-shadow: none; } 90% { transform: translateX(-1px) skewX(-2deg); text-shadow: 1px 0 rgba(0,255,136,0.5), -1px 0 rgba(57,255,20,0.45); } 91% { transform: none; text-shadow: none; } } /* Shimmer-sweep на карточке темы */ .architect-theme-card::after { content: ''; position: absolute; top: 0; left: -120%; width: 60%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.055), rgba(255,204,0,0.04), transparent); animation: architectCardSweep 4s ease-in-out infinite; pointer-events: none; } @keyframes architectCardSweep { 0% { left: -120%; opacity: 0; } 20% { opacity: 1; } 100% { left: 120%; opacity: 0; } } /* Hidden until is-architect */ #theme-btn-architect { display: none; } body.is-architect #theme-btn-architect { display: block; } body { background: var(--bg); color: var(--text); font-family: -apple-system, sans-serif; min-height: var(--app-height, 100dvh); padding-bottom: var(--nav-h); overflow-x: hidden; -webkit-text-size-adjust: 100%; overscroll-behavior: none; } html { min-height: var(--app-height, 100dvh); -webkit-text-size-adjust: 100%; overscroll-behavior: none; } body.tg-ios { min-height: var(--app-height, 100dvh); overflow-x: hidden; padding-bottom: calc(var(--nav-h) + var(--tg-safe-bottom)); } /* Сканлайны на фоне */ body::before { content: ''; position: fixed; inset: 0; background: repeating-linear-gradient(0deg, transparent, transparent 3px, rgba(0,0,0,0.025) 3px, rgba(0,0,0,0.025) 4px); pointer-events: none; z-index: 0; } /* Фоновые иероглифы */ .bg-kanji { position: fixed; font-family: serif; pointer-events: none; z-index: 0; line-height: 1; user-select: none; transform-origin: center; will-change: transform, opacity; animation: kanjiDrift var(--kanji-duration, 18s) ease-in-out infinite; } .matrix-rain { position: fixed; inset: 0; pointer-events: none; z-index: 0; overflow: hidden; } /* Vertical falling hieroglyphs — all users (default themes) */ .matrix-kanji { position: absolute; top: -120%; white-space: pre; font-size: 14px; font-family: monospace; line-height: 1.6; color: rgba(180, 0, 30, 0.55); text-shadow: 0 0 8px rgba(220, 0, 40, 0.30); will-change: transform; animation: matrixFall var(--dur, 10s) linear infinite; animation-delay: var(--delay, 0s); } @keyframes matrixFall { 0% { transform: translateY(0); } 100% { transform: translateY(240vh); } } /* On light themes the dark-red matrix kanji is too opaque against light cards/backgrounds and makes text behind it unreadable — tone it way down. */ body.theme-nw-light .matrix-kanji, body.theme-genshin-light .matrix-kanji { color: rgba(180, 0, 30, 0.10) !important; text-shadow: none !important; } /* Horizontal data stream rows — architect green only */ .matrix-col { position: absolute; left: -10%; width: 120%; color: rgba(0, 255, 136, 0.38); font-size: 10px; font-family: "Courier New", "Lucida Console", monospace; line-height: 1; white-space: nowrap; letter-spacing: 0.06em; opacity: 0; text-shadow: 0 0 6px rgba(0, 255, 136, 0.30), 0 0 14px rgba(0, 229, 255, 0.12); will-change: transform, opacity; animation: dataStreamRun var(--dur, 18s) linear infinite; animation-delay: var(--delay, 0s); } @keyframes dataStreamRun { 0% { transform: translateX(-5%); opacity: 0; } 6% { opacity: 0.75; } 88% { opacity: 0.45; } 100% { transform: translateX(8%); opacity: 0; } } /* ===== НИЖНЯЯ НАВИГАЦИЯ ===== */ .bottom-nav { position: fixed; bottom: 0; left: 0; right: 0; height: var(--nav-h); background: rgba(5,5,16,0.97); border-top: 1px solid var(--red-border); display: flex; justify-content: space-around; align-items: center; z-index: 100; backdrop-filter: blur(10px); } .bottom-nav::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(180,20,20,0.6), rgba(212,175,55,0.3), rgba(180,20,20,0.6), transparent); } .nav-item { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 4px 8px; cursor: pointer; border: none; background: none; color: #444; font-size: 7px; font-family: monospace; letter-spacing: 0.5px; transition: all var(--transition-normal) var(--ease-standard); text-transform: uppercase; position: relative; flex: 1; } .nav-item.active { color: rgba(200,50,50,0.95); } .nav-item.active::before { content: ''; position: absolute; top: -1px; left: 10%; right: 10%; height: 2px; background: linear-gradient(90deg, transparent, rgba(200,50,50,0.9), transparent); } .nav-item .ti { font-size: 28px !important; line-height: 1; transition: all var(--transition-normal) var(--ease-standard); display: block; } .nav-item.active .ti { color: rgba(200,50,50,0.95); filter: drop-shadow(0 0 6px rgba(200,50,50,0.4)); } .nav-cn { font-size: 8px; font-family: serif; color: inherit; line-height: 1; } .profile-fab { position: fixed; top: calc(10px + var(--tg-safe-top, 0px)); right: calc(10px + var(--tg-safe-right, 0px)); z-index: 500; width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(5,5,16,0.92); border: 1px solid var(--red-border); color: rgba(200,50,50,0.95); backdrop-filter: blur(10px); box-shadow: 0 4px 14px rgba(0,0,0,0.35); cursor: pointer; transition: all var(--transition-normal) var(--ease-standard); } .profile-fab .ti { font-size: 19px !important; line-height: 1; } .profile-fab:active { transform: scale(0.92); } body.theme-nw-light .profile-fab, body.theme-genshin-light .profile-fab, body.theme-admin-light .profile-fab { background: rgba(255,255,255,0.92); color: #a02020; } /* ===== СВЕТЛЫЕ ТЕМЫ — ТЁМНЫЙ ТЕКСТ ===== */ body.theme-nw-light .page-title, body.theme-nw-light .page-sub, body.theme-nw-light .cn-divider, body.theme-nw-light .card-label, body.theme-nw-light .neuro-label, body.theme-nw-light .stat-label, body.theme-nw-light .team-name, body.theme-nw-light .more-item-name, body.theme-nw-light .shop-item-name, body.theme-nw-light .announcement-text, body.theme-nw-light .lb-name, body.theme-nw-light .lb-points { color: #1a1a1a !important; } body.theme-nw-light .page-sub, body.theme-nw-light .team-role, body.theme-nw-light .shop-item-desc, body.theme-nw-light .announcement-date { color: #444444 !important; } /* Low-opacity gold "kicker" labels and headers are illegible on the light background — darken them to the same readable gold used elsewhere in theme-nw-light (#7a5010). */ body.theme-nw-light .alpha-boss-kicker, body.theme-nw-light .alpha-boss-pts, body.theme-nw-light .alpha-boss-raid-cost, body.theme-nw-light .page-title-cn, body.theme-nw-light .main-pinyin, body.theme-nw-light .stat-cn, body.theme-nw-light .implant-py, body.theme-nw-light .profile-card-kicker, body.theme-nw-light .lb-leaders-label, body.theme-nw-light .more-stat-lbl span, body.theme-nw-light .more-item-cn, body.theme-nw-light .shop-cat .cn, body.theme-nw-light .shop-item-cn, body.theme-nw-light .case-cn.g, body.theme-nw-light .event-lobby-count, body.theme-nw-light .launch-gate-kicker, body.theme-nw-light .demo-lock-kicker, body.theme-nw-light .event-lobby-card .event-lobby-reward::before, body.theme-nw-light .event-result-card .event-lobby-reward::before, body.theme-nw-light .diary-star, body.theme-genshin-light .alpha-boss-kicker, body.theme-genshin-light .alpha-boss-pts, body.theme-genshin-light .alpha-boss-raid-cost, body.theme-genshin-light .page-title-cn, body.theme-genshin-light .main-pinyin, body.theme-genshin-light .stat-cn, body.theme-genshin-light .implant-py, body.theme-genshin-light .profile-card-kicker, body.theme-genshin-light .lb-leaders-label, body.theme-genshin-light .more-stat-lbl span, body.theme-genshin-light .more-item-cn, body.theme-genshin-light .shop-cat .cn, body.theme-genshin-light .shop-item-cn, body.theme-genshin-light .case-cn.g, body.theme-genshin-light .event-lobby-count, body.theme-genshin-light .launch-gate-kicker, body.theme-genshin-light .demo-lock-kicker, body.theme-genshin-light .event-lobby-card .event-lobby-reward::before, body.theme-genshin-light .event-result-card .event-lobby-reward::before, body.theme-genshin-light .diary-star { color: #a07028 !important; } body.theme-genshin-light .page-title, body.theme-genshin-light .lb-name, body.theme-genshin-light .lb-points, body.theme-genshin-light .more-item-name, body.theme-genshin-light .shop-item-name, body.theme-genshin-light .announcement-text, body.theme-genshin-light .team-name { color: #2a2040 !important; } body.theme-genshin-light .page-sub, body.theme-genshin-light .team-role, body.theme-genshin-light .shop-item-desc, body.theme-genshin-light .announcement-date { color: #454d5e !important; } body.theme-genshin-dark .lb-name, body.theme-genshin-dark .lb-points { color: #e8e0d0 !important; } body.theme-nw-light .lb-item, body.theme-genshin-light .lb-item, body.theme-nw-light .diary-rank-card, body.theme-genshin-light .diary-rank-card { border-color: rgba(80, 58, 35, 0.16); background: radial-gradient(circle at 0% 50%, rgba(184, 109, 31, 0.08), transparent 42%), linear-gradient(90deg, rgba(255,255,255,0.84), rgba(246,240,226,0.74)); box-shadow: 0 10px 22px rgba(70,45,20,0.08); } body.theme-genshin-light .lb-item, body.theme-genshin-light .diary-rank-card { border-color: rgba(149, 117, 70, 0.22); background: radial-gradient(circle at 0% 50%, rgba(184, 134, 59, 0.12), transparent 42%), linear-gradient(90deg, rgba(255,250,238,0.90), rgba(238,230,210,0.78)); } body.theme-nw-light .lb-item.top1, body.theme-genshin-light .lb-item.top1, body.theme-nw-light .diary-rank-card.top1, body.theme-genshin-light .diary-rank-card.top1 { border-color: rgba(184, 134, 59, 0.52); background: radial-gradient(circle at 0% 50%, rgba(212,175,55,0.22), transparent 46%), linear-gradient(90deg, rgba(255,244,204,0.96), rgba(255,255,255,0.74)); } body.theme-nw-light .lb-item.top2, body.theme-genshin-light .lb-item.top2, body.theme-nw-light .diary-rank-card.top2, body.theme-genshin-light .diary-rank-card.top2 { border-color: rgba(120, 128, 140, 0.36); background: linear-gradient(90deg, rgba(226,231,236,0.92), rgba(255,255,255,0.70)); } body.theme-nw-light .lb-item.top3, body.theme-genshin-light .lb-item.top3, body.theme-nw-light .diary-rank-card.top3, body.theme-genshin-light .diary-rank-card.top3 { border-color: rgba(184,115,51,0.38); background: linear-gradient(90deg, rgba(239,215,190,0.92), rgba(255,255,255,0.70)); } body.theme-nw-light .lb-subline, body.theme-genshin-light .lb-subline, body.theme-nw-light .diary-rank-sub, body.theme-genshin-light .diary-rank-sub { color: #4f493f; } body.theme-nw-light .lb-path-badge, body.theme-genshin-light .lb-path-badge { background: rgba(255,255,255,0.78); color: #5d4320; border-color: rgba(120, 90, 40, 0.28); } /* Genshin Dark — same warm gold-on-deep-purple treatment as the light variant above, mirrored in dark tones (was previously unstyled and fell back to the default NetWatch-dark look). */ body.theme-genshin-dark .lb-item, body.theme-genshin-dark .diary-rank-card { border-color: rgba(219,177,101,0.18); background: radial-gradient(circle at 0% 50%, rgba(219,177,101,0.1), transparent 42%), linear-gradient(90deg, rgba(255,255,255,0.05), rgba(255,255,255,0.015)); } body.theme-genshin-dark .lb-item.top1, body.theme-genshin-dark .diary-rank-card.top1 { border-color: rgba(219,177,101,0.4); background: radial-gradient(circle at 0% 50%, rgba(219,177,101,0.2), transparent 46%), linear-gradient(90deg, rgba(219,177,101,0.1), transparent); } body.theme-genshin-dark .lb-item.top2, body.theme-genshin-dark .diary-rank-card.top2 { border-color: rgba(200,200,210,0.22); background: linear-gradient(90deg, rgba(200,200,210,0.07), rgba(255,255,255,0.015)); } body.theme-genshin-dark .lb-item.top3, body.theme-genshin-dark .diary-rank-card.top3 { border-color: rgba(200,121,65,0.3); background: linear-gradient(90deg, rgba(200,121,65,0.1), rgba(255,255,255,0.015)); } body.theme-genshin-dark .lb-subline, body.theme-genshin-dark .diary-rank-sub { color: #a09880; } body.theme-genshin-dark .lb-path-badge { background: rgba(255,255,255,0.06); color: #e8e0d0; border-color: rgba(219,177,101,0.25); } .page { display: none; padding: 0 0 10px; position: relative; z-index: 1; } .page.active { display: block; } /* ===== ШАПКА СТРАНИЦЫ ===== */ .page-header { padding: 14px 16px 10px; position: relative; } .page-header::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--red-border), var(--gold-border), transparent); } .page-title { font-size: 18px; font-weight: 900; letter-spacing: 3px; color: var(--text); text-shadow: 1px 0 #cc0022, -1px 0 rgba(0,200,255,0.2); display: flex; align-items: center; gap: 8px; } .page-title-cn { font-size: 11px; color: rgba(212,175,55,0.7); font-family: serif; font-weight: 400; letter-spacing: 2px; } .page-sub { font-size: 9px; color: rgba(200,80,80,0.6); font-family: monospace; letter-spacing: 1px; margin-top: 3px; } /* ===== КАРТОЧКИ ===== */ .card { background: var(--bg2); border: 1px solid var(--border); border-radius: 10px; margin: 10px 12px; position: relative; overflow: hidden; } .card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--red-border), rgba(212,175,55,0.2), transparent); } .card-inner { padding: 12px; } .card-label { font-size: 8px; color: rgba(200,80,80,0.85); letter-spacing: 2px; font-family: monospace; margin-bottom: 8px; display: flex; align-items: center; gap: 6px; } .card-label::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, rgba(200,50,50,0.2), transparent); } /* Разделитель с фонариком */ .cn-divider { display: flex; align-items: center; gap: 6px; padding: 8px 12px 4px; font-size: 10px; color: rgba(200,80,80,0.75); letter-spacing: 1px; font-family: monospace; } .cn-divider::before { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, var(--red-border)); } .cn-divider::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, var(--red-border), transparent); } /* ===== КНОПКИ ===== */ .btn { border: none; border-radius: var(--btn-radius); font-weight: 700; cursor: pointer; font-family: monospace; letter-spacing: 1px; text-transform: uppercase; transition: all var(--transition-normal) var(--ease-standard); } .btn-primary { background: var(--red-dim); border: 1px solid var(--red-border); color: var(--red); padding: 11px; font-size: 10px; width: 100%; position: relative; overflow: hidden; } .btn-primary::after { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(200,40,40,0.1), transparent); animation: sweep 3s infinite; } @keyframes sweep { 0%{left:-100%} 100%{left:100%} } .btn-gold { background: var(--gold-dim); border: 1px solid var(--gold-border); color: var(--gold); padding: 8px 14px; font-size: 9px; } .btn-sm { padding: 5px 10px; font-size: 8px; border-radius: var(--radius-sm); } /* ===== ГЛАВНАЯ ===== */ .main-logo-wrap { text-align: center; padding: 16px 16px 8px; position: relative; } .main-logo { width: 140px; height: 140px; display: flex; align-items: center; justify-content: center; margin: 0 auto 10px; position: relative; } .main-logo::before { content: none; } .main-logo::after { content: none; } .main-title { font-size: 26px; font-weight: 900; letter-spacing: 6px; color: var(--text); text-shadow: 2px 0 #cc0022, -2px 0 rgba(0,200,255,0.3); position: relative; } .main-pinyin { font-size: 10px; color: rgba(212,175,55,0.8); letter-spacing: 3px; font-family: serif; margin-top: 3px; } .proto-tag { display: inline-flex; align-items: center; gap: 5px; background: var(--red-dim); border: 1px solid var(--red-border); color: rgba(200,80,80,0.9); font-size: 8px; padding: 3px 10px; border-radius: 3px; letter-spacing: 1px; margin-top: 6px; font-family: monospace; } .stats-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0 12px 4px; } .stat-box { background: var(--bg2); border: 1px solid var(--border); border-radius: 8px; padding: 10px; text-align: center; position: relative; overflow: hidden; } .stat-box::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(212,175,55,0.3), transparent); } .stat-cn { font-size: 10px; color: rgba(212,175,55,0.65); font-family: serif; } .stat-num { font-size: 20px; font-weight: 800; color: var(--gold); } .stat-lbl { font-size: 7px; color: var(--text3); letter-spacing: 1px; font-family: monospace; margin-top: 1px; } /* Нейролинк карточка */ .neuro-card { margin: 4px 12px; } .neuro-status { font-size: 8px; color: var(--red); font-family: monospace; } .neuro-name { font-size: 14px; font-weight: 700; color: var(--text); margin-top: 2px; } .neuro-sub { font-size: 9px; color: #888; font-family: monospace; } .traffic-bar { height: 3px; background: rgba(255,255,255,0.05); border-radius: 2px; margin-top: 8px; overflow: hidden; } .traffic-fill { height: 100%; background: linear-gradient(90deg, #8b0000, var(--gold)); border-radius: 2px; width: 0%; transition: width 1s ease; } /* Импланты */ .implant-row { display: flex; align-items: center; gap: 8px; padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,0.03); } .implant-row:last-child { border: none; } .implant-icon { width: 32px; height: 32px; background: var(--purple-dim); border: 1px solid var(--purple-border); border-radius: 7px; display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; } .implant-icon.legendary { background: var(--red-dim); border-color: var(--red-border); } .implant-cn { font-size: 10px; color: #ccc; font-family: monospace; } .implant-py { font-size: 9px; color: rgba(212,175,55,0.7); font-family: serif; font-style: italic; margin-top: 1px; } .implant-sub { font-size: 9px; color: #aaa; margin-top: 1px; } .implant-dur { margin-left: auto; display: flex; gap: 3px; } .dur-dot { width: 5px; height: 5px; border-radius: 50%; } .dur-dot.on { background: rgba(155,89,182,0.7); } .dur-dot.on-r { background: rgba(200,40,40,0.8); } .dur-dot.off { background: rgba(255,255,255,0.08); } /* Конфиг */ .config-box { background: rgba(0,0,0,0.4); border: 1px solid var(--border); border-radius: 6px; padding: 10px; font-size: 9px; font-family: monospace; color: rgba(212,175,55,0.7); word-break: break-all; margin-top: 8px; display: none; } /* ===== РАСПИСАНИЕ ===== */ .schedule-day { font-size: 9px; color: rgba(200,50,50,0.6); letter-spacing: 2px; font-family: monospace; padding: 10px 16px 4px; text-transform: uppercase; display: flex; align-items: center; gap: 6px; } .schedule-day::after { content: ''; flex:1; height:1px; background: linear-gradient(90deg, var(--red-border), transparent); } .schedule-item { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid rgba(255,255,255,0.03); } .schedule-time { font-size: 12px; font-weight: 700; color: var(--gold); font-family: monospace; min-width: 42px; } .schedule-subject { font-size: 14px; font-weight: 600; color: var(--text); } .schedule-location { font-size: 12px; color: var(--text2); margin-top: 2px; } /* ===== РЕЙТИНГ ===== */ .my-rank-card { background: linear-gradient(135deg, rgba(180,20,20,0.08), rgba(212,175,55,0.05)); border: 1px solid var(--red-border); border-radius: 10px; margin: 10px 12px; padding: 14px; text-align: center; position: relative; overflow: hidden; } .my-rank-card::before { content: '排名'; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-size: 48px; color: rgba(212,175,55,0.04); font-family: serif; pointer-events: none; } .my-points-big { font-size: 36px; font-weight: 900; color: var(--gold); } .my-rank-sub { font-size: 10px; color: var(--text2); margin-top: 4px; font-family: monospace; } /* ── Alpha Boss Block ─────────────────────────────── */ .alpha-boss-block { margin: 0 12px 4px; border-radius: 14px; border: 1px solid rgba(212,175,55,0.30); overflow: hidden; background: radial-gradient(circle at 0% 50%, rgba(212,175,55,0.12), transparent 50%), linear-gradient(135deg, rgba(180,20,20,0.07), rgba(255,255,255,0.02)); box-shadow: 0 4px 20px rgba(0,0,0,0.25); } .alpha-boss-row { display: flex; align-items: center; gap: 10px; padding: 12px 12px 10px; } .alpha-boss-rank { flex: 0 0 auto; width: 28px; font-size: 18px; font-weight: 900; font-family: serif; color: var(--gold); text-align: center; text-shadow: 0 0 12px rgba(212,175,55,0.5); } .alpha-boss-avatar { flex: 0 0 44px; width: 44px; height: 44px; border-radius: 12px; border: 1px solid rgba(212,175,55,0.28); background: radial-gradient(circle at 50% 30%, rgba(212,175,55,0.14), rgba(0,0,0,0.2)); display: flex; align-items: center; justify-content: center; } .alpha-boss-info { flex: 1; min-width: 0; } .alpha-boss-kicker { font-size: 7px; font-family: monospace; letter-spacing: 1px; color: rgba(212,175,55,0.50); } .alpha-boss-name { margin-top: 2px; font-size: 14px; font-weight: 900; color: var(--gold); letter-spacing: 1px; text-shadow: 0 0 12px rgba(212,175,55,0.30); } .alpha-boss-sub { margin-top: 2px; font-size: 8px; color: var(--text3); font-family: monospace; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .alpha-boss-pts { flex: 0 0 auto; font-size: 11px; font-weight: 700; font-family: monospace; color: rgba(212,175,55,0.70); white-space: nowrap; } .alpha-boss-raid-btn { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 9px 12px; background: rgba(180,20,20,0.10); border: none; border-top: 1px solid rgba(180,20,20,0.20); color: #d97070; font-family: monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.8px; cursor: pointer; transition: background 0.15s; box-sizing: border-box; } .alpha-boss-raid-btn:active { background: rgba(180,20,20,0.20); } .alpha-boss-raid-cost { flex: 0 0 auto; color: rgba(212,175,55,0.60); font-size: 9px; } .lb-leaders-label { margin: 2px 12px 4px; padding: 5px 0; text-align: center; font-size: 9px; font-family: monospace; color: rgba(212,175,55,0.38); letter-spacing: 1.5px; border-top: 1px solid rgba(212,175,55,0.09); border-bottom: 1px solid rgba(212,175,55,0.09); } /* ===== PROFILE CARD v3 ===== */ .profile-card { margin: 0 12px 8px; padding: 14px; border: 1px solid rgba(212,175,55,0.18); border-radius: 18px; background: radial-gradient(ellipse at 0% 0%, rgba(212,175,55,0.09), transparent 50%), radial-gradient(ellipse at 100% 100%, rgba(180,20,20,0.06), transparent 52%), linear-gradient(155deg, rgba(255,255,255,0.032), rgba(10,10,28,0.6)); overflow: hidden; position: relative; } .profile-card-home { margin-top: 8px; margin-bottom: 10px; border-color: rgba(212,175,55,0.26); } .profile-holo-ring { position: absolute; inset: -1px; padding: 1px; border-radius: inherit; background: conic-gradient( from 0deg, rgba(220, 30, 48, 0.95), rgba(232, 190, 80, 0.88), rgba(128, 70, 255, 0.78), rgba(196, 70, 255, 0.82), rgba(220, 30, 48, 0.95) ); opacity: 0.42; pointer-events: none; z-index: 0; animation: profileHoloSpin 7.5s linear infinite; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; } .profile-holo-ring::after { content: ''; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(circle at 18% 0%, rgba(255,255,255,0.65), transparent 32%); opacity: 0.28; } .profile-holo-ring { display: none; } body.is-admin .profile-holo-ring { display: block; opacity: 0.64; filter: drop-shadow(0 0 10px rgba(220, 30, 48, 0.24)); animation-duration: 5.8s; } body.is-architect .profile-holo-ring { display: block; opacity: 0.22; filter: drop-shadow(0 0 14px rgba(0, 255, 136, 0.35)); animation: none; } @keyframes profileHoloSpin { to { transform: rotate(360deg); } } /* Corner brackets */ .profile-card-home::before, .profile-card-home::after { content: ''; position: absolute; width: 12px; height: 12px; pointer-events: none; z-index: 0; } .profile-card-home::before { top: 6px; left: 6px; border-top: 1px solid rgba(212,175,55,0.45); border-left: 1px solid rgba(212,175,55,0.45); border-radius: 3px 0 0 0; } .profile-card-home::after { bottom: 6px; right: 6px; border-bottom: 1px solid rgba(212,175,55,0.45); border-right: 1px solid rgba(212,175,55,0.45); border-radius: 0 0 3px 0; } /* Scan line */ .profile-scan-line { display: none; position: absolute; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent 0%, rgba(212,175,55,0.5) 40%, rgba(212,175,55,0.7) 50%, rgba(212,175,55,0.5) 60%, transparent 100%); top: 0; animation: profileScanDown 4s ease-in-out infinite; pointer-events: none; z-index: 2; } @keyframes profileScanDown { 0% { top: 0%; opacity: 0; } 10% { opacity: 1; } 80% { opacity: 0.6; } 100% { top: 100%; opacity: 0; } } /* Admin badge on avatar */ .profile-admin-badge { display: none; position: absolute; bottom: -1px; left: 0; right: 0; text-align: center; background: rgba(180,20,20,0.88); color: #fff; font-size: 7px; font-family: monospace; letter-spacing: 0.5px; padding: 2px 0; font-weight: 700; } body.is-admin .profile-card-home .profile-admin-badge { display: block; } /* Admin card: red glow + border */ body.is-admin .profile-card-home { border-color: rgba(200,30,30,0.55); background: radial-gradient(ellipse at 0% 0%, rgba(200,30,30,0.12), transparent 48%), radial-gradient(ellipse at 100% 100%, rgba(212,175,55,0.07), transparent 52%), linear-gradient(155deg, rgba(255,255,255,0.032), rgba(20,5,5,0.7)); box-shadow: 0 0 28px rgba(180,20,20,0.14), inset 0 0 20px rgba(180,20,20,0.06); } body.is-admin .profile-card-home::before { border-color: rgba(200,30,30,0.7); } body.is-admin .profile-card-home::after { border-color: rgba(200,30,30,0.7); } body.is-admin .profile-scan-line { display: block; background: linear-gradient(90deg, transparent, rgba(220,40,40,0.6) 40%, rgba(255,60,60,0.9) 50%, rgba(220,40,40,0.6) 60%, transparent); } body.is-admin .profile-card-kicker { color: rgba(255,80,80,0.85); } /* Avatar */ .profile-avatar-wrap, .lb-avatar { flex: 0 0 auto; border-radius: 16px; border: 1px solid rgba(212,175,55,0.28); background: radial-gradient(circle at 50% 30%, rgba(212,175,55,0.14), transparent 58%), rgba(255,255,255,0.04); overflow: visible; display: flex; align-items: center; justify-content: center; position: relative; } .profile-avatar-wrap { width: 72px; height: 72px; overflow: hidden; } .profile-avatar-img, .lb-avatar-img { width: 100%; height: 100%; object-fit: cover; display: block; } .profile-avatar-fallback, .lb-avatar-fallback { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: transparent; color: var(--gold); font-family: monospace; font-weight: 900; } .profile-avatar-fallback { font-size: 26px; } /* Main content layout */ .profile-card-main { width: 100%; min-width: 0; position: relative; z-index: 1; } .profile-identity-row { display: flex; align-items: flex-start; gap: 12px; min-width: 0; } .profile-identity-copy { min-width: 0; flex: 1; padding-top: 2px; } .profile-card-kicker { font-size: 7px; color: rgba(212,175,55,0.68); font-family: monospace; letter-spacing: 1.8px; text-transform: uppercase; } .profile-card-name { margin-top: 4px; color: var(--text); font-size: 16px; font-weight: 900; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; letter-spacing: 0.2px; } /* Badge row: rank / place / path */ .profile-badge-row { display: flex; gap: 5px; margin-top: 7px; flex-wrap: wrap; } .profile-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 999px; font-size: 8px; font-family: monospace; letter-spacing: 0.6px; font-weight: 700; border: 1px solid transparent; } .profile-badge-rank { background: rgba(212,175,55,0.14); border-color: rgba(212,175,55,0.35); color: var(--gold); } .profile-badge-place { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.14); color: var(--text2); } .profile-badge-path { background: rgba(180,20,20,0.12); border-color: rgba(180,20,20,0.28); color: rgba(255,100,100,0.85); } /* Status line */ .profile-status-line { margin-top: 10px; padding: 5px 8px; border: 1px solid var(--gold-dim); border-radius: 8px; background: rgba(0,0,0,0.12); color: rgba(212,175,55,0.7); font-size: 8px; font-family: monospace; letter-spacing: 0.7px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Keep old mini-grid hidden if still present */ .profile-mini-grid { display: none; } .profile-mini-stat, .profile-mini-stat span, .profile-mini-stat strong { display: none; } .profile-showcase { margin-top: 10px; display: flex; align-items: center; gap: 8px; padding: 8px; border: 1px solid rgba(212,175,55,0.20); border-radius: 11px; background: radial-gradient(circle at 0% 50%, var(--gold-dim), transparent 52%), rgba(255,255,255,0.028); } .profile-showcase-icon { position: relative; width: 34px; height: 34px; flex: 0 0 34px; display: flex; align-items: center; justify-content: center; border-radius: 10px; border: 1px solid rgba(212,175,55,0.18); background: rgba(212,175,55,0.06); color: var(--gold); font-size: 18px; font-family: serif; font-weight: 900; transition: border-color 0.3s, background 0.3s, color 0.3s, box-shadow 0.3s; } .profile-showcase-icon[data-kind="implant"] { border-color: rgba(255, 80, 80, 0.35); background: rgba(255, 54, 54, 0.09); color: #ff8080; box-shadow: 0 0 10px rgba(255, 54, 54, 0.12) inset; } .profile-showcase-icon[data-kind="card"] { border-color: rgba(212,175,55,0.40); background: rgba(212,175,55,0.11); color: var(--gold); box-shadow: 0 0 10px rgba(212,175,55,0.14) inset; } .profile-showcase-icon[data-source="manual"]::after { content: '★'; position: absolute; bottom: -1px; right: 1px; font-size: 6px; color: rgba(212,175,55,0.7); line-height: 1; pointer-events: none; } .profile-showcase-copy { min-width: 0; flex: 1; } .profile-showcase-copy span { display: block; color: var(--text3); font-size: 7px; font-family: monospace; letter-spacing: 1px; } .profile-showcase-copy strong { display: block; margin-top: 2px; color: var(--text); font-size: 10px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .profile-showcase-copy em { display: block; margin-top: 1px; color: var(--gold); font-size: 8px; font-family: monospace; font-style: normal; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .profile-stat-grid { margin-top: 8px; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; } .profile-stat-grid div { min-width: 0; padding: 5px 3px; border-radius: 8px; background: rgba(255,255,255,0.022); border: 1px solid rgba(255,255,255,0.055); text-align: center; } .profile-stat-grid span { display: block; color: var(--text3); font-size: 7px; line-height: 1; } .profile-stat-grid strong { display: block; margin-top: 3px; color: var(--gold); font-size: 10px; font-family: monospace; } .more-stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .more-stat-cell { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 12px 6px 10px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.06); background: rgba(255,255,255,0.02); } .more-stat-icon { width: 36px; height: 36px; border-radius: 10px; border: 1px solid rgba(255,255,255,0.1); display: flex; align-items: center; justify-content: center; font-size: 18px; } .more-stat-num { font-size: 22px; font-weight: 900; font-family: monospace; line-height: 1; } .more-stat-lbl { font-size: 7px; font-family: monospace; letter-spacing: 0.8px; color: var(--text3); text-align: center; line-height: 1.5; } .more-stat-lbl span { color: rgba(212,175,55,0.5); font-size: 8px; } .profile-card-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; } .profile-mini-btn { border: 1px solid rgba(212,175,55,0.24); background: var(--gold-dim); color: var(--gold); border-radius: 999px; padding: 5px 9px; font-size: 8px; font-family: monospace; letter-spacing: 0.8px; cursor: pointer; } .profile-mini-btn.ghost { border-color: rgba(255,255,255,0.10); background: rgba(255,255,255,0.04); color: var(--text2); } .profile-showcase-modal { position: fixed; inset: 0; z-index: 6200; display: flex; align-items: flex-end; justify-content: center; padding: 16px 12px calc(18px + env(safe-area-inset-bottom, 0px)); background: radial-gradient(circle at 50% 18%, var(--gold-dim), transparent 34%), rgba(0,0,0,0.72); backdrop-filter: blur(12px); } .profile-showcase-panel { width: min(100%, 430px); max-height: min(72vh, 560px); overflow: hidden; border: 1px solid rgba(212,175,55,0.22); border-radius: 18px; background: radial-gradient(circle at 0% 0%, var(--gold-dim), transparent 38%), linear-gradient(145deg, rgba(12,10,16,0.96), rgba(20,12,15,0.94)); box-shadow: 0 18px 60px rgba(0,0,0,0.55); } .profile-showcase-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 14px 10px; border-bottom: 1px solid rgba(255,255,255,0.06); } .profile-showcase-panel-title { margin-top: 2px; color: var(--text); font-size: 13px; font-weight: 900; } .profile-showcase-close { width: 34px; height: 34px; border-radius: 11px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.05); color: var(--text); font-size: 16px; cursor: pointer; } .profile-showcase-options { max-height: calc(min(72vh, 560px) - 62px); overflow-y: auto; padding: 10px; -webkit-overflow-scrolling: touch; } .profile-showcase-option { width: 100%; margin-bottom: 7px; padding: 9px; display: flex; align-items: center; gap: 9px; border: 1px solid rgba(212,175,55,0.12); border-radius: 12px; background: rgba(255,255,255,0.035); color: var(--text); text-align: left; cursor: pointer; } .profile-showcase-option:hover { border-color: rgba(212,175,55,0.28); background: rgba(212,175,55,0.075); } .profile-showcase-option-icon { width: 34px; height: 34px; flex: 0 0 34px; display: flex; align-items: center; justify-content: center; border-radius: 10px; border: 1px solid rgba(212,175,55,0.18); background: rgba(212,175,55,0.06); color: var(--gold); font-size: 17px; font-family: serif; font-weight: 900; } .profile-showcase-option-copy { min-width: 0; flex: 1; } .profile-showcase-option-copy strong, .profile-showcase-option-copy span, .profile-showcase-option-copy em { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .profile-showcase-option-copy span { color: var(--text3); font-size: 7px; font-family: monospace; letter-spacing: 1px; } .profile-showcase-option-copy strong { margin-top: 2px; color: var(--text); font-size: 11px; } .profile-showcase-option-copy em { margin-top: 2px; color: var(--gold); font-size: 8px; font-family: monospace; font-style: normal; } .profile-frame-swatch { width: 34px; height: 34px; flex: 0 0 34px; border-radius: 50%; background: var(--frame-gradient, conic-gradient(#888,#444,#888)); box-shadow: 0 0 8px var(--frame-glow, transparent); } .profile-frame-swatch.frame-none { background: rgba(255,255,255,0.06); border: 1px dashed rgba(255,255,255,0.18); box-shadow: none; } .profile-showcase-option.locked { opacity: 0.45; cursor: not-allowed; } .profile-showcase-option.equipped { border-color: rgba(212,175,55,0.5); background: rgba(212,175,55,0.1); } .profile-frame-lock { flex: 0 0 auto; font-size: 14px; color: var(--text3); } #profileShowcaseOptions { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; } .profile-showcase-card { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 8px 12px; border: 1px solid rgba(212,175,55,0.16); border-radius: 14px; background: rgba(255,255,255,0.035); color: var(--text); text-align: center; cursor: pointer; } .profile-showcase-card:hover { background: rgba(212,175,55,0.08); } .profile-showcase-card-art { width: 52px; height: 52px; display: flex; align-items: center; justify-content: center; border-radius: 12px; background: rgba(0,0,0,0.25); font-size: 22px; font-family: serif; overflow: hidden; } .profile-showcase-card-art img { width: 100%; height: 100%; object-fit: contain; } .profile-showcase-card-label { font-size: 7px; font-family: monospace; letter-spacing: 1px; color: var(--text3); } .profile-showcase-card-name { font-size: 10px; font-weight: 700; color: var(--text); line-height: 1.25; } .profile-showcase-card-detail { font-size: 8px; color: var(--text3); line-height: 1.3; } .profile-showcase-card-equipped { margin-top: 2px; font-size: 7px; font-family: monospace; color: var(--gold); } .profile-showcase-card.equipped { border-color: rgba(212,175,55,0.55); background: rgba(212,175,55,0.1); } .profile-showcase-card-gold .profile-showcase-card-art { border: 1px solid rgba(192,160,64,0.5); box-shadow: inset 0 0 16px rgba(255,200,0,0.08), 0 0 10px rgba(192,160,64,0.16); } .profile-showcase-card-purple .profile-showcase-card-art { border: 1px solid rgba(155,89,182,0.5); box-shadow: inset 0 0 16px rgba(155,89,182,0.08), 0 0 10px rgba(155,89,182,0.16); } .profile-showcase-card-blue .profile-showcase-card-art { border: 1px solid rgba(74,122,204,0.46); box-shadow: inset 0 0 16px rgba(74,122,204,0.07), 0 0 10px rgba(74,122,204,0.14); } .profile-showcase-card-red .profile-showcase-card-art { border: 1px solid rgba(204,51,51,0.55); box-shadow: inset 0 0 16px rgba(204,51,51,0.08), 0 0 10px rgba(204,51,51,0.16); } .profile-showcase-card-auto .profile-showcase-card-art { border: 1px dashed rgba(255,255,255,0.18); } .profile-badge-rank { cursor: pointer; } .rank-breakdown-row { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; padding: 7px 4px; border-bottom: 1px solid rgba(255,255,255,0.06); font-size: 11px; } .rank-breakdown-label em { font-size: 9px; color: var(--text3); font-style: normal; } .rank-breakdown-value { color: var(--gold); font-family: monospace; font-weight: 700; flex: 0 0 auto; } .rank-breakdown-total { padding: 4px 4px 10px; font-size: 13px; font-weight: 800; color: var(--text); font-family: monospace; } .rank-breakdown-total strong { color: var(--gold); } .rank-breakdown-progress { margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,0.08); } .rank-breakdown-progress-head { display: flex; justify-content: space-between; font-size: 10px; font-family: monospace; color: var(--text3); margin-bottom: 4px; } .rank-breakdown-progress-bar { height: 6px; border-radius: 4px; background: rgba(255,255,255,0.08); overflow: hidden; } .rank-breakdown-progress-fill { height: 100%; background: linear-gradient(90deg, var(--gold), #f0d060); } .rank-breakdown-progress-note { margin-top: 6px; font-size: 10px; color: var(--text3); } .lb-item { position: relative; display: flex; align-items: center; gap: 10px; margin: 6px 12px; padding: 10px 12px; border: 1px solid rgba(255,255,255,0.045); border-radius: 14px; background: radial-gradient(circle at 0% 50%, rgba(212,175,55,0.055), transparent 38%), linear-gradient(90deg, rgba(255,255,255,0.035), rgba(255,255,255,0.012)); transition: background 0.2s, transform 0.2s, border-color 0.2s; animation: lb-fadein 0.4s ease both; overflow: hidden; } .lb-item::after { content: 'OP'; position: absolute; right: 10px; top: -2px; color: rgba(212,175,55,0.045); font-size: 22px; font-weight: 900; letter-spacing: 2px; pointer-events: none; } .lb-item.me { background: rgba(212,175,55,0.06); border-left: 2px solid rgba(212,175,55,0.4); } .lb-item.top1 { border-color: rgba(212,175,55,0.26); background: radial-gradient(circle at 0% 50%, rgba(212,175,55,0.13), transparent 42%), linear-gradient(90deg, rgba(212,175,55,0.08), transparent); } .lb-item.top2 { border-color: rgba(210,210,210,0.18); background: linear-gradient(90deg, rgba(180,180,180,0.06), rgba(255,255,255,0.012)); } .lb-item.top3 { border-color: rgba(184,115,51,0.18); background: linear-gradient(90deg, rgba(184,115,51,0.06), rgba(255,255,255,0.012)); } .lb-rank { position: relative; z-index: 1; font-size: 16px; min-width: 28px; text-align: center; } .lb-rank-change { display: block; font-size: 10px; font-weight: 700; margin-top: 2px; letter-spacing: 0; } .lb-rank-change.up { color: #2ecc71; } .lb-rank-change.down { color: #e74c3c; } .lb-avatar { position: relative; z-index: 1; width: 34px; height: 34px; border-radius: 11px; } .lb-avatar-fallback { font-size: 13px; } .lb-name { min-width: 0; font-size: 13px; color: var(--text); flex: 1; white-space: normal; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .lb-points { position: relative; z-index: 1; font-size: 13px; font-weight: 700; color: var(--gold); font-family: monospace; white-space: nowrap; } /* Top-3 avatar frames — CSS-only "mini achievement" cosmetics */ .lb-item.top1 .lb-avatar, .lb-item.top2 .lb-avatar, .lb-item.top3 .lb-avatar { width: 46px; height: 46px; border-radius: 50%; } .lb-item.top1 .lb-avatar::before, .lb-item.top2 .lb-avatar::before, .lb-item.top3 .lb-avatar::before { content: ''; position: absolute; inset: -3px; z-index: -1; border-radius: 50%; background: var(--lb-frame-gradient); box-shadow: 0 0 12px var(--lb-frame-glow); animation: lb-frame-spin 4s linear infinite; } .lb-item.top1 .lb-avatar { --lb-frame-gradient: conic-gradient(from 0deg, #d4af37, #fff3b0, #d4af37, #fff3b0, #d4af37); --lb-frame-glow: rgba(212,175,55,0.55); } .lb-item.top2 .lb-avatar { --lb-frame-gradient: conic-gradient(from 0deg, #b0b0b0, #f0f0f0, #b0b0b0, #f0f0f0, #b0b0b0); --lb-frame-glow: rgba(200,200,200,0.4); } .lb-item.top3 .lb-avatar { --lb-frame-gradient: conic-gradient(from 0deg, #b87333, #e8a050, #b87333, #e8a050, #b87333); --lb-frame-glow: rgba(184,115,51,0.4); } .lb-item.top1 .lb-avatar-img, .lb-item.top1 .lb-avatar-fallback, .lb-item.top2 .lb-avatar-img, .lb-item.top2 .lb-avatar-fallback, .lb-item.top3 .lb-avatar-img, .lb-item.top3 .lb-avatar-fallback { border-radius: 50%; } .lb-item.top1 .lb-avatar-fallback, .lb-item.top2 .lb-avatar-fallback, .lb-item.top3 .lb-avatar-fallback { font-size: 18px; } .lb-item.top1 .lb-avatar-fallback { color: #d4af37; } .lb-item.top2 .lb-avatar-fallback { color: #d8d8d8; } .lb-item.top3 .lb-avatar-fallback { color: #e8a050; } /* Equipped avatar frames — unlockable cosmetic "mini-achievements" */ .has-frame { border-radius: 50% !important; overflow: visible !important; } .has-frame::before { content: ''; position: absolute; inset: -2px; z-index: -1; border-radius: 50%; background: var(--frame-gradient); box-shadow: 0 0 10px var(--frame-glow); animation: lb-frame-spin 4s linear infinite; } .has-frame .lb-avatar-img, .has-frame .lb-avatar-fallback, .has-frame .profile-avatar-img, .has-frame .profile-avatar-fallback { border-radius: 50%; } .frame-bronze { --frame-gradient: conic-gradient(from 0deg, #b87333, #e8a050, #b87333, #e8a050, #b87333); --frame-glow: rgba(184,115,51,0.4); } .frame-silver { --frame-gradient: conic-gradient(from 0deg, #b0b0b0, #f0f0f0, #b0b0b0, #f0f0f0, #b0b0b0); --frame-glow: rgba(200,200,200,0.4); } .frame-gold { --frame-gradient: conic-gradient(from 0deg, #d4af37, #fff3b0, #d4af37, #fff3b0, #d4af37); --frame-glow: rgba(212,175,55,0.55); } .frame-diamond { --frame-gradient: conic-gradient(from 0deg, #7fdbff, #ffffff, #7fdbff, #ffffff, #7fdbff); --frame-glow: rgba(127,219,255,0.55); } .frame-dragon { --frame-gradient: conic-gradient(from 0deg, #cc2200, #ff6644, #cc2200, #ff6644, #cc2200); --frame-glow: rgba(204,34,0,0.55); } .frame-netwatch-legend { --frame-gradient: conic-gradient(from 0deg, #00fff7, #0a3d3d, #00fff7, #0a3d3d, #00fff7); --frame-glow: rgba(0,255,247,0.45); } .frame-zhongli { --frame-gradient: conic-gradient(from 0deg, #d4af37, #5a3e1b, #d4af37, #5a3e1b, #d4af37); --frame-glow: rgba(212,175,55,0.45); } .frame-raider { --frame-gradient: conic-gradient(from 0deg, #ff8800, #ff3300, #ff8800, #ff3300, #ff8800); --frame-glow: rgba(255,102,0,0.45); } .frame-scholar { --frame-gradient: conic-gradient(from 0deg, #3498db, #ffffff, #3498db, #ffffff, #3498db); --frame-glow: rgba(52,152,219,0.45); } .frame-path-netwatch { --frame-gradient: conic-gradient(from 0deg, #cc2200, #330000, #cc2200, #330000, #cc2200); --frame-glow: rgba(204,34,0,0.35); } .frame-path-genshin { --frame-gradient: conic-gradient(from 0deg, #9b59b6, #e91e8c, #9b59b6, #e91e8c, #9b59b6); --frame-glow: rgba(155,89,182,0.4); } .frame-bronze .lb-avatar-fallback, .frame-bronze .profile-avatar-fallback { color: #e8a050; } .frame-silver .lb-avatar-fallback, .frame-silver .profile-avatar-fallback { color: #d8d8d8; } .frame-gold .lb-avatar-fallback, .frame-gold .profile-avatar-fallback { color: #fff3b0; } .frame-diamond .lb-avatar-fallback, .frame-diamond .profile-avatar-fallback { color: #7fdbff; } .frame-dragon .lb-avatar-fallback, .frame-dragon .profile-avatar-fallback { color: #ff6644; } .frame-netwatch-legend .lb-avatar-fallback, .frame-netwatch-legend .profile-avatar-fallback { color: #00fff7; } .frame-zhongli .lb-avatar-fallback, .frame-zhongli .profile-avatar-fallback { color: #d4af37; } .frame-raider .lb-avatar-fallback, .frame-raider .profile-avatar-fallback { color: #ff8800; } .frame-scholar .lb-avatar-fallback, .frame-scholar .profile-avatar-fallback { color: #3498db; } .frame-path-netwatch .lb-avatar-fallback, .frame-path-netwatch .profile-avatar-fallback { color: #ff6644; } .frame-path-genshin .lb-avatar-fallback, .frame-path-genshin .profile-avatar-fallback { color: #e91e8c; } @keyframes lb-frame-spin { to { transform: rotate(360deg); } } /* "Титул дня" (title_player) — full-row leaderboard highlight, purely cosmetic */ .lb-item.title-glow { border-color: var(--title-glow-color, rgba(255,255,255,0.2)); box-shadow: 0 0 16px var(--title-glow-shadow, transparent), inset 0 0 24px var(--title-glow-shadow, transparent); background: linear-gradient(90deg, var(--title-glow-tint, transparent), transparent 60%), radial-gradient(circle at 0% 50%, rgba(212,175,55,0.055), transparent 38%), linear-gradient(90deg, rgba(255,255,255,0.035), rgba(255,255,255,0.012)); } .lb-item.title-cyan { --title-glow-color: rgba(0,255,247,0.55); --title-glow-shadow: rgba(0,255,247,0.28); --title-glow-tint: rgba(0,255,247,0.12); } .lb-item.title-gold { --title-glow-color: rgba(212,175,55,0.6); --title-glow-shadow: rgba(212,175,55,0.3); --title-glow-tint: rgba(212,175,55,0.14); } .lb-item.title-violet { --title-glow-color: rgba(155,89,182,0.6); --title-glow-shadow: rgba(155,89,182,0.3); --title-glow-tint: rgba(155,89,182,0.14); } .lb-item.title-crimson { --title-glow-color: rgba(204,34,0,0.6); --title-glow-shadow: rgba(204,34,0,0.3); --title-glow-tint: rgba(204,34,0,0.14); } .lb-item.title-emerald { --title-glow-color: rgba(46,204,113,0.6); --title-glow-shadow: rgba(46,204,113,0.3); --title-glow-tint: rgba(46,204,113,0.14); } .title-style-swatch { border-radius: 10px !important; } .title-style-swatch.title-cyan { background: linear-gradient(135deg, #00fff7, #0a3d3d); box-shadow: 0 0 8px rgba(0,255,247,0.45); } .title-style-swatch.title-gold { background: linear-gradient(135deg, #d4af37, #fff3b0); box-shadow: 0 0 8px rgba(212,175,55,0.45); } .title-style-swatch.title-violet { background: linear-gradient(135deg, #9b59b6, #e91e8c); box-shadow: 0 0 8px rgba(155,89,182,0.45); } .title-style-swatch.title-crimson { background: linear-gradient(135deg, #cc2200, #ff6644); box-shadow: 0 0 8px rgba(204,34,0,0.45); } .title-style-swatch.title-emerald { background: linear-gradient(135deg, #2ecc71, #145a32); box-shadow: 0 0 8px rgba(46,204,113,0.45); } .lb-progress { height: 2px; border-radius: 1px; margin-top: 3px; opacity: 0.5; } .lb-name-wrap { position: relative; z-index: 1; flex: 1; min-width: 0; display: flex; flex-direction: column; } .lb-name-row { display: flex; align-items: center; gap: 6px; min-width: 0; } .lb-path-badge { flex: 0 0 auto; padding: 2px 5px; border: 1px solid rgba(212,175,55,0.16); border-radius: 999px; color: var(--gold); background: rgba(212,175,55,0.06); font-size: 7px; font-family: monospace; letter-spacing: 0.8px; } .lb-path-badge.netwatch { color: #ff6666; border-color: rgba(204,34,34,0.24); background: rgba(204,34,34,0.08); } .lb-path-badge.genshin { color: #d6aa4a; border-color: rgba(214,170,74,0.24); background: rgba(214,170,74,0.09); } .lb-subline { margin-top: 3px; display: flex; align-items: center; gap: 5px; min-width: 0; color: var(--text3); font-size: 7px; font-family: monospace; letter-spacing: 0.7px; white-space: nowrap; overflow: hidden; } .lb-subline span { overflow: hidden; text-overflow: ellipsis; } .lb-sub { font-size: 9px; color: var(--text3); font-family: monospace; margin-top: 1px; } @keyframes lb-fadein { from { opacity: 0; transform: translateX(-8px); } to { opacity: 1; transform: translateX(0); } } /* Свечение топ-3 */ .lb-item.top1 .lb-rank { text-shadow: 0 0 12px rgba(212,175,55,0.8); } .lb-item.top2 .lb-rank { text-shadow: 0 0 10px rgba(200,200,200,0.6); } .lb-item.top3 .lb-rank { text-shadow: 0 0 10px rgba(184,115,51,0.6); } /* Разделитель топ-3 */ .lb-divider { text-align: center; font-size: 8px; color: var(--text3); font-family: monospace; letter-spacing: 2px; padding: 6px 0; border-top: 1px solid rgba(255,255,255,0.04); border-bottom: 1px solid rgba(255,255,255,0.04); margin: 2px 0; } /* ===== МАГАЗИН ===== */ .diary-rank-card { position: relative; display: flex; align-items: center; gap: 10px; margin: 7px 0; padding: 10px; border: 1px solid rgba(212,175,55,0.12); border-radius: 14px; background: radial-gradient(circle at 0% 50%, rgba(212,175,55,0.06), transparent 40%), linear-gradient(90deg, rgba(255,255,255,0.035), rgba(255,255,255,0.012)); overflow: hidden; animation: lb-fadein 0.4s ease both; } .diary-rank-card::after { content: 'DIARY'; position: absolute; right: 8px; top: -2px; color: rgba(212,175,55,0.045); font-size: 21px; font-weight: 900; letter-spacing: 2px; pointer-events: none; } .diary-rank-card.me { border-left: 2px solid rgba(212,175,55,0.42); background: rgba(212,175,55,0.06); } .diary-rank-card.top1 { border-color: rgba(212,175,55,0.28); background: radial-gradient(circle at 0% 50%, rgba(212,175,55,0.14), transparent 42%), linear-gradient(90deg, rgba(212,175,55,0.08), rgba(255,255,255,0.012)); } .diary-rank-card.top2 { border-color: rgba(210,210,210,0.18); } .diary-rank-card.top3 { border-color: rgba(184,115,51,0.20); } .diary-rank-card .lb-avatar { width: 44px; height: 44px; border-width: 1.5px; border-color: rgba(212,175,55,0.45); box-shadow: 0 0 0 1px rgba(0,0,0,0.35), 0 0 10px rgba(212,175,55,0.12); } .diary-rank-card .lb-avatar-fallback { font-size: 17px; } .diary-rank-card.top1 .lb-avatar { border-color: #d4af37; box-shadow: 0 0 0 1px rgba(0,0,0,0.35), 0 0 12px rgba(212,175,55,0.5); } .diary-rank-card.top2 .lb-avatar { border-color: #c8c8c8; box-shadow: 0 0 0 1px rgba(0,0,0,0.35), 0 0 12px rgba(200,200,200,0.4); } .diary-rank-card.top3 .lb-avatar { border-color: #b87333; box-shadow: 0 0 0 1px rgba(0,0,0,0.35), 0 0 12px rgba(184,115,51,0.4); } .diary-rank-card.top1 .lb-avatar-fallback { color: #d4af37; } .diary-rank-card.top2 .lb-avatar-fallback { color: #d8d8d8; } .diary-rank-card.top3 .lb-avatar-fallback { color: #e8a050; } .diary-rank-place { position: relative; z-index: 1; min-width: 28px; text-align: center; font-size: 16px; } .diary-rank-main { position: relative; z-index: 1; flex: 1; min-width: 0; } .diary-rank-name-row { display: flex; align-items: center; gap: 6px; min-width: 0; } .diary-rank-name { min-width: 0; color: var(--text); font-size: 13px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .diary-rank-sub { margin-top: 3px; display: flex; gap: 5px; color: var(--text3); font-size: 7px; font-family: monospace; letter-spacing: 0.7px; white-space: nowrap; overflow: hidden; } .diary-rank-sub span { overflow: hidden; text-overflow: ellipsis; } .diary-rank-score { position: relative; z-index: 1; color: var(--gold); font-size: 13px; font-family: monospace; font-weight: 800; white-space: nowrap; } .diary-rank-note { margin: 0 0 8px; padding: 9px 10px; border: 1px solid rgba(212,175,55,0.22); border-radius: 12px; background: rgba(212,175,55,0.08); color: var(--gold); font-family: monospace; font-size: 9px; line-height: 1.45; } .shop-header-bar { display: flex; justify-content: space-between; align-items: center; padding: 10px 14px 0; } .shop-balance { font-size: 9px; color: var(--text3); font-family: monospace; } .shop-balance span { color: var(--gold); font-weight: 700; } .shop-reset-timer { margin: 4px 14px 0; font-size: 9px; color: var(--text3); font-family: monospace; text-align: right; } .shop-reset-timer span { color: var(--gold); font-weight: 700; } .frozen-banner { background: rgba(180,20,20,0.1); border: 1px solid var(--red-border); border-radius: 6px; margin: 8px 12px; padding: 8px 12px; font-size: 10px; color: var(--red); font-family: monospace; display: none; } .shop-subtabs { display: flex; gap: 6px; padding: 8px 12px; } #page-shop .shop-subtabs { flex-wrap: wrap; } #page-shop .shop-subtabs .subtab { flex: 1 1 calc(50% - 6px); min-width: calc(50% - 6px); } #page-shop .shop-contracts-tab { border-color: color-mix(in srgb, var(--gold) 55%, var(--border)); color: var(--gold); background: rgba(212,175,55,0.06); } .subtab { flex: 1; padding: 6px; border-radius: var(--radius-sm); border: 1px solid var(--border); background: transparent; color: var(--text3); font-size: 9px; font-weight: 600; cursor: pointer; font-family: monospace; letter-spacing: 1px; } .subtab.active { background: var(--red-dim); border-color: var(--red-border); color: var(--red); } .shop-cat { font-size: 11px; color: rgba(220,100,100,0.9); letter-spacing: 1px; font-family: monospace; padding: 10px 14px 4px; display: flex; align-items: center; gap: 6px; font-weight: 700; } .shop-cat .cn { font-size: 13px; color: rgba(212,175,55,0.7); font-family: serif; } .shop-cat::after { content: ''; flex:1; height:1px; background: linear-gradient(90deg, var(--red-border), transparent); } .shop-item { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-bottom: 1px solid rgba(255,255,255,0.03); } .shop-item.unavailable { opacity: 0.4; } .shop-item-icon { width: 36px; height: 36px; background: var(--bg2); border: 1px solid var(--border); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; } .shop-item-name { font-size: 13px; color: var(--text); font-weight: 600; } .shop-item-cn { font-size: 11px; color: rgba(212,175,55,0.75); font-family: serif; } .shop-item-desc { font-size: 11px; color: var(--text2); margin-top: 1px; } .shop-item-limit { font-size: 10px; color: var(--text3); margin-top: 1px; font-family: monospace; } .shop-item-buy { margin-left: auto; flex-shrink: 0; background: var(--gold-dim); border: 1px solid var(--gold-border); color: var(--gold); font-size: 9px; padding: 5px 8px; border-radius: var(--radius-sm); font-weight: 700; cursor: pointer; font-family: monospace; white-space: nowrap; } .shop-item-buy:disabled { opacity: 0.3; cursor: not-allowed; } /* === SHOP POLISH === */ .shop-item { transition: background var(--transition-normal) var(--ease-standard), transform var(--transition-normal) var(--ease-standard), opacity var(--transition-slow) var(--ease-standard); } .shop-item.sold-out { opacity: 0.55; background: rgba(180,20,20,0.025); } .shop-item.sold-out .shop-item-icon { filter: grayscale(0.65); opacity: 0.7; } /* Limit indicator variants */ .shop-item-limit.limit-soldout { color: var(--red); font-weight: 600; } .shop-item-limit.limit-low { color: #e8932a; font-weight: 700; animation: limitLowPulse 1.6s ease-in-out infinite; } .shop-item-limit.limit-medium { color: var(--gold); } @keyframes limitLowPulse { 0%, 100% { opacity: 0.85; } 50% { opacity: 1; text-shadow: 0 0 8px rgba(232,147,42,0.5); } } /* Soldout / unavailable badges (replace buy button) */ .shop-item-badge { margin-left: auto; flex-shrink: 0; font-family: monospace; font-size: 8px; font-weight: 800; letter-spacing: 1.2px; padding: 6px 10px; border-radius: 6px; white-space: nowrap; text-align: center; } .shop-item-badge.soldout { color: rgba(204,68,68,0.9); background: rgba(180,20,20,0.1); border: 1px solid rgba(180,20,20,0.32); } .shop-item-badge.unavailable { color: var(--text3); background: rgba(120,120,120,0.08); border: 1px solid rgba(120,120,120,0.2); } /* Cannot afford button — shows deficit */ .shop-item-buy.no-money { background: transparent; border-color: rgba(200,80,80,0.3); color: rgba(200,80,80,0.75); cursor: not-allowed; opacity: 0.85; } /* Purchase animation on item card */ .shop-item.shop-item-bought { animation: shopItemBought 0.6s cubic-bezier(0.34,1.56,0.64,1); } @keyframes shopItemBought { 0% { transform: scale(1); background: transparent; box-shadow: none; } 25% { transform: scale(0.97); background: rgba(40,200,100,0.1); } 55% { transform: scale(1.025); background: rgba(40,200,100,0.18); box-shadow: 0 0 22px rgba(40,200,100,0.32); } 100% { transform: scale(1); background: transparent; box-shadow: none; } } /* Sparkles spawned around the icon on purchase */ .shop-item-icon { position: relative; } .shop-sparkle { position: absolute; left: 50%; top: 50%; font-size: 12px; color: #32d872; pointer-events: none; animation: shopSparkle 0.6s cubic-bezier(0.22,1,0.36,1) forwards; text-shadow: 0 0 6px rgba(50,216,114,0.7); } @keyframes shopSparkle { 0% { transform: translate(-50%, -50%) scale(0.4); opacity: 0; } 35% { opacity: 1; transform: translate(calc(-50% + var(--sx) * 0.55), calc(-50% + var(--sy) * 0.55)) scale(1.05); } 100% { transform: translate(calc(-50% + var(--sx)), calc(-50% + var(--sy))) scale(0.5); opacity: 0; } } .shop-command-card { position: relative; margin: 6px 12px 10px; padding: 13px; border: 1px solid color-mix(in srgb, var(--gold-border) 66%, transparent); border-radius: 20px; background: radial-gradient(circle at 92% 0%, rgba(212,175,55,0.20), transparent 34%), radial-gradient(circle at 0% 100%, rgba(180,20,20,0.16), transparent 42%), linear-gradient(135deg, color-mix(in srgb, var(--bg2) 92%, transparent), color-mix(in srgb, var(--bg3) 76%, transparent)); box-shadow: 0 16px 42px rgba(0,0,0,0.24), inset 0 0 0 1px rgba(255,255,255,0.03); overflow: hidden; } .shop-command-bg { position: absolute; right: 12px; top: -8px; font-family: serif; font-size: 58px; font-weight: 900; color: rgba(212,175,55,0.05); pointer-events: none; } .shop-command-main { position: relative; z-index: 1; } .shop-command-kicker, .shop-featured-kicker, .shop-cat-kicker { font-family: monospace; font-size: 8px; letter-spacing: 1.8px; color: var(--gold); } .shop-command-title { margin-top: 3px; color: var(--text); font-size: 19px; font-weight: 900; letter-spacing: -0.03em; } .shop-command-sub { margin-top: 4px; max-width: 330px; color: var(--text2); font-size: 11px; line-height: 1.55; } .shop-command-stats { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 11px; } .shop-command-stats div { padding: 7px; border: 1px solid color-mix(in srgb, var(--border) 72%, transparent); border-radius: 12px; background: rgba(0,0,0,0.14); } .shop-command-stats span { display: block; color: var(--text3); font-family: monospace; font-size: 7px; text-transform: uppercase; } .shop-command-stats strong { display: block; margin-top: 3px; color: var(--gold); font-family: monospace; font-size: 13px; } .shop-featured-item { display: flex; align-items: center; gap: 10px; margin: 0 12px 9px; padding: 9px; border: 1px solid rgba(180,20,20,0.22); border-radius: 16px; background: linear-gradient(90deg, rgba(180,20,20,0.12), rgba(212,175,55,0.08)); } .shop-featured-icon { width: 42px; height: 42px; display: flex; align-items: center; justify-content: center; flex: 0 0 42px; border-radius: 14px; border: 1px solid color-mix(in srgb, var(--gold-border) 70%, transparent); background: color-mix(in srgb, var(--bg2) 88%, transparent); } .shop-featured-copy { min-width: 0; flex: 1; } .shop-featured-name { color: var(--text); font-weight: 800; font-size: 13px; } .shop-featured-desc { margin-top: 2px; color: var(--text2); font-size: 10px; line-height: 1.35; } .shop-featured-price { color: var(--gold); font-family: monospace; font-size: 12px; font-weight: 900; white-space: nowrap; } .shop-section { margin: 0 12px 14px; } .shop-section .shop-cat { padding: 9px 0 8px; } .shop-section .shop-cat::after { display: none; } .shop-cat { justify-content: space-between; } .shop-cat strong { display: block; color: var(--text); font-size: 13px; letter-spacing: 1.1px; } .shop-cat em { display: block; margin-top: 2px; color: var(--text3); font-size: 9px; font-style: normal; font-weight: 500; letter-spacing: 0; } .shop-cat-count { min-width: 28px; padding: 4px 8px; border-radius: 999px; color: var(--gold); background: var(--gold-dim); border: 1px solid var(--gold-border); text-align: center; font-family: monospace; font-size: 10px; } .shop-grid-modern { display: grid; grid-template-columns: 1fr; gap: 8px; } .shop-grid-modern .shop-item { position: relative; display: grid; grid-template-columns: auto 1fr; gap: 10px; padding: 11px; border: 1px solid color-mix(in srgb, var(--border) 72%, transparent); border-radius: 16px; background: linear-gradient(135deg, color-mix(in srgb, var(--bg2) 90%, transparent), color-mix(in srgb, var(--bg3) 76%, transparent)), var(--bg2); box-shadow: 0 12px 28px rgba(0,0,0,0.14); overflow: hidden; } .shop-grid-modern .shop-item::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(180,20,20,0.18), transparent 38%); opacity: 0; transition: opacity 0.2s ease; pointer-events: none; } .shop-grid-modern .shop-item:active::before { opacity: 1; } .shop-item-topline { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; } .shop-grid-modern .shop-item-icon { width: 44px; height: 44px; border-radius: 14px; background: radial-gradient(circle at 30% 20%, rgba(255,255,255,0.10), transparent 40%), color-mix(in srgb, var(--bg2) 90%, transparent); } .shop-item-tier { padding: 2px 6px; border-radius: 999px; color: var(--text3); border: 1px solid color-mix(in srgb, var(--border) 70%, transparent); font-family: monospace; font-size: 7px; font-weight: 800; letter-spacing: 1px; } .shop-item-hot .shop-item-tier, .shop-item-legendary .shop-item-tier { color: var(--gold); border-color: var(--gold-border); background: var(--gold-dim); } .shop-item-rare .shop-item-tier { color: #9b59b6; border-color: rgba(155,89,182,0.38); background: rgba(155,89,182,0.10); } .shop-item-body { position: relative; z-index: 1; min-width: 0; } .shop-grid-modern .shop-item-name { font-size: 14px; font-weight: 900; letter-spacing: -0.01em; } .shop-grid-modern .shop-item-cn { margin-top: 4px; color: var(--text2); font-family: inherit; font-size: 11px; line-height: 1.45; } .shop-item-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; } .shop-item-code { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: color-mix(in srgb, var(--text3) 82%, transparent); font-family: monospace; font-size: 8px; } .shop-item-hint { display: inline-flex; align-items: center; min-height: 20px; padding: 3px 8px; border-radius: 999px; color: color-mix(in srgb, var(--gold) 88%, var(--text)); background: color-mix(in srgb, var(--gold-dim) 78%, transparent); border: 1px solid color-mix(in srgb, var(--gold-border) 68%, transparent); font-size: 9px; font-weight: 800; line-height: 1; } .shop-item-footer { position: relative; z-index: 1; grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 9px; border-top: 1px solid color-mix(in srgb, var(--border) 55%, transparent); } .shop-item-price { color: var(--gold); font-family: monospace; font-size: 14px; font-weight: 900; } .shop-item-state { margin-top: 2px; color: var(--text3); font-size: 9px; line-height: 1.2; } .shop-grid-modern .shop-item-buy { min-width: 104px; padding: 9px 11px; border-radius: 999px; font-size: 10px; text-transform: uppercase; } .shop-grid-modern .shop-item-badge { margin-left: 0; } .inventory-item { position: relative; margin: 8px 0; padding: 12px; border: 1px solid color-mix(in srgb, var(--border) 76%, transparent); border-radius: 14px; background: linear-gradient(135deg, color-mix(in srgb, var(--bg2) 88%, transparent), color-mix(in srgb, var(--bg3) 64%, transparent)), var(--bg2); box-shadow: 0 10px 28px rgba(0,0,0,0.16); overflow: hidden; } .inventory-item::before { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, color-mix(in srgb, var(--red) 22%, transparent), transparent 38%), radial-gradient(circle at 92% 8%, color-mix(in srgb, var(--gold) 16%, transparent), transparent 34%); opacity: 0.42; } .inventory-item > * { position: relative; z-index: 1; } .inventory-header { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; } .inventory-icon { width: 48px; height: 48px; flex: 0 0 48px; display: flex; align-items: center; justify-content: center; border: 1px solid color-mix(in srgb, var(--border) 74%, transparent); border-radius: 12px; background: color-mix(in srgb, var(--bg3) 74%, transparent); color: var(--gold); font-size: 24px; box-shadow: inset 0 0 18px rgba(255,255,255,0.03); } .inventory-icon img { width: 100%; height: 100%; object-fit: contain; border-radius: 10px; } .inventory-info { min-width: 0; flex: 1; } .inventory-kicker { margin-bottom: 3px; font-size: 8px; color: var(--gold); font-family: monospace; letter-spacing: 1.4px; text-transform: uppercase; opacity: 0.82; } .inventory-name { font-size: 12px; font-weight: 800; color: var(--text); line-height: 1.25; } .inventory-date { font-size: 9px; color: var(--text3); font-family: monospace; margin-top: 3px; line-height: 1.35; } .inventory-desc { font-size: 10px; color: var(--text2); margin-top: 4px; line-height: 1.35; } .inventory-desc-secondary { font-size: 9px; color: var(--text3); margin-top: 3px; font-family: monospace; letter-spacing: 0.2px; } .inventory-side { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; flex: 0 0 auto; } .inventory-pill { display: inline-flex; align-items: center; gap: 4px; border: 1px solid color-mix(in srgb, var(--gold) 36%, transparent); border-radius: 999px; background: color-mix(in srgb, var(--gold-dim) 72%, transparent); color: var(--gold); font-size: 8px; font-family: monospace; letter-spacing: 0.8px; padding: 3px 7px; text-transform: uppercase; } .inventory-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; } .inv-btn { flex:1; padding: 7px 6px; border-radius: var(--radius-md); font-size: 9px; font-weight: 700; cursor: pointer; border: 1px solid transparent; font-family: monospace; } .inv-btn-use { flex: 0 0 100%; background: rgba(46,204,113,0.15); color: #2ecc71; border-color: rgba(46,204,113,0.18); } .inv-btn-gift { background: rgba(212,175,55,0.08); color: var(--gold); border-color: rgba(212,175,55,0.18); } .inv-btn-sell { background: rgba(180,20,20,0.10); color: var(--red); border-color: rgba(180,20,20,0.18); } .inv-btn-legendary { background: rgba(180,20,20,0.14); border-color: rgba(180,20,20,0.34); color: #f07a68; } .legendary-implant-panel { margin-top: 9px; padding: 10px; border: 1px solid rgba(180,20,20,0.24); border-radius: 12px; background: radial-gradient(circle at 100% 0, rgba(180,20,20,0.18), transparent 42%), rgba(10,8,14,0.72); } .legendary-implant-head { display: flex; align-items: center; gap: 7px; margin-bottom: 8px; color: #f07a68; font-family: monospace; font-size: 9px; letter-spacing: 1px; } .legendary-implant-head span { display: inline-flex; align-items: center; justify-content: center; width: 21px; height: 21px; border-radius: 999px; border: 1px solid rgba(180,20,20,0.34); background: rgba(180,20,20,0.14); } .legendary-implant-line { display: flex; flex-direction: column; gap: 3px; } .legendary-implant-line b { color: var(--gold); font-size: 8px; font-family: monospace; letter-spacing: 1px; text-transform: uppercase; } .legendary-implant-line span, .legendary-implant-note { color: var(--text2); font-size: 10px; line-height: 1.45; } .legendary-implant-note { margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.06); color: var(--text3); } .legendary-implant-actions { display: grid; grid-template-columns: 1fr; gap: 6px; margin-top: 9px; } .legendary-action-btn { display: flex; flex-direction: column; gap: 2px; width: 100%; min-height: 40px; border-radius: 10px; border: 1px solid rgba(180,20,20,0.28); background: rgba(180,20,20,0.12); color: var(--text); padding: 8px 10px; text-align: left; } .legendary-action-btn strong { color: #f07a68; font-size: 9px; font-family: monospace; letter-spacing: 1px; } .legendary-action-btn span { color: var(--text2); font-size: 10px; } .legendary-action-btn.disabled { opacity: 0.55; filter: grayscale(0.3); } /* The implant/card "ПРОТОКОЛ" control panel is hardcoded to a dark palette above, which clashes with light themes (admin-light, NetWatch light, Genshin light). Re-skin it using each theme's own variables. */ body.theme-nw-light .legendary-implant-panel, body.theme-admin-light .legendary-implant-panel, body.theme-genshin-light .legendary-implant-panel { background: radial-gradient(circle at 100% 0, var(--red-dim), transparent 42%), var(--bg3); border-color: var(--red-border); } body.theme-nw-light .legendary-implant-head, body.theme-admin-light .legendary-implant-head, body.theme-genshin-light .legendary-implant-head { color: var(--red); } body.theme-nw-light .legendary-implant-head span, body.theme-admin-light .legendary-implant-head span, body.theme-genshin-light .legendary-implant-head span { border-color: var(--red-border); background: var(--red-dim); } body.theme-nw-light .legendary-implant-note, body.theme-admin-light .legendary-implant-note, body.theme-genshin-light .legendary-implant-note { border-top-color: var(--border); } body.theme-nw-light .legendary-action-btn, body.theme-admin-light .legendary-action-btn, body.theme-genshin-light .legendary-action-btn { border-color: var(--red-border); background: var(--red-dim); color: var(--text); } body.theme-nw-light .legendary-action-btn strong, body.theme-admin-light .legendary-action-btn strong, body.theme-genshin-light .legendary-action-btn strong { color: var(--red); } body.theme-nw-light .inv-btn-legendary, body.theme-admin-light .inv-btn-legendary, body.theme-genshin-light .inv-btn-legendary { background: var(--red-dim); border-color: var(--red-border); color: var(--red); } .legendary-target-modal { position: fixed; inset: 0; z-index: 5200; display: flex; align-items: center; justify-content: center; padding: 18px; background: rgba(3, 2, 7, 0.72); backdrop-filter: blur(12px); } .legendary-target-sheet { position: relative; width: min(360px, 100%); padding: 18px; border: 1px solid rgba(180,20,20,0.3); border-radius: 20px; background: radial-gradient(circle at 100% 0, rgba(180,20,20,0.22), transparent 44%), color-mix(in srgb, var(--bg2) 94%, #12040a); box-shadow: 0 18px 60px rgba(0,0,0,0.42); } .legendary-target-close { position: absolute; top: 10px; right: 11px; width: 28px; height: 28px; border: none; background: transparent; color: var(--text3); font-size: 16px; } .legendary-target-kicker { color: #f07a68; font-size: 8px; font-family: monospace; letter-spacing: 2px; } .legendary-target-title { margin-top: 5px; color: var(--text); font-size: 18px; font-weight: 800; } .legendary-target-label { display: block; margin-top: 15px; color: var(--text3); font-size: 9px; font-family: monospace; letter-spacing: 1px; text-transform: uppercase; } .legendary-target-input { width: 100%; margin-top: 7px; min-height: 44px; padding: 0 12px; border: 1px solid rgba(180,20,20,0.26); border-radius: 12px; background: rgba(0,0,0,0.22); color: var(--text); outline: none; } .legendary-target-input:focus { border-color: rgba(220,70,60,0.6); box-shadow: 0 0 0 2px rgba(180,20,20,0.16); } .legendary-target-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; } .legendary-target-btn { min-height: 40px; border-radius: 12px; border: 1px solid transparent; font-size: 11px; font-weight: 700; } .legendary-target-btn.cancel { border-color: var(--border); background: rgba(255,255,255,0.03); color: var(--text2); } .legendary-target-btn.confirm { border-color: rgba(180,20,20,0.32); background: rgba(180,20,20,0.18); color: #f07a68; } /* In light themes, --bg2/--bg3 are mostly-transparent blacks/whites meant to tint over a light page background. This modal instead sits on a dark full-screen scrim, so a translucent sheet bg lets the dark scrim bleed through and leaves dark theme text unreadable on a dark sheet. Use the opaque --bg for the sheet itself, --bg3 (composited on that opaque sheet) for fields inside it. */ body.theme-nw-light .legendary-target-sheet, body.theme-admin-light .legendary-target-sheet, body.theme-genshin-light .legendary-target-sheet { background: radial-gradient(circle at 100% 0, var(--red-dim), transparent 44%), var(--bg); border-color: var(--red-border); } body.theme-nw-light .legendary-target-input, body.theme-admin-light .legendary-target-input, body.theme-genshin-light .legendary-target-input { background: var(--bg3); border-color: var(--red-border); color: var(--text); } body.theme-nw-light .legendary-target-btn.cancel, body.theme-admin-light .legendary-target-btn.cancel, body.theme-genshin-light .legendary-target-btn.cancel { background: var(--bg3); border-color: var(--border); color: var(--text2); } /* Generic in-app confirm dialog — used instead of tg.showPopup/window.confirm, both of which can be unsupported or hang on some Telegram clients. */ .confirm-dialog-modal { position: fixed; inset: 0; z-index: 9400; display: flex; align-items: center; justify-content: center; padding: 18px; background: rgba(3,2,7,0.72); backdrop-filter: blur(12px); } .confirm-dialog-sheet { position: relative; width: min(360px, 100%); padding: 18px; border: 1px solid color-mix(in srgb, var(--gold) 32%, var(--border)); border-radius: 20px; background: radial-gradient(circle at 100% 0, color-mix(in srgb, var(--gold) 16%, transparent), transparent 44%), color-mix(in srgb, var(--bg2) 94%, #120c04); box-shadow: 0 18px 60px rgba(0,0,0,0.42); } .confirm-dialog-title { color: var(--text); font-size: 15px; font-weight: 800; line-height: 1.3; } .confirm-dialog-msg { margin-top: 8px; color: var(--text2); font-size: 12px; line-height: 1.45; white-space: pre-line; } .confirm-dialog-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 16px; } .confirm-dialog-btn { min-height: 42px; border-radius: 12px; border: 1px solid transparent; font-size: 11px; font-weight: 700; font-family: monospace; cursor: pointer; } .confirm-dialog-btn.cancel { border-color: var(--border); background: rgba(255,255,255,0.03); color: var(--text2); } .confirm-dialog-btn.confirm { border-color: color-mix(in srgb, var(--gold) 38%, transparent); background: color-mix(in srgb, var(--gold-dim) 70%, transparent); color: var(--gold); } .confirm-dialog-btn.confirm.danger { border-color: rgba(180,20,20,0.34); background: rgba(180,20,20,0.16); color: #f07a68; } .inventory-dur { display: flex; gap: 3px; justify-content: flex-end; } .inventory-dur .dur-dot, .inventory-dur-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,0.12); } .inventory-dur .dur-dot.on, .inventory-dur-dot.on { background: var(--gold); box-shadow: 0 0 8px color-mix(in srgb, var(--gold) 58%, transparent); } .inventory-dur .dur-dot.on-r, .inventory-dur-dot.on-r { background: var(--red); box-shadow: 0 0 8px color-mix(in srgb, var(--red) 58%, transparent); } .inventory-dur .dur-dot.off, .inventory-dur-dot.off { background: rgba(255,255,255,0.12); } .inventory-item-legendary { border-color: rgba(180,20,20,0.38); } .inventory-icon.legendary { border-color: rgba(212,175,55,0.55) !important; background: linear-gradient(145deg, rgba(212,175,55,0.16), rgba(180,20,20,0.10)); box-shadow: inset 0 0 18px rgba(255,200,0,0.10), 0 0 12px rgba(212,175,55,0.18); color: var(--gold); } .inventory-item-card { border-color: color-mix(in srgb, var(--gold) 22%, var(--border)); } /* ===== CARD RARITY VARIANTS ===== */ .inventory-expiry { font-size: 9px; color: var(--red); font-family: monospace; margin-top: 3px; letter-spacing: 0.2px; } /* Case prize card: red-gold glow */ .inventory-item-prize::before { background: linear-gradient(90deg, color-mix(in srgb, var(--red) 18%, transparent), transparent 40%), radial-gradient(circle at 92% 8%, color-mix(in srgb, var(--gold) 12%, transparent), transparent 34%); } /* Shop card: gold left glow */ .inventory-item-shop::before { background: linear-gradient(90deg, color-mix(in srgb, var(--gold) 18%, transparent), transparent 40%), radial-gradient(circle at 92% 8%, color-mix(in srgb, var(--red) 9%, transparent), transparent 34%); } /* Genshin card pool borders */ .inventory-card-gold { border-color: rgba(192,160,64,0.40); } .inventory-card-purple { border-color: rgba(155,89,182,0.38); } .inventory-card-blue { border-color: rgba(74,122,204,0.34); } .inventory-card-dup { border-color: var(--gold-border); } /* Genshin card icon rarity */ .inventory-icon-gold { border-color: rgba(192,160,64,0.55) !important; box-shadow: inset 0 0 16px rgba(255,200,0,0.07), 0 0 10px rgba(192,160,64,0.13); } .inventory-icon-purple { border-color: rgba(155,89,182,0.50) !important; box-shadow: inset 0 0 16px rgba(155,89,182,0.07), 0 0 10px rgba(155,89,182,0.13); } .inventory-icon-blue { border-color: rgba(74,122,204,0.44) !important; box-shadow: inset 0 0 16px rgba(74,122,204,0.06), 0 0 10px rgba(74,122,204,0.11); } /* Genshin card gradient by pool */ .inventory-card-gold::before { background: linear-gradient(90deg, color-mix(in srgb, #c0a040 18%, transparent), transparent 38%), radial-gradient(circle at 92% 8%, color-mix(in srgb, #ffd700 12%, transparent), transparent 34%); } .inventory-card-purple::before { background: linear-gradient(90deg, color-mix(in srgb, #9b59b6 16%, transparent), transparent 38%), radial-gradient(circle at 92% 8%, color-mix(in srgb, #c39ef5 10%, transparent), transparent 34%); } .inventory-card-blue::before { background: linear-gradient(90deg, color-mix(in srgb, #4b8fcf 16%, transparent), transparent 38%), radial-gradient(circle at 92% 8%, color-mix(in srgb, #4a9af5 10%, transparent), transparent 34%); } /* Kicker + date color per pool */ .inventory-card-gold .inventory-kicker, .inventory-card-gold .inventory-date { color: #c0a040; } .inventory-card-purple .inventory-kicker, .inventory-card-purple .inventory-date { color: #c39ef5; } .inventory-card-blue .inventory-kicker, .inventory-card-blue .inventory-date { color: #4a9af5; } .inventory-card-dup .inventory-kicker, .inventory-card-dup .inventory-date { color: var(--gold); } /* ===== КЕЙСЫ ===== */ .casino-balance { display: flex; justify-content: space-between; align-items: center; margin: 8px 12px; background: var(--bg2); border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; position: relative; overflow: hidden; } .casino-balance::before { content: '财'; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-size: 40px; color: rgba(212,175,55,0.04); font-family: serif; } .cases-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; margin: 0 12px 8px; } /* === CASINO ATTEMPTS HUD === */ .casino-attempts { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 0 4px; } .casino-attempts-kicker { font-size: 8px; color: var(--text3); font-family: monospace; letter-spacing: 1px; } .casino-attempts-pips { display: flex; gap: 5px; align-items: center; } .cas-attempt-pip { width: 10px; height: 10px; border-radius: 50%; border: 1px solid rgba(212,175,55,0.4); background: transparent; display: inline-block; transition: all 0.3s; } .cas-attempt-pip.filled { background: var(--gold); box-shadow: 0 0 6px rgba(212,175,55,0.55); border-color: var(--gold); } .cas-attempt-pip.spent { border-color: rgba(180,20,20,0.4); background: rgba(180,20,20,0.12); } .casino-attempts.exhausted .cas-attempt-pip { border-color: rgba(180,20,20,0.45); background: var(--red-dim); box-shadow: none; } .casino-attempts.low .cas-attempt-pip.filled { animation: pipPulse 1.4s ease-in-out infinite; } @keyframes pipPulse { 0%, 100% { box-shadow: 0 0 6px rgba(212,175,55,0.55); } 50% { box-shadow: 0 0 14px rgba(232,147,42,0.95); transform: scale(1.12); } } /* Disabled case button — uniform style instead of inline overrides */ #openCaseBtn.case-btn-disabled { background: rgba(255,255,255,0.04) !important; border-color: rgba(255,255,255,0.08) !important; color: rgba(255,255,255,0.32) !important; cursor: not-allowed; animation: none; box-shadow: none; } .case-card { border-radius: 10px; padding: 10px 5px; text-align: center; cursor: pointer; position: relative; overflow: hidden; } .case-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; } .case-card.gold { background: rgba(212,175,55,0.05); border: 1px solid rgba(212,175,55,0.3); } .case-card.gold::before { background: linear-gradient(90deg, transparent, rgba(212,175,55,0.7), transparent); } .case-card.purple { background: rgba(155,89,182,0.05); border: 1px solid rgba(155,89,182,0.3); } .case-card.purple::before { background: linear-gradient(90deg, transparent, rgba(155,89,182,0.7), transparent); } .case-card.black { background: rgba(180,20,20,0.05); border: 1px solid rgba(180,20,20,0.3); } .case-card.black::before { background: linear-gradient(90deg, transparent, rgba(180,20,20,0.7), transparent); } .case-cn { font-size: 9px; font-family: serif; margin-bottom: 3px; } .case-cn.g { color: rgba(212,175,55,0.5); } .case-cn.p { color: rgba(155,89,182,0.5); } .case-cn.b { color: rgba(180,20,20,0.5); } .case-img { font-size: 30px; margin-bottom: 4px; } .case-pct { font-size: 10px; font-weight: 800; font-family: monospace; } .case-pct.g { color: var(--gold); } .case-pct.p { color: var(--purple); } .case-pct.b { color: #cc3333; } .roulette-wrapper { margin: 0 12px 8px; position: relative; } .roulette-pointer { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 14px solid rgba(180,20,20,0.8); z-index: 10; filter: drop-shadow(0 0 4px rgba(200,0,0,0.5)); } .roulette-pointer-bottom { position: absolute; bottom: -8px; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 14px solid rgba(180,20,20,0.8); z-index: 10; } .roulette-track { overflow: hidden; border-radius: 10px; border: 1px solid var(--red-border); background: #080818; position: relative; height: 130px; } .roulette-track::before { content:''; position:absolute;left:0;top:0;bottom:0;width:50px;background:linear-gradient(to right,#080818,transparent);z-index:5;pointer-events:none; } .roulette-track::after { content:''; position:absolute;right:0;top:0;bottom:0;width:50px;background:linear-gradient(to left,#080818,transparent);z-index:5;pointer-events:none; } .roulette-center-line { position:absolute;left:50%;top:0;bottom:0;width:2px;background:rgba(180,20,20,0.5);transform:translateX(-50%);z-index:6; } .roulette-strip { display:flex;padding:8px 0;transition:none;will-change:transform; } .roulette-item { min-width: 122px; height: 114px; margin: 0 4px; border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px solid rgba(212,175,55,0.15); background: linear-gradient(145deg, #0a0a1a, #0f0f22); flex-shrink: 0; position: relative; overflow: hidden; } .roulette-case-img { width: 96px; height: 86px; object-fit: contain; filter: drop-shadow(0 8px 16px rgba(0,0,0,0.28)); transition: transform 0.22s ease, filter 0.22s ease; } .roulette-case-label { margin-top: 3px; font-size: 7px; letter-spacing: 0.8px; font-family: monospace; color: rgba(255,255,255,0.36); text-transform: uppercase; } .roulette-item-gold { border-color: rgba(212,175,55,0.22); background: radial-gradient(circle at 50% 10%, var(--gold-dim), transparent 48%), linear-gradient(145deg, #0a0a1a, #0f0f22); } .roulette-item-purple { border-color: rgba(155,89,182,0.34); background: radial-gradient(circle at 50% 10%, rgba(155,89,182,0.18), transparent 50%), linear-gradient(145deg, #11091d, #0d0b18); } .roulette-item-black { border-color: rgba(180,20,20,0.42); background: radial-gradient(circle at 50% 10%, rgba(180,20,20,0.22), transparent 52%), linear-gradient(145deg, #160507, #08040a); } .roulette-item-purple .roulette-case-label { color: rgba(199,146,255,0.72); } .roulette-item-black .roulette-case-label { color: rgba(255,92,92,0.76); } .roulette-track-gold { border-color: rgba(212,175,55,0.42); box-shadow: 0 0 18px rgba(212,175,55,0.08), inset 0 0 18px rgba(212,175,55,0.04); } .roulette-track-purple { border-color: rgba(155,89,182,0.70); animation: roulettePurplePulse 0.85s ease-in-out infinite; } .roulette-track-black { border-color: rgba(255,35,35,0.82); animation: rouletteBlackBreach 0.52s steps(2) infinite; } .roulette-track-black::before, .roulette-track-black::after { width: 72px; } .roulette-track-reveal .roulette-item:not(.winner) { opacity: 0.42; filter: grayscale(0.35); } .roulette-item.winner { border-color: rgba(212,175,55,0.6) !important; box-shadow: 0 0 20px rgba(212,175,55,0.3) !important; } .roulette-item.opening { animation: shakeBox 0.5s ease; } .roulette-item.opened { border-color: var(--gold); box-shadow: 0 0 25px rgba(212,175,55,0.4); background: linear-gradient(145deg, #1a1a00, #2a2200); } .roulette-item.winner-purple { border-color: rgba(190,100,255,0.88) !important; box-shadow: 0 0 26px rgba(155,89,182,0.46) !important; } .roulette-item.winner-black { border-color: rgba(255,45,45,0.94) !important; box-shadow: 0 0 36px rgba(255,0,0,0.58), inset 0 0 20px rgba(255,0,0,0.16) !important; } .roulette-item.opened-purple { background: linear-gradient(145deg, #21102e, #120817); } .roulette-item.opened-black { background: linear-gradient(145deg, #2a0507, #080204); } .roulette-item-icon { font-size: 38px; transition: all 0.3s; } .roulette-item-name { font-size: 8px; color: #888; text-align: center; line-height: 1.2; padding: 0 4px; margin-top: 4px; } .roulette-prize-reveal { animation: revealPrize 0.4s ease forwards; } .bonus-banner { font-size: 10px; color: var(--gold); font-weight: 700; font-family: monospace; } .prize-result { background: var(--bg2); border: 1px solid var(--gold-border); border-radius: 10px; margin: 0 12px 8px; padding: 16px; text-align: center; display: none; } .prize-result.show { display: block; animation: fadeIn 0.4s ease; } .prize-result-icon { font-size: 48px; margin-bottom: 8px; } .prize-result-name { font-size: 16px; font-weight: 800; color: var(--text); margin-bottom: 4px; } .prize-result-desc { font-size: 11px; color: var(--text2); margin-bottom: 8px; } .prize-result-points { font-size: 18px; font-weight: 800; } .prize-result-points.positive { color: #2ecc71; } .prize-result-points.negative { color: var(--red); } .prize-result-points.special { color: var(--purple); } .casino-subtabs { display: flex; gap: 6px; padding: 8px 12px 4px; } /* Правила */ .rules-row { padding: 8px 14px; border-bottom: 1px solid rgba(255,255,255,0.03); display: flex; gap: 10px; align-items: flex-start; } .rules-icon { font-size: 18px; min-width: 28px; } .rules-title { font-size: 11px; font-weight: 600; color: var(--text); } .rules-desc { font-size: 10px; color: var(--text2); margin-top: 2px; line-height: 1.5; } /* ===== ЕЩЁ (MORE) ===== */ .more-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 10px 12px; } .more-item.admin-only-item { display: none; } body.is-admin .more-item.admin-only-item { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 94px; border-color: color-mix(in srgb, var(--gold-border) 72%, var(--red-border)); background: radial-gradient(circle at 50% 0%, rgba(212,175,55,0.12), transparent 58%), linear-gradient(135deg, color-mix(in srgb, var(--bg2) 86%, rgba(120,30,30,0.18)), var(--bg2)); box-shadow: inset 0 0 0 1px rgba(212,175,55,0.04); } body.is-admin .more-item.admin-only-item::before { background: linear-gradient(90deg, transparent, var(--gold), var(--red-border), transparent); } .more-item { background: var(--bg2); border: 1px solid var(--border); border-radius: 10px; padding: 14px 10px; text-align: center; cursor: pointer; transition: all 0.2s; position: relative; overflow: hidden; } .more-item::before { content: ''; position: absolute; top:0;left:0;right:0;height:1px; background: linear-gradient(90deg, transparent, var(--red-border), transparent); } .more-item:active { background: var(--red-dim); } .more-item-icon { font-size: 32px; margin-bottom: 8px; display: block; line-height: 1; } .more-item-name { font-size: 10px; font-weight: 600; color: var(--text); } .more-item-cn { font-size: 9px; color: rgba(212,175,55,0.6); font-family: serif; margin-top: 2px; } /* ===== ПОГОДА ===== */ .weather-big { font-size: 52px; font-weight: 700; color: var(--text); line-height: 1; } .weather-big span { font-size: 24px; color: var(--gold); } .weather-icon-big { font-size: 52px; } .weather-detail { font-size: 11px; color: var(--text3); } .weather-detail span { color: var(--gold); } .yuan-big { font-size: 48px; font-weight: 700; color: var(--text); line-height: 1; } .yuan-big span { font-size: 22px; color: var(--gold); } /* ===== СТИРКА ===== */ .date-scroll { display: flex; gap: 6px; padding: 8px 12px; overflow-x: auto; } .date-scroll::-webkit-scrollbar { display: none; } .date-btn { flex-shrink: 0; padding: 6px 12px; border-radius: var(--radius-sm); border: 1px solid var(--border); background: transparent; color: var(--text2); font-size: 10px; cursor: pointer; font-family: monospace; white-space: nowrap; } .date-btn.active { background: var(--red-dim); border-color: var(--red-border); color: var(--red); } .laundry-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 0 12px; } .laundry-slot { background: var(--bg2); border: 1px solid rgba(46,204,113,0.2); border-radius: var(--radius-md); padding: 12px; text-align: center; cursor: pointer; transition: all var(--transition-normal) var(--ease-standard); } .laundry-slot.booked { border-color: var(--red-border); opacity: 0.5; cursor: default; } .laundry-slot.my-booking { background: rgba(212,175,55,0.05); border-color: var(--gold-border); } .laundry-time { font-size: 16px; font-weight: 700; color: var(--gold); font-family: monospace; } .laundry-status { font-size: 10px; color: var(--text2); margin-top: 4px; } /* ===== ОБЪЯВЛЕНИЯ ===== */ .announcement-item { padding: 12px 14px; border-bottom: 1px solid rgba(255,255,255,0.03); } .announcement-text { font-size: 13px; color: var(--text); line-height: 1.6; } .announcement-date { font-size: 9px; color: var(--text3); font-family: monospace; margin-top: 6px; } /* ===== АЧИВКИ ===== */ .achievement-count { font-size: 10px; color: var(--text2); padding: 10px 14px; font-family: monospace; } .achievements-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 0 12px 10px; } .achievement-card { background: var(--bg2); border: 1px solid var(--border); border-radius: 12px; padding: 16px 8px; text-align: center; cursor: pointer; position: relative; } .achievement-card.locked { opacity: 0.4; } .achievement-svg { width: 92px; height: 92px; margin: 0 auto 8px; } .achievement-icon-wrap { width: 92px; height: 92px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 1.5px solid #d4af37; background: rgba(212,175,55,0.08); box-shadow: 0 0 8px rgba(212,175,55,0.18); } .achievement-icon-wrap i { font-size: 36px; color: #f5d05a; } .achievement-icon-bg, .no-leak-bg { display: inline-block; background-size: contain; background-position: center; background-repeat: no-repeat; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; -webkit-user-drag: none; user-drag: none; } .achievement-modal { position: fixed; inset: 0; z-index: 9000; display: none; align-items: flex-end; justify-content: center; background: rgba(5,5,16,0.72); backdrop-filter: blur(3px); } .achievement-modal-sheet { width: 100%; max-width: 460px; background: var(--bg2); border: 1px solid var(--border); border-radius: 18px 18px 0 0; padding: 22px 20px calc(22px + env(safe-area-inset-bottom)); text-align: center; } .achievement-modal-spin-zone { perspective: 600px; margin: 0 auto 6px; width: 150px; } .achievement-modal-img-mask { width: 150px; height: 150px; margin: 0 auto; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 1.5px solid #d4af37; background: rgba(212,175,55,0.08); box-shadow: 0 0 16px rgba(212,175,55,0.22); overflow: hidden; } .achievement-modal-img-wrap { width: 100%; height: 100%; will-change: transform; } .achievement-modal-img-wrap.locked { filter: grayscale(1) brightness(0.35); } .achievement-modal-spin-hint { font-size: 9px; font-family: monospace; letter-spacing: 0.5px; color: var(--text3); margin-bottom: 12px; opacity: 0.7; } .achievement-modal-status { font-size: 10px; font-family: monospace; letter-spacing: 1px; margin-bottom: 6px; } .achievement-modal-status.earned { color: #2ecc71; } .achievement-modal-status.locked { color: var(--text3); } .achievement-modal-title { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 8px; } .achievement-modal-desc { font-size: 12px; color: var(--text2); line-height: 1.5; } .achievement-modal-close { margin-top: 18px; width: 100%; padding: 12px; border-radius: 10px; border: 1px solid var(--border); background: var(--bg3); color: var(--text); font-size: 12px; font-family: monospace; letter-spacing: 1px; cursor: pointer; } .achievement-name { font-size: 9px; color: var(--text2); line-height: 1.3; } .achievement-earned-badge { position: absolute; top: 4px; right: 4px; width: 16px; height: 16px; color: var(--gold); filter: drop-shadow(0 0 3px rgba(212,175,55,0.6)); } .achievement-earned-badge svg { width: 100%; height: 100%; display: block; } .achievement-earned-badge.is-demo-label { width: auto; height: auto; padding: 1px 5px; font-size: 8px; font-family: monospace; letter-spacing: 1px; background: rgba(212,175,55,0.18); border-radius: 4px; filter: none; } .achievement-locked-badge { position: absolute; top: 4px; right: 4px; width: 14px; height: 14px; color: var(--text3); } .achievement-locked-badge svg { width: 100%; height: 100%; display: block; } .cn-divider-icon { width: 14px; height: 14px; display: inline-block; vertical-align: -2px; color: var(--gold); margin-right: 4px; } .cn-divider-icon svg { width: 100%; height: 100%; display: block; stroke: currentColor; } /* ===== КОМАНДА ===== */ .team-card-item { background: rgba(10,10,18,0.7); } .team-card-avatar { width: 56px; height: 56px; border-radius: 50%; background: rgba(255,255,255,0.03); border: 2px solid; display: flex; align-items: center; justify-content: center; font-size: 22px; overflow: hidden; flex-shrink: 0; } .team-card-avatar .no-leak-bg { background-size: cover; } .team-card-name { font-size: 15px; font-weight: 800; color: #fff; margin-top: 2px; } .team-card-desc { margin-top: 8px; font-size: 11px; color: #bbb; line-height: 1.5; } .architect-popup-overlay { /* Must beat the raid overlay (z-index 9999) — Architect diary/battle speech popups can fire while a raid is open (loadUserData refreshes mid-raid), and used to render invisibly behind it while still marking themselves as "seen". */ position: fixed; inset: 0; z-index: 10000; background: rgba(0,0,0,0.55); display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; padding: 0 0 calc(78px + env(safe-area-inset-bottom, 0px)); animation: architectPopupFadeIn 0.25s ease; } @keyframes architectPopupFadeIn { from { opacity: 0; } to { opacity: 1; } } .architect-popup-image { width: 62%; max-width: 320px; height: 38vh; max-height: 320px; background-size: cover; background-position: center top; background-repeat: no-repeat; -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,1) 70%, rgba(0,0,0,0) 100%); mask-image: linear-gradient(180deg, rgba(0,0,0,1) 70%, rgba(0,0,0,0) 100%); pointer-events: none; opacity: 0; transform: translateX(60px); animation: architectPopupSlideInRight 0.45s ease 0.05s forwards; } .architect-popup-box { width: 100%; box-sizing: border-box; margin: 0 10px 10px; background: linear-gradient(180deg, rgba(8,8,18,0.97), rgba(4,4,12,0.99)); border: 1px solid rgba(0,255,102,0.4); border-radius: 14px; padding: 12px 14px; box-shadow: 0 0 20px rgba(0,255,102,0.15), 0 -6px 20px rgba(0,0,0,0.4); opacity: 0; transform: translateX(-60px); animation: architectPopupSlideInLeft 0.45s ease 0.15s forwards; } @keyframes architectPopupSlideInRight { from { opacity: 0; transform: translateX(60px); } to { opacity: 1; transform: translateX(0); } } @keyframes architectPopupSlideInLeft { from { opacity: 0; transform: translateX(-60px); } to { opacity: 1; transform: translateX(0); } } .architect-popup-cursor { display: inline-block; animation: architectPopupBlink 0.9s step-end infinite; color: #00ff66; } @keyframes architectPopupBlink { 50% { opacity: 0; } } .architect-popup-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; } .architect-popup-title { font-family: monospace; font-size: 12px; font-weight: 800; letter-spacing: 0.1em; color: #00ff66; border: 1px solid rgba(0,255,102,0.4); border-radius: 8px; padding: 3px 10px; background: rgba(0,255,102,0.08); } .architect-popup-close { width: 26px; height: 26px; border-radius: 8px; border: 1px solid rgba(0,255,102,0.3); background: rgba(0,255,102,0.06); color: #00ff66; font-size: 12px; cursor: pointer; } .architect-popup-text { font-size: 12px; line-height: 1.6; color: #e6ffe9; max-height: 26vh; overflow-y: auto; } .architect-popup-arrow { text-align: center; margin-top: 6px; color: rgba(0,255,102,0.5); font-size: 12px; animation: architectPopupBounce 1.4s ease-in-out infinite; } @keyframes architectPopupBounce { 0%, 100% { transform: translateY(0); opacity: 0.5; } 50% { transform: translateY(4px); opacity: 1; } } .mju-popup-theme .architect-popup-box { border-color: rgba(255,0,60,0.4); box-shadow: 0 0 20px rgba(255,0,60,0.15), 0 -6px 20px rgba(0,0,0,0.4); } .mju-popup-theme .architect-popup-title { color: #ff003c; border-color: rgba(255,0,60,0.4); background: rgba(255,0,60,0.08); } .mju-popup-theme .architect-popup-close { color: #ff003c; border-color: rgba(255,0,60,0.3); background: rgba(255,0,60,0.06); } .mju-popup-theme .architect-popup-cursor { color: #ff003c; } .mju-popup-theme .architect-popup-arrow { color: rgba(255,0,60,0.5); } .tianhao-popup-theme .architect-popup-box { border-color: rgba(255,180,0,0.4); box-shadow: 0 0 20px rgba(255,180,0,0.12), 0 -6px 20px rgba(0,0,0,0.4); } .tianhao-popup-theme .architect-popup-title { color: #e8a800; border-color: rgba(255,180,0,0.4); background: rgba(255,180,0,0.08); } .tianhao-popup-theme .architect-popup-close { color: #e8a800; border-color: rgba(255,180,0,0.3); background: rgba(255,180,0,0.06); } .tianhao-popup-theme .architect-popup-cursor { color: #e8a800; } .tianhao-popup-theme .architect-popup-arrow { color: rgba(255,180,0,0.5); } .liza-popup-theme .architect-popup-box { border-color: rgba(41,182,246,0.45); box-shadow: 0 0 20px rgba(41,182,246,0.15), 0 -6px 20px rgba(0,0,0,0.4); } .liza-popup-theme .architect-popup-title { color: #29b6f6; border-color: rgba(41,182,246,0.4); background: rgba(41,182,246,0.08); } .liza-popup-theme .architect-popup-close { color: #29b6f6; border-color: rgba(41,182,246,0.3); background: rgba(41,182,246,0.06); } .liza-popup-theme .architect-popup-cursor { color: #29b6f6; } .liza-popup-theme .architect-popup-arrow { color: rgba(41,182,246,0.5); } .intro-novel-theme .architect-popup-box { border-color: rgba(255,255,255,0.22); box-shadow: 0 0 20px rgba(255,255,255,0.07), 0 -6px 20px rgba(0,0,0,0.4); } .intro-novel-btn { flex: 1; padding: 9px; border-radius: 8px; font-family: monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.04em; cursor: pointer; border: 1px solid rgba(255,255,255,0.18); background: rgba(255,255,255,0.04); color: var(--text2); } .intro-novel-btn.primary { border-color: rgba(0,255,102,0.4); background: rgba(0,255,102,0.08); color: #00ff66; } .intro-novel-theme .architect-popup-image.intro-novel-image-contain { width: 40%; max-width: 180px; height: 18vh; max-height: 150px; background-size: contain; background-position: center; align-self: flex-end; } .gift-code-msg { margin-top: 10px; font-size: 11px; line-height: 1.5; color: var(--text2); min-height: 14px; } .gift-code-msg-error { color: #ff4d6a; } .architect-diary-card { border-left: 3px solid #00ff66; } .architect-diary-card-title { font-size: 11px; font-family: monospace; color: #00ff66; letter-spacing: 1px; font-weight: 700; margin-bottom: 6px; } .architect-diary-card-img { width: 100%; height: 140px; overflow: hidden; border-radius: 6px; margin-bottom: 8px; border: 1px solid rgba(0,255,102,0.2); } .architect-diary-card-img img { width: 100%; height: 100%; object-fit: cover; object-position: center 15%; display: block; -webkit-user-drag: none; user-select: none; } .architect-diary-card-text { font-size: 12px; color: var(--text2); line-height: 1.6; } .architect-diary-card-meta { margin-top: 8px; font-size: 9px; font-family: monospace; color: var(--text3); } .architect-diary-card-locked { border-left-color: var(--text3); opacity: 0.55; } .architect-diary-card-locked .architect-diary-card-title { color: var(--text3); } body.theme-nw-light .architect-diary-card-text { color: #444; } body.theme-genshin-light .architect-diary-card-text { color: #565e6e; } .team-card-status-badge { font-size: 8px; font-family: monospace; color: var(--text3); background: rgba(255,255,255,0.05); padding: 1px 5px; border-radius: 4px; white-space: nowrap; } .team-card-btn { margin-top: 10px; width: 100%; padding: 7px; background: rgba(255,255,255,0.04); border: 1px solid; border-radius: 8px; font-size: 10px; font-family: monospace; letter-spacing: 1px; cursor: pointer; } body.theme-nw-light .team-card-item { background: rgba(255,255,255,0.75); } body.theme-nw-light .team-card-avatar { background: rgba(0,0,0,0.04); } body.theme-nw-light .team-card-name { color: #1a1a1a; } body.theme-nw-light .team-card-desc { color: #444; } body.theme-nw-light .team-card-status-badge { background: rgba(0,0,0,0.06); color: #666; } body.theme-nw-light .team-card-btn { background: rgba(0,0,0,0.03); } .team-card { display: flex; align-items: flex-start; gap: 12px; padding: 14px; border-bottom: 1px solid rgba(255,255,255,0.03); } .team-avatar { width: 56px; height: 56px; border-radius: 14px; object-fit: cover; border: 1px solid var(--red-border); flex-shrink: 0; } .team-avatar-placeholder { width: 56px; height: 56px; border-radius: 14px; background: var(--red-dim); border: 1px solid var(--red-border); display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; } .team-badge { display: inline-block; background: var(--red-dim); border: 1px solid var(--red-border); color: var(--red); font-size: 8px; padding: 1px 6px; border-radius: 3px; letter-spacing: 1px; font-family: monospace; margin-bottom: 3px; } .team-name { font-size: 14px; font-weight: 700; color: var(--text); } .team-role { font-size: 10px; color: rgba(212,175,55,0.75); font-family: serif; } .team-desc { font-size: 13px; color: #aaa; line-height: 1.6; margin-top: 5px; } .team-btn { display: inline-flex; align-items: center; gap: 4px; background: var(--red-dim); border: 1px solid var(--red-border); color: var(--red); font-size: 9px; padding: 4px 10px; border-radius: 4px; cursor: pointer; margin-top: 8px; font-family: monospace; letter-spacing: 1px; text-decoration: none; } .question-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.85); z-index: 200; align-items: center; justify-content: center; padding: 20px; } .question-modal.show { display: flex; } .question-box { background: #0a0a1a; border: 1px solid var(--red-border); border-radius: 14px; padding: 20px; width: 100%; max-width: 340px; } .question-box textarea { width: 100%; background: rgba(0,0,0,0.4); border: 1px solid var(--border); color: var(--text); border-radius: 6px; padding: 10px; font-size: 13px; resize: none; height: 100px; margin: 10px 0; font-family: -apple-system, sans-serif; } /* ===== АДМИН ===== */ .admin-section { display: none; } .admin-input { width: 100%; background: rgba(0,0,0,0.28); border: 1px solid var(--border); color: var(--text); border-radius: var(--radius-sm); padding: 8px 10px; font-size: 12px; margin-bottom: 6px; font-family: monospace; transition: border-color var(--transition-fast) var(--ease-standard); } .admin-input:focus { outline: none; border-color: color-mix(in srgb, var(--red) 40%, transparent); } /* ===== ADMIN NAV GRID ===== */ .admin-nav-grid { display: grid !important; grid-template-columns: repeat(4, 1fr) !important; gap: 5px; padding: 6px 12px 10px; } .admin-sec-btn { display: flex !important; flex-direction: column !important; align-items: center; justify-content: center; gap: 4px; padding: 9px 4px 8px; min-width: 0; border-radius: var(--radius-md); border: 1px solid var(--border); background: var(--bg2); cursor: pointer; transition: all var(--transition-fast) var(--ease-standard); } .admin-nav-icon { font-size: 18px; line-height: 1; display: block; } .admin-nav-icon svg { width: 19px; height: 19px; display: block; stroke: currentColor; color: var(--gold); } .admin-sec-btn.active .admin-nav-icon svg { color: var(--gold); } .admin-nav-label { display: block; font-size: 7.5px; color: var(--text3); font-family: monospace; letter-spacing: 0.2px; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; } /* Secondary admin action button (toggles, non-filter) */ .admin-action-btn { display: inline-flex; align-items: center; gap: 5px; padding: 6px 11px; border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--bg2); color: var(--text2); font-size: 9px; font-family: monospace; font-weight: 700; letter-spacing: 0.3px; cursor: pointer; transition: all var(--transition-fast) var(--ease-standard); } .admin-action-btn:hover { border-color: var(--gold-border); color: var(--gold); background: var(--gold-dim); } .admin-sec-btn:hover { border-color: color-mix(in srgb, var(--border) 160%, transparent); background: var(--bg3); } .admin-sec-btn.active { background: var(--red-dim); border-color: var(--red-border); } .admin-sec-btn.active .admin-nav-label { color: var(--red); } /* Admin filter chips (contracts, etc.) */ .admin-filter-wrap { display: flex; gap: 5px; flex-wrap: wrap; margin: 8px 0; } .admin-filter-btn { padding: 5px 10px; border-radius: var(--radius-pill); border: 1px solid var(--border); background: transparent; color: var(--text3); font-size: 9px; font-family: monospace; cursor: pointer; white-space: nowrap; transition: all var(--transition-fast) var(--ease-standard); } .admin-filter-btn:hover { border-color: var(--red-border); color: var(--text2); } .admin-filter-btn.active { background: var(--red-dim); border-color: var(--red-border); color: var(--red); } .admin-console-card { margin-bottom: 12px; padding: 12px; border: 1px solid color-mix(in srgb, var(--border) 78%, transparent); border-left: 2px solid var(--red-border); border-radius: var(--radius-lg); background: linear-gradient(145deg, color-mix(in srgb, var(--bg2) 90%, transparent), color-mix(in srgb, var(--bg3) 66%, transparent)), var(--bg2); box-shadow: 0 8px 24px rgba(0,0,0,0.14); } .admin-console-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; } .admin-console-kicker { color: var(--red); font-family: monospace; font-size: 8px; letter-spacing: 1.6px; } .admin-console-title { color: var(--text); font-weight: 800; font-size: 14px; } .admin-console-refresh { border: 1px solid var(--gold-border); background: var(--gold-dim); color: var(--gold); border-radius: 10px; padding: 7px 9px; font-family: monospace; font-size: 8px; font-weight: 800; } .admin-search-row { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: center; } .admin-user-results, .admin-action-log { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; } .admin-user-card, .admin-log-card, .admin-selected-user { border: 1px solid color-mix(in srgb, var(--border) 82%, transparent); border-radius: 12px; background: color-mix(in srgb, var(--bg3) 72%, transparent); padding: 10px; } .admin-user-card { display: flex; align-items: center; gap: 10px; cursor: pointer; } .admin-user-card.active { border-color: var(--gold-border); background: color-mix(in srgb, var(--gold-dim) 60%, var(--bg3)); } .admin-user-avatar { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--red-border); background: var(--red-dim); color: var(--red); font-weight: 900; font-family: monospace; overflow: hidden; flex-shrink: 0; } .admin-user-avatar.large { width: 52px; height: 52px; border-radius: 16px; } .admin-user-avatar.has-image { background: color-mix(in srgb, var(--bg3) 80%, transparent); color: transparent; } .admin-user-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; } .admin-user-main { flex: 1; min-width: 0; } .admin-user-name { color: var(--text); font-size: 12px; font-weight: 800; } .admin-user-meta { color: var(--text3); font-size: 9px; font-family: monospace; margin-top: 2px; } .admin-user-points { color: var(--gold); font-family: monospace; font-size: 12px; font-weight: 900; white-space: nowrap; } .admin-selected-user { margin-top: 10px; border-color: color-mix(in srgb, var(--gold-border) 86%, transparent); } .admin-dossier-modal { position: fixed; inset: 0; z-index: 6200; display: none; align-items: flex-start; justify-content: center; padding: calc(18px + var(--tg-safe-top, 0px)) 12px calc(18px + var(--tg-safe-bottom, 0px)); } .admin-dossier-modal.show { display: flex; } .admin-dossier-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.58); backdrop-filter: blur(8px); } .admin-dossier-sheet { position: relative; width: min(100%, 460px); max-height: min(78vh, 620px); overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 14px; border-radius: 20px; border: 1px solid color-mix(in srgb, var(--gold-border) 64%, var(--border)); background: radial-gradient(circle at top left, color-mix(in srgb, var(--gold-dim) 42%, transparent), transparent 42%), linear-gradient(145deg, color-mix(in srgb, var(--bg2) 96%, transparent), color-mix(in srgb, var(--bg3) 82%, transparent)); box-shadow: 0 24px 70px rgba(0,0,0,0.52); animation: fadeIn 0.18s ease-out; } .admin-dossier-sheet-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .admin-dossier-head { display: flex; align-items: center; gap: 12px; } .admin-dossier-main { flex: 1; min-width: 0; } .admin-dossier-room { margin-top: 12px; padding-top: 10px; border-top: 1px solid color-mix(in srgb, var(--border) 75%, transparent); } .admin-room-row { display: grid; grid-template-columns: 1fr auto; align-items: start; gap: 8px; } .admin-room-input { margin-bottom: 0; } .admin-roommate-title { margin: 10px 0 6px; color: var(--text3); font-family: monospace; font-size: 8px; letter-spacing: 1.4px; text-transform: uppercase; } .admin-roommate-list { display: flex; flex-wrap: wrap; gap: 6px; } .admin-roommate-chip { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; padding: 5px 8px 5px 5px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--border) 78%, transparent); background: color-mix(in srgb, var(--bg3) 70%, transparent); color: var(--text2); font-size: 9px; font-weight: 700; } .admin-roommate-chip .admin-user-avatar { width: 22px; height: 22px; border-radius: 999px; font-size: 8px; } .admin-roommate-empty { color: var(--text3); font-size: 10px; } .admin-dossier-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 12px; } .admin-dossier-stat { min-width: 0; padding: 9px 10px; border-radius: 12px; border: 1px solid color-mix(in srgb, var(--border) 78%, transparent); background: radial-gradient(circle at top right, color-mix(in srgb, var(--gold-dim) 42%, transparent), transparent 58%), color-mix(in srgb, var(--bg3) 70%, transparent); } .admin-dossier-stat span, .admin-dossier-panel-title { display: block; color: color-mix(in srgb, var(--gold) 82%, var(--text3)); font-family: monospace; font-size: 8px; letter-spacing: 1.2px; text-transform: uppercase; } .admin-dossier-stat strong { display: block; margin-top: 4px; color: var(--text); font-size: 15px; font-weight: 900; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .admin-dossier-stat em { display: block; margin-top: 2px; color: var(--text3); font-size: 9px; font-style: normal; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .admin-dossier-quick { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 10px; } .admin-dossier-quick button { min-height: 34px; border-radius: 10px; border: 1px solid color-mix(in srgb, var(--gold-border) 55%, var(--border)); background: color-mix(in srgb, var(--bg3) 72%, transparent); color: var(--gold); font-family: monospace; font-size: 10px; font-weight: 900; cursor: pointer; } .admin-dossier-quick button:nth-child(n + 3) { border-color: color-mix(in srgb, var(--red-border) 68%, var(--border)); color: #ff6666; } .admin-dossier-panels { display: grid; grid-template-columns: 1fr; gap: 8px; margin-top: 10px; } .admin-dossier-panel { padding: 10px; border-radius: 14px; border: 1px solid color-mix(in srgb, var(--border) 78%, transparent); background: color-mix(in srgb, var(--bg2) 80%, transparent); } .admin-dossier-panel-title { margin-bottom: 7px; } .admin-dossier-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 0; border-top: 1px solid color-mix(in srgb, var(--border) 52%, transparent); } .admin-dossier-row:first-of-type { border-top: 0; } .admin-dossier-row strong { display: block; color: var(--text); font-size: 10px; line-height: 1.35; } .admin-dossier-row span { display: block; margin-top: 2px; color: var(--text3); font-size: 9px; line-height: 1.35; } .admin-dossier-row b { flex: 0 0 auto; color: var(--gold); font-family: monospace; font-size: 10px; } .admin-dossier-row b.plus { color: #2ecc71; } .admin-dossier-row b.minus { color: #ff5a5a; } .admin-dossier-row.needs_attention strong, .admin-dossier-row.penalized strong { color: #ff6b6b; } .admin-dossier-empty { padding: 8px 0 2px; color: var(--text3); font-size: 10px; } .economy-journal { display: grid; gap: 7px; } .economy-log-card { position: relative; display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 8px; overflow: hidden; border: 1px solid color-mix(in srgb, var(--border) 72%, transparent); border-radius: 13px; background: linear-gradient(135deg, color-mix(in srgb, var(--bg2) 86%, transparent), color-mix(in srgb, var(--bg) 72%, transparent)), radial-gradient(circle at 0 0, var(--gold-dim), transparent 42%); } .economy-log-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--gold); opacity: 0.8; } .economy-log-card.spend::before, .economy-log-card.danger::before { background: #ff5a5a; } .economy-log-card.gain::before { background: #2ecc71; } .economy-log-card.case::before { background: #9b59b6; } .economy-log-card.contract::before { background: #60b4d4; } .economy-log-card.rep::before, .economy-log-card.admin::before { background: var(--gold); } .economy-log-icon { width: 28px; height: 28px; display: grid; place-items: center; border: 1px solid color-mix(in srgb, var(--gold) 36%, var(--border)); border-radius: 10px; background: rgba(212,175,55,0.08); color: var(--gold); font-family: monospace; font-size: 10px; font-weight: 900; } .economy-log-main { min-width: 0; } .economy-log-topline { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; } .economy-log-topline strong { overflow: hidden; color: var(--text); font-size: 10px; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; } .economy-log-topline span, .economy-log-note { color: var(--text3); font-size: 8px; line-height: 1.35; } .economy-log-note { overflow: hidden; margin-top: 3px; text-overflow: ellipsis; white-space: nowrap; } .economy-log-amount { padding: 4px 6px; border-radius: 999px; background: color-mix(in srgb, var(--bg) 72%, transparent); font-family: monospace; font-size: 10px; white-space: nowrap; } .economy-log-amount.plus { color: #2ecc71; } .economy-log-amount.minus { color: #ff5a5a; } .economy-log-amount.zero { color: var(--text3); } .admin-log-card { display: grid; gap: 4px; } .admin-log-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .admin-log-delta { font-family: monospace; font-size: 12px; font-weight: 900; } .admin-log-delta.plus { color: #2ecc71; } .admin-log-delta.minus { color: #ff5a5a; } .admin-log-text { color: var(--text); font-size: 11px; line-height: 1.35; } .admin-log-meta { color: var(--text3); font-family: monospace; font-size: 8px; } .admin-contracts-section-title { margin: 12px 0 8px; color: var(--text3); font-family: monospace; font-size: 9px; font-weight: 900; letter-spacing: 1.4px; } .admin-contracts-section-title.danger { color: #e74c3c; text-shadow: 0 0 10px rgba(231,76,60,0.24); } .admin-contract-card { margin-bottom: 8px; padding: 10px; border: 1px solid var(--border); border-radius: 12px; background: radial-gradient(circle at 0% 0%, rgba(96,180,212,0.08), transparent 40%), color-mix(in srgb, var(--bg3) 82%, transparent); } .admin-contract-card.suspicious { border-color: rgba(231,76,60,0.34); background: radial-gradient(circle at 0% 0%, rgba(231,76,60,0.09), transparent 42%), color-mix(in srgb, var(--bg3) 84%, transparent); } .admin-contract-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 5px; } .admin-contract-titlebox { flex: 1; min-width: 0; display: flex; align-items: flex-start; gap: 6px; } .admin-contract-titlebox strong { color: var(--text); font-size: 12px; line-height: 1.35; overflow-wrap: anywhere; } .admin-contract-anon { flex: 0 0 auto; padding: 2px 6px; border: 1px solid rgba(230,126,34,0.36); border-radius: 999px; color: #e67e22; font-family: monospace; font-size: 8px; font-weight: 900; text-transform: uppercase; } .admin-contract-category { flex: 0 0 auto; font-size: 11px; line-height: 1.35; } .admin-contract-side { flex-shrink: 0; text-align: right; } .admin-contract-status { color: var(--admin-contract-status); font-family: monospace; font-size: 10px; font-weight: 900; } .admin-contract-reward { color: var(--gold); font-size: 12px; font-weight: 900; } .admin-contract-meta { color: var(--text3); font-family: monospace; font-size: 10px; line-height: 1.5; } .admin-contract-warning { margin: 5px 0 0; color: #e74c3c; font-family: monospace; font-size: 9px; } .admin-contract-actions { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; } .admin-contract-action { margin-top: 5px; padding: 4px 8px; border: 1px solid var(--border); border-radius: 7px; background: transparent; color: var(--text3); cursor: pointer; font-family: monospace; font-size: 9px; font-weight: 900; } .admin-contract-action.refund { border-color: rgba(230,126,34,0.52); color: #e67e22; } .admin-contract-action.pay { border-color: rgba(46,204,113,0.52); color: #2ecc71; } .admin-contract-action.split { border-color: rgba(52,152,219,0.52); color: #3498db; } .admin-contract-action.burn { border-color: rgba(231,76,60,0.52); color: #e74c3c; } .admin-contract-monitor-actions { margin: 10px 0 4px; } .contract-monitor-panel { margin: 10px 0 12px; padding: 12px; border: 1px solid rgba(96,180,212,0.22); border-radius: 14px; background: radial-gradient(circle at 0% 0%, rgba(96,180,212,0.10), transparent 42%), rgba(255,255,255,0.035); } .contract-monitor-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 10px; } .contract-monitor-title { color: var(--text); font-size: 14px; font-weight: 900; } .contract-monitor-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-bottom: 10px; } .contract-monitor-stat { padding: 9px; border: 1px solid rgba(255,255,255,0.08); border-radius: 11px; background: rgba(0,0,0,0.12); } .contract-monitor-stat span, .contract-monitor-stat em, .contract-monitor-row span { display: block; color: var(--text3); font-family: monospace; font-size: 9px; font-style: normal; } .contract-monitor-stat strong { display: block; margin: 3px 0; color: var(--gold); font-size: 18px; font-weight: 950; } .contract-monitor-note { margin-bottom: 10px; color: var(--text2); font-family: monospace; font-size: 10px; line-height: 1.5; } .contract-monitor-grid { display: grid; grid-template-columns: 1fr; gap: 8px; } .contract-monitor-row { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 7px; padding: 9px; border: 1px solid rgba(255,255,255,0.08); border-radius: 11px; background: rgba(0,0,0,0.10); } .contract-monitor-row.risk { border-color: rgba(231,76,60,0.26); background: rgba(231,76,60,0.06); } .contract-monitor-row strong { display: block; margin-bottom: 3px; color: var(--text); font-size: 11px; } .contract-monitor-row b { color: var(--gold); font-family: monospace; font-size: 10px; } .contract-monitor-flags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; } .contract-monitor-flags span { padding: 2px 6px; border-radius: 999px; background: rgba(231,76,60,0.12); color: #e74c3c; } /* Economy report: compact, expandable player rows */ .economy-report-row { margin-bottom: 7px; padding: 9px; border: 1px solid rgba(255,255,255,0.08); border-radius: 11px; background: rgba(0,0,0,0.10); cursor: pointer; } .economy-report-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .economy-report-head strong { display: inline; color: var(--text); font-size: 12px; } .economy-report-id { display: block; margin-top: 1px; color: var(--text3); font-family: monospace; font-size: 9px; } .economy-report-net { flex-shrink: 0; font-family: monospace; font-weight: 900; font-size: 13px; white-space: nowrap; } .economy-report-net.pos { color: var(--gold); } .economy-report-net.neg { color: #e74c3c; } .economy-report-details { display: none; margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.06); } .economy-report-row.expanded .economy-report-details { display: block; } .economy-report-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; } .economy-report-stat { padding: 6px 8px; border-radius: 8px; background: rgba(255,255,255,0.03); } .economy-report-stat span { display: block; color: var(--text3); font-family: monospace; font-size: 8px; letter-spacing: 0.5px; } .economy-report-stat b { display: block; margin-top: 2px; color: var(--text2); font-family: monospace; font-size: 10px; font-weight: 700; } .admin-console-note { color: var(--text3); font-family: monospace; font-size: 8px; line-height: 1.45; margin-top: 8px; } .admin-presence-hero { border-color: color-mix(in srgb, var(--gold-border) 55%, var(--border)); } .admin-presence-grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin-bottom: 18px; } .admin-presence-card { position: relative; overflow: hidden; padding: 14px; border-radius: 16px; border: 1px solid color-mix(in srgb, var(--border) 82%, transparent); background: radial-gradient(circle at top right, color-mix(in srgb, var(--red-dim) 52%, transparent), transparent 46%), linear-gradient(145deg, color-mix(in srgb, var(--bg2) 92%, transparent), color-mix(in srgb, var(--bg3) 72%, transparent)); box-shadow: 0 12px 28px rgba(0,0,0,0.16); } .admin-presence-card::before { content: ""; position: absolute; left: 12px; right: 12px; top: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--red), transparent); opacity: 0.6; } .admin-presence-icon { position: absolute; right: 12px; top: 8px; color: color-mix(in srgb, var(--red) 18%, transparent); font-size: 44px; font-weight: 900; line-height: 1; pointer-events: none; } .admin-presence-main { position: relative; padding-right: 42px; margin-bottom: 12px; } .admin-presence-kicker { font-family: monospace; font-size: 8px; letter-spacing: 1.6px; color: var(--gold); } .admin-presence-title { color: var(--text); font-size: 15px; font-weight: 900; margin-top: 3px; } .admin-presence-desc { color: var(--text3); font-size: 10px; line-height: 1.45; margin-top: 4px; } .admin-presence-actions { display: grid; grid-template-columns: 1.15fr 1fr 1fr; gap: 7px; margin-bottom: 12px; } .admin-presence-btn { min-height: 36px; border-radius: 11px; border: 1px solid var(--border); background: color-mix(in srgb, var(--bg3) 70%, transparent); color: var(--text2); font-family: monospace; font-size: 9px; font-weight: 800; letter-spacing: 0.4px; } .admin-presence-btn.primary { border-color: var(--gold-border); background: var(--gold-dim); color: var(--gold); } .admin-presence-btn.danger { border-color: var(--red-border); background: var(--red-dim); color: var(--red); } .admin-presence-status { display: grid; gap: 9px; } .admin-presence-date { font-family: monospace; font-size: 8px; letter-spacing: 1px; color: var(--text3); } .admin-presence-chips { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; } .admin-presence-chip { padding: 7px 8px; border-radius: 10px; border: 1px solid color-mix(in srgb, var(--border) 76%, transparent); background: color-mix(in srgb, var(--bg3) 72%, transparent); } .admin-presence-chip span { display: block; color: var(--text3); font-size: 8px; line-height: 1.2; } .admin-presence-chip strong { display: block; color: var(--text); font-family: monospace; font-size: 15px; margin-top: 2px; } .admin-presence-chip.pending strong, .admin-presence-chip.leave_requested strong, .admin-presence-chip.needs_attention strong { color: var(--gold); } .admin-presence-chip.confirmed strong, .admin-presence-chip.free_time strong, .admin-presence-chip.admin_approved strong { color: #32d872; } .admin-presence-chip.penalized strong, .admin-presence-chip.leave_rejected strong { color: #ff5a5a; } .admin-presence-list { display: flex; flex-direction: column; gap: 6px; } .admin-presence-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 10px; border-radius: 11px; border: 1px solid color-mix(in srgb, var(--border) 78%, transparent); background: color-mix(in srgb, var(--bg3) 66%, transparent); } .admin-presence-name { color: var(--text); font-size: 11px; font-weight: 800; } .admin-presence-meta { color: var(--text3); font-family: monospace; font-size: 8px; margin-top: 2px; } .admin-presence-row-badge { flex-shrink: 0; padding: 4px 6px; border-radius: 999px; border: 1px solid var(--gold-border); background: var(--gold-dim); color: var(--gold); font-family: monospace; font-size: 7px; font-weight: 900; } /* Admin panel header */ .admin-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 14px 8px; gap: 10px; } .admin-panel-kicker { font-family: monospace; font-size: 8px; color: var(--red); letter-spacing: 2px; margin-bottom: 4px; } .admin-panel-title { font-size: 17px; font-weight: 900; color: var(--text); letter-spacing: -0.3px; } .admin-panel-status { font-family: monospace; font-size: 9px; color: var(--text3); margin-top: 3px; letter-spacing: 0.3px; } .admin-panel-badge { font-family: monospace; font-size: 9px; font-weight: 800; color: var(--red); background: var(--red-dim); border: 1px solid var(--red-border); border-radius: var(--radius-sm); padding: 5px 10px; letter-spacing: 1px; flex-shrink: 0; align-self: flex-start; } /* Admin 2-col form grid */ .admin-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; } /* Admin laundry tabs */ .admin-laundry-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; } .admin-laundry-tab { padding: 10px; background: var(--bg2); border: 1px solid var(--border); border-radius: 10px; color: var(--text3); font-family: monospace; font-size: 9px; font-weight: 700; letter-spacing: 0.5px; cursor: pointer; transition: all 0.15s; } .admin-laundry-tab.active { background: var(--red-dim); border-color: var(--red-border); color: var(--red); } /* Admin slot day-picker buttons (Сегодня/Завтра/Послезавтра) */ .admin-day-btns { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; margin-bottom: 6px; } .admin-day-btn { padding: 8px 4px; background: rgba(0,0,0,0.28); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text3); font-family: monospace; font-size: 9px; font-weight: 700; cursor: pointer; transition: all 0.15s; } .admin-day-btn.active { background: var(--red-dim); border-color: var(--red-border); color: var(--red); } /* Admin slot list */ .admin-slot-list-label { font-family: monospace; font-size: 8px; color: var(--text3); letter-spacing: 1.5px; padding: 0 2px 8px; } .admin-slot-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; } .admin-slot-item { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--border); background: var(--bg2); transition: border-color 0.15s; } .admin-slot-item.taken { border-color: rgba(40,200,100,0.22); background: rgba(40,200,100,0.04); } .admin-slot-icon { font-size: 14px; width: 18px; text-align: center; flex-shrink: 0; } .admin-slot-item.taken .admin-slot-icon { color: #32d872; } .admin-slot-item.free .admin-slot-icon { color: var(--text3); } .admin-slot-info { flex: 1; min-width: 0; } .admin-slot-time { font-size: 11px; font-weight: 700; color: var(--text); font-family: monospace; } .admin-slot-note { font-size: 9px; color: var(--text3); margin-top: 1px; } .admin-slot-status { font-size: 9px; margin-top: 2px; } .admin-slot-item.taken .admin-slot-status { color: #32d872; } .admin-slot-item.free .admin-slot-status { color: var(--text3); } .admin-slot-del { background: none; border: 1px solid rgba(200,50,50,0.25); color: rgba(200,80,80,0.55); padding: 5px 9px; border-radius: 7px; font-size: 13px; cursor: pointer; flex-shrink: 0; transition: all 0.15s; } .admin-slot-del:hover { border-color: rgba(200,50,50,0.55); color: var(--red); } /* BlackWall card */ .admin-blackwall-card { display: flex; align-items: center; gap: 14px; padding: 18px 16px; border-radius: 14px; background: linear-gradient(135deg, rgba(12,5,22,0.95), rgba(22,10,35,0.85)); border: 1px solid rgba(155,89,182,0.28); box-shadow: 0 0 24px rgba(155,89,182,0.08), 0 8px 24px rgba(0,0,0,0.3); margin-bottom: 12px; } .admin-blackwall-glyph { font-size: 40px; color: rgba(155,89,182,0.35); font-weight: 900; line-height: 1; flex-shrink: 0; font-family: serif; text-shadow: 0 0 12px rgba(155,89,182,0.3); } .admin-blackwall-info { flex: 1; min-width: 0; } .admin-blackwall-title { font-size: 15px; font-weight: 800; color: var(--text); margin: 4px 0 5px; } .admin-blackwall-desc { font-size: 10px; color: var(--text3); line-height: 1.4; } .admin-blackwall-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 14px; } .admin-bw-btn-wide { grid-column: 1 / -1; } .admin-bw-btn { padding: 12px; border-radius: 10px; font-family: monospace; font-size: 10px; font-weight: 800; letter-spacing: 0.5px; cursor: pointer; border: 1px solid; transition: all 0.15s; } .admin-bw-btn.bw-on { background: rgba(180,20,20,0.1); border-color: rgba(180,20,20,0.32); color: var(--red); } .admin-bw-btn.bw-on:hover { background: rgba(180,20,20,0.18); } .admin-bw-btn.bw-off { background: rgba(40,200,100,0.07); border-color: rgba(40,200,100,0.22); color: #32d872; } .admin-bw-btn.bw-off:hover { background: rgba(40,200,100,0.13); } /* Danger zone */ .admin-danger-zone { padding: 14px; border-radius: 12px; border: 1px solid rgba(200,140,30,0.2); background: rgba(200,140,30,0.04); } .admin-danger-label { font-family: monospace; font-size: 8px; color: #e09a28; letter-spacing: 2px; margin-bottom: 5px; } .admin-danger-desc { font-size: 10px; color: var(--text3); margin-bottom: 10px; line-height: 1.45; } .admin-danger-btn { width: 100%; padding: 10px; background: none; border: 1px solid rgba(200,140,30,0.28); color: #e09a28; border-radius: 8px; font-family: monospace; font-size: 10px; font-weight: 800; letter-spacing: 0.5px; cursor: pointer; transition: all 0.15s; } .admin-danger-btn:hover { background: rgba(200,140,30,0.08); border-color: rgba(200,140,30,0.45); } /* ===== АНИМАЦИИ ===== */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes shakeBox { 0%,100%{transform:rotate(0)} 25%{transform:rotate(-3deg)} 75%{transform:rotate(3deg)} } @keyframes revealPrize { from{transform:scale(0.5) rotate(-20deg);opacity:0} to{transform:scale(1) rotate(0);opacity:1} } @keyframes roulettePurplePulse { 0%, 100% { box-shadow: 0 0 16px rgba(155,89,182,0.16), inset 0 0 18px rgba(155,89,182,0.06); filter: saturate(1); } 50% { box-shadow: 0 0 30px rgba(155,89,182,0.34), inset 0 0 26px rgba(155,89,182,0.12); filter: saturate(1.22); } } @keyframes rouletteBlackBreach { 0%, 100% { box-shadow: 0 0 28px rgba(255,0,0,0.28), inset 0 0 28px rgba(255,0,0,0.12); filter: contrast(1.08) brightness(0.92); } 50% { box-shadow: 0 0 46px rgba(255,0,0,0.48), inset 0 0 36px rgba(255,0,0,0.20); filter: contrast(1.34) brightness(0.76); } } @keyframes cyberOverlayIn{0%{opacity:0}100%{opacity:1}} @keyframes cyberOverlayOut{0%{opacity:1}100%{opacity:0}} @keyframes cyberItemIn{0%{transform:scale(0.2) translateY(40px);opacity:0}60%{transform:scale(1.15) translateY(-5px)}100%{transform:scale(1) translateY(0);opacity:1}} @keyframes cyberRayIn{0%{height:0;opacity:0}100%{opacity:1}} @keyframes cyberPulse{0%,100%{filter:drop-shadow(0 0 10px rgba(155,89,182,0.5))}50%{filter:drop-shadow(0 0 22px rgba(155,89,182,0.9))}} @keyframes cyberPartFloat{0%{opacity:0;transform:translate(0,0) scale(0)}15%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translate(var(--px),var(--py)) scale(0.3)}} @keyframes cyberBlink{0%,100%{opacity:0.2}50%{opacity:0.6}} @keyframes fadeUpAnim{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:translateY(0)}} /* ===== ВЫПАДЕНИЕ ПРИЗА: золотой кейс (голо-карта) ===== */ @keyframes prizeFlipGold{0%{transform:rotateY(180deg) scale(0.4);opacity:0}60%{transform:rotateY(0deg) scale(1.12);opacity:1}100%{transform:rotateY(0deg) scale(1)}} @keyframes prizeShineSweep{0%{left:-150%}100%{left:200%}} @keyframes prizeRingPulseGold{0%{transform:scale(0.4);opacity:0.9;border-width:3px}100%{transform:scale(2.6);opacity:0;border-width:1px}} /* ===== ВЫПАДЕНИЕ ПРИЗА: фиолетовый кейс (слот-дроп) ===== */ @keyframes prizeDropPurple{0%{transform:translateY(-260px) scale(0.6);opacity:0}80%{transform:translateY(0) scale(1.15);opacity:1}100%{transform:translateY(0) scale(1)}} @keyframes prizeShakePurple{0%,100%{transform:translateX(0)}20%{transform:translateX(-8px) translateY(2px)}40%{transform:translateX(8px) translateY(-2px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}} @keyframes prizeFlashPurple{0%{opacity:0}30%{opacity:.8}100%{opacity:0}} @keyframes prizeRingExpandPurple{0%{transform:scale(0.3);opacity:1}100%{transform:scale(7);opacity:0}} /* ===== ВЫПАДЕНИЕ ПРИЗА: чёрный кейс (глитч-расшифровка) ===== */ @keyframes prizeGlitchBlack{ 0%{transform:translate(0,0);clip-path:inset(0 0 0 0)} 25%{transform:translate(-4px,2px);clip-path:inset(20% 0 30% 0);filter:hue-rotate(90deg)} 50%{transform:translate(4px,-2px);clip-path:inset(60% 0 5% 0);filter:hue-rotate(-90deg)} 75%{transform:translate(-2px,0);clip-path:inset(10% 0 50% 0)} 100%{transform:translate(0,0);clip-path:inset(0 0 0 0)} } @keyframes prizeScanLineBlack{0%{top:-10%;opacity:1}100%{top:110%;opacity:0}} @keyframes prizeTypewriter{from{width:0;border-right-color:rgba(255,255,255,.6)}to{width:100%;border-right-color:transparent}} @keyframes gsBlinkHint{0%,100%{opacity:0.3}50%{opacity:0.8}} @keyframes gsCardInNew{0%{transform:scale(0.2) translateY(50px);opacity:0}60%{transform:scale(1.08) translateY(-4px)}100%{transform:scale(1) translateY(0);opacity:1}} @keyframes gsVortexSpin{0%{transform:rotate(0deg) scale(0.3);opacity:0}30%{opacity:1}100%{transform:rotate(720deg) scale(1.5);opacity:0}} @keyframes gsRayIn{0%{height:0;opacity:0}100%{opacity:1}} @keyframes gsCardIn{0%{transform:scale(0.2) translateY(50px);opacity:0}60%{transform:scale(1.08) translateY(-4px)}100%{transform:scale(1) translateY(0);opacity:1}} @keyframes gsStarPop{0%{transform:translate(0,0) scale(0) rotate(0deg);opacity:0}40%{opacity:1}100%{transform:translate(var(--tx),var(--ty)) scale(1) rotate(var(--tr));opacity:0}} @keyframes gsPartFloat{0%{opacity:0;transform:translate(0,0) scale(0)}15%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translate(var(--px),var(--py)) scale(0.3)}} @keyframes gsFlashIn{0%{opacity:0}15%{opacity:0.85}50%{opacity:0}100%{opacity:0}} @keyframes glitch { 0%,100%{text-shadow:2px 0 #ff0033,-2px 0 rgba(0,255,255,0.5)} 25%{text-shadow:-2px 0 #ff0033,2px 0 rgba(0,255,255,0.5)} 50%{text-shadow:2px 2px #ff0033,-2px -2px rgba(0,255,255,0.5)} } @keyframes confettiFall { to { transform: translateY(100vh) rotate(720deg); opacity: 0; } } .confetti-piece { position: fixed; top: -10px; z-index: 999; animation: confettiFall linear forwards; } /* ===== УТИЛИТЫ ===== */ .empty-state { position: relative; text-align: center; margin: 10px 0; padding: 22px 18px; color: var(--text3); font-size: 12px; line-height: 1.55; font-family: monospace; border: 1px dashed color-mix(in srgb, var(--border) 74%, var(--gold-border)); border-radius: 14px; background: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--gold-dim) 42%, transparent), transparent 54%), color-mix(in srgb, var(--bg2) 82%, transparent); overflow: hidden; } .empty-state::before { content: ''; position: absolute; top: 0; left: 18%; right: 18%; height: 1px; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--gold) 44%, transparent), transparent); opacity: 0.75; } .empty-state span { color: var(--text3) !important; } .empty-state:has(br)::after { content: 'STATUS // IDLE'; display: block; margin-top: 8px; color: color-mix(in srgb, var(--gold) 58%, var(--text3)); font-size: 8px; letter-spacing: 1.6px; text-transform: uppercase; } .section-pad { padding: 0 12px; } .mt8 { margin-top: 8px; } .shimmer { animation: shimmer 0.5s infinite; } @keyframes shimmer { 0%,100%{opacity:1}50%{opacity:0.6} } /* ===== CASE / ROULETTE IDLE ANIMATIONS ===== */ @keyframes caseIdleFloat { 0%, 100% { transform: translateY(0) rotate(-1deg); filter: drop-shadow(0 8px 16px rgba(0,0,0,0.28)); } 50% { transform: translateY(-3px) rotate(1deg); filter: drop-shadow(0 12px 18px rgba(212,175,55,0.22)); } } @keyframes caseIdlePurple { 0%, 100% { transform: translateY(0) scale(1); filter: drop-shadow(0 8px 16px rgba(0,0,0,0.32)) drop-shadow(0 0 6px rgba(155,89,182,0.35)); } 50% { transform: translateY(-4px) scale(1.03); filter: drop-shadow(0 12px 22px rgba(0,0,0,0.32)) drop-shadow(0 0 14px rgba(190,100,255,0.7)); } } @keyframes caseIdleBlack { 0%, 100% { transform: translateY(0) scale(1) rotate(0); filter: drop-shadow(0 8px 16px rgba(0,0,0,0.4)) drop-shadow(0 0 8px rgba(255,30,30,0.45)); } 35% { transform: translateY(-2px) scale(1.02) rotate(-1.5deg); filter: drop-shadow(0 12px 22px rgba(0,0,0,0.4)) drop-shadow(0 0 16px rgba(255,40,40,0.85)); } 50% { transform: translateY(-5px) scale(1.04) rotate(1.5deg); filter: drop-shadow(0 14px 26px rgba(0,0,0,0.46)) drop-shadow(0 0 22px rgba(255,55,55,1)); } 65% { transform: translateY(-2px) scale(1.02) rotate(-1deg); filter: drop-shadow(0 12px 22px rgba(0,0,0,0.4)) drop-shadow(0 0 14px rgba(255,40,40,0.8)); } } .roulette-item-gold .roulette-case-img { animation: caseIdleFloat 3.6s ease-in-out infinite; } .roulette-item-purple .roulette-case-img { animation: caseIdlePurple 2.8s ease-in-out infinite; } .roulette-item-black .roulette-case-img { animation: caseIdleBlack 2.0s ease-in-out infinite; } /* Inner sheen sweep for purple/black idle */ .roulette-item-purple::before, .roulette-item-black::before { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(115deg, transparent 35%, rgba(255,255,255,0.07) 50%, transparent 65%); transform: translateX(-100%); animation: caseSheen 4.2s ease-in-out infinite; } .roulette-item-black::before { animation-duration: 2.6s; background: linear-gradient(115deg, transparent 35%, rgba(255,80,80,0.18) 50%, transparent 65%); } @keyframes caseSheen { 0% { transform: translateX(-110%); } 60% { transform: translateX(110%); } 100% { transform: translateX(110%); } } /* ===== CASE OPENING BURST (per rarity) ===== */ @keyframes caseBurstGold { 0% { transform: scale(1) rotate(0); } 20% { transform: scale(1.06) rotate(-4deg); } 40% { transform: scale(0.96) rotate(4deg); } 60% { transform: scale(1.10) rotate(-3deg); } 80% { transform: scale(1.02) rotate(2deg); } 100% { transform: scale(1) rotate(0); } } @keyframes caseBurstPurple { 0% { transform: scale(1) rotate(0); filter: brightness(1); } 15% { transform: scale(1.08) rotate(-6deg); filter: brightness(1.2) saturate(1.3); } 35% { transform: scale(0.92) rotate(7deg); filter: brightness(1.4) saturate(1.5); } 55% { transform: scale(1.16) rotate(-5deg); filter: brightness(1.6) saturate(1.6); } 75% { transform: scale(0.98) rotate(3deg); filter: brightness(1.3) saturate(1.3); } 100% { transform: scale(1) rotate(0); filter: brightness(1); } } @keyframes caseBurstBlack { 0% { transform: scale(1) rotate(0) translateX(0); filter: brightness(1) hue-rotate(0); } 10% { transform: scale(1.05) rotate(-3deg) translateX(-2px); filter: brightness(1.3) hue-rotate(-10deg); } 20% { transform: scale(0.94) rotate(5deg) translateX(3px); filter: brightness(1.6) hue-rotate(8deg); } 30% { transform: scale(1.10) rotate(-6deg) translateX(-4px); filter: brightness(1.8) hue-rotate(-15deg); } 40% { transform: scale(0.90) rotate(7deg) translateX(4px); filter: brightness(2.1) hue-rotate(12deg); } 55% { transform: scale(1.22) rotate(-4deg) translateX(-2px); filter: brightness(2.4) hue-rotate(-8deg); } 70% { transform: scale(1.06) rotate(2deg) translateX(1px); filter: brightness(1.6) hue-rotate(0); } 100% { transform: scale(1) rotate(0) translateX(0); filter: brightness(1) hue-rotate(0); } } .roulette-item.opening { animation: caseBurstGold 0.55s ease-in-out; } .roulette-item.opening.winner-purple { animation: caseBurstPurple 0.6s ease-in-out; } .roulette-item.opening.winner-black { animation: caseBurstBlack 0.7s ease-in-out; } /* Shockwave pulse on the winning case slot */ @keyframes caseShockwave { 0% { box-shadow: 0 0 0 0 rgba(212,175,55,0.55), 0 0 20px rgba(212,175,55,0.3); } 100% { box-shadow: 0 0 0 60px rgba(212,175,55,0), 0 0 20px rgba(212,175,55,0.3); } } @keyframes caseShockwavePurple { 0% { box-shadow: 0 0 0 0 rgba(190,100,255,0.6), 0 0 26px rgba(155,89,182,0.46); } 100% { box-shadow: 0 0 0 80px rgba(190,100,255,0), 0 0 26px rgba(155,89,182,0.46); } } @keyframes caseShockwaveBlack { 0% { box-shadow: 0 0 0 0 rgba(255,45,45,0.75), 0 0 36px rgba(255,0,0,0.58), inset 0 0 20px rgba(255,0,0,0.16); } 100% { box-shadow: 0 0 0 110px rgba(255,45,45,0), 0 0 36px rgba(255,0,0,0.58), inset 0 0 20px rgba(255,0,0,0.16); } } .roulette-item.winner.opened { animation: caseShockwave 0.9s ease-out; } .roulette-item.winner-purple.opened { animation: caseShockwavePurple 1.0s ease-out; } .roulette-item.winner-black.opened { animation: caseShockwaveBlack 1.1s ease-out; } /* Replace generic revealPrize with rarity-tiered variants */ @keyframes revealPrize { 0%{transform:scale(0.5) rotate(-20deg);opacity:0} 60%{transform:scale(1.1) rotate(4deg)} 100%{transform:scale(1) rotate(0);opacity:1} } @keyframes revealPrizePurple { 0%{transform:scale(0.3) rotate(-180deg);opacity:0;filter:blur(6px)} 50%{transform:scale(1.18) rotate(10deg);filter:blur(0)} 75%{transform:scale(0.94) rotate(-4deg)} 100%{transform:scale(1) rotate(0);opacity:1} } @keyframes revealPrizeLegendary{ 0% { transform: scale(0.2) rotate(-360deg); opacity: 0; filter: blur(10px) brightness(2); } 35% { transform: scale(1.4) rotate(20deg); opacity: 1; filter: blur(0) brightness(1.6); } 55% { transform: scale(0.86) rotate(-8deg); filter: brightness(1.2); } 75% { transform: scale(1.08) rotate(4deg); filter: brightness(1.0); } 100% { transform: scale(1) rotate(0); opacity: 1; filter: brightness(1); } } .opened-purple .roulette-prize-reveal { animation: revealPrizePurple 0.7s cubic-bezier(0.34,1.56,0.64,1) forwards; } .opened-black .roulette-prize-reveal { animation: revealPrizeLegendary 1.0s cubic-bezier(0.34,1.56,0.64,1) forwards; } /* ===== LEGENDARY SCREEN FLASH ===== */ .legendary-screen-flash { position: fixed; inset: 0; z-index: 9998; background: radial-gradient(ellipse at center, rgba(255,220,80,0.85) 0%, rgba(255,80,40,0.55) 40%, rgba(0,0,0,0) 75%); pointer-events: none; opacity: 0; animation: legendaryFlash 0.7s ease-out forwards; mix-blend-mode: screen; } .purple-screen-flash { position: fixed; inset: 0; z-index: 9998; background: radial-gradient(ellipse at center, rgba(190,100,255,0.6) 0%, rgba(120,40,180,0.35) 45%, rgba(0,0,0,0) 75%); pointer-events: none; opacity: 0; animation: legendaryFlash 0.55s ease-out forwards; mix-blend-mode: screen; } @keyframes legendaryFlash { 0% { opacity: 0; transform: scale(0.6); } 20% { opacity: 1; transform: scale(1.05); } 60% { opacity: 0.55; transform: scale(1.15); } 100% { opacity: 0; transform: scale(1.3); } } /* Stronger pulse intensity on legendary cyber overlay image */ .cyber-result-legendary { animation: cyberPulseLegendary 1.6s ease-in-out infinite !important; } @keyframes cyberPulseLegendary { 0%, 100% { filter: drop-shadow(0 0 14px rgba(255,200,0,0.7)) drop-shadow(0 0 28px rgba(255,80,0,0.4)); transform: scale(1); } 50% { filter: drop-shadow(0 0 28px rgba(255,220,60,1)) drop-shadow(0 0 56px rgba(255,120,0,0.7)); transform: scale(1.05); } } /* BlackWall */ .blackwall-screen { min-height: 300px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #000; border-radius: 14px; border: 1px solid #ff0000; padding: 30px; text-align: center; margin: 12px; } .blackwall-title { font-size: 28px; font-weight: 900; color: #ff2200; text-shadow: 0 0 20px #ff2200; letter-spacing: 4px; margin-bottom: 12px; animation: glitch 2s infinite; white-space: nowrap; } @media (prefers-reduced-motion: reduce) { .profile-holo-ring { animation: none !important; } } .architect-event-entry-overlay { position: fixed; inset: 0; z-index: 6500; display: none; align-items: center; justify-content: center; padding: 18px; background: radial-gradient(circle at 50% 20%, rgba(255, 20, 20, 0.18), transparent 25%), linear-gradient(180deg, rgba(12, 0, 0, 0.48), rgba(0, 0, 0, 0.78)), rgba(0, 0, 0, 0.88); backdrop-filter: blur(10px); } .architect-event-entry-overlay.show { display: flex; } .architect-event-entry-card { position: relative; width: min(100%, 420px); overflow: hidden; border: 1px solid rgba(255, 42, 42, 0.60); border-radius: 18px; padding: 22px 18px 20px; background: linear-gradient(135deg, rgba(130, 0, 0, 0.42), rgba(5, 4, 10, 0.97) 44%, rgba(0, 0, 0, 0.99)), repeating-linear-gradient(180deg, rgba(255,255,255,0.025) 0 1px, transparent 1px 5px); box-shadow: 0 32px 96px rgba(0, 0, 0, 0.78), 0 0 56px rgba(255, 0, 0, 0.28), 0 0 120px rgba(255, 0, 0, 0.12), inset 0 0 38px rgba(255, 0, 0, 0.10); animation: architectEntryGlitchIn 0.44s cubic-bezier(0.22,1,0.36,1) both; } .architect-event-entry-card::before, .architect-event-entry-card::after { content: ''; position: absolute; pointer-events: none; } .architect-event-entry-card::before { inset: 10px; border: 1px solid rgba(255, 65, 45, 0.18); clip-path: polygon(0 0, 42px 0, 42px 2px, 2px 2px, 2px 42px, 0 42px, 0 0, 100% 0, 100% 100%, calc(100% - 46px) 100%, calc(100% - 46px) calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) calc(100% - 46px), 100% calc(100% - 46px)); } .architect-event-entry-card::after { top: 0; left: -30%; width: 42%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 45, 35, 0.18), transparent); transform: skewX(-16deg); animation: architectEntrySweep 1.8s linear infinite; } .architect-event-entry-scan { position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(90deg, rgba(255, 0, 0, 0.055) 0 1px, transparent 1px 28px), linear-gradient(180deg, transparent, rgba(255, 0, 0, 0.12), transparent); mix-blend-mode: screen; opacity: 0.8; animation: architectEntryScan 1.1s linear infinite; } .architect-event-entry-close { position: absolute; top: 12px; right: 12px; z-index: 2; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,0.12); border-radius: 10px; background: rgba(255,255,255,0.03); color: rgba(255,255,255,0.82); font-size: 20px; cursor: pointer; } .architect-event-entry-kicker, .architect-event-entry-title, .architect-event-entry-copy, .architect-event-entry-grid, .architect-event-entry-accept { position: relative; z-index: 1; } .architect-event-entry-kicker { padding-right: 44px; color: rgba(255, 180, 110, 0.78); font-family: monospace; font-size: 9px; letter-spacing: 2.6px; text-transform: uppercase; } .architect-event-entry-title { margin-top: 16px; color: #fff; font-size: 34px; line-height: 0.95; font-weight: 950; letter-spacing: 1.5px; text-transform: uppercase; text-shadow: 0 0 34px rgba(255, 50, 35, 0.44), -2px 0 rgba(255, 0, 0, 0.40), 2px 0 rgba(0, 230, 255, 0.22); animation: architectTextGlitch 1.7s steps(2) infinite; } .architect-event-entry-copy { margin-top: 14px; padding: 14px 14px 14px 16px; border-left: 3px solid rgba(255, 38, 38, 0.72); background: rgba(255, 255, 255, 0.035); color: #f3dddd; font-size: 16px; line-height: 1.5; font-weight: 750; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03); } .architect-event-entry-grid { display: grid; grid-template-columns: 1fr; gap: 7px; margin-top: 14px; } .architect-event-entry-grid span { padding: 8px 10px; border: 1px solid rgba(255, 50, 40, 0.20); background: rgba(255, 0, 0, 0.065); color: rgba(255, 190, 150, 0.88); font-family: monospace; font-size: 10px; letter-spacing: 1.7px; } .architect-event-entry-accept { width: 100%; margin-top: 16px; padding: 14px 14px; border: 1px solid rgba(255, 52, 52, 0.68); border-radius: 12px; background: linear-gradient(180deg, rgba(195, 12, 12, 0.62), rgba(42, 3, 8, 0.97)); color: #fff; font-family: monospace; font-size: 12px; letter-spacing: 2.2px; cursor: pointer; box-shadow: 0 0 32px rgba(255, 0, 0, 0.22), inset 0 1px 0 rgba(255,100,80,0.18); transition: background 0.15s, box-shadow 0.15s, transform 0.1s; } .architect-event-entry-accept:active { transform: scale(0.97); box-shadow: 0 0 18px rgba(255, 0, 0, 0.14); } @keyframes architectEntryGlitchIn { 0% { opacity: 0; transform: translateY(18px) scale(0.96) skewX(-3deg); filter: blur(6px) brightness(0.4); } 30% { opacity: 0.9; transform: translateY(-3px) scale(1.02) skewX(2deg); filter: blur(0) brightness(1.2); } 55% { opacity: 1; transform: translateY(2px) scale(0.99) skewX(-0.5deg); filter: blur(0) brightness(1); } 100% { opacity: 1; transform: translateY(0) scale(1) skewX(0); filter: blur(0) brightness(1); } } @keyframes architectEntrySweep { 0% { transform: translateX(-130%) skewX(-16deg); opacity: 0; } 35% { opacity: 1; } 100% { transform: translateX(360%) skewX(-16deg); opacity: 0; } } @keyframes architectEntryScan { 0% { transform: translateY(-18%); opacity: 0.46; } 50% { opacity: 0.88; } 100% { transform: translateY(18%); opacity: 0.46; } } .architect-banner-overlay { position: fixed; inset: 0; z-index: 6000; display: none; align-items: center; justify-content: center; padding: 20px; background: rgba(40,0,0,0.32); backdrop-filter: blur(10px) saturate(1.2); -webkit-backdrop-filter: blur(10px) saturate(1.2); } .architect-banner-overlay.show { display: flex; animation: architectScreenShake 2.6s 0.4s infinite linear; } .architect-banner-redflash { position: fixed; inset: 0; z-index: 1; pointer-events: none; background: rgba(255,0,0,0.5); mix-blend-mode: hard-light; opacity: 0; animation: architectRedFlash 2.6s infinite steps(1); } .architect-banner-glitchbar { position: fixed; left: 0; right: 0; height: 16px; background: rgba(255,30,30,0.55); mix-blend-mode: difference; pointer-events: none; z-index: 1; opacity: 0; } .architect-banner-glitchbar-1 { top: 22%; animation: architectGlitchBar1 1.8s infinite steps(1); } .architect-banner-glitchbar-2 { top: 64%; height: 10px; animation: architectGlitchBar2 2.2s infinite steps(1); } .architect-banner-glitchbar-3 { top: 42%; height: 6px; animation: architectGlitchBar2 1.5s infinite steps(1) reverse; } .architect-banner-card { position: relative; z-index: 2; width: 100%; max-width: 360px; padding: 28px 24px; color: #fff; font-family: monospace; text-align: center; } .architect-banner-overlay.show .architect-banner-card { animation: architectBannerEnter 0.4s steps(8, end); } .architect-banner-eye { position: relative; width: 96px; height: 52px; margin: 0 auto; border-radius: 50%; background: radial-gradient(circle at 50% 50%, rgba(40,0,0,0.9), #000 70%); box-shadow: 0 0 30px rgba(255,20,20,0.55), inset 0 0 20px rgba(255,0,0,0.4); overflow: hidden; animation: architectEyeBlink 4.4s infinite; } .architect-banner-eye-iris { position: absolute; left: 50%; top: 50%; width: 34px; height: 34px; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle at 50% 50%, #ff5050 0%, #ff1010 45%, #4a0000 100%); box-shadow: 0 0 18px rgba(255,30,30,0.85); animation: architectEyePulse 1.6s ease-in-out infinite; } .architect-banner-eye-iris::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; transform: translate(-50%, -50%); border-radius: 50%; background: #1a0000; } .architect-banner-eye-scan { position: absolute; inset: -10% 0; background: linear-gradient(180deg, transparent, rgba(255,80,80,0.55), transparent); animation: architectEyeScan 2.6s linear infinite; } .architect-banner-title { position: relative; margin: 12px 0 0; padding: 0; color: #ff2b2b; font-size: 32px; font-weight: 900; line-height: 1.15; letter-spacing: 1px; text-transform: uppercase; text-shadow: 0 0 32px rgba(255,30,30,0.55); } .architect-banner-title::before, .architect-banner-title::after { content: attr(data-text); position: absolute; inset: 0; overflow: hidden; } .architect-banner-title::before { color: #fff; z-index: -1; animation: architectGlitchTop 1.4s infinite linear alternate-reverse; } .architect-banner-title::after { color: #ff8a6a; z-index: -2; animation: architectGlitchBottom 1.7s infinite linear alternate-reverse; } .architect-banner-subtitle { margin-top: 12px; color: #ff8a6a; font-size: 11px; letter-spacing: 3px; text-transform: uppercase; } .architect-banner-actions { margin-top: 22px; } .architect-banner-dismiss { width: 100%; padding: 14px; border: none; background: transparent; color: #ff2b2b; font-family: monospace; font-size: 13px; letter-spacing: 3px; cursor: pointer; } .architect-banner-dismiss:hover { color: #ff8a6a; } @keyframes architectScreenShake { 0%, 96%, 100% { transform: translate(0, 0); } 96.5% { transform: translate(-4px, 2px); } 97% { transform: translate(3px, -2px); } 97.5% { transform: translate(-2px, 3px); } 98% { transform: translate(2px, -1px); } 98.5% { transform: translate(0, 0); } } @keyframes architectEyeBlink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(0.08); } 97% { transform: scaleY(1); } } @keyframes architectEyePulse { 0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 1; } 50% { transform: translate(-50%, -50%) scale(1.12); opacity: 0.85; } } @keyframes architectEyeScan { 0% { transform: translateY(-100%); } 100% { transform: translateY(100%); } } @keyframes architectGlitchTop { 0% { clip-path: inset(0 0 85% 0); transform: translate(-2px, -1px); } 20% { clip-path: inset(10% 0 60% 0); transform: translate(2px, 1px); } 40% { clip-path: inset(40% 0 30% 0); transform: translate(-2px, 1px); } 60% { clip-path: inset(60% 0 10% 0); transform: translate(2px, -1px); } 80% { clip-path: inset(20% 0 70% 0); transform: translate(-1px, 2px); } 100% { clip-path: inset(0 0 90% 0); transform: translate(1px, -2px); } } @keyframes architectGlitchBottom { 0% { clip-path: inset(85% 0 0 0); transform: translate(2px, 1px); } 20% { clip-path: inset(60% 0 10% 0); transform: translate(-2px, -1px); } 40% { clip-path: inset(30% 0 40% 0); transform: translate(2px, -1px); } 60% { clip-path: inset(10% 0 60% 0); transform: translate(-2px, 1px); } 80% { clip-path: inset(70% 0 20% 0); transform: translate(1px, -2px); } 100% { clip-path: inset(90% 0 0 0); transform: translate(-1px, 2px); } } @keyframes architectGlitchBar1 { 0%, 91%, 100% { opacity: 0; transform: translateX(0); } 92% { opacity: 1; transform: translateX(-6%); } 94% { opacity: 0.6; transform: translateX(4%); } 96% { opacity: 1; transform: translateX(-3%); } 98% { opacity: 0; transform: translateX(0); } } @keyframes architectGlitchBar2 { 0%, 70%, 100% { opacity: 0; transform: translateX(0); } 71% { opacity: 1; transform: translateX(8%); } 73% { opacity: 0.5; transform: translateX(-5%); } 75% { opacity: 0; transform: translateX(0); } } @keyframes architectRedFlash { 0%, 90%, 100% { opacity: 0; } 91% { opacity: 0.55; } 92% { opacity: 0.1; } 93% { opacity: 0.4; } 94% { opacity: 0; } } @keyframes architectBannerEnter { 0% { opacity: 0; filter: brightness(3) contrast(2); } 30% { opacity: 1; filter: brightness(0.4); } 45% { opacity: 0.6; filter: brightness(2); } 60% { opacity: 1; filter: brightness(0.8); } 100% { opacity: 1; filter: brightness(1); } } /* --- КРИТИЧЕСКИЙ CSS ДЛЯ РЕЙДА --- */ /* Оверлей фона (размытие и затемнение) */ .raid-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 50% 18%, rgba(212,175,55,0.08), transparent 28%), radial-gradient(circle at 50% 120%, rgba(204,34,0,0.12), transparent 42%), rgba(0, 0, 0, 0.88); display: flex; align-items: center; justify-content: center; z-index: 9999; /* Поверх всего */ backdrop-filter: blur(10px); opacity: 0; visibility: hidden; transition: all 0.4s ease-out; } .raid-overlay.active { opacity: 1; visibility: visible; } /* Контейнер контента */ .raid-content { width: 90%; max-width: 400px; max-height: min(92vh, 760px); overflow-y: auto; -webkit-overflow-scrolling: touch; background: linear-gradient(180deg, rgba(255,255,255,0.03), transparent 35%), linear-gradient(145deg, rgba(204,34,0,0.08), rgba(5,5,16,0.96) 55%); border: 1px solid rgba(204,34,0,0.5); box-shadow: 0 0 35px rgba(204,34,0,0.18), inset 0 0 0 1px rgba(255,255,255,0.03); border-radius: 18px; padding: 18px 18px 20px; text-align: center; position: relative; overflow-x: hidden; transform: scale(0.8) translateY(20px); transition: transform 0.5s cubic-bezier(0.18, 0.89, 0.32, 1.28); } .raid-overlay.active .raid-content { transform: scale(1) translateY(0); } .raid-content::before { content: ''; position: absolute; inset: 0; background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.06) 18%, transparent 36%), repeating-linear-gradient(180deg, rgba(255,255,255,0.02) 0 2px, transparent 2px 6px); opacity: 0.7; pointer-events: none; } .raid-content::after { content: ''; position: absolute; inset: 1px; border-radius: 17px; border: 1px solid rgba(212,175,55,0.08); pointer-events: none; } /* Рамка Босса */ .boss-frame { position: relative; margin-bottom: 12px; display: flex; justify-content: center; align-items: center; height: 320px; } .boss-frame::before, .boss-frame::after { content: ''; position: absolute; pointer-events: none; } .boss-frame::before { width: 312px; height: 344px; border-radius: 30px; border: 1px solid rgba(204,34,0,0.22); box-shadow: 0 0 28px rgba(204,34,0,0.08); } .boss-frame::after { width: 215px; height: 215px; border-radius: 50%; background: radial-gradient(circle, rgba(212,175,55,0.14), transparent 70%); filter: blur(6px); } .boss-img { width: 290px; height: 320px; object-fit: contain; object-position: center center; border-radius: 28px; border: 1px solid rgba(204,34,0,0.55); padding: 8px; background: radial-gradient(circle at 50% 22%, rgba(255,255,255,0.08), transparent 48%), linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0.14)); box-shadow: 0 0 22px rgba(204,34,0,0.18), inset 0 0 0 1px rgba(255,255,255,0.04); /* Начальное состояние для анимации появления */ transform: scale(0) rotate(-180deg); opacity: 0; transition: all 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.3s; /* Задержка появления */ } .raid-overlay.active .boss-img { transform: scale(1) rotate(0deg); opacity: 1; } /* Постоянная анимация "парения" босса */ @keyframes bossFloat { 0%, 100% { transform: translateY(0) scale(1); } 50% { transform: translateY(-8px) scale(1.015); } } .raid-overlay.active .boss-img { animation: bossFloat 4s ease-in-out infinite 0.9s; } /* Имя и Титул */ .boss-name-wrap { margin-bottom: 20px; } .boss-name { font-size: 20px; font-weight: bold; color: var(--text); text-transform: uppercase; letter-spacing: 1px; } .boss-title { font-size: 12px; color: var(--red); opacity: 0.8; } .raid-kicker { margin: 0 0 10px; display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 999px; border: 1px solid rgba(212,175,55,0.22); background: rgba(212,175,55,0.08); color: var(--gold); font-size: 10px; letter-spacing: 1.2px; font-family: monospace; text-transform: uppercase; } .raid-kicker-dot { width: 7px; height: 7px; border-radius: 50%; background: #ff4b2b; box-shadow: 0 0 12px rgba(255,75,43,0.8); animation: raidPulseDot 1.5s ease-in-out infinite; } @keyframes raidPulseDot { 0%, 100% { transform: scale(0.9); opacity: 0.65; } 50% { transform: scale(1.2); opacity: 1; } } .raid-threat-strip { display: flex; justify-content: center; gap: 8px; margin: 0 0 16px; flex-wrap: wrap; } .raid-chip { padding: 4px 8px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.09); background: rgba(255,255,255,0.035); color: var(--text2); font-size: 9px; font-family: monospace; letter-spacing: 0.8px; text-transform: uppercase; } .raid-brief-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; margin: 0 0 12px; } .raid-brief-card { padding: 8px 7px; border-radius: 12px; border: 1px solid rgba(212,175,55,0.14); background: radial-gradient(circle at top, var(--gold-dim), transparent 62%), rgba(255,255,255,0.035); } .raid-brief-card span { display: block; color: var(--text3); font-family: monospace; font-size: 8px; letter-spacing: 1px; } .raid-brief-card strong { display: block; margin-top: 3px; color: var(--gold); font-size: 14px; font-weight: 900; } /* Блок Прогресса */ .raid-status-block { background: linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.015)), rgba(0,0,0,0.18); border: 1px solid rgba(255,255,255,0.09); border-radius: 14px; padding: 12px; margin-bottom: 10px; position: relative; overflow: hidden; } .raid-status-block::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.05), transparent); transform: translateX(-120%); animation: raidSweep 3.2s linear infinite; pointer-events: none; } @keyframes raidSweep { to { transform: translateX(140%); } } .raid-meter-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 8px; } .raid-meter-eyebrow { font-size: 9px; color: var(--text3); font-family: monospace; letter-spacing: 1.2px; text-transform: uppercase; } .raid-meter-state { padding: 3px 8px; border-radius: 999px; background: rgba(212,175,55,0.09); border: 1px solid rgba(212,175,55,0.2); color: var(--gold); font-size: 9px; font-family: monospace; letter-spacing: 0.9px; } .raid-count-label { font-size: 12px; color: var(--text2); margin-bottom: 8px; display: flex; justify-content: space-between; } /* Прогресс-бар */ .raid-progress-container { width: 100%; height: 14px; background: linear-gradient(90deg, rgba(255,255,255,0.03) 0 8%, transparent 8% 10%, rgba(255,255,255,0.03) 10% 18%, transparent 18% 20%, rgba(255,255,255,0.03) 20% 28%, transparent 28% 30%, rgba(255,255,255,0.03) 30% 38%, transparent 38% 40%, rgba(255,255,255,0.03) 40% 48%, transparent 48% 50%, rgba(255,255,255,0.03) 50% 58%, transparent 58% 60%, rgba(255,255,255,0.03) 60% 68%, transparent 68% 70%, rgba(255,255,255,0.03) 70% 78%, transparent 78% 80%, rgba(255,255,255,0.03) 80% 88%, transparent 88% 90%, rgba(255,255,255,0.03) 90% 100%), rgba(255,255,255,0.04); border-radius: 999px; overflow: hidden; position: relative; border: 1px solid rgba(255,255,255,0.12); box-shadow: inset 0 2px 6px rgba(0,0,0,0.28); } .raid-progress-container::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(255,255,255,0.12), transparent 55%); pointer-events: none; } .raid-progress-bar { width: 0%; height: 100%; background: linear-gradient(90deg, var(--red), #ff4400); border-radius: 999px; transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 0 10px var(--red-dim); position: relative; } .raid-progress-bar::after { content: ''; position: absolute; top: 1px; bottom: 1px; right: 3px; width: 46px; border-radius: 999px; background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,0.65)); filter: blur(0.5px); } /* Анимация "заряжания" бара */ @keyframes barGlow { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .raid-progress-bar { animation: barGlow 1.5s ease-in-out infinite; } .raid-progress-meta { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 9px; } .raid-progress-hint { color: var(--text3); font-size: 9px; font-family: monospace; letter-spacing: 0.8px; text-transform: uppercase; } .raid-progress-percent { color: var(--gold); font-size: 11px; font-weight: 700; font-family: monospace; } /* Кнопка закрытия */ .btn-close-raid { position: absolute; top: 10px; right: 10px; background: none; border: none; color: var(--text3); font-size: 24px; cursor: pointer; transition: color 0.2s; z-index: 10; } .btn-close-raid:hover { color: var(--red); } /* Кнопка действия */ #raid-action-btn { width: 100%; padding: 12px; border: none; border-radius: 12px; background: linear-gradient(135deg, rgba(204,34,0,0.95), rgba(255,94,58,0.92)); color: white; font-weight: bold; cursor: pointer; transition: all 0.25s; text-transform: uppercase; box-shadow: 0 10px 24px rgba(204,34,0,0.18); position: relative; overflow: hidden; } #raid-action-btn::before { content: ''; position: absolute; inset: 0; background: linear-gradient(120deg, transparent 15%, rgba(255,255,255,0.18) 32%, transparent 49%); transform: translateX(-135%); transition: transform 0.45s ease; } #raid-action-btn:hover::before { transform: translateX(135%); } #raid-action-btn:disabled { opacity: 0.7; cursor: not-allowed; } /* --- СТИЛИЗАЦИЯ ПОД ТЕМЫ --- */ /* GENSHIN LIGHT (theme-genshin-light) */ body.theme-genshin-light .raid-content { border-color: #d3bc8e; /* Золото Ли Юэ */ box-shadow: 0 0 35px rgba(211, 188, 142, 0.3); background: #f0ebe1; /* Фон свитка */ color: #3d4555; } body.theme-genshin-light .boss-img { border-color: #4b5366; /* Глубокий синий */ box-shadow: 0 0 20px rgba(75, 83, 102, 0.3); border-radius: 20px; /* Прямоугольная карточка */ } body.theme-genshin-light .boss-name { color: #3d4555; } body.theme-genshin-light .boss-title { color: #dbb165; } /* Светлое золото */ body.theme-genshin-light .raid-progress-container { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.1); } body.theme-genshin-light .raid-progress-bar { background: linear-gradient(90deg, #dbb165, #f0ebe1); box-shadow: 0 0 15px rgba(219, 177, 101, 0.4); } body.theme-genshin-light .raid-kicker, body.theme-genshin-light .raid-meter-state { border-color: rgba(75,83,102,0.18); background: rgba(75,83,102,0.08); color: #4b5366; } body.theme-genshin-light .raid-brief-card, body.theme-genshin-light .raid-roster-box, body.theme-genshin-light .raid-result-panel { border-color: rgba(75,83,102,0.14); background: rgba(255,255,255,0.48); } body.theme-genshin-light .raid-brief-card strong, body.theme-genshin-light .raid-roster-chip b { color: #9b6f2c; } body.theme-genshin-light .raid-roster-chip { background: rgba(75,83,102,0.07); border-color: rgba(75,83,102,0.12); color: #4b5366; } body.theme-genshin-light #raid-action-btn { background: #dbb165; color: #3d4555; } body.theme-genshin-light #gsPraySubtitle { color: rgba(75,83,102,0.6); } body.theme-genshin-light #gsPrayScreen { background: radial-gradient(ellipse at 50% 40%, #f0ebe1 0%, #e6dcc8 60%, #d8c8a0 100%); } body.theme-genshin-light #genshinOpenBtn { background: #dbb165; border-color: #c9a455; color: #3d4555; } /* GENSHIN DARK (theme-genshin-dark) */ body.theme-genshin-dark .raid-content { border-color: rgba(219,177,101,0.35); box-shadow: 0 0 35px rgba(219,177,101,0.18); background: #1a1628; color: #e8e0d0; } body.theme-genshin-dark .boss-img { border-color: rgba(219,177,101,0.4); box-shadow: 0 0 20px rgba(219,177,101,0.2); border-radius: 20px; } body.theme-genshin-dark .boss-name { color: #e8e0d0; } body.theme-genshin-dark .boss-title { color: #dbb165; } body.theme-genshin-dark .raid-progress-container { background: rgba(255,255,255,0.05); border-color: rgba(219,177,101,0.15); } body.theme-genshin-dark .raid-progress-bar { background: linear-gradient(90deg, #dbb165, #c8975a); box-shadow: 0 0 15px rgba(219, 177, 101, 0.4); } body.theme-genshin-dark .raid-kicker, body.theme-genshin-dark .raid-meter-state { border-color: rgba(219,177,101,0.2); background: rgba(219,177,101,0.08); color: #dbb165; } body.theme-genshin-dark .raid-brief-card, body.theme-genshin-dark .raid-roster-box, body.theme-genshin-dark .raid-result-panel { border-color: rgba(219,177,101,0.14); background: rgba(255,255,255,0.04); } body.theme-genshin-dark .raid-brief-card strong, body.theme-genshin-dark .raid-roster-chip b { color: #dbb165; } body.theme-genshin-dark .raid-roster-chip { background: rgba(219,177,101,0.07); border-color: rgba(219,177,101,0.12); color: #e8e0d0; } body.theme-genshin-dark #raid-action-btn { background: #dbb165; color: #1a1628; } /* DIARY */ .diary-shell { padding: 0 12px 18px; display: flex; flex-direction: column; gap: 12px; } .diary-hero { position: relative; overflow: hidden; border-radius: 18px; padding: 16px; border: 1px solid rgba(180, 20, 20, 0.28); background: radial-gradient(circle at top right, rgba(212, 175, 55, 0.12), transparent 38%), linear-gradient(145deg, rgba(20, 10, 16, 0.98), rgba(11, 10, 18, 0.96)); box-shadow: 0 18px 40px rgba(0, 0, 0, 0.32); } .diary-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.03) 45%, transparent 100%); pointer-events: none; } .diary-hero-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; position: relative; z-index: 1; } .diary-kicker { display: inline-flex; align-items: center; gap: 7px; padding: 5px 10px; border-radius: 999px; border: 1px solid rgba(180, 20, 20, 0.28); background: rgba(255,255,255,0.03); color: var(--text2); font-size: 9px; font-family: monospace; letter-spacing: 1.2px; text-transform: uppercase; } .diary-kicker::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--red); box-shadow: 0 0 12px rgba(204, 68, 68, 0.55); } .diary-title-wrap { position: relative; z-index: 1; margin-top: 16px; } .diary-title { font-size: 24px; font-weight: 900; letter-spacing: 1px; color: var(--text); } .diary-title-cn { margin-top: 6px; color: var(--gold); font-size: 11px; letter-spacing: 2px; font-family: serif; } .diary-subtitle { margin-top: 8px; color: var(--text2); font-size: 11px; line-height: 1.7; max-width: 420px; } .diary-status-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; font-size: 9px; font-family: monospace; text-transform: uppercase; letter-spacing: 1px; border: 1px solid rgba(212, 175, 55, 0.28); background: rgba(212, 175, 55, 0.1); color: var(--gold); white-space: nowrap; } .diary-note { font-size: 10px; color: var(--text3); line-height: 1.6; position: relative; z-index: 1; margin-top: 12px; } .diary-card { background: var(--bg2); border: 1px solid var(--border); border-radius: 16px; padding: 14px; box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18); } .diary-section-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; } .diary-section-title { font-size: 12px; font-weight: 800; letter-spacing: 1px; color: var(--text); } .diary-section-sub { font-size: 9px; color: var(--text3); font-family: monospace; letter-spacing: 1px; } .diary-meta-grid, .diary-discuss-grid, .diary-grade-grid { display: grid; gap: 8px; } .diary-meta-grid { grid-template-columns: 1.2fr 0.95fr 0.95fr; } .diary-discuss-grid { grid-template-columns: 1fr 1fr; } .diary-grade-grid { grid-template-columns: 1fr 1fr; } .diary-field { display: flex; flex-direction: column; gap: 6px; } .diary-label { font-size: 9px; color: var(--text3); text-transform: uppercase; letter-spacing: 1px; font-family: monospace; } .diary-input, .diary-select, .diary-textarea { width: 100%; background: rgba(255,255,255,0.02); border: 1px solid var(--border); border-radius: 12px; padding: 11px 12px; color: var(--text); font-size: 13px; outline: none; transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; } .diary-input:focus, .diary-select:focus, .diary-textarea:focus { border-color: rgba(212,175,55,0.45); box-shadow: 0 0 0 3px rgba(212,175,55,0.08); transform: translateY(-1px); } .diary-input[readonly] { color: var(--text2); background: rgba(255,255,255,0.03); } .diary-textarea { min-height: 220px; resize: vertical; line-height: 1.7; } .diary-words-head { display: grid; grid-template-columns: 42px 1fr 1fr 1fr; gap: 8px; padding: 0 0 8px; color: var(--text3); font-size: 9px; font-family: monospace; text-transform: uppercase; letter-spacing: 1px; } .diary-words-rows { display: flex; flex-direction: column; gap: 6px; } .diary-word-row { display: grid; grid-template-columns: 42px 1fr 1fr 1fr; gap: 8px; align-items: center; } .diary-word-index { height: 42px; border-radius: 12px; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800; color: var(--text2); background: rgba(255,255,255,0.02); } .diary-stars { display: flex; flex-wrap: wrap; gap: 8px; } .diary-star { width: 28px; height: 28px; border-radius: 50%; border: 1px solid rgba(212,175,55,0.22); background: rgba(255,255,255,0.03); color: rgba(212,175,55,0.55); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease; } .diary-star.active { background: linear-gradient(135deg, var(--gold-border), var(--gold-dim)); color: var(--gold); border-color: rgba(212,175,55,0.45); box-shadow: 0 0 16px rgba(212,175,55,0.24); } .diary-star:hover { transform: translateY(-2px) scale(1.05); } .diary-actions { display: flex; gap: 8px; flex-wrap: wrap; } .diary-actions .btn { flex: 1; min-width: 160px; } .diary-saved-days { display: flex; gap: 8px; flex-wrap: wrap; } .diary-day-chip { display: inline-flex; align-items: center; gap: 6px; padding: 8px 10px; border-radius: 999px; border: 1px solid var(--border); background: rgba(255,255,255,0.03); color: var(--text2); font-size: 10px; cursor: pointer; } .diary-day-chip.active { border-color: rgba(212,175,55,0.35); color: var(--gold); box-shadow: 0 0 16px rgba(212,175,55,0.12); } .diary-day-chip-empty { color: var(--text3); font-size: 10px; } /* ── Diary Admin Panel ─────────────────────────────────── */ .diary-admin-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; } .diary-admin-date { flex: 1; min-width: 130px; background: var(--bg2); border: 1px solid var(--border); color: var(--text); border-radius: 8px; padding: 8px 10px; font-family: monospace; font-size: 12px; } .diary-admin-refresh { background: transparent; border: 1px solid var(--border); color: var(--text2); border-radius: 8px; padding: 8px 12px; cursor: pointer; font-family: monospace; font-size: 11px; } .diary-student-list { display: flex; flex-direction: column; gap: 6px; } .diary-student-row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--border); background: rgba(255,255,255,0.02); cursor: pointer; transition: border-color 0.15s, background 0.15s; } .diary-student-row:hover { border-color: rgba(212,175,55,0.35); background: rgba(212,175,55,0.04); } .diary-student-row.active { border-color: rgba(212,175,55,0.5); background: rgba(212,175,55,0.08); } .diary-student-icon { font-size: 16px; flex-shrink: 0; } .diary-student-name { flex: 1; font-size: 12px; color: var(--text); font-family: monospace; } .diary-student-words { font-size: 10px; color: var(--text3); font-family: monospace; } .diary-student-badge { font-size: 9px; font-family: monospace; padding: 3px 7px; border-radius: 999px; border: 1px solid currentColor; } .diary-student-badge.missing { color: var(--text3); } .diary-student-badge.draft { color: #6af; } .diary-student-badge.submitted{ color: #4fa; } .diary-student-badge.locked { color: #fa4; } .diary-viewing-banner { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border-radius: 10px; border: 1px solid rgba(212,175,55,0.35); background: rgba(212,175,55,0.07); margin-bottom: 4px; font-family: monospace; font-size: 11px; color: var(--gold, #d4af37); } .diary-viewing-banner button { background: transparent; border: 1px solid rgba(212,175,55,0.4); color: var(--gold, #d4af37); border-radius: 6px; padding: 4px 10px; cursor: pointer; font-family: monospace; font-size: 10px; flex-shrink: 0; } /* ── Импланты: названия и описания в светлых темах ───────── */ body.theme-nw-light .implant-cn, body.theme-genshin-light .implant-cn { color: var(--text2); } body.theme-nw-light .implant-sub, body.theme-genshin-light .implant-sub { color: var(--text3); } body.theme-nw-light .implant-row { border-bottom-color: rgba(70,45,45,0.08); } body.theme-nw-light .implant-py { color: #6f6258 !important; font-style: normal; } body.theme-nw-light .implant-row [style*="var(--text3)"] { color: #8a7f76 !important; } body.theme-nw-light .implant-icon { background: rgba(120,76,140,0.08); border-color: rgba(120,76,140,0.18); } body.theme-nw-light .implant-icon.legendary { background: rgba(153,51,51,0.08); border-color: rgba(153,51,51,0.18); } body.theme-nw-light .dur-dot.on { background: rgba(120,76,140,0.46); } body.theme-nw-light .dur-dot.on-r { background: rgba(153,51,51,0.52); } body.theme-nw-light .dur-dot.off { background: rgba(60,45,45,0.12); } body.theme-nw-light #myImplantsPage [style*="color:#fff"], body.theme-nw-light #implants-catalog [style*="color:#fff"] { color: var(--text) !important; } body.theme-nw-light #myImplantsPage [style*="color:#ccc"], body.theme-nw-light #implants-catalog [style*="color:#ccc"] { color: var(--text2) !important; } body.theme-nw-light #myImplantsPage [style*="rgba(212,175,55"], body.theme-nw-light #implants-catalog [style*="rgba(212,175,55"] { color: var(--text3) !important; } body.theme-nw-light #implants-catalog [style*="border-top:1px solid rgba(255,255,255"], body.theme-nw-light #implants-catalog [style*="border-bottom:1px solid rgba(255,255,255"], body.theme-nw-light #myImplantsPage [style*="border-bottom:1px solid rgba(255,255,255"] { border-color: rgba(70,45,45,0.10) !important; } /* ── Светлые темы: золотые тексты → тёмно-серый ─────────── */ body.theme-nw-light .more-item-cn, body.theme-genshin-light .more-item-cn, body.theme-nw-light .shop-item-cn, body.theme-genshin-light .shop-item-cn, body.theme-nw-light .shop-cat .cn, body.theme-genshin-light .shop-cat .cn, body.theme-nw-light .team-role, body.theme-genshin-light .team-role, body.theme-nw-light .stat-cn, body.theme-genshin-light .stat-cn, body.theme-nw-light .implant-py, body.theme-genshin-light .implant-py, body.theme-nw-light .main-pinyin, body.theme-genshin-light .main-pinyin, body.theme-nw-light .page-sub, body.theme-nw-light .cn-divider, body.theme-nw-light .neuro-sub, body.theme-nw-light .schedule-location, body.theme-genshin-light .page-sub { color: var(--text3) !important; } body.theme-nw-light .neuro-status { color: #993333; } /* ── Навигация NW Light ──────────────────────────────────── */ body.theme-nw-light .bottom-nav { background: rgba(244,241,237,0.97); border-top-color: var(--red-dim); } body.theme-nw-light .bottom-nav::before { background: linear-gradient(90deg, transparent, rgba(180,20,20,0.3), transparent); } body.theme-nw-light .nav-item { color: #555555; } body.theme-nw-light .nav-item.active { color: #993333; } body.theme-nw-light .nav-cn { color: #777777; } /* NetWatch light: keep casino and event cards readable on a pale surface. */ body.theme-nw-light .casino-balance, body.theme-nw-light .prize-result { background: rgba(255,255,255,0.76); border-color: rgba(120,40,40,0.16); box-shadow: 0 8px 24px rgba(80,40,30,0.06); } body.theme-nw-light .case-card { background: linear-gradient(145deg, rgba(255,255,255,0.78), rgba(238,232,226,0.72)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.65), 0 8px 18px rgba(80,40,30,0.045); } body.theme-nw-light .case-card.gold { border-color: rgba(138,104,32,0.28); } body.theme-nw-light .case-card.purple { border-color: rgba(120,76,140,0.24); } body.theme-nw-light .case-card.black { border-color: rgba(153,51,51,0.24); } body.theme-nw-light .case-cn.g { color: rgba(122,80,16,0.72); } body.theme-nw-light .case-cn.p { color: rgba(110,70,132,0.72); } body.theme-nw-light .case-cn.b { color: rgba(153,51,51,0.72); } body.theme-nw-light .roulette-track { background: linear-gradient(180deg, rgba(255,255,255,0.86), rgba(235,229,222,0.82)); border-color: rgba(153,51,51,0.22); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.55), 0 10px 28px rgba(80,40,30,0.08); } body.theme-nw-light .roulette-track::before { background: linear-gradient(to right, rgba(244,241,237,0.98), rgba(244,241,237,0)); } body.theme-nw-light .roulette-track::after { background: linear-gradient(to left, rgba(244,241,237,0.98), rgba(244,241,237,0)); } body.theme-nw-light .roulette-item { background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(232,225,218,0.92)); border-color: rgba(153,51,51,0.16); color: #1f1f1f; } body.theme-nw-light .roulette-item-gold { border-color: rgba(138,104,32,0.24); background: radial-gradient(circle at 50% 10%, rgba(212,175,55,0.16), transparent 48%), linear-gradient(145deg, rgba(255,255,255,0.94), rgba(232,225,218,0.92)); } body.theme-nw-light .roulette-item-purple { border-color: rgba(120,76,140,0.28); background: radial-gradient(circle at 50% 10%, rgba(155,89,182,0.16), transparent 50%), linear-gradient(145deg, rgba(250,246,255,0.94), rgba(228,219,235,0.92)); } body.theme-nw-light .roulette-item-black { border-color: rgba(153,51,51,0.32); background: radial-gradient(circle at 50% 10%, rgba(180,20,20,0.14), transparent 52%), linear-gradient(145deg, rgba(255,244,244,0.92), rgba(230,218,218,0.90)); } body.theme-nw-light .roulette-item-name { color: #444444; } body.theme-nw-light .roulette-case-label { color: rgba(40,40,40,0.52); } body.theme-nw-light .roulette-item.opened { background: linear-gradient(145deg, rgba(255,250,232,0.96), rgba(236,221,175,0.92)); } body.theme-nw-light .home-event-card { border-color: rgba(153,51,51,0.24) !important; background: linear-gradient(135deg, rgba(153,51,51,0.10), rgba(255,255,255,0.76)), rgba(255,255,255,0.74) !important; box-shadow: 0 10px 26px rgba(80,40,30,0.08) !important; } body.theme-nw-light .home-event-card-kicker { color: #7a5010 !important; } body.theme-nw-light .home-event-card-title { color: #1f1f1f !important; } body.theme-nw-light .home-event-card-copy { color: #4a4a4a !important; } body.theme-genshin .home-event-card { border-color: rgba(219,177,101,0.18) !important; background: linear-gradient(135deg, rgba(219,177,101,0.10), rgba(255,255,255,0.03)), rgba(255,255,255,0.035) !important; box-shadow: 0 10px 24px rgba(90,60,20,0.08) !important; } body.theme-genshin .home-event-card-kicker { color: rgba(138,104,32,0.72) !important; } body.theme-genshin-light .home-event-card-title { color: #3d4555 !important; } body.theme-genshin-light .home-event-card-copy { color: #6b5f4d !important; } body.theme-genshin-dark .home-event-card-title { color: #f0dfb8 !important; } body.theme-genshin-dark .home-event-card-copy { color: rgba(234,220,190,0.72) !important; } /* ── Дневник в светлых темах ─────────────────────────────── */ body.theme-nw-light .diary-hero, body.theme-genshin-light .diary-hero { background: rgba(255,255,255,0.7); border-color: rgba(0,0,0,0.1); } body.theme-nw-light .diary-card, body.theme-genshin-light .diary-card { background: rgba(255,255,255,0.6); border-color: rgba(0,0,0,0.08); } body.theme-nw-light .diary-input, body.theme-nw-light .diary-textarea, body.theme-nw-light .diary-select, body.theme-genshin-light .diary-input, body.theme-genshin-light .diary-textarea, body.theme-genshin-light .diary-select { background: rgba(255,255,255,0.8); color: var(--text); border-color: rgba(0,0,0,0.1); } .diary-back-btn { background: transparent; border: 1px solid var(--border); color: var(--text2); border-radius: 10px; padding: 8px 10px; cursor: pointer; font-family: monospace; font-size: 10px; } body.theme-genshin-light .diary-hero { border-color: rgba(219,177,101,0.28); background: radial-gradient(circle at top right, rgba(219,177,101,0.16), transparent 42%), linear-gradient(145deg, rgba(240, 235, 225, 0.96), rgba(232, 224, 210, 0.98)); } body.theme-genshin-light .diary-kicker, body.theme-genshin-light .diary-status-badge, body.theme-genshin-light .diary-day-chip.active { border-color: rgba(75,83,102,0.14); background: rgba(75,83,102,0.08); color: #4b5366; } body.theme-genshin-light .diary-kicker::before { background: #dbb165; box-shadow: 0 0 12px rgba(219,177,101,0.45); } body.theme-genshin-light .diary-title { color: #3d4555; } body.theme-genshin-light .diary-title-cn { color: #dbb165; } body.theme-genshin-light .diary-subtitle, body.theme-genshin-light .diary-note, body.theme-genshin-light .diary-section-sub, body.theme-genshin-light .diary-label, body.theme-genshin-light .diary-day-chip, body.theme-genshin-light .diary-word-index { color: #6b7180; } body.theme-genshin-light .diary-card, body.theme-genshin-light .diary-input, body.theme-genshin-light .diary-select, body.theme-genshin-light .diary-textarea, body.theme-genshin-light .diary-word-index, body.theme-genshin-light .diary-day-chip, body.theme-genshin-light .diary-back-btn { background: rgba(255,255,255,0.55); border-color: rgba(75,83,102,0.14); color: #3d4555; } body.theme-genshin-light .diary-star { border-color: rgba(219,177,101,0.25); color: rgba(219,177,101,0.6); background: rgba(255,255,255,0.5); } body.theme-genshin-light .diary-star.active { color: #8a6820; background: linear-gradient(135deg, rgba(219,177,101,0.26), rgba(255,255,255,0.72)); border-color: rgba(219,177,101,0.4); } @media (max-width: 640px) { .diary-meta-grid, .diary-discuss-grid, .diary-grade-grid { grid-template-columns: 1fr; } .diary-words-head, .diary-word-row { grid-template-columns: 34px 1fr 1fr 1fr; gap: 6px; } .diary-hero-top { flex-direction: column; align-items: flex-start; } } /* ===== АНИМАЦИИ ===== */ /* Переходы между страницами */ .page { animation: none; } .page.active { animation: pageIn 0.32s cubic-bezier(0.22,1,0.36,1) both; } @keyframes pageIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } } /* ===== TOAST NOTIFICATIONS ===== */ #toastContainer { position: fixed; bottom: calc(var(--nav-h) + 14px); left: 50%; transform: translateX(-50%); z-index: 9999; display: flex; flex-direction: column-reverse; gap: 7px; pointer-events: none; width: calc(100% - 28px); max-width: 430px; } .toast { display: flex; align-items: flex-start; gap: 10px; padding: 11px 14px; border-radius: var(--card-radius); background: rgba(8, 8, 18, 0.94); border: 1px solid var(--border); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); box-shadow: 0 6px 28px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.04); pointer-events: auto; animation: toastIn 0.3s cubic-bezier(0.34,1.56,0.64,1) both; will-change: transform, opacity; min-height: 44px; } .toast.hiding { animation: toastOut 0.22s ease forwards; pointer-events: none; } .toast-icon { font-size: 18px; flex-shrink: 0; width: 22px; text-align: center; line-height: 1.5; } .toast-msg { font-family: var(--font-ui); font-size: 13px; line-height: 1.45; color: var(--text); flex: 1; padding-top: 1px; } .toast-close { font-size: 14px; color: var(--text3); cursor: pointer; padding: 1px 3px; flex-shrink: 0; line-height: 1.4; opacity: 0.7; } .toast-close:hover { opacity: 1; } .toast.toast-success { border-color: rgba(40,200,100,0.32); background: rgba(4,18,10,0.95); box-shadow: 0 6px 28px rgba(0,0,0,0.55), 0 0 0 1px rgba(40,200,100,0.08) inset; } .toast.toast-success .toast-icon { color: #32d872; } .toast.toast-error { border-color: rgba(200,40,40,0.38); background: rgba(18,4,4,0.95); box-shadow: 0 6px 28px rgba(0,0,0,0.55), 0 0 0 1px rgba(200,40,40,0.08) inset; } .toast.toast-error .toast-icon { color: #e03333; } .toast.toast-info { border-color: var(--gold-border); background: rgba(12,10,2,0.95); } .toast.toast-info .toast-icon { color: var(--gold); } .toast.toast-warn { border-color: rgba(200,140,30,0.32); background: rgba(16,11,2,0.95); } .toast.toast-warn .toast-icon { color: #e09a28; } @keyframes toastIn { from { transform: translateY(18px) scale(0.93); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } } @keyframes toastOut { from { transform: translateY(0) scale(1); opacity: 1; } to { transform: translateY(6px) scale(0.95); opacity: 0; } } body.theme-nw-light #toastContainer .toast { background: rgba(252,250,246,0.97); border-color: rgba(0,0,0,0.1); box-shadow: 0 6px 28px rgba(0,0,0,0.12); color: var(--text); } body.theme-nw-light .toast.toast-success { background: rgba(240,252,245,0.97); } body.theme-nw-light .toast.toast-error { background: rgba(252,240,240,0.97); } body.theme-nw-light .toast.toast-warn { background: rgba(252,248,235,0.97); } body.theme-genshin-light #toastContainer .toast { background: rgba(252,250,246,0.97); border-color: rgba(0,0,0,0.1); box-shadow: 0 6px 28px rgba(0,0,0,0.12); color: var(--text); } body.theme-genshin-light .toast.toast-success { background: rgba(240,252,245,0.97); } body.theme-genshin-light .toast.toast-error { background: rgba(252,240,240,0.97); } body.theme-genshin-light .toast.toast-warn { background: rgba(252,248,235,0.97); } /* --- nw-light: admin dossier modal --- */ body.theme-nw-light .admin-dossier-sheet { background: radial-gradient(circle at top left, rgba(180,130,60,0.08), transparent 42%), linear-gradient(145deg, rgba(255,252,245,0.98), rgba(250,246,238,0.96)); border-color: rgba(160,110,40,0.22); box-shadow: 0 14px 50px rgba(0,0,0,0.14); } body.theme-nw-light .admin-dossier-stat { background: rgba(255,255,255,0.7); border: 1px solid rgba(0,0,0,0.07); } body.theme-nw-light .admin-dossier-stat span, body.theme-nw-light .admin-dossier-panel-title { color: rgba(100,60,10,0.7); } body.theme-nw-light .admin-dossier-stat strong { color: #1a1a1a; } body.theme-nw-light .admin-dossier-stat em { color: #3a3a3a; } body.theme-nw-light .admin-dossier-panel { background: rgba(255,255,255,0.6); border: 1px solid rgba(0,0,0,0.07); } body.theme-nw-light .admin-dossier-row { border-color: rgba(0,0,0,0.06); } body.theme-nw-light .admin-dossier-row strong { color: #1a1a1a; } body.theme-nw-light .admin-dossier-row span { color: #4a4a4a; } body.theme-nw-light .admin-dossier-room { background: rgba(255,255,255,0.6); border-color: rgba(0,0,0,0.08); } body.theme-nw-light .admin-dossier-empty { color: #888; } /* --- nw-light: admin blackwall / architect event cards --- */ body.theme-nw-light .admin-blackwall-card { background: linear-gradient(135deg, rgba(60,20,90,0.07), rgba(100,50,140,0.05)); border: 1px solid rgba(120,60,160,0.22); box-shadow: 0 4px 16px rgba(80,30,120,0.07); } body.theme-nw-light .admin-blackwall-glyph { color: rgba(100,40,140,0.45); text-shadow: none; } body.theme-nw-light .admin-blackwall-title { color: #2a1a3a; } body.theme-nw-light .admin-blackwall-desc { color: #5a4a6a; } /* --- nw-light: diary star rating buttons --- */ body.theme-nw-light .diary-star { border-color: rgba(140,90,10,0.28); background: rgba(255,255,255,0.6); color: rgba(140,90,10,0.5); } body.theme-nw-light .diary-star.active { background: linear-gradient(135deg, rgba(200,155,40,0.18), rgba(220,175,60,0.12)); color: #8a5a10; border-color: rgba(160,110,20,0.45); box-shadow: 0 0 10px rgba(180,130,30,0.18); } body.theme-nw-light .diary-admin-date { background: rgba(255,255,255,0.75); border-color: rgba(0,0,0,0.12); color: #2a2a2a; } body.theme-nw-light .diary-admin-refresh { border-color: rgba(0,0,0,0.12); color: #555; } body.theme-nw-light .diary-admin-refresh:hover { background: rgba(0,0,0,0.05); } /* Ripple на кнопках */ .btn, .btn-primary, .shop-item-buy, .subtab, .nav-item { position: relative; overflow: hidden; } .ripple { position: absolute; border-radius: 50%; background: rgba(255,255,255,0.2); transform: scale(0); animation: rippleAnim 0.5s linear; pointer-events: none; } @keyframes rippleAnim { to { transform: scale(4); opacity: 0; } } /* Bounce на навигации */ .nav-item.active .nav-icon { animation: navBounce 0.4s cubic-bezier(0.34,1.56,0.64,1); } @keyframes navBounce { 0% { transform: scale(1); } 50% { transform: scale(1.3); } 100% { transform: scale(1); } } /* Пульсация баллов при обновлении */ @keyframes pointsPulse { 0% { transform: scale(1); } 50% { transform: scale(1.15); color: #ffd700; } 100% { transform: scale(1); } } .points-pulse { animation: pointsPulse 0.4s ease-out; } /* Появление элементов списка каскадом */ .lb-item { animation: fadeSlideIn 0.4s ease-out both; } @keyframes fadeSlideIn { from { opacity: 0; transform: translateX(-15px); } to { opacity: 1; transform: translateX(0); } } /* Свечение кнопки открытия кейса */ #openCaseBtn { animation: btnGlow 2s ease-in-out infinite; } @keyframes btnGlow { 0%, 100% { box-shadow: 0 0 8px rgba(180,20,20,0.3); } 50% { box-shadow: 0 0 20px rgba(180,20,20,0.7); } } /* Карточки имплантов */ .implant-row { animation: implantIn 0.4s ease-out both; } @keyframes implantIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .announcement-text { white-space: normal; line-height: 1.6; word-break: break-word; } .event-overlay { position: fixed; inset: 0; z-index: 5000; overflow: hidden; } .event-overlay::before, .event-overlay::after { content: ''; position: fixed; inset: 0; pointer-events: none; } .event-overlay::before { z-index: 6; opacity: 0; background: repeating-linear-gradient( 180deg, rgba(255, 40, 40, 0.08) 0, rgba(255, 40, 40, 0.08) 1px, transparent 1px, transparent 8px ); } .event-overlay::after { z-index: 8; opacity: 0; background: transparent; } .event-overlay.event-state-active.event-phase-1::before { opacity: 0.12; animation: architectPhaseScanSlow 7.8s linear infinite; } .event-overlay.event-state-active.event-phase-2::before { opacity: 0.24; background: linear-gradient(90deg, rgba(0, 230, 255, 0.16), transparent 18%, rgba(255, 30, 45, 0.13) 82%, transparent), repeating-linear-gradient(180deg, rgba(0, 230, 255, 0.08) 0 1px, transparent 1px 7px); animation: architectPhaseSplit 2.2s steps(2) infinite; } .event-overlay.event-state-active.event-phase-3::before { opacity: 0.34; background: radial-gradient(circle at 50% 50%, rgba(255, 0, 0, 0.25), transparent 42%), repeating-linear-gradient(180deg, rgba(255, 30, 30, 0.10) 0 1px, transparent 1px 5px); animation: architectOverloadPulse 1.2s ease-in-out infinite; } .event-overlay.event-phase-shift::after { opacity: 1; background: linear-gradient(90deg, rgba(0, 230, 255, 0.18), transparent 38%, rgba(255, 20, 40, 0.22)), repeating-linear-gradient(180deg, rgba(255,255,255,0.10) 0 1px, transparent 1px 6px); animation: architectPhaseJerkFlash 0.9s steps(2) both; } .event-overlay.event-phase-shift .event-hud { animation: architectHudCorrupt 0.85s steps(2) both; } .event-overlay.event-phase-shift .event-hero-video, .event-overlay.event-phase-shift #eventBossImage { animation: architectMediaJolt 0.85s steps(2) both; } .event-overlay.event-action-fx-attack::after { opacity: 1; background: radial-gradient(circle at 50% 42%, rgba(255, 35, 20, 0.34), transparent 35%), linear-gradient(90deg, rgba(255,0,0,0.24), transparent 32%, rgba(255,0,0,0.20)); animation: architectAttackFlash 0.56s ease-out both; } .event-overlay.event-action-fx-attack .event-hero { animation: architectHitShake 0.38s ease-out both; } .event-overlay.event-action-fx-protocol::after { opacity: 1; background: repeating-linear-gradient(90deg, transparent 0 16px, rgba(0, 230, 255, 0.22) 16px 18px), linear-gradient(180deg, transparent, rgba(0, 230, 255, 0.16), transparent); animation: architectProtocolTrace 0.68s ease-out both; } .event-overlay.event-action-fx-sync::after { opacity: 1; background: radial-gradient(circle at 50% 50%, transparent 0 18%, rgba(115, 125, 255, 0.24) 19%, transparent 31%), radial-gradient(circle at 50% 50%, rgba(115, 125, 255, 0.16), transparent 46%); animation: architectSyncRipple 0.72s ease-out both; } .event-overlay.event-action-fx-stabilize::after { opacity: 1; background: radial-gradient(circle at 50% 56%, rgba(70, 255, 140, 0.20), transparent 36%), linear-gradient(180deg, transparent, rgba(70, 255, 140, 0.12)); animation: architectStabilizeShield 0.76s ease-out both; } .event-overlay.event-action-fx-miss::after { filter: grayscale(0.45) contrast(1.35); } .event-overlay.event-overload-high .event-hero-video, .event-overlay.event-overload-high #eventBossImage { animation: architectOverloadShake 0.42s steps(2) infinite; } .event-overlay.event-overload-critical .event-hud, .event-overlay.event-overload-critical .event-final-timer { animation: architectCriticalBlink 0.72s steps(2) infinite; } .event-backdrop { position: absolute; inset: 0; background: radial-gradient(circle at center, rgba(180,20,20,0.16), rgba(0,0,0,0.88)), rgba(0,0,0,0.92); backdrop-filter: blur(8px); animation: eventBackdropPulse 6s ease-in-out infinite; } .event-shell { position: relative; z-index: 3; height: 100vh; display: flex; flex-direction: column; padding: 14px 12px 0; overflow: hidden; pointer-events: none; } .event-shell > * { position: relative; z-index: 2; } .event-shell button, .event-actions, .event-log, .event-hud { pointer-events: auto; } .event-topbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 0; position: fixed; top: 14px; left: 12px; right: 12px; z-index: 10; pointer-events: none; } .event-topbar-left, .event-topbar-right, .event-close-btn { pointer-events: auto; } .event-topbar-right { display: flex; align-items: center; gap: 6px; } .event-mute-btn { border: 1px solid rgba(255,255,255,0.10); background: rgba(255,255,255,0.04); color: #fff; width: 36px; height: 36px; border-radius: 10px; font-size: 16px; cursor: pointer; transition: background 0.18s, border-color 0.18s, opacity 0.18s; display: flex; align-items: center; justify-content: center; } .event-mute-btn.muted { background: rgba(255,80,60,0.10); border-color: rgba(255,80,60,0.22); opacity: 0.72; } .event-mute-btn:active { transform: scale(0.92); } .event-kicker { font-size: 10px; letter-spacing: 2px; color: rgba(212,175,55,0.9); font-family: monospace; } .event-phase { margin-top: 2px; font-size: 18px; font-weight: 800; color: #fff; text-shadow: 0 0 22px rgba(255, 60, 40, 0.5); animation: eventPhaseFlicker 2.8s ease-in-out infinite; } .event-close-btn { border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.05); color: #fff; width: 40px; height: 40px; border-radius: 12px; font-size: 20px; cursor: pointer; } .event-hero { position: fixed; inset: 0; width: 100vw; height: 100vh; min-height: 100vh; margin: 0; overflow: hidden; border-radius: 0; border: none; background: radial-gradient(circle at center, rgba(180,20,20,0.24), rgba(0,0,0,0.20) 54%, rgba(0,0,0,0.78)), #050008; z-index: 1; pointer-events: none; } .event-hero img, .event-hero-video { position: absolute; top: 132px; left: 0; right: 0; bottom: 0; width: 100vw; height: calc(100vh - 132px); object-fit: contain; object-position: center center; display: block; transform: none; filter: saturate(1.08) contrast(1.05); z-index: 0; } .event-hero::before { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.24), rgba(0,0,0,0.08) 24%, rgba(0,0,0,0.22) 58%, rgba(0,0,0,0.82)), repeating-linear-gradient( 180deg, rgba(255, 70, 40, 0.06) 0, rgba(255, 70, 40, 0.06) 1px, transparent 1px, transparent 4px ); mix-blend-mode: screen; opacity: 0.55; pointer-events: none; z-index: 2; } .event-hero::after { content: ''; position: absolute; inset: -20%; background: linear-gradient(90deg, transparent 0%, rgba(255, 90, 60, 0.18) 48%, transparent 100%); transform: translateX(-55%) skewX(-12deg); animation: eventScanSweep 5.5s linear infinite; pointer-events: none; z-index: 3; } .event-hero-glow { position: absolute; inset: 0; background: radial-gradient(circle at center, rgba(255,0,0,0.18), transparent 56%), radial-gradient(circle at 50% 22%, rgba(255,140,120,0.12), transparent 28%); pointer-events: none; animation: eventHeroPulse 4s ease-in-out infinite; z-index: 1; } .event-overlay.event-phase-1 .event-hero-glow { opacity: 0.55; animation-duration: 5.2s; } .event-overlay.event-phase-2 .event-hero-glow { opacity: 0.72; background: radial-gradient(circle at 42% 48%, rgba(0, 230, 255, 0.12), transparent 42%), radial-gradient(circle at 58% 44%, rgba(255, 30, 40, 0.16), transparent 48%); animation-duration: 2.9s; } .event-overlay.event-phase-3 .event-hero-glow { opacity: 0.92; background: radial-gradient(circle at center, rgba(255,0,0,0.30), transparent 54%), radial-gradient(circle at 50% 22%, rgba(255,140,120,0.16), transparent 30%); animation-duration: 1.55s; } .event-final-timer { position: fixed; top: 96px; right: 12px; z-index: 12; padding: 6px 9px; border: 1px solid rgba(255, 45, 45, 0.46); border-radius: 8px; background: rgba(20, 2, 4, 0.58); color: #ffdad2; font-family: monospace; font-size: 10px; letter-spacing: 1.6px; text-transform: uppercase; box-shadow: 0 0 18px rgba(255, 0, 0, 0.16), inset 0 0 0 1px rgba(255,255,255,0.03); backdrop-filter: blur(10px); pointer-events: none; } .event-phase-warning { position: fixed; left: 50%; top: 132px; z-index: 12; transform: translateX(-50%); padding: 5px 10px; border: 1px solid rgba(255, 34, 34, 0.55); border-radius: 999px; background: rgba(55, 0, 0, 0.55); color: #ffb7aa; font-family: monospace; font-size: 9px; letter-spacing: 2.2px; text-transform: uppercase; box-shadow: 0 0 22px rgba(255, 0, 0, 0.22); backdrop-filter: blur(10px); animation: architectWarningBlink 0.9s steps(2) infinite; pointer-events: none; } .event-hud { position: fixed; top: 48px; left: 12px; z-index: 11; margin: 0; width: min(330px, calc(100vw - 24px)); max-width: 330px; min-height: 42px; padding: 5px 7px 5px 6px; background: rgba(3, 8, 14, 0.46); border: 1px solid rgba(0, 230, 255, 0.46); box-shadow: 0 0 12px rgba(0, 230, 255, 0.10), inset 0 0 0 1px rgba(0, 230, 255, 0.04); backdrop-filter: blur(4px); clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 10px 100%, 0 calc(100% - 10px)); display: flex; align-items: stretch; gap: 7px; pointer-events: none; } .event-hud::before { display: none; } .event-hud::after { display: none; } .boss-hud__stack { position: relative; z-index: 1; width: 28px; flex: 0 0 28px; display: flex; flex-direction: column; gap: 3px; align-items: stretch; } .boss-hud__avatar { height: 24px; border: 1px solid rgba(255, 74, 74, 0.72); background: linear-gradient(180deg, rgba(255, 66, 66, 0.1), rgba(255, 66, 66, 0.02)), rgba(7, 10, 16, 0.92); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03); clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 8px 100%, 0 calc(100% - 8px)); background-position: center; background-size: cover; background-repeat: no-repeat; } .boss-hud__avatar::before { content: ''; display: block; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(255, 44, 44, 0.22), transparent 55%), repeating-linear-gradient(90deg, rgba(0, 234, 255, 0.12) 0 1px, transparent 1px 7px); } .boss-hud__level { display: flex; align-items: center; justify-content: center; min-height: 15px; border: 1px solid rgba(0, 234, 255, 0.78); background: rgba(4, 10, 14, 0.92); color: #87f8ff; font-family: monospace; font-size: 9px; font-weight: 800; letter-spacing: 0.06em; text-shadow: 0 0 8px rgba(0, 234, 255, 0.22); } .boss-hud__main { position: relative; z-index: 1; min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-height: 0; } .boss-hud__caption { font-family: monospace; font-size: 4px; line-height: 1; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(255, 107, 96, 0.9); } .boss-hud__topline { display: flex; align-items: center; justify-content: space-between; gap: 6px; min-width: 0; } .event-boss-name { flex: 0 1 auto; min-width: 0; font-size: 9px; font-weight: 800; margin: 0; color: #c9fbff; text-transform: uppercase; letter-spacing: 0.06em; text-shadow: 0 0 10px rgba(84, 245, 255, 0.18); line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .event-meta-row { flex: 0 0 auto; display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 3px; margin: 0; } .event-status-badge { display: inline-flex; align-items: center; justify-content: center; min-height: 10px; padding: 0 3px; border-radius: 2px; font-size: 5px; font-family: monospace; font-weight: 700; line-height: 1; letter-spacing: 0.08em; text-transform: uppercase; border: 1px solid rgba(96, 245, 255, 0.34); background: rgba(7, 14, 20, 0.82); color: #aef8ff; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02); } .event-status-badge.hot { border-color: rgba(255, 86, 86, 0.52); background: rgba(56, 10, 14, 0.72); color: #ff9d9d; } .event-status-badge.gold { border-color: rgba(255, 190, 82, 0.48); background: rgba(56, 44, 8, 0.72); color: #ffd978; } .event-status-badge.green { border-color: rgba(72, 225, 150, 0.48); background: rgba(10, 42, 28, 0.72); color: #9ef0c1; } @keyframes eventHeroPulse { 0%, 100% { opacity: 0.72; transform: scale(1); } 50% { opacity: 1; transform: scale(1.03); } } @keyframes eventScanSweep { from { transform: translateX(-65%) skewX(-12deg); } to { transform: translateX(65%) skewX(-12deg); } } @keyframes eventPhaseFlicker { 0%, 100% { opacity: 1; transform: translateY(0); } 20% { opacity: 0.92; } 22% { opacity: 0.76; } 24% { opacity: 1; } 60% { opacity: 0.95; transform: translateY(-1px); } } @keyframes eventBackdropPulse { 0%, 100% { opacity: 0.92; transform: scale(1); } 50% { opacity: 1; transform: scale(1.025); } } @keyframes architectPhaseScanSlow { from { transform: translateY(-10%); } to { transform: translateY(10%); } } @keyframes architectPhaseSplit { 0%, 100% { transform: translateX(0); filter: hue-rotate(0deg); } 18% { transform: translateX(-2px); filter: hue-rotate(12deg); } 20% { transform: translateX(2px); } 22% { transform: translateX(0); } 62% { transform: translateX(1px); } 64% { transform: translateX(-1px); } } @keyframes architectOverloadPulse { 0%, 100% { opacity: 0.22; transform: scale(1); } 50% { opacity: 0.46; transform: scale(1.02); } } @keyframes architectPhaseJerkFlash { 0% { opacity: 0; transform: translateX(-8px); } 12% { opacity: 1; transform: translateX(10px); } 24% { opacity: 0.62; transform: translateX(-6px); } 46% { opacity: 0.34; transform: translateX(3px); } 100% { opacity: 0; transform: translateX(0); } } @keyframes architectHudCorrupt { 0%, 100% { transform: translateX(0); filter: none; } 12% { transform: translateX(-3px); filter: hue-rotate(60deg) saturate(1.6); } 22% { transform: translateX(4px); filter: hue-rotate(-30deg) saturate(1.8); } 34% { transform: translateX(-1px); } } @keyframes architectMediaJolt { 0%, 100% { transform: translateX(0) scale(1); filter: saturate(1.08) contrast(1.05); } 14% { transform: translateX(-8px) scale(1.012); filter: saturate(1.4) contrast(1.2); } 28% { transform: translateX(7px) scale(1.006); filter: saturate(0.9) contrast(1.35); } 42% { transform: translateX(-2px) scale(1); } } @keyframes architectAttackFlash { 0% { opacity: 0; transform: scale(1); } 18% { opacity: 1; transform: scale(1.02); } 100% { opacity: 0; transform: scale(1.08); } } @keyframes architectHitShake { 0%, 100% { transform: translate(0, 0); } 20% { transform: translate(-7px, 2px); } 40% { transform: translate(6px, -1px); } 60% { transform: translate(-3px, 1px); } 80% { transform: translate(2px, 0); } } @keyframes architectProtocolTrace { 0% { opacity: 0; transform: translateX(-18px); } 22% { opacity: 0.82; transform: translateX(0); } 100% { opacity: 0; transform: translateX(28px); } } @keyframes architectSyncRipple { 0% { opacity: 0; transform: scale(0.75); } 28% { opacity: 0.78; transform: scale(1); } 100% { opacity: 0; transform: scale(1.55); } } @keyframes architectStabilizeShield { 0% { opacity: 0; transform: scaleY(0.92); } 26% { opacity: 0.70; transform: scaleY(1); } 100% { opacity: 0; transform: scaleY(1.08); } } @keyframes architectOverloadShake { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(1px, -1px); } 50% { transform: translate(-1px, 1px); } 75% { transform: translate(2px, 0); } } @keyframes architectCriticalBlink { 0%, 100% { filter: saturate(1); opacity: 1; } 50% { filter: saturate(1.8) brightness(1.18); opacity: 0.72; } } @keyframes architectWarningBlink { 0%, 100% { opacity: 1; transform: translateX(-50%) scale(1); } 50% { opacity: 0.52; transform: translateX(-50%) scale(1.02); } } @keyframes architectButtonFire { 0% { transform: scale(1) translateY(0); } 15% { transform: scale(0.93) translateY(2px); } 45% { transform: scale(1.05) translateY(-3px); } 70% { transform: scale(0.99) translateY(-1px); } 100% { transform: scale(1) translateY(0); } } .event-hp-row { display: flex; align-items: center; justify-content: space-between; gap: 5px; margin: 0; font-family: monospace; line-height: 1; } .event-hp-text, .event-overload-readout { font-size: 8px; font-weight: 700; letter-spacing: 0.08em; color: #bafaff; } .event-overload-readout { color: #ff8f88; text-transform: uppercase; white-space: nowrap; font-family: monospace; } .event-hp-bar { position: relative; height: 4px; background: rgba(7, 16, 24, 0.92); border: 1px solid rgba(84, 245, 255, 0.52); overflow: hidden; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.02), 0 0 10px rgba(0, 234, 255, 0.08); } .event-hp-bar::after { content: ''; position: absolute; inset: 1px; background: repeating-linear-gradient( 90deg, rgba(84, 245, 255, 0.18) 0 1px, transparent 1px 14px ); pointer-events: none; } .event-hp-fill { height: 100%; background: linear-gradient(90deg, #59f6ff 0%, #59f6ff 48%, #ff5050 66%, #ff3030 100%); box-shadow: 0 0 10px rgba(255, 45, 60, 0.45); transition: width 0.35s ease; } @media (max-width: 379px) { .event-hud { width: min(286px, calc(100vw - 24px)); max-width: 286px; min-height: 40px; } .event-status-badge { font-size: 5px; padding: 0 3px; } .event-boss-name { font-size: 8px; } .event-hp-text, .event-overload-readout { font-size: 7px; } .boss-hud__stack { width: 26px; flex-basis: 26px; } .boss-hud__avatar { height: 22px; } .boss-hud__level { min-height: 14px; font-size: 7px; } .boss-hud__main { min-height: 0; } } .event-log { position: fixed; left: 12px; right: 12px; bottom: calc(158px + env(safe-area-inset-bottom, 0px)); width: auto; min-height: 34px; max-height: 52px; overflow-y: auto; padding: 5px 10px; border-radius: 10px; background: rgba(4,4,12,0.84); border: 1px solid rgba(255,255,255,0.07); backdrop-filter: blur(14px); margin: 0; z-index: 13; box-shadow: 0 8px 20px rgba(0,0,0,0.28); pointer-events: auto; } .event-log-empty { color: #888; font-size: 11px; line-height: 1.5; } .event-log-item, .event-log-line { padding: 3px 0; border-bottom: 1px solid rgba(255,255,255,0.06); font-size: 10px; line-height: 1.2; } /* ═══ COMMAND PANEL — REDESIGNED ═══════════════════════════════ */ .event-actions { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; display: grid; grid-template-columns: 1fr 1fr; background: rgba(4, 4, 10, 0.98); border-top: 1px solid rgba(255,255,255,0.07); padding-bottom: env(safe-area-inset-bottom, 0px); pointer-events: auto; } .event-action { --col: #ff3636; --col-dim: rgba(255, 54, 54, 0.08); position: relative; overflow: hidden; min-height: 74px; padding: 12px 14px 10px; border: none; border-top: 2px solid var(--col); border-right: 1px solid rgba(255,255,255,0.05); background: linear-gradient(150deg, var(--col-dim) 0%, rgba(5, 5, 13, 0.99) 55%); color: #f3f3f3; text-align: left; cursor: pointer; display: flex; flex-direction: column; justify-content: flex-end; gap: 3px; -webkit-tap-highlight-color: transparent; transition: filter 0.12s ease; } .event-action:nth-child(even) { border-right: none; border-left: 1px solid rgba(255,255,255,0.05); } .event-action.attack { --col: #ff3636; --col-dim: rgba(255, 54, 54, 0.08); } .event-action.protocol { --col: #ffc830; --col-dim: rgba(255, 200, 48, 0.08); } .event-action.sync { --col: #5b70ff; --col-dim: rgba(91, 112, 255, 0.08); } .event-action.stabilize { --col: #2fd690; --col-dim: rgba(47, 214, 144, 0.08); } /* Code label top-left */ .event-action::before { content: 'A1'; position: absolute; top: 10px; left: 14px; font-size: 8px; letter-spacing: 2.4px; font-family: monospace; color: var(--col); opacity: 0.52; pointer-events: none; } .event-action.attack::before { content: 'A1'; } .event-action.protocol::before { content: 'P2'; } .event-action.sync::before { content: 'S3'; } .event-action.stabilize::before { content: 'D4'; } /* No ::after — replaced by spans */ .event-action::after { content: none; } /* SYNC gets an AUTO indicator — no question, instant */ .event-action.sync::after { content: '⚡ АВТО'; position: absolute; top: 9px; right: 10px; font-size: 7px; font-family: monospace; color: rgba(91, 112, 255, 0.8); letter-spacing: 0.5px; text-transform: uppercase; pointer-events: none; } /* Chinese character decoration */ .event-action-kanji { position: absolute; top: 6px; right: 12px; font-size: 32px; font-weight: 900; color: var(--col); opacity: 0.13; line-height: 1; pointer-events: none; user-select: none; font-family: 'Noto Serif CJK SC', 'Source Han Serif SC', serif; } .event-action-name { display: block; font-size: 13px; font-weight: 800; letter-spacing: 1.6px; text-transform: uppercase; color: #ffffff; line-height: 1; } .event-action-sub { display: block; font-size: 7px; letter-spacing: 1.4px; text-transform: uppercase; font-family: monospace; color: var(--col); opacity: 0.56; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .event-action:active { filter: brightness(0.82) !important; transform: scale(0.97) !important; transition: filter 0.05s ease, transform 0.05s ease !important; } .event-action.is-firing { animation: architectButtonFire 0.52s cubic-bezier(0.34,1.56,0.64,1) both; } .event-action.is-requesting { opacity: 0.65; animation: architectBtnRequestPulse 0.55s ease-in-out infinite alternate; pointer-events: none; } @keyframes architectBtnRequestPulse { from { opacity: 0.65; } to { opacity: 0.95; } } .event-action.attack.is-firing { border-top-color: #ff6060; background: rgba(255,54,54,0.14); } .event-action.protocol.is-firing { border-top-color: #ffe06a; background: rgba(255,200,48,0.14); } .event-action.sync.is-firing { border-top-color: #8a9fff; background: rgba(91,112,255,0.14); } .event-action.stabilize.is-firing { border-top-color: #5fffa8; background: rgba(47,214,144,0.14); } .event-question-modal { position: fixed; left: 12px; right: 12px; bottom: calc(176px + env(safe-area-inset-bottom, 0px)); z-index: 9; max-width: 520px; margin: 0 auto; padding: 14px; border-radius: 16px; background: rgba(8,8,20,0.98); border: 1px solid rgba(212,175,55,0.26); box-shadow: 0 18px 50px rgba(0,0,0,0.52); backdrop-filter: blur(6px); transform: translateZ(0); } .event-question-title { font-size: 15px; font-weight: 700; margin-bottom: 10px; line-height: 1.5; } .event-options { display: grid; gap: 8px; } .event-option-btn { border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.04); color: #fff; padding: 10px 12px; border-radius: 12px; text-align: left; cursor: pointer; } .event-explanation { position: fixed; left: 12px; right: 12px; bottom: calc(216px + env(safe-area-inset-bottom, 0px)); max-width: 520px; max-height: 54px; overflow-y: auto; margin: 0 auto; padding: 7px 9px; border-radius: 10px; background: rgba(212,175,55,0.12); border: 1px solid rgba(212,175,55,0.22); color: #e7d39a; font-size: 10px; line-height: 1.3; z-index: 12; backdrop-filter: blur(4px); box-shadow: 0 10px 28px rgba(0,0,0,0.24); } .event-loading { opacity: 0.6; } .event-action[disabled] { opacity: 0.55; cursor: not-allowed; filter: grayscale(0.15); } .event-lobby-card { position: fixed; left: 12px; right: 12px; bottom: calc(10px + env(safe-area-inset-bottom, 0px)); max-height: 62vh; overflow-y: auto; padding: 14px 16px; border-radius: 18px; border: 1px solid rgba(212,175,55,0.18); background: rgba(6, 6, 16, 0.96); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); z-index: 4; transform: translateZ(0); } .event-overlay.event-terminal .event-lobby-card { margin-top: 0; } .event-lobby-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; } .event-lobby-kicker { font-size: 10px; letter-spacing: 1.8px; color: rgba(212,175,55,0.8); font-family: monospace; } .event-lobby-status { margin-top: 4px; font-size: 16px; font-weight: 700; color: #fff; } .event-lobby-count { font-size: 13px; color: rgba(212,175,55,0.92); font-family: monospace; } .event-lobby-reward, .event-lobby-members { margin-top: 14px; } .event-lobby-label { font-size: 10px; letter-spacing: 1.6px; color: #777; font-family: monospace; } .event-lobby-value { margin-top: 6px; font-size: 15px; line-height: 1.5; color: #f3e7c2; font-weight: 600; } .event-team-list { margin-top: 8px; display: flex; flex-direction: column; gap: 8px; } .event-team-member { padding: 10px 12px; border-radius: 12px; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.05); font-size: 14px; color: #e8e8e8; } .event-team-empty { padding: 10px 12px; border-radius: 12px; background: rgba(255,255,255,0.02); border: 1px dashed rgba(255,255,255,0.08); font-size: 13px; color: #888; } .event-lobby-actions { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; } .event-lobby-btn { border: none; border-radius: 12px; padding: 11px 16px; font-size: 13px; font-weight: 700; cursor: pointer; transition: transform 0.15s ease, opacity 0.15s ease, background 0.15s ease; } .event-lobby-btn:active { transform: scale(0.98); } .event-lobby-btn.join { background: linear-gradient(135deg, #8b1010, #c62828); color: #fff; } .event-lobby-btn.leave { background: rgba(255,255,255,0.08); color: #ddd; } .event-lobby-btn.start { background: linear-gradient(135deg, #8a6820, var(--gold)); color: #161616; } .event-option-btn { width: 100%; border: 1px solid rgba(212,175,55,0.18); background: rgba(255,255,255,0.04); color: #f0f0f0; border-radius: 12px; padding: 12px 14px; text-align: left; font-size: 14px; line-height: 1.5; cursor: pointer; transition: background 0.15s ease, transform 0.15s ease, border-color 0.15s ease; } .event-option-btn:hover { background: rgba(212,175,55,0.08); border-color: rgba(212,175,55,0.32); } .event-option-btn:active { transform: scale(0.99); } /* ===== Telegram iOS compatibility layer ===== */ html.tg-ios, body.tg-ios { width: 100%; min-height: var(--app-height, 100dvh); overscroll-behavior: none; -webkit-text-size-adjust: 100%; } body.tg-ios { position: relative; touch-action: manipulation; } body.tg-ios .page { padding-bottom: calc(10px + var(--tg-safe-bottom)); } body.tg-ios .bottom-nav { height: calc(var(--nav-h) + var(--tg-safe-bottom)); padding-bottom: var(--tg-safe-bottom); transform: translateZ(0); will-change: transform; } body.tg-ios .event-overlay, body.tg-ios .raid-overlay, body.tg-ios .question-modal, body.tg-ios .contract-modal, body.tg-ios .profile-showcase-modal, body.tg-ios .admin-dossier-modal, body.tg-ios #diaryStarsPopup { height: var(--app-height, 100dvh); min-height: var(--app-height, 100dvh); overflow: hidden; transform: translateZ(0); } .admin-presence-card.manual::before { background: linear-gradient(180deg, rgba(96,180,212,0.9), transparent); } .admin-presence-card.manual .admin-presence-icon { color: color-mix(in srgb, #60b4d4 18%, transparent); } body.tg-ios .question-modal { padding: calc(20px + var(--tg-safe-top)) calc(20px + var(--tg-safe-right)) calc(20px + var(--tg-safe-bottom)) calc(20px + var(--tg-safe-left)); } body.tg-ios .question-box { max-height: calc(var(--app-height, 100dvh) - 40px - var(--tg-safe-top) - var(--tg-safe-bottom)); overflow-y: auto; -webkit-overflow-scrolling: touch; } body.tg-ios .raid-content { max-height: calc(var(--app-height, 100dvh) - 32px - var(--tg-safe-top) - var(--tg-safe-bottom)); overflow-y: auto; -webkit-overflow-scrolling: touch; } body.tg-ios .event-shell { height: var(--app-height, 100dvh); min-height: var(--app-height, 100dvh); overflow: hidden; padding-top: calc(14px + var(--tg-safe-top)); transform: translateZ(0); } body.tg-ios .event-topbar { top: calc(14px + var(--tg-safe-top)); left: calc(12px + var(--tg-safe-left)); right: calc(12px + var(--tg-safe-right)); } body.tg-ios .event-hero { width: var(--app-width, 100vw); height: var(--app-height, 100dvh); min-height: var(--app-height, 100dvh); transform: translateZ(0); } body.tg-ios .event-hero img, body.tg-ios .event-hero-video { top: calc(132px + var(--tg-safe-top)); width: var(--app-width, 100vw); height: calc(var(--app-height, 100dvh) - 132px - var(--tg-safe-top)); max-width: none; max-height: none; } body.tg-ios .event-hud { top: calc(62px + var(--tg-safe-top)); left: calc(12px + var(--tg-safe-left)); width: min(330px, calc(100vw - 24px - var(--tg-safe-left) - var(--tg-safe-right))); } body.tg-ios .event-final-timer { top: calc(110px + var(--tg-safe-top)); right: calc(12px + var(--tg-safe-right)); } body.tg-ios .event-phase-warning { top: calc(146px + var(--tg-safe-top)); max-width: calc(100vw - 24px - var(--tg-safe-left) - var(--tg-safe-right)); } .event-hero { z-index: 1; } .event-topbar { z-index: 10; } .event-hud { z-index: 11; } .event-log { z-index: 19; } .event-actions { z-index: 20; } .event-question-modal { z-index: 30; color: rgba(255, 255, 255, 0.94) !important; opacity: 1 !important; mix-blend-mode: normal !important; -webkit-text-fill-color: rgba(255, 255, 255, 0.94); overscroll-behavior: contain; } body.tg-ios .event-actions { left: 0; right: 0; bottom: 0; padding-bottom: var(--tg-safe-bottom); padding-left: var(--tg-safe-left); padding-right: var(--tg-safe-right); } body.tg-ios .event-log { left: calc(12px + var(--tg-safe-left)); right: calc(12px + var(--tg-safe-right)); bottom: calc(158px + var(--tg-safe-bottom)); } body.tg-ios .event-question-modal { left: calc(12px + var(--tg-safe-left)); right: calc(12px + var(--tg-safe-right)); bottom: calc(176px + var(--tg-safe-bottom)); max-height: max(220px, min(calc(var(--app-height, 100dvh) - 238px - var(--tg-safe-top) - var(--tg-safe-bottom)), 420px)); overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; transform: translateZ(0); } body.tg-ios input, body.tg-ios textarea, body.tg-ios select { font-size: 16px; } body.tg-ios .profile-showcase-modal { padding: calc(16px + var(--tg-safe-top)) calc(12px + var(--tg-safe-right)) calc(18px + var(--tg-safe-bottom)) calc(12px + var(--tg-safe-left)); } body.tg-ios .profile-showcase-panel { max-height: calc(var(--app-height, 100dvh) - 34px - var(--tg-safe-top) - var(--tg-safe-bottom)); } body.tg-ios .admin-dossier-modal { padding: calc(18px + var(--tg-safe-top)) calc(12px + var(--tg-safe-right)) calc(18px + var(--tg-safe-bottom)) calc(12px + var(--tg-safe-left)); } body.tg-ios .admin-dossier-sheet { max-height: calc(var(--app-height, 100dvh) - 36px - var(--tg-safe-top) - var(--tg-safe-bottom)); } body.tg-ios .contract-modal { padding: calc(12px + var(--tg-safe-top)) var(--tg-safe-right) 0 var(--tg-safe-left); } body.tg-ios .contract-modal-sheet { max-height: calc(var(--app-height, 100dvh) - 12px - var(--tg-safe-top)); padding-bottom: calc(24px + var(--tg-safe-bottom)); } body.tg-ios #diaryStarsPopup { padding: calc(12px + var(--tg-safe-top)) var(--tg-safe-right) 0 var(--tg-safe-left); } body.tg-ios #diaryStarsPopup > div { max-height: calc(var(--app-height, 100dvh) - 12px - var(--tg-safe-top)); overflow-y: auto; -webkit-overflow-scrolling: touch; padding-bottom: calc(24px + var(--tg-safe-bottom)) !important; } body.tg-ios .event-lobby-card { bottom: calc(10px + var(--tg-safe-bottom)); left: calc(12px + var(--tg-safe-left)); right: calc(12px + var(--tg-safe-right)); } body.tg-ios .event-overlay.event-terminal .event-lobby-card.event-result-card { left: 0; right: 0; bottom: 0; padding-bottom: var(--tg-safe-bottom); } @media (max-height: 760px) { body.tg-ios .event-question-modal { bottom: calc(162px + var(--tg-safe-bottom)); max-height: min(48dvh, 360px); } } @media (max-height: 680px) { body.tg-ios .event-question-modal { bottom: calc(154px + var(--tg-safe-bottom)); max-height: 46dvh; } } .event-question-title { color: rgba(255, 255, 255, 0.96) !important; -webkit-text-fill-color: rgba(255, 255, 255, 0.96); opacity: 1 !important; font-weight: 700; text-shadow: 0 0 10px rgba(255, 80, 60, 0.22); mix-blend-mode: normal !important; filter: none !important; } .event-question-title *, .event-question-modal strong, .event-question-modal span { color: inherit !important; -webkit-text-fill-color: inherit; opacity: 1 !important; } .event-option-btn { color: rgba(255, 255, 255, 0.92) !important; -webkit-text-fill-color: rgba(255, 255, 255, 0.92); } .event-option-btn:disabled { cursor: default; opacity: 0.72; } .event-option-btn.is-selected { opacity: 1; border-color: rgba(212,175,55,0.55); background: rgba(212,175,55,0.12); } .event-option-btn.is-correct { border-color: rgba(70, 220, 130, 0.62); background: rgba(70, 220, 130, 0.12); } .event-option-btn.is-wrong { border-color: rgba(255, 70, 70, 0.68); background: rgba(255, 70, 70, 0.13); } .event-explanation, .event-answer-feedback { color: #f0dca8 !important; -webkit-text-fill-color: #f0dca8; opacity: 1 !important; } .event-answer-feedback, .event-question-modal .event-explanation { position: static !important; margin: 10px 0 0; padding: 10px 12px; border-radius: 12px; background: var(--gold-dim); border: 1px solid rgba(212,175,55,0.24); color: #f0dca8 !important; -webkit-text-fill-color: #f0dca8; font-size: 12px; line-height: 1.5; max-height: 120px; overflow-y: auto; -webkit-overflow-scrolling: touch; } .event-action-result { margin: 12px 0 0 !important; padding: 12px 14px !important; border-radius: 14px !important; background: linear-gradient(135deg, rgba(255, 54, 54, 0.16), rgba(212, 175, 55, 0.08)), rgba(8, 8, 14, 0.92) !important; border: 1px solid rgba(212, 175, 55, 0.38) !important; box-shadow: 0 0 22px rgba(232, 34, 0, 0.18), inset 0 0 18px rgba(255, 255, 255, 0.03); animation: eventActionResultIn 0.22s ease-out both; } .event-action-result.is-success { border-color: rgba(212, 175, 55, 0.48) !important; } .event-action-result.is-fail { background: linear-gradient(135deg, rgba(255, 54, 54, 0.22), rgba(80, 0, 0, 0.18)), rgba(8, 8, 14, 0.94) !important; border-color: rgba(255, 74, 74, 0.55) !important; } .event-action-result-title { color: #f6d778; font-family: monospace; font-size: 10px; font-weight: 800; letter-spacing: 1.4px; text-transform: uppercase; } .event-action-result-value { margin-top: 4px; color: #fff; font-size: 24px; font-weight: 900; letter-spacing: 0.5px; text-shadow: 0 0 14px rgba(232, 34, 0, 0.46); } .event-action-result-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; } .event-action-result-meta span { padding: 3px 7px; border-radius: 999px; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.72); font-family: monospace; font-size: 9px; } @keyframes eventActionResultIn { from { opacity: 0; transform: translateY(8px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } } @media (max-height: 720px) { body.tg-ios .event-action { min-height: 62px; padding: 10px 12px 8px; } body.tg-ios .event-action-kanji { font-size: 26px; } body.tg-ios .event-action-name { font-size: 12px; } body.tg-ios .event-log { bottom: calc(136px + var(--tg-safe-bottom)); max-height: 40px; } body.tg-ios .event-question-modal { bottom: calc(148px + var(--tg-safe-bottom)); } } /* Theme polish layer: readable cards, history, catalog and light surfaces. */ body.theme-nw-light .card-inner, body.theme-nw-light .my-rank-card, body.theme-nw-light .profile-card, body.theme-nw-light .shop-item, body.theme-nw-light .inventory-item, body.theme-nw-light .schedule-item, body.theme-nw-light .rules-row, body.theme-nw-light #myImplantsPage, body.theme-nw-light #implants-catalog, body.theme-genshin-light .card-inner, body.theme-genshin-light .my-rank-card, body.theme-genshin-light .profile-card, body.theme-genshin-light .shop-item, body.theme-genshin-light .inventory-item, body.theme-genshin-light .schedule-item, body.theme-genshin-light .rules-row, body.theme-genshin-light #myCardsContent, body.theme-genshin-light #cards-tab { border-color: rgba(55, 45, 35, 0.10) !important; } body.theme-nw-light .schedule-item, body.theme-nw-light .shop-item, body.theme-nw-light .inventory-item, body.theme-nw-light .rules-row, body.theme-nw-light .profile-card { background: rgba(255, 255, 255, 0.38); border-bottom-color: rgba(70,45,45,0.09); } body.theme-genshin-light .schedule-item, body.theme-genshin-light .shop-item, body.theme-genshin-light .inventory-item, body.theme-genshin-light .rules-row, body.theme-genshin-light .profile-card { background: rgba(255, 250, 238, 0.54); border-bottom-color: rgba(138,104,32,0.12); } body.theme-nw-light .shop-command-card, body.theme-nw-light .shop-featured-item, body.theme-nw-light .shop-grid-modern .shop-item { background: radial-gradient(circle at 92% 0%, rgba(153,51,51,0.08), transparent 34%), linear-gradient(135deg, rgba(255,255,255,0.72), rgba(245,238,228,0.58)); border-color: rgba(100,64,50,0.16); box-shadow: 0 12px 28px rgba(90,60,45,0.10); } body.theme-genshin-light .shop-command-card, body.theme-genshin-light .shop-featured-item, body.theme-genshin-light .shop-grid-modern .shop-item { background: radial-gradient(circle at 92% 0%, rgba(219,177,101,0.16), transparent 34%), linear-gradient(135deg, rgba(255,250,238,0.78), rgba(238,229,211,0.62)); border-color: rgba(138,104,32,0.16); box-shadow: 0 12px 28px rgba(96,68,24,0.10); } body.theme-genshin-light #page-shop .shop-command-card { background: radial-gradient(circle at 14% 0%, rgba(255,255,255,0.72), transparent 34%), radial-gradient(circle at 94% 8%, rgba(219,177,101,0.22), transparent 42%), linear-gradient(145deg, rgba(255,252,242,0.88), rgba(239,228,207,0.74)); border-color: rgba(138,104,32,0.22); box-shadow: inset 0 1px 0 rgba(255,255,255,0.72), 0 12px 26px rgba(94,67,25,0.10); } body.theme-genshin-light #page-shop .shop-command-bg { color: rgba(138,104,32,0.07); } body.theme-genshin-light #page-shop .shop-command-kicker, body.theme-genshin-light #page-shop .shop-featured-kicker, body.theme-genshin-light #page-shop .shop-cat-kicker { color: #9b6b18; letter-spacing: 1.4px; } body.theme-genshin-light #page-shop .shop-command-stats div { background: rgba(255,255,255,0.52); border-color: rgba(138,104,32,0.16); } body.theme-genshin-light #page-shop .shop-featured-item { background: radial-gradient(circle at 12% 50%, rgba(219,177,101,0.16), transparent 44%), linear-gradient(90deg, rgba(255,252,242,0.82), rgba(236,226,207,0.70)); border-color: rgba(138,104,32,0.22); box-shadow: 0 10px 22px rgba(96,68,24,0.08); } body.theme-genshin-light #page-shop .shop-featured-icon, body.theme-genshin-light #page-shop .shop-grid-modern .shop-item-icon { background: radial-gradient(circle at 50% 20%, rgba(255,255,255,0.82), transparent 42%), linear-gradient(145deg, rgba(255,250,238,0.92), rgba(232,216,181,0.58)); border-color: rgba(138,104,32,0.20); box-shadow: inset 0 1px 0 rgba(255,255,255,0.76); } body.theme-genshin-light #page-shop .shop-grid-modern .shop-item { background: radial-gradient(circle at 0% 0%, rgba(219,177,101,0.14), transparent 44%), linear-gradient(145deg, rgba(255,252,242,0.80), rgba(239,229,210,0.66)); border-color: rgba(138,104,32,0.16); box-shadow: inset 0 1px 0 rgba(255,255,255,0.60), 0 8px 18px rgba(96,68,24,0.07); } body.theme-genshin-light #page-shop .shop-grid-modern .shop-item::before { background: linear-gradient(90deg, rgba(219,177,101,0.18), transparent 40%); } body.theme-genshin-light #page-shop .shop-item-tier, body.theme-genshin-light #page-shop .shop-item-hint { color: #7a5010; background: rgba(219,177,101,0.13); border-color: rgba(138,104,32,0.18); } body.theme-genshin-light #page-shop .shop-item-state, body.theme-genshin-light #page-shop .shop-item-limit { color: #786b56; } body.theme-genshin-light #page-shop .shop-item-price { color: #8b6419; } body.theme-nw-light .shop-command-stats div, body.theme-genshin-light .shop-command-stats div, body.theme-nw-light .shop-featured-icon, body.theme-genshin-light .shop-featured-icon { background: rgba(255,255,255,0.44); border-color: rgba(120,80,50,0.14); } body.theme-nw-light .shop-command-title, body.theme-nw-light .shop-cat strong, body.theme-nw-light .shop-featured-name, body.theme-genshin-light .shop-command-title, body.theme-genshin-light .shop-cat strong, body.theme-genshin-light .shop-featured-name { color: var(--text) !important; } body.theme-nw-light .shop-command-sub, body.theme-nw-light .shop-cat em, body.theme-nw-light .shop-featured-desc, body.theme-genshin-light .shop-command-sub, body.theme-genshin-light .shop-cat em, body.theme-genshin-light .shop-featured-desc { color: var(--text2) !important; } body.theme-nw-light .schedule-subject, body.theme-nw-light .rules-title, body.theme-nw-light .inventory-name, body.theme-nw-light .prize-result-name, body.theme-nw-light .profile-card-name, body.theme-genshin-light .schedule-subject, body.theme-genshin-light .rules-title, body.theme-genshin-light .inventory-name, body.theme-genshin-light .prize-result-name, body.theme-genshin-light .profile-card-name, body.theme-admin-light .schedule-subject, body.theme-admin-light .rules-title, body.theme-admin-light .inventory-name, body.theme-admin-light .prize-result-name, body.theme-admin-light .profile-card-name { color: var(--text) !important; } body.theme-nw-light .schedule-location, body.theme-nw-light .rules-desc, body.theme-nw-light .inventory-date, body.theme-nw-light .prize-result-desc, body.theme-nw-light .profile-card-sub, body.theme-genshin-light .schedule-location, body.theme-genshin-light .rules-desc, body.theme-genshin-light .inventory-date, body.theme-genshin-light .prize-result-desc, body.theme-genshin-light .profile-card-sub, body.theme-admin-light .schedule-location, body.theme-admin-light .rules-desc, body.theme-admin-light .inventory-date, body.theme-admin-light .prize-result-desc, body.theme-admin-light .profile-card-sub { color: var(--text2) !important; } body.theme-nw-light .profile-status-line, body.theme-nw-light .profile-showcase, body.theme-nw-light .profile-stat-grid div { background: rgba(255,255,255,0.42); border-color: rgba(90,60,50,0.13); } body.theme-genshin-light .profile-status-line, body.theme-genshin-light .profile-showcase, body.theme-genshin-light .profile-stat-grid div { background: rgba(255,250,238,0.58); border-color: rgba(138,104,32,0.16); } body.theme-nw-light .profile-status-line, body.theme-nw-light .profile-showcase-copy em, body.theme-nw-light .profile-stat-grid strong { color: #8a4a16; } body.theme-genshin-light .profile-status-line, body.theme-genshin-light .profile-showcase-copy em, body.theme-genshin-light .profile-stat-grid strong { color: #8b6419; } body.theme-nw-light .profile-badge-rank { background: rgba(138,74,22,0.12); border-color: rgba(138,74,22,0.30); color: #8a4a16; } body.theme-nw-light .profile-badge-place { background: rgba(0,0,0,0.06); border-color: rgba(0,0,0,0.12); color: var(--text2); } body.theme-nw-light .profile-badge-path { background: rgba(140,20,20,0.08); border-color: rgba(140,20,20,0.20); color: #a83030; } body.theme-nw-light .profile-showcase-copy span, body.theme-nw-light .profile-stat-grid span, body.theme-nw-light .profile-showcase-option-copy span, body.theme-genshin-light .profile-showcase-copy span, body.theme-genshin-light .profile-stat-grid span, body.theme-genshin-light .profile-showcase-option-copy span { color: var(--text2) !important; } body.theme-nw-light .more-stat-cell, body.theme-genshin-light .more-stat-cell { background: rgba(255,255,255,0.42); border-color: rgba(120,80,30,0.13); } body.theme-nw-light .more-stat-lbl, body.theme-genshin-light .more-stat-lbl { color: var(--text2); } body.theme-nw-light .profile-showcase-panel { background: radial-gradient(circle at 0% 0%, rgba(153,51,51,0.08), transparent 38%), rgba(246,241,232,0.96); border-color: rgba(90,60,50,0.16); } body.theme-genshin-light .profile-showcase-panel { background: radial-gradient(circle at 0% 0%, rgba(219,177,101,0.14), transparent 38%), rgba(255,250,238,0.96); border-color: rgba(138,104,32,0.18); } body.theme-nw-light .profile-showcase-option, body.theme-genshin-light .profile-showcase-option { background: rgba(255,255,255,0.50); border-color: rgba(90,60,50,0.12); } body.theme-nw-light .alpha-boss-block { background: rgba(255,255,255,0.46); border-color: rgba(90,60,50,0.22); } body.theme-nw-light .alpha-boss-raid-btn { background: rgba(180,20,20,0.08); border-top-color: var(--red-dim); color: #a83030; } body.theme-genshin-light .alpha-boss-block { background: rgba(255,250,238,0.70); border-color: rgba(138,104,32,0.24); } body.theme-genshin-light .alpha-boss-raid-btn { background: rgba(180,20,20,0.07); border-top-color: rgba(180,20,20,0.12); color: #a83030; } body.theme-nw-light .lb-item { background: radial-gradient(circle at 0% 50%, rgba(153,51,51,0.06), transparent 38%), rgba(255,255,255,0.42); border-color: rgba(90,60,50,0.10); } body.theme-genshin-light .lb-item { background: radial-gradient(circle at 0% 50%, rgba(219,177,101,0.10), transparent 38%), rgba(255,250,238,0.58); border-color: rgba(138,104,32,0.13); } body.theme-nw-light .lb-subline, body.theme-nw-light .diary-rank-sub, body.theme-genshin-light .lb-subline, body.theme-genshin-light .diary-rank-sub { color: var(--text2); } body.theme-nw-light .diary-rank-card { background: radial-gradient(circle at 0% 50%, rgba(153,51,51,0.06), transparent 38%), rgba(255,255,255,0.42); border-color: rgba(90,60,50,0.10); } body.theme-genshin-light .diary-rank-card { background: radial-gradient(circle at 0% 50%, rgba(219,177,101,0.10), transparent 38%), rgba(255,250,238,0.58); border-color: rgba(138,104,32,0.13); } body.theme-nw-light .subtab { color: #5b524c; background: rgba(255,255,255,0.52); border-color: rgba(90,60,50,0.12); } body.theme-nw-light .subtab.active { color: #7f2b2b; background: rgba(153,51,51,0.10); border-color: rgba(153,51,51,0.24); } body.theme-genshin-light .subtab { color: #665b46; background: rgba(255,250,238,0.62); border-color: rgba(138,104,32,0.14); } body.theme-genshin-light .subtab.active { color: #6f4e12; background: rgba(219,177,101,0.16); border-color: rgba(138,104,32,0.28); } body.theme-genshin-light .casino-balance, body.theme-genshin-light .prize-result { background: linear-gradient(145deg, rgba(255,250,238,0.84), rgba(241,232,214,0.74)); border-color: rgba(138,104,32,0.18); box-shadow: 0 10px 24px rgba(90,60,20,0.06); } body.theme-genshin-light .case-card { background: linear-gradient(145deg, rgba(255,250,238,0.78), rgba(238,228,207,0.72)); border-color: rgba(138,104,32,0.18); box-shadow: inset 0 1px 0 rgba(255,255,255,0.72), 0 8px 18px rgba(90,60,20,0.045); } body.theme-genshin-light .case-card.gold { border-color: rgba(138,104,32,0.30); } body.theme-genshin-light .case-card.purple { border-color: rgba(98,86,135,0.22); } body.theme-genshin-light .case-card.black { border-color: rgba(112,72,56,0.22); } body.theme-genshin-light .case-cn.g, body.theme-genshin-light .case-pct.g { color: #7a5010; } body.theme-genshin-light .case-cn.p, body.theme-genshin-light .case-pct.p { color: #5d5882; } body.theme-genshin-light .case-cn.b, body.theme-genshin-light .case-pct.b { color: #75433a; } body.theme-genshin-light .roulette-track { background: linear-gradient(180deg, rgba(255,250,238,0.88), rgba(236,226,207,0.84)); border-color: rgba(138,104,32,0.22); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.58), 0 10px 28px rgba(90,60,20,0.08); } body.theme-genshin-light .roulette-track::before { background: linear-gradient(to right, rgba(236,229,216,0.98), rgba(236,229,216,0)); } body.theme-genshin-light .roulette-track::after { background: linear-gradient(to left, rgba(236,229,216,0.98), rgba(236,229,216,0)); } body.theme-genshin-light .roulette-item { background: linear-gradient(145deg, rgba(255,252,242,0.94), rgba(236,226,207,0.92)); border-color: rgba(138,104,32,0.16); color: #3d4555; } body.theme-genshin-light .roulette-item-gold { border-color: rgba(138,104,32,0.28); background: radial-gradient(circle at 50% 10%, rgba(219,177,101,0.18), transparent 48%), linear-gradient(145deg, rgba(255,252,242,0.95), rgba(236,226,207,0.92)); } body.theme-genshin-light .roulette-item-purple { border-color: rgba(98,86,135,0.26); background: radial-gradient(circle at 50% 10%, rgba(98,86,135,0.14), transparent 50%), linear-gradient(145deg, rgba(248,246,255,0.95), rgba(226,222,238,0.92)); } body.theme-genshin-light .roulette-item-black { border-color: rgba(112,72,56,0.28); background: radial-gradient(circle at 50% 10%, rgba(140,52,42,0.14), transparent 52%), linear-gradient(145deg, rgba(255,246,239,0.94), rgba(231,218,210,0.92)); } body.theme-genshin-light .roulette-item-name { color: #5f6674; } body.theme-genshin-light .roulette-case-label { color: rgba(70,64,52,0.54); } body.theme-genshin-light .roulette-item.opened { background: linear-gradient(145deg, rgba(255,247,218,0.98), rgba(232,211,161,0.92)); } body.theme-genshin-light .bonus-banner, body.theme-genshin-light .shop-balance span, body.theme-genshin-light .shop-item-buy, body.theme-genshin-light .inv-btn-gift { color: #7a5010; } /* Unified case edge glow: rarity changes the prize, not the frame color. */ body:not(.theme-admin) .case-card.gold, body:not(.theme-admin) .case-card.purple, body:not(.theme-admin) .case-card.black { border-color: rgba(180,20,20,0.34) !important; } body:not(.theme-admin) .case-card.gold::before, body:not(.theme-admin) .case-card.purple::before, body:not(.theme-admin) .case-card.black::before { background: linear-gradient(90deg, transparent, rgba(180,20,20,0.76), transparent) !important; } body:not(.theme-admin) .roulette-item-gold, body:not(.theme-admin) .roulette-item-purple, body:not(.theme-admin) .roulette-item-black { border-color: rgba(180,20,20,0.38) !important; } body:not(.theme-admin) .roulette-track-gold, body:not(.theme-admin) .roulette-track-purple, body:not(.theme-admin) .roulette-track-black { border-color: rgba(180,20,20,0.66) !important; box-shadow: 0 0 18px rgba(180,20,20,0.16), inset 0 0 18px rgba(180,20,20,0.08) !important; animation: none !important; } body:not(.theme-admin) .roulette-item.winner, body:not(.theme-admin) .roulette-item.winner-purple, body:not(.theme-admin) .roulette-item.winner-black { border-color: rgba(255,55,55,0.82) !important; box-shadow: 0 0 24px rgba(180,20,20,0.36), inset 0 0 14px rgba(180,20,20,0.12) !important; } body:not(.theme-admin) .roulette-item.opened, body:not(.theme-admin) .roulette-item.opened-purple, body:not(.theme-admin) .roulette-item.opened-black { border-color: rgba(255,55,55,0.78) !important; box-shadow: 0 0 24px rgba(180,20,20,0.28) !important; } body.theme-admin .case-card.gold, body.theme-admin .case-card.purple, body.theme-admin .case-card.black { border-color: rgba(0,212,255,0.34) !important; } body.theme-admin .case-card.gold::before, body.theme-admin .case-card.purple::before, body.theme-admin .case-card.black::before { background: linear-gradient(90deg, transparent, rgba(0,212,255,0.82), transparent) !important; } body.theme-admin .roulette-item-gold, body.theme-admin .roulette-item-purple, body.theme-admin .roulette-item-black { border-color: rgba(0,212,255,0.38) !important; } body.theme-admin .roulette-track-gold, body.theme-admin .roulette-track-purple, body.theme-admin .roulette-track-black { border-color: rgba(0,212,255,0.68) !important; box-shadow: 0 0 18px rgba(0,212,255,0.18), inset 0 0 18px rgba(0,212,255,0.08) !important; animation: none !important; } body.theme-admin .roulette-item.winner, body.theme-admin .roulette-item.winner-purple, body.theme-admin .roulette-item.winner-black { border-color: rgba(0,212,255,0.86) !important; box-shadow: 0 0 24px rgba(0,212,255,0.34), inset 0 0 14px rgba(0,212,255,0.12) !important; } body.theme-nw-light .empty-state, body.theme-genshin-light .empty-state { color: var(--text3); } body.theme-nw-light #casinoHistoryList .schedule-item, body.theme-genshin-light #casinoHistoryList .schedule-item, body.theme-nw-light #casinoInventoryList .inventory-item, body.theme-genshin-light #casinoInventoryList .inventory-item { border-radius: 10px; margin: 0 12px 8px; border: 1px solid rgba(70,45,45,0.09); box-shadow: 0 8px 18px rgba(70,45,35,0.04); } body.theme-genshin-light #casinoHistoryList .schedule-item, body.theme-genshin-light #casinoInventoryList .inventory-item { border-color: rgba(138,104,32,0.13); box-shadow: 0 8px 18px rgba(90,60,20,0.045); } body.theme-nw-light #myImplantsPage [style*="color:var(--text)"], body.theme-nw-light #implants-catalog [style*="color:var(--text)"], body.theme-nw-light #myImplantsPage [style*="color: var(--text)"], body.theme-nw-light #implants-catalog [style*="color: var(--text)"], body.theme-genshin-light #myCardsContent [style*="color:var(--text)"], body.theme-genshin-light #myCardsContent [style*="color: var(--text)"] { color: var(--text) !important; } body.theme-nw-light #myImplantsPage [style*="color:var(--text2)"], body.theme-nw-light #implants-catalog [style*="color:var(--text2)"], body.theme-nw-light #myImplantsPage [style*="color: var(--text2)"], body.theme-nw-light #implants-catalog [style*="color: var(--text2)"], body.theme-genshin-light #myCardsContent [style*="color:var(--text2)"], body.theme-genshin-light #myCardsContent [style*="color: var(--text2)"] { color: var(--text2) !important; } body.theme-genshin .home-event-card { background: linear-gradient(135deg, rgba(219,177,101,0.08), rgba(255,255,255,0.025)), rgba(255,255,255,0.026) !important; } body.theme-genshin-light .home-event-card { background: linear-gradient(135deg, rgba(219,177,101,0.12), rgba(255,250,238,0.78)), rgba(255,250,238,0.72) !important; border-color: rgba(138,104,32,0.20) !important; } body.theme-genshin-light .home-event-card-kicker { color: #7a5010 !important; } body.theme-genshin-dark .home-event-card { background: linear-gradient(135deg, rgba(219,177,101,0.08), rgba(26,22,40,0.70)), rgba(20,16,32,0.68) !important; border-color: rgba(219,177,101,0.14) !important; } body.theme-genshin-dark .home-event-card-kicker { color: rgba(219,177,101,0.68) !important; } /* Genshin Dark — gold-on-deep-purple casino/case cards, mirroring the warm cream/gold light variant above (was previously unstyled, falling back to the default NetWatch-dark look). */ body.theme-genshin-dark .casino-balance, body.theme-genshin-dark .prize-result { background: linear-gradient(145deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02)); border-color: rgba(219,177,101,0.16); } body.theme-genshin-dark .case-card { background: linear-gradient(145deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02)); border-color: rgba(219,177,101,0.16); } body.theme-genshin-dark .case-card.gold { border-color: rgba(219,177,101,0.32); } body.theme-genshin-dark .case-card.purple { border-color: rgba(155,89,182,0.3); } body.theme-genshin-dark .case-card.black { border-color: rgba(200,121,65,0.28); } body.theme-genshin-dark .case-cn.g, body.theme-genshin-dark .case-pct.g { color: #dbb165; } body.theme-genshin-dark .case-cn.p, body.theme-genshin-dark .case-pct.p { color: #c98bff; } body.theme-genshin-dark .schedule-item, body.theme-genshin-dark .shop-item, body.theme-genshin-dark .inventory-item, body.theme-genshin-dark .rules-row { border-bottom-color: rgba(219,177,101,0.07); } /* UX foundation: list surfaces and tactile controls. */ .card-inner { border-radius: var(--card-radius); } .schedule-item, .shop-item, .inventory-item, .rules-row { transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease; } .schedule-item:hover, .shop-item:hover, .inventory-item:hover, .rules-row:hover { background: color-mix(in srgb, var(--bg3) 72%, transparent); } .shop-item-buy, .inv-btn, .subtab, .btn-primary, .btn-gold { transition: transform var(--transition-fast) var(--ease-standard), opacity var(--transition-fast) var(--ease-standard), border-color var(--transition-fast) var(--ease-standard), background var(--transition-fast) var(--ease-standard), box-shadow var(--transition-fast) var(--ease-standard); } .shop-item-buy:active, .inv-btn:active, .subtab:active, .btn-primary:active, .btn-gold:active { transform: translateY(1px) scale(0.99); } .shop-item-buy:disabled, .btn-primary:disabled, .btn-gold:disabled, .event-action[disabled] { filter: grayscale(0.18); } .prize-result, .casino-balance { box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 10px 28px rgba(0,0,0,0.10); } body.theme-nw-light .empty-state, body.theme-genshin-light .empty-state { background: radial-gradient(circle at 50% 0%, rgba(138,104,32,0.10), transparent 54%), rgba(255,255,255,0.54); border-color: rgba(90,65,45,0.16); box-shadow: 0 10px 26px rgba(80,50,30,0.045); } body.theme-genshin-light .empty-state { background: radial-gradient(circle at 50% 0%, rgba(219,177,101,0.14), transparent 54%), rgba(255,250,238,0.62); border-color: rgba(138,104,32,0.18); } body.theme-genshin-dark .empty-state { background: radial-gradient(circle at 50% 0%, rgba(219,177,101,0.08), transparent 54%), rgba(255,255,255,0.032); border-color: rgba(219,177,101,0.12); } /* Catalog polish: implants and Genshin cards should feel like one system. */ #implants-catalog .card, #cards-tab .card { border-radius: 16px; border-color: color-mix(in srgb, var(--border) 72%, var(--gold-border)); background: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--red-dim) 42%, transparent), transparent 52%), linear-gradient(180deg, color-mix(in srgb, var(--bg2) 92%, transparent), color-mix(in srgb, var(--bg) 88%, transparent)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 14px 34px rgba(0,0,0,0.14); } #implants-catalog .card-inner, #cards-tab .card-inner { padding: 14px; } #implants-catalog img[style*="width:160px"], #implants-catalog img[style*="width:180px"], #cards-tab img[style*="width:160px"], #cards-tab img[style*="width:180px"] { background: radial-gradient(circle at 50% 18%, rgba(255,255,255,0.08), transparent 46%), rgba(255,255,255,0.025); } #implants-catalog img[style*="width:160px"], #implants-catalog img[style*="width:180px"] { width: min(230px, 74vw) !important; height: min(230px, 74vw) !important; } #implants-catalog [style*="border-top:1px solid rgba(255,255,255"], #cards-tab [style*="border-top:1px solid rgba(255,255,255"] { border-top-color: color-mix(in srgb, var(--border) 80%, var(--gold-border)) !important; } #implants-catalog [style*="border-bottom:1px solid rgba(255,255,255"], #cards-tab [style*="border-bottom:1px solid rgba(255,255,255"] { border-bottom-color: color-mix(in srgb, var(--border) 82%, var(--gold-border)) !important; } #myCardsContent > div:not(.empty-state) { background: radial-gradient(circle at top left, color-mix(in srgb, var(--gold-dim) 48%, transparent), transparent 44%), color-mix(in srgb, var(--bg2) 92%, transparent) !important; border-color: color-mix(in srgb, var(--border) 72%, var(--gold-border)) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 10px 24px rgba(0,0,0,0.10); } #myCardsContent img { background: radial-gradient(circle at 50% 20%, rgba(255,255,255,0.10), transparent 48%), rgba(255,255,255,0.035); } body.theme-nw-light #implants-catalog .card, body.theme-nw-light #myImplantsPage, body.theme-genshin-light #cards-tab .card, body.theme-genshin-light #myCardsContent > div:not(.empty-state) { background: radial-gradient(circle at 50% 0%, rgba(138,104,32,0.10), transparent 52%), rgba(255,255,255,0.66) !important; border-color: rgba(90,65,45,0.14) !important; box-shadow: 0 12px 28px rgba(80,50,30,0.055); } body.theme-genshin-light #cards-tab .card, body.theme-genshin-light #myCardsContent > div:not(.empty-state) { background: radial-gradient(circle at 50% 0%, rgba(219,177,101,0.14), transparent 52%), rgba(255,250,238,0.72) !important; border-color: rgba(138,104,32,0.18) !important; } body.theme-genshin-dark #cards-tab .card, body.theme-genshin-dark #myCardsContent > div:not(.empty-state) { background: radial-gradient(circle at top left, rgba(219,177,101,0.08), transparent 44%), rgba(255,255,255,0.038) !important; border-color: rgba(219,177,101,0.12) !important; } /* Page chrome polish: headers, dividers and utility tiles. */ .page-header { margin: 0 0 2px; background: linear-gradient(180deg, color-mix(in srgb, var(--bg) 72%, transparent), transparent); } .page-header::before { content: ''; position: absolute; left: 16px; top: 10px; width: 28px; height: 1px; background: color-mix(in srgb, var(--gold) 58%, transparent); box-shadow: 0 0 14px color-mix(in srgb, var(--gold) 28%, transparent); } .page-title { line-height: 1.15; } .page-sub { max-width: 92%; line-height: 1.45; } .cn-divider { margin-top: 4px; color: color-mix(in srgb, var(--red) 64%, var(--gold)); } .cn-divider::before, .cn-divider::after { opacity: 0.72; } .more-item { border-radius: 14px; background: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--red-dim) 54%, transparent), transparent 56%), var(--bg2); } .more-item:hover { border-color: color-mix(in srgb, var(--red-border) 62%, var(--gold-border)); transform: translateY(-1px); box-shadow: 0 12px 28px rgba(0,0,0,0.12); } .more-item-icon { filter: drop-shadow(0 0 10px color-mix(in srgb, var(--red) 18%, transparent)); } body.theme-nw-light .page-header, body.theme-genshin-light .page-header { background: linear-gradient(180deg, rgba(255,255,255,0.42), transparent); } body.theme-nw-light .more-item, body.theme-genshin-light .more-item { background: radial-gradient(circle at 50% 0%, rgba(138,104,32,0.08), transparent 56%), rgba(255,255,255,0.58); border-color: rgba(90,65,45,0.13); box-shadow: 0 8px 20px rgba(80,50,30,0.04); } body.theme-genshin-light .more-item { background: radial-gradient(circle at 50% 0%, rgba(219,177,101,0.12), transparent 56%), rgba(255,250,238,0.66); border-color: rgba(138,104,32,0.16); } /* Home screen polish: stronger first impression without changing markup. */ #page-home .main-logo-wrap { padding: 18px 16px 10px; isolation: isolate; } #page-home .main-logo { width: 148px; height: 148px; margin-bottom: 12px; border-radius: 34px; background: radial-gradient(circle at 50% 46%, color-mix(in srgb, var(--gold) 11%, transparent), transparent 48%), radial-gradient(circle at 50% 58%, color-mix(in srgb, var(--red) 16%, transparent), transparent 62%); filter: drop-shadow(0 18px 30px rgba(0,0,0,0.28)); } #page-home .main-logo::before { content: ''; position: absolute; inset: 8px; border-radius: 30px; border: 1px solid color-mix(in srgb, var(--gold-border) 34%, transparent); opacity: 0.46; pointer-events: none; } #page-home .main-logo::after { content: ''; position: absolute; left: 24px; right: 24px; bottom: 16px; height: 1px; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--red) 56%, transparent), transparent); box-shadow: 0 0 12px color-mix(in srgb, var(--red) 22%, transparent); pointer-events: none; } #page-home .main-logo img, #page-home .main-logo .no-leak-bg { position: relative; z-index: 1; filter: drop-shadow(0 0 14px rgba(212,175,55,0.12)); } #page-home .main-pinyin { color: color-mix(in srgb, var(--gold) 76%, transparent); text-shadow: 0 0 12px color-mix(in srgb, var(--gold) 16%, transparent); } #page-home .proto-tag { border-radius: 999px; padding: 4px 12px; background: linear-gradient(90deg, color-mix(in srgb, var(--red-dim) 82%, transparent), color-mix(in srgb, var(--bg2) 72%, transparent)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--red-border) 32%, transparent), 0 10px 24px rgba(0,0,0,0.13); backdrop-filter: blur(8px); } #page-home .stats-row { gap: 8px; margin: 4px 12px 8px; } #page-home .stat-box { border-radius: 14px; padding: 12px 10px 11px; background: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--gold) 8%, transparent), transparent 56%), linear-gradient(180deg, color-mix(in srgb, var(--bg2) 92%, transparent), color-mix(in srgb, var(--bg) 84%, transparent)); border-color: color-mix(in srgb, var(--border) 84%, var(--gold-border)); box-shadow: 0 12px 28px rgba(0,0,0,0.10), inset 0 1px 0 rgba(255,255,255,0.035); } #page-home .stat-box::after { content: ''; position: absolute; inset: auto 10px 7px; height: 1px; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--red) 28%, transparent), transparent); opacity: 0.58; } #page-home .stat-cn { letter-spacing: 0.08em; } #page-home .stat-num { line-height: 1; text-shadow: 0 0 14px color-mix(in srgb, var(--gold) 16%, transparent); } #page-home .stat-lbl { opacity: 0.86; } #page-home .neuro-card { margin: 6px 12px 8px; } #page-home .neuro-card .card-inner { position: relative; overflow: hidden; background: radial-gradient(circle at 12% 0%, color-mix(in srgb, var(--red) 12%, transparent), transparent 42%), radial-gradient(circle at 92% 20%, color-mix(in srgb, var(--gold) 9%, transparent), transparent 42%), color-mix(in srgb, var(--bg2) 94%, transparent); } #page-home .neuro-card .card-inner::before { content: ''; position: absolute; left: 14px; right: 14px; top: 0; height: 1px; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--red) 42%, transparent), color-mix(in srgb, var(--gold) 30%, transparent), transparent); } #page-home .neuro-status { color: color-mix(in srgb, var(--red) 72%, var(--gold)); letter-spacing: 0.08em; } #page-home .neuro-name { font-size: 15px; line-height: 1.18; } #page-home .neuro-sub { color: var(--text3); } #page-home .traffic-bar { height: 5px; border: 1px solid color-mix(in srgb, var(--border) 72%, transparent); background: rgba(255,255,255,0.045); border-radius: 999px; } #page-home .traffic-fill { background: linear-gradient(90deg, color-mix(in srgb, var(--red) 82%, #220000), var(--gold)); box-shadow: 0 0 12px color-mix(in srgb, var(--gold) 22%, transparent); } #page-home .home-event-card { position: relative; overflow: hidden; border-radius: 16px !important; background: radial-gradient(circle at 8% 0%, color-mix(in srgb, var(--red) 18%, transparent), transparent 44%), linear-gradient(135deg, color-mix(in srgb, var(--red-dim) 76%, transparent), color-mix(in srgb, var(--bg2) 90%, transparent)) !important; border-color: color-mix(in srgb, var(--red-border) 76%, var(--gold-border)) !important; box-shadow: 0 16px 38px rgba(0,0,0,0.16), inset 0 1px 0 rgba(255,255,255,0.035); } #page-home .home-event-card::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 0 16%, color-mix(in srgb, var(--red) 10%, transparent) 16% 17%, transparent 17% 100%), repeating-linear-gradient(180deg, rgba(255,255,255,0.025) 0 1px, transparent 1px 6px); opacity: 0.58; pointer-events: none; } #page-home .home-event-card::after { content: ''; position: absolute; right: -28px; top: -30px; width: 110px; height: 110px; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--red) 16%, transparent), transparent 68%); pointer-events: none; } #page-home .home-event-card-kicker, #page-home .home-event-card-title, #page-home .home-event-card-copy { position: relative; z-index: 1; } #page-home .home-event-card-title { letter-spacing: 0.015em; text-shadow: 0 0 18px rgba(255,255,255,0.035); } #page-home .home-event-card-copy { line-height: 1.45; } body.theme-nw-light #page-home .main-logo, body.theme-genshin-light #page-home .main-logo { background: radial-gradient(circle at 50% 46%, rgba(138,104,32,0.12), transparent 50%), radial-gradient(circle at 50% 60%, rgba(153,51,51,0.08), transparent 64%); filter: drop-shadow(0 18px 26px rgba(80,50,30,0.10)); } body.theme-nw-light #page-home .stat-box, body.theme-genshin-light #page-home .stat-box, body.theme-nw-light #page-home .neuro-card .card-inner, body.theme-genshin-light #page-home .neuro-card .card-inner { background: radial-gradient(circle at 50% 0%, rgba(138,104,32,0.08), transparent 56%), rgba(255,255,255,0.66); border-color: rgba(90,65,45,0.13); box-shadow: 0 12px 26px rgba(80,50,30,0.045); } body.theme-genshin-light #page-home .stat-box, body.theme-genshin-light #page-home .neuro-card .card-inner { background: radial-gradient(circle at 50% 0%, rgba(219,177,101,0.12), transparent 56%), rgba(255,250,238,0.70); border-color: rgba(138,104,32,0.16); } body.theme-nw-light #page-home .home-event-card { background: radial-gradient(circle at 8% 0%, rgba(153,51,51,0.10), transparent 44%), rgba(255,255,255,0.72) !important; box-shadow: 0 14px 30px rgba(80,50,30,0.055); } body.theme-genshin-light #page-home .home-event-card { background: radial-gradient(circle at 8% 0%, rgba(219,177,101,0.14), transparent 44%), rgba(255,250,238,0.74) !important; box-shadow: 0 14px 30px rgba(80,50,30,0.055); } body.theme-genshin-dark #page-home .home-event-card { background: radial-gradient(circle at 8% 0%, rgba(219,177,101,0.10), transparent 44%), rgba(20,16,32,0.70) !important; } /* Architect polish pass: terminal result art and cleaner battle HUD. */ .event-overlay.event-state-terminal .event-hero::before { opacity: 0.72; background: linear-gradient(180deg, rgba(0,0,0,0.16), rgba(0,0,0,0.03) 32%, rgba(0,0,0,0.72)), repeating-linear-gradient(180deg, rgba(255, 70, 40, 0.045) 0 1px, transparent 1px 5px); } .event-overlay.event-terminal .event-topbar { background: linear-gradient(180deg, rgba(0,0,0,0.42), transparent); } .event-overlay.event-terminal .event-lobby-card.event-result-card { position: fixed; left: 0; right: 0; bottom: 0; width: 100%; max-width: 100%; z-index: 18; display: block; min-height: 44vh; max-height: 52vh; margin: 0; padding: 0; overflow-y: auto; overflow-x: hidden; border-radius: 22px 22px 0 0; background: rgba(5, 5, 13, 0.97); border: none; border-top: 1px solid rgba(255,255,255,0.08); box-shadow: 0 -12px 60px rgba(0,0,0,0.62), 0 -1px 0 rgba(255,255,255,0.05); backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px); pointer-events: auto; transform: none; padding-bottom: env(safe-area-inset-bottom, 0px); } .event-overlay.event-terminal .event-lobby-card.event-result-win { border-top-color: rgba(0, 230, 255, 0.55); background: radial-gradient(ellipse at 50% 0%, rgba(0, 230, 255, 0.10) 0%, transparent 60%), rgba(4, 5, 14, 0.97); box-shadow: 0 -12px 60px rgba(0,0,0,0.62), 0 -1px 0 rgba(0,230,255,0.22), 0 -32px 80px rgba(0, 180, 255, 0.12); animation: resultWinPulse 3s ease-in-out infinite; } .event-overlay.event-terminal .event-lobby-card.event-result-lose { border-top-color: rgba(255, 54, 54, 0.58); background: radial-gradient(ellipse at 50% 0%, rgba(255, 40, 40, 0.12) 0%, transparent 60%), rgba(6, 4, 10, 0.97); box-shadow: 0 -12px 60px rgba(0,0,0,0.62), 0 -1px 0 rgba(255,54,54,0.22), 0 -32px 80px rgba(180, 20, 20, 0.14); animation: resultLosePulse 3s ease-in-out infinite; } @keyframes resultWinPulse { 0%,100% { border-top-color: rgba(0,230,255,0.42); } 50% { border-top-color: rgba(0,230,255,0.76); } } @keyframes resultLosePulse { 0%,100% { border-top-color: rgba(255,54,54,0.44); } 50% { border-top-color: rgba(255,54,54,0.80); } } /* ── Result verdict header ─────────────────────────────── */ .event-result-header { padding: 18px 18px 0; } .event-result-verdict { font-size: 26px; font-weight: 900; letter-spacing: 1.5px; text-transform: uppercase; color: #ffffff; line-height: 1; } .event-result-win .event-result-verdict { color: #54f5ff; text-shadow: 0 0 28px rgba(0,230,255,0.44); } .event-result-lose .event-result-verdict { color: #ff6464; text-shadow: 0 0 28px rgba(255,40,40,0.44); } .event-result-subtext { margin-top: 8px; font-size: 13px; font-weight: 600; letter-spacing: 0.3px; color: rgba(255,255,255,0.7); line-height: 1.4; } .event-result-lose .event-result-subtext { color: rgba(255,120,120,0.85); } .event-result-divider { margin-top: 12px; height: 1px; background: linear-gradient(90deg, rgba(255,255,255,0.18), rgba(255,255,255,0.04), transparent); } .event-result-win .event-result-divider { background: linear-gradient(90deg, rgba(0,230,255,0.42), rgba(0,230,255,0.08), transparent); } .event-result-lose .event-result-divider { background: linear-gradient(90deg, rgba(255,54,54,0.42), rgba(255,54,54,0.08), transparent); } .event-result-card .event-lobby-head { align-items: center; gap: 10px; padding: 14px 18px 0; } .event-result-card .event-lobby-kicker { font-size: 8px; letter-spacing: 2.3px; color: rgba(84, 245, 255, 0.82); } .event-result-card.event-result-lose .event-lobby-kicker { color: rgba(255, 118, 92, 0.86); } .event-result-card .event-lobby-status { margin-top: 3px; font-size: 22px; font-weight: 900; line-height: 1; text-transform: uppercase; letter-spacing: 1px; } .event-result-card .event-lobby-count { padding: 4px 7px; border: 1px solid rgba(255,255,255,0.10); border-radius: 999px; background: rgba(0,0,0,0.22); font-size: 10px; } .event-result-card .event-lobby-reward, .event-result-card .event-lobby-members { margin-top: 6px; padding: 0 18px; } .event-result-card .event-lobby-label { font-size: 8px; letter-spacing: 1.8px; color: rgba(255,255,255,0.42); } .event-result-card .event-lobby-value { margin-top: 3px; font-size: 12px; line-height: 1.25; } .event-result-reward-main { display: block; color: #f4e1ad; font-weight: 800; } .event-result-reward-sub { display: block; margin-top: 2px; color: rgba(210, 235, 240, 0.70); font-family: monospace; font-size: 9px; font-weight: 600; } .event-result-summary { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; } .event-result-summary span { display: inline-flex; align-items: center; min-height: 14px; padding: 1px 5px; border: 1px solid rgba(84, 245, 255, 0.20); border-radius: 999px; background: rgba(0, 0, 0, 0.22); color: rgba(210, 252, 255, 0.82); font-family: monospace; font-size: 8px; font-weight: 800; letter-spacing: 0.06em; } .event-result-card .event-team-list { margin-top: 6px; /* The result sheet itself scrolls — don't squash the MVP card and damage board into a tiny inner scroll window (the crown was getting clipped). */ max-height: none; padding: 0; border: none; background: transparent; overflow-y: visible; } .event-result-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 2px 0; color: rgba(255,255,255,0.84); font-size: 10px; line-height: 1.2; border-bottom: 1px solid rgba(255,255,255,0.06); } .event-result-row strong { flex: 0 0 auto; color: rgba(84, 245, 255, 0.82); font-family: monospace; font-size: 9px; font-weight: 800; } .event-result-mvp { display: inline-flex; margin-right: 5px; padding: 1px 4px; border-radius: 999px; background: rgba(212,175,55,0.15); border: 1px solid rgba(212,175,55,0.22); color: #f0d887; font-family: monospace; font-size: 8px; letter-spacing: 0.08em; } .event-result-card .event-lobby-actions { padding: 10px 18px 6px; margin: 0; display: flex; gap: 8px; } .event-result-card .event-lobby-btn { padding: 5px 8px; border-radius: 999px; font-size: 8px; min-height: 0; } .event-overlay.event-terminal .event-log { display: none; } /* iOS result card — full-width bottom sheet, safe bottom via padding */ body.tg-ios .event-overlay.event-terminal .event-log { display: none; } .event-overlay.event-state-terminal #eventBossImage { display: block !important; filter: saturate(1.12) contrast(1.08) brightness(0.96); animation: architectTerminalBreath 4.8s ease-in-out infinite; } .event-overlay.event-state-finished #eventBossImage, .event-overlay.event-state-failed #eventBossImage { display: block !important; /* Fit the artwork into the zone above the bottom result sheet: the sheet is capped at 52vh, so the image box ends at 53vh from the bottom. */ top: max(56px, env(safe-area-inset-top, 0px)); bottom: 53vh; height: auto; max-height: none; width: 100vw; object-fit: contain; object-position: center center; } /* Wild AI Breach defeat: play the loss video instead of the static image */ .event-overlay.event-wildai.event-state-failed #eventBossImage { display: none !important; } .event-overlay.event-wildai.event-state-failed #eventBossVideo { display: block !important; top: max(56px, env(safe-area-inset-top, 0px)); bottom: 53vh; height: auto; max-height: none; width: 100vw; object-fit: contain; object-position: center center; } .event-overlay.event-state-finished .event-hero-glow { background: radial-gradient(circle at 50% 38%, rgba(0, 230, 255, 0.16), transparent 34%), radial-gradient(circle at 50% 62%, rgba(212, 175, 55, 0.16), transparent 42%); opacity: 0.95; } .event-overlay.event-state-failed .event-hero-glow { background: radial-gradient(circle at 50% 42%, rgba(255, 0, 0, 0.28), transparent 36%), linear-gradient(180deg, transparent, rgba(80, 0, 0, 0.44)); opacity: 1; animation: architectFailedPulse 1.7s ease-in-out infinite; } .event-overlay.event-state-failed::before { opacity: 0.24; background: repeating-linear-gradient(180deg, rgba(255, 20, 20, 0.10) 0 1px, transparent 1px 6px), linear-gradient(90deg, rgba(255, 0, 0, 0.12), transparent 38%, rgba(255, 0, 0, 0.14)); animation: architectPhaseSplit 1.8s steps(2) infinite; } .event-overlay.event-state-finished::before { opacity: 0.16; background: repeating-linear-gradient(180deg, rgba(0, 230, 255, 0.08) 0 1px, transparent 1px 7px), linear-gradient(90deg, rgba(0, 230, 255, 0.10), transparent 42%, rgba(212, 175, 55, 0.10)); animation: architectPhaseScanSlow 7s linear infinite; } .event-hud { background: rgba(3, 8, 14, 0.32); border-color: rgba(0, 230, 255, 0.32); box-shadow: 0 0 8px rgba(0, 230, 255, 0.07), inset 0 0 0 1px rgba(0, 230, 255, 0.04); } .event-hud .boss-hud__caption { display: none; } .event-hud .event-boss-name { max-width: 92px; } .event-hud .event-status-badge { opacity: 0.86; } .event-hp-bar { background: rgba(5, 14, 22, 0.62); border-color: rgba(84, 245, 255, 0.36); } .event-hp-fill { opacity: 0.82; box-shadow: 0 0 8px rgba(255, 45, 60, 0.32); } .event-final-timer { top: 96px; background: rgba(18, 3, 5, 0.58); border-color: rgba(255, 34, 34, 0.38); } @keyframes architectTerminalBreath { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.012); } } @keyframes architectFailedPulse { 0%, 100% { opacity: 0.82; filter: saturate(1); } 50% { opacity: 1; filter: saturate(1.55); } } /* ===== GENSHIN PROFILE CARD v3 ===== */ body.theme-genshin-light .profile-card-home, body.theme-genshin-dark .profile-card-home { border-width: 2px; border-radius: 20px; padding: 14px 16px 16px; font-family: Georgia, serif; } body.theme-genshin-light .profile-card-home { border-color: rgba(180,140,60,0.45); background: radial-gradient(ellipse at 100% 0%, rgba(219,177,101,0.20), transparent 55%), radial-gradient(ellipse at 0% 100%, rgba(180,140,60,0.16), transparent 60%), linear-gradient(155deg, #fbf5e6 0%, #f3e8c8 50%, #e8d8a8 100%); box-shadow: 0 6px 24px rgba(160,120,40,0.18), inset 0 0 30px rgba(255,240,200,0.5); } body.theme-genshin-dark .profile-card-home { border-color: rgba(219,177,101,0.45); background: radial-gradient(ellipse at 100% 0%, rgba(219,177,101,0.16), transparent 55%), radial-gradient(ellipse at 0% 100%, rgba(120,80,180,0.14), transparent 60%), linear-gradient(155deg, rgba(40,28,60,0.95) 0%, rgba(28,22,46,0.98) 100%); box-shadow: 0 6px 24px rgba(0,0,0,0.5), inset 0 0 30px rgba(219,177,101,0.06); } /* Genshin: replace tech corners with floral ornaments */ body.theme-genshin-light .profile-card-home::before, body.theme-genshin-light .profile-card-home::after, body.theme-genshin-dark .profile-card-home::before, body.theme-genshin-dark .profile-card-home::after { width: 22px; height: 22px; border: none !important; border-radius: 0 !important; background-repeat: no-repeat; background-position: center; background-size: contain; opacity: 0.65; } body.theme-genshin-light .profile-card-home::before, body.theme-genshin-dark .profile-card-home::before { top: 4px; left: 4px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 2 L12 2 L10 4 L4 4 L4 10 L2 12 Z M5 5 L5 8 L8 5 Z' fill='%23b8893a'/%3E%3Ccircle cx='3' cy='3' r='1.5' fill='%23dbb165'/%3E%3C/svg%3E"); } body.theme-genshin-light .profile-card-home::after, body.theme-genshin-dark .profile-card-home::after { bottom: 4px; right: 4px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 22 L12 22 L14 20 L20 20 L20 14 L22 12 Z M19 19 L19 16 L16 19 Z' fill='%23b8893a'/%3E%3Ccircle cx='21' cy='21' r='1.5' fill='%23dbb165'/%3E%3C/svg%3E"); } /* Genshin scan line: warm gold gradient */ body.theme-genshin-light .profile-scan-line, body.theme-genshin-dark .profile-scan-line { background: linear-gradient(90deg, transparent 0%, rgba(219,177,101,0.55) 40%, rgba(255,225,150,0.85) 50%, rgba(219,177,101,0.55) 60%, transparent 100%); height: 1px; filter: blur(0.4px); } /* Avatar: round, gold double-ring */ body.theme-genshin-light .profile-card-home .profile-avatar-wrap, body.theme-genshin-dark .profile-card-home .profile-avatar-wrap { border-radius: 50%; width: 76px; height: 76px; border: 2px solid; box-shadow: 0 0 0 3px rgba(255,240,200,0.5), 0 4px 16px rgba(160,120,40,0.3); position: relative; overflow: visible; } body.theme-genshin-light .profile-card-home .profile-avatar-wrap { border-color: #c89b4a; background: radial-gradient(circle at 50% 25%, rgba(255,235,180,0.8), rgba(230,200,130,0.6) 70%); } body.theme-genshin-dark .profile-card-home .profile-avatar-wrap { border-color: rgba(219,177,101,0.85); box-shadow: 0 0 0 3px rgba(219,177,101,0.18), 0 4px 18px rgba(0,0,0,0.6); background: radial-gradient(circle at 50% 25%, rgba(80,60,30,0.6), rgba(40,28,60,0.8) 70%); } body.theme-genshin-light .profile-avatar-img, body.theme-genshin-dark .profile-avatar-img { border-radius: 50%; } body.theme-genshin-light .profile-avatar-fallback, body.theme-genshin-dark .profile-avatar-fallback { border-radius: 50%; font-family: Georgia, serif; font-style: italic; font-size: 30px; } /* Decorative star above avatar (rarity flair) */ body.theme-genshin-light .profile-card-home .profile-avatar-wrap::before, body.theme-genshin-dark .profile-card-home .profile-avatar-wrap::before { content: '✦'; position: absolute; top: -10px; left: 50%; transform: translateX(-50%); font-size: 12px; color: var(--gold); text-shadow: 0 0 6px rgba(255,220,120,0.9); pointer-events: none; animation: gsAvatarStar 3s ease-in-out infinite; } @keyframes gsAvatarStar { 0%, 100% { opacity: 0.6; transform: translateX(-50%) scale(1); } 50% { opacity: 1; transform: translateX(-50%) scale(1.18); } } /* Kicker → decorative serif label */ body.theme-genshin-light .profile-card-kicker, body.theme-genshin-dark .profile-card-kicker { font-family: Georgia, serif; font-size: 9px; font-style: italic; letter-spacing: 1.2px; text-transform: none; } body.theme-genshin-light .profile-card-kicker { color: #a07028; } body.theme-genshin-dark .profile-card-kicker { color: rgba(219,177,101,0.75); } body.theme-genshin-light .profile-card-kicker::before, body.theme-genshin-light .profile-card-kicker::after, body.theme-genshin-dark .profile-card-kicker::before, body.theme-genshin-dark .profile-card-kicker::after { content: '❋'; display: inline-block; margin: 0 5px; font-size: 8px; vertical-align: 1px; opacity: 0.7; } /* Name: serif, italic-ish */ body.theme-genshin-light .profile-card-home .profile-card-name, body.theme-genshin-dark .profile-card-home .profile-card-name { font-family: Georgia, serif; font-size: 18px; font-weight: 700; letter-spacing: 0.4px; margin-top: 5px; } body.theme-genshin-light .profile-card-home .profile-card-name { color: #2d3344; text-shadow: 0 1px 0 rgba(255,250,235,0.6); } body.theme-genshin-dark .profile-card-home .profile-card-name { color: #ede2cc; text-shadow: 0 0 8px rgba(219,177,101,0.3); } /* Badges → star rarity + path glyph */ body.theme-genshin-light .profile-badge, body.theme-genshin-dark .profile-badge { font-family: Georgia, serif; font-size: 9px; letter-spacing: 0.4px; font-weight: 600; border-radius: 999px; padding: 2px 9px; } body.theme-genshin-light .profile-badge-rank { background: linear-gradient(180deg, #fff5d8, #f0d896); border: 1px solid #c89b4a; color: #6b4a18; box-shadow: inset 0 1px 0 rgba(255,255,255,0.5); } body.theme-genshin-dark .profile-badge-rank { background: linear-gradient(180deg, rgba(219,177,101,0.30), rgba(150,110,50,0.4)); border: 1px solid rgba(219,177,101,0.7); color: #f5e3b8; } body.theme-genshin-light .profile-badge-place { background: rgba(255,255,255,0.7); border: 1px solid rgba(180,140,60,0.4); color: #5a4a28; } body.theme-genshin-dark .profile-badge-place { background: rgba(255,255,255,0.06); border: 1px solid rgba(219,177,101,0.3); color: #d8c8a8; } body.theme-genshin-light .profile-badge-path, body.theme-genshin-dark .profile-badge-path { background: linear-gradient(180deg, rgba(180,80,180,0.18), rgba(100,40,140,0.25)); border: 1px solid rgba(180,100,200,0.55); color: #7a3a8a; } body.theme-genshin-dark .profile-badge-path { color: #d8a8e8; } /* Status line: parchment strip */ body.theme-genshin-light .profile-card-home .profile-status-line, body.theme-genshin-dark .profile-card-home .profile-status-line { font-family: Georgia, serif; font-style: italic; font-size: 9px; letter-spacing: 0.4px; border-radius: 10px; padding: 6px 10px; text-align: center; } body.theme-genshin-light .profile-card-home .profile-status-line { background: linear-gradient(90deg, transparent 0%, rgba(255,250,225,0.7) 50%, transparent 100%); border: 1px solid rgba(180,140,60,0.25); color: #6b4a18; } body.theme-genshin-dark .profile-card-home .profile-status-line { background: linear-gradient(90deg, transparent 0%, rgba(219,177,101,0.10) 50%, transparent 100%); border: 1px solid rgba(219,177,101,0.22); color: #d8c4a0; } /* Showcase: artifact-card */ body.theme-genshin-light .profile-card-home .profile-showcase, body.theme-genshin-dark .profile-card-home .profile-showcase { border-radius: 14px; border-width: 1px; font-family: Georgia, serif; } body.theme-genshin-light .profile-card-home .profile-showcase { background: linear-gradient(135deg, rgba(255,245,210,0.7), rgba(250,225,170,0.5)); border-color: rgba(180,140,60,0.4); } body.theme-genshin-dark .profile-card-home .profile-showcase { background: linear-gradient(135deg, rgba(60,45,30,0.5), rgba(40,28,55,0.6)); border-color: rgba(219,177,101,0.35); } body.theme-genshin-light .profile-card-home .profile-showcase-icon, body.theme-genshin-dark .profile-card-home .profile-showcase-icon { border-radius: 10px; font-family: Georgia, serif; border-width: 1px; } body.theme-genshin-light .profile-card-home .profile-showcase-icon { background: linear-gradient(180deg, #fff8e0, #f0d896); border-color: #c89b4a; color: #6b4a18; } body.theme-genshin-dark .profile-card-home .profile-showcase-icon { background: linear-gradient(180deg, rgba(219,177,101,0.25), rgba(120,80,30,0.35)); border-color: rgba(219,177,101,0.6); color: #f0d896; } body.theme-genshin-light .profile-card-home .profile-showcase-copy strong { font-family: Georgia, serif; font-weight: 700; font-size: 11px; color: #2d3344; } body.theme-genshin-dark .profile-card-home .profile-showcase-copy strong { font-family: Georgia, serif; font-weight: 700; font-size: 11px; color: #ede2cc; } body.theme-genshin-light .profile-card-home .profile-showcase-copy span, body.theme-genshin-dark .profile-card-home .profile-showcase-copy span { font-family: Georgia, serif; font-style: italic; text-transform: lowercase; letter-spacing: 0.6px; } body.theme-genshin-light .profile-card-home .profile-showcase-copy em { color: #8a6820; font-family: Georgia, serif; font-style: italic; } body.theme-genshin-dark .profile-card-home .profile-showcase-copy em { color: rgba(219,177,101,0.85); font-family: Georgia, serif; font-style: italic; } /* Buttons */ body.theme-genshin-light .profile-card-home .profile-mini-btn, body.theme-genshin-dark .profile-card-home .profile-mini-btn { font-family: Georgia, serif; font-size: 9px; letter-spacing: 0.6px; text-transform: lowercase; font-style: italic; padding: 6px 12px; border-radius: 999px; border-width: 1px; } body.theme-genshin-light .profile-card-home .profile-mini-btn { background: linear-gradient(180deg, #fff5d8, #e8c878); border-color: #c89b4a; color: #6b4a18; box-shadow: 0 2px 6px rgba(160,120,40,0.2), inset 0 1px 0 rgba(255,255,255,0.5); } body.theme-genshin-dark .profile-card-home .profile-mini-btn { background: linear-gradient(180deg, rgba(219,177,101,0.28), rgba(150,110,50,0.35)); border-color: rgba(219,177,101,0.6); color: #f5e3b8; } body.theme-genshin-light .profile-card-home .profile-mini-btn.ghost { background: rgba(255,255,255,0.6); border-color: rgba(120,80,30,0.3); color: #6b6055; } body.theme-genshin-dark .profile-card-home .profile-mini-btn.ghost { background: rgba(255,255,255,0.04); border-color: rgba(219,177,101,0.25); color: #a09880; } /* Admin variant for Genshin: imperial red-gold */ body.is-admin.theme-genshin-light .profile-card-home, body.is-admin.theme-genshin-dark .profile-card-home { border-color: rgba(160,40,40,0.65); } body.is-admin.theme-genshin-light .profile-card-home { background: radial-gradient(ellipse at 100% 0%, rgba(180,40,40,0.16), transparent 55%), radial-gradient(ellipse at 0% 100%, rgba(219,177,101,0.20), transparent 60%), linear-gradient(155deg, #fdf2e0 0%, #f6dec8 60%, #ecc8a0 100%); box-shadow: 0 6px 24px rgba(160,40,40,0.22), inset 0 0 30px rgba(255,220,180,0.4); } body.is-admin.theme-genshin-dark .profile-card-home { background: radial-gradient(ellipse at 100% 0%, rgba(180,40,40,0.20), transparent 55%), radial-gradient(ellipse at 0% 100%, rgba(219,177,101,0.16), transparent 60%), linear-gradient(155deg, rgba(50,22,32,0.95) 0%, rgba(34,20,38,0.98) 100%); box-shadow: 0 6px 24px rgba(0,0,0,0.6), inset 0 0 30px rgba(180,40,40,0.10); } body.is-admin.theme-genshin-light .profile-card-kicker, body.is-admin.theme-genshin-dark .profile-card-kicker { color: #a83030; } body.is-admin.theme-genshin-light .profile-card-home .profile-avatar-wrap, body.is-admin.theme-genshin-dark .profile-card-home .profile-avatar-wrap { border-color: #c8403a; } /* =================================================== GENSHIN SHOP — Part 3 =================================================== */ /* ── Subtabs ── */ body.theme-genshin-light #page-shop .subtab, body.theme-genshin-dark #page-shop .subtab { font-family: Georgia, serif; min-height: 38px; padding: 9px 10px; font-size: 11px; font-style: italic; line-height: 1.2; letter-spacing: 0.55px; border-radius: 18px; white-space: normal; display: inline-flex; align-items: center; justify-content: center; text-align: center; box-shadow: inset 0 1px 0 rgba(255,255,255,0.28); } body.theme-genshin-light #page-shop .subtab { background: rgba(255,255,255,0.45); border-color: rgba(180,140,60,0.25); color: #8a6028; } body.theme-genshin-dark #page-shop .subtab { background: rgba(255,255,255,0.04); border-color: rgba(219,177,101,0.18); color: rgba(219,177,101,0.7); } body.theme-genshin-light #page-shop .subtab.active { background: linear-gradient(180deg, #fff8e0, #f0d896); border-color: #c89b4a; color: #5a3a10; box-shadow: inset 0 1px 0 rgba(255,255,255,0.6), 0 2px 8px rgba(160,120,40,0.18); } body.theme-genshin-dark #page-shop .subtab.active { background: linear-gradient(180deg, rgba(219,177,101,0.32), rgba(150,110,50,0.42)); border-color: rgba(219,177,101,0.75); color: #f5e3b8; box-shadow: 0 2px 8px rgba(0,0,0,0.3); } body.theme-genshin-light #page-shop .shop-subtabs, body.theme-genshin-dark #page-shop .shop-subtabs { gap: 8px; padding: 10px 12px 8px; } /* ── Balance header ── */ body.theme-genshin-light #page-shop .shop-balance { font-family: Georgia, serif; font-style: italic; font-size: 10px; color: #8a6028; } body.theme-genshin-dark #page-shop .shop-balance { font-family: Georgia, serif; font-style: italic; color: rgba(219,177,101,0.7); } body.theme-genshin-light #page-shop .shop-balance span, body.theme-genshin-dark #page-shop .shop-balance span { font-family: Georgia, serif; font-weight: 700; } body.theme-genshin-light #page-shop .shop-balance span { color: #7a5010; } body.theme-genshin-dark #page-shop .shop-balance span { color: #f0d896; } /* ── Command card (top summary) ── */ body.theme-genshin-light #page-shop .shop-command-card { background: radial-gradient(ellipse at 0% 0%, rgba(255,255,255,0.8), transparent 44%), radial-gradient(ellipse at 100% 100%, rgba(219,177,101,0.22), transparent 48%), linear-gradient(145deg, #fcf8ee, #efe3c4); border: 1px solid rgba(180,140,60,0.35); border-radius: 18px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), 0 10px 24px rgba(140,100,30,0.12); } body.theme-genshin-dark #page-shop .shop-command-card { background: radial-gradient(ellipse at 0% 0%, rgba(219,177,101,0.12), transparent 44%), radial-gradient(ellipse at 100% 100%, rgba(120,80,180,0.12), transparent 48%), linear-gradient(145deg, rgba(40,30,55,0.96), rgba(30,22,44,0.98)); border: 1px solid rgba(219,177,101,0.30); border-radius: 18px; box-shadow: 0 10px 24px rgba(0,0,0,0.4); } body.theme-genshin-light #page-shop .shop-command-bg { color: rgba(138,104,32,0.07); font-family: Georgia, serif; } body.theme-genshin-dark #page-shop .shop-command-bg { color: rgba(219,177,101,0.05); font-family: Georgia, serif; } body.theme-genshin-light #page-shop .shop-command-kicker, body.theme-genshin-dark #page-shop .shop-command-kicker { font-family: Georgia, serif; font-style: italic; font-size: 9px; letter-spacing: 1.2px; text-transform: none; } body.theme-genshin-light #page-shop .shop-command-kicker { color: #a07028; } body.theme-genshin-dark #page-shop .shop-command-kicker { color: rgba(219,177,101,0.7); } body.theme-genshin-light #page-shop .shop-command-title, body.theme-genshin-dark #page-shop .shop-command-title { font-family: Georgia, serif; font-weight: 700; font-size: 15px; } body.theme-genshin-light #page-shop .shop-command-title { color: #2d3344; } body.theme-genshin-dark #page-shop .shop-command-title { color: #ede2cc; } body.theme-genshin-light #page-shop .shop-command-sub, body.theme-genshin-dark #page-shop .shop-command-sub { font-family: Georgia, serif; font-style: italic; font-size: 11px; } body.theme-genshin-light #page-shop .shop-command-sub { color: #6b5530; } body.theme-genshin-dark #page-shop .shop-command-sub { color: #b0a088; } body.theme-genshin-light #page-shop .shop-command-stats div { background: rgba(255,255,255,0.58); border-color: rgba(180,140,60,0.22); border-radius: 12px; } body.theme-genshin-dark #page-shop .shop-command-stats div { background: rgba(255,255,255,0.05); border-color: rgba(219,177,101,0.20); border-radius: 12px; } body.theme-genshin-light #page-shop .shop-command-stats span { color: #8a6028; font-family: Georgia, serif; font-style: italic; font-size: 9px; } body.theme-genshin-light #page-shop .shop-command-stats strong { color: #3d2a10; font-family: Georgia, serif; font-size: 14px; } body.theme-genshin-dark #page-shop .shop-command-stats span { color: rgba(219,177,101,0.6); font-family: Georgia, serif; font-style: italic; font-size: 9px; } body.theme-genshin-dark #page-shop .shop-command-stats strong { color: #f0d896; font-family: Georgia, serif; font-size: 14px; } /* ── Featured item ── */ body.theme-genshin-light #page-shop .shop-featured-item { background: linear-gradient(135deg, rgba(255,250,238,0.90), rgba(238,226,198,0.80)); border: 1px solid rgba(180,140,60,0.35); border-radius: 16px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.65), 0 8px 20px rgba(140,100,30,0.10); } body.theme-genshin-dark #page-shop .shop-featured-item { background: linear-gradient(135deg, rgba(50,38,28,0.7), rgba(38,28,50,0.8)); border: 1px solid rgba(219,177,101,0.32); border-radius: 16px; box-shadow: 0 8px 20px rgba(0,0,0,0.35); } body.theme-genshin-light #page-shop .shop-featured-icon { background: linear-gradient(180deg, #fff8e0, #f0d896); border-color: #c89b4a; box-shadow: inset 0 1px 0 rgba(255,255,255,0.6); border-radius: 14px; } body.theme-genshin-dark #page-shop .shop-featured-icon { background: linear-gradient(180deg, rgba(219,177,101,0.22), rgba(120,80,30,0.35)); border-color: rgba(219,177,101,0.55); border-radius: 14px; } body.theme-genshin-light #page-shop .shop-featured-kicker, body.theme-genshin-dark #page-shop .shop-featured-kicker { font-family: Georgia, serif; font-style: italic; font-size: 9px; letter-spacing: 1px; text-transform: none; } body.theme-genshin-light #page-shop .shop-featured-kicker { color: #a07028; } body.theme-genshin-dark #page-shop .shop-featured-kicker { color: rgba(219,177,101,0.75); } body.theme-genshin-light #page-shop .shop-featured-name { font-family: Georgia, serif; font-size: 13px; font-weight: 700; color: #2d3344; } body.theme-genshin-dark #page-shop .shop-featured-name { font-family: Georgia, serif; font-size: 13px; font-weight: 700; color: #ede2cc; } body.theme-genshin-light #page-shop .shop-featured-desc { font-family: Georgia, serif; font-style: italic; font-size: 11px; color: #6b5530; } body.theme-genshin-dark #page-shop .shop-featured-desc { font-family: Georgia, serif; font-style: italic; font-size: 11px; color: #b0a088; } body.theme-genshin-light #page-shop .shop-featured-price { font-family: Georgia, serif; font-weight: 700; font-size: 15px; color: #7a5010; text-shadow: 0 1px 0 rgba(255,250,220,0.8); } body.theme-genshin-dark #page-shop .shop-featured-price { font-family: Georgia, serif; font-weight: 700; font-size: 15px; color: #f0d896; text-shadow: 0 0 12px rgba(219,177,101,0.5); } /* ── Category headers ── */ body.theme-genshin-light #page-shop .shop-cat, body.theme-genshin-dark #page-shop .shop-cat { font-family: Georgia, serif; padding: 14px 14px 6px; } body.theme-genshin-light #page-shop .shop-cat strong { color: #3d2a10; font-size: 13px; } body.theme-genshin-dark #page-shop .shop-cat strong { color: #ede2cc; font-size: 13px; } body.theme-genshin-light #page-shop .shop-cat em { font-family: Georgia, serif; font-style: italic; color: #8a6028; } body.theme-genshin-dark #page-shop .shop-cat em { font-family: Georgia, serif; font-style: italic; color: rgba(219,177,101,0.65); } /* Divider line: warm gold instead of red */ body.theme-genshin-light #page-shop .shop-cat::after { background: linear-gradient(90deg, rgba(180,140,60,0.55), rgba(219,177,101,0.25), transparent); } body.theme-genshin-dark #page-shop .shop-cat::after { background: linear-gradient(90deg, rgba(219,177,101,0.45), rgba(219,177,101,0.15), transparent); } body.theme-genshin-light #page-shop .shop-cat-kicker, body.theme-genshin-dark #page-shop .shop-cat-kicker { font-family: Georgia, serif; font-style: italic; font-size: 8px; letter-spacing: 1.2px; text-transform: none; } body.theme-genshin-light #page-shop .shop-cat-kicker { color: #a07028; } body.theme-genshin-dark #page-shop .shop-cat-kicker { color: rgba(219,177,101,0.65); } body.theme-genshin-light #page-shop .shop-cat-count { background: rgba(255,255,255,0.6); border-color: rgba(180,140,60,0.3); color: #7a5010; font-family: Georgia, serif; } body.theme-genshin-dark #page-shop .shop-cat-count { background: rgba(219,177,101,0.12); border-color: rgba(219,177,101,0.3); color: #f0d896; font-family: Georgia, serif; } /* ── Item cards ── */ body.theme-genshin-light #page-shop .shop-grid-modern .shop-item { background: radial-gradient(ellipse at 0% 0%, rgba(255,255,255,0.7), transparent 50%), linear-gradient(155deg, rgba(255,252,242,0.88), rgba(239,228,207,0.74)); border: 1px solid rgba(180,140,60,0.22); border-radius: 16px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.65), 0 6px 16px rgba(120,88,30,0.08); } body.theme-genshin-dark #page-shop .shop-grid-modern .shop-item { background: radial-gradient(ellipse at 0% 0%, rgba(219,177,101,0.12), transparent 50%), linear-gradient(155deg, rgba(40,30,55,0.92), rgba(28,22,44,0.96)); border: 1px solid rgba(219,177,101,0.20); border-radius: 16px; box-shadow: 0 6px 16px rgba(0,0,0,0.35); } /* Shimmer accent line */ body.theme-genshin-light #page-shop .shop-grid-modern .shop-item::before { background: linear-gradient(90deg, rgba(219,177,101,0.30), rgba(255,240,190,0.15) 40%, transparent); } body.theme-genshin-dark #page-shop .shop-grid-modern .shop-item::before { background: linear-gradient(90deg, rgba(219,177,101,0.22), rgba(219,177,101,0.06) 40%, transparent); } body.theme-genshin-light #page-shop .shop-grid-modern .shop-item-icon { background: linear-gradient(180deg, #fff8e0, #f0d896); border-color: #c89b4a; box-shadow: inset 0 1px 0 rgba(255,255,255,0.55), 0 2px 6px rgba(160,120,40,0.12); border-radius: 12px; } body.theme-genshin-dark #page-shop .shop-grid-modern .shop-item-icon { background: linear-gradient(180deg, rgba(219,177,101,0.22), rgba(100,70,25,0.38)); border-color: rgba(219,177,101,0.5); border-radius: 12px; } body.theme-genshin-light #page-shop .shop-item-tier, body.theme-genshin-light #page-shop .shop-item-hint { font-family: Georgia, serif; font-style: italic; font-size: 8px; background: rgba(255,255,255,0.55); border-color: rgba(180,140,60,0.25); color: #7a5010; } body.theme-genshin-dark #page-shop .shop-item-tier, body.theme-genshin-dark #page-shop .shop-item-hint { font-family: Georgia, serif; font-style: italic; font-size: 8px; background: rgba(219,177,101,0.10); border-color: rgba(219,177,101,0.25); color: rgba(219,177,101,0.85); } body.theme-genshin-light #page-shop .shop-item-name { font-family: Georgia, serif; font-weight: 700; font-size: 13px; color: #2d3344; } body.theme-genshin-dark #page-shop .shop-item-name { font-family: Georgia, serif; font-weight: 700; font-size: 13px; color: #ede2cc; } body.theme-genshin-light #page-shop .shop-item-cn { font-family: Georgia, serif; font-style: italic; color: #8a6028; font-size: 11px; } body.theme-genshin-dark #page-shop .shop-item-cn { font-family: Georgia, serif; font-style: italic; color: rgba(219,177,101,0.7); font-size: 11px; } body.theme-genshin-light #page-shop .shop-item-state, body.theme-genshin-light #page-shop .shop-item-limit { font-family: Georgia, serif; font-style: italic; font-size: 9px; color: #786b56; } body.theme-genshin-dark #page-shop .shop-item-state, body.theme-genshin-dark #page-shop .shop-item-limit { font-family: Georgia, serif; font-style: italic; font-size: 9px; color: #a09880; } /* Item price */ body.theme-genshin-light #page-shop .shop-item-price { font-family: Georgia, serif; font-weight: 700; color: #7a5010; } body.theme-genshin-dark #page-shop .shop-item-price { font-family: Georgia, serif; font-weight: 700; color: #f0d896; } /* ── Buy button (Primogem style) ── */ body.theme-genshin-light #page-shop .shop-item-buy, body.theme-genshin-dark #page-shop .shop-item-buy { font-family: Georgia, serif; font-style: italic; font-size: 10px; letter-spacing: 0.3px; border-radius: 999px; border-width: 1px; padding: 6px 12px; } body.theme-genshin-light #page-shop .shop-item-buy { background: linear-gradient(180deg, #fff5d8, #e8c878); border-color: #c89b4a; color: #5a3a10; box-shadow: inset 0 1px 0 rgba(255,255,255,0.55), 0 2px 6px rgba(160,120,40,0.18); } body.theme-genshin-light #page-shop .shop-item-buy:active { background: linear-gradient(180deg, #f0d896, #d4a84a); box-shadow: inset 0 1px 0 rgba(255,255,255,0.3), 0 1px 3px rgba(160,120,40,0.15); } body.theme-genshin-dark #page-shop .shop-item-buy { background: linear-gradient(180deg, rgba(219,177,101,0.32), rgba(150,110,50,0.45)); border-color: rgba(219,177,101,0.7); color: #f5e3b8; box-shadow: 0 2px 6px rgba(0,0,0,0.3); } body.theme-genshin-dark #page-shop .shop-item-buy:active { background: linear-gradient(180deg, rgba(219,177,101,0.45), rgba(180,140,60,0.55)); } body.theme-genshin-light #page-shop .shop-item-buy.no-money { background: rgba(255,255,255,0.5); border-color: rgba(180,140,60,0.25); color: #8a7258; } body.theme-genshin-dark #page-shop .shop-item-buy.no-money { background: rgba(255,255,255,0.05); border-color: rgba(219,177,101,0.18); color: #7a6e5e; } /* ── Soldout / unavailable badges ── */ body.theme-genshin-light #page-shop .shop-item-badge.soldout { font-family: Georgia, serif; font-style: italic; background: rgba(160,80,30,0.12); border-color: rgba(160,80,30,0.30); color: #a03020; } body.theme-genshin-dark #page-shop .shop-item-badge.soldout { font-family: Georgia, serif; font-style: italic; background: rgba(180,60,40,0.18); border-color: rgba(180,60,40,0.40); color: #f08878; } body.theme-genshin-light #page-shop .shop-item-badge.unavailable { font-family: Georgia, serif; font-style: italic; background: rgba(120,100,70,0.12); border-color: rgba(120,100,70,0.28); color: #786b56; } body.theme-genshin-dark #page-shop .shop-item-badge.unavailable { font-family: Georgia, serif; font-style: italic; background: rgba(255,255,255,0.05); border-color: rgba(219,177,101,0.18); color: #7a6e5e; } /* ── Limit indicators in Genshin tones ── */ body.theme-genshin-light #page-shop .shop-item-limit.limit-soldout { color: #a03020; } body.theme-genshin-dark #page-shop .shop-item-limit.limit-soldout { color: #f08878; } body.theme-genshin-light #page-shop .shop-item-limit.limit-low { color: #a06020; } body.theme-genshin-dark #page-shop .shop-item-limit.limit-low { color: #f0b878; } body.theme-genshin-light #page-shop .shop-item-limit.limit-medium { color: #7a5010; } body.theme-genshin-dark #page-shop .shop-item-limit.limit-medium { color: rgba(219,177,101,0.85); } /* ── Dark theme: general surfaces ── */ body.theme-genshin-dark #page-shop .shop-item, body.theme-genshin-dark #page-shop .shop-section { border-color: rgba(219,177,101,0.12) !important; } body.theme-genshin-dark #page-shop .shop-item { border-bottom-color: rgba(219,177,101,0.10) !important; } body.theme-genshin-dark #page-shop .frozen-banner { background: rgba(219,80,60,0.12); border-color: rgba(219,80,60,0.35); color: #f08878; } body.theme-genshin-light #page-shop .frozen-banner { background: rgba(180,40,30,0.08); border-color: rgba(180,40,30,0.28); color: #a03020; font-family: Georgia, serif; font-style: italic; } /* ── Inventory tab in Genshin ── */ body.theme-genshin-light #shopInventoryContent .inventory-item, body.theme-genshin-dark #shopInventoryContent .inventory-item { border-radius: 14px; margin-bottom: 6px; } body.theme-genshin-light #shopInventoryContent .inventory-item { background: linear-gradient(135deg, rgba(255,252,242,0.85), rgba(239,226,200,0.70)); border-color: rgba(180,140,60,0.22); } body.theme-genshin-dark #shopInventoryContent .inventory-item { background: linear-gradient(135deg, rgba(40,30,55,0.85), rgba(30,22,44,0.90)); border-color: rgba(219,177,101,0.18); } /* Ornament line under subtabs */ body.theme-genshin-light #page-shop .shop-subtabs::after, body.theme-genshin-dark #page-shop .shop-subtabs::after { content: ''; display: block; height: 1px; width: 60%; margin: -4px auto 0; background: linear-gradient(90deg, transparent, rgba(219,177,101,0.4), transparent); } /* ================================================================ PAGE ANIMATIONS — glitch / stagger / pulse ================================================================ */ /* ── 1. GLITCH на китайских заголовках ───────────────────────── */ @keyframes glitchCn { 0%, 80%, 100% { transform: none; text-shadow: none; clip-path: none; opacity: 1; } 81% { transform: translateX(-3px) skewX(-3deg); text-shadow: 2px 0 #ff0044, -2px 0 #00eeff; opacity: 0.9; } 82% { transform: translateX(3px); text-shadow: -3px 0 #ff0044, 2px 0 #00eeff; clip-path: polygon(0 20%, 100% 20%, 100% 55%, 0 55%); opacity: 0.85; } 83% { transform: translateX(-1px); clip-path: polygon(0 60%, 100% 60%, 100% 85%, 0 85%); text-shadow: 1px 0 rgba(255,0,68,0.7); } 84% { transform: none; text-shadow: none; clip-path: none; opacity: 1; } 91% { transform: translateX(1px); text-shadow: -1px 0 rgba(0,238,255,0.5); } 92%, 94% { transform: none; text-shadow: none; } 93% { transform: translateX(-1px) skewX(-1deg); text-shadow: 1px 0 rgba(255,0,68,0.35); } } .page-title-cn { animation: glitchCn 10s ease-in-out infinite; display: inline-block; } /* Делители: более тихий глитч, разные фазы у разных элементов */ @keyframes glitchDividerText { 0%, 88%, 100% { text-shadow: none; letter-spacing: inherit; } 89% { text-shadow: 1px 0 rgba(255,0,68,0.5), -1px 0 rgba(0,238,255,0.5); letter-spacing: 1.5px; } 90% { text-shadow: -1px 0 rgba(255,0,68,0.4); letter-spacing: inherit; } 91% { text-shadow: none; } } .cn-divider { animation: glitchDividerText 13s ease-in-out infinite; } /* Сдвигаем фазы у вложенных делителей чтобы не глитчили синхронно */ .card .cn-divider:nth-of-type(2) { animation-delay: -4.3s; } .card .cn-divider:nth-of-type(3) { animation-delay: -8.7s; } /* Для admin-темы глитч в синей гамме */ body.theme-admin .page-title-cn { animation-name: glitchCnBlue; } @keyframes glitchCnBlue { 0%, 80%, 100% { transform: none; text-shadow: none; clip-path: none; opacity: 1; } 81% { transform: translateX(-3px) skewX(-3deg); text-shadow: 2px 0 #ff4488, -2px 0 #6478ff; opacity: 0.9; } 82% { transform: translateX(3px); text-shadow: -3px 0 #ff4488, 2px 0 #00d4ff; clip-path: polygon(0 20%, 100% 20%, 100% 55%, 0 55%); } 83% { transform: none; text-shadow: none; clip-path: none; opacity: 1; } 91% { transform: translateX(1px); text-shadow: -1px 0 rgba(0,212,255,0.5); } 92% { transform: none; text-shadow: none; } } /* ── 2. STAGGER ВХОД КАРТОЧЕК ────────────────────────────────── */ @keyframes cardEnter { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } } /* .card внутри активной страницы */ .page.active .card { animation: cardEnter 0.38s ease backwards; } .page.active .card:nth-child(2) { animation-delay: 0.06s; } .page.active .card:nth-child(3) { animation-delay: 0.12s; } .page.active .card:nth-child(4) { animation-delay: 0.18s; } .page.active .card:nth-child(5) { animation-delay: 0.24s; } .page.active .card:nth-child(6) { animation-delay: 0.29s; } .page.active .card:nth-child(7) { animation-delay: 0.33s; } .page.active .card:nth-child(n+8) { animation-delay: 0.37s; } /* Карточки в подконтейнерах (rating, diary, etc.) */ .page.active > * > .card:nth-child(1) { animation-delay: 0.00s; } .page.active > * > .card:nth-child(2) { animation-delay: 0.07s; } .page.active > * > .card:nth-child(3) { animation-delay: 0.14s; } .page.active > * > .card:nth-child(4) { animation-delay: 0.21s; } .page.active > * > .card:nth-child(n+5) { animation-delay: 0.28s; } /* More-меню: иконки выпрыгивают */ @keyframes moreItemEnter { from { opacity: 0; transform: scale(0.88) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } } .page.active .more-grid .more-item { animation: moreItemEnter 0.30s cubic-bezier(0.34,1.56,0.64,1) backwards; } .page.active .more-grid .more-item:nth-child(1) { animation-delay: 0.00s; } .page.active .more-grid .more-item:nth-child(2) { animation-delay: 0.05s; } .page.active .more-grid .more-item:nth-child(3) { animation-delay: 0.10s; } .page.active .more-grid .more-item:nth-child(4) { animation-delay: 0.15s; } .page.active .more-grid .more-item:nth-child(5) { animation-delay: 0.20s; } .page.active .more-grid .more-item:nth-child(6) { animation-delay: 0.24s; } .page.active .more-grid .more-item:nth-child(7) { animation-delay: 0.28s; } .page.active .more-grid .more-item:nth-child(8) { animation-delay: 0.32s; } .page.active .more-grid .more-item:nth-child(9) { animation-delay: 0.35s; } .page.active .more-grid .more-item:nth-child(n+10){ animation-delay: 0.37s; } /* Shop items стagger */ .shop-grid-modern .shop-item { animation: cardEnter 0.36s ease backwards; } .shop-grid-modern .shop-item:nth-child(1) { animation-delay: 0.00s; } .shop-grid-modern .shop-item:nth-child(2) { animation-delay: 0.07s; } .shop-grid-modern .shop-item:nth-child(3) { animation-delay: 0.14s; } .shop-grid-modern .shop-item:nth-child(4) { animation-delay: 0.21s; } .shop-grid-modern .shop-item:nth-child(5) { animation-delay: 0.27s; } .shop-grid-modern .shop-item:nth-child(6) { animation-delay: 0.32s; } .shop-grid-modern .shop-item:nth-child(n+7) { animation-delay: 0.36s; } /* Inventory items */ @keyframes invItemEnter { from { opacity: 0; transform: translateX(-10px); } to { opacity: 1; transform: translateX(0); } } .page.active .inventory-item { animation: invItemEnter 0.30s ease backwards; } .page.active .inventory-item:nth-child(1) { animation-delay: 0.00s; } .page.active .inventory-item:nth-child(2) { animation-delay: 0.05s; } .page.active .inventory-item:nth-child(3) { animation-delay: 0.10s; } .page.active .inventory-item:nth-child(4) { animation-delay: 0.15s; } .page.active .inventory-item:nth-child(5) { animation-delay: 0.20s; } .page.active .inventory-item:nth-child(n+6) { animation-delay: 0.24s; } /* ── 3. PULSE GLOW профильной карточки ──────────────────────── */ /* Базовый пульс — золотой (NetWatch default) */ @keyframes profilePulse { 0%, 100% { box-shadow: 0 4px 20px rgba(0,0,0,0.25), 0 0 10px rgba(212,175,55,0.06); } 50% { box-shadow: 0 4px 28px rgba(0,0,0,0.30), 0 0 28px rgba(212,175,55,0.18), 0 0 56px rgba(212,175,55,0.07); } } .profile-card-home { animation: profilePulse 4.5s ease-in-out infinite; } /* Admin-роль: красный пульс */ @keyframes profilePulseRed { 0%, 100% { box-shadow: 0 0 14px rgba(200,30,30,0.10), inset 0 0 18px rgba(200,30,30,0.04); } 50% { box-shadow: 0 0 36px rgba(200,30,30,0.28), 0 0 70px rgba(200,30,30,0.10), inset 0 0 26px rgba(200,30,30,0.10); } } body.is-admin .profile-card-home { animation: profilePulseRed 4s ease-in-out infinite; } /* Admin theme: синий пульс */ @keyframes profilePulseBlue { 0%, 100% { box-shadow: 0 0 14px rgba(100,120,255,0.10), inset 0 0 18px rgba(100,120,255,0.05); } 50% { box-shadow: 0 0 36px rgba(100,120,255,0.32), 0 0 70px rgba(100,120,255,0.12), inset 0 0 26px rgba(100,120,255,0.10); } } body.is-admin.theme-admin .profile-card-home { animation: profilePulseBlue 4s ease-in-out infinite; } /* Genshin: мягкий золотой пульс */ @keyframes profilePulseGold { 0%, 100% { box-shadow: 0 4px 20px rgba(0,0,0,0.20), 0 0 10px rgba(219,177,101,0.06); } 50% { box-shadow: 0 4px 30px rgba(0,0,0,0.28), 0 0 30px rgba(219,177,101,0.22), 0 0 60px rgba(219,177,101,0.08); } } body.theme-genshin-light .profile-card-home, body.theme-genshin-dark .profile-card-home { animation: profilePulseGold 5.5s ease-in-out infinite; } /* ================================================================ BLACKWALL — ARCHITECT MODE ANIMATIONS & ATMOSPHERE ================================================================ */ /* ── Corner vignette: красный+фиолетовый по краям экрана ────── */ body.is-architect::after { content: ''; position: fixed; inset: 0; background: radial-gradient(ellipse at 0% 0%, rgba(232,0,0,0.09) 0%, transparent 38%), radial-gradient(ellipse at 100% 0%, rgba(157,0,221,0.06) 0%, transparent 32%), radial-gradient(ellipse at 0% 100%, rgba(232,0,0,0.07) 0%, transparent 32%), radial-gradient(ellipse at 100% 100%,rgba(157,0,221,0.05) 0%, transparent 30%); pointer-events: none; z-index: 0; animation: blackwallEdgePulse 4s ease-in-out infinite; } .raid-result-panel { margin: 0 0 10px; padding: 10px 12px; border-radius: 14px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.04); text-align: left; animation: fadeIn 0.22s ease-out; } .raid-result-panel.success { border-color: rgba(46,204,113,0.36); background: rgba(46,204,113,0.10); } .raid-result-panel.danger { border-color: rgba(255,75,85,0.38); background: rgba(180,20,20,0.14); } .raid-result-title { color: var(--text); font-size: 12px; font-weight: 900; letter-spacing: 1px; } .raid-result-text { margin-top: 4px; color: var(--text2); font-size: 10px; line-height: 1.5; } .raid-question-block { margin: 0 0 10px; padding: 12px; border-radius: 10px; border: 1px solid rgba(0,255,136,0.20); background: rgba(0,20,10,0.75); animation: fadeIn 0.22s ease-out; } .raid-q-kicker { font-family: monospace; font-size: 8px; letter-spacing: 2px; color: rgba(0,255,136,0.6); margin-bottom: 8px; } .raid-q-prompt { font-family: monospace; font-size: 11px; color: #d0ffe8; line-height: 1.65; margin-bottom: 10px; } .raid-q-options { display: flex; flex-direction: column; gap: 5px; margin-bottom: 10px; } .raid-q-option { display: flex; align-items: center; gap: 9px; background: rgba(0,255,136,0.04); border: 1px solid rgba(0,255,136,0.14); border-radius: 6px; padding: 8px 10px; cursor: pointer; font-family: monospace; font-size: 11px; color: var(--text); text-align: left; width: 100%; transition: border-color 0.15s, background 0.15s; } .raid-q-option.selected { border-color: rgba(0,255,136,0.65); background: rgba(0,255,136,0.10); color: #d0ffe8; } .raid-q-opt-key { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; background: rgba(0,255,136,0.12); border-radius: 4px; font-size: 9px; font-weight: 700; color: rgba(0,255,136,0.9); flex-shrink: 0; } .raid-q-option.selected .raid-q-opt-key { background: rgba(0,255,136,0.85); color: #001a0a; } .raid-q-submit { width: 100%; padding: 9px; background: rgba(0,255,136,0.08); border: 1px solid rgba(0,255,136,0.30); border-radius: 6px; color: rgba(0,255,136,0.85); font-family: monospace; font-size: 9px; letter-spacing: 1.5px; cursor: pointer; transition: background 0.15s; } .raid-q-submit:disabled { opacity: 0.32; cursor: not-allowed; } .raid-q-submit:not(:disabled):active { background: rgba(0,255,136,0.20); } /* Genshin theme question block */ body.theme-genshin .raid-question-block { background: rgba(240,235,220,0.80); border-color: rgba(120,90,50,0.25); } body.theme-genshin .raid-q-kicker { color: rgba(120,80,30,0.7); } body.theme-genshin .raid-q-prompt { color: #3a2a10; } body.theme-genshin .raid-q-option { background: rgba(180,140,80,0.08); border-color: rgba(120,90,50,0.20); color: #3a2a10; } body.theme-genshin .raid-q-option.selected { border-color: rgba(120,80,30,0.60); background: rgba(180,140,80,0.18); color: #2a1a00; } body.theme-genshin .raid-q-opt-key { background: rgba(180,140,80,0.18); color: rgba(120,80,30,0.9); } body.theme-genshin .raid-q-option.selected .raid-q-opt-key { background: rgba(160,110,40,0.80); color: #fff8ea; } body.theme-genshin .raid-q-submit { background: rgba(180,140,80,0.12); border-color: rgba(120,80,30,0.35); color: rgba(100,60,10,0.9); } .raid-roster-box { margin: 0 0 12px; padding: 10px; border-radius: 14px; border: 1px solid rgba(255,255,255,0.08); background: rgba(0,0,0,0.16); } .raid-roster-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; color: var(--text3); font-family: monospace; font-size: 8px; letter-spacing: 1px; } .raid-roster { display: flex; flex-wrap: wrap; gap: 6px; min-height: 30px; } .raid-roster-chip { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; padding: 5px 8px 5px 5px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.10); background: rgba(255,255,255,0.04); color: var(--text2); font-size: 9px; font-weight: 800; } .raid-roster-chip.me { border-color: rgba(46,204,113,0.34); background: rgba(46,204,113,0.10); color: #d6ffe9; } .raid-roster-chip b { width: 18px; height: 18px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; background: rgba(212,175,55,0.14); color: var(--gold); font-size: 8px; } .raid-roster-empty { align-self: center; color: var(--text3); font-size: 10px; } body.theme-genshin .raid-brief-card, body.theme-genshin .raid-roster-box, body.theme-genshin .raid-result-panel { border-color: rgba(75,83,102,0.14); background: rgba(255,255,255,0.48); } body.theme-genshin .raid-roster-chip { background: rgba(75,83,102,0.07); border-color: rgba(75,83,102,0.12); color: #4b5366; } /* Genshin raid polish: parchment trial instead of NetWatch breach */ body.theme-genshin .raid-overlay { background: radial-gradient(circle at 50% 0%, rgba(219,177,101,0.24), transparent 34%), radial-gradient(circle at 100% 100%, rgba(80,116,154,0.18), transparent 42%), rgba(35, 30, 24, 0.72); backdrop-filter: blur(8px) saturate(1.08); } body.theme-genshin .raid-content { border-color: rgba(180,132,62,0.46); background: radial-gradient(circle at 18% 0%, rgba(255,244,209,0.92), transparent 34%), radial-gradient(circle at 100% 16%, rgba(184,214,226,0.34), transparent 38%), linear-gradient(145deg, rgba(252,246,230,0.97), rgba(231,219,195,0.96)); box-shadow: 0 28px 70px rgba(77, 61, 38, 0.32), inset 0 0 0 1px rgba(255,255,255,0.52); color: #3d4555; } body.theme-genshin .raid-content::before { background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.35) 18%, transparent 36%), repeating-linear-gradient(90deg, rgba(128,94,42,0.035) 0 1px, transparent 1px 10px); opacity: 0.82; } body.theme-genshin .raid-content::after { border-color: rgba(180,132,62,0.16); } body.theme-genshin .btn-close-raid { color: rgba(61,69,85,0.62); } body.theme-genshin .btn-close-raid:hover { color: #9b6f2c; } body.theme-genshin .boss-frame::before { border-color: rgba(180,132,62,0.28); background: radial-gradient(circle at center, rgba(255,255,255,0.48), transparent 66%), linear-gradient(180deg, rgba(219,177,101,0.14), rgba(75,83,102,0.05)); box-shadow: 0 16px 38px rgba(120,86,42,0.13); } body.theme-genshin .boss-frame::after { background: radial-gradient(circle, rgba(219,177,101,0.24), transparent 70%); } body.theme-genshin .boss-img { border-color: rgba(180,132,62,0.48); background: radial-gradient(circle at 50% 16%, rgba(255,255,255,0.72), transparent 52%), linear-gradient(180deg, rgba(255,255,255,0.52), rgba(219,177,101,0.08)); box-shadow: 0 16px 40px rgba(120,86,42,0.18), inset 0 0 0 1px rgba(255,255,255,0.52); } body.theme-genshin .boss-name { color: #313947; text-shadow: 0 1px 0 rgba(255,255,255,0.65); } body.theme-genshin .boss-title { color: #9b6f2c; opacity: 0.95; } body.theme-genshin .raid-kicker { border-color: rgba(180,132,62,0.26); background: rgba(255,255,255,0.46); color: #8a6128; } body.theme-genshin .raid-kicker-dot { background: #dbb165; box-shadow: 0 0 14px rgba(219,177,101,0.85); } body.theme-genshin .raid-chip { border-color: rgba(180,132,62,0.18); background: rgba(255,255,255,0.42); color: #586276; } body.theme-genshin .raid-status-block { border-color: rgba(180,132,62,0.18); background: linear-gradient(180deg, rgba(255,255,255,0.58), rgba(255,255,255,0.24)), rgba(219,177,101,0.08); } body.theme-genshin .raid-status-block::before { background: linear-gradient(90deg, transparent, rgba(219,177,101,0.18), transparent); } body.theme-genshin .raid-meter-eyebrow, body.theme-genshin .raid-progress-hint, body.theme-genshin .raid-progress-percent, body.theme-genshin .raid-roster-head, body.theme-genshin .raid-brief-card span { color: rgba(61,69,85,0.64); } body.theme-genshin .raid-meter-state { border-color: rgba(180,132,62,0.22); background: rgba(219,177,101,0.14); color: #8a6128; } body.theme-genshin .raid-progress-container { background: linear-gradient(90deg, rgba(61,69,85,0.04) 0 8%, transparent 8% 10%, rgba(61,69,85,0.04) 10% 18%, transparent 18% 20%, rgba(61,69,85,0.04) 20% 28%, transparent 28% 30%, rgba(61,69,85,0.04) 30% 38%, transparent 38% 40%, rgba(61,69,85,0.04) 40% 48%, transparent 48% 50%, rgba(61,69,85,0.04) 50% 58%, transparent 58% 60%, rgba(61,69,85,0.04) 60% 68%, transparent 68% 70%, rgba(61,69,85,0.04) 70% 78%, transparent 78% 80%, rgba(61,69,85,0.04) 80% 88%, transparent 88% 90%, rgba(61,69,85,0.04) 90% 100%), rgba(255,255,255,0.46); border-color: rgba(180,132,62,0.18); } body.theme-genshin .raid-progress-bar { background: linear-gradient(90deg, #7aa7b8, #dbb165 64%, #f0d89a); box-shadow: 0 0 16px rgba(219,177,101,0.42); } body.theme-genshin .raid-result-panel.success { border-color: rgba(86,150,106,0.28); background: rgba(86,150,106,0.10); } body.theme-genshin .raid-result-panel.danger { border-color: rgba(180,92,72,0.28); background: rgba(180,92,72,0.10); } body.theme-genshin .raid-result-title, body.theme-genshin .raid-count-label, body.theme-genshin .raid-result-text { color: #3d4555; } /* ===== GENSHIN DARK: night-palette overrides for raid overlay ===== body.theme-genshin's raid-content uses a cream/parchment "Liyue day" palette that clashes with the dark theme's background. Re-skin to the genshin-dark "Liyue night" palette (#1a1628 + gold), same structure. */ body.theme-genshin-dark .raid-overlay { background: radial-gradient(circle at 50% 0%, rgba(219,177,101,0.16), transparent 34%), radial-gradient(circle at 100% 100%, rgba(80,90,154,0.18), transparent 42%), rgba(10, 8, 16, 0.82); } body.theme-genshin-dark .raid-content { border-color: rgba(219,177,101,0.28); background: radial-gradient(circle at 18% 0%, rgba(60,52,80,0.6), transparent 34%), radial-gradient(circle at 100% 16%, rgba(80,90,154,0.22), transparent 38%), linear-gradient(145deg, rgba(34,28,46,0.97), rgba(20,16,30,0.98)); box-shadow: 0 28px 70px rgba(0,0,0,0.5), inset 0 0 0 1px rgba(255,255,255,0.05); color: #e8e0d0; } body.theme-genshin-dark .raid-content::before { background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.06) 18%, transparent 36%), repeating-linear-gradient(90deg, rgba(219,177,101,0.03) 0 1px, transparent 1px 10px); opacity: 0.82; } body.theme-genshin-dark .raid-content::after { border-color: rgba(219,177,101,0.12); } body.theme-genshin-dark .btn-close-raid { color: rgba(232,224,208,0.5); } body.theme-genshin-dark .btn-close-raid:hover { color: #dbb165; } body.theme-genshin-dark .boss-frame::before { border-color: rgba(219,177,101,0.22); background: radial-gradient(circle at center, rgba(219,177,101,0.08), transparent 66%), linear-gradient(180deg, rgba(219,177,101,0.08), rgba(80,90,154,0.06)); box-shadow: 0 16px 38px rgba(0,0,0,0.35); } body.theme-genshin-dark .boss-frame::after { background: radial-gradient(circle, rgba(219,177,101,0.18), transparent 70%); } body.theme-genshin-dark .boss-img { border-color: rgba(219,177,101,0.32); background: radial-gradient(circle at 50% 16%, rgba(255,255,255,0.08), transparent 52%), linear-gradient(180deg, rgba(255,255,255,0.04), rgba(219,177,101,0.05)); box-shadow: 0 16px 40px rgba(0,0,0,0.4), inset 0 0 0 1px rgba(255,255,255,0.05); } body.theme-genshin-dark .boss-name { color: #e8e0d0; text-shadow: 0 1px 4px rgba(0,0,0,0.4); } body.theme-genshin-dark .boss-title { color: #dbb165; opacity: 0.95; } body.theme-genshin-dark .raid-kicker { border-color: rgba(219,177,101,0.26); background: rgba(219,177,101,0.08); color: #dbb165; } body.theme-genshin-dark .raid-kicker-dot { background: #dbb165; box-shadow: 0 0 14px rgba(219,177,101,0.85); } body.theme-genshin-dark .raid-chip { border-color: rgba(219,177,101,0.16); background: rgba(255,255,255,0.04); color: #a09880; } body.theme-genshin-dark .raid-status-block { border-color: rgba(219,177,101,0.16); background: linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02)), rgba(219,177,101,0.05); } body.theme-genshin-dark .raid-status-block::before { background: linear-gradient(90deg, transparent, rgba(219,177,101,0.16), transparent); } body.theme-genshin-dark .raid-meter-eyebrow, body.theme-genshin-dark .raid-progress-hint, body.theme-genshin-dark .raid-progress-percent, body.theme-genshin-dark .raid-roster-head, body.theme-genshin-dark .raid-brief-card span { color: rgba(232,224,208,0.6); } body.theme-genshin-dark .raid-meter-state { border-color: rgba(219,177,101,0.22); background: rgba(219,177,101,0.1); color: #dbb165; } body.theme-genshin-dark .raid-progress-container { background: linear-gradient(90deg, rgba(255,255,255,0.03) 0 8%, transparent 8% 10%, rgba(255,255,255,0.03) 10% 18%, transparent 18% 20%, rgba(255,255,255,0.03) 20% 28%, transparent 28% 30%, rgba(255,255,255,0.03) 30% 38%, transparent 38% 40%, rgba(255,255,255,0.03) 40% 48%, transparent 48% 50%, rgba(255,255,255,0.03) 50% 58%, transparent 58% 60%, rgba(255,255,255,0.03) 60% 68%, transparent 68% 70%, rgba(255,255,255,0.03) 70% 78%, transparent 78% 80%, rgba(255,255,255,0.03) 80% 88%, transparent 88% 90%, rgba(255,255,255,0.03) 90% 100%), rgba(255,255,255,0.02); border-color: rgba(219,177,101,0.16); } body.theme-genshin-dark .raid-progress-bar { background: linear-gradient(90deg, #5a6aa0, #dbb165 64%, #f0d89a); box-shadow: 0 0 16px rgba(219,177,101,0.35); } body.theme-genshin-dark .raid-result-panel.success { border-color: rgba(86,150,106,0.32); background: rgba(86,150,106,0.12); } body.theme-genshin-dark .raid-result-panel.danger { border-color: rgba(200,100,80,0.32); background: rgba(200,100,80,0.12); } body.theme-genshin-dark .raid-result-title, body.theme-genshin-dark .raid-count-label, body.theme-genshin-dark .raid-result-text { color: #e8e0d0; } /* ===== NETWATCH LIGHT: render the raid popup on the light "paper" palette like the rest of the light theme, instead of forcing the dark "night raid" look. */ body.theme-nw-light .raid-content { background: linear-gradient(180deg, rgba(255,255,255,0.5), transparent 35%), linear-gradient(145deg, rgba(204,34,0,0.05), #f4f1ed 55%); border-color: rgba(204,34,0,0.35); box-shadow: 0 0 35px rgba(204,34,0,0.1), inset 0 0 0 1px rgba(0,0,0,0.03); } body.theme-nw-light .boss-title { color: #993333; } body.theme-nw-light .raid-progress-container { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.1); } body.theme-nw-light .raid-kicker, body.theme-nw-light .raid-meter-state { border-color: rgba(122,80,16,0.25); background: rgba(122,80,16,0.08); } body.theme-nw-light .raid-brief-card, body.theme-nw-light .raid-roster-box, body.theme-nw-light .raid-result-panel { border-color: rgba(0,0,0,0.1); background: rgba(255,255,255,0.5); } body.theme-nw-light .raid-roster-chip { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.1); color: #1a1a1a; } body.theme-nw-light .raid-chip { border-color: rgba(0,0,0,0.12); background: rgba(0,0,0,0.04); } /* ===== RAID VISUAL ENHANCEMENTS ===== */ /* Result panel: center layout + icon */ .raid-result-panel { text-align: center; } .raid-result-icon { font-size: 28px; font-weight: 900; line-height: 1; margin-bottom: 5px; display: block; } .raid-result-panel.success .raid-result-icon, .raid-result-panel.success .raid-result-title { color: #2ecc71; } .raid-result-panel.danger .raid-result-icon, .raid-result-panel.danger .raid-result-title { color: #ff4d5a; } /* Success: double glow pulse */ .raid-result-panel.success { animation: fadeIn 0.22s ease-out, raidSuccessGlow 1.6s ease-in-out 2 0.3s; } @keyframes raidSuccessGlow { 0%, 100% { box-shadow: none; } 50% { box-shadow: 0 0 20px rgba(46,204,113,0.30); } } /* Danger: red flash on appear */ .raid-result-panel.danger { animation: fadeIn 0.22s ease-out, raidDangerFlash 0.35s ease-out 0.1s both; } @keyframes raidDangerFlash { 0% { background: rgba(200,30,30,0.45); border-color: rgba(220,60,60,0.8); } 100% { background: rgba(180,20,20,0.14); border-color: rgba(255,75,85,0.38); } } /* Content shake on defeat */ @keyframes raidFailShake { 0%,100% { transform: translateX(0) rotate(0); } 15% { transform: translateX(-8px) rotate(-0.7deg); } 30% { transform: translateX(7px) rotate(0.6deg); } 50% { transform: translateX(-5px) rotate(-0.3deg); } 70% { transform: translateX(4px); } 85% { transform: translateX(-2px); } } .raid-content.raid-shake { animation: raidFailShake 0.52s ease-out !important; transition: none !important; } /* Boss scan line overlay (NetWatch only) */ .boss-scan-overlay { position: absolute; width: 228px; height: 252px; border-radius: 28px; overflow: hidden; pointer-events: none; z-index: 2; opacity: 0; transition: opacity 0.6s 0.5s; } .raid-overlay.active .boss-scan-overlay { opacity: 1; } .boss-scan-overlay::after { content: ''; position: absolute; left: 0; right: 0; height: 40px; background: linear-gradient(180deg, transparent, rgba(255,30,55,0.11), transparent); top: -40px; animation: bossScanDown 3.2s linear infinite 1.2s; } @keyframes bossScanDown { from { transform: translateY(0); } to { transform: translateY(320px); } } body.theme-genshin .boss-scan-overlay { display: none; } /* Boss glitch (NetWatch) */ @keyframes bossNetGlitch { 0%, 86%, 100% { filter: none; transform: translateY(0) scale(1); } 87% { filter: brightness(1.6) hue-rotate(320deg) saturate(2.5); transform: translateX(-5px) scale(1.01); } 88% { filter: brightness(0.8) hue-rotate(180deg); transform: translateX(4px); } 89% { filter: none; transform: translateY(0) scale(1); } 90% { filter: brightness(1.3); transform: translateX(-2px); } 91% { filter: none; transform: translateX(0); } } .raid-overlay.active .boss-img { animation: bossFloat 4s ease-in-out infinite 0.9s, bossNetGlitch 8s linear infinite 3s; } body.theme-genshin .raid-overlay.active .boss-img { animation: bossFloat 4s ease-in-out infinite 0.9s; } /* Genshin aura pulse on boss */ body.theme-genshin .boss-frame::after { animation: genshinBossAura 3.2s ease-in-out infinite; } @keyframes genshinBossAura { 0%, 100% { opacity: 0.4; transform: scale(1); filter: blur(6px); } 50% { opacity: 0.9; transform: scale(1.18); filter: blur(14px); } } /* Genshin success shimmer */ body.theme-genshin .raid-result-panel.success { background: linear-gradient(135deg, rgba(219,177,101,0.22) 0%, rgba(240,235,220,0.09) 50%, rgba(219,177,101,0.22) 100% ); background-size: 200% auto; border-color: rgba(219,177,101,0.50); animation: fadeIn 0.22s ease-out, genshinSuccessShimmer 2.2s linear infinite 0.3s; } @keyframes genshinSuccessShimmer { from { background-position: 200% center; } to { background-position: -200% center; } } body.theme-genshin .raid-result-panel.success .raid-result-icon, body.theme-genshin .raid-result-panel.success .raid-result-title { color: #6b9c54; } body.theme-genshin .raid-result-panel.danger { background: rgba(150,70,50,0.14); border-color: rgba(180,80,60,0.40); } body.theme-genshin .raid-result-panel.danger .raid-result-icon, body.theme-genshin .raid-result-panel.danger .raid-result-title { color: #b84a38; } /* Roster chip entry animation */ .raid-roster-chip { animation: chipAppear 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) both; } @keyframes chipAppear { from { opacity: 0; transform: scale(0.5) translateY(-6px); } to { opacity: 1; transform: scale(1) translateY(0); } } body.theme-genshin #raid-status-text { color: rgba(61,69,85,0.78) !important; } body.theme-genshin #raid-action-btn { border: 1px solid rgba(180,132,62,0.22); background: linear-gradient(135deg, #d9b15f, #f1dca4); color: #3d4555; box-shadow: 0 14px 28px rgba(120,86,42,0.18); } @keyframes blackwallEdgePulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; } } /* ── Scan overlay на профильной карточке ───────────────────── */ .blackwall-overlay { display: none; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; overflow: hidden; z-index: 2; } body.is-architect .blackwall-overlay { display: block; } /* Горизонтальная линия скана */ body.is-architect .blackwall-overlay::before { content: ''; position: absolute; top: 0; bottom: 0; left: -5%; width: 2px; background: linear-gradient( 180deg, transparent 0%, rgba(232,34,0,0.7) 20%, rgba(255,204,0,0.95) 50%, rgba(232,34,0,0.7) 80%, transparent 100% ); box-shadow: 0 0 10px rgba(232,34,0,0.6), 0 0 20px rgba(232,34,0,0.2); animation: blackwallHScan 5.5s ease-in-out infinite; } @keyframes blackwallHScan { 0% { left: -5%; opacity: 0; } 4% { opacity: 1; } 95% { opacity: 0.7; } 100% { left: 106%; opacity: 0; } } /* Анимированная сетка нейронных узлов */ body.is-architect .blackwall-overlay::after { content: ''; position: absolute; inset: 0; background-image: linear-gradient(rgba(232,34,0,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(232,34,0,0.04) 1px, transparent 1px); background-size: 22px 22px; animation: blackwallGridDrift 18s linear infinite; } @keyframes blackwallGridDrift { from { background-position: 0 0, 0 0; } to { background-position: 22px 22px, 22px 22px; } } /* ── Heartbeat pulse — двойной удар (кардиомонитор) ─────────── */ @keyframes blackwallHeartbeat { 0%, 100% { box-shadow: 0 0 12px rgba(232,34,0,0.12), inset 0 0 16px rgba(232,34,0,0.05); } 6% { box-shadow: 0 0 55px rgba(232,34,0,0.45), 0 0 110px rgba(232,34,0,0.18), 0 0 0 2px rgba(255,204,0,0.5), inset 0 0 36px rgba(232,34,0,0.16); } 12% { box-shadow: 0 0 16px rgba(232,34,0,0.15), inset 0 0 18px rgba(232,34,0,0.06); } 18% { box-shadow: 0 0 38px rgba(232,34,0,0.30), 0 0 80px rgba(232,34,0,0.12), 0 0 0 1px rgba(255,204,0,0.35), inset 0 0 26px rgba(232,34,0,0.11); } 24% { box-shadow: 0 0 12px rgba(232,34,0,0.12), inset 0 0 16px rgba(232,34,0,0.05); } 36% { box-shadow: 0 0 14px rgba(157,78,221,0.10), inset 0 0 18px rgba(232,34,0,0.04); } } body.is-architect .profile-card-home { animation: blackwallHeartbeat 3.5s ease-in-out infinite !important; } /* ── Warning beacon на активных nav-кнопках ────────────────── */ @keyframes blackwallNavBeacon { 0%, 100% { text-shadow: 0 0 4px rgba(232,34,0,0.3); } 5% { text-shadow: 0 0 14px rgba(232,34,0,1), 0 0 28px rgba(255,204,0,0.5); } 10% { text-shadow: 0 0 4px rgba(232,34,0,0.3); } 16% { text-shadow: 0 0 10px rgba(232,34,0,0.8), 0 0 22px rgba(232,34,0,0.3); } 22% { text-shadow: 0 0 4px rgba(232,34,0,0.3); } } body.is-architect .nav-item.active, body.is-architect .nav-item.active .ti { animation: blackwallNavBeacon 3s ease-in-out infinite; } /* ── Corruption на кикере (ARCHITECT // PROTOCOL мигает) ─────── */ @keyframes blackwallKickerCorrupt { 0%, 86%, 100% { opacity: 1; filter: none; transform: none; } 87% { opacity: 0.15; filter: brightness(6) saturate(0); transform: translateX(3px); } 88% { opacity: 1; filter: none; transform: none; } 90% { opacity: 0.4; filter: hue-rotate(120deg) brightness(3); transform: translateX(-1px); } 91% { opacity: 1; filter: none; transform: none; } 95% { opacity: 0.7; filter: brightness(1.4); } 96% { opacity: 1; filter: none; } } body.is-architect .profile-card-kicker { animation: blackwallKickerCorrupt 9s ease-in-out infinite; } /* ── LED индикатор на бейдже ───────────────────────────────── */ @keyframes architectLED { 0%, 100% { opacity: 0.35; text-shadow: none; } 50% { opacity: 1; text-shadow: 0 0 8px #ff1500, 0 0 16px rgba(232,0,0,0.4); } } body.is-architect .profile-admin-badge::before { content: '◆ '; color: #ff1500; animation: architectLED 1.4s ease-in-out infinite; } /* ── Глитч страничного заголовка ───────────────────────────── */ @keyframes blackwallTitleGlitch { 0%, 88%, 100% { text-shadow: 0 0 30px rgba(232,34,0,0.7), 0 0 70px rgba(232,34,0,0.25); filter: none; transform: none; } 89% { text-shadow: 5px 0 rgba(232,34,0,0.95), -5px 0 rgba(255,204,0,0.95), 0 0 50px rgba(232,34,0,0.9); filter: brightness(1.3); transform: skewX(-2deg); } 90% { text-shadow: -3px 0 rgba(255,0,0,0.9), 4px 0 rgba(255,204,0,0.7); filter: none; transform: none; } 91% { text-shadow: 0 0 30px rgba(232,34,0,0.7), 0 0 70px rgba(232,34,0,0.25); filter: none; } 95% { text-shadow: 2px 0 rgba(157,78,221,0.5), 0 0 40px rgba(232,34,0,0.8); transform: translateX(1px); } 96% { text-shadow: 0 0 30px rgba(232,34,0,0.7), 0 0 70px rgba(232,34,0,0.25); transform: none; } } body.is-architect .page-title { animation: blackwallTitleGlitch 11s ease-in-out infinite; } /* ── Data-stream на строке статуса профиля ─────────────────── */ @keyframes blackwallStatusFlicker { 0%, 92%, 100% { opacity: 1; } 93% { opacity: 0.2; filter: brightness(3) saturate(0); } 94% { opacity: 1; filter: none; } 96% { opacity: 0.5; filter: brightness(2) hue-rotate(90deg); } 97% { opacity: 1; filter: none; } } body.is-architect .profile-status-line { animation: blackwallStatusFlicker 12s ease-in-out infinite; color: rgba(232,34,0,0.55); font-family: monospace; letter-spacing: 0.5px; } /* ── Flowing data border на cn-divider ──────────────────────── */ @keyframes blackwallDividerFlow { 0% { background-position: -200% center, 200% center; } 100% { background-position: 200% center, -200% center; } } body.is-architect .cn-divider { animation: none; background-size: 200% 1px, 200% 1px; background-repeat: no-repeat; background-position: -200% center, 200% center; animation: blackwallDividerFlow 4s linear infinite; } /* ── Card-label мигает как системный предупреждающий код ────── */ @keyframes blackwallLabelPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; letter-spacing: 2.5px; } } body.is-architect .card-label { animation: blackwallLabelPulse 2.8s ease-in-out infinite; } /* ── Architect theme card: улучшенная версия с живой полосой ── */ body.is-architect .architect-theme-card { border-color: rgba(232,34,0,0.7); box-shadow: 0 0 20px rgba(232,34,0,0.2), inset 0 0 30px rgba(232,34,0,0.04); animation: blackwallCardPulse 3s ease-in-out infinite; } @keyframes blackwallCardPulse { 0%, 100% { box-shadow: 0 0 20px rgba(232,34,0,0.15), inset 0 0 20px rgba(232,34,0,0.03); border-color: rgba(232,34,0,0.55); } 50% { box-shadow: 0 0 40px rgba(232,34,0,0.35), 0 0 80px rgba(157,78,221,0.08), inset 0 0 30px rgba(232,34,0,0.07); border-color: rgba(255,100,0,0.75); } } /* ── Scan-линия на аватаре (радар по окружности) ────────────── */ @keyframes blackwallAvatarRing { 0%, 100% { box-shadow: 0 0 0 0px rgba(232,34,0,0.5), 0 0 0 0px rgba(255,204,0,0); } 40% { box-shadow: 0 0 0 6px rgba(232,34,0,0.2), 0 0 0 12px rgba(255,204,0,0.08); } 60% { box-shadow: 0 0 0 8px rgba(232,34,0,0.0), 0 0 0 16px rgba(232,34,0,0.0); } } body.is-architect .profile-avatar-wrap { animation: blackwallAvatarRing 3.5s ease-out infinite; } /* Всё вместе: body.theme-architect усиливает scan-линии */ body.theme-architect::before { background: repeating-linear-gradient( 0deg, transparent, transparent 3px, rgba(0,0,0,0.055) 3px, rgba(0,0,0,0.055) 4px ); } /* ===== PRE-LAUNCH GATE ===== */ .launch-gate-card { position: relative; margin: 10px 12px 12px; padding: 16px 16px 14px; overflow: hidden; border: 1px solid rgba(220,45,45,0.42); border-radius: 18px; background: radial-gradient(circle at 15% 10%, rgba(220,45,45,0.18), transparent 34%), radial-gradient(circle at 90% 100%, rgba(212,175,55,0.09), transparent 36%), linear-gradient(145deg, rgba(8,8,18,0.92), rgba(24,4,8,0.86)); box-shadow: 0 14px 38px rgba(0,0,0,0.32), inset 0 0 0 1px rgba(255,255,255,0.035); } .launch-gate-card::before { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient(0deg, rgba(255,255,255,0.035) 0 1px, transparent 1px 6px), linear-gradient(90deg, transparent, rgba(220,45,45,0.12), transparent); opacity: 0.46; pointer-events: none; } .launch-gate-card > * { position: relative; z-index: 1; } .launch-gate-mark { color: rgba(255,60,60,0.92); font-size: 28px; font-weight: 900; letter-spacing: 5px; text-shadow: 0 0 18px rgba(220,45,45,0.42); } .launch-gate-title { margin-top: 6px; color: var(--text); font-size: 15px; font-weight: 900; letter-spacing: 0.6px; } .launch-gate-copy { max-width: 430px; margin-top: 6px; color: var(--text2); font-size: 11px; line-height: 1.55; } .launch-gate-countdown { width: fit-content; margin-top: 12px; padding: 8px 12px; border: 1px solid rgba(212,175,55,0.24); border-radius: 999px; background: rgba(0,0,0,0.22); color: var(--gold); font-family: monospace; font-size: 13px; font-weight: 900; letter-spacing: 1px; } .launch-gate-note { margin-top: 10px; color: rgba(255,80,80,0.55); font-family: monospace; font-size: 8px; letter-spacing: 1.8px; } .launch-gate-overlay { position: fixed; inset: 0; z-index: 12500; display: none; align-items: center; justify-content: center; padding: 22px; background: radial-gradient(circle at center, rgba(180,20,20,0.20), transparent 45%), rgba(0,0,8,0.88); backdrop-filter: blur(10px); } .launch-gate-overlay.show { display: flex; animation: launchGateFadeIn 0.18s ease-out both; } .launch-gate-panel { position: relative; width: min(420px, calc(100vw - 32px)); overflow: hidden; padding: 24px 18px 18px; border: 1px solid rgba(255,55,55,0.52); border-radius: 22px; background: radial-gradient(circle at 50% 0%, rgba(255,60,60,0.18), transparent 34%), linear-gradient(150deg, rgba(7,7,16,0.96), rgba(28,4,8,0.94)); box-shadow: 0 0 54px rgba(180,20,20,0.28), inset 0 0 0 1px rgba(212,175,55,0.08); text-align: center; } .launch-gate-panel::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px); background-size: 24px 24px; opacity: 0.18; } .launch-gate-scan { position: absolute; left: -30%; right: -30%; top: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255,60,60,0.95), transparent); box-shadow: 0 0 22px rgba(255,60,60,0.58); animation: launchGateScan 1.55s linear infinite; } .launch-gate-close { position: absolute; top: 10px; right: 12px; z-index: 2; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,0.16); border-radius: 12px; background: rgba(255,255,255,0.06); color: rgba(255,255,255,0.78); font-size: 22px; } .launch-gate-kicker, .launch-gate-big, .launch-gate-panel-title, .launch-gate-panel-copy, .launch-gate-panel-timer, .launch-gate-return { position: relative; z-index: 1; } .launch-gate-kicker { color: rgba(212,175,55,0.74); font-family: monospace; font-size: 9px; letter-spacing: 2px; } .launch-gate-big { margin-top: 12px; color: #ff343d; font-size: clamp(38px, 13vw, 62px); font-weight: 950; letter-spacing: 8px; text-shadow: 0 0 12px rgba(255,45,45,0.72), 0 0 34px rgba(180,20,20,0.48); } .launch-gate-panel-title { margin-top: 4px; color: #fff; font-size: 18px; font-weight: 900; } .launch-gate-panel-copy { margin: 10px auto 0; max-width: 330px; color: rgba(255,255,255,0.70); font-size: 12px; line-height: 1.55; } .launch-gate-panel-timer { margin: 16px auto 0; padding: 10px 12px; border: 1px solid rgba(212,175,55,0.28); border-radius: 14px; background: rgba(0,0,0,0.28); color: #f2d273; font-family: monospace; font-size: 18px; font-weight: 900; letter-spacing: 1.4px; } .launch-gate-return { width: 100%; min-height: 44px; margin-top: 14px; border: 1px solid rgba(212,175,55,0.24); border-radius: 14px; background: var(--gold-dim); color: #f0d896; font-weight: 900; letter-spacing: 0.8px; } body.launch-locked .bottom-nav .nav-item:not(.active) { opacity: 0.46; filter: saturate(0.55); } body.launch-locked .home-event-card { filter: grayscale(0.35) brightness(0.78); } .home-event-card.event-disabled-admin-view { opacity: 0.68; filter: grayscale(0.45) brightness(0.82); } .home-event-card.event-disabled-admin-view::after { content: 'ADMIN PREVIEW // EVENT HIDDEN'; display: block; margin-top: 10px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.08); color: rgba(255,80,80,0.72); font-family: monospace; font-size: 8px; letter-spacing: 1.6px; } .admin-architect-event-card { margin-top: 12px; } .admin-architect-event-status { width: fit-content; margin-top: 8px; padding: 4px 8px; border: 1px solid rgba(255,80,80,0.22); border-radius: 999px; background: rgba(180,20,20,0.08); color: rgba(255,100,100,0.78); font-family: monospace; font-size: 8px; letter-spacing: 1px; } .admin-architect-event-status.enabled { border-color: rgba(70,220,120,0.24); background: rgba(40,180,90,0.08); color: rgba(100,240,150,0.82); } @keyframes launchGateFadeIn { from { opacity: 0; transform: scale(1.01); } to { opacity: 1; transform: scale(1); } } @keyframes launchGateScan { from { transform: translateY(0); opacity: 0; } 12% { opacity: 1; } 82% { opacity: 0.65; } to { transform: translateY(360px); opacity: 0; } } /* Заморозка отдельных разделов — замок на пунктах навигации/меню */ .feature-frozen { position: relative; } .feature-frozen::after { content: "\1F512"; /* 🔒 */ position: absolute; top: 3px; right: 5px; font-size: 10px; line-height: 1; opacity: 0.85; pointer-events: none; filter: grayscale(0.2); } .more-item.feature-frozen { opacity: 0.5; } .nav-item.feature-frozen { opacity: 0.62; } .nav-item.feature-frozen::after { top: 2px; right: 50%; transform: translateX(14px); } /* ═══════════════════════════════════════════════════════════════ ARCHITECT // WOW LAYER II — Holographic · Neon · Boot · Tilt ═══════════════════════════════════════════════════════════════ */ /* 1 ── Holographic border cycling: red → orange → gold → violet */ @keyframes holoBorderCycle { 0% { border-color: rgba(232,34,0,0.95); } 20% { border-color: rgba(255,80,0,0.9); } 40% { border-color: rgba(255,204,0,0.9); } 60% { border-color: rgba(200,80,255,0.85); } 80% { border-color: rgba(157,78,221,0.95); } 100% { border-color: rgba(232,34,0,0.95); } } body.is-architect .profile-card-home { border: 2px solid rgba(232,34,0,0.95); animation: blackwallHeartbeat 3.5s ease-in-out infinite, holoBorderCycle 5s linear infinite !important; } /* 2 ── Neon flicker on profile name (irregular dropout + color drift) */ @keyframes neonFlicker { 0%, 18%, 22%, 25%, 53%, 57%, 100% { color: #fff5f0; text-shadow: 0 0 8px rgba(232,34,0,0.95), 0 0 20px rgba(232,34,0,0.6), 0 0 45px rgba(232,34,0,0.25); filter: brightness(1); } 19%, 23%, 54% { color: rgba(255,245,240,0.25); text-shadow: none; filter: brightness(0.35); } 68% { color: #fffce0; text-shadow: 0 0 12px rgba(255,204,0,0.9), 0 0 28px rgba(255,204,0,0.45); } 84% { color: #f5eaff; text-shadow: 0 0 10px rgba(180,80,255,0.9), 0 0 24px rgba(157,78,221,0.45); } } body.is-architect .profile-card-name { animation: neonFlicker 9s ease-in-out infinite; } /* 3 ── BLACKWALL BOOT SEQUENCE overlay */ #blackwall-boot { display: flex; position: fixed; inset: 0; background: #000; z-index: 99999; font-family: 'Courier New', monospace; align-items: center; justify-content: center; } #blackwall-boot.bw-fadeout { animation: bootFadeOut 0.9s ease-in forwards; } @keyframes bootFadeOut { to { opacity: 0; pointer-events: none; } } .boot-terminal { width: 92%; max-width: 340px; } .boot-line { font-size: 11px; line-height: 1.9; letter-spacing: 0.8px; } .boot-line span { display: block; color: rgba(232,34,0,0.55); } .boot-line span.bw-current { color: #ff3300; text-shadow: 0 0 8px rgba(232,34,0,0.5); } .boot-line span.bw-gold { color: #ffcc00; text-shadow: 0 0 8px rgba(255,204,0,0.5); font-size: 12px; letter-spacing: 2px; margin-top: 4px; } .boot-cursor { display: inline-block; width: 7px; height: 13px; background: #e82200; margin-left: 3px; vertical-align: middle; animation: bootBlink 0.55s step-end infinite; } @keyframes bootBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .boot-scanline { position: absolute; inset: 0; background: repeating-linear-gradient( 0deg, transparent, transparent 3px, rgba(0,0,0,0.08) 3px, rgba(0,0,0,0.08) 4px ); pointer-events: none; } /* 4 ── 3D tilt transitions (transform applied by JS) */ body.is-architect .profile-card-home { will-change: transform; } .profile-card-home.tilt-move { transition: transform 0.12s ease-out !important; } .profile-card-home.tilt-reset { transition: transform 0.55s cubic-bezier(0.34,1.56,0.64,1) !important; } /* 5 ── EXTRA: Corner spark pulse on profile card (architect) */ @keyframes cornerSparkTL { 0%, 100% { opacity: 0; transform: scale(0.4) translate(-2px,-2px); } 50% { opacity: 1; transform: scale(1.2) translate(-4px,-4px); box-shadow: 0 0 10px rgba(255,204,0,0.9), 0 0 20px rgba(232,34,0,0.5); } } @keyframes cornerSparkBR { 0%, 100% { opacity: 0; transform: scale(0.4) translate(2px,2px); } 50% { opacity: 1; transform: scale(1.2) translate(4px,4px); box-shadow: 0 0 10px rgba(157,78,221,0.9), 0 0 20px rgba(200,80,255,0.5); } } .profile-card-spark { display: none; position: absolute; width: 6px; height: 6px; border-radius: 50%; pointer-events: none; z-index: 10; } body.is-architect .profile-card-spark { display: block; } body.is-architect .profile-card-spark.spark-tl { top: 8px; left: 8px; background: #ffcc00; animation: cornerSparkTL 2.8s ease-in-out infinite; } body.is-architect .profile-card-spark.spark-br { bottom: 8px; right: 8px; background: #9d4edd; animation: cornerSparkBR 2.8s ease-in-out infinite 1.4s; } body.is-architect .profile-card-spark.spark-tr { top: 8px; right: 8px; background: #e82200; animation: cornerSparkTL 3.2s ease-in-out infinite 0.7s; } body.is-architect .profile-card-spark.spark-bl { bottom: 8px; left: 8px; background: #ff6600; animation: cornerSparkBR 3.2s ease-in-out infinite 2.1s; } /* ═══════════════════════════════════════════════════════════ ARCHITECT EVENT — RESULT REVEAL ANIMATIONS ═══════════════════════════════════════════════════════════ */ /* Result image: fade-in + subtle zoom from dark */ @keyframes architectResultImageReveal { 0% { opacity: 0; transform: scale(1.07); filter: brightness(0.15) saturate(0); } 30% { opacity: 0.7; filter: brightness(0.6) saturate(0.4); } 100% { opacity: 1; transform: scale(1); filter: saturate(1.12) contrast(1.08) brightness(0.96); } } #eventBossImage.result-image-reveal { animation: architectResultImageReveal 1.8s ease-out forwards !important; } /* ── Lobby image glitch ──────────────────────────────────────── */ /* Main image animation: gentle float with two glitch bursts per cycle */ @keyframes lobbyBossFloat { 0%, 100% { transform: translateY(0) scale(1); } 25% { transform: translateY(-7px) scale(1.006); } 50% { transform: translateY(0) scale(1); } 75% { transform: translateY(-4px) scale(1.003); } } @keyframes lobbyBossGlitch { /* Clean phase */ 0%, 78%, 86%, 94%, 100% { filter: saturate(1.1) contrast(1.08) brightness(0.9); clip-path: none; transform: translate(0); } /* Burst 1: RGB split */ 79% { filter: saturate(3.5) contrast(1.6) hue-rotate(18deg) brightness(1.5); transform: translate(-6px, 0); clip-path: inset(27% 0 43% 0); } 79.5% { filter: saturate(3.5) contrast(1.6) hue-rotate(-18deg) brightness(1.5); transform: translate(6px, 0); clip-path: inset(58% 0 12% 0); } 80% { filter: saturate(0.2) contrast(2.2) brightness(2.2); transform: translate(-2px, 1px); clip-path: inset(0 0 0 0); } 80.5% { filter: saturate(1.1) contrast(1.08) brightness(0.9); transform: translate(0); clip-path: none; } /* Brief flicker */ 83% { filter: saturate(1.1) contrast(1.08) brightness(0.9); } 83.3% { filter: saturate(0.1) brightness(2.5) contrast(1.8); } 83.6% { filter: saturate(1.1) contrast(1.08) brightness(0.9); } /* Burst 2: horizontal tear */ 87% { transform: translate(10px, 0); filter: saturate(2.5) hue-rotate(22deg); clip-path: inset(18% 0 52% 0); } 87.5% { transform: translate(-10px, 0); filter: saturate(2.5) hue-rotate(-22deg); clip-path: inset(54% 0 16% 0); } 88% { transform: translate(4px, 0); filter: saturate(1.5) brightness(1.4); clip-path: inset(35% 0 35% 0); } 88.5% { transform: translate(0); filter: saturate(1.1) contrast(1.08) brightness(0.9); clip-path: none; } } /* Scan-line intensification overlay during lobby */ @keyframes lobbyScanFlicker { 0%, 78.9%, 80.6%, 86.9%, 88.6%, 100% { opacity: 0; } 79%, 80.5% { opacity: 1; } 87%, 88.5% { opacity: 0.7; } } .event-overlay.event-state-lobby #eventBossImage { animation: lobbyBossFloat 9s ease-in-out infinite, lobbyBossGlitch 14s linear infinite; will-change: transform, filter; } /* Lobby boss art reads too small/cramped under the lobby card — give it a taller, higher box so object-fit:contain renders it larger and shifted upward. */ .event-overlay.event-state-lobby .event-hero img, .event-overlay.event-state-lobby .event-hero-video { top: 60px; height: calc(100vh + 30px - 60px); } /* Scan line flash on top of image during glitch — uses hero::after which already sweeps */ .event-overlay.event-state-lobby .event-hero::after { animation: eventScanSweep 5.5s linear infinite, lobbyScanFlicker 14s linear infinite; opacity: 0.6; } /* ── WildAI Breach lobby — BlackWall about to fail: heavier glitches/freezes ── */ @keyframes wildaiLobbyBossGlitch { /* Mostly clean, but jittery */ 0%, 100% { filter: saturate(1.15) contrast(1.1) brightness(0.9); clip-path: none; transform: translate(0); } 6% { transform: translate(-3px, 1px); filter: saturate(2.4) hue-rotate(14deg) brightness(1.3); clip-path: inset(12% 0 61% 0); } 6.4% { transform: translate(3px, -1px); filter: saturate(2.4) hue-rotate(-14deg) brightness(1.3); clip-path: inset(54% 0 18% 0); } 6.8% { transform: translate(0); filter: saturate(1.15) contrast(1.1) brightness(0.9); clip-path: none; } /* Freeze: image holds, screen briefly desaturates like a frozen frame */ 22%, 24.5% { filter: saturate(0) contrast(1.4) brightness(0.7); transform: translate(0); clip-path: none; } 24.6% { filter: saturate(2.6) contrast(1.8) brightness(1.6); transform: translate(-8px, 0); clip-path: inset(35% 0 35% 0); } 25% { filter: saturate(1.15) contrast(1.1) brightness(0.9); transform: translate(0); clip-path: none; } /* Hard tear burst */ 41% { transform: translate(12px, -2px); filter: saturate(3) hue-rotate(24deg) brightness(1.7); clip-path: inset(8% 0 70% 0); } 41.4% { transform: translate(-12px, 2px); filter: saturate(3) hue-rotate(-24deg) brightness(1.7); clip-path: inset(66% 0 10% 0); } 41.8% { transform: translate(4px, 0); filter: saturate(0.2) contrast(2.4) brightness(2.4); clip-path: inset(0); } 42.2% { transform: translate(0); filter: saturate(1.15) contrast(1.1) brightness(0.9); clip-path: none; } /* Quick flicker stutter */ 58% { filter: saturate(1.15) contrast(1.1) brightness(0.9); } 58.2% { filter: saturate(0.1) brightness(2.6) contrast(2); } 58.4% { filter: saturate(1.15) contrast(1.1) brightness(0.4); } 58.6% { filter: saturate(0.1) brightness(2.6) contrast(2); } 58.8% { filter: saturate(1.15) contrast(1.1) brightness(0.9); } /* Second freeze, longer */ 74%, 78% { filter: saturate(0) contrast(1.5) brightness(0.65); transform: translate(0); clip-path: none; } 78.3% { filter: saturate(3) contrast(1.9) brightness(1.7); transform: translate(7px, -1px); clip-path: inset(20% 0 50% 0); } 78.6% { filter: saturate(1.15) contrast(1.1) brightness(0.9); transform: translate(0); clip-path: none; } /* Final pre-collapse tear */ 90% { transform: translate(-10px, 2px); filter: saturate(2.8) hue-rotate(-20deg) brightness(1.6); clip-path: inset(15% 0 55% 0); } 90.4% { transform: translate(10px, -2px); filter: saturate(2.8) hue-rotate(20deg) brightness(1.6); clip-path: inset(60% 0 14% 0); } 90.8% { transform: translate(0); filter: saturate(1.15) contrast(1.1) brightness(0.9); clip-path: none; } } /* Subtle constant jitter layered on top of the glitch keyframes */ @keyframes wildaiLobbyJitter { 0%, 100% { transform: translate(0, 0); } 10% { transform: translate(1px, 0); } 20% { transform: translate(-1px, 1px); } 30% { transform: translate(0, -1px); } 40% { transform: translate(1px, 1px); } 50% { transform: translate(-1px, 0); } 60% { transform: translate(0, 1px); } 70% { transform: translate(1px, -1px); } 80% { transform: translate(-1px, -1px); } 90% { transform: translate(0, 0); } } .event-overlay.event-wildai-lobby #eventBossImage { animation: wildaiLobbyBossGlitch 11s steps(1, end) infinite, wildaiLobbyJitter 0.18s steps(2, end) infinite; will-change: transform, filter; } /* Static-noise overlay flickers in during freezes/glitches */ @keyframes wildaiLobbyNoiseFlicker { 0%, 5%, 21%, 26%, 40%, 43%, 57%, 60%, 73%, 79%, 89%, 92%, 100% { opacity: 0; } 6%, 24.5%, 41.5%, 58.3%, 76%, 90.5% { opacity: 0.5; } } .event-overlay.event-wildai-lobby .event-hero::before { content: ''; position: absolute; inset: 0; z-index: 6; pointer-events: none; mix-blend-mode: overlay; background-image: repeating-linear-gradient( 0deg, rgba(255,255,255,0.08) 0px, rgba(255,255,255,0.08) 1px, transparent 1px, transparent 3px ); animation: wildaiLobbyNoiseFlicker 11s steps(1, end) infinite; } .event-overlay.event-wildai-lobby .event-hero::after { animation: eventScanSweep 4.2s linear infinite, wildaiLobbyNoiseFlicker 11s steps(1, end) infinite; opacity: 0.75; } /* "BlackWall integrity failing" warning text flicker over the lobby */ .event-wildai-lobby-warning { position: absolute; top: 14px; left: 50%; transform: translateX(-50%); z-index: 7; font-size: 11px; font-weight: 900; letter-spacing: 2px; text-transform: uppercase; color: #ff4040; text-shadow: 0 0 10px rgba(255,40,40,0.7); pointer-events: none; opacity: 0; animation: wildaiLobbyWarningFlicker 11s steps(1, end) infinite; } @keyframes wildaiLobbyWarningFlicker { 0%, 5%, 21%, 26%, 40%, 43%, 57%, 60%, 73%, 79%, 89%, 92%, 100% { opacity: 0; } 6%, 24.5%, 41.5%, 58.3%, 76%, 90.5% { opacity: 1; } } /* ── Lobby card redesign ────────────────────────────────────── */ .event-overlay.event-state-lobby .event-lobby-card { max-height: 44vh; padding: 0; border: none !important; border-top: 2px solid rgba(220, 38, 38, 0.55) !important; border-radius: 0 !important; background: rgba(4, 4, 10, 0.98) !important; box-shadow: 0 -8px 32px rgba(0,0,0,0.5) !important; overflow: hidden; } /* Inner padding wrapper via head */ .event-overlay.event-state-lobby .event-lobby-head { align-items: center; gap: 8px; padding: 10px 14px 0; } .event-overlay.event-state-lobby .event-lobby-kicker { font-size: 8px !important; letter-spacing: 2.2px !important; color: rgba(220,38,38,0.75) !important; opacity: 1; } .event-overlay.event-state-lobby .event-lobby-kicker::before { background: rgba(220,38,38,0.9) !important; box-shadow: 0 0 6px rgba(220,38,38,0.6) !important; } .event-overlay.event-state-lobby .event-lobby-status { font-size: 14px !important; font-weight: 800 !important; letter-spacing: 0.04em !important; margin-top: 2px !important; } /* Prize: monospace terminal line, no background box */ .event-overlay.event-state-lobby .event-lobby-reward { margin-top: 6px !important; padding: 7px 14px !important; background: rgba(255,255,255,0.025) !important; border: none !important; border-radius: 0 !important; border-top: 1px solid rgba(255,255,255,0.05) !important; display: flex; align-items: baseline; gap: 8px; } .event-overlay.event-state-lobby .event-lobby-reward::before { content: '//'; font-family: monospace; font-size: 10px; color: rgba(220,38,38,0.65); letter-spacing: 0; font-weight: 700; flex: 0 0 auto; } .event-overlay.event-state-lobby .event-lobby-reward .event-lobby-label { display: none !important; } .event-overlay.event-state-lobby .event-lobby-reward .event-lobby-value { font-size: 13px !important; font-weight: 700 !important; color: #f0e8d0 !important; text-shadow: none !important; font-family: -apple-system, sans-serif; } /* Members */ .event-overlay.event-state-lobby .event-lobby-members { margin-top: 0 !important; padding: 6px 14px 0; } .event-overlay.event-state-lobby .event-lobby-members .event-lobby-label { display: none !important; } .event-overlay.event-state-lobby .event-team-list { flex-direction: row !important; flex-wrap: wrap !important; gap: 4px !important; max-height: 48px !important; background: none !important; border: none !important; padding: 4px 0 0 !important; margin-top: 0 !important; } .event-overlay.event-state-lobby .event-team-member { padding: 3px 9px !important; border-radius: 3px !important; font-size: 10px !important; font-family: monospace !important; border: 1px solid rgba(255,255,255,0.1) !important; background: rgba(255,255,255,0.04) !important; color: rgba(255,255,255,0.7) !important; } .event-overlay.event-state-lobby .event-team-member::before { content: '' !important; display: none !important; } .event-overlay.event-state-lobby .event-team-empty { font-size: 10px !important; padding: 2px 0 !important; font-family: monospace !important; font-style: normal !important; color: rgba(255,255,255,0.28) !important; letter-spacing: 0.5px; } .event-overlay.event-state-lobby .event-team-empty::before { content: '○ ○ ○ ○ ○ '; color: rgba(220,38,38,0.35); letter-spacing: 4px; } /* Buttons: action-button style */ .event-overlay.event-state-lobby .event-lobby-actions { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 0 !important; margin-top: 8px !important; border-top: 1px solid rgba(255,255,255,0.05); } .event-overlay.event-state-lobby .event-lobby-btn { min-height: 52px !important; padding: 10px 14px !important; font-size: 11px !important; font-family: monospace !important; font-weight: 800 !important; letter-spacing: 1.8px !important; text-transform: uppercase !important; border: none !important; border-top: 2px solid !important; border-right: 1px solid rgba(255,255,255,0.05) !important; border-radius: 0 !important; background: rgba(5,5,13,0.99) !important; box-shadow: none !important; } .event-overlay.event-state-lobby .event-lobby-btn:last-child { border-right: none !important; } .event-overlay.event-state-lobby #eventJoinBtn, .event-overlay.event-state-lobby .event-lobby-btn.join { border-top-color: rgba(220,38,38,0.8) !important; color: #ffaaaa !important; background: linear-gradient(150deg, rgba(220,38,38,0.1), rgba(5,5,13,0.99) 60%) !important; } .event-overlay.event-state-lobby #eventLeaveBtn, .event-overlay.event-state-lobby .event-lobby-btn.leave { border-top-color: rgba(255,255,255,0.25) !important; color: rgba(255,255,255,0.55) !important; } .event-overlay.event-state-lobby #eventStartBtn, .event-overlay.event-state-lobby #eventCreateBtn, .event-overlay.event-state-lobby .event-lobby-btn.start { border-top-color: rgba(212,175,55,0.8) !important; color: #f0d887 !important; background: linear-gradient(150deg, rgba(212,175,55,0.1), rgba(5,5,13,0.99) 60%) !important; } /* Result banner: hidden state (shown in DOM but invisible) */ .event-overlay.event-terminal .event-lobby-card.result-banner-hidden { opacity: 0; pointer-events: none; transform: translateY(40px); } /* Result banner: slide-up reveal */ @keyframes architectResultBannerReveal { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } } .event-overlay.event-terminal .event-lobby-card.result-banner-reveal { animation: architectResultBannerReveal 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards; } @keyframes verdictExpand { from { letter-spacing: -2px; opacity: 0; } 30% { opacity: 1; } to { letter-spacing: 3px; opacity: 1; } } .event-overlay.event-terminal .event-lobby-card.result-banner-reveal .event-result-verdict { animation: verdictExpand 0.85s 0.25s cubic-bezier(0.22, 1, 0.36, 1) both; } /* ── MVP badge on profile card ──────────────────────────────── */ .profile-badge-mvp { background: linear-gradient(90deg, rgba(255,180,0,0.18), rgba(255,120,0,0.12)); border: 1px solid rgba(255,180,0,0.55); color: #ffb400; font-size: 9px; letter-spacing: 1.5px; padding: 2px 7px; border-radius: 4px; font-family: monospace; font-weight: 700; text-shadow: 0 0 8px rgba(255,180,0,0.5); animation: mvpPulse 3s ease-in-out infinite; } @keyframes mvpPulse { 0%, 100% { box-shadow: 0 0 4px rgba(255,180,0,0.2); } 50% { box-shadow: 0 0 12px rgba(255,180,0,0.5), 0 0 24px rgba(255,100,0,0.15); } } /* ── Extra participants section in event result ─────────────── */ .event-extra-participants { padding: 8px 0 4px; border-top: 1px solid rgba(255,255,255,0.06); margin-top: 6px; } .event-extra-list { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 5px; min-height: 4px; } .event-extra-item { display: inline-flex; align-items: center; gap: 5px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.10); border-radius: 6px; padding: 3px 8px; font-size: 10px; color: rgba(255,255,255,0.75); font-family: monospace; } .event-extra-remove { background: none; border: none; color: rgba(255,80,80,0.7); cursor: pointer; font-size: 10px; padding: 0; line-height: 1; } .event-extra-input-row { display: flex; gap: 6px; margin-top: 7px; align-items: center; } .event-extra-input { flex: 1; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.15); border-radius: 6px; color: #fff; font-family: monospace; font-size: 10px; padding: 6px 10px; outline: none; } .event-extra-input::placeholder { color: rgba(255,255,255,0.3); } .event-extra-add-btn { background: rgba(0,200,100,0.12); border: 1px solid rgba(0,200,100,0.35); color: rgba(0,220,110,0.9); border-radius: 6px; width: 30px; height: 30px; font-size: 18px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-weight: 300; line-height: 1; } /* ════════════════════════════════════════════════════════════════ PREMIUM POLISH LAYER — ARCHITECT PROTOCOL · NetWatch refinement v.20260507a · cohesive cyberpunk overhaul ════════════════════════════════════════════════════════════════ */ /* — Subtle scanline overlay for cohesion — */ .event-overlay::after { content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 50; background: repeating-linear-gradient( 0deg, rgba(255, 80, 80, 0.022) 0px, rgba(255, 80, 80, 0.022) 1px, transparent 1px, transparent 3px ); mix-blend-mode: overlay; opacity: 0.7; } .event-overlay.event-state-active::after { background: repeating-linear-gradient( 0deg, rgba(255, 60, 50, 0.028) 0px, rgba(255, 60, 50, 0.028) 1px, transparent 1px, transparent 3px ); } .event-overlay.event-terminal.event-state-finished::after { background: repeating-linear-gradient( 0deg, rgba(0, 220, 255, 0.022) 0px, rgba(0, 220, 255, 0.022) 1px, transparent 1px, transparent 3px ); } /* — Bottom gradient veil over image for legibility — */ .event-overlay .event-hero::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 42%; background: linear-gradient(180deg, transparent, rgba(0,0,0,0.62)); pointer-events: none; z-index: 1; } /* — Topbar premium — */ .event-topbar .event-kicker { font-size: 9px; letter-spacing: 2.6px; color: rgba(212, 175, 55, 0.92); font-family: monospace; text-shadow: 0 0 14px rgba(212, 175, 55, 0.32); position: relative; padding-left: 14px; } .event-topbar .event-kicker::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 8px; height: 8px; border-radius: 999px; background: #ff3535; box-shadow: 0 0 10px rgba(255, 53, 53, 0.7); animation: architectStatusBlink 1.4s ease-in-out infinite; } @keyframes architectStatusBlink { 0%, 60%, 100% { opacity: 1; box-shadow: 0 0 10px rgba(255, 53, 53, 0.7); } 30% { opacity: 0.42; box-shadow: 0 0 4px rgba(255, 53, 53, 0.3); } } .event-topbar .event-phase { font-size: 22px; font-weight: 950; letter-spacing: 2.4px; color: #fff; text-shadow: 0 0 18px rgba(255, 60, 40, 0.55), -1px 0 rgba(255, 60, 40, 0.25), 1px 0 rgba(0, 220, 255, 0.18); margin-top: 3px; } .event-mute-btn, .event-close-btn { border: 1px solid rgba(255,255,255,0.10); background: rgba(8, 8, 16, 0.78); backdrop-filter: blur(10px); transition: background 0.18s, border-color 0.18s, transform 0.1s; } .event-mute-btn:hover, .event-close-btn:hover { background: rgba(20, 20, 30, 0.88); border-color: rgba(255,255,255,0.18); } .event-mute-btn:active, .event-close-btn:active { transform: scale(0.92); } /* — HUD: bigger, more readable — */ .boss-hud { padding: 10px 12px !important; gap: 10px !important; background: linear-gradient(180deg, rgba(8, 8, 18, 0.86), rgba(4, 4, 12, 0.94)) !important; border: 1px solid rgba(255, 70, 70, 0.28) !important; border-radius: 12px !important; backdrop-filter: blur(14px) !important; -webkit-backdrop-filter: blur(14px) !important; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.42), inset 0 0 0 1px rgba(255, 255, 255, 0.04) !important; } .boss-hud__stack { width: 38px !important; flex: 0 0 38px !important; gap: 4px !important; } .boss-hud__avatar { height: 32px !important; } .boss-hud__level { min-height: 16px !important; font-size: 9px !important; } .boss-hud__caption { font-size: 7px !important; letter-spacing: 0.22em !important; color: rgba(255, 130, 100, 0.82) !important; } .event-boss-name { font-size: 10px !important; font-weight: 800 !important; letter-spacing: 0.08em !important; color: #ffffff !important; text-shadow: 0 0 4px rgba(0,0,0,0.7) !important; } .event-status-badge { min-height: 16px !important; padding: 2px 6px !important; font-size: 8px !important; letter-spacing: 0.10em !important; border-radius: 3px !important; } .event-hp-text, .event-overload-readout { font-size: 11px !important; font-weight: 800 !important; letter-spacing: 0.08em !important; } .event-hp-bar { height: 7px !important; border-radius: 4px !important; overflow: hidden; background: rgba(0, 0, 0, 0.62) !important; border: 1px solid rgba(255, 70, 70, 0.22); box-shadow: inset 0 1px 2px rgba(0,0,0,0.5); position: relative; } .event-hp-bar::after { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient( 90deg, transparent 0 4px, rgba(255,255,255,0.06) 4px 5px ); pointer-events: none; } .event-hp-fill { height: 100% !important; background: linear-gradient(90deg, #ff3535 0%, #ff6a2a 60%, #ffba2a 100%) !important; box-shadow: 0 0 12px rgba(255, 60, 40, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.18) !important; transition: width 0.55s cubic-bezier(0.22, 1, 0.36, 1) !important; position: relative; } .event-hp-fill::after { content: ''; position: absolute; top: 0; right: 0; width: 12px; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.32)); } .event-overlay.event-phase-2 .event-hp-fill { background: linear-gradient(90deg, #ffaa1f 0%, #ffc832 100%) !important; box-shadow: 0 0 12px rgba(255, 170, 30, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.18) !important; } .event-overlay.event-phase-3 .event-hp-fill { background: linear-gradient(90deg, #54f5ff 0%, #fff 100%) !important; box-shadow: 0 0 16px rgba(84, 245, 255, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.4) !important; animation: hpCriticalPulse 0.9s ease-in-out infinite; } @keyframes hpCriticalPulse { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.35); } } /* — Wild AI Breach HUD: drop the Architect avatar, recolor the bar — */ .event-overlay.event-wildai .boss-hud__stack { display: none !important; } .event-overlay.event-wildai .event-hp-bar { border-color: rgba(120, 255, 140, 0.28) !important; } .event-overlay.event-wildai .event-hp-fill { background: linear-gradient(90deg, #2bff7a 0%, #8cff4d 60%, #d4ff2a 100%) !important; box-shadow: 0 0 12px rgba(80, 255, 110, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.18) !important; } .event-overlay.event-wildai.event-phase-2 .event-hp-fill { background: linear-gradient(90deg, #ffd23a 0%, #ff8a2a 100%) !important; box-shadow: 0 0 12px rgba(255, 170, 30, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.18) !important; } .event-overlay.event-wildai.event-phase-3 .event-hp-fill { background: linear-gradient(90deg, #ff3a3a 0%, #ff2ad4 100%) !important; box-shadow: 0 0 16px rgba(255, 58, 58, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.4) !important; animation: hpCriticalPulse 0.9s ease-in-out infinite; } /* Wild AI Breach battle clips letterbox down to a small strip with object-fit:contain (their source aspect ratio differs from Architect's clips) — fill the hero box instead. */ .event-overlay.event-wildai #eventBossVideo { object-fit: cover; } /* — Question modal premium cyber — */ .event-question-modal { border-radius: 16px !important; border: 1px solid rgba(212, 175, 55, 0.30) !important; background: linear-gradient(180deg, rgba(14, 12, 22, 0.96), rgba(8, 6, 14, 0.98)) !important; box-shadow: 0 20px 56px rgba(0, 0, 0, 0.62), 0 0 32px rgba(212, 175, 55, 0.10), inset 0 0 0 1px rgba(255, 255, 255, 0.03) !important; backdrop-filter: blur(22px) !important; -webkit-backdrop-filter: blur(22px) !important; padding: 16px 16px 14px !important; overflow: hidden; } .event-question-modal::before { content: 'QUERY // INPUT REQUIRED'; display: block; margin-bottom: 8px; color: rgba(212, 175, 55, 0.78); font-family: monospace; font-size: 8px; letter-spacing: 2.4px; padding-left: 12px; position: relative; } .event-question-modal::after { content: ''; position: absolute; top: 16px; left: 16px; width: 6px; height: 6px; border-radius: 999px; background: var(--gold); box-shadow: 0 0 8px rgba(212, 175, 55, 0.7); animation: architectStatusBlink 1.4s ease-in-out infinite; } .event-question-title { font-size: 14px !important; font-weight: 700 !important; line-height: 1.5 !important; margin-bottom: 12px !important; padding-bottom: 10px; border-bottom: 1px solid rgba(212, 175, 55, 0.14); color: #ffffff !important; } .event-options { gap: 7px !important; } .event-option-btn { position: relative !important; display: flex !important; align-items: flex-start !important; gap: 11px !important; padding: 11px 12px 11px 10px !important; border-radius: 10px !important; border: 1px solid rgba(255, 255, 255, 0.08) !important; background: rgba(255, 255, 255, 0.025) !important; font-size: 13px !important; line-height: 1.4 !important; font-weight: 500 !important; text-align: left !important; transition: background 0.15s ease, border-color 0.15s ease, transform 0.08s ease, box-shadow 0.18s ease !important; cursor: pointer !important; -webkit-tap-highlight-color: transparent; } .event-option-btn:hover { border-color: rgba(212, 175, 55, 0.36) !important; background: rgba(212, 175, 55, 0.05) !important; } .event-option-btn:active { transform: scale(0.98) !important; background: rgba(212, 175, 55, 0.10) !important; } .event-option-mark { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 28px; height: 28px; border-radius: 6px; background: rgba(212, 175, 55, 0.10); border: 1px solid rgba(212, 175, 55, 0.26); color: rgba(240, 220, 168, 0.92); font-family: monospace; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; margin-top: -1px; transition: background 0.15s, border-color 0.15s, color 0.15s; } .event-option-text { flex: 1 1 auto; min-width: 0; word-wrap: break-word; } .event-option-btn:hover .event-option-mark { background: rgba(212, 175, 55, 0.18); border-color: rgba(212, 175, 55, 0.46); color: #f8e2a0; } .event-option-btn.is-selected { border-color: rgba(212, 175, 55, 0.62) !important; background: rgba(212, 175, 55, 0.13) !important; box-shadow: 0 0 22px rgba(212, 175, 55, 0.18), inset 0 0 0 1px rgba(212, 175, 55, 0.18) !important; } .event-option-btn.is-selected .event-option-mark { background: rgba(212, 175, 55, 0.28); border-color: rgba(212, 175, 55, 0.78); color: #fff4c8; } .event-option-btn.is-correct { border-color: rgba(70, 220, 130, 0.72) !important; background: rgba(70, 220, 130, 0.14) !important; box-shadow: 0 0 26px rgba(70, 220, 130, 0.22), inset 0 0 0 1px rgba(70, 220, 130, 0.20) !important; animation: optionCorrectPulse 0.6s ease-out; } .event-option-btn.is-correct .event-option-mark { background: rgba(70, 220, 130, 0.28); border-color: rgba(70, 220, 130, 0.78); color: #b6f8ce; } .event-option-btn.is-wrong { border-color: rgba(255, 70, 70, 0.78) !important; background: rgba(255, 70, 70, 0.14) !important; box-shadow: 0 0 26px rgba(255, 70, 70, 0.22), inset 0 0 0 1px rgba(255, 70, 70, 0.22) !important; animation: optionWrongShake 0.34s ease-out; } .event-option-btn.is-wrong .event-option-mark { background: rgba(255, 70, 70, 0.28); border-color: rgba(255, 70, 70, 0.78); color: #ffc4c4; } @keyframes optionCorrectPulse { 0% { transform: scale(1); } 35% { transform: scale(1.02); } 100% { transform: scale(1); } } @keyframes optionWrongShake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-3px); } 75% { transform: translateX(3px); } } /* — Event log: terminal aesthetic — */ .event-log { background: linear-gradient(180deg, rgba(4, 5, 12, 0.84), rgba(3, 4, 10, 0.88)) !important; border: 1px solid rgba(0, 220, 255, 0.16) !important; border-radius: 10px !important; padding: 6px 11px 5px !important; position: fixed; font-family: monospace !important; overflow: hidden; } .event-log::before { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient( 0deg, transparent 0 1px, rgba(0, 220, 255, 0.022) 1px 2px ); pointer-events: none; } .event-log-line, .event-log-item { font-size: 10px !important; line-height: 1.4 !important; padding: 2px 0 !important; border-bottom: 1px solid rgba(0, 220, 255, 0.05) !important; color: rgba(190, 240, 255, 0.84); position: relative; padding-left: 10px; animation: logLineEnter 0.32s ease-out; } .event-log-line:last-child, .event-log-item:last-child { border-bottom: none !important; } .event-log-line::before, .event-log-item::before { content: '›'; position: absolute; left: 0; top: 2px; color: rgba(0, 220, 255, 0.5); font-weight: 800; } .event-log-empty { color: rgba(140, 160, 175, 0.6) !important; font-size: 10px !important; padding-left: 0; font-style: italic; } @keyframes logLineEnter { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } /* — Action button refinements — */ .event-action-sub { font-size: 8px !important; letter-spacing: 1.4px !important; opacity: 0.62 !important; } .event-action-name { font-size: 13.5px !important; letter-spacing: 1.5px !important; } .event-action-kanji { font-size: 36px !important; opacity: 0.16 !important; top: 4px !important; right: 12px !important; } .event-action::before { font-size: 9px !important; letter-spacing: 2.5px !important; opacity: 0.6 !important; } /* — Lobby card premium — */ .event-lobby-card { border: 1px solid rgba(212, 175, 55, 0.22) !important; box-shadow: 0 14px 40px rgba(0, 0, 0, 0.52), 0 0 28px rgba(212, 175, 55, 0.06), inset 0 0 0 1px rgba(255, 255, 255, 0.03) !important; } .event-lobby-kicker { font-size: 9px !important; letter-spacing: 2.4px !important; color: rgba(212, 175, 55, 0.86) !important; font-family: monospace !important; position: relative; padding-left: 12px; display: inline-block; } .event-lobby-kicker::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 6px; height: 6px; border-radius: 999px; background: var(--gold); box-shadow: 0 0 7px rgba(212, 175, 55, 0.7); animation: architectStatusBlink 1.4s ease-in-out infinite; } .event-lobby-status { margin-top: 4px; font-size: 17px; font-weight: 800; letter-spacing: 0.06em; color: #fff; } .event-lobby-count { padding: 5px 9px !important; border: 1px solid rgba(212, 175, 55, 0.35) !important; background: rgba(212, 175, 55, 0.08) !important; color: #f0d887 !important; font-family: monospace !important; font-size: 11px !important; font-weight: 800 !important; letter-spacing: 0.06em !important; border-radius: 999px !important; } .event-lobby-label { font-size: 8px !important; letter-spacing: 2px !important; color: rgba(255, 255, 255, 0.42) !important; font-family: monospace !important; text-transform: uppercase; margin-bottom: 4px; } .event-lobby-value { font-size: 13px !important; color: #f0e7d2 !important; line-height: 1.35 !important; } .event-team-list { margin-top: 4px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.06); background: rgba(0, 0, 0, 0.22); padding: 6px 8px; max-height: 130px; overflow-y: auto; } .event-team-empty { color: rgba(255, 255, 255, 0.42) !important; font-size: 11px; font-style: italic; padding: 4px 0; } .event-team-member { display: flex; align-items: center; gap: 8px; padding: 5px 4px; border-bottom: 1px solid rgba(255, 255, 255, 0.04); font-size: 12px; color: rgba(255, 255, 255, 0.86); } .event-team-member:last-child { border-bottom: none; } .event-team-member::before { content: '◆'; color: rgba(212, 175, 55, 0.62); font-size: 9px; flex: 0 0 auto; } /* — Lobby buttons premium — */ .event-lobby-actions { margin-top: 12px; display: flex; gap: 8px; flex-wrap: wrap; } .event-lobby-btn { flex: 1 1 auto; min-width: 110px; padding: 11px 14px !important; border-radius: 10px !important; font-family: monospace !important; font-size: 12px !important; font-weight: 800 !important; letter-spacing: 1.6px !important; text-transform: uppercase !important; cursor: pointer !important; transition: transform 0.08s ease, box-shadow 0.18s ease, background 0.18s ease !important; border: 1px solid !important; -webkit-tap-highlight-color: transparent; } .event-lobby-btn:active { transform: scale(0.97) !important; } .event-lobby-btn.start, #eventCreateBtn, #eventStartBtn { border-color: rgba(212, 175, 55, 0.62) !important; background: linear-gradient(180deg, rgba(220, 180, 60, 0.18), rgba(140, 100, 28, 0.22)) !important; color: #f8e2a0 !important; box-shadow: 0 4px 16px rgba(212, 175, 55, 0.20), inset 0 1px 0 rgba(255, 255, 255, 0.08) !important; } .event-lobby-btn.start:hover { background: linear-gradient(180deg, rgba(220, 180, 60, 0.26), rgba(160, 110, 30, 0.30)) !important; } .event-lobby-btn.join, #eventJoinBtn { border-color: rgba(0, 220, 255, 0.55) !important; background: linear-gradient(180deg, rgba(0, 220, 255, 0.16), rgba(0, 80, 120, 0.22)) !important; color: #b6f0ff !important; box-shadow: 0 4px 16px rgba(0, 220, 255, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.08) !important; } .event-lobby-btn.leave, #eventLeaveBtn { border-color: rgba(255, 80, 80, 0.55) !important; background: linear-gradient(180deg, rgba(255, 80, 80, 0.14), rgba(120, 24, 24, 0.22)) !important; color: #ffb0b0 !important; } /* — Final timer dramatic — */ .event-final-timer { background: linear-gradient(180deg, rgba(20, 6, 8, 0.92), rgba(8, 4, 6, 0.94)) !important; border: 1px solid rgba(255, 60, 40, 0.62) !important; color: #ffaaaa !important; font-family: monospace !important; font-weight: 900 !important; letter-spacing: 0.16em !important; text-shadow: 0 0 14px rgba(255, 50, 40, 0.5) !important; box-shadow: 0 6px 24px rgba(0, 0, 0, 0.5), 0 0 24px rgba(255, 50, 40, 0.18) !important; animation: finalTimerPulse 1.6s ease-in-out infinite !important; } @keyframes finalTimerPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.72; } } /* — Phase warning more dramatic — */ .event-phase-warning { font-family: monospace !important; font-weight: 900 !important; letter-spacing: 0.18em !important; text-shadow: 0 0 18px rgba(255, 50, 40, 0.6) !important; color: #ff8080 !important; } /* — Result card content polish — */ .event-result-card .event-result-reward-main { font-size: 17px !important; font-weight: 800 !important; letter-spacing: 0.04em !important; } .event-result-card .event-result-reward-sub { font-size: 10px !important; letter-spacing: 0.10em !important; margin-top: 4px !important; } .event-result-card .event-result-summary span { font-size: 9px !important; padding: 2px 7px !important; min-height: 18px !important; border-radius: 999px !important; } .event-result-card .event-result-row { font-size: 12px !important; padding: 5px 0 !important; } .event-result-card .event-result-row strong { font-size: 10px !important; } .event-result-card .event-result-mvp { padding: 2px 6px !important; font-size: 9px !important; letter-spacing: 0.10em !important; background: linear-gradient(90deg, rgba(212, 175, 55, 0.30), rgba(212, 175, 55, 0.12)) !important; border: 1px solid rgba(212, 175, 55, 0.42) !important; color: #ffe8a4 !important; text-shadow: 0 0 6px rgba(212, 175, 55, 0.4); } /* — Compact mobile adjustments — */ @media (max-height: 720px) { .event-question-modal { padding: 12px 14px 10px !important; } .event-question-title { font-size: 13px !important; margin-bottom: 9px !important; padding-bottom: 7px; } .event-option-btn { padding: 9px 10px 9px 8px !important; font-size: 12px !important; } .event-option-mark { flex: 0 0 24px; height: 24px; font-size: 9px; } .event-result-header { padding: 14px 16px 0; } .event-result-verdict { font-size: 22px; } .event-lobby-status { font-size: 15px; } .event-result-card .event-result-reward-main { font-size: 15px !important; } } @media (max-height: 620px) { .event-result-verdict { font-size: 19px; } .event-result-header { padding: 11px 14px 0; } } /* ── Prize section redesign ──────────────────────────────── */ .event-lobby-card .event-lobby-reward { margin-top: 14px; padding: 14px 16px; border-radius: 12px; background: linear-gradient(135deg, rgba(212,175,55,0.13) 0%, rgba(212,175,55,0.04) 100%); border: 1px solid rgba(212,175,55,0.38); position: relative; overflow: hidden; } .event-lobby-card .event-lobby-reward::before { content: 'ПРИЗ // MISSION REWARD'; display: block; font-size: 8px; letter-spacing: 2.2px; font-family: monospace; color: rgba(212,175,55,0.70); text-transform: uppercase; margin-bottom: 9px; } .event-lobby-card .event-lobby-reward .event-lobby-label { display: none; } .event-lobby-card .event-lobby-reward .event-lobby-value { font-size: 18px !important; font-weight: 900 !important; line-height: 1.3 !important; color: #f5e8b8 !important; letter-spacing: 0.03em; text-shadow: 0 0 20px rgba(212,175,55,0.28); } /* In result card (terminal state), prize is smaller but still elevated */ .event-result-card .event-lobby-reward { margin-top: 10px; padding: 11px 14px; border-radius: 10px; background: linear-gradient(135deg, var(--gold-dim), rgba(212,175,55,0.03)); border: 1px solid rgba(212,175,55,0.28); } .event-result-card .event-lobby-reward::before { content: 'MISSION REWARD'; display: block; font-size: 7px; letter-spacing: 2.0px; font-family: monospace; color: rgba(212,175,55,0.60); margin-bottom: 6px; } .event-result-card .event-lobby-reward .event-lobby-label { display: none; } /* Performance: promote action buttons to own layer */ .event-action { transform: translateZ(0); will-change: transform; } /* ── Android performance overrides ───────────────────────── Many decorative infinite animations + mix-blend-mode + stacked backdrop-filters cause sustained paint/composite jank on Android. These overrides keep the look but cut the most expensive bits. */ /* Drop expensive screen-blend overlay over the boss video/image (the WildAI lobby keeps its glitch-noise overlay — it's the whole point of that screen, and steps() flicker is cheap to composite) */ .event-overlay:not(.event-wildai-lobby) .event-hero::before { mix-blend-mode: normal !important; opacity: 0.32 !important; } /* Disable always-on decorative infinite animations on the event overlay */ .event-overlay:not(.event-wildai-lobby) .event-hero::before, .event-overlay .event-hero-glow, .event-overlay::before { animation: none !important; } /* Phase 1 scanline overlay: keep static gradient, kill animation */ .event-overlay.event-state-active.event-phase-1::before { animation: none !important; opacity: 0.10 !important; } /* Phase 2 split overlay: drop animation, lower opacity */ .event-overlay.event-state-active.event-phase-2::before { animation: none !important; opacity: 0.16 !important; } /* Phase 3 overload pulse: drop animation, lower opacity */ .event-overlay.event-state-active.event-phase-3::before { animation: none !important; opacity: 0.22 !important; } /* Terminal breathing on result image: simplify */ .event-overlay.event-state-terminal #eventBossImage { animation: none !important; } /* Failed glow pulse: kill the infinite animation */ .event-overlay.event-state-failed .event-hero-glow { animation: none !important; } /* Overload shake on the boss media: too jittery on Android */ .event-overlay.event-overload-high .event-hero-video, .event-overlay.event-overload-high #eventBossImage { animation: none !important; } /* Critical HUD blink: keep static red tone */ .event-overlay.event-overload-critical .event-hud, .event-overlay.event-overload-critical .event-final-timer { animation: none !important; } /* Drop final-timer infinite glow animation entirely */ .event-final-timer { animation: none !important; } /* Drop status LED blink */ .event-status-badge { animation: none !important; } /* Reduce text-shadow stacking everywhere in the event overlay */ .event-overlay .event-boss-name, .event-overlay .event-result-verdict, .event-overlay .event-action-name, .event-overlay .event-final-timer, .event-overlay .event-phase-warning { text-shadow: 0 0 4px rgba(0,0,0,0.65) !important; } /* Drop heavy box-shadow stacks on event panels (kept for definition only) */ .event-question-modal { box-shadow: 0 8px 24px rgba(0,0,0,0.45) !important; } .event-lobby-card { box-shadow: 0 -6px 22px rgba(0,0,0,0.45) !important; } /* Result win/lose container border animation -> keep but slow it */ .event-overlay.event-terminal .event-lobby-card.event-result-win, .event-overlay.event-terminal .event-lobby-card.event-result-lose { animation-duration: 6s !important; } /* Disable Genshin/admin extra background sweeps inside the event */ .event-overlay .architect-event-entry-scan { animation: none !important; opacity: 0.4 !important; } /* ============================================================ CONTRACT BOARD // THEME-READY P2P LAYER ============================================================ */ #page-contracts { --contract-accent: #e67e22; --contract-accent-soft: rgba(230, 126, 34, 0.14); --contract-accent-border: rgba(230, 126, 34, 0.38); --contract-card-bg: linear-gradient(135deg, rgba(255,255,255,0.045), rgba(255,255,255,0.018)); --contract-card-border: rgba(255,255,255,0.08); --contract-card-shadow: 0 14px 34px rgba(0,0,0,0.22); --contract-muted-bg: rgba(255,255,255,0.045); --contract-ok: #2ecc71; --contract-danger: #e74c3c; } .contracts-shell { padding: 0 12px 100px; } .contracts-blackwall { text-align: center; padding: 40px 20px; border: 1px solid rgba(255, 60, 60, 0.26); border-radius: 18px; background: radial-gradient(circle at 50% 0%, rgba(180,20,20,0.18), transparent 55%), rgba(8, 8, 16, 0.68); } .contracts-blackwall-icon { font-size: 32px; margin-bottom: 12px; } .contracts-blackwall-title { margin-bottom: 6px; color: var(--text); font-size: 14px; font-weight: 800; letter-spacing: 0.08em; } .contracts-blackwall-text { color: var(--text3); font-family: monospace; font-size: 11px; line-height: 1.55; } .contracts-rules-card, .contract-card { position: relative; overflow: hidden; margin-bottom: 10px; border: 1px solid var(--contract-card-border); border-radius: 16px; background: var(--contract-card-bg); box-shadow: var(--contract-card-shadow); } .contracts-rules-card { padding: 13px 14px; } .contracts-rules-card::before, .contract-card::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: linear-gradient(180deg, var(--contract-accent), transparent); opacity: 0.86; } .contracts-rules-kicker { margin-bottom: 7px; color: var(--contract-accent); font-family: monospace; font-size: 8px; font-weight: 800; letter-spacing: 1.8px; } .contracts-rules-text { color: var(--text2); font-family: monospace; font-size: 11px; line-height: 1.7; } .contracts-rule-ok { color: var(--contract-ok); font-weight: 900; } .contracts-rule-no { color: var(--contract-danger); font-weight: 900; } .contracts-rule-muted { color: var(--text3); } .contracts-create-btn { width: 100%; margin-bottom: 12px; padding: 13px 14px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border: 1px solid var(--contract-accent-border); border-radius: 14px; background: linear-gradient(135deg, var(--contract-accent-soft), rgba(255,255,255,0.025)); color: var(--contract-accent); font-family: monospace; font-size: 13px; font-weight: 900; cursor: pointer; box-shadow: 0 10px 22px rgba(0,0,0,0.14); } .contracts-create-btn b { padding: 4px 7px; border-radius: 999px; background: rgba(0,0,0,0.18); color: var(--gold); font-size: 10px; } .contracts-tabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 10px; padding: 4px; border: 1px solid var(--contract-card-border); border-radius: 14px; background: rgba(0,0,0,0.12); } .admin-intro-overlay { position: fixed; inset: 0; z-index: 9998; align-items: center; justify-content: center; overflow: hidden; background: #020205; animation: adminIntroIn 0.28s ease-out both; } .site-intro-overlay { position: fixed; inset: 0; z-index: 9999; align-items: center; justify-content: center; overflow: hidden; background: #020205; animation: adminIntroIn 0.28s ease-out both; } .admin-intro-overlay.closing { animation: adminIntroOut 0.42s ease-in both; } .site-intro-overlay.closing { animation: adminIntroOut 0.42s ease-in both; } .admin-intro-video, .site-intro-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; background: #020205; } .admin-intro-vignette, .site-intro-vignette { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at center, transparent 34%, rgba(0,0,0,0.22) 62%, rgba(0,0,0,0.72) 100%), linear-gradient(180deg, rgba(0,0,0,0.26), transparent 24%, rgba(0,0,0,0.42)); } .admin-intro-overlay.cyberpunk .admin-intro-vignette { box-shadow: inset 0 0 90px rgba(232,34,0,0.22), inset 0 0 120px rgba(96,180,212,0.08); } .site-intro-overlay.cyberpunk .site-intro-vignette { box-shadow: inset 0 0 110px rgba(232,34,0,0.26), inset 0 0 150px rgba(96,180,212,0.12); } .admin-intro-overlay.genshin .admin-intro-vignette { box-shadow: inset 0 0 90px rgba(212,175,55,0.22), inset 0 0 120px rgba(110,150,230,0.10); } .admin-intro-skip, .site-intro-skip { position: absolute; right: max(14px, var(--tg-safe-right)); bottom: calc(18px + var(--tg-safe-bottom)); z-index: 2; padding: 8px 12px; border: 1px solid rgba(255,255,255,0.18); border-radius: 999px; background: rgba(0,0,0,0.36); color: rgba(255,255,255,0.78); font-family: monospace; font-size: 9px; font-weight: 900; letter-spacing: 1.4px; backdrop-filter: blur(10px); } .admin-intro-caption, .site-intro-caption { position: absolute; left: max(14px, var(--tg-safe-left)); bottom: calc(20px + var(--tg-safe-bottom)); z-index: 2; color: rgba(255,255,255,0.84); font-family: monospace; font-size: 9px; font-weight: 900; letter-spacing: 2px; text-shadow: 0 0 18px rgba(255,255,255,0.24); } .admin-intro-overlay.cyberpunk .admin-intro-caption { color: #8fe9ff; text-shadow: 0 0 18px rgba(96,180,212,0.55); } .site-intro-overlay.cyberpunk .site-intro-caption { color: #8fe9ff; text-shadow: 0 0 18px rgba(96,180,212,0.62), 0 0 30px rgba(232,34,0,0.26); } .admin-intro-overlay.genshin .admin-intro-caption { color: #f4d98a; text-shadow: 0 0 18px rgba(212,175,55,0.52); } @keyframes adminIntroIn { from { opacity: 0; filter: brightness(0.7); } to { opacity: 1; filter: brightness(1); } } @keyframes adminIntroOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(1.015); } } .contracts-tab { min-height: 36px; border: 1px solid transparent; border-radius: 10px; background: transparent; color: var(--text3); font-family: monospace; font-size: 11px; font-weight: 800; cursor: pointer; } .contracts-tab.active { border-color: var(--contract-accent-border); background: var(--contract-accent-soft); color: var(--contract-accent); } #ctab-disputed.active { border-color: rgba(231,76,60,0.45); background: rgba(231,76,60,0.12); color: #e74c3c; } .contracts-filter-row { display: flex; gap: 7px; margin: 0 -2px 12px; padding: 1px 2px 4px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; } .contracts-filter-row::-webkit-scrollbar { display: none; } .contracts-filter-chip { flex: 0 0 auto; min-height: 30px; padding: 0 10px; border: 1px solid var(--contract-card-border); border-radius: 999px; background: rgba(255,255,255,0.035); color: var(--text3); font-family: monospace; font-size: 10px; font-weight: 800; cursor: pointer; } .contracts-filter-chip.active { border-color: var(--contract-accent-border); background: radial-gradient(circle at 20% 0%, var(--contract-accent-soft), transparent 60%), rgba(255,255,255,0.055); color: var(--contract-accent); box-shadow: 0 0 14px color-mix(in srgb, var(--contract-accent) 20%, transparent); } .contract-card { padding: 13px 13px 12px 15px; } .contract-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 8px; } .contract-creator-avatar { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; background: linear-gradient(135deg, var(--contract-accent-soft), rgba(255,255,255,0.04)); border: 1px solid var(--contract-accent-border); color: var(--contract-accent); font-family: monospace; font-size: 11px; font-weight: 900; display: flex; align-items: center; justify-content: center; letter-spacing: 0.5px; margin-top: 1px; overflow: hidden; } .contract-creator-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; } .contract-creator-avatar.has-image { background: rgba(255,255,255,0.035); color: transparent; } .contract-card-titlebox { min-width: 0; flex: 1; } .contract-card-title { color: var(--text); font-size: 13px; font-weight: 900; line-height: 1.25; word-break: break-word; } .contract-category-badge { display: inline-block; padding: 2px 7px; border-radius: 999px; border: 1px solid var(--contract-card-border); background: rgba(255,255,255,0.045); color: var(--text3); font-family: monospace; font-size: 9px; font-weight: 700; letter-spacing: 0.3px; } .contract-card-badges { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 5px; } .contract-admin-badge { display: inline-block; padding: 2px 7px; border-radius: 999px; border: 1px solid rgba(96, 180, 212, 0.58); background: linear-gradient(90deg, rgba(96,180,212,0.20), rgba(212,175,55,0.12)), rgba(5, 18, 28, 0.45); color: #8fe9ff; font-family: monospace; font-size: 8px; font-weight: 950; letter-spacing: 1.1px; text-shadow: 0 0 8px rgba(96,180,212,0.55); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.05); } .contract-reward { flex: 0 0 auto; min-width: 60px; text-align: right; padding: 5px 8px 5px 10px; border-radius: 10px; background: rgba(255,255,255,0.03); border: 1px solid var(--contract-card-border); } .contract-reward-main { color: var(--gold); font-size: 18px; font-weight: 950; line-height: 1.1; } .contract-reward-sub { margin-top: 3px; color: var(--text3); font-family: monospace; font-size: 9px; } .contract-description { margin-bottom: 9px; color: var(--text2); font-size: 11px; line-height: 1.5; } .contracts-section-label { margin: 14px 0 8px; padding: 0 2px; color: var(--text3); font-family: monospace; font-size: 9px; font-weight: 900; letter-spacing: 1.6px; text-transform: uppercase; opacity: 0.7; } .contracts-section-label.dispute { color: #e74c3c; opacity: 0.92; } .contracts-empty { position: relative; overflow: hidden; margin-top: 10px; padding: 26px 18px; border: 1px dashed var(--contract-card-border); border-radius: 17px; background: radial-gradient(circle at 0% 0%, var(--contract-accent-soft), transparent 42%), linear-gradient(135deg, rgba(255,255,255,0.035), rgba(255,255,255,0.012)); text-align: center; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.025); } .contracts-empty-icon { width: 36px; height: 36px; margin: 0 auto 10px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--contract-accent-border); border-radius: 12px; background: var(--contract-accent-soft); color: var(--contract-accent); font-family: serif; font-size: 18px; font-weight: 900; } .contracts-empty-title { color: var(--text); font-size: 13px; font-weight: 900; } .contracts-empty-hint { margin-top: 6px; color: var(--text3); font-family: monospace; font-size: 10px; line-height: 1.45; } .contract-card.status-open::before { background: linear-gradient(180deg, #e67e22, transparent); } .contract-card.status-accepted::before { background: linear-gradient(180deg, #3498db, transparent); } .contract-card.status-completed::before { background: linear-gradient(180deg, #2ecc71, transparent); } .contract-card.status-disputed::before { background: linear-gradient(180deg, #e74c3c, transparent); } .contract-card.status-cancelled::before { background: linear-gradient(180deg, rgba(255,255,255,0.18), transparent); } .contract-card.status-expired::before { background: linear-gradient(180deg, rgba(255,255,255,0.18), transparent); } .contract-card.status-accepted { background: linear-gradient(135deg, rgba(52,152,219,0.06), rgba(255,255,255,0.018)); border-color: rgba(52,152,219,0.18); } .contract-card.status-completed { background: linear-gradient(135deg, rgba(46,204,113,0.06), rgba(255,255,255,0.018)); border-color: rgba(46,204,113,0.18); } .contract-card.status-disputed { background: linear-gradient(135deg, rgba(231,76,60,0.06), rgba(255,255,255,0.018)); border-color: rgba(231,76,60,0.18); } .contract-card.status-cancelled { opacity: 0.62; } .contract-card.status-expired { opacity: 0.62; } .contract-card.admin-contract { border-color: rgba(96, 180, 212, 0.42); background: radial-gradient(circle at 0% 0%, rgba(96,180,212,0.16), transparent 42%), radial-gradient(circle at 100% 0%, var(--gold-dim), transparent 38%), var(--contract-card-bg); box-shadow: 0 0 0 1px rgba(96,180,212,0.08), 0 16px 36px rgba(0,0,0,0.24), 0 0 24px rgba(96,180,212,0.10); } .contract-card.admin-contract::before { width: 4px; background: linear-gradient(180deg, #60b4d4, var(--gold) 72%, transparent); } .startup-cover { position: fixed; inset: 0; z-index: 9997; background: #020205; opacity: 1; pointer-events: none; transition: opacity 0.22s ease; } .startup-cover.hidden { opacity: 0; } .contract-flow { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 10px 0 0; padding: 0 2px; } .contract-flow-block { margin-top: 10px; } .contract-flow-block .contract-flow { margin: 0; } .contract-flow-labels { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 4px; padding: 0 2px; color: var(--text3); font-family: monospace; font-size: 8px; letter-spacing: 0.4px; text-transform: uppercase; } .contract-flow-labels span:nth-child(2) { text-align: center; } .contract-flow-labels span:nth-child(3) { text-align: right; } .contract-flow::before { content: ''; position: absolute; left: 11%; right: 11%; top: 50%; height: 1px; background: var(--contract-card-border); transform: translateY(-50%); } .contract-flow span { position: relative; z-index: 1; height: 7px; border: 1px solid var(--contract-card-border); border-radius: 999px; background: var(--contract-muted-bg); } .contract-flow span.done { border-color: var(--contract-accent-border); background: linear-gradient(90deg, var(--contract-accent), color-mix(in srgb, var(--contract-accent) 42%, transparent)); box-shadow: 0 0 12px color-mix(in srgb, var(--contract-accent) 18%, transparent); } .contract-flow-accepted span.done { border-color: rgba(52,152,219,0.42); background: linear-gradient(90deg, #3498db, rgba(52,152,219,0.28)); } .contract-flow-submitted span.done { border-color: rgba(155,89,182,0.42); background: linear-gradient(90deg, #9b59b6, rgba(155,89,182,0.28)); } .contract-flow-completed span.done { border-color: rgba(46,204,113,0.42); background: linear-gradient(90deg, #2ecc71, rgba(46,204,113,0.26)); } .contract-flow-disputed span.done { border-color: rgba(231,76,60,0.42); background: linear-gradient(90deg, #e74c3c, rgba(231,76,60,0.25)); } .contract-flow-cancelled span { opacity: 0.5; } .contract-meta { display: flex; gap: 7px; flex-wrap: wrap; align-items: center; color: var(--text3); font-family: monospace; font-size: 10px; } .contract-status { padding: 2px 7px; border: 1px solid currentColor; border-radius: 999px; background: rgba(255,255,255,0.045); color: var(--contract-status-color); font-weight: 900; opacity: 0.92; } .contract-person { color: var(--text2); } .contract-status-hint { color: var(--text3); font-size: 9px; opacity: 0.92; } .contract-countdown { color: #e67e22; font-size: 9px; opacity: 0.85; white-space: nowrap; } .contract-privacy-toggle { display: flex; align-items: flex-start; gap: 10px; margin: 10px 0 12px; padding: 10px 11px; border: 1px solid var(--contract-card-border); border-radius: 12px; background: var(--contract-muted-bg); cursor: pointer; } .contract-privacy-toggle input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--contract-accent); } .contract-privacy-toggle span { display: grid; gap: 3px; } .contract-privacy-toggle b { color: var(--text); font-size: 11px; font-weight: 900; } .contract-privacy-toggle small { color: var(--text3); font-family: monospace; font-size: 9px; line-height: 1.35; } .contract-warning { margin-top: 7px; color: var(--contract-danger); font-family: monospace; font-size: 9px; } .contract-action-btn { width: 100%; margin-top: 10px; padding: 10px 12px; border-radius: 11px; background: transparent; font-family: monospace; font-size: 11px; font-weight: 900; cursor: pointer; } .contract-action-btn.accept { border: 1px solid rgba(52,152,219,0.42); background: rgba(52,152,219,0.13); color: #3498db; } .contract-action-btn.complete { border: 1px solid rgba(46,204,113,0.42); background: rgba(46,204,113,0.13); color: #2ecc71; } .contract-action-btn.dispute { margin-top: 6px; border: 1px solid rgba(231,76,60,0.34); color: #e74c3c; } .contract-action-btn.ghost { border: 1px solid var(--contract-card-border); color: var(--text3); } .contract-modal { position: fixed; inset: 0; z-index: 9100; align-items: flex-end; justify-content: center; background: rgba(0,0,0,0.90); backdrop-filter: blur(16px); } .contract-modal-sheet { position: relative; width: 100%; max-width: 480px; max-height: 90vh; box-sizing: border-box; overflow-y: auto; padding: 24px; border: 1px solid var(--contract-card-border); border-radius: 18px 18px 0 0; background: radial-gradient(circle at 100% 0%, var(--contract-accent-soft), transparent 42%), linear-gradient(180deg, color-mix(in srgb, var(--bg) 88%, #141421), color-mix(in srgb, var(--bg) 96%, #05050b)); box-shadow: 0 -18px 58px rgba(0,0,0,0.58); } .contract-modal-close { position: absolute; top: 16px; right: 16px; border: none; background: transparent; color: var(--text3); font-size: 22px; line-height: 1; cursor: pointer; } .contract-modal-title { margin-bottom: 16px; color: var(--text); font-family: monospace; font-size: 14px; font-weight: 900; letter-spacing: 1px; } .contract-field { margin-bottom: 12px; } .contract-field label { display: block; margin-bottom: 5px; color: var(--text3); font-family: monospace; font-size: 10px; letter-spacing: 1px; } .contract-field input, .contract-field textarea, .contract-field select { width: 100%; box-sizing: border-box; padding: 11px 12px; border: 1px solid var(--contract-card-border); border-radius: 11px; background: var(--contract-muted-bg); color: var(--text); font-family: monospace; font-size: 12px; outline: none; } .contract-field textarea { resize: none; } .contract-reward-field input { color: var(--gold); font-size: 15px; font-weight: 900; } .contract-fee-preview { margin-top: 5px; color: var(--text3); font-family: monospace; font-size: 10px; line-height: 1.4; } .contract-create-error { margin-bottom: 12px; padding: 9px 10px; border: 1px solid rgba(231,76,60,0.22); border-radius: 10px; background: rgba(231,76,60,0.10); color: #e74c3c; font-family: monospace; font-size: 11px; } .contract-submit-btn, .contract-cancel-btn { width: 100%; border-radius: 12px; font-family: monospace; cursor: pointer; } .contract-submit-btn { margin-bottom: 8px; padding: 14px; border: 1px solid var(--contract-accent-border); background: var(--contract-accent-soft); color: var(--contract-accent); font-size: 13px; font-weight: 900; } .contract-cancel-btn { padding: 11px; border: 1px solid var(--contract-card-border); background: transparent; color: var(--text3); font-size: 11px; } body.theme-nw-light #page-contracts { --contract-accent: #b86d1f; --contract-accent-soft: rgba(184, 109, 31, 0.11); --contract-accent-border: rgba(184, 109, 31, 0.34); --contract-card-bg: linear-gradient(135deg, rgba(255,255,255,0.78), rgba(247,242,231,0.70)); --contract-card-border: rgba(80, 58, 35, 0.16); --contract-card-shadow: 0 12px 26px rgba(70,45,20,0.10); --contract-muted-bg: rgba(255,255,255,0.72); --contract-danger: #b83f3f; } body.theme-genshin-light #page-contracts { --contract-accent: #b8863b; --contract-accent-soft: rgba(184, 134, 59, 0.13); --contract-accent-border: rgba(184, 134, 59, 0.38); --contract-card-bg: linear-gradient(135deg, rgba(255,250,238,0.86), rgba(238,230,210,0.72)); --contract-card-border: rgba(149, 117, 70, 0.22); --contract-card-shadow: 0 14px 28px rgba(85,61,28,0.12); --contract-muted-bg: rgba(255,255,255,0.72); --contract-ok: #4e8f62; --contract-danger: #b4564b; } body.theme-genshin-dark #page-contracts { --contract-accent: #d7b36a; --contract-accent-soft: rgba(215, 179, 106, 0.13); --contract-accent-border: rgba(215, 179, 106, 0.36); --contract-card-bg: linear-gradient(135deg, rgba(41,35,55,0.86), rgba(18,16,26,0.78)); --contract-card-border: rgba(215, 179, 106, 0.18); --contract-card-shadow: 0 16px 30px rgba(0,0,0,0.24); --contract-muted-bg: rgba(255,255,255,0.055); } body.theme-admin #page-contracts, body.is-architect #page-contracts { --contract-accent: #d4af37; --contract-accent-soft: rgba(212,175,55,0.12); --contract-accent-border: rgba(212,175,55,0.34); } body.theme-nw-light .contracts-tabs, body.theme-genshin-light .contracts-tabs { background: rgba(255,255,255,0.62); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.38); } /* Belt-and-braces: force the rules banner itself onto the light card look — relying only on the --contract-card-bg variable left this box dark/illegible on light themes. */ body.theme-nw-light .contracts-rules-card, body.theme-genshin-light .contracts-rules-card { background: linear-gradient(135deg, rgba(255,250,238,0.92), rgba(238,230,210,0.82)) !important; border-color: rgba(149, 117, 70, 0.22) !important; box-shadow: 0 14px 28px rgba(85,61,28,0.12) !important; } body.theme-nw-light .contracts-rules-text, body.theme-nw-light .contract-description, body.theme-genshin-light .contracts-rules-text, body.theme-genshin-light .contract-description { color: #33281d; } body.theme-nw-light .contract-card-title, body.theme-nw-light .contracts-empty-title, body.theme-genshin-light .contract-card-title, body.theme-genshin-light .contracts-empty-title { color: #181612; } body.theme-nw-light .contract-person, body.theme-nw-light .contract-reward-sub, body.theme-nw-light .contracts-empty-hint, body.theme-nw-light .contracts-rule-muted, body.theme-genshin-light .contract-person, body.theme-genshin-light .contract-reward-sub, body.theme-genshin-light .contracts-empty-hint, body.theme-genshin-light .contracts-rule-muted { color: #5d5345; } body.theme-nw-light .contracts-filter-chip, body.theme-nw-light .contract-category-badge, body.theme-genshin-light .contracts-filter-chip, body.theme-genshin-light .contract-category-badge { background: rgba(255,255,255,0.72); color: #504637; } body.theme-nw-light .contract-reward, body.theme-genshin-light .contract-reward { background: rgba(255,255,255,0.72); } body.theme-nw-light .contract-modal, body.theme-genshin-light .contract-modal { background: rgba(22,18,12,0.66); } body.theme-nw-light .contract-modal-sheet, body.theme-genshin-light .contract-modal-sheet { background: radial-gradient(circle at 100% 0%, var(--contract-accent-soft), transparent 42%), linear-gradient(180deg, rgba(255,252,244,0.98), rgba(246,239,224,0.98)); } body.theme-nw-light .contract-field input, body.theme-nw-light .contract-field textarea, body.theme-nw-light .contract-field select, body.theme-genshin-light .contract-field input, body.theme-genshin-light .contract-field textarea, body.theme-genshin-light .contract-field select { background: rgba(255,255,255,0.88); color: #16120c; } body.theme-nw-light .contract-submit-btn, body.theme-genshin-light .contract-submit-btn { background: color-mix(in srgb, var(--contract-accent) 13%, #fff); } body.theme-nw-light .contracts-tab, body.theme-genshin-light .contracts-tab { color: #5d5345; } body.theme-nw-light .contracts-tab.active, body.theme-genshin-light .contracts-tab.active { color: var(--contract-accent); background: color-mix(in srgb, var(--contract-accent) 14%, #fff); } body.theme-nw-light .contracts-filter-chip.active, body.theme-genshin-light .contracts-filter-chip.active { color: var(--contract-accent); background: color-mix(in srgb, var(--contract-accent) 12%, #fff); } body.theme-nw-light .contract-status, body.theme-genshin-light .contract-status { background: rgba(255,255,255,0.78); opacity: 1; } body.theme-nw-light .contract-status-hint, body.theme-genshin-light .contract-status-hint, body.theme-nw-light .contract-flow-labels, body.theme-genshin-light .contract-flow-labels, body.theme-nw-light .contract-privacy-toggle small, body.theme-genshin-light .contract-privacy-toggle small { color: #5d5345; opacity: 1; } body.theme-nw-light .contract-privacy-toggle, body.theme-genshin-light .contract-privacy-toggle { background: rgba(255,255,255,0.74); border-color: rgba(80,58,35,0.16); } body.theme-nw-light .contract-privacy-toggle b, body.theme-genshin-light .contract-privacy-toggle b { color: #181612; } body.theme-nw-light .contract-flow::before, body.theme-genshin-light .contract-flow::before { background: rgba(80, 58, 35, 0.18); } body.theme-nw-light .contract-flow span, body.theme-genshin-light .contract-flow span { background: rgba(255,255,255,0.78); } body.theme-nw-light .contract-card.status-accepted, body.theme-genshin-light .contract-card.status-accepted { background: linear-gradient(135deg, rgba(52,152,219,0.13), rgba(255,255,255,0.78)); border-color: rgba(52,152,219,0.28); } body.theme-nw-light .contract-card.status-completed, body.theme-genshin-light .contract-card.status-completed { background: linear-gradient(135deg, rgba(46,204,113,0.13), rgba(255,255,255,0.78)); border-color: rgba(46,204,113,0.28); } body.theme-nw-light .contract-card.status-disputed, body.theme-genshin-light .contract-card.status-disputed { background: linear-gradient(135deg, rgba(231,76,60,0.13), rgba(255,255,255,0.78)); border-color: rgba(231,76,60,0.30); } body.theme-genshin-light .contract-card.admin-contract { border-color: rgba(184, 134, 59, 0.42); background: radial-gradient(circle at 0% 0%, rgba(184,134,59,0.16), transparent 42%), radial-gradient(circle at 100% 0%, rgba(184,134,59,0.10), transparent 38%), var(--contract-card-bg); box-shadow: 0 0 0 1px rgba(184,134,59,0.10), 0 14px 30px rgba(85,61,28,0.14), 0 0 18px rgba(184,134,59,0.10); } body.theme-genshin-light .contract-card.admin-contract::before { background: linear-gradient(180deg, #b8863b, #8a6820 72%, transparent); } body.theme-genshin-light .contract-admin-badge { border: 1px solid rgba(184, 134, 59, 0.45); background: linear-gradient(90deg, rgba(184,134,59,0.18), rgba(184,134,59,0.08)), rgba(255,250,238,0.85); color: #8a6028; text-shadow: none; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.4); } body.theme-nw-light .contract-modal-title, body.theme-genshin-light .contract-modal-title, body.theme-nw-light .contract-field label, body.theme-genshin-light .contract-field label { color: #241c12; } body.theme-nw-light .contract-fee-preview, body.theme-genshin-light .contract-fee-preview { color: #5d5345; } body.theme-genshin-light #page-shop .shop-subtabs .subtab, body.theme-genshin-dark #page-shop .shop-subtabs .subtab { min-height: 42px; padding: 10px 12px; font-size: 11px; } body.theme-genshin-light #page-shop .shop-subtabs, body.theme-genshin-dark #page-shop .shop-subtabs { grid-template-columns: repeat(2, minmax(0, 1fr)); } body.theme-nw-light .admin-contract-monitor, body.theme-genshin-light .admin-contract-monitor, body.theme-nw-light .admin-contract-card, body.theme-genshin-light .admin-contract-card, body.theme-nw-light .contract-monitor-panel, body.theme-genshin-light .contract-monitor-panel, body.theme-nw-light .contract-monitor-row, body.theme-genshin-light .contract-monitor-row, body.theme-nw-light .contract-monitor-stat, body.theme-genshin-light .contract-monitor-stat { color: #1f1a14; } body.theme-nw-light .admin-contract-card, body.theme-genshin-light .admin-contract-card { background: radial-gradient(circle at 0% 0%, rgba(96,180,212,0.10), transparent 40%), rgba(255,255,255,0.76); border-color: rgba(80,58,35,0.16); } body.theme-nw-light .admin-contract-card.suspicious, body.theme-genshin-light .admin-contract-card.suspicious { background: radial-gradient(circle at 0% 0%, rgba(231,76,60,0.10), transparent 42%), rgba(255,255,255,0.78); border-color: rgba(231,76,60,0.30); } body.theme-nw-light .admin-contract-titlebox strong, body.theme-genshin-light .admin-contract-titlebox strong { color: #181612; } body.theme-nw-light .admin-contract-meta, body.theme-genshin-light .admin-contract-meta, body.theme-nw-light .admin-contract-action.remove, body.theme-genshin-light .admin-contract-action.remove { color: #5d5345; } body.theme-nw-light .contract-monitor-row span, body.theme-genshin-light .contract-monitor-row span, body.theme-nw-light .contract-monitor-stat span, body.theme-genshin-light .contract-monitor-stat span, body.theme-nw-light .contract-monitor-stat em, body.theme-genshin-light .contract-monitor-stat em, body.theme-nw-light .contract-monitor-note, body.theme-genshin-light .contract-monitor-note { color: #5d5345; } @media (max-width: 380px) { .contracts-shell { padding-left: 10px; padding-right: 10px; } .contract-card, .contracts-rules-card { border-radius: 14px; } .contract-modal-sheet { padding: 22px 18px; } } /* ===== LITE MODE — облегчённый режим для слабых устройств ===== */ body.lite-mode *, body.lite-mode *::before, body.lite-mode *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.1s !important; } body.lite-mode .profile-holo-ring { display: none; } body.lite-mode .profile-scan-line { display: none; } body.lite-mode #matrixRain { display: none; } /* ===== DEMO MODE ===== */ html.demo-mode, body.demo-mode { --demo-accent: #d4af37; } body.demo-mode.theme-genshin-light, html.demo-mode.theme-genshin-light, body.demo-mode.theme-genshin-dark, html.demo-mode.theme-genshin-dark { --demo-accent: #caa45d; } .demo-mode-banner { position: sticky; top: 0; z-index: 9000; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 7px 12px; border-bottom: 1px solid rgba(212,175,55,0.34); background: linear-gradient(90deg, rgba(180,20,20,0.16), rgba(212,175,55,0.12), rgba(180,20,20,0.16)), rgba(5,5,10,0.92); color: var(--demo-accent); font-family: monospace; font-size: 9px; letter-spacing: 1.2px; text-transform: uppercase; backdrop-filter: blur(12px); } .demo-mode-banner span { color: rgba(255,255,255,0.68); letter-spacing: 0.6px; text-transform: none; } body.demo-mode #implants-catalog, html.demo-mode #implants-catalog, body.demo-mode #fragment-exchange-implant-block, html.demo-mode #fragment-exchange-implant-block, body.demo-mode #fragment-exchange-card-block, html.demo-mode #fragment-exchange-card-block, body.demo-mode #casinoPlayContent, html.demo-mode #casinoPlayContent, body.demo-mode #casinoInventoryContent, html.demo-mode #casinoInventoryContent, body.demo-mode #casinoHistoryContent, html.demo-mode #casinoHistoryContent, body.demo-mode #casinoRulesContent, html.demo-mode #casinoRulesContent, body.demo-mode #genshinRulesContent, html.demo-mode #genshinRulesContent, body.demo-mode #casinoGenshinContent, html.demo-mode #casinoGenshinContent, body.demo-mode .casino-subtabs, html.demo-mode .casino-subtabs, body.demo-mode #more-team, html.demo-mode #more-team, body.demo-mode .profile-showcase-modal, html.demo-mode .profile-showcase-modal, body.demo-mode .nav-item[onclick="showPage('casino',this)"], html.demo-mode .nav-item[onclick="showPage('casino',this)"], body.demo-mode .more-item[onclick="openMore('team')"], html.demo-mode .more-item[onclick="openMore('team')"], body.demo-mode .profile-card-actions .profile-mini-btn, html.demo-mode .profile-card-actions .profile-mini-btn { display: none !important; } body.demo-mode #tab-rating-diary-btn, html.demo-mode #tab-rating-diary-btn, body.demo-mode #rating-diary-tab, html.demo-mode #rating-diary-tab { display: none !important; } .demo-note, .demo-catalog-lock, .demo-card { margin: 10px 12px; border: 1px solid rgba(212,175,55,0.18); border-radius: 14px; background: radial-gradient(circle at 0% 0%, rgba(212,175,55,0.10), transparent 44%), rgba(255,255,255,0.035); color: var(--text2); box-shadow: 0 10px 24px rgba(0,0,0,0.14); } .demo-note { padding: 11px 12px; color: var(--text3); font-family: monospace; font-size: 10px; line-height: 1.55; } .demo-card { display: flex; gap: 11px; align-items: center; padding: 12px; } .demo-card-icon { width: 38px; height: 38px; flex: 0 0 38px; display: flex; align-items: center; justify-content: center; border: 1px solid rgba(212,175,55,0.28); border-radius: 12px; background: rgba(212,175,55,0.08); color: var(--demo-accent); font-family: serif; font-size: 18px; font-weight: 900; } .demo-card-title { color: var(--text); font-size: 13px; font-weight: 900; } .demo-card-body { margin-top: 3px; color: var(--text3); font-family: monospace; font-size: 10px; line-height: 1.45; } .demo-catalog-lock { padding: 18px 14px; text-align: center; overflow: hidden; } .demo-raid-locked { cursor: default !important; border-style: dashed !important; border-color: rgba(212,175,55,0.34) !important; background: radial-gradient(circle at 50% 0%, rgba(212,175,55,0.12), transparent 55%), rgba(10,10,16,0.72) !important; box-shadow: 0 16px 38px rgba(0,0,0,0.20) !important; } .demo-lock-kicker { color: rgba(212,175,55,0.70); font-family: monospace; font-size: 8px; font-weight: 900; letter-spacing: 2px; } .demo-lock-title { margin-top: 6px; color: var(--text); font-size: 15px; font-weight: 900; } .demo-lock-copy { margin: 7px auto 0; max-width: 320px; color: var(--text3); font-family: monospace; font-size: 10px; line-height: 1.55; } body.theme-nw-light .demo-mode-banner, body.theme-genshin-light .demo-mode-banner { background: linear-gradient(90deg, rgba(184,109,31,0.15), rgba(212,175,55,0.18), rgba(184,109,31,0.15)), rgba(255,250,238,0.94); color: #6c4a12; } body.theme-nw-light .demo-mode-banner span, body.theme-genshin-light .demo-mode-banner span { color: #5d5345; } body.theme-nw-light .demo-note, body.theme-nw-light .demo-catalog-lock, body.theme-nw-light .demo-card, body.theme-nw-light .demo-raid-locked, body.theme-genshin-light .demo-note, body.theme-genshin-light .demo-catalog-lock, body.theme-genshin-light .demo-card, body.theme-genshin-light .demo-raid-locked { background: radial-gradient(circle at 0% 0%, rgba(184,134,59,0.14), transparent 44%), rgba(255,255,255,0.82) !important; color: #33281d; } body.theme-nw-light .demo-card-title, body.theme-nw-light .demo-lock-title, body.theme-genshin-light .demo-card-title, body.theme-genshin-light .demo-lock-title { color: #181612; } body.theme-nw-light .demo-card-body, body.theme-nw-light .demo-lock-copy, body.theme-genshin-light .demo-card-body, body.theme-genshin-light .demo-lock-copy { color: #5d5345; } body.lite-mode .modal-content, body.lite-mode .modal-header, body.lite-mode .modal-footer { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } body.lite-mode .leaderboard-modal { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } body.lite-mode .admin-panel { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } body.lite-mode .event-dialog { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } body.lite-mode .popup-overlay { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } body.lite-mode #diaryStarsPopup { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } body.lite-mode .contract-card { animation: none !important; } body.lite-mode .lb-item { animation: none !important; } body.lite-mode .inventory-item { box-shadow: 0 2px 8px rgba(0,0,0,0.2) !important; } body.lite-mode .inventory-item::before { display: none; } body.lite-mode .profile-card::before, body.lite-mode .profile-card-home::before, body.lite-mode .profile-card-home::after { display: none; } /* ===== EVENT CREATE MODAL ===== */ .event-active-bonuses { display: flex; flex-wrap: nowrap; gap: 4px; margin-top: 6px; max-height: none; overflow-x: auto; overflow-y: hidden; -ms-overflow-style: none; scrollbar-width: none; pointer-events: auto; } .event-active-bonuses::-webkit-scrollbar { display: none; } .event-bonus-badge { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; background: rgba(0,255,136,0.08); border: 1px solid rgba(0,255,136,0.25); border-radius: 12px; padding: 2px 8px; font-size: 10px; font-family: monospace; color: #00ff88; white-space: nowrap; } .event-info-modal { position: absolute; inset: 0; z-index: 130; display: flex; align-items: flex-end; background: rgba(0,0,0,0.72); backdrop-filter: blur(4px); } .event-info-modal-inner { position: relative; width: 100%; max-height: 78vh; overflow-y: auto; background: #0a0e14; border-top: 1px solid rgba(0,255,136,0.25); border-radius: 18px 18px 0 0; padding: 24px 18px 32px; box-sizing: border-box; } .event-info-modal-close { position: absolute; top: 12px; right: 14px; width: 30px; height: 30px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.05); color: rgba(255,255,255,0.6); font-size: 14px; cursor: pointer; } .event-info-title { font-family: monospace; font-size: 15px; font-weight: 800; color: #00ff88; letter-spacing: 2px; margin-bottom: 10px; padding-right: 30px; } .event-info-section { font-size: 11px; font-weight: 700; letter-spacing: 1px; color: rgba(0,229,255,0.85); font-family: monospace; margin: 16px 0 6px; } .event-info-text { font-size: 12.5px; line-height: 1.6; color: rgba(255,255,255,0.75); } .event-info-text b { color: #fff; } .event-bonus-table { width: 100%; border-collapse: collapse; margin-top: 4px; } .event-bonus-table tr { border-bottom: 1px solid rgba(255,255,255,0.06); } .event-bonus-table td { padding: 6px 4px; font-size: 11.5px; color: rgba(255,255,255,0.75); vertical-align: top; } .event-bonus-table td:first-child { white-space: nowrap; color: #fff; font-weight: 700; padding-right: 10px; } .event-create-modal { position: absolute; inset: 0; z-index: 120; display: flex; align-items: flex-end; background: rgba(0,0,0,0.72); backdrop-filter: blur(4px); } .event-create-modal-inner { width: 100%; background: #0a0e14; border-top: 1px solid rgba(0,255,136,0.25); border-radius: 18px 18px 0 0; padding: 24px 18px 32px; } .event-create-modal-title { font-family: monospace; font-size: 15px; font-weight: 800; color: #00ff88; letter-spacing: 2px; margin-bottom: 4px; } .event-create-modal-sub { font-size: 12px; color: rgba(255,255,255,0.45); margin-bottom: 16px; } .event-create-presets { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; } .event-create-preset { background: rgba(0,255,136,0.08); border: 1px solid rgba(0,255,136,0.25); border-radius: 20px; color: #00ff88; font-size: 12px; padding: 6px 13px; cursor: pointer; font-family: inherit; transition: background 0.15s; } .event-create-preset:active { background: rgba(0,255,136,0.2); } .event-create-input { width: 100%; box-sizing: border-box; background: rgba(255,255,255,0.05); border: 1px solid rgba(0,255,136,0.3); border-radius: 10px; color: #fff; font-size: 14px; padding: 11px 14px; font-family: inherit; outline: none; margin-bottom: 16px; } .event-create-input:focus { border-color: #00ff88; } .event-create-input::placeholder { color: rgba(255,255,255,0.3); } .event-create-actions { display: flex; gap: 10px; } .event-create-cancel { flex: 1; padding: 12px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); border-radius: 10px; color: rgba(255,255,255,0.5); font-size: 13px; cursor: pointer; font-family: inherit; } .event-create-confirm { flex: 2; padding: 12px; background: linear-gradient(135deg, rgba(0,255,136,0.18), rgba(0,229,255,0.12)); border: 1px solid rgba(0,255,136,0.4); border-radius: 10px; color: #00ff88; font-size: 13px; font-weight: 700; font-family: monospace; letter-spacing: 1px; cursor: pointer; } .event-create-confirm:active { background: rgba(0,255,136,0.28); } /* ===== EVENT STANDBY SCREEN ===== */ .event-standby-screen { padding: 24px 18px 20px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; } .event-standby-kicker { font-family: monospace; font-size: 10px; letter-spacing: 2px; color: rgba(255,255,255,0.28); text-transform: uppercase; } .event-standby-title { font-size: 22px; font-weight: 900; color: #fff; letter-spacing: 1px; text-shadow: 0 0 24px rgba(200,0,30,0.45); } .event-standby-sub { font-size: 12px; color: rgba(255,255,255,0.38); line-height: 1.5; max-width: 240px; } .event-standby-create-btn { margin-top: 8px; width: 100%; padding: 14px; background: linear-gradient(135deg, rgba(220,0,40,0.22), rgba(180,0,30,0.12)); border: 1px solid rgba(220,0,40,0.45); border-radius: 12px; color: #ff3355; font-size: 14px; font-weight: 800; font-family: monospace; letter-spacing: 2px; cursor: pointer; text-transform: uppercase; transition: background 0.2s; } .event-standby-create-btn:active { background: rgba(220,0,40,0.35); } /* ── Architect finale (WIN / LOSE) ───────────────────────────────── */ .event-finale-mvp { position: relative; margin: 10px 0 14px; padding: 18px 14px 14px; text-align: center; background: linear-gradient(180deg, rgba(20,16,8,0.92), rgba(8,8,12,0.92)); border: 1px solid rgba(212,175,55,0.35); border-radius: 0; overflow: hidden; } .event-finale-mvp::before, .event-finale-mvp::after { content: ""; position: absolute; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(212,175,55,0.6), transparent); } .event-finale-mvp::before { top: 0; } .event-finale-mvp::after { bottom: 0; } .event-finale-mvp.is-fail { background: linear-gradient(180deg, rgba(28,8,8,0.92), rgba(8,8,12,0.92)); border-color: rgba(220,38,38,0.45); } .event-finale-mvp.is-fail::before, .event-finale-mvp.is-fail::after { background: linear-gradient(90deg, transparent, rgba(220,38,38,0.6), transparent); } .event-finale-mvp-crown { font-size: 26px; line-height: 1.25; color: var(--gold, #d4af37); text-shadow: 0 0 14px rgba(212,175,55,0.5); margin-bottom: 4px; animation: finaleMvpCrown 2.4s ease-in-out infinite; } .event-finale-mvp.is-fail .event-finale-mvp-crown { color: #ff6464; text-shadow: 0 0 14px rgba(220,38,38,0.55); } @keyframes finaleMvpCrown { 0%, 100% { transform: translateY(0); filter: brightness(1); } 50% { transform: translateY(-2px); filter: brightness(1.25); } } .event-finale-mvp-label { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 3px; color: rgba(212,175,55,0.7); text-transform: uppercase; margin-bottom: 6px; } .event-finale-mvp.is-fail .event-finale-mvp-label { color: rgba(220,38,38,0.7); } .event-finale-mvp-name { font-size: 18px; font-weight: 800; letter-spacing: 1px; color: #fff; text-transform: uppercase; margin-bottom: 12px; } .event-finale-mvp-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; max-width: 240px; margin: 0 auto; } .event-finale-mvp-stat { padding: 8px 6px; border: 1px solid rgba(255,255,255,0.08); background: rgba(0,0,0,0.35); } .event-finale-mvp-stat span { display: block; font-family: 'JetBrains Mono', monospace; font-size: 18px; font-weight: 700; color: var(--gold, #d4af37); } .event-finale-mvp.is-fail .event-finale-mvp-stat span { color: #ff8a8a; } .event-finale-mvp-stat label { display: block; margin-top: 2px; font-family: 'JetBrains Mono', monospace; font-size: 8px; letter-spacing: 2px; color: rgba(255,255,255,0.45); text-transform: uppercase; } .event-finale-board-label { margin: 8px 0 6px; font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 3px; color: rgba(255,255,255,0.4); text-transform: uppercase; } .event-finale-board { display: flex; flex-direction: column; gap: 6px; } .event-finale-row { padding: 7px 8px; background: rgba(255,255,255,0.03); border-left: 2px solid rgba(255,255,255,0.1); } .event-finale-row.is-mvp { background: rgba(212,175,55,0.07); border-left-color: var(--gold, #d4af37); } .event-finale-row-empty { opacity: 0.55; } .event-finale-row-head { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600; color: #fff; } .event-finale-row-place { font-family: 'JetBrains Mono', monospace; font-size: 10px; color: rgba(255,255,255,0.45); min-width: 22px; } .event-finale-row.is-mvp .event-finale-row-place { color: var(--gold, #d4af37); } .event-finale-row-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .event-finale-row-stat { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; color: var(--gold, #d4af37); } .event-finale-row-stat small { font-size: 8px; font-weight: 500; letter-spacing: 1px; color: rgba(255,255,255,0.4); margin-left: 2px; } .event-finale-row-bar { height: 3px; margin-top: 5px; background: rgba(255,255,255,0.06); overflow: hidden; } .event-finale-row-bar > div { height: 100%; width: 0; background: rgba(255,255,255,0.3); transition: width 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); } .event-finale-row.is-mvp .event-finale-row-bar > div { background: linear-gradient(90deg, #ffd700, #ff8c00); box-shadow: 0 0 8px rgba(212,175,55,0.35); } .event-finale-row-sub { margin-top: 4px; font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 1px; color: rgba(120,200,255,0.7); } .event-finale-empty { margin: 10px 0; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 2px; color: rgba(255,255,255,0.4); text-align: center; } /* Bigger verdict at top of result card */ .event-result-card .event-result-verdict { font-size: 22px !important; font-weight: 900 !important; letter-spacing: 4px !important; text-align: center !important; padding: 8px 0 6px !important; } .event-result-card.event-result-win .event-result-verdict { color: var(--gold, #d4af37) !important; text-shadow: 0 0 18px rgba(212,175,55,0.55), 0 0 2px rgba(255,255,255,0.4) !important; animation: finaleVerdictPulse 2.2s ease-in-out infinite; } .event-result-card.event-result-lose .event-result-verdict { color: #ff5555 !important; text-shadow: 0 0 18px rgba(220,38,38,0.55), 0 0 2px rgba(255,255,255,0.4) !important; animation: finaleVerdictPulse 2.2s ease-in-out infinite; } @keyframes finaleVerdictPulse { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.25); } } /* Campus map */ .campus-map-root { padding: 0 12px 16px; } .campus-map-panel { position: relative; overflow: hidden; border: 1px solid rgba(0, 212, 255, 0.25); border-radius: 18px; background: radial-gradient(circle at 18% 0%, rgba(0, 212, 255, 0.16), transparent 34%), radial-gradient(circle at 100% 20%, rgba(204, 34, 0, 0.18), transparent 32%), rgba(5, 8, 14, 0.88); box-shadow: 0 18px 50px rgba(0,0,0,0.32), inset 0 0 0 1px rgba(255,255,255,0.03); } .campus-map-panel::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(0,255,136,0.06) 1px, transparent 1px), linear-gradient(0deg, rgba(0,255,136,0.04) 1px, transparent 1px); background-size: 28px 28px; opacity: 0.35; } .campus-map-head, .campus-map-search, .campus-map-filters, .campus-map-list { position: relative; z-index: 2; } .campus-map-head { display: flex; flex-direction: column; gap: 8px; padding: 14px 14px 8px; } .campus-map-head-actions { display: flex; flex-wrap: wrap; gap: 6px; } .campus-map-kicker { font-family: 'JetBrains Mono', monospace; font-size: 8px; letter-spacing: 2px; color: rgba(0, 212, 255, 0.86); } .campus-map-title { margin-top: 3px; font-size: 22px; line-height: 1.15; font-weight: 800; letter-spacing: 1px; color: var(--text); white-space: nowrap; } body.theme-genshin-light .campus-map-title, body.theme-genshin-dark .campus-map-title { font-family: 'Noto Serif SC', Georgia, serif; letter-spacing: 2px; } .campus-map-mode { border: 1px solid rgba(0, 212, 255, 0.35); border-radius: 999px; padding: 7px 10px; background: rgba(0, 212, 255, 0.08); color: rgba(0, 212, 255, 0.95); font-family: 'JetBrains Mono', monospace; font-size: 8px; letter-spacing: 1px; } .campus-map-search { display: flex; align-items: center; gap: 8px; margin: 6px 14px 10px; padding: 10px 12px; border: 1px solid rgba(255,255,255,0.08); border-radius: 13px; background: rgba(0,0,0,0.22); } .campus-map-search i { color: rgba(0, 212, 255, 0.75); } .campus-map-search input { min-width: 0; width: 100%; border: 0; outline: 0; background: transparent; color: var(--text); font-size: 12px; } .campus-map-search input::placeholder { color: var(--text3); } .campus-map-filters { display: flex; gap: 6px; overflow-x: auto; padding: 0 14px 12px; scrollbar-width: none; } .campus-map-filters::-webkit-scrollbar { display: none; } .campus-map-filters button { flex: 0 0 auto; border: 1px solid rgba(255,255,255,0.08); border-radius: 999px; padding: 7px 10px; background: rgba(255,255,255,0.04); color: var(--text2); font-family: 'JetBrains Mono', monospace; font-size: 9px; } .campus-map-filters button.active { border-color: rgba(0, 212, 255, 0.55); background: rgba(0, 212, 255, 0.14); color: #8ff4ff; box-shadow: 0 0 18px rgba(0, 212, 255, 0.18); } /* Category filter chips match their map-pin colour: study #00d4ff, food #d4af37, dorm #e887ff, sport #42e88f, important #ff3b3b, meeting #ffffff. Resting state is a muted tint, active state lights up like the pin on the map. */ .campus-map-filters button.cat-study { color: rgba(143, 244, 255, 0.78); border-color: rgba(0, 212, 255, 0.22); } .campus-map-filters button.cat-food { color: rgba(232, 200, 110, 0.82); border-color: rgba(212, 175, 55, 0.24); } .campus-map-filters button.cat-dorm { color: rgba(232, 170, 255, 0.82); border-color: rgba(232, 135, 255, 0.24); } .campus-map-filters button.cat-sport { color: rgba(120, 240, 175, 0.82); border-color: rgba(66, 232, 143, 0.24); } .campus-map-filters button.cat-important{ color: rgba(255, 130, 130, 0.85); border-color: rgba(255, 59, 59, 0.26); } .campus-map-filters button.cat-meeting { color: rgba(235, 235, 235, 0.85); border-color: rgba(255, 255, 255, 0.22); } .campus-map-filters button.cat-study.active { border-color: rgba(0, 212, 255, 0.55); background: rgba(0, 212, 255, 0.14); color: #8ff4ff; box-shadow: 0 0 18px rgba(0, 212, 255, 0.20); } .campus-map-filters button.cat-food.active { border-color: rgba(212, 175, 55, 0.60); background: rgba(212, 175, 55, 0.15); color: #ffdf8a; box-shadow: 0 0 18px rgba(212, 175, 55, 0.22); } .campus-map-filters button.cat-dorm.active { border-color: rgba(232, 135, 255, 0.60); background: rgba(232, 135, 255, 0.15); color: #f3c2ff; box-shadow: 0 0 18px rgba(232, 135, 255, 0.22); } .campus-map-filters button.cat-sport.active { border-color: rgba(66, 232, 143, 0.60); background: rgba(66, 232, 143, 0.15); color: #9bffce; box-shadow: 0 0 18px rgba(66, 232, 143, 0.22); } .campus-map-filters button.cat-important.active { border-color: rgba(255, 59, 59, 0.62); background: rgba(255, 59, 59, 0.15); color: #ff9b9b; box-shadow: 0 0 18px rgba(255, 59, 59, 0.24); } .campus-map-filters button.cat-meeting.active { border-color: rgba(255, 255, 255, 0.60); background: rgba(255, 255, 255, 0.16); color: #ffffff; box-shadow: 0 0 18px rgba(255, 255, 255, 0.22); } .campus-map-mode.active { border-color: rgba(0, 212, 255, 0.6); background: rgba(0, 212, 255, 0.16); color: #8ff4ff; box-shadow: 0 0 16px rgba(0, 212, 255, 0.2); } .campus-map-route-bar { position: relative; z-index: 2; display: grid; gap: 6px; margin: 0 14px 10px; padding: 10px 12px; border: 1px solid rgba(0, 212, 255, 0.22); border-radius: 13px; background: rgba(0, 212, 255, 0.06); } .campus-map-route-points { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .campus-map-route-chip { border: 1px solid rgba(255,255,255,0.12); border-radius: 999px; padding: 5px 10px; color: var(--text2); font-family: 'JetBrains Mono', monospace; font-size: 9px; } .campus-map-route-chip.set { border-color: rgba(0, 212, 255, 0.4); color: #8ff4ff; background: rgba(0, 212, 255, 0.08); } .campus-map-route-arrow { color: var(--text3); font-size: 11px; } .campus-map-route-estimate { color: var(--text); font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.04em; } .campus-map-route-estimate.hint { color: var(--text3); font-size: 9px; } .campus-map-route-clear { justify-self: start; border: 1px solid rgba(255,255,255,0.12); border-radius: 999px; padding: 6px 12px; background: rgba(255,255,255,0.04); color: var(--text2); font-family: 'JetBrains Mono', monospace; font-size: 8px; letter-spacing: 0.06em; text-transform: uppercase; } .campus-map-route-line { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 3; } .campus-map-route-line line { stroke: rgba(0, 212, 255, 0.85); stroke-width: 0.4; stroke-dasharray: 1.6 1.2; vector-effect: non-scaling-stroke; filter: drop-shadow(0 0 3px rgba(0, 212, 255, 0.6)); } .campus-map-pin.route-from span, .campus-map-pin.route-to span { box-shadow: 0 0 0 2px rgba(0,0,0,0.6), 0 0 22px rgba(0, 212, 255, 0.95); } .campus-map-pin.route-from span { background: #00ffaa; } .campus-map-pin.route-to span { background: #ff8a00; } .campus-map-row.route-from, .campus-map-row.route-to { border-color: rgba(0, 212, 255, 0.4); box-shadow: 0 0 16px rgba(0, 212, 255, 0.14); } .campus-map-row-fav { flex: 0 0 auto; width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; border-radius: 50%; color: rgba(255,255,255,0.22); font-size: 14px; transition: color 0.15s ease, transform 0.15s ease; } .campus-map-row-fav.on { color: #ffd24a; text-shadow: 0 0 10px rgba(255, 210, 74, 0.7); } .campus-map-row-fav:active { transform: scale(0.85); } .campus-map-popup-fav { position: absolute; top: 10px; right: 50px; width: 30px; height: 30px; border: 1px solid rgba(255,255,255,0.12); border-radius: 50%; background: rgba(255,255,255,0.04); color: rgba(255,255,255,0.3); font-size: 16px; } .campus-map-popup-fav.on { color: #ffd24a; border-color: rgba(255, 210, 74, 0.4); background: rgba(255, 210, 74, 0.1); text-shadow: 0 0 10px rgba(255, 210, 74, 0.7); } .campus-map-editor { position: relative; z-index: 2; margin: 0 14px 12px; border: 1px solid rgba(0, 212, 255, 0.18); border-radius: 14px; background: rgba(0, 10, 16, 0.62); overflow: hidden; } .campus-map-editor.active { border-color: rgba(0, 212, 255, 0.46); box-shadow: 0 0 24px rgba(0, 212, 255, 0.12); } .campus-map-editor-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 11px; } .campus-map-editor-top b { display: block; color: #8ff4ff; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; } .campus-map-editor-top small { display: block; margin-top: 3px; color: var(--text3); font-family: 'JetBrains Mono', monospace; font-size: 8px; } .campus-map-editor-top button, .campus-map-editor-actions button { border: 1px solid rgba(0, 212, 255, 0.32); border-radius: 999px; padding: 7px 10px; background: rgba(0, 212, 255, 0.08); color: #8ff4ff; font-family: 'JetBrains Mono', monospace; font-size: 8px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } .campus-map-editor-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 0 11px 10px; } .campus-map-editor label { display: grid; gap: 4px; color: var(--text3); font-family: 'JetBrains Mono', monospace; font-size: 8px; letter-spacing: 0.08em; text-transform: uppercase; } .campus-map-editor input, .campus-map-editor select, .campus-map-editor textarea { width: 100%; border: 1px solid rgba(255,255,255,0.08); border-radius: 10px; padding: 8px 9px; background: rgba(0,0,0,0.24); color: var(--text); font-size: 11px; outline: 0; } .campus-map-editor-description { padding: 0 11px 10px; } .campus-map-editor textarea { resize: vertical; min-height: 48px; } .campus-map-editor-actions { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; padding: 0 11px 11px; } .campus-map-scroll { position: relative; z-index: 1; overflow: auto; margin: 0 10px; border: 1px solid rgba(255,255,255,0.08); border-radius: 14px; background: rgba(0,0,0,0.24); -webkit-overflow-scrolling: touch; } .campus-map-stage { position: relative; width: 980px; max-width: none; } .campus-map-stage.editing { cursor: crosshair; } .campus-map-stage img { display: block; width: 100%; height: auto; user-select: none; -webkit-user-drag: none; } .campus-map-pin { position: absolute; width: 24px; height: 24px; transform: translate(-50%, -50%); border: 0; border-radius: 50%; background: transparent; cursor: pointer; padding: 0; } .campus-map-pin span { position: absolute; inset: 6px; border-radius: 50%; background: #00d4ff; box-shadow: 0 0 0 2px rgba(0,0,0,0.6), 0 0 18px rgba(0,212,255,0.8); } .campus-map-pin::before { content: ""; position: absolute; inset: 2px; border: 1px solid rgba(0, 212, 255, 0.7); border-radius: 50%; animation: campusPinPulse 2s ease-out infinite; } .campus-map-pin.selected span { outline: 2px solid #fff; outline-offset: 4px; } .campus-map-pin em { position: absolute; left: 50%; top: 22px; transform: translate(calc(-50% + var(--label-dx, 0px)), var(--label-dy, 0px)); min-width: max-content; max-width: 104px; padding: 3px 6px; border: 1px solid rgba(0, 212, 255, 0.38); border-radius: 999px; background: rgba(3, 8, 14, 0.86); box-shadow: 0 8px 18px rgba(0,0,0,0.45), 0 0 16px rgba(0, 212, 255, 0.18); color: #e8fdff; font-family: 'JetBrains Mono', monospace; font-size: 8px; font-style: normal; font-weight: 800; letter-spacing: 0.04em; line-height: 1.15; text-align: center; text-transform: uppercase; white-space: nowrap; pointer-events: none; } .campus-map-pin.label-up em { top: auto; bottom: 22px; transform: translate(calc(-50% + var(--label-dx, 0px)), var(--label-dy, 0px)); } .campus-map-pin.label-left em { left: auto; right: 22px; top: 50%; transform: translate(var(--label-dx, 0px), calc(-50% + var(--label-dy, 0px))); } .campus-map-pin.label-right em { left: 22px; top: 50%; transform: translate(var(--label-dx, 0px), calc(-50% + var(--label-dy, 0px))); } .campus-map-pin.food span { background: #d4af37; box-shadow: 0 0 0 2px rgba(0,0,0,0.6), 0 0 18px rgba(212,175,55,0.8); } .campus-map-pin.dorm span { background: #e887ff; box-shadow: 0 0 0 2px rgba(0,0,0,0.6), 0 0 18px rgba(232,135,255,0.75); } .campus-map-pin.sport span { background: #42e88f; box-shadow: 0 0 0 2px rgba(0,0,0,0.6), 0 0 18px rgba(66,232,143,0.75); } .campus-map-pin.important span { background: #ff3b3b; box-shadow: 0 0 0 2px rgba(0,0,0,0.6), 0 0 18px rgba(255,59,59,0.8); } .campus-map-pin.meeting span { background: #ffffff; box-shadow: 0 0 0 2px rgba(0,0,0,0.7), 0 0 20px rgba(255,255,255,0.8); } .campus-map-pin.food em { border-color: rgba(212,175,55,0.5); box-shadow: 0 8px 18px rgba(0,0,0,0.45), 0 0 16px rgba(212,175,55,0.2); } .campus-map-pin.dorm em { border-color: rgba(232,135,255,0.5); box-shadow: 0 8px 18px rgba(0,0,0,0.45), 0 0 16px rgba(232,135,255,0.18); } .campus-map-pin.sport em { border-color: rgba(66,232,143,0.5); box-shadow: 0 8px 18px rgba(0,0,0,0.45), 0 0 16px rgba(66,232,143,0.18); } .campus-map-pin.important em { border-color: rgba(255,59,59,0.5); box-shadow: 0 8px 18px rgba(0,0,0,0.45), 0 0 16px rgba(255,59,59,0.2); } .campus-map-pin.meeting em { border-color: rgba(255,255,255,0.5); box-shadow: 0 8px 18px rgba(0,0,0,0.45), 0 0 16px rgba(255,255,255,0.18); } body.theme-genshin-light .campus-map-pin em, body.theme-genshin-dark .campus-map-pin em, body.theme-genshin .campus-map-pin em { border-color: rgba(154, 110, 39, 0.45); background: rgba(255, 247, 226, 0.92); box-shadow: 0 8px 16px rgba(88, 56, 16, 0.22); color: #624018; font-family: Georgia, 'Times New Roman', serif; letter-spacing: 0.02em; } body.theme-nw-light .campus-map-pin em { border-color: rgba(21, 82, 116, 0.24); background: rgba(255, 255, 255, 0.92); box-shadow: 0 8px 16px rgba(25, 40, 56, 0.18); color: #143044; } @keyframes campusPinPulse { 0% { opacity: 0.7; transform: scale(0.7); } 100% { opacity: 0; transform: scale(1.9); } } .campus-map-list { display: grid; gap: 7px; padding: 12px 14px 14px; } .campus-map-row { display: grid; grid-template-columns: 14px minmax(0, 1fr) auto; gap: 9px; align-items: center; text-align: left; border: 1px solid rgba(255,255,255,0.08); border-radius: 13px; padding: 10px; background: rgba(255,255,255,0.035); color: var(--text); } .campus-map-row b { display: block; font-size: 12px; } .campus-map-row small { display: block; margin-top: 3px; color: var(--text3); font-size: 9px; line-height: 1.35; } .campus-map-row-dot { width: 10px; height: 10px; border-radius: 50%; background: #00d4ff; box-shadow: 0 0 12px rgba(0,212,255,0.7); } .campus-map-row.food .campus-map-row-dot { background: #d4af37; box-shadow: 0 0 12px rgba(212,175,55,0.7); } .campus-map-row.dorm .campus-map-row-dot { background: #e887ff; box-shadow: 0 0 12px rgba(232,135,255,0.7); } .campus-map-row.sport .campus-map-row-dot { background: #42e88f; box-shadow: 0 0 12px rgba(66,232,143,0.7); } .campus-map-row.important .campus-map-row-dot { background: #ff3b3b; box-shadow: 0 0 12px rgba(255,59,59,0.7); } .campus-map-row.meeting .campus-map-row-dot { background: #fff; box-shadow: 0 0 12px rgba(255,255,255,0.7); } .campus-map-empty { padding: 14px; color: var(--text3); text-align: center; font-family: 'JetBrains Mono', monospace; font-size: 10px; } .campus-map-popup { position: fixed; inset: 0; z-index: 9200; } .campus-map-popup-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.55); backdrop-filter: blur(6px); } .campus-map-popup-card { position: absolute; top: 50%; left: 50%; width: min(420px, calc(100vw - 28px)); max-height: min(620px, calc(100vh - 42px)); overflow-y: auto; transform: translate(-50%, -50%); border: 1px solid rgba(0, 212, 255, 0.28); border-radius: 18px; padding: 18px; background: rgba(8, 12, 20, 0.96); box-shadow: 0 20px 60px rgba(0,0,0,0.55); } .campus-map-popup-close { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border: 1px solid rgba(255,255,255,0.12); border-radius: 50%; background: rgba(255,255,255,0.04); color: var(--text2); font-size: 20px; } .campus-map-popup-category { margin-bottom: 6px; color: rgba(0, 212, 255, 0.85); font-family: 'JetBrains Mono', monospace; font-size: 8px; letter-spacing: 2px; text-transform: uppercase; } .campus-map-popup-card h3 { margin: 0; padding-right: 34px; color: var(--text); font-size: 18px; } .campus-map-popup-cn { margin-top: 5px; color: var(--gold); font-size: 11px; } .campus-map-popup-card p { margin: 12px 0 0; color: var(--text2); font-size: 13px; line-height: 1.55; } .campus-map-popup-note { margin-top: 12px; border: 1px solid rgba(212,175,55,0.22); border-radius: 12px; padding: 10px; background: rgba(212,175,55,0.08); color: var(--gold); font-size: 11px; line-height: 1.45; } body.theme-genshin-light .campus-map-panel, body.theme-genshin-dark .campus-map-panel { border-color: rgba(219,177,101,0.35); background: radial-gradient(circle at 20% 0%, rgba(219,177,101,0.22), transparent 36%), radial-gradient(circle at 100% 20%, rgba(75,83,102,0.18), transparent 34%), var(--bg2); } body.theme-genshin-light .campus-map-kicker, body.theme-genshin-dark .campus-map-kicker, body.theme-genshin-light .campus-map-popup-category, body.theme-genshin-dark .campus-map-popup-category { color: var(--gold); font-family: Georgia, serif; } body.theme-genshin-light .campus-map-mode, body.theme-genshin-dark .campus-map-mode, body.theme-genshin-light .campus-map-filters button.active, body.theme-genshin-dark .campus-map-filters button.active { border-color: rgba(219,177,101,0.45); background: rgba(219,177,101,0.14); color: var(--gold); } /* ===== CAMPUS MAP — LIGHT THEME ADAPTATION ===== */ body.theme-nw-light .campus-map-panel { border-color: rgba(21, 82, 116, 0.2); background: radial-gradient(circle at 18% 0%, rgba(21, 82, 116, 0.08), transparent 34%), radial-gradient(circle at 100% 20%, rgba(153, 51, 51, 0.07), transparent 32%), var(--bg2); } body.theme-nw-light .campus-map-panel::before { background: linear-gradient(90deg, rgba(21, 82, 116, 0.07) 1px, transparent 1px), linear-gradient(0deg, rgba(21, 82, 116, 0.05) 1px, transparent 1px); background-size: 28px 28px; opacity: 0.4; } body.theme-nw-light .campus-map-kicker { color: rgba(21, 82, 116, 0.78); } body.theme-nw-light .campus-map-mode, body.theme-nw-light .campus-map-filters button.active { border-color: rgba(21, 82, 116, 0.35); background: rgba(21, 82, 116, 0.1); color: #15526a; } body.theme-nw-light .campus-map-search { background: rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.1); } body.theme-nw-light .campus-map-search i { color: rgba(21, 82, 116, 0.7); } body.theme-nw-light .campus-map-filters button { background: rgba(0, 0, 0, 0.035); border-color: rgba(0, 0, 0, 0.08); color: var(--text2); } body.theme-nw-light .campus-map-scroll { background: rgba(0, 0, 0, 0.03); border-color: rgba(0, 0, 0, 0.08); } body.theme-nw-light .campus-map-row { background: rgba(0, 0, 0, 0.03); border-color: rgba(0, 0, 0, 0.08); } body.theme-nw-light .campus-map-popup-card { border-color: rgba(21, 82, 116, 0.28); background: rgba(255, 255, 255, 0.97); box-shadow: 0 20px 60px rgba(25, 40, 56, 0.22); } body.theme-nw-light .campus-map-popup-backdrop { background: rgba(20, 30, 40, 0.35); } body.theme-nw-light .campus-map-popup-close { border-color: rgba(0, 0, 0, 0.12); background: rgba(0, 0, 0, 0.04); } body.theme-nw-light .campus-map-popup-category { color: #15526a; } body.theme-nw-light .campus-map-mode.active { border-color: rgba(21, 82, 116, 0.55); background: rgba(21, 82, 116, 0.16); color: #15526a; box-shadow: 0 0 14px rgba(21, 82, 116, 0.16); } body.theme-nw-light .campus-map-route-bar { border-color: rgba(21, 82, 116, 0.22); background: rgba(21, 82, 116, 0.06); } body.theme-nw-light .campus-map-route-chip { border-color: rgba(0, 0, 0, 0.12); color: var(--text2); } body.theme-nw-light .campus-map-route-chip.set { border-color: rgba(21, 82, 116, 0.4); color: #15526a; background: rgba(21, 82, 116, 0.1); } body.theme-nw-light .campus-map-route-clear { border-color: rgba(0, 0, 0, 0.12); background: rgba(0, 0, 0, 0.04); color: var(--text2); } body.theme-nw-light .campus-map-route-line line { stroke: rgba(21, 82, 116, 0.8); filter: drop-shadow(0 0 3px rgba(21, 82, 116, 0.45)); } body.theme-nw-light .campus-map-row-fav { color: rgba(0, 0, 0, 0.18); } body.theme-nw-light .campus-map-popup-fav { border-color: rgba(0, 0, 0, 0.12); background: rgba(0, 0, 0, 0.04); color: rgba(0, 0, 0, 0.25); } body.theme-genshin-light .campus-map-search, body.theme-genshin-dark .campus-map-search { background: rgba(219,177,101,0.08); border-color: rgba(219,177,101,0.22); } body.theme-genshin-light .campus-map-search i, body.theme-genshin-dark .campus-map-search i { color: var(--gold); } body.theme-genshin-light .campus-map-filters button, body.theme-genshin-dark .campus-map-filters button { background: rgba(219,177,101,0.08); border-color: rgba(219,177,101,0.18); color: var(--text2); } body.theme-genshin-light .campus-map-scroll, body.theme-genshin-dark .campus-map-scroll { background: rgba(219,177,101,0.05); border-color: rgba(219,177,101,0.18); } body.theme-genshin-light .campus-map-row, body.theme-genshin-dark .campus-map-row { background: rgba(219,177,101,0.06); border-color: rgba(219,177,101,0.16); } body.theme-genshin-light .campus-map-popup-card { border-color: rgba(219,177,101,0.32); background: rgba(252,247,236,0.98); box-shadow: 0 20px 60px rgba(88, 56, 16, 0.22); } body.theme-genshin-dark .campus-map-popup-card { border-color: rgba(219,177,101,0.32); background: rgba(26,22,40,0.98); box-shadow: 0 20px 60px rgba(88, 56, 16, 0.22); } body.theme-genshin-light .campus-map-popup-close, body.theme-genshin-dark .campus-map-popup-close { border-color: rgba(219,177,101,0.3); background: rgba(219,177,101,0.12); } body.theme-genshin-light .campus-map-route-bar, body.theme-genshin-dark .campus-map-route-bar { border-color: rgba(219,177,101,0.25); background: rgba(219,177,101,0.08); } body.theme-genshin-light .campus-map-route-chip, body.theme-genshin-dark .campus-map-route-chip { border-color: rgba(219,177,101,0.2); color: var(--text2); } body.theme-genshin-light .campus-map-route-chip.set, body.theme-genshin-dark .campus-map-route-chip.set { border-color: rgba(219,177,101,0.45); color: var(--gold); background: rgba(219,177,101,0.14); } body.theme-genshin-light .campus-map-route-clear, body.theme-genshin-dark .campus-map-route-clear { border-color: rgba(219,177,101,0.25); background: rgba(219,177,101,0.1); color: var(--text2); } body.theme-genshin-light .campus-map-route-line line, body.theme-genshin-dark .campus-map-route-line line { stroke: rgba(154, 110, 39, 0.7); filter: drop-shadow(0 0 3px rgba(154, 110, 39, 0.4)); } body.theme-genshin-light .campus-map-row-fav, body.theme-genshin-dark .campus-map-row-fav { color: rgba(154, 110, 39, 0.25); } body.theme-genshin-light .campus-map-popup-fav, body.theme-genshin-dark .campus-map-popup-fav { border-color: rgba(219,177,101,0.25); background: rgba(219,177,101,0.1); color: rgba(154, 110, 39, 0.4); } body.theme-nw-light .campus-map-editor { border-color: rgba(21, 82, 116, 0.22); background: rgba(21, 82, 116, 0.05); } body.theme-nw-light .campus-map-editor.active { border-color: rgba(21, 82, 116, 0.5); box-shadow: 0 0 24px rgba(21, 82, 116, 0.14); } body.theme-nw-light .campus-map-editor-top b { color: #15526a; } body.theme-nw-light .campus-map-editor-top button, body.theme-nw-light .campus-map-editor-actions button { border-color: rgba(21, 82, 116, 0.35); background: rgba(21, 82, 116, 0.1); color: #15526a; } body.theme-nw-light .campus-map-editor input, body.theme-nw-light .campus-map-editor select, body.theme-nw-light .campus-map-editor textarea { border-color: rgba(0, 0, 0, 0.1); background: rgba(255, 255, 255, 0.7); } body.theme-genshin-light .campus-map-editor, body.theme-genshin-dark .campus-map-editor { border-color: rgba(219,177,101,0.25); background: rgba(219,177,101,0.06); } body.theme-genshin-light .campus-map-editor.active, body.theme-genshin-dark .campus-map-editor.active { border-color: rgba(219,177,101,0.5); box-shadow: 0 0 24px rgba(219,177,101,0.16); } body.theme-genshin-light .campus-map-editor-top b, body.theme-genshin-dark .campus-map-editor-top b, body.theme-genshin-light .campus-map-editor-top button, body.theme-genshin-dark .campus-map-editor-top button, body.theme-genshin-light .campus-map-editor-actions button, body.theme-genshin-dark .campus-map-editor-actions button { color: var(--gold); border-color: rgba(219,177,101,0.35); background: rgba(219,177,101,0.1); } body.theme-genshin-light .campus-map-editor input, body.theme-genshin-dark .campus-map-editor input, body.theme-genshin-light .campus-map-editor select, body.theme-genshin-dark .campus-map-editor select, body.theme-genshin-light .campus-map-editor textarea, body.theme-genshin-dark .campus-map-editor textarea { border-color: rgba(219,177,101,0.22); background: var(--bg3); } /* ===== CAMPUS MAP — ADMIN LIGHT THEME ===== */ body.theme-admin-light .campus-map-panel { border-color: rgba(68, 86, 224, 0.2); background: radial-gradient(circle at 18% 0%, rgba(68, 86, 224, 0.07), transparent 34%), radial-gradient(circle at 100% 20%, rgba(0, 153, 204, 0.06), transparent 32%), var(--bg2); } body.theme-admin-light .campus-map-panel::before { background: linear-gradient(90deg, rgba(68, 86, 224, 0.06) 1px, transparent 1px), linear-gradient(0deg, rgba(68, 86, 224, 0.04) 1px, transparent 1px); background-size: 28px 28px; opacity: 0.4; } body.theme-admin-light .campus-map-kicker { color: rgba(68, 86, 224, 0.78); } body.theme-admin-light .campus-map-mode, body.theme-admin-light .campus-map-filters button.active { border-color: rgba(68, 86, 224, 0.35); background: rgba(68, 86, 224, 0.1); color: #4456e0; } body.theme-admin-light .campus-map-search { background: rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.1); } body.theme-admin-light .campus-map-search i { color: rgba(68, 86, 224, 0.7); } body.theme-admin-light .campus-map-search input { color: var(--text); } body.theme-admin-light .campus-map-search input::placeholder { color: var(--text3); } body.theme-admin-light .campus-map-filters button { background: rgba(0, 0, 0, 0.035); border-color: rgba(0, 0, 0, 0.08); color: var(--text2); } body.theme-admin-light .campus-map-scroll { background: rgba(0, 0, 0, 0.03); border-color: rgba(0, 0, 0, 0.08); } body.theme-admin-light .campus-map-row { background: rgba(0, 0, 0, 0.03); border-color: rgba(0, 0, 0, 0.08); } body.theme-admin-light .campus-map-popup-card { border-color: rgba(68, 86, 224, 0.28); background: rgba(255, 255, 255, 0.97); box-shadow: 0 20px 60px rgba(30, 40, 80, 0.22); } body.theme-admin-light .campus-map-popup-backdrop { background: rgba(20, 25, 60, 0.35); } body.theme-admin-light .campus-map-popup-close { border-color: rgba(0, 0, 0, 0.12); background: rgba(0, 0, 0, 0.04); } body.theme-admin-light .campus-map-popup-category { color: #4456e0; } body.theme-admin-light .campus-map-mode.active { border-color: rgba(68, 86, 224, 0.55); background: rgba(68, 86, 224, 0.16); color: #4456e0; box-shadow: 0 0 14px rgba(68, 86, 224, 0.16); } body.theme-admin-light .campus-map-route-bar { border-color: rgba(68, 86, 224, 0.22); background: rgba(68, 86, 224, 0.06); } body.theme-admin-light .campus-map-route-chip { border-color: rgba(0, 0, 0, 0.12); color: var(--text2); } body.theme-admin-light .campus-map-route-chip.set { border-color: rgba(68, 86, 224, 0.4); color: #4456e0; background: rgba(68, 86, 224, 0.1); } body.theme-admin-light .campus-map-route-clear { border-color: rgba(0, 0, 0, 0.12); background: rgba(0, 0, 0, 0.04); color: var(--text2); } body.theme-admin-light .campus-map-route-line line { stroke: rgba(68, 86, 224, 0.8); filter: drop-shadow(0 0 3px rgba(68, 86, 224, 0.45)); } body.theme-admin-light .campus-map-row-fav { color: rgba(0, 0, 0, 0.18); } body.theme-admin-light .campus-map-popup-fav { border-color: rgba(0, 0, 0, 0.12); background: rgba(0, 0, 0, 0.04); color: rgba(0, 0, 0, 0.25); } body.theme-admin-light .campus-map-editor { border-color: rgba(68, 86, 224, 0.22); background: rgba(68, 86, 224, 0.05); } body.theme-admin-light .campus-map-editor.active { border-color: rgba(68, 86, 224, 0.5); box-shadow: 0 0 24px rgba(68, 86, 224, 0.14); } body.theme-admin-light .campus-map-editor-top b { color: #4456e0; } body.theme-admin-light .campus-map-editor-top button, body.theme-admin-light .campus-map-editor-actions button { border-color: rgba(68, 86, 224, 0.35); background: rgba(68, 86, 224, 0.1); color: #4456e0; } body.theme-admin-light .campus-map-editor input, body.theme-admin-light .campus-map-editor select, body.theme-admin-light .campus-map-editor textarea { border-color: rgba(0, 0, 0, 0.1); background: rgba(255, 255, 255, 0.7); } /* ===== CASINO + HOME EVENT CARD — ADMIN LIGHT THEME ===== */ body.theme-admin-light .casino-balance, body.theme-admin-light .prize-result { background: rgba(255,255,255,0.78); border-color: rgba(68,86,224,0.16); box-shadow: 0 8px 24px rgba(40,50,120,0.06); } body.theme-admin-light .case-card { background: linear-gradient(145deg, rgba(255,255,255,0.8), rgba(232,235,248,0.72)); box-shadow: inset 0 1px 0 rgba(255,255,255,0.65), 0 8px 18px rgba(40,50,120,0.045); } body.theme-admin-light .case-card.gold { border-color: rgba(0,153,204,0.28); } body.theme-admin-light .case-card.purple { border-color: rgba(120,76,140,0.24); } body.theme-admin-light .case-card.black { border-color: rgba(68,86,224,0.26); } body.theme-admin-light .case-cn.g { color: rgba(0,120,160,0.78); } body.theme-admin-light .case-cn.p { color: rgba(110,70,132,0.72); } body.theme-admin-light .case-cn.b { color: rgba(68,86,224,0.72); } body.theme-admin-light .roulette-track { background: linear-gradient(180deg, rgba(255,255,255,0.88), rgba(230,233,246,0.84)); border-color: rgba(68,86,224,0.22); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.55), 0 10px 28px rgba(40,50,120,0.08); } body.theme-admin-light .roulette-track::before { background: linear-gradient(to right, rgba(238,240,250,0.98), rgba(238,240,250,0)); } body.theme-admin-light .roulette-track::after { background: linear-gradient(to left, rgba(238,240,250,0.98), rgba(238,240,250,0)); } body.theme-admin-light .roulette-item { background: linear-gradient(145deg, rgba(255,255,255,0.94), rgba(228,231,244,0.92)); border-color: rgba(68,86,224,0.14); color: #1a1f40; } body.theme-admin-light .roulette-item-gold { border-color: rgba(0,153,204,0.26); background: radial-gradient(circle at 50% 10%, rgba(0,153,204,0.14), transparent 48%), linear-gradient(145deg, rgba(255,255,255,0.94), rgba(228,231,244,0.92)); } body.theme-admin-light .roulette-item-purple { border-color: rgba(120,76,140,0.28); background: radial-gradient(circle at 50% 10%, rgba(155,89,182,0.16), transparent 50%), linear-gradient(145deg, rgba(250,246,255,0.94), rgba(230,222,238,0.92)); } body.theme-admin-light .roulette-item-black { border-color: rgba(68,86,224,0.32); background: radial-gradient(circle at 50% 10%, rgba(68,86,224,0.14), transparent 52%), linear-gradient(145deg, rgba(246,247,255,0.92), rgba(222,226,242,0.9)); } body.theme-admin-light .roulette-item-name { color: #3a4070; } body.theme-admin-light .roulette-case-label { color: rgba(40,46,90,0.55); } body.theme-admin-light .roulette-item.opened { background: linear-gradient(145deg, rgba(240,248,255,0.96), rgba(208,228,248,0.92)); } body.theme-admin-light .home-event-card { border-color: rgba(68,86,224,0.24) !important; background: linear-gradient(135deg, rgba(68,86,224,0.08), rgba(255,255,255,0.78)), rgba(255,255,255,0.74) !important; box-shadow: 0 10px 26px rgba(40,50,120,0.08) !important; } body.theme-admin-light .home-event-card-kicker { color: rgba(0,120,160,0.85) !important; } body.theme-admin-light .home-event-card-title { color: #1a1f40 !important; } body.theme-admin-light .home-event-card-copy { color: #3a4070 !important; } /* ===== TEAM CARDS — GENSHIN LIGHT + ADMIN LIGHT ===== */ body.theme-genshin-light .team-card-item { background: rgba(255,250,238,0.8); } body.theme-genshin-light .team-card-avatar { background: rgba(219,177,101,0.1); } body.theme-genshin-light .team-card-name { color: #3d4555; } body.theme-genshin-light .team-card-desc { color: #565e6e; } body.theme-genshin-light .team-card-status-badge { background: rgba(219,177,101,0.14); color: #6b6050; } body.theme-genshin-light .team-card-btn { background: rgba(219,177,101,0.08); } body.theme-admin-light .team-card-item { background: rgba(255,255,255,0.78); } body.theme-admin-light .team-card-avatar { background: rgba(68,86,224,0.06); } body.theme-admin-light .team-card-name { color: #1a1f40; } body.theme-admin-light .team-card-desc { color: #3a4070; } body.theme-admin-light .team-card-status-badge { background: rgba(68,86,224,0.08); color: #5a62a0; } body.theme-admin-light .team-card-btn { background: rgba(68,86,224,0.05); } /* ===== CONTRACTS — ADMIN LIGHT THEME ===== */ body.theme-admin-light #page-contracts { --contract-accent: #4456e0; --contract-accent-soft: rgba(68, 86, 224, 0.1); --contract-accent-border: rgba(68, 86, 224, 0.32); --contract-card-bg: linear-gradient(135deg, rgba(255,255,255,0.8), rgba(235,238,250,0.7)); --contract-card-border: rgba(50, 60, 130, 0.16); --contract-card-shadow: 0 12px 26px rgba(40,50,120,0.1); --contract-muted-bg: rgba(255,255,255,0.72); --contract-danger: #b83f3f; } body.theme-admin-light .contracts-tabs { background: rgba(255,255,255,0.62); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.38); } body.theme-admin-light .contracts-rules-text, body.theme-admin-light .contract-description { color: #272d55; } body.theme-admin-light .contract-card-title, body.theme-admin-light .contracts-empty-title { color: #14182f; } body.theme-admin-light .contract-person, body.theme-admin-light .contract-reward-sub, body.theme-admin-light .contracts-empty-hint, body.theme-admin-light .contracts-rule-muted { color: #4a5188; } body.theme-admin-light .contracts-filter-chip, body.theme-admin-light .contract-category-badge { background: rgba(255,255,255,0.72); color: #3e4578; } body.theme-admin-light .contract-reward { background: rgba(255,255,255,0.72); } body.theme-admin-light .contract-modal { background: rgba(14,16,34,0.6); } body.theme-admin-light .contract-modal-sheet { background: radial-gradient(circle at 100% 0%, var(--contract-accent-soft), transparent 42%), linear-gradient(180deg, rgba(250,251,255,0.98), rgba(234,237,250,0.98)); } body.theme-admin-light .contract-field input, body.theme-admin-light .contract-field textarea, body.theme-admin-light .contract-field select { background: rgba(255,255,255,0.88); color: #14182f; } body.theme-admin-light .contract-submit-btn { background: color-mix(in srgb, var(--contract-accent) 13%, #fff); } body.theme-admin-light .contracts-tab { color: #4a5188; } body.theme-admin-light .contracts-tab.active, body.theme-admin-light .contracts-filter-chip.active { color: var(--contract-accent); background: color-mix(in srgb, var(--contract-accent) 13%, #fff); } body.theme-admin-light .contract-status { background: rgba(255,255,255,0.78); opacity: 1; } body.theme-admin-light .contract-status-hint, body.theme-admin-light .contract-flow-labels, body.theme-admin-light .contract-privacy-toggle small { color: #4a5188; opacity: 1; } /* ===== LEADERBOARD — ADMIN LIGHT THEME ===== */ body.theme-admin-light .lb-points { color: #4456e0 !important; } body.theme-admin-light .lb-name { color: #1a1f40 !important; } body.theme-admin-light .lb-item { background: radial-gradient(circle at 0% 50%, rgba(68,86,224,0.07), transparent 38%), rgba(255,255,255,0.52); border-color: rgba(68,86,224,0.12); } body.theme-admin-light .lb-item.top1 { border-color: rgba(0,153,204,0.44); background: radial-gradient(circle at 0% 50%, rgba(0,153,204,0.18), transparent 46%), linear-gradient(90deg, rgba(210,240,255,0.96), rgba(255,255,255,0.74)); } body.theme-admin-light .lb-item.top2 { border-color: rgba(120, 128, 140, 0.36); background: linear-gradient(90deg, rgba(220,226,236,0.92), rgba(255,255,255,0.70)); } body.theme-admin-light .lb-item.top3 { border-color: rgba(68,86,224,0.28); background: linear-gradient(90deg, rgba(210,216,248,0.92), rgba(255,255,255,0.70)); } body.theme-admin-light .lb-subline, body.theme-admin-light .diary-rank-sub { color: var(--text2); } body.theme-admin-light .lb-path-badge { background: rgba(255,255,255,0.78); color: #3a4070; border-color: rgba(68,86,224,0.24); } body.theme-admin-light .alpha-boss-block { background: rgba(255,255,255,0.50); border-color: rgba(68,86,224,0.22); } body.theme-admin-light .alpha-boss-pts { color: #4456e0; } body.theme-admin-light .alpha-boss-raid-cost { color: rgba(68,86,224,0.65); } /* Same low-opacity gold "kicker" labels are illegible on the admin light background too — darken them to the admin-light accent. */ body.theme-admin-light .alpha-boss-kicker, body.theme-admin-light .page-title-cn, body.theme-admin-light .main-pinyin, body.theme-admin-light .stat-cn, body.theme-admin-light .implant-py, body.theme-admin-light .lb-leaders-label, body.theme-admin-light .more-stat-lbl span, body.theme-admin-light .more-item-cn, body.theme-admin-light .shop-cat .cn, body.theme-admin-light .shop-item-cn, body.theme-admin-light .case-cn.g, body.theme-admin-light .event-lobby-count, body.theme-admin-light .launch-gate-kicker, body.theme-admin-light .demo-lock-kicker, body.theme-admin-light .event-lobby-card .event-lobby-reward::before, body.theme-admin-light .event-result-card .event-lobby-reward::before, body.theme-admin-light .diary-star { color: #4456e0 !important; } body.theme-admin-light .alpha-boss-raid-btn { background: rgba(68,86,224,0.08); border-top-color: rgba(68,86,224,0.15); color: #4456e0; } body.theme-admin-light .demo-note, body.theme-admin-light .demo-catalog-lock, body.theme-admin-light .demo-card, body.theme-admin-light .demo-raid-locked { background: radial-gradient(circle at 0% 0%, rgba(68,86,224,0.10), transparent 44%), rgba(255,255,255,0.82) !important; color: #1a1f40; } body.theme-admin-light .demo-card-title, body.theme-admin-light .demo-lock-title { color: #1a1f40; } body.theme-admin-light .demo-card-body, body.theme-admin-light .demo-lock-copy { color: #4a5188; } body.theme-admin-light .diary-rank-card { border-color: rgba(68,86,224,0.14); background: radial-gradient(circle at 0% 50%, rgba(68,86,224,0.07), transparent 38%), rgba(255,255,255,0.52); } body.theme-admin-light .diary-rank-card.top1 { border-color: rgba(0,153,204,0.44); background: radial-gradient(circle at 0% 50%, rgba(0,153,204,0.18), transparent 46%), linear-gradient(90deg, rgba(210,240,255,0.96), rgba(255,255,255,0.74)); } /* ===== GIFT USER MODAL ===== */ .gift-modal-overlay { position: fixed; inset: 0; z-index: 220; display: none; align-items: flex-end; background: rgba(0,0,0,0.72); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .gift-modal-overlay.show { display: flex; } .gift-modal { width: 100%; background: var(--bg); border-top: 1px solid var(--gold-border); border-radius: 18px 18px 0 0; padding: 20px 16px 32px; max-height: 82vh; display: flex; flex-direction: column; gap: 10px; } .gift-modal-header { display: flex; align-items: flex-start; justify-content: space-between; } .gift-modal-kicker { font-family: monospace; font-size: 8px; color: var(--gold); letter-spacing: 2px; opacity: 0.65; margin-bottom: 2px; } .gift-modal-title { font-size: 17px; font-weight: 900; color: var(--text); letter-spacing: -0.3px; } .gift-modal-close { background: none; border: none; color: var(--text3); font-size: 16px; cursor: pointer; padding: 4px 6px; line-height: 1; font-family: inherit; } .gift-modal-item { font-size: 13px; font-weight: 700; color: var(--gold); font-family: monospace; background: var(--gold-dim); border: 1px solid var(--gold-border); border-radius: 8px; padding: 7px 12px; } .gift-modal-tax { font-size: 11px; color: var(--text3); font-family: monospace; } .gift-modal-search { width: 100%; box-sizing: border-box; background: var(--bg3); border: 1px solid var(--gold-border); border-radius: 10px; color: var(--text); font-size: 14px; padding: 10px 13px; font-family: inherit; outline: none; } .gift-modal-search:focus { border-color: var(--gold); } .gift-modal-search::placeholder { color: var(--text3); } .gift-modal-results { overflow-y: auto; max-height: 220px; display: flex; flex-direction: column; gap: 2px; } .gift-modal-hint { font-size: 11px; color: var(--text3); padding: 6px 0; font-family: monospace; } .gift-user-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; cursor: pointer; background: transparent; transition: background 0.12s; } .gift-user-row:active { background: var(--gold-dim); } .gift-user-ava { width: 34px; height: 34px; border-radius: 50%; overflow: hidden; flex-shrink: 0; background: var(--gold-dim); display: flex; align-items: center; justify-content: center; } .gift-user-img { width: 100%; height: 100%; object-fit: cover; } .gift-user-initials { font-size: 15px; font-weight: 800; color: var(--gold); font-family: monospace; } .gift-user-info { flex: 1; min-width: 0; } .gift-user-name { font-size: 13px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .gift-user-pts { font-size: 11px; font-family: monospace; color: var(--gold); opacity: 0.75; flex-shrink: 0; } .gift-modal-selected { display: flex; align-items: center; gap: 10px; padding: 8px 12px; background: var(--gold-dim); border: 1px solid var(--gold-border); border-radius: 10px; } .gift-clear-btn { background: none; border: none; color: var(--text3); font-size: 13px; cursor: pointer; padding: 4px; font-family: inherit; flex-shrink: 0; } .gift-modal-actions { display: flex; gap: 8px; margin-top: 4px; } .gift-modal-confirm { flex: 1; opacity: 1; } .gift-modal-confirm:disabled { opacity: 0.4; cursor: default; } body.lite-mode .gift-modal-overlay { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } /* Light themes: search input needs a visible fill since --bg3 is transparent in some themes */ body.theme-nw-light .gift-modal-search, body.theme-genshin-light .gift-modal-search, body.theme-genshin-dark .gift-modal-search { background: rgba(0,0,0,0.06); } /* ===== INVENTORY EXPIRY LABELS ===== */ .inventory-expiry-warn { color: #e05050; font-weight: 700; } .inventory-expiry-soon { color: var(--gold); font-weight: 600; } /* ═══════════════════════════════════════════════════════════ ARCHITECT PROTOCOL THEME — recolor BlackWall FX to green/cyan The BlackWall decoration system (body.is-architect) defaults to red/orange/purple regardless of active theme. When the Architect Protocol theme itself is active, recolor it to match the theme's green/cyan/lime palette instead of clashing. ═══════════════════════════════════════════════════════════ */ /* Heartbeat glow + border cycle on profile card */ @keyframes architectHeartbeatGreen { 0%, 100% { box-shadow: 0 0 12px rgba(0,255,136,0.12), inset 0 0 16px rgba(0,255,136,0.05); } 6% { box-shadow: 0 0 55px rgba(0,255,136,0.45), 0 0 110px rgba(0,255,136,0.18), 0 0 0 2px rgba(0,229,255,0.5), inset 0 0 36px rgba(0,255,136,0.16); } 12% { box-shadow: 0 0 16px rgba(0,255,136,0.15), inset 0 0 18px rgba(0,255,136,0.06); } 18% { box-shadow: 0 0 38px rgba(0,255,136,0.30), 0 0 80px rgba(0,229,255,0.12), 0 0 0 1px rgba(0,229,255,0.35), inset 0 0 26px rgba(0,255,136,0.11); } 24% { box-shadow: 0 0 12px rgba(0,255,136,0.12), inset 0 0 16px rgba(0,255,136,0.05); } 36% { box-shadow: 0 0 14px rgba(57,255,20,0.10), inset 0 0 18px rgba(0,255,136,0.04); } } @keyframes architectBorderCycleGreen { 0% { border-color: rgba(0,255,136,0.95); } 20% { border-color: rgba(0,229,255,0.9); } 40% { border-color: rgba(57,255,20,0.9); } 60% { border-color: rgba(0,229,255,0.85); } 80% { border-color: rgba(0,255,136,0.85); } 100% { border-color: rgba(0,255,136,0.95); } } body.theme-architect.is-architect .profile-card-home { border: 2px solid rgba(0,255,136,0.95); animation: architectHeartbeatGreen 3.5s ease-in-out infinite, architectBorderCycleGreen 5s linear infinite !important; } /* Profile name flicker */ @keyframes architectNeonFlickerGreen { 0%, 18%, 22%, 25%, 53%, 57%, 100% { color: #f0fff8; text-shadow: 0 0 8px rgba(0,255,136,0.95), 0 0 20px rgba(0,255,136,0.6), 0 0 45px rgba(0,255,136,0.25); filter: brightness(1); } 19%, 23%, 54% { color: rgba(240,255,248,0.25); text-shadow: none; filter: brightness(0.35); } 68% { color: #e0fcff; text-shadow: 0 0 12px rgba(0,229,255,0.9), 0 0 28px rgba(0,229,255,0.45); } 84% { color: #eaffe0; text-shadow: 0 0 10px rgba(57,255,20,0.9), 0 0 24px rgba(57,255,20,0.45); } } body.theme-architect.is-architect .profile-card-name { animation: architectNeonFlickerGreen 9s ease-in-out infinite; } /* Scan line + neural grid overlay */ body.theme-architect.is-architect .blackwall-overlay::before { background: linear-gradient( 180deg, transparent 0%, rgba(0,255,136,0.7) 20%, rgba(0,229,255,0.95) 50%, rgba(0,255,136,0.7) 80%, transparent 100% ); box-shadow: 0 0 10px rgba(0,255,136,0.6), 0 0 20px rgba(0,255,136,0.2); } body.theme-architect.is-architect .blackwall-overlay::after { background-image: linear-gradient(rgba(0,255,136,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(0,255,136,0.04) 1px, transparent 1px); } /* Nav beacon */ @keyframes architectNavBeaconGreen { 0%, 100% { text-shadow: 0 0 4px rgba(0,255,136,0.3); } 5% { text-shadow: 0 0 14px rgba(0,255,136,1), 0 0 28px rgba(0,229,255,0.5); } 10% { text-shadow: 0 0 4px rgba(0,255,136,0.3); } 16% { text-shadow: 0 0 10px rgba(0,255,136,0.8), 0 0 22px rgba(0,255,136,0.3); } 22% { text-shadow: 0 0 4px rgba(0,255,136,0.3); } } body.theme-architect.is-architect .nav-item.active, body.theme-architect.is-architect .nav-item.active .ti { animation: architectNavBeaconGreen 3s ease-in-out infinite; } /* LED indicator on badge */ @keyframes architectLEDGreen { 0%, 100% { opacity: 0.35; text-shadow: none; } 50% { opacity: 1; text-shadow: 0 0 8px #00ff88, 0 0 16px rgba(0,255,136,0.4); } } body.theme-architect.is-architect .profile-admin-badge::before { color: #00ff88; animation: architectLEDGreen 1.4s ease-in-out infinite; } /* Page title glitch */ @keyframes architectTitleGlitchGreen { 0%, 88%, 100% { text-shadow: 0 0 30px rgba(0,255,136,0.7), 0 0 70px rgba(0,255,136,0.25); filter: none; transform: none; } 89% { text-shadow: 5px 0 rgba(0,255,136,0.95), -5px 0 rgba(0,229,255,0.95), 0 0 50px rgba(0,255,136,0.9); filter: brightness(1.3); transform: skewX(-2deg); } 90% { text-shadow: -3px 0 rgba(57,255,20,0.9), 4px 0 rgba(0,229,255,0.7); filter: none; transform: none; } 91% { text-shadow: 0 0 30px rgba(0,255,136,0.7), 0 0 70px rgba(0,255,136,0.25); filter: none; } 95% { text-shadow: 2px 0 rgba(0,229,255,0.5), 0 0 40px rgba(0,255,136,0.8); transform: translateX(1px); } 96% { text-shadow: 0 0 30px rgba(0,255,136,0.7), 0 0 70px rgba(0,255,136,0.25); transform: none; } } body.theme-architect.is-architect .page-title { animation: architectTitleGlitchGreen 11s ease-in-out infinite; } /* Status line */ body.theme-architect.is-architect .profile-status-line { color: rgba(0,255,136,0.55); } /* Avatar scan ring */ @keyframes architectAvatarRingGreen { 0%, 100% { box-shadow: 0 0 0 0px rgba(0,255,136,0.5), 0 0 0 0px rgba(0,229,255,0); } 40% { box-shadow: 0 0 0 6px rgba(0,255,136,0.2), 0 0 0 12px rgba(0,229,255,0.08); } 60% { box-shadow: 0 0 0 8px rgba(0,255,136,0.0), 0 0 0 16px rgba(0,255,136,0.0); } } body.theme-architect.is-architect .profile-avatar-wrap { animation: architectAvatarRingGreen 3.5s ease-out infinite; } /* Architect theme card pulse (in theme picker) */ @keyframes architectCardPulseGreen { 0%, 100% { box-shadow: 0 0 20px rgba(0,255,136,0.15), inset 0 0 20px rgba(0,255,136,0.03); border-color: rgba(0,255,136,0.55); } 50% { box-shadow: 0 0 40px rgba(0,255,136,0.35), 0 0 80px rgba(0,229,255,0.08), inset 0 0 30px rgba(0,255,136,0.07); border-color: rgba(0,229,255,0.75); } } body.theme-architect.is-architect .architect-theme-card { border-color: rgba(0,255,136,0.7); box-shadow: 0 0 20px rgba(0,255,136,0.2), inset 0 0 30px rgba(0,255,136,0.04); animation: architectCardPulseGreen 3s ease-in-out infinite; } /* Corner sparks */ body.theme-architect.is-architect .profile-card-spark.spark-tl { background: #00e5ff; } body.theme-architect.is-architect .profile-card-spark.spark-br { background: #39ff14; } body.theme-architect.is-architect .profile-card-spark.spark-tr { background: #00ff88; } body.theme-architect.is-architect .profile-card-spark.spark-bl { background: #00e5ff; } /* ===== WILD AI BREACH (野生AI入侵) ===== */ .wild-ai-breach-banner { position: fixed; top: 0; left: 0; right: 0; z-index: 10000; background: rgba(20,0,0,0.92); border-bottom: 1px solid #cc2222; font-family: monospace; text-align: center; padding: 6px 8px 5px; pointer-events: none; animation: wab-flicker 4s infinite; } .wild-ai-breach-banner .wab-line1 { color: #ff3b3b; font-size: 11px; font-weight: 800; letter-spacing: 2px; text-shadow: 0 0 6px rgba(255,40,40,0.8); } .wild-ai-breach-banner .wab-line2 { color: #ff6666; font-size: 9px; letter-spacing: 1px; margin-top: 2px; word-break: break-word; } .wild-ai-breach-banner .wab-translation { color: #999; } .wild-ai-breach-banner .wab-timer { color: #ff8888; font-size: 9px; margin-top: 2px; letter-spacing: 1px; } body.wild-ai-breach { padding-top: 46px; } /* "Повреждённая" тема — перебивает текущую тему испорченной палитрой */ body.wild-ai-breach { --bg: #0a0604 !important; --bg2: rgba(255,40,40,0.05) !important; --bg3: rgba(255,40,40,0.09) !important; --border: rgba(255,60,60,0.25) !important; --text: #d8f0e0 !important; --text2: #9fcdb8 !important; --text3: #6a8a7c !important; --gold: #7cff9e !important; --gold-dim: rgba(124,255,158,0.1) !important; --gold-border: rgba(124,255,158,0.3) !important; --purple: #ff5577 !important; --purple-dim: rgba(255,85,119,0.15) !important; --purple-border: rgba(255,85,119,0.3) !important; background: var(--bg) !important; animation: wab-hue-shift 12s linear infinite; } @keyframes wab-hue-shift { 0% { filter: hue-rotate(0deg) saturate(1); } 25% { filter: hue-rotate(25deg) saturate(1.3); } 50% { filter: hue-rotate(-15deg) saturate(1.1) contrast(1.1); } 75% { filter: hue-rotate(10deg) saturate(1.4); } 100% { filter: hue-rotate(0deg) saturate(1); } } /* Глитч-оверлей поверх всего интерфейса */ body.wild-ai-breach::after { content: ""; position: fixed; inset: 0; z-index: 9999; pointer-events: none; mix-blend-mode: overlay; background: repeating-linear-gradient( 0deg, rgba(255,0,0,0.04) 0px, rgba(255,0,0,0.04) 1px, transparent 1px, transparent 3px ); animation: wab-static-flash 6s infinite; } /* Полосы "разрыва экрана", периодически проезжающие по всему интерфейсу */ body.wild-ai-breach::before { content: ""; position: fixed; inset: 0; z-index: 9998; pointer-events: none; background: linear-gradient(transparent 0%, transparent 38%, rgba(255,40,40,0.18) 38%, rgba(0,255,200,0.12) 39%, transparent 40%, transparent 70%, rgba(255,40,40,0.14) 70%, transparent 71%); mix-blend-mode: screen; opacity: 0; animation: wab-screen-tear 9s infinite; } /* Хромо-аберрация и дрожание интерфейса целиком */ body.wild-ai-breach .page.active { animation: wab-chroma-shift 8s infinite; } @keyframes wab-flicker { 0%, 92%, 100% { opacity: 1; } 93% { opacity: 0.4; } 94% { opacity: 1; } 95% { opacity: 0.6; } 96% { opacity: 1; } } @keyframes wab-static-flash { 0%, 96%, 100% { opacity: 0.3; } 97% { opacity: 0.9; background-color: rgba(255,0,0,0.08); } 98% { opacity: 0.2; } 99% { opacity: 0.7; background-color: rgba(255,0,0,0.05); } } @keyframes wab-screen-tear { 0%, 91%, 100% { opacity: 0; transform: translateX(0); } 91.5% { opacity: 1; transform: translateX(-6px); } 92% { opacity: 1; transform: translateX(8px); } 92.5% { opacity: 0; transform: translateX(0); } } @keyframes wab-chroma-shift { 0%, 94%, 100% { transform: translate(0, 0); filter: none; } 94.3% { transform: translate(-2px, 0); filter: drop-shadow(2px 0 0 rgba(255,0,60,0.5)) drop-shadow(-2px 0 0 rgba(0,255,220,0.4)); } 94.7% { transform: translate(2px, 1px); filter: drop-shadow(-2px 0 0 rgba(255,0,60,0.5)) drop-shadow(2px 0 0 rgba(0,255,220,0.4)); } 95.1% { transform: translate(0, 0); filter: none; } } /* Перемешанные подвкладки и заголовки во время Breach подсвечиваются красным */ body.wild-ai-breach .subtab, body.wild-ai-breach .contracts-tab, body.wild-ai-breach .page-title-cn, body.wild-ai-breach .diary-section-title { color: #ff6666 !important; text-shadow: 0 0 4px rgba(255,40,40,0.5); } .lb-corrupted-badge { font-family: monospace; font-size: 10px; letter-spacing: 1px; color: #ff6666; text-align: center; padding: 6px 8px; margin-bottom: 8px; border: 1px dashed rgba(255,60,60,0.4); background: rgba(255,0,0,0.05); animation: wab-flicker 4s infinite; } /* Профиль во время Wild AI Breach — карточка показывает "профиль дикого ИИ" */ .profile-card.wild-ai-profile { border-color: rgba(255,40,40,0.5) !important; filter: hue-rotate(-20deg) saturate(1.3); animation: wab-flicker 4s infinite; } .profile-card.wild-ai-profile .profile-avatar-wrap { filter: grayscale(1) contrast(1.4) sepia(1) hue-rotate(-50deg) saturate(4); } .profile-card.wild-ai-profile #profileDisplayName { color: #ff3b3b; text-shadow: 0 0 8px rgba(255,40,40,0.7); } .profile-card.wild-ai-profile #profileKicker { color: #ff6666; } /* ===== ИНСТРУКЦИЯ (Юля) ===== */ .instruction-modal { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.72); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .instruction-modal-inner { position: relative; width: min(92vw, 380px); max-height: 80vh; overflow-y: auto; background: #0a0e14; border: 1px solid rgba(0,229,255,0.25); border-radius: 14px; padding: 24px 16px 18px; box-sizing: border-box; } .instruction-modal-close { position: absolute; top: 10px; right: 10px; width: 28px; height: 28px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.12); background: rgba(255,255,255,0.05); color: rgba(255,255,255,0.6); font-size: 14px; cursor: pointer; } .instruction-modal-title { font-family: monospace; font-size: 14px; font-weight: 800; color: #00e5ff; letter-spacing: 0.05em; margin-bottom: 14px; padding-right: 26px; } .instruction-option-btn { display: block; width: 100%; text-align: left; padding: 12px 14px; margin-bottom: 10px; border-radius: 10px; border: 1px solid rgba(0,229,255,0.25); background: rgba(0,229,255,0.06); color: rgba(230,247,255,0.85); font-family: monospace; font-size: 11px; line-height: 1.4; cursor: pointer; } .instruction-option-btn strong { display: block; font-size: 13px; color: #00e5ff; margin-bottom: 4px; letter-spacing: 0.04em; } .instruction-cut-notice { margin-bottom: 12px; padding: 9px 11px; border-radius: 8px; border: 1px solid rgba(255,170,30,0.3); background: rgba(255,170,30,0.08); color: rgba(255,200,110,0.9); font-family: monospace; font-size: 10px; line-height: 1.4; } .instruction-back-btn { text-align: center; color: rgba(230,247,255,0.6); } .instruction-text-section { border-left: 2px solid rgba(0,229,255,0.25); padding-left: 10px; margin-bottom: 14px; } .instruction-text-section h4 { font-family: monospace; font-size: 11px; color: #00e5ff; letter-spacing: 0.05em; margin: 0 0 4px; } .instruction-text-section p { font-size: 11px; color: rgba(230,247,255,0.8); margin: 0; line-height: 1.5; } .instruction-tour-overlay { position: fixed; left: 0; right: 0; bottom: 0; z-index: 210; display: flex; justify-content: center; pointer-events: none; } .instruction-tour-card { position: relative; pointer-events: auto; width: 100%; max-width: 480px; display: flex; align-items: flex-end; gap: 8px; padding: 0 10px calc(10px + env(safe-area-inset-bottom, 0px)); box-sizing: border-box; } .instruction-tour-close { position: absolute; top: -32px; right: 10px; width: 28px; height: 28px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.18); background: rgba(4,4,12,0.7); color: rgba(255,255,255,0.8); font-size: 13px; cursor: pointer; pointer-events: auto; z-index: 2; } .instruction-tour-portrait { position: relative; flex: 0 0 104px; width: 104px; height: 134px; background-size: cover; background-position: center top; background-repeat: no-repeat; background-color: rgba(0,229,255,0.05); border-radius: 14px; border: 1px solid rgba(0,229,255,0.35); box-shadow: 0 0 16px rgba(0,229,255,0.25), 0 6px 18px rgba(0,0,0,0.4); overflow: hidden; } .instruction-tour-portrait::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(4,4,12,0) 62%, rgba(4,4,12,0.88) 100%); } .instruction-tour-name { position: absolute; left: 6px; right: 6px; bottom: 5px; z-index: 1; font-family: monospace; font-size: 7px; font-weight: 800; letter-spacing: 0.06em; line-height: 1.2; color: #00e5ff; text-shadow: 0 1px 3px rgba(0,0,0,0.8); } .instruction-tour-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 6px; background: linear-gradient(180deg, rgba(8,8,18,0.96), rgba(4,4,12,0.99)); border: 1px solid rgba(0,229,255,0.25); border-radius: 14px; padding: 10px 12px; box-shadow: 0 -6px 20px rgba(0,0,0,0.4); } .instruction-tour-title { font-family: monospace; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; color: #00e5ff; } .instruction-tour-bubble { font-size: 11px; line-height: 1.5; color: #e6f7ff; max-height: 26vh; overflow-y: auto; } .instruction-tour-cursor { display: inline-block; animation: instructionTourBlink 0.9s step-end infinite; color: #00e5ff; } @keyframes instructionTourBlink { 50% { opacity: 0; } } .instruction-tour-progress { font-family: monospace; font-size: 9px; color: rgba(255,255,255,0.4); letter-spacing: 0.1em; } .instruction-tour-actions { display: flex; gap: 8px; } .instruction-tour-actions button { flex: 1; padding: 10px; border-radius: 8px; border: 1px solid rgba(0,229,255,0.25); background: rgba(0,229,255,0.08); color: #00e5ff; font-family: monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.04em; cursor: pointer; } .instruction-tour-actions button.ghost { flex: 0 0 auto; padding: 10px 14px; background: rgba(255,255,255,0.04); color: rgba(255,255,255,0.6); border-color: rgba(255,255,255,0.12); } .instruction-highlight { outline: 2px solid #00e5ff; outline-offset: 3px; box-shadow: 0 0 0 5px rgba(0,229,255,0.18), 0 0 20px rgba(0,229,255,0.45); border-radius: 12px; animation: instructionHighlightPulse 1.4s ease-in-out infinite; position: relative; z-index: 6; } @keyframes instructionHighlightPulse { 0%, 100% { box-shadow: 0 0 0 4px rgba(0,229,255,0.18), 0 0 16px rgba(0,229,255,0.4); } 50% { box-shadow: 0 0 0 9px rgba(0,229,255,0.05), 0 0 28px rgba(0,229,255,0.8); } } /* ===== Trip Rewind (Wrapped-style story slides) ===== Fixed brand palette, independent of the active theme. */ .rewind-overlay { position: fixed; inset: 0; z-index: 9600; background: #05060a; overflow: hidden; font-family: 'Rajdhani', 'Segoe UI', sans-serif; color: #fff; user-select: none; -webkit-user-select: none; } .rewind-bg { position: absolute; inset: 0; z-index: 0; background: radial-gradient(circle at 20% 12%, color-mix(in srgb, var(--accent,#00ff66) 26%, transparent), transparent 46%), radial-gradient(circle at 85% 88%, color-mix(in srgb, var(--accent,#00ff66) 16%, transparent), transparent 52%), #05060a; transition: background 0.45s ease; } .rewind-bars { position: relative; z-index: 3; display: flex; gap: 4px; padding: calc(10px + env(safe-area-inset-top, 0px)) 12px 6px; } .rewind-bar { flex: 1; height: 3px; border-radius: 3px; background: rgba(255,255,255,0.22); overflow: hidden; } .rewind-bar-fill { height: 100%; width: 0; background: #fff; } .rewind-bar.done .rewind-bar-fill { width: 100%; } @keyframes rewindBarFill { from { width: 0; } to { width: 100%; } } .rewind-close { position: absolute; z-index: 5; top: calc(8px + env(safe-area-inset-top, 0px)); right: 12px; background: none; border: none; color: rgba(255,255,255,0.6); font-size: 22px; line-height: 1; cursor: pointer; padding: 6px; } .rewind-stage { position: relative; z-index: 2; height: 100%; box-sizing: border-box; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 24px 28px calc(70px + env(safe-area-inset-bottom, 0px)); } .rewind-kicker { font-size: 14px; letter-spacing: 1px; line-height: 1.4; text-transform: uppercase; color: rgba(255,255,255,0.78); margin-bottom: 20px; max-width: 320px; } .rewind-big { font-size: 92px; font-weight: 900; line-height: 0.92; color: var(--accent, #00ff66); text-shadow: 0 0 34px color-mix(in srgb, var(--accent,#00ff66) 60%, transparent); } .rewind-big.text { font-size: 46px; letter-spacing: 1px; } .rewind-label { margin-top: 20px; font-size: 16px; line-height: 1.4; color: rgba(255,255,255,0.9); max-width: 320px; } .rewind-sub { margin-top: 10px; font-size: 12.5px; letter-spacing: 0.5px; color: rgba(255,255,255,0.5); max-width: 300px; } .rewind-role-badge { width: 70px; height: 70px; margin-bottom: 14px; display: flex; align-items: center; justify-content: center; font-size: 34px; color: var(--accent, #00ff66); border: 2px solid color-mix(in srgb, var(--accent,#00ff66) 55%, transparent); border-radius: 50%; box-shadow: 0 0 30px color-mix(in srgb, var(--accent,#00ff66) 40%, transparent); } /* entrance animation */ .rewind-slide-enter .rewind-kicker { animation: rewindUp 0.5s ease both; } .rewind-slide-enter .rewind-big, .rewind-slide-enter .rewind-role-badge { animation: rewindPop 0.6s cubic-bezier(.2,1.3,.4,1) both 0.1s; } .rewind-slide-enter .rewind-label { animation: rewindUp 0.5s ease both 0.25s; } .rewind-slide-enter .rewind-sub { animation: rewindUp 0.5s ease both 0.35s; } .rewind-slide-enter .rewind-card { animation: rewindPop 0.55s cubic-bezier(.2,1.2,.4,1) both 0.05s; } @keyframes rewindUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } } @keyframes rewindPop { from { opacity: 0; transform: scale(0.82); } to { opacity: 1; transform: scale(1); } } /* final shareable card */ .rewind-card { width: 100%; max-width: 340px; box-sizing: border-box; background: linear-gradient(160deg, rgba(255,255,255,0.07), rgba(255,255,255,0.02)); border: 1px solid color-mix(in srgb, var(--accent,#00ff66) 42%, transparent); border-radius: 20px; padding: 22px 22px 18px; box-shadow: 0 0 36px color-mix(in srgb, var(--accent,#00ff66) 18%, transparent); } .rewind-card-head { text-align: center; margin-bottom: 16px; } .rewind-card-title { font-size: 22px; font-weight: 900; letter-spacing: 2px; color: var(--accent, #00ff66); } .rewind-card-sub { font-size: 12px; color: rgba(255,255,255,0.55); margin-top: 4px; } .rewind-card-role { text-align: center; font-size: 18px; font-weight: 800; letter-spacing: 1px; color: #fff; margin-bottom: 18px; padding: 8px; border-radius: 10px; background: color-mix(in srgb, var(--accent,#00ff66) 14%, transparent); } .rewind-card-row { display: flex; justify-content: space-between; align-items: baseline; padding: 9px 0; border-bottom: 1px solid rgba(255,255,255,0.08); font-size: 14px; } .rewind-card-row span { color: rgba(255,255,255,0.7); } .rewind-card-row b { font-size: 18px; color: var(--accent, #00ff66); } .rewind-card-foot { margin-top: 16px; text-align: center; font-size: 11px; letter-spacing: 0.5px; color: rgba(255,255,255,0.45); } /* ===== Trip Rewind — ambient effects layer ===== */ /* drifting glow on the base background */ .rewind-bg::before { content: ''; position: absolute; inset: -30%; background: radial-gradient(circle at 30% 30%, color-mix(in srgb, var(--accent,#00ff66) 18%, transparent), transparent 40%), radial-gradient(circle at 70% 70%, color-mix(in srgb, var(--accent,#00ff66) 12%, transparent), transparent 45%); animation: rewindDrift 14s ease-in-out infinite alternate; } @keyframes rewindDrift { from { transform: translate(-4%, -3%) scale(1); } to { transform: translate(5%, 4%) scale(1.12); } } /* synthwave perspective grid at the bottom */ .rewind-grid { position: absolute; left: 0; right: 0; bottom: 0; height: 44%; z-index: 0; overflow: hidden; opacity: 0.45; pointer-events: none; -webkit-mask-image: linear-gradient(to top, #000 0%, transparent 92%); mask-image: linear-gradient(to top, #000 0%, transparent 92%); } .rewind-grid::before { content: ''; position: absolute; left: -50%; right: -50%; top: 0; bottom: -40%; background-image: linear-gradient(color-mix(in srgb, var(--accent,#00ff66) 50%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--accent,#00ff66) 50%, transparent) 1px, transparent 1px); background-size: 42px 42px; transform: rotateX(72deg); transform-origin: top center; animation: rewindGridScroll 1.6s linear infinite; } @keyframes rewindGridScroll { from { background-position: 0 0; } to { background-position: 0 42px; } } /* floating particles */ .rewind-particles { position: absolute; inset: 0; z-index: 1; overflow: hidden; pointer-events: none; } .rewind-particle { position: absolute; bottom: -12px; border-radius: 50%; background: color-mix(in srgb, var(--accent,#00ff66) 75%, #fff); box-shadow: 0 0 8px color-mix(in srgb, var(--accent,#00ff66) 80%, transparent); opacity: 0; animation-name: rewindFloat; animation-timing-function: linear; animation-iteration-count: infinite; } @keyframes rewindFloat { 0% { transform: translateY(0) scale(1); opacity: 0; } 12% { opacity: 0.9; } 88% { opacity: 0.5; } 100% { transform: translateY(-108vh) scale(0.4); opacity: 0; } } /* subtle scanlines */ .rewind-scanlines { position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: 0.5; background: repeating-linear-gradient(0deg, rgba(255,255,255,0.035) 0 1px, transparent 1px 3px); animation: rewindScan 9s linear infinite; } @keyframes rewindScan { from { background-position: 0 0; } to { background-position: 0 140px; } } /* slide-change flash */ .rewind-flash { position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: 0; background: radial-gradient(circle at 50% 48%, color-mix(in srgb, var(--accent,#00ff66) 38%, transparent), transparent 60%); } .rewind-flash.go { animation: rewindFlash 0.6s ease-out; } @keyframes rewindFlash { 0% { opacity: 0.7; transform: scale(0.6); } 100% { opacity: 0; transform: scale(1.4); } } /* keep stage above ambient layers */ .rewind-stage { z-index: 4; overflow: hidden; } .rewind-bars, .rewind-close { z-index: 5; } /* big-number wrapper hosts the rotating rays */ .rewind-big-wrap { position: relative; display: flex; align-items: center; justify-content: center; } .rewind-rays { position: absolute; inset: 0; margin: auto; width: 360px; height: 360px; z-index: 0; pointer-events: none; opacity: 0.6; background: repeating-conic-gradient(from 0deg, color-mix(in srgb, var(--accent,#00ff66) 24%, transparent) 0deg 6deg, transparent 6deg 18deg); -webkit-mask-image: radial-gradient(circle, #000 6%, transparent 66%); mask-image: radial-gradient(circle, #000 6%, transparent 66%); animation: rewindSpin 16s linear infinite; } .rewind-big { position: relative; z-index: 1; } @keyframes rewindSpin { to { transform: rotate(360deg); } } /* breathing glow on the big number (entrance pop + looping glow) */ .rewind-slide-enter .rewind-big, .rewind-slide-enter .rewind-role-badge { animation: rewindPop 0.6s cubic-bezier(.2,1.3,.4,1) both 0.1s, rewindGlow 2.6s ease-in-out infinite 0.7s; } @keyframes rewindGlow { 0%, 100% { text-shadow: 0 0 24px color-mix(in srgb, var(--accent,#00ff66) 45%, transparent); } 50% { text-shadow: 0 0 46px color-mix(in srgb, var(--accent,#00ff66) 90%, transparent); } } /* rotating ring behind the role badge */ .rewind-role-badge { position: relative; } .rewind-role-badge::before { content: ''; position: absolute; inset: -7px; border-radius: 50%; z-index: -1; background: conic-gradient(from 0deg, transparent, color-mix(in srgb, var(--accent,#00ff66) 85%, transparent), transparent 62%); animation: rewindSpin 3s linear infinite; } /* shine sweep across the final card */ .rewind-card { position: relative; overflow: hidden; } .rewind-card::after { content: ''; position: absolute; top: 0; left: -60%; width: 42%; height: 100%; background: linear-gradient(105deg, transparent, rgba(255,255,255,0.18), transparent); transform: skewX(-18deg); pointer-events: none; animation: rewindShine 2.8s ease-in-out infinite 0.9s; } @keyframes rewindShine { 0% { left: -60%; } 60%, 100% { left: 135%; } } /* per-slide icon above the kicker */ .rewind-icon { font-size: 30px; line-height: 1; margin-bottom: 10px; color: var(--accent, #00ff66); text-shadow: 0 0 22px color-mix(in srgb, var(--accent,#00ff66) 55%, transparent); } /* oversized drifting hanzi watermark behind each slide */ .rewind-hanzi-bg { position: absolute; top: 50%; left: 50%; z-index: 0; transform: translate(-50%, -50%); font-size: 240px; font-weight: 900; line-height: 1; white-space: nowrap; pointer-events: none; color: color-mix(in srgb, var(--accent,#00ff66) 8%, transparent); -webkit-user-select: none; user-select: none; animation: rewindHanziDrift 18s ease-in-out infinite alternate; } @keyframes rewindHanziDrift { from { transform: translate(-50%, -50%) scale(1) rotate(-1.5deg); } to { transform: translate(-50%, -50%) scale(1.08) rotate(1.5deg); } } /* real item-drop image on the "best drop" slide */ .rewind-drop-img { position: relative; z-index: 1; width: 132px; height: 132px; object-fit: contain; margin-bottom: 14px; filter: drop-shadow(0 0 26px color-mix(in srgb, var(--accent,#00ff66) 55%, transparent)); animation: rewindPop 0.6s cubic-bezier(.2,1.3,.4,1) both 0.1s; } .rewind-big.with-img { font-size: 30px; letter-spacing: 0.5px; } /* weekly activity bar chart */ .rewind-timeline { position: relative; z-index: 1; display: flex; align-items: flex-end; justify-content: center; gap: 16px; height: 180px; margin-top: 6px; width: 100%; max-width: 320px; } .rewind-tl-col { display: flex; flex-direction: column; align-items: center; flex: 1; height: 100%; justify-content: flex-end; } .rewind-tl-val { font-size: 12px; font-weight: 700; color: rgba(255,255,255,0.85); margin-bottom: 4px; } .rewind-tl-bar-wrap { width: 26px; height: 100%; display: flex; align-items: flex-end; border-radius: 6px; overflow: hidden; background: rgba(255,255,255,0.06); } .rewind-tl-bar { width: 100%; border-radius: 6px 6px 0 0; background: linear-gradient(180deg, var(--accent,#00ff66), color-mix(in srgb, var(--accent,#00ff66) 40%, transparent)); box-shadow: 0 0 14px color-mix(in srgb, var(--accent,#00ff66) 50%, transparent); animation: rewindBarGrow 0.7s cubic-bezier(.2,1,.4,1) both 0.1s; } @keyframes rewindBarGrow { from { height: 0%; } } .rewind-tl-label { margin-top: 8px; font-size: 11px; letter-spacing: 0.3px; color: rgba(255,255,255,0.55); white-space: nowrap; } /* save-as-image button on the final card */ .rewind-share-btn { position: relative; z-index: 1; margin-top: 18px; padding: 11px 22px; display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; letter-spacing: 0.4px; color: #000; background: var(--accent, #00ff66); border: none; border-radius: 999px; cursor: pointer; box-shadow: 0 0 22px color-mix(in srgb, var(--accent,#00ff66) 55%, transparent); } .rewind-share-btn i { font-size: 16px; } /* ========================================================================= AQUA / HAINAN — Frutiger Aero · Y2K test theme (dev-owner only) Glossy water-glass, aqua skies, light rays, rising bubbles. Bright/light theme, so text goes dark; accents go aqua-blue. Mostly variable-driven, plus a few signature glossy overrides for the nostalgic-2000s look. ========================================================================= */ body.theme-aqua { --red: #1f7fc4; --red-dim: rgba(31,127,196,0.12); --red-border: rgba(31,127,196,0.32); --gold: #0f9bd1; --gold-dim: rgba(15,155,209,0.12); --gold-border: rgba(15,155,209,0.3); --purple: #2bbf7a; --purple-dim: rgba(43,191,122,0.14); --purple-border:rgba(43,191,122,0.3); --bg: #cdeeff; --bg2: rgba(255,255,255,0.55); --bg3: rgba(255,255,255,0.72); --border: rgba(255,255,255,0.7); --text: #0a4f7a; --text2: #166390; --text3: #5a89a6; --font-ui: 'Trebuchet MS', 'Segoe UI', sans-serif; --btn-radius: 16px; --card-radius: 16px; --scan-opacity: 0; --contract-card-bg: rgba(255,255,255,0.62); --contract-card-border: rgba(255,255,255,0.85); --contract-card-shadow: 0 6px 20px rgba(31,127,196,0.18); } /* sky→ocean gradient backdrop */ body.theme-aqua { background: linear-gradient(180deg, #d8f4ff 0%, #a6e0fb 22%, #6cc5ef 50%, #2f9bd6 78%, #1873b4 100%) fixed; } /* kill the dark scanline overlay under aqua */ body.theme-aqua::before { display: none; } /* ---- ambient background layer ---- */ .aqua-layer { position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; display: none; } body.theme-aqua .aqua-layer { display: block; } body.lite-mode .aqua-layer { display: none; } /* god-rays from the surface */ .aqua-rays { position: absolute; top: -10%; left: 50%; width: 160%; height: 90%; transform: translateX(-50%); background: linear-gradient(96deg, transparent 46%, rgba(255,255,255,0.35) 50%, transparent 54%), linear-gradient(88deg, transparent 38%, rgba(255,255,255,0.22) 42%, transparent 47%), linear-gradient(102deg, transparent 60%, rgba(255,255,255,0.28) 64%, transparent 69%); filter: blur(2px); opacity: 0.7; animation: aquaRays 9s ease-in-out infinite alternate; } @keyframes aquaRays { from { opacity: 0.45; transform: translateX(-52%) skewX(-2deg); } to { opacity: 0.8; transform: translateX(-48%) skewX(2deg); } } /* soft caustic shimmer near the surface */ .aqua-caustics { position: absolute; inset: 0; background: radial-gradient(ellipse 50% 22% at 20% 8%, rgba(255,255,255,0.5), transparent 70%), radial-gradient(ellipse 40% 18% at 78% 4%, rgba(255,255,255,0.4), transparent 70%); opacity: 0.6; animation: aquaCaustics 12s ease-in-out infinite alternate; } @keyframes aquaCaustics { from { transform: translateY(0) scale(1); } to { transform: translateY(8px) scale(1.05); } } /* rising glossy bubbles */ .aqua-bubbles { position: absolute; inset: 0; } .aqua-bubbles span { position: absolute; bottom: -8%; border-radius: 50%; background: radial-gradient(circle at 32% 28%, rgba(255,255,255,0.95), rgba(255,255,255,0.15) 42%, rgba(120,200,240,0.12) 70%); border: 1px solid rgba(255,255,255,0.6); box-shadow: inset 0 0 6px rgba(255,255,255,0.7), 0 0 6px rgba(255,255,255,0.35); animation: aquaRise linear infinite; } @keyframes aquaRise { 0% { transform: translateY(0) translateX(0) scale(0.9); opacity: 0; } 10% { opacity: 0.9; } 50% { transform: translateY(-52vh) translateX(10px) scale(1); } 90% { opacity: 0.7; } 100% { transform: translateY(-108vh) translateX(-8px) scale(1.1); opacity: 0; } } .aqua-bubbles span:nth-child(1) { left: 6%; width: 14px; height: 14px; animation-duration: 11s; animation-delay: -1s; } .aqua-bubbles span:nth-child(2) { left: 14%; width: 8px; height: 8px; animation-duration: 9s; animation-delay: -4s; } .aqua-bubbles span:nth-child(3) { left: 22%; width: 20px; height: 20px; animation-duration: 14s; animation-delay: -7s; } .aqua-bubbles span:nth-child(4) { left: 30%; width: 6px; height: 6px; animation-duration: 8s; animation-delay: -2s; } .aqua-bubbles span:nth-child(5) { left: 38%; width: 12px; height: 12px; animation-duration: 12s; animation-delay: -9s; } .aqua-bubbles span:nth-child(6) { left: 45%; width: 9px; height: 9px; animation-duration: 10s; animation-delay: -3s; } .aqua-bubbles span:nth-child(7) { left: 52%; width: 17px; height: 17px; animation-duration: 13s; animation-delay: -6s; } .aqua-bubbles span:nth-child(8) { left: 59%; width: 7px; height: 7px; animation-duration: 9s; animation-delay: -1s; } .aqua-bubbles span:nth-child(9) { left: 66%; width: 13px; height: 13px; animation-duration: 12s; animation-delay: -8s; } .aqua-bubbles span:nth-child(10) { left: 72%; width: 10px; height: 10px; animation-duration: 11s; animation-delay: -5s; } .aqua-bubbles span:nth-child(11) { left: 78%; width: 22px; height: 22px; animation-duration: 15s; animation-delay: -2s; } .aqua-bubbles span:nth-child(12) { left: 84%; width: 8px; height: 8px; animation-duration: 8s; animation-delay: -7s; } .aqua-bubbles span:nth-child(13) { left: 90%; width: 15px; height: 15px; animation-duration: 13s; animation-delay: -4s; } .aqua-bubbles span:nth-child(14) { left: 95%; width: 6px; height: 6px; animation-duration: 9s; animation-delay: -10s; } .aqua-bubbles span:nth-child(15) { left: 10%; width: 11px; height: 11px; animation-duration: 14s; animation-delay: -11s; } .aqua-bubbles span:nth-child(16) { left: 48%; width: 18px; height: 18px; animation-duration: 16s; animation-delay: -3s; } .aqua-bubbles span:nth-child(17) { left: 63%; width: 6px; height: 6px; animation-duration: 7s; animation-delay: -6s; } .aqua-bubbles span:nth-child(18) { left: 88%; width: 12px; height: 12px; animation-duration: 12s; animation-delay: -9s; } /* ---- glossy glass surfaces ---- */ body.theme-aqua .card { background: linear-gradient(160deg, rgba(255,255,255,0.7), rgba(255,255,255,0.4)); border: 1px solid rgba(255,255,255,0.85); border-radius: 16px; box-shadow: 0 6px 18px rgba(31,127,196,0.18), inset 0 1px 0 rgba(255,255,255,0.95); backdrop-filter: blur(8px) saturate(1.2); -webkit-backdrop-filter: blur(8px) saturate(1.2); } body.theme-aqua .card::before { height: 45%; background: linear-gradient(180deg, rgba(255,255,255,0.55), transparent); border-radius: 16px 16px 0 0; } body.theme-aqua .btn-primary { background: linear-gradient(160deg, rgba(255,255,255,0.9), #7fd0f5 60%, #2f9bd6); border: 1px solid rgba(255,255,255,0.9); color: #07405f; font-weight: 800; border-radius: 999px; box-shadow: 0 4px 12px rgba(31,127,196,0.35), inset 0 1px 0 rgba(255,255,255,0.95); text-transform: none; letter-spacing: 0.5px; } body.theme-aqua .btn-primary::after { background: linear-gradient(90deg, transparent, rgba(255,255,255,0.55), transparent); } body.theme-aqua .btn-gold { background: linear-gradient(160deg, rgba(255,255,255,0.9), #ffe27a 60%, #f0b400); border: 1px solid rgba(255,255,255,0.9); color: #6a4a00; border-radius: 999px; box-shadow: 0 3px 10px rgba(240,180,0,0.3), inset 0 1px 0 rgba(255,255,255,0.9); } body.theme-aqua .bottom-nav { background: linear-gradient(180deg, rgba(255,255,255,0.78), rgba(190,228,250,0.85)); border-top: 1px solid rgba(255,255,255,0.9); box-shadow: 0 -4px 18px rgba(31,127,196,0.2), inset 0 1px 0 rgba(255,255,255,0.95); backdrop-filter: blur(14px) saturate(1.3); -webkit-backdrop-filter: blur(14px) saturate(1.3); } body.theme-aqua .bottom-nav::before { background: linear-gradient(90deg, transparent, rgba(255,255,255,0.9), rgba(127,208,245,0.6), rgba(255,255,255,0.9), transparent); } body.theme-aqua .nav-item { color: #5a89a6; } body.theme-aqua .nav-item.active { color: #0f7cc0; } body.theme-aqua .nav-item.active::before { background: linear-gradient(90deg, transparent, #1f9fd4, transparent); } body.theme-aqua .nav-item.active .ti { color: #0f7cc0; filter: drop-shadow(0 0 6px rgba(31,159,212,0.5)); } body.theme-aqua .page-title { font-family: 'Trebuchet MS', 'Segoe UI', sans-serif; color: #07405f; text-shadow: 0 1px 0 rgba(255,255,255,0.8), 0 0 12px rgba(255,255,255,0.5); } body.theme-aqua .page-title-cn { color: rgba(15,124,192,0.75); } body.theme-aqua .page-sub { color: rgba(15,124,192,0.7); } /* dark, legible text on the bright aqua background */ body.theme-aqua .cn-divider, body.theme-aqua .card-label, body.theme-aqua .neuro-label, body.theme-aqua .stat-label, body.theme-aqua .team-name, body.theme-aqua .more-item-name, body.theme-aqua .shop-item-name, body.theme-aqua .announcement-text, body.theme-aqua .lb-name, body.theme-aqua .lb-points { color: #0a4f7a !important; } body.theme-aqua .card-label, body.theme-aqua .cn-divider { font-family: 'Trebuchet MS', 'Segoe UI', sans-serif; } body.theme-aqua .card-label { color: rgba(15,124,192,0.85) !important; } body.theme-aqua .card-label::after { background: linear-gradient(90deg, rgba(15,124,192,0.25), transparent); } body.theme-aqua .cn-divider::before, body.theme-aqua .cn-divider::after { background: linear-gradient(90deg, transparent, rgba(15,124,192,0.3)); } /* ===== Народный магазин (community shop) ===== */ .folk-shop-banner { position: relative; overflow: hidden; margin-bottom: 12px; padding: 18px 14px 16px; border-radius: 16px; text-align: center; border: 1px solid var(--gold-border); background: radial-gradient(circle at 50% 0%, var(--gold-dim), transparent 70%), var(--card-bg, rgba(255,255,255,0.03)); } .folk-shop-banner::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, var(--gold-border), transparent); opacity: 0.5; height: 1px; top: auto; } .folk-shop-icon { font-size: 30px; margin-bottom: 6px; filter: drop-shadow(0 0 10px var(--gold-dim)); } .folk-shop-title { font-size: 14px; font-weight: 800; letter-spacing: 0.3px; color: var(--text); margin-bottom: 5px; } .folk-shop-title .folk-shop-title-cn { color: var(--gold); font-weight: 700; } .folk-shop-sub { font-size: 10.5px; color: var(--text2); line-height: 1.65; max-width: 320px; margin: 0 auto; } .folk-shop-sub b { color: var(--gold); } .folk-shop-propose-card { position: relative; overflow: hidden; margin-bottom: 12px; border-radius: 16px; border: 1px solid var(--border); background: rgba(255,255,255,0.03); } .folk-shop-propose-card::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: linear-gradient(180deg, var(--gold), transparent); opacity: 0.85; } .folk-shop-propose-card .card-inner { padding: 13px 14px; } .folk-shop-propose-kicker { font-family: monospace; font-size: 8px; font-weight: 800; letter-spacing: 1.6px; color: var(--gold); margin-bottom: 8px; } .folk-item-card { position: relative; overflow: hidden; margin-bottom: 10px; border-radius: 14px; border: 1px solid var(--border); background: rgba(255,255,255,0.025); transition: border-color 0.2s; } .folk-item-card.is-hot { border-color: var(--gold-border); } .folk-item-card .card-inner { padding: 13px 14px; } .folk-item-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; } .folk-item-title { font-size: 13px; font-weight: 700; color: var(--text); line-height: 1.4; } .folk-item-desc { font-size: 11px; color: var(--text2); margin-top: 4px; line-height: 1.55; } .folk-item-status { display: inline-flex; align-items: center; gap: 4px; margin-top: 8px; font-size: 9.5px; font-family: monospace; letter-spacing: 0.3px; color: var(--text3); } .folk-item-status.status-promoted { color: #4caf7d; } .folk-item-status.status-rejected { color: var(--red, #c0504d); } .folk-item-status.status-hot { color: var(--gold); font-weight: 700; } .folk-crown-btn { flex-shrink: 0; display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 50px; padding: 7px 10px; border-radius: 12px; border: 1px solid var(--gold-border); background: var(--gold-dim); cursor: pointer; font-family: monospace; transition: all 0.2s; } .folk-crown-btn.is-voted { background: var(--gold); border-color: var(--gold); } .folk-crown-btn .folk-crown-emoji { font-size: 17px; line-height: 1; } .folk-crown-btn .folk-crown-count { font-size: 11px; font-weight: 800; color: var(--gold); } .folk-crown-btn.is-voted .folk-crown-count { color: var(--bg, #0a0e12); } .folk-item-progress-track { margin-top: 10px; height: 5px; border-radius: 3px; background: rgba(255,255,255,0.06); overflow: hidden; } .folk-item-progress-fill { height: 100%; border-radius: 3px; background: linear-gradient(90deg, var(--gold), #f0d060); transition: width 0.4s ease; } .folk-item-progress-label { margin-top: 4px; font-size: 9px; font-family: monospace; color: var(--text3); display: flex; justify-content: space-between; }