#variationSourcePreview { height:auto; min-height:120px; }
#variationSourcePreview .variation-source-open { position:relative; width:100%; height:clamp(280px,50vh,520px); padding:0; border:0; border-radius:10px; background:#08090d; cursor:zoom-in; }
#variationSourcePreview .variation-source-open:focus-visible { outline:2px solid var(--accent,#548cc4); outline-offset:-3px; }
.variation-source-hint { position:absolute; right:10px; bottom:10px; padding:6px 10px; border-radius:8px; background:#000b; color:#fff; font-size:12px; pointer-events:none; }
.variation-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:16px 0; }
.variation-tile { min-width:0; border:1px solid var(--line,#303440); border-radius:14px; overflow:hidden; background:var(--card,#151924); }
.variation-tile img { width:100%; aspect-ratio:1; object-fit:contain; display:block; background:#0b0d12; cursor:pointer; }
.variation-tile .variation-placeholder { aspect-ratio:1; display:grid; place-content:center; padding:8px; text-align:center; }
.variation-caption { padding:8px; overflow-wrap:anywhere; }
.variation-caption .chip { font-size:11px; }
.variation-actions { display:flex; gap:5px; flex-wrap:wrap; padding:8px; }
.variation-actions button,.variation-actions a { font-size:12px; padding:6px 8px; }
.variation-actions button { color:var(--text,#edf1ff); background:#1c2438; border:1px solid #303b55; border-radius:8px; cursor:pointer; }
.variation-menu summary { cursor:pointer; color:var(--text,#edf1ff); padding:8px; font-size:13px; }
.variation-grid[data-grid="2x2"] { grid-template-columns:repeat(2,minmax(0,1fr)); }
.variation-identity { display:flex; align-items:center; gap:8px; }
.variation-identity input { width:auto; }
#variationSurprise { width:100%; min-height:48px; margin-top:10px; font-size:16px; }
.variation-grid[data-grid="4x4"] { grid-template-columns:repeat(4,minmax(0,1fr)); }
@media(max-width:600px) {
  .variation-grid,.variation-grid[data-grid="4x4"] { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .mode-tabs { flex-wrap:wrap; }
}
