#preset-modal { max-width: 400px; max-height: 88vh; overflow-y: auto; text-align: left; }
.preset-tabs { display: flex; gap: 4px; margin-bottom: 14px; }
.preset-tabs .solver-opt { flex: 1; padding: 10px 6px; font-size: 0.75rem; }
.preset-panel { display: none; }
.preset-panel.active { display: block; }
.preset-preview-wrap {
    background: rgba(0,0,0,0.04); border: 1px solid var(--border); border-radius: 12px;
    padding: 8px; margin-bottom: 14px; text-align: center;
}
.preset-preview-wrap canvas { display: block; width: 100%; max-width: 280px; height: auto; margin: 0 auto; border-radius: 10px; background: rgba(255,255,255,0.35); }
.preset-preview-label { font-size: 0.68rem; opacity: 0.55; margin-top: 6px; text-align: center; }
.preset-saved-list { display: flex; flex-direction: column; gap: 8px; max-height: 180px; overflow-y: auto; margin-bottom: 12px; }
.preset-saved-item {
    display: flex; align-items: center; gap: 10px; padding: 10px; border-radius: 10px;
    border: 1px solid var(--border); background: rgba(255,255,255,0.35); cursor: pointer;
}
.preset-saved-item:hover { border-color: var(--primary); }
.preset-saved-item canvas { width: 56px; height: 44px; border-radius: 8px; flex-shrink: 0; background: rgba(255,255,255,0.4); }
.preset-saved-info { flex: 1; min-width: 0; }
.preset-saved-name { font-weight: 700; font-size: 0.85rem; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.preset-saved-meta { font-size: 0.68rem; opacity: 0.55; }
.preset-saved-actions { display: flex; gap: 4px; flex-shrink: 0; }
.preset-mini-btn { border: 1px solid var(--border); background: rgba(255,255,255,0.6); border-radius: 8px; padding: 6px 8px; font-size: 0.72rem; font-weight: 700; cursor: pointer; color: var(--text); }
.preset-code-box {
    width: 100%; box-sizing: border-box; padding: 10px; border-radius: 10px;
    border: 1px solid var(--border); background: rgba(255,255,255,0.45); font-family: 'JetBrains Mono', monospace;
    font-size: 0.68rem; resize: none; min-height: 72px; color: var(--text); margin-bottom: 10px;
}
.preset-share-row { display: flex; gap: 8px; margin-bottom: 10px; }
.preset-share-row .popup-input { flex: 1; width: auto; font-size: 0.72rem; text-align: left; padding: 10px; }
.preset-empty { text-align: center; opacity: 0.5; font-size: 0.8rem; padding: 16px 8px; }
