Download frontend/src/App.css from Karan6124/QuantIQ: direct link, hf CLI and curl.
- Browser
- Download file 74.9 kB
-
https://huggingface.co/spaces/Karan6124/QuantIQ/resolve/main/frontend/src/App.css
- Command line
-
hf download hf://spaces/Karan6124/QuantIQ/frontend/src/App.css
-
curl -L -o App.css https://huggingface.co/spaces/Karan6124/QuantIQ/resolve/main/frontend/src/App.css
74.9 kB
| /* ========================================== | |
| QUANTIQ DASHBOARD β PREMIUM CSS SYSTEM | |
| ========================================== */ | |
| /* βββ App Layout ββββββββββββββββββββββββββ */ | |
| .app-container { | |
| display: flex; | |
| flex-direction: column; | |
| min-height: 100vh; | |
| width: 100%; | |
| background: var(--bg-space); | |
| } | |
| /* βββ 1. Login Page βββββββββββββββββββββββ */ | |
| .login-page { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 100vh; | |
| padding: 20px; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .login-card { | |
| width: 440px; | |
| max-width: 100%; | |
| padding: 40px; | |
| text-align: center; | |
| animation: slideUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| } | |
| .logo-glow { | |
| width: 72px; | |
| height: 72px; | |
| margin: 0 auto 24px; | |
| border-radius: 50%; | |
| background: linear-gradient(135deg, var(--neon-cyan), var(--neon-violet)); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| box-shadow: 0 0 30px rgba(0, 242, 254, 0.3); | |
| } | |
| .login-title { | |
| font-size: 36px; | |
| background: linear-gradient(135deg, #ffffff 30%, var(--text-secondary)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| margin-bottom: 12px; | |
| } | |
| .login-subtitle { | |
| color: var(--text-secondary); | |
| font-size: 15px; | |
| line-height: 150%; | |
| margin-bottom: 36px; | |
| } | |
| .google-btn { | |
| width: 100%; | |
| background: #ffffff; | |
| color: #1f2937; | |
| font-size: 15px; | |
| padding: 12px; | |
| border-radius: 8px; | |
| font-weight: 600; | |
| box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1); | |
| transition: all 0.2s ease; | |
| } | |
| .google-btn:hover { | |
| background: #f3f4f6; | |
| box-shadow: 0 4px 20px rgba(255, 255, 255, 0.2); | |
| } | |
| .mock-btn { | |
| width: 100%; | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid var(--border-glass); | |
| color: var(--text-primary); | |
| font-size: 14px; | |
| padding: 10px; | |
| border-radius: 8px; | |
| margin-top: 16px; | |
| } | |
| .mock-btn:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| border-color: var(--neon-violet); | |
| } | |
| /* βββ 2. Dashboard Header / Navbar βββββββ */ | |
| .dashboard-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 0 28px; | |
| height: 60px; | |
| border-bottom: 1px solid var(--border-glass); | |
| background: rgba(6, 7, 13, 0.92); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| position: sticky; | |
| top: 0; | |
| z-index: 100; | |
| box-shadow: | |
| 0 1px 0 rgba(255, 255, 255, 0.04), | |
| 0 4px 24px rgba(0, 0, 0, 0.4); | |
| } | |
| .header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| user-select: none; | |
| } | |
| .logo-text { | |
| font-size: 20px; | |
| font-weight: 700; | |
| background: linear-gradient(135deg, var(--neon-cyan), var(--neon-violet)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| letter-spacing: -0.02em; | |
| } | |
| .header-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| } | |
| .credits-badge { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| background: rgba(161, 84, 255, 0.08); | |
| border: 1px solid rgba(161, 84, 255, 0.2); | |
| padding: 5px 10px 5px 10px; | |
| border-radius: 99px; | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(--neon-violet); | |
| transition: border-color 0.2s ease; | |
| } | |
| .credits-badge:hover { | |
| border-color: rgba(161, 84, 255, 0.45); | |
| } | |
| .recharge-btn { | |
| background: linear-gradient(135deg, var(--neon-cyan), var(--neon-violet)); | |
| color: #08060e; | |
| font-weight: 700; | |
| font-size: 11px; | |
| letter-spacing: 0.06em; | |
| padding: 3px 9px; | |
| border-radius: 99px; | |
| box-shadow: 0 0 10px rgba(0, 242, 254, 0.25); | |
| transition: box-shadow 0.2s ease; | |
| } | |
| .recharge-btn:hover { | |
| box-shadow: 0 0 18px rgba(0, 242, 254, 0.5); | |
| } | |
| .user-profile { | |
| display: flex; | |
| align-items: center; | |
| gap: 9px; | |
| } | |
| .avatar { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .avatar-upload-wrapper { | |
| position: relative; | |
| width: 34px; | |
| height: 34px; | |
| border-radius: 50%; | |
| border: 1.5px solid rgba(0, 242, 254, 0.4); | |
| overflow: hidden; | |
| cursor: pointer; | |
| background: rgba(255, 255, 255, 0.05); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: | |
| border-color 0.2s ease, | |
| box-shadow 0.2s ease, | |
| transform 0.15s ease; | |
| } | |
| .avatar-upload-wrapper:hover { | |
| border-color: var(--neon-cyan); | |
| box-shadow: 0 0 10px rgba(0, 242, 254, 0.3); | |
| } | |
| .avatar-upload-wrapper:active { | |
| transform: scale(0.93); | |
| } | |
| .avatar-hover-overlay { | |
| position: absolute; | |
| inset: 0; | |
| background: rgba(0, 0, 0, 0.65); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| opacity: 0; | |
| transition: opacity 0.2s ease; | |
| } | |
| .avatar-upload-wrapper:hover .avatar-hover-overlay { | |
| opacity: 1; | |
| } | |
| .avatar-upload-loading { | |
| position: absolute; | |
| inset: 0; | |
| background: rgba(0, 0, 0, 0.8); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .profile-name { | |
| font-size: 13.5px; | |
| color: var(--text-primary); | |
| font-weight: 500; | |
| letter-spacing: -0.01em; | |
| } | |
| .logout-btn { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: transparent; | |
| color: var(--text-muted); | |
| border: 1px solid var(--border-glass); | |
| width: 34px; | |
| height: 34px; | |
| border-radius: 8px; | |
| transition: all 0.2s ease; | |
| } | |
| .logout-btn:hover { | |
| background: rgba(255, 23, 68, 0.08); | |
| border-color: rgba(255, 23, 68, 0.3); | |
| color: var(--bear-red); | |
| } | |
| @media (max-width: 768px) { | |
| .dashboard-header { | |
| padding: 0 12px; | |
| } | |
| .header-left { | |
| gap: 6px; | |
| flex-shrink: 0; | |
| } | |
| .logo-text { | |
| font-size: 17px; | |
| } | |
| .header-right { | |
| gap: 8px; | |
| min-width: 0; | |
| } | |
| .credits-badge { | |
| gap: 3px; | |
| padding: 3px 5px; | |
| font-size: 9px; | |
| } | |
| .recharge-btn { | |
| padding: 3px 5px; | |
| font-size: 8px; | |
| } | |
| .user-profile { | |
| gap: 0; | |
| } | |
| .profile-name { | |
| display: none; | |
| } | |
| .avatar-upload-wrapper, | |
| .logout-btn { | |
| width: 36px; | |
| height: 36px; | |
| flex-shrink: 0; | |
| } | |
| } | |
| @media (min-width: 375px) and (max-width: 480px) { | |
| .credits-badge { | |
| gap: 5px; | |
| padding: 5px 8px; | |
| font-size: 11px; | |
| } | |
| .credits-badge svg { | |
| width: 16px; | |
| height: 16px; | |
| } | |
| } | |
| @media (min-width: 481px) and (max-width: 768px) { | |
| .credits-badge { | |
| gap: 6px; | |
| padding: 6px 9px; | |
| font-size: 12px; | |
| } | |
| .credits-badge svg { | |
| width: 17px; | |
| height: 17px; | |
| } | |
| } | |
| /* βββ 3. Dashboard Grid βββββββββββββββββββ */ | |
| .dashboard-grid { | |
| display: grid; | |
| grid-template-columns: 260px 1fr 300px; | |
| gap: 14px; | |
| padding: 14px; | |
| flex: 1; | |
| max-width: 1600px; | |
| margin: 0 auto; | |
| width: 100%; | |
| box-sizing: border-box; | |
| } | |
| @media (max-width: 1200px) { | |
| .dashboard-grid { | |
| grid-template-columns: 240px 1fr; | |
| } | |
| .right-sidebar { | |
| grid-column: span 2; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .app-container { | |
| min-height: 100vh; | |
| height: auto; | |
| overflow-x: hidden; | |
| overflow-y: visible; | |
| } | |
| .dashboard-grid { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr); | |
| width: 100%; | |
| max-width: 100%; | |
| padding: 12px 8px; | |
| overflow: visible; | |
| } | |
| .dashboard-grid > * { | |
| min-width: 0; | |
| width: 100%; | |
| max-width: 100%; | |
| } | |
| .left-sidebar, | |
| .center-content, | |
| .right-sidebar { | |
| position: static; | |
| height: auto; | |
| min-height: 0; | |
| max-height: none; | |
| overflow: visible; | |
| } | |
| .watchlist-container { | |
| height: auto; | |
| min-height: 0; | |
| max-height: none; | |
| overflow: visible; | |
| } | |
| .watchlist-items { | |
| flex: none; | |
| height: auto; | |
| max-height: none; | |
| overflow: visible; | |
| } | |
| .alerts-panel { | |
| flex: none; | |
| height: auto; | |
| min-height: 0; | |
| max-height: none; | |
| overflow: visible; | |
| } | |
| .alerts-list { | |
| flex: none; | |
| height: auto; | |
| max-height: none; | |
| overflow: visible; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| html, | |
| body, | |
| #root { | |
| height: auto; | |
| min-height: 100%; | |
| overflow-x: hidden; | |
| overflow-y: auto; | |
| } | |
| .app-container, | |
| .dashboard-grid, | |
| .left-sidebar, | |
| .center-content, | |
| .right-sidebar, | |
| .watchlist-container, | |
| .watchlist-items, | |
| .alerts-panel, | |
| .alerts-list { | |
| height: auto ; | |
| min-height: 0 ; | |
| max-height: none ; | |
| overflow-y: visible ; | |
| position: static ; | |
| } | |
| .dashboard-grid { | |
| grid-template-columns: minmax(0, 1fr); | |
| width: 100%; | |
| max-width: 100%; | |
| padding: 12px 8px; | |
| overflow-x: hidden ; | |
| } | |
| .dashboard-grid > * { | |
| min-width: 0; | |
| max-width: 100%; | |
| } | |
| .chart-panel { | |
| width: 100%; | |
| max-width: 100%; | |
| padding: 16px 12px; | |
| box-sizing: border-box; | |
| } | |
| .chart-header { | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 12px; | |
| } | |
| .chart-range-selector { | |
| width: 100%; | |
| max-width: 100%; | |
| overflow-x: auto; | |
| white-space: nowrap; | |
| justify-content: flex-start; | |
| scrollbar-width: none; | |
| } | |
| .chart-range-selector::-webkit-scrollbar { | |
| display: none; | |
| } | |
| .range-btn { | |
| flex: 0 0 auto; | |
| padding: 5px 9px; | |
| } | |
| .chart-container, | |
| .chart-panel, | |
| .insight-panel, | |
| .alerts-panel { | |
| margin-left: auto; | |
| margin-right: auto; | |
| } | |
| .chart-panel { | |
| overflow: hidden; | |
| } | |
| .chart-controls, | |
| .indicator-controls, | |
| .chart-range-selector { | |
| width: 100%; | |
| max-width: 100%; | |
| min-width: 0; | |
| } | |
| .chart-controls, | |
| .indicator-controls { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| justify-content: center; | |
| } | |
| .control-toggle-btn { | |
| flex: 0 1 auto; | |
| min-width: 0; | |
| padding: 8px 10px; | |
| font-size: 11px; | |
| } | |
| .left-sidebar, | |
| .right-sidebar { | |
| grid-column: span 1; | |
| } | |
| .chart-indicator-controls { | |
| flex-direction: column; | |
| align-items: stretch ; | |
| gap: 12px ; | |
| padding: 12px ; | |
| } | |
| .chart-type-controls, | |
| .technical-overlay-controls { | |
| width: 100%; | |
| max-width: 100%; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| } | |
| .chart-type-controls { | |
| justify-content: flex-start; | |
| } | |
| .technical-overlay-controls { | |
| justify-content: flex-start; | |
| } | |
| .technical-overlay-controls .control-toggle-btn { | |
| flex: 1 1 calc(50% - 4px); | |
| min-width: 0; | |
| min-height: 38px; | |
| justify-content: center; | |
| } | |
| .chart-range-actions { | |
| width: 100%; | |
| max-width: 100%; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px ; | |
| } | |
| .chart-range-selector { | |
| flex: 1 1 auto; | |
| min-width: 0; | |
| width: auto ; | |
| padding: 2px; | |
| gap: 0; | |
| overflow: hidden; | |
| } | |
| .range-btn { | |
| flex: 1 1 0; | |
| min-width: 0; | |
| padding: 3px 1px; | |
| font-size: 7px; | |
| height: 30px; | |
| } | |
| .chart-range-actions > .control-toggle-btn { | |
| flex: 0 0 34px; | |
| width: 34px; | |
| min-width: 34px; | |
| height: 34px; | |
| padding: 0 ; | |
| border-radius: 7px ; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .chart-indicator-pane { | |
| width: calc(100% + 16px) ; | |
| max-width: none ; | |
| margin-left: 60px; | |
| margin-right: 40px; | |
| padding: 12px 2px 10px; | |
| border: 1px solid var(--border-glass); | |
| overflow: hidden; | |
| box-sizing: border-box; | |
| } | |
| .mobile-chart-nav { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 12px; | |
| width: 100%; | |
| margin: 4px 0 14px; | |
| } | |
| .mobile-chart-nav button { | |
| width: 34px; | |
| height: 34px; | |
| border-radius: 8px; | |
| border: 1px solid var(--border-glass); | |
| background: rgba(255, 255, 255, 0.04); | |
| color: var(--text-secondary); | |
| font-size: 18px; | |
| font-weight: 700; | |
| cursor: pointer; | |
| } | |
| .mobile-chart-nav button:disabled { | |
| opacity: 0.3; | |
| cursor: default; | |
| } | |
| .mobile-chart-nav span { | |
| min-width: 64px; | |
| text-align: center; | |
| padding: 7px 10px; | |
| border-radius: 8px; | |
| background: rgba(0, 242, 254, 0.06); | |
| border: 1px solid rgba(0, 242, 254, 0.16); | |
| color: var(--neon-cyan); | |
| font-size: 11px; | |
| font-weight: 700; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .chart-range-actions .range-btn { | |
| font-size: 10px ; | |
| padding: 4px 2px ; | |
| } | |
| } | |
| /* βββ Glass Panel Base ββββββββββββββββββββ */ | |
| .glass-panel { | |
| background: rgba(13, 16, 27, 0.85); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 14px; | |
| backdrop-filter: blur(12px); | |
| -webkit-backdrop-filter: blur(12px); | |
| transition: | |
| border-color 0.3s ease, | |
| box-shadow 0.3s ease; | |
| overflow: hidden; | |
| } | |
| .glass-panel:hover { | |
| border-color: rgba(0, 242, 254, 0.12); | |
| box-shadow: 0 4px 30px rgba(0, 0, 0, 0.25); | |
| } | |
| .panel-title { | |
| font-size: 13px; | |
| font-weight: 600; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| color: var(--text-secondary); | |
| padding: 14px 16px; | |
| border-bottom: 1px solid var(--border-glass); | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| /* βββ 4. Watchlist Panel ββββββββββββββββββ */ | |
| .watchlist-container { | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| min-height: 400px; | |
| } | |
| .watchlist-search { | |
| padding: 10px 12px; | |
| display: flex; | |
| gap: 8px; | |
| border-bottom: 1px solid var(--border-glass); | |
| background: rgba(0, 0, 0, 0.15); | |
| } | |
| .watchlist-search input { | |
| flex: 1; | |
| font-size: 13px; | |
| padding: 8px 12px; | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 8px; | |
| color: var(--text-primary); | |
| outline: none; | |
| transition: border-color 0.2s ease; | |
| } | |
| .watchlist-search input::placeholder { | |
| color: var(--text-muted); | |
| } | |
| .watchlist-search input:focus { | |
| border-color: rgba(0, 242, 254, 0.4); | |
| background: rgba(0, 242, 254, 0.03); | |
| } | |
| .add-btn { | |
| background: rgba(0, 242, 254, 0.1); | |
| border: 1px solid rgba(0, 242, 254, 0.25); | |
| color: var(--neon-cyan); | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 8px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all 0.2s ease; | |
| flex-shrink: 0; | |
| } | |
| .add-btn:hover { | |
| background: rgba(0, 242, 254, 0.18); | |
| border-color: var(--neon-cyan); | |
| box-shadow: 0 0 10px rgba(0, 242, 254, 0.2); | |
| } | |
| .watchlist-items { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding: 8px; | |
| scrollbar-width: thin; | |
| scrollbar-color: rgba(255, 255, 255, 0.06) transparent; | |
| } | |
| .watchlist-item { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 11px 14px; | |
| border-radius: 9px; | |
| cursor: pointer; | |
| margin-bottom: 4px; | |
| border: 1px solid transparent; | |
| transition: all 0.18s ease; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .watchlist-item::before { | |
| content: ""; | |
| position: absolute; | |
| left: 0; | |
| top: 0; | |
| bottom: 0; | |
| width: 3px; | |
| border-radius: 2px 0 0 2px; | |
| background: var(--neon-cyan); | |
| transform: scaleY(0); | |
| transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1); | |
| transform-origin: bottom; | |
| } | |
| .watchlist-item:hover { | |
| background: rgba(255, 255, 255, 0.03); | |
| border-color: rgba(255, 255, 255, 0.06); | |
| } | |
| .watchlist-item:hover::before { | |
| transform: scaleY(1); | |
| } | |
| .watchlist-item.active { | |
| background: rgba(0, 242, 254, 0.06); | |
| border-color: rgba(0, 242, 254, 0.14); | |
| box-shadow: inset 0 0 16px rgba(0, 242, 254, 0.04); | |
| } | |
| .watchlist-item.active::before { | |
| transform: scaleY(1); | |
| } | |
| .ticker-symbol { | |
| font-weight: 600; | |
| font-size: 14px; | |
| color: var(--text-primary); | |
| letter-spacing: 0.02em; | |
| } | |
| .watchlist-item.active .ticker-symbol { | |
| color: var(--neon-cyan); | |
| } | |
| .delete-ticker-btn { | |
| background: transparent; | |
| color: var(--text-muted); | |
| width: 26px; | |
| height: 26px; | |
| border-radius: 6px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| opacity: 0; | |
| transition: all 0.2s ease; | |
| } | |
| .watchlist-item:hover .delete-ticker-btn { | |
| opacity: 1; | |
| } | |
| .delete-ticker-btn:hover { | |
| background: rgba(255, 23, 68, 0.12); | |
| color: var(--bear-red); | |
| } | |
| /* βββ 5. Center Content (Chart + AI) βββββ */ | |
| .center-content { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 14px; | |
| overflow-y: auto; | |
| max-height: calc(100vh - 130px); | |
| scrollbar-width: thin; | |
| scrollbar-color: rgba(255, 255, 255, 0.06) transparent; | |
| } | |
| /* Chart Styles */ | |
| .chart-panel { | |
| padding: 20px 20px 16px; | |
| min-height: 540px; /* Secure min-height to prevent clipping of 340px chart */ | |
| height: auto; | |
| display: flex; | |
| flex-direction: column; | |
| flex-shrink: 0; | |
| } | |
| .chart-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| margin-bottom: 18px; | |
| } | |
| .active-stock-info { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| } | |
| .active-stock-info h2 { | |
| font-size: 13px; | |
| font-weight: 600; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: var(--text-muted); | |
| margin: 0 0 2px; | |
| } | |
| .active-price { | |
| font-size: 32px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| font-family: var(--font-display); | |
| letter-spacing: -0.02em; | |
| line-height: 1; | |
| } | |
| .live-indicator { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 10px; | |
| color: var(--bull-green); | |
| text-transform: uppercase; | |
| font-weight: 700; | |
| letter-spacing: 0.1em; | |
| background: rgba(0, 230, 118, 0.08); | |
| border: 1px solid rgba(0, 230, 118, 0.2); | |
| padding: 3px 8px; | |
| border-radius: 99px; | |
| margin-top: 6px; | |
| width: fit-content; | |
| } | |
| .live-dot { | |
| width: 5px; | |
| height: 5px; | |
| background: var(--bull-green); | |
| border-radius: 50%; | |
| animation: pulseGlow 1.5s infinite; | |
| flex-shrink: 0; | |
| } | |
| .chart-container { | |
| flex: 1; | |
| min-height: 260px; | |
| position: relative; | |
| } | |
| /* Technical Indicator Sub-Panes (RSI / MACD stacked below the price chart) */ | |
| .chart-indicator-pane { | |
| border-radius: 8px; | |
| background: rgba(255, 255, 255, 0.008); | |
| padding-bottom: 4px; | |
| transition: opacity 0.2s ease; | |
| } | |
| /* MACD / Bollinger toggle accents for the Technical Overlays toolbar */ | |
| .control-toggle-btn.indicator-macd.active { | |
| color: var(--neon-violet) ; | |
| background: rgba(161, 84, 255, 0.1) ; | |
| } | |
| .control-toggle-btn.indicator-bb.active { | |
| color: #f59e0b ; | |
| background: rgba(245, 158, 11, 0.1) ; | |
| } | |
| /* βββ 6. AI Analyst Panel βββββββββββββββββ */ | |
| .insight-panel { | |
| padding: 20px; | |
| } | |
| .insight-cta { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 36px 24px; | |
| text-align: center; | |
| gap: 18px; | |
| } | |
| .insight-cta-description { | |
| color: var(--text-secondary); | |
| font-size: 14px; | |
| line-height: 160%; | |
| max-width: 460px; | |
| } | |
| .insight-btn { | |
| background: linear-gradient(135deg, var(--neon-cyan), var(--neon-violet)); | |
| color: #08060e; | |
| font-size: 14px; | |
| font-weight: 700; | |
| padding: 12px 28px; | |
| border-radius: 99px; | |
| box-shadow: 0 0 20px rgba(161, 84, 255, 0.3); | |
| letter-spacing: 0.01em; | |
| transition: | |
| box-shadow 0.25s ease, | |
| transform 0.15s ease; | |
| } | |
| .insight-btn:hover { | |
| box-shadow: 0 0 32px rgba(161, 84, 255, 0.55); | |
| transform: translateY(-1px); | |
| } | |
| .insight-btn:active { | |
| transform: translateY(0); | |
| } | |
| .insight-loading { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 40px; | |
| gap: 20px; | |
| } | |
| .spinner { | |
| width: 40px; | |
| height: 40px; | |
| border: 2px solid rgba(255, 255, 255, 0.05); | |
| border-top-color: var(--neon-cyan); | |
| border-radius: 50%; | |
| animation: spin 1s linear infinite; | |
| } | |
| @keyframes spin { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| .insight-result { | |
| display: flex; | |
| gap: 24px; | |
| animation: fadeIn 0.4s ease forwards; | |
| } | |
| @media (max-width: 640px) { | |
| .insight-result { | |
| flex-direction: column; | |
| align-items: center; | |
| } | |
| } | |
| .probability-gauge { | |
| flex-shrink: 0; | |
| position: relative; | |
| width: 140px; | |
| height: 140px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .gauge-svg { | |
| transform: rotate(-90deg); | |
| } | |
| .gauge-bg { | |
| fill: none; | |
| stroke: rgba(255, 255, 255, 0.05); | |
| stroke-width: 7; | |
| } | |
| .gauge-fill { | |
| fill: none; | |
| stroke: url(#cyan-violet-grad); | |
| stroke-width: 7; | |
| stroke-linecap: round; | |
| transition: stroke-dasharray 0.8s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| .gauge-text { | |
| position: absolute; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| } | |
| .gauge-percentage { | |
| font-size: 30px; | |
| font-weight: 700; | |
| font-family: var(--font-display); | |
| color: var(--text-primary); | |
| } | |
| .gauge-label { | |
| font-size: 10px; | |
| color: var(--text-secondary); | |
| text-transform: uppercase; | |
| letter-spacing: 0.08em; | |
| font-weight: 600; | |
| } | |
| .insight-text-container { | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| gap: 12px; | |
| } | |
| .insight-tag { | |
| display: inline-flex; | |
| align-self: flex-start; | |
| padding: 4px 10px; | |
| border-radius: 5px; | |
| font-size: 10px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.07em; | |
| animation: pulsePill 2s infinite ease-in-out; | |
| } | |
| .tag-bullish { | |
| background: rgba(0, 230, 118, 0.08); | |
| border: 1px solid rgba(0, 230, 118, 0.25); | |
| color: var(--bull-green); | |
| } | |
| .tag-bearish { | |
| background: rgba(255, 23, 68, 0.08); | |
| border: 1px solid rgba(255, 23, 68, 0.25); | |
| color: var(--bear-red); | |
| } | |
| .insight-explanation { | |
| color: var(--text-secondary); | |
| font-size: 14px; | |
| line-height: 165%; | |
| } | |
| .insight-reason-body p { | |
| margin: 0 0 10px 0; | |
| } | |
| .insight-reason-body p:last-child { | |
| margin-bottom: 0; | |
| } | |
| /* βββ 7. Right Sidebar (Alerts) βββββββββββ */ | |
| .right-sidebar { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 14px; | |
| } | |
| .alerts-panel { | |
| display: flex; | |
| flex-direction: column; | |
| flex: 1; | |
| } | |
| .alert-form { | |
| padding: 14px; | |
| border-bottom: 1px solid var(--border-glass); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| background: rgba(0, 0, 0, 0.1); | |
| } | |
| .alert-form-row { | |
| display: flex; | |
| gap: 8px; | |
| } | |
| .alert-form select, | |
| .alert-form input[type="number"] { | |
| font-size: 13px; | |
| width: 100%; | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 8px; | |
| color: var(--text-primary); | |
| padding: 8px 10px; | |
| outline: none; | |
| transition: border-color 0.2s ease; | |
| appearance: none; | |
| -webkit-appearance: none; | |
| } | |
| .alert-form select option { | |
| background: var(--bg-panel); | |
| } | |
| .alert-form select:focus, | |
| .alert-form input[type="number"]:focus { | |
| border-color: rgba(0, 242, 254, 0.4); | |
| background: rgba(0, 242, 254, 0.03); | |
| } | |
| .alert-form input[type="number"]::placeholder { | |
| color: var(--text-muted); | |
| } | |
| .alert-submit-btn { | |
| background: rgba(0, 242, 254, 0.07); | |
| border: 1px solid rgba(0, 242, 254, 0.18); | |
| color: var(--neon-cyan); | |
| width: 100%; | |
| padding: 9px; | |
| border-radius: 9px; | |
| font-size: 13px; | |
| font-weight: 600; | |
| letter-spacing: 0.02em; | |
| transition: all 0.2s ease; | |
| } | |
| .alert-submit-btn:hover { | |
| background: rgba(0, 242, 254, 0.14); | |
| border-color: var(--neon-cyan); | |
| box-shadow: 0 0 12px rgba(0, 242, 254, 0.15); | |
| } | |
| .alerts-list { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding: 12px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| scrollbar-width: thin; | |
| scrollbar-color: rgba(255, 255, 255, 0.06) transparent; | |
| } | |
| .alert-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 10px 12px; | |
| background: rgba(255, 255, 255, 0.02); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 9px; | |
| transition: border-color 0.2s ease; | |
| } | |
| .alert-item:hover { | |
| border-color: rgba(255, 255, 255, 0.12); | |
| } | |
| .alert-info { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 3px; | |
| } | |
| .alert-ticker { | |
| font-weight: 700; | |
| font-size: 13px; | |
| color: var(--text-primary); | |
| letter-spacing: 0.03em; | |
| } | |
| .alert-condition { | |
| font-size: 11px; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| font-weight: 500; | |
| } | |
| .deactivate-alert-btn { | |
| background: transparent; | |
| color: var(--text-muted); | |
| width: 26px; | |
| height: 26px; | |
| border-radius: 6px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all 0.2s ease; | |
| } | |
| .deactivate-alert-btn:hover { | |
| background: rgba(255, 23, 68, 0.12); | |
| color: var(--bear-red); | |
| } | |
| .alerts-empty { | |
| padding: 28px 16px; | |
| text-align: center; | |
| color: var(--text-muted); | |
| font-size: 13px; | |
| line-height: 1.6; | |
| } | |
| /* Custom UI badges */ | |
| .triggered-badge { | |
| background: rgba(255, 23, 68, 0.12); | |
| border: 1px solid rgba(255, 23, 68, 0.3); | |
| color: var(--bear-red); | |
| font-size: 9px; | |
| font-weight: 700; | |
| padding: 2px 7px; | |
| border-radius: 4px; | |
| letter-spacing: 0.06em; | |
| } | |
| /* βββ 8. Recharge Modal βββββββββββββββββββ */ | |
| .modal-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: rgba(0, 0, 0, 0.88); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 1000; | |
| backdrop-filter: blur(10px); | |
| } | |
| .modal-content { | |
| width: 420px; | |
| max-width: calc(100% - 32px); | |
| padding: 32px; | |
| text-align: center; | |
| animation: slideUp 0.3s ease forwards; | |
| border-radius: 18px; | |
| } | |
| .modal-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 24px; | |
| } | |
| .close-btn { | |
| background: transparent; | |
| color: var(--text-secondary); | |
| width: 28px; | |
| height: 28px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border-radius: 6px; | |
| transition: all 0.2s ease; | |
| } | |
| .close-btn:hover { | |
| background: rgba(255, 255, 255, 0.06); | |
| color: var(--text-primary); | |
| } | |
| .recharge-packages { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| margin-bottom: 24px; | |
| } | |
| .package-card { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 14px 16px; | |
| background: rgba(255, 255, 255, 0.02); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 12px; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| text-align: left; | |
| } | |
| .package-card:hover { | |
| border-color: rgba(0, 242, 254, 0.3); | |
| background: rgba(0, 242, 254, 0.04); | |
| box-shadow: 0 0 16px rgba(0, 242, 254, 0.06); | |
| } | |
| .package-credits { | |
| font-weight: 600; | |
| font-size: 15px; | |
| color: var(--text-primary); | |
| } | |
| .package-price { | |
| color: var(--neon-cyan); | |
| font-weight: 700; | |
| font-size: 15px; | |
| } | |
| /* βββ 9. Animations βββββββββββββββββββββββ */ | |
| @keyframes slideUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes pulseGlow { | |
| 0% { | |
| transform: scale(0.95); | |
| box-shadow: 0 0 0 0 rgba(0, 242, 254, 0.7); | |
| } | |
| 70% { | |
| transform: scale(1.2); | |
| box-shadow: 0 0 0 5px rgba(0, 242, 254, 0); | |
| } | |
| 100% { | |
| transform: scale(0.95); | |
| box-shadow: 0 0 0 0 rgba(0, 242, 254, 0); | |
| } | |
| } | |
| @keyframes pulsePill { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.7; | |
| } | |
| } | |
| .mini-chart-container, | |
| .chart-container { | |
| animation: fadeInChart 0.5s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| @keyframes fadeInChart { | |
| from { | |
| opacity: 0; | |
| transform: translateY(8px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .animate-fade { | |
| animation: fadeIn 0.4s ease; | |
| } | |
| /* Neon glow filter helpers */ | |
| .glow-cyan { | |
| filter: drop-shadow(0 0 6px rgba(0, 242, 254, 0.7)); | |
| } | |
| .glow-violet { | |
| filter: drop-shadow(0 0 6px rgba(161, 84, 255, 0.7)); | |
| } | |
| /* βββ 10. Landing Page Styles βββββββββββββ */ | |
| .landing-page-container { | |
| min-height: 100vh; | |
| width: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| background-color: var(--bg-space); | |
| position: relative; | |
| overflow-x: hidden; | |
| } | |
| .bg-glow-mesh { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| pointer-events: none; | |
| z-index: 0; | |
| overflow: hidden; | |
| } | |
| .mesh-dot { | |
| position: absolute; | |
| border-radius: 50%; | |
| filter: blur(120px); | |
| opacity: 0.15; | |
| } | |
| .mesh-cyan { | |
| width: 400px; | |
| height: 400px; | |
| background: var(--neon-cyan); | |
| top: -100px; | |
| left: 10%; | |
| animation: floatLight 20s infinite ease-in-out; | |
| } | |
| .mesh-violet { | |
| width: 500px; | |
| height: 500px; | |
| background: var(--neon-violet); | |
| bottom: -150px; | |
| right: 10%; | |
| animation: floatLight2 25s infinite ease-in-out; | |
| } | |
| @keyframes floatLight { | |
| 0%, | |
| 100% { | |
| transform: translate(0, 0) scale(1); | |
| } | |
| 50% { | |
| transform: translate(50px, 30px) scale(1.1); | |
| } | |
| } | |
| @keyframes floatLight2 { | |
| 0%, | |
| 100% { | |
| transform: translate(0, 0) scale(1.1); | |
| } | |
| 50% { | |
| transform: translate(-40px, -60px) scale(0.9); | |
| } | |
| } | |
| .landing-header { | |
| display: flex; | |
| align-items: center; | |
| padding: 24px 40px; | |
| z-index: 10; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.03); | |
| } | |
| .brand { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .brand-logo-text { | |
| font-family: var(--font-display); | |
| font-size: 24px; | |
| font-weight: 700; | |
| background: linear-gradient(135deg, var(--neon-cyan), var(--neon-violet)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| letter-spacing: -0.02em; | |
| } | |
| .landing-main { | |
| max-width: 1200px; | |
| width: 100%; | |
| margin: 0 auto; | |
| padding: 40px 24px; | |
| display: grid; | |
| grid-template-columns: 1.2fr 0.8fr; | |
| gap: 40px; | |
| z-index: 10; | |
| align-items: center; | |
| } | |
| @media (max-width: 968px) { | |
| .landing-main { | |
| grid-template-columns: 1fr; | |
| gap: 48px; | |
| padding: 20px 20px 40px; | |
| } | |
| } | |
| .landing-hero { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| text-align: left; | |
| } | |
| .hero-badge { | |
| display: inline-flex; | |
| align-self: flex-start; | |
| align-items: center; | |
| gap: 8px; | |
| background: rgba(0, 242, 254, 0.08); | |
| border: 1px solid rgba(0, 242, 254, 0.2); | |
| padding: 6px 14px; | |
| border-radius: 99px; | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(--neon-cyan); | |
| letter-spacing: 0.02em; | |
| } | |
| .hero-title { | |
| font-size: 48px; | |
| line-height: 120%; | |
| font-weight: 800; | |
| letter-spacing: -0.03em; | |
| color: var(--text-primary); | |
| } | |
| .hero-title span { | |
| background: linear-gradient(135deg, var(--neon-cyan) 30%, var(--neon-violet)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| } | |
| @media (max-width: 640px) { | |
| .hero-title { | |
| font-size: 36px; | |
| } | |
| } | |
| .hero-subtitle { | |
| color: var(--text-secondary); | |
| font-size: 16px; | |
| line-height: 160%; | |
| margin-bottom: 12px; | |
| } | |
| .dashboard-mockup { | |
| border-radius: 12px; | |
| overflow: hidden; | |
| box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5); | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| .mockup-header { | |
| background: rgba(13, 16, 27, 0.9); | |
| padding: 10px 16px; | |
| display: flex; | |
| align-items: center; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.04); | |
| } | |
| .mockup-dots { | |
| display: flex; | |
| gap: 6px; | |
| } | |
| .mockup-dots .dot { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| } | |
| .mockup-dots .red { | |
| background: #ff5f56; | |
| } | |
| .mockup-dots .yellow { | |
| background: #ffbd2e; | |
| } | |
| .mockup-dots .green { | |
| background: #27c93f; | |
| } | |
| .mockup-url { | |
| margin: 0 auto; | |
| font-family: var(--font-mono); | |
| font-size: 11px; | |
| color: var(--text-muted); | |
| background: rgba(255, 255, 255, 0.03); | |
| padding: 2px 24px; | |
| border-radius: 4px; | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| .mockup-body { | |
| padding: 16px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| } | |
| .mockup-chart-preview { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .preview-info { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .preview-ticker { | |
| font-weight: 700; | |
| font-size: 16px; | |
| color: var(--text-primary); | |
| } | |
| .preview-price { | |
| font-weight: 600; | |
| font-size: 15px; | |
| color: var(--neon-cyan); | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .live-pill { | |
| background: rgba(0, 230, 118, 0.12); | |
| border: 1px solid rgba(0, 230, 118, 0.3); | |
| color: var(--bull-green); | |
| font-size: 9px; | |
| padding: 1px 4px; | |
| border-radius: 3px; | |
| font-weight: 700; | |
| } | |
| .mini-chart-container { | |
| opacity: 0.85; | |
| } | |
| .mockup-agent-preview { | |
| padding: 12px 16px; | |
| border-radius: 8px; | |
| border: 1px solid rgba(161, 84, 255, 0.15); | |
| } | |
| .preview-agent-title { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 12px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin-bottom: 6px; | |
| } | |
| .preview-agent-badge { | |
| margin-left: auto; | |
| font-size: 9px; | |
| font-weight: 700; | |
| background: rgba(161, 84, 255, 0.15); | |
| border: 1px solid rgba(161, 84, 255, 0.3); | |
| color: var(--neon-violet); | |
| padding: 2px 6px; | |
| border-radius: 4px; | |
| } | |
| .preview-agent-reason { | |
| font-size: 12px; | |
| line-height: 150%; | |
| color: var(--text-secondary); | |
| } | |
| .landing-auth-panel { | |
| display: flex; | |
| justify-content: center; | |
| } | |
| .auth-card { | |
| width: 100%; | |
| max-width: 400px; | |
| padding: 36px 32px; | |
| border-radius: 20px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 24px; | |
| box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4); | |
| } | |
| .auth-card-title { | |
| font-size: 24px; | |
| font-weight: 700; | |
| text-align: center; | |
| color: var(--text-primary); | |
| } | |
| .auth-card-subtitle { | |
| font-size: 14px; | |
| line-height: 150%; | |
| color: var(--text-secondary); | |
| text-align: center; | |
| margin-top: -12px; | |
| } | |
| .auth-actions { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 16px; | |
| width: 100%; | |
| } | |
| .google-btn-wrapper { | |
| width: 100%; | |
| display: flex; | |
| justify-content: center; | |
| min-height: 44px; | |
| } | |
| .auth-divider { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 100%; | |
| margin: 4px 0; | |
| } | |
| .auth-divider::before, | |
| .auth-divider::after { | |
| content: ""; | |
| flex: 1; | |
| height: 1px; | |
| background: rgba(255, 255, 255, 0.08); | |
| } | |
| .auth-divider span { | |
| padding: 0 12px; | |
| font-size: 11px; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| } | |
| .sandbox-btn { | |
| width: 100%; | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid var(--border-glass); | |
| color: var(--text-primary); | |
| font-size: 14px; | |
| font-weight: 500; | |
| padding: 12px; | |
| border-radius: 8px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| transition: all 0.25s ease; | |
| } | |
| .sandbox-btn:hover { | |
| background: rgba(161, 84, 255, 0.08); | |
| border-color: var(--neon-violet); | |
| box-shadow: 0 0 15px rgba(161, 84, 255, 0.2); | |
| } | |
| .auth-features-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| border-top: 1px solid rgba(255, 255, 255, 0.05); | |
| padding-top: 16px; | |
| } | |
| .auth-feature-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 12px; | |
| color: var(--text-secondary); | |
| } | |
| .landing-features { | |
| max-width: 1200px; | |
| width: 100%; | |
| margin: 0 auto; | |
| padding: 40px 24px; | |
| z-index: 10; | |
| } | |
| .features-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 20px; | |
| } | |
| @media (max-width: 768px) { | |
| .features-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| .feature-card { | |
| padding: 32px 24px; | |
| border-radius: 16px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| height: 100%; | |
| } | |
| .feature-icon { | |
| width: 48px; | |
| height: 48px; | |
| border-radius: 12px; | |
| background: rgba(255, 255, 255, 0.03); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| .feature-card h4 { | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| } | |
| .feature-card p { | |
| font-size: 14px; | |
| line-height: 150%; | |
| color: var(--text-secondary); | |
| } | |
| .landing-footer { | |
| text-align: center; | |
| padding: 40px 24px; | |
| margin-top: auto; | |
| border-top: 1px solid rgba(255, 255, 255, 0.03); | |
| color: var(--text-muted); | |
| font-size: 13px; | |
| z-index: 10; | |
| } | |
| /* Chart Range Selector */ | |
| .chart-range-selector { | |
| display: flex; | |
| background: rgba(255, 255, 255, 0.03); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 8px; | |
| padding: 2px; | |
| } | |
| .range-btn { | |
| background: transparent; | |
| color: var(--text-secondary); | |
| font-size: 11px; | |
| font-weight: 600; | |
| padding: 5px 10px; | |
| border-radius: 6px; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| border: none; | |
| } | |
| .range-btn:hover { | |
| color: var(--text-primary); | |
| background: rgba(255, 255, 255, 0.03); | |
| } | |
| .range-btn.active { | |
| color: #08060e; | |
| background: var(--neon-cyan); | |
| box-shadow: 0 0 10px rgba(0, 242, 254, 0.2); | |
| font-weight: 700; | |
| } | |
| /* Autocomplete Suggestions Dropdown */ | |
| .watchlist-search { | |
| position: relative; | |
| } | |
| .suggestions-dropdown { | |
| position: absolute; | |
| top: calc(100% + 4px); | |
| left: 12px; | |
| right: 12px; | |
| background: rgba(13, 16, 27, 0.96); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 10px; | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6); | |
| z-index: 100; | |
| max-height: 200px; | |
| overflow-y: auto; | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| } | |
| .suggestion-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 10px 14px; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| font-size: 13px; | |
| color: var(--text-secondary); | |
| } | |
| .suggestion-item:hover { | |
| background: rgba(0, 242, 254, 0.08); | |
| color: var(--text-primary); | |
| } | |
| .suggestion-symbol { | |
| font-weight: 700; | |
| color: var(--neon-cyan); | |
| } | |
| .suggestion-name { | |
| font-size: 11px; | |
| opacity: 0.8; | |
| max-width: 140px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| /* Ticker Tape Scrolling Indices */ | |
| .ticker-tape { | |
| display: flex; | |
| align-items: center; | |
| background: #090c15; | |
| border-bottom: 1px solid var(--border-glass); | |
| height: 32px; | |
| overflow: hidden; | |
| user-select: none; | |
| z-index: 10; | |
| } | |
| .ticker-tape-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 4px; | |
| background: var(--bg-panel); | |
| border-right: 1px solid var(--border-glass); | |
| padding: 0 12px; | |
| height: 100%; | |
| font-size: 10px; | |
| font-weight: 700; | |
| color: var(--neon-cyan); | |
| letter-spacing: 0.08em; | |
| z-index: 11; | |
| box-shadow: 4px 0 10px rgba(0, 0, 0, 0.3); | |
| } | |
| .ticker-tape-wrapper { | |
| flex: 1; | |
| overflow: hidden; | |
| display: flex; | |
| align-items: center; | |
| } | |
| .ticker-tape-track { | |
| display: flex; | |
| width: max-content; | |
| animation: scrollTicker 30s linear infinite; | |
| } | |
| .ticker-tape-set { | |
| display: flex; | |
| align-items: center; | |
| } | |
| .ticker-tape-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 0 24px; | |
| border-right: 1px solid rgba(255, 255, 255, 0.04); | |
| font-size: 11px; | |
| font-weight: 600; | |
| } | |
| .ticker-tape-name { | |
| color: var(--text-secondary); | |
| } | |
| .ticker-tape-price { | |
| color: var(--text-primary); | |
| font-family: var(--font-mono); | |
| } | |
| .ticker-tape-change { | |
| display: flex; | |
| align-items: center; | |
| font-weight: 700; | |
| } | |
| @keyframes scrollTicker { | |
| 0% { | |
| transform: translate3d(0, 0, 0); | |
| } | |
| 100% { | |
| transform: translate3d(-50%, 0, 0); | |
| } | |
| } | |
| /* Stock Key Metrics Grid */ | |
| .stock-metrics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(6, 1fr); | |
| gap: 12px; | |
| background: rgba(255, 255, 255, 0.02); | |
| border: 1px solid var(--border-glass); | |
| border-radius: 8px; | |
| padding: 10px 14px; | |
| margin-bottom: 16px; | |
| } | |
| @media (max-width: 1024px) { | |
| .stock-metrics-grid { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| } | |
| @media (max-width: 580px) { | |
| .stock-metrics-grid { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| } | |
| .metric-item { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 3px; | |
| } | |
| .metric-label { | |
| font-size: 10px; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| } | |
| .metric-value { | |
| font-size: 13.5px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| font-family: var(--font-mono); | |
| } | |
| /* Bull and Bear Color helpers */ | |
| .text-bull { | |
| color: var(--bull-green) ; | |
| } | |
| .text-bear { | |
| color: var(--bear-red) ; | |
| } | |
| /* Custom Modern Glassmorphic Modal */ | |
| .custom-modal-overlay { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(4, 6, 12, 0.7); | |
| backdrop-filter: blur(8px); | |
| -webkit-backdrop-filter: blur(8px); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 1000; | |
| animation: fadeIn 0.2s ease-out; | |
| } | |
| .custom-modal-content { | |
| width: 400px; | |
| max-width: 90%; | |
| padding: 24px; | |
| border-radius: 16px; | |
| background: rgba(13, 16, 27, 0.85); | |
| box-shadow: | |
| 0 20px 50px rgba(0, 0, 0, 0.5), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.1); | |
| text-align: left; | |
| } | |
| .modal-cancel-btn { | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid var(--border-glass); | |
| color: var(--text-secondary); | |
| padding: 8px 20px; | |
| border-radius: 8px; | |
| font-size: 13.5px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| outline: none; | |
| } | |
| .modal-cancel-btn:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| color: var(--text-primary); | |
| border-color: rgba(255, 255, 255, 0.2); | |
| } | |
| .modal-confirm-btn { | |
| background: linear-gradient(135deg, #ff1744, #d50000); | |
| border: none; | |
| color: white; | |
| padding: 8px 20px; | |
| border-radius: 8px; | |
| font-size: 13.5px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| box-shadow: 0 4px 15px rgba(255, 23, 68, 0.3); | |
| transition: all 0.2s ease; | |
| outline: none; | |
| } | |
| .modal-confirm-btn:hover { | |
| box-shadow: 0 4px 25px rgba(255, 23, 68, 0.5); | |
| transform: translateY(-1px); | |
| } | |
| .modal-confirm-btn:active { | |
| transform: translateY(0); | |
| } | |
| /* Pricing & SaaS Plans Recharge Modal Styles */ | |
| .pricing-modal-content { | |
| background: rgba(10, 12, 22, 0.9) ; | |
| box-shadow: | |
| 0 24px 64px rgba(0, 0, 0, 0.7), | |
| inset 0 1px 1px rgba(255, 255, 255, 0.05) ; | |
| } | |
| .pricing-card { | |
| transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1) ; | |
| } | |
| .pricing-card:hover { | |
| transform: translateY(-4px); | |
| background: rgba(255, 255, 255, 0.04) ; | |
| border-color: rgba(255, 255, 255, 0.15) ; | |
| } | |
| .pricing-card.hot-deal-card:hover { | |
| background: rgba(161, 84, 255, 0.08) ; | |
| border-color: rgba(161, 84, 255, 0.5) ; | |
| box-shadow: 0 12px 40px rgba(161, 84, 255, 0.18) ; | |
| } | |
| .pricing-card.lifetime-deal-card:hover { | |
| background: rgba(0, 242, 254, 0.08) ; | |
| border-color: rgba(0, 242, 254, 0.7) ; | |
| box-shadow: 0 12px 40px rgba(0, 242, 254, 0.25) ; | |
| } | |
| @keyframes pulse-cyan-glow { | |
| 0%, | |
| 100% { | |
| border-color: rgba(0, 242, 254, 0.4); | |
| box-shadow: 0 8px 32px rgba(0, 242, 254, 0.1); | |
| } | |
| 50% { | |
| border-color: rgba(0, 242, 254, 0.8); | |
| box-shadow: 0 8px 40px rgba(0, 242, 254, 0.25); | |
| } | |
| } | |
| .lifetime-deal-card { | |
| animation: pulse-cyan-glow 3s infinite ease-in-out; | |
| } | |
| @keyframes slide-right-infinite { | |
| 0% { | |
| opacity: 0.7; | |
| } | |
| 50% { | |
| opacity: 1; | |
| transform: scale(1.03); | |
| } | |
| 100% { | |
| opacity: 0.7; | |
| } | |
| } | |
| .offer-countdown { | |
| animation: slide-right-infinite 2s infinite ease-in-out; | |
| } | |
| /* Full Page Upgrade Pricing Styles */ | |
| .upgrade-page-container { | |
| animation: fadeIn 0.4s ease-out; | |
| } | |
| .back-dashboard-btn:hover { | |
| background: rgba(255, 255, 255, 0.06) ; | |
| border-color: rgba(255, 255, 255, 0.2) ; | |
| color: var(--neon-cyan) ; | |
| } | |
| .pricing-full-card { | |
| transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1) ; | |
| background: rgba(13, 16, 27, 0.45) ; | |
| border: 1px solid rgba(255, 255, 255, 0.05) ; | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3) ; | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| } | |
| .pricing-full-card:hover { | |
| transform: translateY(-8px) ; | |
| background: rgba(13, 16, 27, 0.6) ; | |
| border-color: rgba(255, 255, 255, 0.25) ; | |
| box-shadow: 0 24px 48px rgba(0, 0, 0, 0.5) ; | |
| } | |
| .pricing-full-card.free-tier-card:hover { | |
| border-color: rgba(255, 255, 255, 0.2) ; | |
| box-shadow: 0 24px 48px rgba(255, 255, 255, 0.03) ; | |
| } | |
| .pricing-full-card.analyst-tier-card:hover { | |
| border-color: rgba(0, 242, 254, 0.5) ; | |
| box-shadow: 0 24px 48px rgba(0, 242, 254, 0.15) ; | |
| } | |
| .pricing-full-card.trader-tier-card:hover { | |
| border-color: rgba(161, 84, 255, 0.5) ; | |
| box-shadow: 0 24px 48px rgba(161, 84, 255, 0.15) ; | |
| } | |
| .pricing-full-card.hot-deal-card { | |
| background: rgba(0, 242, 254, 0.02) ; | |
| border-color: rgba(0, 242, 254, 0.3) ; | |
| box-shadow: 0 8px 32px rgba(0, 242, 254, 0.05) ; | |
| } | |
| .pricing-full-card.hot-deal-card:hover { | |
| background: rgba(0, 242, 254, 0.05) ; | |
| border-color: rgba(0, 242, 254, 0.7) ; | |
| box-shadow: 0 24px 50px rgba(0, 242, 254, 0.25) ; | |
| } | |
| /* Toast Notification System Styles */ | |
| .toast-container { | |
| position: fixed; | |
| top: 24px; | |
| right: 24px; | |
| z-index: 9999; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| pointer-events: none; | |
| } | |
| .toast-notification { | |
| pointer-events: auto; | |
| min-width: 320px; | |
| max-width: 420px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 14px; | |
| padding: 14px 18px; | |
| border-radius: 12px; | |
| font-family: inherit; | |
| box-shadow: 0 12px 36px rgba(0, 0, 0, 0.5); | |
| animation: slide-in-toast 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| backdrop-filter: blur(16px); | |
| -webkit-backdrop-filter: blur(16px); | |
| } | |
| .toast-success { | |
| background: rgba(16, 185, 129, 0.08); | |
| border: 1px solid rgba(16, 185, 129, 0.3); | |
| color: #10b981; | |
| } | |
| .toast-alert { | |
| background: rgba(239, 68, 68, 0.08); | |
| border: 1px solid rgba(239, 68, 68, 0.3); | |
| color: #ef4444; | |
| animation: | |
| slide-in-toast 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards, | |
| shake-toast 0.4s ease-in-out 0.3s; | |
| } | |
| @keyframes slide-in-toast { | |
| from { | |
| transform: translateX(120%) scale(0.9); | |
| opacity: 0; | |
| } | |
| to { | |
| transform: translateX(0) scale(1); | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes shake-toast { | |
| 0%, | |
| 100% { | |
| transform: translateX(0); | |
| } | |
| 25% { | |
| transform: translateX(-4px); | |
| } | |
| 75% { | |
| transform: translateX(4px); | |
| } | |
| } | |
| /* Indicators Controls Styles */ | |
| .control-toggle-btn { | |
| background: none; | |
| border: 1px solid var(--border-glass) ; | |
| color: var(--text-secondary); | |
| border-radius: 6px; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 12px; | |
| transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1); | |
| outline: none; | |
| } | |
| .control-toggle-btn:hover { | |
| background: rgba(255, 255, 255, 0.03) ; | |
| border-color: rgba(255, 255, 255, 0.1) ; | |
| color: var(--text-primary) ; | |
| } | |
| .control-toggle-btn.active:hover { | |
| opacity: 0.9; | |
| } | |
| /* Remove default focus outline/border on chart clicks */ | |
| .recharts-wrapper:focus, | |
| .recharts-wrapper *:focus, | |
| .recharts-surface:focus, | |
| .recharts-surface *:focus { | |
| outline: none ; | |
| box-shadow: none ; | |
| } | |
| /* Custom premium styling for native select dropdowns */ | |
| .premium-select { | |
| appearance: none ; | |
| -webkit-appearance: none ; | |
| -moz-appearance: none ; | |
| background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") ; | |
| background-repeat: no-repeat ; | |
| background-position: right 14px center ; | |
| background-size: 16px ; | |
| padding-right: 36px ; | |
| transition: all 0.2s ease-in-out ; | |
| } | |
| .premium-select option { | |
| background-color: #0d101a ; | |
| color: #ffffff ; | |
| padding: 12px 14px ; | |
| } | |
| .premium-select:hover { | |
| background-color: rgba(255, 255, 255, 0.04) ; | |
| border-color: rgba(255, 255, 255, 0.15) ; | |
| } | |
| .premium-select:focus { | |
| border-color: rgba(0, 242, 254, 0.35) ; | |
| box-shadow: 0 0 0 2px rgba(0, 242, 254, 0.08) ; | |
| } | |
| .glass-dropdown-item:hover { | |
| background: rgba(255, 255, 255, 0.05) ; | |
| color: var(--neon-cyan) ; | |
| } | |
| /* Custom Scrollbars for Webkit browsers (Chrome, Safari, Edge) */ | |
| ::-webkit-scrollbar { | |
| width: 6px ; | |
| height: 6px ; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: transparent ; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: rgba(255, 255, 255, 0.1) ; | |
| border-radius: 10px ; | |
| border: 1px solid transparent ; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: rgba(255, 255, 255, 0.2) ; | |
| } | |
| /* Style number input spin buttons (up/down arrows) to fit premium dark theme */ | |
| input::-webkit-outer-spin-button, | |
| input::-webkit-inner-spin-button { | |
| -webkit-appearance: inner-spin-button ; | |
| display: block ; | |
| filter: invert(1) brightness(0.85) ; | |
| opacity: 0 ; /* Hidden by default */ | |
| cursor: pointer ; | |
| transition: opacity 0.2s ease-in-out ; | |
| background: transparent ; | |
| } | |
| /* Reveal arrows when the input field is hovered */ | |
| input[type="number"]:hover::-webkit-outer-spin-button, | |
| input[type="number"]:hover::-webkit-inner-spin-button { | |
| opacity: 0.7 ; | |
| } | |
| /* Highlight arrows when directly hovered */ | |
| input::-webkit-outer-spin-button:hover, | |
| input::-webkit-inner-spin-button:hover { | |
| opacity: 1 ; | |
| filter: invert(1) brightness(1.1) ; | |
| } | |
| input[type="number"] { | |
| -moz-appearance: number-input ; | |
| } | |
| /* GenZ Trending Hub Card Hover Glow Effects */ | |
| .genz-trend-card:hover { | |
| transform: translateY(-4px) ; | |
| border-color: rgba(0, 242, 254, 0.4) ; | |
| box-shadow: 0 12px 30px rgba(0, 242, 254, 0.08) ; | |
| background: rgba(13, 16, 27, 0.75) ; | |
| } | |
| .genz-news-card:hover { | |
| transform: translateY(-2px) ; | |
| border-color: rgba(161, 84, 255, 0.4) ; | |
| box-shadow: 0 12px 30px rgba(161, 84, 255, 0.06) ; | |
| background: rgba(13, 16, 27, 0.65) ; | |
| } | |
| /* Custom Glassmorphic Dropdown Styling */ | |
| .glass-dropdown-container { | |
| position: relative; | |
| width: 100%; | |
| } | |
| .glass-dropdown-trigger { | |
| width: 100%; | |
| background: rgba(255, 255, 255, 0.04) ; | |
| border: 1px solid var(--border-glass) ; | |
| border-radius: 8px ; | |
| color: var(--text-primary) ; | |
| padding: 8px 12px ; | |
| font-size: 13px ; | |
| display: flex ; | |
| justify-content: space-between ; | |
| align-items: center ; | |
| cursor: pointer ; | |
| outline: none ; | |
| transition: all 0.2s ease-in-out ; | |
| } | |
| .glass-dropdown-trigger:hover { | |
| background: rgba(255, 255, 255, 0.08) ; | |
| border-color: rgba(255, 255, 255, 0.2) ; | |
| } | |
| .glass-dropdown-trigger .arrow-icon { | |
| transition: transform 0.25s ease ; | |
| color: #94a3b8 ; | |
| } | |
| .glass-dropdown-trigger .arrow-icon.open { | |
| transform: rotate(180deg) ; | |
| color: var(--neon-cyan) ; | |
| } | |
| .glass-dropdown-menu { | |
| position: absolute ; | |
| top: calc(100% + 6px) ; | |
| left: 0 ; | |
| width: 100% ; | |
| background: rgba(13, 16, 26, 0.95) ; | |
| backdrop-filter: blur(20px) ; | |
| -webkit-backdrop-filter: blur(20px) ; | |
| border: 1px solid var(--border-glass) ; | |
| border-radius: 8px ; | |
| box-shadow: 0 10px 40px rgba(0, 0, 0, 0.65) ; | |
| z-index: 1000 ; | |
| overflow: hidden ; | |
| animation: dropdownSlideDown 0.2s cubic-bezier(0.16, 1, 0.3, 1) ; | |
| } | |
| .glass-dropdown-item { | |
| padding: 10px 12px ; | |
| font-size: 13px ; | |
| color: var(--text-muted) ; | |
| cursor: pointer ; | |
| transition: all 0.15s ease ; | |
| text-align: left ; | |
| } | |
| .glass-dropdown-item:hover { | |
| background: rgba(0, 242, 254, 0.08) ; | |
| color: var(--neon-cyan) ; | |
| } | |
| @keyframes dropdownSlideDown { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-6px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* ========================================== | |
| 3D BOOK STACK & PARCHMENT WIDGET STYLES | |
| ========================================== */ | |
| /* βββ Wrapper & Perspective βββββββββββββββββββ */ | |
| .book-stack-wrapper { | |
| position: relative; | |
| width: 380px; | |
| height: 350px; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| perspective: 1400px; | |
| user-select: none; | |
| } | |
| /* Ambient glow overlay blending stack with video behind it */ | |
| .book-stack-wrapper::before { | |
| content: ""; | |
| position: absolute; | |
| width: 320px; | |
| height: 320px; | |
| border-radius: 50%; | |
| background: radial-gradient( | |
| circle, | |
| rgba(14, 165, 233, 0.12) 0%, | |
| rgba(99, 102, 241, 0.08) 40%, | |
| rgba(245, 158, 11, 0.03) 70%, | |
| transparent 100% | |
| ); | |
| filter: blur(40px); | |
| pointer-events: none; | |
| z-index: 0; | |
| transform: translateZ(-20px); | |
| } | |
| .book-stack-wrapper::after { | |
| content: ""; | |
| position: absolute; | |
| width: 240px; | |
| height: 100px; | |
| bottom: 30px; | |
| background: radial-gradient( | |
| ellipse, | |
| rgba(245, 158, 11, 0.08) 0%, | |
| transparent 80% | |
| ); | |
| filter: blur(25px); | |
| pointer-events: none; | |
| z-index: 0; | |
| transform: rotateX(60deg) translateZ(-10px); | |
| } | |
| /* βββ The pile container tilted in 3D βββββββ */ | |
| .book-pile { | |
| position: relative; | |
| width: 250px; | |
| height: 190px; | |
| transform-style: preserve-3d; | |
| /* Cinematic tilt angle showing covers and page blocks clearly */ | |
| transform: rotateX(46deg) rotateY(-6deg) rotateZ(-16deg); | |
| transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| .book-stack-wrapper:hover .book-pile { | |
| transform: rotateX(38deg) rotateY(-4deg) rotateZ(-8deg) translateY(-10px); | |
| } | |
| /* βββ Volumetric 3D Book Container βββββββββββ */ | |
| .book-3d { | |
| position: absolute; | |
| width: var(--book-width, 240px); | |
| height: var(--book-height, 180px); | |
| transform-style: preserve-3d; | |
| transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| /* βββ Per-book thickness variable & Z-positions β | |
| Each book sits directly on top of the one below. | |
| Z-offset = sum of thicknesses of all books below. | |
| ββββββββββββββββββββββββββββββββββββββββββββββββ */ | |
| .book-3d.book-bottom { | |
| --t: 46px; | |
| transform: translateZ(0px); | |
| } | |
| .book-3d.book-4 { | |
| --t: 42px; | |
| transform: translateZ(46px) translateX(-3px); | |
| } | |
| .book-3d.book-3 { | |
| --t: 44px; | |
| transform: translateZ(88px) translateX(3px); | |
| } | |
| .book-3d.book-2 { | |
| --t: 44px; | |
| transform: translateZ(132px) translateX(-2px); | |
| } | |
| .book-3d.book-top { | |
| --t: 42px; | |
| transform: translateZ(176px); | |
| } | |
| /* βββ Hover: fan books out slightly ββββββββββββ */ | |
| .book-stack-wrapper:hover .book-3d.book-bottom { | |
| transform: translateZ(0px) translateX(-6px); | |
| } | |
| .book-stack-wrapper:hover .book-3d.book-4 { | |
| transform: translateZ(46px) translateX(-12px) translateY(2px); | |
| } | |
| .book-stack-wrapper:hover .book-3d.book-3 { | |
| transform: translateZ(88px) translateX(6px) translateY(4px); | |
| } | |
| .book-stack-wrapper:hover .book-3d.book-2 { | |
| transform: translateZ(132px) translateX(-4px) translateY(-2px); | |
| } | |
| .book-stack-wrapper:hover .book-3d.book-top { | |
| transform: translateZ(176px) translateX(-2px) translateY(-10px); | |
| } | |
| /* βββ Top book flies open on click βββββββββββ */ | |
| .book-3d.book-top.is-opening { | |
| animation: bookFlyOpen3D 0.75s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| } | |
| /* βββ Book Faces βββββββββββββββββββββββββββββ | |
| All faces use --t (thickness) variable set | |
| per book class above. This ensures each face | |
| is pixel-perfectly aligned to its covers. | |
| βββββββββββββββββββββββββββββββββββββββββββ */ | |
| /* Back cover (Z = 0, faces away from viewer) */ | |
| .book-face-bottom { | |
| position: absolute; | |
| inset: 0; | |
| background: var(--cover-gradient); | |
| border-radius: 3px 6px 6px 3px; | |
| transform: translateZ(0); | |
| } | |
| /* Front cover (Z = T, faces viewer) */ | |
| .book-face-top { | |
| position: absolute; | |
| inset: 0; | |
| background: var(--cover-gradient); | |
| border-radius: 3px 6px 6px 3px; | |
| box-shadow: | |
| inset 0 0 30px rgba(0, 0, 0, 0.45), | |
| inset 4px 0 10px rgba(255, 255, 255, 0.06), | |
| /* Soft cosmic ambient highlight + warm gold light reflection overlay */ | |
| inset 0 15px 30px rgba(14, 165, 233, 0.08), | |
| inset 0 -20px 40px rgba(251, 191, 36, 0.09); | |
| transform: translateZ(var(--t, 36px)); | |
| } | |
| /* Gold ornamental inner border on top cover */ | |
| .book-face-top::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 7px; | |
| border: 1px solid rgba(191, 149, 63, 0.28); | |
| border-radius: 2px; | |
| pointer-events: none; | |
| } | |
| /* Left spine | |
| rotateY(-90deg) with pivot at left edge: | |
| right edge of face (at X=T) β moves to Z=T | |
| Creates the left wall of the book. β */ | |
| .book-face-spine { | |
| position: absolute; | |
| width: var(--t, 36px); | |
| height: 100%; | |
| left: 0; | |
| top: 0; | |
| transform-origin: left center; | |
| transform: rotateY(-90deg); | |
| background: var(--spine-gradient); | |
| box-shadow: | |
| inset -4px 0 16px rgba(0, 0, 0, 0.75), | |
| inset 2px 0 6px rgba(255, 255, 255, 0.05); | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: space-around; | |
| align-items: center; | |
| overflow: hidden; | |
| } | |
| /* Right page edges | |
| rotateY(90deg) with pivot at right edge: | |
| left edge of face (at X=0) β moves to Z=T | |
| Creates the right wall (fore-edge pages). β */ | |
| .book-face-right-pages { | |
| position: absolute; | |
| width: var(--t, 36px); | |
| height: calc(100% - 8px); | |
| right: 4px; | |
| top: 4px; | |
| transform-origin: right center; | |
| transform: rotateY(90deg); | |
| background-color: #f4ebd7; /* Solid fallback to prevent transparency gaps */ | |
| background: | |
| /* Warm gold ambient highlight blend + deep ambient shading */ | |
| linear-gradient( | |
| to right, | |
| rgba(251, 191, 36, 0.15) 0%, | |
| transparent 40%, | |
| rgba(0, 0, 0, 0.2) 100% | |
| ), | |
| repeating-linear-gradient( | |
| to bottom, | |
| #f5e9d3 0px, | |
| #f5e9d3 1px, | |
| #d4c39e 2px, | |
| #e8dbbe 3px, | |
| #f5e9d3 4px | |
| ); | |
| box-shadow: inset 4px 0 10px rgba(0, 0, 0, 0.3); | |
| } | |
| /* Bottom / fore-edge page block | |
| rotateX(-90deg) with pivot at bottom edge: | |
| top edge of face moves to Z=T (front cover level) | |
| Creates the bottom wall showing page thickness. β */ | |
| .book-face-front-pages { | |
| position: absolute; | |
| width: calc(100% - 8px); | |
| height: var(--t, 36px); | |
| left: 4px; | |
| bottom: 4px; | |
| transform-origin: bottom center; | |
| transform: rotateX(-90deg); | |
| background-color: #f4ebd7; /* Solid fallback */ | |
| background: | |
| /* Warm gold reflection overlay + deep ambient shading */ | |
| linear-gradient( | |
| to bottom, | |
| rgba(251, 191, 36, 0.15) 0%, | |
| transparent 40%, | |
| rgba(0, 0, 0, 0.2) 100% | |
| ), | |
| repeating-linear-gradient( | |
| to right, | |
| #f5e9d3 0px, | |
| #f5e9d3 1px, | |
| #d4c39e 2px, | |
| #e8dbbe 3px, | |
| #f5e9d3 4px | |
| ); | |
| box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.25); | |
| } | |
| /* βββ Spine Decoration ββββββββββββββββββββββββ */ | |
| .book-spine-ridges { | |
| position: absolute; | |
| inset: 0; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: space-between; | |
| padding: 12px 0; | |
| pointer-events: none; | |
| } | |
| .book-spine-ridge { | |
| width: 100%; | |
| height: 3px; | |
| background: rgba(0, 0, 0, 0.45); | |
| border-top: 1px solid rgba(191, 149, 63, 0.5); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); | |
| } | |
| .book-spine-text { | |
| font-family: "EB Garamond", serif; | |
| font-size: 10px; | |
| font-weight: 700; | |
| letter-spacing: 2.5px; | |
| text-transform: uppercase; | |
| color: #fcebc4; | |
| text-shadow: 0 1px 4px rgba(0, 0, 0, 0.95); | |
| white-space: nowrap; | |
| transform: rotate(90deg); | |
| transform-origin: center; | |
| z-index: 2; | |
| } | |
| .book-spine-star { | |
| font-size: 8px; | |
| color: #bf953f; | |
| text-shadow: 0 0 6px rgba(191, 149, 63, 0.7); | |
| z-index: 2; | |
| } | |
| /* βββ 3D Opening Keyframe ββββββββββββββββββββββ */ | |
| @keyframes bookFlyOpen3D { | |
| 0% { | |
| transform: translateZ(144px) rotateX(0deg) rotateZ(0deg); | |
| opacity: 1; | |
| } | |
| 40% { | |
| transform: translateZ(280px) rotateX(-25deg) rotateZ(-10deg) | |
| translateY(-30px); | |
| opacity: 1; | |
| } | |
| 70% { | |
| transform: translateZ(420px) rotateX(-55deg) rotateZ(5deg) translateY(-80px) | |
| scale(1.05); | |
| opacity: 0.8; | |
| } | |
| 100% { | |
| transform: translateZ(560px) rotateX(-90deg) translateY(-160px) scale(1.2); | |
| opacity: 0; | |
| } | |
| } | |
| /* βββ 2. Parchment Open Book Overlay ββββββββ */ | |
| .book-overlay-backdrop { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: rgba(5, 6, 10, 0.88); | |
| backdrop-filter: blur(18px); | |
| -webkit-backdrop-filter: blur(18px); | |
| z-index: 1000; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 20px; | |
| animation: backdropFadeIn 0.35s ease forwards; | |
| } | |
| .book-reader-container { | |
| position: relative; | |
| width: 1050px; | |
| max-width: 95%; | |
| height: 680px; | |
| max-height: 90vh; | |
| background: linear-gradient(135deg, #1e0e06 0%, #2d1810 40%, #1a0d08 100%); | |
| border-radius: 6px 14px 14px 6px; | |
| box-shadow: | |
| 0 40px 80px rgba(0, 0, 0, 0.9), | |
| 0 0 0 1px #0d0705, | |
| inset 0 1px 0 rgba(255, 255, 255, 0.06); | |
| border: none; | |
| display: flex; | |
| padding: 18px 18px 18px 10px; | |
| animation: bookReaderAppear 0.55s cubic-bezier(0.16, 1, 0.3, 1) forwards; | |
| } | |
| /* Left leather spine binding */ | |
| .book-reader-container::before { | |
| content: ""; | |
| position: absolute; | |
| left: 0; | |
| top: 0; | |
| width: 28px; | |
| height: 100%; | |
| background: linear-gradient(90deg, #0d0705 0%, #2a1409 60%, #1a0d08 100%); | |
| border-radius: 6px 0 0 6px; | |
| box-shadow: | |
| inset -3px 0 8px rgba(0, 0, 0, 0.5), | |
| inset 2px 0 4px rgba(255, 255, 255, 0.04); | |
| } | |
| /* Binding stitches */ | |
| .book-reader-container::after { | |
| content: ""; | |
| position: absolute; | |
| left: 11px; | |
| top: 30px; | |
| bottom: 30px; | |
| width: 3px; | |
| background: repeating-linear-gradient( | |
| 180deg, | |
| rgba(180, 130, 80, 0.35) 0px, | |
| rgba(180, 130, 80, 0.35) 8px, | |
| transparent 8px, | |
| transparent 14px | |
| ); | |
| border-radius: 2px; | |
| } | |
| /* βββ Pages Spread (Inside the Book) βββββββ */ | |
| .book-pages-spread { | |
| flex: 1; | |
| background: radial-gradient( | |
| ellipse at 30% 20%, | |
| #f8f0dd 0%, | |
| #f0e5c5 45%, | |
| #e5d4a8 80%, | |
| #d9c48e 100% | |
| ); | |
| border-radius: 2px 6px 6px 2px; | |
| display: flex; | |
| position: relative; | |
| box-shadow: | |
| inset 0 0 40px rgba(0, 0, 0, 0.08), | |
| 0 0 0 1px rgba(0, 0, 0, 0.2); | |
| overflow: visible; | |
| } | |
| /* Centre gutter shadow (spine crease) */ | |
| .book-pages-spread::after { | |
| content: ""; | |
| position: absolute; | |
| left: 50%; | |
| top: 0; | |
| width: 48px; | |
| height: 100%; | |
| transform: translateX(-50%); | |
| background: linear-gradient( | |
| 90deg, | |
| transparent 0%, | |
| rgba(0, 0, 0, 0.18) 30%, | |
| rgba(0, 0, 0, 0.45) 50%, | |
| rgba(0, 0, 0, 0.18) 70%, | |
| transparent 100% | |
| ); | |
| z-index: 5; | |
| pointer-events: none; | |
| } | |
| /* βββ Torn Edge Pages βββββββββββββββββββββββ */ | |
| .parchment-page-half { | |
| flex: 1; | |
| padding: 42px 48px 70px; | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| overflow-y: auto; | |
| overflow-x: hidden; | |
| font-family: "EB Garamond", serif; | |
| color: #1a1208; | |
| z-index: 2; | |
| } | |
| /* LEFT page β torn on right edge */ | |
| .parchment-page-half.left-page { | |
| clip-path: polygon( | |
| 0% 0%, | |
| 98% 0%, | |
| 100% 1.2%, | |
| 97% 2.5%, | |
| 99.5% 4%, | |
| 98% 5.8%, | |
| 100% 7.5%, | |
| 97.5% 9.2%, | |
| 99% 11%, | |
| 97% 12.8%, | |
| 100% 14.5%, | |
| 98% 16.2%, | |
| 99.5% 18%, | |
| 97% 19.8%, | |
| 100% 21.5%, | |
| 98.5% 23.2%, | |
| 99% 25%, | |
| 97.5% 26.8%, | |
| 100% 28.5%, | |
| 98% 30.2%, | |
| 99.5% 32%, | |
| 97% 33.8%, | |
| 100% 35.5%, | |
| 98.5% 37.2%, | |
| 99% 39%, | |
| 97.5% 40.8%, | |
| 100% 42.5%, | |
| 98% 44.2%, | |
| 99.5% 46%, | |
| 97% 47.8%, | |
| 100% 49.5%, | |
| 98.5% 51.2%, | |
| 99% 53%, | |
| 97.5% 54.8%, | |
| 100% 56.5%, | |
| 98% 58.2%, | |
| 99.5% 60%, | |
| 97% 61.8%, | |
| 100% 63.5%, | |
| 98.5% 65.2%, | |
| 99% 67%, | |
| 97.5% 68.8%, | |
| 100% 70.5%, | |
| 98% 72.2%, | |
| 99.5% 74%, | |
| 97% 75.8%, | |
| 100% 77.5%, | |
| 98.5% 79.2%, | |
| 99% 81%, | |
| 97.5% 82.8%, | |
| 100% 84.5%, | |
| 98% 86.2%, | |
| 99.5% 88%, | |
| 97% 89.8%, | |
| 100% 91.5%, | |
| 98.5% 93.2%, | |
| 99% 95%, | |
| 97.5% 96.8%, | |
| 100% 98.5%, | |
| 98% 100%, | |
| 0% 100% | |
| ); | |
| box-shadow: inset -20px 0 30px rgba(0, 0, 0, 0.07); | |
| } | |
| /* RIGHT page β torn on left edge */ | |
| .parchment-page-half.right-page { | |
| clip-path: polygon( | |
| 0% 0%, | |
| 2% 1.2%, | |
| 0.5% 2.5%, | |
| 3% 4%, | |
| 0.5% 5.8%, | |
| 2.5% 7.5%, | |
| 0% 9.2%, | |
| 2.5% 11%, | |
| 1% 12.8%, | |
| 3% 14.5%, | |
| 0.5% 16.2%, | |
| 2% 18%, | |
| 0.5% 19.8%, | |
| 3% 21.5%, | |
| 0.5% 23.2%, | |
| 2% 25%, | |
| 0% 26.8%, | |
| 2.5% 28.5%, | |
| 0.5% 30.2%, | |
| 2% 32%, | |
| 0.5% 33.8%, | |
| 3% 35.5%, | |
| 0.5% 37.2%, | |
| 2% 39%, | |
| 0% 40.8%, | |
| 2.5% 42.5%, | |
| 0.5% 44.2%, | |
| 2% 46%, | |
| 0.5% 47.8%, | |
| 3% 49.5%, | |
| 0.5% 51.2%, | |
| 2% 53%, | |
| 0% 54.8%, | |
| 2.5% 56.5%, | |
| 0.5% 58.2%, | |
| 2% 60%, | |
| 0.5% 61.8%, | |
| 3% 63.5%, | |
| 0.5% 65.2%, | |
| 2% 67%, | |
| 0% 68.8%, | |
| 2.5% 70.5%, | |
| 0.5% 72.2%, | |
| 2% 74%, | |
| 0.5% 75.8%, | |
| 3% 77.5%, | |
| 0.5% 79.2%, | |
| 2% 81%, | |
| 0% 82.8%, | |
| 2.5% 84.5%, | |
| 0.5% 86.2%, | |
| 2% 88%, | |
| 0.5% 89.8%, | |
| 3% 91.5%, | |
| 0.5% 93.2%, | |
| 2% 95%, | |
| 0% 96.8%, | |
| 2% 98.5%, | |
| 0.5% 100%, | |
| 100% 100%, | |
| 100% 0% | |
| ); | |
| box-shadow: inset 20px 0 30px rgba(0, 0, 0, 0.07); | |
| } | |
| /* Aged stain marks on pages */ | |
| .parchment-page-half::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| background: | |
| radial-gradient( | |
| ellipse 60px 50px at 15% 85%, | |
| rgba(139, 90, 40, 0.06) 0%, | |
| transparent 70% | |
| ), | |
| radial-gradient( | |
| ellipse 40px 35px at 88% 12%, | |
| rgba(139, 90, 40, 0.05) 0%, | |
| transparent 70% | |
| ), | |
| radial-gradient( | |
| ellipse 80px 60px at 70% 75%, | |
| rgba(139, 90, 40, 0.04) 0%, | |
| transparent 70% | |
| ); | |
| pointer-events: none; | |
| z-index: 0; | |
| } | |
| /* Custom Scrollbar */ | |
| .parchment-page-half::-webkit-scrollbar { | |
| width: 5px; | |
| } | |
| .parchment-page-half::-webkit-scrollbar-track { | |
| background: rgba(0, 0, 0, 0.04); | |
| } | |
| .parchment-page-half::-webkit-scrollbar-thumb { | |
| background: rgba(120, 80, 40, 0.25); | |
| border-radius: 3px; | |
| } | |
| /* βββ Ink Typography ββββββββββββββββββββββββ */ | |
| .ink-heading { | |
| font-size: 30px; | |
| font-weight: 500; | |
| font-style: italic; | |
| color: #0e0a04; | |
| margin-bottom: 20px; | |
| border-bottom: 1px solid rgba(90, 60, 20, 0.2); | |
| padding-bottom: 12px; | |
| letter-spacing: -0.3px; | |
| text-shadow: 0.5px 0.5px 0px rgba(0, 0, 0, 0.08); | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .ink-subheading { | |
| font-size: 19px; | |
| font-weight: 600; | |
| color: #0e0a04; | |
| margin-top: 12px; | |
| margin-bottom: 10px; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .ink-paragraph { | |
| font-size: 15.5px; | |
| line-height: 1.65; | |
| color: #2a200e; | |
| margin-bottom: 16px; | |
| text-align: justify; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .ink-bullet-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| margin-bottom: 20px; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .ink-bullet-item { | |
| display: flex; | |
| gap: 10px; | |
| font-size: 14.5px; | |
| line-height: 1.5; | |
| color: #2a200e; | |
| } | |
| .ink-bullet-bullet { | |
| color: #7a1515; | |
| font-weight: bold; | |
| flex-shrink: 0; | |
| margin-top: 1px; | |
| } | |
| /* βββ Sketched Node Map (Page 3) ββββββββββββ */ | |
| .blueprint-container { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| align-items: center; | |
| position: relative; | |
| width: 100%; | |
| z-index: 1; | |
| } | |
| .blueprint-grid-nodes { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 22px; | |
| width: 100%; | |
| align-items: center; | |
| } | |
| .blueprint-row { | |
| display: flex; | |
| justify-content: space-around; | |
| width: 100%; | |
| position: relative; | |
| z-index: 2; | |
| } | |
| .sketch-node-circle { | |
| width: 62px; | |
| height: 62px; | |
| border: 2px solid #1e3a52; | |
| border-radius: 48% 52% 51% 49% / 50% 53% 47% 50%; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| background: rgba(248, 240, 218, 0.85); | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| position: relative; | |
| box-shadow: 2px 3px 8px rgba(0, 0, 0, 0.12); | |
| } | |
| .sketch-node-circle:hover { | |
| transform: scale(1.1) rotate(3deg); | |
| border-color: #7a1515; | |
| box-shadow: 3px 6px 14px rgba(122, 21, 21, 0.18); | |
| } | |
| .sketch-node-label { | |
| font-size: 9px; | |
| font-weight: bold; | |
| text-transform: uppercase; | |
| color: #1e3a52; | |
| letter-spacing: 0.5px; | |
| margin-top: 2px; | |
| text-align: center; | |
| } | |
| .sketch-node-circle:hover .sketch-node-label { | |
| color: #7a1515; | |
| } | |
| .sketch-node-desc-bubble { | |
| position: absolute; | |
| top: 70px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| width: 170px; | |
| background: #fdfaf0; | |
| border: 1px solid #c4a87a; | |
| padding: 9px 11px; | |
| border-radius: 4px; | |
| font-size: 11.5px; | |
| line-height: 1.4; | |
| color: #2a200e; | |
| z-index: 20; | |
| box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18); | |
| pointer-events: none; | |
| animation: tooltipFadeIn 0.2s ease forwards; | |
| font-family: "EB Garamond", serif; | |
| } | |
| /* βββ Contact Form (Page 4) ββββββ */ | |
| .ink-form { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 14px; | |
| width: 100%; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .ink-form-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| } | |
| .ink-form-label { | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: #0e0a04; | |
| letter-spacing: 0.5px; | |
| } | |
| .ink-form-input { | |
| background: transparent; | |
| border: none; | |
| border-bottom: 1.5px solid #7a6040; | |
| padding: 7px 4px; | |
| font-family: "EB Garamond", serif; | |
| font-size: 15px; | |
| color: #0e0a04; | |
| outline: none; | |
| width: 100%; | |
| transition: border-color 0.2s ease; | |
| } | |
| .ink-form-input:focus { | |
| border-bottom-color: #7a1515; | |
| } | |
| .ink-form-textarea { | |
| background: rgba(255, 255, 255, 0.18); | |
| border: 1.5px solid #7a6040; | |
| border-radius: 3px; | |
| padding: 9px; | |
| font-family: "EB Garamond", serif; | |
| font-size: 15px; | |
| color: #0e0a04; | |
| outline: none; | |
| resize: none; | |
| min-height: 90px; | |
| transition: border-color 0.2s ease; | |
| } | |
| .ink-form-textarea:focus { | |
| border-color: #7a1515; | |
| } | |
| .ink-submit-button { | |
| background: linear-gradient(135deg, #7a1515 0%, #5c0f0f 100%); | |
| color: #fdf8ee; | |
| border: none; | |
| border-radius: 3px; | |
| padding: 11px; | |
| font-family: "EB Garamond", serif; | |
| font-size: 16px; | |
| font-weight: bold; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| margin-top: 8px; | |
| letter-spacing: 0.5px; | |
| box-shadow: 0 3px 10px rgba(122, 21, 21, 0.3); | |
| } | |
| .ink-submit-button:hover { | |
| background: linear-gradient(135deg, #5c0f0f 0%, #3d0a0a 100%); | |
| } | |
| .ink-socials-grid { | |
| display: flex; | |
| gap: 12px; | |
| margin-top: 16px; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .ink-social-btn { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 7px; | |
| padding: 9px; | |
| border: 1px solid #7a6040; | |
| border-radius: 3px; | |
| font-family: "EB Garamond", serif; | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: #2a200e; | |
| transition: all 0.2s ease; | |
| text-decoration: none; | |
| } | |
| .ink-social-btn:hover { | |
| border-color: #7a1515; | |
| color: #7a1515; | |
| background: rgba(122, 21, 21, 0.04); | |
| } | |
| /* βββ Navigation Buttons βββββββββββββββββββββ */ | |
| .book-close-x { | |
| position: absolute; | |
| top: 18px; | |
| right: 22px; | |
| background: rgba(0, 0, 0, 0.45); | |
| border: 1px solid rgba(255, 255, 255, 0.15); | |
| border-radius: 50%; | |
| width: 32px; | |
| height: 32px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: rgba(255, 255, 255, 0.7); | |
| cursor: pointer; | |
| z-index: 200; | |
| transition: all 0.2s ease; | |
| } | |
| .book-close-x:hover { | |
| background: #7a1515; | |
| border-color: #9a1a1a; | |
| color: white; | |
| transform: rotate(90deg); | |
| } | |
| .book-page-turn-btn { | |
| position: absolute; | |
| bottom: 22px; | |
| display: flex; | |
| align-items: center; | |
| gap: 7px; | |
| background: transparent; | |
| border: none; | |
| font-family: "EB Garamond", serif; | |
| font-size: 15px; | |
| font-weight: bold; | |
| color: #7a1515; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| letter-spacing: 0.3px; | |
| z-index: 10; | |
| } | |
| .book-page-turn-btn.prev-btn { | |
| left: 44px; | |
| } | |
| .book-page-turn-btn.prev-btn:hover { | |
| transform: translateX(-4px); | |
| } | |
| .book-page-turn-btn.next-btn { | |
| right: 44px; | |
| } | |
| .book-page-turn-btn.next-btn:hover { | |
| transform: translateX(4px); | |
| } | |
| .book-page-indicator { | |
| position: absolute; | |
| bottom: 26px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| font-family: "EB Garamond", serif; | |
| font-size: 13px; | |
| color: rgba(42, 32, 14, 0.5); | |
| letter-spacing: 2px; | |
| z-index: 10; | |
| pointer-events: none; | |
| } | |
| .lock-strategy-btn { | |
| position: relative; | |
| background: rgba(0, 255, 157, 0.06); | |
| border: 1px solid rgba(0, 255, 157, 0.4); | |
| border-radius: 10px; | |
| color: #00ff9d; | |
| font-size: 12px; | |
| font-weight: 700; | |
| letter-spacing: 0.02em; | |
| cursor: pointer; | |
| outline: none; | |
| overflow: hidden; | |
| transition: all 0.25s ease; | |
| } | |
| .lock-strategy-btn:hover:not(:disabled) { | |
| background: rgba(0, 255, 157, 0.14); | |
| border-color: #00ff9d; | |
| box-shadow: | |
| 0 0 10px rgba(0, 255, 157, 0.45), | |
| 0 0 24px rgba(0, 255, 157, 0.2), | |
| inset 0 0 8px rgba(0, 255, 157, 0.1); | |
| transform: translateY(-1px); | |
| } | |
| .lock-strategy-btn:active:not(:disabled) { | |
| transform: translateY(0); | |
| } | |
| .lock-strategy-btn:disabled { | |
| opacity: 0.4; | |
| cursor: not-allowed; | |
| border-color: var(--border-glass); | |
| color: var(--text-secondary); | |
| box-shadow: none; | |
| } | |
| /* Subtle animated neon sweep on hover */ | |
| .lock-strategy-btn::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: -75%; | |
| width: 50%; | |
| height: 100%; | |
| background: linear-gradient( | |
| 120deg, | |
| transparent 0%, | |
| rgba(0, 255, 157, 0.35) 50%, | |
| transparent 100% | |
| ); | |
| transform: skewX(-20deg); | |
| transition: left 0.6s ease; | |
| pointer-events: none; | |
| } | |
| .lock-strategy-btn:hover:not(:disabled)::before { | |
| left: 125%; | |
| } | |
| /* Target / Stop Loss number inputs inside the lock-strategy-panel */ | |
| .lock-strategy-panel input[type="number"] { | |
| transition: | |
| border-color 0.2s ease, | |
| box-shadow 0.2s ease; | |
| } | |
| .lock-strategy-panel input[type="number"]:focus { | |
| border-color: var(--neon-cyan); | |
| box-shadow: 0 0 0 2px rgba(0, 242, 254, 0.15); | |
| } | |
| /* Hide native number spinner arrows for a cleaner look (optional) */ | |
| .lock-strategy-panel input[type="number"]::-webkit-outer-spin-button, | |
| .lock-strategy-panel input[type="number"]::-webkit-inner-spin-button { | |
| -webkit-appearance: none; | |
| margin: 0; | |
| } | |
| /* Locked state badge (shown after a successful lockInStrategy call) */ | |
| .lock-strategy-badge { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 6px; | |
| padding: 10px 14px; | |
| font-size: 12px; | |
| font-weight: 700; | |
| letter-spacing: 0.02em; | |
| color: var(--bull-green); | |
| background: rgba(0, 255, 157, 0.12); | |
| border: 1px solid rgba(0, 255, 157, 0.5); | |
| border-radius: 10px; | |
| box-shadow: 0 0 12px rgba(0, 255, 157, 0.3); | |
| animation: lock-badge-pop 0.35s ease; | |
| } | |
| @keyframes lock-badge-pop { | |
| 0% { | |
| transform: scale(0.92); | |
| opacity: 0; | |
| } | |
| 100% { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| } | |
| /* βββ Animations ββββββββββββββββββββββββββββ */ | |
| @keyframes backdropFadeIn { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| @keyframes bookReaderAppear { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.88) translateY(30px) rotate(-2deg); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1) translateY(0) rotate(0deg); | |
| } | |
| } | |
| @keyframes bookFlyOpen { | |
| 0% { | |
| transform: translateY(0) rotate(0deg) scale(1); | |
| opacity: 1; | |
| } | |
| 40% { | |
| transform: translateY(-90px) rotate(-8deg) scale(1.06); | |
| opacity: 1; | |
| } | |
| 70% { | |
| transform: translateY(-120px) rotate(4deg) scale(1.1); | |
| opacity: 0.85; | |
| } | |
| 100% { | |
| transform: translateY(-200px) rotate(0deg) scale(1.2); | |
| opacity: 0; | |
| } | |
| } | |
| @keyframes tooltipFadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translate(-50%, 6px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translate(-50%, 0); | |
| } | |
| } | |