@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap'); :root { /* Light theme */ --background: 0 0% 100%; --foreground: 222.2 84% 4.9%; --card: 0 0% 100%; --card-foreground: 222.2 84% 4.9%; --popover: 0 0% 100%; --popover-foreground: 222.2 84% 4.9%; --primary: 222.2 47.4% 11.2%; --primary-foreground: 210 40% 98%; --secondary: 210 40% 96.1%; --secondary-foreground: 222.2 47.4% 11.2%; --muted: 210 40% 96.1%; --muted-foreground: 215.4 16.3% 46.9%; --accent: 210 40% 96.1%; --accent-foreground: 222.2 47.4% 11.2%; --destructive: 0 84.2% 60.2%; --destructive-foreground: 210 40% 98%; --border: 214.3 31.8% 91.4%; --input: 214.3 31.8% 91.4%; --ring: 222.2 84% 4.9%; --radius: 0.5rem; } .dark { /* Dark theme */ --background: 222.2 84% 4.9%; --foreground: 210 40% 98%; --card: 222.2 84% 4.9%; --card-foreground: 210 40% 98%; --popover: 222.2 84% 4.9%; --popover-foreground: 210 40% 98%; --primary: 210 40% 98%; --primary-foreground: 222.2 47.4% 11.2%; --secondary: 217.2 32.6% 17.5%; --secondary-foreground: 210 40% 98%; --muted: 217.2 32.6% 17.5%; --muted-foreground: 215 20.2% 65.1%; --accent: 217.2 32.6% 17.5%; --accent-foreground: 210 40% 98%; --destructive: 0 62.8% 30.6%; --destructive-foreground: 210 40% 98%; --border: 217.2 32.6% 17.5%; --input: 217.2 32.6% 17.5%; --ring: 212.7 26.8% 83.9%; } /* Base styles */ body { font-family: 'Inter', sans-serif; background-color: hsl(var(--background)); color: hsl(var(--foreground)); transition: background-color 0.3s ease, color 0.3s ease; } /* Tabs styling */ .tabs { display: flex; gap: 1rem; border-bottom: 1px solid hsl(var(--border)); margin-bottom: 2rem; overflow-x: auto; padding-bottom: 0.5rem; } .tab { padding: 0.75rem 1.5rem; border-radius: var(--radius); cursor: pointer; transition: all 0.3s ease; white-space: nowrap; display: flex; align-items: center; gap: 0.5rem; background: transparent; color: hsl(var(--foreground)); border: none; } .tab:hover { background-color: hsl(var(--accent)); color: hsl(var(--accent-foreground)); } .tab.active { background-color: hsl(var(--primary)); color: hsl(var(--primary-foreground)); } .tab-content { display: none; } .tab-content.active { display: block; animation: fadeIn 0.3s ease-out; } /* Cards styling */ .settings-card { background-color: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: 1.5rem; margin-bottom: 1.5rem; } .settings-card-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.5rem; } .settings-card-title { font-size: 1.25rem; font-weight: 600; color: hsl(var(--card-foreground)); } /* Form elements */ .form-group { margin-bottom: 1.5rem; } .form-control { width: 100%; padding: 0.75rem; border-radius: var(--radius); border: 1px solid hsl(var(--border)); background-color: hsl(var(--background)); color: hsl(var(--foreground)); transition: border-color 0.3s ease; } .form-control:focus { outline: none; border-color: hsl(var(--ring)); box-shadow: 0 0 0 2px hsl(var(--ring) / 0.2); } /* Switch toggle */ .switch { position: relative; display: inline-block; width: 3.5rem; height: 2rem; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: hsl(var(--muted)); transition: .4s; border-radius: 2rem; } .slider:before { position: absolute; content: ""; height: 1.5rem; width: 1.5rem; left: 0.25rem; bottom: 0.25rem; background-color: white; transition: .4s; border-radius: 50%; } input:checked + .slider { background-color: hsl(var(--primary)); } input:checked + .slider:before { transform: translateX(1.5rem); } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.75rem 1.5rem; border-radius: var(--radius); font-weight: 500; transition: all 0.3s ease; cursor: pointer; border: none; } .btn-primary { background-color: hsl(var(--primary)); color: hsl(var(--primary-foreground)); } .btn-secondary { background-color: hsl(var(--secondary)); color: hsl(var(--secondary-foreground)); } .btn-icon { padding: 0.5rem; border-radius: 50%; } /* IP List */ .ip-entry { display: flex; gap: 0.5rem; margin-bottom: 0.5rem; } /* Path List */ .path-entry { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem 1rem; background-color: hsl(var(--secondary)); border-radius: var(--radius); margin-bottom: 0.5rem; } /* Log Levels */ .log-level-btn { padding: 0.5rem 1rem; border-radius: var(--radius); background-color: hsl(var(--secondary)); color: hsl(var(--secondary-foreground)); transition: all 0.3s ease; } .log-level-btn.active { background-color: hsl(var(--primary)); color: hsl(var(--primary-foreground)); } /* Fixed bottom bar */ .fixed-bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; padding: 1rem; background-color: hsl(var(--background)); border-top: 1px solid hsl(var(--border)); z-index: 50; } /* Theme switcher */ .theme-switcher { position: fixed; top: 1rem; right: 1rem; padding: 0.75rem; border-radius: 50%; background-color: hsl(var(--secondary)); color: hsl(var(--secondary-foreground)); cursor: pointer; transition: all 0.3s ease; z-index: 50; } .theme-switcher:hover { background-color: hsl(var(--accent)); } /* Nested settings */ .nested-settings { margin-top: 1rem; padding-left:padding-left: 1.5rem; border-left: 2px solid hsl(var(--border)); animation: fadeIn 0.3s ease-out; } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeOut { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-10px); } } /* Responsive adjustments */ @media (max-width: 768px) { .tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 0.5rem; } .tab { padding: 0.5rem 1rem; font-size: 0.875rem; } .settings-card { padding: 1rem; } .fixed-bottom-bar { padding: 0.75rem; } .btn { padding: 0.5rem 1rem; font-size: 0.875rem; } } /* Dark mode adjustments */ .dark .form-control { background-color: hsl(var(--input)); } .dark .settings-card { background-color: hsl(var(--card)); } /* Utility classes */ .hidden { display: none; } .animate { animation: fadeIn 0.3s ease-out; } .fade-out { animation: fadeOut 0.3s ease-out forwards; } /* Modal styles */ .modal-common-paths { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: hsl(var(--background)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: 1.5rem; max-width: 500px; width: 90%; max-height: 80vh; overflow-y: auto; z-index: 1000; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); } .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 999; }