kinetic-depth-effect / src /styles.css
Xenova's picture
Xenova HF Staff
Updates (#1)
0daa16b
Raw History Blame Contribute Delete
26.1 kB
@import "tailwindcss";
@import "tw-animate-css";
@custom-variant dark (&:where(.dark, .dark *));
:root,
.dark {
--background: #050608;
--foreground: #f2f4f7;
--popover: #191c22;
--popover-foreground: #f2f4f7;
--primary: #9cddff;
--primary-foreground: #07131b;
--muted: #282c34;
--muted-foreground: #9a9fa9;
--accent: #262b34;
--accent-foreground: #f2f4f7;
--destructive: #ffaaa9;
--border: #ffffff13;
--input: #ffffff20;
--ring: #9cddff;
--radius: 0.75rem;
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
}
* {
box-sizing: border-box;
}
html,
body {
margin: 0;
width: 100%;
min-height: 100%;
background: var(--background);
color: var(--foreground);
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
-webkit-font-smoothing: antialiased;
}
button,
a,
input,
[role="slider"] {
-webkit-tap-highlight-color: transparent;
}
button {
cursor: pointer;
font-family: inherit;
}
button:disabled {
cursor: default;
}
button:focus-visible,
a:focus-visible,
summary:focus-visible {
outline: 2px solid var(--ring);
outline-offset: 4px;
}
button svg {
flex-shrink: 0;
}
.studio {
position: relative;
width: 100%;
height: 100dvh;
min-height: 320px;
overflow: hidden;
isolation: isolate;
background: #050608;
}
.topbar {
position: absolute;
z-index: 10;
top: 0;
left: 0;
right: 0;
height: 92px;
padding: 0 32px;
display: flex;
align-items: center;
justify-content: flex-end;
gap: 20px;
pointer-events: none;
}
.topbar > * {
pointer-events: auto;
}
.header-import {
height: 40px;
padding: 0 15px;
gap: 9px;
border: 1px solid #ffffff21;
border-radius: 11px;
color: #dedfe4;
background: #12141980 !important;
font-size: 0.875rem;
font-weight: 450;
box-shadow: none;
}
.header-import:hover {
background: #20242b !important;
border-color: #ffffff38;
}
/* The canvas stays full-size; only the renderer's framing moves. */
:root {
--scene-top: 80px;
--scene-side: 24px;
--scene-bottom: 157px;
--inspector-width: 380px;
--inspector-gap: 24px;
--inspector-height: min(
360px,
calc((100dvh - var(--scene-top) - var(--scene-bottom)) * 0.52)
);
}
.scene-area {
position: absolute;
inset: var(--scene-top) var(--scene-side) var(--scene-bottom);
}
.scene-framing {
position: absolute;
inset: 0;
pointer-events: none;
}
.studio[data-inspector-open="true"] .scene-framing {
right: calc(var(--inspector-width) + var(--inspector-gap));
}
.canvas-host {
position: absolute;
inset: 0;
cursor: grab;
touch-action: none;
transition: opacity 0.2s ease;
}
.canvas-host:active {
cursor: grabbing;
}
.canvas-host canvas {
display: block;
position: absolute;
inset: 0;
width: 100%;
height: 100%;
}
.scene-dock {
position: absolute;
z-index: 20;
bottom: 34px;
left: 0;
right: 0;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
padding: 0 16px;
pointer-events: none;
}
.dock {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
min-height: 64px;
max-width: 100%;
padding: 8px 10px;
border: 1px solid #ffffff18;
border-radius: 20px;
background: linear-gradient(145deg, #1b1d23e8, #111419e8);
box-shadow:
0 12px 50px #0008,
inset 0 1px 0 #ffffff04;
backdrop-filter: blur(24px);
pointer-events: auto;
}
.dock button {
font-size: 0.875rem;
font-weight: 450;
border-radius: 10px;
flex-shrink: 0;
box-shadow: none;
}
.dock .play-button {
width: 38px;
height: 38px;
border-radius: 50%;
background: #ffffff08;
color: #e9edf3;
margin: 0 3px;
}
.play-button svg {
width: 15px;
height: 15px;
stroke-width: 1.3;
}
.dock .play-button:hover {
background: #ffffff15;
}
.dock-divider {
height: 22px;
width: 1px;
flex-shrink: 0;
background: #ffffff12;
margin: 0 5px;
}
.dock-choice {
height: 42px;
padding: 0 13px;
gap: 13px;
color: #cbcdd4;
}
.dock-choice:hover {
background: #ffffff07;
color: #fff;
}
.dock-choice[data-active="true"] {
background: #a7dfff10;
color: #d8efff;
}
.dock-choice[data-active="true"] > svg {
color: #adddff;
}
.dock-label {
display: block;
max-width: 140px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.dock .adjust-choice {
gap: 9px;
}
.dock .adjust-choice > svg {
color: #a7acb6;
}
.dock .export-button {
height: 40px;
padding: 0 19px;
margin-left: 5px;
gap: 8px;
border-radius: 12px;
background: #f0f2f5;
color: #17191d;
font-weight: 550;
}
.dock .export-button:hover {
background: white;
}
.export-button > svg {
display: none;
}
.depth-hint {
min-height: 42px;
display: flex;
justify-content: center;
align-items: center;
pointer-events: auto;
}
.reveal-control {
position: relative;
width: 264px;
height: 42px;
}
.depth-control {
position: relative;
width: 100%;
height: 42px;
padding: 4px;
border: 1px solid transparent;
border-radius: 24px;
background: transparent;
color: #919dac;
font-size: 0.8125rem;
font-weight: 400;
user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
touch-action: none;
transition:
background 0.16s ease,
border-color 0.16s ease;
}
.depth-control:hover {
background: #ffffff04;
color: #c4d0df;
}
.depth-control[data-held="true"] {
color: #d2eafb;
border-color: #ffffff12;
background: #151a21;
box-shadow: 0 4px 20px #0004;
}
.reveal-idle {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.reveal-choices {
width: 100%;
display: grid;
grid-template-columns: 1fr 36px 1fr;
align-items: center;
gap: 3px;
}
.reveal-choice {
height: 32px;
display: flex;
justify-content: center;
align-items: center;
gap: 10px;
border-radius: 18px;
font-size: 0.8125rem;
background: rgb(164 221 255 / calc(var(--reveal-strength, 0) * 0.22));
color: color-mix(
in srgb,
#bde9ff calc(var(--reveal-strength, 0) * 100%),
#8795a8
);
box-shadow: inset 0 0 0 1px
rgb(164 221 255 / calc(var(--reveal-strength, 0) * 0.5));
transition:
background 0.12s ease,
color 0.12s ease,
box-shadow 0.12s ease;
}
.reveal-eye {
justify-self: center;
color: #7f91a6;
}
.reveal-caption {
position: absolute;
top: calc(100% + 5px);
left: 50%;
transform: translateX(-50%);
white-space: nowrap;
color: #8896a8;
font-size: 0.6875rem;
line-height: 14px;
pointer-events: none;
}
.depth-control:disabled {
opacity: 0.5;
}
.corner-actions {
position: absolute;
z-index: 15;
right: 25px;
bottom: 40px;
display: flex;
gap: 2px;
}
.corner-actions button {
color: #777f8c;
width: 34px;
height: 34px;
}
.corner-actions button:hover {
color: #d3dbe7;
background: #ffffff07;
}
.exit-focus {
position: absolute;
top: 24px;
right: 24px;
z-index: 40;
background: #14181dcc;
color: #c8d0dc;
font-size: 0.875rem;
}
.focus-mode .topbar,
.focus-mode .scene-dock,
.focus-mode .corner-actions {
display: none;
}
.focus-mode .scene-area {
inset: 25px;
}
.scene-area[data-loading="true"] .canvas-host {
opacity: 0.22;
}
.stage-loading {
position: absolute;
z-index: 5;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
gap: 17px;
align-items: center;
width: min(300px, calc(100vw - 48px));
padding: 24px;
border: 1px solid #ffffff13;
background: #12171eea;
backdrop-filter: blur(16px);
border-radius: 18px;
box-shadow: 0 12px 48px #0005;
color: #d7e7f5;
text-align: center;
}
.loading-orbit {
position: relative;
display: grid;
place-items: center;
width: 54px;
height: 54px;
color: #a2d8f7;
}
.loading-orbit > span {
position: absolute;
inset: 0;
border: 1px solid #9cddff19;
border-top: 2px solid #9cddff;
border-right-color: #9cddff66;
border-radius: 50%;
animation: loading-orbit 1.1s linear infinite;
}
.loading-orbit > svg {
animation: loading-breathe 1.8s ease-in-out infinite;
}
.loading-label {
display: grid;
gap: 6px;
max-width: 100%;
}
.loading-label strong {
font-size: 0.875rem;
font-weight: 500;
}
.loading-label > span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 0.75rem;
color: #8798ab;
}
@keyframes loading-orbit {
to {
transform: rotate(360deg);
}
}
@keyframes loading-breathe {
50% {
opacity: 0.45;
transform: scale(0.9);
}
}
.drop-overlay {
position: fixed;
z-index: 100;
inset: 14px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background: #0c1b2aef;
border: 1px dashed #9cddff;
border-radius: 20px;
color: #bee8ff;
pointer-events: none;
}
.drop-overlay strong {
font-size: 1.5rem;
font-weight: 500;
letter-spacing: -0.03em;
}
.drop-overlay span {
color: #9eabb9;
font-size: 0.875rem;
}
/* One nonmodal inspector; the dock remains fixed and the scene stays interactive. */
.scene-inspector {
position: fixed;
z-index: 50;
top: var(--scene-top);
right: var(--scene-side);
bottom: var(--scene-bottom);
left: auto;
width: var(--inspector-width);
height: auto;
max-width: none;
display: flex;
flex-direction: column;
gap: 0;
padding: 0;
border: 1px solid #ffffff1a;
border-radius: 18px;
background: linear-gradient(145deg, #191d24f5, #11151bf5);
box-shadow:
0 18px 65px #0007,
inset 0 1px 0 #ffffff05;
backdrop-filter: blur(28px);
outline: none;
--inspector-enter-x: 20px;
--inspector-enter-y: 0px;
}
.scene-inspector[data-state="open"] {
animation: inspector-in 0.3s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.scene-inspector[data-state="closed"] {
animation: inspector-out 0.3s cubic-bezier(0.22, 1, 0.36, 1) both;
pointer-events: none;
}
@keyframes inspector-in {
from {
opacity: 0;
transform: translate(var(--inspector-enter-x), var(--inspector-enter-y));
}
to {
opacity: 1;
transform: translate(0, 0);
}
}
@keyframes inspector-out {
from {
opacity: 1;
transform: translate(0, 0);
}
to {
opacity: 0;
transform: translate(var(--inspector-enter-x), var(--inspector-enter-y));
}
}
.inspector-header {
flex-shrink: 0;
min-height: 65px;
padding: 21px 54px 18px 22px;
}
.inspector-title {
color: #e4eaf2;
font-size: 1rem;
line-height: 1.5;
font-weight: 500;
letter-spacing: -0.02em;
}
.inspector-close {
position: absolute;
top: 15px;
right: 14px;
width: 34px;
height: 34px;
border-radius: 9px;
color: #8c96a5;
}
.inspector-close:hover {
color: #e6edf5;
background: #ffffff08;
}
.inspector-scroll {
min-height: 0;
overflow-y: auto;
overflow-x: hidden;
padding: 0 22px 20px;
overscroll-behavior: contain;
scrollbar-width: thin;
scrollbar-color: #414a58 transparent;
animation: inspector-section-in 0.16s ease-out;
}
@keyframes inspector-section-in {
from {
opacity: 0.4;
transform: translateY(4px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.model-choice {
width: 158px;
}
.style-choice {
width: 126px;
}
.dock .adjust-choice {
width: 120px;
}
.dock-choice[data-active="true"] {
box-shadow: inset 0 0 0 1px #9cddff26;
}
.panel-section {
padding: 18px 0;
border-bottom: 1px solid #ffffff0b;
}
.panel-section:first-child {
padding-top: 0;
}
.panel-section:last-child {
border-bottom: 0;
}
.panel-section h3 {
font-size: 0.875rem;
color: #b6bbc5;
font-weight: 450;
margin: 0 0 16px;
}
.model-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 9px;
padding: 4px;
margin: -4px;
}
.model-card {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
min-height: 118px;
padding: 0 6px 10px;
border: 1px solid #ffffff0d;
border-radius: 12px;
background: #17191f;
cursor: pointer;
transition:
background 0.15s ease,
border-color 0.15s ease;
}
.model-card:hover {
background: #1c2028;
border-color: #ffffff22;
}
.model-card[data-selected="true"] {
background: #19232f;
border-color: #89c9f3a0;
}
.model-card:has(:focus-visible) {
outline: 2px solid #9cddff;
outline-offset: 3px;
}
.model-card canvas {
display: block;
width: 100%;
height: 82px;
object-fit: contain;
margin: 3px auto 0;
}
.model-card > span {
font-size: 0.875rem;
line-height: 1.5;
color: #c8cdd7;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.model-card[data-selected="true"] > span {
color: #e0f2ff;
}
.model-radio {
position: absolute;
right: 9px;
top: 9px;
width: 14px;
height: 14px;
border-color: #667487;
background: transparent !important;
opacity: 0;
}
.model-card:hover .model-radio,
.model-card[data-selected="true"] .model-radio,
.model-card:focus-within .model-radio {
opacity: 1;
}
.model-radio[data-state="checked"] {
border-color: #a0dcff;
background: #a0dcff !important;
}
.model-radio svg {
width: 5px;
height: 5px;
fill: #142635;
}
.import-dropzone {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
min-height: 132px;
height: auto;
padding: 20px 12px;
gap: 13px;
border: 1px dashed #ffffff29;
border-radius: 13px;
background: #ffffff02 !important;
color: #c6d3e2;
font-weight: 400;
white-space: normal;
}
.import-dropzone > svg {
color: #94aabd;
}
.import-dropzone:hover {
background: #9cddff06 !important;
border-color: #96d4fa80;
color: #e1f2ff;
}
.import-dropzone > span {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: baseline;
gap: 6px;
font-size: 0.875rem;
}
.import-dropzone small {
color: #8595a8;
font-size: 0.75rem;
font-weight: 400;
}
.import-dropzone .import-formats {
font-size: 0.75rem;
line-height: 1.5;
}
.pose-controls {
display: grid;
gap: 20px;
}
.pose-controls h3 {
margin: 0;
}
.choice {
display: flex;
flex-direction: column;
gap: 10px;
min-width: 0;
}
.choice > label {
color: #a9b0bd;
font-size: 0.875rem;
}
.choice > [data-slot="select-trigger"] {
width: 100%;
min-height: 42px;
border-radius: 9px;
border-color: #ffffff15;
background: #1a1e25;
font-size: 0.875rem;
color: #e0e5ed;
box-shadow: none;
}
.choice [data-slot="select-value"] {
overflow: hidden;
text-overflow: ellipsis;
}
.segments {
display: flex;
width: 100%;
border: 1px solid #ffffff07;
border-radius: 11px;
padding: 4px;
gap: 3px;
background: #1b1e24;
}
.segments [data-slot="toggle-group-item"] {
flex: 1;
min-width: 0;
height: 34px;
padding: 0 8px;
border: 0;
border-radius: 7px !important;
color: #8e96a4;
font-size: 0.875rem;
font-weight: 450;
background: transparent;
}
.segments [data-slot="toggle-group-item"]:hover {
background: #ffffff04;
color: #dfe5ee;
}
.segments [data-state="on"] {
background: #343a46 !important;
color: #f2f5fa !important;
box-shadow: 0 1px 4px #0003;
}
.section-label {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 22px;
}
.section-label h3 {
margin: 0;
}
.section-label > span {
color: #818c9e;
font-size: 0.8125rem;
}
.swatches {
display: flex;
justify-content: space-between;
gap: 12px;
padding: 0 3px;
}
.color-swatch {
width: 34px;
height: 34px;
border: 4px solid #171b22;
background: var(--swatch) !important;
box-shadow: 0 0 0 1px transparent;
}
.color-swatch:hover {
box-shadow: 0 0 0 1px #ffffff45;
}
.color-swatch[data-state="checked"] {
box-shadow: 0 0 0 1px var(--swatch);
}
.color-swatch [data-slot="radio-group-indicator"] {
display: none;
}
.color-section .segments {
margin-top: 22px;
background: transparent;
border-color: #ffffff10;
}
.color-section .segments [data-slot="toggle-group-item"] {
height: 30px;
font-size: 0.8125rem;
}
.range-control {
margin-bottom: 19px;
}
.range-control:last-child {
margin-bottom: 0;
}
.control-label {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 12px;
color: #a9b0bd;
font-size: 0.875rem;
margin-bottom: 8px;
}
.control-label output {
color: #b5bdcb;
font-size: 0.8125rem;
font-variant-numeric: tabular-nums;
}
.range-control [data-slot="slider"] {
min-height: 20px;
}
.range-control [data-slot="slider-track"] {
height: 3px;
background: #2c313a;
}
.range-control [data-slot="slider-range"] {
background: #b6c5d8;
}
.range-control [data-slot="slider-thumb"] {
width: 12px;
height: 12px;
border: 0;
background: #e1e6ed;
box-shadow: 0 1px 4px #0005;
}
.view-section {
position: relative;
}
.view-section > .reset-button {
position: absolute;
top: 11px;
right: 0;
margin-top: 0;
}
.reset-button {
padding: 0;
height: 36px;
margin-top: 12px;
gap: 9px;
color: #969fad;
font-size: 0.8125rem;
font-weight: 400;
}
.reset-button:hover {
background: transparent;
color: #d9e7f4;
}
.motion-section > .segments {
margin-bottom: 20px;
}
.panel-footer {
display: flex;
justify-content: flex-end;
padding-top: 5px;
}
.panel-footer .reset-button {
margin: 0;
}
.message {
position: fixed;
z-index: 80;
top: 100px;
left: 50%;
transform: translateX(-50%);
display: flex;
align-items: center;
gap: 12px;
width: max-content;
max-width: min(520px, calc(100% - 32px));
padding: 10px 12px 10px 17px;
background: #182632;
border: 1px solid #527b9566;
border-radius: 12px;
color: #d1e7f7;
box-shadow: 0 8px 30px #0008;
font-size: 0.875rem;
line-height: 1.6;
}
.message.error {
color: #ffd1ce;
background: #301e23;
border-color: #a55f6666;
}
.message button {
flex-shrink: 0;
width: 30px;
height: 30px;
}
.info-dialog,
.export-dialog {
background: #12151b;
padding: 28px;
border-color: #ffffff16;
border-radius: 20px;
max-height: calc(100dvh - 32px);
overflow-y: auto;
}
.info-dialog [data-slot="dialog-title"],
.export-dialog [data-slot="dialog-title"] {
font-size: 1.375rem;
font-weight: 500;
letter-spacing: -0.04em;
}
.info-dialog [data-slot="dialog-description"],
.export-dialog [data-slot="dialog-description"] {
font-size: 0.875rem;
line-height: 1.7;
color: #919ba9;
margin-top: 8px;
}
.info-dialog > p {
font-size: 0.9375rem;
line-height: 1.7;
color: #afb8c6;
margin: 0;
}
.info-dialog b {
font-weight: 500;
color: #d3deeb;
}
.shortcut-note {
display: flex;
flex-wrap: wrap;
gap: 12px 20px;
padding: 14px 0;
border-top: 1px solid #ffffff0d;
color: #929dac;
font-size: 0.8125rem;
}
.shortcut-note > span {
display: flex;
align-items: center;
gap: 8px;
}
kbd {
background: #222832;
color: #bccbdb;
padding: 2px 6px;
border: 1px solid #ffffff0b;
border-radius: 4px;
font-family: inherit;
font-size: 0.75rem;
}
.export-options {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px 16px;
margin: 10px 0;
}
.export-summary {
display: flex;
flex-wrap: wrap;
gap: 12px 20px;
padding: 16px 0;
border-top: 1px solid #ffffff0e;
border-bottom: 1px solid #ffffff0e;
color: #8995a6;
font-size: 0.8125rem;
}
.render-button {
width: 100%;
min-height: 44px;
background: #eaf1f8;
color: #131c25;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
font-size: 0.875rem;
font-weight: 550;
border-radius: 10px;
}
.render-button:hover {
background: white;
}
.export-progress {
display: grid;
gap: 16px;
}
.export-progress > div:first-child {
display: flex;
justify-content: space-between;
gap: 10px;
color: #b9c7d7;
font-size: 0.875rem;
}
.export-error {
color: #ffbab6;
font-size: 0.875rem;
line-height: 1.65;
}
@media (max-width: 959px) {
.scene-inspector {
top: auto;
left: max(12px, calc((100vw - 520px) / 2));
right: max(12px, calc((100vw - 520px) / 2));
bottom: var(--scene-bottom);
width: auto;
height: var(--inspector-height);
--inspector-enter-x: 0px;
--inspector-enter-y: 18px;
}
.studio[data-inspector-open="true"] .scene-framing {
right: 0;
bottom: calc(var(--inspector-height) + 20px);
}
}
@media (max-width: 800px) {
.topbar {
height: 78px;
padding: 0 22px;
}
:root {
--scene-top: 75px;
--scene-side: 14px;
--scene-bottom: 155px;
}
.scene-dock {
bottom: 27px;
}
.corner-actions {
right: 17px;
top: 94px;
bottom: auto;
flex-direction: column;
gap: 4px;
}
.message {
top: 85px;
}
}
@media (max-width: 700px) {
.topbar {
height: 74px;
padding: 0 18px;
}
.header-import {
font-size: 0.8125rem;
height: 37px;
padding: 0 12px;
gap: 7px;
}
.scene-dock {
padding: 0 12px;
bottom: max(23px, env(safe-area-inset-bottom));
gap: 10px;
}
.dock {
width: 100%;
max-width: 430px;
min-height: 60px;
padding: 7px;
gap: 2px;
border-radius: 17px;
}
.dock .play-button {
width: 34px;
height: 34px;
margin: 0 2px;
}
.dock-divider {
margin: 0 3px;
height: 20px;
}
.secondary-divider {
display: none;
}
.dock-choice {
padding: 0 8px;
gap: 5px;
font-size: 0.8125rem !important;
}
.model-choice {
width: auto;
flex: 1 !important;
min-width: 0;
}
.style-choice {
width: 104px;
}
.dock-label {
max-width: 114px;
}
.dock .adjust-choice {
width: 34px;
padding: 0;
}
.adjust-choice span {
display: none;
}
.dock .export-button {
padding: 0 13px;
margin-left: 2px;
height: 38px;
font-size: 0.8125rem;
}
.corner-actions {
right: 11px;
top: 89px;
}
:root {
--scene-top: 88px;
--scene-side: 8px;
--scene-bottom: 154px;
}
.model-grid {
gap: 9px;
}
.model-card {
padding: 0 5px 10px;
}
.model-card > span {
font-size: 0.875rem;
}
.color-section .swatches {
justify-content: flex-start;
gap: 21px;
}
.info-dialog,
.export-dialog {
padding: 25px 22px;
}
.export-options {
gap: 18px 12px;
}
.export-summary {
gap: 9px 17px;
}
}
@media (max-width: 380px) {
.dock-choice {
padding: 0 6px;
}
.dock .play-button {
width: 30px;
height: 30px;
}
.dock .export-button {
padding: 0 10px;
}
.dock-label {
max-width: 74px;
}
.model-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.inspector-scroll {
padding-left: 16px;
padding-right: 16px;
}
.style-choice {
width: 86px;
}
.style-choice > span {
overflow: hidden;
text-overflow: ellipsis;
}
.dock-divider {
display: none;
}
.dock .adjust-choice {
width: 30px;
}
.color-section .swatches {
justify-content: space-between;
gap: 10px;
}
}
@media (max-height: 580px) and (min-width: 700px) {
.topbar {
height: 70px;
}
:root {
--scene-top: 55px;
--scene-bottom: 116px;
--inspector-width: 320px;
--inspector-gap: 16px;
}
.scene-inspector {
top: var(--scene-top);
right: var(--scene-side);
bottom: var(--scene-bottom);
left: auto;
width: var(--inspector-width);
height: auto;
--inspector-enter-x: 20px;
--inspector-enter-y: 0px;
}
.studio[data-inspector-open="true"] .scene-framing {
right: calc(var(--inspector-width) + var(--inspector-gap));
bottom: 0;
}
.model-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.scene-dock {
bottom: 24px;
gap: 5px;
}
.corner-actions {
top: auto;
bottom: 23px;
flex-direction: row;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
scroll-behavior: auto !important;
transition: none !important;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
}
}
.local-library .section-label {
margin-bottom: 12px;
}
.saved-models {
display: grid;
gap: 5px;
max-height: 206px;
overflow-y: auto;
overscroll-behavior: contain;
padding: 2px;
margin: 0 -2px;
scrollbar-width: thin;
scrollbar-color: #424d5e transparent;
border-radius: 9px;
}
.saved-models:focus-visible {
outline: 1px solid #9cddff80;
outline-offset: 2px;
}
.saved-model-row {
display: flex;
align-items: center;
min-width: 0;
gap: 2px;
border: 1px solid transparent;
border-radius: 10px;
background: #ffffff03;
}
.saved-model-row[data-selected="true"] {
background: #9cddff0c;
border-color: #9cddff38;
}
.saved-model-select {
flex: 1;
min-width: 0;
height: 70px;
padding: 5px 9px;
gap: 11px;
justify-content: flex-start;
color: #bbc8d7;
font-weight: 400;
}
.saved-model-select:hover {
background: #ffffff03;
}
.saved-model-select > img {
width: 72px;
height: 54px;
object-fit: contain;
flex-shrink: 0;
}
.saved-model-name {
flex: 1;
min-width: 0;
text-align: left;
display: grid;
gap: 4px;
}
.saved-model-name strong {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 0.875rem;
font-weight: 450;
color: #d5dfeb;
}
.saved-model-name small {
font-size: 0.75rem;
color: #8491a3;
}
.remove-model {
width: 32px;
height: 32px;
color: #768395;
margin-right: 5px;
flex-shrink: 0;
}
.remove-model:hover {
color: #ffb7b5;
background: #ffaaaa0b;
}
.library-empty {
font-size: 0.8125rem;
color: #8f9caf;
line-height: 1.6;
margin: 0;
}
.library-error {
font-size: 0.8125rem;
color: #ffc6a3;
line-height: 1.6;
margin: 10px 0 0;
}