/* ╔══════════════════════════════════════════════════════╗ ║ WIZARD-VIBE — Liquid Glass Design System ║ ║ Minimalist. Experimental. Cool. ║ ╚══════════════════════════════════════════════════════╝ */ :root { --glass-bg: rgba(255,255,255,.03); --glass-border: rgba(255,255,255,.06); --purple: #8B5CF6; --cyan: #06B6D4; --green: #10B981; --gold: #F59E0B; --red: #EF4444; --text-primary: #e0e0ff; --text-secondary: #9090b0; --text-muted: #606080; --bg-deep: #0a0a1a; --bg-mid: #1a0a2e; --radius-lg: 20px; --radius-md: 12px; --radius-sm: 8px; --font-mono: 'SF Mono','Fira Code','JetBrains Mono',monospace; --font-sans: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; --transition-fast: 150ms cubic-bezier(.4,0,.2,1); --transition-smooth: 300ms cubic-bezier(.4,0,.2,1); } *,*::before,*::after{margin:0;padding:0;box-sizing:border-box} html,body{height:100%;overflow:hidden} body{font-family:var(--font-sans);background:linear-gradient(135deg,var(--bg-deep) 0%,var(--bg-mid) 50%,#0a1a2e 100%);color:var(--text-primary);-webkit-font-smoothing:antialiased} ::selection{background:rgba(139,92,246,.5);color:#fff} .app-shell{display:flex;flex-direction:column;height:100vh;padding:1rem;gap:.75rem;max-width:1600px;margin:0 auto} /* ─── Logo ───────────────── */ .logo-container{display:flex;align-items:center;gap:.75rem;padding:.25rem 0} .wizard-hat{width:48px;height:48px;filter:drop-shadow(0 0 20px rgba(139,92,246,.6));transition:filter var(--transition-smooth)} .wizard-hat.stable{filter:drop-shadow(0 0 24px rgba(16,185,129,.8))!important} .wizard-hat.error{filter:drop-shadow(0 0 24px rgba(239,68,68,.8))!important} .wizard-hat.published{filter:drop-shadow(0 0 30px rgba(245,158,11,.9))!important} .wizard-hat.building{animation:hat-pulse 1.5s ease-in-out infinite} @keyframes hat-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}} #status-ring{transition:stroke var(--transition-smooth),opacity var(--transition-smooth)} #status-ring.stable{stroke:var(--green);opacity:.8} #status-ring.error{stroke:var(--red);opacity:.8} #status-ring.published{stroke:var(--gold);opacity:1} .logo-label{font-size:1.1rem;font-weight:700;letter-spacing:.15em;background:linear-gradient(135deg,var(--purple),var(--cyan),var(--green));-webkit-background-clip:text;-webkit-text-fill-color:transparent} /* ─── Input ──────────────── */ .prompt-section{flex-shrink:0} .input-glass{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:1rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)} .input-glass:focus-within{border-color:rgba(139,92,246,.4);box-shadow:0 0 30px rgba(139,92,246,.1)} #prompt-input{width:100%;background:transparent;border:none;color:var(--text-primary);font-family:var(--font-sans);font-size:.95rem;line-height:1.6;resize:none;outline:none} #prompt-input::placeholder{color:var(--text-muted)} .input-actions{display:flex;align-items:center;gap:.75rem;margin-top:.75rem} /* ─── Buttons ────────────── */ .btn-primary{display:flex;align-items:center;gap:.5rem;padding:.625rem 1.5rem;background:linear-gradient(135deg,var(--purple),var(--cyan));border:none;border-radius:var(--radius-md);color:#fff;font-family:var(--font-sans);font-size:.9rem;font-weight:600;cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast)} .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 20px rgba(139,92,246,.4)} .btn-primary:active{transform:translateY(0)} .btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none} .btn-publish{display:flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:linear-gradient(135deg,var(--green),var(--cyan));border:none;border-radius:var(--radius-md);color:#fff;font-family:var(--font-sans);font-size:.95rem;font-weight:700;cursor:pointer;transition:all var(--transition-smooth)} .btn-publish:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 30px rgba(16,185,129,.4)} .btn-publish:disabled{background:rgba(255,255,255,.05);color:var(--text-muted);cursor:not-allowed;transform:none;box-shadow:none} .btn-publish.gold{background:linear-gradient(135deg,var(--gold),#FCD34D)!important;box-shadow:0 0 30px rgba(245,158,11,.5);animation:gold-pulse 2s ease-in-out infinite} @keyframes gold-pulse{0%,100%{box-shadow:0 0 20px rgba(245,158,11,.3)}50%{box-shadow:0 0 40px rgba(245,158,11,.6)}} /* ─── Badges ─────────────── */ .model-badges{display:flex;gap:.5rem;flex-wrap:wrap} .model-badge{font-size:.7rem;padding:.2rem .5rem;border-radius:20px;background:rgba(139,92,246,.15);color:var(--purple);border:1px solid rgba(139,92,246,.2);white-space:nowrap} .model-badge.vision{background:rgba(6,182,212,.15);color:var(--cyan);border-color:rgba(6,182,212,.2)} .model-badge.logic{background:rgba(245,158,11,.15);color:var(--gold);border-color:rgba(245,158,11,.2)} .model-badge.code{background:rgba(16,185,129,.15);color:var(--green);border-color:rgba(16,185,129,.2)} /* ─── Status ─────────────── */ .status-bar{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--glass-bg);backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:.8rem;flex-shrink:0} .status-indicator{width:8px;height:8px;border-radius:50%;background:var(--text-muted);transition:background var(--transition-fast)} .status-indicator.building{background:var(--purple);animation:blink 1s infinite} .status-indicator.streaming{background:var(--cyan);animation:blink .5s infinite} .status-indicator.stable{background:var(--green)} .status-indicator.error{background:var(--red)} .status-indicator.published{background:var(--gold)} @keyframes blink{0%,100%{opacity:1}50%{opacity:.3}} .status-text{color:var(--text-secondary);font-weight:500} .status-phase{color:var(--text-muted);margin-left:auto} /* ─── Main Split ─────────── */ .main-split{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;flex:1;min-height:0} @media(max-width:900px){.main-split{grid-template-columns:1fr;grid-template-rows:1fr 1fr}} /* ─── Panels ─────────────── */ .panel{display:flex;flex-direction:column;background:var(--glass-bg);backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:hidden} .panel-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid var(--glass-border);flex-shrink:0} .panel-title{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em} .panel-action{background:none;border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:.25rem .5rem;color:var(--text-secondary);cursor:pointer;font-size:.85rem;transition:background var(--transition-fast)} .panel-action:hover{background:var(--glass-bg)} .sandbox-badge{font-size:.85rem} /* ─── Code View ──────────── */ .code-view{flex:1;overflow:auto;padding:1rem;margin:0;font-family:var(--font-mono);font-size:.8rem;line-height:1.6;color:var(--text-secondary);white-space:pre-wrap;word-break:break-all} .code-view .placeholder{color:var(--text-muted);font-style:italic} /* ─── Preview ────────────── */ .preview-container{flex:1;position:relative;background:#fff} .preview-iframe{width:100%;height:100%;border:none;display:block} .preview-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(10,10,26,.8);backdrop-filter:blur(4px);transition:opacity var(--transition-smooth);pointer-events:none} .preview-overlay.hidden{opacity:0} .overlay-content{text-align:center;color:var(--text-secondary)} .wizard-loader{width:40px;height:40px;margin:0 auto 1rem;border:2px solid var(--glass-border);border-top-color:var(--purple);border-radius:50%;animation:spin 1s linear infinite} @keyframes spin{to{transform:rotate(360deg)}} /* ─── Publish ────────────── */ .publish-section{flex-shrink:0} .publish-gate{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--glass-bg);backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-lg)} .publish-gate.unlocked{border-color:rgba(16,185,129,.3);box-shadow:0 0 20px rgba(16,185,129,.1)} .gate-status{display:flex;align-items:center;gap:.5rem} .gate-icon{font-size:1.1rem} .gate-text{font-size:.85rem;color:var(--text-secondary)} .publish-gate.unlocked .gate-text{color:var(--green)} .result-card{display:flex;align-items:flex-start;gap:1rem;padding:1.25rem;border-radius:var(--radius-lg);margin-top:.5rem} .glass-card{background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.2);backdrop-filter:blur(20px)} .result-icon{font-size:2rem;flex-shrink:0} .result-body h3{font-size:1.1rem;margin-bottom:.25rem} .result-body p{color:var(--text-secondary);font-size:.85rem;margin-bottom:.75rem;word-break:break-all} .result-links{display:flex;gap:1rem} .result-links a{color:var(--cyan);text-decoration:none;font-size:.85rem;font-weight:500;transition:color var(--transition-fast)} .result-links a:hover{color:var(--purple)} /* ─── Toast ──────────────── */ .toast-container{position:fixed;bottom:1rem;right:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:1000} .toast{padding:.75rem 1.25rem;border-radius:var(--radius-md);background:var(--glass-bg);backdrop-filter:blur(20px);border:1px solid var(--glass-border);color:var(--text-primary);font-size:.85rem;animation:toast-in .3s ease-out;max-width:360px} .toast.error{border-color:rgba(239,68,68,.3)} .toast.success{border-color:rgba(16,185,129,.3)} @keyframes toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} .code-chunk-new{animation:fade-in .15s ease-out} @keyframes fade-in{from{opacity:0}to{opacity:1}}