/** * Amnezia Admin — Cyberpunk theme (Bootstrap 5 + Font Awesome 6) */ :root, [data-bs-theme="dark"] { --bs-body-bg: #05060f; --bs-body-color: #e0e6ff; --bs-border-color: #1a1f3d; --bs-primary: #00f0ff; --bs-primary-rgb: 0, 240, 255; --bs-success: #00ff9d; --bs-danger: #ff3860; --bs-warning: #ffe23d; --bs-secondary-color: #8892b8; --admin-sidebar-w: 260px; --admin-accent: #00f0ff; --admin-accent-2: #ff2d7b; --admin-accent-3: #b24dff; --admin-accent-glow: rgba(0, 240, 255, 0.35); --admin-accent-pink-glow: rgba(255, 45, 123, 0.35); --admin-surface: #0d1025; --admin-surface-2: #111633; --admin-surface-3: #161b3d; --admin-font-display: "Orbitron", sans-serif; --admin-font-mono: "JetBrains Mono", ui-monospace, monospace; --admin-font-body: "Inter", system-ui, sans-serif; --admin-radius: 4px; --admin-shadow: 0 8px 40px rgba(0, 0, 0, 0.55), 0 0 1px rgba(0, 240, 255, 0.15); } ::selection { background: rgba(0, 240, 255, 0.25); color: #fff; } body.admin-app { font-family: var(--admin-font-body); background: #05060f; min-height: 100vh; overflow-x: hidden; color: var(--bs-body-color); } body.admin-app::before { content: ""; position: fixed; inset: 0; z-index: -2; pointer-events: none; background: radial-gradient(ellipse 80% 50% at 50% -20%, rgba(0, 240, 255, 0.12), transparent 55%), radial-gradient(ellipse 60% 40% at 100% 50%, rgba(178, 77, 255, 0.08), transparent 50%), radial-gradient(ellipse 50% 35% at 0% 80%, rgba(255, 45, 123, 0.06), transparent 45%), linear-gradient(180deg, #05060f 0%, #0b0d1a 50%, #05060f 100%); } body.admin-app::after { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; opacity: 0.45; background: repeating-linear-gradient( 0deg, transparent, transparent 2px, rgba(0, 240, 255, 0.018) 2px, rgba(0, 240, 255, 0.018) 4px ); } /* Sidebar */ .admin-sidebar { width: var(--admin-sidebar-w); background: linear-gradient(180deg, rgba(13, 16, 37, 0.98) 0%, rgba(5, 6, 15, 0.99) 100%); border-right: 1px solid rgba(0, 240, 255, 0.18); box-shadow: 4px 0 32px rgba(0, 0, 0, 0.5), inset -1px 0 0 rgba(0, 240, 255, 0.08); position: fixed; top: 0; left: 0; bottom: 0; z-index: 1040; display: flex; flex-direction: column; } .admin-brand { padding: 1.25rem 1.1rem; border-bottom: 1px solid rgba(0, 240, 255, 0.12); display: flex; align-items: center; gap: 0.75rem; text-decoration: none; color: #e0e6ff; flex-shrink: 0; position: relative; } .admin-brand::after { content: ""; position: absolute; bottom: -1px; left: 1.1rem; right: 1.1rem; height: 1px; background: linear-gradient(90deg, transparent, var(--admin-accent), var(--admin-accent-2), transparent); opacity: 0.6; } .admin-brand:hover { color: var(--admin-accent); } .admin-brand-icon { width: 42px; height: 42px; border-radius: var(--admin-radius); display: flex; align-items: center; justify-content: center; background: rgba(0, 240, 255, 0.08); color: var(--admin-accent); font-size: 1.15rem; border: 1px solid rgba(0, 240, 255, 0.35); box-shadow: 0 0 20px var(--admin-accent-glow), inset 0 0 12px rgba(0, 240, 255, 0.06); } .admin-brand-text { font-family: var(--admin-font-display); font-weight: 700; font-size: 0.88rem; letter-spacing: 0.12em; line-height: 1.2; text-transform: uppercase; text-shadow: 0 0 12px var(--admin-accent-glow); } .admin-brand-sub { display: block; font-family: var(--admin-font-mono); font-size: 0.62rem; font-weight: 500; color: var(--admin-accent-2); letter-spacing: 0.14em; text-transform: uppercase; } .admin-nav { flex: 1; padding: 0.75rem; overflow-y: auto; } .admin-nav .nav-link { color: #8892b8; border-radius: var(--admin-radius); padding: 0.65rem 0.85rem; margin-bottom: 0.2rem; display: flex; align-items: center; gap: 0.65rem; font-weight: 500; font-size: 0.85rem; border: 1px solid transparent; transition: background 0.15s, color 0.15s, border-color 0.15s, box-shadow 0.15s; font-family: var(--admin-font-body); letter-spacing: 0.02em; } .admin-nav .nav-link i { width: 1.25rem; text-align: center; font-size: 1rem; flex-shrink: 0; filter: drop-shadow(0 0 4px transparent); transition: filter 0.15s; } .admin-nav .nav-link:hover { background: rgba(0, 240, 255, 0.06); color: var(--admin-accent); border-color: rgba(0, 240, 255, 0.2); } .admin-nav .nav-link:hover i { filter: drop-shadow(0 0 6px var(--admin-accent-glow)); } .admin-nav .nav-link.active { background: linear-gradient(90deg, rgba(0, 240, 255, 0.12) 0%, rgba(255, 45, 123, 0.06) 100%); color: var(--admin-accent); border-color: rgba(0, 240, 255, 0.35); font-weight: 600; box-shadow: inset 3px 0 0 var(--admin-accent), 0 0 16px rgba(0, 240, 255, 0.08); } .admin-nav .nav-link.active i { filter: drop-shadow(0 0 8px var(--admin-accent-glow)); color: var(--admin-accent); } .admin-sidebar-footer { padding: 1rem; border-top: 1px solid rgba(0, 240, 255, 0.12); flex-shrink: 0; } .admin-sidebar-footer .btn-outline-danger { border-color: rgba(255, 56, 96, 0.45); color: #ff3860; font-family: var(--admin-font-mono); font-size: 0.78rem; letter-spacing: 0.06em; text-transform: uppercase; border-radius: var(--admin-radius); } .admin-sidebar-footer .btn-outline-danger:hover { background: rgba(255, 56, 96, 0.12); border-color: #ff3860; box-shadow: 0 0 16px rgba(255, 56, 96, 0.25); color: #ff6b8a; } /* Main area */ .admin-main { margin-left: var(--admin-sidebar-w); min-height: 100vh; width: calc(100% - var(--admin-sidebar-w)); display: flex; flex-direction: column; } /* Burger — only mobile */ #adminSidebarToggle { display: none; flex-shrink: 0; border-color: rgba(0, 240, 255, 0.3); color: var(--admin-accent); border-radius: var(--admin-radius); } .admin-topbar { position: sticky; top: 0; z-index: 1030; background: rgba(5, 6, 15, 0.88); backdrop-filter: blur(16px); border-bottom: 1px solid rgba(0, 240, 255, 0.15); padding: 1rem 1.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.35), 0 1px 0 rgba(0, 240, 255, 0.06); } .admin-topbar-title { min-width: 0; flex: 1; } .admin-topbar-title h1 { margin: 0; font-family: var(--admin-font-display); font-size: 1.05rem; font-weight: 700; color: #e0e6ff; line-height: 1.3; letter-spacing: 0.08em; text-transform: uppercase; text-shadow: 0 0 20px rgba(0, 240, 255, 0.2); } .admin-topbar-title h1 .text-primary, .admin-topbar-title h1 i { color: var(--admin-accent) !important; filter: drop-shadow(0 0 6px var(--admin-accent-glow)); } .admin-topbar-meta { display: flex; align-items: center; gap: 0.75rem; flex-shrink: 0; color: var(--bs-secondary-color); font-size: 0.78rem; font-family: var(--admin-font-mono); } .admin-topbar-meta .badge-protocol { background: rgba(0, 255, 157, 0.08); color: #00ff9d; border: 1px solid rgba(0, 255, 157, 0.35); font-weight: 600; font-size: 0.68rem; padding: 0.35rem 0.55rem; border-radius: var(--admin-radius); letter-spacing: 0.08em; text-transform: uppercase; box-shadow: 0 0 12px rgba(0, 255, 157, 0.15); } .admin-content { flex: 1; width: 100%; max-width: none; padding: 1.25rem 1.5rem 2rem; } /* Legacy cards */ .admin-content .card { background: var(--admin-surface); border: 1px solid var(--bs-border-color); border-radius: 0.75rem; padding: 1.25rem; margin-bottom: 1.25rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); } .admin-content .card-header { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--bs-border-color); } .admin-content .card-header h2 { margin: 0; font-size: 1.05rem; font-weight: 600; color: #f1f5f9; } .admin-content .card-header > i.fa-solid, .admin-content .card-header > i.fa-regular { color: var(--admin-accent); font-size: 1.1rem; width: 1.25rem; text-align: center; flex-shrink: 0; } .admin-content .card-header svg { width: 1.1rem; height: 1.1rem; color: var(--admin-accent); flex-shrink: 0; } /* SVG без width/height в summary и кнопках растягиваются на весь блок */ .admin-content svg { width: 1.15rem; height: 1.15rem; max-width: 2rem; max-height: 2rem; flex-shrink: 0; vertical-align: middle; } .admin-content .btn svg { width: 1rem; height: 1rem; } .admin-content details { margin: 0; } .admin-content details summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; font-weight: 500; color: var(--admin-accent); padding: 0.25rem 0; } .admin-content details summary::-webkit-details-marker { display: none; } .admin-content details[open] > summary { margin-bottom: 0.35rem; } .admin-content details summary > .fa-chevron-right { font-size: 0.65rem; transition: transform 0.15s ease; } .admin-content details[open] summary > .fa-chevron-right { transform: rotate(90deg); } .admin-content .timing-details summary.timing-summary { font-size: 0.82rem; } .admin-content .btn .fa-solid, .admin-content .btn .fa-regular { font-size: 0.9em; } .admin-cleanup-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--bs-border-color); } .admin-cleanup-row .btn-danger { max-width: 100%; } .days-preset.active, .uses-preset.active { border-color: rgba(56, 189, 248, 0.5) !important; color: var(--admin-accent) !important; background: rgba(56, 189, 248, 0.12) !important; } /* Stat tiles */ .stat-grid { display: grid; grid-template-columns: repeat(1, 1fr); gap: 1rem; margin-bottom: 1.25rem; } @media (min-width: 576px) { .stat-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1200px) { .stat-grid { grid-template-columns: repeat(4, 1fr); } } .stat-grid-compact { margin-bottom: 0.75rem; gap: 0.65rem; } .stat-grid-compact .stat-tile { min-height: 72px; padding: 0.75rem 0.85rem; } .stat-grid-compact .stat-val { font-size: 1.2rem; } .stat-tile { background: var(--admin-surface); border: 1px solid var(--bs-border-color); border-radius: 0.75rem; padding: 1.1rem 1.15rem; display: flex; align-items: flex-start; gap: 0.85rem; min-height: 88px; transition: border-color 0.2s, box-shadow 0.2s, transform 0.15s; } .stat-tile:hover { border-color: rgba(56, 189, 248, 0.4); box-shadow: 0 0 24px rgba(56, 189, 248, 0.08); transform: translateY(-1px); } .stat-tile > i.fa-solid, .stat-tile > i.fa-regular { font-size: 1.4rem; color: var(--admin-accent); flex-shrink: 0; margin-top: 0.1rem; width: 1.5rem; text-align: center; } .stat-tile > svg { width: 1.4rem; height: 1.4rem; color: var(--admin-accent); flex-shrink: 0; } .stat-val { display: block; font-size: 1.45rem; font-weight: 700; line-height: 1.2; color: #f8fafc; } .stat-label { display: block; font-size: 0.72rem; color: var(--bs-secondary-color); margin-top: 0.35rem; text-transform: uppercase; letter-spacing: 0.05em; line-height: 1.35; } /* Legacy buttons */ .admin-content .btn.btn-primary, .admin-content a.btn.btn-primary { background: #0ea5e9; border-color: #0ea5e9; color: #fff; } .admin-content .btn.btn-primary:hover, .admin-content a.btn.btn-primary:hover { background: #0284c7; border-color: #0284c7; color: #fff; } .admin-content .btn.btn-danger, .admin-content a.btn.btn-danger { background: rgba(239, 68, 68, 0.15); border-color: rgba(239, 68, 68, 0.45); color: #fca5a5; } .admin-content .btn.btn-ghost, .admin-content a.btn.btn-ghost { background: var(--admin-surface-2); border-color: var(--bs-border-color); color: #e2e8f0; } .admin-content .btn.btn-ghost:hover, .admin-content a.btn.btn-ghost:hover { background: rgba(56, 189, 248, 0.1); border-color: rgba(56, 189, 248, 0.35); color: #f8fafc; } .admin-content .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; padding: 0.5rem 1rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 500; border: 1px solid transparent; cursor: pointer; text-decoration: none; transition: background 0.15s, border-color 0.15s, color 0.15s; line-height: 1.4; } .admin-content .btn-sm { padding: 0.32rem 0.65rem; font-size: 0.78rem; } .admin-content .btn-copy { background: var(--admin-surface-2); border-color: var(--bs-border-color); color: var(--admin-accent); font-size: 0.78rem; padding: 0.28rem 0.55rem; } /* Legacy alerts only */ .alert-ok, .alert-err { display: flex; align-items: flex-start; gap: 0.65rem; padding: 0.85rem 1rem; border-radius: 0.5rem; margin-bottom: 1rem; font-size: 0.9rem; border: 1px solid transparent; } .alert-ok { background: rgba(16, 185, 129, 0.12); border-color: rgba(16, 185, 129, 0.35); color: #6ee7b7; } .alert-err { background: rgba(239, 68, 68, 0.12); border-color: rgba(239, 68, 68, 0.35); color: #fca5a5; } /* Tables */ .tbl-wrap { overflow-x: auto; margin-top: 0.5rem; border-radius: 0.5rem; border: 1px solid var(--bs-border-color); } .tbl-wrap table { width: 100%; margin-bottom: 0; font-size: 0.85rem; } .tbl-wrap th { background: var(--admin-surface-2); color: #94a3b8; font-weight: 600; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; white-space: nowrap; padding: 0.65rem 0.75rem; border-bottom: 1px solid var(--bs-border-color); } .tbl-wrap td { padding: 0.6rem 0.75rem; vertical-align: top; border-bottom: 1px solid rgba(42, 51, 82, 0.6); color: #e2e8f0; } .tbl-wrap tbody tr:hover td { background: rgba(56, 189, 248, 0.04); } /* Badges */ .badge { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.2rem 0.5rem; border-radius: 0.35rem; font-size: 0.72rem; font-weight: 600; border: 1px solid transparent; } .badge-ok { background: rgba(0, 255, 157, 0.1); color: #00ff9d; border-color: rgba(0, 255, 157, 0.35); } .badge-err { background: rgba(255, 56, 96, 0.1); color: #ff6b8a; border-color: rgba(255, 56, 96, 0.35); } .badge-danger { background: rgba(255, 56, 96, 0.1); color: #ff3860; border-color: rgba(255, 56, 96, 0.3); } .badge-warn { background: rgba(255, 226, 61, 0.1); color: #ffe23d; border-color: rgba(255, 226, 61, 0.3); } .badge-info { background: rgba(0, 240, 255, 0.1); color: #00f0ff; border-color: rgba(0, 240, 255, 0.3); } .hint { color: var(--bs-secondary-color); font-size: 0.85rem; line-height: 1.55; margin: 0.35rem 0 0.75rem; } .mono { font-family: ui-monospace, "JetBrains Mono", monospace; font-size: 0.8rem; word-break: break-all; } .url-box { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; background: var(--admin-surface-2); border: 1px solid var(--bs-border-color); border-radius: 0.5rem; padding: 0.6rem 0.75rem; margin-top: 0.75rem; } .url-box .mono, .url-box .url-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; color: #7dd3fc; } .url-box--created { border-color: rgba(56, 189, 248, 0.45); background: rgba(56, 189, 248, 0.1); } .url-box--created .url-text { color: #e0f2fe; word-break: break-all; white-space: normal; } .url-box .text-info { color: #38bdf8 !important; } /* Компактная форма ссылок */ .card-compact { padding: 1rem; } .card-compact .card-header { margin-bottom: 0.65rem; padding-bottom: 0.5rem; } .hint-tight { margin: 0 0 0.35rem; font-size: 0.75rem; line-height: 1.35; } .form-compact .form-label-tight { margin: 0 0 0.15rem; font-size: 0.8rem; } .form-row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem 1.25rem; margin-bottom: 0.65rem; } @media (max-width: 767.98px) { .form-row-2 { grid-template-columns: 1fr; } } .form-row-actions .form-col-btn { display: flex; align-items: flex-end; justify-content: flex-start; } .preset-row { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-bottom: 0.35rem; } .preset-row .btn { padding: 0.2rem 0.45rem; font-size: 0.72rem; } .input-inline { display: flex; align-items: center; gap: 0.4rem; } .admin-content .input-narrow { max-width: 5.5rem; padding: 0.35rem 0.5rem; font-size: 0.85rem; } .admin-content .input-narrow-date { max-width: 11rem; padding: 0.35rem 0.5rem; font-size: 0.85rem; } .admin-content .form-compact label:not(.form-label-tight) { margin-top: 0.5rem; } .links-toolbar { display: flex; flex-wrap: wrap; gap: 0.75rem 1.25rem; margin-bottom: 0.75rem; font-size: 0.8rem; color: var(--bs-secondary-color); } .links-filter-check { display: inline-flex; align-items: center; gap: 0.4rem; margin: 0; cursor: pointer; user-select: none; } .links-filter-check input { accent-color: var(--admin-accent); } .link-row--cleaned td { opacity: 0.88; } .link-configs-cell { padding: 0.35rem 0.65rem 0.5rem !important; background: rgba(15, 23, 42, 0.5); } .config-section-title { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; } .config-section-title--deleted { color: #f87171; } .creation-card { background: var(--admin-surface-2); border-color: var(--bs-border-color) !important; } .creation-card--deleted { border-style: dashed !important; border-color: rgba(239, 68, 68, 0.35) !important; background: rgba(239, 68, 68, 0.06); } body.hide-deleted-configs .config-section-title--deleted, body.hide-deleted-configs .creation-card--deleted { display: none !important; } .mono.text-light, .creation-card .mono.text-light { color: #e2e8f0; } /* Страница серверов (server_labels.php) */ .admin-page-servers .card { margin-bottom: 0.85rem; } .admin-page-servers .tbl-wrap th, .admin-page-servers .tbl-wrap td { padding: 0.4rem 0.55rem; font-size: 0.82rem; } .admin-page-servers .tbl-wrap td.text-muted-col { color: #94a3b8; } .admin-page-servers .code-inline { background: var(--admin-surface-2); color: #7dd3fc; padding: 0.1rem 0.35rem; border-radius: 0.25rem; font-size: 0.82em; } .admin-page-servers .form-panel { background: var(--admin-surface-2); border: 1px solid var(--bs-border-color); border-radius: 0.5rem; padding: 0.65rem 0.75rem; margin-bottom: 0.65rem; } .admin-page-servers .form-inline-grid { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; align-items: flex-end; } .admin-page-servers .form-inline-grid .field { display: flex; flex-direction: column; gap: 0.12rem; } .admin-page-servers .form-inline-grid .field-grow { flex: 1; min-width: 10rem; } .admin-page-servers .form-inline-grid label { margin: 0; font-size: 0.78rem; color: #cbd5e1; } .admin-page-servers .checkbox-row { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; margin: 0.25rem 0 0.35rem; } .admin-page-servers .checkbox-row label { display: inline-flex; align-items: center; gap: 0.35rem; margin: 0; font-size: 0.85rem; color: #e2e8f0; cursor: pointer; } .admin-page-servers .checkbox-row input[type="checkbox"] { accent-color: var(--admin-accent); } .admin-page-servers .server-ids-row { display: flex; flex-wrap: wrap; gap: 0.3rem; align-items: center; margin-bottom: 0.5rem; } .admin-page-servers .server-ids-row .badge { font-size: 0.7rem; } .admin-page-servers .row-actions { display: inline-flex; flex-wrap: wrap; gap: 0.25rem; align-items: center; } .admin-page-servers .flag-cell { font-size: 1.35rem; line-height: 1; vertical-align: middle; } .admin-page-servers .flag-preview-img { width: 40px; height: 40px; object-fit: cover; border-radius: 8px; border: 1px solid var(--bs-border-color); background: rgba(15, 23, 42, 0.6); } .admin-page-servers .flag-preview-emoji { font-size: 1.75rem; line-height: 1; } .admin-page-servers .flag-preview-emoji--twemoji { display: inline-flex; align-items: center; justify-content: center; } .admin-page-servers .flag-preview-emoji__raw { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .admin-page-servers .flag-emoji-input-wrap { display: flex; align-items: center; gap: 0.5rem; } .admin-page-servers .flag-emoji-input-preview { flex-shrink: 0; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid var(--bs-border-color); background: rgba(15, 23, 42, 0.5); font-size: 1.25rem; line-height: 1; } .admin-page-servers .flag-emoji-input-preview img { width: 28px; height: 28px; object-fit: contain; display: block; } .admin-page-servers .flag-emoji-picker { margin-top: 0.75rem; padding: 0.75rem; border-radius: 10px; border: 1px solid var(--bs-border-color); background: rgba(15, 23, 42, 0.35); } .admin-page-servers .flag-emoji-picker__toolbar { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.65rem; } .admin-page-servers .flag-emoji-picker__search { flex: 1; min-width: 0; } .admin-page-servers .flag-emoji-picker__count { flex-shrink: 0; font-size: 0.78rem; color: var(--bs-secondary-color); font-variant-numeric: tabular-nums; } .admin-page-servers .flag-emoji-picker__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr)); gap: 0.4rem; max-height: 16rem; overflow-y: auto; padding-right: 0.15rem; } .admin-page-servers .flag-emoji-pick { display: flex; flex-direction: column; align-items: center; gap: 0.2rem; padding: 0.45rem 0.35rem; border-radius: 8px; border: 1px solid transparent; background: rgba(30, 41, 59, 0.55); color: inherit; cursor: pointer; text-align: center; transition: border-color 0.15s, background 0.15s, box-shadow 0.15s; } .admin-page-servers .flag-emoji-pick:hover { border-color: rgba(56, 189, 248, 0.35); background: rgba(30, 41, 59, 0.85); } .admin-page-servers .flag-emoji-pick.is-active { border-color: rgba(56, 189, 248, 0.65); background: rgba(14, 116, 144, 0.2); box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.25); } .admin-page-servers .flag-emoji-pick[hidden] { display: none; } .admin-page-servers .flag-emoji-pick__img { width: 28px; height: 28px; object-fit: contain; display: block; } .admin-page-servers .flag-emoji-pick__raw { display: none; } .admin-page-servers .flag-emoji-pick__name { font-size: 0.68rem; line-height: 1.25; color: var(--bs-secondary-color); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .admin-page-servers .form-inline-grid--flags { align-items: end; } .admin-page-servers .field-grow { flex: 1; min-width: 12rem; } .admin-content .btn.btn-warn, .admin-content .btn.btn-warn:hover { background: rgba(245, 158, 11, 0.15); border-color: rgba(245, 158, 11, 0.45); color: #fbbf24; } .admin-page-servers tr.row-disabled td { opacity: 0.65; } .admin-page-servers .input-flag { max-width: 4.5rem; font-size: 1.35rem; text-align: center; padding: 0.25rem 0.35rem; } .admin-page-servers .text-light { color: #f1f5f9 !important; } /* Уведомления о трафике (admin/server_traffic_notices.php) */ .admin-page-traffic { max-width: 960px; } .admin-page-traffic .sl-input, .admin-page-traffic textarea.sl-input { color: #f1f5f9 !important; -webkit-text-fill-color: #f1f5f9; } .tn-hero { margin-bottom: 1.25rem; padding: 1.15rem 1.25rem; border-radius: 0.85rem; border: 1px solid rgba(245, 158, 11, 0.22); background: linear-gradient(135deg, rgba(245, 158, 11, 0.08) 0%, rgba(17, 24, 39, 0.55) 100%); } .tn-hero__kicker { margin: 0 0 0.2rem; font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: #fbbf24; } .tn-hero__title { margin: 0 0 0.3rem; font-size: 1.3rem; font-weight: 700; color: #f8fafc; } .tn-hero__sub { margin: 0; font-size: 0.88rem; color: #94a3b8; line-height: 1.45; } .tn-hero__sub code { color: #7dd3fc; } .tn-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; margin-bottom: 1.25rem; } @media (min-width: 576px) { .tn-stats { grid-template-columns: repeat(2, 1fr); max-width: 420px; } } .tn-stat-mini { display: flex; align-items: center; gap: 0.75rem; padding: 0.85rem 1rem; border-radius: 0.6rem; border: 1px solid var(--bs-border-color); background: var(--admin-surface); } .tn-stat-mini i { font-size: 1.15rem; color: #fbbf24; } .tn-stat-mini__val { display: block; font-size: 1.35rem; font-weight: 700; color: #f8fafc; line-height: 1.1; } .tn-stat-mini__label { font-size: 0.68rem; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.04em; } .tn-form-grid { display: grid; grid-template-columns: 6.5rem 1fr; gap: 0.75rem 1rem; align-items: start; } @media (max-width: 575.98px) { .tn-form-grid { grid-template-columns: 1fr; } } .tn-form-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; padding-top: 0.25rem; } .tn-servers { margin-bottom: 0.85rem; } .tn-servers__label { display: block; font-size: 0.72rem; font-weight: 600; color: #64748b; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.35rem; } .tn-servers__scroll { display: flex; gap: 0.35rem; overflow-x: auto; padding-bottom: 0.2rem; scrollbar-width: thin; } .tn-id-pill { flex-shrink: 0; border: 1px solid var(--bs-border-color); background: var(--admin-surface-2); color: #94a3b8; font-size: 0.75rem; font-weight: 600; padding: 0.25rem 0.55rem; border-radius: 999px; cursor: pointer; font-family: inherit; transition: border-color 0.15s, color 0.15s, background 0.15s; } .tn-id-pill:hover, .tn-id-pill.active { border-color: rgba(245, 158, 11, 0.5); background: rgba(245, 158, 11, 0.12); color: #fcd34d; } .tn-textarea { min-height: 4.5rem; resize: vertical; } .admin-page-traffic .st-form label.sl-field__label { margin: 0 0 0.15rem; } .tn-empty { text-align: center; padding: 2rem 1rem; color: #64748b; } .tn-empty i { font-size: 2rem; color: #475569; margin-bottom: 0.65rem; } .tn-empty p { margin: 0; font-size: 0.9rem; } .tn-table .sl-td-text { font-size: 0.88rem; line-height: 1.5; color: #f1f5f9 !important; word-break: break-word; } /* Алерты Bootstrap — контраст на тёмном фоне */ .admin-content .alert.alert-success { background: rgba(16, 185, 129, 0.18); border-color: rgba(52, 211, 153, 0.5); color: #6ee7b7; } .admin-content .alert.alert-danger { background: rgba(239, 68, 68, 0.18); border-color: rgba(248, 113, 113, 0.45); color: #fca5a5; } .cfg-block { background: var(--admin-surface-2); border: 1px solid var(--bs-border-color); border-radius: 0.5rem; padding: 0.65rem 0.75rem; margin: 0.5rem 0; } .cfg-block pre { margin: 0; font-size: 0.78rem; color: #94a3b8; white-space: pre-wrap; word-break: break-all; max-height: 220px; overflow-y: auto; font-family: ui-monospace, monospace; } /* Forms in admin content */ .admin-content label { display: block; font-weight: 500; font-size: 0.85rem; color: #cbd5e1; margin: 0.75rem 0 0.35rem; } .admin-content .form-compact > label { margin: 0; } .admin-content input[type="text"], .admin-content input[type="password"], .admin-content input[type="number"], .admin-content input[type="date"], .admin-content input[type="datetime-local"], .admin-content select, .admin-content textarea { width: 100%; padding: 0.5rem 0.75rem; border-radius: 0.5rem; border: 1px solid var(--bs-border-color); background: #0f172a; color: #f1f5f9; font-size: 0.9rem; } .admin-content input:focus, .admin-content select:focus, .admin-content textarea:focus { outline: none; border-color: var(--admin-accent); box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15); } .admin-content textarea { min-height: 5rem; resize: vertical; } details .detail-body { padding-top: 0.5rem; } .admin-content .tbl-wrap details .detail-body { padding: 0.5rem 0 0.25rem; } /* Mobile sidebar */ @media (max-width: 991.98px) { #adminSidebarToggle { display: inline-flex; align-items: center; justify-content: center; } .admin-sidebar { transform: translateX(-100%); transition: transform 0.25s ease; box-shadow: none; } .admin-sidebar.show { transform: translateX(0); box-shadow: 8px 0 32px rgba(0, 0, 0, 0.5); } .admin-main { margin-left: 0; width: 100%; } .admin-sidebar-backdrop { display: none; position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); z-index: 1035; } .admin-sidebar-backdrop.show { display: block; } .admin-topbar { padding: 0.85rem 1rem; } .admin-content { padding: 1rem; } } /* ——— Dashboard (admin/index.php) ——— */ .admin-dashboard { max-width: 1200px; } .dash-alert { display: flex; align-items: flex-start; gap: 0.75rem; padding: 0.85rem 1rem; margin-bottom: 1.25rem; border-radius: 0.65rem; font-size: 0.88rem; line-height: 1.45; background: rgba(245, 158, 11, 0.1); border: 1px solid rgba(245, 158, 11, 0.35); color: #fcd34d; } .dash-alert a { color: #fde68a; font-weight: 600; } .dash-alert i { font-size: 1.1rem; margin-top: 0.1rem; flex-shrink: 0; } .dash-hero { margin-bottom: 1.5rem; padding: 1.25rem 1.35rem; border-radius: var(--admin-radius); border: 1px solid rgba(0, 240, 255, 0.25); background: linear-gradient(135deg, rgba(0, 240, 255, 0.08) 0%, rgba(13, 16, 37, 0.9) 45%, rgba(255, 45, 123, 0.04) 100%); box-shadow: var(--admin-shadow), inset 0 1px 0 rgba(0, 240, 255, 0.08); position: relative; overflow: hidden; } .dash-hero::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--admin-accent), var(--admin-accent-3), var(--admin-accent-2)); } .dash-hero-kicker { margin: 0 0 0.25rem; font-family: var(--admin-font-mono); font-size: 0.68rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.14em; color: var(--admin-accent-2); } .dash-hero-title { margin: 0 0 0.35rem; font-family: var(--admin-font-display); font-size: 1.35rem; font-weight: 700; color: #e0e6ff; line-height: 1.25; letter-spacing: 0.06em; text-transform: uppercase; text-shadow: 0 0 20px rgba(0, 240, 255, 0.15); } .dash-hero-sub { margin: 0; font-size: 0.9rem; color: #94a3b8; max-width: 36rem; } .dash-stats { display: grid; grid-template-columns: repeat(1, 1fr); gap: 1rem; margin-bottom: 1.5rem; } @media (min-width: 576px) { .dash-stats { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1100px) { .dash-stats { grid-template-columns: repeat(4, 1fr); } } .dash-stat { position: relative; display: flex; align-items: flex-start; gap: 1rem; padding: 1.15rem 1.2rem; border-radius: 0.75rem; border: 1px solid var(--bs-border-color); background: var(--admin-surface); overflow: hidden; transition: transform 0.15s ease, border-color 0.2s, box-shadow 0.2s; } .dash-stat::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--dash-accent, var(--admin-accent)), transparent); opacity: 0.85; } .dash-stat:hover { transform: translateY(-2px); border-color: rgba(0, 240, 255, 0.35); box-shadow: 0 12px 28px rgba(0, 0, 0, 0.35), 0 0 20px rgba(0, 240, 255, 0.08); } .dash-stat-icon { flex-shrink: 0; width: 2.75rem; height: 2.75rem; border-radius: 0.65rem; display: flex; align-items: center; justify-content: center; font-size: 1.15rem; background: rgba(56, 189, 248, 0.12); color: var(--admin-accent); border: 1px solid rgba(56, 189, 248, 0.2); } .dash-stat--links { --dash-accent: #00f0ff; } .dash-stat--configs { --dash-accent: #b24dff; } .dash-stat--servers { --dash-accent: #00ff9d; } .dash-stat--panel { --dash-accent: #ffe23d; } .dash-stat--links .dash-stat-icon { background: rgba(0, 240, 255, 0.1); color: #00f0ff; border-color: rgba(0, 240, 255, 0.3); box-shadow: 0 0 12px rgba(0, 240, 255, 0.15); } .dash-stat--configs .dash-stat-icon { background: rgba(178, 77, 255, 0.1); color: #b24dff; border-color: rgba(178, 77, 255, 0.3); box-shadow: 0 0 12px rgba(178, 77, 255, 0.15); } .dash-stat--servers .dash-stat-icon { background: rgba(0, 255, 157, 0.1); color: #00ff9d; border-color: rgba(0, 255, 157, 0.3); box-shadow: 0 0 12px rgba(0, 255, 157, 0.15); } .dash-stat--panel .dash-stat-icon { background: rgba(255, 226, 61, 0.1); color: #ffe23d; border-color: rgba(255, 226, 61, 0.3); box-shadow: 0 0 12px rgba(255, 226, 61, 0.15); } .dash-stat--panel.is-ok { --dash-accent: #00ff9d; } .dash-stat--panel.is-ok .dash-stat-icon { background: rgba(0, 255, 157, 0.1); color: #00ff9d; border-color: rgba(0, 255, 157, 0.35); } .dash-stat--panel.is-fail { --dash-accent: #ff3860; } .dash-stat--panel.is-fail .dash-stat-icon { background: rgba(255, 56, 96, 0.1); color: #ff3860; border-color: rgba(255, 56, 96, 0.35); } .dash-stat-body { min-width: 0; flex: 1; } .dash-stat-value { display: block; font-family: var(--admin-font-display); font-size: 1.65rem; font-weight: 700; line-height: 1.15; color: #e0e6ff; letter-spacing: 0.04em; } .dash-stat-value .dash-stat-muted { font-size: 1rem; font-weight: 500; color: #555d80; } .dash-stat-value .dash-stat-ok { color: #00ff9d; text-shadow: 0 0 12px rgba(0, 255, 157, 0.4); } .dash-stat-value .dash-stat-fail { color: #ff3860; text-shadow: 0 0 12px rgba(255, 56, 96, 0.4); } .dash-stat-label { display: block; margin-top: 0.3rem; font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; } .dash-layout { display: grid; grid-template-columns: 1fr; gap: 1.25rem; } @media (min-width: 900px) { .dash-layout { grid-template-columns: 1.15fr 1fr; } } .dash-panel { background: var(--admin-surface); border: 1px solid var(--bs-border-color); border-radius: 0.75rem; padding: 1.2rem 1.25rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.18); } .dash-panel-head { display: flex; align-items: center; gap: 0.55rem; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--bs-border-color); } .dash-panel-head i { color: var(--admin-accent); font-size: 1rem; } .dash-panel-head h2 { margin: 0; font-size: 1.05rem; font-weight: 600; color: #f1f5f9; } .dash-actions { display: flex; flex-direction: column; gap: 0.55rem; } .dash-action { display: flex; align-items: center; gap: 0.85rem; padding: 0.85rem 1rem; border-radius: 0.6rem; text-decoration: none; border: 1px solid var(--bs-border-color); background: var(--admin-surface-2); transition: border-color 0.15s, background 0.15s, transform 0.12s; } .dash-action:hover { border-color: rgba(56, 189, 248, 0.4); background: rgba(56, 189, 248, 0.08); transform: translateX(3px); color: inherit; } .dash-action--primary { border-color: rgba(14, 165, 233, 0.45); background: linear-gradient(135deg, rgba(14, 165, 233, 0.2) 0%, rgba(56, 189, 248, 0.08) 100%); } .dash-action--primary:hover { border-color: rgba(56, 189, 248, 0.55); box-shadow: 0 0 24px rgba(56, 189, 248, 0.12); } .dash-action-icon { flex-shrink: 0; width: 2.25rem; height: 2.25rem; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; background: rgba(56, 189, 248, 0.15); color: var(--admin-accent); } .dash-action--primary .dash-action-icon { background: rgba(14, 165, 233, 0.35); color: #e0f2fe; } .dash-action-text strong { display: block; font-size: 0.92rem; font-weight: 600; color: #f1f5f9; } .dash-action-text span { display: block; font-size: 0.78rem; color: #94a3b8; margin-top: 0.1rem; } .dash-action > i.fa-chevron-right { margin-left: auto; font-size: 0.7rem; color: #64748b; } .dash-info-list { margin: 0; padding: 0; list-style: none; } .dash-info-list li { display: flex; align-items: flex-start; gap: 0.65rem; padding: 0.55rem 0; font-size: 0.88rem; line-height: 1.5; color: #cbd5e1; border-bottom: 1px solid rgba(42, 51, 82, 0.5); } .dash-info-list li:last-child { border-bottom: none; padding-bottom: 0; } .dash-info-list li i { color: var(--admin-accent); margin-top: 0.2rem; flex-shrink: 0; width: 1rem; text-align: center; } .dash-info-user { margin: 0 0 0.85rem; padding: 0.65rem 0.85rem; border-radius: 0.5rem; background: var(--admin-surface-2); border: 1px solid var(--bs-border-color); font-size: 0.88rem; color: #94a3b8; } .dash-info-user strong { color: #f1f5f9; } .dash-info-user code { color: #7dd3fc; background: rgba(56, 189, 248, 0.1); padding: 0.1rem 0.35rem; border-radius: 0.25rem; font-size: 0.82em; } /* ——— Share links (admin/share_links.php) ——— */ .admin-page-links { max-width: 1280px; } .admin-page-links .code-inline, .admin-page-settings .code-inline { background: rgba(56, 189, 248, 0.1); color: #7dd3fc; padding: 0.1rem 0.35rem; border-radius: 0.25rem; font-size: 0.82em; } .sl-panel { background: var(--admin-surface); border: 1px solid var(--bs-border-color); border-radius: 0.85rem; padding: 1.2rem 1.25rem; margin-bottom: 1.25rem; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2); color: #e2e8f0; } .sl-hero { display: flex; align-items: flex-start; gap: 0.85rem; margin-bottom: 1rem; padding: 1rem 1.15rem; border-radius: var(--admin-radius); border: 1px solid rgba(0, 240, 255, 0.28); background: linear-gradient(135deg, rgba(0, 240, 255, 0.1) 0%, rgba(13, 16, 37, 0.92) 55%, rgba(255, 45, 123, 0.04) 100%); box-shadow: var(--admin-shadow), inset 0 1px 0 rgba(0, 240, 255, 0.08); position: relative; overflow: hidden; } .sl-hero::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--admin-accent), var(--admin-accent-3), var(--admin-accent-2)); } .sl-hero > i, .sl-hero > .fa-solid { flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; margin-top: 0.1rem; font-size: 1.05rem; color: var(--admin-accent); background: rgba(0, 240, 255, 0.1); border: 1px solid rgba(0, 240, 255, 0.4); border-radius: var(--admin-radius); box-shadow: 0 0 16px var(--admin-accent-glow); } .sl-hero__title { margin: 0 0 0.4rem; font-family: var(--admin-font-display); font-size: 1.15rem; font-weight: 700; color: #e0e6ff; letter-spacing: 0.06em; text-transform: uppercase; } .sl-hero__sub { margin: 0; font-size: 0.92rem; line-height: 1.55; color: #cbd5e1; } .sl-hero--compact { padding: 0.9rem 1rem; } .sl-hero--compact > i, .sl-hero--compact > .fa-solid { width: 2.15rem; height: 2.15rem; font-size: 0.95rem; } .sl-hero--compact .sl-hero__title { font-size: 1.22rem; } .sl-hero--compact .sl-hero__sub { font-size: 0.88rem; } .sl-panel__head { display: flex; align-items: center; gap: 0.55rem; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--bs-border-color); } .sl-panel__head i { color: var(--admin-accent); } .sl-panel__head h2 { margin: 0; font-size: 1.08rem; font-weight: 600; color: #f1f5f9; } .sl-count-badge { margin-left: 0; font-size: 0.72rem; font-weight: 700; padding: 0.2rem 0.55rem; border-radius: 999px; background: rgba(56, 189, 248, 0.15); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.3); } .sl-panel__head-link { margin-left: auto; display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; font-weight: 500; color: var(--admin-accent); text-decoration: none; white-space: nowrap; } .sl-panel__head-link:hover { color: #e0f2fe; text-decoration: underline; } .sl-hint { margin: 0 0 0.75rem; font-size: 0.85rem; color: #94a3b8; line-height: 1.45; } .sl-hint a { color: #7dd3fc; font-weight: 500; } .sl-hint--inline { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; } .sl-hint--inline strong { color: #e2e8f0; } .sl-hint--warn { padding: 0.5rem 0.65rem; border-radius: 0.45rem; background: rgba(245, 158, 11, 0.08); border: 1px solid rgba(245, 158, 11, 0.25); color: #fcd34d; } .sl-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; margin-bottom: 1rem; } @media (max-width: 767.98px) { .sl-form-grid { grid-template-columns: 1fr; } } .sl-field__label { display: block; font-size: 0.82rem; font-weight: 600; color: #e2e8f0; margin-bottom: 0.15rem; } .sl-field__hint { display: block; font-size: 0.72rem; color: #64748b; margin-bottom: 0.45rem; } .sl-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-bottom: 0.45rem; } .sl-chip { border: 1px solid var(--bs-border-color); background: var(--admin-surface-2); color: #cbd5e1; font-size: 0.72rem; font-weight: 500; padding: 0.28rem 0.55rem; border-radius: 999px; cursor: pointer; font-family: inherit; transition: border-color 0.15s, background 0.15s, color 0.15s; } .sl-chip:hover { border-color: rgba(56, 189, 248, 0.4); color: #e2e8f0; } .sl-chip.active { border-color: rgba(56, 189, 248, 0.55); background: rgba(56, 189, 248, 0.15); color: #7dd3fc; box-shadow: 0 0 12px rgba(56, 189, 248, 0.12); } .sl-input-row { display: flex; align-items: center; gap: 0.45rem; } .sl-input, .admin-page-links .sl-timing-form .sl-input, .admin-page-settings .sl-input { width: 100%; box-sizing: border-box; padding: 0.5rem 0.65rem; font-size: 0.88rem; color: #f1f5f9 !important; -webkit-text-fill-color: #f1f5f9; background: #0f172a !important; border: 1px solid #475569; border-radius: 0.45rem; } .sl-input--num { max-width: 5.5rem; } .sl-input:focus { outline: none; border-color: var(--admin-accent); box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.18); } .sl-input-suffix { font-size: 0.8rem; color: #94a3b8; } .sl-form-footer { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1rem; padding-top: 0.25rem; border-top: 1px solid rgba(42, 51, 82, 0.6); } .sl-field--sub { flex: 1; min-width: 12rem; } .sl-btn-generate { display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; padding: 0.65rem 1.25rem; font-size: 0.9rem; font-weight: 600; color: #fff; background: linear-gradient(135deg, #0ea5e9, #0284c7); border: none; border-radius: 0.5rem; cursor: pointer; box-shadow: 0 4px 20px rgba(14, 165, 233, 0.35); transition: filter 0.15s, transform 0.12s; white-space: nowrap; } .sl-btn-generate:hover { filter: brightness(1.08); } .sl-btn-generate:active { transform: scale(0.98); } .sl-url-result { margin-top: 1rem; padding: 0.85rem 1rem; border-radius: 0.6rem; background: rgba(16, 185, 129, 0.08); border: 1px solid rgba(52, 211, 153, 0.35); } .sl-url-result__label { font-size: 0.78rem; font-weight: 600; color: #6ee7b7; margin-bottom: 0.5rem; } .sl-url-result__row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; } .sl-url-result__text { flex: 1; min-width: 0; font-size: 0.8rem; color: #e0f2fe; word-break: break-all; background: rgba(15, 23, 42, 0.6); padding: 0.45rem 0.55rem; border-radius: 0.35rem; } .sl-btn-copy { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.4rem 0.75rem; font-size: 0.8rem; font-weight: 500; color: #7dd3fc; background: rgba(56, 189, 248, 0.1); border: 1px solid rgba(56, 189, 248, 0.35); border-radius: 0.4rem; cursor: pointer; font-family: inherit; } .sl-btn-copy:hover { background: rgba(56, 189, 248, 0.18); } .sl-search-block { margin-bottom: 1rem; padding: 0.85rem 1rem; background: rgba(15, 23, 42, 0.35); border: 1px solid var(--bs-border-color); border-radius: 0.6rem; } .sl-search { width: 100%; margin: 0; } .sl-search__bar { display: flex; align-items: stretch; width: 100%; min-height: 2.5rem; background: var(--admin-surface-2); border: 1px solid var(--bs-border-color); border-radius: 0.5rem; overflow: hidden; transition: border-color 0.15s, box-shadow 0.15s; } .sl-search__bar:focus-within { border-color: rgba(56, 189, 248, 0.55); box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.12); } .sl-search__icon { flex-shrink: 0; display: flex; align-items: center; padding-left: 0.85rem; font-size: 0.82rem; color: #64748b; pointer-events: none; } .sl-search__input { flex: 1 1 auto; min-width: 0; width: 100%; padding: 0.55rem 0.4rem; font-size: 0.85rem; color: #e2e8f0; background: transparent; border: none; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: 0.02em; } .sl-search__input:focus { outline: none; } .sl-search__input::placeholder { color: #64748b; font-family: inherit; letter-spacing: normal; } .sl-search__clear { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 2.25rem; padding: 0; border: none; background: transparent; color: #94a3b8; cursor: pointer; } .sl-search__clear:hover { color: #e2e8f0; background: rgba(148, 163, 184, 0.12); } .sl-search__btn { flex-shrink: 0; padding: 0 1.1rem; font-size: 0.82rem; font-weight: 600; color: #e0f2fe; background: rgba(56, 189, 248, 0.22); border: none; border-left: 1px solid rgba(56, 189, 248, 0.28); cursor: pointer; font-family: inherit; white-space: nowrap; transition: background 0.15s; } .sl-search__btn:hover { background: rgba(56, 189, 248, 0.32); } .sl-search__hint { margin: 0.55rem 0 0; font-size: 0.78rem; color: #94a3b8; line-height: 1.45; } .sl-search__hint a { color: var(--admin-accent); text-decoration: none; } .sl-search__hint a:hover { text-decoration: underline; } .sl-search__empty { margin: 0.5rem 0 0; padding: 0.45rem 0.65rem; font-size: 0.82rem; color: #fbbf24; background: rgba(251, 191, 36, 0.08); border-radius: 0.4rem; border: 1px solid rgba(251, 191, 36, 0.2); } .link-row--search-hidden { display: none !important; } .sl-controls-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem 1rem; margin-bottom: 1rem; padding: 0.65rem 0.85rem; background: rgba(15, 23, 42, 0.28); border: 1px solid var(--bs-border-color); border-radius: 0.55rem; } .sl-toolbar { display: flex; flex-wrap: wrap; gap: 0.65rem 1.25rem; margin-bottom: 0; } .sl-toggle { display: inline-flex; align-items: center; gap: 0.45rem; margin: 0; font-size: 0.82rem; color: #94a3b8; cursor: pointer; user-select: none; } .sl-toggle input { accent-color: var(--admin-accent); } .sl-cleanup { display: flex; flex-wrap: wrap; align-items: center; gap: 0.65rem 0.85rem; margin-bottom: 0; margin-left: auto; padding: 0.45rem 0.65rem; border-radius: 0.45rem; background: rgba(239, 68, 68, 0.07); border: 1px solid rgba(248, 113, 113, 0.22); } .sl-btn-cleanup { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.75rem; font-size: 0.82rem; font-weight: 500; color: #fca5a5; background: rgba(239, 68, 68, 0.12); border: 1px solid rgba(248, 113, 113, 0.35); border-radius: 0.4rem; cursor: pointer; font-family: inherit; } .sl-btn-cleanup:hover:not(:disabled) { background: rgba(239, 68, 68, 0.2); } .sl-btn-cleanup:disabled { opacity: 0.45; cursor: not-allowed; } .sl-btn-cleanup--sm { padding: 0.28rem 0.55rem; font-size: 0.74rem; } .sl-cleanup__meta { font-size: 0.82rem; color: #94a3b8; } .sl-cleanup__meta strong { color: #f1f5f9; } .sl-empty { text-align: center; padding: 2.5rem 1rem; color: #64748b; } .sl-empty i { font-size: 2rem; color: #475569; margin-bottom: 0.75rem; } .sl-empty p { margin: 0; font-size: 0.9rem; } .sl-table-wrap { overflow-x: auto; border-radius: 0.6rem; border: 1px solid var(--bs-border-color); } .sl-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.4rem; margin-top: 1rem; padding-top: 0.85rem; } .sl-pager__pages { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.35rem; } .sl-pager__btn { display: inline-flex; align-items: center; gap: 0.35rem; min-width: 2.25rem; padding: 0.42rem 0.72rem; border: 1px solid var(--bs-border-color); border-radius: 0.5rem; background: rgba(15, 23, 42, 0.45); color: #94a3b8; font-size: 0.84rem; font-weight: 600; line-height: 1; text-decoration: none; cursor: pointer; transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease; } .sl-pager__page { justify-content: center; } .sl-pager__btn:hover:not(.is-disabled):not(.is-active) { color: #e2e8f0; border-color: var(--admin-accent); background: rgba(56, 189, 248, 0.08); } .sl-pager__page.is-active { color: #0f172a; background: var(--admin-accent); border-color: var(--admin-accent); pointer-events: none; } .sl-pager__btn.is-disabled { opacity: 0.45; cursor: default; } .sl-pager__dots { padding: 0 0.15rem; color: #64748b; font-size: 0.84rem; user-select: none; } .sl-table { width: 100%; margin: 0; font-size: 0.84rem; border-collapse: collapse; } .sl-table thead th { background: #1a2332; color: #e2e8f0 !important; font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.55rem 0.65rem; border-bottom: 1px solid var(--bs-border-color); white-space: nowrap; } .sl-table tbody td { padding: 0.55rem 0.65rem; color: #e2e8f0 !important; border-bottom: 1px solid rgba(42, 51, 82, 0.55); vertical-align: middle; } .sl-table tbody tr:hover td { background: rgba(56, 189, 248, 0.04); } .sl-tr--configs td { background: rgba(15, 23, 42, 0.45); padding: 0.4rem 0.65rem 0.55rem; } .sl-th-id, .sl-td-id { width: 3rem; } .sl-id { font-weight: 700; color: #7dd3fc; } .sl-muted { color: #64748b; } .sl-td-nowrap { white-space: nowrap; font-size: 0.8rem; } .sl-uses { font-weight: 600; color: #7dd3fc; } .sl-td-url { max-width: 220px; } .sl-url-cell { display: flex; align-items: center; gap: 0.35rem; } .sl-url-link { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.78rem; color: #7dd3fc !important; text-decoration: none; } .sl-url-link:hover { text-decoration: underline; color: #e0f2fe !important; } .sl-icon-btn { flex-shrink: 0; width: 1.75rem; height: 1.75rem; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--bs-border-color); background: var(--admin-surface-2); color: #94a3b8; border-radius: 0.35rem; cursor: pointer; font-size: 0.8rem; } .sl-icon-btn:hover { border-color: rgba(56, 189, 248, 0.4); color: #7dd3fc; } .sl-td-actions { position: static; width: 2.5rem; text-align: center; } .sl-timing-details { position: static; } .sl-timing-summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; width: 1.75rem; height: 1.75rem; border-radius: 0.35rem; border: 1px solid var(--bs-border-color); background: var(--admin-surface-2); color: #7dd3fc; font-size: 0.75rem; transition: border-color 0.15s, background 0.15s, color 0.15s; } .sl-timing-summary:hover { border-color: rgba(56, 189, 248, 0.45); background: rgba(56, 189, 248, 0.08); color: #e0f2fe; } .sl-td-traffic { max-width: 10rem; font-size: 0.76rem; color: #94a3b8; } .sl-traffic-label { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .sl-creation__traffic { color: #7dd3fc; font-size: 0.76rem; white-space: nowrap; } .sl-timing-summary::-webkit-details-marker { display: none; } .sl-timing-backdrop { display: none; } .sl-timing-details[open] .sl-timing-backdrop { display: block; position: fixed; inset: 0; z-index: 1040; background: rgba(2, 6, 23, 0.62); backdrop-filter: blur(2px); cursor: pointer; } body.sl-editor-open { overflow: hidden; } .sl-timing-form { position: fixed; top: 50%; left: 50%; right: auto; transform: translate(-50%, -50%); z-index: 1050; display: flex; flex-direction: column; width: min(520px, calc(100vw - 1.5rem)); max-height: min(88vh, 720px); margin: 0; padding: 0; background: #1e293b; border: 1px solid rgba(56, 189, 248, 0.22); border-radius: 0.65rem; box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55); overflow: hidden; } .sl-timing-details:not([open]) .sl-timing-form { display: none; } .sl-timing-form__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; flex-shrink: 0; padding: 0.9rem 1rem 0.75rem; border-bottom: 1px solid rgba(42, 51, 82, 0.7); background: #1a2433; } .sl-timing-form__head strong { display: block; font-size: 0.92rem; color: #f1f5f9; } .sl-timing-form__sub { display: block; margin-top: 0.15rem; font-size: 0.75rem; color: #94a3b8; } .sl-timing-form__close { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; padding: 0; font-size: 0.95rem; color: #94a3b8; background: rgba(15, 23, 42, 0.5); border: 1px solid rgba(100, 116, 139, 0.35); border-radius: 0.4rem; cursor: pointer; transition: color 0.12s, border-color 0.12s, background 0.12s; } .sl-timing-form__close:hover { color: #f1f5f9; border-color: rgba(56, 189, 248, 0.4); background: rgba(56, 189, 248, 0.08); } .sl-timing-form__body { flex: 1 1 auto; overflow-x: hidden; overflow-y: auto; padding: 0.75rem 1rem 0.5rem; scrollbar-width: thin; scrollbar-color: #475569 transparent; } .sl-timing-form__foot { flex-shrink: 0; padding: 0.65rem 1rem 1rem; border-top: 1px solid rgba(42, 51, 82, 0.7); background: #1a2433; } .sl-form-module { margin-bottom: 0.65rem; border: 1px solid rgba(51, 65, 85, 0.65); border-radius: 0.5rem; background: rgba(15, 23, 42, 0.35); overflow: hidden; } .sl-form-module:last-child { margin-bottom: 0; } .sl-form-module__head { display: flex; align-items: center; gap: 0.45rem; padding: 0.45rem 0.65rem; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #7dd3fc; background: rgba(30, 41, 59, 0.55); border-bottom: 1px solid rgba(51, 65, 85, 0.5); } .sl-form-module__head i { opacity: 0.85; font-size: 0.78rem; } .sl-form-module__body { padding: 0.55rem 0.65rem 0.65rem; } .sl-form-module__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem 0.65rem; margin-top: 0.5rem; } .sl-form-module__grid .sl-timing-form__label { margin-top: 0; } .sl-timing-form__label { display: block; margin: 0.5rem 0 0.25rem; font-size: 0.75rem; font-weight: 500; color: #94a3b8; } .sl-form-module__body > .sl-timing-form__label:first-child { margin-top: 0; } .sl-timing-form__section { margin: 0.65rem 0 0.15rem; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: #7dd3fc; } .sl-timing-form__hint { margin: 0.25rem 0 0; font-size: 0.72rem; line-height: 1.4; color: #94a3b8; } .sl-timing-form__hint--block { margin: 0.5rem 1rem; } .sl-timing-form__hint strong { color: #e2e8f0; } /* Toggle switch */ .sl-switch { position: relative; display: inline-flex; flex-shrink: 0; align-items: center; } .admin-content .sl-timing-form label.sl-switch-row { display: flex !important; flex-direction: row; align-items: center; justify-content: space-between; gap: 0.65rem; margin: 0; font-weight: inherit; font-size: inherit; text-align: left; } .sl-switch input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .sl-switch__track { position: relative; display: block; width: 2.35rem; height: 1.25rem; border-radius: 999px; background: rgba(51, 65, 85, 0.9); border: 1px solid rgba(100, 116, 139, 0.55); transition: background 0.18s, border-color 0.18s, box-shadow 0.18s; cursor: pointer; } .sl-switch__track::after { content: ''; position: absolute; top: 50%; left: 0.14rem; width: 0.9rem; height: 0.9rem; border-radius: 50%; background: #e2e8f0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35); transform: translateY(-50%); transition: left 0.18s, background 0.18s; } .sl-switch input:checked + .sl-switch__track { background: #0ea5e9; border-color: #38bdf8; box-shadow: 0 0 10px rgba(14, 165, 233, 0.35); } .sl-switch input:checked + .sl-switch__track::after { left: calc(100% - 1.04rem); background: #fff; } .sl-switch input:focus-visible + .sl-switch__track { outline: 2px solid rgba(56, 189, 248, 0.55); outline-offset: 2px; } .sl-switch input:disabled + .sl-switch__track { opacity: 0.45; cursor: not-allowed; } .sl-switch-row { width: 100%; box-sizing: border-box; padding: 0.42rem 0.5rem; border-radius: 0.35rem; cursor: pointer; transition: background 0.12s, border-color 0.12s; } .sl-switch-row:hover { background: rgba(56, 189, 248, 0.06); } .sl-switch-row--inline { margin-top: 0.55rem; padding: 0.45rem 0.5rem; background: rgba(15, 23, 42, 0.4); border: 1px solid rgba(51, 65, 85, 0.5); } .sl-switch-row--master { margin-bottom: 0.55rem; padding: 0.5rem 0.6rem; background: rgba(56, 189, 248, 0.06); border: 1px solid rgba(56, 189, 248, 0.2); border-radius: 0.4rem; } .sl-switch-row--master .sl-switch-row__label { display: inline-flex; align-items: center; gap: 0.45rem; font-size: 0.8rem; font-weight: 600; color: #e2e8f0; } .sl-switch-row--master .sl-switch-row__label i { color: #7dd3fc; font-size: 0.85rem; } .sl-switch-row__label { flex: 1 1 auto; min-width: 0; font-size: 0.78rem; line-height: 1.3; color: #e2e8f0; } .sl-td-servers { max-width: 8.5rem; } .sl-servers-badge { display: inline-block; max-width: 100%; padding: 0.18rem 0.45rem; font-size: 0.72rem; font-weight: 500; line-height: 1.35; color: #cbd5e1; background: rgba(51, 65, 85, 0.55); border: 1px solid rgba(100, 116, 139, 0.35); border-radius: 999px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; } .sl-servers-badge--all { color: #7dd3fc; background: rgba(56, 189, 248, 0.1); border-color: rgba(56, 189, 248, 0.28); } .sl-server-picks-wrap { margin-top: 0; } .sl-server-picks-wrap.is-disabled { opacity: 0.45; pointer-events: none; } .sl-server-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.5rem; margin-bottom: 0.45rem; } .sl-server-picks-search { flex: 1 1 8rem; min-width: 0; margin: 0; padding: 0.38rem 0.55rem; font-size: 0.76rem; } .sl-server-toolbar__actions { display: inline-flex; align-items: center; gap: 0.35rem; flex-shrink: 0; } .sl-server-toolbar__btn { padding: 0.28rem 0.55rem; font-size: 0.7rem; font-weight: 600; line-height: 1.2; color: #cbd5e1; background: rgba(30, 41, 59, 0.8); border: 1px solid rgba(100, 116, 139, 0.45); border-radius: 0.3rem; cursor: pointer; transition: color 0.12s, border-color 0.12s, background 0.12s; } .sl-server-toolbar__btn:hover:not(:disabled) { color: #7dd3fc; border-color: rgba(56, 189, 248, 0.45); background: rgba(56, 189, 248, 0.08); } .sl-server-toolbar__btn:disabled { opacity: 0.45; cursor: not-allowed; } .sl-server-toolbar__count { min-width: 2.75rem; padding: 0.2rem 0.35rem; font-size: 0.68rem; font-weight: 600; font-variant-numeric: tabular-nums; color: #7dd3fc; text-align: center; background: rgba(56, 189, 248, 0.08); border: 1px solid rgba(56, 189, 248, 0.18); border-radius: 0.3rem; } .sl-server-picks { display: flex; flex-direction: column; gap: 0; max-height: 11.5rem; overflow-y: auto; padding: 0.2rem; border-radius: 0.4rem; background: rgba(15, 23, 42, 0.55); border: 1px solid var(--bs-border-color); scrollbar-width: thin; scrollbar-color: #475569 transparent; } .sl-server-picks::-webkit-scrollbar { width: 6px; } .sl-server-picks::-webkit-scrollbar-track { background: transparent; } .sl-server-picks::-webkit-scrollbar-thumb { background: #475569; border-radius: 999px; } .sl-server-picks::-webkit-scrollbar-thumb:hover { background: #64748b; } .sl-server-pick { margin: 0; padding: 0.32rem 0.45rem; border-bottom: 1px solid rgba(51, 65, 85, 0.45); } .sl-server-pick:last-child { border-bottom: none; } .sl-server-pick:hover { background: rgba(56, 189, 248, 0.05); } .sl-server-pick:has(.js-server-pick:checked) { background: rgba(56, 189, 248, 0.08); } .sl-server-pick[hidden] { display: none; } .sl-server-pick__text { display: flex; align-items: baseline; gap: 0.4rem; min-width: 0; } .sl-server-pick__id { flex-shrink: 0; font-size: 0.68rem; font-weight: 700; color: #7dd3fc; letter-spacing: 0.02em; } .sl-server-pick__name { flex: 1 1 auto; min-width: 0; font-size: 0.74rem; line-height: 1.25; color: #e2e8f0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Protocol editor (admin/server_labels.php) */ .sl-proto-wrap { margin-top: 0.75rem; } .sl-proto-picker__lead { margin: 0 0 0.65rem; font-size: 0.82rem; color: #94a3b8; } .sl-proto-toolbar { margin-bottom: 0.55rem; } .sl-proto-toolbar__count { flex-shrink: 0; font-size: 0.72rem; font-weight: 600; color: #64748b; padding: 0.28rem 0.5rem; border-radius: 0.3rem; background: rgba(30, 41, 59, 0.6); border: 1px solid rgba(51, 65, 85, 0.5); } .sl-proto-servers { display: flex; flex-direction: column; gap: 0.3rem; max-height: 14rem; overflow: auto; padding: 0.35rem; margin-bottom: 0.55rem; border: 1px solid rgba(51, 65, 85, 0.55); border-radius: 0.45rem; background: rgba(15, 23, 42, 0.35); } .sl-proto-server { display: flex; align-items: center; gap: 0.55rem; width: 100%; min-height: 2.65rem; padding: 0.45rem 0.6rem; border: 1px solid rgba(51, 65, 85, 0.65); border-radius: 0.4rem; background: rgba(30, 41, 59, 0.55); color: #e2e8f0; text-align: left; cursor: pointer; font-family: inherit; transition: border-color 0.15s, background 0.15s, box-shadow 0.15s; } .sl-proto-server:hover { border-color: rgba(56, 189, 248, 0.35); background: rgba(56, 189, 248, 0.06); } .sl-proto-server.is-active { border-color: rgba(56, 189, 248, 0.55); background: rgba(56, 189, 248, 0.1); box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.15); } .sl-proto-server.is-server-off { opacity: 0.72; } .sl-proto-server[hidden] { display: none !important; } .sl-proto-server__id { flex-shrink: 0; width: 2rem; font-size: 0.72rem; font-weight: 700; color: #7dd3fc; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } .sl-proto-server__body { flex: 1 1 auto; min-width: 0; } .sl-proto-server__name { display: block; font-size: 0.8rem; font-weight: 600; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .sl-proto-server__badges { display: flex; flex-wrap: wrap; align-items: center; gap: 0.2rem; margin-top: 0.15rem; } .sl-proto-server__badges .badge { font-size: 0.6rem; padding: 0.1rem 0.32rem; } .sl-proto-server__default { font-size: 0.65rem; color: #64748b; } .sl-proto-server__off { flex-shrink: 0; font-size: 0.6rem; } .sl-proto-server__chev { flex-shrink: 0; font-size: 0.72rem; color: #64748b; opacity: 0.85; } .sl-proto-manual { display: flex; flex-wrap: wrap; align-items: center; gap: 0.45rem; padding-top: 0.15rem; } .sl-proto-editor { display: flex; flex-direction: column; gap: 0.75rem; max-width: 32rem; } .sl-proto-selected { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.65rem; padding: 0.75rem 0.85rem; border: 1px solid rgba(56, 189, 248, 0.4); border-radius: 0.5rem; background: linear-gradient(135deg, rgba(56, 189, 248, 0.1), rgba(15, 23, 42, 0.55)); box-shadow: 0 0 18px rgba(56, 189, 248, 0.08); } .sl-proto-selected__main { display: flex; align-items: center; gap: 0.65rem; min-width: 0; flex: 1 1 auto; } .sl-proto-selected__id { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; min-width: 2.4rem; padding: 0.35rem 0.45rem; font-size: 0.78rem; font-weight: 700; color: #7dd3fc; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; border-radius: 0.35rem; background: rgba(56, 189, 248, 0.12); border: 1px solid rgba(56, 189, 248, 0.28); } .sl-proto-selected__info { min-width: 0; } .sl-proto-selected__info strong { display: block; font-size: 0.92rem; color: #f1f5f9; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .sl-proto-selected__speed { display: block; margin-top: 0.2rem; font-size: 0.76rem; font-weight: 600; color: #fbbf24; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } .sl-proto-selected__speed:empty { display: none; } .sl-proto-selected__badges { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem; margin-top: 0.25rem; } .sl-proto-selected__badges .badge { font-size: 0.62rem; padding: 0.12rem 0.35rem; } .sl-proto-change-btn { flex-shrink: 0; } .sl-proto-panel { padding: 0.9rem 1rem; border: 1px solid rgba(56, 189, 248, 0.22); border-radius: 0.5rem; background: rgba(15, 23, 42, 0.55); } .sl-proto-panel--speed { border-color: rgba(251, 191, 36, 0.28); background: rgba(251, 191, 36, 0.04); } .sl-proto-panel--speed .sl-proto-panel__kicker { color: #fbbf24; } .sl-proto-speed-form { display: flex; flex-direction: column; gap: 0.55rem; } .sl-proto-speed-field { display: flex; flex-direction: column; gap: 0.3rem; margin: 0; } .sl-proto-speed-field__label { font-size: 0.72rem; font-weight: 600; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.05em; } .sl-proto-speed-form__hint { margin: 0; } .sl-proto-speed-badge i { margin-right: 0.15rem; } .sl-proto-panel__head { margin-bottom: 0.65rem; padding-bottom: 0.55rem; border-bottom: 1px solid rgba(51, 65, 85, 0.55); } .sl-proto-panel__kicker { display: block; font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.07em; color: #7dd3fc; } .sl-proto-form { display: flex; flex-direction: column; gap: 0.4rem; } .admin-content .sl-proto-form label.sl-proto-toggle-row { display: flex !important; flex-direction: row; align-items: center; justify-content: space-between; gap: 0.65rem; margin: 0; padding: 0.55rem 0.65rem; border-radius: 0.4rem; border: 1px solid rgba(51, 65, 85, 0.45); background: rgba(30, 41, 59, 0.4); cursor: pointer; } .sl-proto-toggle-row:hover { border-color: rgba(56, 189, 248, 0.28); background: rgba(56, 189, 248, 0.06); } .sl-proto-toggle-row:has(.js-proto-toggle:checked) { border-color: rgba(56, 189, 248, 0.35); background: rgba(56, 189, 248, 0.08); } .sl-proto-toggle-row .sl-switch-row__label { display: inline-flex; align-items: center; gap: 0.45rem; font-size: 0.84rem; font-weight: 600; } .sl-proto-toggle-row .sl-switch-row__label i { color: #7dd3fc; width: 1rem; text-align: center; } .sl-proto-form__hint { margin: 0.4rem 0 0; } .sl-proto-reset-form { margin-top: 0.75rem; padding-top: 0.65rem; border-top: 1px solid rgba(51, 65, 85, 0.45); } .sl-proto-wrap.is-editing .sl-proto-picker { display: none; } .sl-check--all-servers { margin-top: 0.25rem; } .sl-check { display: flex; align-items: flex-start; gap: 0.4rem; margin-top: 0.5rem; font-size: 0.75rem; color: #cbd5e1; cursor: pointer; } .sl-btn-save-timing { width: 100%; padding: 0.55rem; font-size: 0.82rem; font-weight: 600; color: #fff; background: #0ea5e9; border: none; border-radius: 0.4rem; cursor: pointer; box-shadow: 0 4px 14px rgba(14, 165, 233, 0.25); } .sl-btn-save-timing:hover { background: #38bdf8; } @media (max-width: 720px) { .sl-controls-bar { flex-direction: column; align-items: stretch; } .sl-cleanup { margin-left: 0; justify-content: space-between; } .sl-timing-form { width: calc(100vw - 1rem); max-height: 90vh; } .sl-form-module__grid { grid-template-columns: 1fr; } } .sl-configs-details summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.82rem; font-weight: 500; color: var(--admin-accent); padding: 0.2rem 0; } .sl-configs-details summary::-webkit-details-marker { display: none; } .sl-configs-details[open] summary > .fa-chevron-right { transform: rotate(90deg); } .sl-configs-details summary > .fa-chevron-right { font-size: 0.65rem; transition: transform 0.15s; } .sl-configs-body { padding-top: 0.5rem; } .sl-configs-section { font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: #94a3b8; margin: 0 0 0.35rem; } .sl-configs-section--deleted { color: #f87171; margin-top: 0.65rem; } .sl-creation { padding: 0.55rem 0.65rem; margin-bottom: 0.35rem; border-radius: 0.45rem; background: var(--admin-surface-2); border: 1px solid var(--bs-border-color); } .sl-creation--deleted { border-style: dashed; border-color: rgba(248, 113, 113, 0.3); background: rgba(239, 68, 68, 0.05); } .sl-creation__head { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; margin-bottom: 0.25rem; } .sl-creation__server { font-size: 0.82rem; font-weight: 600; color: #f1f5f9; } .sl-creation__date { font-size: 0.72rem; color: #64748b; } .sl-creation__meta { font-size: 0.75rem; color: #94a3b8; } .sl-creation__meta .mono { color: #cbd5e1; } .sl-creation__cid { margin-left: 0.35rem; font-family: ui-monospace, monospace; font-size: 0.72rem; color: #64748b; } .sl-creation__details summary { font-size: 0.75rem; color: var(--admin-accent); cursor: pointer; } .sl-creation__delete { margin-top: 0; } .sl-creation__actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 0.5rem 0.75rem; margin-top: 0.5rem; } .sl-creation__migrate summary { font-size: 0.78rem; color: #fbbf24; cursor: pointer; list-style: none; } .sl-creation__migrate summary::-webkit-details-marker { display: none; } .sl-migrate-form { margin-top: 0.55rem; padding: 0.65rem; border-radius: 0.45rem; background: rgba(15, 23, 42, 0.45); border: 1px solid rgba(251, 191, 36, 0.25); max-width: 320px; } .sl-migrate-form__label { display: block; margin: 0.35rem 0 0.2rem; font-size: 0.72rem; color: #94a3b8; } .sl-migrate-form__select { width: 100%; } .sl-migrate-protos { display: flex; flex-wrap: wrap; gap: 0.45rem 0.75rem; margin: 0.35rem 0 0.55rem; } .sl-migrate-proto { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.78rem; color: #cbd5e1; cursor: pointer; } .sl-btn-migrate { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.35rem 0.65rem; font-size: 0.78rem; font-weight: 600; color: #fef3c7; background: rgba(251, 191, 36, 0.15); border: 1px solid rgba(251, 191, 36, 0.35); border-radius: 0.35rem; cursor: pointer; font-family: inherit; } .sl-btn-migrate:hover { background: rgba(251, 191, 36, 0.25); } .sl-creation__link { font-size: 0.75rem; color: var(--admin-accent); text-decoration: none; } .sl-creation__link:hover { text-decoration: underline; } .sl-server-group { margin-bottom: 0.75rem; } .sl-server-group__head { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.65rem; margin-bottom: 0.4rem; padding: 0.35rem 0.5rem; border-radius: 0.35rem; background: rgba(56, 189, 248, 0.08); border: 1px solid rgba(56, 189, 248, 0.2); font-size: 0.82rem; color: #e2e8f0; } .sl-server-group__head i { color: #7dd3fc; } .sl-server-group__count { margin-left: auto; font-size: 0.72rem; color: #94a3b8; } .admin-page-configs .sl-stats-row { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; margin-bottom: 1rem; } .sl-stat-pill { display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.45rem 0.75rem; font-size: 0.82rem; font-weight: 500; color: #e2e8f0; background: rgba(30, 41, 59, 0.95); border: 1px solid rgba(148, 163, 184, 0.35); border-radius: 999px; } .sl-stat-pill > i { color: #7dd3fc; font-size: 0.78rem; } .sl-stat-pill strong { color: #f8fafc; font-weight: 700; } .sl-stat-pill--link { color: #7dd3fc; text-decoration: none; border-color: rgba(56, 189, 248, 0.35); background: rgba(56, 189, 248, 0.1); } .sl-stat-pill--link:hover { color: #e0f2fe; background: rgba(56, 189, 248, 0.18); border-color: rgba(56, 189, 248, 0.5); } .admin-page-configs .sl-panel { max-width: none; } .admin-page-configs .sl-hint { color: #cbd5e1; } .admin-page-configs .sl-hero--compact { margin-bottom: 0.85rem; } .sl-configs-picker { display: flex; flex-direction: column; gap: 0.75rem; } .sl-configs-picker--wide { flex-direction: row; align-items: stretch; gap: 1.15rem; min-height: 420px; } .sl-configs-picker__sidebar { flex: 0 0 min(320px, 34%); display: flex; flex-direction: column; min-width: 260px; max-height: calc(100vh - 220px); border: 1px solid rgba(56, 189, 248, 0.28); border-radius: 0.75rem; background: linear-gradient(180deg, rgba(30, 41, 59, 0.95) 0%, rgba(17, 24, 39, 0.92) 100%); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06); overflow: hidden; } .sl-configs-picker__sidebar-head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.85rem 1rem 0.65rem; border-bottom: 1px solid var(--bs-border-color); } .sl-configs-picker__sidebar-title { margin: 0; font-size: 0.82rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: #e2e8f0; } .sl-configs-picker__sidebar-title .fa-server { margin-right: 0.35rem; color: #7dd3fc; } .sl-configs-picker__sidebar-total { display: inline-flex; align-items: center; justify-content: center; min-width: 1.75rem; padding: 0.15rem 0.45rem; font-size: 0.72rem; font-weight: 700; color: #e0f2fe; background: rgba(56, 189, 248, 0.18); border: 1px solid rgba(56, 189, 248, 0.28); border-radius: 999px; } .sl-configs-picker__search { padding: 0.65rem 0.85rem 0.45rem; border-bottom: 1px solid var(--bs-border-color); } .sl-configs-picker__search-bar { min-height: 2.35rem; background: rgba(15, 23, 42, 0.65); border-color: rgba(148, 163, 184, 0.4); } .sl-configs-picker__search-bar .sl-search__icon { color: #94a3b8; } .sl-configs-picker__search-bar .sl-search__input { font-family: inherit; letter-spacing: normal; color: #f1f5f9; } .sl-configs-picker__search-bar .sl-search__input::placeholder { color: #94a3b8; } .sl-configs-picker__search-meta { margin: 0.45rem 0 0; font-size: 0.75rem; color: #94a3b8; } .sl-configs-picker__search-empty { margin: 0.45rem 0 0; padding: 0.45rem 0.55rem; font-size: 0.78rem; color: #fbbf24; background: rgba(251, 191, 36, 0.08); border: 1px solid rgba(251, 191, 36, 0.18); border-radius: 0.4rem; } .sl-configs-picker__search-empty[hidden] { display: none !important; } .sl-configs-picker__nav { display: flex; flex-wrap: wrap; gap: 0.4rem; } .sl-configs-picker--wide .sl-configs-picker__nav { flex: 1 1 auto; flex-direction: column; flex-wrap: nowrap; gap: 0.35rem; min-height: 0; padding: 0.55rem; overflow-y: auto; overflow-x: hidden; border: none; border-radius: 0; background: transparent; } .sl-configs-picker__tab { display: flex; align-items: flex-start; gap: 0.55rem; width: 100%; padding: 0.65rem 0.75rem; font-size: 0.82rem; color: #e2e8f0; text-align: left; background: rgba(15, 23, 42, 0.72); border: 1px solid rgba(148, 163, 184, 0.28); border-radius: 0.5rem; cursor: pointer; transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s; } .sl-configs-picker__tab[hidden], .sl-configs-picker__tab.is-filtered-out { display: none !important; } .sl-configs-picker:not(.sl-configs-picker--wide) .sl-configs-picker__tab { width: auto; flex: 0 1 auto; align-items: center; max-width: 100%; } .sl-configs-picker__tab:hover { color: #f1f5f9; border-color: rgba(56, 189, 248, 0.35); background: rgba(56, 189, 248, 0.08); } .sl-configs-picker__tab.is-active { color: #f8fafc; border-color: rgba(56, 189, 248, 0.55); background: linear-gradient(135deg, rgba(56, 189, 248, 0.2) 0%, rgba(15, 23, 42, 0.55) 100%); box-shadow: 0 0 0 1px rgba(56, 189, 248, 0.12); } .sl-configs-picker__tab-icon { flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 1.65rem; height: 1.65rem; margin-top: 0.05rem; font-size: 0.72rem; color: #7dd3fc; background: rgba(56, 189, 248, 0.12); border-radius: 0.4rem; } .sl-configs-picker__tab.is-active .sl-configs-picker__tab-icon { color: #e0f2fe; background: rgba(56, 189, 248, 0.28); } .sl-configs-picker__tab-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; } .sl-configs-picker__tab-id { font-size: 0.68rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: #94a3b8; } .sl-configs-picker__tab.is-active .sl-configs-picker__tab-id { color: #bae6fd; } .sl-configs-picker__tab-name { display: block; font-size: 0.86rem; font-weight: 600; line-height: 1.35; color: #f1f5f9; word-break: break-word; overflow-wrap: anywhere; white-space: normal; } .sl-configs-picker:not(.sl-configs-picker--wide) .sl-configs-picker__tab-body { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.35rem; } .sl-configs-picker:not(.sl-configs-picker--wide) .sl-configs-picker__tab-id::after { content: '·'; margin-left: 0.35rem; color: #475569; font-weight: 400; } .sl-configs-picker__tab-count { flex-shrink: 0; align-self: flex-start; min-width: 1.55rem; padding: 0.2rem 0.4rem; font-size: 0.72rem; font-weight: 700; color: #cbd5e1; text-align: center; background: rgba(15, 23, 42, 0.75); border: 1px solid rgba(148, 163, 184, 0.25); border-radius: 999px; } .sl-configs-picker__tab.is-active .sl-configs-picker__tab-count { color: #f0f9ff; background: rgba(14, 165, 233, 0.35); border-color: rgba(56, 189, 248, 0.45); } .sl-configs-picker__content { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; } .sl-configs-picker--wide .sl-configs-picker__content { padding: 0; border: 1px solid rgba(56, 189, 248, 0.28); border-radius: 0.75rem; background: rgba(17, 24, 39, 0.88); overflow: hidden; } .sl-configs-picker__content-head { padding: 1rem 1.15rem 0.85rem; border-bottom: 1px solid var(--bs-border-color); background: linear-gradient(135deg, rgba(56, 189, 248, 0.1) 0%, rgba(15, 23, 42, 0.35) 100%); } .sl-configs-picker__content-head[hidden] { display: none !important; } .sl-configs-picker__content-badge { display: inline-block; margin-bottom: 0.35rem; padding: 0.12rem 0.45rem; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.06em; color: #93c5fd; background: rgba(56, 189, 248, 0.14); border: 1px solid rgba(56, 189, 248, 0.25); border-radius: 999px; } .sl-configs-picker__pane-title { margin: 0; font-size: 1.15rem; font-weight: 700; line-height: 1.3; color: #f8fafc; word-break: break-word; overflow-wrap: anywhere; } .sl-configs-picker__pane-sub { margin: 0.35rem 0 0; font-size: 0.82rem; color: #cbd5e1; } .sl-configs-picker__empty { margin: 0; padding: 3rem 1.5rem; font-size: 0.92rem; color: #94a3b8; text-align: center; } .sl-configs-picker--wide .sl-configs-picker__empty { flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; } .sl-configs-picker__empty[hidden] { display: none !important; } .sl-configs-picker__empty .fa-hand-pointer { display: block; margin-bottom: 0.65rem; font-size: 1.5rem; color: #64748b; } .sl-configs-picker__pane { flex: 1 1 auto; min-height: 0; padding: 0.85rem 1rem 1rem; overflow-y: auto; } .sl-configs-picker__pane[hidden] { display: none !important; } .sl-configs-picker--wide .sl-configs-picker__pane .sl-creation { margin-bottom: 0.65rem; } .sl-configs-picker--wide .sl-configs-picker__pane .sl-creation:last-child { margin-bottom: 0; } .sl-configs-body .sl-configs-picker { margin-top: 0.35rem; } @media (max-width: 991.98px) { .sl-configs-picker--wide { flex-direction: column; min-height: 0; } .sl-configs-picker__sidebar { flex: 0 0 auto; max-width: none; max-height: none; } .sl-configs-picker--wide .sl-configs-picker__nav { max-height: 280px; } } @media (max-width: 767.98px) { .sl-configs-picker--wide .sl-configs-picker__nav { flex-direction: column; flex-wrap: nowrap; } .sl-configs-picker--wide .sl-configs-picker__tab { width: 100%; } } body.hide-deleted-configs .sl-configs-section--deleted, body.hide-deleted-configs .sl-creation--deleted { display: none !important; } .link-row--cleaned { opacity: 0.72; } /* ——— Settings (admin/settings.php) ——— */ .admin-page-settings { max-width: 900px; } .st-hero { margin-bottom: 1.35rem; padding: 1.15rem 1.25rem; border-radius: 0.85rem; border: 1px solid rgba(56, 189, 248, 0.18); background: linear-gradient(135deg, rgba(56, 189, 248, 0.08) 0%, rgba(17, 24, 39, 0.5) 100%); } .st-hero__kicker { margin: 0 0 0.2rem; font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: var(--admin-accent); } .st-hero__title { margin: 0 0 0.3rem; font-size: 1.35rem; font-weight: 700; color: #f8fafc; } .st-hero__sub { margin: 0; font-size: 0.88rem; color: #94a3b8; line-height: 1.45; } .st-status { display: grid; grid-template-columns: repeat(1, 1fr); gap: 0.65rem; margin-bottom: 1.25rem; } @media (min-width: 576px) { .st-status { grid-template-columns: repeat(3, 1fr); } } .st-status-card { display: flex; flex-direction: column; align-items: flex-start; gap: 0.25rem; padding: 0.85rem 1rem; border-radius: 0.6rem; border: 1px solid var(--bs-border-color); background: var(--admin-surface); } .st-status-card i { font-size: 1.1rem; color: #64748b; margin-bottom: 0.15rem; } .st-status-card.is-ok { border-color: rgba(52, 211, 153, 0.35); background: rgba(16, 185, 129, 0.06); } .st-status-card.is-ok i { color: #34d399; } .st-status-card.is-warn { border-color: rgba(245, 158, 11, 0.35); background: rgba(245, 158, 11, 0.06); } .st-status-card.is-warn i { color: #fbbf24; } .st-status-card__label { font-size: 0.68rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #94a3b8; } .st-status-card__val { font-size: 0.9rem; font-weight: 600; color: #f1f5f9; } .st-test-result { margin-bottom: 1.25rem; border-radius: 0.65rem; overflow: hidden; border: 1px solid var(--bs-border-color); } .st-test-result--ok { border-color: rgba(52, 211, 153, 0.4); background: rgba(16, 185, 129, 0.06); } .st-test-result--err { border-color: rgba(248, 113, 113, 0.4); background: rgba(239, 68, 68, 0.06); } .st-test-result__head { display: flex; align-items: center; gap: 0.5rem; padding: 0.65rem 0.85rem; font-size: 0.88rem; font-weight: 600; } .st-test-result--ok .st-test-result__head { color: #6ee7b7; } .st-test-result--err .st-test-result__head { color: #fca5a5; } .st-test-result__body { margin: 0; padding: 0.75rem 0.85rem; font-size: 0.78rem; line-height: 1.45; color: #cbd5e1; background: rgba(15, 23, 42, 0.6); white-space: pre-wrap; word-break: break-word; font-family: ui-monospace, "JetBrains Mono", monospace; max-height: 280px; overflow-y: auto; } .st-panel--main { margin-bottom: 1.25rem; } .st-form { display: flex; flex-direction: column; gap: 0.85rem; } .st-form--nested { margin-top: 0.75rem; padding: 1rem; border-radius: 0.55rem; background: var(--admin-surface-2); border: 1px solid var(--bs-border-color); } .st-field { display: flex; flex-direction: column; } .admin-page-settings .st-textarea { min-height: 5rem; resize: vertical; font-family: ui-monospace, monospace; font-size: 0.82rem; } .st-check { display: inline-flex; align-items: center; gap: 0.45rem; font-size: 0.85rem; color: #cbd5e1; cursor: pointer; margin: 0; } .st-check input { accent-color: var(--admin-accent); width: 1rem; height: 1rem; } .st-badge { display: inline-block; font-size: 0.72rem; font-weight: 600; padding: 0.1rem 0.4rem; border-radius: 0.3rem; vertical-align: middle; } .st-badge--ok { color: #6ee7b7; background: rgba(16, 185, 129, 0.15); } .st-badge--err { color: #fca5a5; background: rgba(239, 68, 68, 0.12); } .sl-btn-generate--secondary { background: linear-gradient(135deg, #6366f1, #4f46e5); box-shadow: 0 4px 20px rgba(99, 102, 241, 0.3); } .st-panel--maintenance { margin-bottom: 1.25rem; } .st-panel--maintenance-on { border-color: rgba(251, 191, 36, 0.45); background: rgba(251, 191, 36, 0.05); } .st-panel--maintenance-on .sl-panel__head i { color: #fbbf24; } .sl-btn-generate--warn { background: linear-gradient(135deg, #f59e0b, #d97706); box-shadow: 0 4px 20px rgba(245, 158, 11, 0.28); } .st-grid { display: grid; grid-template-columns: 1fr; gap: 1.25rem; } @media (min-width: 768px) { .st-grid { grid-template-columns: 1fr 1fr; } } .st-btn-test { display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.55rem 1rem; font-size: 0.88rem; font-weight: 600; color: #7dd3fc; background: rgba(56, 189, 248, 0.1); border: 1px solid rgba(56, 189, 248, 0.35); border-radius: 0.5rem; cursor: pointer; font-family: inherit; transition: background 0.15s, border-color 0.15s; } .st-btn-test:hover { background: rgba(56, 189, 248, 0.18); border-color: rgba(56, 189, 248, 0.5); } .st-callback-box { margin-bottom: 0.75rem; padding: 0.65rem 0.85rem; border-radius: 0.45rem; background: rgba(15, 23, 42, 0.5); border: 1px dashed rgba(56, 189, 248, 0.25); } .st-callback-box__label { display: block; font-size: 0.68rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #64748b; margin-bottom: 0.35rem; } .st-callback-box__url { display: block; font-size: 0.78rem; color: #7dd3fc; word-break: break-all; line-height: 1.4; } .admin-page-settings .sl-hint a { color: #7dd3fc; } .admin-page-settings .st-form label.sl-field__label { margin: 0 0 0.15rem; } /* ——— Renewal codes (admin/renewal_codes.php) ——— */ .admin-page-renewal .rc-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; margin-bottom: 1rem; } @media (max-width: 767.98px) { .admin-page-renewal .rc-form-grid { grid-template-columns: 1fr; } } .admin-page-renewal .rc-code-row { display: flex; gap: 0.5rem; } .admin-page-renewal .rc-code-input { flex: 1 1 auto; letter-spacing: 0.06em; text-transform: uppercase; } .admin-page-renewal .rc-btn-random { flex-shrink: 0; min-width: 2.5rem; } .admin-page-renewal .rc-code-display, .admin-page-renewal .rc-code-pill { font-size: 0.92rem; font-weight: 600; letter-spacing: 0.06em; color: #7dd3fc; } .admin-page-renewal .rc-days-badge { display: inline-block; padding: 0.15rem 0.45rem; font-size: 0.78rem; font-weight: 700; color: #34d399; background: rgba(52, 211, 153, 0.12); border-radius: 999px; } .admin-page-renewal .rc-usage-bar { height: 0.35rem; margin-bottom: 0.25rem; background: rgba(15, 23, 42, 0.55); border-radius: 999px; overflow: hidden; } .admin-page-renewal .rc-usage-fill { display: block; height: 100%; background: linear-gradient(90deg, #38bdf8, #34d399); } .admin-page-renewal .rc-row--exhausted { opacity: 0.55; } .admin-page-renewal .rc-foot-hint { margin: 0.85rem 0 0; font-size: 0.82rem; color: #94a3b8; } .admin-page-renewal .rc-sql-snippet { display: block; margin: 0.5rem 0; padding: 0.55rem 0.75rem; font-size: 0.82rem; color: #7dd3fc; background: rgba(15, 23, 42, 0.55); border-radius: 0.45rem; }