| |
| |
| |
| |
|
|
| :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-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} |
|
|
| |
| .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} |
|
|
| |
| .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)}} |
|
|
| |
| .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-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{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}} |
|
|
| |
| .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{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-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-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-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}} |
|
|