:root{--primary:#3b82f6;--primary-dark:#2563eb;--gradient:linear-gradient(135deg, #3b82f6, #8b5cf6);--bg:#f8fafc;--card:#fff;--text:#1e293b;--muted:#64748b;--border:#e2e8f0;--success:#22c55e;--warning:#eab308;--error:#ef4444}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.5}.upload-container{flex-direction:column;align-items:center;gap:1.5rem;width:100%;display:flex}.dropzone{border:2px dashed var(--border);cursor:pointer;background:#fff;border-radius:16px;justify-content:center;align-items:center;width:100%;min-height:300px;transition:all .2s;display:flex;position:relative;overflow:hidden}.dropzone:hover{border-color:var(--primary);background:#f0f9ff}.dropzone.dragging{border-color:var(--primary);background:#e0f2fe;transform:scale(1.01)}.dropzone.has-preview{background:#000;border-style:solid;border-color:#0000;padding:0}.dropzone input{display:none}.dropzone-content{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:1rem;padding:2rem;display:flex}.upload-icon{width:64px;height:64px;color:var(--primary);opacity:.8}.dropzone-content p{color:var(--text);font-size:1.1rem;font-weight:500}.hint{color:var(--muted);font-size:.875rem}.preview-image{object-fit:contain;width:100%;height:100%;max-height:400px}.change-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .2s}.change-btn:hover{border-color:var(--primary);color:var(--primary);background:#fff}.results-container{flex-direction:column;gap:2rem;width:100%;animation:.4s ease-out slideUp;display:flex}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.top-prediction h2,.all-predictions h3{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:1rem;font-size:1.1rem;font-weight:600}.prediction-card.main{background:var(--gradient);color:#fff;border-radius:16px;padding:2rem;box-shadow:0 10px 30px -10px #3b82f680}.prediction-header{justify-content:space-between;align-items:flex-start;margin-bottom:2rem;display:flex}.class-name{font-size:1.5rem;font-weight:700;line-height:1.2}.confidence{opacity:.9;font-size:2rem;font-weight:800}.prediction-details{border-top:1px solid #fff3;grid-template-columns:1fr 1fr;gap:2rem;padding-top:1.5rem;display:grid}.detail{flex-direction:column;gap:.5rem;display:flex}.label{opacity:.8;text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.value{font-size:1.1rem;font-weight:600}.container-card{border:1px solid var(--border);background:#fff;border-radius:16px;overflow:hidden}.predictions-list{flex-direction:column;display:flex}.prediction-item{border-bottom:1px solid var(--bg);grid-template-columns:40px 1fr 100px;align-items:center;gap:1.5rem;padding:1rem 1.5rem;transition:background .2s;display:grid}.prediction-item:last-child{border-bottom:none}.prediction-item:hover{background:#f8fafc}.prediction-rank{color:var(--muted);font-size:.9rem;font-weight:600}.prediction-info{flex-direction:column;gap:.25rem;display:flex}.item-name{color:var(--text);font-weight:600}.item-site{color:var(--muted);font-size:.8rem}.confidence-bar-container{flex-direction:column;align-items:flex-end;gap:.25rem;display:flex}.confidence-text{color:var(--text);font-size:.85rem;font-weight:600}.bar-bg{background:var(--bg);border-radius:3px;width:100%;height:6px;overflow:hidden}.confidence-bar{border-radius:3px;height:100%;transition:width .5s cubic-bezier(.4,0,.2,1)}.site-analysis-result{width:100%;max-width:1200px;margin:0 auto}.result-summary{text-align:center;background:#f9fafb;border-radius:8px;margin-bottom:24px;padding:16px}.result-summary h3{color:#1f2937;margin:0 0 8px;font-size:20px}.result-summary p{color:#6b7280;margin:0;font-size:16px}.images-comparison{grid-template-columns:1fr 1fr;gap:24px;margin-bottom:32px;display:grid}.image-column{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 3px #0000001a}.image-column h4{color:#1f2937;margin:0 0 12px;font-size:16px;font-weight:600}.image-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.image-header h4{margin:0}.view-toggle{background:#f3f4f6;border-radius:6px;gap:4px;padding:2px;display:flex}.view-toggle button{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:6px 12px;font-size:13px;font-weight:500;transition:all .2s}.view-toggle button:hover{color:#1f2937}.view-toggle button.active{color:#3b82f6;background:#fff;box-shadow:0 1px 2px #0000000d}.image-column img{border:1px solid #e5e7eb;border-radius:6px;width:100%;height:auto}.regions-grid{margin-top:32px}.regions-grid h4{color:#1f2937;margin:0 0 16px;font-size:18px;font-weight:600}.grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.region-card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;transition:box-shadow .2s;overflow:hidden}.region-card:hover{box-shadow:0 4px 6px #0000001a}.card-header{background:#f9fafb;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.region-id{color:#1f2937;font-size:14px;font-weight:600}.confidence{color:#fff;border-radius:12px;padding:4px 10px;font-size:12px;font-weight:600}.card-body{padding:16px}.info-row{border-bottom:1px solid #f3f4f6;justify-content:space-between;padding:8px 0;display:flex}.info-row:last-child{border-bottom:none}.info-row .label{color:#6b7280;font-size:13px;font-weight:500}.info-row .value{color:#1f2937;font-size:13px;font-weight:600}.no-regions{text-align:center;background:#f9fafb;border-radius:8px;margin-top:24px;padding:48px 24px}.no-regions p{color:#6b7280;margin:0;font-size:15px}@media (width<=768px){.images-comparison,.grid{grid-template-columns:1fr}.result-summary{padding:12px}.result-summary h3{font-size:18px}}.spinner-container{flex-direction:column;align-items:center;gap:1rem;padding:2rem;display:flex}.spinner{border:4px solid #e0e0e0;border-top-color:#3b82f6;border-radius:50%;width:48px;height:48px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app{flex-direction:column;min-height:100vh;display:flex}header{text-align:center;background:var(--card);border-bottom:1px solid var(--border);padding:3rem 1rem 2rem}header h1{background:var(--gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.75rem;font-weight:700}header p{color:var(--muted);margin-top:.5rem}.tabs{justify-content:center;gap:1rem;width:100%;max-width:1200px;margin:0 auto;padding:1.5rem 1rem 0;display:flex}.tab{border:2px solid var(--border);color:var(--muted);cursor:pointer;background:#fff;border-radius:10px;flex:1;padding:.875rem 1.5rem;font-size:.95rem;font-weight:600;transition:all .2s}.tab:hover{color:#3b82f6;border-color:#3b82f6}.tab.active{background:var(--gradient);color:#fff;border-color:#0000;box-shadow:0 4px 14px #3b82f64d}main{flex-direction:column;flex:1;align-items:center;gap:1.5rem;width:100%;max-width:1200px;margin:0 auto;padding:2rem 1rem;display:flex}.classify-btn{background:var(--gradient);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:.875rem 2.5rem;font-size:1rem;font-weight:600;transition:all .2s;box-shadow:0 4px 14px #3b82f64d}.classify-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #3b82f666}.classify-btn:active{transform:translateY(0)}.error-message{color:var(--error);text-align:center;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;width:100%;padding:1rem 1.5rem}.error-message p{margin:0}.upload-section,.results-section{width:100%}
