:root{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;color:#29415d}*{box-sizing:border-box}body{margin:0;background:linear-gradient(102deg,#fff9dd,#fff5f8);min-width:320px}button,input,textarea{font:inherit}button{border:0;cursor:pointer}button:disabled{opacity:.6;cursor:not-allowed}.app-shell{max-width:1120px;margin:0 auto;padding:20px 20px 48px;display:grid;gap:18px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.brand-wrap{display:inline-flex;align-items:center;gap:10px;padding:8px 14px;border-radius:999px;background:#fff;box-shadow:0 4px 12px #1a3f601f}.brand-logo{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#ffdf6d;color:#fff;font-size:16px;font-weight:700}.brand-text{font-weight:800;font-size:24px;letter-spacing:.2px;background:linear-gradient(90deg,#2d6aff,#ff4fc7);-webkit-background-clip:text;color:transparent}.admin-chip{background:#fff;padding:8px 14px;border-radius:999px;border:1px solid #e3ecf7;color:#6f88a6;font-size:13px}.hero{text-align:center;color:#2f4d70}.hero h1{margin:4px 0 8px;font-size:42px;letter-spacing:.5px}.hero p{margin:0;font-size:15px;color:#6b86a8}.panel{background:#fff;border-radius:20px;padding:18px 20px;box-shadow:0 6px 18px #1a3f601a;border:1px solid #ebf1fb;display:grid;gap:14px}.small-panel{padding-top:14px;padding-bottom:14px}.panel-title{font-size:24px;font-weight:800;color:#2b4b70}.panel-subtitle{color:#7490b1;font-size:14px;line-height:1.6}.voice-group{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));gap:10px}.voice-btn{background:#f1f6fb;color:#4f6d8f;border-radius:12px;padding:12px}.voice-btn.active{background:#e9f4ff;color:#1f5c9e;border:1px solid #66b5ff}.source-group{display:grid;grid-template-columns:140px 140px 140px 1fr;gap:10px;align-items:center}.source-group input{width:100%;border:1px solid #d8e4f3;border-radius:12px;padding:10px 12px;color:#567192}.file-picker{position:relative;min-height:44px;border:1px dashed #c8daee;border-radius:12px;background:#f8fbff;color:#4f6d8f;padding:10px 12px;display:flex;align-items:center;overflow:hidden}.file-picker span{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-picker input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.field-stack{display:grid;gap:6px}.field-stack label{font-size:13px;color:#6f88a6}.source-meta-field{grid-column:1 / -1}.device-row{display:grid;grid-template-columns:1fr 120px 1fr;gap:10px;align-items:center}.device-row select{width:100%;border:1px solid #d8e4f3;border-radius:12px;padding:10px 12px;color:#4f6d8f;background:#fff}.device-row span{color:#5f7c9c;font-size:13px;word-break:break-word}.wave-panel{border:1px solid #e1ebf8;border-radius:14px;background:#f9fcff;padding:10px;display:grid;gap:8px}.wave-canvas{width:100%;height:120px;border-radius:10px;background:#f7fbff;border:1px solid #e5eef8}.wave-stats{display:grid;grid-template-columns:repeat(3,minmax(100px,1fr));gap:8px;font-size:12px;color:#577496}.qa-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;border-radius:12px;padding:10px}.qa-pass{background:#effcf6;border:1px solid #d2f3e4}.qa-fail{background:#fff3f6;border:1px solid #ffd9e1}.qa-item{display:grid;gap:2px;padding:8px 10px;border-radius:10px;background:#fff}.qa-item strong{font-size:12px;color:#335a83}.qa-item span{font-size:13px;color:#3d628a}.qa-item em{font-style:normal;font-size:12px;color:#6885a7}.record-meta{display:flex;align-items:center;gap:12px;color:#5f7c9c;font-size:13px;flex-wrap:wrap}.record-meta audio{height:34px}.action-row{display:grid;grid-template-columns:1.2fr 1fr 120px;gap:10px}.primary-btn{background:linear-gradient(90deg,#ff4ba8,#ff61c0);border-radius:12px;color:#fff;padding:12px 14px;font-weight:700}.accent-btn{background:#ffe8be;border-radius:12px;color:#7b5c28;padding:12px 14px;font-weight:700}.secondary-btn{background:#f2f6fd;border-radius:12px;color:#5d7696;padding:10px 12px}.secondary-btn.active{background:#e8f3ff;color:#215f9d}.stop-btn{background:#ffefef;border-radius:12px;color:#c03838;padding:10px 12px;font-weight:700}.ghost-btn{background:#f6f9fc;border:1px solid #d8e4f3;border-radius:12px;color:#496482;padding:12px 14px}.status-row{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:10px;background:#f7fbff;border-radius:12px;padding:10px 12px}.status-item{display:grid;gap:4px}.status-item small{color:#7f98b6;font-size:12px}.status-item strong{color:#486583;font-size:14px;word-break:break-all}.empty-state{min-height:120px;display:grid;place-items:center;text-align:center;color:#8ca3bf;border:1px dashed #d7e2f1;border-radius:14px;background:#fcfdff}.score-chart{display:grid;grid-template-columns:repeat(10,minmax(64px,1fr));gap:10px;align-items:end;min-width:760px}.score-chart-scroll{overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}.score-col{display:grid;gap:8px;justify-items:center}.score-col-track{width:100%;max-width:70px;height:170px;border-radius:12px;background:#eef4fb;display:flex;align-items:flex-end;padding:6px}.score-col-fill{width:100%;border-radius:8px;transition:height .18s ease}.score-col-value{font-weight:800;color:#2c4d73}.score-col-label{display:grid;text-align:center}.score-col-label span{font-weight:700;color:#3e5f82}.score-col-label small{color:#8ea5be;font-size:11px}.manual-grid{display:grid;grid-template-columns:1fr;gap:10px}.manual-card{--swipe-offset: 0px;border:1px solid #e1ebf8;background:#fbfdff;border-radius:14px;padding:12px;display:grid;grid-template-columns:132px minmax(180px,224px) minmax(200px,1fr) minmax(180px,1fr);align-items:center;gap:12px;-webkit-user-select:none;user-select:none;touch-action:pan-y;transform:translate(calc(var(--swipe-offset) * .08));transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease,background .14s ease}.manual-head{display:grid}.manual-head span{font-weight:700;color:#3f6286}.manual-head small{font-size:11px;color:#8ba4c0}.manual-score-group{display:grid;grid-template-columns:48px 1fr 48px;gap:10px;align-items:center}.manual-score-block{display:grid;justify-items:center;gap:4px}.manual-score{font-size:32px;line-height:1;color:#1f4d7f;font-weight:800;text-align:center}.manual-score-range{font-size:11px;color:#8ba4c0}.score-adjust-btn{width:48px;height:48px;border-radius:14px;background:#eef5ff;color:#255c95;font-size:28px;line-height:1;font-weight:700;display:grid;place-items:center}.score-adjust-btn:disabled{background:#f3f6fa;color:#a4b4c7}.manual-swipe-tip{font-size:12px;color:#7f97b5;background:#f3f8ff;border-radius:8px;padding:6px 8px;min-height:44px;display:flex;align-items:center}.manual-card.swipe-active{border-color:#67b0ff;box-shadow:0 0 0 3px #67b0ff29;background:linear-gradient(90deg,#ffebf1e5,#fbfdff 28%,#fbfdff 72%,#eaf6ffeb)}.manual-diff{font-size:12px;color:#7893b3;text-align:right}.comment-box{width:100%;min-height:88px;border:1px solid #d9e5f3;border-radius:12px;padding:10px 12px;resize:vertical;color:#4b6788}.history-item{display:flex;flex-wrap:wrap;gap:12px;color:#5f7b9b;font-size:14px}.error{color:#bd1e46;background:#fff1f4}.success{color:#146d4f;background:#effcf6}pre{background:#111f33;color:#d5e7ff;border-radius:12px;padding:12px;margin:0;overflow:auto}@media (max-width: 960px){.hero h1{font-size:32px}.manual-card{grid-template-columns:116px minmax(176px,210px) minmax(180px,1fr) minmax(160px,1fr)}}@media (max-width: 760px){.app-shell{padding:14px 12px 30px}.hero{text-align:left}.source-group,.device-row,.wave-stats,.qa-panel,.action-row,.status-row{grid-template-columns:1fr}.voice-group{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{padding:16px 14px;border-radius:18px}.panel-title{font-size:20px}.source-group{grid-template-columns:repeat(2,minmax(0,1fr))}.source-group>:nth-child(3),.source-group>.file-picker,.source-meta-field{grid-column:1 / -1}.device-row span{padding:10px 12px;background:#f7fbff;border-radius:12px}.score-chart{min-width:700px}.manual-card{grid-template-columns:1fr;gap:10px;padding:14px}.manual-score-group{grid-template-columns:52px 1fr 52px}.score-adjust-btn{width:52px;height:52px}.manual-score,.manual-diff,.manual-swipe-tip{text-align:left}.hero h1{font-size:26px}.history-item span{width:100%}}
