summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontend/index.html2
-rw-r--r--frontend/src/components/LandingPage.tsx314
-rw-r--r--frontend/src/styles/pc98.css4
3 files changed, 6 insertions, 314 deletions
diff --git a/frontend/index.html b/frontend/index.html
index 095310b..0014d94 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -6,7 +6,7 @@
<title>soryu.co</title>
<link rel="icon" type="image/png" href="/logo/crane-logo-transparent.png" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
- <link href="https://fonts.googleapis.com/css2?family=DotGothic16&display=swap" rel="stylesheet">
+ <link href="https://fonts.googleapis.com/css2?family=DotGothic16&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
</head>
<body>
<div id="root"></div>
diff --git a/frontend/src/components/LandingPage.tsx b/frontend/src/components/LandingPage.tsx
index 08febd1..e7579b5 100644
--- a/frontend/src/components/LandingPage.tsx
+++ b/frontend/src/components/LandingPage.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react'
+import { useState, useEffect } from 'react'
import { LoadingScreen } from './LoadingScreen'
import { HeartLogo } from './HeartLogo'
@@ -153,318 +153,6 @@ export function LandingPage({ onLogin }: LandingPageProps) {
</div>
</footer>
</div>
-
- <style>{`
- /* ── Professional Landing Styles ── */
-
- .pro-header {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- z-index: 100;
- backdrop-filter: blur(12px);
- background: rgba(10, 14, 28, 0.85);
- border-bottom: 1px solid rgba(0, 200, 255, 0.15);
- }
-
- .pro-header-content {
- max-width: 1100px;
- margin: 0 auto;
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 0.6rem 1.5rem;
- }
-
- .pro-header-left {
- display: flex;
- align-items: center;
- gap: 0.65rem;
- }
-
- .pro-crane-logo {
- display: block;
- }
-
- .pro-company-name {
- font-family: var(--font-family, 'IBM Plex Mono', 'MS Gothic', monospace);
- font-size: 1rem;
- font-weight: 600;
- letter-spacing: 0.18em;
- color: #e0e8f0;
- }
-
- .pro-header-center {
- display: flex;
- align-items: center;
- justify-content: center;
- }
-
- .pro-header-nav {
- display: flex;
- align-items: center;
- gap: 0.25rem;
- }
-
- .pro-nav-link {
- background: none;
- border: 1px solid transparent;
- color: #8fa8c8;
- font-family: var(--font-family, 'IBM Plex Mono', 'MS Gothic', monospace);
- font-size: 0.8rem;
- letter-spacing: 0.08em;
- padding: 0.35rem 0.75rem;
- cursor: pointer;
- border-radius: 3px;
- transition: color 0.2s, border-color 0.2s;
- }
-
- .pro-nav-link:hover {
- color: #00c8ff;
- border-color: rgba(0, 200, 255, 0.3);
- }
-
- .pro-nav-login {
- color: #00c8ff;
- border-color: rgba(0, 200, 255, 0.35);
- margin-left: 0.5rem;
- }
-
- .pro-nav-login:hover {
- background: rgba(0, 200, 255, 0.08);
- border-color: #00c8ff;
- }
-
- /* ── Landing Container ── */
-
- .pro-landing {
- min-height: 100vh;
- background: #080c1a;
- color: #c8d4e0;
- font-family: var(--font-family, 'IBM Plex Mono', 'MS Gothic', monospace);
- overflow-x: hidden;
- }
-
- /* ── Hero ── */
-
- .pro-hero {
- display: flex;
- align-items: center;
- justify-content: center;
- min-height: 100vh;
- padding: 6rem 1.5rem 4rem;
- text-align: center;
- position: relative;
- }
-
- .pro-hero::before {
- content: '';
- position: absolute;
- inset: 0;
- background:
- radial-gradient(ellipse 60% 50% at 50% 40%, rgba(0, 100, 180, 0.08) 0%, transparent 100%),
- radial-gradient(ellipse 40% 30% at 50% 60%, rgba(0, 200, 255, 0.04) 0%, transparent 100%);
- pointer-events: none;
- }
-
- .pro-hero-inner {
- position: relative;
- max-width: 700px;
- }
-
- .pro-hero-tagline-jp {
- font-size: 0.85rem;
- letter-spacing: 0.5em;
- color: rgba(0, 200, 255, 0.45);
- margin-bottom: 1.5rem;
- text-transform: uppercase;
- }
-
- .pro-hero-headline {
- font-size: clamp(1.8rem, 4vw, 2.8rem);
- font-weight: 600;
- line-height: 1.25;
- color: #e8f0fa;
- margin: 0 0 1.25rem;
- letter-spacing: -0.01em;
- }
-
- .pro-hero-sub {
- font-size: 1rem;
- line-height: 1.7;
- color: #8fa8c8;
- margin: 0 auto 2.5rem;
- max-width: 520px;
- }
-
- .pro-hero-cta {
- display: flex;
- gap: 1rem;
- justify-content: center;
- flex-wrap: wrap;
- }
-
- .pro-btn-primary,
- .pro-btn-secondary {
- font-family: var(--font-family, 'IBM Plex Mono', 'MS Gothic', monospace);
- font-size: 0.85rem;
- letter-spacing: 0.06em;
- padding: 0.65rem 1.5rem;
- border-radius: 3px;
- cursor: pointer;
- transition: all 0.2s;
- }
-
- .pro-btn-primary {
- background: rgba(0, 200, 255, 0.1);
- color: #00c8ff;
- border: 1px solid rgba(0, 200, 255, 0.35);
- }
-
- .pro-btn-primary:hover {
- background: rgba(0, 200, 255, 0.18);
- border-color: #00c8ff;
- }
-
- .pro-btn-secondary {
- background: transparent;
- color: #8fa8c8;
- border: 1px solid rgba(140, 170, 200, 0.25);
- }
-
- .pro-btn-secondary:hover {
- color: #e0e8f0;
- border-color: rgba(140, 170, 200, 0.5);
- }
-
- .pro-btn-icon {
- margin-right: 0.35rem;
- font-size: 0.75rem;
- }
-
- /* ── Content Grid ── */
-
- .pro-content-grid {
- max-width: 1100px;
- margin: 0 auto;
- padding: 0 1.5rem 5rem;
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
- gap: 2rem;
- }
-
- .pro-card {
- background: rgba(12, 18, 36, 0.7);
- border: 1px solid rgba(0, 200, 255, 0.12);
- border-radius: 4px;
- overflow: hidden;
- scroll-margin-top: 5rem;
- }
-
- .pro-card-header {
- padding: 1.25rem 1.5rem 0.75rem;
- display: flex;
- align-items: center;
- gap: 0.75rem;
- flex-wrap: wrap;
- }
-
- .pro-card-title {
- font-size: 1.1rem;
- font-weight: 600;
- letter-spacing: 0.12em;
- color: #e0e8f0;
- margin: 0;
- text-transform: uppercase;
- }
-
- .pro-card-badge {
- font-size: 0.65rem;
- letter-spacing: 0.1em;
- text-transform: uppercase;
- padding: 0.2rem 0.5rem;
- background: rgba(0, 200, 255, 0.1);
- border: 1px solid rgba(0, 200, 255, 0.25);
- border-radius: 2px;
- color: #00c8ff;
- }
-
- .pro-card-accent {
- flex: 1;
- height: 1px;
- background: linear-gradient(90deg, rgba(0, 200, 255, 0.3), transparent);
- }
-
- .pro-card-body {
- padding: 0.75rem 1.5rem 1.5rem;
- }
-
- .pro-card-subtitle {
- font-size: 0.95rem;
- font-weight: 500;
- color: #c0d0e0;
- margin: 0 0 0.75rem;
- line-height: 1.5;
- }
-
- .pro-card-text {
- font-size: 0.85rem;
- line-height: 1.7;
- color: #7a90a8;
- margin: 0 0 0.6rem;
- }
-
- .pro-card-text:last-child {
- margin-bottom: 0;
- }
-
- .pro-makima-logo {
- display: block;
- width: 64px;
- height: 64px;
- margin-bottom: 1rem;
- opacity: 0.75;
- }
-
- /* ── Footer ── */
-
- .pro-footer {
- border-top: 1px solid rgba(0, 200, 255, 0.1);
- padding: 1.5rem;
- text-align: center;
- }
-
- .pro-footer-inner {
- font-size: 0.75rem;
- color: #4a6080;
- letter-spacing: 0.08em;
- }
-
- .pro-footer-brand {
- letter-spacing: 0.18em;
- color: #5a7898;
- }
-
- .pro-footer-sep {
- margin: 0 0.5rem;
- opacity: 0.4;
- }
-
- /* ── Shared transitions ── */
-
- .pro-landing.hidden,
- .pro-header.hidden {
- opacity: 0;
- pointer-events: none;
- }
-
- .pro-landing.fade-in,
- .pro-header.fade-in {
- opacity: 1;
- transition: opacity 0.8s ease;
- }
- `}</style>
</div>
)
}
diff --git a/frontend/src/styles/pc98.css b/frontend/src/styles/pc98.css
index b06cacd..e591cdc 100644
--- a/frontend/src/styles/pc98.css
+++ b/frontend/src/styles/pc98.css
@@ -4986,6 +4986,10 @@ button:focus-visible {
opacity: 0.4;
}
+.pro-footer-text {
+ color: #4a6080;
+}
+
/* ── Shared transitions ── */
.pro-landing.hidden,