/* ANyONe Extension v2 - Common Components */ @import url('variables.css'); /* Reset & Base */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: var(--font-family); font-size: var(--font-size-md); color: var(--color-text-primary); background-color: var(--color-bg-primary); line-height: 1.5; -webkit-font-smoothing: antialiased; } /* Typography */ h1, h2, h3, h4 { font-weight: var(--font-weight-semibold); color: var(--color-text-primary); } h1 { font-size: var(--font-size-2xl); } h2 { font-size: var(--font-size-xl); } h3 { font-size: var(--font-size-lg); } h4 { font-size: var(--font-size-md); } .text-muted { color: var(--color-text-muted); } .text-secondary { color: var(--color-text-secondary); } .text-success { color: var(--color-success); } .text-error { color: var(--color-error); } .text-warning { color: var(--color-warning); } /* Cards */ .card { background: var(--color-bg-secondary); border-radius: var(--radius-lg); padding: var(--spacing-md); border: 1px solid var(--color-border); } .card-header { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: var(--spacing-md); } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--spacing-sm); padding: var(--spacing-md) var(--spacing-lg); font-size: var(--font-size-md); font-weight: var(--font-weight-medium); border: none; border-radius: var(--radius-md); cursor: pointer; transition: all var(--transition-fast); text-decoration: none; } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn .icon { width: 16px; height: 16px; } .btn-primary { background: var(--color-primary); color: var(--color-text-primary); } .btn-primary:hover:not(:disabled) { background: var(--color-primary-light); box-shadow: var(--shadow-glow); } .btn-secondary { background: var(--color-bg-tertiary); color: var(--color-text-primary); border: 1px solid var(--color-border); } .btn-secondary:hover:not(:disabled) { background: var(--color-bg-hover); border-color: var(--color-border-light); } .btn-success { background: var(--color-success); color: var(--color-bg-primary); } .btn-success:hover:not(:disabled) { background: var(--color-secondary-light); box-shadow: var(--shadow-glow-success); } .btn-icon { width: 40px; height: 40px; padding: 0; border-radius: var(--radius-md); } .btn-sm { padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-sm); } .btn-lg { padding: var(--spacing-lg) var(--spacing-xl); font-size: var(--font-size-lg); } /* Connect Button (Special) */ .btn-connect { width: 120px; height: 120px; border-radius: 50%; background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark)); color: var(--color-text-primary); font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); border: 3px solid var(--color-primary-light); transition: all var(--transition-normal); } .btn-connect:hover:not(:disabled) { transform: scale(1.05); box-shadow: var(--shadow-glow); } .btn-connect.connected { background: linear-gradient(135deg, var(--color-success), var(--color-secondary-dark)); border-color: var(--color-secondary-light); } .btn-connect.connected:hover:not(:disabled) { box-shadow: var(--shadow-glow-success); } .btn-connect.connecting { animation: pulse 1.5s infinite; } @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } } /* Inputs */ .input { width: 100%; padding: var(--spacing-md); font-size: var(--font-size-md); font-family: var(--font-family); color: var(--color-text-primary); background: var(--color-bg-tertiary); border: 1px solid var(--color-border); border-radius: var(--radius-md); transition: all var(--transition-fast); } .input:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(3, 189, 197, 0.2); } .input::placeholder { color: var(--color-text-muted); } .input-group { margin-bottom: var(--spacing-md); } .input-label { display: block; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-secondary); margin-bottom: var(--spacing-xs); } /* Select / Dropdown */ .select { width: 100%; padding: var(--spacing-md); font-size: var(--font-size-md); font-family: var(--font-family); color: var(--color-text-primary); background: var(--color-bg-tertiary); border: 1px solid var(--color-border); border-radius: var(--radius-md); cursor: pointer; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238B8CA7' d='M6 8L1 3h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 36px; } .select:focus { outline: none; border-color: var(--color-primary); } /* Toggle Switch */ .toggle { position: relative; display: inline-block; width: 48px; height: 26px; cursor: pointer; flex-shrink: 0; } .toggle input { opacity: 0; width: 0; height: 0; position: absolute; } .toggle-slider { position: absolute; top: 0; left: 0; width: 48px; height: 26px; background: var(--color-bg-tertiary); border: 1px solid var(--color-border); border-radius: 13px; transition: all var(--transition-fast); overflow: visible; } .toggle-slider::before { content: ''; position: absolute; width: 18px; height: 18px; left: 3px; top: 3px; background: var(--color-text-muted); border-radius: 50%; transition: all var(--transition-fast); } .toggle input:checked + .toggle-slider { background: var(--color-primary); border-color: var(--color-primary); } .toggle input:checked + .toggle-slider::before { left: 25px; background: var(--color-text-primary); } /* Mode Tabs */ .mode-tabs { display: flex; background: var(--color-bg-tertiary); border-radius: var(--radius-full); padding: 4px; gap: 4px; overflow: hidden; } .mode-tab { flex: 1; padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-text-muted); background: transparent; border: none; border-radius: 9999px; cursor: pointer; transition: color var(--transition-fast), background var(--transition-fast); outline: none; -webkit-appearance: none; appearance: none; } .mode-tab:hover:not(.active) { color: var(--color-text-secondary); background: var(--color-bg-hover); } .mode-tab:focus { outline: none; } .mode-tab.active { background: var(--color-primary); color: var(--color-text-primary); } /* Badge */ .badge { display: inline-flex; align-items: center; padding: 2px 8px; font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); border-radius: var(--radius-full); background: var(--color-bg-tertiary); color: var(--color-text-secondary); } .badge-success { background: rgba(2, 175, 80, 0.15); color: var(--color-success); } .badge-warning { background: rgba(243, 156, 18, 0.15); color: var(--color-warning); } .badge-error { background: rgba(231, 76, 60, 0.15); color: var(--color-error); } /* Divider */ .divider { height: 1px; background: var(--color-border); margin: var(--spacing-lg) 0; } /* Loading Spinner */ .spinner { width: 20px; height: 20px; border: 2px solid var(--color-bg-tertiary); border-top-color: var(--color-primary); border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Utility Classes */ .flex { display: flex; } .flex-col { flex-direction: column; } .items-center { align-items: center; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .flex-wrap { flex-wrap: wrap; } .gap-xs { gap: var(--spacing-xs); } .gap-sm { gap: var(--spacing-sm); } .gap-md { gap: var(--spacing-md); } .gap-lg { gap: var(--spacing-lg); } .w-full { width: 100%; } .text-center { text-align: center; } .mt-sm { margin-top: var(--spacing-sm); } .mt-md { margin-top: var(--spacing-md); } .mt-lg { margin-top: var(--spacing-lg); } .mb-sm { margin-bottom: var(--spacing-sm); } .mb-md { margin-bottom: var(--spacing-md); } .mb-lg { margin-bottom: var(--spacing-lg); }