:root{--bg-color: linear-gradient(rgba(22, 119, 255, .04) 1px, transparent 1px), linear-gradient(90deg, rgba(22, 119, 255, .04) 1px, transparent 1px), radial-gradient(circle at 15% 10%, rgba(22, 119, 255, .2) 0%, transparent 36%), radial-gradient(circle at 88% 16%, rgba(0, 210, 255, .14) 0%, transparent 32%), linear-gradient(135deg, #f7fbff 0%, #e6f4ff 100%);--panel-bg: rgba(255, 255, 255, .78);--surface-bg: rgba(247, 251, 255, .84);--surface-bg-soft: rgba(240, 247, 255, .62);--surface-bg-hover: rgba(230, 244, 255, .82);--border-color: rgba(22, 119, 255, .2);--text-primary: #102a43;--text-secondary: #486581;--text-muted: rgba(72, 101, 129, .72);--primary-color: #1677ff;--primary-hover: #0958d9;--primary-active: #003eb3;--primary-light: rgba(22, 119, 255, .12);--success-color: #00a870;--error-color: #d54941;--radius-lg: 16px;--radius-md: 14px;--radius-sm: 10px;--transition: all .25s ease}*{box-sizing:border-box;margin:0;padding:0}[v-cloak],.hidden{display:none!important}body{min-height:100vh;height:auto;overflow-x:hidden;overflow-y:auto;color:var(--text-primary);background:var(--bg-color);background-size:28px 28px,28px 28px,auto,auto,auto;background-attachment:fixed;font-family:Poppins,sans-serif;line-height:1.6}.app-container{max-width:1200px;margin:0 auto;padding:4rem;padding-bottom:calc(4rem + env(safe-area-inset-bottom,0px))}.auth-locked .header,.auth-locked .main-content{filter:blur(8px);pointer-events:none;-webkit-user-select:none;user-select:none}.auth-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(circle at 38% 32%,rgba(255,255,255,.72),transparent 34%),#d6ebff7a;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.auth-modal{width:min(420px,100%);padding:2.25rem;border:1px solid rgba(255,255,255,.64);border-radius:var(--radius-lg);background:#ffffffc7;box-shadow:0 28px 70px #0d47a12e,inset 0 1px #ffffffbd;text-align:center}.auth-badge{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;margin-bottom:1rem;border:1px solid rgba(22,119,255,.24);border-radius:50%;color:var(--primary-color);background:#f0f7ffd6;box-shadow:0 14px 28px #1677ff29}.auth-badge .el-icon{font-size:1.55rem}.auth-modal h2{margin-bottom:.35rem;color:var(--text-primary);font-size:1.6rem;letter-spacing:0}.auth-modal p{margin-bottom:1.35rem;color:var(--text-secondary);font-size:.95rem}.auth-form{display:flex;flex-direction:column;gap:.85rem}.auth-input{width:100%;height:48px;padding:0 1rem;border:1px solid rgba(22,119,255,.3);border-radius:var(--radius-sm);color:var(--text-primary);background:#f7fbffe0;font:inherit;transition:var(--transition)}.auth-input::placeholder{color:#48658194}.auth-input:focus{outline:none;border-color:var(--primary-color);background:#ffffffeb;box-shadow:0 0 0 3px #1677ff2e}.auth-error{min-height:1.2rem;color:var(--error-color);font-size:.86rem;text-align:left}.auth-submit{width:100%;height:46px;margin-top:.1rem;padding:0}.main-content,.full-width{width:100%}.header{margin-bottom:2rem;text-align:center}.title-wrapper{display:flex;align-items:center;justify-content:center;gap:1.2rem;margin-bottom:.5rem}.logo-icon{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;flex-shrink:0;color:var(--primary-color);background-color:#ffffffbf;border-radius:50% 50% 50% 0;box-shadow:0 14px 28px #1677ff29,inset 0 1px #ffffffa6}.logo-icon .el-icon{font-size:24px}h1{margin-bottom:0;color:#0b5ed7;font-size:2.8rem;font-weight:800;letter-spacing:0}h3{margin-bottom:1.5rem;color:var(--text-primary);font-size:1.25rem}h4{margin-bottom:.5rem;color:var(--text-secondary);font-size:1rem}.subtitle{color:var(--text-secondary);font-size:1.1rem}.tabs{display:flex;gap:1rem;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.tab-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem 1rem;border:none;border-radius:999px;color:var(--text-secondary);background:transparent;font-size:1.1rem;font-weight:500;cursor:pointer;transition:var(--transition)}.tab-btn .el-icon{font-size:1rem}.tab-btn:hover{color:var(--text-primary);background:#e6f4ffb8}.tab-btn.active{color:#fff;background:linear-gradient(135deg,#2f8cff,var(--primary-hover));box-shadow:0 8px 20px #1677ff3d}.tab-content{display:none;animation:fadeIn .4s ease}.tab-content.active{display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.panel{padding:2rem;border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--panel-bg);box-shadow:0 24px 60px #0d47a124,inset 0 1px #ffffff7a;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.grid-2,#tab-single .panel.grid-2{display:grid;grid-template-columns:1fr 1.5fr;gap:2rem}#tab-single .panel{height:680px}#tab-single .notice{grid-column:1 / -1;margin-bottom:0}#tab-zip .panel{display:flex;flex-direction:column;height:680px;overflow:hidden}#tab-zip .table-container{overflow-y:auto}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;color:var(--text-secondary);font-weight:500}.radio-group{display:flex;gap:1.5rem}.radio-group label{display:flex;align-items:center;gap:.5rem;padding:.3rem .7rem;border:1px solid rgba(22,119,255,.18);border-radius:12px;color:var(--text-primary);background:#f0f7ff8f;cursor:pointer}.radio-group input{accent-color:var(--primary-color)}.text-input,.text-area{width:100%;max-width:100%;border:1px solid var(--border-color);color:var(--text-primary);background:var(--surface-bg);font-family:inherit;transition:var(--transition)}.text-input{padding:.75rem 1rem;border-radius:var(--radius-sm)}.text-area{height:120px;padding:1rem;border-radius:12px;resize:vertical}.text-input::placeholder{color:#486581a6}.text-input:focus,.text-area:focus{outline:none;border-color:var(--primary-color);background:#f7fbfff0;box-shadow:0 0 0 3px #1677ff2e}.file-drop-area{position:relative;padding:1rem;border:2px dashed rgba(22,119,255,.38);border-radius:var(--radius-md);background:var(--surface-bg-soft);text-align:center;cursor:pointer;transition:var(--transition)}.file-drop-area:hover,.file-drop-area.dragover{border-color:var(--primary-color);background:var(--surface-bg-hover);box-shadow:0 14px 32px #1677ff24}.file-drop-area.file-selected{border-style:solid;border-color:var(--primary-color);background:var(--primary-light);box-shadow:0 4px 16px #1677ff2e}.file-drop-area.file-selected .drop-text{color:var(--primary-color);font-weight:600}.file-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.drop-content{display:flex;flex-direction:column;align-items:center;gap:.45rem;pointer-events:none}.drop-content .el-icon{color:var(--primary-color);font-size:1.75rem}.drop-text{color:var(--text-secondary);font-weight:500}.drop-hint{color:var(--text-muted);font-size:.78rem;line-height:1.45}.file-name-display{margin-top:.5rem;color:var(--primary-color);font-size:.9rem}.btn{display:inline-block;padding:.75rem 1.5rem;border:none;border-radius:999px;font-family:inherit;font-size:1rem;font-weight:600;text-align:center;cursor:pointer;transition:var(--transition)}.primary-btn{color:#fff;background:linear-gradient(135deg,#2f8cff,var(--primary-hover));box-shadow:0 10px 24px #1677ff42}.primary-btn:hover{background:linear-gradient(135deg,var(--primary-color),var(--primary-active));box-shadow:0 14px 28px #1677ff4d;transform:translateY(-1px)}.primary-btn:disabled{color:#fffc;background:#9db6d1;box-shadow:none;cursor:not-allowed;transform:none}.action-btn{display:block;width:120px;min-width:120px;max-width:120px;height:44px;flex-shrink:0;margin:0 auto;padding:0}.sm-btn{padding:.4rem .8rem;border:1px solid rgba(22,119,255,.42);color:var(--primary-color);background-color:var(--primary-light);font-size:.875rem;text-decoration:none}.sm-btn:hover{color:#fff;background-color:var(--primary-color)}.result-box{margin-bottom:1.5rem}.result-box h4{display:flex;align-items:center;gap:.45rem}.result-box h4 .el-icon{color:var(--primary-color);font-size:1rem}.code-block{width:100%;height:300px;padding:1rem;overflow:auto;overflow-wrap:anywhere;border:1px solid rgba(255,255,255,.12);border-radius:12px;color:#dbeafe;background:#071a33;font-family:Courier New,Courier,monospace;font-size:.875rem;white-space:pre-wrap}.notice{margin-bottom:1.5rem;padding:.6rem 0 .6rem 1rem;border-left:4px solid var(--primary-color);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text-secondary);background:#e6f4ff8f;font-size:.9rem}.batch-controls{display:flex;flex-direction:column;align-items:stretch;gap:1rem;margin-bottom:1rem}.batch-controls .form-group{flex:1;margin-bottom:0}.batch-controls .btn{width:auto}.progress-section{margin-bottom:1rem}.progress-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}#local-status-text,#zip-status-text{color:var(--text-secondary);font-weight:500}.progress-bar-container{height:8px;overflow:hidden;border-radius:999px;background:#1677ff1f}.progress-bar{width:0%;height:100%;border-radius:999px;background:linear-gradient(to right,#00c6ff,#1677ff);transition:width .3s ease}.table-container{position:relative;max-height:330px;overflow-x:auto;overflow-y:auto;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#f7fbffad}.data-table{width:100%;min-width:980px;border-collapse:collapse;border-spacing:0;text-align:center}.data-table th,.data-table td{padding:1rem;border-bottom:1px solid var(--border-color);overflow-wrap:anywhere;word-break:break-word}.data-table th{position:sticky;top:0;z-index:2;color:var(--text-secondary);background:linear-gradient(180deg,#f7fbfffa,#e6f4fffa);background-clip:padding-box;box-shadow:inset 0 -1px 0 var(--border-color),0 6px 12px #0d47a114;font-size:.9rem;font-weight:600;letter-spacing:0;text-transform:uppercase;white-space:nowrap;word-break:keep-all}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr{transition:var(--transition)}.data-table tbody tr:hover{background:#1677ff12}.data-table td:nth-child(5),.data-table td:nth-child(6){min-width:220px;text-align:left}.emotion-chip,.confidence-chip{display:inline-flex;align-items:center;justify-content:center;min-width:64px;padding:.25rem .65rem;border:1px solid rgba(22,119,255,.22);border-radius:999px;color:#0958d9;background:#1677ff1a;font-size:.85rem;font-weight:600;white-space:nowrap}.confidence-chip{color:#006d75;border-color:#00c6ff47;background:#00c6ff1a}.empty-row{color:var(--text-secondary);text-align:center}.el-button,.el-input__wrapper,.el-textarea__inner{font-family:inherit}.tab-btn[data-target=tab-zip],#tab-zip{display:none!important}@media (max-width: 768px){.app-container{padding:1rem;padding-bottom:calc(2rem + env(safe-area-inset-bottom,0px))}.auth-modal{padding:1.65rem}h1{font-size:2rem;line-height:1.2}.logo-icon{width:40px;height:40px}.tabs{gap:1rem;margin-bottom:1.2rem}.panel{padding:1.4rem}#tab-single .panel.grid-2{grid-template-columns:1fr 1.5fr;gap:1.2rem;height:680px}#tab-single .notice{grid-column:1 / -1}.file-drop-area{padding:2rem 1rem}.drop-text{white-space:normal;word-break:keep-all}.text-area{height:120px}.code-block{height:300px}}[hidden]{display:none!important}body{height:auto;overflow-x:hidden;overflow-y:auto}.app-container{padding-top:3rem;padding-bottom:3rem}.bird-logo{font-size:1.15rem;font-weight:800}.birds-workspace{min-height:680px}.birds-workspace>.notice{margin-bottom:1.25rem}.birds-grid{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(0,1.35fr);gap:1.5rem;min-height:580px}.panel-col{min-width:0}.controls-col,.results-col{padding:1.35rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--surface-bg-soft)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.2rem}.section-heading>div{display:flex;align-items:center;gap:.65rem}.section-heading h2{color:var(--text-primary);font-size:1.18rem}.section-step{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:26px;border:1px solid rgba(22,119,255,.24);border-radius:999px;color:var(--primary-color);background:var(--primary-light);font-size:.76rem;font-weight:700}.upload-symbol{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border:1px solid rgba(22,119,255,.25);border-radius:50%;color:var(--primary-color);background:#ffffffb8;font-size:1.7rem;font-weight:300}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}.settings-grid .form-group:first-child{grid-column:1 / -1}.select-input{cursor:pointer}.range-group label{display:flex;justify-content:space-between;gap:.75rem}.range-group output{color:var(--primary-color);font-variant-numeric:tabular-nums}.range-group input[type=range]{width:100%;accent-color:var(--primary-color)}.switch-row{display:flex;align-items:center;gap:.6rem;margin:.2rem 0 1.25rem;color:var(--text-secondary);font-size:.9rem;cursor:pointer}.switch-row input{accent-color:var(--primary-color)}.birds-action{width:140px;max-width:140px}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:birds-spin .7s linear infinite}@keyframes birds-spin{to{transform:rotate(360deg)}}.error-message{min-height:1.4rem;margin-top:.75rem;color:var(--error-color);font-size:.86rem;text-align:center}.status-error{color:var(--error-color);border-color:#d5494147;background:#d5494114}.empty-state{display:flex;min-height:470px;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-state h3{margin:1rem 0 .35rem}.empty-state p{max-width:420px;color:var(--text-secondary)}.empty-orbit{display:inline-flex;align-items:center;justify-content:center;width:104px;height:104px;border:1px solid rgba(22,119,255,.22);border-radius:50%;color:var(--primary-color);background:#e6f4ffb3;box-shadow:inset 0 0 0 13px #ffffff7a;font-size:2rem;font-weight:800}.image-stage{margin:0;padding:10px;overflow:hidden;border:1px solid rgba(22,119,255,.16);border-radius:var(--radius-md);background:#071a33}.image-stage img{display:block;width:100%;max-height:520px;object-fit:contain;border-radius:var(--radius-sm)}.result-summary{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}.summary-chip{padding:.35rem .7rem;border:1px solid var(--border-color);border-radius:999px;color:var(--text-secondary);background:#ffffffb3;font-size:.8rem}.detections,.top-five{display:grid;gap:.75rem}.detection-card{padding:1rem;border:1px solid var(--border-color);border-radius:var(--radius-md);background:#ffffffad}.detection-title{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.detection-title h3{font-size:1rem}.detection-title strong{color:var(--primary-color)}.latin-name{margin:.25rem 0 .8rem;color:var(--text-secondary);font-size:.8rem}.candidate{display:grid;grid-template-columns:minmax(105px,1fr) 2fr 52px;align-items:center;gap:.6rem;color:var(--text-secondary);font-size:.78rem}.candidate-bar{height:7px;overflow:hidden;border-radius:999px;background:#1677ff1a}.candidate-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#00c6ff,var(--primary-color))}.candidate-value{text-align:right;font-variant-numeric:tabular-nums}@media (max-width: 900px){.birds-grid{grid-template-columns:1fr}.empty-state{min-height:360px}}@media (max-width: 560px){.settings-grid{grid-template-columns:1fr}.settings-grid .form-group:first-child{grid-column:auto}.controls-col,.results-col{padding:1rem}.candidate{grid-template-columns:94px 1fr 46px}}
