:root{--green-dark:#2d5a27;--green-mid:#4a7c59;--green-light:#e8f5e9;--bg:#f9fafb;--card:#fff;--border:#e0e0e0;--text:#1a1a1a;--muted:#6b7280;--radius:12px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}#root{max-width:860px;margin:0 auto;padding:24px 16px 64px}.header{text-align:center;margin-bottom:32px}.header h1{color:var(--green-dark);margin-bottom:6px;font-size:1.8rem}.header p{color:var(--muted);font-size:.95rem}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:20px}.model-selector{flex-direction:column;gap:8px;display:flex}.model-selector label{color:var(--muted);font-size:.9rem;font-weight:600}.model-selector select{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:8px;padding:10px 12px;font-size:.95rem}.btn-load{background:var(--green-mid);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:10px;padding:10px 20px;font-size:.95rem;font-weight:600;transition:background .2s}.btn-load:hover{background:var(--green-dark)}.btn-load:disabled{background:var(--border);color:var(--muted);cursor:not-allowed}.progress-wrap{margin-top:10px}.progress-label{color:var(--muted);margin-bottom:4px;font-size:.85rem}.progress-bar{background:var(--border);border-radius:4px;height:6px;overflow:hidden}.progress-fill{background:var(--green-mid);height:100%;transition:width .2s}.image-area{flex-direction:column;align-items:center;gap:16px;display:flex}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius);cursor:pointer;background:var(--green-light);flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:220px;transition:border-color .2s,background .2s;display:flex;position:relative;overflow:hidden}.drop-zone.dragover{border-color:var(--green-mid);background:#d0ead4}.drop-zone img.preview{border-radius:8px;max-width:100%;max-height:320px;display:block}.drop-zone .placeholder{text-align:center;color:var(--muted);padding:20px}.drop-zone .placeholder span{margin-bottom:8px;font-size:2.5rem;display:block}.camera-area{width:100%}video{border-radius:var(--radius);width:100%;display:block}.btn-capture{background:var(--green-dark);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;margin-top:10px;padding:12px;font-size:1rem;font-weight:600}.input-tabs{gap:8px;margin-bottom:16px;display:flex}.tab-btn{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:8px;flex:1;padding:8px;font-size:.9rem;font-weight:500;transition:all .15s}.tab-btn.active{background:var(--green-mid);color:#fff;border-color:var(--green-mid)}.samples{flex-wrap:wrap;gap:8px;display:flex}.samples img{object-fit:cover;cursor:pointer;border:2px solid #0000;border-radius:8px;width:64px;height:64px;transition:border-color .15s}.samples img:hover,.samples img.active{border-color:var(--green-mid)}.results h3{color:var(--green-dark);margin-bottom:12px;font-size:1rem;font-weight:600}.result-row{margin-bottom:10px}.result-name{justify-content:space-between;margin-bottom:4px;font-size:.9rem;font-style:italic;display:flex}.result-name .conf{color:var(--green-mid);font-style:normal;font-weight:600}.result-bar-bg{background:var(--border);border-radius:4px;height:8px;overflow:hidden}.result-bar-fill{background:var(--green-mid);border-radius:4px;height:100%;transition:width .4s}.inat-link{background:var(--green-mid);color:#fff;border-radius:8px;align-items:center;gap:8px;margin-top:14px;padding:10px 18px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.inat-link:hover{background:var(--green-dark)}.badge{border-radius:999px;padding:3px 10px;font-size:.78rem;font-weight:600;display:inline-block}.badge.ready{color:var(--green-dark);background:#e8f5e9}.badge.loading{color:#b45309;background:#fff8e1}.badge.error{color:#b91c1c;background:#fee2e2}.topk-row{align-items:center;gap:12px;margin-top:10px;display:flex}.topk-row label{color:var(--muted);white-space:nowrap;font-size:.88rem}.topk-row input[type=range]{accent-color:var(--green-mid);flex:1}@media (width>=600px){.main-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}}
