johnysigma 2e28314d52 v2.0.0 - Complete extension redesign
Features:
- New modern dark UI with gradient accents
- Hostname support for custom proxy (e.g. relayup.local)
- Full private IP range bypass (10.x, 172.16-31.x, 192.168.x)
- WebRTC Leak Protection setting
- Kill Switch - block traffic if proxy disconnects
- Auto-connect on browser startup
- Custom proxy authentication (username/password)
- Bypass list for custom exceptions
- Local Network Access for printers, NAS, routers, etc
- Multiple proxy sources with automatic fallback (Arweave → GitBros → GitHub)
- Arweave as default proxy source for decentralized, permanent storage
- Auto-update interval for proxy list
2026-01-23 16:54:51 +02:00

494 lines
9.4 KiB
CSS

/* ANyONe Extension v2 - Popup Styles */
@import url('common.css');
/* Popup Container */
html {
width: 320px;
height: 600px;
margin: 0;
overflow: hidden;
scrollbar-width: none;
}
html::-webkit-scrollbar {
display: none;
}
body {
width: 320px;
height: 600px;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
scrollbar-width: none;
}
body::-webkit-scrollbar {
display: none;
}
.popup-container {
display: flex;
flex-direction: column;
width: 320px;
height: 600px;
max-height: 600px;
padding: var(--spacing-md);
box-sizing: border-box;
overflow: hidden !important;
}
/* Header */
.popup-header {
text-align: center;
padding: var(--spacing-sm) 0;
margin-bottom: var(--spacing-md);
}
.logo {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: var(--spacing-xs);
}
.logo-img {
height: 32px;
width: auto;
filter: drop-shadow(0 0 12px rgba(3, 189, 197, 0.5));
}
.logo-subtitle {
font-size: var(--font-size-xs);
color: var(--color-text-muted);
text-transform: uppercase;
letter-spacing: 2px;
}
/* Icons */
.icon {
width: 18px;
height: 18px;
stroke: currentColor;
flex-shrink: 0;
}
.icon-chevron {
width: 16px;
height: 16px;
color: var(--color-text-muted);
transition: transform var(--transition-fast);
}
/* Status Circle */
.status-circle {
display: inline-block;
width: 32px;
height: 32px;
border-radius: 50%;
border: 3px solid var(--color-error);
background: rgba(231, 76, 60, 0.1);
transition: all var(--transition-fast);
}
.status-circle.online {
border-color: var(--color-success);
background: rgba(2, 175, 80, 0.1);
box-shadow: 0 0 12px rgba(2, 175, 80, 0.4);
}
.status-circle.checking {
border-color: var(--color-warning);
background: rgba(243, 156, 18, 0.1);
animation: pulse-status 1.5s ease-in-out infinite;
}
@keyframes pulse-status {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.1); opacity: 0.7; }
}
/* Mode Selection */
.mode-section {
margin-bottom: var(--spacing-lg);
}
/* Mode Content */
.mode-content {
display: none;
}
.mode-content.active {
display: block;
margin-bottom: var(--spacing-sm);
}
.mode-content .card {
height: 140px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
/* Proxy Info Card */
.proxy-info-card {
margin-bottom: var(--spacing-sm);
}
.proxy-info {
margin-bottom: var(--spacing-md);
}
.proxy-info-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: var(--spacing-xs) 0;
}
.proxy-info-label {
font-size: var(--font-size-sm);
color: var(--color-text-muted);
}
.proxy-info-value {
font-size: var(--font-size-sm);
font-weight: var(--font-weight-medium);
color: var(--color-text-primary);
}
.proxy-info-value.muted {
color: var(--color-text-muted);
font-weight: var(--font-weight-normal);
}
.proxy-actions {
display: flex;
gap: var(--spacing-sm);
}
.proxy-actions .btn {
flex: 1;
}
/* Connect Button Section */
.connect-section {
display: flex;
justify-content: center;
padding: var(--spacing-lg) 0 var(--spacing-sm) 0;
}
.connect-btn {
position: relative;
width: 100px;
height: 100px;
border-radius: 50%;
background: var(--color-bg-tertiary);
border: none;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all var(--transition-normal);
overflow: visible;
}
.connect-btn-ring {
position: absolute;
inset: -4px;
border-radius: 50%;
border: 3px solid var(--color-border-light);
opacity: 0.6;
transition: all var(--transition-normal);
}
.connect-btn-icon {
width: 100px;
height: 100px;
filter: grayscale(100%) brightness(0.6);
transition: all var(--transition-normal);
}
.connect-btn:hover {
transform: scale(1.05);
box-shadow: 0 0 30px rgba(139, 140, 167, 0.3);
}
.connect-btn:hover .connect-btn-ring {
opacity: 1;
}
/* Connected State */
.connect-btn.connected {
background: rgba(2, 175, 80, 0.1);
}
.connect-btn.connected .connect-btn-ring {
border-color: var(--color-success);
box-shadow: 0 0 20px rgba(2, 175, 80, 0.4);
opacity: 1;
}
.connect-btn.connected .connect-btn-icon {
filter: grayscale(100%) brightness(0.6) sepia(100%) hue-rotate(70deg) saturate(500%);
}
.connect-btn.connected:hover {
box-shadow: 0 0 40px rgba(2, 175, 80, 0.4);
}
/* Connecting State */
.connect-btn.connecting .connect-btn-ring {
border-color: var(--color-warning);
animation: pulse-ring 1.5s ease-in-out infinite;
}
.connect-btn.connecting .connect-btn-icon {
filter: grayscale(100%) brightness(0.6) sepia(100%) hue-rotate(0deg) saturate(500%);
animation: pulse-icon 1.5s ease-in-out infinite;
}
/* Error State */
.connect-btn.error .connect-btn-ring {
border-color: var(--color-error);
box-shadow: 0 0 20px rgba(231, 76, 60, 0.4);
}
.connect-btn.error .connect-btn-icon {
filter: grayscale(100%) brightness(0.5) sepia(100%) hue-rotate(-50deg) saturate(600%);
}
/* Blocked State (Kill Switch) */
.connect-btn.blocked {
background: rgba(231, 76, 60, 0.15);
}
.connect-btn.blocked .connect-btn-ring {
border-color: var(--color-error);
box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);
animation: pulse-blocked 1s ease-in-out infinite;
}
.connect-btn.blocked .connect-btn-icon {
filter: grayscale(100%) brightness(0.5) sepia(100%) hue-rotate(-50deg) saturate(600%);
}
@keyframes pulse-blocked {
0%, 100% {
transform: scale(1);
box-shadow: 0 0 20px rgba(231, 76, 60, 0.6);
}
50% {
transform: scale(1.05);
box-shadow: 0 0 30px rgba(231, 76, 60, 0.8);
}
}
@keyframes pulse-ring {
0%, 100% {
transform: scale(1);
opacity: 0.6;
}
50% {
transform: scale(1.1);
opacity: 1;
}
}
@keyframes pulse-icon {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
/* Status Card */
.status-card {
background: transparent;
padding: var(--spacing-sm);
margin-top: var(--spacing-sm);
margin-bottom: var(--spacing-sm);
height: 100px;
}
.status-main {
display: flex;
align-items: center;
justify-content: center;
}
.status-dot-container {
display: none;
}
.status-dot-container .status-dot {
width: 16px;
height: 16px;
border-radius: 50%;
margin: 0;
transition: all var(--transition-fast);
}
.status-dot-container .status-dot.online {
background: var(--color-success);
box-shadow: 0 0 12px rgba(2, 175, 80, 0.6);
}
.status-dot-container .status-dot.offline {
background: var(--color-error);
box-shadow: 0 0 8px rgba(231, 76, 60, 0.4);
}
.status-dot-container .status-dot.connecting {
background: var(--color-warning);
box-shadow: 0 0 12px rgba(243, 156, 18, 0.6);
animation: pulse-dot 1.5s ease-in-out infinite;
}
.status-dot-container .status-dot.error {
background: var(--color-error);
box-shadow: 0 0 12px rgba(231, 76, 60, 0.6);
}
.status-dot-container .status-dot.blocked {
background: var(--color-error);
box-shadow: 0 0 12px rgba(231, 76, 60, 0.8);
animation: pulse-blocked-dot 1s ease-in-out infinite;
}
@keyframes pulse-blocked-dot {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.3); }
}
@keyframes pulse-dot {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.2); opacity: 0.7; }
}
.status-info {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 2px;
}
.status-text {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
}
.status-card.error .status-text {
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
color: var(--color-error);
}
.status-card.connected .status-text {
color: var(--color-success);
}
.status-card.connecting .status-text {
color: var(--color-warning);
}
.status-card.disconnected .status-text {
color: var(--color-text-muted);
}
.status-card.blocked .status-text {
color: var(--color-error);
animation: blink-text 1s ease-in-out infinite;
}
@keyframes blink-text {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.status-ip {
font-size: var(--font-size-sm);
color: var(--color-text-muted);
}
/* Custom Form Labels */
.custom-form .input-label {
color: var(--color-text-muted);
font-weight: normal;
}
/* Quick Actions */
.quick-actions {
display: flex;
gap: var(--spacing-sm);
padding: var(--spacing-sm) 0;
}
.quick-action {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
padding: var(--spacing-sm) var(--spacing-xs);
background: var(--color-bg-secondary);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
cursor: pointer;
transition: all var(--transition-fast);
}
.quick-action:hover {
background: var(--color-bg-tertiary);
border-color: var(--color-border-light);
}
.quick-action .icon {
width: 18px;
height: 18px;
color: var(--color-text-secondary);
transition: color var(--transition-fast);
}
.quick-action:hover .icon {
color: var(--color-primary);
}
.quick-action .icon.spinning {
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.quick-action-label {
font-size: var(--font-size-xs);
color: var(--color-text-muted);
}
/* Custom Proxy Form */
.custom-form {
display: flex;
flex-direction: column;
gap: var(--spacing-md);
}
.input-row {
display: flex;
gap: var(--spacing-md);
}
.input-row .input-group {
flex: 1;
margin-bottom: 0;
}
.input-row .input-group.port {
flex: 0 0 80px;
}