d3ro-voice/apps/admin/src/app/globals.css
Yun Chan 5aa268970a feat(admin): read live back-office data in every console view
Models, pipelines, users, subscriptions, usage, audit log, ads, and releases
still rendered placeholder or duplicated implementations from the earlier
admin split. They now read the live back-office API, share one sidebar and
console theme, and the license issuer dialog uses the rotated signing key.
2026-09-16 23:24:35 +09:00

105 lines
3.7 KiB
CSS

/* D3RO Voice Admin CRM — "Midnight Glass v3" Global Styles */
/* 폰트는 layout.tsx <head>의 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);
}