.resource-management-page { position: relative; display: grid; grid-template-columns: minmax(260px, 320px) minmax(320px, 1fr) minmax(360px, 1.08fr); gap: 16px; height: 100%; min-height: 0; overflow: hidden; -webkit-touch-callout: none; } .resource-management-page__mobile-nav, .resource-management-page__mobile-card { display: none; } .resource-management-page__sidebar, .resource-management-page__content, .resource-management-page__preview-card { min-height: 0; border-radius: 22px; overflow: clip; box-sizing: border-box; } .resource-management-page__sidebar.ant-card, .resource-management-page__content.ant-card, .resource-management-page__preview-card.ant-card { display: flex; flex-direction: column; min-height: 0; border: 0; box-shadow: inset 0 0 0 1px rgba(191, 204, 229, 0.92), 0 16px 40px rgba(15, 23, 42, 0.08); } .resource-management-page__sidebar .ant-card-head, .resource-management-page__content .ant-card-head, .resource-management-page__preview-card .ant-card-head { min-height: 58px; } .resource-management-page__sidebar .ant-card-body, .resource-management-page__content .ant-card-body, .resource-management-page__preview-card .ant-card-body { display: flex; flex: 1 1 auto; flex-direction: column; gap: 12px; padding: 16px; min-height: 0; height: auto; } .resource-management-page__scope-copy { display: block; } .resource-management-page__tree { flex: 1; min-height: 0; overflow: auto; padding-right: 4px; } .resource-management-page__tree .ant-tree-node-content-wrapper { width: 100%; border-radius: 12px; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; } .resource-management-page__tree-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; } .resource-management-page__content { min-height: 0; } .resource-management-page__preview-card { min-height: 0; } .resource-management-page__workspace { display: flex; flex: 1; flex-direction: column; gap: 12px; min-height: 0; } .resource-management-page__toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; } .resource-management-page__toolbar-main, .resource-management-page__toolbar-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .resource-management-page__guide { margin: 0; } .resource-management-page__list-shell { display: flex; flex: 1; flex-direction: column; min-height: 0; border: 0; border-radius: 18px; background: linear-gradient(180deg, rgba(249, 251, 255, 0.96), rgba(241, 246, 255, 0.92)), #fff; box-shadow: inset 0 0 0 1px #dfe6f4; overflow: clip; box-sizing: border-box; -webkit-touch-callout: none; } .resource-management-page__list-header, .resource-management-page__list-row { display: grid; grid-template-columns: minmax(0, 1fr) 160px 88px 76px; gap: 12px; align-items: center; } .resource-management-page__list-header { padding: 12px 16px; border-bottom: 1px solid #e9eef8; color: #6b7280; font-size: 12px; font-weight: 600; } .resource-management-page__list-body { flex: 1; min-height: 0; overflow: auto; } .resource-management-page__list-row { padding: 12px 16px; border-bottom: 1px solid #eef2fa; cursor: pointer; transition: background-color 0.18s ease, transform 0.18s ease; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; } .resource-management-page__list-row:hover { background: rgba(222, 234, 255, 0.42); } .resource-management-page__list-row--selected { background: rgba(186, 209, 255, 0.34); } .resource-management-page__list-row--parent { background: rgba(241, 245, 255, 0.92); } .resource-management-page__list-name, .resource-management-page__entry-name { display: flex; align-items: center; gap: 8px; min-width: 0; } .resource-management-page__list-meta { display: contents; } .resource-management-page__entry-name-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .resource-management-page__preview-card .ant-card-body { display: flex; flex-direction: column; gap: 12px; min-height: 0; overflow: hidden; padding-bottom: 17px; } .resource-management-page__preview-frame { width: 100%; min-height: 0; flex: 1; border: 0; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1px #d9e1f2; box-sizing: border-box; } .resource-management-page__text-preview { flex: 1; min-height: 0; margin: 0; padding: 16px; overflow: auto; border: 0; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1px #d9e1f2; box-sizing: border-box; color: #111827; font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 13px; line-height: 1.6; white-space: pre-wrap; word-break: break-word; } .resource-management-page__image-preview { width: 100%; max-height: 100%; object-fit: contain; border: 0; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 1px #d9e1f2; box-sizing: border-box; } .resource-management-page__zoom-shell, .resource-management-page__preview-modal-body { display: flex; flex: 1; min-height: 0; } .resource-management-page__zoom-shell { align-items: center; justify-content: center; overflow: clip; border: 0; border-radius: 16px; background: #0b1220; box-shadow: inset 0 0 0 1px #d9e1f2; box-sizing: border-box; scrollbar-gutter: stable both-edges; } .resource-management-page__zoom-shell--touch-zoom { touch-action: none; overscroll-behavior: contain; } .resource-management-page__zoom-shell--image { padding: 16px; } .resource-management-page__image-preview--zoomable { width: 100%; height: 100%; object-fit: contain; border: 0; border-radius: 0; transform-origin: center center; will-change: transform; } .resource-management-page__frame-zoom-shell { width: 100%; min-width: 100%; height: 100%; min-height: 100%; overflow: hidden; transform-origin: center center; will-change: transform; } .resource-management-page__preview-frame--zoomable { min-width: 100%; min-height: 100%; border: 0; border-radius: 0; transform-origin: center center; pointer-events: none; } .resource-management-page__preview-modal-toolbar { display: flex; align-items: center; justify-content: stretch; gap: 12px; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid rgba(217, 225, 242, 0.9); background: rgba(255, 255, 255, 0.96); backdrop-filter: blur(14px); flex: 0 0 auto; min-height: 72px; box-sizing: border-box; } .resource-management-page__preview-modal-toolbar-slider { flex: 1 1 auto; min-width: 0; } .resource-management-page__preview-modal-toolbar-slider .ant-slider { margin: 0; } .resource-management-page__preview-modal-toolbar-button { width: 44px; min-width: 44px; height: 44px; padding-inline: 0; flex: 0 0 44px; } .resource-management-page__preview-modal-toolbar-value { flex: 0 0 56px; width: 56px; text-align: center; font-variant-numeric: tabular-nums; } .resource-management-page__preview-modal-body { overflow: hidden; background: #0b1220; } .resource-management-page__preview-modal-shell { display: flex; flex-direction: column; height: 100%; min-height: 0; } .resource-management-page__preview-modal-shell .resource-management-page__preview-modal-body { flex: 1 1 auto; min-height: 0; padding: 0; } .resource-management-page__editor { min-height: 260px; font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; } .resource-management-page__empty { display: flex; align-items: center; justify-content: center; min-height: 160px; padding: 24px 16px; } .resource-management-page__context-menu { position: fixed; z-index: 1200; display: flex; flex-direction: column; min-width: 208px; padding: 8px; border: 1px solid rgba(15, 23, 42, 0.08); border-radius: 16px; background: rgba(255, 255, 255, 0.98); box-shadow: 0 24px 60px rgba(15, 23, 42, 0.16); backdrop-filter: blur(18px); } .resource-management-page__context-menu-backdrop { position: fixed; inset: 0; z-index: 1199; background: transparent; } .resource-management-page__context-menu button { display: flex; align-items: center; gap: 10px; width: 100%; padding: 11px 12px; border: 0; border-radius: 12px; background: transparent; color: #111827; font: inherit; text-align: left; } .resource-management-page__context-menu button:hover { background: rgba(222, 234, 255, 0.42); } .resource-management-page__context-menu button.danger { color: #b42318; } .resource-management-page__context-menu button.danger:hover { background: rgba(254, 226, 226, 0.72); } .resource-management-page__file-input { position: fixed; width: 1px; height: 1px; margin: 0; padding: 0; border: 0; opacity: 0; pointer-events: none; inset: auto auto -100vh -100vw; } @media (max-width: 1180px) { .resource-management-page { grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); } .resource-management-page__preview-card { grid-column: 1 / -1; } } @media (max-width: 768px) { .resource-management-page { display: flex; flex-direction: column; gap: 12px; } .resource-management-page--mobile { min-height: 0; padding-inline: 1px; padding-bottom: max(10px, calc(env(safe-area-inset-bottom, 0px) + 6px)); box-sizing: border-box; } .resource-management-page--mobile > .resource-management-page__sidebar, .resource-management-page--mobile > .resource-management-page__content, .resource-management-page--mobile > .resource-management-page__preview-card { display: none; } .resource-management-page__mobile-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; flex: 0 0 auto; } .resource-management-page__mobile-card { display: flex; flex: 1 1 auto; min-height: 0; } .resource-management-page__mobile-card > .ant-card { flex: 1 1 auto; min-height: 0; height: auto; } .resource-management-page__sidebar .ant-card-body, .resource-management-page__content .ant-card-body, .resource-management-page__preview-card .ant-card-body { padding: 14px; padding-bottom: 15px; } .resource-management-page__list-header { display: none; } .resource-management-page__list-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: 'name actions' 'meta meta'; row-gap: 6px; } .resource-management-page__list-name { grid-area: name; } .resource-management-page__list-meta { grid-area: meta; display: flex; justify-content: space-between; gap: 12px; font-size: 12px; color: #6b7280; } .resource-management-page__list-meta span { font-size: 12px; } .resource-management-page__list-row > .ant-space { grid-area: actions; justify-self: end; } .resource-management-page__context-menu { min-width: min(208px, calc(100vw - 24px)); } .resource-management-page__toolbar { align-items: stretch; } .resource-management-page__toolbar-main, .resource-management-page__toolbar-actions { width: 100%; } .resource-management-page__toolbar-actions .ant-btn { flex: 1 1 0; } .resource-management-page__preview-frame, .resource-management-page__image-preview, .resource-management-page__text-preview { min-height: 220px; } .resource-management-page__editor { min-height: 0; height: 100%; } .resource-management-page__preview-card .ant-tabs, .resource-management-page__preview-card .ant-tabs-content-holder, .resource-management-page__preview-card .ant-tabs-content, .resource-management-page__preview-card .ant-tabs-tabpane { min-height: 0; height: 100%; } .resource-management-page__preview-card .ant-tabs-content-holder { overflow: hidden; padding-bottom: 1px; box-sizing: border-box; } .resource-management-page__preview-card .ant-tabs-tabpane-active { display: flex; flex-direction: column; } .resource-management-page--panel-preview .resource-management-page__preview-card .ant-card-body { gap: 8px; } .resource-management-page__preview-modal-wrap--mobile .ant-modal { width: 100vw !important; max-width: 100vw; margin: 0; padding: 0; } .resource-management-page__preview-modal-wrap--mobile .ant-modal-content { border-radius: 0; min-height: 100dvh; background: #0b1220; padding: 0; } .resource-management-page__preview-modal-wrap--mobile .ant-modal-header { padding: calc(12px + env(safe-area-inset-top, 0px)) 64px 12px 16px; margin-bottom: 0; background: #0b1220; } .resource-management-page__preview-modal-wrap--mobile .ant-modal-title { color: #f8fafc; } .resource-management-page__preview-modal-wrap--mobile .ant-modal-close { top: calc(8px + env(safe-area-inset-top, 0px)); right: 8px; width: 44px; height: 44px; color: #f8fafc; background: rgba(15, 23, 42, 0.92); border: 1px solid rgba(226, 232, 240, 0.22); border-radius: 999px; } .resource-management-page__preview-modal-wrap--mobile .ant-modal-close:hover, .resource-management-page__preview-modal-wrap--mobile .ant-modal-close:focus-visible { color: #ffffff; background: rgba(30, 41, 59, 0.98); } .resource-management-page__preview-modal-wrap--mobile .ant-modal-body { height: calc(100dvh - 56px) !important; background: #0b1220; } .resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-shell .resource-management-page__preview-modal-body { padding: 0; } .resource-management-page__preview-modal-wrap--mobile .resource-management-page__zoom-shell { border: 0; border-radius: 0; min-height: 100%; } .resource-management-page__preview-modal-wrap--mobile .resource-management-page__zoom-shell--image { padding: 0; } .resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-frame, .resource-management-page__preview-modal-wrap--mobile .resource-management-page__image-preview { border: 0; border-radius: 0; } .resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-toolbar { gap: 10px; padding-inline: 12px; min-height: 76px; } .resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-toolbar .ant-btn { flex: 0 0 auto; } .resource-management-page__preview-modal-wrap--mobile .resource-management-page__preview-modal-toolbar-value { flex-basis: 52px; width: 52px; } }