montana/Русский/Логистика/landing.html

1988 lines
82 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title>SeaFare Montana — AI Maritime Logistics Platform</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600;700;800&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
--bg-dark: #050d1a;
--bg-panel: #0a1929;
--bg-surface: #0f2137;
--bg-chat: #0c1522;
--bg-input: #162240;
--bg-hover: rgba(255,255,255,0.04);
--accent: #2dd4bf;
--accent2: #0ea5e9;
--accent3: #818cf8;
--accent-warm: #c9956b;
--text: #f0f4f8;
--text-dim: #94a3b8;
--text-muted: #64748b;
--user-msg: #1a3a5c;
--bot-msg: rgba(22,34,64,0.45);
--border: rgba(255,255,255,0.08);
--border-strong: rgba(255,255,255,0.14);
--success: #34d399;
--warn: #fbbf24;
--danger: #f87171;
}
body {
font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: var(--bg-dark);
color: var(--text);
overflow-x: hidden;
scroll-behavior: smooth;
}
h1, h2, h3, .hero-title, .section-title {
font-family: 'Plus Jakarta Sans', 'Inter', sans-serif;
}
/* Sidebar */
.sidebar {
width: 280px;
background: var(--bg-panel);
border-right: 1px solid var(--border-strong);
display: flex;
flex-direction: column;
flex-shrink: 0;
}
.sidebar-header {
padding: 20px;
border-bottom: 1px solid var(--border);
}
.logo {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 8px;
}
.logo-icon {
width: 42px;
height: 42px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 22px;
}
.logo-text h1 {
font-size: 16px;
font-weight: 600;
color: var(--text);
}
.logo-text span {
font-size: 11px;
color: var(--text-dim);
}
.status-badge {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 10px;
background: rgba(0, 200, 83, 0.1);
border: 1px solid rgba(0, 200, 83, 0.3);
border-radius: 20px;
font-size: 11px;
color: var(--success);
margin-top: 12px;
}
.status-dot {
width: 6px;
height: 6px;
background: var(--success);
border-radius: 50%;
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.4; }
}
/* Services */
.services {
padding: 16px 20px;
flex: 1;
overflow-y: auto;
}
.services h3 {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 1px;
color: var(--text-dim);
margin-bottom: 12px;
}
.service-item {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 12px;
border-radius: 8px;
margin-bottom: 4px;
cursor: pointer;
transition: background 0.2s;
}
.service-item:hover {
background: rgba(0, 180, 216, 0.1);
}
.service-icon {
font-size: 18px;
width: 32px;
text-align: center;
}
.service-info {
flex: 1;
}
.service-info .name {
font-size: 13px;
font-weight: 500;
}
.service-info .price {
font-size: 11px;
color: var(--text-dim);
}
.price-tag {
font-size: 11px;
padding: 2px 8px;
border-radius: 10px;
background: rgba(0, 180, 216, 0.15);
color: var(--accent);
font-weight: 600;
}
.price-free {
background: rgba(0, 200, 83, 0.15);
color: var(--success);
}
/* Sidebar footer */
.sidebar-footer {
padding: 16px 20px;
border-top: 1px solid var(--border);
font-size: 11px;
color: var(--text-dim);
text-align: center;
}
.sidebar-footer a {
color: var(--accent);
text-decoration: none;
}
/* Main chat area */
.main {
flex: 1;
display: flex;
flex-direction: column;
min-width: 0;
}
/* Chat header */
.chat-header {
padding: 16px 24px;
background: var(--bg-panel);
border-bottom: 1px solid var(--border-strong);
display: flex;
align-items: center;
justify-content: space-between;
}
.chat-header-left {
display: flex;
align-items: center;
gap: 12px;
}
.chat-header-left h2 {
font-size: 15px;
font-weight: 600;
}
.chat-header-left span {
font-size: 12px;
color: var(--text-dim);
}
.header-actions {
display: flex;
gap: 8px;
align-items: center;
}
.header-btn {
padding: 6px 14px;
border: 1px solid var(--border);
border-radius: 6px;
background: transparent;
color: var(--text-dim);
font-size: 12px;
cursor: pointer;
transition: all 0.2s;
}
.header-btn:hover {
border-color: var(--accent);
color: var(--accent);
}
/* Language switcher */
.lang-switcher {
display: flex;
gap: 2px;
background: var(--bg-input);
border-radius: 6px;
padding: 2px;
border: 1px solid var(--border);
}
.lang-btn {
padding: 4px 10px;
border: none;
border-radius: 4px;
background: transparent;
color: var(--text-dim);
font-size: 12px;
cursor: pointer;
transition: all 0.2s;
font-weight: 500;
}
.lang-btn:hover {
color: var(--text);
}
.lang-btn.active {
background: var(--accent2);
color: white;
}
/* Messages */
.messages {
flex: 1;
overflow-y: auto;
padding: 28px 24px 100px;
display: flex;
flex-direction: column;
gap: 24px;
background: var(--bg-chat);
scroll-behavior: smooth;
}
.message {
display: flex;
gap: 12px;
max-width: 85%;
animation: messageIn 0.4s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
@keyframes messageIn {
from { opacity: 0; transform: translateY(10px) scale(0.98); filter: blur(3px); }
to { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}
.message.user {
align-self: flex-end;
flex-direction: row-reverse;
}
.msg-avatar {
width: 30px;
height: 30px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
flex-shrink: 0;
}
.message.bot .msg-avatar {
background: linear-gradient(135deg, var(--accent), var(--accent2));
}
.message.user .msg-avatar {
background: var(--user-msg);
}
.msg-content {
padding: 16px 20px;
border-radius: 18px;
font-size: 15px;
line-height: 1.65;
letter-spacing: -0.01em;
}
.message.bot .msg-content {
background: var(--bot-msg);
border-radius: 18px;
}
.message.user .msg-content {
background: linear-gradient(135deg, var(--accent2), #005a99);
color: white;
border-radius: 20px;
padding: 12px 18px;
}
.msg-content pre {
background: rgba(0, 0, 0, 0.35);
padding: 14px 18px;
border-radius: 12px;
border: 1px solid rgba(255, 255, 255, 0.06);
margin: 10px 0;
font-size: 13px;
overflow-x: auto;
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
line-height: 1.6;
}
.msg-content code {
background: rgba(0, 0, 0, 0.3);
padding: 2px 7px;
border-radius: 5px;
font-size: 13px;
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
}
.msg-content .vessel-card {
background: rgba(0, 180, 216, 0.06);
border: 1px solid rgba(0, 180, 216, 0.15);
border-radius: 14px;
padding: 16px;
margin: 10px 0;
backdrop-filter: blur(8px);
}
.vessel-card .vessel-name {
font-size: 15px;
font-weight: 600;
color: var(--accent);
margin-bottom: 10px;
}
.vessel-card .vessel-row {
display: flex;
justify-content: space-between;
padding: 4px 0;
font-size: 13px;
border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}
.vessel-card .vessel-row:last-child { border-bottom: none; }
.vessel-card .vessel-label {
color: var(--text-dim);
}
.msg-time {
font-size: 10px;
color: var(--text-dim);
margin-top: 6px;
padding: 0 4px;
opacity: 0.7;
}
.message.user .msg-time {
text-align: right;
}
/* Typing indicator */
.typing {
display: flex;
gap: 5px;
padding: 8px 4px;
}
.typing span {
width: 6px;
height: 6px;
background: var(--accent);
border-radius: 50%;
animation: typingPulse 1.4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
opacity: 0.4;
}
.typing span:nth-child(2) { animation-delay: 0.15s; }
.typing span:nth-child(3) { animation-delay: 0.3s; }
@keyframes typingPulse {
0%, 60%, 100% { transform: translateY(0) scale(1); opacity: 0.4; }
30% { transform: translateY(-5px) scale(1.2); opacity: 1; }
}
/* Input area */
.input-area {
padding: 0 24px 20px;
background: linear-gradient(to top, var(--bg-panel) 60%, transparent);
position: relative;
margin-top: -80px;
pointer-events: none;
padding-top: 80px;
}
.input-area > * { pointer-events: auto; }
.input-glass {
display: flex;
gap: 6px;
align-items: flex-end;
background: rgba(22, 34, 64, 0.65);
backdrop-filter: blur(20px) saturate(180%);
-webkit-backdrop-filter: blur(20px) saturate(180%);
border: 1px solid rgba(255, 255, 255, 0.10);
border-radius: 24px;
padding: 6px 6px 6px 18px;
transition: border-color 0.25s, box-shadow 0.25s;
}
.input-glass:focus-within {
border-color: rgba(0, 180, 216, 0.4);
box-shadow: 0 0 0 3px rgba(0, 180, 216, 0.08), 0 4px 24px rgba(0, 0, 0, 0.2);
}
.input-wrapper {
flex: 1;
position: relative;
}
.input-wrapper textarea {
width: 100%;
padding: 10px 0;
background: transparent;
border: none;
color: var(--text);
font-size: 15px;
font-family: inherit;
resize: none;
outline: none;
min-height: 40px;
max-height: 120px;
line-height: 1.5;
}
.input-wrapper textarea::placeholder {
color: var(--text-dim);
}
.send-btn {
width: 38px;
height: 38px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border: none;
border-radius: 12px;
color: white;
font-size: 16px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: transform 0.15s, opacity 0.2s;
flex-shrink: 0;
}
.send-btn:hover { transform: scale(1.08); }
.send-btn:active { transform: scale(0.93); }
.send-btn:disabled { opacity: 0.3; cursor: not-allowed; transform: none; }
/* Voice input button */
.voice-btn {
width: 38px;
height: 38px;
background: transparent;
border: none;
border-radius: 12px;
color: var(--text-dim);
font-size: 18px;
cursor: pointer;
display: none;
align-items: center;
justify-content: center;
transition: all 0.2s;
flex-shrink: 0;
}
.voice-btn:hover { color: var(--text); background: rgba(255, 255, 255, 0.06); }
.voice-btn.recording {
background: rgba(255, 59, 48, 0.15);
color: #ff3b30;
animation: pulse-rec 1.5s ease infinite;
}
@keyframes pulse-rec {
0%, 100% { box-shadow: 0 0 0 0 rgba(255,59,48,0.4); }
50% { box-shadow: 0 0 0 8px rgba(255,59,48,0); }
}
.voice-btn.recording:hover { color: #ff3b30; }
.input-hint {
font-size: 11px;
color: var(--text-dim);
margin-top: 10px;
padding: 0 8px;
opacity: 0.7;
}
/* Quick actions */
.quick-actions {
display: flex;
gap: 8px;
margin-bottom: 14px;
flex-wrap: wrap;
}
.quick-btn {
padding: 8px 16px;
background: rgba(22, 34, 64, 0.5);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 20px;
color: var(--text-dim);
font-size: 12px;
cursor: pointer;
transition: all 0.2s;
white-space: nowrap;
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
.quick-btn:hover {
border-color: rgba(0, 180, 216, 0.3);
color: var(--accent);
background: rgba(0, 180, 216, 0.08);
}
/* Scrollbar */
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.08); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.16); }
.messages { scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.08) transparent; }
/* Auth modal */
.auth-overlay {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(10, 22, 40, 0.92);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
}
.auth-overlay.hidden { display: none; }
.auth-modal {
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 16px;
padding: 36px;
width: 370px;
max-width: 90vw;
}
.auth-logo {
display: flex; align-items: center; gap: 12px;
justify-content: center; margin-bottom: 20px;
}
.auth-logo .logo-icon { width: 38px; height: 38px; font-size: 20px; }
.auth-logo h2 { font-size: 17px; font-weight: 600; }
.auth-modal h3 {
text-align: center; font-size: 15px;
margin-bottom: 18px; color: var(--text-dim);
}
.auth-field { margin-bottom: 12px; }
.auth-field input {
width: 100%; padding: 11px 14px;
background: var(--bg-input); border: 1px solid var(--border);
border-radius: 8px; color: var(--text);
font-size: 14px; font-family: inherit; outline: none;
transition: border-color 0.2s;
}
.auth-field input:focus { border-color: var(--accent); }
.auth-submit {
width: 100%; padding: 11px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border: none; border-radius: 8px; color: white;
font-size: 14px; font-weight: 600; cursor: pointer;
transition: opacity 0.2s; margin-top: 4px;
}
.auth-submit:hover { opacity: 0.9; }
.auth-submit:disabled { opacity: 0.5; cursor: not-allowed; }
.auth-divider {
display: flex; align-items: center; gap: 12px;
margin: 16px 0; color: var(--text-dim); font-size: 12px;
}
.auth-divider::before, .auth-divider::after {
content: ''; flex: 1; height: 1px; background: var(--border);
}
.google-btn-wrap {
display: flex; justify-content: center; margin-bottom: 4px;
}
.auth-switch { text-align: center; margin-top: 14px; }
.auth-switch a { color: var(--accent); text-decoration: none; font-size: 13px; }
.auth-close { text-align: center; margin-top: 10px; }
.auth-close a { color: var(--text-dim); text-decoration: none; font-size: 12px; }
.auth-close a:hover { color: var(--text); }
.auth-error {
background: rgba(255, 82, 82, 0.1);
border: 1px solid rgba(255, 82, 82, 0.3);
color: #ff5252; padding: 9px 14px; border-radius: 8px;
font-size: 13px; margin-bottom: 12px; text-align: center;
}
/* User info in header */
.user-info {
font-size: 13px; color: var(--text-dim);
display: flex; align-items: center; gap: 8px;
}
.admin-badge {
padding: 2px 8px; border-radius: 10px;
background: rgba(255, 107, 53, 0.2);
color: #ff6b35; font-size: 10px; font-weight: 700;
letter-spacing: 0.5px;
}
.admin-revenue-btn {
background: rgba(255, 107, 53, 0.15) !important;
color: #ff6b35 !important;
border: 1px solid rgba(255, 107, 53, 0.3) !important;
font-size: 12px !important;
padding: 3px 8px !important;
}
/* Revenue Modal */
.revenue-overlay {
position: fixed; top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.6); z-index: 1001;
display: flex; align-items: center; justify-content: center;
backdrop-filter: blur(4px);
}
.revenue-overlay.hidden { display: none; }
.revenue-modal {
background: var(--bg-panel); border-radius: 16px;
padding: 32px; width: 520px; max-width: 95vw;
max-height: 90vh; max-height: 90dvh; overflow-y: auto;
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
border: 1px solid var(--border);
}
.revenue-modal h2 {
color: var(--text); font-size: 20px; margin-bottom: 20px;
display: flex; align-items: center; gap: 10px;
}
.revenue-cards {
display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
margin-bottom: 20px;
}
.revenue-card {
background: rgba(22, 34, 64, 0.5); border-radius: 12px;
padding: 16px; text-align: center;
border: 1px solid var(--border);
}
.revenue-card .label {
font-size: 11px; color: var(--text-dim);
text-transform: uppercase; letter-spacing: 0.5px;
margin-bottom: 6px;
}
.revenue-card .value {
font-size: 22px; font-weight: 700; color: var(--text);
}
.revenue-card .value.green { color: var(--success); }
.revenue-card .value.orange { color: #ff6b35; }
.revenue-table {
width: 100%; border-collapse: collapse; margin-top: 16px;
}
.revenue-table th {
text-align: left; padding: 8px 10px; font-size: 11px;
color: var(--text-dim); text-transform: uppercase;
border-bottom: 1px solid var(--border);
}
.revenue-table td {
padding: 8px 10px; font-size: 13px; color: var(--text);
border-bottom: 1px solid rgba(255,255,255,0.04);
}
.revenue-close {
position: absolute; top: 12px; right: 16px;
background: none; border: none; color: var(--text-dim);
font-size: 24px; cursor: pointer;
}
.revenue-close:hover { color: var(--text); }
.balance-badge {
padding: 2px 8px; border-radius: 10px;
background: rgba(0, 200, 83, 0.15);
color: var(--success); font-size: 11px; font-weight: 600;
}
.topup-btn {
background: rgba(0, 200, 83, 0.15) !important;
color: var(--success) !important;
border: 1px solid rgba(0, 200, 83, 0.3) !important;
font-size: 12px !important;
padding: 3px 8px !important;
}
.topup-btn:hover {
background: rgba(0, 200, 83, 0.25) !important;
}
/* Deposit Modal */
.deposit-overlay {
position: fixed; top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.6); z-index: 1001;
display: flex; align-items: center; justify-content: center;
backdrop-filter: blur(4px);
}
.deposit-overlay.hidden { display: none; }
.deposit-modal {
background: var(--bg-panel); border-radius: 16px;
padding: 32px; width: 440px; max-width: 95vw;
max-height: 90vh; max-height: 90dvh; overflow-y: auto;
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
border: 1px solid var(--border);
text-align: center;
}
.deposit-modal h2 {
color: var(--text); font-size: 20px; margin-bottom: 16px;
display: flex; align-items: center; justify-content: center; gap: 10px;
}
.deposit-network {
display: inline-block;
padding: 4px 12px; border-radius: 8px;
background: rgba(0, 180, 216, 0.15); color: var(--accent);
font-size: 13px; font-weight: 600; margin-bottom: 16px;
}
.deposit-qr {
margin: 16px auto;
width: 200px; height: 200px;
background: #fff; border-radius: 12px;
padding: 8px;
display: flex; align-items: center; justify-content: center;
}
.deposit-qr img { width: 100%; height: 100%; }
.deposit-address-wrap {
background: var(--bg-input); border: 1px solid var(--border);
border-radius: 10px; padding: 12px; margin: 12px 0;
display: flex; align-items: center; gap: 8px;
}
.deposit-address {
flex: 1; font-family: monospace; font-size: 12px;
color: var(--text); word-break: break-all; text-align: left;
}
.deposit-copy-btn {
background: var(--accent); border: none; border-radius: 6px;
color: #fff; padding: 6px 12px; font-size: 12px;
cursor: pointer; flex-shrink: 0; transition: all 0.2s;
}
.deposit-copy-btn:hover { opacity: 0.85; }
.deposit-check-btn {
background: linear-gradient(135deg, var(--success), #00a844);
border: none; border-radius: 10px; color: #fff;
padding: 12px 24px; font-size: 14px; font-weight: 600;
cursor: pointer; width: 100%; margin-top: 16px;
transition: all 0.2s;
}
.deposit-check-btn:hover { opacity: 0.9; transform: scale(1.02); }
.deposit-check-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
.deposit-result {
margin-top: 12px; padding: 10px; border-radius: 8px;
font-size: 13px;
}
.deposit-result.success {
background: rgba(0, 200, 83, 0.1); color: var(--success);
border: 1px solid rgba(0, 200, 83, 0.3);
}
.deposit-result.empty {
background: rgba(255, 167, 38, 0.1); color: var(--warn);
border: 1px solid rgba(255, 167, 38, 0.3);
}
.deposit-result.error {
background: rgba(255, 82, 82, 0.1); color: #ff5252;
border: 1px solid rgba(255, 82, 82, 0.3);
}
.deposit-close {
display: inline-block; margin-top: 16px;
color: var(--text-dim); cursor: pointer; font-size: 13px;
}
.deposit-close:hover { color: var(--text); }
.deposit-history { margin-top: 16px; text-align: left; }
.deposit-history h4 { font-size: 13px; color: var(--text-dim); margin-bottom: 8px; }
.deposit-tx {
font-size: 11px; color: var(--text-dim); padding: 4px 0;
border-bottom: 1px solid var(--border);
display: flex; justify-content: space-between;
}
.deposit-tx .amount { color: var(--success); font-weight: 600; }
.deposit-tx .amount.negative { color: #ff5252; }
/* Deposit/Withdraw Tabs */
.wallet-tabs {
display: flex; gap: 0; margin-bottom: 20px;
border-radius: 10px; overflow: hidden;
border: 1px solid var(--border);
}
.wallet-tab {
flex: 1; padding: 10px 16px; font-size: 13px; font-weight: 600;
cursor: pointer; border: none; transition: all 0.2s;
background: var(--bg-input); color: var(--text-dim);
}
.wallet-tab.active {
background: var(--accent); color: #fff;
}
.wallet-tab:hover:not(.active) { background: var(--bg-hover); }
.wallet-tab-content { display: none; }
.wallet-tab-content.active { display: block; }
/* Withdraw form */
.withdraw-form { text-align: left; }
.withdraw-field { margin-bottom: 14px; }
.withdraw-field label {
display: block; font-size: 12px; color: var(--text-dim);
margin-bottom: 4px; font-weight: 600;
}
.withdraw-field input {
width: 100%; padding: 10px 12px; font-size: 14px;
background: var(--bg-input); border: 1px solid var(--border);
border-radius: 8px; color: var(--text); outline: none;
box-sizing: border-box;
}
.withdraw-field input:focus { border-color: var(--accent); }
.withdraw-balance-info {
font-size: 12px; color: var(--text-dim); margin-bottom: 16px;
text-align: center;
}
.withdraw-balance-info strong { color: var(--success); }
.withdraw-submit-btn {
background: linear-gradient(135deg, #ff6b35, #ff4444);
border: none; border-radius: 10px; color: #fff;
padding: 12px 24px; font-size: 14px; font-weight: 600;
cursor: pointer; width: 100%; transition: all 0.2s;
}
.withdraw-submit-btn:hover { opacity: 0.9; transform: scale(1.02); }
.withdraw-submit-btn:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
.withdraw-result {
margin-top: 12px; padding: 10px; border-radius: 8px; font-size: 13px;
}
.withdraw-result.success {
background: rgba(0, 200, 83, 0.1); color: var(--success);
border: 1px solid rgba(0, 200, 83, 0.3);
}
.withdraw-result.error {
background: rgba(255, 82, 82, 0.1); color: #ff5252;
border: 1px solid rgba(255, 82, 82, 0.3);
}
.withdraw-history { margin-top: 16px; text-align: left; }
.withdraw-history h4 { font-size: 13px; color: var(--text-dim); margin-bottom: 8px; }
.withdraw-tx {
font-size: 11px; color: var(--text-dim); padding: 4px 0;
border-bottom: 1px solid var(--border);
display: flex; justify-content: space-between; align-items: center;
}
.withdraw-tx .amount { color: #ff5252; font-weight: 600; }
.withdraw-status {
font-size: 10px; padding: 2px 6px; border-radius: 4px; font-weight: 600;
}
.withdraw-status.pending { background: rgba(255,167,38,0.15); color: var(--warn); }
.withdraw-status.completed { background: rgba(0,200,83,0.15); color: var(--success); }
.withdraw-status.rejected { background: rgba(255,82,82,0.15); color: #ff5252; }
/* Profile Cabinet Modal */
.profile-overlay {
position: fixed; top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.6); z-index: 1001;
display: flex; align-items: center; justify-content: center;
backdrop-filter: blur(4px);
}
.profile-overlay.hidden { display: none; }
.profile-modal {
background: var(--bg-panel); border-radius: 16px;
padding: 32px; width: 560px; max-width: 95vw;
max-height: 90vh; max-height: 90dvh; overflow-y: auto;
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
border: 1px solid var(--border);
}
.profile-modal h2 {
color: var(--text); font-size: 20px; margin-bottom: 8px;
display: flex; align-items: center; gap: 10px;
}
.profile-modal .profile-subtitle {
color: var(--text-dim); font-size: 13px; margin-bottom: 20px;
}
.profile-section {
margin-bottom: 20px;
}
.profile-section h3 {
font-size: 14px; color: var(--accent); margin-bottom: 10px;
text-transform: uppercase; letter-spacing: 0.5px;
}
.profile-field {
margin-bottom: 12px;
}
.profile-field label {
display: block; font-size: 12px; color: var(--text-dim);
margin-bottom: 4px; font-weight: 600;
}
.profile-field input, .profile-field select, .profile-field textarea {
width: 100%; padding: 9px 12px;
background: var(--bg); border: 1px solid var(--border);
border-radius: 8px; color: var(--text); font-size: 14px;
font-family: inherit; box-sizing: border-box;
}
.profile-field input:focus, .profile-field select:focus, .profile-field textarea:focus {
border-color: var(--accent); outline: none;
}
.profile-field textarea { resize: vertical; min-height: 60px; }
.profile-field select { cursor: pointer; }
.chip-group {
display: flex; flex-wrap: wrap; gap: 6px;
}
.chip {
padding: 5px 12px; border-radius: 16px; font-size: 12px;
border: 1px solid var(--border); color: var(--text-dim);
cursor: pointer; transition: all 0.2s; user-select: none;
background: transparent;
}
.chip:hover { border-color: var(--accent); color: var(--accent); }
.chip.active {
background: rgba(0,122,255,0.15); border-color: var(--accent);
color: var(--accent); font-weight: 600;
}
.profile-vessels-list {
display: flex; flex-direction: column; gap: 6px; margin-top: 6px;
}
.profile-vessel-row {
display: flex; gap: 8px; align-items: center;
}
.profile-vessel-row input { flex: 1; }
.profile-vessel-row button {
background: transparent; border: 1px solid var(--border);
border-radius: 6px; color: var(--text-dim); cursor: pointer;
width: 30px; height: 30px; font-size: 16px;
display: flex; align-items: center; justify-content: center;
}
.profile-vessel-row button:hover { border-color: #ff5252; color: #ff5252; }
.add-vessel-btn {
background: transparent; border: 1px dashed var(--border);
border-radius: 8px; color: var(--text-dim); cursor: pointer;
padding: 8px; font-size: 13px; width: 100%; margin-top: 6px;
}
.add-vessel-btn:hover { border-color: var(--accent); color: var(--accent); }
.profile-actions {
display: flex; gap: 12px; margin-top: 24px;
}
.profile-save-btn {
flex: 1; padding: 11px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border: none; border-radius: 8px; color: white;
font-size: 14px; font-weight: 600; cursor: pointer;
}
.profile-save-btn:hover { opacity: 0.9; }
.profile-cancel-btn {
padding: 11px 24px;
background: transparent; border: 1px solid var(--border);
border-radius: 8px; color: var(--text-dim);
font-size: 14px; cursor: pointer;
}
.profile-cancel-btn:hover { border-color: var(--text); color: var(--text); }
.profile-saved-msg {
color: var(--success); font-size: 13px; text-align: center;
margin-top: 12px; display: none;
}
.purchased-contact-card {
background: var(--bg); border: 1px solid var(--border);
border-radius: 10px; padding: 12px 14px; margin-bottom: 8px;
}
.purchased-contact-card .pcc-company {
font-weight: 600; font-size: 14px; color: var(--text);
}
.purchased-contact-card .pcc-type {
display: inline-block; font-size: 11px; color: var(--accent);
background: rgba(0,122,255,0.1); border-radius: 10px;
padding: 2px 8px; margin-left: 6px; vertical-align: middle;
}
.purchased-contact-card .pcc-detail {
font-size: 12px; color: var(--text-dim); margin-top: 4px;
}
.purchased-contact-card .pcc-detail a {
color: var(--accent); text-decoration: none;
}
.purchased-contact-card .pcc-date {
font-size: 11px; color: var(--text-dim); opacity: 0.6; margin-top: 6px;
}
.purchased-empty {
color: var(--text-dim); font-size: 13px; text-align: center; padding: 16px 0;
}
/* ============ Responsive ============ */
/* Tablet (≤ 1024px) */
@media (max-width: 1024px) {
.sidebar { width: 240px; }
.chat-header { padding: 12px 16px; }
.messages { padding: 20px 16px 90px; gap: 20px; }
.input-area { padding: 0 16px 16px; margin-top: -70px; padding-top: 70px; }
}
/* Menu toggle button (hidden on desktop) */
.menu-toggle {
display: none;
width: 40px; height: 40px;
background: var(--accent);
border: none;
border-radius: 8px;
color: #fff;
font-size: 22px;
cursor: pointer;
align-items: center;
justify-content: center;
transition: all 0.2s;
flex-shrink: 0;
box-shadow: 0 2px 8px rgba(0,122,255,0.3);
}
.menu-toggle:hover { background: #0066d6; }
/* Mobile (≤ 768px) */
@media (max-width: 768px) {
body { flex-direction: column; }
/* Sidebar → slide-in drawer from left */
.sidebar {
position: fixed;
top: 0; left: 0; bottom: 0;
width: 300px;
max-width: 85vw;
z-index: 900;
overflow-y: auto;
transform: translateX(-100%);
transition: transform 0.3s ease;
box-shadow: none;
}
.sidebar.open {
transform: translateX(0);
box-shadow: 4px 0 20px rgba(0,0,0,0.3);
}
.main { width: 100%; height: var(--app-height, 100vh); }
/* Header: stack actions below title */
.chat-header {
flex-wrap: wrap;
gap: 8px;
padding: 10px 12px;
}
.chat-header-left h2 { font-size: 14px; }
.chat-header-left span { display: none; }
.header-actions {
flex-wrap: wrap;
gap: 6px;
width: 100%;
justify-content: flex-end;
}
.header-btn { padding: 5px 10px; font-size: 11px; }
.lang-btn { padding: 3px 8px; font-size: 11px; }
/* User info compact */
.user-info { font-size: 11px; gap: 4px; }
.balance-badge { font-size: 10px; padding: 1px 6px; }
/* Messages */
.messages { padding: 16px 10px 80px; gap: 16px; }
.message { max-width: 92%; }
.msg-content { padding: 12px 14px; font-size: 14px; border-radius: 16px; }
.msg-avatar { width: 26px; height: 26px; font-size: 12px; }
/* Input area */
.input-area { padding: 0 10px 12px; margin-top: -60px; padding-top: 60px; }
.input-glass {
border-radius: 20px;
padding: 4px 4px 4px 14px;
}
.input-wrapper textarea {
font-size: 14px;
min-height: 38px;
}
.send-btn { width: 36px; height: 36px; font-size: 14px; border-radius: 10px; }
.voice-btn { width: 36px; height: 36px; font-size: 16px; border-radius: 10px; }
.input-hint { font-size: 10px; margin-top: 6px; }
/* Quick actions scroll horizontally */
.quick-actions {
flex-wrap: nowrap;
overflow-x: auto;
margin-bottom: 8px;
gap: 6px;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
}
.quick-actions::-webkit-scrollbar { display: none; }
.quick-btn { font-size: 11px; padding: 5px 12px; flex-shrink: 0; }
/* Auth modal */
.auth-modal { padding: 28px 20px; width: 95vw; }
.profile-modal { padding: 24px 16px; width: 95vw; }
.deposit-modal { padding: 24px 16px; width: 95vw; }
.chip { font-size: 11px; padding: 4px 10px; }
/* Menu toggle button visible */
.menu-toggle { display: flex; }
}
/* Small phones (≤ 480px) */
@media (max-width: 480px) {
.chat-header-left h2 { font-size: 13px; }
.header-actions { gap: 4px; }
.header-btn { padding: 4px 8px; font-size: 10px; }
.lang-btn { padding: 2px 6px; font-size: 10px; }
.message { max-width: 96%; }
.msg-content { font-size: 13px; padding: 10px 12px; }
.msg-avatar { width: 22px; height: 22px; font-size: 10px; }
}
/* Sidebar backdrop overlay */
.sidebar-backdrop {
display: none;
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.5);
z-index: 899;
}
.sidebar-backdrop.open { display: block; }
/* Sidebar close button (only on mobile) */
.sidebar-close {
display: none;
position: absolute;
top: 16px; right: 16px;
background: transparent;
border: 1px solid var(--border);
border-radius: 6px;
color: var(--text-dim);
font-size: 18px;
width: 32px; height: 32px;
cursor: pointer;
align-items: center;
justify-content: center;
}
.sidebar-close:hover { color: var(--text); border-color: var(--accent); }
@media (max-width: 768px) {
.sidebar-close { display: flex; }
}
/* ========== TOP NAVIGATION ========== */
.top-nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; justify-content: space-between;
padding: 16px 5vw;
background: rgba(5,13,26,0.6);
backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
border-bottom: 1px solid transparent;
transition: all 0.3s ease;
}
.top-nav.scrolled {
background: rgba(10,25,41,0.92);
border-bottom-color: var(--border);
box-shadow: 0 4px 30px rgba(0,0,0,0.3);
}
.nav-logo { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.nav-logo-icon {
width: 36px; height: 36px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border-radius: 10px; display: flex; align-items: center; justify-content: center;
font-size: 18px;
}
.nav-logo-text { font-family: 'Plus Jakarta Sans',sans-serif; font-size: 16px; font-weight: 700; color: var(--text); }
.nav-links { display: flex; align-items: center; gap: 32px; }
.nav-links a {
color: var(--text-dim); text-decoration: none; font-size: 14px; font-weight: 500;
transition: color 0.2s;
}
.nav-links a:hover { color: var(--text); }
.nav-right { display: flex; align-items: center; gap: 12px; }
.nav-cta {
padding: 8px 20px; border: none; border-radius: 8px; font-size: 13px; font-weight: 600;
background: linear-gradient(135deg, var(--accent), var(--accent2));
color: #020617; cursor: pointer; transition: transform 0.2s, box-shadow 0.3s;
}
.nav-cta:hover { transform: translateY(-1px); box-shadow: 0 4px 20px rgba(45,212,191,0.3); }
.nav-mobile-toggle {
display: none; background: none; border: none; color: var(--text);
font-size: 24px; cursor: pointer;
}
/* ========== HERO SECTION ========== */
.hero {
position: relative; min-height: 100vh;
display: flex; align-items: center; justify-content: center;
padding: 120px 5vw 80px; gap: 60px;
overflow: hidden;
}
.hero-bg { position: absolute; inset: 0; overflow: hidden; z-index: 0; }
.orb {
position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.35;
animation: orbFloat 20s ease-in-out infinite;
}
.orb-1 { width: 600px; height: 600px; background: radial-gradient(circle, var(--accent2) 0%, transparent 70%); top: -200px; right: -100px; animation-duration: 25s; }
.orb-2 { width: 400px; height: 400px; background: radial-gradient(circle, var(--accent3) 0%, transparent 70%); bottom: -100px; left: -50px; animation-duration: 30s; animation-delay: -5s; }
.orb-3 { width: 300px; height: 300px; background: radial-gradient(circle, var(--accent) 0%, transparent 70%); top: 40%; left: 30%; animation-duration: 22s; animation-delay: -10s; }
@keyframes orbFloat {
0%, 100% { transform: translate(0,0) scale(1); }
25% { transform: translate(30px,-40px) scale(1.05); }
50% { transform: translate(-20px,20px) scale(0.95); }
75% { transform: translate(15px,35px) scale(1.02); }
}
.hero-grid {
position: absolute; inset: 0;
background-image: linear-gradient(rgba(45,212,191,0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(45,212,191,0.03) 1px, transparent 1px);
background-size: 60px 60px;
mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
-webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
}
.hero-particles { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.hero-particles span {
position: absolute; bottom: -20px; background: rgba(45,212,191,0.25); border-radius: 50%;
animation: particleRise linear infinite;
}
.hero-particles span:nth-child(1) { left:5%; width:4px; height:4px; animation-duration:18s; }
.hero-particles span:nth-child(2) { left:15%; width:8px; height:8px; animation-duration:22s; animation-delay:-3s; }
.hero-particles span:nth-child(3) { left:25%; width:3px; height:3px; animation-duration:16s; animation-delay:-7s; }
.hero-particles span:nth-child(4) { left:40%; width:6px; height:6px; animation-duration:20s; animation-delay:-2s; }
.hero-particles span:nth-child(5) { left:55%; width:5px; height:5px; animation-duration:24s; animation-delay:-5s; }
.hero-particles span:nth-child(6) { left:65%; width:7px; height:7px; animation-duration:19s; animation-delay:-8s; }
.hero-particles span:nth-child(7) { left:78%; width:4px; height:4px; animation-duration:21s; animation-delay:-1s; }
.hero-particles span:nth-child(8) { left:90%; width:6px; height:6px; animation-duration:17s; animation-delay:-6s; }
@keyframes particleRise {
0% { transform: translateY(0) translateX(0); opacity: 0; }
10% { opacity: 0.4; }
50% { transform: translateY(-50vh) translateX(20px); opacity: 0.25; }
100% { transform: translateY(-100vh) translateX(-10px); opacity: 0; }
}
.hero-content { position: relative; z-index: 2; max-width: 600px; }
.hero-badge {
display: inline-flex; align-items: center; gap: 8px;
padding: 6px 16px; background: rgba(45,212,191,0.1);
border: 1px solid rgba(45,212,191,0.25); border-radius: 100px;
font-size: 13px; font-weight: 500; color: var(--accent);
margin-bottom: 24px; backdrop-filter: blur(8px);
}
.hero-badge .badge-dot {
width: 6px; height: 6px; background: var(--accent); border-radius: 50%;
animation: pulse 2s infinite;
}
.hero-title {
font-size: clamp(36px,5vw,64px); font-weight: 800;
line-height: 1.1; letter-spacing: -0.02em; color: #f8fafc; margin-bottom: 20px;
}
.gradient-text {
background: linear-gradient(135deg, var(--accent), var(--accent2), var(--accent3));
-webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.hero-subtitle {
font-size: 18px; line-height: 1.7; color: var(--text-dim);
margin-bottom: 36px; max-width: 480px;
}
.hero-cta-group { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.cta-primary {
display: inline-flex; align-items: center; gap: 10px;
padding: 16px 32px; font-family: 'Plus Jakarta Sans',sans-serif;
font-size: 16px; font-weight: 600; color: #020617;
background: linear-gradient(135deg, var(--accent), var(--accent2));
border: none; border-radius: 12px; cursor: pointer;
position: relative; overflow: hidden;
transition: transform 0.2s, box-shadow 0.3s;
}
.cta-primary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(45,212,191,0.3);
}
.cta-primary::after {
content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
}
.cta-primary:hover::after { animation: ctaShine 0.6s ease forwards; }
@keyframes ctaShine { 0% { left: -100%; } 100% { left: 100%; } }
.cta-arrow { transition: transform 0.2s; }
.cta-primary:hover .cta-arrow { transform: translateX(4px); }
.cta-secondary {
display: inline-flex; align-items: center; gap: 10px;
padding: 16px 28px; font-size: 16px; font-weight: 500;
color: var(--text); background: transparent;
border: 1px solid rgba(255,255,255,0.15); border-radius: 12px;
cursor: pointer; backdrop-filter: blur(8px); transition: all 0.3s;
}
.cta-secondary:hover {
border-color: rgba(45,212,191,0.4); background: rgba(45,212,191,0.05);
}
.hero-preview {
position: relative; z-index: 2; flex-shrink: 0;
}
.glass-card {
background: rgba(15,23,42,0.6); backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(255,255,255,0.08); border-radius: 16px;
padding: 24px; width: 380px;
box-shadow: 0 4px 30px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.05);
transition: border-color 0.3s, box-shadow 0.3s;
}
.glass-card:hover {
border-color: rgba(45,212,191,0.2);
box-shadow: 0 8px 40px rgba(0,0,0,0.4), 0 0 30px rgba(45,212,191,0.05);
}
.preview-header {
display: flex; align-items: center; gap: 8px;
font-size: 12px; color: var(--accent); font-weight: 600;
text-transform: uppercase; letter-spacing: 1px; margin-bottom: 16px;
}
.preview-header .live-dot {
width: 6px; height: 6px; background: var(--success); border-radius: 50%;
animation: pulse 2s infinite;
}
.preview-line {
display: flex; justify-content: space-between; padding: 8px 0;
font-size: 13px; border-bottom: 1px solid rgba(255,255,255,0.04);
}
.preview-line:last-child { border-bottom: none; }
.preview-label { color: var(--text-dim); }
.preview-highlight { color: var(--accent); font-weight: 600; }
.wave-container {
position: absolute; bottom: 0; left: 0; width: 100%; height: 120px; z-index: 1;
}
.wave { position: absolute; bottom: 0; left: 0; width: 200%; height: 100%; }
.wave path { fill: var(--bg-panel); }
.wave-1 { opacity: 0.6; animation: waveSlide 8s linear infinite; }
.wave-2 { opacity: 0.3; animation: waveSlide 12s linear infinite reverse; }
@keyframes waveSlide { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
/* ========== STATS BAR ========== */
.stats-bar {
background: var(--bg-panel); padding: 60px 5vw; position: relative;
}
.stats-grid {
display: grid; grid-template-columns: repeat(4,1fr); gap: 32px;
max-width: 1100px; margin: 0 auto;
}
.stat-card {
text-align: center; padding: 28px 16px;
background: rgba(255,255,255,0.02); border: 1px solid var(--border);
border-radius: 16px; transition: transform 0.3s, border-color 0.3s;
}
.stat-card:hover { transform: translateY(-4px); border-color: rgba(45,212,191,0.3); }
.stat-number {
font-family: 'Plus Jakarta Sans',sans-serif; font-size: 42px; font-weight: 800;
background: linear-gradient(135deg, var(--accent), var(--accent2));
-webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
margin-bottom: 6px;
}
.stat-label {
font-size: 13px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 1px;
}
/* ========== SECTION COMMON ========== */
.section-pad { padding: 100px 5vw; max-width: 1200px; margin: 0 auto; }
.section-badge {
display: inline-flex; align-items: center; gap: 6px;
padding: 5px 14px; background: rgba(45,212,191,0.08);
border: 1px solid rgba(45,212,191,0.2); border-radius: 100px;
font-size: 12px; font-weight: 600; color: var(--accent);
text-transform: uppercase; letter-spacing: 1px; margin-bottom: 16px;
}
.section-title {
font-size: clamp(28px,4vw,42px); font-weight: 800;
line-height: 1.2; letter-spacing: -0.02em; color: var(--text); margin-bottom: 16px;
}
.section-subtitle {
font-size: 17px; line-height: 1.7; color: var(--text-dim); max-width: 600px;
}
.section-header { text-align: center; margin-bottom: 60px; }
.section-header .section-subtitle { margin: 0 auto; }
/* ========== FEATURES ========== */
.features-section { background: var(--bg-dark); }
.features-grid {
display: grid; grid-template-columns: repeat(3,1fr); gap: 24px;
}
.feature-card {
background: rgba(15,23,42,0.5); border: 1px solid var(--border);
border-radius: 16px; padding: 32px; transition: all 0.3s;
position: relative; overflow: hidden;
}
.feature-card:hover {
border-color: rgba(45,212,191,0.25); transform: translateY(-4px);
box-shadow: 0 12px 40px rgba(0,0,0,0.3);
}
.feature-card::before {
content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
background: linear-gradient(90deg, var(--accent), var(--accent2));
opacity: 0; transition: opacity 0.3s;
}
.feature-card:hover::before { opacity: 1; }
.feature-icon {
width: 48px; height: 48px; border-radius: 12px;
background: rgba(45,212,191,0.1); display: flex; align-items: center;
justify-content: center; font-size: 24px; margin-bottom: 20px;
}
.feature-card h3 { font-size: 18px; font-weight: 700; margin-bottom: 10px; color: var(--text); }
.feature-card p { font-size: 14px; line-height: 1.6; color: var(--text-dim); }
.feature-tag {
display: inline-block; margin-top: 14px; padding: 3px 10px;
border-radius: 100px; font-size: 11px; font-weight: 600;
}
.tag-free { background: rgba(52,211,153,0.12); color: var(--success); }
.tag-paid { background: rgba(14,165,233,0.12); color: var(--accent2); }
/* ========== HOW IT WORKS ========== */
.how-section { background: var(--bg-panel); }
.how-steps {
display: grid; grid-template-columns: repeat(3,1fr); gap: 40px;
position: relative;
}
.how-steps::before {
content: ''; position: absolute; top: 40px; left: 15%; right: 15%; height: 2px;
background: linear-gradient(90deg, var(--accent), var(--accent2), var(--accent3));
opacity: 0.2; z-index: 0;
}
.how-step { text-align: center; position: relative; z-index: 1; }
.step-num {
width: 56px; height: 56px; border-radius: 50%; margin: 0 auto 20px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
display: flex; align-items: center; justify-content: center;
font-family: 'Plus Jakarta Sans',sans-serif; font-size: 22px; font-weight: 800;
color: #020617;
}
.how-step h3 { font-size: 18px; font-weight: 700; margin-bottom: 10px; }
.how-step p { font-size: 14px; line-height: 1.6; color: var(--text-dim); max-width: 280px; margin: 0 auto; }
/* ========== CHAT SECTION ========== */
.chat-section { background: var(--bg-dark); padding: 100px 5vw; }
.chat-container {
display: flex; height: 700px; max-width: 1200px; margin: 0 auto;
border-radius: 16px; border: 1px solid var(--border-strong);
overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,0.4);
background: var(--bg-chat);
}
/* ========== CTA SECTION ========== */
.cta-section {
background: var(--bg-panel); padding: 100px 5vw; text-align: center;
position: relative; overflow: hidden;
}
.cta-section .orb { opacity: 0.2; }
.cta-inner { position: relative; z-index: 2; max-width: 600px; margin: 0 auto; }
.cta-inner h2 {
font-size: clamp(28px,4vw,42px); font-weight: 800;
margin-bottom: 16px; color: var(--text);
}
.cta-inner p { font-size: 17px; color: var(--text-dim); margin-bottom: 32px; line-height: 1.7; }
/* ========== FOOTER ========== */
.site-footer {
background: var(--bg-dark); border-top: 1px solid var(--border);
padding: 60px 5vw 30px;
}
.footer-grid {
display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px;
max-width: 1100px; margin: 0 auto 40px;
}
.footer-brand .nav-logo { margin-bottom: 12px; }
.footer-brand p { font-size: 13px; color: var(--text-dim); line-height: 1.6; max-width: 280px; }
.footer-col h4 {
font-size: 12px; text-transform: uppercase; letter-spacing: 1px;
color: var(--text-dim); margin-bottom: 16px;
}
.footer-col a {
display: block; color: var(--text-muted); text-decoration: none;
font-size: 14px; padding: 4px 0; transition: color 0.2s;
}
.footer-col a:hover { color: var(--accent); }
.footer-bottom {
text-align: center; padding-top: 30px; border-top: 1px solid var(--border);
font-size: 12px; color: var(--text-muted);
}
.footer-bottom a { color: var(--accent); text-decoration: none; }
/* ========== SCROLL REVEAL ========== */
.reveal {
opacity: 0; transform: translateY(30px);
transition: opacity 0.8s ease, transform 0.8s ease;
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 100ms; }
.reveal-delay-2 { transition-delay: 200ms; }
.reveal-delay-3 { transition-delay: 300ms; }
.reveal-delay-4 { transition-delay: 400ms; }
.reveal-delay-5 { transition-delay: 500ms; }
/* ========== LANDING RESPONSIVE ========== */
@media (max-width: 1024px) {
.hero { flex-direction: column; text-align: center; padding-top: 140px; }
.hero-content { max-width: 100%; }
.hero-subtitle { margin: 0 auto 36px; }
.hero-cta-group { justify-content: center; }
.hero-preview { display: none; }
.stats-grid { grid-template-columns: repeat(2,1fr); }
.features-grid { grid-template-columns: repeat(2,1fr); }
.footer-grid { grid-template-columns: 1fr 1fr; gap: 30px; }
}
@media (max-width: 768px) {
.top-nav { padding: 12px 4vw; }
.nav-links { display: none; }
.nav-mobile-toggle { display: block; }
.hero { min-height: auto; padding: 120px 5vw 60px; }
.hero-title { font-size: 32px; }
.hero-subtitle { font-size: 16px; }
.stats-grid { grid-template-columns: repeat(2,1fr); gap: 16px; }
.stat-number { font-size: 32px; }
.stat-card { padding: 20px 12px; }
.features-grid { grid-template-columns: 1fr; }
.how-steps { grid-template-columns: 1fr; gap: 30px; }
.how-steps::before { display: none; }
.chat-section { padding: 60px 3vw; }
.chat-container { height: 600px; border-radius: 12px; flex-direction: column; }
.chat-container .sidebar { display: none; }
.footer-grid { grid-template-columns: 1fr; gap: 24px; }
.cta-primary, .cta-secondary { width: 100%; justify-content: center; }
}
@media (max-width: 480px) {
.stats-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
.stat-number { font-size: 28px; }
.chat-container { height: 500px; }
}
</style>
</head>
<body>
<!-- ========== TOP NAVIGATION ========== -->
<nav class="top-nav" id="topNav">
<a href="#" class="nav-logo" onclick="event.preventDefault();window.scrollTo({top:0,behavior:'smooth'})">
<div class="nav-logo-icon">&#9875;</div>
<span class="nav-logo-text">SeaFare Montana</span>
</a>
<div class="nav-links" id="navLinks">
<a href="#features" data-i18n="nav_features">Features</a>
<a href="#how-it-works" data-i18n="nav_how">How It Works</a>
<a href="chat.html" target="_blank" data-i18n="nav_chat">Try Now</a>
</div>
<div class="nav-right">
<div class="lang-switcher">
<button class="lang-btn active" onclick="setLang('en')">EN</button>
<button class="lang-btn" onclick="setLang('ru')">RU</button>
<button class="lang-btn" onclick="setLang('es')">ES</button>
</div>
<a href="chat.html" target="_blank" class="nav-cta" style="text-decoration:none;" data-i18n="nav_start">Open Chat</a>
<button class="nav-mobile-toggle" onclick="document.getElementById('navLinks').classList.toggle('show')">&#9776;</button>
</div>
</nav>
<!-- ========== HERO SECTION ========== -->
<section class="hero" id="hero">
<div class="hero-bg">
<div class="orb orb-1"></div>
<div class="orb orb-2"></div>
<div class="orb orb-3"></div>
<div class="hero-grid"></div>
</div>
<div class="hero-particles">
<span></span><span></span><span></span><span></span>
<span></span><span></span><span></span><span></span>
</div>
<div class="wave-container">
<svg class="wave wave-1" viewBox="0 0 1440 120" preserveAspectRatio="none">
<path d="M0,60 C360,120 720,0 1080,60 C1260,90 1380,75 1440,60 L1440,120 L0,120 Z"/>
</svg>
<svg class="wave wave-2" viewBox="0 0 1440 120" preserveAspectRatio="none">
<path d="M0,80 C240,20 480,100 720,60 C960,20 1200,90 1440,50 L1440,120 L0,120 Z"/>
</svg>
</div>
<div class="hero-content">
<div class="hero-badge">
<span class="badge-dot"></span>
<span data-i18n="hero_badge">AI-Powered Maritime Intelligence</span>
</div>
<h1 class="hero-title" data-i18n="hero_title">Navigate Global Shipping<br><span class="gradient-text">With AI Precision</span></h1>
<p class="hero-subtitle" data-i18n="hero_subtitle">Real-time vessel tracking, intelligent port analysis, and demurrage calculations. Powered by AI with 25 years of maritime expertise built in.</p>
<div class="hero-cta-group">
<a href="chat.html" target="_blank" class="cta-primary" style="text-decoration:none;">
<span data-i18n="hero_cta">Open AI Chat</span>
<span class="cta-arrow">&rarr;</span>
</a>
<a href="#features" class="cta-secondary" style="text-decoration:none;">
<span data-i18n="hero_cta2">See Features</span>
</a>
</div>
</div>
<div class="hero-preview">
<div class="glass-card">
<div class="preview-header">
<span class="live-dot"></span> Live Tracking
</div>
<div class="preview-line"><span class="preview-label">Vessel:</span><span>EVER GIVEN — IMO 9811000</span></div>
<div class="preview-line"><span class="preview-label">Position:</span><span>Suez Canal, 30.0N 32.5E</span></div>
<div class="preview-line"><span class="preview-label">Speed:</span><span>12.4 kn / Course 315&deg;</span></div>
<div class="preview-line"><span class="preview-label">ETA:</span><span class="preview-highlight">Rotterdam — 14h 32m</span></div>
<div class="preview-line"><span class="preview-label">Status:</span><span style="color:var(--success);">&#9679; Underway</span></div>
</div>
</div>
</section>
<!-- ========== STATS BAR ========== -->
<section class="stats-bar">
<div class="stats-grid">
<div class="stat-card reveal"><div class="stat-number" data-target="14000">0</div><div class="stat-label" data-i18n="stat_vessels">Vessels Tracked</div></div>
<div class="stat-card reveal reveal-delay-1"><div class="stat-number" data-target="200">0</div><div class="stat-label" data-i18n="stat_ports">Global Ports</div></div>
<div class="stat-card reveal reveal-delay-2"><div class="stat-number">24/7</div><div class="stat-label" data-i18n="stat_ai">AI Availability</div></div>
<div class="stat-card reveal reveal-delay-3"><div class="stat-number">&lt;2s</div><div class="stat-label" data-i18n="stat_speed">Response Time</div></div>
</div>
</section>
<!-- ========== FEATURES ========== -->
<section id="features" class="features-section">
<div class="section-pad">
<div class="section-header reveal">
<div class="section-badge" data-i18n="features_badge">Capabilities</div>
<h2 class="section-title" data-i18n="features_title">Everything You Need for Maritime Operations</h2>
<p class="section-subtitle" data-i18n="features_subtitle">From vessel tracking to route planning — all powered by AI with real-time maritime data.</p>
</div>
<div class="features-grid">
<div class="feature-card reveal" style="--i:0">
<div class="feature-icon">&#128674;</div>
<h3 data-i18n="feat_search">Vessel Search</h3>
<p data-i18n="feat_search_desc">Find any vessel worldwide by name, IMO, or MMSI. Get instant details on type, flag, tonnage, and classification.</p>
<span class="feature-tag tag-free" data-i18n="free">Free</span>
</div>
<div class="feature-card reveal reveal-delay-1" style="--i:1">
<div class="feature-icon">&#128205;</div>
<h3 data-i18n="feat_position">Live Position</h3>
<p data-i18n="feat_position_desc">Real-time AIS tracking with coordinates, speed, course, destination, and navigation status.</p>
<span class="feature-tag tag-free" data-i18n="free">Free</span>
</div>
<div class="feature-card reveal reveal-delay-2" style="--i:2">
<div class="feature-icon">&#127970;</div>
<h3 data-i18n="feat_owner">Owner & Operator</h3>
<p data-i18n="feat_owner_desc">Comprehensive company information — registered owner, operator, ISM manager, and classification society.</p>
<span class="feature-tag tag-free" data-i18n="free">Free</span>
</div>
<div class="feature-card reveal reveal-delay-3" style="--i:3">
<div class="feature-icon">&#128178;</div>
<h3 data-i18n="feat_demurrage">Demurrage Calculator</h3>
<p data-i18n="feat_demurrage_desc">Calculate delay costs instantly. Input laytime, actual days, and rate — get precise financial breakdown.</p>
<span class="feature-tag tag-free" data-i18n="free">Free</span>
</div>
<div class="feature-card reveal reveal-delay-4" style="--i:4">
<div class="feature-icon">&#128587;</div>
<h3 data-i18n="feat_contacts">Contact Introductions</h3>
<p data-i18n="feat_contacts_desc">Connect with verified operators, charterers, and port agents. Unlock full contact details for direct communication.</p>
<span class="feature-tag tag-paid">$10 USDT</span>
</div>
<div class="feature-card reveal reveal-delay-5" style="--i:5">
<div class="feature-icon">&#128752;</div>
<h3 data-i18n="feat_routes">Sea Route Calculator</h3>
<p data-i18n="feat_routes_desc">Calculate distance, transit time, waypoints, and voyage cost between any two ports. Covers 100+ global ports.</p>
<span class="feature-tag tag-free">Free</span>
</div>
</div>
</div>
</section>
<!-- ========== HOW IT WORKS ========== -->
<section id="how-it-works" class="how-section">
<div class="section-pad">
<div class="section-header reveal">
<div class="section-badge" data-i18n="how_badge">Simple Process</div>
<h2 class="section-title" data-i18n="how_title">How It Works</h2>
<p class="section-subtitle" data-i18n="how_subtitle">Get maritime intelligence in seconds, not hours. No manuals, no complex interfaces.</p>
</div>
<div class="how-steps">
<div class="how-step reveal">
<div class="step-num">1</div>
<h3 data-i18n="step1_title">Ask in Plain Language</h3>
<p data-i18n="step1_desc">Type your question naturally — "Find bulk carriers near Singapore" or "Route from Santos to Rotterdam."</p>
</div>
<div class="how-step reveal reveal-delay-2">
<div class="step-num">2</div>
<h3 data-i18n="step2_title">AI Analyzes Instantly</h3>
<p data-i18n="step2_desc">Our AI queries real-time maritime data, AIS feeds, and port intelligence to find the best answer.</p>
</div>
<div class="how-step reveal reveal-delay-4">
<div class="step-num">3</div>
<h3 data-i18n="step3_title">Get Actionable Results</h3>
<p data-i18n="step3_desc">Receive structured data — tables, routes, costs, contacts — ready for immediate business decisions.</p>
</div>
</div>
</div>
</section>
<!-- ========== TRY IT SECTION ========== -->
<section id="chat" class="chat-section" style="text-align:center;">
<div class="section-header reveal" style="max-width:1200px;margin:0 auto 40px;">
<div class="section-badge" data-i18n="chat_badge">Live AI Agent</div>
<h2 class="section-title" data-i18n="chat_title">Try SeaFare Montana Now</h2>
<p class="section-subtitle" data-i18n="chat_subtitle">Open the AI chat — ask about vessels, routes, cargo, or anything maritime.</p>
</div>
<a href="chat.html" target="_blank" class="cta-primary" style="text-decoration:none;display:inline-flex;font-size:1.1rem;padding:16px 40px;">
<span data-i18n="open_chat">Open AI Chat</span>
<span class="cta-arrow">&rarr;</span>
</a>
<p style="margin-top:20px;color:var(--text-dim);font-size:0.9rem;" data-i18n="chat_note">Free to use. No registration required for basic features.</p>
</section>
<!-- ========== CTA SECTION ========== -->
<section class="cta-section">
<div class="orb orb-1" style="width:400px;height:400px;top:-100px;right:-50px;"></div>
<div class="orb orb-2" style="width:300px;height:300px;bottom:-50px;left:-50px;"></div>
<div class="cta-inner reveal">
<h2 data-i18n="cta_title">Ready to Optimize Your Maritime Operations?</h2>
<p data-i18n="cta_desc">Join shipping professionals who use SeaFare Montana to make faster, data-driven decisions.</p>
<a href="chat.html" target="_blank" class="cta-primary" style="text-decoration:none;display:inline-flex;">
<span data-i18n="cta_btn">Open AI Chat</span>
<span class="cta-arrow">&rarr;</span>
</a>
</div>
</section>
<!-- ========== FOOTER ========== -->
<footer class="site-footer">
<div class="footer-grid">
<div class="footer-brand">
<a href="#" class="nav-logo" onclick="event.preventDefault();window.scrollTo({top:0,behavior:'smooth'})">
<div class="nav-logo-icon">&#9875;</div>
<span class="nav-logo-text">SeaFare Montana</span>
</a>
<p data-i18n="footer_desc">AI-powered maritime logistics platform. 25 years of industry expertise, now available 24/7 through intelligent automation.</p>
</div>
<div class="footer-col">
<h4 data-i18n="footer_services">Services</h4>
<a href="#features" data-i18n="feat_search">Vessel Search</a>
<a href="#features" data-i18n="feat_position">Live Position</a>
<a href="#features" data-i18n="feat_demurrage">Demurrage Calculator</a>
<a href="#features" data-i18n="feat_contacts">Contact Introductions</a>
</div>
<div class="footer-col">
<h4 data-i18n="footer_platform">Platform</h4>
<a href="#how-it-works" data-i18n="nav_how">How It Works</a>
<a href="chat.html" target="_blank" data-i18n="nav_chat">Try Now</a>
<a href="https://moltbook.com/u/SeaFare_Montana" target="_blank">Moltbook</a>
</div>
<div class="footer-col">
<h4 data-i18n="footer_contact">Contact</h4>
<a href="https://moltbook.com/u/SeaFare_Montana" target="_blank">Moltbook Profile</a>
</div>
</div>
<div class="footer-bottom">
&copy; 2026 SeaFare Montana &bull; Powered by <a href="https://moltbook.com/u/SeaFare_Montana" target="_blank">Moltbook</a>
&bull; <span data-i18n="footer_tagline">Montana Protocol &bull; 25 years expertise</span>
&bull; <span id="appVersion" style="opacity:0.5;"></span>
</div>
</footer>
<script>
// =============================================================================
// i18n — translations
// =============================================================================
const i18n = {
en: {
subtitle: 'Maritime Logistics Agent',
status: 'Online — Ready',
services_title: 'Services',
header_sub: 'Maritime Logistics AI Agent',
clear_chat: 'Clear Chat',
input_hint: 'Press Enter to send \u2022 Shift+Enter for new line',
placeholder: 'Ask about vessels, positions, owners, demurrage...',
free: 'Free',
svc_search: 'Vessel Search',
svc_search_desc: 'Name, IMO, MMSI lookup',
svc_position: 'Vessel Position',
svc_position_desc: 'AIS real-time tracking',
svc_owner: 'Owner / Operator',
svc_owner_desc: 'Company information',
svc_demurrage: 'Demurrage Calculator',
svc_demurrage_desc: 'Delay cost estimation',
svc_contacts: 'Contact Introduction',
svc_contacts_desc: 'Shipper \u2194 Operator',
footer: 'Montana Protocol \u2022 25 years expertise',
welcome: '<strong>Welcome to SeaFare Montana!</strong><br><br>' +
"I'm your AI-powered maritime logistics agent. Here's what I can do:<br><br>" +
'&#128674; <strong>Vessel search</strong> — find any ship by name, IMO, or MMSI<br>' +
'&#128205; <strong>Live position</strong> — real-time AIS tracking<br>' +
'&#127970; <strong>Owner & operator</strong> — company information<br>' +
'&#128178; <strong>Demurrage</strong> — calculate delay costs<br>' +
'&#128587; <strong>Introductions</strong> — connect with operators ($10 USDT)<br><br>' +
'Try the quick actions below or just ask me anything!',
chat_cleared: '<strong>Chat cleared.</strong><br>How can I help you today?',
confirm_clear: 'Are you sure you want to clear the chat history?',
error_generic: 'Sorry, something went wrong. Please try again.',
error_connection: 'Connection error. Make sure the server is running on port 5050.',
// Quick action buttons (labels)
qb_vessels_port: 'Vessels near port',
qb_route: 'Route A to B',
qb_cargo: 'Ship my cargo',
qb_search: 'Search vessel',
qb_demurrage: 'Demurrage calc',
qb_contacts: 'Find contacts',
// Quick action messages sent to bot
qm_btn_vessels_port: 'What vessels are near Rotterdam right now?',
qm_btn_route: 'Calculate route from Shanghai to Rotterdam for a container ship',
qm_btn_cargo: 'I need to ship 50000 tons of grain from Santos to Rotterdam',
qm_btn_search: 'Search vessel EVER GIVEN',
qm_btn_demurrage: 'Calculate demurrage: 10 agreed days, 14 actual, $25000/day',
},
ru: {
subtitle: 'Морской Логистический Агент',
status: 'Онлайн — Готов',
services_title: 'Сервисы',
header_sub: 'AI Агент Морской Логистики',
clear_chat: 'Очистить чат',
input_hint: 'Enter — отправить • Shift+Enter — новая строка',
placeholder: 'Спросите о судах, позициях, владельцах, демередже...',
free: 'Бесплатно',
svc_search: 'Поиск судна',
svc_search_desc: 'По имени, IMO, MMSI',
svc_position: 'Позиция судна',
svc_position_desc: 'AIS трекинг',
svc_owner: 'Владелец / Оператор',
svc_owner_desc: 'Информация о компании',
svc_demurrage: 'Калькулятор демереджа',
svc_demurrage_desc: 'Расчёт стоимости простоя',
svc_contacts: 'Контакт',
svc_contacts_desc: 'Грузоотправитель ↔ Оператор',
footer: 'Montana Protocol • 25 лет опыта',
footer_contact: 'Контакты',
footer_tagline: 'Montana Protocol • 25 лет опыта',
welcome: '<strong>Добро пожаловать в SeaFare Montana!</strong>',
chat_cleared: '<strong>Чат очищен.</strong><br>Чем могу помочь?',
confirm_clear: 'Вы уверены, что хотите очистить историю чата?',
error_generic: 'Произошла ошибка. Попробуйте ещё раз.',
error_connection: 'Ошибка соединения с сервером.',
qb_vessels_port: 'Суда у порта',
qb_route: 'Маршрут A→B',
qb_cargo: 'Перевезти груз',
qb_search: 'Поиск судна',
qb_demurrage: 'Демередж',
qb_contacts: 'Найти контакты',
qm_btn_vessels_port: 'Какие суда сейчас рядом с Роттердамом?',
qm_btn_route: 'Рассчитай маршрут из Шанхая в Роттердам для контейнеровоза',
qm_btn_cargo: 'Нужно перевезти 50000 тонн зерна из Сантоса в Роттердам',
qm_btn_search: 'Найди судно EVER GIVEN',
qm_btn_demurrage: 'Рассчитай демередж: 10 согласованных дней, 14 фактических, $25000/день',
},
es: {
subtitle: 'Agente de Logística Marítima',
status: 'En línea — Listo',
services_title: 'Servicios',
header_sub: 'Agente IA de Logística Marítima',
clear_chat: 'Limpiar chat',
input_hint: 'Enter para enviar • Shift+Enter nueva línea',
placeholder: 'Pregunte sobre buques, posiciones, propietarios, demoras...',
free: 'Gratis',
svc_search: 'Búsqueda de buque',
svc_search_desc: 'Por nombre, IMO, MMSI',
svc_position: 'Posición del buque',
svc_position_desc: 'Rastreo AIS',
svc_owner: 'Propietario / Operador',
svc_owner_desc: 'Información de empresa',
svc_demurrage: 'Calculadora de demora',
svc_demurrage_desc: 'Cálculo de costos de demora',
svc_contacts: 'Contacto',
svc_contacts_desc: 'Embarcador ↔ Operador',
footer: 'Montana Protocol • 25 años de experiencia',
footer_contact: 'Contacto',
footer_tagline: 'Montana Protocol • 25 años de experiencia',
welcome: '<strong>¡Bienvenido a SeaFare Montana!</strong>',
chat_cleared: '<strong>Chat limpiado.</strong><br>¿En qué puedo ayudarle?',
confirm_clear: '¿Está seguro de que desea borrar el historial del chat?',
error_generic: 'Lo sentimos, algo salió mal. Inténtelo de nuevo.',
error_connection: 'Error de conexión con el servidor.',
qb_vessels_port: 'Buques en puerto',
qb_route: 'Ruta A→B',
qb_cargo: 'Enviar carga',
qb_search: 'Buscar buque',
qb_demurrage: 'Demora',
qb_contacts: 'Buscar contactos',
qm_btn_vessels_port: '¿Qué buques hay cerca de Rotterdam ahora?',
qm_btn_route: 'Calcula la ruta de Shanghai a Rotterdam para un portacontenedores',
qm_btn_cargo: 'Necesito enviar 50000 toneladas de grano de Santos a Rotterdam',
qm_btn_search: 'Buscar buque EVER GIVEN',
qm_btn_demurrage: 'Calcular demora: 10 días acordados, 14 reales, $25000/día',
}
};
const currentLang = localStorage.getItem('seafare_lang') || 'en';
function t(key) { return (i18n[currentLang] && i18n[currentLang][key]) || (i18n.en && i18n.en[key]) || key; }
function setLang(lang) {
currentLang = lang;
localStorage.setItem('seafare_lang', lang);
document.querySelectorAll('[data-i18n]').forEach(el => {
const key = el.getAttribute('data-i18n');
const text = t(key);
if (text && text !== key) el.innerHTML = text;
});
document.querySelectorAll('.lang-btn').forEach(b => {
b.classList.toggle('active', b.textContent.trim().toLowerCase() === lang);
});
}
// =============================================================================
// Landing Page — scroll reveal, counters, sticky nav
// =============================================================================
const revealObserver = new IntersectionObserver((entries) => {
entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });
}, { threshold: 0.15 });
document.querySelectorAll('.reveal').forEach(el => revealObserver.observe(el));
// Counter animation
const counterObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (!entry.isIntersecting) return;
const el = entry.target;
const target = parseInt(el.dataset.target);
if (!target) return;
let current = 0;
const increment = target / 60;
const timer = setInterval(() => {
current += increment;
if (current >= target) { current = target; clearInterval(timer); }
el.textContent = Math.floor(current).toLocaleString() + '+';
}, 25);
counterObserver.unobserve(el);
});
}, { threshold: 0.5 });
document.querySelectorAll('.stat-number[data-target]').forEach(el => counterObserver.observe(el));
// Sticky nav on scroll
window.addEventListener('scroll', () => {
const nav = document.getElementById('topNav');
if (nav) nav.classList.toggle('scrolled', window.scrollY > 50);
});
// Init
setLang(currentLang);
</script>
</body>
</html>