161 lines
4.1 KiB
CSS
161 lines
4.1 KiB
CSS
@import "tailwindcss";
|
|
|
|
/* Self-hosted Pretendard Variable — CDN/네트워크 차단 환경에서도 동일 렌더링 보장 */
|
|
@font-face {
|
|
font-family: 'Pretendard Variable';
|
|
font-weight: 45 920;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
src: url('/fonts/PretendardVariable.woff2') format('woff2-variations');
|
|
}
|
|
|
|
@theme {
|
|
/* fallback 체인: self-host Pretendard → CDN Pretendard → Inter → 한글 시스템 폰트 (Mac/Win/Android) → sans-serif */
|
|
--font-sans: "Pretendard Variable", "Pretendard", "Inter", "Apple SD Gothic Neo", "Malgun Gothic", "맑은 고딕", "Noto Sans KR", ui-sans-serif, system-ui, sans-serif;
|
|
--font-serif: "Playfair Display", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
|
|
|
|
--color-primary-900: #0A1128; /* Dark Navy for text and buttons */
|
|
--color-primary-800: #1A2B5E;
|
|
--color-primary-50: #F4F6FB;
|
|
|
|
--color-accent: #6C5CE7; /* Purple accent */
|
|
|
|
/* INFINITH Semantic Status Colors — pastel palette derived from brand gradient */
|
|
/* Critical/Negative: warm rose (peach-toned) */
|
|
--color-status-critical-bg: #FFF0F0;
|
|
--color-status-critical-text: #7C3A4B;
|
|
--color-status-critical-border: #F5D5DC;
|
|
--color-status-critical-dot: #D4889A;
|
|
|
|
/* Warning/Pending: warm sand (cream-toned) */
|
|
--color-status-warning-bg: #FFF6ED;
|
|
--color-status-warning-text: #7C5C3A;
|
|
--color-status-warning-border: #F5E0C5;
|
|
--color-status-warning-dot: #D4A872;
|
|
|
|
/* Good/Positive: soft lavender (purple-toned) */
|
|
--color-status-good-bg: #F3F0FF;
|
|
--color-status-good-text: #4A3A7C;
|
|
--color-status-good-border: #D5CDF5;
|
|
--color-status-good-dot: #9B8AD4;
|
|
|
|
/* Excellent/Info: cool periwinkle (blue-lavender) */
|
|
--color-status-info-bg: #EFF0FF;
|
|
--color-status-info-text: #3A3F7C;
|
|
--color-status-info-border: #C5CBF5;
|
|
--color-status-info-dot: #7A84D4;
|
|
|
|
--animate-blob: blob 7s infinite;
|
|
}
|
|
|
|
@keyframes blob {
|
|
0% {
|
|
transform: translate3d(0, 0, 0) scale(1);
|
|
}
|
|
33% {
|
|
transform: translate3d(15px, -25px, 0) scale(1.05);
|
|
}
|
|
66% {
|
|
transform: translate3d(-10px, 10px, 0) scale(0.95);
|
|
}
|
|
100% {
|
|
transform: translate3d(0, 0, 0) scale(1);
|
|
}
|
|
}
|
|
|
|
.animation-delay-2000 {
|
|
animation-delay: 2s;
|
|
}
|
|
|
|
.animation-delay-4000 {
|
|
animation-delay: 4s;
|
|
}
|
|
|
|
@layer base {
|
|
html {
|
|
overflow-x: hidden;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: rgba(0,0,0,0.15) transparent;
|
|
}
|
|
html::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
html::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
html::-webkit-scrollbar-thumb {
|
|
background: rgba(0,0,0,0.15);
|
|
border-radius: 3px;
|
|
}
|
|
body {
|
|
@apply font-sans text-slate-800 bg-slate-50 antialiased;
|
|
}
|
|
|
|
h1, h2, h3, h4, h5, h6 {
|
|
@apply font-serif text-primary-900;
|
|
}
|
|
|
|
/* Headings inside dark/white-text containers inherit white */
|
|
.text-white h1, .text-white h2, .text-white h3,
|
|
.text-white h4, .text-white h5, .text-white h6 {
|
|
@apply text-white;
|
|
}
|
|
}
|
|
|
|
.glass-card {
|
|
@apply bg-white/70 backdrop-blur-xl border border-white/40 shadow-[0_8px_32px_0_rgba(31,38,135,0.07)] rounded-2xl;
|
|
}
|
|
|
|
.gradient-bg {
|
|
background: radial-gradient(circle at top left, #fdfbfb, #f3e7e9);
|
|
@apply relative;
|
|
}
|
|
|
|
.gradient-bg::before {
|
|
content: "";
|
|
@apply absolute inset-0 bg-white/30 backdrop-blur-[2px] pointer-events-none;
|
|
}
|
|
|
|
.soft-gradient {
|
|
background: linear-gradient(145deg, #fdfbfb 0%, #ebedee 100%);
|
|
}
|
|
|
|
.text-gradient {
|
|
background: linear-gradient(to right, #0A1128, #3b5998);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
}
|
|
|
|
@keyframes blob-large {
|
|
0% {
|
|
transform: translate3d(0, 0, 0) scale(1);
|
|
}
|
|
33% {
|
|
transform: translate3d(4vw, -4vh, 0) scale(1.05);
|
|
}
|
|
66% {
|
|
transform: translate3d(-4vw, 4vh, 0) scale(0.95);
|
|
}
|
|
100% {
|
|
transform: translate3d(0, 0, 0) scale(1);
|
|
}
|
|
}
|
|
|
|
/* GPU-accelerate all blob animations to prevent layout jitter */
|
|
.animate-blob, .animate-blob-large {
|
|
will-change: transform;
|
|
contain: layout style;
|
|
backface-visibility: hidden;
|
|
}
|
|
|
|
.animate-blob-large {
|
|
animation: blob-large 25s infinite ease-in-out;
|
|
}
|
|
|
|
.animation-delay-7000 {
|
|
animation-delay: 7s;
|
|
}
|
|
|
|
.animation-delay-14000 {
|
|
animation-delay: 14s;
|
|
} |