: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-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)}}@keyframes blink{50%{opacity:0}}.progress-timeline{max-height:480px;overflow-y:auto;padding:4px 0}.progress-timeline::-webkit-scrollbar{width:5px}.progress-timeline::-webkit-scrollbar-track{background:transparent}.progress-timeline::-webkit-scrollbar-thumb{background:var(--gf-border);border-radius:3px}.progress-timeline::-webkit-scrollbar-thumb:hover{background:var(--gf-gray)}.tl-status{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:13px;color:var(--gf-success);animation:fadeSlideIn .25s ease-out}.tl-status span{color:var(--gf-gray)}.tl-tool{margin:10px 0 4px;padding:12px 16px;background:var(--gf-blue-light);border-radius:6px;border-left:3px solid var(--gf-blue);animation:fadeSlideIn .25s ease-out}.tl-tool-name{font-size:13px;font-weight:600;color:var(--gf-blue-dark);text-transform:capitalize}.tl-tool-args{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tl-arg{display:inline-flex;align-items:center;background:var(--gf-white);border-radius:4px;font-size:12px;overflow:hidden;border:1px solid var(--gf-border)}.tl-arg-key{padding:2px 6px;color:var(--gf-gray);font-family:SF Mono,Fira Code,monospace}.tl-arg-val{padding:2px 8px;color:var(--gf-blue-dark);font-family:SF Mono,Fira Code,monospace;font-weight:600;background:#005da80d;border-left:1px solid var(--gf-border)}.tl-result{margin:0 0 8px;padding:10px 16px;font-size:13px;color:var(--gf-text);background:var(--gf-gray-light);border-radius:6px;border-left:3px solid var(--gf-success);line-height:1.6;animation:fadeSlideIn .25s ease-out}.tl-thinking{margin:4px 0;padding:10px 16px;font-size:13px;color:var(--gf-gray);font-style:italic;background:var(--gf-gray-light);border-radius:6px;border-left:3px solid var(--gf-border);line-height:1.6;max-height:140px;overflow-y:auto;animation:fadeSlideIn .25s ease-out}.tl-error{margin:8px 0;padding:10px 16px;font-size:13px;color:var(--gf-error);background:#d0021b0a;border-radius:6px;border-left:3px solid var(--gf-error);display:flex;align-items:flex-start;gap:8px;font-weight:500;animation:fadeSlideIn .25s ease-out}.tl-streaming{margin:8px 0;padding:12px 16px;font-size:13px;color:var(--gf-text);background:var(--gf-gray-light);border-radius:6px;border-left:3px solid var(--gf-warning);line-height:1.7;white-space:pre-wrap;word-break:break-word}.streaming-cursor{display:inline-block;width:7px;height:15px;background:var(--gf-blue);margin-left:2px;vertical-align:text-bottom;animation:blink .8s step-end infinite}.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}
