diff --git a/apps/ai-game-creator-shell/src/styles.css b/apps/ai-game-creator-shell/src/styles.css index 2f95bca0b..ac9d57c43 100644 --- a/apps/ai-game-creator-shell/src/styles.css +++ b/apps/ai-game-creator-shell/src/styles.css @@ -9320,3 +9320,528 @@ iframe.preview-frame { color: var(--platform-button-primary-text); place-items: center; } + +/* 资源画本视觉层(自 #283 V2.0 迁移,供 V3 资源画布复用) */ +.game-resource-book-manager { + position: relative; + overflow: hidden; + background: #fffdfa; +} + +.game-resource-book-scene { + position: absolute; + z-index: 20; + inset: 0; + overflow: hidden; + pointer-events: none; + transition: none; +} + +.game-resource-book-scene-world { + position: absolute; + inset: 0; + transform-origin: 0 0; + transition: none; +} + +.game-resource-book-transition-layer { + position: absolute; + inset: 0; + z-index: 35; + overflow: hidden; + pointer-events: none; +} + +.game-resource-book-manager[data-book-motion='running'] + .game-resource-book-scene-world { + opacity: 0; +} + +.game-resource-book-scene--child { + pointer-events: auto; +} + +.game-resource-book-zoom { + position: absolute; + right: 14px; + bottom: 14px; + z-index: 40; + display: inline-flex; + align-items: center; + gap: 2px; + height: 34px; + padding: 0 4px; + border: 1px solid #ecdcd4; + border-radius: 12px; + background: rgb(255 253 250 / 94%); + box-shadow: 0 6px 18px rgb(112 70 52 / 12%); + backdrop-filter: blur(6px); +} + +.game-resource-book-zoom-button, +.game-resource-book-zoom-fit { + display: inline-flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + padding: 0; + border: 0; + border-radius: 8px; + background: transparent; + color: #8c6252; + cursor: pointer; +} + +.game-resource-book-zoom-button:hover, +.game-resource-book-zoom-button:focus-visible, +.game-resource-book-zoom-fit:hover, +.game-resource-book-zoom-fit:focus-visible { + background: #f7ebe4; + color: #b5582f; + outline: 0; +} + +.game-resource-book-zoom-value { + min-width: 42px; + color: #6d4b3f; + font-size: 11px; + font-variant-numeric: tabular-nums; + text-align: center; + white-space: nowrap; +} + +.game-resource-book-zoom-fit { + margin-left: 2px; +} + +.game-resource-book-scene--main.is-measuring { + visibility: hidden; +} + +.game-resource-book-scene::before { + position: absolute; + z-index: 0; + inset: 0; + background: + radial-gradient(#eaded8 0.8px, transparent 0.8px) 0 0 / 18px 18px, + #fffdfa; + content: ''; + opacity: 0; + pointer-events: none; + transition: none; +} + +.game-resource-book-scene--child::before { + opacity: 1; +} + +.game-resource-book-scene-titlebar { + position: absolute; + z-index: 30; + min-height: 42px; + border: 1px solid #ebd9cf; + border-radius: 16px 16px 0 0; + background: rgb(255 250 246 / 96%); + box-shadow: 0 8px 18px rgb(112 70 52 / 8%); + pointer-events: none; + transform: translateY(0); + transition: none; +} + +.game-resource-book-scene-titlebar.is-active { + border-radius: 0; + pointer-events: auto; +} + +.game-resource-book-scene-titlebar .game-resource-book-titlebar { + min-height: 42px; + border-bottom: 0; + background: transparent; +} + +.game-resource-book-scene-card { + position: absolute; + z-index: 25; + pointer-events: none; + translate: 0 0; + transition: none; +} + +.game-resource-book-manager--main:has( + .game-resource-book-thumbnail[data-resource-book-category='code']:hover, + .game-resource-book-thumbnail[data-resource-book-category='code']:focus-visible + ) + .game-resource-book-scene-titlebar[data-resource-book-category='code'], +.game-resource-book-manager--main:has( + .game-resource-book-thumbnail[data-resource-book-category='document']:hover, + .game-resource-book-thumbnail[data-resource-book-category='document']:focus-visible + ) + .game-resource-book-scene-titlebar[data-resource-book-category='document'], +.game-resource-book-manager--main:has( + .game-resource-book-thumbnail[data-resource-book-category='version']:hover, + .game-resource-book-thumbnail[data-resource-book-category='version']:focus-visible + ) + .game-resource-book-scene-titlebar[data-resource-book-category='version'], +.game-resource-book-manager--main:has( + .game-resource-book-thumbnail[data-resource-book-category='art']:hover, + .game-resource-book-thumbnail[data-resource-book-category='art']:focus-visible + ) + .game-resource-book-scene-titlebar[data-resource-book-category='art'], +.game-resource-book-manager--main:has( + .game-resource-book-thumbnail[data-resource-book-category='audio']:hover, + .game-resource-book-thumbnail[data-resource-book-category='audio']:focus-visible + ) + .game-resource-book-scene-titlebar[data-resource-book-category='audio'] { + border-top-color: #cc8060; + border-right-color: #cc8060; + border-bottom-color: #ebd9cf; + border-left-color: #cc8060; +} + +.game-resource-book-scene-card .game-resource-card { + transition: box-shadow 180ms ease; +} + +.game-resource-book-scene--main + .game-resource-book-scene-card + .game-resource-card { + border-radius: 10px; + box-shadow: 0 5px 12px rgb(112 70 52 / 10%); +} + +.game-resource-book-scene--child + .game-resource-book-scene-card.is-expanded + .game-resource-card { + border-radius: 12px; +} + +.game-resource-book-main.is-background, +.game-resource-canvas.is-background { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + opacity: 0; + pointer-events: none; +} + +.game-resource-book-thumbnail-titlebar--placeholder { + min-height: 42px; + border-bottom: 1px solid #f0e2da; + background: rgb(255 250 246 / 90%); +} + +.game-resource-book-main { + position: absolute; + inset: 0; + overflow: hidden; + touch-action: none; + user-select: none; + cursor: grab; + background: + radial-gradient(#eaded8 0.8px, transparent 0.8px) 0 0 / 18px 18px, + linear-gradient(145deg, #fffdfa 0%, #fff8f2 100%); +} + +.game-resource-book-main:active { + cursor: grabbing; +} + +.game-resource-book-main-world { + display: flex; + flex-direction: column; + min-height: 100%; + padding: clamp(24px, 4vw, 52px); + transform-origin: 0 0; +} + +.game-resource-book-main-heading { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: 24px; + max-width: 1120px; + margin: 0 auto 24px; +} + +.game-resource-book-main-heading small { + display: block; + margin-bottom: 4px; + color: #b18370; + font-size: 11px; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.game-resource-book-main-heading h2 { + margin: 0; + color: #56372d; + font-size: clamp(22px, 3vw, 32px); + line-height: 1.1; +} + +.game-resource-book-main-heading > span { + color: #a4877a; + font-size: 12px; +} + +.game-resource-book-main-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); + gap: 18px; + max-width: 1120px; + margin: 0 auto; +} + +.game-resource-book-thumbnail { + position: relative; + display: flex; + flex-direction: column; + min-height: 210px; + padding: 0; + overflow: hidden; + border: 1px solid #ebd9cf; + border-radius: 16px; + background: rgb(255 255 255 / 82%); + color: #67483d; + cursor: pointer; + text-align: left; + box-shadow: 0 12px 28px rgb(112 70 52 / 9%); + transition: + border-color 180ms ease, + box-shadow 180ms ease, + transform 180ms ease; +} + +.game-resource-book-thumbnail:hover, +.game-resource-book-thumbnail:focus-visible { + border-color: #cc8060; + outline: 0; + box-shadow: 0 16px 34px rgb(158 87 57 / 18%); + transform: none; +} + +.game-resource-book-thumbnail-titlebar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + min-height: 42px; + padding: 0 14px; + border-bottom: 1px solid #f0e2da; + background: rgb(255 250 246 / 90%); +} + +.game-resource-book-titlebar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + width: 100%; + min-height: 42px; + padding: 0 14px; + border-bottom: 1px solid #f0e2da; + background: rgb(255 250 246 / 90%); +} + +.game-resource-book-titlebar-label, +.game-resource-book-titlebar-meta { + display: inline-flex; + align-items: center; + gap: 7px; + min-width: 0; +} + +.game-resource-book-titlebar-label strong { + overflow: hidden; + font-size: 13px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.game-resource-book-titlebar-meta { + flex: 0 0 auto; + gap: 10px; +} + +.game-resource-book-titlebar-meta small { + color: #b18f81; + font-size: 11px; +} + +.game-resource-book-thumbnail-titlebar { + padding: 0; + border-bottom: 0; +} + +.game-resource-book-thumbnail-titlebar > span { + display: inline-flex; + align-items: center; + gap: 7px; + min-width: 0; +} + +.game-resource-book-thumbnail-titlebar strong { + overflow: hidden; + font-size: 13px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.game-resource-book-thumbnail-titlebar small { + flex: 0 0 auto; + color: #b18f81; + font-size: 11px; +} + +.game-resource-book-thumbnail-body { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(94px, 1fr)); + align-content: center; + gap: 12px; + flex: 1 1 auto; + min-height: 132px; + padding: 18px; +} + +.game-resource-book-stack { + position: relative; + display: block; + min-height: 78px; +} + +.game-resource-book-stack:has(.game-resource-card) { + min-height: 132px; +} + +.game-resource-book-stack-card { + position: absolute; + inset: 0 0 auto; + display: flex; + flex-direction: column; + justify-content: center; + min-height: 64px; + padding: 8px 9px; + overflow: hidden; + border: 1px solid #e7cfc2; + border-radius: 10px; + background: linear-gradient(145deg, #fff 0%, #fff6ef 100%); + box-shadow: 0 5px 12px rgb(112 70 52 / 10%); + transform: translateY(calc(var(--stack-index, 0) * 5px)); +} + +.game-resource-book-stack-card:nth-last-child(2) { + transform: translateY(5px) rotate(-1deg); +} + +.game-resource-book-stack-card:nth-last-child(3) { + transform: translateY(10px) rotate(1.4deg); +} + +.game-resource-book-stack-card small { + overflow: hidden; + color: #b48876; + font-size: 9px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.game-resource-book-stack-card strong { + display: block; + margin-top: 4px; + overflow: hidden; + color: #68463a; + font-size: 10px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.game-resource-book-stack-card.is-blurred { + z-index: 0; + align-items: center; + color: #aa8576; + filter: blur(1.7px); + font-size: 12px; + opacity: 0.72; + transform: translateY(15px) scale(0.96); +} + +.game-resource-book-stack-card--control { + width: 100%; + min-height: 128px; + padding: 0; + overflow: visible; + border: 0; + background: transparent; + box-shadow: none; +} + +.game-resource-book-stack-card--control .game-resource-card { + width: 100%; + min-width: 0; + height: 100%; + min-height: 0; +} + +.game-resource-book-thumbnail-empty { + display: grid; + min-height: 96px; + border: 1px dashed #e1cfc5; + border-radius: 12px; + color: #b79b8e; + font-size: 12px; + place-items: center; +} + +.game-resource-book-thumbnail-footer { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 14px; + border-top: 1px solid #f0e2da; + color: #a98271; + font-size: 10px; +} + +.game-resource-page-heading-meta { + display: inline-flex; + align-items: center; + gap: 10px; +} + +.game-resource-page-collapse { + display: inline-flex; + align-items: center; + gap: 5px; + min-height: 28px; + padding: 0 9px; + border: 1px solid #e5cfc4; + border-radius: 8px; + background: rgb(255 250 246 / 85%); + color: #9d6650; + cursor: pointer; + font-size: 11px; +} + +.game-resource-page-collapse:hover, +.game-resource-page-collapse:focus-visible { + border-color: #cc8060; + outline: 0; + box-shadow: 0 3px 10px rgb(158 87 57 / 14%); +} + +@media (prefers-reduced-motion: reduce) { + .game-resource-book-main { + animation: none; + } + + .game-resource-book-scene, + .game-resource-book-scene::before, + .game-resource-book-scene-titlebar, + .game-resource-book-scene-card, + .game-resource-book-scene-card .game-resource-card, + .game-resource-book-thumbnail { + transition: none !important; + } +}