:root { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #383830; background: #f6f5f0; font-synthesis: none; font-size: 12px; } * { box-sizing: border-box; } html, body, #root { width: 100%; height: 100%; margin: 0; overflow: hidden; } button, input, select, textarea { font: inherit; color: inherit; } button { cursor: pointer; border: 0; background: transparent; display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; } button:disabled { opacity: 0.4; cursor: default; } button, input, select, textarea { outline: none; } button:focus-visible { outline: 2px solid #bb785c; outline-offset: 2px; } input:focus, textarea:focus, select:focus { border-color: #bc8c70 !important; box-shadow: 0 0 0 2px #bc8c7014; } input, select, textarea { border: 1px solid #dfded5; border-radius: 5px; background: #eeede7; min-width: 0; padding: 6px 8px; width: 100%; font-size: 11px; } input[type="checkbox"] { width: 13px; height: 13px; accent-color: #af755a; flex-shrink: 0; } input[type="color"] { padding: 2px; width: 37px; height: 25px; background: #fff; } textarea { resize: vertical; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; line-height: 1.6; } input[type="number"] { appearance: textfield; -moz-appearance: textfield; } input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { margin: 0; -webkit-appearance: none; } kbd { font-size: 9px; border: 1px solid #deddd4; padding: 2px 4px; border-radius: 3px; color: #8b887d; background: #f7f6f0; } svg { flex-shrink: 0; } button:hover:not(:disabled) { background: #eae8df; } .editor { --left: 235px; --right: 292px; --bottom: 218px; width: 100%; height: 100%; display: grid; grid-template-columns: var(--left) minmax(250px, 1fr) var(--right); grid-template-rows: 64px minmax(150px, 1fr) var(--bottom) 28px; grid-template-areas: "top top top" "tree view inspect" "bottom bottom inspect" "footer footer footer"; background: #f7f6f1; } .topbar { grid-area: top; display: flex; align-items: center; gap: 18px; padding: 0 22px; border-bottom: 1px solid #dcdbd2; background: #faf9f4; z-index: 20; } .brand { display: flex; align-items: center; gap: 9px; } .brand-mark { background: #b67b5f; color: #fff8e9; border-radius: 8px; width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 0 0 1px #ffffff24; } .brand strong { font-size: 22px; font-weight: 600; letter-spacing: -0.8px; display: flex; align-items: baseline; gap: 7px; } .brand strong span { font-size: 8px; color: #999084; letter-spacing: 1.5px; font-weight: 500; } .project-menu { position: relative; padding-left: 18px; border-left: 1px solid #e1ded3; } .project-name { height: 32px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; font-size: 12px; font-weight: 500; } .project-name svg:first-child { color: #918c7b; } .save-status { font-size: 10px; color: #8b897d; display: flex; align-items: center; gap: 5px; white-space: nowrap; } .save-status i, .green-dot { width: 5px; height: 5px; border-radius: 50%; background: #879d7f; display: inline-block; } .command-search { margin-left: auto; border: 1px solid #e6e3d9; border-radius: 6px; height: 31px; padding: 0 10px; color: #898779; min-width: 150px; gap: 10px; } .command-search span { flex: 1; } .header-actions { display: flex; align-items: center; gap: 12px; } .quiet { font-size: 11px; color: #706f61; } .primary { border: 1px solid #a8674b !important; background: #b77c60 !important; color: #fffaf2; border-radius: 6px; padding: 9px 13px; font-weight: 500; box-shadow: 0 1px 2px #654c3713; font-size: 11px; } .primary:hover { background: #a96d52 !important; } .icon { width: 28px; height: 28px; justify-content: center; flex-shrink: 0; padding: 0; border-radius: 4px; color: #7c7c6b; } .icon.active { background: #e3e5d9; color: #526853; } .panel-title { height: 43px; display: flex; align-items: center; justify-content: space-between; padding: 0 15px; font-size: 11px; border-bottom: 1px solid #e2e0d7; } .panel-title > span:first-child { display: flex; gap: 8px; align-items: center; font-weight: 600; } .tiny { font-size: 8px; letter-spacing: 1.2px; color: #aaa393; } .hierarchy { grid-area: tree; display: flex; flex-direction: column; border-right: 1px solid #dddcd3; position: relative; min-height: 0; z-index: 10; } .filter { margin: 11px 12px 6px; display: flex; align-items: center; gap: 6px; border: 1px solid #e3e1d8; border-radius: 5px; background: #f1f0e9; color: #9b9788; padding: 0 7px; } .filter input { border: 0; background: transparent; padding: 7px 0; box-shadow: none; } .scene-name { display: flex; align-items: center; gap: 3px; margin: 4px 12px 7px; color: #706f5f; } .scene-name select { background: transparent; border: 0; padding: 4px; font-size: 10px; font-weight: 600; } .scene-name .icon { width: 20px; height: 23px; } .tree { overflow: auto; flex: 1; padding-bottom: 30px; } .tree-row { height: 30px; display: flex; align-items: center; gap: 7px; padding-right: 9px; cursor: pointer; user-select: none; color: #666654; font-size: 11px; } .tree-row:hover { background: #eaeae0; } .tree-row.selected { background: #e5e8dd; color: #3c5847; box-shadow: inset 2px 0 #869879; } .tree-row.disabled { opacity: 0.47; } .tree-row > span { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tree-toggle { padding: 0; width: 10px; height: 20px; color: #8b8e7c; flex-shrink: 0; } .tree-eye { visibility: hidden; padding: 3px; color: #939581; } .tree-row:hover .tree-eye, .tree-row.selected .tree-eye { visibility: visible; } .hierarchy-footer { height: 36px; border-top: 1px solid #e3e1d8; padding: 0 10px 0 16px; display: flex; align-items: center; justify-content: space-between; color: #928e80; font-size: 10px; } .hierarchy-footer > div { display: flex; } .viewport { grid-area: view; display: flex; flex-direction: column; min-width: 0; min-height: 0; background: #dedbd2; position: relative; } .viewbar { height: 42px; background: #f3f2ec; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #dfded4; flex-shrink: 0; padding-right: 12px; } .view-tabs { height: 100%; display: flex; } .view-tabs button { padding: 0 17px; border-right: 1px solid #e3e1d8; font-size: 11px; color: #929080; position: relative; } .view-tabs button.active { background: #faf9f4; color: #57594b; } .view-tabs button.active:after, .bottom-tabs button.active:after { content: ""; position: absolute; bottom: 0; left: 15px; right: 15px; height: 2px; background: #a48c6c; } .play-controls { display: flex; gap: 4px; margin-left: -25px; } .play-controls .icon { width: 31px; height: 27px; border: 1px solid #dcddd1; background: #f8f8f2; } .play-controls .icon.active { color: #fff; background: #819277; border-color: #819277; } .view-options { display: flex; align-items: center; gap: 8px; font-size: 9px; color: #939080; } .canvas-wrap { flex: 1; position: relative; min-height: 0; overflow: hidden; } .canvas-wrap canvas { display: block; width: 100%; height: 100%; touch-action: none; outline: none; } .transform-tools { position: absolute; left: 14px; top: 15px; display: flex; flex-direction: column; gap: 4px; border: 1px solid #cfcfc0; border-radius: 7px; background: #f7f7eccf; padding: 4px; box-shadow: 0 3px 10px #6a6a5410; } .transform-tools .icon { width: 28px; height: 28px; } .viewport-top-right { position: absolute; top: 16px; right: 16px; display: flex; align-items: center; gap: 5px; } .viewport-top-right > button { font-size: 9px; color: #6e735f; border: 1px solid #cccebf; border-radius: 4px; background: #f6f6ebbb; padding: 6px 8px; height: 27px; } .viewport-top-right > button.active { background: #e1e6d3; color: #5a6f4d; } .world-label { position: absolute; left: 18px; bottom: 47px; display: flex; flex-direction: column; gap: 5px; pointer-events: none; } .world-label > span { font-size: 12px; letter-spacing: 0.15px; color: #646b54; font-weight: 600; } .world-label > small { font-size: 9px; color: #8a8e7c; } .view-hint { position: absolute; left: 18px; bottom: 17px; color: #7b806b; font-size: 9px; display: flex; align-items: center; gap: 11px; pointer-events: none; } .view-hint kbd { background: #eeeee080; border-color: #cdd0bd; } .model-shortcut { position: absolute; bottom: 18px; right: 17px; background: #f8f6eecd; border: 1px solid #c7cab8; border-radius: 5px; color: #636e56; font-size: 10px; padding: 8px 10px; box-shadow: 0 2px 4px #6c70500a; } .view-status { height: 27px; background: #e9e9df; border-top: 1px solid #d3d6c6; display: flex; align-items: center; justify-content: space-between; padding: 0 13px; color: #8a8d77; font-size: 9px; flex-shrink: 0; } .view-status > span, .view-status > div { display: flex; gap: 12px; align-items: center; } .view-status > span { gap: 6px; } .view-status > div button { font-size: 9px; color: #7f836d; padding: 0; } .live-dot { width: 5px; height: 5px; border-radius: 50%; background: #a9664e; } .inspector { grid-area: inspect; border-left: 1px solid #dad9cf; display: flex; flex-direction: column; min-height: 0; position: relative; background: #f6f5ef; } .object-heading { padding: 17px 14px; display: flex; align-items: center; gap: 11px; border-bottom: 1px solid #dfded3; } .object-icon { width: 40px; height: 43px; background: #e9ece1; border: 1px solid #dce2d2; border-radius: 7px; display: flex; align-items: center; justify-content: center; color: #829476; flex-shrink: 0; } .object-heading > div:nth-child(2) { min-width: 0; flex: 1; } .object-heading input:not([type="checkbox"]) { border: 0; background: transparent; font-size: 13px; font-weight: 600; padding: 2px 0; } .object-heading small { font-size: 9px; color: #94927f; display: block; margin-top: 6px; } .inspector-scroll { overflow: auto; flex: 1; } .section { border-bottom: 1px solid #dfdfd2; } .section-title { height: 37px; display: flex; align-items: center; justify-content: space-between; padding: 0 11px; } .section-title > button { font-size: 10px; color: #666b54; gap: 6px; } .section-title strong { font-weight: 600; } .section-title .icon { width: 20px; height: 20px; color: #afb09c; opacity: 0; } .section:hover .section-title .icon { opacity: 1; } .section-body { padding: 0 15px 14px; } .transform-property { margin: 0 0 10px; } .transform-property:last-child { margin: 0; } .transform-property > label, .field-label { display: block; font-size: 9px; color: #8a8c77; margin-bottom: 6px; } .vector { display: flex; gap: 5px; min-width: 0; } .vector label { display: flex; align-items: center; min-width: 0; background: #eeeee5; border: 1px solid #dedfce; border-radius: 4px; flex: 1; overflow: hidden; } .vector label span { width: 18px; padding-left: 6px; font-size: 9px; font-weight: 600; } .axis0 { color: #b48776; } .axis1 { color: #83946b; } .axis2 { color: #839caf; } .vector input { border: 0; background: transparent; padding: 5px 4px; text-align: right; font-size: 10px; width: 100%; } .property { display: flex; align-items: center; gap: 8px; min-height: 31px; font-size: 10px; margin-top: 3px; } .property > label { color: #8c8e77; flex: 1; min-width: 0; line-height: 1.3; } .property > input:not([type="checkbox"]):not([type="color"]), .property > select, .property > div, .property > span { width: 54%; font-size: 10px; } .property > .icon { width: 20px; height: 22px; } .property input { padding: 5px 7px; } .property > span { color: #6f795e; text-align: right; } .color-input { display: flex; align-items: center; gap: 9px; font-size: 9px !important; color: #8a8d77; } .color-input input { width: 26px; height: 22px; } .check-row { display: flex; align-items: center; gap: 7px; font-size: 10px; color: #81876e; margin-top: 11px; } .asset-ref { display: flex; align-items: center; gap: 7px; font-size: 10px; background: #e8ecdf; border: 1px solid #dce2ce; border-radius: 5px; padding: 7px 9px; color: #80916b; margin: 7px 0 10px; } .wide-button { justify-content: center; width: 100%; padding: 7px; margin-top: 10px; font-size: 10px; background: #f1f2e7; border: 1px solid #daddca; border-radius: 5px; color: #828e6e; } .add-component { display: flex; justify-content: center; border: 1px dashed #d1d7c2; border-radius: 5px; margin: 16px 15px 10px; width: calc(100% - 30px); padding: 10px 0; font-size: 10px; color: #8c9977; } .component-options { margin: 0 15px; display: grid; grid-template-columns: 1fr 1fr; gap: 5px; } .component-options button { font-size: 10px; padding: 8px; background: #eceee1; border-radius: 4px; } .object-actions { display: flex; gap: 5px; padding: 10px 14px; } .object-actions > button:first-child { font-size: 10px; margin-right: auto; color: #90947d; } .object-id { font-size: 8px; color: #a8aa94; display: block; padding: 0 19px 17px; } .bottom-panel { grid-area: bottom; min-height: 0; border-top: 1px solid #d8dace; position: relative; display: flex; flex-direction: column; } .bottom-bar { height: 39px; border-bottom: 1px solid #e2e3d6; display: flex; align-items: center; justify-content: space-between; padding-right: 11px; flex-shrink: 0; } .bottom-tabs { display: flex; height: 100%; } .bottom-tabs button { font-size: 10px; color: #979981; padding: 0 18px; position: relative; } .bottom-tabs button.active { color: #5f7352; background: #f9faf1; } .bottom-tabs button.active:after { background: #97a082; height: 2px; } .bottom-actions { display: flex; align-items: center; gap: 10px; } .bottom-actions > button { font-size: 10px; color: #8b937a; } .asset-browser { display: flex; min-height: 0; flex: 1; } .asset-browser nav { width: var(--left); flex-shrink: 0; border-right: 1px solid #e2e4d5; padding: 12px; } .asset-browser nav button { display: flex; width: 100%; font-size: 10px; padding: 7px 10px; color: #8f967d; border-radius: 4px; margin-bottom: 3px; } .asset-browser nav button.active { background: #e9eddf; color: #667956; } .asset-content { flex: 1; min-width: 0; overflow: auto; } .asset-breadcrumb { display: flex; align-items: center; gap: 7px; font-size: 9px; color: #969f83; padding: 12px 18px 3px; } .asset-breadcrumb > span { margin-left: auto; } .asset-grid { display: flex; gap: 14px; padding: 12px 18px 18px; } .asset-card { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; width: 110px; flex-shrink: 0; padding: 0; text-align: left; white-space: normal; border-radius: 6px; } .asset-card strong { font-size: 10px; font-weight: 500; color: #79866a; max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .asset-card small { font-size: 8px; color: #a2aa93; } .asset-art { width: 110px; height: 70px; border: 1px solid #dce3cf; border-radius: 5px; background: linear-gradient(145deg, #eef0e4, #e1e6d5); display: flex; align-items: center; justify-content: center; color: #8ba17c; position: relative; } .asset-art span { position: absolute; right: 5px; bottom: 5px; font-size: 7px; letter-spacing: 1px; color: #9faf8e; background: #f5f6eab8; padding: 2px 3px; } .asset-art.model:nth-child(1) { color: #8d9e7c; } .asset-art.prefab { background: #ebe7db; color: #a6a083; border-color: #e2ddcb; } .add-asset > div { height: 70px; width: 110px; border: 1px dashed #d7dfc6; border-radius: 5px; display: flex; align-items: center; justify-content: center; color: #a5b291; } .script-list { display: flex; padding: 19px 20px; gap: 15px; overflow: auto; } .script-list button { display: flex; flex-direction: column; align-items: flex-start; min-width: 130px; background: #edf0e3; border: 1px solid #dbe3cc; border-radius: 6px; padding: 13px; color: #8ca17d; gap: 7px; } .script-list strong { font-size: 10px; font-weight: 500; color: #798a69; } .script-list small { font-size: 9px; color: #9eac8e; } .log-list, .history-list { overflow: auto; flex: 1; padding: 9px 15px; } .log-list > p { font-size: 11px; color: #a0a78e; } .log { width: 100%; display: flex; white-space: normal; text-align: left; font: 10px ui-monospace, monospace; line-height: 1.6; color: #829171; padding: 5px; border-bottom: 1px solid #e6eadb; } .log time { font-size: 9px; color: #a0aa8d; flex-shrink: 0; margin-right: 9px; } .log.error { color: #b0745d; background: #efe5d8; } .log.warning { color: #a38f5d; } .history-list > div { display: flex; gap: 15px; font-size: 10px; border-bottom: 1px solid #e0e5d4; padding: 7px 5px; align-items: center; color: #8b9a78; } .history-list strong { font-weight: 500; flex: 1; color: #718262; } .history-list time, .history-list small { font-size: 9px; color: #a1ab8f; } .error-count { background: #b6765b; color: #fff; border-radius: 3px; padding: 0 4px; font-size: 8px; } .footer { grid-area: footer; display: flex; align-items: center; border-top: 1px solid #dde2cf; padding: 0 15px; gap: 24px; background: #f4f6eb; font-size: 9px; color: #99a687; } .footer > span { display: flex; gap: 7px; align-items: center; } .footer b { font-size: 8px; font-weight: 400; border: 1px solid #dce4ce; border-radius: 3px; padding: 1px 4px; } .footer > button { margin-left: auto; font-size: 9px; color: #a1ab90; } .resize { position: absolute; z-index: 15; } .resize.left { right: -3px; top: 0; bottom: 0; width: 6px; cursor: col-resize; } .resize.right { left: -3px; top: 0; bottom: 0; width: 6px; cursor: col-resize; } .resize.bottom { top: -3px; left: 0; right: 0; height: 6px; cursor: row-resize; } .dropdown { position: absolute; top: 39px; left: 0; min-width: 215px; background: #fbfaf5; border: 1px solid #deddd2; box-shadow: 0 12px 35px #49473b22; border-radius: 7px; padding: 6px; z-index: 50; } .dropdown button { display: flex; width: 100%; padding: 10px; font-size: 11px; color: #767964; border-radius: 4px; } .dropdown kbd { margin-left: auto; } .add-menu { top: 39px; left: 15px; max-height: 410px; overflow: auto; } .empty-inspector { margin: auto 24px; text-align: center; color: #a4ac91; display: flex; align-items: center; flex-direction: column; line-height: 1.7; } .empty-inspector h3 { font-size: 13px; font-weight: 500; color: #819171; margin: 14px 0 3px; } .empty-inspector p { font-size: 11px; max-width: 205px; } .empty-inspector button { font-size: 10px; color: #96a480; margin-top: 10px; } .empty-tree { display: flex; align-items: center; text-align: center; flex-direction: column; color: #a0a88d; padding: 35px 20px; font-size: 11px; } .empty-tree strong { font-size: 12px; color: #83916f; margin-top: 14px; } .empty-tree button { border: 1px solid #dbe2ca; border-radius: 5px; padding: 8px; font-size: 10px; } .backdrop { position: fixed; inset: 0; z-index: 100; background: #343e3261; backdrop-filter: blur(5px); display: flex; justify-content: center; align-items: center; padding: 30px; } .modal { width: 570px; max-width: 100%; max-height: 90vh; overflow: auto; border-radius: 12px; border: 1px solid #e1e5d3; background: #fafaf2; box-shadow: 0 30px 90px #25352338; } .modal.wide { width: 1010px; } .modal > header { padding: 23px 25px 19px; display: flex; align-items: flex-start; justify-content: space-between; border-bottom: 1px solid #e3e7d7; } .modal h2 { font-size: 21px; font-weight: 500; letter-spacing: -0.6px; color: #4e6042; margin: 0 0 7px; } .modal header p { font-size: 11px; color: #9aa887; margin: 0; line-height: 1.6; } .modal-body { padding: 23px 25px; color: #849573; line-height: 1.7; } .modal > footer { padding: 15px 25px; border-top: 1px solid #e1e6d4; display: flex; align-items: center; justify-content: flex-end; gap: 12px; } .modal > footer > span { font-size: 9px; color: #a2ae90; margin-right: auto; } .model-kinds { display: flex; flex-wrap: wrap; border: 1px solid #dbe2cd; border-radius: 6px; padding: 3px; gap: 2px; } .model-kinds button { font-size: 10px; padding: 8px 9px; color: #92a07c; justify-content: center; flex: 1; border-radius: 4px; } .model-kinds button.active { background: #e2e9d6; color: #637950; } .model-illustration { display: flex; align-items: center; gap: 23px; padding: 23px 15px; background: #edf1e2; border: 1px solid #e0e8d1; border-radius: 8px; margin: 18px 0 22px; color: #98ae7f; } .model-illustration strong { font-size: 15px; font-weight: 500; color: #6c8159; } .model-illustration p { font-size: 10px; color: #9baa89; line-height: 1.7; margin: 6px 0 0; max-width: 270px; } .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } .form-grid label { font-size: 10px; color: #99a986; display: flex; flex-direction: column; gap: 6px; } .form-grid input { height: 33px; background: #f0f4e7; border-color: #dce5cd; color: #859c6c; } .textarea-label { display: flex; flex-direction: column; gap: 7px; font-size: 10px; color: #98a885; margin-top: 16px; } .textarea-label textarea { min-height: 90px; background: #edf2e3; border-color: #dbe5cb; color: #7e9566; padding: 10px; } .textarea-label input { font-family: ui-monospace, monospace; font-size: 11px; } .small-note { font-size: 9px; color: #a6b191; line-height: 1.7; margin-bottom: 0; } .project-templates { display: grid; grid-template-columns: 1fr; gap: 15px; padding: 25px; } .project-templates button { align-items: flex-start; display: flex; flex-direction: column; white-space: normal; border: 1px solid #dce7cd; border-radius: 8px; padding: 24px 20px; gap: 13px; text-align: left; color: #91a675; background: #f1f5e8; } .project-templates strong { font-size: 15px; font-weight: 500; color: #6f8858; } .project-templates p { font-size: 11px; color: #9dae89; line-height: 1.7; margin: 0; } .project-templates span { font-size: 10px; color: #8ea86f; margin-top: 5px; } .script-editor { display: grid; grid-template-columns: minmax(0, 1fr) 265px; height: 470px; max-height: 65vh; } .code-area { display: flex; overflow: hidden; background: #f0f3e8; } .code-lines { width: 42px; flex-shrink: 0; padding: 20px 10px; color: #b0bca0; font: 11px/1.7 ui-monospace, monospace; text-align: right; overflow: hidden; } .code-lines span { display: block; } .code-area textarea { width: 100%; border: 0; resize: none; border-radius: 0; padding: 20px 15px 20px 0; background: transparent; white-space: pre; font: 11px/1.7 ui-monospace, monospace; color: #627c4c; tab-size: 2; } .script-fields { padding: 20px 17px; background: #f6f8ee; border-left: 1px solid #dfe7d3; overflow: auto; } .script-fields h4 { font-size: 10px; font-weight: 500; color: #859e6d; margin: 0 0 12px; } .script-fields textarea { height: 205px; font-size: 9px; background: #eef3e4; border-color: #dce7cc; color: #8aa66f; resize: vertical; } .script-fields p, .script-fields code { font-size: 9px; color: #a2b58d; line-height: 1.9; } .script-fields p { margin-bottom: 20px; } .danger { color: #b4755a; font-size: 10px; } .connection-card { display: flex; gap: 15px; border: 1px solid #dbe6ce; background: #edf3e4; border-radius: 7px; padding: 18px; color: #94ad7f; } .connection-card strong { font-size: 12px; font-weight: 500; color: #74915f; } .connection-card p { font-size: 10px; color: #a1b58c; margin: 5px 0 0; } .capabilities { display: grid; grid-template-columns: 1fr 1fr; margin: 22px 0; gap: 10px; color: #94aa7d; } .capabilities span { display: flex; align-items: center; gap: 8px; font-size: 10px; } .large-search { display: flex; align-items: center; gap: 10px; border: 1px solid #dbe6cc; background: #f2f6e9; border-radius: 6px; padding: 7px 10px; color: #98b181; } .large-search input { border: 0; background: transparent; box-shadow: none; font-size: 12px; padding: 5px; } .search-results { margin-top: 15px; max-height: 380px; overflow: auto; } .search-results button { display: flex; justify-content: space-between; width: 100%; padding: 10px; border-radius: 5px; font-size: 11px; color: #819b69; } .help ol { margin: 0; padding-left: 18px; } .help li { padding: 0 0 15px 6px; font-size: 11px; color: #98ac84; line-height: 1.7; } .help strong { font-weight: 500; color: #728c5f; } .help p { font-size: 11px; color: #98ac84; } .toast { position: fixed; bottom: 44px; left: 50%; transform: translateX(-50%); z-index: 150; background: #43503b; color: #f4f5e9; border: 1px solid #69775a; border-radius: 8px; box-shadow: 0 7px 25px #25321c30; max-width: 650px; padding: 13px 20px; font-size: 12px; line-height: 1.5; } .busy { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); background: #f9faeef0; padding: 16px 22px; border-radius: 8px; border: 1px solid #d7e3c6; display: flex; align-items: center; gap: 12px; color: #79915f; box-shadow: 0 6px 25px #53623d20; white-space: nowrap; font-size: 11px; } .spinner { display: block; border: 2px solid #dbe5c9; border-top-color: #90a777; border-radius: 50%; width: 16px; height: 16px; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .boot { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #f7f5ee; color: #9ca18b; } .boot .brand-mark { width: 46px; height: 46px; } .boot h1 { font-weight: 500; color: #716f62; font-size: 28px; margin: 15px 0 0; } .boot p { font-size: 12px; } .game-hud { position: absolute; left: 20px; top: 20px; right: 20px; display: flex; justify-content: space-between; align-items: flex-start; color: #f6f4dd; text-shadow: 0 1px 3px #34412955; pointer-events: none; } .game-hud > div { display: flex; flex-direction: column; gap: 7px; background: #44553be0; padding: 13px 16px; border-radius: 6px; } .game-hud span { font-size: 17px; font-weight: 500; } .game-hud small { font-size: 9px; color: #ccd6b8; } .game-hud button { pointer-events: auto; background: #f4f6e9d9; color: #667d52; border: 1px solid #bbc9a6; border-radius: 5px; padding: 8px 11px; font-size: 10px; } .health { position: absolute; bottom: 25px; left: 24px; background: #3d5035de; border: 1px solid #70845c; color: #e5eccc; border-radius: 7px; padding: 12px 15px; display: flex; align-items: center; gap: 12px; font-size: 10px; } .health > div { width: 100px; height: 5px; background: #6a765d; border-radius: 5px; overflow: hidden; } .health i { display: block; background: #c8d995; height: 100%; transition: width 0.15s; } .health b { font-size: 10px; } .game-result { position: absolute; left: 50%; top: 46%; transform: translate(-50%, -50%); background: #435438ef; border: 1px solid #899875; border-radius: 9px; padding: 25px 35px; text-align: center; color: #e9ecd0; pointer-events: none; } .game-result h2 { font-weight: 500; font-size: 23px; white-space: nowrap; margin: 0 0 8px; } .game-result p { font-size: 11px; color: #bccc9e; margin: 0; } .touch-controls { display: none; position: absolute; left: 28px; right: 28px; bottom: 32px; justify-content: space-between; align-items: center; pointer-events: none; touch-action: none; } .stick { pointer-events: auto; touch-action: none; width: 112px; height: 112px; border: 2px solid #fff6; border-radius: 50%; background: #334d3755; display: flex; align-items: center; justify-content: center; } .stick > div { width: 48px; height: 48px; border-radius: 50%; background: #fff9; box-shadow: 0 1px 8px #34402c30; } .attack { pointer-events: auto; touch-action: none; border: 2px solid #fff6; border-radius: 50%; width: 85px; height: 85px; justify-content: center; font-size: 30px; color: #fff; background: #aa795ebb; } .viewport:fullscreen { width: 100%; height: 100%; } .viewport:fullscreen .viewbar { display: none; } .viewport:fullscreen .canvas-wrap { height: 100%; } .viewport:fullscreen .view-status { display: none; } ::-webkit-scrollbar { width: 5px; height: 5px; } ::-webkit-scrollbar-thumb { background: #d4ddc8; border-radius: 8px; } ::-webkit-scrollbar-track { background: transparent; } @media (max-width: 1250px) { .topbar { gap: 12px; padding: 0 15px; } .save-status { display: none; } .command-search { min-width: 130px; } .header-actions { gap: 8px; } .brand strong span { display: none; } .editor { --left: 213px; --right: 265px; } .view-hint span:last-of-type { display: none; } } @media (max-width: 1000px) { .editor { --left: 190px; --right: 246px; --bottom: 190px; } .topbar { gap: 10px; } .command-search { min-width: 30px; width: 31px; padding: 7px; } .command-search span, .command-search kbd, .quiet { display: none; } .header-actions { margin-left: auto; } .project-menu { padding-left: 10px; } .project-name { max-width: 150px; } .view-hint { font-size: 8px; gap: 6px; } .view-hint span { display: none; } .world-label { bottom: 50px; } .model-shortcut { font-size: 9px; } .view-options > span { display: none; } .bottom-tabs button { padding: 0 12px; } .view-status > div span:nth-child(2) { display: none; } .vector { gap: 3px; } .section-body { padding-left: 11px; padding-right: 11px; } } @media (pointer: coarse) { .is-playing .touch-controls { display: flex; } .is-playing .health { bottom: auto; top: 90px; } .game-hud small { display: none; } } @media (max-width: 760px) { .editor { grid-template-columns: 1fr; grid-template-rows: 54px minmax(150px, 1fr) 165px 25px; grid-template-areas: "top" "view" "bottom" "footer"; } .hierarchy, .inspector { display: none; } .topbar { padding: 0 12px; } .brand strong { font-size: 20px; } .project-name { max-width: 110px; font-size: 10px; } .primary { padding: 8px 9px; font-size: 10px; } .command-search { display: none; } .asset-browser nav { width: 105px; padding: 8px; } .asset-browser nav button { font-size: 9px; padding: 6px; } .asset-grid { gap: 10px; padding: 8px 12px; } .asset-art, .asset-card, .add-asset > div { width: 88px; } .asset-art, .add-asset > div { height: 55px; } .asset-card strong { font-size: 9px; max-width: 88px; } .asset-breadcrumb { padding: 9px 12px 0; } .bottom-actions { gap: 0; } .bottom-tabs button { font-size: 9px; padding: 0 9px; } .bottom-actions > button { font-size: 9px; } .footer > button { display: none; } .view-hint { max-width: 50%; white-space: nowrap; overflow: hidden; } .modal { max-height: 95vh; } .backdrop { padding: 12px; } .modal-body { padding: 18px; } .modal > header { padding: 20px; } .modal > footer { padding: 14px 18px; } .model-kinds button { font-size: 9px; padding: 7px; } .script-editor { grid-template-columns: 1fr; height: 60vh; } .script-fields { display: none; } .project-templates { padding: 18px; gap: 10px; } .project-templates button { padding: 18px 14px; } .game-result { padding: 20px; } .game-result h2 { font-size: 19px; } .game-hud { left: 12px; right: 12px; top: 12px; } .game-hud span { font-size: 13px; } .game-hud > div { padding: 10px 12px; } .game-hud small { display: none; } .is-playing .touch-controls { display: flex; left: 18px; right: 18px; bottom: 22px; } .is-playing .health { top: 67px; left: 12px; bottom: auto; padding: 8px 12px; } .stick { width: 96px; height: 96px; } .attack { width: 72px; height: 72px; } .is-playing { grid-template-rows: 54px 1fr 25px; grid-template-areas: "top" "view" "footer"; } .is-playing .bottom-panel { display: none; } .toast { max-width: 90%; width: max-content; font-size: 11px; } .view-options { display: none; } } @media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } } /* Neutral workspace surfaces; sage is reserved for selection and game assets. */ .panel-title, .section-title > button { color: #65675b; } .property > label, .transform-property > label, .field-label { color: #7b7b6e; } .section-body input, .section-body select { color: #55594d; } .tree-row { color: #62665a; } .bottom-tabs button, .bottom-actions > button { color: #7b8071; } .asset-card strong { color: #636e5a; } .asset-card small { color: #89917f; } .footer { color: #848e79; } .object-heading small { color: #838877; } .modal h2 { color: #4e5c43; } .modal header p, .modal-body, .help li, .help p { color: #7e8c70; } .model-illustration p, .form-grid label, .textarea-label, .small-note { color: #869276; } .script-fields code, .script-fields p { color: #879a73; } .connection-card p { color: #849974; } .modal > footer > span { color: #8a987a; } /* Build workspace: platform, configuration and real process output. */ .build-panel { padding: 22px; overflow: auto; max-height: 75vh; font-size: 14px; } .build-platforms { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 20px; } .build-platforms button { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; padding: 14px; border: 1px solid var(--border, #d9d9d2); border-radius: 8px; background: transparent; text-align: left; } .build-platforms button.selected { background: #e4ece5; border-color: #65816a; color: #294b32; } .build-platforms small { font-size: 12px; opacity: 0.8; } .build-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } .build-fields label { display: flex; flex-direction: column; gap: 6px; font-size: 14px; } .build-fields input, .build-fields select, .build-history select { border: 1px solid #d5d5cf; border-radius: 5px; padding: 9px; background: #fff; min-width: 0; font: inherit; color: inherit; } .build-fields .build-check { grid-column: 1/-1; flex-direction: row; align-items: center; } .build-check input { width: auto; } .build-note { font-size: 14px; line-height: 1.55; color: #636a64; margin: 16px 0; overflow-wrap: anywhere; } .build-actions { display: flex; align-items: center; gap: 10px; margin: 20px 0; flex-wrap: wrap; } .build-actions button { padding: 10px 13px; } .build-actions small { color: #727871; margin-left: auto; } .build-error { padding: 10px 12px; background: #f9e9e4; color: #8c3626; border-radius: 5px; overflow-wrap: anywhere; line-height: 1.5; } .build-history { border-top: 1px solid #d9d9d2; padding-top: 18px; margin-top: 22px; } .build-history-title, .build-status { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .build-history-title select { max-width: 65%; } .build-status span { display: flex; align-items: center; gap: 7px; color: #576558; } .build-log { height: 160px; overflow: auto; padding: 12px; background: #202722; color: #d3dfd5; border-radius: 6px; white-space: pre-wrap; overflow-wrap: anywhere; font: 12px/1.6 monospace; } .build-artifact { padding: 12px 0; border-bottom: 1px solid #e2e4df; } .build-artifact a { display: flex; justify-content: space-between; color: #365c3e; font-weight: 600; overflow-wrap: anywhere; gap: 12px; } .build-artifact small { display: block; margin-top: 8px; font: 11px/1.5 monospace; overflow-wrap: anywhere; color: #626c64; } .spin { animation: forma-spin 1.1s linear infinite; } @keyframes forma-spin { to { transform: rotate(360deg); } } @media (max-width: 650px) { .build-platforms { grid-template-columns: 1fr 1fr; } .build-fields { grid-template-columns: 1fr; } .build-history-title { align-items: flex-start; flex-direction: column; } .build-history-title select { max-width: 100%; width: 100%; } }