feat: 收口组件样式并调整移动端侧栏
This commit is contained in:
@@ -0,0 +1,433 @@
|
||||
/* 管理后台视口边界:document 不滚动,各个工作区和面板独立滚动。 */
|
||||
:root {
|
||||
--app-ink: #191919;
|
||||
--app-muted: #707070;
|
||||
--app-body: #ededed;
|
||||
--app-surface: #ffffff;
|
||||
--app-subtle: #f7f7f7;
|
||||
--app-control: #f0f0f0;
|
||||
--app-control-hover: #e5e5e5;
|
||||
--app-field: #ffffff;
|
||||
--app-field-hover: #ffffff;
|
||||
--app-border: #e5e5e5;
|
||||
--app-inverse: #ffffff;
|
||||
--app-accent: #07c160;
|
||||
--app-accent-hover: #2dcb79;
|
||||
--app-accent-text: #087c42;
|
||||
--app-on-accent: #ffffff;
|
||||
--app-button-primary: #078640;
|
||||
--app-button-hover: #087c42;
|
||||
--app-button-pressed: #066b36;
|
||||
--app-disabled-bg: #e4e4e4;
|
||||
--app-disabled-text: #8c8c8c;
|
||||
--app-selected: #e4f4e9;
|
||||
--app-shadow: #00000018;
|
||||
--app-danger: #a93232;
|
||||
--app-success: #087c42;
|
||||
}
|
||||
:root[data-theme='dark'] {
|
||||
--app-ink: #d9d9d9;
|
||||
--app-muted: #a3a3a3;
|
||||
--app-body: #111111;
|
||||
--app-surface: #191919;
|
||||
--app-subtle: #232323;
|
||||
--app-control: #2b2b2b;
|
||||
--app-control-hover: #353535;
|
||||
--app-field: #2b2b2b;
|
||||
--app-field-hover: #353535;
|
||||
--app-disabled-bg: #303030;
|
||||
--app-disabled-text: #808080;
|
||||
--app-border: #333333;
|
||||
--app-inverse: #111111;
|
||||
--app-accent-text: #5cd693;
|
||||
--app-selected: #173527;
|
||||
--app-shadow: #00000055;
|
||||
--app-danger: #fa7373;
|
||||
--app-success: #5cd693;
|
||||
}
|
||||
html,
|
||||
body,
|
||||
#app,
|
||||
.app-provider {
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
html {
|
||||
background: var(--app-body);
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
/* 外壳固定品牌与底部设置;只有菜单自身使用 NScrollbar 滚动。 */
|
||||
/* Naive 菜单背景默认左右内缩 8px;只铺满导航行,不改图标与文字缩进。 */
|
||||
/* 按钮保持直角,单图标按钮以 Naive 当前尺寸为边长,加载时也不改变宽度。 */
|
||||
.n-button {
|
||||
border-radius: 0;
|
||||
}
|
||||
.n-button.icon-button {
|
||||
width: var(--n-height);
|
||||
min-width: var(--n-height);
|
||||
height: var(--n-height);
|
||||
padding: 0;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.n-button.icon-button .n-button__icon {
|
||||
margin: 0;
|
||||
}
|
||||
.n-button:focus-visible {
|
||||
outline: 2px solid var(--app-accent-text);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
/* 标题移除额外按钮后让名称使用剩余空间;未完成项目的引导仍留在内容区。 */
|
||||
/* 常用工具固定在滚动区外;低频操作使用局部抽屉,不叠加占高面板。 */
|
||||
.workspace-toolbar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px 16px;
|
||||
min-height: 34px;
|
||||
}
|
||||
.toolbar-episode {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
flex: 0 1 340px;
|
||||
min-width: 180px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.toolbar-episode .n-select {
|
||||
min-width: 0;
|
||||
}
|
||||
.toolbar-metrics,
|
||||
.toolbar-summary {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px 16px;
|
||||
color: var(--app-muted);
|
||||
font-size: 12px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.toolbar-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
margin-left: auto;
|
||||
}
|
||||
/* 身份说明与折叠入口分开,避免正文紧贴下一组操作。 */
|
||||
/* 与 34px 中号输入框共用一行;不再通过 pb-2 / pb-3 手动垫高复选框。 */
|
||||
.n-checkbox.control-row-checkbox {
|
||||
align-self: end;
|
||||
align-items: center;
|
||||
min-height: 34px;
|
||||
padding-block: 0;
|
||||
}
|
||||
.control-row-checkbox .n-checkbox-box-wrapper {
|
||||
align-self: center;
|
||||
}
|
||||
/* 拆解配置跟随抽屉实际宽度;标题 20px + 间距 8px,下方统一使用 34px 控件行。 */
|
||||
/* 筛选与关联行整体吸顶,底部不留固定分隔带;列表自己的顶部间距随内容滚走。 */
|
||||
/* 使用成熟的多列排版实现瀑布流;完整卡片不跨列,窄容器自动减少列数。 */
|
||||
.workspace-feedback.n-scrollbar {
|
||||
flex-shrink: 0;
|
||||
height: auto;
|
||||
max-height: min(24dvh, 160px);
|
||||
overflow: hidden;
|
||||
}
|
||||
.workspace-feedback .n-alert + .n-alert {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.overview-content {
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
/* 目录统一为固定标题/筛选区和独立滚动列表;不再依赖按钮的默认行高与内边距。 */
|
||||
.directory-panel {
|
||||
--app-field: var(--app-surface);
|
||||
--app-field-hover: var(--app-surface);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
background: var(--app-subtle);
|
||||
}
|
||||
.directory-heading {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
flex-shrink: 0;
|
||||
gap: 8px;
|
||||
padding: 18px 16px 14px;
|
||||
font-size: 11px;
|
||||
color: var(--app-muted);
|
||||
}
|
||||
.directory-heading h3 {
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
color: var(--app-ink);
|
||||
}
|
||||
.directory-heading h3 span {
|
||||
margin-left: 8px;
|
||||
font-size: 11px;
|
||||
font-weight: 400;
|
||||
color: var(--app-muted);
|
||||
}
|
||||
.directory-scroll {
|
||||
flex: 1;
|
||||
}
|
||||
.directory-list-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
padding: 8px 0 16px;
|
||||
}
|
||||
/* 可选前导内容用于主体母版,不改变剧集与镜头目录的原有排版。 */
|
||||
.directory-status {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
padding: 1px 5px;
|
||||
border-radius: 0;
|
||||
background: var(--app-control);
|
||||
}
|
||||
.directory-status svg {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
/* 标签与操作由同一 NTabs 导航行管理,suffix 共享底线及垂直中心。 */
|
||||
.tabs-toolbar {
|
||||
container: tabs-toolbar / inline-size;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
.workspace-tabs.n-tabs {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
.workspace-tabs > .n-tabs-nav {
|
||||
align-items: stretch;
|
||||
}
|
||||
.workspace-tabs .n-tabs-tab {
|
||||
min-height: 40px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.workspace-tabs .n-tabs-nav-scroll-wrapper {
|
||||
min-width: 0;
|
||||
}
|
||||
.workspace-tabs .n-tabs-nav__suffix {
|
||||
align-items: center;
|
||||
flex-shrink: 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
.tabs-toolbar-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
flex-wrap: wrap;
|
||||
gap: 4px 14px;
|
||||
min-height: 40px;
|
||||
}
|
||||
.tabs-toolbar-actions .n-button,
|
||||
.tabs-toolbar-actions .text-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 32px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
/* 窄内容区允许 suffix 独占一行;Tabs 本身继续使用组件内置横向滚动。 */
|
||||
@container tabs-toolbar (max-width: 600px) {
|
||||
.workspace-tabs > .n-tabs-nav {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.workspace-tabs .n-tabs-nav-scroll-wrapper {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
.workspace-tabs .n-tabs-nav__suffix {
|
||||
width: 100%;
|
||||
justify-content: flex-end;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
/* 筛选按内容区的实际宽度换行,避免侧栏展开后下拉框把其他控件挤到下一行。 */
|
||||
/* 镜头选择和图库筛选共用一行,以控件中心对齐;窄屏保留完整筛选组,不挤压复选框。 */
|
||||
.content-with-history {
|
||||
height: clamp(360px, 66dvh, 850px);
|
||||
min-height: 0;
|
||||
grid-template-columns: minmax(0, 1fr) 207px;
|
||||
}
|
||||
.content-with-history > main,
|
||||
.content-with-history > aside {
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
/* 拆解结果使用剩余高度,不能再用视口比例定高后隐藏长列表。 */
|
||||
/* 剧集选择、统计和下一步入口共用一行,避免空操作行与双层顶部留白。 */
|
||||
/* 连续阅读区保留双栏,执行记录按需展开,不挤占默认阅读宽度。 */
|
||||
/* 面板只负责尺寸与裁切;滚动和深浅主题滚动条统一交给 Naive UI。 */
|
||||
.panel-scroll.n-scrollbar {
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
.n-scrollbar > .n-scrollbar-container {
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
.production-detail,
|
||||
.storyboard-detail,
|
||||
.content-with-history > main {
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
}
|
||||
.image-history.n-scrollbar,
|
||||
.table-scroll.n-scrollbar {
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.image-history.n-scrollbar {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
.image-history-heading {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 6px 16px;
|
||||
margin-block: 16px 8px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.image-history-content {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
padding: 4px 4px 12px;
|
||||
width: max-content;
|
||||
}
|
||||
.code-scroll.n-scrollbar {
|
||||
height: auto;
|
||||
max-height: 420px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.code-scroll .json-view,
|
||||
.code-scroll .storyboard-json {
|
||||
max-height: none;
|
||||
overflow: visible;
|
||||
}
|
||||
/* 项目筛选与搜索框同高,保留更宽的点击区;窄屏可自然换行。 */
|
||||
/* 状态说明与操作各自成组,避免小标签夹在不同尺寸的按钮之间。 */
|
||||
.dialog-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 8px;
|
||||
padding-top: 16px;
|
||||
}
|
||||
/* 预览尺寸不随原图分辨率增长,历史缩略图也不能被按钮默认宽度覆盖。 */
|
||||
.n-button__content {
|
||||
gap: 6px;
|
||||
}
|
||||
.n-button:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
.n-button.image-history-item {
|
||||
width: 128px;
|
||||
min-width: 128px;
|
||||
max-width: 128px;
|
||||
flex: 0 0 128px;
|
||||
height: auto;
|
||||
padding: 6px;
|
||||
white-space: normal;
|
||||
background: var(--app-subtle);
|
||||
}
|
||||
.n-button.image-history-item.selected {
|
||||
background: var(--app-selected);
|
||||
box-shadow: inset 0 0 0 2px var(--app-accent);
|
||||
}
|
||||
.n-button.image-history-item .n-button__content {
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
overflow: hidden;
|
||||
}
|
||||
.image-history-item .asset-image {
|
||||
height: 88px;
|
||||
min-height: 0;
|
||||
aspect-ratio: auto;
|
||||
}
|
||||
.image-history-label {
|
||||
display: block;
|
||||
margin-top: 6px;
|
||||
font-size: 11px;
|
||||
line-height: 1.5;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.image-history-meta {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 4px;
|
||||
margin-top: 6px;
|
||||
color: var(--app-muted);
|
||||
font-size: 10px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
/* 选角进度按抽屉实际宽度排列;按钮尺寸显式覆盖组件默认值。 */
|
||||
/* 主体搜索靠左,统计紧随输入框;窄内容区自然换行,不占满整行或挤压控件。 */
|
||||
/* 诊断筛选按实际空间换行,长 checkpoint ID 不撑开弹窗。 */
|
||||
/* 镜头影响和素材定位使用固定底色;高亮只表示当前定位,不代表素材失效。 */
|
||||
/* 关联素材始终单行横向浏览,数量和长名称不会撑高定位区或压缩图片区域。 */
|
||||
/* 低频记录收起后归还正文宽度,不留下历史列的占位。 */
|
||||
/* 补充说明只按需展开,继续使用平直背景层级,不增加边框或圆角。 */
|
||||
.select-control {
|
||||
min-width: 130px;
|
||||
}
|
||||
.n-checkbox {
|
||||
align-items: flex-start;
|
||||
}
|
||||
.n-checkbox .n-checkbox__label {
|
||||
white-space: normal;
|
||||
}
|
||||
.n-alert {
|
||||
line-height: 1.8;
|
||||
}
|
||||
.n-collapse.panel {
|
||||
padding: 16px;
|
||||
}
|
||||
.n-table.project-table th {
|
||||
background: var(--app-subtle);
|
||||
}
|
||||
@media (max-width: 1000px) {
|
||||
.content-with-history {
|
||||
grid-template-columns: minmax(0, 1fr) 180px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 760px) {
|
||||
.toolbar-episode {
|
||||
flex: 1;
|
||||
}
|
||||
.toolbar-actions {
|
||||
gap: 8px;
|
||||
}
|
||||
.directory-panel {
|
||||
height: 100%;
|
||||
border-right: 0;
|
||||
}
|
||||
.directory-heading {
|
||||
padding: 12px 14px 8px;
|
||||
}
|
||||
.directory-list-content {
|
||||
flex-direction: row;
|
||||
width: max-content;
|
||||
align-items: stretch;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
.content-with-history {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
grid-template-rows: minmax(0, 1fr) 130px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,280 @@
|
||||
@import 'tailwindcss';
|
||||
/* 微信风格明暗主题:灰阶表面搭配绿色操作态,业务排版保持不变。 */
|
||||
@theme {
|
||||
--color-ink: var(--app-ink);
|
||||
--color-muted: var(--app-muted);
|
||||
--color-faint: var(--app-muted);
|
||||
--color-line: var(--app-border);
|
||||
--color-accent: var(--app-accent-text);
|
||||
--color-danger: var(--app-danger);
|
||||
--color-success: var(--app-success);
|
||||
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||||
}
|
||||
@layer base {
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
background: var(--app-body);
|
||||
color: var(--color-ink);
|
||||
font-family: var(--font-sans);
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
button,
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
font: inherit;
|
||||
}
|
||||
button,
|
||||
a,
|
||||
summary {
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
button:not(:disabled),
|
||||
summary,
|
||||
select {
|
||||
cursor: pointer;
|
||||
}
|
||||
button:disabled {
|
||||
opacity: 0.45;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
:focus-visible {
|
||||
outline: 2px solid var(--color-accent);
|
||||
outline-offset: 3px;
|
||||
}
|
||||
input:focus-visible,
|
||||
textarea:focus-visible,
|
||||
select:focus-visible {
|
||||
outline-offset: 1px;
|
||||
}
|
||||
::selection {
|
||||
background: var(--app-selected);
|
||||
color: var(--app-ink);
|
||||
}
|
||||
}
|
||||
@layer components {
|
||||
.eyebrow {
|
||||
font-size: 10px;
|
||||
letter-spacing: 0.11em;
|
||||
color: var(--color-muted);
|
||||
font-weight: 500;
|
||||
}
|
||||
.button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
padding: 9px 14px;
|
||||
min-height: 36px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 0;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
transition:
|
||||
background 0.15s,
|
||||
border-color 0.15s;
|
||||
}
|
||||
.button-primary {
|
||||
background: var(--app-button-primary);
|
||||
color: var(--app-on-accent);
|
||||
}
|
||||
.button-primary:hover:not(:disabled) {
|
||||
background: var(--app-button-hover);
|
||||
}
|
||||
.button-primary:active:not(:disabled) {
|
||||
background: var(--app-button-pressed);
|
||||
}
|
||||
.button:disabled {
|
||||
background: var(--app-disabled-bg);
|
||||
color: var(--app-disabled-text);
|
||||
opacity: 1;
|
||||
}
|
||||
.button-secondary {
|
||||
background: var(--app-control);
|
||||
color: var(--app-ink);
|
||||
}
|
||||
.button-secondary:hover:not(:disabled) {
|
||||
background: var(--app-control-hover);
|
||||
}
|
||||
.text-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
font-size: 11px;
|
||||
color: var(--color-muted);
|
||||
padding: 6px 0;
|
||||
}
|
||||
.text-button:hover:not(:disabled) {
|
||||
color: var(--color-accent);
|
||||
}
|
||||
.panel {
|
||||
--app-field: var(--app-control);
|
||||
--app-field-hover: var(--app-control-hover);
|
||||
background: var(--app-surface);
|
||||
border-radius: 0;
|
||||
}
|
||||
/* 次级信息用低对比底色成组,避免用边框把工作台切成碎片。 */
|
||||
.surface-inset {
|
||||
--app-field: var(--app-surface);
|
||||
--app-field-hover: var(--app-surface);
|
||||
background: var(--app-subtle);
|
||||
}
|
||||
/* 首项与其它条目统一内边距;背景过渡仅用于主题切换,不随鼠标或焦点变化。 */
|
||||
.record-list > article {
|
||||
padding: 20px;
|
||||
transition: background-color 160ms ease;
|
||||
}
|
||||
.record-list > article:nth-child(even) {
|
||||
background: var(--app-subtle);
|
||||
}
|
||||
/* 主体奇数行常驻原悬停底色,与偶数行形成固定斑马纹;内部控件仍保留交互反馈。 */
|
||||
/* 形态块与所在主体条纹使用相反灰阶,避免偶数行内外同色;不增加边框或悬停态。 */
|
||||
.table-scroll {
|
||||
overflow: hidden;
|
||||
}
|
||||
.project-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
text-align: left;
|
||||
font-size: 12px;
|
||||
}
|
||||
.project-table th {
|
||||
padding: 13px 20px;
|
||||
background: var(--app-control);
|
||||
color: var(--color-muted);
|
||||
font-size: 10px;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.project-table td {
|
||||
padding: 21px 20px;
|
||||
}
|
||||
.project-table tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
.project-table tbody tr:nth-child(even) td {
|
||||
background: var(--app-subtle);
|
||||
}
|
||||
.project-table tbody tr:hover td {
|
||||
background: var(--app-selected);
|
||||
}
|
||||
.production-step {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
flex-shrink: 0;
|
||||
border-radius: 0;
|
||||
background: var(--app-subtle);
|
||||
color: var(--app-ink);
|
||||
}
|
||||
.dialog-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
padding-top: 20px;
|
||||
}
|
||||
.field-label {
|
||||
display: block;
|
||||
margin-bottom: 9px;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
color: var(--app-ink);
|
||||
}
|
||||
.input {
|
||||
width: 100%;
|
||||
background: var(--app-field);
|
||||
color: var(--color-ink);
|
||||
border-radius: 0;
|
||||
padding: 9px 11px;
|
||||
font-size: 12px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
.input::placeholder {
|
||||
color: var(--app-muted);
|
||||
}
|
||||
.input:disabled {
|
||||
background: var(--app-subtle);
|
||||
opacity: 0.6;
|
||||
}
|
||||
.alert-error {
|
||||
background: var(--app-subtle);
|
||||
color: var(--app-danger);
|
||||
}
|
||||
.content-with-history {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) 207px;
|
||||
min-height: 480px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.image-history {
|
||||
overflow: hidden;
|
||||
}
|
||||
.image-history-item .asset-image-empty {
|
||||
font-size: 9px;
|
||||
padding: 6px;
|
||||
gap: 4px;
|
||||
}
|
||||
.image-history-item .asset-image-empty svg {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
.reference-placeholder {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
aspect-ratio: 4 / 3;
|
||||
font-size: 11px;
|
||||
color: var(--color-muted);
|
||||
background: var(--app-subtle);
|
||||
}
|
||||
.detail-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 70px minmax(0, 1fr);
|
||||
gap: 15px;
|
||||
font-size: 12px;
|
||||
line-height: 1.9;
|
||||
}
|
||||
.detail-grid dt {
|
||||
color: var(--color-muted);
|
||||
}
|
||||
.detail-grid dd {
|
||||
white-space: pre-wrap;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.subject-ref {
|
||||
display: inline-flex;
|
||||
background: var(--app-subtle);
|
||||
padding: 3px 6px;
|
||||
border-radius: 0;
|
||||
color: var(--app-ink);
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
/* 中等宽度保留正文空间,执行记录下移,移动端导航收为图标。 */
|
||||
@media (max-width: 1200px) {
|
||||
.content-with-history {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
}
|
||||
}
|
||||
@media (max-width: 760px) {
|
||||
.project-table td,
|
||||
.project-table th {
|
||||
padding-inline: 14px;
|
||||
}
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user