From 1b7c39e11f3edbeb1d760cda57da4537621b1b6b Mon Sep 17 00:00:00 2001 From: Macbook Date: Sun, 31 May 2026 15:30:14 +0900 Subject: [PATCH] =?UTF-8?q?=ED=88=AC=EC=9E=90=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/public/splash-hero.png | Bin 0 -> 63310 bytes frontend/src/components/PaperTradingPage.tsx | 20 +- frontend/src/components/SplashScreen.tsx | 14 +- .../components/paper/PaperAssetTrendChart.tsx | 41 +- .../splash/SplashConceptBackdrop.tsx | 65 +++ .../components/splash/SplashPhoneMockup.tsx | 142 ++++++ frontend/src/styles/paperDashboard.css | 30 +- frontend/src/styles/splashScreen.css | 450 +++++++----------- .../src/styles/virtualTradingDashboard.css | 119 ++++- 9 files changed, 553 insertions(+), 328 deletions(-) create mode 100644 frontend/public/splash-hero.png create mode 100644 frontend/src/components/splash/SplashConceptBackdrop.tsx create mode 100644 frontend/src/components/splash/SplashPhoneMockup.tsx diff --git a/frontend/public/splash-hero.png b/frontend/public/splash-hero.png new file mode 100644 index 0000000000000000000000000000000000000000..8e048b206e0800730970aa2a4e11ad351606d82d GIT binary patch literal 63310 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 G&n#+@{u;_W0)y32tGQvmI!*t` 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 literal 0 HcmV?d00001 diff --git a/frontend/src/components/PaperTradingPage.tsx b/frontend/src/components/PaperTradingPage.tsx index f21db25..f1e7362 100644 --- a/frontend/src/components/PaperTradingPage.tsx +++ b/frontend/src/components/PaperTradingPage.tsx @@ -297,10 +297,10 @@ const PaperTradingPage: React.FC = ({
- - - - + + + +
@@ -375,17 +375,13 @@ const PaperTradingPage: React.FC = ({ ); }; -function MetricCard({ icon, title, value, sub, tone }: { - icon: string; title: string; value: string; sub: string; tone: 'up' | 'down'; +function MetricCard({ label, value, tone }: { + label: string; value: string; tone: 'up' | 'down'; }) { return (
- {icon} -
-
{title}
-
{value}
-
{sub}
-
+ {label} + {value}
); } diff --git a/frontend/src/components/SplashScreen.tsx b/frontend/src/components/SplashScreen.tsx index 894c959..019b1b8 100644 --- a/frontend/src/components/SplashScreen.tsx +++ b/frontend/src/components/SplashScreen.tsx @@ -1,9 +1,9 @@ /** - * μ„œλΉ„μŠ€ μ§„μž… μŠ€ν”Œλž˜μ‹œ β€” κΈ€λž˜μŠ€λͺ¨ν”Όμ¦˜ 둜그인 + * μ„œλΉ„μŠ€ μ§„μž… μŠ€ν”Œλž˜μ‹œ β€” μ°Έμ‘° 컨셉 둜그인 */ import React, { useState } from 'react'; import { loginUser, type LoginResponse } from '../utils/backendApi'; -import SplashGradientBackdrop from './splash/SplashGradientBackdrop'; +import SplashConceptBackdrop from './splash/SplashConceptBackdrop'; import '../styles/splashScreen.css'; const DEFAULT_USERNAME = 'admin'; @@ -37,10 +37,10 @@ const SplashScreen: React.FC = ({ onLoginSuccess, onGuest }) => { return (
- +
-
+

GoldenChart

@@ -51,7 +51,7 @@ const SplashScreen: React.FC = ({ onLoginSuccess, onGuest }) => { value={username} onChange={e => setUsername(e.target.value)} disabled={loading} - placeholder="ID" + aria-label="아이디" /> = ({ onLoginSuccess, onGuest }) => { value={password} onChange={e => setPassword(e.target.value)} disabled={loading} - placeholder="β€’β€’β€’β€’β€’β€’β€’β€’" + aria-label="λΉ„λ°€λ²ˆν˜Έ" /> {error &&

{error}

}
diff --git a/frontend/src/components/paper/PaperAssetTrendChart.tsx b/frontend/src/components/paper/PaperAssetTrendChart.tsx index 7a7f512..6099743 100644 --- a/frontend/src/components/paper/PaperAssetTrendChart.tsx +++ b/frontend/src/components/paper/PaperAssetTrendChart.tsx @@ -2,6 +2,8 @@ import React, { useEffect, useMemo, useState } from 'react'; import { loadPaperDailySnapshots, type PaperDailySnapshotDto } from '../../utils/backendApi'; import { fmtKrw } from '../TradeOrderPanel'; +const EMPTY_HINT = '일별 μŠ€λƒ…μƒ·μ΄ μŒ“μ΄λ©΄ μžμ‚° 좔이가 ν‘œμ‹œλ©λ‹ˆλ‹€.'; + interface Props { refreshKey?: number; } @@ -34,27 +36,32 @@ const PaperAssetTrendChart: React.FC = ({ refreshKey = 0 }) => { return { path: `M ${pts.join(' L ')}`, min: mn, max: mx, last: vals[vals.length - 1] }; }, [snapshots]); - if (snapshots.length < 2) { - return ( -
- 일별 μŠ€λƒ…μƒ·μ΄ μŒ“μ΄λ©΄ μžμ‚° 좔이가 ν‘œμ‹œλ©λ‹ˆλ‹€. -
- ); - } + const hasChart = snapshots.length >= 2; return (
-
- μžμ‚° 좔이 - {fmtKrw(last)} -
- - - -
- {fmtKrw(min)} - {fmtKrw(max)} +
+
+ μžμ‚°μΆ”μ΄ + {!hasChart && ( + {EMPTY_HINT} + )} +
+ {hasChart && ( + {fmtKrw(last)} + )}
+ {hasChart && ( +
+ + + +
+ {fmtKrw(min)} + {fmtKrw(max)} +
+
+ )}
); }; diff --git a/frontend/src/components/splash/SplashConceptBackdrop.tsx b/frontend/src/components/splash/SplashConceptBackdrop.tsx new file mode 100644 index 0000000..874a4ae --- /dev/null +++ b/frontend/src/components/splash/SplashConceptBackdrop.tsx @@ -0,0 +1,65 @@ +/** + * 둜그인 μŠ€ν”Œλž˜μ‹œ β€” μ°Έμ‘° 컨셉: μ€μ€ν•œ κ·ΈλΌλ°μ΄μ…˜ + νλ¦Ών•œ λŒ€κ°μ„  폰 λͺ©μ—… + * (이미지 파일 λ―Έμ‚¬μš©, CSS/SVG만) + */ +import React from 'react'; +import SplashPhoneMockup, { type SplashPhoneVariant } from './SplashPhoneMockup'; + +interface PhonePlacement { + variant: SplashPhoneVariant; + left: string; + top: string; + rotateY: number; + rotateZ: number; + scale: number; + opacity: number; +} + +/** μ€‘μ•™μ—μ„œ μš°μƒλ‹¨Β·μ’Œν•˜λ‹¨μœΌλ‘œ νΌμ§€λŠ” λͺ©μ—… 배치 */ +const PHONES: PhonePlacement[] = [ + { variant: 'chart', left: '4%', top: '68%', rotateY: 22, rotateZ: -14, scale: 0.72, opacity: 0.14 }, + { variant: 'watchlist', left: '11%', top: '54%', rotateY: 18, rotateZ: -10, scale: 0.78, opacity: 0.16 }, + { variant: 'orderbook', left: '18%', top: '40%', rotateY: 14, rotateZ: -6, scale: 0.84, opacity: 0.18 }, + { variant: 'trade', left: '52%', top: '38%', rotateY: -8, rotateZ: 4, scale: 0.88, opacity: 0.2 }, + { variant: 'chart', left: '62%', top: '26%', rotateY: -14, rotateZ: 8, scale: 0.92, opacity: 0.22 }, + { variant: 'watchlist', left: '72%', top: '14%', rotateY: -18, rotateZ: 12, scale: 0.96, opacity: 0.2 }, + { variant: 'orderbook', left: '82%', top: '4%', rotateY: -22, rotateZ: 14, scale: 1, opacity: 0.17 }, + { variant: 'chart', left: '90%', top: '-2%', rotateY: -26, rotateZ: 16, scale: 0.88, opacity: 0.12 }, +]; + +const SplashConceptBackdrop: React.FC = () => ( +
+
+ +
+ + +
+ +
+ +
+
+ {PHONES.map((p, i) => ( + + ))} +
+
+ +
+
+
+
+
+); + +export default SplashConceptBackdrop; diff --git a/frontend/src/components/splash/SplashPhoneMockup.tsx b/frontend/src/components/splash/SplashPhoneMockup.tsx new file mode 100644 index 0000000..47ebfc9 --- /dev/null +++ b/frontend/src/components/splash/SplashPhoneMockup.tsx @@ -0,0 +1,142 @@ +import React from 'react'; + +export type SplashPhoneVariant = 'chart' | 'orderbook' | 'watchlist' | 'trade'; + +interface Props { + variant: SplashPhoneVariant; + style?: React.CSSProperties; + className?: string; +} + +const MiniChart: React.FC = () => ( + + + {[28, 52, 76, 100, 124, 148, 172].map(y => ( + + ))} + {[ + { x: 12, h: 90, l: 118, up: true }, + { x: 22, h: 82, l: 112, up: true }, + { x: 32, h: 95, l: 125, up: false }, + { x: 42, h: 78, l: 108, up: true }, + { x: 52, h: 70, l: 100, up: true }, + { x: 62, h: 88, l: 118, up: false }, + { x: 72, h: 65, l: 95, up: true }, + { x: 82, h: 58, l: 88, up: true }, + { x: 92, h: 72, l: 102, up: true }, + { x: 102, h: 48, l: 78, up: true }, + ].map((c, i) => ( + + + + + ))} + + +); + +const MiniOrderbook: React.FC = () => ( + + + {Array.from({ length: 8 }, (_, i) => { + const y = 24 + i * 20; + const askW = 18 + (i % 4) * 8; + const bidW = 22 + ((i + 2) % 4) * 6; + return ( + + + + + ); + })} + + +); + +const MiniWatchlist: React.FC = () => ( + + + {[0, 1, 2, 3, 4, 5].map(i => ( + + + + 005930 + + + {i % 2 === 0 ? '+1.2%' : '-0.4%'} + + + ))} + +); + +const MiniTrade: React.FC = () => ( + + + + {[ + { x: 20, h: 100, l: 118, up: true }, + { x: 40, h: 85, l: 105, up: true }, + { x: 60, h: 92, l: 112, up: false }, + { x: 80, h: 72, l: 95, up: true }, + ].map((c, i) => ( + + ))} + + + +); + +const SCREENS: Record = { + chart: MiniChart, + orderbook: MiniOrderbook, + watchlist: MiniWatchlist, + trade: MiniTrade, +}; + +const SplashPhoneMockup: React.FC = ({ variant, style, className = '' }) => { + const Screen = SCREENS[variant]; + return ( +
+
+
+
+ +
+
+
+ ); +}; + +export default SplashPhoneMockup; diff --git a/frontend/src/styles/paperDashboard.css b/frontend/src/styles/paperDashboard.css index 59455e9..7d1452f 100644 --- a/frontend/src/styles/paperDashboard.css +++ b/frontend/src/styles/paperDashboard.css @@ -742,7 +742,7 @@ .bps-footer .ptd-metrics-grid { display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); + grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } @@ -764,23 +764,37 @@ .se-page .down { color: var(--se-down, #ef4444); } @media (max-width: 1200px) { - .bps-footer .ptd-metrics-grid { grid-template-columns: repeat(2, 1fr); } } /* legacy layout removed β€” shell handles page structure */ .ptd-metric { display: flex; - align-items: flex-start; - gap: 8px; + align-items: center; + justify-content: space-between; + gap: 10px; padding: 8px 10px; border-radius: 10px; background: var(--bg2); border: 1px solid var(--border); + min-width: 0; +} +.ptd-metric-label { + flex-shrink: 0; + font-size: 10px; + font-weight: 600; + color: var(--text3); + white-space: nowrap; +} +.ptd-metric-value { + flex: 1; + min-width: 0; + font-size: 17px; + font-weight: 800; + line-height: 1.1; + text-align: right; + font-variant-numeric: tabular-nums; + color: var(--text); } -.ptd-metric-icon { font-size: 16px; line-height: 1; } -.ptd-metric-title { font-size: 10px; color: var(--text3); margin-bottom: 2px; } -.ptd-metric-value { font-size: 17px; font-weight: 800; line-height: 1.1; color: var(--text); } -.ptd-metric-sub { font-size: 9px; color: var(--text3); margin-top: 2px; } .ptd-metric--up .ptd-metric-value { color: #22c55e; } .ptd-metric--down .ptd-metric-value { color: #ef4444; } diff --git a/frontend/src/styles/splashScreen.css b/frontend/src/styles/splashScreen.css index 0488b40..f91aa8a 100644 --- a/frontend/src/styles/splashScreen.css +++ b/frontend/src/styles/splashScreen.css @@ -1,4 +1,4 @@ -/* GoldenChart splash β€” 프리미엄 흐림 κ·ΈλΌλ°μ΄μ…˜ + κΈ€λž˜μŠ€ 둜그인 */ +/* GoldenChart splash β€” μ€μ€ν•œ κ·ΈλΌλ°μ΄μ…˜ + νλ¦Ών•œ 폰 λͺ©μ—… λ°°κ²½ */ .splash { position: fixed; @@ -7,13 +7,13 @@ display: flex; align-items: center; justify-content: center; - background: #05070c; + background: #06080e; color: #e8eaed; overflow: hidden; font-family: var(--font, 'Noto Sans KR', 'Inter', sans-serif); } -/* ── λ°°κ²½ λ ˆμ΄μ–΄ ─────────────────────────────────────────────────────────── */ +/* ── λ°°κ²½ ─────────────────────────────────────────────────────────────────── */ .splash-backdrop { position: absolute; @@ -26,237 +26,149 @@ .splash-backdrop__base { position: absolute; inset: 0; - background: - linear-gradient(155deg, #06080f 0%, #0a0e18 38%, #070a12 68%, #05070c 100%); + background: linear-gradient(160deg, #05070c 0%, #0a0e16 42%, #070a12 100%); +} + +.splash-backdrop__aurora { + position: absolute; + inset: 0; +} + +.splash-backdrop__aurora--teal, +.splash-backdrop__aurora--gold { + position: absolute; + border-radius: 50%; + filter: blur(80px); +} + +.splash-backdrop__aurora--teal { + width: min(58vw, 520px); + height: min(58vw, 520px); + left: 8%; + top: 38%; + background: radial-gradient(circle, rgba(34, 197, 94, 0.14) 0%, rgba(45, 212, 191, 0.05) 45%, transparent 70%); +} + +.splash-backdrop__aurora--gold { + width: min(50vw, 460px); + height: min(50vw, 460px); + right: 6%; + top: 8%; + background: radial-gradient(circle, rgba(249, 226, 156, 0.18) 0%, rgba(212, 175, 55, 0.08) 42%, transparent 72%); } .splash-backdrop__mesh { position: absolute; - inset: -20%; - opacity: 0.45; - background: - conic-gradient( - from 38deg at 58% 42%, - rgba(212, 175, 55, 0.12) 0deg, - transparent 48deg, - rgba(34, 197, 94, 0.07) 95deg, - transparent 165deg, - rgba(56, 189, 248, 0.05) 240deg, - transparent 360deg + inset: -15%; + opacity: 0.35; + background: conic-gradient( + from 42deg at 55% 40%, + rgba(212, 175, 55, 0.1) 0deg, + transparent 55deg, + rgba(34, 197, 94, 0.06) 110deg, + transparent 200deg, + rgba(56, 189, 248, 0.04) 280deg, + transparent 360deg + ); + filter: blur(48px); +} + +/* λŒ€κ°μ„  폰 λͺ©μ—… β€” μ€‘μ•™β†’μš°μƒλ‹¨ κ·ΈλΌλ°μ΄μ…˜ 마슀크 */ +.splash-backdrop__phones { + position: absolute; + inset: 0; + perspective: 1100px; + mask-image: + radial-gradient(ellipse 42% 38% at 50% 48%, transparent 0%, rgba(0, 0, 0, 0.15) 42%, #000 58%), + linear-gradient( + 125deg, + rgba(0, 0, 0, 0.25) 0%, + #000 18%, + #000 42%, + rgba(0, 0, 0, 0.45) 58%, + transparent 78% + ); + -webkit-mask-image: + radial-gradient(ellipse 42% 38% at 50% 48%, transparent 0%, rgba(0, 0, 0, 0.15) 42%, #000 58%), + linear-gradient( + 125deg, + rgba(0, 0, 0, 0.25) 0%, + #000 18%, + #000 42%, + rgba(0, 0, 0, 0.45) 58%, + transparent 78% ); - filter: blur(52px); } -.splash-backdrop__orbs { +.splash-backdrop__phones-blur { position: absolute; - inset: 0; + inset: -5%; + filter: blur(10px) saturate(0.75) brightness(0.82); } -.splash-backdrop__orb { +.splash-phone { position: absolute; - border-radius: 50%; - filter: blur(72px); + width: clamp(88px, 10vw, 148px); + aspect-ratio: 9 / 19.5; + transform-origin: center center; will-change: transform; - animation: splash-orb-float 22s ease-in-out infinite; } -.splash-backdrop__orb--gold { - width: min(52vw, 480px); - height: min(52vw, 480px); - top: -6%; - right: 2%; - background: radial-gradient(circle, rgba(249, 226, 156, 0.32) 0%, rgba(212, 175, 55, 0.12) 45%, transparent 72%); - animation-delay: 0s; +.splash-phone__frame { + height: 100%; + padding: 5px; + border-radius: clamp(16px, 2.2vw, 24px); + border: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(14, 18, 28, 0.42); + box-shadow: + 0 16px 48px rgba(0, 0, 0, 0.45), + 0 0 0 1px rgba(255, 255, 255, 0.04) inset; + backdrop-filter: blur(6px); + -webkit-backdrop-filter: blur(6px); } -.splash-backdrop__orb--teal { - width: min(44vw, 400px); - height: min(44vw, 400px); - top: 18%; - right: -6%; - background: radial-gradient(circle, rgba(34, 197, 94, 0.16) 0%, rgba(45, 212, 191, 0.06) 50%, transparent 70%); - animation-delay: -8s; - animation-duration: 24s; +.splash-phone__notch { + width: 36%; + height: 5px; + margin: 2px auto 4px; + border-radius: 4px; + background: rgba(0, 0, 0, 0.35); } -.splash-backdrop__orb--indigo { - width: min(38vw, 340px); - height: min(38vw, 340px); - bottom: -10%; - left: -8%; - background: radial-gradient(circle, rgba(99, 102, 241, 0.14) 0%, transparent 68%); - animation-delay: -14s; - animation-duration: 26s; -} - -@keyframes splash-orb-float { - 0%, 100% { - transform: translate(0, 0) scale(1); - } - 33% { - transform: translate(1.5%, -1%) scale(1.03); - } - 66% { - transform: translate(-1%, 1.5%) scale(0.98); - } -} - -/* ── 쀑앙 β†’ 우츑 상단: μΊ”λ“€Β·ν˜Έκ°€ 싀루엣 ───────────────────────────────────── */ - -.splash-backdrop__market-flow { - position: absolute; - inset: 0; +.splash-phone__screen { + height: calc(100% - 14px); + border-radius: clamp(12px, 1.6vw, 18px); overflow: hidden; } +.splash-phone__svg { + display: block; + width: 100%; + height: 100%; +} + .splash-backdrop__flow-glow { position: absolute; - left: 42%; - top: 38%; - width: min(95vw, 920px); - height: min(72vh, 640px); - transform: translate(-18%, -22%); + left: 38%; + top: 32%; + width: min(88vw, 840px); + height: min(68vh, 580px); + transform: translate(-12%, -8%); background: linear-gradient( 128deg, - rgba(34, 197, 94, 0.07) 0%, - rgba(212, 175, 55, 0.1) 32%, - rgba(56, 189, 248, 0.05) 58%, - transparent 78% + rgba(34, 197, 94, 0.06) 0%, + rgba(212, 175, 55, 0.09) 35%, + rgba(249, 226, 156, 0.05) 55%, + transparent 75% ); - filter: blur(56px); - opacity: 0.9; + filter: blur(64px); pointer-events: none; } -.splash-backdrop__flow-inner { - position: absolute; - left: 50%; - top: 50%; - width: min(128vw, 1680px); - height: min(96vh, 920px); - transform: translate(-42%, -48%); - transform-origin: center center; - pointer-events: none; - /* 쀑앙(둜그인 μΉ΄λ“œ λΆ€κ·Ό)μ—μ„œ 우츑 μƒλ‹¨μœΌλ‘œ 갈수둝 μ„œμ„œνžˆ 사라짐 */ - mask-image: linear-gradient( - 125deg, - #000 0%, - #000 14%, - rgba(0, 0, 0, 0.62) 32%, - rgba(0, 0, 0, 0.28) 48%, - rgba(0, 0, 0, 0.08) 58%, - transparent 72% - ); - -webkit-mask-image: linear-gradient( - 125deg, - #000 0%, - #000 14%, - rgba(0, 0, 0, 0.62) 32%, - rgba(0, 0, 0, 0.28) 48%, - rgba(0, 0, 0, 0.08) 58%, - transparent 72% - ); -} - -.splash-backdrop__chart-layer { - position: absolute; - inset: 0; - opacity: 0.38; - filter: blur(22px) saturate(0.72) brightness(0.78); -} - -.splash-backdrop__orderbook-layer { - position: absolute; - right: 2%; - top: 6%; - width: min(36vw, 340px); - height: min(52vh, 480px); - opacity: 0.32; - filter: blur(14px) saturate(0.65); -} - -.splash-chart-bg { - display: block; - width: 100%; - height: 100%; -} - -.splash-orderbook-bg { - display: block; - width: 100%; - height: 100%; -} - -.splash-ob-mid { - stroke: rgba(255, 255, 255, 0.08); - stroke-width: 1; - stroke-dasharray: 4 6; -} - -.splash-ob-ask-bar { - fill: rgba(239, 68, 68, 0.35); -} - -.splash-ob-bid-bar { - fill: rgba(34, 197, 94, 0.32); -} - -.splash-ob-ask-txt, -.splash-ob-bid-txt { - font-size: 9px; - font-family: ui-monospace, 'SF Mono', Menlo, monospace; - fill: rgba(255, 255, 255, 0.12); -} - -.splash-ob-spread { - fill: rgba(212, 175, 55, 0.08); - stroke: rgba(212, 175, 55, 0.15); - stroke-width: 1; -} - -.splash-chart-grid { - stroke: rgba(255, 255, 255, 0.04); - stroke-width: 1; -} - -.splash-vol-bar { - fill: rgba(255, 255, 255, 0.06); -} - -.splash-ichi--tenkan { stroke: rgba(250, 204, 21, 0.35); stroke-width: 1.2; fill: none; } -.splash-ichi--kijun { stroke: rgba(96, 165, 250, 0.3); stroke-width: 1.2; fill: none; } -.splash-ichi--senkou-a { stroke: rgba(34, 197, 94, 0.22); stroke-width: 1; fill: none; } -.splash-ichi--senkou-b { stroke: rgba(239, 68, 68, 0.2); stroke-width: 1; fill: none; } - -.splash-candle-wick { - stroke: rgba(255, 255, 255, 0.2); - stroke-width: 1; -} - -.splash-candle-up { - fill: rgba(34, 197, 94, 0.42); -} - -.splash-candle-down { - fill: rgba(239, 68, 68, 0.38); -} - -.splash-backdrop__grid { - position: absolute; - inset: 0; - opacity: 0.35; - background-image: - linear-gradient(rgba(255, 255, 255, 0.028) 1px, transparent 1px), - linear-gradient(90deg, rgba(255, 255, 255, 0.028) 1px, transparent 1px); - background-size: 56px 56px; - mask-image: radial-gradient(ellipse 90% 80% at 50% 50%, #000 20%, transparent 85%); - -webkit-mask-image: radial-gradient(ellipse 90% 80% at 50% 50%, #000 20%, transparent 85%); -} - .splash-backdrop__grain { position: absolute; inset: 0; - opacity: 0.045; + opacity: 0.04; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); background-size: 180px 180px; } @@ -265,27 +177,20 @@ position: absolute; inset: 0; background: - radial-gradient(ellipse 68% 58% at 50% 50%, transparent 0%, rgba(5, 7, 12, 0.42) 62%, rgba(2, 3, 6, 0.9) 100%), - linear-gradient(128deg, transparent 0%, rgba(5, 7, 12, 0.15) 55%, rgba(5, 7, 12, 0.35) 100%), - linear-gradient(180deg, rgba(5, 7, 12, 0.45) 0%, transparent 30%, transparent 70%, rgba(5, 7, 12, 0.5) 100%); + radial-gradient(ellipse 70% 62% at 50% 50%, transparent 0%, rgba(5, 7, 12, 0.5) 65%, rgba(2, 3, 6, 0.92) 100%), + linear-gradient(128deg, transparent 0%, rgba(5, 7, 12, 0.2) 50%, rgba(5, 7, 12, 0.35) 100%); } .splash-backdrop__spotlight { position: absolute; inset: 0; background: radial-gradient( - ellipse 42% 38% at 50% 46%, - rgba(255, 255, 255, 0.06) 0%, + ellipse 40% 36% at 50% 46%, + rgba(255, 255, 255, 0.05) 0%, transparent 100% ); } -@media (prefers-reduced-motion: reduce) { - .splash-backdrop__orb { - animation: none; - } -} - /* ── 둜그인 μΉ΄λ“œ ───────────────────────────────────────────────────────────── */ .splash-center { @@ -294,37 +199,35 @@ display: flex; flex-direction: column; align-items: center; - gap: 18px; - width: min(92vw, 380px); - padding: 24px 16px; + gap: 16px; + width: min(92vw, 400px); + padding: 20px 16px; } -.splash-glass { +.splash-card { width: 100%; - padding: 36px 32px 28px; - border-radius: 20px; - border: 1px solid rgba(255, 255, 255, 0.12); - background: rgba(10, 12, 18, 0.52); - backdrop-filter: blur(24px) saturate(1.15); - -webkit-backdrop-filter: blur(24px) saturate(1.15); + padding: 38px 36px 30px; + border-radius: 18px; + border: 1px solid rgba(212, 175, 55, 0.55); + background: rgba(11, 14, 22, 0.97); box-shadow: - 0 0 0 1px rgba(212, 175, 55, 0.06) inset, - 0 28px 72px rgba(0, 0, 0, 0.55), - 0 8px 24px rgba(0, 0, 0, 0.35); + 0 0 0 1px rgba(212, 175, 55, 0.08) inset, + 0 0 40px rgba(212, 175, 55, 0.1), + 0 24px 64px rgba(0, 0, 0, 0.65); } .splash-brand { - margin: 0 0 28px; + margin: 0 0 30px; text-align: center; - font-size: 2rem; + font-size: 2.15rem; font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; - background: linear-gradient(180deg, #fce9a8 0%, #e8c547 38%, #c9a227 72%, #a67c00 100%); + background: linear-gradient(180deg, #fce9a8 0%, #e8c547 40%, #c9a227 78%, #a67c00 100%); -webkit-background-clip: text; background-clip: text; color: transparent; - filter: drop-shadow(0 2px 16px rgba(212, 175, 55, 0.28)); + filter: drop-shadow(0 2px 12px rgba(212, 175, 55, 0.35)); } .splash-form { @@ -336,24 +239,19 @@ .splash-input { width: 100%; box-sizing: border-box; - padding: 13px 14px; + padding: 14px 16px; border-radius: 10px; - border: 1px solid rgba(255, 255, 255, 0.1); - background: rgba(0, 0, 0, 0.38); + border: 1px solid rgba(255, 255, 255, 0.08); + background: rgba(22, 26, 36, 0.95); color: #f3f4f6; font-size: 0.95rem; - transition: border-color 0.15s, box-shadow 0.15s, background 0.15s; -} - -.splash-input::placeholder { - color: rgba(255, 255, 255, 0.32); + transition: border-color 0.15s, box-shadow 0.15s; } .splash-input:focus { outline: none; - border-color: rgba(212, 175, 55, 0.5); - background: rgba(0, 0, 0, 0.48); - box-shadow: 0 0 0 3px rgba(212, 175, 55, 0.14); + border-color: rgba(212, 175, 55, 0.45); + box-shadow: 0 0 0 3px rgba(212, 175, 55, 0.12); } .splash-input:disabled { @@ -369,26 +267,23 @@ .splash-login-btn { width: 100%; - margin-top: 4px; - padding: 13px 16px; + margin-top: 6px; + padding: 14px 16px; border: none; border-radius: 10px; cursor: pointer; - font-size: 1rem; + font-size: 1.05rem; font-weight: 800; - color: #1a1408; - background: linear-gradient(180deg, #fce9a8 0%, #e0c04a 42%, #c9a227 100%); + color: #141008; + background: linear-gradient(90deg, #f5e6a8 0%, #e8c84a 48%, #d4af37 100%); box-shadow: - 0 1px 0 rgba(255, 255, 255, 0.25) inset, - 0 6px 22px rgba(201, 162, 39, 0.38); + 0 1px 0 rgba(255, 255, 255, 0.3) inset, + 0 6px 24px rgba(201, 162, 39, 0.4); transition: transform 0.12s, filter 0.12s, box-shadow 0.12s; } .splash-login-btn:hover:not(:disabled) { - filter: brightness(1.06); - box-shadow: - 0 1px 0 rgba(255, 255, 255, 0.3) inset, - 0 8px 28px rgba(201, 162, 39, 0.48); + filter: brightness(1.05); } .splash-login-btn:active:not(:disabled) { @@ -401,17 +296,16 @@ } .splash-version { - margin: 22px 0 0; + margin: 24px 0 0; text-align: center; - font-size: 0.68rem; - color: rgba(255, 255, 255, 0.34); - letter-spacing: 0.01em; + font-size: 0.7rem; + color: rgba(255, 255, 255, 0.38); } .splash-guest-link { border: none; background: transparent; - color: rgba(255, 255, 255, 0.4); + color: rgba(255, 255, 255, 0.38); font-size: 0.78rem; cursor: pointer; padding: 4px 8px; @@ -427,28 +321,32 @@ cursor: not-allowed; } -@media (max-width: 420px) { - .splash-glass { - padding: 28px 22px 22px; - border-radius: 16px; +@media (max-width: 480px) { + .splash-card { + padding: 30px 24px 24px; } + .splash-brand { - font-size: 1.65rem; - margin-bottom: 22px; + font-size: 1.75rem; + margin-bottom: 24px; } - .splash-backdrop__orb { - filter: blur(56px); + + .splash-phone { + width: clamp(72px, 18vw, 110px); } - .splash-backdrop__flow-inner { - mask-image: radial-gradient( - ellipse 90% 85% at 24% 56%, - #000 0%, - transparent 75% - ); - -webkit-mask-image: radial-gradient( - ellipse 90% 85% at 24% 56%, - #000 0%, - transparent 75% - ); + + .splash-backdrop__phones-blur { + filter: blur(12px) saturate(0.7) brightness(0.78); + } + + .splash-backdrop__aurora--teal, + .splash-backdrop__aurora--gold { + filter: blur(64px); + } +} + +@media (prefers-reduced-motion: reduce) { + .splash-phone { + will-change: auto; } } diff --git a/frontend/src/styles/virtualTradingDashboard.css b/frontend/src/styles/virtualTradingDashboard.css index dfb19d0..d56e835 100644 --- a/frontend/src/styles/virtualTradingDashboard.css +++ b/frontend/src/styles/virtualTradingDashboard.css @@ -2834,6 +2834,54 @@ padding-top: 8px; border-top: 1px solid var(--se-border); } + +.ptd-invest-metrics .ptd-metrics-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 8px; +} + +.ptd-invest-metrics .ptd-metric { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + padding: 10px 12px; + border-radius: 6px; + background: var(--gc-surface-2, rgba(255, 255, 255, 0.04)); + border: 1px solid var(--se-border, var(--border)); + min-width: 0; +} + +.ptd-invest-metrics .ptd-metric-label { + flex-shrink: 0; + font-size: 11px; + font-weight: 600; + color: var(--text3); + white-space: nowrap; +} + +.ptd-invest-metrics .ptd-metric-value { + flex: 1; + min-width: 0; + font-size: 15px; + font-weight: 800; + text-align: right; + font-variant-numeric: tabular-nums; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: var(--text); +} + +.ptd-invest-metrics .ptd-metric--up .ptd-metric-value { + color: #22c55e; +} + +.ptd-invest-metrics .ptd-metric--down .ptd-metric-value { + color: #ef4444; +} + .bps-page--ptd .ptd-right-history { flex: 1; min-height: 0; @@ -2920,24 +2968,79 @@ gap: 10px; } .ptd-asset-trend { - padding: 8px 12px; - border-radius: 6px; - background: var(--gc-surface-2, rgba(255,255,255,0.04)); -} -.ptd-asset-trend-head { display: flex; - justify-content: space-between; - font-size: 12px; - margin-bottom: 4px; + flex-direction: column; + border-radius: 6px; + background: var(--gc-surface-2, rgba(255, 255, 255, 0.04)); + border: 1px solid var(--se-border, var(--border)); + overflow: hidden; + min-width: 0; } + +.ptd-asset-trend-titlebar { + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + min-height: 24px; + padding: 3px 10px; + border-bottom: 1px solid color-mix(in srgb, var(--se-border, var(--border)) 65%, transparent); +} + +.ptd-asset-trend-titlegroup { + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + min-width: 0; + flex: 1; +} + +.ptd-asset-trend-title { + flex-shrink: 0; + font-size: 14px; + font-weight: 700; + color: #ff9800; + letter-spacing: 0.04em; + line-height: 1.2; +} + +.ptd-asset-trend-hint { + font-size: 11px; + font-weight: 400; + color: var(--text3); + opacity: 0.78; + line-height: 1.3; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.ptd-asset-trend-body { + padding: 8px 12px 10px; + min-width: 0; +} + +.ptd-asset-trend-last { + flex-shrink: 0; + font-size: 11px; + font-weight: 600; + color: var(--text2); + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + .ptd-asset-trend-svg { width: 100%; height: 48px; display: block; } + .ptd-asset-trend-range { display: flex; justify-content: space-between; font-size: 10px; opacity: 0.6; + margin-top: 2px; }