@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap'); /* ── Reset ───────────────────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } /* ── Design Tokens ───────────────────────────────────────────────────── */ :root { /* ── Background Surfaces ─────────────────────────────────────────── */ --bg: #070b19; --bg-secondary: #0a0f23; --bg-tertiary: #0d1530; /* ── Glass Surfaces ──────────────────────────────────────────────── */ --surface: rgba(10, 18, 45, 0.8); --surface-raised: rgba(14, 24, 58, 0.9); --surface-card: rgba(255, 255, 255, 0.03); /* ── Neon Cyan ───────────────────────────────────────────────────── */ --neon-cyan: #00d4ff; --neon-cyan-dim: rgba(0, 212, 255, 0.6); --neon-cyan-muted: rgba(0, 212, 255, 0.12); /* ── Neon Purple ─────────────────────────────────────────────────── */ --neon-purple: #8b5cf6; --neon-purple-dim: rgba(139, 92, 246, 0.6); --neon-purple-muted: rgba(139, 92, 246, 0.12); /* ── Gradients ───────────────────────────────────────────────────── */ --grad-accent: linear-gradient(135deg, #00d4ff 0%, #8b5cf6 100%); --grad-accent-subtle: linear-gradient(135deg, rgba(0, 212, 255, 0.12) 0%, rgba(139, 92, 246, 0.12) 100%); --grad-bg-radial: radial-gradient(ellipse 120% 80% at 20% 0%, rgba(0, 212, 255, 0.06) 0%, transparent 60%), radial-gradient(ellipse 100% 70% at 80% 10%, rgba(139, 92, 246, 0.05) 0%, transparent 60%), radial-gradient(ellipse 80% 60% at 50% 80%, rgba(0, 100, 180, 0.04) 0%, transparent 70%); /* ── Text ────────────────────────────────────────────────────────── */ --text: #ccd6f6; --text-bright: #e8f0fe; --text-dim: #8892b0; --text-muted: #4a5572; /* ── Borders ─────────────────────────────────────────────────────── */ --line: rgba(255, 255, 255, 0.07); --line-bright: rgba(0, 212, 255, 0.25); --line-subtle: rgba(255, 255, 255, 0.04); /* ── Glow Effects ────────────────────────────────────────────────── */ --glow-cyan: 0 0 20px rgba(0, 212, 255, 0.25), 0 0 60px rgba(0, 212, 255, 0.08); --glow-purple: 0 0 20px rgba(139, 92, 246, 0.25), 0 0 60px rgba(139, 92, 246, 0.08); --glow-active: 0 0 30px rgba(0, 212, 255, 0.2), 0 2px 0 rgba(0, 212, 255, 0.4); /* ── Shadows ─────────────────────────────────────────────────────── */ --shadow-sm: 0 2px 12px rgba(0, 0, 0, 0.4); --shadow-md: 0 8px 32px rgba(0, 0, 0, 0.5); --shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.65); --shadow-card: 0 4px 24px rgba(0, 0, 0, 0.45), 0 1px 0 rgba(255, 255, 255, 0.04) inset; /* ── Border Radii ────────────────────────────────────────────────── */ --radius-xs: 6px; --radius-sm: 10px; --radius-md: 14px; --radius-lg: 20px; --radius-xl: 28px; /* ── Layout ──────────────────────────────────────────────────────── */ --sidebar-w: 240px; --topbar-h: 56px; /* ── Typography ──────────────────────────────────────────────────── */ --font-display: 'Space Grotesk', 'Noto Sans KR', system-ui, serif; --font-body: 'Inter', 'Noto Sans KR', system-ui, sans-serif; /* ── Easing ──────────────────────────────────────────────────────── */ --ease-out: cubic-bezier(0.16, 1, 0.3, 1); --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* ── Page Accent Colors ──────────────────────────────────────────── */ --accent-home: #00d4ff; --accent-blog: #c084fc; --accent-lotto: #34d399; --accent-stock: #38bdf8; --accent-realestate: #f43f5e; --accent-subscription: #f43f5e; --accent-todo: #f472b6; --accent-travel: #fb923c; --accent-lab: #fbbf24; /* ── Convenience alias ───────────────────────────────────────────── */ --accent: var(--neon-cyan); /* ── Legacy / Backward-compat aliases ───────────────────────────── */ --muted: var(--text-dim); --fg: var(--text-bright); --surface-hover: var(--surface-raised); --line-strong: var(--line-bright); --accent-strong: var(--neon-purple); --shadow-inset: 0 1px 0 rgba(255, 255, 255, 0.04) inset; } /* ── Base Document ───────────────────────────────────────────────────── */ html { height: 100%; scroll-behavior: smooth; text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } body { height: 100%; overflow: hidden; background-color: var(--bg); background-image: var(--grad-bg-radial); background-attachment: fixed; color: var(--text); font-family: var(--font-body); font-size: 15px; line-height: 1.65; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* ── Scrollbar ───────────────────────────────────────────────────────── */ ::-webkit-scrollbar { width: 5px; height: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(0, 212, 255, 0.22); border-radius: 999px; } ::-webkit-scrollbar-thumb:hover { background: rgba(0, 212, 255, 0.45); } /* Firefox */ * { scrollbar-width: thin; scrollbar-color: rgba(0, 212, 255, 0.22) transparent; } /* ── Selection ───────────────────────────────────────────────────────── */ ::selection { background: rgba(0, 212, 255, 0.2); color: var(--text-bright); } /* ── Focus ───────────────────────────────────────────────────────────── */ :focus-visible { outline: 1.5px solid rgba(0, 212, 255, 0.8); outline-offset: 3px; border-radius: var(--radius-xs); } /* ── Typography ──────────────────────────────────────────────────────── */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-display); font-weight: 600; color: var(--text-bright); line-height: 1.25; letter-spacing: -0.02em; } p { line-height: 1.75; color: var(--text); } a { color: inherit; text-decoration: none; } a:hover { color: var(--neon-cyan); } /* ── Images ──────────────────────────────────────────────────────────── */ img { max-width: 100%; display: block; } /* ── Form Elements ───────────────────────────────────────────────────── */ button { font-family: var(--font-body); } input, textarea, select { font-family: var(--font-body); background: var(--surface-card); border: 1px solid var(--line); color: var(--text); border-radius: var(--radius-sm); transition: border-color 0.2s ease, box-shadow 0.2s ease; } input:focus, textarea:focus, select:focus { border-color: var(--neon-cyan-dim); box-shadow: 0 0 0 3px var(--neon-cyan-muted); outline: none; } select option { background: var(--bg-secondary); color: var(--text); } /* ── Responsive Mobile Override ──────────────────────────────────────── */ @media (max-width: 768px) { body { overflow: auto; background-attachment: scroll; } }