*{box-sizing:border-box}[hidden]{display:none!important}html{color-scheme:light}body{margin:0;background:#fff;color:#29404e;font:14px/1.55 "Microsoft YaHei","Noto Sans CJK SC",sans-serif}main{max-width:1260px;padding:14px 18px;margin:auto}header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:10px}h1{font-size:21px;line-height:1.4;margin:0}button{font:inherit;font-size:12px;border:1px solid #c7d7dd;background:white;border-radius:4px;color:#365b6c;padding:6px 10px;cursor:pointer}button:hover{background:#f0f6f7}button[aria-pressed=true]{background:#e8f2f4;border-color:#739baa}button:focus-visible,input:focus-visible{outline:3px solid #76b1c2;outline-offset:2px}nav{display:flex;gap:6px}#viewport{position:relative;height:365px;background:#f6f9fa;border:1px solid #e0e9ed;border-radius:6px;overflow:hidden}canvas{width:100%;height:100%;display:block;touch-action:none}#labels{position:absolute;inset:0;pointer-events:none}.model-label{position:absolute;transform:translate(-50%,-130%);font-size:12px;background:#fffffff0;border:1px solid #dce6ea;padding:2px 6px;border-radius:3px;white-space:nowrap;color:#3b6476}.legend{display:flex;align-items:center;gap:17px;flex-wrap:wrap;min-height:30px;font-size:12px;color:#667e89}.legend span{display:flex;align-items:center;gap:5px}.legend i{display:inline-block;width:13px;height:6px;border-radius:1px}.legend strong{margin-left:auto;font-size:12px;font-weight:500;color:#267b8c}.transport{display:flex;align-items:center;gap:7px;margin:5px 0 9px}.transport input{accent-color:#3d7e93;flex:1;min-width:80px}.transport span{font-size:12px;min-width:40px;text-align:right;color:#637e8c}.stages{display:flex;gap:6px;flex-wrap:wrap}.stages button{flex:1;min-width:100px;padding:5px 7px}.caption{margin:8px 0 6px;min-height:24px;font-size:13px;color:#3c5969}details{font-size:11px;color:#6b808c;border-top:1px solid #e6edf0;padding-top:7px}details p{margin:6px 0}summary{cursor:pointer;width:max-content}a{color:#2b7188;text-underline-offset:3px}#error{color:#b05635}@media(max-width:650px){main{padding:10px}header{align-items:flex-start;gap:7px}h1{font-size:18px}nav{flex-wrap:wrap;justify-content:flex-end}nav button{font-size:11px;padding:4px 6px}#viewport{height:340px}.legend{gap:7px 12px;font-size:11px}.legend strong{margin-left:0}.stages button{flex-basis:30%;min-width:86px;font-size:11px}.caption{min-height:42px}.model-label{font-size:10px}}