:root{--gf-blue: #005DA8;--gf-blue-dark: #003A6A;--gf-blue-light: #E8F1F8;--gf-blue-mid: #0073CF;--gf-white: #FFFFFF;--gf-text: #1A1A1A;--gf-gray: #666666;--gf-gray-light: #F5F5F5;--gf-border: #D9D9D9;--gf-success: #008A00;--gf-warning: #F0A500;--gf-error: #D0021B;--gf-shadow: 0 2px 8px rgba(0, 0, 0, .08);--gf-shadow-hover: 0 4px 16px rgba(0, 0, 0, .12);--gf-radius: 8px;--gf-transition: .2s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Helvetica Neue,Arial,sans-serif;color:var(--gf-text);background:var(--gf-gray-light);line-height:1.6;-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,var(--gf-blue-dark) 0%,var(--gf-blue) 100%);color:var(--gf-white);padding:0 32px;height:64px;display:flex;align-items:center;gap:16px;box-shadow:0 2px 12px #00396a40;position:relative;z-index:10}.app-header .logo{height:36px;width:auto;flex-shrink:0;filter:brightness(0) invert(1)}.app-header .header-divider{width:1px;height:32px;background:#ffffff4d;flex-shrink:0}.app-header h1{font-size:18px;font-weight:600;letter-spacing:-.01em}.app-header .subtitle{font-size:12px;opacity:.7;font-weight:400;margin-top:1px}.app-main{flex:1;max-width:960px;margin:32px auto;padding:0 24px;width:100%}.card{background:var(--gf-white);border-radius:var(--gf-radius);box-shadow:var(--gf-shadow);padding:32px;margin-bottom:24px;transition:box-shadow var(--gf-transition);animation:fadeSlideIn .35s ease-out}.card h2{font-size:16px;font-weight:600;color:var(--gf-blue);margin-bottom:16px;display:flex;align-items:center;gap:8px}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.upload-zone{border:2px dashed var(--gf-border);border-radius:var(--gf-radius);padding:48px 32px;text-align:center;cursor:pointer;transition:all var(--gf-transition);position:relative}.upload-zone:hover{border-color:var(--gf-blue-mid);background:var(--gf-blue-light);transform:translateY(-1px);box-shadow:var(--gf-shadow)}.upload-zone.drag-over{border-color:var(--gf-blue);background:var(--gf-blue-light);border-style:solid;transform:scale(1.01);box-shadow:var(--gf-shadow-hover)}.upload-zone:active{transform:scale(.99)}.upload-zone .upload-icon{width:48px;height:48px;margin:0 auto 12px;opacity:.5;transition:opacity var(--gf-transition)}.upload-zone:hover .upload-icon{opacity:.8}.upload-zone p{color:var(--gf-gray);margin-top:8px;font-size:14px}.upload-zone .label{color:var(--gf-blue);font-weight:600;font-size:16px}.file-list{margin-top:16px}.file-item{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--gf-gray-light);border-radius:6px;margin-bottom:6px;font-size:14px;transition:background var(--gf-transition);animation:fadeSlideIn .25s ease-out}.file-item:hover{background:var(--gf-blue-light)}.file-item .file-icon{color:var(--gf-blue);margin-right:8px;font-size:16px}.file-item button{background:none;border:none;color:var(--gf-gray);cursor:pointer;font-size:13px;padding:4px 8px;border-radius:4px;transition:all var(--gf-transition)}.file-item button:hover{color:var(--gf-error);background:#d0021b14}.format-selector{display:flex;gap:8px;margin-top:20px;align-items:center}.format-selector label{font-size:13px;font-weight:600;color:var(--gf-gray);margin-right:4px;text-transform:uppercase;letter-spacing:.05em}.format-btn{padding:8px 20px;border:2px solid var(--gf-border);border-radius:6px;background:var(--gf-white);color:var(--gf-text);cursor:pointer;font-size:14px;font-weight:500;transition:all var(--gf-transition)}.format-btn:hover{border-color:var(--gf-blue-mid);color:var(--gf-blue);transform:translateY(-1px);box-shadow:0 2px 4px #0000000f}.format-btn:active{transform:translateY(0)}.format-btn.active{background:var(--gf-blue);color:var(--gf-white);border-color:var(--gf-blue);box-shadow:0 2px 8px #005da84d}.format-btn.active:hover{background:var(--gf-blue-mid);border-color:var(--gf-blue-mid)}.iterations-selector{display:flex;gap:8px;margin-top:16px;align-items:center}.iterations-selector label{font-size:13px;font-weight:600;color:var(--gf-gray);text-transform:uppercase;letter-spacing:.05em}.iterations-selector input[type=number]{width:64px;padding:8px 10px;border:2px solid var(--gf-border);border-radius:6px;font-size:14px;font-weight:500;text-align:center;transition:border-color var(--gf-transition)}.iterations-selector input[type=number]:focus{outline:none;border-color:var(--gf-blue-mid)}.iterations-hint{font-size:12px;color:var(--gf-gray)}.btn-primary{background:var(--gf-blue);color:var(--gf-white);border:none;padding:12px 32px;border-radius:6px;font-size:15px;font-weight:600;cursor:pointer;transition:all var(--gf-transition);position:relative;overflow:hidden}.btn-primary:hover{background:var(--gf-blue-mid);transform:translateY(-1px);box-shadow:0 4px 12px #005da84d}.btn-primary:active{transform:translateY(0);box-shadow:0 1px 4px #005da84d}.btn-primary:disabled{background:var(--gf-border);cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{background:var(--gf-white);color:var(--gf-blue);border:2px solid var(--gf-blue);padding:10px 28px;border-radius:6px;font-size:15px;font-weight:600;cursor:pointer;transition:all var(--gf-transition)}.btn-secondary:hover{background:var(--gf-blue-light);transform:translateY(-1px);box-shadow:0 2px 8px #005da826}.btn-secondary:active{transform:translateY(0)}.thumbnail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin:16px 0}.thumbnail-item{border:2px solid var(--gf-border);border-radius:var(--gf-radius);overflow:hidden;cursor:pointer;transition:all var(--gf-transition);position:relative}.thumbnail-item:hover{border-color:var(--gf-blue-mid);transform:translateY(-2px);box-shadow:var(--gf-shadow-hover)}.thumbnail-item:active{transform:translateY(0)}.thumbnail-item.selected{border-color:var(--gf-blue);box-shadow:0 0 0 3px #005da833}.thumbnail-item.selected:after{content:"";position:absolute;top:8px;right:8px;width:24px;height:24px;background:var(--gf-blue);border-radius:50%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");background-size:16px;background-repeat:no-repeat;background-position:center;box-shadow:0 2px 4px #0003;animation:checkPop .2s ease-out}@keyframes checkPop{0%{transform:scale(0)}to{transform:scale(1)}}.thumbnail-item img{width:100%;height:180px;object-fit:contain;background:var(--gf-gray-light);padding:8px}.thumbnail-item .thumb-label{padding:10px 12px;font-size:12px;text-align:center;background:var(--gf-white);border-top:1px solid var(--gf-border);font-weight:500;color:var(--gf-gray)}.thumbnail-item.selected .thumb-label{color:var(--gf-blue);background:var(--gf-blue-light)}.progress-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.progress-log{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:13px;background:#0d1b2a;color:#e0e0e0;border-radius:var(--gf-radius);padding:20px;max-height:400px;overflow-y:auto;line-height:1.7}.progress-log .entry{padding:2px 0;animation:logEntry .2s ease-out}@keyframes logEntry{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.progress-log .entry.status{color:#8cbbe9}.progress-log .entry.status:before{content:">> ";color:#4a90d9}.progress-log .entry.reasoning{color:#c4b5fd;font-style:italic;padding-left:16px;border-left:2px solid rgba(196,181,253,.3);margin:4px 0}.progress-log .entry.reasoning:before{content:"💭"}.progress-log .entry.tool-call{color:#a8d08d}.progress-log .entry.tool-call:before{content:"-> ";color:#6ba354}.progress-log .entry.error{color:#ff6b6b}.progress-log .entry.error:before{content:"!! "}.progress-log .entry.streaming{color:#e8d5b7;white-space:pre-wrap;word-break:break-word;border-left:2px solid rgba(232,213,183,.3);padding:8px 0 8px 16px;margin:4px 0;line-height:1.8}.streaming-cursor{display:inline-block;width:7px;height:14px;background:#e8d5b7;margin-left:2px;vertical-align:text-bottom;animation:blink .8s step-end infinite}@keyframes blink{50%{opacity:0}}.progress-spinner{display:inline-block;width:18px;height:18px;border:2.5px solid var(--gf-blue-light);border-top-color:var(--gf-blue);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.pulse-dot{display:inline-block;width:8px;height:8px;background:var(--gf-success);border-radius:50%;animation:pulse 1.5s ease-in-out infinite;margin-right:8px}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.result-actions{display:flex;gap:12px;margin-bottom:20px}.result-html{background:var(--gf-white);border:1px solid var(--gf-border);border-radius:var(--gf-radius);overflow:hidden;box-shadow:inset 0 1px 3px #0000000d}.result-html iframe{width:100%;min-height:600px;border:none}.result-code{background:#0d1b2a;color:#d4d4d4;border-radius:var(--gf-radius);padding:20px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:13px;white-space:pre-wrap;max-height:600px;overflow-y:auto;line-height:1.6}.progress-log::-webkit-scrollbar,.result-code::-webkit-scrollbar{width:6px}.progress-log::-webkit-scrollbar-track,.result-code::-webkit-scrollbar-track{background:transparent}.progress-log::-webkit-scrollbar-thumb,.result-code::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}.progress-log::-webkit-scrollbar-thumb:hover,.result-code::-webkit-scrollbar-thumb:hover{background:#ffffff40}
