/* D3RO Voice Admin CRM — "Midnight Glass v3" Global Styles */ /* 폰트는 layout.tsx 의 Pretendard Variable 다이나믹 서브셋 링크로 로드한다 (렌더를 막는 @import 이중 로드는 제거). 색은 @d3ro/ui SSOT가 MuiCssBaseline로 주입하는 --d3-* 만 쓴다 (로컬 hex 폴백 없음). */ * { box-sizing: border-box; } /* 의미적 강조는 세미볼드(600)까지 — 볼드(700+) 타이포그래피 금지 */ strong, b { font-weight: var(--d3-weight-strong); } body { margin: 0; padding: 0; background-color: var(--d3-bg-app); color: var(--d3-text-primary); font-family: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; background-image: radial-gradient(ellipse 60% 40% at 10% 0%, color-mix(in srgb, var(--d3-tag-cyan) 8%, transparent) 0%, transparent 60%), radial-gradient(ellipse 50% 50% at 90% 10%, color-mix(in srgb, var(--d3-accent-main) 9%, transparent) 0%, transparent 60%), radial-gradient(ellipse 40% 40% at 50% 90%, color-mix(in srgb, var(--d3-tag-purple) 6%, transparent) 0%, transparent 50%); background-attachment: fixed; } /* Ambient Radial Top Glow */ .admin-ambient-glow { position: fixed; top: 0; left: 0; right: 0; height: 320px; background: radial-gradient( 50% 100% at 50% 0%, color-mix(in srgb, var(--d3-accent-main) 12%, transparent) 0%, color-mix(in srgb, var(--d3-tag-cyan) 4%, transparent) 40%, transparent 100% ); pointer-events: none; z-index: 0; } /* High-End Subtle Grid Pattern */ .bg-grid { background-image: linear-gradient(to right, var(--d3-glass-hairline) 1px, transparent 1px), linear-gradient(to bottom, var(--d3-glass-hairline) 1px, transparent 1px); background-size: 32px 32px; } /* Glass Sheen Effect */ .glass-sheen { position: relative; overflow: hidden; } .glass-sheen::before { content: ''; position: absolute; inset: 0; border-radius: inherit; background: var(--d3-glass-sheen); pointer-events: none; } /* Glow effects */ .glow-white { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-text-primary) 40%, transparent); } .glow-green { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-status-success) 50%, transparent); } .glow-orange { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-status-warning) 50%, transparent); } .glow-red { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-status-danger) 50%, transparent); } .glow-blue { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-accent-main) 50%, transparent); } .glow-purple { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-tag-purple) 50%, transparent); } .glow-cyan { text-shadow: 0 0 15px color-mix(in srgb, var(--d3-tag-cyan) 50%, transparent); } /* Custom Sleek Scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: var(--d3-bg-inset-soft); } ::-webkit-scrollbar-thumb { background: var(--d3-glass-hairline); border-radius: 999px; } ::-webkit-scrollbar-thumb:hover { background: var(--d3-glass-hairlineStrong); } /* Pulse animation for live status */ @keyframes pulse-ring { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(2.2); opacity: 0; } } .status-dot-pulse { position: relative; } .status-dot-pulse::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: var(--d3-status-success); animation: pulse-ring 2s var(--d3-ease-out) infinite; } /* Selection */ ::selection { background: color-mix(in srgb, var(--d3-accent-main) 35%, transparent); color: var(--d3-accent-ink); }