dmitriyvpn/styles.css
2026-10-24 14:50:48 +03:00

1597 lines
36 KiB
CSS

/* ==========================================================================
Surfshark Design System Implementation for DmitriyVPN
Theme: Light mode consumer-SaaS by default with Dark mode toggle
Tokens & specifications as defined in DESIGN.md
========================================================================== */
:root {
/* Colors */
--color-surfshark-teal: #1ebfbf;
--color-coral-pulse: #fa3556;
--color-promo-gold: #ffc200;
--color-charcoal-ink: #16191c;
--color-pure-white: #ffffff;
--color-fog-white: #f9f9f9;
--color-tide-tint: #e8f7f8;
--color-ash-gray: #dadadd;
--color-mist-gray: #bfbfc0;
--color-slate: #5b6065;
--color-graphite: #393e41;
--color-carbon: #000000;
--color-deep-abyss: #1e2327;
/* Typography — Font Families (Inter exclusively) */
--font-inter: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
/* Typography — Scale */
--text-caption: 12px;
--leading-caption: 1.5;
--tracking-caption: 0.17px;
--text-body-sm: 14px;
--leading-body-sm: 1.71;
--tracking-body-sm: 0.24px;
--text-body: 16px;
--leading-body: 1.75;
--text-subheading: 18px;
--leading-subheading: 1.67;
--text-heading-sm: 24px;
--leading-heading-sm: 1.33;
--text-heading: 32px;
--leading-heading: 1.3;
--text-heading-lg: 40px;
--leading-heading-lg: 1.21;
--text-display: 60px;
--leading-display: 1.07;
--tracking-display: -1.5px;
/* Typography — Weights */
--font-weight-regular: 400;
--font-weight-semibold: 600;
--font-weight-bold: 700;
/* Spacing */
--spacing-unit: 4px;
--spacing-4: 4px;
--spacing-8: 8px;
--spacing-12: 12px;
--spacing-16: 16px;
--spacing-24: 24px;
--spacing-32: 32px;
--spacing-40: 40px;
--spacing-48: 48px;
--spacing-64: 64px;
--spacing-96: 96px;
--spacing-200: 200px;
/* Layout */
--page-max-width: 1200px;
--section-gap: 64px;
--card-padding: 32px;
--element-gap: 8px;
/* Border Radius */
--radius-lg: 8px;
--radius-xl: 12px;
--radius-2xl: 16px;
--radius-3xl: 32px;
--radius-full: 48px;
--radius-full-2: 64px;
--radius-full-3: 96px;
/* Named Radii */
--radius-cards: 48px;
--radius-links: 8px;
--radius-pills: 96px;
--radius-small: 8px;
--radius-buttons: 12px;
/* Surfaces (Default: Light) */
--surface-canvas: #f9f9f9;
--surface-card: #ffffff;
--surface-tinted-wash: #e8f7f8;
--surface-dark-panel: #16191c;
--surface-deep-abyss: #1e2327;
}
/* ==========================================================================
Dark Theme Overrides
========================================================================== */
[data-theme="dark"] {
--surface-canvas: #0c0e12;
--surface-card: #15181d;
--surface-tinted-wash: #121c22;
--surface-dark-panel: #101317;
--surface-deep-abyss: #0a0c0f;
--color-charcoal-ink: #f3f4f6;
--color-fog-white: #15181d;
--color-ash-gray: #242931;
--color-mist-gray: #545c68;
--color-slate: #9ca3af;
--color-graphite: #323842;
}
/* ==========================================================================
CSS Reset & Base Settings
========================================================================== */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
font-size: 16px;
}
body {
font-family: var(--font-inter);
background-color: var(--surface-canvas);
color: var(--color-charcoal-ink);
line-height: var(--leading-body);
font-size: var(--text-body);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
transition: background-color 0.25s ease, color 0.25s ease;
}
/* Base Container */
.container {
width: 100%;
max-width: var(--page-max-width);
margin-left: auto;
margin-right: auto;
padding-left: var(--spacing-24);
padding-right: var(--spacing-24);
}
/* Links & Typography reset */
a {
color: inherit;
text-decoration: none;
}
img, svg {
display: block;
max-width: 100%;
}
button {
font-family: inherit;
border: none;
background: none;
cursor: pointer;
}
/* Text accents */
.text-teal {
color: var(--color-surfshark-teal);
}
.text-muted {
color: var(--color-slate);
}
/* ==========================================================================
Promo Banner
Full-width 40px tall bar with #ffc200 background, centered 14px Inter 400 black
========================================================================== */
.promo-banner {
background-color: var(--color-promo-gold);
color: var(--color-carbon);
min-height: 40px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
font-size: var(--text-body-sm);
font-weight: var(--font-weight-regular);
letter-spacing: var(--tracking-body-sm);
line-height: 1.4;
padding: 8px 16px;
position: relative;
z-index: 1002;
}
.promo-banner strong {
font-weight: var(--font-weight-bold);
}
.promo-banner a {
text-decoration: underline;
margin-left: var(--spacing-8);
font-weight: var(--font-weight-semibold);
transition: opacity 0.2s ease;
}
.promo-banner a:hover {
opacity: 0.8;
}
/* ==========================================================================
Primary Navigation (Sticky, 64px height, Pure White, hairline border)
========================================================================== */
.header-nav {
height: 64px;
background-color: var(--surface-card);
border-bottom: 1px solid var(--color-ash-gray);
position: sticky;
top: 0;
z-index: 1000;
display: flex;
align-items: center;
transition: background-color 0.25s ease, border-color 0.25s ease;
}
.header-wrap {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
.brand-logo {
display: flex;
align-items: center;
gap: 8px;
font-size: var(--text-heading-sm);
font-weight: var(--font-weight-bold);
color: var(--color-charcoal-ink);
letter-spacing: -0.5px;
user-select: none;
}
.brand-logo-icon {
width: 32px;
height: 32px;
color: var(--color-surfshark-teal);
flex-shrink: 0;
}
.brand-name {
display: inline-flex;
align-items: baseline;
letter-spacing: -0.4px;
}
.brand-name span {
color: var(--color-surfshark-teal);
}
nav.main-nav {
display: flex;
align-items: center;
gap: var(--spacing-32);
}
nav.main-nav a {
font-size: var(--text-body-sm);
font-weight: var(--font-weight-semibold);
color: var(--color-slate);
transition: color 0.2s ease;
padding: 6px 0;
position: relative;
}
nav.main-nav a:hover {
color: var(--color-charcoal-ink);
}
.nav-actions {
display: flex;
align-items: center;
gap: var(--spacing-12);
}
/* Theme Toggle Button */
.theme-toggle-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: var(--radius-buttons);
border: 1px solid var(--color-ash-gray);
background-color: var(--surface-card);
color: var(--color-charcoal-ink);
cursor: pointer;
transition: all 0.2s ease;
flex-shrink: 0;
}
.theme-toggle-btn:hover {
border-color: var(--color-surfshark-teal);
color: var(--color-surfshark-teal);
}
.theme-icon {
width: 20px;
height: 20px;
}
/* Default Light Theme: show Moon icon */
.theme-icon.sun-icon {
display: none;
}
.theme-icon.moon-icon {
display: block;
}
/* Dark Theme: show Sun icon */
[data-theme="dark"] .theme-icon.sun-icon {
display: block;
}
[data-theme="dark"] .theme-icon.moon-icon {
display: none;
}
/* Secondary Action / Dark Button */
.btn-dark {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
background-color: var(--color-charcoal-ink);
color: var(--color-pure-white);
border-radius: var(--radius-buttons);
padding: 12px 20px;
font-size: var(--text-body-sm);
font-weight: var(--font-weight-semibold);
transition: background-color 0.2s ease, opacity 0.2s ease;
white-space: nowrap;
}
[data-theme="dark"] .btn-dark {
background-color: #242a33;
color: var(--color-pure-white);
border: 1px solid var(--color-graphite);
}
.btn-dark:hover {
opacity: 0.9;
}
/* Burger Button for Mobile */
.burger-btn {
display: none;
flex-direction: column;
justify-content: center;
gap: 5px;
width: 36px;
height: 36px;
padding: 6px;
background: transparent;
cursor: pointer;
z-index: 1001;
}
.burger-btn span {
display: block;
width: 100%;
height: 2px;
background-color: var(--color-charcoal-ink);
border-radius: 2px;
transition: transform 0.3s ease, opacity 0.3s ease;
}
.burger-btn.open span:nth-child(1) {
transform: translateY(7px) rotate(45deg);
}
.burger-btn.open span:nth-child(2) {
opacity: 0;
}
.burger-btn.open span:nth-child(3) {
transform: translateY(-7px) rotate(-45deg);
}
/* Mobile Nav Drawer */
.mobile-nav-overlay {
display: none;
position: fixed;
inset: 64px 0 0 0;
background-color: var(--surface-card);
z-index: 999;
padding: 32px 24px;
flex-direction: column;
gap: 20px;
border-top: 1px solid var(--color-ash-gray);
overflow-y: auto;
}
.mobile-nav-overlay.open {
display: flex;
}
.mobile-nav-overlay a {
font-size: var(--text-subheading);
font-weight: var(--font-weight-semibold);
color: var(--color-charcoal-ink);
padding: 10px 0;
border-bottom: 1px solid var(--color-ash-gray);
}
.mobile-theme-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 0;
font-size: var(--text-body);
font-weight: var(--font-weight-semibold);
color: var(--color-charcoal-ink);
border-bottom: 1px solid var(--color-ash-gray);
}
.mobile-nav-overlay .btn-dark {
margin-top: 12px;
padding: 14px 24px;
font-size: var(--text-body);
}
/* ==========================================================================
Buttons System (Strictly as specified in DESIGN.md)
========================================================================== */
/* Coral Filled Button: Sole primary conversion action. 1 per viewport! */
.btn-coral {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
background-color: var(--color-coral-pulse);
color: var(--color-pure-white);
border-radius: var(--radius-buttons);
padding: 16px 28px;
font-size: var(--text-body);
font-weight: var(--font-weight-semibold);
transition: opacity 0.2s ease, transform 0.15s ease;
white-space: nowrap;
}
.btn-coral:hover {
opacity: 0.92;
transform: translateY(-1px);
}
/* Dark Pill Button */
.btn-pill-dark {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
background-color: var(--color-charcoal-ink);
color: var(--color-pure-white);
border-radius: var(--radius-pills);
padding: 12px 24px;
font-size: var(--text-body);
font-weight: var(--font-weight-semibold);
transition: opacity 0.2s ease, transform 0.15s ease;
}
[data-theme="dark"] .btn-pill-dark {
background-color: #242a33;
border: 1px solid var(--color-graphite);
}
.btn-pill-dark:hover {
opacity: 0.9;
transform: translateY(-1px);
}
/* Text link with trailing arrow */
.text-link-arrow {
display: inline-flex;
align-items: center;
gap: 8px;
font-size: var(--text-body);
font-weight: var(--font-weight-semibold);
color: var(--color-pure-white);
transition: gap 0.2s ease, opacity 0.2s ease;
}
.text-link-arrow:hover {
gap: 12px;
opacity: 0.9;
}
.text-link-arrow.dark-text {
color: var(--color-charcoal-ink);
}
/* ==========================================================================
Pill Tag / Rating Badges
========================================================================== */
.pill-badge {
display: inline-flex;
align-items: center;
gap: 8px;
border-radius: var(--radius-pills);
padding: 6px 14px;
font-size: var(--text-caption);
font-weight: var(--font-weight-semibold);
letter-spacing: var(--tracking-caption);
text-transform: uppercase;
}
.pill-badge.dark-mode {
background-color: rgba(255, 255, 255, 0.08);
border: 1px solid var(--color-graphite);
color: var(--color-surfshark-teal);
}
.pill-badge.light-mode {
background-color: var(--surface-card);
border: 1px solid var(--color-ash-gray);
color: var(--color-charcoal-ink);
text-transform: none;
font-size: var(--text-body-sm);
padding: 8px 18px;
}
/* ==========================================================================
Section Rhythm & General Typography
========================================================================== */
.section-wrapper {
padding-top: var(--section-gap);
padding-bottom: var(--section-gap);
}
.section-header {
text-align: center;
max-width: 720px;
margin: 0 auto 48px auto;
}
.section-title {
font-size: var(--text-heading);
font-weight: var(--font-weight-bold);
line-height: var(--leading-heading);
color: var(--color-charcoal-ink);
margin-bottom: var(--spacing-12);
}
.section-sub {
font-size: var(--text-body);
line-height: var(--leading-body);
color: var(--color-slate);
}
/* ==========================================================================
Hero Card (Dark)
#16191c background with 64px border-radius, full width up to 1200px max.
Generous bottom padding (80px) to give the CTA buttons ample room from the 64px corner.
========================================================================== */
.hero-card-dark {
background-color: var(--surface-dark-panel);
border-radius: var(--radius-full-2);
padding: 64px 60px 84px 60px; /* Generous bottom padding to fix corner cutoff */
display: grid;
grid-template-columns: 1.15fr 0.85fr;
align-items: center;
gap: var(--spacing-48);
color: var(--color-pure-white);
position: relative;
overflow: hidden;
margin-top: var(--spacing-32);
border: 1px solid var(--color-graphite);
}
.hero-left {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.hero-headline {
font-size: var(--text-display);
font-weight: var(--font-weight-bold);
line-height: var(--leading-display);
letter-spacing: var(--tracking-display);
color: var(--color-pure-white);
margin-top: var(--spacing-16);
margin-bottom: var(--spacing-20);
}
.hero-description {
font-size: var(--text-body);
line-height: var(--leading-body);
color: var(--color-mist-gray);
margin-bottom: var(--spacing-24);
max-width: 540px;
}
/* Checkmark Feature List */
.checkmark-list {
display: flex;
flex-direction: column;
gap: var(--spacing-12);
margin-bottom: var(--spacing-32);
width: 100%;
}
.checkmark-item {
display: flex;
align-items: flex-start;
gap: var(--spacing-12);
font-size: var(--text-body);
line-height: 1.5;
color: var(--color-pure-white);
}
.checkmark-item.dark-text {
color: var(--color-charcoal-ink);
}
.checkmark-icon {
width: 18px;
height: 18px;
color: var(--color-surfshark-teal);
flex-shrink: 0;
margin-top: 3px;
}
.hero-cta-group {
display: flex;
align-items: center;
gap: var(--spacing-24);
flex-wrap: wrap;
}
/* Hero Right Visual Column */
.hero-right {
display: flex;
align-items: center;
justify-content: center;
}
.hero-visual-card {
width: 100%;
max-width: 440px;
background-color: var(--surface-deep-abyss);
border: 1px solid var(--color-graphite);
border-radius: var(--radius-3xl);
padding: var(--spacing-32);
display: flex;
flex-direction: column;
gap: var(--spacing-24);
}
.visual-header {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid var(--color-graphite);
padding-bottom: var(--spacing-16);
}
.visual-status-pill {
display: inline-flex;
align-items: center;
gap: 8px;
font-size: var(--text-caption);
color: var(--color-surfshark-teal);
font-weight: var(--font-weight-semibold);
}
.pulse-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--color-surfshark-teal);
}
.visual-protocol {
font-size: var(--text-caption);
color: var(--color-mist-gray);
font-weight: var(--font-weight-semibold);
}
.visual-main-shield {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: var(--spacing-16) 0;
text-align: center;
}
.shield-svg-wrap {
width: 96px;
height: 96px;
margin-bottom: var(--spacing-16);
color: var(--color-surfshark-teal);
}
.visual-shield-title {
font-size: var(--text-subheading);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
margin-bottom: 4px;
}
.visual-shield-sub {
font-size: var(--text-body-sm);
color: var(--color-mist-gray);
}
.visual-metrics-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--spacing-12);
}
.metric-box {
background-color: rgba(255, 255, 255, 0.03);
border: 1px solid var(--color-graphite);
border-radius: var(--radius-xl);
padding: 12px 14px;
}
.metric-label {
font-size: var(--text-caption);
color: var(--color-mist-gray);
margin-bottom: 4px;
}
.metric-value {
font-size: var(--text-subheading);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
}
/* ==========================================================================
Reviewer Avatar Strip & Trust Bar
========================================================================== */
.social-proof-strip {
padding-top: var(--spacing-48);
padding-bottom: var(--spacing-48);
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
gap: var(--spacing-16);
}
.avatar-stack {
display: flex;
align-items: center;
justify-content: center;
}
.avatar-circle {
width: 56px;
height: 56px;
border-radius: 50%;
border: 3px solid var(--surface-canvas);
margin-left: -12px;
background-color: var(--color-ash-gray);
display: flex;
align-items: center;
justify-content: center;
font-size: var(--text-subheading);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
overflow: hidden;
user-select: none;
}
.avatar-circle:first-child {
margin-left: 0;
}
.avatar-circle.c1 { background: #3b82f6; }
.avatar-circle.c2 { background: #1ebfbf; }
.avatar-circle.c3 { background: #8b5cf6; }
.avatar-circle.c4 { background: #fa3556; }
.avatar-circle.c5 { background: #10b981; }
.stars-gold {
color: #ffb800;
letter-spacing: 2px;
}
.social-proof-caption {
font-size: var(--text-body-sm);
color: var(--color-slate);
}
/* ==========================================================================
Feature Cards (Light)
#ffffff background, 48px border-radius, 32px padding, no shadow, 1px #dadadd border
========================================================================== */
.grid-features-light {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: var(--spacing-24);
}
.feature-card-light {
background-color: var(--surface-card);
border-radius: var(--radius-cards);
padding: var(--card-padding);
border: 1px solid var(--color-ash-gray);
display: flex;
flex-direction: column;
transition: border-color 0.2s ease, background-color 0.25s ease;
}
.feature-card-light:hover {
border-color: var(--color-surfshark-teal);
}
.feature-icon-badge {
width: 56px;
height: 56px;
border-radius: var(--radius-2xl);
background-color: var(--surface-tinted-wash);
color: var(--color-surfshark-teal);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: var(--spacing-24);
flex-shrink: 0;
}
.feature-icon-badge svg {
width: 28px;
height: 28px;
}
.feature-title-light {
font-size: var(--text-heading-sm);
font-weight: var(--font-weight-bold);
color: var(--color-charcoal-ink);
line-height: var(--leading-heading-sm);
margin-bottom: var(--spacing-12);
}
.feature-desc-light {
font-size: var(--text-body);
line-height: var(--leading-body);
color: var(--color-slate);
}
/* ==========================================================================
Supported Devices Section (Tide Tint surface wash)
========================================================================== */
.devices-container {
background-color: var(--surface-tinted-wash);
border-radius: var(--radius-cards);
padding: 48px 36px;
border: 1px solid var(--color-ash-gray);
transition: background-color 0.25s ease, border-color 0.25s ease;
}
.grid-devices-list {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: var(--spacing-16);
margin-top: var(--spacing-32);
}
.device-item-card {
background-color: var(--surface-card);
border-radius: var(--radius-2xl);
padding: 24px 16px;
border: 1px solid var(--color-ash-gray);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
transition: border-color 0.2s ease, transform 0.15s ease, background-color 0.25s ease;
}
.device-item-card:hover {
border-color: var(--color-surfshark-teal);
transform: translateY(-2px);
}
.device-icon-wrap {
width: 48px;
height: 48px;
margin-bottom: var(--spacing-12);
display: flex;
align-items: center;
justify-content: center;
}
.device-icon-img {
width: 36px;
height: 36px;
object-fit: contain;
}
.device-title {
font-size: var(--text-body-sm);
font-weight: var(--font-weight-bold);
color: var(--color-charcoal-ink);
margin-bottom: 4px;
}
.device-badge-app {
font-size: var(--text-caption);
color: var(--color-slate);
}
/* ==========================================================================
Feature Card (Dark) — How to Connect Section
========================================================================== */
.feature-panel-dark {
background-color: var(--surface-dark-panel);
border-radius: var(--radius-cards);
padding: 56px 48px;
color: var(--color-pure-white);
border: 1px solid var(--color-graphite);
}
.panel-header-dark {
text-align: center;
max-width: 680px;
margin: 0 auto 48px auto;
}
.panel-title-dark {
font-size: var(--text-heading);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
margin-bottom: var(--spacing-12);
}
.panel-sub-dark {
font-size: var(--text-body);
color: var(--color-mist-gray);
}
.grid-steps-three {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: var(--spacing-24);
}
.step-card-dark {
background-color: var(--surface-deep-abyss);
border-radius: var(--radius-3xl);
padding: var(--card-padding);
border: 1px solid var(--color-graphite);
display: flex;
flex-direction: column;
}
.step-num-badge {
width: 48px;
height: 48px;
border-radius: 50%;
border: 2px solid var(--color-surfshark-teal);
color: var(--color-surfshark-teal);
display: flex;
align-items: center;
justify-content: center;
font-size: var(--text-heading-sm);
font-weight: var(--font-weight-bold);
margin-bottom: var(--spacing-20);
}
.step-title-dark {
font-size: var(--text-heading-sm);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
margin-bottom: var(--spacing-12);
}
.step-desc-dark {
font-size: var(--text-body);
line-height: var(--leading-body);
color: var(--color-mist-gray);
}
/* ==========================================================================
Pricing Section
========================================================================== */
.pricing-section {
padding-top: var(--section-gap);
padding-bottom: var(--section-gap);
}
.billing-toggle-wrapper {
display: flex;
justify-content: center;
margin-bottom: 48px;
}
.billing-toggle-pill {
display: inline-flex;
align-items: center;
background-color: var(--surface-card);
border: 1px solid var(--color-ash-gray);
border-radius: var(--radius-pills);
padding: 4px;
transition: background-color 0.25s ease, border-color 0.25s ease;
}
.billing-opt-btn {
border-radius: var(--radius-pills);
padding: 10px 24px;
font-size: var(--text-body-sm);
font-weight: var(--font-weight-semibold);
color: var(--color-slate);
transition: all 0.2s ease;
position: relative;
display: flex;
align-items: center;
gap: 6px;
}
.billing-opt-btn.active {
background-color: var(--color-charcoal-ink);
color: var(--color-pure-white);
}
[data-theme="dark"] .billing-opt-btn.active {
background-color: #242a33;
color: var(--color-pure-white);
}
.promo-discount-badge {
background-color: var(--color-promo-gold);
color: var(--color-carbon);
font-size: var(--text-caption);
font-weight: var(--font-weight-bold);
padding: 2px 8px;
border-radius: var(--radius-links);
line-height: 1.2;
}
.grid-pricing-cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: var(--spacing-24);
align-items: stretch;
}
.pricing-card {
background-color: var(--surface-card);
border-radius: var(--radius-cards);
padding: 40px 32px;
border: 1px solid var(--color-ash-gray);
display: flex;
flex-direction: column;
position: relative;
transition: background-color 0.25s ease, border-color 0.25s ease;
}
/* Featured card in pricing */
.pricing-card.featured-plan {
border: 2px solid var(--color-surfshark-teal);
background-color: var(--surface-card);
}
.pricing-card-badge {
position: absolute;
top: -14px;
left: 50%;
transform: translateX(-50%);
background-color: var(--color-surfshark-teal);
color: var(--color-charcoal-ink);
font-size: var(--text-caption);
font-weight: var(--font-weight-bold);
padding: 4px 18px;
border-radius: var(--radius-pills);
letter-spacing: 0.5px;
white-space: nowrap;
}
[data-theme="dark"] .pricing-card-badge {
color: #0c0e12;
}
.pricing-plan-name {
font-size: var(--text-subheading);
font-weight: var(--font-weight-bold);
color: var(--color-charcoal-ink);
margin-bottom: var(--spacing-8);
}
.pricing-plan-price {
font-size: var(--text-heading);
font-weight: var(--font-weight-bold);
color: var(--color-charcoal-ink);
display: flex;
align-items: baseline;
gap: 4px;
margin-bottom: var(--spacing-24);
}
.pricing-plan-price span.term {
font-size: var(--text-body-sm);
font-weight: var(--font-weight-regular);
color: var(--color-slate);
}
.price-val {
transition: opacity 0.15s ease;
}
.price-val.updating {
opacity: 0;
}
/* Sub-plan tier chips */
.sub-plan-list {
display: flex;
flex-direction: column;
gap: var(--spacing-8);
margin-bottom: var(--spacing-24);
padding: 12px;
background-color: var(--surface-canvas);
border-radius: var(--radius-xl);
border: 1px solid var(--color-ash-gray);
transition: background-color 0.25s ease, border-color 0.25s ease;
}
.sub-plan-row {
display: flex;
align-items: center;
justify-content: space-between;
font-size: var(--text-body-sm);
color: var(--color-charcoal-ink);
}
.sub-plan-row span {
color: var(--color-slate);
}
.sub-plan-row strong {
font-weight: var(--font-weight-bold);
}
/* Pricing features checkmarks */
.pricing-features-list {
list-style: none;
margin-bottom: var(--spacing-32);
flex-grow: 1;
display: flex;
flex-direction: column;
gap: var(--spacing-12);
}
.pricing-features-list li {
font-size: var(--text-body-sm);
line-height: 1.5;
color: var(--color-charcoal-ink);
display: flex;
align-items: flex-start;
gap: 10px;
}
.pricing-features-list li.disabled-feature {
color: var(--color-mist-gray);
text-decoration: line-through;
}
.pricing-check-icon {
width: 16px;
height: 16px;
color: var(--color-surfshark-teal);
flex-shrink: 0;
margin-top: 2px;
}
.pricing-cross-icon {
width: 16px;
height: 16px;
color: var(--color-mist-gray);
flex-shrink: 0;
margin-top: 2px;
}
.pricing-card .btn-coral,
.pricing-card .btn-dark {
width: 100%;
margin-top: auto;
}
/* ==========================================================================
FAQ Accordion List
========================================================================== */
.faq-section-wrapper {
max-width: 840px;
margin: 0 auto;
}
.faq-accordion-list {
display: flex;
flex-direction: column;
gap: var(--spacing-12);
}
.faq-item {
background-color: var(--surface-card);
border: 1px solid var(--color-ash-gray);
border-radius: var(--radius-2xl);
overflow: hidden;
transition: border-color 0.2s ease, background-color 0.25s ease;
}
.faq-item.open {
border-color: var(--color-surfshark-teal);
}
.faq-question-btn {
width: 100%;
padding: 24px;
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--spacing-16);
text-align: left;
font-size: var(--text-subheading);
font-weight: var(--font-weight-semibold);
color: var(--color-charcoal-ink);
cursor: pointer;
background: transparent;
}
.faq-toggle-icon {
width: 32px;
height: 32px;
border-radius: 50%;
background-color: var(--surface-tinted-wash);
color: var(--color-surfshark-teal);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: transform 0.3s ease;
}
.faq-toggle-icon svg {
width: 16px;
height: 16px;
}
.faq-item.open .faq-toggle-icon {
transform: rotate(45deg);
}
.faq-answer-collapse {
max-height: 0;
overflow: hidden;
transition: max-height 0.35s ease;
}
.faq-answer-content {
padding: 0 24px 24px 24px;
font-size: var(--text-body);
line-height: var(--leading-body);
color: var(--color-slate);
}
/* ==========================================================================
Testimonial Block & Review Strip
========================================================================== */
.testimonial-block-hero {
background-color: var(--surface-card);
border-radius: var(--radius-cards);
border: 1px solid var(--color-ash-gray);
padding: 56px 48px;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: var(--spacing-48);
transition: background-color 0.25s ease, border-color 0.25s ease;
}
.testimonial-quote {
font-size: var(--text-heading);
font-weight: var(--font-weight-bold);
line-height: var(--leading-heading);
color: var(--color-charcoal-ink);
max-width: 820px;
margin-bottom: var(--spacing-24);
}
.testimonial-author {
font-size: var(--text-caption);
font-weight: var(--font-weight-semibold);
letter-spacing: var(--tracking-caption);
text-transform: uppercase;
color: var(--color-charcoal-ink);
margin-bottom: 4px;
}
.testimonial-subinfo {
font-size: var(--text-body-sm);
color: var(--color-slate);
margin-bottom: var(--spacing-32);
}
.grid-reviews-two {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--spacing-24);
}
.review-item-card {
background-color: var(--surface-card);
border: 1px solid var(--color-ash-gray);
border-radius: var(--radius-3xl);
padding: var(--card-padding);
display: flex;
flex-direction: column;
gap: var(--spacing-16);
transition: background-color 0.25s ease, border-color 0.25s ease;
}
.review-card-top {
display: flex;
align-items: center;
gap: var(--spacing-16);
}
.review-avatar-box {
width: 48px;
height: 48px;
border-radius: 50%;
background-color: var(--color-charcoal-ink);
color: var(--color-pure-white);
display: flex;
align-items: center;
justify-content: center;
font-weight: var(--font-weight-bold);
font-size: var(--text-subheading);
flex-shrink: 0;
}
[data-theme="dark"] .review-avatar-box {
background-color: #242a33;
}
.review-user-name {
font-weight: var(--font-weight-bold);
font-size: var(--text-body);
color: var(--color-charcoal-ink);
}
.review-verified-badge {
font-size: var(--text-caption);
color: #10b981;
font-weight: var(--font-weight-semibold);
}
.review-quote-text {
font-size: var(--text-body);
line-height: var(--leading-body);
color: var(--color-slate);
}
/* ==========================================================================
Support CTA Panel (Dark Panel)
========================================================================== */
.support-panel-dark {
background-color: var(--surface-dark-panel);
border-radius: var(--radius-cards);
padding: 56px 48px;
color: var(--color-pure-white);
border: 1px solid var(--color-graphite);
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.support-title {
font-size: var(--text-heading);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
margin-bottom: var(--spacing-16);
max-width: 680px;
}
.support-desc {
font-size: var(--text-body);
line-height: var(--leading-body);
color: var(--color-mist-gray);
max-width: 580px;
margin-bottom: var(--spacing-32);
}
/* ==========================================================================
Site-Wide Footer
========================================================================== */
.site-footer {
background-color: var(--surface-dark-panel);
color: var(--color-pure-white);
padding-top: var(--spacing-48);
padding-bottom: var(--spacing-48);
border-top: 1px solid var(--color-graphite);
margin-top: var(--section-gap);
}
.footer-top-row {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: var(--spacing-32);
border-bottom: 1px solid var(--color-graphite);
margin-bottom: var(--spacing-40);
flex-wrap: wrap;
gap: var(--spacing-20);
}
.footer-logo {
display: flex;
align-items: center;
gap: 8px;
font-size: var(--text-heading-sm);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
}
.footer-logo .brand-name {
color: var(--color-pure-white);
}
.footer-logo .brand-name span {
color: var(--color-surfshark-teal);
}
.footer-tagline {
font-size: var(--text-body-sm);
color: var(--color-mist-gray);
}
.footer-columns-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: var(--spacing-32);
margin-bottom: var(--spacing-48);
}
.footer-col-title {
font-size: var(--text-body-sm);
font-weight: var(--font-weight-bold);
color: var(--color-pure-white);
margin-bottom: var(--spacing-16);
letter-spacing: 0.5px;
}
.footer-links-list {
list-style: none;
display: flex;
flex-direction: column;
gap: var(--spacing-12);
}
.footer-links-list a {
font-size: var(--text-body);
color: var(--color-mist-gray);
transition: color 0.2s ease;
}
.footer-links-list a:hover {
color: var(--color-surfshark-teal);
}
.footer-bottom-bar {
padding-top: var(--spacing-24);
border-top: 1px solid var(--color-graphite);
display: flex;
align-items: center;
justify-content: space-between;
font-size: var(--text-caption);
color: var(--color-mist-gray);
flex-wrap: wrap;
gap: var(--spacing-12);
}
/* ==========================================================================
Scroll Reveal Animations
========================================================================== */
.reveal {
opacity: 0;
transform: translateY(28px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.reveal.visible {
opacity: 1;
transform: translateY(0);
}
/* ==========================================================================
Responsive Breakpoints
========================================================================== */
@media (max-width: 1024px) {
.hero-card-dark {
grid-template-columns: 1fr;
border-radius: var(--radius-cards);
padding: 48px 36px 64px 36px;
}
.hero-headline {
font-size: var(--text-heading-lg);
line-height: var(--leading-heading-lg);
}
.grid-features-light {
grid-template-columns: repeat(2, 1fr);
}
.grid-devices-list {
grid-template-columns: repeat(3, 1fr);
}
.grid-pricing-cards {
grid-template-columns: 1fr;
max-width: 480px;
margin-left: auto;
margin-right: auto;
}
.grid-steps-three {
grid-template-columns: 1fr;
}
.grid-reviews-two {
grid-template-columns: 1fr;
}
.footer-columns-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 820px) {
nav.main-nav,
.nav-actions .btn-dark {
display: none;
}
.burger-btn {
display: flex;
}
.hero-card-dark {
padding: 40px 24px 56px 24px;
border-radius: var(--radius-3xl);
}
.hero-headline {
font-size: 34px;
line-height: 1.15;
letter-spacing: -1px;
}
.section-title,
.panel-title-dark,
.testimonial-quote,
.support-title {
font-size: var(--text-heading-sm);
}
.grid-features-light {
grid-template-columns: 1fr;
}
.devices-container {
padding: 32px 20px;
}
.grid-devices-list {
grid-template-columns: repeat(2, 1fr);
}
.footer-columns-grid {
grid-template-columns: 1fr;
}
.footer-top-row {
flex-direction: column;
align-items: flex-start;
}
}