/* Interactive Characterz feature; reuses the Headz viewer and existing feature layout. */
#preview-3d .viewer-shell{position:relative;isolation:isolate;aspect-ratio:4/5;background:var(--td-color-surface);border-radius:8px;min-width:0;overflow:hidden}
#model-mount{position:absolute;inset:0}
#model-mount canvas{display:block;width:100%;height:100%;touch-action:none;outline-offset:-4px}
.viewer-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
#preview-3d .viewer-placeholder img{width:100%;height:100%;object-fit:contain}
.viewer-shell.is-ready .viewer-placeholder{display:none}
.viewer-shell:not(.is-ready) #model-mount{visibility:hidden}
.viewer-label{position:absolute;top:var(--td-space-20);left:var(--td-space-20);font-size:12px;color:var(--td-color-preview-label);pointer-events:none}
.viewer-view-tabs{display:inline-flex;gap:var(--td-space-10);margin:0 0 var(--td-space-20)}
.viewer-view-tabs button{min-height:44px;padding:10px 20px;border:1px solid var(--td-color-control-text);border-radius:7px;background:var(--td-color-closing-surface);color:var(--td-color-text);font:700 14px Arial,sans-serif;box-shadow:0 2px 3px #20221f12;cursor:pointer}
.viewer-view-tabs button[aria-pressed=true]{background:var(--td-color-surface);color:var(--td-color-link);border-color:var(--td-color-link)}
.viewer-view-tabs button:hover{border-color:var(--td-color-link)}
.viewer-view-tabs button:disabled{opacity:.6;cursor:wait}
#preview-3d .viewer-help,#preview-3d .viewer-instructions{font-size:14px;line-height:1.6;margin-bottom:var(--td-space-10)}
#preview-3d .viewer-instructions{min-height:23px}
#retry-model{min-height:44px;border:0;background:transparent;color:var(--td-color-link);text-decoration:underline;font:700 14px Arial,sans-serif;cursor:pointer}
.viewer-multi-labels{display:none;position:absolute;inset:auto 0 12px;font-size:12px;color:var(--td-color-preview-label);text-align:center;pointer-events:none}
.viewer-shell.is-ready.is-multi .viewer-multi-labels{display:grid;grid-template-columns:repeat(3,1fr)}
.viewer-shell.is-ready.is-multi.is-stacked .viewer-multi-labels{inset:0;grid-template-columns:1fr;grid-template-rows:repeat(3,1fr);align-items:end;padding-bottom:10px}
@media(max-width:760px){#preview-3d{flex-direction:column-reverse}.viewer-view-tabs{display:flex}.viewer-view-tabs button{flex:1}}

#preview-3d .viewer-keyboard-help{display:inline-block;white-space:nowrap}
.feature-preview-link{color:var(--td-color-link);text-decoration:underline;text-underline-offset:3px;font-weight:600}

/* Initial loading uses text only, without downloading a static model poster. */
#preview-3d .viewer-placeholder{gap:20px;flex-direction:column;padding:30px}
#preview-3d .viewer-loading-label{margin:0;font:500 15px/1.5 Arial,sans-serif;color:var(--td-color-preview-label);text-align:center}
#preview-3d .viewer-shell[aria-busy=true] .viewer-placeholder::after{content:"";width:24px;height:24px;border:2px solid var(--td-color-border);border-top-color:var(--td-color-link);border-radius:50%;animation:viewer-loading 1s linear infinite}
@keyframes viewer-loading{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){#preview-3d .viewer-shell[aria-busy=true] .viewer-placeholder::after{animation:none}}
