freezone/website/styles/main.css
2025-06-27 12:05:38 +03:00

3312 lines
58 KiB
CSS

/* Custom variables - Professional black/white with pastel highlights */
:root {
/* Core colors */
--black: #000000;
--white: #ffffff;
--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;
/* Pastel highlights */
--pastel-blue: #a7f3d0;
--pastel-purple: #c4b5fd;
--pastel-pink: #fbb6ce;
--pastel-yellow: #fde68a;
--pastel-green: #86efac;
--pastel-orange: #fed7aa;
/* Accent colors */
--accent-primary: #3b82f6;
--accent-secondary: #8b5cf6;
--accent-success: #10b981;
--accent-warning: #f59e0b;
--accent-danger: #ef4444;
/* Theme colors */
--bg-primary: var(--black);
--bg-secondary: var(--gray-900);
--bg-tertiary: var(--gray-800);
--text-primary: var(--white);
--text-secondary: var(--gray-300);
--text-muted: var(--gray-400);
--border-color: var(--gray-700);
--border-light: var(--gray-600);
}
/* Global styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: var(--bg-primary);
color: var(--text-primary);
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
overflow-x: hidden;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 6px;
}
::-webkit-scrollbar-track {
background: var(--bg-primary);
}
::-webkit-scrollbar-thumb {
background: var(--border-color);
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--pastel-blue);
}
/* Typography */
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
line-height: 1.2;
margin-bottom: 1rem;
}
.display-1 { font-size: 5rem; font-weight: 700; }
.display-2 { font-size: 4.5rem; font-weight: 700; }
.display-3 { font-size: 4rem; font-weight: 700; }
.display-4 { font-size: 3.5rem; font-weight: 700; }
/* Header styles */
.navbar {
background: rgba(0, 0, 0, 0.95) !important;
backdrop-filter: blur(20px);
border-bottom: 1px solid var(--border-color);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 1000;
}
.navbar.scrolled {
background: rgba(0, 0, 0, 0.98) !important;
backdrop-filter: blur(30px);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.navbar-brand {
font-weight: 800;
font-size: 1.75rem;
color: var(--white) !important;
text-decoration: none;
position: relative;
}
.navbar-brand::after {
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(90deg, var(--pastel-blue), var(--pastel-purple));
border-radius: 1px;
}
.navbar-nav .nav-link {
color: var(--text-secondary) !important;
font-weight: 500;
font-size: 0.95rem;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
margin: 0 1.5rem;
}
.navbar-nav .nav-link:hover {
color: var(--white) !important;
transform: translateY(-1px);
}
.navbar-nav .nav-link::after {
content: '';
position: absolute;
bottom: -8px;
left: 50%;
width: 0;
height: 2px;
background: var(--pastel-blue);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
transform: translateX(-50%);
}
.navbar-nav .nav-link:hover::after {
width: 100%;
}
/* Button styles */
.btn {
border-radius: 12px;
font-weight: 600;
font-size: 0.95rem;
padding: 12px 28px;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
border: none;
position: relative;
overflow: hidden;
}
.btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
transition: left 0.5s;
}
.btn:hover::before {
left: 100%;
}
.btn-primary {
background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
color: var(--white);
box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3);
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(59, 130, 246, 0.4);
color: var(--white);
}
.btn-outline-primary {
border: 2px solid var(--pastel-blue);
color: var(--pastel-blue);
background: transparent;
}
.btn-outline-primary:hover {
background: var(--pastel-blue);
color: var(--black);
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(167, 243, 208, 0.3);
}
.btn-lg {
padding: 16px 36px;
font-size: 1.1rem;
}
/* Hero section */
.hero-section {
min-height: 100vh;
background: var(--bg-primary);
position: relative;
overflow: hidden;
display: flex;
align-items: center;
padding-top: 80px;
}
.hero-section::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
radial-gradient(circle at 20% 30%, rgba(167, 243, 208, 0.05) 0%, transparent 50%),
radial-gradient(circle at 80% 70%, rgba(196, 181, 253, 0.05) 0%, transparent 50%),
radial-gradient(circle at 50% 50%, rgba(251, 182, 206, 0.03) 0%, transparent 50%);
pointer-events: none;
}
.hero-section::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grid" width="10" height="10" patternUnits="userSpaceOnUse"><path d="M 10 0 L 0 0 0 10" fill="none" stroke="rgba(255,255,255,0.02)" stroke-width="1"/></pattern></defs><rect width="100" height="100" fill="url(%23grid)"/></svg>');
pointer-events: none;
}
.hero-content {
position: relative;
z-index: 2;
}
.hero-title {
font-size: clamp(3rem, 8vw, 6rem);
font-weight: 800;
color: var(--white);
margin-bottom: 1.5rem;
line-height: 1.1;
background: linear-gradient(135deg, var(--white), var(--pastel-blue));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-subtitle {
font-size: 1.25rem;
color: var(--text-secondary);
margin-bottom: 2.5rem;
max-width: 600px;
line-height: 1.6;
}
/* Hero visual elements */
.hero-visual {
position: relative;
height: 400px;
}
.floating-cards {
position: relative;
height: 100%;
}
.floating-card {
position: absolute;
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
backdrop-filter: blur(10px);
animation: float 6s ease-in-out infinite;
}
.floating-card.card-1 {
top: 20%;
left: 10%;
animation-delay: 0s;
}
.floating-card.card-2 {
top: 50%;
right: 10%;
animation-delay: 2s;
}
.floating-card.card-3 {
bottom: 20%;
left: 30%;
animation-delay: 4s;
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-20px); }
}
.card-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.card-title {
font-weight: 600;
margin-bottom: 0.5rem;
color: var(--white);
}
.card-price {
color: var(--pastel-green);
font-weight: 700;
}
/* Dashboard preview */
.dashboard-preview {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
height: 300px;
}
.dashboard-header {
height: 40px;
background: var(--border-color);
border-radius: 8px;
margin-bottom: 1rem;
animation: pulse 2s infinite;
}
.dashboard-content {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
height: 200px;
}
.dashboard-widget {
background: var(--border-color);
border-radius: 8px;
animation: pulse 2s infinite;
}
.dashboard-widget.large {
grid-column: 1 / -1;
}
@keyframes pulse {
0%, 100% { opacity: 0.6; }
50% { opacity: 1; }
}
/* DeFi visual */
.defi-interface {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
height: 300px;
}
.defi-chart-preview {
height: 150px;
background: var(--border-color);
border-radius: 8px;
margin-bottom: 1rem;
position: relative;
overflow: hidden;
}
.defi-chart-preview::after {
content: '';
position: absolute;
bottom: 20px;
left: 20px;
right: 20px;
height: 2px;
background: var(--pastel-green);
animation: chartGrow 3s ease-in-out infinite;
}
@keyframes chartGrow {
0% { width: 0; }
100% { width: calc(100% - 40px); }
}
.defi-stats {
display: flex;
justify-content: space-around;
}
.stat-item {
text-align: center;
}
.stat-value {
font-size: 1.5rem;
font-weight: 700;
color: var(--pastel-blue);
}
.stat-label {
font-size: 0.9rem;
color: var(--text-muted);
}
/* Liquidity Pool Animation */
.liquidity-pool-animation {
position: relative;
height: 400px;
display: flex;
align-items: center;
justify-content: center;
}
.pool-container {
position: relative;
width: 300px;
height: 300px;
}
.pool-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 120px;
height: 120px;
background: linear-gradient(135deg, var(--pastel-blue), var(--pastel-purple));
border-radius: 50%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-shadow: 0 0 30px rgba(167, 243, 208, 0.4);
animation: poolPulse 3s ease-in-out infinite;
}
.pool-label {
font-size: 1rem;
font-weight: 700;
color: var(--black);
text-align: center;
}
.asset-flow {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.asset-token {
position: absolute;
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 600;
font-size: 0.9rem;
color: var(--black);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
.asset-token.eth {
background: var(--pastel-blue);
top: 20px;
left: 20px;
}
.asset-token.usdc {
background: var(--pastel-green);
top: 20px;
right: 20px;
}
.asset-token.btc {
background: var(--pastel-yellow);
bottom: 20px;
left: 20px;
}
.asset-token.dai {
background: var(--pastel-orange);
bottom: 20px;
right: 20px;
}
.asset-token.flowing-in {
animation: flowToPool 4s ease-in-out infinite;
}
.asset-token.flowing-out {
animation: flowFromPool 4s ease-in-out infinite;
}
@keyframes poolPulse {
0%, 100% {
transform: translate(-50%, -50%) scale(1);
box-shadow: 0 0 30px rgba(167, 243, 208, 0.4);
}
50% {
transform: translate(-50%, -50%) scale(1.05);
box-shadow: 0 0 40px rgba(167, 243, 208, 0.6);
}
}
@keyframes flowToPool {
0% {
transform: scale(1);
opacity: 0.8;
}
50% {
transform: scale(0.7) translate(30px, 30px);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0.8;
}
}
@keyframes flowFromPool {
0% {
transform: scale(1);
opacity: 0.8;
}
50% {
transform: scale(0.7) translate(-30px, -30px);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0.8;
}
}
.pool-stats {
position: absolute;
bottom: -40px;
left: 50%;
transform: translateX(-50%);
text-align: center;
}
.pool-stat {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.9rem;
}
.pool-stat .stat-label {
color: var(--text-secondary);
}
.pool-stat .stat-value {
color: var(--pastel-blue);
font-weight: 700;
}
/* Geometric shapes */
.geometric-shapes {
position: relative;
height: 300px;
}
.shape {
position: absolute;
border-radius: 50%;
animation: rotate 20s linear infinite;
}
.shape-1 {
width: 100px;
height: 100px;
background: linear-gradient(45deg, var(--pastel-blue), var(--pastel-purple));
top: 20%;
left: 20%;
}
.shape-2 {
width: 80px;
height: 80px;
background: linear-gradient(45deg, var(--pastel-pink), var(--pastel-yellow));
top: 60%;
right: 30%;
animation-delay: 5s;
}
.shape-3 {
width: 60px;
height: 60px;
background: linear-gradient(45deg, var(--pastel-green), var(--pastel-orange));
bottom: 30%;
left: 50%;
animation-delay: 10s;
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
/* Scroll indicator */
.scroll-indicator {
position: absolute;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
z-index: 3;
}
.scroll-arrow {
width: 30px;
height: 30px;
border-right: 2px solid var(--pastel-blue);
border-bottom: 2px solid var(--pastel-blue);
transform: rotate(45deg);
animation: bounce 2s infinite;
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% { transform: rotate(45deg) translateY(0); }
40% { transform: rotate(45deg) translateY(-10px); }
60% { transform: rotate(45deg) translateY(-5px); }
}
/* Section styles */
.section {
padding: 120px 0;
position: relative;
}
.section-alt {
background: var(--bg-secondary);
}
.section-title {
font-size: clamp(2.5rem, 5vw, 3.5rem);
font-weight: 700;
margin-bottom: 1.5rem;
color: var(--white);
text-align: center;
}
.section-subtitle {
font-size: 1.2rem;
color: var(--text-secondary);
margin-bottom: 4rem;
max-width: 700px;
text-align: center;
margin-left: auto;
margin-right: auto;
}
/* Card styles */
.feature-card {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 20px;
padding: 2.5rem;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
backdrop-filter: blur(10px);
position: relative;
overflow: hidden;
height: 100%;
}
.feature-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, var(--pastel-blue), transparent);
opacity: 0;
transition: opacity 0.3s ease;
}
.feature-card:hover {
transform: translateY(-10px);
border-color: var(--pastel-blue);
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3);
background: rgba(255, 255, 255, 0.05);
}
.feature-card:hover::before {
opacity: 1;
}
.feature-icon {
width: 70px;
height: 70px;
background: linear-gradient(135deg, var(--pastel-blue), var(--pastel-purple));
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.5rem;
font-size: 1.75rem;
color: var(--black);
font-weight: 600;
}
.feature-card h3,
.feature-card h5 {
color: var(--white);
margin-bottom: 1rem;
}
.feature-card p {
color: var(--text-secondary);
line-height: 1.6;
}
/* Feature highlights */
.feature-highlights {
margin: 1.5rem 0;
}
.highlight-item {
display: flex;
align-items: center;
margin-bottom: 0.75rem;
}
.highlight-icon {
color: var(--pastel-green);
margin-right: 0.75rem;
font-weight: 600;
}
/* Interactive elements */
.interactive-demo {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 20px;
padding: 2rem;
position: relative;
overflow: hidden;
height: 100%;
}
/* Liquidity pools */
.liquidity-pools {
display: flex;
flex-direction: column;
gap: 1rem;
}
.liquidity-pool {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 1.5rem;
transition: all 0.3s ease;
}
.liquidity-pool:hover {
border-color: var(--pastel-blue);
transform: scale(1.02);
}
.pool-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1rem;
}
.pool-tokens {
display: flex;
align-items: center;
gap: 0.75rem;
}
.token-pair {
display: flex;
align-items: center;
gap: -0.5rem;
}
.token-icon {
width: 32px;
height: 32px;
border-radius: 50%;
border: 2px solid var(--white);
}
.token-icon.eth { background: var(--pastel-blue); }
.token-icon.usdc { background: var(--pastel-green); }
.token-icon.btc { background: var(--pastel-yellow); }
.token-icon.dai { background: var(--pastel-orange); }
.pool-name {
font-weight: 600;
color: var(--white);
}
.pool-apr {
color: var(--pastel-green);
font-weight: 700;
}
.pool-stats {
display: flex;
justify-content: space-between;
}
.stat {
text-align: center;
}
.stat-label {
font-size: 0.85rem;
color: var(--text-muted);
margin-bottom: 0.25rem;
}
.stat-value {
font-weight: 600;
color: var(--white);
}
/* Orderbook */
.orderbook {
background: rgba(255, 255, 255, 0.02);
border-radius: 12px;
padding: 1rem;
font-family: 'Monaco', 'Menlo', monospace;
font-size: 0.85rem;
height: 300px;
overflow-y: auto;
}
.orderbook-header {
display: flex;
justify-content: space-between;
padding: 0.5rem 0;
border-bottom: 1px solid var(--border-color);
margin-bottom: 0.5rem;
font-weight: 600;
color: var(--text-secondary);
}
.order-row {
display: flex;
justify-content: space-between;
padding: 0.25rem 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
animation: slideInOrder 0.5s ease-out;
}
.order-buy { color: var(--pastel-green); }
.order-sell { color: var(--pastel-pink); }
@keyframes slideInOrder {
from {
opacity: 0;
transform: translateX(20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.spread-indicator {
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid var(--border-color);
text-align: center;
}
.spread-label {
color: var(--text-muted);
}
.spread-value {
color: var(--pastel-blue);
font-weight: 600;
}
/* Marketplace flow */
.marketplace-flow-container {
height: 400px;
position: relative;
overflow: hidden;
background: rgba(255, 255, 255, 0.02);
border-radius: 20px;
border: 1px solid var(--border-color);
}
.marketplace-items {
display: flex;
gap: 1.5rem;
animation: marketplaceFlow 25s linear infinite;
position: absolute;
top: 50%;
left: 0;
transform: translateY(-50%);
}
.marketplace-item {
min-width: 280px;
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
backdrop-filter: blur(10px);
transition: all 0.3s ease;
position: relative;
}
.marketplace-item:hover {
transform: scale(1.05);
border-color: var(--pastel-blue);
}
.marketplace-item.rarity-legendary {
border-color: var(--pastel-yellow);
box-shadow: 0 0 20px rgba(253, 230, 138, 0.3);
}
.marketplace-item.rarity-ultra-rare {
border-color: var(--pastel-purple);
box-shadow: 0 0 20px rgba(196, 181, 253, 0.3);
}
.marketplace-item.rarity-epic {
border-color: var(--pastel-pink);
box-shadow: 0 0 20px rgba(251, 182, 206, 0.3);
}
.item-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 1rem;
}
.item-image {
font-size: 2rem;
}
.rarity-badge {
background: var(--pastel-blue);
color: var(--black);
padding: 0.25rem 0.5rem;
border-radius: 6px;
font-size: 0.75rem;
font-weight: 600;
}
.item-title {
color: var(--white);
font-weight: 600;
margin-bottom: 0.5rem;
}
.item-category {
color: var(--text-muted);
font-size: 0.9rem;
margin-bottom: 0.5rem;
}
.item-seller {
font-size: 0.85rem;
}
.seller-label {
color: var(--text-muted);
}
.seller-name {
color: var(--pastel-blue);
font-weight: 600;
}
.item-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid var(--border-color);
}
.item-price {
color: var(--pastel-green);
font-weight: 700;
font-size: 1.1rem;
}
.btn-quick-buy {
background: var(--pastel-blue);
color: var(--black);
border: none;
padding: 0.5rem 1rem;
border-radius: 8px;
font-weight: 600;
font-size: 0.85rem;
transition: all 0.3s ease;
}
.btn-quick-buy:hover {
background: var(--white);
transform: scale(1.05);
}
@keyframes marketplaceFlow {
0% {
transform: translateX(0) translateY(-50%);
}
100% {
transform: translateX(-100%) translateY(-50%);
}
}
.flow-overlay-left,
.flow-overlay-right {
position: absolute;
top: 0;
bottom: 0;
width: 100px;
pointer-events: none;
z-index: 2;
}
.flow-overlay-left {
left: 0;
background: linear-gradient(90deg, var(--bg-secondary), transparent);
}
.flow-overlay-right {
right: 0;
background: linear-gradient(270deg, var(--bg-secondary), transparent);
}
/* Platform wireframes */
.platform-wireframe {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
position: relative;
overflow: hidden;
height: 400px;
}
.wireframe-header {
display: flex;
justify-content: space-between;
align-items: center;
height: 50px;
background: var(--border-color);
border-radius: 8px;
margin-bottom: 1rem;
padding: 0 1rem;
}
.header-logo {
width: 40px;
height: 20px;
background: var(--pastel-blue);
border-radius: 4px;
}
.header-nav {
display: flex;
gap: 0.5rem;
}
.nav-item.active {
background: var(--pastel-blue);
}
.header-user {
width: 30px;
height: 30px;
background: var(--border-light);
border-radius: 50%;
}
.wireframe-sidebar {
position: absolute;
left: 1.5rem;
top: 120px;
width: 60px;
height: 200px;
background: var(--border-color);
border-radius: 8px;
padding: 1rem 0.5rem;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.sidebar-item {
height: 30px;
background: var(--border-light);
border-radius: 4px;
}
.sidebar-item.active {
background: var(--pastel-blue);
}
.wireframe-main {
margin-left: 80px;
height: 250px;
}
.main-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1rem;
}
.page-title {
width: 150px;
height: 30px;
background: var(--border-light);
border-radius: 4px;
}
.action-buttons {
display: flex;
gap: 0.5rem;
}
.btn-wireframe {
width: 80px;
height: 30px;
border-radius: 6px;
}
.btn-wireframe.primary {
background: var(--pastel-blue);
}
.btn-wireframe.secondary {
background: var(--border-light);
}
.main-content {
height: 180px;
}
.content-grid {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 1rem;
height: 100%;
}
.grid-item {
background: var(--border-color);
border-radius: 8px;
animation: wireframeGlow 3s infinite;
}
.grid-item.large {
grid-row: 1 / -1;
}
.grid-item.medium {
grid-column: 2 / 4;
}
.grid-item.small {
/* Default grid placement */
}
@keyframes wireframeGlow {
0%, 100% { opacity: 0.6; }
50% { opacity: 1; }
}
/* Company dashboard */
.company-dashboard {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
}
.dashboard-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1.5rem;
padding-bottom: 1rem;
border-bottom: 1px solid var(--border-color);
}
.company-info {
display: flex;
align-items: center;
gap: 1rem;
}
.company-logo {
width: 40px;
height: 40px;
background: var(--pastel-blue);
border-radius: 8px;
}
.company-details h6 {
margin: 0;
color: var(--white);
}
.company-status {
padding: 0.25rem 0.75rem;
border-radius: 12px;
font-size: 0.75rem;
font-weight: 600;
}
.company-status.active {
background: var(--pastel-green);
color: var(--black);
}
.dashboard-actions {
display: flex;
gap: 0.5rem;
}
.btn-dashboard {
padding: 0.5rem 1rem;
border-radius: 8px;
border: none;
font-weight: 600;
font-size: 0.85rem;
transition: all 0.3s ease;
}
.btn-dashboard.primary {
background: var(--pastel-blue);
color: var(--black);
}
.btn-dashboard.secondary {
background: transparent;
color: var(--pastel-blue);
border: 1px solid var(--pastel-blue);
}
.dashboard-metrics {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
margin-bottom: 1.5rem;
}
.metric-card {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 1rem;
text-align: center;
}
.metric-value {
font-size: 1.5rem;
font-weight: 700;
color: var(--white);
margin-bottom: 0.25rem;
}
.metric-label {
font-size: 0.85rem;
color: var(--text-muted);
margin-bottom: 0.5rem;
}
.metric-change {
font-size: 0.8rem;
font-weight: 600;
}
.metric-change.positive { color: var(--pastel-green); }
.metric-change.negative { color: var(--pastel-pink); }
.metric-change.neutral { color: var(--text-muted); }
.content-section h6 {
color: var(--white);
margin-bottom: 1rem;
}
.activity-list {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.activity-item {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.75rem;
background: rgba(255, 255, 255, 0.02);
border-radius: 8px;
}
.activity-icon {
width: 32px;
height: 32px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
}
.activity-icon.proposal { background: var(--pastel-blue); }
.activity-icon.treasury { background: var(--pastel-green); }
.activity-icon.vote { background: var(--pastel-purple); }
.activity-text {
flex: 1;
color: var(--text-secondary);
font-size: 0.9rem;
}
.activity-time {
color: var(--text-muted);
font-size: 0.8rem;
}
/* Trading interface */
.trading-interface {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
height: 500px;
}
.trading-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1.5rem;
padding-bottom: 1rem;
border-bottom: 1px solid var(--border-color);
}
.trading-pair {
display: flex;
align-items: center;
gap: 1rem;
}
.pair-name {
font-size: 1.25rem;
font-weight: 700;
color: var(--white);
}
.pair-price {
font-size: 1.1rem;
font-weight: 600;
color: var(--text-secondary);
}
.pair-change {
padding: 0.25rem 0.5rem;
border-radius: 4px;
font-size: 0.85rem;
font-weight: 600;
}
.pair-change.positive {
background: rgba(134, 239, 172, 0.2);
color: var(--pastel-green);
}
.trading-content {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 1.5rem;
height: 350px;
}
.chart-container {
background: rgba(255, 255, 255, 0.02);
border-radius: 12px;
padding: 1rem;
}
.trading-controls {
background: rgba(255, 255, 255, 0.02);
border-radius: 12px;
padding: 1rem;
}
.order-tabs {
display: flex;
margin-bottom: 1rem;
}
.tab-btn {
flex: 1;
padding: 0.75rem;
border: none;
background: transparent;
color: var(--text-muted);
font-weight: 600;
border-bottom: 2px solid transparent;
transition: all 0.3s ease;
}
.tab-btn.active {
color: var(--pastel-blue);
border-bottom-color: var(--pastel-blue);
}
.form-group {
margin-bottom: 1rem;
}
.form-group label {
display: block;
margin-bottom: 0.5rem;
color: var(--text-secondary);
font-size: 0.9rem;
font-weight: 600;
}
.input-group {
position: relative;
}
.input-group input {
width: 100%;
padding: 0.75rem;
padding-right: 3rem;
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 8px;
color: var(--white);
font-size: 0.9rem;
}
.input-group input:focus {
outline: none;
border-color: var(--pastel-blue);
}
.input-suffix {
position: absolute;
right: 0.75rem;
top: 50%;
transform: translateY(-50%);
color: var(--text-muted);
font-size: 0.85rem;
}
.btn-trade {
width: 100%;
padding: 1rem;
border: none;
border-radius: 8px;
font-weight: 600;
font-size: 1rem;
transition: all 0.3s ease;
}
.btn-trade.buy {
background: var(--pastel-green);
color: var(--black);
}
.btn-trade.buy:hover {
background: var(--accent-success);
transform: translateY(-2px);
}
/* Governance demos */
.governance-demo {
margin-top: 1rem;
}
.proposal-item {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 1rem;
}
.proposal-title {
font-weight: 600;
color: var(--white);
margin-bottom: 0.5rem;
}
.proposal-status {
display: inline-block;
padding: 0.25rem 0.5rem;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 600;
margin-bottom: 0.75rem;
}
.proposal-status.passing {
background: var(--pastel-green);
color: var(--black);
}
.vote-bar {
width: 100%;
height: 8px;
background: var(--border-color);
border-radius: 4px;
overflow: hidden;
margin-bottom: 0.5rem;
}
.vote-progress {
height: 100%;
background: var(--pastel-green);
transition: width 0.3s ease;
}
.vote-stats {
display: flex;
justify-content: space-between;
font-size: 0.85rem;
}
/* Stakeholder demo */
.stakeholder-demo {
margin-top: 1rem;
}
.stakeholder-chart {
width: 120px;
height: 120px;
border-radius: 50%;
margin: 0 auto 1rem;
background: conic-gradient(
var(--pastel-blue) 0deg 126deg,
var(--pastel-purple) 126deg 216deg,
var(--pastel-green) 216deg 288deg,
var(--pastel-pink) 288deg 360deg
);
}
.chart-legend {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.legend-item {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.85rem;
}
.legend-color {
width: 12px;
height: 12px;
border-radius: 2px;
}
/* Multi-sig demo */
.multisig-demo {
margin-top: 1rem;
}
.transaction-item {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 1rem;
}
.tx-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.5rem;
}
.tx-amount {
font-weight: 700;
color: var(--white);
}
.tx-status {
padding: 0.25rem 0.5rem;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 600;
}
.tx-status.pending {
background: var(--pastel-yellow);
color: var(--black);
}
.tx-description {
color: var(--text-secondary);
font-size: 0.9rem;
margin-bottom: 0.75rem;
}
.signature-progress {
display: flex;
gap: 0.5rem;
}
.signature {
width: 32px;
height: 32px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
font-weight: 600;
}
.signature.signed {
background: var(--pastel-green);
color: var(--black);
}
.signature.pending {
background: var(--border-color);
color: var(--text-muted);
}
/* Integration cards */
.integration-card {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 1.5rem;
text-align: center;
transition: all 0.3s ease;
height: 100%;
}
.integration-card:hover {
border-color: var(--pastel-blue);
transform: translateY(-5px);
}
.integration-icon {
font-size: 2rem;
margin-bottom: 1rem;
}
.integration-card h6 {
color: var(--white);
margin-bottom: 0.5rem;
}
/* Protocol stats */
.protocol-stats {
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid var(--border-color);
}
.stat-row {
display: flex;
justify-content: space-between;
margin-bottom: 0.5rem;
font-size: 0.9rem;
}
/* Strategy demos */
.strategy-demo {
margin-top: 1rem;
padding: 1rem;
background: rgba(255, 255, 255, 0.02);
border-radius: 8px;
}
.compound-visualization {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.compound-layer {
padding: 0.5rem;
background: var(--border-color);
border-radius: 4px;
text-align: center;
font-size: 0.85rem;
color: var(--white);
}
.compound-layer.layer-2 {
background: var(--pastel-blue);
color: var(--black);
}
.compound-layer.layer-3 {
background: var(--pastel-green);
color: var(--black);
}
.rebalance-chart {
text-align: center;
}
.allocation-bar {
display: flex;
height: 30px;
border-radius: 4px;
overflow: hidden;
margin-bottom: 0.5rem;
}
.allocation-segment {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
font-weight: 600;
color: var(--black);
}
.allocation-segment.eth { background: var(--pastel-blue); }
.allocation-segment.btc { background: var(--pastel-yellow); }
.allocation-segment.stable { background: var(--pastel-green); }
.rebalance-arrow {
font-size: 1.5rem;
color: var(--pastel-blue);
}
.risk-gauge {
text-align: center;
}
.gauge-container {
position: relative;
width: 100px;
height: 50px;
margin: 0 auto 1rem;
background: var(--border-color);
border-radius: 50px 50px 0 0;
overflow: hidden;
}
.gauge-fill {
position: absolute;
bottom: 0;
left: 0;
height: 100%;
width: var(--risk-level);
background: var(--pastel-green);
transition: width 0.3s ease;
}
.gauge-label {
font-size: 0.85rem;
color: var(--white);
margin-bottom: 0.5rem;
}
.risk-metrics {
font-size: 0.85rem;
}
.risk-metric {
display: flex;
justify-content: space-between;
}
/* Network grid */
.network-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
.network-card {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 1rem;
text-align: center;
transition: all 0.3s ease;
}
.network-card:hover {
border-color: var(--pastel-blue);
transform: scale(1.02);
}
.network-icon {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.network-name {
font-weight: 600;
color: var(--white);
margin-bottom: 0.5rem;
}
.network-stats {
font-size: 0.85rem;
color: var(--text-secondary);
}
.cross-chain-features {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
.feature-item {
display: flex;
align-items: center;
gap: 0.75rem;
}
.feature-check {
color: var(--pastel-green);
font-weight: 600;
}
/* Innovation cards */
.innovation-card {
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 2rem;
height: 100%;
}
.innovation-header {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1rem;
}
.innovation-icon {
font-size: 2rem;
}
.innovation-card h5 {
color: var(--white);
margin: 0;
}
.ai-demo {
margin-top: 1rem;
}
.ai-process {
display: flex;
align-items: center;
gap: 0.5rem;
}
.process-step {
padding: 0.5rem 1rem;
background: var(--border-color);
border-radius: 8px;
font-size: 0.85rem;
color: var(--text-secondary);
transition: all 0.3s ease;
}
.process-step.active {
background: var(--pastel-blue);
color: var(--black);
}
.process-arrow {
color: var(--pastel-blue);
font-weight: 600;
}
.chain-network {
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
margin-top: 1rem;
}
.chain-node {
width: 40px;
height: 40px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
font-weight: 600;
color: var(--black);
}
.chain-node.ethereum { background: var(--pastel-blue); }
.chain-node.polygon { background: var(--pastel-purple); }
.chain-node.bsc { background: var(--pastel-yellow); }
.chain-node.avalanche { background: var(--pastel-pink); }
.chain-connection {
width: 20px;
height: 2px;
background: var(--border-color);
}
/* Community stats */
.cta-features {
display: flex;
justify-content: center;
gap: 2rem;
flex-wrap: wrap;
}
.cta-feature {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.9rem;
color: var(--text-secondary);
}
.cta-icon {
color: var(--pastel-green);
font-weight: 600;
}
/* Security indicators */
.security-indicators {
display: flex;
flex-direction: column;
gap: 0.5rem;
margin-top: 1rem;
}
.indicator {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.85rem;
}
.indicator-icon {
font-size: 1rem;
}
/* Performance metrics */
.performance-metrics {
display: flex;
justify-content: space-around;
margin-top: 1rem;
}
.metric {
text-align: center;
}
.metric-value {
font-size: 1.25rem;
font-weight: 700;
color: var(--pastel-blue);
}
.metric-label {
font-size: 0.8rem;
color: var(--text-muted);
}
/* Global stats */
.global-stats {
display: flex;
justify-content: space-around;
margin-top: 1rem;
}
.stat {
text-align: center;
}
.stat-value {
font-size: 1.25rem;
font-weight: 700;
color: var(--pastel-blue);
}
.stat-label {
font-size: 0.8rem;
color: var(--text-muted);
}
/* Pure CSS scroll animations using animation-timeline (modern browsers) */
.fade-in {
animation: fadeInUp 1s ease-out both;
animation-timeline: view();
animation-range: entry 0% cover 30%;
}
.slide-in-left {
animation: slideInLeft 1s ease-out both;
animation-timeline: view();
animation-range: entry 0% cover 30%;
}
.slide-in-right {
animation: slideInRight 1s ease-out both;
animation-timeline: view();
animation-range: entry 0% cover 30%;
}
.scale-in {
animation: scaleIn 1s ease-out both;
animation-timeline: view();
animation-range: entry 0% cover 30%;
}
/* Fallback for browsers without animation-timeline support */
@supports not (animation-timeline: view()) {
.fade-in {
animation: fadeInUp 0.8s ease-out forwards;
animation-delay: 0.1s;
}
.slide-in-left {
animation: slideInLeft 0.8s ease-out forwards;
animation-delay: 0.2s;
}
.slide-in-right {
animation: slideInRight 0.8s ease-out forwards;
animation-delay: 0.3s;
}
.scale-in {
animation: scaleIn 0.8s ease-out forwards;
animation-delay: 0.4s;
}
/* Stagger animations for multiple elements */
.fade-in:nth-child(2) { animation-delay: 0.3s; }
.fade-in:nth-child(3) { animation-delay: 0.5s; }
.fade-in:nth-child(4) { animation-delay: 0.7s; }
.fade-in:nth-child(5) { animation-delay: 0.9s; }
.slide-in-left:nth-child(2) { animation-delay: 0.4s; }
.slide-in-left:nth-child(3) { animation-delay: 0.6s; }
.slide-in-right:nth-child(2) { animation-delay: 0.5s; }
.slide-in-right:nth-child(3) { animation-delay: 0.7s; }
}
/* Keyframe animations */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(40px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-60px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(60px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
/* Immediate animations for hero content */
.hero-section .fade-in,
.hero-section .slide-in-left,
.hero-section .slide-in-right {
animation: fadeInUp 1s ease-out forwards;
}
.hero-section .slide-in-right {
animation: slideInRight 1s ease-out forwards;
animation-delay: 0.3s;
}
/* Keyframe animations for hero */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(50px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Ensure content is visible if animations are disabled */
@media (prefers-reduced-motion: reduce) {
.fade-in,
.slide-in-left,
.slide-in-right,
.scale-in {
animation: none !important;
opacity: 1 !important;
transform: none !important;
transition: none !important;
}
}
/* Fallback for when JavaScript doesn't load */
.fade-in,
.slide-in-left,
.slide-in-right,
.scale-in {
opacity: 1;
transform: none;
}
/* Statistics */
.stat-number {
font-size: 3.5rem;
font-weight: 800;
background: linear-gradient(135deg, var(--pastel-blue), var(--pastel-purple));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 0.5rem;
}
.stat-label {
color: var(--text-secondary);
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.5px;
font-size: 0.9rem;
}
/* Footer */
.footer {
background: var(--bg-secondary);
border-top: 1px solid var(--border-color);
padding: 4rem 0 2rem;
margin-top: 6rem;
}
.footer-link {
color: var(--text-secondary);
text-decoration: none;
transition: color 0.3s ease;
}
.footer-link:hover {
color: var(--pastel-blue);
}
/* Responsive design */
@media (max-width: 768px) {
.section {
padding: 80px 0;
}
.hero-title {
font-size: 3rem;
}
.section-title {
font-size: 2.5rem;
}
.feature-card {
margin-bottom: 2rem;
}
.marketplace-flow-container {
height: 300px;
}
.marketplace-item {
min-width: 240px;
}
.btn {
padding: 10px 20px;
font-size: 0.9rem;
}
.btn-lg {
padding: 14px 28px;
font-size: 1rem;
}
.trading-content {
grid-template-columns: 1fr;
height: auto;
}
.dashboard-metrics {
grid-template-columns: 1fr;
}
.network-grid {
grid-template-columns: 1fr;
}
.ai-process {
flex-direction: column;
text-align: center;
}
.process-arrow {
transform: rotate(90deg);
}
.chain-network {
flex-wrap: wrap;
}
.cta-features {
gap: 1rem;
}
}
@media (max-width: 576px) {
.hero-section {
padding-top: 100px;
}
.section {
padding: 60px 0;
}
.feature-card {
padding: 2rem 1.5rem;
}
.stat-number {
font-size: 2.5rem;
}
.floating-cards {
display: none;
}
.performance-metrics,
.global-stats {
flex-direction: column;
gap: 1rem;
}
}
/* Loading states */
.loading {
opacity: 0;
animation: fadeInLoad 0.5s ease-out forwards;
}
@keyframes fadeInLoad {
to {
opacity: 1;
}
}
/* World Map Styles */
.world-map-container {
background: transparent;
position: relative;
overflow: visible;
width: 100%;
margin: 0;
padding: 0;
}
.map-wrapper {
position: relative;
height: 500px;
width: 100%;
overflow: visible;
border-radius: 12px;
padding: 50px;
}
/* Remove wrapper overlay */
/* Add fade-out mask overlay directly to the leaflet map */
.leaflet-map::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
background: radial-gradient(ellipse at center, transparent 20%, rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0.3) 60%, rgba(0, 0, 0, 0.6) 80%, rgba(0, 0, 0, 1) 100%);
pointer-events: none;
z-index: 20;
}
/* Hero section map styling */
.hero-section .world-map-container {
max-width: 600px;
margin: 0 auto;
margin-right: -50px;
}
.hero-section .map-wrapper {
height: 450px;
border-radius: 16px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
overflow: visible;
padding: 60px;
}
.hero-section .map-stats {
display: none;
}
.leaflet-map {
width: 150%;
height: 150%;
z-index: 1;
background: transparent !important;
position: absolute;
top: -25%;
left: -25%;
}
/* Make Leaflet map visible with balanced darker grayscale */
.leaflet-map {
opacity: 1 !important;
background: transparent !important;
}
.leaflet-map .leaflet-tile {
opacity: 0.8 !important;
/* Sweet spot - darker but still visible */
filter: brightness(0.55) contrast(1.4) saturate(0) grayscale(1);
mix-blend-mode: multiply;
}
.leaflet-map .leaflet-tile-container {
opacity: 1 !important;
background: transparent !important;
}
.leaflet-map .leaflet-tile-container .leaflet-tile {
opacity: 0.8 !important;
filter: brightness(0.55) contrast(1.4) saturate(0) grayscale(1);
mix-blend-mode: multiply;
}
/* Hide all Leaflet controls */
.leaflet-map .leaflet-control-zoom,
.leaflet-map .leaflet-control-attribution {
display: none !important;
}
.leaflet-map .leaflet-container {
opacity: 1 !important;
background: transparent !important;
}
.leaflet-map .leaflet-tile-pane {
opacity: 1 !important;
background: transparent !important;
}
.leaflet-map .leaflet-layer {
opacity: 1 !important;
background: transparent !important;
}
/* Map tiles with balanced darker grayscale styling */
.leaflet-map .map-tiles {
opacity: 0.8 !important;
filter: brightness(0.55) contrast(1.4) saturate(0) grayscale(1);
mix-blend-mode: multiply;
}
.connection-overlay {
position: absolute;
top: -50px;
left: -50px;
right: -50px;
bottom: -50px;
pointer-events: none;
z-index: 10;
overflow: visible;
}
.connections-svg {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 11;
}
.connection-line {
fill: none;
stroke: #00ffff;
stroke-width: 3;
opacity: 0.9;
filter: drop-shadow(0 0 12px #00ffff);
}
.connection-line.animated {
animation: beamPulse 3s ease-in-out infinite;
}
@keyframes beamPulse {
0%, 100% {
opacity: 0.4;
stroke-width: 1;
}
50% {
opacity: 0.9;
stroke-width: 3;
}
}
.connection-dot {
fill: #00ffff;
filter: drop-shadow(0 0 15px #00ffff);
opacity: 1;
}
.connection-dot.moving {
fill: #00ff00;
filter: drop-shadow(0 0 20px #00ff00);
animation: dotGlow 1.5s ease-in-out infinite;
}
@keyframes dotGlow {
0%, 100% {
opacity: 0.8;
r: 5;
}
50% {
opacity: 1;
r: 8;
}
}
/* Beam gradient definition */
.beam-gradient {
--beam-start: rgba(0, 255, 255, 0.1);
--beam-middle: rgba(0, 255, 255, 0.8);
--beam-end: rgba(0, 255, 255, 0.1);
}
.zanzibar-hub {
fill: #00ff00;
filter: drop-shadow(0 0 20px #00ff00);
animation: hubPulse 2s ease-in-out infinite;
}
.zanzibar-pulse {
fill: none;
stroke: #00ff00;
stroke-width: 3;
opacity: 0.8;
animation: hubRipple 2s ease-in-out infinite;
}
@keyframes hubPulse {
0%, 100% {
opacity: 0.9;
r: 15;
}
50% {
opacity: 1;
r: 18;
}
}
@keyframes hubRipple {
0% {
r: 15;
opacity: 0.8;
}
100% {
r: 40;
opacity: 0;
}
}
/* Entity Cards */
.entity-card {
position: absolute;
background: rgba(0, 0, 0, 0.95);
border: 2px solid var(--pastel-blue);
border-radius: 12px;
padding: 1rem;
min-width: 280px;
max-width: 320px;
backdrop-filter: blur(15px);
transform: translate(-50%, -100%);
z-index: 10;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
animation: cardAppear 0.5s ease-out;
}
@keyframes cardAppear {
from {
opacity: 0;
transform: translate(-50%, -100%) scale(0.8);
}
to {
opacity: 1;
transform: translate(-50%, -100%) scale(1);
}
}
.entity-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.75rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid var(--border-color);
}
.entity-type {
padding: 0.25rem 0.75rem;
border-radius: 12px;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.entity-type.business {
background: var(--pastel-blue);
color: var(--black);
}
.entity-type.resident {
background: var(--pastel-purple);
color: var(--black);
}
.entity-date {
color: var(--text-muted);
font-size: 0.8rem;
}
.entity-name {
font-size: 1.1rem;
font-weight: 700;
color: var(--white);
margin-bottom: 0.5rem;
}
.entity-location {
display: flex;
align-items: center;
gap: 0.5rem;
color: var(--text-secondary);
font-size: 0.9rem;
margin-bottom: 0.5rem;
}
.location-icon {
font-size: 0.8rem;
}
.entity-industry {
color: var(--pastel-green);
font-size: 0.85rem;
font-weight: 600;
margin-bottom: 0.75rem;
}
.entity-status {
color: var(--pastel-blue);
font-size: 0.9rem;
font-weight: 600;
margin-bottom: 0.75rem;
animation: statusPulse 2s ease-in-out infinite;
}
@keyframes statusPulse {
0%, 100% {
opacity: 0.8;
}
50% {
opacity: 1;
}
}
.connection-progress {
margin-top: 0.75rem;
}
.progress-bar {
width: 100%;
height: 4px;
background: var(--border-color);
border-radius: 2px;
overflow: hidden;
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, var(--pastel-blue), var(--pastel-green));
border-radius: 2px;
transition: width 0.3s ease;
animation: progressGlow 1.5s ease-in-out infinite;
}
@keyframes progressGlow {
0%, 100% {
box-shadow: 0 0 4px var(--pastel-blue);
}
50% {
box-shadow: 0 0 8px var(--pastel-green);
}
}
.zanzibar-hub {
fill: var(--pastel-green);
filter: drop-shadow(0 0 10px var(--pastel-green));
}
.zanzibar-pulse {
fill: none;
stroke: var(--pastel-green);
stroke-width: 2;
opacity: 0.6;
animation: hubPulse 2s ease-in-out infinite;
}
@keyframes hubPulse {
0% {
r: 12;
opacity: 0.8;
}
100% {
r: 25;
opacity: 0;
}
}
.city-labels {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
}
.city-label {
position: absolute;
background: rgba(0, 0, 0, 0.8);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 0.5rem 0.75rem;
backdrop-filter: blur(10px);
transform: translate(-50%, -50%);
animation: labelFloat 4s ease-in-out infinite;
}
.city-label:nth-child(2n) {
animation-delay: 1s;
}
.city-label:nth-child(3n) {
animation-delay: 2s;
}
@keyframes labelFloat {
0%, 100% {
transform: translate(-50%, -50%) translateY(0px);
}
50% {
transform: translate(-50%, -50%) translateY(-5px);
}
}
.city-name {
display: block;
color: var(--white);
font-weight: 600;
font-size: 0.9rem;
margin-bottom: 0.25rem;
}
.city-name.zanzibar {
color: var(--pastel-green);
font-size: 1.1rem;
}
.city-connections {
display: block;
color: var(--pastel-blue);
font-size: 0.75rem;
}
.city-subtitle {
display: block;
color: var(--pastel-purple);
font-size: 0.8rem;
margin-bottom: 0.25rem;
}
.total-entities {
display: block;
color: var(--pastel-green);
font-size: 0.85rem;
font-weight: 600;
}
.zanzibar-label {
position: absolute;
background: rgba(0, 0, 0, 0.9);
border: 2px solid var(--pastel-green);
border-radius: 12px;
padding: 1rem 1.25rem;
backdrop-filter: blur(15px);
transform: translate(-50%, -50%);
box-shadow: 0 0 20px rgba(134, 239, 172, 0.3);
}
.map-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 2rem;
margin-top: 2rem;
padding-top: 2rem;
border-top: 1px solid var(--border-color);
}
.map-stats .stat-item {
text-align: center;
}
.map-stats .stat-number {
font-size: 2rem;
font-weight: 700;
color: var(--pastel-blue);
margin-bottom: 0.5rem;
}
.map-stats .stat-label {
color: var(--text-secondary);
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.global-connections-section {
background: var(--bg-secondary);
position: relative;
overflow: hidden;
}
.global-connections-section::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
radial-gradient(circle at 30% 20%, rgba(167, 243, 208, 0.03) 0%, transparent 50%),
radial-gradient(circle at 70% 80%, rgba(196, 181, 253, 0.03) 0%, transparent 50%);
pointer-events: none;
}
/* Responsive map styles */
@media (max-width: 768px) {
.map-wrapper {
height: 350px;
}
.map-stats {
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
}
.city-label {
padding: 0.25rem 0.5rem;
}
.city-name {
font-size: 0.8rem;
}
.city-connections {
font-size: 0.7rem;
}
.zanzibar-label {
padding: 0.75rem 1rem;
}
}
@media (max-width: 576px) {
.map-wrapper {
height: 300px;
}
.map-stats {
grid-template-columns: 1fr;
gap: 1rem;
}
.world-map-container {
padding: 1rem;
}
}
/* Utility classes */
.text-gradient {
background: linear-gradient(135deg, var(--pastel-blue), var(--pastel-purple));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.border-gradient {
border: 1px solid;
border-image: linear-gradient(135deg, var(--pastel-blue), var(--pastel-purple)) 1;
}
.bg-glass {
background: rgba(255, 255, 255, 0.02);
backdrop-filter: blur(10px);
border: 1px solid var(--border-color);
}
/* Asset Digitalization Styles */
.asset-showcase {
padding: 2rem 0;
position: relative;
}
.asset-showcase h3 {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 1.5rem;
color: var(--white);
background: linear-gradient(135deg, var(--white), var(--pastel-blue));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.asset-showcase .lead {
font-size: 1.25rem;
color: var(--text-secondary);
margin-bottom: 2rem;
line-height: 1.6;
}
.feature-list {
list-style: none;
padding: 0;
margin: 0;
}
.feature-list li {
padding: 0.75rem 0;
color: var(--text-secondary);
font-size: 1.1rem;
display: flex;
align-items: center;
transition: all 0.3s ease;
}
.feature-list li:hover {
color: var(--white);
transform: translateX(5px);
}
.feature-list li::before {
content: '';
display: inline-block;
width: 6px;
height: 6px;
background: var(--pastel-green);
border-radius: 50%;
margin-right: 1rem;
box-shadow: 0 0 8px var(--pastel-green);
}
.asset-visual {
padding: 2rem;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
/* Property Tokenization Demo */
.tokenization-demo {
width: 100%;
max-width: 400px;
}
.property-card {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 20px;
padding: 2rem;
backdrop-filter: blur(15px);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.property-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 2px;
background: linear-gradient(90deg, transparent, var(--pastel-blue), transparent);
opacity: 0;
transition: opacity 0.3s ease;
}
.property-card:hover {
transform: translateY(-5px);
border-color: var(--pastel-blue);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
}
.property-card:hover::before {
opacity: 1;
}
.property-image {
height: 140px;
background: linear-gradient(135deg, var(--pastel-blue), var(--pastel-purple));
border-radius: 12px;
margin-bottom: 1.5rem;
position: relative;
display: flex;
align-items: center;
justify-content: center;
font-size: 3rem;
overflow: hidden;
}
.property-image::after {
content: '🏢';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 3rem;
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}
.property-details h5 {
color: var(--white);
margin-bottom: 0.75rem;
font-weight: 600;
font-size: 1.2rem;
}
.property-details p {
color: var(--text-secondary);
margin-bottom: 1.5rem;
font-size: 1rem;
}
.property-details .progress {
height: 10px;
background: rgba(255, 255, 255, 0.1);
border-radius: 5px;
margin-bottom: 0.75rem;
overflow: hidden;
}
.property-details .progress-bar {
background: linear-gradient(90deg, var(--pastel-green), var(--pastel-blue));
border-radius: 5px;
transition: width 0.3s ease;
box-shadow: 0 0 10px rgba(134, 239, 172, 0.5);
}
.property-details small {
color: var(--pastel-green);
font-weight: 600;
font-size: 0.9rem;
}
/* Service Demo */
.service-demo {
width: 100%;
max-width: 400px;
}
.service-card {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 20px;
padding: 2rem;
backdrop-filter: blur(15px);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.service-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 2px;
background: linear-gradient(90deg, transparent, var(--pastel-purple), transparent);
opacity: 0;
transition: opacity 0.3s ease;
}
.service-card:hover {
transform: translateY(-5px);
border-color: var(--pastel-purple);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
}
.service-card:hover::before {
opacity: 1;
}
.service-provider {
display: flex;
align-items: center;
margin-bottom: 1.5rem;
padding-bottom: 1rem;
border-bottom: 1px solid var(--border-color);
}
.provider-avatar {
width: 60px;
height: 60px;
background: linear-gradient(135deg, var(--pastel-purple), var(--pastel-pink));
border-radius: 50%;
margin-right: 1rem;
position: relative;
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
box-shadow: 0 4px 15px rgba(196, 181, 253, 0.3);
}
.provider-avatar::after {
content: '👨‍💼';
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}
.provider-info h6 {
color: var(--white);
margin-bottom: 0.25rem;
font-weight: 600;
font-size: 1.1rem;
}
.provider-info p {
color: var(--text-secondary);
font-size: 0.9rem;
margin: 0;
}
.service-contract .contract-status {
background: var(--pastel-green);
color: var(--black);
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.85rem;
font-weight: 600;
display: inline-block;
margin-bottom: 1rem;
box-shadow: 0 2px 8px rgba(134, 239, 172, 0.3);
}
.milestones {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.milestone {
padding: 0.75rem 1rem;
border-radius: 8px;
font-size: 0.9rem;
font-weight: 500;
transition: all 0.3s ease;
}
.milestone.completed {
background: rgba(134, 239, 172, 0.1);
color: var(--pastel-green);
border-left: 3px solid var(--pastel-green);
}
.milestone.active {
background: rgba(253, 230, 138, 0.1);
color: var(--pastel-yellow);
border-left: 3px solid var(--pastel-yellow);
animation: pulse 2s infinite;
}
.milestone.pending {
background: rgba(255, 255, 255, 0.05);
color: var(--text-muted);
border-left: 3px solid var(--border-color);
}
/* Digital Assets Demo */
.digital-assets-demo {
width: 100%;
max-width: 450px;
}
.asset-grid {
display: grid;
grid-template-columns: 1fr;
gap: 1rem;
}
.digital-asset {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
border-radius: 16px;
padding: 1.5rem;
backdrop-filter: blur(10px);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.digital-asset::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, var(--pastel-blue), transparent);
opacity: 0;
transition: opacity 0.3s ease;
}
.digital-asset:hover {
transform: translateY(-3px);
border-color: var(--pastel-blue);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}
.digital-asset:hover::before {
opacity: 1;
}
.asset-type {
background: linear-gradient(135deg, var(--pastel-blue), var(--pastel-purple));
color: var(--black);
padding: 0.4rem 1rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 600;
display: inline-block;
margin-bottom: 1rem;
text-transform: uppercase;
letter-spacing: 0.5px;
box-shadow: 0 2px 8px rgba(167, 243, 208, 0.3);
}
.digital-asset h6 {
color: var(--white);
margin-bottom: 0.75rem;
font-weight: 600;
font-size: 1.1rem;
}
.digital-asset p {
color: var(--text-secondary);
font-size: 0.95rem;
margin: 0;
line-height: 1.4;
}
/* Responsive adjustments for asset digitalization */
@media (max-width: 768px) {
.asset-showcase {
text-align: center;
margin-bottom: 3rem;
}
.asset-showcase h3 {
font-size: 2rem;
}
.asset-visual {
margin-bottom: 2rem;
padding: 1rem;
}
.property-card,
.service-card,
.digital-assets-demo {
max-width: 100%;
}
.feature-list li {
font-size: 1rem;
}
}
@media (max-width: 576px) {
.asset-showcase {
padding: 1rem 0;
}
.asset-showcase h3 {
font-size: 1.75rem;
}
.asset-showcase .lead {
font-size: 1.1rem;
}
.property-card,
.service-card {
padding: 1.5rem;
}
.digital-asset {
padding: 1.25rem;
}
}