@import "tailwindcss"; @custom-variant dark (&:where(.dark, .dark *)); :root { font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif; color: #0f172a; background: #f8fafc; } *, *::before, *::after { box-sizing: border-box; } html, body, #root { width: 100%; min-height: 100%; overflow-x: hidden; -webkit-text-size-adjust: 100%; } body { margin: 0; min-width: 320px; overflow-x: hidden; } img, video, canvas, svg { max-width: 100%; } button, input, textarea, select { font: inherit; min-width: 0; } @media (max-width: 767px) { input, textarea, select { font-size: 16px !important; } } @layer components { label > span:first-child, .crm-field-label { font-size: 0.875rem; line-height: 1.4; font-weight: 500; color: #334155; } .dark label > span:first-child, .dark .crm-field-label { color: #cbd5e1; } .crm-field-note { font-size: 0.75rem; line-height: 1.6; color: #64748b; } .dark .crm-field-note { color: #94a3b8; } .crm-empty-state { text-align: center; font-size: 0.875rem; line-height: 1.6; color: #94a3b8; } .dark .crm-empty-state { color: #64748b; } .crm-input-text { font-size: 0.875rem; line-height: 1.55; border-radius: 1rem; min-height: 3rem; } .crm-input-box { border-radius: 1rem; min-height: 3rem; padding: 0.75rem 1rem; } .crm-input-box-readonly { border-radius: 1rem; min-height: 3rem; padding: 0.75rem 1rem; } .crm-btn { min-height: 3rem; border-radius: 1rem; padding: 0.75rem 1rem; font-size: 0.875rem; line-height: 1.4; font-weight: 600; transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; } .crm-btn-sm { min-height: 2.75rem; border-radius: 1rem; padding: 0.625rem 1rem; font-size: 0.875rem; line-height: 1.4; font-weight: 500; transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; } .crm-btn-primary { background: #7c3aed; color: #fff; box-shadow: 0 10px 22px rgba(124, 58, 237, 0.2); } .crm-btn-primary:hover { background: #6d28d9; } .crm-btn-secondary { border: 1px solid #cbd5e1; background: rgba(255, 255, 255, 0.96); color: #334155; } .crm-btn-secondary:hover { border-color: #a5b4fc; background: #f8fafc; color: #4c1d95; } .crm-btn-success { background: #059669; color: #fff; box-shadow: 0 10px 22px rgba(5, 150, 105, 0.18); } .crm-btn-success:hover { background: #047857; } .crm-btn-danger { border: 1px solid #fecdd3; background: #fff1f2; color: #e11d48; } .crm-btn-danger:hover { background: #ffe4e6; color: #be123c; } .crm-btn-chip { display: inline-flex; align-items: center; gap: 0.35rem; border-radius: 9999px; border: 1px solid #ddd6fe; background: #f5f3ff; color: #7c3aed; } .crm-btn-chip:hover { border-color: #c4b5fd; background: #ede9fe; } .crm-icon-sm, .crm-icon-md, .crm-icon-lg { flex-shrink: 0; stroke-width: 1.85; } .crm-icon-sm { width: 0.875rem; height: 0.875rem; } .crm-icon-md { width: 1rem; height: 1rem; } .crm-icon-lg { width: 1.25rem; height: 1.25rem; } .crm-tone-neutral, .crm-tone-brand, .crm-tone-success, .crm-tone-warning, .crm-tone-danger { border-radius: 1rem; } .crm-tone-neutral { background: #f1f5f9; color: #64748b; } .crm-tone-brand { background: #f5f3ff; color: #7c3aed; } .crm-tone-success { background: #ecfdf5; color: #059669; } .crm-tone-warning { background: #fffbeb; color: #d97706; } .crm-tone-danger { background: #fff1f2; color: #e11d48; } .crm-card { border-radius: 1rem; border: 1px solid #e2e8f0; background: rgba(255, 255, 255, 0.96); box-shadow: 0 10px 30px rgba(15, 23, 42, 0.06); backdrop-filter: blur(12px); } .crm-card-subtle { border-radius: 1rem; border: 1px solid #eef2f7; background: rgba(248, 250, 252, 0.72); } .dark .crm-card { border-color: rgba(51, 65, 85, 0.9); background: rgba(15, 23, 42, 0.72); box-shadow: 0 12px 32px rgba(2, 6, 23, 0.28); } .dark .crm-card-subtle { border-color: rgba(51, 65, 85, 0.8); background: rgba(30, 41, 59, 0.38); } .dark .crm-btn-primary { box-shadow: 0 12px 24px rgba(109, 40, 217, 0.24); } .dark .crm-btn-secondary { border-color: rgba(51, 65, 85, 0.9); background: rgba(15, 23, 42, 0.72); color: #cbd5e1; } .dark .crm-btn-secondary:hover { border-color: rgba(139, 92, 246, 0.5); background: rgba(30, 41, 59, 0.9); color: #ddd6fe; } .dark .crm-btn-success { box-shadow: 0 12px 24px rgba(5, 150, 105, 0.2); } .dark .crm-btn-danger { border-color: rgba(190, 24, 93, 0.35); background: rgba(244, 63, 94, 0.12); color: #fda4af; } .dark .crm-btn-danger:hover { background: rgba(244, 63, 94, 0.18); color: #fecdd3; } .dark .crm-btn-chip { border-color: rgba(139, 92, 246, 0.22); background: rgba(139, 92, 246, 0.14); color: #c4b5fd; } .dark .crm-btn-chip:hover { border-color: rgba(139, 92, 246, 0.35); background: rgba(139, 92, 246, 0.2); } .dark .crm-tone-neutral { background: rgba(51, 65, 85, 0.85); color: #cbd5e1; } .dark .crm-tone-brand { background: rgba(139, 92, 246, 0.14); color: #c4b5fd; } .dark .crm-tone-success { background: rgba(16, 185, 129, 0.14); color: #6ee7b7; } .dark .crm-tone-warning { background: rgba(245, 158, 11, 0.14); color: #fcd34d; } .dark .crm-tone-danger { background: rgba(244, 63, 94, 0.14); color: #fda4af; } .crm-pill { display: inline-flex; align-items: center; border-radius: 9999px; padding: 0.3rem 0.65rem; font-size: 0.75rem; line-height: 1.2; font-weight: 600; } .crm-pill-neutral { background: #f1f5f9; color: #475569; } .crm-pill-violet { background: #f5f3ff; color: #7c3aed; } .crm-pill-emerald { background: #ecfdf5; color: #059669; } .crm-pill-amber { background: #fffbeb; color: #d97706; } .crm-pill-rose { background: #fff1f2; color: #e11d48; } .dark .crm-pill-neutral { background: rgba(51, 65, 85, 0.85); color: #cbd5e1; } .dark .crm-pill-violet { background: rgba(139, 92, 246, 0.14); color: #c4b5fd; } .dark .crm-pill-emerald { background: rgba(16, 185, 129, 0.14); color: #6ee7b7; } .dark .crm-pill-amber { background: rgba(245, 158, 11, 0.14); color: #fcd34d; } .dark .crm-pill-rose { background: rgba(244, 63, 94, 0.14); color: #fda4af; } .crm-page-stack { display: flex; flex-direction: column; gap: 1.25rem; } .crm-page-header { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 0.75rem; } .crm-page-heading { display: flex; min-width: 0; flex-direction: column; gap: 0.25rem; } .crm-page-title { font-size: 1.25rem; line-height: 1.2; font-weight: 700; letter-spacing: -0.02em; color: #0f172a; } .crm-page-subtitle { font-size: 0.8125rem; line-height: 1.6; color: #64748b; } .crm-section-stack { display: flex; flex-direction: column; gap: 1rem; } .crm-list-stack { display: flex; flex-direction: column; gap: 0.875rem; } .crm-card-pad { padding: 1rem; } .crm-card-pad-lg { padding: 1.25rem; } .crm-filter-bar { border-radius: 1rem; border: 1px solid #e2e8f0; background: rgba(248, 250, 252, 0.82); padding: 0.25rem; } .crm-empty-panel { border-radius: 1rem; border: 1px dashed #cbd5e1; background: rgba(248, 250, 252, 0.72); padding: 1rem; text-align: center; font-size: 0.875rem; line-height: 1.6; color: #94a3b8; } .crm-alert { border-radius: 1rem; border: 1px solid #e2e8f0; padding: 0.875rem 1rem; font-size: 0.875rem; line-height: 1.6; } .crm-alert-error { border-color: #fecdd3; background: #fff1f2; color: #e11d48; } .crm-alert-success { border-color: #bbf7d0; background: #ecfdf5; color: #059669; } .crm-alert-info { border-color: #cbd5e1; background: rgba(248, 250, 252, 0.78); color: #64748b; } .crm-modal-stack { display: flex; flex-direction: column; gap: 1.25rem; } .crm-form-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; } .crm-form-grid > * { min-width: 0; } .crm-form-section { display: flex; flex-direction: column; gap: 0.875rem; border-radius: 1rem; border: 1px solid #e2e8f0; background: rgba(248, 250, 252, 0.72); padding: 1rem; } .crm-form-section-header { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; } .crm-detail-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; border-radius: 1rem; border: 1px solid #e2e8f0; background: rgba(248, 250, 252, 0.72); padding: 1rem; } .crm-detail-item { display: flex; min-width: 0; flex-direction: column; gap: 0.35rem; } .crm-detail-label { display: flex; align-items: center; gap: 0.25rem; font-size: 0.75rem; line-height: 1.4; color: #64748b; } .crm-detail-value { font-size: 0.9375rem; line-height: 1.6; font-weight: 500; color: #0f172a; overflow-wrap: anywhere; word-break: break-word; } .dark .crm-form-section, .dark .crm-detail-grid { border-color: rgba(51, 65, 85, 0.8); background: rgba(30, 41, 59, 0.38); } .dark .crm-page-title { color: #f8fafc; } .dark .crm-page-subtitle { color: #94a3b8; } .dark .crm-filter-bar { border-color: rgba(51, 65, 85, 0.8); background: rgba(15, 23, 42, 0.46); } .dark .crm-empty-panel { border-color: rgba(51, 65, 85, 0.9); background: rgba(30, 41, 59, 0.34); color: #64748b; } .dark .crm-alert { border-color: rgba(51, 65, 85, 0.8); } .dark .crm-alert-error { border-color: rgba(190, 24, 93, 0.35); background: rgba(244, 63, 94, 0.12); color: #fda4af; } .dark .crm-alert-success { border-color: rgba(5, 150, 105, 0.35); background: rgba(16, 185, 129, 0.12); color: #6ee7b7; } .dark .crm-alert-info { border-color: rgba(51, 65, 85, 0.8); background: rgba(30, 41, 59, 0.38); color: #94a3b8; } .dark .crm-detail-label { color: #94a3b8; } .dark .crm-detail-value { color: #f8fafc; } @media (min-width: 640px) { .crm-page-stack { gap: 1.5rem; } .crm-page-header { gap: 1rem; } .crm-page-title { font-size: 1.5rem; } .crm-page-subtitle { font-size: 0.875rem; } .crm-section-stack { gap: 1.25rem; } .crm-list-stack { gap: 1rem; } .crm-card-pad { padding: 1.25rem; } .crm-card-pad-lg { padding: 1.5rem; } .crm-modal-stack { gap: 1.5rem; } .crm-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; } .crm-form-section, .crm-detail-grid { padding: 1.25rem; } } .crm-input-text::placeholder, input::placeholder, textarea::placeholder { color: #94a3b8; opacity: 1; } input[type="date"].crm-input-text { min-width: 0; width: 100%; max-width: 100%; -webkit-appearance: none; appearance: none; } .dark .crm-input-text::placeholder, .dark input::placeholder, .dark textarea::placeholder { color: #64748b; } } @layer utilities { .break-anywhere { overflow-wrap: anywhere; word-break: break-word; } .scrollbar-hide { /* IE and Edge */ -ms-overflow-style: none; /* Firefox */ scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; } }