@import "tailwindcss"; /* ─── CookieRun Font (상업적 이용 가능 라이선스) ─── */ @font-face { font-family: 'CookieRun'; src: url('/fonts/CookieRun-Regular.otf') format('opentype'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'CookieRun'; src: url('/fonts/CookieRun-Bold.otf') format('opentype'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'CookieRun'; src: url('/fonts/CookieRun-Black.otf') format('opentype'); font-weight: 900; font-style: normal; font-display: swap; } :root { --background: #f0f5ff; --foreground: #04102b; --primary: #1a56db; --primary-hover: #1e4fc2; --secondary: #4338ca; --secondary-hover: #3730a3; --sidebar-bg: #04102b; --card-bg: #ffffff; --border: #dbe8ff; /* === JSM Professional tokens (2026-06 renewal) === */ --jsm-bg: #f8fafc; /* slate-50 본문 배경 */ --jsm-surface: #ffffff; /* 카드 */ --jsm-surface-alt: #f1f5f9; /* slate-100 섹션 교차 배경 */ --jsm-ink: #0f172a; /* slate-900 본문 텍스트 */ --jsm-ink-soft: #475569; /* slate-600 보조 텍스트 */ --jsm-ink-faint: #94a3b8; /* slate-400 캡션 */ --jsm-line: #e2e8f0; /* slate-200 보더 */ --jsm-navy: #0b1f3a; /* 딥네이비 — 푸터/다크 섹션 */ --jsm-accent: #1d4ed8; /* blue-700 포인트 (단일 포인트 컬러) */ --jsm-accent-hover: #1e40af; /* blue-800 */ --jsm-accent-soft: #dbeafe; /* blue-100 뱃지 배경 */ /* 기존 kx 변수 재매핑 (잔여 참조 호환용) */ --kx-surface: var(--jsm-bg); --kx-surface-low: var(--jsm-surface-alt); --kx-surface-mid: var(--jsm-surface); --kx-surface-high: var(--jsm-surface); --kx-surface-bright: var(--jsm-surface-alt); --kx-on-surface: var(--jsm-ink); --kx-on-variant: var(--jsm-ink-soft); --kx-primary: var(--jsm-accent); --kx-primary-dim: var(--jsm-accent-hover); --kx-secondary: var(--jsm-accent); --kx-secondary-dim: var(--jsm-accent-hover); --kx-outline: var(--jsm-line); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-primary: var(--primary); --color-secondary: var(--secondary); --font-sans: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; --font-mono: 'Pretendard Variable', Pretendard, ui-monospace, monospace; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { background: var(--jsm-bg); color: var(--jsm-ink); font-family: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* font-mono utility → Pretendard 통일 */ .font-mono, code, pre, kbd, samp { font-family: 'Pretendard Variable', Pretendard, ui-monospace, monospace; } /* Dashboard layout */ .dashboard-layout { display: flex; height: 100dvh; overflow: hidden; background: var(--jsm-bg); } .main-content { flex: 1; overflow-y: auto; min-width: 0; } /* Gradient text utility */ .gradient-text { background: linear-gradient(135deg, #2563eb, #7c3aed); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ─── Kinetic Ether 유틸리티 ─── */ .kx-section { background: var(--kx-surface); color: var(--kx-on-surface); font-family: 'Pretendard Variable', Pretendard, system-ui, sans-serif; } .kx-section p, .kx-section li, .kx-section span:not(.kx-label) { color: var(--kx-on-variant); } .kx-display { font-family: 'Pretendard Variable', Pretendard, system-ui, sans-serif; font-weight: 700; letter-spacing: -0.02em; color: inherit; } .kx-label { font-family: 'Pretendard Variable', Pretendard, system-ui, sans-serif; font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--kx-secondary); } .kx-folder { background: var(--kx-surface-mid); border-radius: 0.75rem 0.75rem 0.125rem 0.125rem; padding: 1.5rem; position: relative; } .kx-folder::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(204,151,255,0.3), transparent); } .kx-glass { background: rgba(25, 37, 64, 0.6); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: 1rem; } .kx-glow { box-shadow: 0 0 40px 0 rgba(156, 72, 234, 0.25), 0 0 80px 0 rgba(83, 221, 252, 0.08); } .kx-btn-primary { background: var(--jsm-accent); color: #ffffff; font-weight: 700; transition: background 0.15s ease, transform 0.15s ease; } .kx-btn-primary:hover { background: var(--jsm-accent-hover); transform: translateY(-1px); } .kx-btn-ghost { color: var(--kx-secondary); background: transparent; transition: background 0.15s ease; } .kx-btn-ghost:hover { background: var(--kx-surface-bright); } .kx-gradient-text { color: var(--jsm-ink); -webkit-text-fill-color: var(--jsm-ink); } .kx-orb { position: absolute; border-radius: 9999px; filter: blur(80px); opacity: 0.35; pointer-events: none; } /* Service card hover */ .service-card { transition: transform 0.2s ease, box-shadow 0.2s ease; } .service-card:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(37, 99, 235, 0.12); } /* Scroll reveal animations */ .reveal { opacity: 0; transform: translateY(1.5rem); transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); } .reveal.is-visible { opacity: 1; transform: translateY(0); } .reveal-d1 { transition-delay: 80ms; } .reveal-d2 { transition-delay: 160ms; } .reveal-d3 { transition-delay: 240ms; } .reveal-d4 { transition-delay: 320ms; } .reveal-d5 { transition-delay: 400ms; } /* Marquee */ @keyframes marquee-left { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } @keyframes marquee-right { 0% { transform: translateX(-50%); } 100% { transform: translateX(0); } } .marquee-track { display: flex; width: max-content; gap: 1.25rem; animation: marquee-left 60s linear infinite; will-change: transform; } .marquee-track-reverse { animation-name: marquee-right; animation-duration: 75s; } .marquee-viewport:hover .marquee-track { animation-play-state: paused; } .marquee-mask { -webkit-mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent); mask-image: linear-gradient(to right, transparent, black 8%, black 92%, transparent); } /* Scrollbar styling */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* 가로 스크롤 탭바 등에서 스크롤바 시각 숨김 (mypage 7-tab 모바일) */ .scrollbar-hide { scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; }