:root{--bg:#f4f6fa;--fg:#11131a;--muted:#73798a;--line:#dde2ec;--accent:#5847f5;--ok:#2d9360;--warn:#9a6b13;--lab:#0b1020}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif}a{color:inherit;text-decoration:none}button,input{font:inherit}
.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,4vw,48px);border-bottom:1px solid var(--line);background:rgba(255,255,255,.9);position:sticky;top:0;z-index:4;backdrop-filter:blur(18px)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700}.brand img{width:42px;height:28px;object-fit:contain}.top-actions{display:flex;gap:24px;align-items:center;color:var(--muted);font-size:13px}.cloud-state{display:flex;gap:8px;align-items:center}.cloud-state i{width:7px;height:7px;border-radius:50%;background:#38a169;box-shadow:0 0 0 4px #e8f5ec}
.shell{width:min(1400px,calc(100% - 32px));margin:0 auto;padding:64px 0 190px}.hero{text-align:center}.eyebrow{margin:0;color:var(--accent);font-size:11px;font-weight:750;letter-spacing:.18em}.hero h1{margin:12px 0 8px;font-size:clamp(42px,7vw,84px);font-weight:520;letter-spacing:-.06em}
.upload-panel{display:grid;grid-template-columns:1fr auto;gap:12px;max-width:760px;margin:46px auto 0}.upload-target{min-height:112px;padding:20px;border:1px dashed #c9cde0;border-radius:18px;background:#fff;text-align:left;cursor:pointer;display:grid;grid-template-columns:44px 1fr;column-gap:14px;align-items:center}.upload-target:hover{border-color:var(--accent);background:#fbfaff}.upload-mark{grid-row:1/3;width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:#f0eeff;color:var(--accent);font-size:25px}.upload-target strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-target small{color:var(--muted)}.primary-action{border:0;border-radius:16px;padding:0 26px;background:var(--accent);color:#fff;font-weight:700;cursor:pointer}.primary-action:disabled{opacity:.35;cursor:not-allowed}.upload-panel.compact{margin-bottom:38px}.upload-panel.compact .upload-target{min-height:76px}
.result-view{margin-top:54px}.result-head{display:flex;align-items:end;justify-content:space-between;padding-bottom:20px;border-bottom:1px solid var(--line)}.result-head h2{margin:8px 0 0;font-size:clamp(28px,4vw,48px);font-weight:540;letter-spacing:-.04em}.status-pill{padding:7px 11px;border-radius:999px;background:#f1f6f3;color:var(--ok);font-size:12px}.acoustic-lab{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:20px 0 12px;border:1px solid #26324e;background:#26324e}.plot{min-width:0;margin:0;padding:16px;background:var(--lab)}.plot-wide{grid-column:1/-1}.plot figcaption{display:flex;align-items:center;justify-content:space-between;margin:0 2px 10px;color:#eef2ff;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.plot figcaption strong{font-size:11px;letter-spacing:.12em}.plot figcaption span{color:#7581a2;font-size:9px}.plot canvas{display:block;width:100%;height:250px}.plot-wide canvas{height:430px}.primary-field{padding:18px}.emotion-plot figcaption strong{color:#d4c9ff}.metric-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--line);overflow:hidden;background:#fff;margin:12px 0}.metric-strip>div{min-width:0;padding:14px;border-right:1px solid var(--line)}.metric-strip>div:last-child{border:0}.metric-strip span{display:block;overflow:hidden;color:var(--muted);font:8px/1.3 ui-monospace,monospace;letter-spacing:.05em;text-overflow:ellipsis}.metric-strip strong{display:block;margin-top:8px;font:500 20px/1 ui-monospace,monospace}.metric-strip small{margin-left:4px;color:var(--muted);font-size:9px}.hearing-map{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 20px}.sense{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:#fff}.sense span{color:var(--muted);font-size:10px}.sense strong{font:600 9px ui-monospace,monospace}.sense.pass strong{color:var(--ok)}.sense.unknown strong{color:var(--warn)}.judge-card{display:grid;grid-template-columns:220px 1fr;gap:28px;padding:24px;background:#141620;color:#fff}.judge-card span{display:block;color:#a9afc2;font-size:11px;letter-spacing:.12em}.judge-card strong{display:block;margin-top:10px;color:#c7c0ff}.judge-card p{margin:0;color:#d9dce7;line-height:1.65}details{margin-top:18px;color:var(--muted)}summary{cursor:pointer}pre{max-height:360px;overflow:auto;padding:18px;background:#11131a;color:#e7e9ef;font-size:12px;white-space:pre-wrap}
.ai-dock{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);width:min(980px,calc(100% - 28px));z-index:5}.conversation{max-height:180px;overflow:auto;display:grid;gap:8px;margin:0 8px 10px}.message{max-width:82%;padding:10px 13px;border-radius:12px;font-size:13px;line-height:1.5;box-shadow:0 5px 18px rgba(20,24,40,.08)}.message.ai{justify-self:start;background:#fff;border:1px solid var(--line)}.message.user{justify-self:end;background:#211e45;color:#fff}.chat-form{display:grid;grid-template-columns:1fr auto;gap:8px;padding:6px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 14px 48px rgba(20,24,40,.13)}.chat-form input{min-width:0;border:0;outline:0;padding:13px 14px}.chat-form button{border:0;border-radius:11px;padding:0 22px;background:#171923;color:#fff;cursor:pointer}.chat-form button:disabled{opacity:.45}.notice{position:fixed;right:20px;bottom:88px;max-width:420px;color:#a13232;font-size:13px;z-index:7}
@media(max-width:900px){.metric-strip{grid-template-columns:repeat(3,1fr)}.metric-strip>div:nth-child(3){border-right:0}.acoustic-lab{grid-template-columns:1fr}.plot-wide{grid-column:auto}.plot canvas,.plot-wide canvas{height:240px}}
@media(max-width:720px){.shell{padding-top:38px}.top-actions .cloud-state{display:none}.upload-panel{grid-template-columns:1fr}.primary-action{min-height:52px}.judge-card{grid-template-columns:1fr}.message{max-width:94%}.plot{padding:10px}.plot figcaption span{display:none}.plot canvas,.plot-wide canvas{height:210px}.metric-strip{grid-template-columns:repeat(2,1fr)}}
