diff --git a/dist/css/styles.css b/dist/css/styles.css index af02dec..dc939c2 100644 --- a/dist/css/styles.css +++ b/dist/css/styles.css @@ -1,1379 +1,1973 @@ -[data-theme="dark"] { - --text-primary: var(--gray-50); - --text-secondary: var(--gray-300); - --text-tertiary: var(--gray-400); - --text-muted: var(--gray-500); - --bg-primary: var(--gray-900); - --bg-secondary: var(--gray-800); - --bg-tertiary: var(--gray-700); - --bg-elevated: var(--gray-800); - --border-primary: var(--gray-700); - --border-secondary: var(--gray-600); - --primary: #818cf8; - --primary-hover: #a5b4fc; - --primary-light: #c7d2fe; - --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .4), 0 1px 2px -1px rgb(0 0 0 / .4); - --shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .4); - --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .4); - --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .4), 0 8px 10px -6px rgb(0 0 0 / .4); - --shadow-focus: 0 0 0 3px rgb(129 140 248 / .2) +/* ===== 1. CSS VARIABLES & THEMING ===== */ +:root { + /* Core Colors */ + --primary: #6366f1; + --primary-hover: #4f46e5; + --primary-light: #a5b4fc; + --primary-dark: #3730a3; + --accent: #8b5cf6; + --success: #10b981; + --warning: #66512e; + --error: #ef4444; + --info: #2c6ace; + + /* Grayscale */ + --gray-50: #f8fafc; + --gray-100: #f1f5f9; + --gray-200: #e2e8f0; + --gray-300: #cbd5e1; + --gray-400: #94a3b8; + --gray-500: #64748b; + --gray-600: #475569; + --gray-700: #334155; + --gray-800: #1e293b; + --gray-900: #0f172a; + + /* Text Colors */ + --text-primary: var(--gray-900); + --text-secondary: var(--gray-600); + --text-tertiary: var(--gray-500); + --text-muted: var(--gray-400); + + /* Background Colors */ + --bg-primary: #fff; + --bg-secondary: var(--gray-50); + --bg-tertiary: var(--gray-100); + --bg-elevated: #fff; + + /* Borders */ + --border-primary: var(--gray-200); + --border-secondary: var(--gray-300); + --border-focus: var(--primary); + + /* Layout */ + --container-max: 1400px; + --header-height: 5rem; + --content-max: 1200px; + + /* Spacing (using CSS custom properties for consistency) */ + --space-xs: 0.25rem; + --space-sm: 0.5rem; + --space-md: 0.75rem; + --space-lg: 1rem; + --space-xl: 1.25rem; + --space-2xl: 1.5rem; + --space-3xl: 2rem; + --space-4xl: 2.5rem; + --space-5xl: 3rem; + --space-6xl: 4rem; + --space-7xl: 5rem; + --space-8xl: 6rem; + + /* Typography */ + --text-xs: 0.75rem; + --text-sm: 0.875rem; + --text-base: 1rem; + --text-lg: 1.125rem; + --text-xl: 1.25rem; + --text-2xl: 1.5rem; + --text-3xl: 1.875rem; + --text-4xl: 2.25rem; + --text-5xl: 3rem; + --text-6xl: 3.75rem; + + /* Font Weights */ + --font-light: 300; + --font-normal: 400; + --font-medium: 500; + --font-semibold: 600; + --font-bold: 700; + --font-extrabold: 800; + + /* Radius */ + --radius-sm: 0.25rem; + --radius-md: 0.5rem; + --radius-lg: 0.75rem; + --radius-xl: 1rem; + --radius-2xl: 1.5rem; + --radius-full: 9999px; + + /* Shadows */ + --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --shadow-focus: 0 0 0 3px rgb(99 102 241 / 0.15); + + /* Transitions */ + --transition-fast: 0.15s ease; + --transition-normal: 0.3s ease; + --transition-slow: 0.5s ease; } -img, -video, -canvas { - max-width: 100%; - height: auto +/* Dark Theme Variables */ +[data-theme="dark"] { + --text-primary: var(--gray-50); + --text-secondary: var(--gray-300); + --text-tertiary: var(--gray-400); + --text-muted: var(--gray-500); + --bg-primary: var(--gray-900); + --bg-secondary: var(--gray-800); + --bg-tertiary: var(--gray-700); + --bg-elevated: var(--gray-800); + --border-primary: var(--gray-700); + --border-secondary: var(--gray-600); + --primary: #818cf8; + --primary-hover: #a5b4fc; + --primary-light: #c7d2fe; + --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.4); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.4); + --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.4), 0 8px 10px -6px rgb(0 0 0 / 0.4); + --shadow-focus: 0 0 0 3px rgb(129 140 248 / 0.2); +} + +/* ===== 2. RESET & BASE STYLES ===== */ +*, *::before, *::after { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; + font-size: 16px; + line-height: 1.6; + -webkit-text-size-adjust: 100%; +} + +body { + font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + font-feature-settings: 'cv01', 'cv03', 'cv04', 'cv11'; + background: var(--bg-primary); + color: var(--text-primary); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; + min-height: 100vh; + margin: 0; + overflow-x: hidden; + display: flex; + flex-direction: column; + min-height: 100vh; +} + +svg { + max-width: 100%; + height: auto; +} + +img, video, canvas { + max-width: 100%; + height: auto; +} + +a { + color: var(--primary); + text-decoration: none; } a:hover { - color: var(--primary-hover) + color: var(--primary-hover); +} + +:focus { + outline: 2px solid var(--border-focus); + outline-offset: 2px; } :focus:not(:focus-visible) { - outline: none + outline: none; +} + +/* Accessibility */ +.skip-link { + position: absolute; + left: -9999px; + top: auto; + width: 1px; + height: 1px; + overflow: hidden; } .skip-link:focus { - position: fixed; - left: var(--space-lg); - top: var(--space-lg); - width: auto; - height: auto; - padding: var(--space-sm) var(--space-md); - background: var(--bg-primary); - color: var(--text-primary); - border: 2px solid var(--border-focus); - border-radius: var(--radius-lg); - box-shadow: var(--shadow-md); - z-index: 9999 + position: fixed; + left: var(--space-lg); + top: var(--space-lg); + width: auto; + height: auto; + padding: var(--space-sm) var(--space-md); + background: var(--bg-primary); + color: var(--text-primary); + border: 2px solid var(--border-focus); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + z-index: 9999; +} + +/* Layout */ +.page-wrapper { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.container { + max-width: var(--container-max); + margin: 0 auto; + padding: 0 var(--space-2xl); + width: 100%; +} + +.content-container { + max-width: var(--content-max); + margin: 0 auto; +} + +/* ===== 3. HEADER & NAVIGATION ===== */ +.site-header { + position: sticky; + top: 0; + z-index: 100; + background: rgba(255, 255, 255, 0.85); + backdrop-filter: blur(16px) saturate(180%); + border-bottom: 1px solid var(--border-primary); + height: var(--header-height); } [data-theme="dark"] .site-header { - background: rgba(15, 23, 42, .85) + background: rgba(15, 23, 42, 0.85); +} + +.header-content { + display: flex; + align-items: center; + justify-content: space-between; + position: relative; /* Important for containing absolutely positioned children */ + height: var(--header-height); + gap: var(--space-4xl); +} + +.site-title { + display: flex; + flex-shrink: 0; /* Prevent shrinking */ + align-items: center; + gap: var(--space-md); + font-size: var(--text-xl); + font-weight: var(--font-bold); + color: var(--text-primary); + text-decoration: none; + padding: var(--space-sm) var(--space-lg); + border-radius: var(--radius-lg); + transition: all var(--transition-fast); } .site-title:hover { - color: var(--primary); - background: var(--bg-secondary); - transform: translateY(-1px) + color: var(--primary); + background: var(--bg-secondary); + transform: translateY(-1px); } .logo-icon { - transition: transform var(--transition-normal) + width: 28px; + height: 28px; + color: var(--primary); + transition: transform var(--transition-normal); } .site-title:hover .logo-icon { - transform: rotate(-5deg) scale(1.1) + transform: rotate(-5deg) scale(1.1); +} + +/* Main Navigation (Desktop) */ +.header-nav { + display: flex; + align-items: center; + gap: var(--space-xs); + /* Fix for potential flexbox glitches with absolutely positioned children */ + position: relative; + z-index: 1; /* Ensure it's above other header content but below mobile nav */ } .nav-link { - transition: all var(--transition-fast) -} - -/* Active state (scrollspy) */ -.nav-link.active { - color: var(--primary); - background: var(--bg-secondary); - font-weight: var(--font-semibold); -} - -/* Improved hover/focus visible states */ -.nav-link:focus-visible, .btn:focus-visible, .referral-card:focus-visible, .speed-card:focus-visible, .status-card:focus-visible, .benefit-card:focus-visible { - outline: 2px solid var(--primary); - outline-offset: 2px; - box-shadow: 0 0 0 4px rgba(99 102 241 / .25); -} - -.nav-link:hover:not(.active) { - background: var(--bg-tertiary); - color: var(--text-primary); + position: relative; + display: inline-flex; + align-items: center; + padding: var(--space-md) var(--space-xl); + font-size: var(--text-sm); + font-weight: var(--font-medium); + color: var(--text-secondary); + border-radius: var(--radius-lg); + white-space: nowrap; + transition: all var(--transition-fast); } .nav-link::before { - transition: all var(--transition-fast) + content: ''; + position: absolute; + bottom: 0; + left: 50%; + width: 0; + height: 2px; + background: var(--primary); + border-radius: var(--radius-full); + transform: translateX(-50%); + transition: all var(--transition-fast); } .nav-link:hover { - color: var(--primary); - background: var(--bg-secondary) + color: var(--primary); + background: var(--bg-secondary); } .nav-link:hover::before { - width: 80% + width: 80%; } +.nav-link.active { + color: var(--primary); + background: var(--bg-secondary); + font-weight: var(--font-semibold); +} + +/* Focus Styles */ +.nav-link:focus-visible, +.btn:focus-visible, +.referral-card:focus-visible, +.speed-card:focus-visible, +.status-card:focus-visible, +.benefit-card:focus-visible { + outline: 2px solid var(--primary); + outline-offset: 2px; + box-shadow: 0 0 0 4px rgba(99 102 241 / 0.25); +} + +.nav-link:hover:not(.active) { + background: var(--bg-tertiary); + color: var(--text-primary); +} + +/* Dark Mode Toggle */ .dark-mode-toggle { - cursor: pointer; - transition: all var(--transition-fast) + display: flex; + align-items: center; + justify-content: center; + width: 44px; + height: 44px; + border: 2px solid var(--border-primary); + border-radius: var(--radius-full); + background: var(--bg-primary); + color: var(--text-primary); + flex-shrink: 0; /* Prevent shrinking */ + cursor: pointer; + transition: all var(--transition-fast); } .dark-mode-toggle:hover { - background: var(--bg-secondary); - border-color: var(--primary); - transform: scale(1.05) + background: var(--bg-secondary); + border-color: var(--primary); + transform: scale(1.05); } -/* Mobile navigation toggle */ -.nav-toggle { - display: none; - flex-direction: column; - justify-content: center; - gap: 5px; - width: 48px; - height: 48px; - background: var(--bg-primary); - border: 2px solid var(--border-primary); - border-radius: var(--radius-full); - cursor: pointer; - position: relative; - transition: all var(--transition-fast); -} -.nav-toggle-bar { - width: 22px; - height: 2px; - background: var(--text-primary); - border-radius: 2px; - transition: all var(--transition-fast); - margin: 0 auto; -} -.nav-open .nav-toggle-bar:nth-child(1){transform: translateY(7px) rotate(45deg);} -.nav-open .nav-toggle-bar:nth-child(2){opacity:0;} -.nav-open .nav-toggle-bar:nth-child(3){transform: translateY(-7px) rotate(-45deg);} - -body:not(.js-ready) .header-nav {transition:none !important;} - -.nav-overlay { - position: fixed; - inset: 0; - background: rgba(0,0,0,.4); - backdrop-filter: blur(2px); - z-index: 90; - opacity: 0; - visibility: hidden; - transition: opacity .3s; -} -.nav-open #navOverlay { - opacity: 1; - visibility: visible; +.sun-icon, +.moon-icon { + width: 20px; + height: 20px; + transition: opacity var(--transition-fast); } -/* Mobile nav panel */ -@media (max-width: 900px) { - .nav-toggle {display: inline-flex;} - .header-nav { - position: fixed; - top: var(--header-height); - right: 0; - width: min(320px, 80%); - background: var(--bg-primary); - border-left: 1px solid var(--border-primary); - border-bottom: 1px solid var(--border-primary); - box-shadow: var(--shadow-lg); - padding: var(--space-2xl) var(--space-xl) var(--space-3xl); - display: flex; - flex-direction: column; - gap: var(--space-sm); - max-height: calc(100vh - var(--header-height)); - overflow-y: auto; - transform: translate3d(100%,0,0); - transition: transform .4s cubic-bezier(.65,.05,.36,1); - z-index: 120; - } - .header-nav[data-open="true"] { - transform: translate3d(0,0,0); - } - body.nav-open {overflow:hidden;} - .nav-link {font-size: var(--text-base); padding: var(--space-md) var(--space-lg);} - .nav-link::before {display:none;} - .dark-mode-toggle {order: 3;} -} - -/* Hero meta badges */ -.hero-meta { - display: flex; - flex-wrap: wrap; - justify-content: center; - gap: var(--space-sm); - margin-bottom: var(--space-3xl); -} -.hero-badge { - --badge-bg: linear-gradient(135deg,var(--bg-secondary),var(--bg-tertiary)); - display: inline-flex; - align-items: center; - gap: .4ch; - padding: var(--space-sm) var(--space-md); - font-size: var(--text-xs); - font-weight: var(--font-medium); - letter-spacing: .05em; - text-transform: uppercase; - background: var(--badge-bg); - color: var(--text-secondary); - border: 1px solid var(--border-primary); - border-radius: var(--radius-full); - position: relative; - overflow: hidden; -} -.hero-badge::after { - content: ''; - position: absolute; - inset: 0; - background: radial-gradient(circle at 30% 30%,rgba(255,255,255,.15),transparent 60%); - opacity: .4; - pointer-events: none; -} - -/* Performance: hint GPU for frequently animated elements */ -.btn, .nav-toggle, .header-nav, .back-to-top, .benefit-card, .status-card, .referral-card, .speed-card {will-change: transform;} - -/* Reduced motion adjustments */ -@media (prefers-reduced-motion: reduce) { - .header-nav, .nav-toggle-bar, .btn::before, .benefit-card, .status-card, .referral-card, .speed-card, .back-to-top {transition: none !important; animation: none !important;} -} - -@media (max-width: 600px) { - .hero-meta {margin-bottom: var(--space-2xl);} - .hero-badge {font-size: 10px;} +.moon-icon { + display: none; } [data-theme="dark"] .sun-icon { - display: none + display: none; } [data-theme="dark"] .moon-icon { - display: block + display: block; +} + +/* Mobile Navigation Toggle */ +.nav-toggle { + display: none; + flex-direction: column; + justify-content: center; + gap: 5px; + width: 48px; + height: 48px; + background: var(--bg-primary); + border: 2px solid var(--border-primary); + border-radius: var(--radius-full); + cursor: pointer; + position: relative; + transition: all var(--transition-fast); + flex-shrink: 0; /* Prevent shrinking */ + z-index: 110; /* Ensure it's clickable above other elements */ +} + +.nav-toggle-bar { + width: 22px; + height: 2px; + background: var(--text-primary); + border-radius: 2px; + transition: all var(--transition-fast); + margin: 0 auto; + transform-origin: center; +} + +.nav-open .nav-toggle-bar:nth-child(1) { + transform: translateY(7px) rotate(45deg); +} + +.nav-open .nav-toggle-bar:nth-child(2) { + opacity: 0; +} + +.nav-open .nav-toggle-bar:nth-child(3) { + transform: translateY(-7px) rotate(-45deg); +} + +/* Mobile Navigation Menu */ +.header-nav { + /* Default styles for desktop */ + display: flex; + align-items: center; + gap: var(--space-xs); +} + +/* Mobile Navigation Overlay */ +.nav-overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.4); + backdrop-filter: blur(2px); + z-index: 90; /* Below the nav menu */ + opacity: 0; + visibility: hidden; + transition: opacity 0.3s ease; + pointer-events: none; /* Prevent interaction when hidden */ +} + +.nav-open #navOverlay { + opacity: 1; + visibility: visible; + pointer-events: auto; /* Allow interaction when visible */ +} + +/* Mobile Styles (Critical Fix Area) */ +@media (max-width: 900px) { + .nav-toggle { + display: inline-flex; /* Show the toggle button */ + } + + /* Hide desktop navigation links by default on mobile */ + .header-nav { + display: none; + } + + /* Active state for mobile navigation - Show the menu */ + .nav-open .header-nav { + display: flex; /* Make it visible */ + position: fixed; + top: var(--header-height); + right: 0; + width: min(320px, 80%); + background: var(--bg-primary); + border-left: 1px solid var(--border-primary); + border-bottom: 1px solid var(--border-primary); + box-shadow: var(--shadow-lg); + padding: var(--space-2xl) var(--space-xl) var(--space-3xl); + flex-direction: column; + gap: var(--space-sm); + max-height: calc(100vh - var(--header-height)); + overflow-y: auto; + /* Critical Fix: Use translate3d for hardware acceleration and isolation */ + transform: translate3d(100%, 0, 0); + transition: transform 0.4s cubic-bezier(0.65, 0.05, 0.36, 1); + z-index: 120; /* Above overlay */ + /* Ensure it doesn't affect the flex layout of header-content */ + position: fixed; + /* Isolate the animation context */ + will-change: transform; + } + + /* Active state for the menu being open */ + .nav-open .header-nav[data-open="true"] { + transform: translate3d(0, 0, 0); + } + + /* Prevent body scroll when menu is open */ + body.nav-open { + overflow: hidden; + } + + /* Style links for mobile */ + .nav-open .nav-link { + font-size: var(--text-base); + padding: var(--space-md) var(--space-lg); + width: 100%; + text-align: left; + } + + /* Hide the underline pseudo-element on mobile */ + .nav-open .nav-link::before { + display: none; + } + + /* Ensure the dark mode toggle is correctly placed in the header flex container */ + .dark-mode-toggle { + display: flex; + flex: 0 0 auto; /* Don't grow or shrink, keep original size */ + width: 44px; + height: 44px; + order: 3; /* Move it to the end if needed by layout */ + align-self: center; /* Align within the flex line */ + z-index: 110; /* Ensure it's clickable */ + } + + /* Disable transitions initially to prevent glitches on page load */ + body:not(.js-ready) .header-nav, + body:not(.js-ready) .nav-toggle-bar, + body:not(.js-ready) .nav-overlay { + transition: none !important; + } +} + +/* ===== 4. MAIN CONTENT SECTIONS ===== */ +/* Hero Section */ +.hero-section { + position: relative; + padding: var(--space-8xl) 0 var(--space-7xl); + background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 100%); + overflow: hidden; +} + +.hero-section::before { + content: ''; + position: absolute; + inset: 0; + background: + radial-gradient(circle at 30% 20%, rgb(99 102 241 / 0.08) 0%, transparent 50%), + radial-gradient(circle at 70% 80%, rgb(139 92 246 / 0.05) 0%, transparent 50%); } [data-theme="dark"] .hero-section::before { - background: radial-gradient(circle at 30% 20%, rgb(129 140 248 / .12) 0%, transparent 50%), radial-gradient(circle at 70% 80%, rgb(196 181 253 / .08) 0%, transparent 50%) + background: + radial-gradient(circle at 30% 20%, rgb(129 140 248 / 0.12) 0%, transparent 50%), + radial-gradient(circle at 70% 80%, rgb(196 181 253 / 0.08) 0%, transparent 50%); +} + +.hero-content { + text-align: center; + max-width: 900px; + margin: 0 auto; + position: relative; + animation: fadeInUp 0.8s ease-out; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(30px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.hero-title { + font-size: clamp(var(--text-3xl), 8vw, var(--text-6xl)); + font-weight: var(--font-extrabold); + line-height: 1.1; + margin: 0 0 var(--space-2xl); + color: var(--text-primary); + letter-spacing: -0.02em; +} + +.gradient-text { + background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } [data-theme="dark"] .gradient-text { - background: linear-gradient(135deg, var(--primary-light) 0%, #c4b5fd 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text + background: linear-gradient(135deg, var(--primary-light) 0%, #c4b5fd 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } -.btn::before { - transition: left .5s +.hero-description { + font-size: clamp(var(--text-lg), 4vw, var(--text-xl)); + color: var(--text-secondary); + margin: 0 0 var(--space-5xl); + max-width: 700px; + margin-left: auto; + margin-right: auto; + line-height: 1.6; } -.btn:hover::before { - left: 100% +.hero-actions { + display: flex; + gap: var(--space-lg); + justify-content: center; + margin-bottom: var(--space-6xl); + flex-wrap: wrap; } -.btn-primary:hover { - background: linear-gradient(135deg, var(--primary-hover) 0%, var(--primary) 100%); - transform: translateY(-2px); - box-shadow: var(--shadow-lg) +.hero-stats { + display: flex; + gap: var(--space-5xl); + justify-content: center; + flex-wrap: wrap; } -.btn-secondary:hover { - border-color: var(--primary); - color: var(--primary); - background: var(--bg-secondary); - transform: translateY(-2px); - box-shadow: var(--shadow-md) +.stat-item { + text-align: center; + position: relative; +} + +.stat-item:not(:last-child)::after { + content: ''; + position: absolute; + right: calc(-1 * var(--space-2xl)); + top: 50%; + transform: translateY(-50%); + width: 1px; + height: 50px; + background: var(--border-primary); +} + +.stat-number { + display: block; + font-size: clamp(var(--text-3xl), 6vw, var(--text-5xl)); + font-weight: var(--font-extrabold); + margin-bottom: var(--space-sm); + background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.stat-label { + font-size: var(--text-sm); + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.1em; + font-weight: var(--font-medium); +} + +/* Section General Styles */ +.section { + padding: var(--space-6xl) 0; + position: relative; } .section:nth-child(even) { - background: var(--bg-secondary) + background: var(--bg-secondary); } +.section-header { + text-align: center; + margin-bottom: var(--space-2xl); +} + +.section-title { + font-size: clamp(var(--text-3xl), 6vw, var(--text-5xl)); + font-weight: var(--font-extrabold); + margin: 0 0 var(--space-2xl); + color: var(--text-primary); + letter-spacing: -0.02em; +} + +.section-description { + font-size: clamp(var(--text-base), 3vw, var(--text-xl)); + color: var(--text-secondary); + margin: 0; + max-width: 800px; + margin-inline: auto; + line-height: 1.7; +} + +.meta-chips { + display: flex; + gap: var(--space-sm); + justify-content: center; + margin-top: var(--space-xl); + flex-wrap: wrap; +} + +.chip { + display: inline-flex; + align-items: center; + gap: var(--space-xs); + padding: var(--space-sm) var(--space-lg); + border-radius: var(--radius-full); + background: var(--bg-secondary); + color: var(--text-secondary); + border: 1px solid var(--border-primary); + font-size: var(--text-xs); + font-weight: var(--font-medium); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +/* ===== 5. COMPONENTS ===== */ +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + gap: var(--space-sm); + padding: var(--space-lg) var(--space-3xl); + border: 2px solid transparent; + border-radius: var(--radius-xl); + font-size: var(--text-base); + font-weight: var(--font-semibold); + text-decoration: none; + position: relative; + overflow: hidden; + min-width: 160px; + justify-content: center; + transition: all var(--transition-fast); + will-change: transform; +} + +.btn::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: left 0.5s; +} + +.btn:hover::before { + left: 100%; +} + +.btn-primary { + background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); + color: white; + box-shadow: var(--shadow-md); +} + +.btn-primary:hover { + background: linear-gradient(135deg, var(--primary-hover) 0%, var(--primary) 100%); + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.btn-secondary { + background: transparent; + color: var(--text-primary); + border: 2px solid var(--border-primary); +} + +.btn-secondary:hover { + border-color: var(--primary); + color: var(--primary); + background: var(--bg-secondary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} + +/* Benefit Cards */ .features-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); - gap: var(--space-lg) + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: var(--space-lg); } .benefit-card { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding: var(--space-2xl); - background: var(--bg-elevated); - border: 1px solid var(--border-primary); - border-radius: var(--radius-lg); - transition: all var(--transition-normal); - min-height: 160px; - justify-content: center + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + padding: var(--space-2xl); + background: var(--bg-elevated); + border: 1px solid var(--border-primary); + border-radius: var(--radius-lg); + transition: all var(--transition-normal); + min-height: 160px; + justify-content: center; + will-change: transform; } .benefit-card:hover { - border-color: var(--primary); - transform: translateY(-2px); - box-shadow: var(--shadow-md) + border-color: var(--primary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } .benefit-card .icon-badge { - width: 40px; - height: 40px; - color: var(--primary); - margin-bottom: var(--space-lg); - transition: transform var(--transition-normal) + width: 40px; + height: 40px; + color: var(--primary); + margin-bottom: var(--space-lg); + transition: transform var(--transition-normal); } .benefit-card:hover .icon-badge { - transform: scale(1.05) + transform: scale(1.05); } .benefit-card h3 { - margin: 0 0 var(--space-sm); - font-size: var(--text-base); - font-weight: var(--font-semibold); - color: var(--text-primary) + margin: 0 0 var(--space-sm); + font-size: var(--text-base); + font-weight: var(--font-semibold); + color: var(--text-primary); } .benefit-card p { - margin: 0; - color: var(--text-secondary); - font-size: var(--text-xs); - line-height: 1.4 + margin: 0; + color: var(--text-secondary); + font-size: var(--text-xs); + line-height: 1.4; } +/* Alerts */ .alert { - display: flex; - align-items: flex-start; - gap: var(--space-md); - padding: var(--space-xl); - border-radius: var(--radius-xl); - margin: var(--space-xl) 0; - border: 1px solid var(--border-primary) + display: flex; + align-items: flex-start; + gap: var(--space-md); + padding: var(--space-xl); + border-radius: var(--radius-xl); + margin: var(--space-xl) 0; + border: 1px solid var(--border-primary); } .alert-info { - background: rgba(59, 130, 246, .08); - border-color: rgba(59, 130, 246, .2); - color: var(--info) + background: rgba(59, 130, 246, 0.08); + border-color: rgba(59, 130, 246, 0.2); + color: var(--info); } .alert-warning { - background: rgba(245, 158, 11, .08); - border-color: rgba(44, 35, 19, .2); - color: var(--warning) + background: rgba(245, 158, 11, 0.08); + border-color: rgba(44, 35, 19, 0.2); + color: var(--warning); } .alert-icon { - flex-shrink: 0; - width: 24px; - height: 24px; - margin-top: 2px + flex-shrink: 0; + width: 24px; + height: 24px; + margin-top: 2px; } +/* Speed Section */ .speed-section { - background: var(--bg-secondary); - border-radius: var(--radius-2xl); - border: 1px solid var(--border-primary); - padding: var(--space-4xl); - margin: var(--space-3xl) 0 + background: var(--bg-secondary); + border-radius: var(--radius-2xl); + border: 1px solid var(--border-primary); + padding: var(--space-4xl); + margin: var(--space-3xl) 0; } .speed-header { - text-align: center; - margin-bottom: var(--space-3xl) + text-align: center; + margin-bottom: var(--space-3xl); } .speed-header h3 { - margin: 0 0 var(--space-md); - font-size: var(--text-2xl); - font-weight: var(--font-bold); - color: var(--text-primary) + margin: 0 0 var(--space-md); + font-size: var(--text-2xl); + font-weight: var(--font-bold); + color: var(--text-primary); } .speed-header p { - margin: 0; - color: var(--text-secondary); - max-width: 600px; - margin-inline: auto + margin: 0; + color: var(--text-secondary); + max-width: 600px; + margin-inline: auto; } .speed-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: var(--space-lg) + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: var(--space-lg); } .speed-card { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: var(--space-sm); - padding: var(--space-xl); - background: var(--bg-primary); - border: 1px solid var(--border-primary); - border-radius: var(--radius-lg); - text-decoration: none; - transition: all var(--transition-normal); - min-height: 120px + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: var(--space-sm); + padding: var(--space-xl); + background: var(--bg-primary); + border: 1px solid var(--border-primary); + border-radius: var(--radius-lg); + text-decoration: none; + transition: all var(--transition-normal); + min-height: 120px; + will-change: transform; } .speed-card:hover { - border-color: var(--primary); - transform: translateY(-2px); - box-shadow: var(--shadow-md) + border-color: var(--primary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } .speed-card .service-name { - font-weight: var(--font-semibold); - color: var(--text-primary); - font-size: var(--text-base) + font-weight: var(--font-semibold); + color: var(--text-primary); + font-size: var(--text-base); } .speed-card .speed-test-label { - font-size: var(--text-sm); - color: var(--text-secondary) + font-size: var(--text-sm); + color: var(--text-secondary); } +/* Important Notes */ .important-notes-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); - gap: var(--space-xl) + display: grid; + grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); + gap: var(--space-xl); } .note-card { - display: flex; - gap: var(--space-lg); - padding: var(--space-2xl); - background: var(--bg-elevated); - border: 1px solid var(--border-primary); - border-radius: var(--radius-lg); - transition: all var(--transition-normal) + display: flex; + gap: var(--space-lg); + padding: var(--space-2xl); + background: var(--bg-elevated); + border: 1px solid var(--border-primary); + border-radius: var(--radius-lg); + transition: all var(--transition-normal); } .note-card:hover { - border-color: var(--primary); - transform: translateY(-2px); - box-shadow: var(--shadow-md) + border-color: var(--primary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } .note-icon { - width: 24px; - height: 24px; - color: var(--primary); - flex-shrink: 0; - margin-top: 2px + width: 24px; + height: 24px; + color: var(--primary); + flex-shrink: 0; + margin-top: 2px; } .note-content h3 { - margin: 0 0 var(--space-sm); - font-size: var(--text-lg); - font-weight: var(--font-semibold); - color: var(--text-primary) + margin: 0 0 var(--space-sm); + font-size: var(--text-lg); + font-weight: var(--font-semibold); + color: var(--text-primary); } .note-content p { - margin: 0; - color: var(--text-secondary); - font-size: var(--text-sm); - line-height: 1.5 + margin: 0; + color: var(--text-secondary); + font-size: var(--text-sm); + line-height: 1.5; } +/* Resources */ .resources-categories { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(500px, 1fr)); - gap: var(--space-5xl) + display: grid; + grid-template-columns: repeat(auto-fit, minmax(500px, 1fr)); + gap: var(--space-5xl); } .resource-category { - background: var(--bg-elevated); - border-radius: var(--radius-2xl); - padding: var(--space-4xl); - border: 1px solid var(--border-primary); - box-shadow: var(--shadow-sm) + background: var(--bg-elevated); + border-radius: var(--radius-2xl); + padding: var(--space-4xl); + border: 1px solid var(--border-primary); + box-shadow: var(--shadow-sm); } .resource-category h3 { - margin: 0 0 var(--space-2xl); - font-size: var(--text-2xl); - font-weight: var(--font-bold); - color: var(--primary); - display: flex; - align-items: center; - gap: var(--space-md) + margin: 0 0 var(--space-2xl); + font-size: var(--text-2xl); + font-weight: var(--font-bold); + color: var(--primary); + display: flex; + align-items: center; + gap: var(--space-md); } .resource-category-icon { - width: 28px; - height: 28px + width: 28px; + height: 28px; } .resource-list { - display: grid; - gap: var(--space-lg) + display: grid; + gap: var(--space-lg); } .resource-item { - display: block; - padding: var(--space-xl); - background: var(--bg-secondary); - border: 1px solid var(--border-primary); - border-radius: var(--radius-lg); - text-decoration: none; - transition: all var(--transition-normal) + display: block; + padding: var(--space-xl); + background: var(--bg-secondary); + border: 1px solid var(--border-primary); + border-radius: var(--radius-lg); + text-decoration: none; + transition: all var(--transition-normal); } .resource-item:hover { - transform: translateY(-2px); - box-shadow: var(--shadow-md); - border-color: var(--primary); - background: var(--bg-primary) + transform: translateY(-2px); + box-shadow: var(--shadow-md); + border-color: var(--primary); + background: var(--bg-primary); } .resource-item strong { - display: block; - color: var(--text-primary); - font-weight: var(--font-semibold); - margin-bottom: var(--space-sm); - font-size: var(--text-base) + display: block; + color: var(--text-primary); + font-weight: var(--font-semibold); + margin-bottom: var(--space-sm); + font-size: var(--text-base); } .resource-item span { - color: var(--text-secondary); - font-size: var(--text-sm); - line-height: 1.5 + color: var(--text-secondary); + font-size: var(--text-sm); + line-height: 1.5; } +/* Data Tables */ .data-table-container { - background: var(--bg-elevated); - border-radius: var(--radius-2xl); - box-shadow: var(--shadow-lg); - border: 1px solid var(--border-primary); - margin: var(--space-3xl) 0; - overflow: hidden + background: var(--bg-elevated); + border-radius: var(--radius-2xl); + box-shadow: var(--shadow-lg); + border: 1px solid var(--border-primary); + margin: var(--space-3xl) 0; + overflow: hidden; } .table-wrapper { - overflow-x: auto; - border-radius: var(--radius-2xl) + overflow-x: auto; + border-radius: var(--radius-2xl); } table { - width: 100%; - border-collapse: collapse; - font-size: var(--text-sm); - min-width: 600px + width: 100%; + border-collapse: collapse; + font-size: var(--text-sm); + min-width: 600px; } th, td { - padding: var(--space-lg) var(--space-xl); - text-align: left; - border-bottom: 1px solid var(--border-primary) + padding: var(--space-lg) var(--space-xl); + text-align: left; + border-bottom: 1px solid var(--border-primary); } th { - background: var(--primary); - color: white; - font-weight: var(--font-semibold); - text-transform: uppercase; - letter-spacing: .05em; - font-size: var(--text-xs); - position: sticky; - top: 0; - z-index: 10 + background: var(--primary); + color: white; + font-weight: var(--font-semibold); + text-transform: uppercase; + letter-spacing: 0.05em; + font-size: var(--text-xs); + position: sticky; + top: 0; + z-index: 10; } tr:hover { - background: var(--bg-secondary) + background: var(--bg-secondary); } .pricing-table .service-name { - color: inherit; + color: inherit; } #file-hosts-table tr:nth-child(even), .enhanced-table tr:nth-child(even), .pricing-table tr:nth-child(even) { - background-color: var(--bg-tertiary); + background-color: var(--bg-tertiary); } #file-hosts-table th:first-child, #file-hosts-table td:first-child { - position: sticky; - left: 0; - z-index: 2; - box-shadow: 2px 0 6px -4px rgba(0, 0, 0, .06); + position: sticky; + left: 0; + z-index: 2; + box-shadow: 2px 0 6px -4px rgba(0, 0, 0, 0.06); } #file-hosts-table td:first-child { - background-color: var(--bg-primary); + background-color: var(--bg-primary); } .filter-results { - text-align: center; - padding: .1em; - font-size: var(--text-sm); - color: var(--text-secondary); - font-family: 'Courier New', Courier, monospace; + text-align: center; + padding: 0.1em; + font-size: var(--text-sm); + color: var(--text-secondary); + font-family: 'Courier New', Courier, monospace; } +/* Search */ .search-section { - margin-bottom: var(--space-4xl) + margin-bottom: var(--space-4xl); } .search-container { - position: relative; - max-width: 500px; - margin: 0 auto + position: relative; + max-width: 500px; + margin: 0 auto; } .search-icon { - position: absolute; - left: var(--space-lg); - top: 50%; - transform: translateY(-50%); - color: var(--text-tertiary); - width: 20px; - height: 20px + position: absolute; + left: var(--space-lg); + top: 50%; + transform: translateY(-50%); + color: var(--text-tertiary); + width: 20px; + height: 20px; } .search-input { - width: 100%; - padding: var(--space-lg) var(--space-5xl) var(--space-lg) var(--space-5xl); - border: 2px solid var(--border-primary); - border-radius: var(--radius-full); - font-size: var(--text-base); - background: var(--bg-primary); - color: var(--text-primary); - outline: none; - transition: all var(--transition-fast) + width: 100%; + padding: var(--space-lg) var(--space-5xl) var(--space-lg) var(--space-5xl); + border: 2px solid var(--border-primary); + border-radius: var(--radius-full); + font-size: var(--text-base); + background: var(--bg-primary); + color: var(--text-primary); + outline: none; + transition: all var(--transition-fast); } .search-input:focus { - border-color: var(--primary); - box-shadow: 0 0 0 3px rgba(99, 102, 241, .1) + border-color: var(--primary); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } .clear-icon { - position: absolute; - right: var(--space-lg); - top: 50%; - transform: translateY(-50%); - background: none; - border: none; - color: var(--text-tertiary); - cursor: pointer; - padding: var(--space-sm); - border-radius: var(--radius-md); - opacity: 0; - visibility: hidden; - transition: all var(--transition-fast); - width: 20px; - height: 20px + position: absolute; + right: var(--space-lg); + top: 50%; + transform: translateY(-50%); + background: none; + border: none; + color: var(--text-tertiary); + cursor: pointer; + padding: var(--space-sm); + border-radius: var(--radius-md); + opacity: 0; + visibility: hidden; + transition: all var(--transition-fast); + width: 20px; + height: 20px; } -.search-input:not(:placeholder-shown)+.clear-icon { - opacity: 1; - visibility: visible +.search-input:not(:placeholder-shown) + .clear-icon { + opacity: 1; + visibility: visible; } .clear-icon:hover { - background: var(--bg-secondary); - color: var(--text-primary) + background: var(--bg-secondary); + color: var(--text-primary); } +/* Status Grid */ .status-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: var(--space-xl) + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: var(--space-xl); } .status-card { - display: flex; - flex-direction: column; - padding: var(--space-2xl); - background: var(--bg-primary); - border: 1px solid var(--border-primary); - border-radius: var(--radius-xl); - text-decoration: none; - transition: all var(--transition-normal); - min-height: 120px + display: flex; + flex-direction: column; + padding: var(--space-2xl); + background: var(--bg-primary); + border: 1px solid var(--border-primary); + border-radius: var(--radius-xl); + text-decoration: none; + transition: all var(--transition-normal); + min-height: 120px; + will-change: transform; } .status-card:hover { - border-color: var(--primary); - transform: translateY(-2px); - box-shadow: var(--shadow-lg) + border-color: var(--primary); + transform: translateY(-2px); + box-shadow: var(--shadow-lg); } .status-header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: var(--space-md) + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--space-md); } .service-name { - font-weight: var(--font-semibold); - color: var(--text-primary) + font-weight: var(--font-semibold); + color: var(--text-primary); } .service-status-indicator { - width: 12px; - height: 12px; - border-radius: var(--radius-full); - background: var(--success); - box-shadow: 0 0 0 2px rgba(16, 185, 129, .2) + width: 12px; + height: 12px; + border-radius: var(--radius-full); + background: var(--success); + box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.2); } .status-card p { - margin: 0; - color: var(--text-secondary); - font-size: var(--text-sm); - line-height: 1.5 + margin: 0; + color: var(--text-secondary); + font-size: var(--text-sm); + line-height: 1.5; } +/* Referral Section */ .referral-section { - margin: var(--space-6xl) 0; - padding: var(--space-4xl); - background: var(--bg-secondary); - border-radius: var(--radius-2xl); - border: 1px solid var(--border-primary); - text-align: center + margin: var(--space-6xl) 0; + padding: var(--space-4xl); + background: var(--bg-secondary); + border-radius: var(--radius-2xl); + border: 1px solid var(--border-primary); + text-align: center; } .referral-header h3 { - margin: 0 0 var(--space-md); - color: var(--text-primary); - font-size: var(--text-2xl); - font-weight: var(--font-bold) + margin: 0 0 var(--space-md); + color: var(--text-primary); + font-size: var(--text-2xl); + font-weight: var(--font-bold); } .referral-header p { - margin: 0 auto var(--space-2xl); - color: var(--text-secondary); - max-width: 600px + margin: 0 auto var(--space-2xl); + color: var(--text-secondary); + max-width: 600px; } .referral-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); - gap: var(--space-lg); - justify-items: center + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: var(--space-lg); + justify-items: center; } .referral-card { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: var(--space-sm); - padding: var(--space-xl); - background: var(--bg-primary); - border: 1px solid var(--border-primary); - border-radius: var(--radius-lg); - text-decoration: none; - width: 100%; - max-width: 200px; - transition: all var(--transition-normal); - min-height: 100px + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: var(--space-sm); + padding: var(--space-xl); + background: var(--bg-primary); + border: 1px solid var(--border-primary); + border-radius: var(--radius-lg); + text-decoration: none; + width: 100%; + max-width: 200px; + transition: all var(--transition-normal); + min-height: 100px; + will-change: transform; } .referral-card:hover { - border-color: var(--primary); - transform: translateY(-2px); - box-shadow: var(--shadow-md) + border-color: var(--primary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } .referral-card .service-name { - font-weight: var(--font-semibold); - color: var(--text-primary); - font-size: var(--text-base) + font-weight: var(--font-semibold); + color: var(--text-primary); + font-size: var(--text-base); } .referral-badge, .speed-test-label { - font-size: var(--text-xs); - color: var(--primary); - background: rgba(99, 102, 241, .1); - padding: var(--space-xs) var(--space-sm); - border-radius: var(--radius-md); - font-weight: var(--font-medium); - text-transform: uppercase; - letter-spacing: .05em + font-size: var(--text-xs); + color: var(--primary); + background: rgba(99, 102, 241, 0.1); + padding: var(--space-xs) var(--space-sm); + border-radius: var(--radius-md); + font-weight: var(--font-medium); + text-transform: uppercase; + letter-spacing: 0.05em; } +/* Compare Section */ .compare-controls { - display: flex; - align-items: end; - gap: var(--space-2xl); - margin-bottom: var(--space-4xl); - flex-wrap: wrap + display: flex; + align-items: end; + gap: var(--space-2xl); + margin-bottom: var(--space-4xl); + flex-wrap: wrap; } .compare-select-group { - flex: 1; - min-width: 250px + flex: 1; + min-width: 250px; } .compare-select-group label { - display: block; - margin-bottom: var(--space-sm); - font-weight: var(--font-medium); - color: var(--text-primary) + display: block; + margin-bottom: var(--space-sm); + font-weight: var(--font-medium); + color: var(--text-primary); } .select-wrapper { - position: relative + position: relative; } select { - width: 100%; - padding: var(--space-md) var(--space-4xl) var(--space-md) var(--space-lg); - border: 2px solid var(--border-primary); - border-radius: var(--radius-lg); - background: var(--bg-primary); - color: var(--text-primary); - font-size: var(--text-base); - cursor: pointer; - appearance: none; - transition: all var(--transition-fast) + width: 100%; + padding: var(--space-md) var(--space-4xl) var(--space-md) var(--space-lg); + border: 2px solid var(--border-primary); + border-radius: var(--radius-lg); + background: var(--bg-primary); + color: var(--text-primary); + font-size: var(--text-base); + cursor: pointer; + appearance: none; + transition: all var(--transition-fast); } select:focus { - outline: none; - border-color: var(--primary); - box-shadow: 0 0 0 3px rgba(99, 102, 241, .1) + outline: none; + border-color: var(--primary); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } .select-wrapper::after { - content: ''; - position: absolute; - right: var(--space-lg); - top: 50%; - transform: translateY(-50%); - width: 0; - height: 0; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-top: 5px solid var(--text-tertiary); - pointer-events: none + content: ''; + position: absolute; + right: var(--space-lg); + top: 50%; + transform: translateY(-50%); + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid var(--text-tertiary); + pointer-events: none; } .compare-vs { - flex-shrink: 0; - font-size: var(--text-lg); - font-weight: var(--font-bold); - color: var(--primary); - background: var(--bg-secondary); - padding: var(--space-md) var(--space-xl); - border-radius: var(--radius-lg); - border: 2px solid var(--border-primary); - margin-bottom: var(--space-sm) + flex-shrink: 0; + font-size: var(--text-lg); + font-weight: var(--font-bold); + color: var(--primary); + background: var(--bg-secondary); + padding: var(--space-md) var(--space-xl); + border-radius: var(--radius-lg); + border: 2px solid var(--border-primary); + margin-bottom: var(--space-sm); } .empty-state { - text-align: center; - padding: var(--space-6xl) + text-align: center; + padding: var(--space-6xl); } .empty-state-icon { - width: 64px; - height: 64px; - color: var(--text-tertiary); - margin: 0 auto var(--space-xl) + width: 64px; + height: 64px; + color: var(--text-tertiary); + margin: 0 auto var(--space-xl); } .empty-state h3 { - margin: 0 0 var(--space-md); - font-size: var(--text-xl); - color: var(--text-primary); - font-weight: var(--font-semibold) + margin: 0 0 var(--space-md); + font-size: var(--text-xl); + color: var(--text-primary); + font-weight: var(--font-semibold); } .empty-state p { - margin: 0; - color: var(--text-secondary) + margin: 0; + color: var(--text-secondary); } .loading-state { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: var(--space-5xl); - color: var(--text-secondary) + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: var(--space-5xl); + color: var(--text-secondary); } .loading-spinner { - width: 32px; - height: 32px; - border: 3px solid var(--border-primary); - border-top: 3px solid var(--primary); - border-radius: var(--radius-full); - animation: spin 1s linear infinite; - margin-bottom: var(--space-lg) + width: 32px; + height: 32px; + border: 3px solid var(--border-primary); + border-top: 3px solid var(--primary); + border-radius: var(--radius-full); + animation: spin 1s linear infinite; + margin-bottom: var(--space-lg); } @keyframes spin { - 0% { - transform: rotate(0deg) - } - - 100% { - transform: rotate(360deg) - } -} - - /* Footer */ - .site-footer { - background: var(--bg-secondary); - border-top: 1px solid var(--border-primary); - padding: var(--space-7xl) 0 var(--space-4xl); - margin-top: auto; - } - - .footer-content { - display: grid; - grid-template-columns: 2fr 1fr 1fr 1fr; - gap: var(--space-5xl); - margin-bottom: var(--space-5xl); - } - - .footer-section h4, - .footer-section h5 { - margin: 0 0 var(--space-xl); - font-size: var(--text-lg); - font-weight: var(--font-semibold); - color: var(--text-primary); - } - - .footer-section h5 { - font-size: var(--text-base); - margin-bottom: var(--space-lg); - } - - .footer-brand { - display: flex; - align-items: center; - gap: var(--space-md); - margin-bottom: var(--space-lg); - } - - .footer-logo { - width: 32px; - height: 32px; - color: var(--primary); - } - - .footer-brand h4 { - margin: 0; - font-size: var(--text-xl); - font-weight: var(--font-bold); - } - - .footer-description { - margin: 0 0 var(--space-xl); - color: var(--text-secondary); - line-height: 1.6; - max-width: 300px; - } - - .footer-stats { - display: flex; - gap: var(--space-lg); - flex-wrap: wrap; - } - - .footer-stat { - display: inline-flex; - align-items: center; - padding: var(--space-xs) var(--space-md); - background: var(--bg-primary); - border: 1px solid var(--border-primary); - border-radius: var(--radius-full); - font-size: var(--text-xs); - font-weight: var(--font-medium); - color: var(--text-secondary); - text-transform: uppercase; - letter-spacing: 0.05em; - } - - .footer-links { - list-style: none; - padding: 0; - margin: 0; - } - - .footer-links li { - margin-bottom: var(--space-md); - } - - .footer-links a { - color: var(--text-secondary); - text-decoration: none; - transition: color var(--transition-fast); - font-size: var(--text-sm); - line-height: 1.5; - } - - .footer-links a:hover { - color: var(--primary); - } - - .footer-bottom { - padding-top: var(--space-4xl); - border-top: 1px solid var(--border-primary); - } - - .footer-bottom-content { - display: flex; - justify-content: space-between; - align-items: flex-end; - gap: var(--space-3xl); - } - - .footer-left p { - margin: 0 0 var(--space-sm); - color: var(--text-tertiary); - font-size: var(--text-sm); - } - - .footer-disclaimer { - font-size: var(--text-xs) !important; - color: var(--text-muted) !important; - font-style: italic; - } - - .footer-left a { - color: var(--primary); - text-decoration: none; - } - - .footer-left a:hover { - text-decoration: underline; - } - - .footer-right { - text-align: right; - } - - .footer-meta { - display: flex; - align-items: center; - gap: var(--space-lg); - } - - .last-updated { - font-size: var(--text-xs); - color: var(--text-muted); - } - - .github-link { - display: flex; - align-items: center; - justify-content: center; - width: 36px; - height: 36px; - background: var(--bg-primary); - border: 1px solid var(--border-primary); - border-radius: var(--radius-md); - color: var(--text-secondary); - text-decoration: none; - transition: all var(--transition-fast); - } - - .github-link:hover { - background: var(--primary); - color: white; - border-color: var(--primary); - transform: translateY(-1px); - box-shadow: var(--shadow-md); - }.back-to-top.visible { - opacity: 1; - visibility: visible; - transform: translateY(0) -} - -.back-to-top:hover { - background: var(--primary-hover); - transform: translateY(-2px); - box-shadow: var(--shadow-xl) + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } } +/* Comparison Specific Styles */ .comparison-header { - display: flex; - flex-direction: column; - gap: var(--space-lg); - padding: var(--space-2xl); - background: var(--bg-elevated); - border: 1px solid var(--border-primary); - border-radius: var(--radius-lg); - margin-bottom: var(--space-2xl) + display: flex; + flex-direction: column; + gap: var(--space-lg); + padding: var(--space-2xl); + background: var(--bg-elevated); + border: 1px solid var(--border-primary); + border-radius: var(--radius-lg); + margin-bottom: var(--space-2xl); } .comparison-header h3 { - margin: 0; - font-size: var(--text-xl); - font-weight: var(--font-semibold); - color: var(--text-primary); - text-align: center + margin: 0; + font-size: var(--text-xl); + font-weight: var(--font-semibold); + color: var(--text-primary); + text-align: center; } .comparison-stats { - display: flex; - justify-content: center; - gap: var(--space-2xl); - flex-wrap: wrap + display: flex; + justify-content: center; + gap: var(--space-2xl); + flex-wrap: wrap; } .comparison-stats .stat { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - min-width: 80px + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + min-width: 80px; } .comparison-stats .stat-label { - font-size: var(--text-xs); - color: var(--text-secondary); - margin-bottom: var(--space-xs); - text-transform: uppercase; - letter-spacing: .05em; - font-weight: var(--font-medium) + font-size: var(--text-xs); + color: var(--text-secondary); + margin-bottom: var(--space-xs); + text-transform: uppercase; + letter-spacing: 0.05em; + font-weight: var(--font-medium); } .comparison-stats .stat-value { - font-size: var(--text-lg); - font-weight: var(--font-bold); - color: var(--primary) + font-size: var(--text-lg); + font-weight: var(--font-bold); + color: var(--primary); } .comparison-actions { - display: flex; - justify-content: center; - gap: var(--space-md) + display: flex; + justify-content: center; + gap: var(--space-md); } .comparison-actions .btn { - padding: var(--space-sm) var(--space-lg); - font-size: var(--text-sm); - min-width: auto + padding: var(--space-sm) var(--space-lg); + font-size: var(--text-sm); + min-width: auto; } .comparison-filters { - display: flex; - justify-content: center; - gap: var(--space-lg); - padding: var(--space-lg); - background: var(--bg-secondary); - border-radius: var(--radius-md); - margin-bottom: var(--space-2xl); - flex-wrap: wrap + display: flex; + justify-content: center; + gap: var(--space-lg); + padding: var(--space-lg); + background: var(--bg-secondary); + border-radius: var(--radius-md); + margin-bottom: var(--space-2xl); + flex-wrap: wrap; } .comparison-filters .filter-option { - display: flex; - align-items: center; - gap: var(--space-sm); - cursor: pointer; - font-size: var(--text-sm); - font-weight: var(--font-medium); - color: var(--text-secondary); - transition: color var(--transition-fast) + display: flex; + align-items: center; + gap: var(--space-sm); + cursor: pointer; + font-size: var(--text-sm); + font-weight: var(--font-medium); + color: var(--text-secondary); + transition: color var(--transition-fast); } .comparison-filters .filter-option:hover { - color: var(--text-primary) + color: var(--text-primary); } .comparison-filters input[type="radio"] { - width: 16px; - height: 16px; - margin: 0; - cursor: pointer + width: 16px; + height: 16px; + margin: 0; + cursor: pointer; } -.comparison-filters input[type="radio"]:checked+span { - color: var(--primary); - font-weight: var(--font-semibold) +.comparison-filters input[type="radio"]:checked + span { + color: var(--primary); + font-weight: var(--font-semibold); } .comparison-table { - width: 100%; - border-collapse: collapse; - margin-top: var(--space-lg) + width: 100%; + border-collapse: collapse; + margin-top: var(--space-lg); } .comparison-table th, .comparison-table td { - padding: var(--space-md); - text-align: center; - border-bottom: 1px solid var(--border-primary) + padding: var(--space-md); + text-align: center; + border-bottom: 1px solid var(--border-primary); } .comparison-table th { - background: var(--bg-secondary); - font-weight: var(--font-semibold); - color: var(--text-primary) + background: var(--bg-secondary); + font-weight: var(--font-semibold); + color: var(--text-primary); } .comparison-table .provider-header { - font-size: var(--text-lg); - font-weight: var(--font-bold) + font-size: var(--text-lg); + font-weight: var(--font-bold); } .comparison-row:hover { - background: var(--bg-secondary) + background: var(--bg-secondary); } .comparison-hiding { - opacity: 0; - transform: scale(.95); - transition: all var(--transition-normal) + opacity: 0; + transform: scale(0.95); + transition: all var(--transition-normal); } -@media (max-width:1024px) { - .resources-categories { - grid-template-columns: 1fr - } +/* ===== 6. FOOTER ===== */ +.site-footer { + background: var(--bg-secondary); + border-top: 1px solid var(--border-primary); + padding: var(--space-7xl) 0 var(--space-4xl); + margin-top: auto; } -@media (max-width:768px) { - .features-grid { - grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); - gap: var(--space-md) - } - - .benefit-card { - padding: var(--space-lg); - min-height: 140px - } - - .benefit-card .icon-badge { - width: 32px; - height: 32px; - margin-bottom: var(--space-md) - } - - .benefit-card h3 { - font-size: var(--text-sm) - } - - .comparison-header { - padding: var(--space-lg); - gap: var(--space-md) - } - - .comparison-stats { - gap: var(--space-lg) - } - - .comparison-filters { - flex-direction: column; - gap: var(--space-md); - align-items: center - } - - .compare-controls { - flex-direction: column; - gap: var(--space-xl) - } - - .compare-select-group { - min-width: 100% - } - - .important-notes-grid { - grid-template-columns: 1fr - } - - .age-verification-actions { - flex-direction: column - } - - .stepper li { - flex-direction: column; - text-align: center; - gap: var(--space-md) - } - - .footer-content { - grid-template-columns: repeat(2, 1fr); - gap: var(--space-xl) - } - - .footer-brand h3 { - font-size: var(--text-lg) - } +.footer-content { + display: grid; + grid-template-columns: 2fr 1fr 1fr 1fr; + gap: var(--space-5xl); + margin-bottom: var(--space-5xl); } -@media (max-width:480px) { - .features-grid { - grid-template-columns: 1fr; - gap: var(--space-lg) - } - - .benefit-card { - padding: var(--space-xl); - min-height: auto - } - - .comparison-header h3 { - font-size: var(--text-lg) - } - - .comparison-stats { - flex-direction: column; - gap: var(--space-md) - } - - .comparison-filters { - gap: var(--space-sm) - } - - .footer-content { - grid-template-columns: 1fr; - gap: var(--space-lg) - } - - .footer-brand { - text-align: center; - padding-bottom: var(--space-lg); - border-bottom: 1px solid rgba(var(--text-rgb), 0.1); - margin-bottom: var(--space-lg) - } - - .footer-links { - justify-content: center - } - - .footer-links h4 { - text-align: center; - margin-bottom: var(--space-md) - } - - .footer-bottom { - text-align: center - } +.footer-section h4, +.footer-section h5 { + margin: 0 0 var(--space-xl); + font-size: var(--text-lg); + font-weight: var(--font-semibold); + color: var(--text-primary); } +.footer-section h5 { + font-size: var(--text-base); + margin-bottom: var(--space-lg); +} + +.footer-brand { + display: flex; + align-items: center; + gap: var(--space-md); + margin-bottom: var(--space-lg); +} + +.footer-logo { + width: 32px; + height: 32px; + color: var(--primary); +} + +.footer-brand h4 { + margin: 0; + font-size: var(--text-xl); + font-weight: var(--font-bold); +} + +.footer-description { + margin: 0 0 var(--space-xl); + color: var(--text-secondary); + line-height: 1.6; + max-width: 300px; +} + +.footer-stats { + display: flex; + gap: var(--space-lg); + flex-wrap: wrap; +} + +.footer-stat { + display: inline-flex; + align-items: center; + padding: var(--space-xs) var(--space-md); + background: var(--bg-primary); + border: 1px solid var(--border-primary); + border-radius: var(--radius-full); + font-size: var(--text-xs); + font-weight: var(--font-medium); + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.footer-links { + list-style: none; + padding: 0; + margin: 0; +} + +.footer-links li { + margin-bottom: var(--space-md); +} + +.footer-links a { + color: var(--text-secondary); + text-decoration: none; + transition: color var(--transition-fast); + font-size: var(--text-sm); + line-height: 1.5; +} + +.footer-links a:hover { + color: var(--primary); +} + +.footer-bottom { + padding-top: var(--space-4xl); + border-top: 1px solid var(--border-primary); +} + +.footer-bottom-content { + display: flex; + justify-content: space-between; + align-items: flex-end; + gap: var(--space-3xl); +} + +.footer-left p { + margin: 0 0 var(--space-sm); + color: var(--text-tertiary); + font-size: var(--text-sm); +} + +.footer-disclaimer { + font-size: var(--text-xs) !important; + color: var(--text-muted) !important; + font-style: italic; +} + +.footer-left a { + color: var(--primary); + text-decoration: none; +} + +.footer-left a:hover { + text-decoration: underline; +} + +.footer-right { + text-align: right; +} + +.footer-meta { + display: flex; + align-items: center; + gap: var(--space-lg); +} + +.last-updated { + font-size: var(--text-xs); + color: var(--text-muted); +} + +.github-link { + display: flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + background: var(--bg-primary); + border: 1px solid var(--border-primary); + border-radius: var(--radius-md); + color: var(--text-secondary); + text-decoration: none; + transition: all var(--transition-fast); +} + +.github-link:hover { + background: var(--primary); + color: white; + border-color: var(--primary); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +/* ===== 7. UTILITY & GLOBAL COMPONENTS ===== */ +/* Back to Top Button */ +.back-to-top { + position: fixed; + bottom: var(--space-2xl); + right: var(--space-2xl); + width: 48px; + height: 48px; + background: var(--primary); + color: white; + border: none; + border-radius: var(--radius-full); + display: flex; + align-items: center; + justify-content: center; + box-shadow: var(--shadow-lg); + opacity: 0; + visibility: hidden; + transform: translateY(20px); + z-index: 50; + transition: all var(--transition-normal); + will-change: transform; +} + +.back-to-top.visible { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +.back-to-top:hover { + background: var(--primary-hover); + transform: translateY(-2px); + box-shadow: var(--shadow-xl); +} + +/* ===== 8. MEDIA QUERIES ===== */ +/* Large Desktop */ +@media (max-width: 1024px) { + .container { + padding: 0 var(--space-xl); + } + + .resources-categories { + grid-template-columns: 1fr; + } +} + +/* Tablet */ +@media (max-width: 768px) { + .header-nav { + display: none; + } + + .hero-actions { + flex-direction: column; + align-items: center; + } + + .hero-stats { + gap: var(--space-2xl); + } + + .features-grid { + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: var(--space-md); + } + + .benefit-card { + padding: var(--space-lg); + min-height: 140px; + } + + .benefit-card .icon-badge { + width: 32px; + height: 32px; + margin-bottom: var(--space-md); + } + + .benefit-card h3 { + font-size: var(--text-sm); + } + + .comparison-header { + padding: var(--space-lg); + gap: var(--space-md); + } + + .comparison-stats { + gap: var(--space-lg); + } + + .comparison-filters { + flex-direction: column; + gap: var(--space-md); + align-items: center; + } + + .compare-controls { + flex-direction: column; + gap: var(--space-xl); + } + + .compare-select-group { + min-width: 100%; + } + + .important-notes-grid { + grid-template-columns: 1fr; + } + + .footer-content { + grid-template-columns: repeat(2, 1fr); + gap: var(--space-xl); + } + + .footer-brand h3 { + font-size: var(--text-lg); + } +} + +/* Mobile */ +@media (max-width: 480px) { + .container { + padding: 0 var(--space-lg); + } + + .section { + padding: var(--space-4xl) 0; + } + + .stat-item:not(:last-child)::after { + display: none; + } + + .features-grid { + grid-template-columns: 1fr; + gap: var(--space-lg); + } + + .benefit-card { + padding: var(--space-xl); + min-height: auto; + } + + .comparison-header h3 { + font-size: var(--text-lg); + } + + .comparison-stats { + flex-direction: column; + gap: var(--space-md); + } + + .comparison-filters { + gap: var(--space-sm); + } + + .footer-content { + grid-template-columns: 1fr; + gap: var(--space-lg); + } + + .footer-brand { + text-align: center; + padding-bottom: var(--space-lg); + border-bottom: 1px solid rgba(var(--text-rgb), 0.1); + margin-bottom: var(--space-lg); + } + + .footer-links { + justify-content: center; + } + + .footer-links h4 { + text-align: center; + margin-bottom: var(--space-md); + } + + .footer-bottom { + text-align: center; + } + + .hero-meta { + margin-bottom: var(--space-2xl); + } + + .hero-badge { + font-size: 10px; + } +} + +/* Print Styles */ @media print { + .site-header, + .hero-section, + .referral-section, + .site-footer, + .back-to-top, + .dark-mode-toggle { + display: none !important; + } - .site-header, - .hero-section, - .referral-section, - .site-footer, - .back-to-top, - .dark-mode-toggle { - display: none !important - } - - .section { - page-break-inside: avoid - } + .section { + page-break-inside: avoid; + } } -@media (pointer:coarse) { +/* Reduced Motion */ +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } - .nav-link:hover, - .btn:hover, - .status-card:hover, - .benefit-card:hover { - transform: none - } + html { + scroll-behavior: auto; + } + + .header-nav, + .nav-toggle-bar, + .btn::before, + .benefit-card, + .status-card, + .referral-card, + .speed-card, + .back-to-top { + transition: none !important; + animation: none !important; + } +} + +/* High Contrast */ +@media (prefers-contrast: high) { + :root { + --border-primary: #000; + --text-secondary: #000; + } +} + +/* Coarse Pointer (Touch Devices) */ +@media (pointer: coarse) { + .nav-link:hover, + .btn:hover, + .status-card:hover, + .benefit-card:hover { + transform: none; + } } \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 18aefc8..36543ef 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,73 +1,84 @@ + - - - Debrid Services Comparison - Compare Pricing & Hosts - - - - - + + - - - + Debrid Services Comparison - Compare Pricing & Hosts + + + + + - - - - - - - + + + - - - - - + + + + + + + - - - - - - - - + + + + + - - - - - - - - - - - + + + + + - + + + + + + + + + + + + + + + + + - + + +
@@ -76,11 +87,12 @@
- + Debrid Comparison -
@@ -119,7 +132,8 @@ Compare Premium Debrid Services

- A community-driven, up-to-date comparison of premium debrid services: pricing, host support, refund policies, and performance. + A community-driven, up-to-date comparison of premium debrid services: pricing, host support, + refund policies, and performance.

View Pricing @@ -146,7 +160,8 @@

What are Debrid Services?

- Debrid services (a.k.a. premium link generators) act as a high‑speed intermediary: they fetch the file from a host, then serve you a fast, ad‑free direct link. + Debrid services (a.k.a. premium link generators) act as a high‑speed intermediary: they + fetch the file from a host, then serve you a fast, ad‑free direct link.

Premium link generator @@ -158,42 +173,39 @@
- - + +

Maximum Speeds

Bypass host throttling with direct links

- - - + + +

Multi‑Host Access

One subscription supports hundreds of hosts

- - - - -

Streaming Ready

-

Instant playback on supported hosts

-
-
- - - - - + + + + +

Torrent‑to‑Link

Add magnet/torrent and get a direct URL

- - - + + +

Ad‑Free

No popups, countdowns, or captchas

@@ -201,11 +213,13 @@
@@ -217,50 +231,60 @@

Pricing Comparison

-

Compare subscription plans across all major debrid services

+

Compare subscription plans across all major debrid services +

-
+

Loading pricing data...

- +

Support This Project

-

Consider using our referral links - it helps maintain this project at no extra cost to you!

+

Consider using our referral links - it helps maintain this project at no extra cost + to you!

- + AllDebrid Referral Link - + Real-Debrid Referral Link - - + + LinkSnappy Referral Link - + Debrid-Link Referral Link - + Deepbrid Referral Link @@ -276,28 +300,33 @@

Supported File Hosts

-

Browse and search through 300+ supported file hosting services

+

Browse and search through 300+ supported file hosting + services

-
-
+

Loading file hosts...

@@ -313,7 +342,8 @@

Compare Services

-

Select two services to see a detailed side-by-side comparison

+

Select two services to see a detailed side-by-side comparison +

@@ -338,11 +368,12 @@
- - - - - + + + + +

Ready to Compare

Select two services above to see a detailed comparison

@@ -358,28 +389,35 @@

Adult Content Hosts

- Support for adult content varies significantly across debrid services. Some platforms actively support major adult file hosts, while others exclude them entirely due to policy or legal considerations. + Support for adult content varies significantly across debrid services. Some platforms + actively support major adult file hosts, while others exclude them entirely due to + policy or legal considerations.

- - - - +
-
+ @@ -528,82 +583,101 @@

Important Notes

- This project aims to provide accurate and up-to-date information, but the debrid service landscape is dynamic. + This project aims to provide accurate and up-to-date information, but the debrid service + landscape is dynamic.

- - + +

Services change frequently

-

Pricing, host support, refund policies, and features may be updated without notice. Always verify details on the official service websites before purchasing.

+

Pricing, host support, refund policies, and features may be updated without + notice. Always verify details on the official service websites + before purchasing.

- - + +

Final cost may vary

-

Displayed prices are subject to exchange rates, regional taxes, or payment processing fees. Your actual charge may differ slightly.

+

Displayed prices are subject to exchange rates, regional taxes, or payment + processing fees. Your actual charge may differ slightly.

- - - - - + + + + +

Data accuracy

-

While we strive for completeness, this comparison reflects community reports and public information. We do not guarantee uptime, speed, download success, or feature availability.

+

While we strive for completeness, this comparison reflects community reports and + public information. We do not guarantee uptime, speed, download + success, or feature availability.

- - - - + + + +

No affiliation

-

This project is independent and not affiliated with any listed service.

+

This project is independent and not affiliated with any listed + service.

- - - - - + + + + +

Use at your own discretion

-

Choosing a debrid service involves personal judgment. Test short-term plans first and review terms carefully.

+

Choosing a debrid service involves personal judgment. Test short-term plans first + and review terms carefully.

- - - + + +

Legal responsibility

-

Debrid services are tools. You are responsible for complying with copyright laws and terms of use when accessing content.

+

Debrid services are tools. You are responsible for complying with copyright laws + and terms of use when accessing content.

@@ -615,73 +689,91 @@

Useful Resources and Community

-

Enhance your debrid experience with these trusted tools, guides, and communities

+

Enhance your debrid experience with these trusted tools, + guides, and communities

- - - - + + + + Community and Support

Reddit - Active discussions on r/Debrid, r/Piracy and service-specific threads + Active discussions on r/Debrid, r/Piracy and service-specific + threads
Discord - Many services offer official Discord servers for real-time support and status updates + Many services offer official Discord servers for real-time support and + status updates
GitHub Issues - Report inaccuracies or suggest improvements here — this project thrives on community input! + Report inaccuracies or suggest improvements here — this project thrives on + community input!
@@ -695,13 +787,14 @@ - +