@import "tailwindcss"; @theme { --font-sans: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; /* STYLE_GUIDE §3.2 字号补充 token */ --text-2xs: 0.625rem; /* 10px */ --text-3xs: 0.5625rem; /* 9px */ --text-4xs: 0.5rem; /* 8px */ /* STYLE_GUIDE §3.3 字重补充 token */ --font-weight-medium-plus: 650; --color-brand: #1978d4; --color-brand-strong: #0e5fb9; --color-brand-soft: #edf6ff; --color-brand-deep: #0e5bad; --color-success: #18b979; --color-success-strong: #0f7d55; --color-success-soft: #e8f7f1; --color-danger: #d75b5b; --color-danger-strong: #a94f4f; --color-danger-soft: #fff6f6; --color-warning: #e6a33c; --color-warning-soft: #fff0ee; --color-ink: #27394d; --color-ink-muted: #5d7186; --color-ink-subtle: #8b99a8; --color-ink-caption: #748598; --color-line: #dce4ec; --color-line-soft: #edf1f5; --color-bg: #f3f6f9; --color-bg-panel: #ffffff; --color-bg-canvas: #f9fbfd; --color-bg-log: #17212b; /* STYLE_GUIDE §4.2 间距补充 token */ --spacing-page-x: 22px; --spacing-button-x: 15px; --spacing-gap-icon: 7px; --spacing-gap-sm: 5px; --spacing-gap-md: 9px; } @theme inline { --color-sidebar: var(--sidebar-background); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); } :root { --sidebar-background: #09233f; --sidebar-foreground: #c9d7e7; --sidebar-primary: #1479e8; --sidebar-primary-foreground: #ffffff; --sidebar-accent: rgba(255, 255, 255, 0.06); --sidebar-accent-foreground: #ffffff; --sidebar-border: rgba(255, 255, 255, 0.08); --sidebar-ring: #5ca9ff; } @font-face { font-family: "Inter"; src: url("/fonts/Inter-Variable.ttf") format("truetype"); font-style: normal; font-weight: 100 900; font-display: swap; } @font-face { font-family: "Inter"; src: url("/fonts/Inter-Variable-Italic.ttf") format("truetype"); font-style: italic; font-weight: 100 900; font-display: swap; } @layer base { :root { font-family: var(--font-sans); color: #1f354b; background: #f3f6f9; font-synthesis: none; text-rendering: optimizeLegibility; } html, body { margin: 0; min-width: 1120px; min-height: 100vh; overflow: hidden; } *, *::before, *::after { box-sizing: border-box; } button, input, select { font: inherit; } button { color: inherit; } } @layer utilities { .scrollbar-thin::-webkit-scrollbar { width: 5px; } .scrollbar-thin::-webkit-scrollbar-track { background: transparent; } .scrollbar-thin::-webkit-scrollbar-thumb { border-radius: 999px; background: #d9e1e9; } .scrollbar-thin::-webkit-scrollbar-thumb:hover { background: #c4d0dc; } /* 侧边栏双层渐变背景 — Tailwind 任意值无法可靠表达逗号分隔的多层 background */ .sidebar-shell { background: radial-gradient(circle at 10% 1%, rgb(28 105 186 / 25%), transparent 27%), #09233f; } .welcome-panel-shell { background: radial-gradient(circle at 50% 39%, rgb(74 150 225 / 9%), transparent 24%), radial-gradient(circle, #d3dee8 1px, transparent 1px); background-size: auto, 18px 18px; } .dashboard-hero-shell { background: linear-gradient(125deg, #0b3d69, #1978d4); } .trend-chart-bg { background: repeating-linear-gradient(to bottom, #fff 0, #fff 44px, #eef3f7 45px); } .dashboard-donut { background: conic-gradient(#318de0 0 67%, #72c9b0 67% 86%, #f3b75c 86% 100%); } .dashboard-donut::after { position: absolute; width: 78px; height: 78px; border-radius: 50%; background: #fff; content: ""; } .tree-skeleton-bar { background: linear-gradient(90deg, #f2f5f8, #fafbfc, #f2f5f8); background-size: 200% 100%; animation: shimmer 1.3s infinite; } .tabbar-scroll::-webkit-scrollbar { height: 6px; } .tabbar-scroll::-webkit-scrollbar-track { background: #f1f3f5; } .tabbar-scroll::-webkit-scrollbar-thumb { background: #c9d6e4; border-radius: 3px; } .tabbar-scroll::-webkit-scrollbar-thumb:hover { background: #a8b9ca; } .stage-dot-editing { box-shadow: 0 0 0 3px rgb(36 149 211 / 13%); animation: lock-pulse 1.8s ease-in-out infinite; } .editor-canvas-shell { background: linear-gradient(rgb(255 255 255 / 82%), rgb(255 255 255 / 82%)), radial-gradient(circle, #c9d8e7 1px, transparent 1px); background-color: #f4f7fa; background-size: auto, 18px 18px; } .modal-panel { animation: modal-in 0.18s ease-out; } .notebook-md h1, .notebook-md h2, .notebook-md h3, .notebook-md p, .notebook-md li { margin: 6px 0; color: #24292f; font-size: 14px; line-height: 1.6; } .notebook-md h1 { font-size: 24px; color: #1f6feb; font-weight: 600; } .notebook-md h2 { font-size: 20px; color: #1f6feb; font-weight: 600; } .notebook-md h3 { font-size: 16px; color: #24292f; font-weight: 600; } .notebook-md ul, .notebook-md ol { padding-left: 24px; } .notebook-md li { margin-left: 0; list-style-position: outside; } } @keyframes shimmer { to { background-position: -200% 0; } } @keyframes lock-pulse { 50% { opacity: 0.5; transform: scale(0.78); } } @keyframes modal-in { from { opacity: 0; transform: translateY(8px) scale(0.985); } } /* Shared UI classes still used by admin / schedules pages */ .icon-button { display: grid; width: 34px; height: 34px; place-items: center; border: 1px solid var(--color-line); border-radius: 7px; background: #fff; cursor: pointer; } .icon-button:hover { border-color: #b9c9da; background: #f7faff; } .avatar { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; color: #fff; background: linear-gradient(145deg, #3b92ed, #1869c9); font-size: 14px; font-weight: 700; }