d3ro-voice/site/src/index.css
Yun Chan 5892125740 랜딩 페이지: D3RO 브랜드 프로모션 사이트 + GitHub Pages 배포
- Vite + React 19 + Tailwind CSS
- 4가지 디자인 레퍼런스 통합 (CRT 스크린, 크로스헤어, 노이즈, 인스트루먼트)
- 섹션 9개: Hero, Features, HowItWorks, Privacy, Pricing, FAQ, CTA, Header, Footer
- 재사용 컴포넌트 8개 (Badge, Container, InstrumentCard, GlowButton 등)
- i18n 10개 국어 (en/ko/ja/zh/es/fr/de/pt/ru/vi)
- GitHub Pages 자동 배포 워크플로우
2026-04-05 23:55:13 +09:00

207 lines
5.3 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
/* ── Base Reset & Globals ──────────────────────────────── */
@layer base {
html {
scroll-behavior: smooth;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
::selection {
background-color: rgba(242, 91, 41, 0.3);
color: #fafafa;
}
::-webkit-scrollbar {
width: 6px;
}
::-webkit-scrollbar-track {
background: #0d0d0f;
}
::-webkit-scrollbar-thumb {
background: #333338;
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: #4a4b50;
}
body {
overflow-x: hidden;
}
}
/* ── Grid Background Pattern ──────────────────────────── */
.bg-grid {
background-image:
linear-gradient(rgba(242, 91, 41, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(242, 91, 41, 0.03) 1px, transparent 1px);
background-size: 60px 60px;
}
.bg-grid-dense {
background-image:
linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
background-size: 20px 20px;
}
/* ── CRT Screen Effect (CSS only) ─────────────────────── */
.crt-screen {
position: relative;
overflow: hidden;
background: linear-gradient(180deg, #050605 0%, #0a0b0a 100%);
border: 1px solid rgba(242, 91, 41, 0.1);
box-shadow:
inset 0 2px 8px rgba(0, 0, 0, 0.8),
0 0 30px rgba(242, 91, 41, 0.05);
}
.crt-screen::before {
content: '';
position: absolute;
inset: 0;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(0, 0, 0, 0.15) 2px,
rgba(0, 0, 0, 0.15) 4px
);
pointer-events: none;
z-index: 2;
}
.crt-screen::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(
180deg,
rgba(242, 91, 41, 0.02) 0%,
transparent 50%,
rgba(242, 91, 41, 0.01) 100%
);
animation: scan 8s linear infinite;
pointer-events: none;
z-index: 3;
}
@keyframes scan {
0% { transform: translateY(-100%); }
100% { transform: translateY(100%); }
}
/* ── Crosshair Decorations ─────────────────────────────── */
.crosshair-box {
--ch-size: 16px;
--ch-color: rgba(242, 91, 41, 0.35);
position: relative;
}
.crosshair-box::before {
content: '';
position: absolute;
top: -1px;
left: -1px;
width: var(--ch-size);
height: var(--ch-size);
border-top: 1px solid var(--ch-color);
border-left: 1px solid var(--ch-color);
pointer-events: none;
}
.crosshair-box::after {
content: '';
position: absolute;
bottom: -1px;
right: -1px;
width: var(--ch-size);
height: var(--ch-size);
border-bottom: 1px solid var(--ch-color);
border-right: 1px solid var(--ch-color);
pointer-events: none;
}
/* ── Instrument Noise Texture ──────────────────────────── */
.noise-texture {
position: relative;
}
.noise-texture::before {
content: '';
position: absolute;
inset: 0;
opacity: 0.025;
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-repeat: repeat;
background-size: 256px 256px;
pointer-events: none;
border-radius: inherit;
}
/* ── Glow Button ───────────────────────────────────────── */
.glow-btn {
position: relative;
overflow: hidden;
transition: all 250ms cubic-bezier(0.16, 1, 0.3, 1);
}
.glow-btn::before {
content: '';
position: absolute;
inset: -2px;
background: linear-gradient(135deg, rgba(242, 91, 41, 0.4), rgba(242, 91, 41, 0) 60%);
border-radius: inherit;
opacity: 0;
transition: opacity 250ms;
z-index: 0;
}
.glow-btn:hover::before {
opacity: 1;
}
.glow-btn:hover {
box-shadow: 0 0 20px rgba(242, 91, 41, 0.3), 0 0 40px rgba(242, 91, 41, 0.1);
transform: translateY(-1px);
}
.glow-btn:active {
transform: translateY(0);
}
/* ── Accordion ─────────────────────────────────────────── */
.accordion-content {
display: grid;
grid-template-rows: 0fr;
transition: grid-template-rows 300ms ease;
}
.accordion-content.open {
grid-template-rows: 1fr;
}
.accordion-content > div {
overflow: hidden;
}
/* ── Reveal Animation ──────────────────────────────────── */
.reveal {
opacity: 0;
transform: translateY(20px);
}
.reveal.visible {
animation: fade-in-up 0.6s ease-out forwards;
}
@keyframes fade-in-up {
0% { opacity: 0; transform: translateY(20px); }
100% { opacity: 1; transform: translateY(0); }
}
/* ── Utilities ─────────────────────────────────────────── */
@layer utilities {
.text-balance {
text-wrap: balance;
}
.border-hairline {
border-color: rgba(255, 255, 255, 0.06);
}
}