bible-strong-avatar-lab/src/app/styles.css
2026-08-17 19:36:16 +02:00

3485 lines
68 KiB
CSS

@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-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 #dfe3eb;
border-radius: 9px;
background: #f7f8fb;
color: #3159cb;
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;
}
.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-preview-card {
display: flex;
align-items: center;
gap: 14px;
}
.snapshot-preview-card > div:last-child {
display: flex;
min-width: 0;
flex-direction: column;
gap: 3px;
}
.snapshot-preview-card small,
.snapshot-preview-card span,
.snapshot-background-field small {
color: var(--muted-foreground);
font-size: 10px;
}
.snapshot-preview-card strong {
overflow: hidden;
font-size: 15px;
text-overflow: ellipsis;
white-space: nowrap;
}
.snapshot-preview {
width: 112px;
height: 112px;
flex: none;
overflow: hidden;
border: 1px solid var(--border);
border-radius: 12px;
background: white;
}
.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-background-field {
align-items: center;
}
.snapshot-background-field > [data-slot='select-trigger'] {
width: 190px;
}
.snapshot-background-field > div:first-child {
display: grid;
gap: 3px;
}
.snapshot-colors {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
margin-top: 14px;
}
.snapshot-settings-separator {
margin-block: 14px;
}
.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;
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: '<angle>';
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;
}
.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: 6px;
}
.body-tree > button {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
height: auto;
min-height: 46px;
padding: 10px 12px;
text-align: left;
white-space: normal;
}
.body-tree > button[aria-pressed='true'] {
border-color: #7796ec;
background: #edf1ff;
color: #3f63c6;
}
.body-tree > button span:last-child {
display: grid;
min-width: 0;
gap: 2px;
}
.body-tree strong,
.body-tree small {
line-height: 1.25;
}
.body-tree small {
color: #858a95;
font-size: 9px;
}
.body-node-icon {
display: grid;
width: 34px;
height: 34px;
flex: 0 0 34px;
place-items: center;
color: #7c8492;
}
.body-node-icon-primary {
width: 40px;
height: 40px;
flex-basis: 40px;
}
.body-node-icon svg {
width: 100%;
height: 100%;
}
.body-node-icon svg path {
fill: currentColor;
}
.body-add {
display: grid;
gap: 7px;
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid #eceef2;
color: #858a95;
font-size: 10px;
font-weight: 750;
}
.body-add > div {
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 {
margin-top: 14px;
padding: 13px;
border: 1px solid #dde3f2;
border-radius: 13px;
background: #fafbff;
}
.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%;
}
.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-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;
}
}