
/* ═══ Meshy AI Generator Styles ═══ */
.ps-meshy-wrap { padding: 60px 0 80px; background: var(--bg-0, #06060a); text-align: center; }
.ps-meshy-header { max-width: 640px; margin: 0 auto 40px; }
.ps-meshy-header h2 { font-size: clamp(1.8rem, 4vw, 2.6rem); font-weight: 800; color: var(--fg-0, #f4f4f8); margin-bottom: 12px; }
.ps-meshy-desc { font-size: 1.05rem; color: var(--fg-1, #9ca3af); line-height: 1.6; }

.ps-meshy-steps { display: flex; align-items: center; justify-content: center; gap: 16px; margin-bottom: 40px; flex-wrap: wrap; }
.ps-meshy-step { display: flex; align-items: center; gap: 10px; }
.ps-meshy-step-num { width: 32px; height: 32px; border-radius: 50%; background: var(--accent, #a78bfa); color: #fff; font-weight: 700; font-size: .85rem; display: flex; align-items: center; justify-content: center; }
.ps-meshy-step-label { font-size: .9rem; color: var(--fg-1, #9ca3af); font-weight: 500; }
.ps-meshy-step-line { width: 40px; height: 2px; background: var(--border, rgba(255,255,255,.06)); }

.ps-meshy-upload-area { max-width: 500px; margin: 0 auto 32px; border: 2px dashed var(--border-s, rgba(255,255,255,.12)); border-radius: var(--radius-lg, 18px); padding: 60px 40px; background: var(--bg-1, #0e0e14); cursor: pointer; transition: border-color .25s, background .25s; }
.ps-meshy-upload-area:hover, .ps-meshy-upload-area.ps-dragover { border-color: var(--accent, #a78bfa); background: rgba(167,139,250,.04); }
.ps-meshy-upload-area svg { width: 48px; height: 48px; color: var(--accent, #a78bfa); margin-bottom: 16px; opacity: .7; }
.ps-meshy-upload-area p { color: var(--fg-1, #9ca3af); font-size: 1rem; margin: 0; }
.ps-meshy-upload-area strong { color: var(--accent-light, #ddd6fe); }

.ps-meshy-progress-bar { max-width: 400px; margin: 0 auto 16px; height: 8px; background: var(--bg-2, #16161f); border-radius: 4px; overflow: hidden; }
.ps-meshy-progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent, #a78bfa), #60a5fa); border-radius: 4px; transition: width .5s ease; }
#ps-meshy-status { color: var(--fg-1, #9ca3af); font-size: .95rem; }

.ps-meshy-result { max-width: 500px; margin: 0 auto; padding: 28px; background: var(--bg-1, #0e0e14); border: 1px solid var(--border-s, rgba(255,255,255,.12)); border-radius: var(--radius-lg, 18px); }
.ps-meshy-success { color: var(--success, #34d399); font-weight: 600; margin-bottom: 20px; font-size: 1.05rem; }
.ps-meshy-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

.ps-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 28px; border-radius: var(--radius-md, 12px); font-weight: 600; font-size: .95rem; text-decoration: none; transition: all .2s ease; cursor: pointer; border: none; }
.ps-btn-primary { background: linear-gradient(135deg, rgba(167,139,250,.25) 0%, rgba(59,130,246,.18) 100%); border: 1px solid rgba(167,139,250,.4); color: var(--accent-light, #ddd6fe); }
.ps-btn-primary:hover { background: linear-gradient(135deg, rgba(167,139,250,.4) 0%, rgba(59,130,246,.3) 100%); border-color: rgba(167,139,250,.7); color: #fff; }
.ps-btn-secondary { background: transparent; border: 1px solid var(--border-s, rgba(255,255,255,.12)); color: var(--fg-1, #9ca3af); }
.ps-btn-secondary:hover { border-color: var(--accent, #a78bfa); color: var(--accent-light, #ddd6fe); }

.ps-meshy-error { margin-top: 12px; color: #ef4444; font-size: .9rem; text-align: center; }

@media (max-width: 640px) {
    .ps-meshy-steps { gap: 12px; }
    .ps-meshy-step-label { font-size: .8rem; }
    .ps-meshy-step-line { width: 24px; }
    .ps-meshy-upload-area { padding: 40px 24px; }
}

/* ===== 3D Viewer Modal ===== */
.ps-viewer-modal { position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; }
.ps-viewer-overlay { position:absolute; inset:0; background:rgba(0,0,0,.75); backdrop-filter:blur(4px); }
.ps-viewer-content { position:relative; width:90vw; max-width:900px; height:80vh; background:var(--bg-1,#0e0e14); border:1px solid var(--border-s,rgba(255,255,255,.12)); border-radius:16px; display:flex; flex-direction:column; overflow:hidden; }
.ps-viewer-header { display:flex; justify-content:space-between; align-items:center; padding:16px 24px; border-bottom:1px solid var(--border,rgba(255,255,255,.06)); }
.ps-viewer-header h4 { margin:0; font-size:1.1rem; color:var(--fg-0,#f4f4f8); }
.ps-viewer-close { background:rgba(239,68,68,.15); border:none; color:#ef4444; width:32px; height:32px; border-radius:8px; font-size:1.4rem; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.ps-viewer-body { flex:1; padding:0; min-height:0; }
.ps-viewer-footer { padding:12px 24px; border-top:1px solid var(--border,rgba(255,255,255,.06)); color:var(--fg-2,#6b7280); font-size:.85rem; }

/* Result card */
.ps-meshy-result-card { text-align:center; padding:8px; }
.ps-meshy-result-card h3 { font-size:1.3rem; color:var(--success,#34d399); margin-bottom:8px; }
.ps-meshy-filename { color:var(--fg-1,#9ca3af); font-size:.95rem; margin-bottom:24px; }
.ps-meshy-actions-grid { display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-bottom:16px; }
.ps-btn-accent { background:linear-gradient(135deg,rgba(52,211,153,.2) 0%,rgba(6,182,212,.2) 100%); border:1px solid rgba(52,211,153,.4); color:#34d399; }
.ps-btn-accent:hover { background:linear-gradient(135deg,rgba(52,211,153,.35) 0%,rgba(6,182,212,.35) 100%); border-color:rgba(52,211,153,.7); color:#fff; }
.ps-meshy-hint { color:var(--fg-2,#6b7280); font-size:.85rem; margin-top:8px; }

@media(max-width:640px){ .ps-viewer-content{width:96vw;height:85vh;} }

/* Hide native file input in meshy dropzone */
#ps-meshy-dropzone input[type="file"],
#ps-meshy-dropzone input[type="file"]::-webkit-file-upload-button {
    opacity:0 !important; width:0.1px!important; height:0.1px!important; position:absolute!important; top:-9999px!important; clip:rect(0,0,0,0)!important; clip-path:inset(50%)!important; overflow:hidden!important;
}
