yt-project / extension /floating.css
3v324v23's picture
Configure Playwright to load Chrome Extension unpacked, run in headed mode via Xvfb, and deploy prompts through extension messaging
507d217
Raw
History Blame Contribute Delete
54.6 kB
/* Saqlain's Tech World - Futuristic Premium UI */
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
/* Custom scrollbars inside the floating widget */
#ql-floating ::-webkit-scrollbar {
width: 5px;
height: 5px;
}
#ql-floating ::-webkit-scrollbar-track {
background: transparent;
}
#ql-floating ::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.08);
border-radius: 99px;
}
#ql-floating ::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.18);
}
@keyframes ql-pulse {
0% { transform: scale(1); }
50% { transform: scale(1.08); filter: drop-shadow(0 0 20px var(--ql-accent-glow)); }
100% { transform: scale(1); }
}
@keyframes ql-data-wave {
0% { opacity: 0.3; transform: scaleY(1); }
50% { opacity: 0.6; transform: scaleY(1.5); }
100% { opacity: 0.3; transform: scaleY(1); }
}
/* ===== MAIN CONTAINER - FUTURISTIC ===== */
#ql-floating {
position: fixed;
width: 400px;
z-index: 999999999;
font-family: var(--ql-font);
border-radius: var(--ql-radius);
overflow: hidden;
background: var(--ql-bg-elevated);
border: 1px solid var(--ql-border);
box-shadow: var(--ql-shadow), 0 0 40px rgba(37, 99, 235, 0.04);
transition: box-shadow var(--ql-transition), height 0.3s ease, border-color 0.3s ease;
display: flex;
flex-direction: column;
min-height: 60px;
overflow-y: auto;
backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px);
}
#ql-floating:hover {
box-shadow: var(--ql-shadow-hover);
}
#ql-floating * {
box-sizing: border-box;
}
/* Ensure all interactive elements are clickable */
#ql-floating button,
#ql-floating input,
#ql-floating textarea,
#ql-floating label,
#ql-floating a,
#ql-floating select {
pointer-events: auto !important;
position: relative;
z-index: 1;
}
/* ===== MINIMIZED ===== */
#ql-floating.ql-minimized {
height: auto !important;
min-height: 52px;
overflow: hidden;
animation: ql-swoosh-in 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}
#ql-floating.ql-minimized #ql-body,
#ql-floating.ql-minimized #ql-footer,
#ql-floating.ql-minimized #ql-resize-handle,
#ql-floating.ql-minimized #ql-notif-panel {
display: none !important;
}
@keyframes ql-swoosh-in {
0% { transform: scale(1) translateX(0); opacity: 1; }
35% { transform: scale(0.92) translateX(8px); opacity: 0.85; filter: blur(2px); }
70% { transform: scale(1.02) translateX(-2px); opacity: 1; filter: blur(0); }
100% { transform: scale(1) translateX(0); }
}
#ql-floating:not(.ql-minimized) {
transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow var(--ql-transition), height 0.3s ease;
}
#ql-floating .ql-minimize-btn,
#ql-floating .ql-icon-btn {
transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), background var(--ql-transition), color var(--ql-transition);
}
#ql-floating .ql-icon-btn:active {
transform: scale(0.85) rotate(-8deg);
}
/* ===== HEADER ===== */
#ql-header {
cursor: move;
padding: 14px 18px;
background: var(--ql-bg-elevated);
border-bottom: 1px solid var(--ql-border);
display: flex;
align-items: center;
justify-content: space-between;
user-select: none;
-webkit-user-select: none;
touch-action: none;
flex-shrink: 0;
position: relative;
}
#ql-header::after {
content: '';
position: absolute;
bottom: -1px;
left: 15%;
right: 15%;
height: 1px;
background: var(--ql-accent);
opacity: 0.3;
}
.ql-header-left {
display: flex;
align-items: center;
gap: 10px;
}
.ql-brand {
font-size: 14px;
font-weight: 800;
background: transparent; color: var(--ql-accent); -webkit-text-fill-color: currentColor;
letter-spacing: -0.02em;
}
.ql-badge-pro-header {
font-size: 9px;
font-weight: 800;
padding: 3px 8px;
border-radius: 6px;
background: var(--ql-gradient-primary);
color: #fff;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.ql-header-right {
display: flex;
align-items: center;
gap: 2px;
flex-shrink: 0;
}
.ql-icon-btn {
width: 32px;
height: 32px;
border: none;
background: transparent;
border-radius: var(--ql-radius-xs);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
transition: all var(--ql-transition);
color: var(--ql-text-muted);
position: relative;
}
.ql-icon-btn:hover {
background: rgba(37, 99, 235, 0.08);
color: var(--ql-accent);
box-shadow: 0 0 12px var(--ql-accent-glow);
}
/* ===== NOTIFICATION BADGE ===== */
.ql-notif-badge {
position: absolute;
top: -3px;
right: -3px;
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--ql-danger);
color: #fff;
font-size: 9px;
font-weight: 800;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
box-shadow: 0 0 8px rgba(239,68,68,0.4);
}
/* ===== NOTIFICATION PANEL ===== */
.ql-notif-panel {
position: absolute;
top: 52px;
right: 8px;
left: 8px;
background: var(--ql-bg-surface);
border: 1px solid var(--ql-border);
border-radius: 14px;
box-shadow: 0 16px 48px -12px rgba(0,0,0,0.5);
z-index: 10;
max-height: 300px;
overflow-y: auto;
animation: ql-slide-down 0.2s ease;
}
@keyframes ql-slide-down {
from { opacity: 0; transform: translateY(-8px); }
to { opacity: 1; transform: translateY(0); }
}
.ql-notif-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 16px;
border-bottom: 1px solid var(--ql-border);
font-size: 13px;
font-weight: 700;
color: var(--ql-text-primary);
}
.ql-notif-close-btn {
border: none;
background: none;
cursor: pointer;
font-size: 13px;
color: var(--ql-text-muted);
padding: 4px 8px;
border-radius: 6px;
transition: all var(--ql-transition);
}
.ql-notif-close-btn:hover { background: var(--ql-bg-hover); color: var(--ql-text-primary); }
.ql-notif-list { padding: 8px; }
.ql-notif-empty {
text-align: center;
color: var(--ql-text-muted);
font-size: 12px;
padding: 20px 0;
margin: 0;
}
.ql-notif-item {
padding: 12px 14px;
border-radius: var(--ql-radius-sm);
background: var(--ql-bg-hover);
margin-bottom: 6px;
border: 1px solid var(--ql-border);
transition: all var(--ql-transition);
}
.ql-notif-item:hover {
border-color: var(--ql-border-hover);
}
.ql-notif-item:last-child { margin-bottom: 0; }
.ql-notif-item-title {
font-size: 12px;
font-weight: 700;
color: var(--ql-text-primary);
margin-bottom: 3px;
}
.ql-notif-item-msg {
font-size: 11px;
color: var(--ql-text-secondary);
margin-bottom: 6px;
line-height: 1.5;
}
.ql-notif-link {
font-size: 11px;
color: var(--ql-accent);
text-decoration: none;
font-weight: 600;
transition: opacity var(--ql-transition);
}
.ql-notif-link:hover { opacity: 0.8; }
.ql-notif-item-date {
font-size: 10px;
color: var(--ql-text-muted);
margin-top: 6px;
}
/* ===== CUSTOM ALERT ===== */
.ql-custom-alert {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.6);
display: flex;
align-items: center;
justify-content: center;
z-index: 20;
border-radius: var(--ql-radius);
backdrop-filter: blur(8px);
}
.ql-alert-content {
background: var(--ql-bg-surface);
border: 1px solid var(--ql-border);
border-radius: var(--ql-radius);
padding: 28px 24px;
text-align: center;
width: 85%;
max-width: 300px;
box-shadow: 0 24px 60px -12px rgba(0,0,0,0.6);
animation: ql-alert-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes ql-alert-in {
from { transform: scale(0.9); opacity: 0; }
to { transform: scale(1); opacity: 1; }
}
.ql-alert-icon { font-size: 40px; margin-bottom: 12px; }
.ql-alert-title {
font-size: 16px;
font-weight: 700;
color: var(--ql-text-primary);
margin-bottom: 8px;
}
.ql-alert-message {
font-size: 13px;
color: var(--ql-text-secondary);
margin-bottom: 20px;
line-height: 1.5;
}
.ql-alert-ok-btn {
padding: 10px 36px;
border: none;
border-radius: var(--ql-radius-sm);
background: var(--ql-gradient-primary);
color: #fff;
font-size: 13px;
font-weight: 700;
cursor: pointer;
transition: all var(--ql-transition);
box-shadow: 0 4px 16px var(--ql-accent-glow);
}
.ql-alert-ok-btn:hover {
transform: translateY(-1px);
box-shadow: 0 8px 24px var(--ql-accent-glow);
}
/* ===== MODO PLANO MODAL ===== */
.ql-modo-plano-overlay {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.72);
backdrop-filter: blur(6px);
display: flex;
align-items: center;
justify-content: center;
z-index: 40;
opacity: 0;
pointer-events: none;
transition: opacity var(--ql-transition);
border-radius: inherit;
}
.ql-modo-plano-overlay.ql-modo-plano-visible {
opacity: 1;
pointer-events: auto;
}
.ql-modo-plano-modal {
background: var(--ql-bg-elevated);
border: 1px solid var(--ql-border);
border-radius: var(--ql-radius);
width: min(340px, 92%);
padding: 20px;
box-shadow: 0 24px 80px -12px rgba(0,0,0,0.6);
transform: scale(0.96);
transition: transform 0.2s ease;
}
.ql-modo-plano-visible .ql-modo-plano-modal {
transform: scale(1);
}
.ql-modo-plano-icon {
width: 40px;
height: 40px;
margin: 0 auto 12px;
border-radius: 10px;
background: var(--ql-warning-bg);
border: 1px solid color-mix(in srgb, var(--ql-warning) 28%, transparent);
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
}
.ql-modo-plano-title {
font-size: 14px;
font-weight: 700;
color: var(--ql-text-primary);
text-align: center;
margin-bottom: 10px;
}
.ql-modo-plano-body {
font-size: 11px;
line-height: 1.6;
color: var(--ql-text-secondary);
margin-bottom: 12px;
}
.ql-modo-plano-body strong {
color: var(--ql-warning);
}
.ql-modo-plano-steps {
margin-bottom: 14px;
}
.ql-modo-plano-step {
display: flex;
gap: 8px;
align-items: flex-start;
margin-bottom: 8px;
}
.ql-modo-plano-step:last-child {
margin-bottom: 0;
}
.ql-modo-plano-step-num {
min-width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background: var(--ql-accent-subtle);
border: 1px solid color-mix(in srgb, var(--ql-accent) 25%, transparent);
color: var(--ql-accent);
font-size: 10px;
font-weight: 700;
}
.ql-modo-plano-step-text {
font-size: 11px;
line-height: 1.5;
color: var(--ql-text-secondary);
}
.ql-modo-plano-step-text strong {
color: var(--ql-text-primary);
}
.ql-modo-plano-check {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 14px;
}
.ql-modo-plano-check input {
width: 14px;
height: 14px;
accent-color: var(--ql-accent);
}
.ql-modo-plano-check label {
font-size: 11px;
color: var(--ql-text-muted);
}
.ql-modo-plano-btn {
width: 100%;
padding: 10px;
border: none;
border-radius: var(--ql-radius-sm);
background: var(--ql-accent);
color: var(--ql-text-primary);
font-size: 12px;
font-weight: 700;
cursor: pointer;
transition: all var(--ql-transition);
}
.ql-modo-plano-btn:hover {
box-shadow: 0 0 20px -4px var(--ql-accent-glow);
transform: translateY(-1px);
}
/* ===== LICENSE MODE MODAL (vendor-aligned) ===== */
.ql-license-mode-overlay {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.72);
backdrop-filter: blur(6px);
display: flex;
align-items: center;
justify-content: center;
z-index: 40;
opacity: 0;
pointer-events: none;
transition: opacity var(--ql-transition);
border-radius: inherit;
}
.ql-license-mode-overlay.ql-license-mode-visible {
opacity: 1;
pointer-events: auto;
}
.ql-license-mode-modal {
background: var(--ql-bg-elevated);
border: 1px solid var(--ql-border);
border-radius: var(--ql-radius);
width: min(340px, 92%);
padding: 20px;
box-shadow: 0 24px 80px -12px rgba(0,0,0,0.6);
transform: scale(0.96);
transition: transform 0.2s ease;
}
.ql-license-mode-visible .ql-license-mode-modal {
transform: scale(1);
}
.ql-license-mode-icon {
width: 40px;
height: 40px;
margin: 0 auto 12px;
border-radius: 10px;
background: var(--ql-warning-bg);
border: 1px solid color-mix(in srgb, var(--ql-warning) 28%, transparent);
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
}
.ql-license-mode-title {
font-size: 14px;
font-weight: 700;
color: var(--ql-text-primary);
text-align: center;
margin-bottom: 10px;
}
.ql-license-mode-body {
font-size: 11px;
line-height: 1.6;
color: var(--ql-text-secondary);
margin-bottom: 12px;
}
.ql-license-mode-body strong {
color: var(--ql-warning);
}
.ql-license-mode-steps { margin-bottom: 14px; }
.ql-license-mode-step {
display: flex;
gap: 8px;
align-items: flex-start;
margin-bottom: 8px;
}
.ql-license-mode-step:last-child { margin-bottom: 0; }
.ql-license-mode-step-num {
min-width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background: var(--ql-accent-subtle);
border: 1px solid color-mix(in srgb, var(--ql-accent) 25%, transparent);
color: var(--ql-accent);
font-size: 10px;
font-weight: 700;
}
.ql-license-mode-step-text {
font-size: 11px;
line-height: 1.5;
color: var(--ql-text-secondary);
}
.ql-license-mode-step-text strong { color: var(--ql-text-primary); }
.ql-license-mode-check {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 14px;
}
.ql-license-mode-check input {
width: 14px;
height: 14px;
accent-color: var(--ql-accent);
}
.ql-license-mode-check label {
font-size: 11px;
color: var(--ql-text-muted);
}
.ql-license-mode-btn {
width: 100%;
padding: 10px;
border: none;
border-radius: var(--ql-radius-sm);
background: var(--ql-accent);
color: var(--ql-text-primary);
font-size: 12px;
font-weight: 700;
cursor: pointer;
transition: all var(--ql-transition);
}
.ql-license-mode-btn:hover {
box-shadow: 0 0 20px -4px var(--ql-accent-glow);
transform: translateY(-1px);
}
/* ===== BODY ===== */
#ql-body {
padding: 18px;
flex: 1;
overflow-y: auto;
}
/* ===== PROFILE CARD ===== */
.ql-profile-card {
background: var(--ql-bg-surface);
border: 1px solid var(--ql-border);
border-radius: 14px;
padding: 14px 16px;
margin-bottom: 16px;
transition: border-color var(--ql-transition);
}
.ql-profile-card:hover {
border-color: var(--ql-border-hover);
}
.ql-profile-top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
}
.ql-profile-info {
display: flex;
align-items: center;
gap: 10px;
}
.ql-profile-name {
font-size: 14px;
font-weight: 700;
color: var(--ql-text-primary);
letter-spacing: -0.01em;
}
.ql-status-badge {
font-size: 9px;
font-weight: 800;
padding: 3px 10px;
border-radius: 6px;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.ql-badge-test {
background: var(--ql-warning-bg);
color: var(--ql-warning);
border: 1px solid rgba(251,191,36,0.15);
}
.ql-badge-pro {
background: var(--ql-success-bg);
color: var(--ql-success);
border: 1px solid rgba(52,211,153,0.15);
}
/* ===== SYNC STATUS ===== */
.ql-sync-status {
font-size: 12px;
font-weight: 500;
margin-bottom: 8px;
padding: 0;
}
.ql-sync-ok .ql-sync-text {
color: var(--ql-success);
}
.ql-sync-waiting .ql-sync-text {
color: var(--ql-warning);
}
/* ===== TRIAL COUNTDOWN ===== */
.ql-trial-countdown {
display: flex;
flex-direction: column;
gap: 8px;
padding: 10px 12px;
border-radius: 12px;
background: rgba(255, 255, 255, 0.03);
border: 1px solid var(--ql-border);
margin-top: 8px;
}
.ql-countdown-row {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
}
.ql-countdown-icon { font-size: 13px; }
.ql-countdown-label {
color: var(--ql-text-secondary);
font-weight: 500;
}
.ql-countdown-time {
margin-left: auto;
font-family: 'SF Mono', 'Fira Code', 'JetBrains Mono', monospace;
font-size: 13px;
font-weight: 700;
color: var(--ql-warning);
letter-spacing: 0.03em;
}
.ql-countdown-expired {
color: var(--ql-danger);
font-weight: 600;
font-size: 12px;
}
.ql-trial-bar {
width: 100%;
height: 6px;
border-radius: 6px;
background: var(--ql-bg-hover);
overflow: hidden;
position: relative;
}
.ql-trial-bar-fill {
height: 100%;
border-radius: 6px;
background: var(--ql-gradient-shimmer);
background-size: 200% 100%;
animation: ql-bar-shimmer 3s ease infinite;
transition: width 1s ease;
box-shadow: 0 0 8px var(--ql-accent-glow);
}
.ql-trial-bar-fill.ql-bar-urgent {
background: var(--ql-danger);
background-size: 200% 100%;
animation: ql-bar-shimmer 1.5s ease infinite, ql-bar-pulse 2s ease-in-out infinite;
box-shadow: 0 0 10px rgba(239, 68, 68, 0.5);
}
.ql-trial-bar-fill.ql-bar-expired {
background: var(--ql-danger);
}
@keyframes ql-bar-shimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
@keyframes ql-bar-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
/* ===== TEXTAREA ===== */
#ql-floating textarea {
width: 100%;
padding: 14px 16px;
border-radius: 14px;
border: 1px solid var(--ql-border);
background: var(--ql-bg-surface);
color: var(--ql-text-primary);
font-size: 13px;
font-family: var(--ql-font);
transition: border-color var(--ql-transition), box-shadow var(--ql-transition);
box-sizing: border-box;
outline: none;
resize: vertical;
min-height: 64px;
margin-bottom: 10px;
line-height: 1.5;
}
#ql-floating textarea:focus {
border-color: var(--ql-accent);
box-shadow: 0 0 0 3px var(--ql-accent-subtle), 0 0 20px var(--ql-accent-glow);
}
#ql-floating textarea::placeholder {
color: var(--ql-text-muted);
}
/* ===== ACTION BAR ===== */
.ql-action-bar {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
padding: 0;
gap: 8px;
}
.ql-action-left {
display: flex;
align-items: center;
gap: 8px;
flex-shrink: 0;
}
.ql-action-center {
display: flex;
align-items: center;
gap: 4px;
}
.ql-action-right-send {
flex-shrink: 0;
}
.ql-tool-btn {
width: 34px;
height: 34px;
border: 1px solid var(--ql-border);
background: var(--ql-bg-surface);
border-radius: var(--ql-radius-xs);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all var(--ql-transition);
color: var(--ql-text-muted);
}
.ql-tool-btn:hover {
background: var(--ql-accent-subtle);
border-color: var(--ql-border-hover);
color: var(--ql-accent);
box-shadow: 0 0 12px var(--ql-accent-glow);
transform: translateY(-1px);
}
.ql-tool-btn:disabled {
opacity: 0.35;
cursor: not-allowed;
transform: none;
}
/* Tool button loading */
.ql-tool-loading {
animation: ql-spin 0.8s linear infinite;
}
@keyframes ql-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
/* Recording indicator */
.ql-recording {
background: var(--ql-danger-bg) !important;
border-color: rgba(248,113,113,0.3) !important;
color: var(--ql-danger) !important;
animation: ql-pulse 1.5s ease-in-out infinite;
}
@keyframes ql-pulse {
0%, 100% { box-shadow: 0 0 0 0 rgba(248,113,113,0.3); }
50% { box-shadow: 0 0 0 8px rgba(248,113,113,0); }
}
.ql-toggle-label-inline {
font-size: 10px;
font-weight: 600;
color: var(--ql-text-muted);
text-transform: uppercase;
letter-spacing: 0.06em;
}
/* ===== SEND BUTTON ===== */
.ql-send-btn {
padding: 8px 22px;
border: none;
border-radius: var(--ql-radius-sm);
background: var(--ql-gradient-primary);
color: #fff;
font-size: 13px;
font-weight: 700;
cursor: pointer;
transition: all var(--ql-transition);
box-shadow: 0 2px 12px var(--ql-accent-glow);
letter-spacing: -0.01em;
}
.ql-send-btn:hover {
box-shadow: 0 6px 24px var(--ql-accent-glow);
transform: translateY(-1px);
filter: brightness(1.1);
}
.ql-send-btn:active {
transform: translateY(0);
filter: brightness(0.95);
}
.ql-send-btn.ql-sending,
.ql-send-btn:disabled {
opacity: 0.5;
pointer-events: none;
}
/* ===== TOGGLE ===== */
.ql-toggle {
position: relative;
width: 36px;
height: 20px;
cursor: pointer;
flex-shrink: 0;
}
.ql-toggle input {
opacity: 0; width: 0; height: 0; position: absolute;
}
.ql-toggle-slider {
position: absolute;
inset: 0;
border-radius: 20px;
background: var(--ql-bg-hover);
border: 1px solid var(--ql-border);
transition: all 0.3s ease;
}
.ql-toggle-slider::before {
content: '';
position: absolute;
width: 16px; height: 16px;
border-radius: 50%;
background: var(--ql-text-muted);
top: 1px; left: 1px;
transition: all 0.3s ease;
}
.ql-toggle input:checked + .ql-toggle-slider {
background: var(--ql-accent-subtle);
border-color: var(--ql-border-hover);
}
.ql-toggle input:checked + .ql-toggle-slider::before {
transform: translateX(16px);
background: var(--ql-accent);
box-shadow: 0 0 8px var(--ql-accent-glow);
}
/* ===== LOG ===== */
#ql-log, #ql-license-log {
font-size: 12px;
margin-top: 10px;
min-height: 18px;
padding: 0 4px;
font-weight: 600;
text-align: center;
}
.ql-log-success { color: var(--ql-success) !important; }
.ql-log-error { color: var(--ql-danger) !important; }
.ql-log-info { color: var(--ql-accent) !important; }
/* ===== SHORTCUTS ===== */
.ql-shortcuts-section {
margin-top: 8px;
}
.ql-shortcuts-title {
display: block;
text-align: center;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.12em;
color: var(--ql-text-muted);
margin-bottom: 12px;
}
.ql-shortcuts-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 6px;
}
.ql-chip {
padding: 8px 4px;
border-radius: var(--ql-radius-xs);
border: 1px solid var(--ql-border);
background: var(--ql-bg-surface);
color: var(--ql-text-secondary);
font-size: 11px;
font-weight: 500;
cursor: pointer;
transition: all var(--ql-transition);
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
}
.ql-chip svg {
flex-shrink: 0;
}
.ql-chip:hover {
background: var(--ql-accent-subtle);
border-color: var(--ql-border-hover);
color: var(--ql-accent-hover);
transform: translateY(-2px);
box-shadow: 0 4px 16px var(--ql-accent-glow);
}
/* ===== LICENSE GATE ===== */
.ql-license-gate {
text-align: center;
padding: 24px 0;
}
.ql-lock-icon { font-size: 40px; margin-bottom: 16px; }
.ql-gate-title { font-size: 17px; font-weight: 700; color: var(--ql-text-primary); margin-bottom: 6px; letter-spacing: -0.02em; }
.ql-gate-desc { font-size: 13px; color: var(--ql-text-secondary); margin-bottom: 20px; line-height: 1.5; }
#ql-floating input {
width: 100%;
padding: 12px 16px;
border-radius: var(--ql-radius-sm);
border: 1px solid var(--ql-border);
background: var(--ql-bg-surface);
color: var(--ql-text-primary);
font-size: 13px;
font-family: var(--ql-font);
transition: all var(--ql-transition);
box-sizing: border-box;
outline: none;
}
#ql-floating input:focus {
border-color: var(--ql-accent);
box-shadow: 0 0 0 3px var(--ql-accent-subtle), 0 0 20px var(--ql-accent-glow);
}
#ql-floating input::placeholder { color: var(--ql-text-muted); }
#ql-validate-btn {
width: 100%;
padding: 12px;
border: none;
border-radius: var(--ql-radius-sm);
background: var(--ql-gradient-primary);
color: white;
font-size: 14px;
font-weight: 700;
cursor: pointer;
transition: all var(--ql-transition);
margin-top: 8px;
box-shadow: 0 4px 16px var(--ql-accent-glow);
letter-spacing: -0.01em;
}
#ql-validate-btn:hover {
transform: translateY(-1px);
box-shadow: 0 8px 28px var(--ql-accent-glow);
filter: brightness(1.1);
}
/* ===== FOOTER ===== */
.ql-footer {
padding: 10px 18px;
border-top: 1px solid var(--ql-border);
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
flex-shrink: 0;
font-size: 11px;
font-weight: 600;
color: var(--ql-text-muted);
}
.ql-footer-row {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.ql-footer-version {
font-size: 9px;
color: var(--ql-text-muted);
opacity: 0.5;
}
.ql-support-link {
display: flex;
align-items: center;
gap: 6px;
color: var(--ql-text-muted);
text-decoration: none;
font-size: 11px;
font-weight: 600;
transition: color var(--ql-transition);
cursor: pointer;
}
.ql-support-link:hover {
color: var(--ql-accent);
}
.ql-support-link svg {
flex-shrink: 0;
}
.ql-badge-mz {
font-size: 9px;
font-weight: 600;
color: var(--ql-text-muted);
background: rgba(255,255,255,0.05);
border: 1px solid rgba(255,255,255,0.08);
padding: 2px 8px;
border-radius: 99px;
letter-spacing: 0.02em;
}
/* ===== SWEETALERT EXPIRED MODAL ===== */
.ql-sweetalert-overlay {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.7);
backdrop-filter: blur(8px);
display: flex;
align-items: center;
justify-content: center;
z-index: 99999;
opacity: 0;
transition: opacity 0.3s ease;
border-radius: inherit;
}
.ql-sweetalert-overlay.ql-sweetalert-visible {
opacity: 1;
}
.ql-sweetalert-box {
background: var(--ql-surface);
border: 1px solid var(--ql-border);
border-radius: 20px;
padding: 32px 28px;
text-align: center;
max-width: 320px;
width: 90%;
transform: scale(0.85);
transition: transform 0.35s cubic-bezier(0.34,1.56,0.64,1);
box-shadow: 0 25px 60px rgba(0,0,0,0.5);
}
.ql-sweetalert-visible .ql-sweetalert-box {
transform: scale(1);
}
.ql-sweetalert-icon {
font-size: 48px;
margin-bottom: 12px;
animation: ql-shake 0.6s ease 0.3s both;
}
@keyframes ql-shake {
0%, 100% { transform: rotate(0deg); }
20% { transform: rotate(-12deg); }
40% { transform: rotate(12deg); }
60% { transform: rotate(-8deg); }
80% { transform: rotate(8deg); }
}
.ql-sweetalert-title {
font-size: 18px;
font-weight: 800;
color: var(--ql-text);
margin: 0 0 8px;
}
.ql-sweetalert-text {
font-size: 13px;
color: var(--ql-text-secondary);
line-height: 1.5;
margin: 0 0 20px;
}
.ql-sweetalert-actions {
display: flex;
flex-direction: column;
gap: 8px;
}
.ql-sweetalert-btn {
padding: 10px 20px;
border-radius: 12px;
font-size: 13px;
font-weight: 700;
cursor: pointer;
border: none;
text-decoration: none;
text-align: center;
transition: all 0.2s ease;
}
.ql-sweetalert-btn-primary {
background: var(--ql-gradient-primary);
color: #fff;
box-shadow: 0 4px 15px var(--ql-accent-glow);
}
.ql-sweetalert-btn-primary:hover {
transform: translateY(-1px);
box-shadow: 0 6px 20px var(--ql-accent-glow);
}
.ql-sweetalert-btn-secondary {
background: rgba(255,255,255,0.06);
color: var(--ql-text-secondary);
border: 1px solid var(--ql-border);
}
.ql-sweetalert-btn-secondary:hover {
background: rgba(255,255,255,0.1);
}
.ql-resize-handle {
height: 10px;
cursor: ns-resize;
background: transparent;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.ql-resize-handle::after {
content: '';
width: 40px;
height: 3px;
border-radius: 3px;
background: var(--ql-border);
transition: background var(--ql-transition);
}
.ql-resize-handle:hover::after {
background: var(--ql-accent);
box-shadow: 0 0 8px var(--ql-accent-glow);
}
.ql-field { margin-bottom: 14px; }
.ql-field label {
display: block;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--ql-text-muted);
margin-bottom: 8px;
}
/* ===== PAYMENT UI ===== */
.ql-gate-divider {
display: flex;
align-items: center;
gap: 10px;
margin: 16px 0;
color: var(--ql-text-muted);
font-size: 11px;
}
.ql-gate-divider::before, .ql-gate-divider::after {
content: '';
flex: 1;
height: 1px;
background: var(--ql-border);
}
.ql-buy-btn {
width: 100%;
padding: 10px 16px;
border: 1px solid var(--ql-accent);
background: var(--ql-accent-subtle);
color: var(--ql-accent);
font-size: 13px;
font-weight: 700;
border-radius: var(--ql-radius-sm);
cursor: pointer;
transition: all var(--ql-transition);
}
.ql-buy-btn:hover {
background: var(--ql-accent);
color: #fff;
box-shadow: 0 4px 16px var(--ql-accent-glow);
}
.ql-pay-section { padding: 0; }
.ql-pay-title {
font-size: 16px;
font-weight: 800;
color: var(--ql-text-primary);
margin-bottom: 14px;
text-align: center;
letter-spacing: -0.02em;
}
.ql-packages-list {
display: flex;
flex-direction: column;
gap: 10px;
margin-bottom: 14px;
}
.ql-pay-loading {
text-align: center;
color: var(--ql-text-muted);
font-size: 12px;
padding: 20px 0;
}
.ql-pkg-card {
background: var(--ql-bg-surface);
border: 1px solid var(--ql-border);
border-radius: 14px;
padding: 14px 16px;
position: relative;
transition: all var(--ql-transition);
}
.ql-pkg-card:hover {
border-color: var(--ql-border-hover);
}
.ql-pkg-highlight {
border-color: var(--ql-accent);
background: var(--ql-accent-subtle);
box-shadow: 0 0 20px var(--ql-accent-glow);
}
.ql-pkg-popular {
position: absolute;
top: -8px;
right: 12px;
background: var(--ql-gradient-primary);
color: #fff;
font-size: 9px;
font-weight: 800;
padding: 3px 10px;
border-radius: 6px;
letter-spacing: 0.05em;
}
.ql-pkg-name {
font-size: 13px;
font-weight: 700;
color: var(--ql-text-primary);
margin-bottom: 4px;
}
.ql-pkg-price {
font-size: 22px;
font-weight: 800;
color: var(--ql-accent);
margin-bottom: 2px;
letter-spacing: -0.03em;
}
.ql-pkg-price span {
font-size: 12px;
font-weight: 600;
color: var(--ql-text-muted);
}
.ql-pkg-mzn {
font-size: 11px;
font-weight: 600;
color: var(--ql-accent);
opacity: 0.85;
margin: -2px 0 6px;
}
.ql-pkg-mzn span {
font-weight: 500;
color: var(--ql-text-muted);
margin-left: 4px;
}
.ql-pay-divider {
display: flex;
align-items: center;
gap: 8px;
margin: 14px 0 10px;
}
.ql-pay-divider::before,
.ql-pay-divider::after {
content: "";
flex: 1;
height: 1px;
background: var(--ql-border);
}
.ql-pay-divider span {
font-size: 10px;
font-weight: 700;
color: var(--ql-text-muted);
text-transform: uppercase;
letter-spacing: 0.08em;
white-space: nowrap;
}
.ql-pkg-brl .ql-pkg-price { color: #16a34a; }
#ql-floating.ql-dark .ql-pkg-brl .ql-pkg-price { color: #4ade80; }
.ql-pkg-duration {
font-size: 11px;
color: var(--ql-text-secondary);
margin-bottom: 8px;
}
.ql-pkg-features {
list-style: none;
padding: 0;
margin: 0 0 10px;
}
.ql-pkg-features li {
font-size: 11px;
color: var(--ql-text-secondary);
padding: 2px 0;
}
.ql-pkg-features li::before {
content: '✓ ';
color: var(--ql-success);
font-weight: 700;
}
.ql-pkg-select-btn {
width: 100%;
padding: 8px;
border: none;
border-radius: var(--ql-radius-xs);
background: var(--ql-bg-hover);
color: var(--ql-text-primary);
font-size: 12px;
font-weight: 700;
cursor: pointer;
transition: all var(--ql-transition);
}
.ql-pkg-select-btn:hover {
background: var(--ql-accent);
color: #fff;
}
.ql-selected-pkg {
font-size: 12px;
color: var(--ql-text-primary);
padding: 10px 12px;
background: var(--ql-accent-subtle);
border: 1px solid var(--ql-border-hover);
border-radius: var(--ql-radius-xs);
margin-bottom: 14px;
}
.ql-pay-field {
margin-bottom: 12px;
}
.ql-pay-field label {
display: block;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--ql-text-muted);
margin-bottom: 6px;
}
.ql-pay-field input {
width: 100%;
padding: 10px 12px;
background: var(--ql-bg);
border: 1px solid var(--ql-border);
border-radius: var(--ql-radius-xs);
color: var(--ql-text-primary);
font-size: 13px;
font-family: inherit;
outline: none;
transition: border-color var(--ql-transition);
}
.ql-pay-field input:focus {
border-color: var(--ql-accent);
box-shadow: 0 0 0 3px var(--ql-accent-subtle);
}
.ql-pay-hint {
font-size: 10px;
color: var(--ql-text-muted);
margin-top: 4px;
display: block;
}
.ql-pay-methods {
display: flex;
gap: 8px;
}
.ql-method-btn {
flex: 1;
padding: 10px;
border: 1px solid var(--ql-border);
background: var(--ql-bg);
color: var(--ql-text-secondary);
border-radius: var(--ql-radius-xs);
font-size: 12px;
font-weight: 700;
cursor: pointer;
transition: all var(--ql-transition);
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
font-family: inherit;
}
.ql-method-btn:hover {
border-color: var(--ql-border-hover);
background: var(--ql-bg-hover);
}
.ql-method-btn.ql-method-active {
border-color: var(--ql-accent);
background: var(--ql-accent-subtle);
color: var(--ql-accent);
}
.ql-confirm-pay-btn {
width: 100%;
padding: 12px;
border: none;
border-radius: var(--ql-radius-sm);
background: var(--ql-gradient-primary);
color: #fff;
font-size: 14px;
font-weight: 800;
cursor: pointer;
transition: all var(--ql-transition);
box-shadow: 0 4px 16px var(--ql-accent-glow);
font-family: inherit;
}
.ql-confirm-pay-btn:hover {
transform: translateY(-1px);
box-shadow: 0 8px 24px var(--ql-accent-glow);
}
.ql-confirm-pay-btn:disabled {
opacity: 0.7;
cursor: not-allowed;
transform: none;
}
.ql-pay-log {
margin-top: 10px;
font-size: 11px;
font-weight: 600;
padding: 8px 10px;
border-radius: var(--ql-radius-xs);
display: none;
}
.ql-pay-log.ql-pay-error {
display: block;
background: var(--ql-danger-bg);
color: var(--ql-danger);
border: 1px solid rgba(248,113,113,0.2);
}
.ql-pay-log.ql-pay-success {
display: block;
background: var(--ql-success-bg);
color: var(--ql-success);
border: 1px solid rgba(52,211,153,0.2);
}
.ql-pay-log.ql-pay-info {
display: block;
background: var(--ql-accent-subtle);
color: var(--ql-accent);
border: 1px solid var(--ql-border-hover);
}
/* ===== FILE ATTACHMENT ===== */
.ql-attach-bar {
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 8px;
}
.ql-attach-btn {
width: 34px;
height: 34px;
border: 1px dashed var(--ql-border);
background: var(--ql-bg-surface);
border-radius: var(--ql-radius-xs);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all var(--ql-transition);
color: var(--ql-text-muted);
flex-shrink: 0;
}
.ql-attach-btn:hover {
background: var(--ql-accent-subtle);
border-color: var(--ql-border-hover);
color: var(--ql-accent);
}
.ql-attach-count {
font-size: 10px;
color: var(--ql-text-muted);
font-weight: 500;
}
.ql-attach-preview {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: 8px;
max-height: 120px;
overflow-y: auto;
}
.ql-attach-item {
position: relative;
display: flex;
align-items: center;
gap: 6px;
padding: 5px 8px;
background: var(--ql-bg-surface);
border: 1px solid var(--ql-border);
border-radius: var(--ql-radius-xs);
font-size: 10px;
color: var(--ql-text-secondary);
max-width: 180px;
animation: ql-fade-in 0.2s ease;
}
@keyframes ql-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
.ql-attach-thumb {
width: 28px;
height: 28px;
border-radius: 4px;
object-fit: cover;
flex-shrink: 0;
}
.ql-attach-icon {
width: 28px;
height: 28px;
border-radius: 4px;
background: var(--ql-bg-hover);
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
flex-shrink: 0;
}
.ql-attach-info {
display: flex;
flex-direction: column;
min-width: 0;
}
.ql-attach-name {
font-weight: 600;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100px;
color: var(--ql-text-primary);
}
.ql-attach-size {
font-size: 9px;
color: var(--ql-text-muted);
}
.ql-attach-remove {
position: absolute;
top: -4px;
right: -4px;
width: 16px;
height: 16px;
border-radius: 50%;
background: var(--ql-danger);
color: #fff;
border: none;
cursor: pointer;
font-size: 9px;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
opacity: 0;
transition: opacity var(--ql-transition);
}
.ql-attach-item:hover .ql-attach-remove {
opacity: 1;
}
.ql-attach-uploading {
opacity: 0.6;
}
.ql-attach-uploading::after {
content: '';
position: absolute;
bottom: 0; left: 0;
height: 2px;
background: var(--ql-accent);
border-radius: 2px;
animation: ql-upload-progress 1.5s ease-in-out infinite;
}
@keyframes ql-upload-progress {
0% { width: 0; }
50% { width: 70%; }
100% { width: 100%; }
}
/* Watermark Removal Button */
.ql-watermark-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
width: 100%;
padding: 10px 16px;
margin-top: 8px;
border: 1px solid rgba(248,113,113,0.2);
border-radius: var(--ql-radius-sm);
background: var(--ql-danger-bg);
color: #f87171;
font-size: 12px;
font-weight: 600;
font-family: inherit;
cursor: pointer;
transition: all var(--ql-transition);
}
.ql-watermark-btn:hover {
background: var(--ql-danger-bg);
border-color: rgba(248,113,113,0.35);
box-shadow: 0 0 20px -4px rgba(248,113,113,0.2);
transform: translateY(-1px);
}
.ql-watermark-btn:active { transform: scale(0.98); }
.ql-watermark-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
/* ===== SHIELD MODE BUTTON ===== */
.ql-shield-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
width: 100%;
padding: 10px 16px;
margin-top: 6px;
border: 1px solid var(--ql-border-hover);
border-radius: var(--ql-radius-sm);
background: var(--ql-accent);
color: var(--ql-accent);
font-size: 12px;
font-weight: 600;
font-family: inherit;
cursor: pointer;
transition: all var(--ql-transition);
}
.ql-shield-btn:hover {
background: var(--ql-accent);
border-color: var(--ql-border-hover);
box-shadow: 0 0 20px -4px var(--ql-border-hover);
transform: translateY(-1px);
}
.ql-shield-btn:active { transform: scale(0.98); }
.ql-shield-btn.ql-shield-active {
background: var(--ql-success-bg);
border-color: rgba(52,211,153,0.3);
color: #34d399;
}
.ql-shield-btn.ql-shield-active:hover {
background: var(--ql-success-bg);
border-color: rgba(52,211,153,0.45);
box-shadow: 0 0 20px -4px rgba(52,211,153,0.2);
}
/* ===== SHIELD OVERLAY (injected on Lovable chat input) ===== */
.ql-shield-overlay {
position: absolute;
inset: 0;
z-index: 999999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
border-radius: 24px;
background: rgba(10,10,11,0.88);
backdrop-filter: blur(8px);
border: 1.5px solid var(--ql-border-hover);
box-shadow: 0 0 40px -8px var(--ql-accent-glow), inset 0 0 60px -20px var(--ql-accent-subtle);
cursor: not-allowed;
animation: ql-shield-pulse 2.5s ease-in-out infinite;
pointer-events: all;
}
.ql-shield-overlay svg {
width: 32px;
height: 32px;
stroke: var(--ql-accent);
filter: drop-shadow(0 0 12px var(--ql-accent-glow));
animation: ql-shield-icon-float 3s ease-in-out infinite;
}
.ql-shield-overlay-text {
color: var(--ql-accent-hover);
font-size: 13px;
font-weight: 600;
font-family: var(--ql-font);
text-align: center;
letter-spacing: 0.02em;
}
.ql-shield-overlay-sub {
color: var(--ql-text-muted);
font-size: 10px;
font-family: var(--ql-font);
}
@keyframes ql-shield-pulse {
0%, 100% { border-color: var(--ql-border-hover); box-shadow: 0 0 40px -8px var(--ql-accent-glow); }
50% { border-color: var(--ql-accent-glow); box-shadow: 0 0 60px -8px var(--ql-border-hover); }
}
@keyframes ql-shield-icon-float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-4px); }
}
/* ===== TABS SYSTEM (Floating Popup) ===== */
.ql-tabs {
display: flex;
gap: 4px;
margin-bottom: 10px;
padding: 3px;
background: var(--ql-bg-surface);
border-radius: var(--ql-radius-sm);
border: 1px solid var(--ql-border);
}
.ql-tab {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
padding: 7px 10px;
border: none;
border-radius: 7px;
background: transparent;
color: var(--ql-text-muted);
font-size: 11px;
font-weight: 600;
cursor: pointer;
font-family: inherit;
transition: all var(--ql-transition);
}
.ql-tab:hover { background: rgba(255,255,255,0.04); color: var(--ql-text-secondary); }
.ql-tab.ql-tab-active { background: var(--ql-accent-subtle); color: var(--ql-accent); border: 1px solid var(--ql-border-hover); }
.ql-tab-badge {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 16px;
height: 16px;
padding: 0 4px;
border-radius: 8px;
background: var(--ql-accent);
color: #fff;
font-size: 9px;
font-weight: 700;
}
/* ===== CHAT HISTORY (Floating Popup) ===== */
.ql-chat-empty {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 40px 20px;
text-align: center;
}
.ql-chat-messages {
max-height: 280px;
overflow-y: auto;
padding: 4px 0;
}
.ql-chat-bubble {
padding: 10px 12px;
margin: 6px 0;
border-radius: var(--ql-radius-sm);
background: var(--ql-bg-surface);
border: 1px solid var(--ql-border);
color: var(--ql-text-primary);
font-size: 11px;
line-height: 1.5;
word-break: break-word;
transition: border-color var(--ql-transition);
}
.ql-chat-bubble:hover { border-color: var(--ql-border-hover); }
.ql-chat-meta {
display: flex;
align-items: center;
gap: 8px;
margin-top: 6px;
font-size: 9px;
}
.ql-chat-status-ok { color: var(--ql-success); }
.ql-chat-status-err { color: var(--ql-danger); }
.ql-chat-time { color: var(--ql-text-muted); }
.ql-chat-date-divider {
display: flex;
align-items: center;
gap: 8px;
margin: 8px 0;
}
.ql-chat-date-divider::before, .ql-chat-date-divider::after { content: ''; flex: 1; height: 1px; background: var(--ql-border); }
.ql-chat-date-label {
font-size: 9px;
font-weight: 700;
color: var(--ql-text-muted);
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 3px 10px;
background: var(--ql-bg-surface);
border: 1px solid var(--ql-border);
border-radius: 10px;
white-space: nowrap;
}
.ql-chat-actions {
display: flex;
align-items: center;
gap: 6px;
padding: 10px 4px 0;
border-top: 1px solid var(--ql-border);
margin-top: 8px;
}
.ql-chat-count { font-size: 10px; color: var(--ql-text-muted); font-weight: 500; }
.ql-chat-clear {
flex: 1;
padding: 8px;
border: 1px solid rgba(248,113,113,0.2);
border-radius: var(--ql-radius-sm);
background: rgba(248,113,113,0.05);
color: var(--ql-danger);
font-size: 11px;
font-weight: 600;
cursor: pointer;
font-family: inherit;
transition: all var(--ql-transition);
text-align: center;
}
.ql-chat-clear:hover { background: rgba(248,113,113,0.12); border-color: rgba(248,113,113,0.35); }
/* ===== NATIVE CHAT MODE ("Use Native Chat") ===== */
.ql-native-chat-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
width: 100%;
padding: 10px 16px;
margin-top: 6px;
border: 1px solid var(--ql-border);
border-radius: var(--ql-radius-sm);
background: var(--ql-accent-subtle);
color: var(--ql-accent);
font-size: 12px;
font-weight: 600;
cursor: pointer;
font-family: inherit;
transition: all var(--ql-transition);
}
.ql-native-chat-btn:hover {
background: var(--ql-accent-glow);
border-color: var(--ql-accent);
}
.ql-native-badge {
position: absolute;
top: -10px;
right: 12px;
z-index: 99999;
display: flex;
align-items: center;
gap: 4px;
background: var(--ql-gradient-primary);
color: #fff;
font-size: 10px;
font-weight: 700;
font-family: var(--ql-font);
padding: 3px 10px;
border-radius: 12px;
box-shadow: 0 2px 12px var(--ql-accent-glow);
letter-spacing: 0.3px;
pointer-events: none;
animation: ql-badge-pulse 2s ease-in-out infinite;
}
@keyframes ql-badge-pulse {
0%, 100% { box-shadow: 0 2px 12px var(--ql-accent-glow); }
50% { box-shadow: 0 2px 20px var(--ql-accent-glow); }
}
.ql-native-return-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
margin: 8px auto 0;
padding: 6px 18px;
border: 1px solid var(--ql-border-hover);
border-radius: 20px;
background: var(--ql-accent-subtle);
color: var(--ql-accent-hover);
font-size: 12px;
font-weight: 600;
font-family: var(--ql-font);
cursor: pointer;
transition: all 0.2s ease;
z-index: 99999;
}
.ql-native-return-btn:hover {
background: var(--ql-border-hover);
border-color: var(--ql-accent-glow);
transform: translateY(-1px);
}
@keyframes ql-send-blink {
0% { background-color: var(--ql-accent); }
25% { background-color: #ef4444; }
50% { background-color: #22c55e; }
75% { background-color: #eab308; }
100% { background-color: var(--ql-accent); }
}
#chatinput-send-message-button.ql-native-send-active {
animation: ql-send-blink 2s linear infinite !important;
opacity: 1 !important;
cursor: pointer !important;
pointer-events: auto !important;
}
#chatinput-send-message-button.ql-native-send-active:disabled {
opacity: 1 !important;
cursor: pointer !important;
pointer-events: auto !important;
}
#chatinput-send-message-button.ql-native-sending {
animation: ql-sending-pulse 0.8s ease-in-out infinite !important;
opacity: 1 !important;
pointer-events: none !important;
}
@keyframes ql-sending-pulse {
0%, 100% { background-color: var(--ql-accent-hover) !important; transform: scale(1); }
50% { background-color: var(--ql-accent) !important; transform: scale(1.15); }
}
.ql-native-sending-overlay {
position: fixed;
bottom: 90px;
left: 50%;
transform: translateX(-50%);
z-index: 9999999999;
display: flex;
align-items: center;
gap: 8px;
padding: 10px 20px;
border-radius: 12px;
background: var(--ql-gradient-primary);
color: #fff;
font-size: 13px;
font-weight: 600;
font-family: 'Segoe UI', sans-serif;
box-shadow: 0 4px 20px var(--ql-accent-glow);
animation: ql-sending-fadein 0.3s ease;
}
.ql-native-sending-overlay .ql-spinner {
width: 14px; height: 14px;
border: 2px solid rgba(255,255,255,0.3);
border-top-color: #fff;
border-radius: 50%;
animation: ql-spin 0.6s linear infinite;
}
@keyframes ql-spin { to { transform: rotate(360deg); } }
@keyframes ql-sending-fadein { from { opacity:0; transform: translateX(-50%) translateY(10px); } to { opacity:1; transform: translateX(-50%) translateY(0); } }
.ql-native-toast {
position: fixed;
bottom: 80px;
left: 50%;
transform: translateX(-50%) translateY(20px);
z-index: 9999999999;
padding: 10px 20px;
border-radius: 12px;
font-size: 13px;
font-weight: 600;
font-family: var(--ql-font);
opacity: 0;
transition: all 0.3s ease;
pointer-events: none;
white-space: nowrap;
}
.ql-native-toast-visible {
opacity: 1;
transform: translateX(-50%) translateY(0);
}
.ql-native-toast-success {
background: rgba(34, 197, 94, 0.15);
color: #34d399;
border: 1px solid rgba(34, 197, 94, 0.3);
backdrop-filter: blur(12px);
}
.ql-native-toast-error {
background: rgba(248, 113, 113, 0.15);
color: #f87171;
border: 1px solid rgba(248, 113, 113, 0.3);
backdrop-filter: blur(12px);
}
/* ===== DRAG & DROP OVERLAY ===== */
.ql-drag-overlay {
position: absolute;
inset: 0;
z-index: 99999;
background: var(--ql-accent-subtle);
backdrop-filter: blur(6px);
border: 2px dashed var(--ql-border-hover);
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
}
.ql-drag-overlay-inner {
font-family: var(--ql-font);
font-size: 14px;
font-weight: 600;
color: var(--ql-accent-hover);
background: rgba(10, 10, 11, 0.85);
padding: 12px 24px;
border-radius: 10px;
border: 1px solid var(--ql-border-hover);
}
/* ===== DIGITAL EMPIRE FUTURISTIC AMBIENT ===== */
#ql-floating:not(.ql-light) {
background: var(--ql-bg-elevated);
border-color: var(--ql-border);
box-shadow: var(--ql-shadow), 0 0 0 1px rgba(37, 99, 235, 0.04), 0 0 60px rgba(37, 99, 235, 0.02);
}
#ql-floating:not(.ql-light)::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
opacity: .06;
background: transparent;
z-index: 0;
}
@keyframes ql-master-wave { from { transform: translate3d(-8px,-4px,0) scale(1); } to { transform: translate3d(8px,4px,0) scale(1.02); } }
.ql-brand, .ql-header-left { display:flex; align-items:center; gap:8px; position:relative; z-index:1; }
.ql-brand-logo, .ql-title-logo { width:24px; height:24px; border-radius:50%; object-fit:cover; box-shadow:0 0 18px var(--ql-accent-glow), 0 0 40px rgba(37, 99, 235, 0.1); }
.ql-title-logo { width:28px; height:28px; }
.ql-license-gate, .ql-profile-card, .ql-template-card, .ql-input-area, .ql-notif-panel, .ql-history-panel {
background: var(--ql-bg-elevated);
border-color: var(--ql-border);
position: relative;
z-index: 1;
}
#ql-validate-btn, #ql-send-btn, .ql-buy-btn, .ql-primary-btn {
background: var(--ql-gradient-primary) !important;
color:#ffffff !important;
box-shadow: 0 14px 36px var(--ql-accent-glow), 0 0 20px rgba(37, 99, 235, 0.1);
}
/* ===== LIGHT MODE OVERRIDES ===== */
#ql-floating.ql-light .ql-license-gate,
#ql-floating.ql-light .ql-profile-card,
#ql-floating.ql-light .ql-template-card,
#ql-floating.ql-light .ql-input-area,
#ql-floating.ql-light .ql-notif-panel,
#ql-floating.ql-light .ql-history-panel {
background: var(--ql-bg-elevated);
border-color: var(--ql-border);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.02);
}
#ql-floating.ql-light textarea {
background: #ffffff;
border-color: rgba(0, 0, 0, 0.08);
color: var(--ql-text-primary);
box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.02);
}
#ql-floating.ql-light textarea:focus {
background: #ffffff;
border-color: var(--ql-accent);
}
#ql-floating.ql-light .ql-tabs {
background: rgba(0, 0, 0, 0.03);
border-color: rgba(0, 0, 0, 0.05);
}
#ql-floating.ql-light .ql-tab:hover {
background: rgba(0, 0, 0, 0.02);
}
#ql-floating.ql-light .ql-tab.ql-tab-active {
background: rgba(79, 70, 229, 0.08);
color: var(--ql-accent);
border: 1px solid rgba(79, 70, 229, 0.15);
}
#ql-floating.ql-light .ql-chip {
background: #ffffff;
}
#ql-floating.ql-light .ql-chip:hover {
background: var(--ql-accent-subtle);
border-color: var(--ql-accent);
}
#ql-floating.ql-light .ql-footer {
background: rgba(0, 0, 0, 0.02);
border-top-color: rgba(0, 0, 0, 0.05);
}
#ql-floating.ql-light .ql-chat-bubble {
border-color: rgba(255, 255, 255, 0.1);
}
#ql-floating.ql-light .ql-chat-date-label {
background: #ffffff;
border-color: rgba(0, 0, 0, 0.05);
}
/* ===== Saqlain layout polish: brand subtitle, community popup, high-contrast buttons ===== */
.ql-brand-copy, .ql-title-stack { display:flex; flex-direction:column; line-height:1.05; min-width:0; }
.ql-brand-name { color:var(--ql-accent); font-weight:800; }
.ql-brand-subtitle, .ql-title-stack small { margin-top:3px; font-size:9px; font-weight:800; letter-spacing:0.18em; text-transform:uppercase; color:var(--ql-text-secondary); opacity:0.95; }
.ql-title-stack small { display:block; }
.ql-community-overlay { display:flex; align-items:center; justify-content:center; position:fixed; inset:0; width:100%; height:100%; background:rgba(0,0,0,0.72); z-index:2147483647; font-family:var(--ql-font); backdrop-filter:blur(6px); }
.ql-community-modal { position:relative; width:min(360px,calc(100vw - 32px)); background:var(--ql-bg-elevated); border:1px solid var(--ql-border-hover); border-radius:var(--ql-radius); padding:26px; text-align:center; box-shadow:var(--ql-shadow-hover); color:var(--ql-text-primary); }
.ql-community-close { position:absolute; top:10px; right:12px; border:1px solid var(--ql-border); background:var(--ql-bg-surface); color:var(--ql-text-primary); width:28px; height:28px; border-radius:50%; font-size:18px; line-height:1; cursor:pointer; }
.ql-community-logo { width:58px; height:58px; margin:0 auto 10px; display:flex; align-items:center; justify-content:center; border-radius:18px; background:var(--ql-accent); color:#fff; font-size:30px; }
.ql-community-title { margin:0; color:var(--ql-text-primary); font-size:18px; font-weight:800; }
.ql-community-subtitle { margin-top:4px; margin-bottom:10px; color:var(--ql-accent); font-size:10px; font-weight:900; letter-spacing:0.24em; text-transform:uppercase; }
.ql-community-text { color:var(--ql-text-secondary); margin:0 0 18px; line-height:1.5; font-size:13px; }
.ql-community-actions { display:flex; flex-direction:column; gap:10px; width:100%; }
.ql-community-btn { width:100%; display:flex; align-items:center; justify-content:center; gap:8px; padding:12px 16px; border-radius:var(--ql-radius-sm); border:1px solid transparent; text-decoration:none; font-size:13px; font-weight:800; font-family:inherit; cursor:pointer; transition:all var(--ql-transition); }
.ql-community-btn-wa { background:#16a34a !important; color:#ffffff !important; border-color:#22c55e !important; }
.ql-community-btn-yt { background:#dc2626 !important; color:#ffffff !important; border-color:#ef4444 !important; }
.ql-community-btn:hover { transform:translateY(-1px); filter:brightness(1.08); }
.ql-community-later { margin-top:14px; background:transparent; border:none; color:var(--ql-text-secondary); text-decoration:underline; cursor:pointer; font-size:12px; font-family:inherit; }
.ql-send-btn, #ql-validate-btn, .ql-buy-btn, .ql-primary-btn, .ql-confirm-pay-btn, .ql-alert-ok-btn { background:var(--ql-accent) !important; color:#ffffff !important; }
.ql-icon-btn, .ql-tool-btn, .ql-attach-btn, .ql-support-link, .ql-method-btn { color:var(--ql-text-primary) !important; }
.ql-profile-card { background:var(--ql-bg-elevated) !important; border-color:var(--ql-border) !important; }
.ql-watermark-btn { background:#991b1b !important; border-color:#dc2626 !important; color:#ffffff !important; }
.ql-watermark-btn:hover { background:#b91c1c !important; color:#ffffff !important; }
.ql-shield-btn, .ql-native-chat-btn, .sp-btn-feature { background:var(--ql-bg-surface) !important; border-color:var(--ql-border) !important; color:var(--ql-text-primary) !important; }
.ql-shield-btn:hover, .ql-native-chat-btn:hover, .sp-btn-feature:hover { background:var(--ql-bg-hover) !important; border-color:var(--ql-accent) !important; color:#ffffff !important; }
.ql-shield-btn.ql-shield-active { background:#065f46 !important; border-color:#10b981 !important; color:#ffffff !important; }
.ql-tab.ql-tab-active { background:var(--ql-accent) !important; color:#ffffff !important; }