@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; /* ─── Kinetic Ether Tokens (다크 테마 섹션 전용) ─── */ --kx-surface: #060e20; --kx-surface-low: #091328; --kx-surface-mid: #0f1930; --kx-surface-high: #141f38; --kx-surface-bright: #1f2b49; --kx-on-surface: #dee5ff; --kx-on-variant: #a3aac4; --kx-primary: #cc97ff; --kx-primary-dim: #9c48ea; --kx-secondary: #53ddfc; --kx-secondary-dim: #40ceed; --kx-outline: rgba(64, 72, 93, 0.15); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-primary: var(--primary); --color-secondary: var(--secondary); --font-sans: var(--font-jua), 'Jua', -apple-system, system-ui, sans-serif; --font-mono: var(--font-jua), 'Jua', ui-monospace, monospace; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { background: var(--background); color: var(--foreground); font-family: var(--font-jua), 'Jua', -apple-system, system-ui, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* font-mono utility → Jua 통일 */ .font-mono, code, pre, kbd, samp { font-family: var(--font-jua), 'Jua', ui-monospace, monospace; } /* Dashboard layout */ .dashboard-layout { display: flex; height: 100dvh; overflow: hidden; background: var(--background); } .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: var(--font-jua), 'Jua', 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: var(--font-jua), 'Jua', system-ui, sans-serif; letter-spacing: -0.01em; color: inherit; } .kx-label { font-family: var(--font-jua), 'Jua', 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: linear-gradient(135deg, #cc97ff 0%, #c284ff 100%); color: #0b0113; font-weight: 700; box-shadow: 0 0 20px 0 rgba(168, 85, 247, 0.4); transition: transform 0.15s ease, box-shadow 0.15s ease; } .kx-btn-primary:hover { transform: translateY(-1px); box-shadow: 0 0 28px 0 rgba(168, 85, 247, 0.55); } .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 { background: linear-gradient(135deg, #cc97ff 0%, #53ddfc 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .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; }