dryymatt commited on
Commit
b273462
Β·
verified Β·
1 Parent(s): 28327d7

Upload static/wizard.css

Browse files
Files changed (1) hide show
  1. static/wizard.css +226 -49
static/wizard.css CHANGED
@@ -1,6 +1,6 @@
1
  /* ╔══════════════════════════════════════════════════════╗
2
- β•‘ WIZARD-VIBE β€” Liquid Glass Design System β•‘
3
- β•‘ Minimalist. Experimental. Cool. β•‘
4
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• */
5
 
6
  :root {
@@ -18,14 +18,37 @@
18
 
19
  *,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
20
  html,body{height:100%;overflow:hidden}
21
- 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}
 
 
 
 
 
22
  ::selection{background:rgba(139,92,246,.5);color:#fff}
23
 
24
- .app-shell{display:flex;flex-direction:column;height:100vh;padding:1rem;gap:.75rem;max-width:1600px;margin:0 auto}
 
 
 
 
 
 
25
 
26
- /* ─── Logo ───────────────── */
27
- .logo-container{display:flex;align-items:center;gap:.75rem;padding:.25rem 0}
28
- .wizard-hat{width:48px;height:48px;filter:drop-shadow(0 0 20px rgba(139,92,246,.6));transition:filter var(--transition-smooth)}
 
 
 
 
 
 
 
 
 
 
 
 
29
  .wizard-hat.stable{filter:drop-shadow(0 0 24px rgba(16,185,129,.8))!important}
30
  .wizard-hat.error{filter:drop-shadow(0 0 24px rgba(239,68,68,.8))!important}
31
  .wizard-hat.published{filter:drop-shadow(0 0 30px rgba(245,158,11,.9))!important}
@@ -35,37 +58,98 @@ body{font-family:var(--font-sans);background:linear-gradient(135deg,var(--bg-dee
35
  #status-ring.stable{stroke:var(--green);opacity:.8}
36
  #status-ring.error{stroke:var(--red);opacity:.8}
37
  #status-ring.published{stroke:var(--gold);opacity:1}
38
- .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}
39
 
40
- /* ─── Input ──────────────── */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  .prompt-section{flex-shrink:0}
42
- .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)}
43
- .input-glass:focus-within{border-color:rgba(139,92,246,.4);box-shadow:0 0 30px rgba(139,92,246,.1)}
44
- #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}
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  #prompt-input::placeholder{color:var(--text-muted)}
46
- .input-actions{display:flex;align-items:center;gap:.75rem;margin-top:.75rem}
 
 
47
 
48
- /* ─── Buttons ────────────── */
49
- .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)}
 
 
 
 
 
 
 
 
50
  .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 20px rgba(139,92,246,.4)}
51
  .btn-primary:active{transform:translateY(0)}
52
  .btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}
53
- .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)}
 
 
 
 
 
 
 
 
 
54
  .btn-publish:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 30px rgba(16,185,129,.4)}
55
  .btn-publish:disabled{background:rgba(255,255,255,.05);color:var(--text-muted);cursor:not-allowed;transform:none;box-shadow:none}
56
  .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}
57
  @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)}}
58
 
59
- /* ─── Badges ─────────────── */
60
- .model-badges{display:flex;gap:.5rem;flex-wrap:wrap}
61
- .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}
62
  .model-badge.vision{background:rgba(6,182,212,.15);color:var(--cyan);border-color:rgba(6,182,212,.2)}
63
  .model-badge.logic{background:rgba(245,158,11,.15);color:var(--gold);border-color:rgba(245,158,11,.2)}
64
  .model-badge.code{background:rgba(16,185,129,.15);color:var(--green);border-color:rgba(16,185,129,.2)}
65
 
66
- /* ─── Status ─────────────── */
67
- .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}
68
- .status-indicator{width:8px;height:8px;border-radius:50%;background:var(--text-muted);transition:background var(--transition-fast)}
 
 
 
 
 
 
 
 
 
 
 
 
69
  .status-indicator.building{background:var(--purple);animation:blink 1s infinite}
70
  .status-indicator.streaming{background:var(--cyan);animation:blink .5s infinite}
71
  .status-indicator.stable{background:var(--green)}
@@ -75,54 +159,147 @@ body{font-family:var(--font-sans);background:linear-gradient(135deg,var(--bg-dee
75
  .status-text{color:var(--text-secondary);font-weight:500}
76
  .status-phase{color:var(--text-muted);margin-left:auto}
77
 
78
- /* ─── Main Split ─────────── */
79
- .main-split{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;flex:1;min-height:0}
80
- @media(max-width:900px){.main-split{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
- /* ─── Panels ─────────────── */
83
- .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}
84
- .panel-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid var(--glass-border);flex-shrink:0}
85
- .panel-title{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}
86
- .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)}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  .panel-action:hover{background:var(--glass-bg)}
88
- .sandbox-badge{font-size:.85rem}
89
 
90
- /* ─── Code View ──────────── */
91
- .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}
 
 
 
 
 
92
  .code-view .placeholder{color:var(--text-muted);font-style:italic}
93
 
94
- /* ─── Preview ────────────── */
95
  .preview-container{flex:1;position:relative;background:#fff}
96
  .preview-iframe{width:100%;height:100%;border:none;display:block}
97
- .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}
 
 
 
 
 
 
98
  .preview-overlay.hidden{opacity:0}
99
  .overlay-content{text-align:center;color:var(--text-secondary)}
100
- .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}
 
 
 
 
 
 
101
  @keyframes spin{to{transform:rotate(360deg)}}
102
 
103
- /* ─── Publish ────────────── */
104
  .publish-section{flex-shrink:0}
105
- .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)}
 
 
 
 
 
 
 
106
  .publish-gate.unlocked{border-color:rgba(16,185,129,.3);box-shadow:0 0 20px rgba(16,185,129,.1)}
107
  .gate-status{display:flex;align-items:center;gap:.5rem}
108
- .gate-icon{font-size:1.1rem}
109
- .gate-text{font-size:.85rem;color:var(--text-secondary)}
110
  .publish-gate.unlocked .gate-text{color:var(--green)}
111
 
112
- .result-card{display:flex;align-items:flex-start;gap:1rem;padding:1.25rem;border-radius:var(--radius-lg);margin-top:.5rem}
 
 
 
113
  .glass-card{background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.2);backdrop-filter:blur(20px)}
114
- .result-icon{font-size:2rem;flex-shrink:0}
115
- .result-body h3{font-size:1.1rem;margin-bottom:.25rem}
116
- .result-body p{color:var(--text-secondary);font-size:.85rem;margin-bottom:.75rem;word-break:break-all}
117
- .result-links{display:flex;gap:1rem}
118
- .result-links a{color:var(--cyan);text-decoration:none;font-size:.85rem;font-weight:500;transition:color var(--transition-fast)}
119
  .result-links a:hover{color:var(--purple)}
120
 
121
- /* ─── Toast ──────────────── */
122
- .toast-container{position:fixed;bottom:1rem;right:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:1000}
123
- .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}
124
  .toast.error{border-color:rgba(239,68,68,.3)}
125
  .toast.success{border-color:rgba(16,185,129,.3)}
126
  @keyframes toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
127
  .code-chunk-new{animation:fade-in .15s ease-out}
128
  @keyframes fade-in{from{opacity:0}to{opacity:1}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /* ╔══════════════════════════════════════════════════════╗
2
+ β•‘ OMNI-VIBE STUDIO β€” Liquid Glass Design System β•‘
3
+ β•‘ Tabbed Forge/Preview Β· Hero Center Β· Mobile First β•‘
4
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• */
5
 
6
  :root {
 
18
 
19
  *,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
20
  html,body{height:100%;overflow:hidden}
21
+ body{
22
+ font-family:var(--font-sans);
23
+ background:linear-gradient(135deg,var(--bg-deep) 0%,var(--bg-mid) 50%,#0a1a2e 100%);
24
+ color:var(--text-primary);
25
+ -webkit-font-smoothing:antialiased;
26
+ }
27
  ::selection{background:rgba(139,92,246,.5);color:#fff}
28
 
29
+ /* ═══ APP SHELL: single-column, scrollable ═══ */
30
+ .app-shell{
31
+ display:flex;flex-direction:column;
32
+ height:100vh;padding:.75rem;gap:.5rem;
33
+ max-width:800px;margin:0 auto;
34
+ overflow-y:auto;
35
+ }
36
 
37
+ /* ═══ HERO HEADER: wizard centered, hero text ═══ */
38
+ .hero-header{
39
+ text-align:center;
40
+ padding:.75rem 0 .25rem;
41
+ flex-shrink:0;
42
+ }
43
+ .logo-center{
44
+ display:flex;flex-direction:column;
45
+ align-items:center;gap:.25rem;
46
+ }
47
+ .wizard-hat{
48
+ width:56px;height:56px;
49
+ filter:drop-shadow(0 0 20px rgba(139,92,246,.6));
50
+ transition:filter var(--transition-smooth);
51
+ }
52
  .wizard-hat.stable{filter:drop-shadow(0 0 24px rgba(16,185,129,.8))!important}
53
  .wizard-hat.error{filter:drop-shadow(0 0 24px rgba(239,68,68,.8))!important}
54
  .wizard-hat.published{filter:drop-shadow(0 0 30px rgba(245,158,11,.9))!important}
 
58
  #status-ring.stable{stroke:var(--green);opacity:.8}
59
  #status-ring.error{stroke:var(--red);opacity:.8}
60
  #status-ring.published{stroke:var(--gold);opacity:1}
 
61
 
62
+ .logo-label{
63
+ font-size:.85rem;font-weight:700;letter-spacing:.2em;
64
+ background:linear-gradient(135deg,var(--purple),var(--cyan),var(--green));
65
+ -webkit-background-clip:text;-webkit-text-fill-color:transparent;
66
+ background-clip:text;
67
+ }
68
+ .hero-title{
69
+ font-size:clamp(1.5rem,5vw,2.2rem);font-weight:800;line-height:1.15;
70
+ background:linear-gradient(135deg,var(--purple),var(--cyan),var(--green));
71
+ -webkit-background-clip:text;-webkit-text-fill-color:transparent;
72
+ background-clip:text;
73
+ margin-top:.3rem;
74
+ }
75
+ .hero-sub{
76
+ color:var(--text-secondary);font-size:.9rem;
77
+ font-weight:400;margin-top:.15rem;
78
+ }
79
+
80
+ /* ═══ PROMPT INPUT ═══ */
81
  .prompt-section{flex-shrink:0}
82
+ .input-glass{
83
+ background:var(--glass-bg);
84
+ backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
85
+ border:1px solid var(--glass-border);
86
+ border-radius:var(--radius-lg);padding:.75rem;
87
+ transition:border-color var(--transition-fast),box-shadow var(--transition-fast);
88
+ }
89
+ .input-glass:focus-within{
90
+ border-color:rgba(139,92,246,.4);
91
+ box-shadow:0 0 30px rgba(139,92,246,.1);
92
+ }
93
+ #prompt-input{
94
+ width:100%;background:transparent;border:none;
95
+ color:var(--text-primary);font-family:var(--font-sans);
96
+ font-size:.9rem;line-height:1.6;resize:none;outline:none;
97
+ }
98
  #prompt-input::placeholder{color:var(--text-muted)}
99
+ .input-actions{
100
+ display:flex;align-items:center;gap:.75rem;margin-top:.5rem;
101
+ }
102
 
103
+ /* ═══ BUTTONS ═══ */
104
+ .btn-primary{
105
+ display:flex;align-items:center;gap:.5rem;
106
+ padding:.55rem 1.25rem;
107
+ background:linear-gradient(135deg,var(--purple),var(--cyan));
108
+ border:none;border-radius:var(--radius-md);
109
+ color:#fff;font-family:var(--font-sans);
110
+ font-size:.85rem;font-weight:600;cursor:pointer;
111
+ transition:transform var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast);
112
+ }
113
  .btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 20px rgba(139,92,246,.4)}
114
  .btn-primary:active{transform:translateY(0)}
115
  .btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}
116
+
117
+ .btn-publish{
118
+ display:flex;align-items:center;gap:.5rem;
119
+ padding:.65rem 1.5rem;
120
+ background:linear-gradient(135deg,var(--green),var(--cyan));
121
+ border:none;border-radius:var(--radius-md);
122
+ color:#fff;font-family:var(--font-sans);
123
+ font-size:.88rem;font-weight:700;cursor:pointer;
124
+ transition:all var(--transition-smooth);
125
+ }
126
  .btn-publish:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 30px rgba(16,185,129,.4)}
127
  .btn-publish:disabled{background:rgba(255,255,255,.05);color:var(--text-muted);cursor:not-allowed;transform:none;box-shadow:none}
128
  .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}
129
  @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)}}
130
 
131
+ /* ═══ MODEL BADGES ═══ */
132
+ .model-badges{display:flex;gap:.4rem;flex-wrap:wrap}
133
+ .model-badge{font-size:.68rem;padding:.15rem .4rem;border-radius:20px;background:rgba(139,92,246,.15);color:var(--purple);border:1px solid rgba(139,92,246,.2);white-space:nowrap}
134
  .model-badge.vision{background:rgba(6,182,212,.15);color:var(--cyan);border-color:rgba(6,182,212,.2)}
135
  .model-badge.logic{background:rgba(245,158,11,.15);color:var(--gold);border-color:rgba(245,158,11,.2)}
136
  .model-badge.code{background:rgba(16,185,129,.15);color:var(--green);border-color:rgba(16,185,129,.2)}
137
 
138
+ /* ═══ STATUS BAR ═══ */
139
+ .status-bar{
140
+ display:flex;align-items:center;gap:.5rem;
141
+ padding:.4rem .75rem;
142
+ background:var(--glass-bg);
143
+ backdrop-filter:blur(20px);
144
+ border:1px solid var(--glass-border);
145
+ border-radius:var(--radius-sm);
146
+ font-size:.75rem;flex-shrink:0;
147
+ }
148
+ .status-indicator{
149
+ width:8px;height:8px;border-radius:50%;
150
+ background:var(--text-muted);
151
+ transition:background var(--transition-fast);
152
+ }
153
  .status-indicator.building{background:var(--purple);animation:blink 1s infinite}
154
  .status-indicator.streaming{background:var(--cyan);animation:blink .5s infinite}
155
  .status-indicator.stable{background:var(--green)}
 
159
  .status-text{color:var(--text-secondary);font-weight:500}
160
  .status-phase{color:var(--text-muted);margin-left:auto}
161
 
162
+ /* ═══ TAB NAVIGATION ═══ */
163
+ .tab-nav{
164
+ display:flex;gap:.25rem;
165
+ padding:.25rem;
166
+ background:var(--glass-bg);
167
+ backdrop-filter:blur(20px);
168
+ border:1px solid var(--glass-border);
169
+ border-radius:var(--radius-md);
170
+ flex-shrink:0;
171
+ }
172
+ .tab-btn{
173
+ display:flex;align-items:center;gap:.4rem;
174
+ flex:1;padding:.5rem 1rem;
175
+ background:transparent;border:none;
176
+ border-radius:var(--radius-sm);
177
+ color:var(--text-muted);
178
+ font-family:var(--font-sans);font-size:.85rem;font-weight:600;
179
+ cursor:pointer;transition:all var(--transition-fast);
180
+ }
181
+ .tab-btn:hover:not(:disabled){background:var(--glass-bg);color:var(--text-secondary)}
182
+ .tab-btn.active{
183
+ background:rgba(139,92,246,.15);
184
+ color:var(--text-primary);
185
+ box-shadow:inset 0 0 0 1px rgba(139,92,246,.2);
186
+ }
187
+ .tab-btn.locked{cursor:not-allowed;opacity:.5}
188
+ .tab-btn.unlocked .tab-icon{animation:unlock-pop .4s ease-out}
189
+ @keyframes unlock-pop{0%{transform:scale(1)}50%{transform:scale(1.4)}100%{transform:scale(1)}}
190
+ .tab-icon{font-size:1rem}
191
+ .tab-label{font-size:.8rem}
192
+
193
+ /* ═══ TAB PANELS ═══ */
194
+ .tab-panels{flex:1;min-height:0;position:relative}
195
+ .tab-panel{display:none;flex-direction:column;height:100%}
196
+ .tab-panel.active{display:flex}
197
 
198
+ /* ═══ PANELS ═══ */
199
+ .panel{
200
+ display:flex;flex-direction:column;
201
+ background:var(--glass-bg);
202
+ backdrop-filter:blur(20px);
203
+ border:1px solid var(--glass-border);
204
+ border-radius:var(--radius-lg);
205
+ overflow:hidden;flex:1;
206
+ }
207
+ .panel-header{
208
+ display:flex;align-items:center;justify-content:space-between;
209
+ padding:.4rem .75rem;
210
+ border-bottom:1px solid var(--glass-border);
211
+ flex-shrink:0;
212
+ }
213
+ .panel-title{
214
+ font-size:.75rem;font-weight:600;
215
+ color:var(--text-secondary);
216
+ text-transform:uppercase;letter-spacing:.08em;
217
+ }
218
+ .panel-action{
219
+ background:none;border:1px solid var(--glass-border);
220
+ border-radius:var(--radius-sm);padding:.2rem .4rem;
221
+ color:var(--text-secondary);cursor:pointer;font-size:.8rem;
222
+ transition:background var(--transition-fast);
223
+ }
224
  .panel-action:hover{background:var(--glass-bg)}
225
+ .sandbox-badge{font-size:.8rem}
226
 
227
+ /* ═══ CODE VIEW ═══ */
228
+ .code-view{
229
+ flex:1;overflow:auto;padding:.75rem;margin:0;
230
+ font-family:var(--font-mono);font-size:.78rem;
231
+ line-height:1.6;color:var(--text-secondary);
232
+ white-space:pre-wrap;word-break:break-all;
233
+ }
234
  .code-view .placeholder{color:var(--text-muted);font-style:italic}
235
 
236
+ /* ═══ PREVIEW ═══ */
237
  .preview-container{flex:1;position:relative;background:#fff}
238
  .preview-iframe{width:100%;height:100%;border:none;display:block}
239
+ .preview-overlay{
240
+ position:absolute;inset:0;
241
+ display:flex;align-items:center;justify-content:center;
242
+ background:rgba(10,10,26,.8);backdrop-filter:blur(4px);
243
+ transition:opacity var(--transition-smooth);
244
+ pointer-events:none;
245
+ }
246
  .preview-overlay.hidden{opacity:0}
247
  .overlay-content{text-align:center;color:var(--text-secondary)}
248
+ .wizard-loader{
249
+ width:40px;height:40px;margin:0 auto 1rem;
250
+ border:2px solid var(--glass-border);
251
+ border-top-color:var(--purple);
252
+ border-radius:50%;
253
+ animation:spin 1s linear infinite;
254
+ }
255
  @keyframes spin{to{transform:rotate(360deg)}}
256
 
257
+ /* ═══ PUBLISH SECTION ═══ */
258
  .publish-section{flex-shrink:0}
259
+ .publish-gate{
260
+ display:flex;align-items:center;justify-content:space-between;
261
+ padding:.6rem .75rem;
262
+ background:var(--glass-bg);
263
+ backdrop-filter:blur(20px);
264
+ border:1px solid var(--glass-border);
265
+ border-radius:var(--radius-lg);
266
+ }
267
  .publish-gate.unlocked{border-color:rgba(16,185,129,.3);box-shadow:0 0 20px rgba(16,185,129,.1)}
268
  .gate-status{display:flex;align-items:center;gap:.5rem}
269
+ .gate-icon{font-size:1rem}
270
+ .gate-text{font-size:.8rem;color:var(--text-secondary)}
271
  .publish-gate.unlocked .gate-text{color:var(--green)}
272
 
273
+ .result-card{
274
+ display:flex;align-items:flex-start;gap:1rem;
275
+ padding:1rem;border-radius:var(--radius-lg);margin-top:.5rem;
276
+ }
277
  .glass-card{background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.2);backdrop-filter:blur(20px)}
278
+ .result-icon{font-size:1.75rem;flex-shrink:0}
279
+ .result-body h3{font-size:1rem;margin-bottom:.15rem}
280
+ .result-body p{color:var(--text-secondary);font-size:.8rem;margin-bottom:.5rem;word-break:break-all}
281
+ .result-links{display:flex;gap:.75rem}
282
+ .result-links a{color:var(--cyan);text-decoration:none;font-size:.8rem;font-weight:500;transition:color var(--transition-fast)}
283
  .result-links a:hover{color:var(--purple)}
284
 
285
+ /* ═══ TOAST ═══ */
286
+ .toast-container{position:fixed;bottom:.75rem;right:.75rem;display:flex;flex-direction:column;gap:.5rem;z-index:1000}
287
+ .toast{padding:.65rem 1rem;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:.8rem;animation:toast-in .3s ease-out;max-width:300px}
288
  .toast.error{border-color:rgba(239,68,68,.3)}
289
  .toast.success{border-color:rgba(16,185,129,.3)}
290
  @keyframes toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
291
  .code-chunk-new{animation:fade-in .15s ease-out}
292
  @keyframes fade-in{from{opacity:0}to{opacity:1}}
293
+
294
+ /* ═══ MOBILE: tighter padding ═══ */
295
+ @media(max-width:500px){
296
+ .app-shell{padding:.5rem;gap:.35rem}
297
+ .hero-header{padding:.5rem 0 0}
298
+ .wizard-hat{width:44px;height:44px}
299
+ .hero-title{font-size:1.3rem}
300
+ .hero-sub{font-size:.8rem}
301
+ .tab-btn{padding:.4rem .6rem}
302
+ .tab-label{font-size:.72rem}
303
+ .publish-gate{flex-direction:column;gap:.5rem;align-items:stretch}
304
+ .btn-publish{justify-content:center}
305
+ }