@import 'tailwindcss'; @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-destructive: var(--destructive); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); } :root { --background: #ffffff; --foreground: #17191d; --card: #ffffff; --card-foreground: #17191d; --popover: #ffffff; --popover-foreground: #17191d; --primary: #17191d; --primary-foreground: #ffffff; --secondary: #edf1ff; --secondary-foreground: #4168d5; --muted: #f0f1f4; --muted-foreground: #767d88; --destructive: #c83737; --border: #dcdfe6; --input: #d9dce3; --ring: #5b7fe5; color: #17191d; background: #eef0f4; font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-synthesis: none; } * { box-sizing: border-box; user-select: none; } body { margin: 0; min-width: 320px; min-height: 100vh; } button, input { font: inherit; } .studio { display: grid; min-height: 100vh; grid-template-columns: minmax(460px, 1fr) minmax(440px, 520px); } .studio-root { min-height: 100vh; overflow-x: clip; } .stage-column { position: sticky; top: 0; display: flex; height: 100vh; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; padding: 28px; background: #101316; color: white; } .stage-column::before { position: absolute; width: 70vw; height: 70vw; border-radius: 50%; background: radial-gradient(circle, rgb(91 127 229 / 18%), transparent 68%); content: ''; pointer-events: none; } .photo-mode-active::before { width: 82vw; height: 82vw; background: radial-gradient(circle, rgb(91 127 229 / 24%), transparent 66%); } .photo-live-frame { position: relative; z-index: 1; width: min(68vh, 68vw, 640px); max-width: 100%; aspect-ratio: 1; overflow: hidden; border-radius: var(--photo-corner-radius, 0%); outline: 1px solid rgb(255 255 255 / 12%); outline-offset: -1px; background: white; box-shadow: 0 0 0 1px rgb(0 0 0 / 18%), 0 28px 80px rgb(0 0 0 / 38%); transition-property: border-radius, box-shadow; transition-duration: 180ms; transition-timing-function: cubic-bezier(0.2, 0, 0, 1); } .photo-live-frame.is-transparent { background-color: white; background-image: linear-gradient(45deg, #e7e9ee 25%, transparent 25%), linear-gradient(-45deg, #e7e9ee 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e7e9ee 75%), linear-gradient(-45deg, transparent 75%, #e7e9ee 75%); background-position: 0 0, 0 10px, 10px -10px, -10px 0; background-size: 20px 20px; } .photo-live-avatar { position: absolute; inset: 0; transform-origin: center; } .photo-live-avatar .avatar-wrap { width: 100%; height: 100%; max-width: none; } .photo-live-frame .stage-playback-status { display: none; } .photo-live-frame.is-frame-tool .gizmo-cluster, .photo-live-frame.is-frame-tool .axis-key { opacity: 0; pointer-events: none; } .photo-frame-interaction { position: absolute; z-index: 12; inset: 0; cursor: grab; outline: none; touch-action: none; } .photo-frame-interaction:focus-visible { box-shadow: inset 0 0 0 3px rgb(120 149 238 / 72%); } .photo-frame-interaction[data-dragging='true'] { cursor: grabbing; } .photo-tool-bar { position: absolute; z-index: 14; bottom: 112px; left: 50%; display: flex; align-items: center; gap: 4px; padding: 4px; border-radius: 16px; background: rgb(22 26 31 / 88%); box-shadow: 0 0 0 1px rgb(255 255 255 / 10%), 0 14px 34px rgb(0 0 0 / 28%); backdrop-filter: blur(14px); transform: translateX(-50%); } .photo-tool-bar [data-slot='button'] { min-height: 40px; border: 0; background: transparent; color: #aeb6c2; transition-property: scale, background-color, color; transition-duration: 150ms; transition-timing-function: ease-out; } .photo-tool-bar [data-slot='button']:active { scale: 0.96; } .photo-tool-bar [data-slot='button'][aria-pressed='true'] { background: #f6f8fc; color: #17191d; box-shadow: 0 4px 12px rgb(0 0 0 / 20%); } .photo-flash { position: absolute; z-index: 20; inset: 0; background: white; pointer-events: none; } .photo-capture-bar { position: absolute; z-index: 8; bottom: 58px; left: 50%; display: flex; align-items: center; gap: 8px; transform: translateX(-50%); } .stage-credit { position: absolute; z-index: 8; bottom: 20px; left: 50%; margin: 0; color: #7f8791; font-size: 10px; transform: translateX(-50%); white-space: nowrap; } .stage-credit a { color: #aeb6c2; text-decoration: none; } .stage-credit a:hover { color: white; } .photo-capture-button { min-width: 190px; height: 44px; padding-inline: 15px 10px; border: 1px solid rgb(255 255 255 / 14%); border-radius: 13px; background: rgb(246 248 252 / 96%); box-shadow: 0 12px 32px rgb(0 0 0 / 28%), inset 0 1px 0 rgb(255 255 255 / 78%); color: #17191d; transition-property: transform, background-color, box-shadow; transition-duration: 160ms; transition-timing-function: cubic-bezier(0.2, 0, 0, 1); } .photo-capture-button:hover { background: white; box-shadow: 0 15px 36px rgb(0 0 0 / 34%), inset 0 1px 0 white; } .photo-capture-button:active { transform: scale(0.96); } .photo-capture-button > svg { width: 17px; height: 17px; } .photo-format-badge { margin-left: auto; padding: 3px 6px; border-radius: 6px; background: #e9edfa; color: #4168d5; font-size: 9px; font-weight: 850; letter-spacing: 0.08em; } .photo-help-button { width: 40px; height: 40px; border: 1px solid rgb(255 255 255 / 13%); border-radius: 12px; background: rgb(26 30 34 / 88%); box-shadow: 0 10px 28px rgb(0 0 0 / 24%); color: #f6f7f8; backdrop-filter: blur(12px); } .photo-help-button:hover { background: rgb(40 45 51 / 96%); color: white; } .photo-help-tooltip { width: min(280px, calc(100vw - 32px)); padding: 9px 11px; line-height: 1.45; text-wrap: pretty; } .studio-identity { position: absolute; z-index: 5; top: 0; right: 0; left: 0; display: flex; align-items: center; justify-content: space-between; pointer-events: none; } .studio-identity > * { pointer-events: auto; } .brand { position: relative; top: 28px; margin-left: 32px; display: flex; align-items: center; gap: 9px; font-size: 13px; font-weight: 760; letter-spacing: -0.01em; } .brand em { color: #77808c; font-style: normal; font-weight: 600; } .brand-mark { width: 20px; height: 20px; border-radius: 50%; background: #5b7fe5; box-shadow: 0 0 0 3px rgb(91 127 229 / 15%); } .language-picker { position: relative; top: 24px; margin-right: 28px; display: flex; align-items: center; gap: 7px; min-height: 34px; padding: 4px 8px 4px 10px; border: 1px solid rgb(255 255 255 / 12%); border-radius: 10px; background: rgb(26 30 34 / 86%); box-shadow: 0 8px 24px rgb(0 0 0 / 18%); backdrop-filter: blur(12px); } .language-picker > span { font-size: 15px; line-height: 1; } .source-link { display: inline-flex; align-items: center; gap: 5px; color: #f6f7f8; font-size: 10px; font-weight: 750; text-decoration: none; } .source-link:hover { color: white; } .source-link:focus-visible { border-radius: 5px; outline: 2px solid #7895ee; outline-offset: 2px; } .source-link svg { width: 14px; height: 14px; } .identity-divider { align-self: stretch; width: 1px; background: rgb(255 255 255 / 14%); } .language-picker [data-slot='select-trigger'] { width: auto; height: 24px; min-width: 46px; padding: 0 4px; border: 0; background: transparent; box-shadow: none; color: #f6f7f8; font-size: 10px; font-weight: 750; } .language-picker [data-slot='select-trigger']:focus-visible { border-radius: 5px; box-shadow: 0 0 0 2px #7895ee; } .inspector-identity { display: none; } .avatar-wrap { position: relative; z-index: 1; width: min(72vh, 72vw, 680px); max-width: 100%; aspect-ratio: 1; } .stage-playback-status { position: absolute; z-index: 6; top: 3%; left: 3%; padding: 9px 11px; border: 1px solid rgb(255 255 255 / 12%); border-radius: 12px; background: rgb(26 30 34 / 86%); box-shadow: 0 8px 24px rgb(0 0 0 / 18%); backdrop-filter: blur(12px); pointer-events: none; } .stage-playback-status .playback-identity { min-width: 104px; padding: 0; } .stage-playback-status .playback-identity strong { color: #f6f7f8; } .stage-playback-status .playback-identity small { color: #8d96a2; } .avatar { position: relative; z-index: 2; display: block; width: 100%; height: 100%; overflow: visible; cursor: grab; touch-action: none; } .avatar-pixel-canvas { position: absolute; z-index: 1; inset: 0; display: block; width: 100%; height: 100%; image-rendering: pixelated; pointer-events: none; } .is-pixel-rendered .avatar-head, .is-pixel-rendered .avatar-eye { fill: transparent; transition: none; } .is-pixel-rendered .avatar-head.cyan-outline, .is-pixel-rendered .avatar-eye.cyan-outline { stroke: #51ddff; } .avatar:active { cursor: grabbing; } .export-avatar-summary { display: flex; align-items: center; gap: 14px; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--muted); } .export-avatar-summary > .avatar-preview { width: 62px; height: 62px; flex: none; border: 1px solid var(--border); border-radius: 10px; background: var(--card); } .export-avatar-summary > div { display: flex; min-width: 0; flex-direction: column; gap: 3px; } .export-avatar-summary small, .export-avatar-summary span, .export-format-grid small { color: var(--muted-foreground); font-size: 11px; font-weight: 500; } .runtime-export-error { display: flex; flex-direction: column; gap: 8px; padding: 10px; border: 1px solid color-mix(in srgb, var(--destructive) 32%, var(--border)); border-radius: 10px; background: color-mix(in srgb, var(--destructive) 5%, var(--card)); } .runtime-export-error-heading { display: flex; align-items: center; gap: 8px; } .runtime-export-error-heading > svg { width: 18px; height: 18px; flex: none; color: var(--destructive); } .runtime-export-error-heading strong { font-size: 12px; } .runtime-error-list { display: grid; gap: 5px; margin: 0; padding-left: 18px; color: var(--destructive); font-size: 11px; line-height: 1.45; } .runtime-export-error-help { margin: 0; color: var(--muted-foreground); font-size: 11px; line-height: 1.45; } .runtime-export-error-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .export-avatar-summary strong { overflow: hidden; font-size: 16px; text-overflow: ellipsis; white-space: nowrap; } .export-format-grid { display: grid; min-width: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .export-format-section { display: grid; min-width: 0; gap: 0; padding: 4px 2px 2px; } .export-format-grid > button { justify-content: flex-start; min-width: 0; height: auto; min-height: 68px; padding: 10px; text-align: left; } .export-format-grid > button[aria-pressed='true'] { border-color: #6f8ff0; background: #edf1ff; box-shadow: 0 0 0 2px rgb(91 127 229 / 14%); color: #3159cb; } .export-format-grid > button > svg { width: 16px; height: 16px; } .export-format-grid > button > span { display: flex; min-width: 0; flex-direction: column; gap: 3px; } .export-format-grid strong, .export-format-grid small { line-height: 1.3; text-wrap: pretty; } .export-format-grid strong { font-size: 11px; } .export-format-grid small { font-size: 10px; } .export-animation-header { align-items: center; margin-bottom: 0; } .export-animation-header > button { color: #4168d5; font-size: 11px; } .export-animation-header > button > svg { width: 15px; height: 15px; } .export-animation-picker { display: grid; gap: 10px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); } .export-animation-select-all { justify-self: end; color: #4168d5; font-size: 11px; } .export-animation-grid { align-items: flex-start; } .export-download { width: 100%; min-height: 44px; box-shadow: 0 12px 30px rgb(23 25 29 / 18%); } .runtime-copy-status { margin: 0; color: var(--muted-foreground); font-size: 11px; text-align: center; } .runtime-copy-status[role='alert'] { color: var(--destructive); } .runtime-quick-start-card, .runtime-export-card { display: grid; gap: 16px; } .runtime-export-description { margin: 0; color: var(--muted-foreground); font-size: 11px; line-height: 1.5; } .runtime-quick-start-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .runtime-quick-start-heading > div, .runtime-export-heading > div { display: grid; min-width: 0; gap: 2px; } .runtime-quick-start-heading h2 { margin: 0; font-size: 15px; letter-spacing: -0.015em; } .runtime-quick-start-heading > button { flex: none; color: #4168d5; font-size: 11px; } .runtime-quick-start-heading > button > svg { width: 14px; height: 14px; } .runtime-quick-start-step { display: grid; min-width: 0; gap: 7px; } .runtime-quick-start-step > span, .runtime-export-heading small { color: var(--muted-foreground); font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; } .runtime-quick-start-step > code { display: block; overflow-x: auto; padding: 10px 12px; border: 1px solid #2d323b; border-radius: 10px; background: #17191d; color: #d8dee9; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; line-height: 1.5; white-space: nowrap; } .runtime-quick-start-step > pre { max-width: 100%; max-height: 245px; margin: 0; overflow: auto; padding: 13px 14px; border: 1px solid #2d323b; border-radius: 10px; background: #17191d; color: #d8dee9; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; line-height: 1.65; white-space: pre; } .runtime-export-heading { display: grid; gap: 8px; } .runtime-export-heading strong { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; overflow-wrap: anywhere; } .runtime-export-actions { display: grid; gap: 8px; } .runtime-export-actions button { width: 100%; min-width: 0; min-height: 42px; } .runtime-export-secondary-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .runtime-token-comment { color: #a6adbb; } .runtime-token-keyword { color: #e9a6ff; } .runtime-token-string { color: #b9e88c; } .runtime-token-tag { color: #8fc7ff; } .runtime-live-example { display: grid; gap: 10px; padding-top: 12px; border-top: 1px solid var(--border); } .runtime-live-example-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .runtime-live-example-heading > div { display: grid; gap: 2px; } .runtime-live-example-heading small { color: var(--muted-foreground); font-size: 10px; } .runtime-live-example-heading strong { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 9px; } .runtime-live-example-heading button { flex: none; } .runtime-live-example-stage { display: grid; min-height: 190px; overflow: hidden; place-items: center; border: 1px solid var(--border); border-radius: 12px; background-color: #f5f7fc; background-image: linear-gradient(rgb(91 127 229 / 6%) 1px, transparent 1px), linear-gradient(90deg, rgb(91 127 229 / 6%) 1px, transparent 1px); background-size: 16px 16px; } .export-panel { width: 100%; min-width: 0; user-select: text; } .export-panel * { user-select: auto; } .export-panel button, .export-panel button * { user-select: none; } .export-accordion-snapshot { order: -1; } .export-accordion-item { min-width: 0; overflow: hidden; border-color: #dcdfe6; box-shadow: 0 4px 14px rgb(24 28 35 / 5%); } .export-accordion-trigger > span { display: grid; min-width: 0; gap: 5px; } .export-accordion-title { display: flex; min-width: 0; align-items: center; gap: 7px; } .export-menu-badge { flex: none; padding: 2px 5px; border-radius: 5px; background: #e9edfa; color: #4168d5; font-size: 8px; font-weight: 850; letter-spacing: 0.08em; line-height: 1.3; text-transform: uppercase; } .export-accordion-trigger strong { color: #343b49; font-size: 12px; font-weight: 850; letter-spacing: 0.1em; text-transform: uppercase; } .export-accordion-trigger small { color: #858c99; font-size: 10px; font-weight: 500; line-height: 1.45; white-space: normal; } .export-accordion-trigger[aria-expanded='true'] > svg { transform: rotate(180deg); } .export-accordion-content { min-width: 0; transition: height 200ms ease; } .export-accordion-inner { display: grid; min-width: 0; gap: 10px; } .export-accordion-inner > * { min-width: 0; } .export-placeholder { margin: 0; padding: 12px; color: var(--muted-foreground); border: 1px dashed var(--border); border-radius: 12px; background: var(--muted); font-size: 12px; line-height: 1.5; } .project-transfer-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .project-transfer-actions > button { min-height: 42px; font-size: 11px; } .project-import-input { display: none; } .project-transfer-error { margin: 10px 0 0; color: var(--destructive); font-size: 12px; line-height: 1.45; } .snapshot-composer-card { display: grid; gap: 14px; } .snapshot-composer-meta { display: flex; min-width: 0; flex-direction: column; gap: 3px; } .snapshot-composer-meta small, .snapshot-composer-meta span, .snapshot-background-field small { color: var(--muted-foreground); font-size: 10px; } .snapshot-composer-meta strong { overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; } .snapshot-composer-meta span { font-variant-numeric: tabular-nums; } .snapshot-composer-meta p { margin: 5px 0 0; color: var(--muted-foreground); font-size: 11px; line-height: 1.45; text-wrap: pretty; } .snapshot-preview { position: relative; width: min(100%, 360px); aspect-ratio: 1; margin-inline: auto; overflow: hidden; border-radius: var(--snapshot-corner-radius, 0%); outline: 1px solid rgb(0 0 0 / 10%); outline-offset: -1px; background: white; box-shadow: 0 1px 2px rgb(18 22 30 / 8%), 0 12px 28px rgb(18 22 30 / 9%); cursor: grab; touch-action: none; transition-property: box-shadow; transition-duration: 160ms; transition-timing-function: ease-out; } .snapshot-preview:hover, .snapshot-preview:focus-visible { box-shadow: 0 0 0 3px rgb(91 127 229 / 18%), 0 1px 2px rgb(18 22 30 / 10%), 0 16px 34px rgb(18 22 30 / 13%); outline: 1px solid rgb(0 0 0 / 10%); } .snapshot-preview[data-dragging='true'] { cursor: grabbing; } .snapshot-preview.is-transparent { background-color: white; background-image: linear-gradient(45deg, #e7e9ee 25%, transparent 25%), linear-gradient(-45deg, #e7e9ee 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e7e9ee 75%), linear-gradient(-45deg, transparent 75%, #e7e9ee 75%); background-position: 0 0, 0 6px, 6px -6px, -6px 0; background-size: 12px 12px; } .snapshot-preview .avatar-preview { display: block; width: 100%; height: 100%; } .snapshot-pixel-transform { position: absolute; inset: 0; transform-origin: center; } .snapshot-composition-fields { display: grid; gap: 8px; margin-top: 14px; } .snapshot-export-button { width: 100%; min-height: 46px; padding-right: 10px; transition-property: scale, background-color, box-shadow; transition-duration: 150ms; transition-timing-function: ease-out; } .snapshot-export-button:active { scale: 0.96; } .snapshot-export-button > span { margin-left: auto; padding: 3px 7px; border-radius: 7px; background: rgb(255 255 255 / 18%); font-size: 9px; font-weight: 850; letter-spacing: 0.08em; } .snapshot-background-field { align-items: center; } .snapshot-background-field > [data-slot='select-trigger'] { width: 170px; margin-left: auto; } .snapshot-background-field [data-slot='select-value'] { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .snapshot-random-button { flex: 0 0 auto; min-height: 28px; padding-inline: 7px; color: var(--muted-foreground); font-size: 10px; } .snapshot-random-button svg { width: 12px; height: 12px; } .snapshot-random-button:not(:disabled):hover { color: var(--foreground); } .snapshot-colors { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 14px; } .snapshot-settings-separator { margin-block: 14px; } .photo-panel-stack { padding-bottom: 24px; } .photo-tool-accordion { gap: 8px; } .photo-tool-accordion-item { border: 0; border-radius: 18px; box-shadow: 0 0 0 1px rgb(24 28 35 / 7%), 0 5px 16px rgb(24 28 35 / 5%); transition-property: box-shadow; transition-duration: 160ms; transition-timing-function: ease-out; } .photo-tool-accordion-item[data-active-tool='true'] { box-shadow: 0 0 0 2px rgb(91 127 229 / 38%), 0 8px 22px rgb(57 82 153 / 10%); } .photo-tool-accordion-trigger { min-height: 66px; padding: 11px 14px; transition-property: scale, background-color, color; transition-duration: 150ms; transition-timing-function: ease-out; } .photo-tool-accordion-trigger:active { scale: 0.96; } .photo-tool-accordion-heading { display: flex; min-width: 0; align-items: center; gap: 11px; } .photo-tool-accordion-heading > span:last-child { display: grid; min-width: 0; gap: 2px; } .photo-tool-accordion-heading strong { color: #252a33; font-size: 12px; font-weight: 850; } .photo-tool-accordion-heading small { color: var(--muted-foreground); font-size: 10px; line-height: 1.4; text-wrap: pretty; } .photo-tool-accordion-icon { display: grid; width: 40px; height: 40px; flex: 0 0 auto; border-radius: 12px; background: #f0f2f7; color: #626d7e; place-items: center; transition-property: background-color, color; transition-duration: 160ms; transition-timing-function: ease-out; } .photo-tool-accordion-item[data-active-tool='true'] .photo-tool-accordion-icon { background: #edf1ff; color: #4168d5; } .photo-tool-accordion-icon svg { width: 18px; height: 18px; } .photo-tool-accordion-content > div { padding: 0 12px 14px; } .photo-tool-accordion-content .control-section { margin-top: 12px; } .photo-tool-accordion-content .control-section:first-child { margin-top: 0; } .photo-frame-settings { padding-top: 3px; } .photo-frame-settings .snapshot-composition-fields { margin-top: 0; } .photo-expression-card { display: grid; gap: 14px; } .photo-expression-grid { max-height: 330px; overflow-y: auto; padding: 3px; overscroll-behavior: contain; scrollbar-gutter: stable; } .photo-reset-frame { width: 100%; margin-top: 12px; } .photo-mode-launch-card { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 12px; } .photo-mode-launch-icon { display: grid; width: 44px; height: 44px; border-radius: 14px; background: #edf1ff; color: #4168d5; place-items: center; } .photo-mode-launch-icon svg { width: 20px; height: 20px; } .photo-mode-launch-card strong { display: block; font-size: 13px; } .photo-mode-launch-card p { margin: 4px 0 0; color: var(--muted-foreground); font-size: 11px; line-height: 1.45; text-wrap: pretty; } .photo-mode-launch-card > [data-slot='button'] { grid-column: 1 / -1; min-height: 42px; } .avatar-head, .preview-head { fill: var(--avatar-body-color, #5b7fe5); } .avatar-eye, .preview-eye { fill: var(--avatar-eye-color, #111316); } .avatar-head, .avatar-eye { transition: fill 420ms cubic-bezier(0.22, 1, 0.36, 1); } .avatar-eye { cursor: pointer; } .cyan-outline { stroke: #51ddff; stroke-width: 2.6; stroke-linejoin: round; vector-effect: non-scaling-stroke; } .selection-outline { fill: none; stroke: #51ddff; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; } .body-selection-outline { stroke-width: 3; filter: drop-shadow(0 0 3px rgb(81 221 255 / 52%)); } .body-node-gizmo { isolation: isolate; } .body-gizmo-ring, .body-gizmo-axis { fill: none; vector-effect: non-scaling-stroke; touch-action: none; transition: opacity 120ms ease, stroke-width 120ms ease, filter 120ms ease; } .body-gizmo-hitbox { fill: none; stroke: transparent; stroke-width: 14; vector-effect: non-scaling-stroke; cursor: grab; touch-action: none; } .body-gizmo-ring { stroke-width: 1.5; opacity: 0.42; cursor: grab; } .body-gizmo-axis { stroke-width: 2.4; cursor: move; } .body-gizmo-ring-hitbox:hover + .body-gizmo-ring, .body-gizmo-ring.is-active, .body-gizmo-axis-hitbox:hover + .body-gizmo-axis, .body-gizmo-axis.is-active { stroke-width: 4; opacity: 1; filter: drop-shadow(0 0 2px currentColor); } .body-gizmo-handle { stroke-width: 1.5; vector-effect: non-scaling-stroke; cursor: move; touch-action: none; } .body-gizmo-handle.gizmo-x { fill: #46d477; } .body-gizmo-handle.gizmo-y { fill: #ef5f5f; } .body-gizmo-handle.gizmo-z { fill: #557bea; } .body-gizmo-origin { fill: #f8fafc; stroke: #11161d; stroke-width: 1.5; vector-effect: non-scaling-stroke; transition: r 120ms ease, stroke-width 120ms ease, filter 120ms ease; } .body-gizmo-plane-hitbox { fill: transparent; cursor: move; touch-action: none; } .body-gizmo-plane-hitbox:hover + .body-gizmo-origin, .body-gizmo-origin.is-active { stroke: #51ddff; stroke-width: 3; filter: drop-shadow(0 0 3px rgb(81 221 255 / 72%)); } .body-gizmo-reset { cursor: pointer; outline: none; } .body-gizmo-reset circle { fill: rgb(17 22 29 / 92%); stroke: #8da7ef; stroke-width: 1.3; vector-effect: non-scaling-stroke; } .body-gizmo-reset text { fill: #f8fafc; font-size: 8px; font-weight: 800; pointer-events: none; text-anchor: middle; } .body-gizmo-reset:hover circle, .body-gizmo-reset:focus-visible circle { fill: #2c4d9d; stroke: #c6d5ff; stroke-width: 2.5; } .body-gizmo-label { fill: #f8fafc; font-size: 7px; font-weight: 900; paint-order: stroke; pointer-events: none; stroke: #11161d; stroke-width: 2px; text-anchor: middle; } .editor-guide { fill: none; stroke: rgb(81 221 255 / 58%); stroke-width: 1.15; stroke-dasharray: 3 3; pointer-events: none; } .editor-control { cursor: grab; touch-action: none; } .editor-control:active { cursor: grabbing; } .editor-handle { fill: #111316; stroke: #51ddff; stroke-width: 2; } .editor-label { fill: #fff; font-size: 6px; font-weight: 900; text-anchor: middle; pointer-events: none; user-select: none; } .wire { fill: none; stroke: rgb(255 255 255 / 28%); stroke-width: 1; vector-effect: non-scaling-stroke; } .gizmo-cluster { position: absolute; z-index: 4; top: 2%; right: 2%; display: flex; flex-direction: row-reverse; align-items: flex-start; gap: 5px; } .gizmo { width: 94px; height: 94px; overflow: visible; } .gizmo-reset { width: 26px; height: 26px; border-color: rgb(255 255 255 / 12%); background: rgb(24 29 36 / 82%); color: #dbe4f3; backdrop-filter: blur(8px); } .gizmo-reset:hover { background: rgb(46 54 65 / 92%); color: white; } .gizmo-orbit { fill: none; stroke-width: 2; vector-effect: non-scaling-stroke; cursor: ew-resize; transition: stroke-width 140ms ease, filter 140ms ease; touch-action: none; } .gizmo-orbit:hover, .gizmo-orbit:active { stroke-width: 5; filter: brightness(1.25); } .gizmo-camera { stroke: #f0ce45; } .gizmo-x { stroke: #46d477; } .gizmo-y { stroke: #ef5f5f; } .gizmo-z { stroke: #557bea; } .axis-key { position: absolute; right: 4%; bottom: 3%; display: flex; align-items: center; gap: 6px; color: #77808c; font-size: 10px; font-weight: 800; } .axis-key i { display: block; width: 6px; height: 6px; margin-left: 4px; border-radius: 50%; } .axis-key .x { background: #46d477; } .axis-key .y { background: #ef5f5f; } .axis-key .z { background: #557bea; } .stage-help { position: absolute; bottom: 28px; width: min(520px, 82%); margin: 0; color: #77808c; font-size: 12px; line-height: 1.5; text-align: center; } .inspector { --app-footer-clearance: 140px; height: 100vh; overflow-x: hidden; overflow-y: auto; scrollbar-gutter: stable; padding: 28px 26px var(--app-footer-clearance); border-left: 1px solid #d9dce3; background: #f5f6f8; } .inspector.expression-workspace-active, .inspector.sequence-workspace-active, .inspector.body-workspace { padding-top: 0; } .inspector.state-player-active { --app-footer-clearance: 220px; } @keyframes studio-workspace-in { from { opacity: 0; transform: translateX(-10px); } } @keyframes body-workspace-in { from { opacity: 0; transform: translateX(18px); } } .studio-workspace { animation: studio-workspace-in 220ms cubic-bezier(0.22, 1, 0.36, 1); } .body-workspace { animation: body-workspace-in 220ms cubic-bezier(0.22, 1, 0.36, 1); } @media (prefers-reduced-motion: reduce) { .studio-workspace, .body-workspace, .dialog-backdrop, .dialog-content { animation: none; } } .workspace-page { display: flex; min-height: calc(100vh - 76px); flex-direction: column; padding-bottom: 0; } .workspace-header { position: sticky; z-index: 8; top: 0; display: flex; align-items: flex-start; gap: 12px; margin-bottom: 18px; padding: 31px 2px 16px; border-bottom: 1px solid #d9dce3; background: linear-gradient(to bottom, #f5f6f8 78%, rgb(245 246 248 / 88%)); backdrop-filter: blur(10px); } .workspace-header > [data-slot='button']:first-child { flex: 0 0 auto; margin-top: 4px; border: 1px solid #dfe2e8; border-radius: 50%; background: white; box-shadow: 0 4px 14px rgb(24 28 35 / 5%); } .workspace-heading { min-width: 0; flex: 1; } .workspace-heading h1 { font-size: 25px; } .workspace-heading > p:last-child { max-width: 360px; margin: 6px 0 0; color: #818792; font-size: 11px; line-height: 1.45; } .workspace-header-reset { flex: 0 0 auto; margin-top: 18px; } .workspace-header-actions { display: flex; flex: 0 0 auto; gap: 8px; } .workspace-scroll { display: grid; gap: 12px; } .workspace-footer { position: fixed; z-index: 8; right: 0; bottom: 0; display: flex; width: min(520px, 100vw); box-sizing: border-box; align-items: center; justify-content: space-between; gap: 12px; margin: 0; padding: 20px 28px 18px; border-top: 1px solid #d9dce3; background: linear-gradient(to bottom, rgb(245 246 248 / 86%), #f5f6f8 30%); backdrop-filter: blur(10px); } .workspace-footer > [data-slot='button']:last-child, .workspace-footer .dialog-actions-main [data-slot='button'] { min-width: 120px; } .workspace-footer-secondary { display: flex; align-items: center; gap: 8px; } .inspector-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 22px; } .mode-page-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 20px; padding: 4px 2px 0; } .mode-page-header .eyebrow { margin-bottom: 5px; } .mode-page-header h1 { font-size: 28px; } .eyebrow { margin: 0 0 6px; color: #7185c4; font-size: 10px; font-weight: 850; letter-spacing: 0.11em; text-transform: uppercase; } h1 { margin: 0; font-size: 30px; letter-spacing: -0.045em; } h2, h3, p { margin-top: 0; } .state-player { display: inline-flex; align-items: center; gap: 4px; padding: 4px; border: 1px solid #dde1e9; border-radius: 12px; background: white; box-shadow: 0 5px 18px rgb(24 28 35 / 5%); } .playback-identity { display: inline-flex; align-items: center; gap: 8px; color: #33834b; } .state-player .playback-identity { min-width: 102px; padding: 2px 7px; } .playback-identity.is-paused { color: #8a6a24; } .playback-identity.is-stopped { color: #7f8692; } .playback-identity i { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 4px color-mix(in srgb, currentColor 10%, transparent); } .playback-identity > span { display: grid; gap: 1px; } .playback-identity small { color: #9297a1; font-size: 8px; font-weight: 750; letter-spacing: 0.06em; line-height: 1; text-transform: uppercase; } .playback-identity strong { max-width: 92px; overflow: hidden; color: #343943; font-size: 10px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .state-player [data-slot='button'] { width: 48px; height: 48px; } .state-player svg { width: 32px; height: 32px; } .state-playback-footer { position: fixed; z-index: 9; right: 0; bottom: 62px; width: min(520px, 100vw); box-sizing: border-box; padding: 24px 18px 10px; border-top: 1px solid #d9dce3; background: rgb(250 251 253 / 96%); box-shadow: 0 -10px 30px rgb(24 28 35 / 8%); backdrop-filter: blur(14px); } .state-playback-drag-handle-slot { position: absolute; z-index: 2; top: 0; right: 0; left: 0; display: flex; height: 24px; align-items: center; justify-content: center; pointer-events: none; } .state-playback-drag-handle { display: grid; width: 64px; height: 24px; padding: 0; border: 0; outline: 0; border-radius: 999px; background: transparent; cursor: grab; place-items: center; pointer-events: auto; touch-action: none; } .state-playback-drag-handle:active { cursor: grabbing; } .state-playback-drag-handle:focus-visible { box-shadow: 0 0 0 3px rgb(91 127 229 / 28%); } .state-playback-drag-handle > span { width: 38px; height: 4px; border-radius: 999px; background: #b9bfca; transition: width 160ms ease, background-color 160ms ease; } .state-playback-drag-handle:hover > span, .state-playback-drag-handle:focus-visible > span { width: 44px; background: #5b7fe5; } .state-playback-bar { display: flex; min-width: 0; align-items: center; gap: 14px; } .state-playback-details-shell { will-change: opacity; } .state-playback-details { display: grid; overflow: hidden; gap: 14px; padding: 16px 2px 6px; border-top: 1px solid #dfe3eb; } .state-playback-details-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; } .state-playback-details-header > div { min-width: 0; } .state-playback-details-header .eyebrow { margin-bottom: 4px; } .state-playback-details-header h2 { margin: 0; font-size: 17px; } .state-playback-details-header p:last-child { margin: 5px 0 0; color: #7f8692; font-size: 10px; line-height: 1.45; } .state-playback-detail-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; } .state-playback-detail-grid > div { display: grid; min-width: 0; gap: 3px; padding: 10px; border: 1px solid #e1e5ec; border-radius: 11px; background: white; } .state-playback-detail-grid span, .state-playback-detail-grid small { overflow: hidden; color: #858b96; font-size: 8px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; } .state-playback-detail-grid span { letter-spacing: 0.04em; text-transform: uppercase; } .state-playback-detail-grid strong { font-size: 12px; } .state-playback-controls { display: flex; flex: 0 0 auto; align-items: center; padding-left: 14px; border-left: 1px solid #dfe3eb; } .state-playback-footer .state-player { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; } .state-playback-timeline { display: flex; min-width: 0; flex: 1; gap: 6px; overflow-x: scroll; padding: 5px 3px 7px; scroll-behavior: smooth; scrollbar-color: #cbd2df transparent; scrollbar-width: thin; } .state-playback-step { position: relative; width: 58px; height: 58px; flex: 0 0 58px; overflow: hidden; padding: 2px; border-radius: 11px; background: white; box-shadow: 0 3px 10px rgb(24 28 35 / 5%); } .state-playback-step .avatar-preview { width: 100%; height: 100%; } .state-playback-step[aria-pressed='true'] { border-color: #aebff0; background: #edf1ff; box-shadow: 0 0 0 2px rgb(91 127 229 / 16%); } @property --state-countdown-angle { syntax: ''; inherits: false; initial-value: 360deg; } @keyframes state-playback-countdown { to { --state-countdown-angle: 0deg; } } .state-playback-progress { position: absolute; bottom: 5px; left: 5px; width: 16px; height: 16px; border: 2px solid white; border-radius: 50%; background: conic-gradient(#4f72d8 var(--state-countdown-angle), white 0); box-shadow: 0 1px 4px rgb(24 28 35 / 22%); animation-name: state-playback-countdown; animation-timing-function: linear; animation-fill-mode: forwards; pointer-events: none; } .body-workspace-header [data-slot='button'] { align-self: center; cursor: pointer; } .body-workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 18px; padding: 31px 2px 16px; border-bottom: 1px solid #d9dce3; } .avatar-name-input { width: min(330px, 100%); margin: 0; padding: 1px 5px; border: 1px solid transparent; border-radius: 7px; outline: 0; background: transparent; color: #17191d; font-size: 26px; font-weight: 800; letter-spacing: -0.045em; } .avatar-name-input:hover { border-color: #d9dce3; background: white; } .avatar-name-input:focus { border-color: #7895ee; background: white; box-shadow: 0 0 0 3px rgb(95 131 232 / 12%); } .body-workspace-header p:not(.eyebrow) { margin: 6px 0 0; color: #818792; font-size: 11px; line-height: 1.45; } .body-workspace-header [data-slot='button']:disabled { cursor: not-allowed; opacity: 0.4; } .avatar-shelf { position: relative; margin-bottom: 12px; padding: 20px; border: 1px solid #dcdfe6; border-radius: 16px; background: white; box-shadow: 0 4px 14px rgb(24 28 35 / 5%); } .avatar-shelf-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; } .avatar-shelf-heading strong { font-size: 11px; } .avatar-shelf-heading span { color: #8d929c; font-size: 8px; } .avatar-shelf .avatar-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; } .avatar-shelf .avatar-card, .avatar-shelf .avatar-add { height: auto; min-height: 0; aspect-ratio: 1; border-radius: 14px; } .avatar-sort-item { min-width: 0; will-change: transform; } .avatar-sort-item .avatar-card { width: 100%; } .avatar-sort-item[data-dragging='true'] .avatar-card { border-style: dashed; box-shadow: none; } .avatar-shelf .avatar-card { flex-direction: column; align-items: stretch; cursor: grab; } .avatar-shelf .avatar-card:active { cursor: grabbing; } .avatar-shelf .avatar-card .avatar-preview { height: auto; min-height: 0; flex: 1 1 auto; } .avatar-shelf .avatar-card > span { min-height: 12px; padding: 2px 4px; font-size: 9px; } .tabs { position: sticky; z-index: 5; top: 12px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; margin-bottom: 16px; padding: 5px; backdrop-filter: blur(14px); } .desktop-mode-tabs { display: none; } .mobile-mode-tabs { position: fixed; z-index: 10; right: 0; bottom: 0; display: grid; width: min(520px, 100vw); min-height: 62px; padding: 5px 8px; border-top: 1px solid #d9dce3; background: rgb(250 251 253 / 97%); box-shadow: 0 -8px 24px rgb(24 28 35 / 7%); grid-template-columns: repeat(5, minmax(0, 1fr)); backdrop-filter: blur(16px); } .mobile-mode-tab { display: flex; height: 51px; min-width: 0; flex-direction: column; gap: 3px; border-radius: 999px; color: #7b828e; font-size: 9px; font-weight: 750; } .mobile-mode-tab > svg { width: 19px; height: 19px; } .mobile-mode-tab > span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; } .mobile-mode-tab[aria-pressed='true'] { background: #edf1ff; color: #4168d5; } .mobile-avatar-tab > .avatar-preview { width: 27px; height: 27px; margin-block: -4px -1px; border-radius: 50%; } .drawer-backdrop { position: fixed; z-index: 40; inset: 0; background: transparent; animation: drawer-backdrop-in 180ms ease-out; } .dialog-backdrop { position: fixed; z-index: 50; inset: 0; background: rgb(18 22 30 / 48%); backdrop-filter: blur(8px); animation: dialog-backdrop-in 180ms ease-out; } .dialog-content { position: fixed; z-index: 51; top: 50%; left: 50%; display: flex; width: min(760px, calc(100vw - 32px)); max-height: min(86dvh, 820px); flex-direction: column; overflow: hidden; transform: translate(-50%, -50%); border: 1px solid #d9dce3; border-radius: 24px; outline: 0; background: #f5f6f8; box-shadow: 0 28px 90px rgb(12 16 24 / 28%); animation: dialog-content-in 220ms cubic-bezier(0.22, 1, 0.36, 1); } .dialog-header { position: relative; display: grid; gap: 5px; padding: 24px 28px 18px; border-bottom: 1px solid #dfe2e8; background: rgb(255 255 255 / 76%); } .dialog-title { margin: 0; color: #17191d; font-size: 24px; font-weight: 820; letter-spacing: -0.045em; } .dialog-description { max-width: 620px; margin: 0; color: #7c838e; font-size: 12px; line-height: 1.5; } .avatar-guide-dialog .avatar-guide-close { position: absolute; top: 18px; right: 18px; } .avatar-guide-dialog { user-select: text; } .avatar-guide-dialog * { user-select: auto; } .runtime-preview-dialog { width: min(1080px, calc(100vw - 32px)); max-height: min(90dvh, 880px); } .runtime-preview-dialog .runtime-preview-close { position: absolute; top: 18px; right: 18px; } .runtime-preview-body { display: grid; min-height: 0; grid-template-columns: minmax(0, 1.08fr) minmax(300px, 0.92fr); gap: 14px; overflow-y: auto; padding: 18px 20px 22px; } .runtime-preview-stage-card, .runtime-preview-controls > section { border: 1px solid #dfe2e8; border-radius: 18px; background: rgb(255 255 255 / 82%); } .runtime-preview-stage-card { display: grid; align-content: start; gap: 14px; padding: 16px; } .runtime-preview-stage-heading, .runtime-preview-control-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .runtime-preview-stage-heading > div, .runtime-preview-control-heading > div { display: grid; gap: 2px; } .runtime-preview-stage-heading small, .runtime-preview-control-heading small, .runtime-preview-current small { color: var(--muted-foreground); font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; } .runtime-preview-stage-heading strong { font-size: 15px; } .runtime-preview-status { display: inline-flex; align-items: center; gap: 7px; min-height: 28px; padding: 0 10px; border: 1px solid #dce1ea; border-radius: 999px; color: #687180; background: #f8f9fb; font-size: 10px; font-weight: 750; } .runtime-preview-status > span { width: 6px; height: 6px; border-radius: 50%; background: #7d8796; } .runtime-preview-status[data-status='playing'] > span { background: #45b878; box-shadow: 0 0 0 4px rgb(69 184 120 / 11%); } .runtime-preview-status[data-status='paused'] > span { background: #d99b35; box-shadow: 0 0 0 4px rgb(217 155 53 / 11%); } .runtime-preview-stage { display: grid; min-height: 360px; place-items: center; overflow: hidden; border: 1px solid #dce1e9; border-radius: 16px; background: linear-gradient(rgb(92 113 160 / 7%) 1px, transparent 1px), linear-gradient(90deg, rgb(92 113 160 / 7%) 1px, transparent 1px), #f4f6fa; background-size: 20px 20px; } .runtime-preview-current { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .runtime-preview-current > div { display: grid; min-width: 0; gap: 3px; padding: 10px 12px; border: 1px solid #e0e4eb; border-radius: 11px; background: #f9fafc; } .runtime-preview-current strong { overflow: hidden; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .runtime-preview-transport { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; } .runtime-preview-transport > button { min-width: 0; } .runtime-preview-error { margin: 0; color: var(--destructive); font-size: 11px; } .runtime-preview-controls { display: grid; align-content: start; gap: 12px; } .runtime-preview-controls > section { display: grid; gap: 12px; padding: 14px; } .runtime-preview-control-heading h3 { margin: 0; font-size: 14px; } .runtime-preview-control-heading > span { color: var(--muted-foreground); font-size: 10px; } .runtime-preview-option-grid { display: grid; max-height: 224px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; overflow-y: auto; padding: 2px; } .runtime-preview-option-grid > button { justify-content: flex-start; min-width: 0; padding-inline: 10px; } .runtime-preview-option-grid > button > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .runtime-preview-option-grid > button[aria-pressed='true'] { border-color: #7894e7; background: #edf2ff; box-shadow: 0 0 0 2px rgb(91 127 229 / 12%); color: #3159cb; } .runtime-preview-expression-grid { max-height: 250px; } .runtime-preview-empty { margin: 0; padding: 18px; color: var(--muted-foreground); border: 1px dashed #d8dde6; border-radius: 11px; font-size: 11px; text-align: center; } .avatar-guide-kicker { display: flex; align-items: center; gap: 6px; color: #4168d5; font-size: 10px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } .avatar-guide-kicker > svg { width: 14px; height: 14px; } .avatar-guide-body { display: grid; gap: 12px; overflow-y: auto; padding: 18px 28px 24px; } .avatar-guide-section { display: grid; gap: 12px; padding: 16px; border: 1px solid #dfe2e8; border-radius: 16px; background: rgb(255 255 255 / 76%); } .avatar-guide-section--accent { border-color: #c5d2fb; background: linear-gradient(135deg, #f0f3ff, #ffffff); } .avatar-guide-section--api { gap: 16px; background: #fbfcfe; } .avatar-guide-section-heading { display: flex; align-items: flex-start; gap: 10px; } .avatar-guide-section-heading > svg { width: 18px; height: 18px; flex: none; margin-top: 1px; color: #4168d5; } .avatar-guide-section-heading h3 { margin: 0; color: #262a31; font-size: 13px; font-weight: 800; letter-spacing: -0.02em; } .avatar-guide-section-heading p { margin: 4px 0 0; color: #717985; font-size: 11px; line-height: 1.55; } .avatar-guide-section-heading code { padding: 1px 4px; border-radius: 4px; background: #edf1ff; color: #3159cb; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; } .avatar-guide-notice { margin: 0; color: #687281; font-size: 11px; line-height: 1.5; text-wrap: pretty; } .avatar-guide-section-heading--nested { margin-top: 2px; padding-top: 14px; border-top: 1px solid #e6e9ef; } .avatar-guide-prop-group { display: grid; gap: 6px; } .avatar-guide-prop-group > strong { color: #4d5665; font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; } .avatar-guide-prop-group dl { display: grid; margin: 0; overflow: hidden; border: 1px solid #e0e4eb; border-radius: 11px; background: #ffffff; } .avatar-guide-prop { display: grid; grid-template-columns: minmax(150px, 0.42fr) minmax(0, 1fr); gap: 14px; padding: 9px 11px; border-bottom: 1px solid #edf0f4; } .avatar-guide-prop:last-child { border-bottom: 0; } .avatar-guide-prop dt, .avatar-guide-prop dd { min-width: 0; margin: 0; } .avatar-guide-prop dt { display: grid; align-content: start; gap: 3px; } .avatar-guide-prop dt code { color: #3159cb; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; font-weight: 700; overflow-wrap: anywhere; } .avatar-guide-prop-type { color: #8a93a1; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; line-height: 1.35; overflow-wrap: anywhere; } .avatar-guide-prop dd { color: #687281; font-size: 11px; line-height: 1.45; } .avatar-guide-code { max-width: 100%; margin: 0; overflow-x: auto; padding: 12px 14px; border: 1px solid #2d323b; border-radius: 11px; background: #17191d; color: #d8dee9; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; line-height: 1.6; white-space: pre; } .avatar-guide-footer { display: flex; justify-content: flex-end; padding: 14px 28px 20px; border-top: 1px solid #dfe2e8; background: rgb(255 255 255 / 76%); } @keyframes dialog-backdrop-in { from { opacity: 0; } } @keyframes dialog-content-in { from { opacity: 0; transform: translate(-50%, calc(-50% + 12px)) scale(0.98); } } .drawer-viewport { position: fixed; z-index: 41; inset: 0; display: flex; align-items: flex-end; justify-content: flex-end; pointer-events: none; } .drawer-content { width: min(520px, 100vw); max-height: min(72dvh, 680px); overflow-x: hidden; overflow-y: auto; padding: 9px 20px 28px; border: 1px solid #d9dce3; border-bottom: 0; border-radius: 24px 24px 0 0; outline: 0; background: #f5f6f8; box-shadow: 0 -24px 70px rgb(12 16 24 / 22%); animation: drawer-content-in 240ms cubic-bezier(0.22, 1, 0.36, 1); pointer-events: auto; } .drawer-handle { display: grid; width: 100%; height: 24px; margin: 0 0 3px; padding: 0; border: 0; outline: 0; background: transparent; cursor: pointer; place-items: center; } .drawer-handle > span { width: 42px; height: 5px; border-radius: 999px; background: #c8ccd4; } .avatar-drawer-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 14px; padding-inline: 2px; } .avatar-drawer-heading > span { color: #858b96; font-size: 11px; font-weight: 800; } .drawer-title { margin: 0; font-size: 21px; letter-spacing: -0.035em; } .drawer-description { margin: 4px 0 0; color: #7c838e; font-size: 10px; } .avatar-drawer .avatar-shelf { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; } .avatar-drawer .avatar-shelf .avatar-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } @keyframes drawer-backdrop-in { from { opacity: 0; } } @keyframes drawer-content-in { from { transform: translateY(100%); } } .inspector.state-player-active .mobile-mode-tabs { border-top: 0; box-shadow: none; } .state-buttons button, .button-row button, .reset { min-height: 36px; font-size: 11px; } .color-field { display: grid; gap: 8px; color: #3d424b; font-size: 10px; font-weight: 780; } .color-control { display: flex; align-items: center; gap: 9px; min-height: 42px; padding: 5px 9px 5px 5px; border: 1px solid #dcdfe6; border-radius: 10px; background: #f8f9fb; } .color-swatch { width: 38px; height: 30px; padding: 2px; border-radius: 7px; cursor: pointer; } .color-control .color-value { width: 86px; height: 28px; padding: 0 6px; border: 0; background: transparent; box-shadow: none; color: #656c77; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; letter-spacing: 0.04em; } .ambient-motion-field { grid-template-columns: minmax(0, 1fr) 170px; } .ambient-motion-field [data-slot='select-trigger'] { height: 34px; padding: 0 30px 0 10px; border: 1px solid #d8dce5; border-radius: 8px; outline: none; background: #fff; color: #272b33; font-size: 12px; } .ambient-motion-field [data-slot='select-trigger']:focus-visible { border-color: #7897f4; box-shadow: 0 0 0 3px rgb(91 127 229 / 14%); } .field-help { margin: 9px 0 0; color: #858a95; font-size: 11px; line-height: 1.45; } .semantic-key-card input { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; } .semantic-key-label { color: var(--foreground); font-size: 12px; font-weight: 700; } .semantic-key-error { margin: 0; color: var(--destructive); font-size: 11px; line-height: 1.45; } .semantic-key-card input[aria-invalid='true'] { border-color: var(--destructive); box-shadow: 0 0 0 3px color-mix(in srgb, var(--destructive) 14%, transparent); } .color-panel { position: relative; } .render-style-field > [data-slot='select-trigger'] { width: 150px; } .render-style-disabled { display: grid; gap: 12px; } .render-style-status { display: flex; justify-content: flex-start; } .pixel-render-options { display: grid; margin-top: 14px; padding-top: 4px; border-top: 1px solid #eceef2; } .pixel-render-options .switch { margin-top: 0; } .inherit-colors { position: absolute; top: 14px; right: 14px; } .position-spacing { margin-top: 14px; padding-top: 12px; border-top: 1px solid #eceef2; } .panel-inline-subtitle { margin: 4px 0 0; color: #858a95; font-size: 10px; font-weight: 500; line-height: 1.45; } .panel-stack { display: grid; gap: 14px; } .control-section { display: grid; gap: 14px; padding: 20px; border: 1px solid #dcdfe6; border-radius: 16px; background: white; box-shadow: 0 4px 14px rgb(24 28 35 / 5%); } .control-section-header { padding: 4px 5px 2px; } .control-section-header h2 { margin: 0; color: #343b49; font-size: 12px; font-weight: 850; letter-spacing: 0.1em; text-transform: uppercase; } .control-section-header p { margin: 5px 0 0; color: #858c99; font-size: 10px; line-height: 1.45; } .control-section-separator { opacity: 0.7; } .control-section-content { display: grid; gap: 10px; } .control-section .panel { border-color: #e0e3e9; } .control-section-compact { padding: 20px; border-radius: 16px; } .control-section-compact .control-section-header { padding-inline: 3px; } .body-tree { display: grid; gap: 8px; } .body-node-accordion-item { overflow: hidden; border: 1px solid #dde1e9; border-radius: 13px; background: #fff; transition: border-color 160ms ease, box-shadow 160ms ease; } .body-node-accordion-item[data-open] { border-color: #7796ec; box-shadow: 0 0 0 2px rgb(91 127 229 / 10%); } .body-node-trigger { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 66px; padding: 9px 12px; text-align: left; white-space: normal; transition: background-color 160ms ease; } .body-node-trigger:hover, .body-node-trigger[aria-expanded='true'] { background: #edf1ff; } .body-node-trigger[aria-expanded='true'] { color: #3f63c6; } .body-node-trigger > svg { width: 18px; height: 18px; margin-left: auto; color: #7c8492; transition: transform 180ms cubic-bezier(0.2, 0, 0, 1); } .body-node-trigger[aria-expanded='true'] > svg { transform: rotate(180deg); } .body-node-summary { display: grid; min-width: 0; flex: 1; gap: 2px; } .body-node-summary strong, .body-node-summary small { line-height: 1.25; } .body-node-summary small { color: #858a95; font-size: 9px; } .body-node-title-line { display: flex; align-items: center; gap: 7px; } .body-node-title-line [data-slot='badge'] { padding: 2px 6px; font-size: 7px; letter-spacing: 0.04em; text-transform: uppercase; } .body-node-accordion-content > div { padding: 0 12px 12px; } .body-node-accordion-content > div::before { display: block; height: 1px; margin-bottom: 12px; background: #e6e9f0; content: ''; } .body-structure-thumbnail { display: grid; width: 48px; height: 48px; overflow: hidden; flex: 0 0 48px; place-items: center; border-radius: 9px; background: #f7f8fb; outline: 1px solid rgb(0 0 0 / 10%); } .body-structure-thumbnail svg { width: 100%; height: 100%; padding: 2px; } .body-structure-thumbnail path { vector-effect: non-scaling-stroke; stroke-linejoin: round; transition: fill 160ms ease, stroke 160ms ease, opacity 160ms ease; } .body-structure-thumbnail path.is-active { fill: #7c8492; stroke: #646d7a; stroke-width: 1.5; } .body-structure-thumbnail path.is-context { fill: transparent; stroke: #a8afbb; stroke-width: 1.5; opacity: 0.9; } .body-add { display: grid; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #eceef2; } .body-add-trigger { width: 100%; min-height: 42px; border-style: dashed; color: #5875cf; transition: border-color 160ms ease, background-color 160ms ease, transform 120ms ease; } .body-add-trigger:active { transform: scale(0.96); } .body-add-trigger span { flex: 1; text-align: left; } .body-add-trigger small { color: #858a95; font-size: 9px; font-variant-numeric: tabular-nums; } .body-add-trigger > svg:last-child { transition: transform 180ms cubic-bezier(0.2, 0, 0, 1); } .body-add-trigger[aria-expanded='true'] > svg:last-child { transform: rotate(180deg); } .body-add-options { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; } .body-node-actions button { font-size: 9px; } .body-add .body-add-card { height: 62px; min-height: 62px; padding: 4px 2px; border-radius: 10px; font-size: 8px; } .body-add .body-add-card svg { width: 30px; height: 30px; } .body-node-editor { padding: 0; } .body-node-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .body-node-actions > div { display: flex; gap: 6px; } .body-gizmo-help { display: flex; align-items: center; gap: 8px; margin: 10px 0 0; color: #747c89; font-size: 9px; line-height: 1.4; } .body-transform-grid { display: grid; margin-top: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .body-transform-grid h3 { margin: 0 0 5px; font-size: 10px; } .body-transform-grid .numeric-field { grid-template-columns: 42px minmax(0, 1fr); } .body-transform-grid .scrub-label { grid-column: 1; } .panel { gap: 14px; padding: 20px; border: 1px solid #dcdfe6; border-radius: 16px; background: white; box-shadow: 0 4px 14px rgb(24 28 35 / 5%); } .section-description { margin: -2px 3px 2px; color: #747c89; font-size: 10px; line-height: 1.55; } .panel.compact { padding-top: 16px; } .surface-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; } .surface-card { display: grid; min-width: 0; min-height: 82px; padding: 6px 4px 7px; place-items: center; color: #767c87; cursor: pointer; font-size: 9px; font-weight: 780; transition: border-color 140ms ease, background 140ms ease, color 140ms ease, transform 140ms ease; } .surface-card:hover { border-color: #c7cfdf; transform: translateY(-1px); } .surface-card[aria-pressed='true'] { border-color: #7796ec; background: #edf1ff; color: #3f63c6; box-shadow: 0 0 0 2px rgb(91 127 229 / 12%); } .surface-card svg { width: 48px; height: 48px; } .surface-card svg path { fill: currentColor; } .surface-fields { display: grid; margin-top: 14px; padding-top: 10px; border-top: 1px solid #eceef2; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 14px; } .surface-fields .numeric-field { grid-template-columns: minmax(0, 1fr) 72px; } .surface-fields .numeric-field + .numeric-field { border-top: 0; } .panel-title h2, .panel-title h3, .panel-inline-title h2, .panel-inline-title h3, .preset-header h2, .state-detail h2 { margin: 0; font-size: 15px; letter-spacing: -0.015em; } .panel-title { gap: 5px; margin-bottom: 17px; padding: 0; } .panel-title [data-slot='card-title'] { line-height: inherit; } .panel-title [data-slot='card-description'] { font-size: 11px; line-height: 1.45; } .panel-title p { margin: 5px 0 17px; color: #858a95; font-size: 11px; line-height: 1.45; } .panel-inline-title, .preset-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .eye-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .eye-column h3 { margin: 0 0 5px 4px; color: #858a95; font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; } .eye-columns .numeric-field { grid-template-columns: minmax(0, 1fr) 72px; } .eye-columns .numeric-field + .numeric-field { border-top: 0; } .preset-header > span { color: #8a8f99; font-size: 10px; } .numeric-field { display: grid; align-items: center; grid-template-columns: minmax(112px, 0.85fr) minmax(100px, 1fr) 72px; gap: 10px; min-height: 39px; } .numeric-field + .numeric-field { border-top: 1px solid #f0f1f4; } .scrub-label { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 5px; padding: 8px 4px; cursor: ew-resize; touch-action: none; font-size: 11px; font-weight: 720; text-align: left; } .scrub-label span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .scrub-icon { color: #7891dc; font-size: 14px; opacity: 0.65; } .scrub-label:hover .scrub-icon, .scrub-label:active .scrub-icon { opacity: 1; } .range { width: 100%; accent-color: #5b7fe5; cursor: pointer; } .number-shell { display: flex; align-items: center; overflow: hidden; border: 1px solid #dcdfe6; border-radius: 8px; background: #f7f8fa; } .number-shell:focus-within { border-color: #7592e9; box-shadow: 0 0 0 3px rgb(91 127 229 / 12%); } .number-shell input { width: 100%; min-width: 0; padding: 7px 0 7px 8px; border: 0; outline: 0; background: transparent; font-size: 10px; font-variant-numeric: tabular-nums; } .number-shell span { padding-right: 7px; color: #8a8f99; font-size: 9px; } .number-shell input::-webkit-inner-spin-button { display: none; } .link-button, .icon-button { display: grid; width: 32px; height: 32px; padding: 7px; place-items: center; } .link-button svg { width: 16px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-width: 1.8; } .link-button[aria-pressed='true'] { border-color: #b8c7f3; background: #edf1ff; color: #5075df; } .switch { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; padding-top: 13px; border-top: 1px solid #eceef2; font-size: 11px; font-weight: 720; } .switch input { accent-color: #5b7fe5; } .reset { width: 100%; margin-top: 14px; } .expression-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; } .expression-sort-item, .state-sort-item { min-width: 0; } .expression-sort-item > *, .state-sort-item > * { width: 100%; } .expression-card, .expression-add { position: relative; min-height: 76px; overflow: hidden; padding: 3px; cursor: pointer; } .avatar-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; } .avatar-card, .avatar-add { position: relative; min-height: 132px; overflow: hidden; padding: 7px; cursor: pointer; } .avatar-card .avatar-preview { display: block; width: 100%; height: 105px; } .avatar-card > span { display: block; overflow: hidden; padding: 5px 5px 3px; font-size: 10px; font-weight: 850; text-align: left; text-overflow: ellipsis; white-space: nowrap; } .avatar-card[aria-pressed='true'] { border-color: #5b7fe5; box-shadow: 0 0 0 2px rgb(91 127 229 / 18%); } .creation-card { display: grid; place-items: center; border-style: dashed; color: #5b7fe5; } .creation-card svg { width: 22px; height: 22px; } .expression-card .avatar-preview { display: block; width: 100%; height: 64px; } .avatar-preview:is(canvas) { image-rendering: pixelated; object-fit: contain; } .expression-card > span { position: absolute; right: 5px; bottom: 4px; padding: 2px 4px; border-radius: 5px; background: rgb(255 255 255 / 78%); font-size: 9px; font-weight: 850; } .runtime-key-missing { position: absolute; top: 5px; left: 5px; display: grid; width: 17px; height: 17px; place-items: center; border: 1px solid #fff; border-radius: 50%; background: var(--destructive); color: white; font-size: 10px; font-style: normal; font-weight: 900; line-height: 1; } .expression-card[aria-pressed='true'] { border-color: #5b7fe5; box-shadow: 0 0 0 2px rgb(91 127 229 / 18%); } .expression-add { border-radius: 10px; } .preview-head { fill: #5b7fe5; } .preview-eye { fill: #111316; } .button-row { display: flex; gap: 8px; margin-top: 14px; } .button-row button { flex: 1; } .state-groups { display: grid; gap: 15px; } .state-groups strong { display: block; margin-bottom: 7px; color: #888d97; font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; } .state-buttons { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; } .state-buttons .state-card > span { max-width: calc(100% - 10px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .state-buttons .state-card { height: 76px; min-height: 76px; } .state-buttons .state-card[aria-pressed='true'] { border-color: #aebff0; background: #edf1ff; color: #4f72d8; } .state-detail p { margin: 7px 0 14px; color: #7f848e; font-size: 11px; line-height: 1.5; } .state-detail-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .state-detail-header > div { min-width: 0; } .state-step-preview { display: grid; gap: 4px; } .state-step-preview > small { color: #8a909b; font-size: 8px; font-weight: 750; text-align: center; } .state-expression-section, .state-blink-section { padding-top: 16px; border-top: 1px solid #eceef2; } .state-blink-section { margin-top: 18px; } .state-section-heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; margin-bottom: 11px; } .state-section-heading h3 { margin: 0; font-size: 12px; } .state-section-heading p { margin: 4px 0 0; font-size: 10px; } .state-section-heading > span { flex: 0 0 auto; padding: 4px 7px; border-radius: 999px; background: #eef1f7; color: #6f7785; font-size: 8px; font-weight: 800; text-transform: uppercase; } .state-expression-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } .state-logic-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .state-logic-grid > div { display: grid; gap: 3px; padding: 11px; border: 1px solid #e1e4ea; border-radius: 11px; background: #f7f8fa; } .state-logic-grid span, .state-logic-grid small { color: #858b96; font-size: 8px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; } .sequence-workspace-scroll { padding-bottom: 6px; } .sequence-workspace [data-slot='card'] { gap: 14px; } .sequence-timeline { display: flex; flex-wrap: wrap; gap: 8px; padding: 3px; } .sequence-step { position: relative; flex: 0 0 90px; cursor: grab; } .sequence-step:active { cursor: grabbing; } .sequence-step > [data-slot='button'] { position: relative; display: block; width: 100%; height: 94px; overflow: hidden; padding: 4px; } .sequence-step > [data-slot='button'][aria-pressed='true'] { border-color: #5b7fe5; box-shadow: 0 0 0 2px rgb(91 127 229 / 18%); } .sequence-step svg:not(.sequence-grip) { display: block; width: 100%; height: 76px; } .sequence-step .sequence-grip { position: absolute; z-index: 2; top: 6px; left: 5px; width: 13px; height: 13px; padding: 2px; border-radius: 4px; background: rgb(255 255 255 / 82%); color: #7f8794; } .sequence-step span, .sequence-step small { position: absolute; z-index: 2; bottom: 5px; padding: 2px 4px; border-radius: 5px; background: rgb(255 255 255 / 82%); font-size: 8px; font-weight: 850; } .sequence-step span { right: 5px; } .sequence-step small { left: 5px; color: #727a87; } .sequence-empty { margin: 0; padding: 24px 12px; border: 1px dashed #d6dae3; border-radius: 10px; color: #858b96; font-size: 11px; text-align: center; } .sequence-step-settings { display: grid; gap: 10px; margin-top: 4px; padding-top: 14px; border-top: 1px solid #eceef2; } .avatar-card[aria-pressed='true'], .expression-card[aria-pressed='true'], .sequence-step > [data-slot='button'][aria-pressed='true'], .surface-card[aria-pressed='true'], .body-tree > button[aria-pressed='true'] { border-color: #aebff0; background: #edf1ff; color: #4f72d8; box-shadow: 0 0 0 2px rgb(91 127 229 / 16%); } .sequence-transition-field { display: grid; grid-template-columns: minmax(0, 1fr) 170px; } .sequence-expression-library { max-height: 264px; overflow-y: auto; padding: 2px; } .state-logic-grid strong { color: #303640; font-size: 13px; } .state-logic-grid small { font-size: 7px; font-weight: 650; letter-spacing: 0; text-transform: none; } .dialog-fields { display: grid; gap: 12px; } .dialog-group { padding: 13px; border: 1px solid #e0e2e7; border-radius: 14px; background: white; } .dialog-group h3 { margin: 0 0 7px; font-size: 11px; } .dialog-group .panel-inline-title { margin-bottom: 7px; } .dialog-group .panel-inline-title h3 { margin: 0; } .dialog-actions-main { display: flex; margin-left: auto; gap: 8px; } @media (max-width: 980px) { .studio-root, .studio { height: 100dvh; min-height: 0; overflow: hidden; } .studio-mobile-resizable { display: flex; width: 100%; background: #f5f6f8; } .mobile-stage-panel, .mobile-inspector-panel { height: 100%; min-height: 0; overflow: hidden; } .studio-resize-handle { z-index: 30; height: 14px; min-height: 14px; border-block: 1px solid #d9dce3; background: #f5f6f8; touch-action: none; } .studio-resize-handle::after { height: 40px; } .studio-resize-handle > div { width: 38px; height: 4px; border-radius: 999px; background: #b9bfca; rotate: 0deg !important; transform: none; transition: background-color 160ms ease, width 160ms ease; } .studio-resize-handle:hover > div, .studio-resize-handle:focus-visible > div, .studio-resize-handle[data-resize-handle-active] > div { width: 46px; background: #5b7fe5; } .stage-column { position: relative; width: 100%; height: 100%; min-height: 0; } .inspector { width: 100%; height: 100%; min-height: 0; overscroll-behavior: contain; border-top: 1px solid #d9dce3; border-left: 0; } .avatar-wrap { width: auto; max-width: 82vw; height: min(100%, 82vw, 620px); max-height: 100%; } .photo-live-frame { width: auto; max-width: 82vw; height: min(100%, 82vw, 620px); max-height: 100%; } .workspace-footer, .state-playback-footer, .mobile-mode-tabs { right: 0; left: 0; width: 100%; } } @media (max-width: 600px) { .dialog-content { width: calc(100vw - 20px); max-height: 90dvh; border-radius: 20px; } .dialog-header { padding: 20px 18px 16px; } .dialog-title { max-width: calc(100% - 32px); font-size: 20px; } .avatar-guide-body { padding: 14px 14px 18px; } .avatar-guide-section { padding: 13px; } .avatar-guide-prop { grid-template-columns: minmax(0, 1fr); gap: 3px; } .avatar-guide-footer { padding: 12px 18px 16px; } .runtime-preview-dialog { width: min(100vw - 20px, 620px); max-height: calc(100dvh - 20px); } .runtime-preview-body { grid-template-columns: minmax(0, 1fr); padding: 14px; } .runtime-preview-stage { min-height: min(64vw, 300px); } .runtime-preview-transport { grid-template-columns: repeat(2, minmax(0, 1fr)); } .runtime-preview-option-grid { max-height: none; } .runtime-quick-start-heading { align-items: flex-start; flex-direction: column; } .runtime-quick-start-heading > button { padding-inline: 0; } html, body, #root { width: 100%; height: 100%; overflow: hidden; } .stage-column { padding: 10px; } .stage-identity { display: flex; } .inspector-identity { position: sticky; top: 0; z-index: 20; display: none; min-height: 52px; margin: 0 -14px 16px; padding: 0 14px; border-bottom: 1px solid #d9dce3; background: rgb(245 246 248 / 94%); backdrop-filter: blur(14px); } .inspector-identity .brand { top: 0; margin-left: 0; color: #17191d; font-size: 11px; } .inspector-identity .brand em { color: #767d88; } .inspector-identity .brand-mark { width: 16px; height: 16px; } .inspector-identity .language-picker { top: 0; min-height: 32px; margin-right: 0; padding: 3px 6px 3px 8px; border-color: #d9dce3; background: white; box-shadow: 0 4px 14px rgb(24 28 35 / 7%); } .inspector-identity .language-picker [data-slot='select-trigger'] { min-width: 46px; color: #17191d; } .stage-identity .brand { top: 14px; margin-left: 14px; font-size: 11px; } .stage-identity .brand-mark { width: 16px; height: 16px; } .stage-identity .language-picker { top: 10px; min-height: 32px; margin-right: 12px; padding: 3px 6px 3px 8px; } .stage-identity .language-picker [data-slot='select-trigger'] { min-width: 46px; } .stage-identity .source-link > span { display: none; } .avatar-wrap { width: auto; max-width: 100%; height: min(100%, 78vw, 340px); max-height: 100%; } .photo-live-frame { width: auto; max-width: 100%; height: min(100%, 74vw, 320px); max-height: 100%; } .photo-tool-bar { bottom: max(84px, calc(env(safe-area-inset-bottom) + 72px)); } .photo-tool-bar [data-slot='button'] { min-height: 36px; padding-inline: 10px; font-size: 10px; } .photo-capture-bar { bottom: max(36px, calc(env(safe-area-inset-bottom) + 24px)); left: 12px; transform: none; } .stage-credit { bottom: max(9px, env(safe-area-inset-bottom)); } .photo-capture-button { width: 40px; min-width: 40px; height: 40px; padding: 0; border-radius: 50%; } .photo-capture-button > svg { width: 18px; height: 18px; } .photo-capture-label, .photo-format-badge, .photo-help-button { display: none; } .inspector { width: 100%; height: 100%; min-height: 0; overscroll-behavior: contain; padding: 0 14px calc(var(--app-footer-clearance) + env(safe-area-inset-bottom)); scrollbar-gutter: auto; } .inspector.expression-workspace-active, .inspector.sequence-workspace-active, .inspector.body-workspace { padding-top: 0; } .inspector.expression-workspace-active .inspector-identity, .inspector.sequence-workspace-active .inspector-identity, .inspector.body-workspace .inspector-identity { position: static; } .workspace-page { min-height: calc(50dvh - 52px); } .mode-page-header { margin-bottom: 16px; padding-top: 18px; } .mode-page-header h1 { font-size: 24px; } .workspace-header { position: static; top: auto; } .numeric-field { grid-template-columns: 100px minmax(76px, 1fr) 66px; gap: 7px; } .desktop-mode-tabs { display: none; } .mobile-mode-tabs { position: fixed; z-index: 10; right: 0; bottom: 0; left: 0; display: grid; min-height: calc(62px + env(safe-area-inset-bottom)); padding: 5px 8px max(5px, env(safe-area-inset-bottom)); border-top: 1px solid #d9dce3; background: rgb(250 251 253 / 97%); box-shadow: 0 -8px 24px rgb(24 28 35 / 7%); grid-template-columns: repeat(5, minmax(0, 1fr)); backdrop-filter: blur(16px); } .mobile-mode-tab { display: flex; height: 51px; min-width: 0; flex-direction: column; gap: 3px; border-radius: 12px; color: #7b828e; font-size: 9px; font-weight: 750; } .mobile-mode-tab > svg { width: 19px; height: 19px; } .mobile-mode-tab > span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; } .mobile-mode-tab[aria-pressed='true'] { background: #edf1ff; color: #4168d5; } .eye-columns { grid-template-columns: minmax(0, 1fr); } .expression-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } .state-buttons { grid-template-columns: repeat(4, minmax(0, 1fr)); } .avatar-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .avatar-shelf .avatar-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-right: 0; } .avatar-edit { position: static; width: 100%; min-height: 36px; margin-top: 8px; } .surface-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .workspace-header-actions .state-player > span { display: none; } .state-playback-footer { bottom: calc(62px + env(safe-area-inset-bottom)); padding: 22px 10px 6px; } .state-playback-bar { gap: 8px; } .state-playback-timeline { gap: 4px; padding: 3px 2px 4px; } .state-playback-step { width: 42px; height: 42px; flex-basis: 42px; border-radius: 9px; } .state-playback-controls { padding-left: 8px; } .state-playback-footer .state-player [data-slot='button'] { width: 36px; height: 36px; } .state-playback-footer .state-player svg { width: 22px; height: 22px; } }